
    q	h}                        S r SrSSKrSSKJr  SSKrSSKrSSKJr  SSK	r	SSK
Jr  SSK
Jr  SSK
Jr  SS	KJr  \" \R"                  R$                  \R"                  R&                  \R"                  R(                  \R"                  R*                  /5      r\" \R"                  R(                  \R"                  R*                  /5      r\" \R"                  R0                  \R"                  R2                  /5      rS
rSrSr\	R<                  " S5      r\	R<                  " S5      r  " S S\!5      r" " S S\"5      r# " S S\"5      r$ " S S\$5      r%        S2S jr&     S3S jr'S r( " S S\)5      r*S r+S r,S r-   S4S jr.   S4S  jr/\0\14r2\3\44r5 " S! S"\)5      r6S5S# jr7S$ r8S% r9S& r:S'S(/S)S*/S)S*/S+S,/S-S./S)S*/S/S0/S1.r;g)6at  Contains routines for printing protocol messages in JSON format.

Simple usage example:

  # Create a proto object and serialize it to a json format string.
  message = my_proto_pb2.MyMessage(foo='bar')
  json_string = json_format.MessageToJson(message)

  # Parse a json format string to proto object.
  message = json_format.Parse(json_string, my_proto_pb2.MyMessage())
zjieluo@google.com (Jie Luo)    N)OrderedDict)methodcaller)
descriptor)message_factory)symbol_database)type_checkersInfinityz	-InfinityNaNu.   [-](?![-])|(?<![-])[-]z\[[a-zA-Z0-9\._]*\]$c                       \ rS rSrSrSrg)Error=   z'Top-level module error for json_format. N__name__
__module____qualname____firstlineno____doc____static_attributes__r       M/var/www/html/env/lib/python3.13/site-packages/google/protobuf/json_format.pyr   r   =   s    /r   r   c                       \ rS rSrSrSrg)SerializeToJsonErrorA   z&Thrown if serialization to JSON fails.r   Nr   r   r   r   r   r   A   s    .r   r   c                       \ rS rSrSrSrg)
ParseErrorE   z Thrown in case of parsing error.r   Nr   r   r   r   r   r   E   s    (r   r   c                       \ rS rSrSrSrg)EnumStringValueParseErrorI   zrThrown if unknown string enum value is encountered.
This exception is suppressed if ignore_unknown_fields is set.
r   Nr   r   r   r   r   r   I   s    r   r   c	                 D    [        UUUUU5      n	U	R                  XX75      $ )a  Converts protobuf message to JSON format.

Args:
  message: The protocol buffers message instance to serialize.
  always_print_fields_with_no_presence: If True, fields without
    presence (implicit presence scalars, repeated fields, and map fields) will
    always be serialized. Any field that supports presence is not affected by
    this option (including singular message fields and oneof fields).
  preserving_proto_field_name: If True, use the original proto field names as
    defined in the .proto file. If False, convert the field names to
    lowerCamelCase.
  indent: The JSON object will be pretty-printed with this indent level. An
    indent level of 0 or negative will only insert newlines. If the indent
    level is None, no newlines will be inserted.
  sort_keys: If True, then the output will be sorted by field names.
  use_integers_for_enums: If true, print integers instead of enum names.
  descriptor_pool: A Descriptor Pool for resolving types. If None use the
    default.
  float_precision: If set, use this to specify float field valid digits.
  ensure_ascii: If True, strings with non-ASCII characters are escaped. If
    False, Unicode strings are returned unchanged.

Returns:
  A string containing the JSON formatted protocol buffer message.
)_PrinterToJsonString)
messagepreserving_proto_field_nameindent	sort_keysuse_integers_for_enumsdescriptor_poolfloat_precisionensure_ascii$always_print_fields_with_no_presenceprinters
             r   MessageToJsonr.   O   s3    H !*' 
		gy	GGr   c                 B    [        UUUUU5      nUR                  U 5      $ )a  Converts protobuf message to a dictionary.

When the dictionary is encoded to JSON, it conforms to proto3 JSON spec.

Args:
  message: The protocol buffers message instance to serialize.
  always_print_fields_with_no_presence: If True, fields without
    presence (implicit presence scalars, repeated fields, and map fields) will
    always be serialized. Any field that supports presence is not affected by
    this option (including singular message fields and oneof fields).
  preserving_proto_field_name: If True, use the original proto field names as
    defined in the .proto file. If False, convert the field names to
    lowerCamelCase.
  use_integers_for_enums: If true, print integers instead of enum names.
  descriptor_pool: A Descriptor Pool for resolving types. If None use the
    default.
  float_precision: If set, use this to specify float field valid digits.

Returns:
  A dict representation of the protocol buffer message.
)r"   _MessageToJsonObject)r$   r,   r%   r(   r)   r*   r-   s          r   MessageToDictr1   }   s0    : !*' 
	%	%g	..r   c                     U R                   [        R                  R                  :H  =(       aA    U R                  R
                  =(       a$    U R                  R                  5       R                  $ N)typer   FieldDescriptorTYPE_MESSAGEmessage_typehas_options
GetOptions	map_entry)fields    r   _IsMapEntryr<      sP    jjJ..;;; 4



(
(4



'
'
)
3
3r   c                   h    \ rS rSrSr     SS jrS rS rS rS r	S	 r
S
 rS rS rS rS rSrg)r"      z)JSON format printer for protocol message.Nc                     UU l         Xl        X l        X0l        U(       a  SR	                  U5      U l        g S U l        g )Nz.{}g)r,   r%   r(   r)   formatfloat_format)selfr%   r(   r)   r*   r,   s         r   __init___Printer.__init__   s@     	- 	- (C$"8* --8ddr   c                 N    U R                  U5      n[        R                  " XRX4S9$ )N)r&   r'   r+   )r0   jsondumps)rB   r$   r&   r'   r+   jss         r   r#   _Printer.ToJsonString   s(    		"	"7	+B::
Y r   c                     UR                   nUR                  n[        U5      (       a  U R                  U5      $ U[        ;   a  [        [        U   S   U5      " U 5      $ 0 nU R                  X5      $ )zEConverts message to an object according to Proto3 JSON Specification.r   )
DESCRIPTOR	full_name_IsWrapperMessage_WrapperMessageToJsonObject_WKTJSONMETHODSr   _RegularMessageToJsonObject)rB   r$   message_descriptorrL   rH   s        r   r0   _Printer._MessageToJsonObject   sp     ++",,I+,,--g66O#/)4Q7A$GG	B++G88r   c                    UR                  5       n U GHC  u  pEU R                  (       a  UR                  nOUR                  n[	        U5      (       am  UR
                  R                  S   n0 nU HF  n	[        U	[        5      (       a  U	(       a  Sn
OSn
O[        U	5      n
U R                  XuU	   5      X'   MH     XU'   M  UR                  [        R                  R                  :X  a%  U Vs/ s H  oR                  XK5      PM     snX&'   M  UR                  (       a%  SUR                   -  nU R                  XE5      X&'   GM0  U R                  XE5      X&'   GMF     U R"                  (       a  UR$                  nUR&                   H  nU R"                  (       a  UR(                  (       a  M'  U R                  (       a  UR                  nOUR                  nXb;   a  MX  [	        U5      (       a  0 X&'   Mn  UR                  [        R                  R                  :X  a  / X&'   M  U R                  XDR*                  5      X&'   M     U$ s  snf ! [,         a+  n[/        SR1                  WR                  U5      5      UeSnAff = f)z?Converts normal message according to Proto3 JSON Specification.valuetruefalsez[%s]z#Failed to serialize {0} field: {1}.N)
ListFieldsr%   name	json_namer<   r7   fields_by_name
isinstanceboolstr_FieldToJsonObjectlabelr   r5   LABEL_REPEATEDis_extensionrL   r,   rK   fieldshas_presencedefault_value
ValueErrorr   r@   )rB   r$   rH   rb   r;   rT   rX   v_fieldjs_mapkeyrecorded_keykrQ   es                 r   rP   $_Printer._RegularMessageToJsonObject   s   !F= ,%++$$u&&55g>'&c#t$$%& Xl#'#:#:7#J#OF   T([[J66EEEAFGA--e7G"(%//)$,,U:"(,,U:"(5 !< 
3
3$//'..E
 77$$--::D??DZBH{{j88GGGBH..u6I6IJBH- /: IS HH   
/
6
6uzz1
Es+   CI	 -ID;I	 I	 	
I>&I99I>c                     UR                   [        R                  R                  :X  a  U R	                  U5      $ UR                   [        R                  R
                  :X  a  U R                  (       a  U$ UR                  R                  S:X  a  gUR                  R                  R                  US5      nUb  UR                  $ UR                  R                  (       a  [        S5      eU$ UR                   [        R                  R                  :X  aX  UR                  [        R                  R                   :X  a%  ["        R$                  " U5      R'                  S5      $ [)        U5      $ UR                   [        R                  R*                  :X  a  [-        U5      $ UR                   [.        ;   a  [)        U5      $ UR                   [0        ;   a  [2        R4                  " U5      (       a  US:  a  [6        $ [8        $ [2        R:                  " U5      (       a  [<        $ UR                   [        R                  R>                  :X  aE  U R@                  (       a  [C        [E        X R@                  5      5      $ [F        RH                  " U5      $ U$ )z<Converts field value according to Proto3 JSON Specification.google.protobuf.NullValueNzKEnum field contains an integer value which can not mapped to an enum value.utf-8g        )%cpp_typer   r5   CPPTYPE_MESSAGEr0   CPPTYPE_ENUMr(   	enum_typerL   values_by_numbergetrX   	is_closedr   CPPTYPE_STRINGr4   
TYPE_BYTESbase64	b64encodedecoder]   CPPTYPE_BOOLr\   _INT64_TYPES_FLOAT_TYPESmathisinf_NEG_INFINITY	_INFINITYisnan_NANCPPTYPE_FLOATrA   floatr@   r   ToShortestFloat)rB   r;   rT   
enum_values       r   r^   _Printer._FieldToJsonObject  s   ~~33CCC&&u--	:55BB	B		$	$		"	"&A	A??3377tDj		??$$$7 
 ,	:55DD	D	z11<<	<&--g665z	:55BB	B%[	<	'Z	<	'	E		3;

	E			:55CC	Cve%6%678
8..u5
5Lr   c                    UR                  5       (       d  0 $ [        5       nUR                  nX2S'   [        X0R                  5      nUR                  UR                  5        UR                  nUR                  n[        U5      (       a  U R                  U5      US'   U$ U[        ;   a!  [        [        U   S   U5      " U 5      US'   U$ U R                  XB5      $ )z<Converts Any message according to Proto3 JSON Specification.@typerT   r   )rW   r   type_url_CreateMessageFromTypeUrlr)   ParseFromStringrT   rK   rL   rM   rN   rO   r   rP   )rB   r$   rH   r   sub_messagerQ   rL   s          r   _AnyMessageToJsonObject _Printer._AnyMessageToJsonObjectG  s    i	BHwK+H6J6JKK.$//",,I+,,44[AbkiO# !;A!>L
bk i++K<<r   c                 "    UR                  5       $ )z8Converts message according to Proto3 JSON Specification.)r#   rB   r$   s     r   _GenericMessageToJsonObject$_Printer._GenericMessageToJsonObject]  s     !!r   c                    UR                  S5      nUb  US:X  a  gUS:X  a  U R                  UR                  5      $ US:X  aY  UR                  n[        R
                  " U5      (       a  [        S5      e[        R                  " U5      (       a  [        S5      eO[        X5      nUR                  R                  U   nU R                  XC5      $ )z>Converts Value message according to Proto3 JSON Specification.kindN
null_value
list_valuenumber_valuezTFail to serialize Infinity for Value.number_value, which would parse as string_valuezOFail to serialize NaN for Value.number_value, which would parse as string_value)
WhichOneof_ListValueMessageToJsonObjectr   r   r   r   re   r   getattrrK   rZ   r^   )rB   r$   whichrT   oneof_descriptors        r   _ValueMessageToJsonObject"_Printer._ValueMessageToJsonObjectc  s    v&E }-//0B0BCC""e	E		0
 	
 
E		0
 	
 
 g%e))88?""#3;;r   c                 b    UR                    Vs/ s H  o R                  U5      PM     sn$ s  snf )zBConverts ListValue message according to Proto3 JSON Specification.)valuesr   )rB   r$   rT   s      r   r   &_Printer._ListValueMessageToJsonObject}  s'    ?F~~N~e**51~NNNs   ,c                 ^    UR                   n0 nU H  nU R                  X$   5      X4'   M     U$ )z?Converts Struct message according to Proto3 JSON Specification.)rb   r   )rB   r$   rb   retrh   s        r   _StructMessageToJsonObject#_Printer._StructMessageToJsonObject  s3    ^^F
C//<ch Jr   c                 h    U R                  UR                  R                  S   UR                  5      $ )NrT   )r^   rK   rZ   rT   r   s     r   rN   $_Printer._WrapperMessageToJsonObject  s/    ""))'2GMM r   )r,   r)   rA   r%   r(   )FFNNF)r   r   r   r   r   rC   r#   r0   rP   r^   r   r   r   r   r   rN   r   r   r   r   r"   r"      sQ    1 #("+0&	9CJ,\=,"<4Or   r"   c                 4    U R                   R                  S:H  $ )Nzgoogle/protobuf/wrappers.proto)filerX   )rQ   s    r   rM   rM     s    		 	 	%	%)I	IIr   c                 f    0 nU  H(  u  p#X!;   a  [        SR                  U5      5      eX1U'   M*     U$ )Nz'Failed to load JSON: duplicate key {0}.)r   r@   )rH   resultrX   rT   s       r   _DuplicateCheckerr     s=    &kd~@GGMNN4L  
-r   c                 .   [         R                  " 5       nUc  UR                  OUnU R                  S5      S   n UR	                  U5      n[        R                  " U5      nU" 5       $ ! [
         a   n[        SR                  U 5      5      UeSnAff = f)z"Creates a message from a type URL.N/z0Can not find message descriptor by type_url: {0})
r   DefaultpoolsplitFindMessageTypeByNameKeyError	TypeErrorr@   r   GetMessageClass)r   r)   dbr   	type_namerQ   rk   message_classs           r   r   r     s     "#+$nnS!"%)33I>
 "112DE-	 
 
:AA(Ks   A* *
B4BBc           	         [        U [        5      (       d  U R                  S5      n  [        R                  " U [
        S9n [        XQX#U5      $ ! [         a)  n[        SR                  [        U5      5      5      UeSnAff = f! [         a  nUeSnAf[         a=  n[        SR                  [        U5      R                  [        U5      5      5      UeSnAff = f)aP  Parses a JSON representation of a protocol message into a message.

Args:
  text: Message JSON representation.
  message: A protocol buffer message to merge into.
  ignore_unknown_fields: If True, do not raise errors for unknown fields.
  descriptor_pool: A Descriptor Pool for resolving types. If None use the
    default.
  max_recursion_depth: max recursion depth of JSON message to be deserialized.
    JSON messages over this depth will fail to be deserialized. Default value
    is 100.

Returns:
  The same message passed as argument.

Raises::
  ParseError: On JSON parsing problems.
ro   )object_pairs_hookzFailed to load JSON: {0}.NzFailed to parse JSON: {0}: {1}.)r[   r]   r{   rF   loadsr   	Exceptionr   r@   	ParseDictr4   r   )textr$   ignore_unknown_fieldsr)   max_recursion_depthrH   rk   s          r   Parser     s    2 
D#		;;wDH	D,=	>B	
*=P 	 
 H
077A?
@aGH 
 
G	 
)00a1A1A3q6Js;   A B 
B$A==B
CBC8CCc                 B    [        X#U5      nUR                  XS5        U$ )a   Parses a JSON dictionary representation into a message.

Args:
  js_dict: Dict representation of a JSON message.
  message: A protocol buffer message to merge into.
  ignore_unknown_fields: If True, do not raise errors for unknown fields.
  descriptor_pool: A Descriptor Pool for resolving types. If None use the
    default.
  max_recursion_depth: max recursion depth of JSON message to be deserialized.
    JSON messages over this depth will fail to be deserialized. Default value
    is 100.

Returns:
  The same message passed as argument.
 )_ParserConvertMessage)js_dictr$   r   r)   r   parsers         r   r   r     s'    , (;NO&"-	.r   c                   l    \ rS rSrSrS rS rS rS rS r	S r
S	 rS
 rS rS rS rS rS rS rSrg)r   i  z(JSON format parser for protocol message.c                 6    Xl         X l        X0l        SU l        g )Nr   )r   r)   r   recursion_depth)rB   r   r)   r   s       r   rC   _Parser.__init__  s     "7*2Dr   c                    U =R                   S-  sl         U R                   U R                  :  a$  [        SR                  U R                  5      5      eUR                  nUR
                  nU(       d  UR                  n[        U5      (       a  U R                  XU5        O:U[        ;   a  [        [        U   S   XU5      " U 5        OU R                  XU5        U =R                   S-  sl         g)zConvert a JSON object into a message.

Args:
  value: A JSON object.
  message: A WKT or regular protocol message to record the data.
  path: parent path to log parse error info.

Raises:
  ParseError: In case of convert problems.
   z,Message too deep. Max recursion depth is {0}N)r   r   r   r@   rK   rL   rX   rM   _ConvertWrapperMessagerO   r   _ConvertFieldValuePair)rB   rT   r$   pathrQ   rL   s         r   r   _Parser.ConvertMessage  s     	Ad666
8
?
?&& 
 !++",,I$$d+,,
!!%$7	o	%?9-a0%$GM
!!%$7Ar   c                    / nUR                   n[        S UR                   5       5      nU GH  n UR                  US5      nU(       d  UR                  R                  US5      nU(       d  [
        R                  U5      (       a  UR                  (       d%  [        SR                  UR                  U5      5      eUSS n	UR                  R                  U	5      nU(       d>  SR                  U	R                  S5      SS 5      n	UR                  R                  U	5      nU(       d_  U R                  (       a  GM  [        SR                  UR                  UUUR                   V
s/ s H  oR                   PM     sn
5      5      eXt;   a/  [        SR                  UR                   R                  Xs5      5      eUR#                  U5        X   nUR$                  b^  Ub[  UR$                  R&                  nX;   a/  [        S	R                  UR                   R                  X5      5      eUR#                  U5        Uc  UR(                  [*        R,                  R.                  :X  a7  UR0                  R                  S
:X  a  [3        X(R&                  5      nSUl        OtUR(                  [*        R,                  R6                  :X  a1  UR8                  R                  S:X  a  [;        X(R&                  S5        OUR=                  UR&                  5        GM  [?        U5      (       a@  UR=                  UR&                  5        U RA                  XUSR                  X75      5        GM9  URB                  [*        R,                  RD                  :X  Ga_  UR=                  UR&                  5        [G        U[H        5      (       d  [        SR                  X{U5      5      eUR(                  [*        R,                  R.                  :X  a  [K        U5       H  u  p[3        X(R&                  5      RM                  5       nUc5  UR                   R                  S
:w  a  [        SR                  X7U5      5      eU RO                  XSR                  X7U5      5        M     GMi  [K        U5       HF  u  pUc  [        SR                  X7U5      5      eU RQ                  X(USR                  X7U5      5        MH     GM  UR(                  [*        R,                  R.                  :X  aj  URR                  (       a  UR                  U   nO[3        X(R&                  5      nURU                  5         U RO                  XSR                  X75      5        GMS  URR                  (       a%  U RW                  X(USR                  X75      5        GM  U RY                  X(USR                  X75      5        GM     gs  sn
f ! [         aJ  nW(       a)  UR$                  c  [        SR                  UU5      5      Ue[        [[        U5      5      UeSnAf[\         a!  n[        SR                  UU5      5      UeSnAf[^         a!  n[        SR                  UU5      5      UeSnAff = f)a  Convert field value pairs into regular message.

Args:
  js: A JSON object to convert the field value pairs.
  message: A regular protocol message to record the data.
  path: parent path to log parse error info.

Raises:
  ParseError: In case of problems converting.
c              3   <   #    U  H  oR                   U4v   M     g 7fr3   )rY   ).0fs     r   	<genexpr>1_Parser._ConvertFieldValuePair.<locals>.<genexpr>-  s      ";Qa";s   Nz0Message type {0} does not have extensions at {1}r   r   .zaMessage type "{0}" has no field named "{1}" at "{2}".
 Available Fields(except extensions): "{3}"zBMessage type "{0}" should not have multiple "{1}" fields at "{2}".zHMessage type "{0}" should not have multiple "{1}" oneof fields at "{2}".google.protobuf.Valuer   rn   {0}.{1}z4repeated field {0} must be in [] which is {1} at {2}zPnull is not allowed to be used as an element in a repeated field at {0}.{1}[{2}]z{0}.{1}[{2}]zFailed to parse {0} field: {1}.)0rK   dictrb   ru   rZ   _VALID_EXTENSION_NAMEmatchis_extendabler   r@   rL   
Extensions_FindExtensionByNamejoinr   r   rY   appendcontaining_oneofrX   rp   r   r5   rq   r7   r   r   rr   rs   setattr
ClearFieldr<   _ConvertMapFieldValuer_   r`   r[   
_LIST_LIKE	enumerateaddr   _ConvertAndAppendScalarra   SetInParent_ConvertAndSetScalarExtension_ConvertAndSetScalarr]   re   r   )rB   rH   r$   r   namesrQ   fields_by_json_namerX   r;   
identifierr   rT   
oneof_namer   indexitemrk   s                    r   r   _Parser._ConvertFieldValuePair   s    E ++ "4";";  P#''d3$3377dC%.44T::#11BII&00$ 
 Abz*$$99*E% *"2"23"7"<=J&&;;JGE''@$..(:(A(AB(A1;;(AB		
 
 =''-v$$..(  	T!!-%2C--22* //5v&&00*0  ,,z
"=nn
 : : J JJ$$..2II!'::6K%&K"nn
 : : G GG//++/JJGZZ+uzz*
 u


UZZ
(

$
$eY%5%5d%A [[J66EEE


UZZ
(E:..FMM 
 ^^z99III(/#GZZ8<<>k ,!,,66,- !;;A6E<  !!^%:%:4u%M  0&  )/ ;;A6E<  **n&;&;D&NP  0 ^^z99III!,,U3K!'::6K

!
!
#


e)2B2B42N
O..wuiFVFVW[Fbc%%geY=M=Md=YZE D CB  *U++3/66tQ? 3q6"
) -44T1=
	  -44T1=
	sr   D	W#>+W#)W>FW#AW#&D-W#AW#.BW# 3W#6"W#W##
Z	-AX22Z	?YZ	(ZZ	c                    [        U[        5      (       a  U(       d  g US   n [        X@R                  5      nUR                  nUR                  n[        U5      (       a&  U R                  US   USR	                  U5      5        OUU[        ;   a1  [        [        U   S   US   USR	                  U5      5      " U 5        OUS	  U R                  XU5        XAS'   UR                  5       Ul        XBl        g! [         a   n[        SR	                  U5      5      UeSnAff = f! [         a   n[        SR	                  XS5      5      UeSnAff = f! XAS'   f = f)z/Convert a JSON representation into Any message.Nr   z0@type is missing when parsing any message at {0}
{0} at {1}rT   	{0}.valuer   )r[   r   r   r   r@   r   r)   r   rK   rL   rM   r   rO   r   r   SerializeToStringrT   r   )	rB   rT   r$   r   r   rk   r   rQ   rL   s	            r   _ConvertAnyMessage_Parser._ConvertAnyMessage  s_   %uwh<-h8L8LMk %//",,I+,,
!!
.+{'9'9$'? 
o	%
)
$Q
'
.



T
"	
 	 ."##E=!g113GM=  
<
C
CD
I  <|**134!;<( "gs:   C9 D& E 9
D#DD#&
E0EEEc                      UR                  U5        g! [         a   n[        SR                  XC5      5      UeSnAff = f)z?Convert a JSON representation into message with FromJsonString.r   N)FromJsonStringre   r   r@   )rB   rT   r$   r   rk   s        r   _ConvertGenericMessage_Parser._ConvertGenericMessage  s=    <U# <|**134!;<s    
>9>c                    [        U[        5      (       a  U R                  XR                  U5        g[        U[        5      (       a  U R                  XR                  U5        gUc  SUl        g[        U[        5      (       a  Xl	        g[        U[        5      (       a  Xl        g[        U[        5      (       a  Xl        g[        SR                  U[!        U5      U5      5      e)z1Convert a JSON representation into Value message.Nr   z(Value {0} has unexpected type {1} at {2})r[   r   _ConvertStructMessagestruct_valuer   _ConvertListOrTupleValueMessager   r   r\   
bool_valuer]   string_value_INT_OR_FLOATr   r   r@   r4   )rB   rT   r$   r   s       r   _ConvertValueMessage_Parser._ConvertValueMessage  s    %
  (<(<dC	E:	&	&
**52D2DdK	g	E4	 	  	E3		"	E=	)	)"
4
;
;T%[$ r   c           	         [        U[        5      (       d  [        SR                  X5      5      eUR	                  S5        [        U5       H>  u  pEU R                  XRR                  R                  5       SR                  X45      5        M@     g)z5Convert a JSON representation into ListValue message.z+ListValue must be in [] which is {0} at {1}r   {0}[{1}]N)	r[   r   r   r@   r   r   r
  r   r   )rB   rT   r$   r   r   r   s         r   r  '_Parser._ConvertListOrTupleValueMessage  sv    eZ((
7
>
>u
K  x  '

""$j&7&7&D (r   c           	          [        U[        5      (       d  [        SR                  X5      5      eUR	                  5         U H4  nU R                  X   UR                  U   SR                  X45      5        M6     g)z2Convert a JSON representation into Struct message.z,Struct must be in a dict which is {0} at {1}r   N)r[   r   r   r@   Clearr
  rb   )rB   rT   r$   r   rh   s        r   r  _Parser._ConvertStructMessage  so    eT""
8
?
?
L 
 MMO

*gnnS)9+;+;D+F  r   c                 v    UR                   R                  S   nU R                  X$USR                  U5      S9  g)z3Convert a JSON representation into Wrapper message.rT   r   r   N)rK   rZ   r   r@   )rB   rT   r$   r   r;   s        r   r   _Parser._ConvertWrapperMessage"  s8    --g6Ege+:L:LT:RSr   c                 6   [        U[        5      (       d%  [        SR                  UR                  X5      5      eUR
                  R                  S   nUR
                  R                  S   nU H  n[        XuSR                  U5      S5      nUR                  [        R                  R                  :X  a<  U R                  X   [        X#R                  5      U   SR                  XH5      5        M  U R                  UUUX   SR                  XH5      S9  M     g)	aF  Convert map field value for a message map field.

Args:
  value: A JSON object to convert the map field value.
  message: A protocol message to record the converted data.
  field: The descriptor of the map field to be converted.
  path: parent path to log parse error info.

Raises:
  ParseError: In case of convert problems.
z3Map field {0} must be in a dict which is {1} at {2}rh   rT   z{0}.keyTr  r  N)r[   r   r   r@   rX   r7   rZ   _ConvertScalarFieldValuerp   r   r5   rq   r   r   _ConvertAndSetScalarToMapKey)	rB   rT   r$   r;   r   	key_fieldvalue_fieldrh   	key_values	            r   r   _Parser._ConvertMapFieldValue'  s    eT""
?
F
Fjj% 
 ""11%8I$$33G<K*
)**40$i 
		!;!;!K!K	KJGZZ(3d.	
 	))J""43 	* 	5 r   c                 |     [        X2U5      UR                  U'   g! [         a    U R                  (       d  e  gf = f)zRConvert scalar from js_value and assign it to message.Extensions[extension_field].N)r  r   r   r   )rB   r$   extension_fieldjs_valuer   s        r   r   %_Parser._ConvertAndSetScalarExtensionM  sA    ,D
T-+g)$ '' (s    ;;c           	           [        UUR                  [        X2U5      5        g! [         a    U R                  (       d  e  gf = f)z<Convert scalar from js_value and assign it to message.field.N)r   rX   r  r   r   )rB   r$   r;   r  r   s        r   r   _Parser._ConvertAndSetScalarV  sE    

**
"8D
9; % '' (s   !$ AAc                      [        XR                  5      R                  [        X2U5      5        g! [         a    U R
                  (       d  e  gf = f)zEConvert scalar from js_value and append it to message.repeated_field.N)r   rX   r   r  r   r   )rB   r$   repeated_fieldr  r   s        r   r   _Parser._ConvertAndAppendScalara  sK    g**+22
"8T
BD$ '' (s   .1 AAc                      [        XBR                  R                  S   U5      [        XR                  5      U'   g! [
         a    U R                  (       d  e  gf = f)zNConvert scalar from 'js_value' and add it to message.map_field[converted_key].rT   N)r  r7   rZ   r   rX   r   r   )rB   r$   	map_fieldconverted_keyr  r   s         r   r  $_Parser._ConvertAndSetScalarToMapKeyj  sW    8P
**99'BD9gg~~&}5 % '' (s   9< AA)r)   r   r   r   N)r   r   r   r   r   rC   r   r   r   r  r
  r  r  r   r   r   r   r   r  r   r   r   r   r   r     sP    0<aF$ L<*
T
$5L	r   r   c                 h    UR                   [        ;   a  [        U 5      $ UR                   [        ;   a  [	        X5      $ UR                   [
        R                  R                  :X  a  [        X5      $ UR                   [
        R                  R                  :X  a  UR                  [
        R                  R                  :X  aV  [        U [        5      (       a  U R                  S5      nOU nUSS[        U5      S-  -
  -  -   n[         R"                  " U5      $ [$        R'                  U 5      (       a  [)        S5      eU $ UR                   [
        R                  R*                  :X  a  UR,                  R.                  R1                  U S5      nUc   [3        U 5      nUR,                  R4                  R1                  US5      nUcK  UR,                  R>                  (       a.  [)        SR;                  XR,                  R<                  5      5      eU$ UR@                  $ g! [6         a4  n[9        SR;                  XR,                  R<                  5      5      UeSnAff = f! [8         a   n[9        SR;                  X5      5      UeSnAf[(         a   n[)        SR;                  X5      5      UeSnAff = f)a  Convert a single scalar field value.

Args:
  value: A scalar value to convert the scalar field value.
  field: The descriptor of the field to convert.
  path: parent path to log parse error info.
  require_str: If True, the field value must be a str.

Returns:
  The converted scalar field value

Raises:
  ParseError: In case of convert problems.
  EnumStringValueParseError: In case of unknown enum string value.
ro      =   zUnpaired surrogateNz(Invalid enum value {0} for enum type {1}r   )!rp   
_INT_TYPES_ConvertIntegerr~   _ConvertFloatr   r5   r|   _ConvertBoolrw   r4   rx   r[   r]   encodelenry   urlsafe_b64decode_UNPAIRED_SURROGATE_PATTERNsearchr   rr   rs   values_by_nameru   intrt   re   r   r@   rL   rv   number)	rT   r;   r   require_strencodedpadded_valuer   r7  rk   s	            r   r  r  u  s@    2:~~#U##	<	'5((	:55BB	B%--	:55DD	D	z11<<	<eS!!LL)''S\A-=)=!>>''55 '--e44/0
0	:55BB	B??1155eTBj		
	u:&77;;FDI* __&&:AA??44  M1 
C  	 *8??22 		$ 
# I
#L$7$7$@
AqH	 :
\((1
29:sm   I I  2I 3B%I &I  AI 1H AI I 
I(/III 
J1)JJ1J,,J1c                 f   [        U [        5      (       a/  U R                  5       (       d  [        SR	                  U 5      5      e[        U [
        5      (       a/  U R                  S5      S:w  a  [        SR	                  U 5      5      e[        U [        5      (       a  [        SR	                  U 5      5      e [        U 5      $ ! [         ab  n [        U 5      nO! [         a    Uef = fUR                  5       (       d  [        SR	                  U 5      5      Ue[        U5      s SnA$ SnAff = f)zConvert an integer.

Args:
  value: A scalar value to convert.

Returns:
  The integer value.

Raises:
  ParseError: If an integer couldn't be consumed.
zCouldn't parse integer: {0} r   zCouldn't parse integer: "{0}"z2Bool value {0} is not acceptable for integer fieldz(Couldn't parse non-integer string: "{0}"N)
r[   r   
is_integerr   r@   r]   findr\   r6  re   )rT   rk   r   s      r   r-  r-    s    ue&6&6&8&8
299%@
AAs

32 5
5<<UC
DDt
<CCEJ u:	 
,a g <<>>
5
<
<U
C q6Ms0   9
C 
D0CD+C((=D+%D0+D0c                    [        U [        5      (       a  [        R                  " U 5      (       a  [	        S5      e[        R
                  " U 5      (       a  U S:  a  [	        S5      e[	        S5      eUR                  [        R                  R                  :X  a>  U [        R                  :  a  [	        S5      eU [        R                  :  a  [	        S5      eU S:X  a  [	        S5      e [        U 5      $ ! [         an  nU [        :X  a  [        S	5      s S
nA$ U [        :X  a  [        S5      s S
nA$ U [         :X  a  [        S5      s S
nA$ [	        SR#                  U 5      5      UeS
nAff = f)z!Convert an floating point number.z,Couldn't parse NaN, use quoted "NaN" insteadr   zICouldn't parse Infinity or value too large, use quoted "Infinity" insteadzKCouldn't parse -Infinity or value too small, use quoted "-Infinity" insteadzFloat value too largezFloat value too smallnanz-Couldn't parse float "nan", use "NaN" insteadz-infNinfzCouldn't parse float: {0})r[   r   r   r   r   r   rp   r   r5   r   r   
_FLOAT_MAX
_FLOAT_MINre   r   r   r   r@   )rT   r;   rk   s      r   r.  r.    s7   uzz%FGGzz%	,
 	

 -
 	
 ~~33AAA	))	)011	))	)011
e^
E
FFI<	 	I6]	)	5\	$5\299%@AqH	Is<   +
C6 6
E. E)E.E).E.4E)E.E))E.c                     U(       a(  U S:X  a  gU S:X  a  g[        SR                  U 5      5      e[        U [        5      (       d  [        S5      eU $ )zConvert a boolean value.

Args:
  value: A scalar value to convert.
  require_str: If True, value must be a str.

Returns:
  The bool parsed.

Raises:
  ParseError: If a boolean value couldn't be consumed.
rU   TrV   Fz#Expected "true" or "false", not {0}z%Expected true or false without quotes)r   r@   r[   r\   )rT   r8  s     r   r/  r/  	  sQ     	'	<CCEJKK	E4	 	 
<
==	,r   r   r   r   r  r   r  r   r  r   r
  )zgoogle.protobuf.Anyzgoogle.protobuf.Durationzgoogle.protobuf.FieldMaskzgoogle.protobuf.ListValuezgoogle.protobuf.Structzgoogle.protobuf.Timestampr   )F   FFNNTF)FFFNN)FNd   )F)<r   
__author__ry   collectionsr   rF   r   operatorr   regoogle.protobufr   r   r   google.protobuf.internalr   	frozensetr5   CPPTYPE_INT32CPPTYPE_UINT32CPPTYPE_INT64CPPTYPE_UINT64r,  r}   r   CPPTYPE_DOUBLEr~   r   r   r   compiler3  r   r   r   r   r   r   r.   r1   r<   objectr"   rM   r   r   r   r   r6  r   r	  listtupler   r   r  r-  r.  r/  rO   r   r   r   <module>rW     sX  
 +
  #   ! 	 & + + 2 ,,--,,--	 
 ,,--  ,,--  	 jjL  

#:; 0I 0/5 /) )
  !& ).+H` */ % %/P_v _DJ$  *`  6 eE]
{f {|B:J$N%IP6 67KL% !
 	& "
 	()"
 	%
 	& "
 	$-r   