rust #rustc 1.77.0 (aedd173a2 2024-03-17) $%E&[7-3ddcb355102b89e9nJnw~ $΁-03abccdd0084e3d9mJ9Ѷw"-3664e01417ecaa92rustc_std_workspace_core;Vh|-90da15eeee4377cd/]gH&{(/g-37ec58b44302b84ebI٣&R1á* -94bd947d28d71943 BR=/Ϟ1f-66b51c8161c08bcacfg_ifzm_/վӳx4-e044218e3f7f29aa miniz_oxideN{9V"րeXQ1-0f9240e3fb707edcadlerMQ8F Pxy-05cfdb8a83cd44fc hashbrown~VN|xtvm-6e5072e8ed4e8b29rustc_std_workspace_allocߜj~"-605810dd7baedec6 std_detectR};w֕v}|-6202b87ef6e88a55rustc_demangle8> ?-a6ec5e4ecbdc2061 addr2lineyCmM`[NyZ-cddcc0a6dcd1c090gimli-U*IY-f399506591a2c959objectBǾDF ?OI-48bd8f421a800ff6memchr*ܶ{vIh%-1451eb7b92c483c0u&ky,ÒmT:8-c3d6edb75b774aa6 p&$Zsx% -c11f690d897aee30 proc_macro2r.r@_ȱN'-68396a19c0aea70d unicode_ident0vjiJw-da76dd8ac69a19ca EWz M-a53a5302d6df220e8< extra-traits tĮ 8$<  t 8v,CIAG  ?=;8$<  tě 84DJBH  @><8 syn_omit_await_from_token_macro)3'ReservedD_3<7full 4A71 <   4Ċ <   4 <   4ğ <   4ě <   4 <   4requires_terminatorހ <   4܀ ParseBuffer\ <   4Ā TokenTreeL <   4ĉ parse_exprT <   4ď expr_attrsT <   4 unary_exprT <   4Đ trailer_exprd <   4trailer_helpertċ <ȋ   4ҋȋ‹ atom_exprLʲ <β   4زβȲpath_or_macro_or_struct <   4  <   4paren_or_tuplet <   4ċarray_or_repeat| <   4  <   4Ĺ  <Ń   4σŃĿ expr_earlyTȇ <   4ĝ expr_groupT <   4  <   4ę  <   4 Ѣ <բ   4ߢբϢ  <   4ĭ Я <ԯ   4ޯԯί else_blockT <   4đ  <   4Ą  <   4č  <   4  <   4expr_boxD <   4Ĺ  <   4 expr_unaryT <   4  <   4ĉ  <   4ħ  <   4ĭ  <   4  <   4  <   4 expr_closured <   4  <   4 closure_arg\ <   4  <   4ě  <   4  <   4ě  <   4 expr_breakT͡ <ѡ   4ۡѡˡexpr_retD <   4 ʭ <έ   4حέȭ ۵ <ߵ   4ߵٵexpr_struct_helper <   4  <   4 expr_constT <   4  <   4 expr_rangeT <   4  <   4  <   4Ą  <   4 FilterAttrs\ <   4ğwrap_bare_structӀ <   4Àijouter_attrs_to_tokens <   4inner_attrs_to_tokens <   4ē  <   4Į  <   4  <   4  <   4Đ  <   4ċ  <   4Ď  <   4maybe_wrap_else| <   4  <   4ðij  <   4߳  <   4Ĝ  <   4  <   4  <   4ĉ  <   4  <   4  <   4  <   4ġ  <   4  <   4  <   4ľ  <   4Ģ  <   4Ĝ  <   4  <   4  <   4  <   4  <   4 Ņ <Ʌ   4ӅɅÅ  <   4ė  <   4Ȋĸ  <   4 ɓ <͓   4ד͓Ǔ  <   4Ĉ ݛ <   4ۛ  <   4  <   4ˡĻArm[ZPatBox4s  PatIdentDs  PatLit4s  PatMacroDs  PatOr,s  PatPath< $<  tı  4EKCI  A?=  ^<^  t^ċ^^   _<_  t_ĩ__   a< '<'  4''Ę' whitespaceT}}}<}parsingL}}<}  4}}}*}2visit, < ށށ<Ú̳ visit_mutL <  visit-mut\숴fold$ < 4ľ <   tć $ <   t , <   tė $!<4ށ,<ށށ<̼L<\impl_parse_for_custom_keyword( ( ( <( L( ( Ć( ( !impl_to_tokens_for_custom_keyword-! , , <- LLT- - , ,! impl_clone_for_custom_keyword1 1 1 <1  clone-implsl1 1 1 1$ $impl_extra_traits_for_custom_keyword3$ 2 <2   t2 2 2 !impl_parse_for_custom_punctuation"! ! ! >>>  >>>8 >>>>  >>>8 >>>>  >>>8 >>>>  >>>8 @@@@  @@@8 @@@@  @@@8 @@@@  @@@8 @@@@  ???8 BBBB  BBB8 BBBB  BBB8 BBBB  BAA8 ABAA  AAA8 DDDD  DDD8 DDDD  DCC8 CDCD  CCC8 CCCC  CCC8 FFFF  FFE8 EFEF  EEE8 EEEE  EEE8 EEEE  EEE8 GHGH  GGG8 GGGG  GGG8 GGGG  GGG8 GGGG  GGG8 IIII  III8 IIII  III8 IIII  III8 IIII  III8 KKKK  KKK8 KKKK  KKK8 KKKK  KKK8 KKKK  KKK8 MMMM  MMM8 MMMM  MMM8 MMMM  MMM8 MMMM  MMM8 OOOO  OOO8 OOOO  OOO8 OOOO  OOO8 OOOO  OOO8 QQQQ  QQQ8 QQQQ  QQQ8 QQQQ  QQQ8 QQQQ  QQQ8 SSSS  SSS8 SSSS  SSS8 SSSS  SSS8 SSSS  SSS8 UUUU  UUU8 UUUU  UUU8 UUUU  UUU8 UUUU  UUU8 WWWW  WWW8 WWWW  WWW8 WWWW  WWW8 WWWW  WWW8 YYYY  YYY8 YYYY  YYY8 YYYY  YYY8 YYYY  YYY8 [[[[  [[[8 [[[[  [[[8 [[[[  [[[8 [[[[  [[[8 ]]]]  ]]]8 ]]]]  ]]]8 ]]]]  ]]]8 ]]]]  ]]]8 ____  ___8 ____  ___8 ____  ___8 ____  ^^^8 aaaa  aaa8 aaaa  aaa8 aaaa  a``8 `a``  ```8 cccc  ccc8 cccc  cbb8 bcbc  bbb8 bbbb  bbb8 Q] 8Q]   pQ^Q]Q] 8 Q` 8Q`   pQ`Q`Q` 8 Qa 8Qa   pQaQaQa 8 Qc 8Qc   pQcQcQc 8 T] 8T]   pT^T]T] 8 T` 8T`   pT`T`T` 8 Ta 8Ta   pTaTaTa 8 Tc 8Tc   pTcTcTc 8 V] 8V]   pV^V]V] 8 V` 8V`   pV`V`V` 8 Va 8Va   pVaVaVa 8 Vc 8Vc   pVcVcVc 8 Y] 8Y]   pY^Y]Y] 8 Y` 8Y`   pY`Y`Y` 8 Ya 8Ya   pYaYaYa 8 Yc 8Yc   pYcYcYc 8 [] 8[]   p[^[][] 8 [` 8[`   p[`[`[` 8 [a 8[a   p[a[a[a 8 [c 8[c   p[c[c[c 8 ]] 8]]   p]^]]]] 8 ]` 8]`   p]`]`]` 8 ]a 8]a   p]a]a]a 8 ]c 8]c   p]c]c]c 8 `] 8`]   p`^`]`] 8 `` 8``   p`````` 8 `a 8`a   p`a`a`a 8 `c 8`c   p`c`c`c 8 c] 8c]   pc^c]c] 8 c` 8c`   pc`c`c` 8 ca 8ca   pcacaca 8 cc 8cc   pcccccc 8 f] 8f]   pf^f]f] 8 f` 8f`   pf`f`f` 8 fa 8fa   pfafafa 8 fc 8fc   pfcfcfc 8 h] 8h]   ph^h]h] 8 h` 8h`   ph`h`h` 8 ha 8ha   phahaha 8 hc 8hc   phchchc 8 k] 8k]   pk^k]k] 8 k` 8k`   pk`k`k` 8 ka 8ka   pkakaka 8 kc 8kc   pkckckc 8 m] 8m]   pm^m]m] 8 m` 8m`   pm`m`m` 8 ma 8ma   pmamama 8 mc 8mc   pmcmcmc 8 p] 8p]   pp^p]p] 8 p` 8p`   pp`p`p` 8 pa 8pa   ppapapa 8 pc 8pc   ppcpcpc 8 s] 8s]   ps^s]s] 8 s` 8s`   ps`s`s` 8 sa 8sa   psasasa 8 sc 8sc   pscscsc 8 u] 8u]   pu^u]u] 8 u` 8u`   pu`u`u` 8 ua 8ua   puauaua 8 uc 8uc   pucucuc 8 x] 8x]   px^x]x] 8 x` 8x`   px`x`x` 8 xa 8xa   pxaxaxa 8 xc 8xc   pxcxcxc 8 {] 8{]   p{^{]{] 8 {` 8{`   p{`{`{` 8 {a 8{a   p{a{a{a 8 {c 8{c   p{c{c{c 8 }] 8}]   p}^}]}] 8 }` 8}`   p}`}`}` 8 }a 8}a   p}a}a}a 8 }c 8}c   p}c}c}c 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 ] 8]   p^]] 8 ` 8`   p``` 8 a 8a   paaa 8 c 8c   pccc 8 x 8x   pxxx 8 z 8z   pzzz 8 | 8|   p||{ 8 ~ 8~   p~~~ 8   8   8   8   8   8   8   8   8   8   8   8    ExprArrayL@  8    0    ExprAssignTC  8    0    ExprAssignOpdF  8    0    ExprAsyncLI  8    0    ExprAwaitLL  8    0    ExprBlockLR  8    0   ExprBoxgenerics< type_paramstype_params_mut lifetimes_mut const_paramsconst_params_mutmake_where_clause  TypeParams   TypeParamsMut   Lifetimes   LifetimesMut   ConstParams  ConstParamsMut   ImplGenerics   TypeGenerics   Turbofish  split_for_implgenerics_wrapper_impls  as_turbofish <  parse_multiple     L      ?@ABCDEFGHIJKLMNOPQ  Lifetime apostropheset_span  LRlit     LitReprsuffix LitIntReprڇ LitFloatReprڇvalue parse_withrespan_token_stream respan_token_treeڇшڇшڇшڇ base10_digits base10_parse ڇ ڇ  ш   lit_extra_traitsLitBoolLit parse_negative_litLшڇbytenext_chr parse_lit_strparse_lit_str_cookedparse_lit_str_rawparse_lit_byte_strparse_lit_byte_str_cookedparse_lit_byte_str_rawparse_lit_byteparse_lit_char backslash_x backslash_u parse_lit_intparse_lit_float  to_literalSTUVWXYZ[\mac     delimiter_span_close parse_bodyparse_body_withparse_delimiter L   ]^_ data_struct data_enum data_unionL `abcdeop parse_binopLfgh     without_plusambig_ty parse_bare_fn      parse_bounds       parse_bare_fn_arg   L                                                      ijklmnopqrstuvwxyz{|          <   is_none            const_argument         parse_helper    parse_mod_style is_ident I  get_ident   parse_rest qpath L                         print_path}~buffer                    Entry           Punct    Literal    End     TokenBuffer entries   recursive_new  new2 begin Cursor    scope    empty UnsafeSyncEntry      EMPTY_ENTRY create entry bump_ignore_group  ignore_none eof       token_stream  token_tree                  same_scope  same_buffer cmp_assuming_same_buffer open_span_of_group close_span_of_groupdrops        NoDrop                TrivialDrop              ext         IdentExt  parse_any peek_any unraw               PeekFn  IdentAny     punctuated                       Punctuated  P  last   ɱ    first  first_mut ۱ last_mut   pairs  pairs_mut  into_pairs   push_value  push_punct pop   trailing_punct empty_or_trailing push insert clear parse_terminated parse_terminated_with parse_separated_nonempty parse_separated_nonempty_with   ɱ    ɱ     ɱ extend    ɱ     ɱ     ɱ         ɱ       ɱ       ɱ < Pairs   ɱ  ۱     ɱ      size_hint     ɱ  next_back       ɱ      ɱ  PairsMut   ɱ  ۱    ɱ         ɱ Ĺ      ɱ   IntoPairs  ɱ  ۱   ɱ        ɱ Ĺ     ɱ    ɱ            Ĺ       Iter     IterTrait    clone_box  PrivateIter   ɱ  ۱    ɱ empty_punctuated_iter                Ĺ        ɱ        ɱ Ĺ       ɱ  !   ɱ  "     IterMut     IterMutTrait   PrivateIterMut   ɱ  ۱ #   ɱ empty_punctuated_iter_mut   $      %   Ĺ &    '   ɱ     (ɱĹ   )ɱ * Pɱ      +ɱ into_valueш value_mut punct_mut into_tuple ,ɱ -ɱ .ɱ Lɱɱ parse_quoteparse_quote_spanned ParseQuote ɱparse_macro_inputParseMacroInputspannedSpanned=helper __private       helpBoolStr  custom_keywordcustom_punctuationcustom_punctuation_reprcustom_punctuation_unexpectedstringify_punctsealed lookahead IntoSpans into_spans                FromSpans from_spans     ThreadBoundш thread_idget   Lookahead1cursor comparisonserrorPeek TokenMarker is_delimiter discouraged Speculative advance_to      Parse ParseStreamcell unexpected StepCursor'cadvance_step_cursornew_parse_buffer Unexpected   Chain  < cell_cloneinner_unexpectedget_unexpected!span_of_unexpected_ignoring_nones peek2peek3ɱ lookahead1forkstepRcheck_unexpected         Parserparse2 parse_str__parse_scoped__parse_stream tokens_to_parse_buffer parse_scoped parse_streamNothing verbatimbetweenprintTokensOrDefault       messages ErrorMessage start_spanend_span new_spannedU  to_compile_errorinto_compile_errorcombinenew_at   ־  8 8 8 8888888888888888888 8!8"8#8$8 Underscorespans 8 8%< 8&8'8(8)8Abstract8 8*<8+8,8-8.8/808As8 81<8283848586878Async8 88<898:8;8<8=8>8Auto8 8?<8@8A8B8C8D8E8Await8 8F<8G8H8I8J8K8L8Become8 8M<8N8O8P8Q8R8S8Box8 8T<8U8V8W8X8Y8Z8i8i 8[<8\8]8^8_8`8a8Const8 8b<8c8d8e8f8g8h8s8s 8i<8j8k8l8m8n8o8Crate8 8p<8q8r8s8t8u8v8{8{ 8w<8x8y8z8{8|8}8Do8 8~<8888888Dyn8 8<8888888Else8 8<8888888Enum8 8<8888888Extern8 8<8888888Final8 8<88888888 8<8888888For8 8<8888888If8 8<8888888Impl8 8<8888888In8 8<8888888Let8 8<8888888Loop8 8<8888888Macro8 8<8888888Match8 8<8888888Mod8 8<8888888Move8 8<8888888Mut8 8<8888888Override8 8<8888888Priv8 8<8888888Pub8 8<8888888Ref8 8<88888888 8<8888888SelfType8 8<8888888 SelfValue8 8<8888888Static8 8<8888888Struct8 8<8888888Super8 8<88888888 8<88888888 8<8888888Type8 8<8888888Typeof8 8<8888888Union8 8<8888888Unsafe8 8<8888888Unsized8 8<8888888Use8 8<8888888Virtual8 8<8888888Where8 8<8888888While8 8<88888888 8<88888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888888Add 8 8< 88888AddEq 8 8< 888 8 8< 88888AndAnd 8º 8< 888AndEq 8 8< 888At 8 8< 88888Bang 8ۼ 8< 88888Caret 8Ͻ 8< 88888CaretEq 8ľ 8< 888Colon 8 8< 88888Colon2 8 8< 888Comma 8 8< 88888Div 8 8< 88888DivEq 8 8< 888Dollar 8 8< 88888Dot 8 8< 88888Dot2 8 8< 888Dot3 8 8< 888DotDotEq 8 8< 888 8 8< 88888EqEq 8 8< 888Ge 8 8< 888Gt 8 8< 88888Le 8 8 < 88 8Lt  8  8 < 88 8  8 8MulEq  8  8 < 88 8Ne  8  8 < 88 8  8  8 < 88 8  8 8OrEq  8  8 < 88 8OrOr  8  8 < 88 8Pound  8  8 < 88 8  8 8Question  8  8 < 88 8  8 8RArrow  8  8!<! 88!8LArrow!! 8!! 8!<! 88!8Rem!! 8!! 8!<! 88!8!!8!8RemEq!! 8!! 8!<! 88!8FatArrow!! 8!! 8!<! 88!8Semi!! 8!! 8!<! 88!8!!8!8Shl!! 8!! 8!<! 88!8ShlEq!! 8!! 8!<! 88!8Shr!! 8!! 8!<! 88!8ShrEq!! 8!! 8!<! 88!8Star!! 8"" 8"<" 88"8""8"8Sub"" 8"" 8"<" 88"8""8"8SubEq"" 8"" 8"<" 88"8Tilde"" 8"" 8"<" 88"8""8"8Brace"8"" 8"<88"8"surround"88Bracket"8"" 8"<88"8""88Paren"8"" 8"<88"8""88"8"" 8"<88"8""88""""" Attribute" pound_token"style" bracket_token""tokens AttrStyle#Outer# #Inner# # Meta## # #List# # # NameValue# # ####MetaList## paren_token#nested MetaNameValue##eq_token#ӆ NestedMeta## # ## # ## #Variant#attrs##fields# discriminantFields#Named# # #Unnamed# # #Unit# ### FieldsNamed# brace_token#named FieldsUnnamed##unnamedField## ## colon_token#  Visibility#Public# # ## # # Restricted# # # Inherited# ## # # VisPublic# pub_tokenVisCrate# crate_token VisRestricted###in_token#Expr#Array# # ## # #AssignOp# # ## # ## # #Binary# # #l$ $ #$ $ #i$ $ #Call$ $ #$ $ #Closure$ $ #s$ $ #$ $ #ForLoop$ $ #$ $ #$ $ #Index$ $ #$ $ #$ $ #$ $ #$ $ #$ $ # MethodCall$ $ #$ $ #$ $ #$ $ # Reference$ $ #Repeat$ $ #$ $ #$ $ #$ $ #TryBlock$ $ #Tuple$ $ #$ $ #Unary$ $ #$ $ #Verbatim$ $ #$ $ #$ $  $$$$$$$$$$$$%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%% _noconstruct5%%6%%7%%8%%9% ExprBinary%%left%%right%:%%;%%<%ExprCall%%func%%ExprCast%%%as_token% %=%%>% ExprField%%base% dot_token%member%?%%@%%A% ExprIndex&&&&&B&ExprLit&&ӆ&C&&D&&E&&F& ExprParen&&&ExprPath&&qself&&G&&H&&I&&J&&K&&L&&M&&N&&O& ExprUnary&&&р&P&&Q&&R&Member&& & && & &&?&?&&  &<&&&& &&Generics&lt_token&params&gt_token& where_clause GenericParam&& & && & &' '  '''' TypeParam''''bounds''< LifetimeDef'''' ConstParam'' const_token''' ''<''''''BoundLifetimes' for_token'Ȁ''TypeParamBound'' ' '' ' ''' TraitBound''modifier''TraitBoundModifier'' 'Maybe' '  WhereClause' where_token' predicatesWherePredicate'' ' '' ' '' ' '''' PredicateType'' bounded_ty''PredicateLifetime''' PredicateEq'lhs_ty''rhs_ty'' ' 'ByteStr' ' 'Byte' ' 'Char' ' 'Int' ' 'Float' ' '' ' '' ' ((((((((LitStr(  LitByteStr( LitByte( LitChar( LitInt( LitFloat( (ш((((((Ռ(StrStyle(Cooked( (Raw( ( (( bang_token( delimiter(MacroDelimiter(( ( (( ( (( (  DeriveInput(( (((Data(( ( (( ( (( ( ((( DataStruct( struct_token(( semi_tokenDataEnum( enum_token((variants DataUnion( union_token(BinOp(( ( (( ( (Mul( ( (( ( (( ( (( ( (( ( (( ( () ) () ) () ) () ) () ) () ) () ) () ) () ) () ) () ) () ) () ) () ) () ) (BitXorEq) ) (BitAndEq) ) (BitOrEq) ) () ) () ) UnOp)|) ) )Not) ) )Neg) ) )) ) )BareFn) ) )) ) ) ImplTrait) ) )Infer) ) )) ) )Never) ) )) ) )) ) )Ptr) ) )) ) )Slice) ) ) TraitObject) ) )) ) )) ) ))))))*** * * * * ** TypeArray**elem*ԑ* TypeBareFn**unsafety**fn_token**inputs*variadic*output TypeGroup* group_token* TypeImplTrait** TypeInfer*underscore_token TypeMacro* TypeNever* TypeParen**TypePath**TypePtr* star_token** mutability* TypeReference* and_token*** TypeSlice**TypeTraitObject* dyn_token* TypeTuple**elemsC* extern_token* BareFnArg*** Variadic**dots ReturnType*{* ** * *  * leading_colon*segments  PathSegment** arguments  PathArguments** *AngleBracketed* * * Parenthesized* *  GenericArgument** * ** * ** * *Binding* * * Constraint* *  AngleBracketedGenericArguments* colon2_token*Ȁ** ͥ***  *** ParenthesizedGenericArguments+++ QSelf+Ȁ+ +position++++++++++++++++++++ ++ ++ ++ ++ ++++++++++++++++++++++++++++++++++++++ ++!++"++#++$++%++&++'++(++)++*+++++,++-++.++/++0++1++2++3++4++5++6++7+8++9++:++;,+<,+=,+>,+?,+@,+A,+B,+C,+D,+E,+F,+G,+H,+I,+J+K,+L,+M,+N,+O,+P,+Q,+R,+S,custom_punctuation_len&7)7,7/727Z7b7b7i7o7w7w7y7|7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7!7!7!7!7!7!7!7!7!7!7!7!7!7!7"7"7"7"7"7"7"7"7"7"7"7"7"7"7"7"7"7"7"7"7"7"7"7"7"7"7#7#7#7#7#7#7#7#7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7%7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7&7'7'7'7'7'7'7'7'7'7(7(7(7(7(7(7(7(7*7*7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7+7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7 Y h  ^^_markerIY^Y'''' ''' ''' ''' ''' ''Ȋ' ''' ''' ꨈ>^Y((( ^Y((( ᰪH^Y((( g^Y((( ª§ͧ^Y((Ռ( —ѻj^̓Y((( 㩕^Y(((ш(Ы^Y䊃)^Ychspacing씦ʜ ^YϽӌ^Y    9^^Y׶ˇˇˇˇNˇˇYˇ^ˇY""":Y"""댮/Y"""讂ҽY"""NY^ӽ=ȊȊNȊȊYȊ^ȊћxNY^⛇2NY^ᄎmٌٌNٌٌYٌ^ٌNY^NY^i܃{NY^جQďďNďďYď^ďsьNY^DžݞNY^{Қ-ՑՑNՑՑYՑ^Ցӕݔ͙NY^NY^`NY^ӣXNY^حNY^ȨοNY^雿.ӖӖNӖӖYӖ^ӖقחۈDNY^ʢՕNY^’鞥NY^ĈϙNY^%NY^ǝNY^ٔққNққYқ^қՋNY^֛˛NY^ҥuNY^dNY^^NY^ÓݦNY^ގRҠҠNҠҠYҠ^Ҡÿ˛[NY^ޖݬNY^̜םNY^dNY^㖚͐NY^ NY^٘ѥѥNѥѥYѥ^ѥŧNY^ڴvNY^шNY^ӋNY^̺NY^ϩϺNY^ϿѪѪNѪѪYѪ^Ѫņ NY^ɃNY^Ɗ͙NY^ťʷNY^JNY^乖΋NY^³NY^}NY^º͆NY^NY^߲߲߲߲̎N߲߲Y߲^߲ۼ盀k˳˳˳˳N˳˳Y˳^˳Ͻʕ悕1NY^ľ񍈦㲹NY^ңNY^媐Ʀ NY^u÷÷÷÷N÷÷Y÷^÷צՀNY^̓eNY^NY^ŅNY^ƦͻͻNͻͻYͻ^ͻȨNY^_NY^¦Ʋ߽߽߽߽N߽߽Y߽^߽蠌eʾʾNʾʾYʾ^ʾƮږNY^NY^ʟNY^   ʴNY^   ޗNY^   ۊѠNY^   Զ NY^   NY^   ׎NY^   ϿЛNY^   ῞:NY^   rNY^!!!̌ϙ]NY^!!!LjNY^!!!NY^!!!։NY^!!!NY^!!!ՖNY^!!!զ̡ٹNY^!!!ٱNY^!!!핅NY^!!!߬NY^"""Ŷ>NY^"""¡NY^"""킵NY^^^^^Yѥˇ#### ### ### ˟****ѣ谫أ##########ӆжN#### ### µN  ""#####ʈoNNNڟ#### ### ##鉌ݴ####Z####ۥڳ޽N== = #### ### ### ##񴼢G######ҸQ######⦒N######NNNN#### ### NNN#(### ### ### ### ### #$$ $$l$ $$$ $$i$ $$ $ $$ $ $$ $ $$s $ $$ $ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$$ $$ $ $$!$ $$"$ $$#$ $$$$ $$%$ $$&$ $$'$ ޻%%%ɵt%%%ѡ%%%ņꗪ%%%ծX%%%փ%%%%%%ʿᣔ%%%Ǻ%%%ΛΞ:%%%ȍ~%%%%%%咡%%%%%% ѕӬ%%%ٔѺ%%%֟%%%%%%𾹮/%%%ˉ*%%%ׂᖘ%%%̷&&&&&&ƃ=&&&&&&&ӆƬͻܩ&&&ɺf&&&ݦN&&&&&&꿞&&&&&ڵ&&&&&4&&&&&&Ʃ&&&҅&&&ͳؔ˲&&&߲ל&&&ːLjZ&&&ƇϨ!&&&΄w&&&閍%&&&&&&&р&ᲃ"&&&ʫԨ&&&όݍNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN&&&& &&& <&&&&O.O.&&?&ŸahN   G    NNNNNNNNNNN&&&& &&& ''' `''''''''<׷:''ނ'''']''''''' ''<ܨN&&&Ȁ&؀&&ñ>  Μ*>  >  z>  ਈ˳>  ሷd>    ଢ଼ߘٴ'  ԭߡ'  k''''Ä'Ȁ''ڮķX'''' ''' ܮ4''ׅ''''N'''' ''' ''' ݠ"''''''ьϟz''؈'''⚑'''''ߣޝ|Nցφ ʁʺφ'''''' ۥȆ''ӆ''Ѣ ʁʺNցN  ଢ଼ߘٴN  ԭߡN  kNφNNNNNNNNމNNON̓N̓N̓N‡ڇ{ڇ醸ڇ¯̓̓NNNNN̓NN((((((˺Ò{N(((( ((( ((( ƇҶ(((((ԑﮥ\Д(((((բ̫Д((((Ζ(((( (((ͼN(((( ((( ((( ((( ((( ((( ((( ((( ))) )) ) )) ) )) ) )) ) )) ) ))) ))) ))) ))) ))) ))) ))) ))) ))) ))֖) ))) ))) ))) ))) Βߝژ)))|) ))) ))) ֤CNN؜)))) ))ǘ) ))) ))) ))) ))) ))ƙ) ))) ))) )) ) )) ) )) ) ))Ӛ ) )) ) ))) 斒ܧ*****ԑ*۾?Ý******̝****򹻏CÝ****סÝ****򃐦Ý***͐ Ý***繺LÝ***oÝ**Ÿ**=Ý****̳Ý******Ý**ˠ****Ή͘xÝ****ŜÝ***š*өפCÝ**ߡ**NÝÝآ***{*** * 篬***** ˶**C**ԓB ʁʺNNNNNNNNNNNNNآNNNN**Ӣ**Ƿ΋ةN****|****** **Ҥ* **** *** *** **ͥ* *** ****Ȁ**Ϳ+++++Ϧ۫**ͥ*** 9NN۫NNNNN***++NȮ      ͧΧ       ݳ         ݳ         ݳ         ݳ  ۲       ݳ        ΛজL ;;;Empty; ; ʌ TT־T TT end_or_lenTTTپ  TTT TTTTTԠ ڵ әәՙD鑊" ڵ әәՙD鑊" ڵ     ʈh    PǷ ǷǷ    ۱ 𓋌Aɱ===   𹬵@===     ۱ 𓋌Aڵɱ= >    ۱ Èl ڵϺ>    ۱ Èl ڵϺ>    ۱ Èl ڵϺ    ۱ Èl ڵϺ>    ۱ 妖 ڵϺ>    ۱ 妖 ڵϺ>    ۱ 妖 ڵϺ>    ۱ c>>>    ͵>>     ۱ ާחť ڵϺ  ־  պֱŒB ڵ>  ־  պֱŒB ڵ>  ־  պֱŒB ڵ>  ־  պֱŒB ڵ>    ۱ ާחť ڵϺ>    ۱ ާחť ڵϺ>    ۱ ާחť ڵϺ    ۱ ާחť ڵϺ  ڵ     ۱ ƗϞU ڵϺ>    ଙ ڵ>    ଙ ڵ>    ଙ ڵ>    ۱ ƗϞU ڵϺ>    ۱ ƗϞUڵϺ>    ۱ ƗϞUڵϺ ڵƆNN666buf161鈲/999Global ̫d###### ߂굆φДց(((( ((( ((( ꉷ*Ȯ۫މ+++Ȁ+ +++Ýآ؜؜Span˦шhNҿղ[߹߹N߹N߹NJ娄|NJ娄|NJ娄|  ԠX  lܼȹ ʁʺ1 ۿꎬN ڵNςNۂNLexError̼b=>= >־Ө[=!(#&&&&&*)v *&' * *# *%(&&! ##%( *&&)#'" *%%!' *! &(' * &&! *!&& * *'' %%&&& *' * &&&& *# %%##%## * *%%%%%!&&( +%%%%' *#&'''%%&&&&%%&&'&"&&!% * * *"(&&&&&%% *'&& %% '!# (##&&( * *(%%("!# &&' *%% *'##(#&&  "!! "! (m( " !! "!"!'"( (! (({!("! ' ** *( *' *!#!!**"'#(! +*'&*"*!"*& '#* !* ! *) *# ' *((#(!# *&' ((( *(#' **'&& #( )&&&*#!x' *!     &&  "  T ә T ;   ә  k(((!""a!'((!  ~"" "!!!"! ! !""! " ("" ( 6""!!!!'    """!! ""  &&""!!"" *  !!!!&  ""!!!!  !!!!      ""      ""!!"!""    !!                    ""    "!!!    !!  ""               +*+#,*+&,*+&!!+&+#!!+#+&((+(  +*+#+*+(  !!+'+#+&  ((  ,'"!+*+'+'   ,*! ,*  +'"",*((++ +(+%,*+*+#+&,*+*((+)  +#+',*+(,'"",*!!!!+'  ((,'+#+&+",#,*+(,*+',#+*+(""+#,''+%""!!+*  +*+&""',*!!  &&+(""((+*+%,#  ++,)!!  +*  +(,#+#  ,#+',*+&,*+%""  '+(+'!!%#%#'&$#%#%#%#$#"(''('%#*)%###))''%#%#&$#"$#%#%###%#&''%#%#))%#"##*)##'*)&'&*)))))''%#('"##$#((%#('%#'&%#*)((##"&%#%#(##('$#%#(($# *%#%#$#%#%#$#''('('('$#))$#*)%###*)## *$###*)))"!  """"!!  ""    !!""  !!""        +'+#!!  +(""!! ""&&!!,)!!! !!!!&  &((         #     &&  &&   NG. Yv  h    3 ^v m(=>8>8>pa NqN##Ɔ==.O$V *5<$len$W *5<$len$Z *5<$len9 +6=1OWiw1111111111111    1      1      1      1      1      1      1      11111111111111111111111111111     1    !!1######$len######$len######$len%%%%%%$len%%%%%%$len%%%%%%$len''''''$len''''''$len''''''$len))))))$len))))))$len))))))$len++++++$len++++++$len++++++$len------$len------$len------$len//////$len//////$len//////$len111111$len111111$len111111$len333333$len333333$len333333$len555555$len555555$len555555$len777777$len777777$len777777$len999999$len999999$len999999$len;;;;;;$len;;;;;;$len;;;;;;$len======$len======$len======$len??????$len??????$len??????$lenAAAAAA$lenAAAAAA$lenAAAAAA$lenCCCCCC$lenCCCCCC$lenCCCCCC$lenEEEEEE$lenEEEEEE$lenEEEEEE$lenGGGGGG$lenGGGGGG$lenGGGGGG$lenIIIIII$lenIIIIII$lenIIIIII$lenKKKKKK$lenKKKKKK$lenKKKKKK$lenLMMMMM$lenMMMMMM$lenMMMMMM$lenNOOOOO$lenOOOOOO$lenOOOOOO$lenPQQQQQ$lenQQQ QQQ$lenQQQ QQQ$lenRSS SSS$lenSSS SSS$lenSSS SSS$lenTUU UUU$lenTUU UUU$lenUUU UUU$lenVWW WWW$lenVWW WWW$lenWWW WWW$lenXYY YYY$lenXYY YYY$lenYYY YYY$lenZ[[ [[[$lenZ[[ [[[$len[[[ [[[$len\]] ]]]$len\]] ]]]$len\]] ]]]$len^^_ ___$len^__ ___$len^__ ___$len``a aaa$len`aa aaa$len`aa aaa$lenbbc ccc$lenbcc!ccc$lenbcc!ccc$lendde!eee$lendee!eee$lendee!eee$lenffg!ggg$lenffg!ggg$lenfgg!ggg$lenhhi!iii$lenhhi!iii$lenhii!iii$lenjjk!kkk$lenjjk!kkk$lenjkk!kkk$lenllm!mmm$lenllm!mmm$lenlmm!mmm$lennno!ooo$lennno!ooo$lennno!ooo$lenppq!qqq$lenppq!qqq$lenppq!qqq$lenrrs!sss$lenrrs!sss$lenrrs!sss$lenttu!uuu$lenttu!uuu$lenttu!uuu$lenvvw!www$lenvvw"www$lenvvw"www$lenxxy"yyy$lenxxy"yyy$lenxxy"yyy$lenzz{"{{{$lenzz{"{{{$lenzz{"{{{$len||}"}}}$len||}"}}}$len||}"}}}$lenr ",7>1PXj"x1"1"1  +6=3  +6=3T  D 6+$ٽ Z$   | ۫0 Z * ƾ & ;  # ξ?L&4$666161鈲/ ʁʺ ʁʺ    ۱ 𓋌A۫_  &,7>1l*   **   *)E |*                        ލ>|  2 Ƿ|&private::PeekFnT  D 6.$ M     x$666161鈲/  ʁʺ h )4;1  *5<1  *5<2  *5<2  *5<3  *5<3  *5<1  *5<1  *5<1  *5<2  *5<2  *5<2  *5<3  *5<3  *5<3  *5<1  *5<2  *5<3,Y ###/˳7>$_ ###/7>$` ###/7>La ###/7>$o ###/7>o ###/7>,  ###/7><  ###/7>4+ ###/7>,, ###/7>T- ###/7>, ###/7>4 ###/7>D ###/7>, ###/7>, ###/7>4 #$#/7>, #$#/7> #$#/7>, #$#/7>$ # $#/7>$ # $#/7>< # $#/7>D  # $#/7>,! # $#/7>,$ #$#/7>& #$#/7>,' #$#/7>' #$#/7>( #$#/7>$( #$#/7>,) #$#/7>,* #$#/7>T+ #$#/7>,+ #$#/7>$- #$#/7>,. #$#/7>L. #$#/7>4/ #$#/7>40 #$#/7>42 #$#/7>2 #$#/7>D3 # $#/7>,3 #!$#/7>$4 #"$#/7>,5 ##$#/7>45 #$$#/7>D6 #%$#/7>,6 #&$#/7>,7 #'$#/7>, &&$08?< &&$08? $06=$  &&#/7>D  &&#/7>,  &'#/7>̮0 %  Μ*_  ־  պֱŒB3 %  `    ଙę7 %  z_ gn: %  ਈ˳` hoԄ> %  ሷd_ gnA %  ` hoܳG %  ଢ଼ߘٴ` ցkrܗJ %  ԭߡ` hoL %  k_ gn,q ''#/7>Dq ''#/7>,x ''#/7>$Ѐ ''$08?D ''$0މ8? ''$08? ''#/7>< ''#/7>$ ''#/7>$ ''#/7> ''#/̓7>, ''#/7>$  ''#/7>D  ''#/7>ʒ (($(((((Ŏ( 𫐿jqx, ((#/7>, ((#/7>< ((#/7>4  ((#Д/7>$  ((#Д/7>,  ((#Д/7> ((#/7> ((#/7> ((#/7> ((#/7> ((#/7> ((#/7> ((#/7>4 ((#/7>4 ()#/7>, ( )#/7> ( )#/7> ( )#/7> ( )#/ʾ7>  ( )#/7>  ()#/7>  ()#/7>  ()#/7>  ()#/7>,  ()#/7>,  ()#/7>,  ()#/7>,  ()#/7>,  ()#/7>D ()#/7>D ()#/7>< ()#/7>, ()#/7>, ()#/7>, ))#؜/7> ))#؜/˳7> ))#؜/7>, ))#Ý/7>4 ))#Ý/7>, ))#Ý/7>L ))#Ý/7>, ))#Ý/آ7>, ))#Ý/7>,  ))#Ý/7>,  ))#Ý/7>$  ))#Ý/7>  ) )#Ý/7>L  ) )#Ý/7>,  ) )#Ý/7>\ ) )#Ý/7>, ) )#Ý/7>D ))#Ý/7>$Q **&2:  lܼȹÝt **#/7>l **#/Ȯ7>D **#/7>$ **#/Ý7>, **#/7>< **#/7>T **#/7>,   & 2:AH,   # /7>,   # /7><   # /7>   # /6=)   #/ 7>#   (4 ManuallyDropш 歘w~T "/;CKR ,8@G #  Ӆ*Zah$h #/7>,h #/&&& %&phantom%&%ّ""Cell"ш!ɽDZɧ4% ڵ) ڵe  ʁʺڵ8   TT\U ,Ul54-6L97,V LW#LW"lW$X#DX#lX#TX#,Y#4Y#\Y#lY#DK Syn is a parsing library for parsing a stream of Rust tokens into a syntaxN tree of Rust source code.K Currently this library is geared toward use in Rust procedural macros, butN6 contains some APIs that may be useful more generally.9G - **Data structures** — Syn provides a complete syntax tree that canJE represent any valid Rust source code. The syntax tree is rooted atHI [`syn::File`] which represents a full source file, but there are otherLA entry points that may be useful to procedural macros includingD2 [`syn::Item`], [`syn::Expr`] and [`syn::Type`].5= - **Derives** — Of particular interest to derive macros is@H [`syn::DeriveInput`] which is any of the three legal input items to aKM derive macro. An example below shows using this type in a library that can P2 derive implementations of a user-defined trait. 5 M - **Parsing** — Parsing in Syn is built around [parser functions] with the PK signature `fn(ParseStream) -> Result`. Every syntax tree node defined NJ by Syn is individually parsable and may be used as a building block for MI custom syntaxes, or you may dream up your own brand new syntax without L* involving any of our syntax tree types. - N - **Location information** — Every token parsed by Syn is associated with a QL `Span` that tracks line and column information back to the source of thatOH token. These spans allow a procedural macro to display detailed errorKL messages pointing to all the right places in the user's code. There is anO example of this below.L - **Feature flags** — Functionality is aggressively feature gated so yourOJ procedural macros enable only what they need, and do not pay in compileM time for all the rest. [`syn::File`]: File [`syn::Item`]: Item [`syn::Expr`]: Expr [`syn::Type`]: Type" [`syn::DeriveInput`]: DeriveInput% [parser functions]: mod@parse! D # Example of a derive macroK The canonical derive macro using Syn looks like this. We write an ordinaryNJ Rust function tagged with a `proc_macro_derive` attribute and the name ofML the trait we are deriving. Any time that derive appears in the user's code,OK the Rust compiler passes their data structure as tokens into our macro. WeNG get to execute arbitrary Rust code to figure out what to do with thoseJG tokens, then hand some tokens back to the compiler to compile into theJ user's crate.) [`TokenStream`]: proc_macro::TokenStream, ```toml\ [dependencies] syn = "1.0"| quote = "1.0" [lib]L proc-macro = true ```< < # extern crate proc_macro; #, use proc_macro::TokenStream;  use quote::quote;+ use syn::{parse_macro_input, DeriveInput};.+ # const IGNORE_TOKENS: &str = stringify! {. #[proc_macro_derive(MyMacro)]! # };D5 pub fn my_macro(input: TokenStream) -> TokenStream {81 // Parse the input tokens into a syntax tree4: let input = parse_macro_input!(input as DeriveInput);=8 // Build the output, possibly using quasi-quotation; let expanded = quote! { // ... };T3 // Hand the output tokens back to the compiler6 TokenStream::from(expanded)# }, <K The [`heapsize`] example directory shows a complete working implementationNL of a derive macro. It works on any Rust compiler 1.31+. The example derivesOK a `HeapSize` trait which computes an estimate of the amount of heap memoryN owned by a value.K [`heapsize`]: https://github.com/dtolnay/syn/tree/master/examples/heapsizeN  <  pub trait HeapSize {į > /// Total number of bytes of heap memory owned by `self`. A. fn heap_size_of_children(&self) -> usize;!1 ,!  {#  a: Box,# b: u8,t# c: &'a str,# d: String,# ,# <$$


|$$ # Spans and error reporting$$K The token-based procedural macro API provides great control over where the$NM compiler's error messages are displayed in user code. Consider the error the%PE user sees if one of their field types does not implement `HeapSize`.%H& <& &. & D' struct Broken {' ok: String,' bad: std::thread::Thread,'! ,' <''D By tracking span information all the way through the expansion of a'GK procedural macro as shown in the `heapsize` example, token-based macros in(NH Syn are able to trigger errors that directly pinpoint the source of the)K problem.d)) ```text\)O error[E0277]: the trait bound `std::thread::Thread: HeapSize` is not satisfied)R --> src/main.rs:7:5ļ* |<*" 7 | bad: std::thread::Thread,*%V | ^^^^^^^^^^^^^^^^^^^^^^^^ the trait `HeapSize` is not implemented for `Thread`+Y <++ D++ # Parsing a custom syntax+,D The [`lazy-static`] example directory shows the implementation of a,GK `functionlike!(...)` procedural macro in which the input tokens are parsed,N using Syn's parsing API.--Q [`lazy-static`]: https://github.com/dtolnay/syn/tree/master/examples/lazy-static-T.M The example reimplements the popular `lazy_static` crate from crates.io as a.P procedural macro../  {}/ # } src/main.rs:10:16܄2 |D2< 10 | static ref FOO: String = "lazy_static".to_owned();2? | ^^^2 <33 D33 # Testingl33G When testing macros, we often care not just that the macro can be used3JL successfully but also that when the macro is provided with invalid input it3OK produces maximally helpful error messages. Consider using the [`trybuild`]4NI crate to write tests for errors that are emitted by your macro or errors5LK detected by the Rust compiler in the expanded code following misuse of the5NC macro. Such tests help avoid regressions from later refactors that6FK mistakenly make an error no longer trigger or be less helpful than it used6N to be.T772 [`trybuild`]: https://github.com/dtolnay/trybuild758 D88 # Debugging|88I When developing a procedural macro it can be helpful to look at what the8LB generated code looks like. Use `cargo rustc -- -Zunstable-options9E7 --pretty=expanded` or the [`cargo expand`] subcommand.9::: [`cargo expand`]: https://github.com/dtolnay/cargo-expand:=:J To show the expanded code for some crate that uses your procedural macro,:MI run `cargo expand` from that crate. To show the expanded code for one of;LL your own test cases, run `cargo expand --test the_test_case` where the last;OC argument is the name of the test file without the `.rs` extension.[ [debugging]: https://quodlibetor.github.io/posts/debugging-rusts-new-custom-derive-system/>^> D>> # Optional features>?E Syn puts a lot of functionality behind optional features in order to?HL optimize compile time for the most common use cases. The following features?O are available.@@O - **`derive`** *(enabled by default)* — Data structures for representing the@RK possible input to a derive macro, including structs and enums and types.ANO - **`full`** — Data structures for representing the syntax tree of all validAR5 Rust source code, including items and expressions.B8N - **`parsing`** *(enabled by default)* — Ability to parse input tokens intoBQ' a syntax tree node of a chosen type.C*K - **`printing`** *(enabled by default)* — Ability to print a syntax treeCN& node as tokens of Rust source code.D)6 - **`visit`** — Trait for traversing a syntax tree.D9J - **`visit-mut`** — Trait for traversing and mutating in place a syntaxEM tree.\E> - **`fold`** — Trait for transforming an owned syntax tree.EAO - **`clone-impls`** *(enabled by default)* — Clone impls for all syntax treeFR types.dGN - **`extra-traits`** — Debug, Eq, PartialEq, Hash impls for all syntax treeGQ dGH - **`proc-macro`** *(enabled by default)* — Runtime dependency on theHK6 dynamic library libproc_macro from rustc toolchain.H9I I I lI Ihttps://docs.rs/syn/1.0.109II68  l ll ll5l6l7ll l#l"ll#l#l#l#l#l#l#l#l#l#l#l#l#l#l%l%l%l%l%l%l%l%l%l%l%l%l%l%l%l%l%l&l&l&l&l&l&l&l&k&k&k&k&k&k&k&k&k&k&k&рk&k&k&k&k&k'k'k&k&ނk'k'؈k'k'ׅk'k'k'k'ӆk'k'kkkkk k'k k(k k(k (k(k (k(k (k(k (Ռk(Ռk (k(k (k(k(k(k(k(k(k(k(Βk(ؗk)Ck* k* k* k) k* k* k* k* k* k* k* Ÿk* k* k* ˠk* k* k* ߡk* Ӣk* k* ͥk* k* k* k+ k* k* k* k+ kkkkkkkkkkkkkkkkkkk"Ұk, ĂTTUTULUdU4Up T}                   attrs_pubL          4    $    ,     $         rest$                        <   4          L    4    $          $                    <   4          L    4    $     d         4   PhantomData\     \   $                          <   4   <  LT  $    ,   ToTokensD     $       L        $             \   \      \                       L          4    $    ,          $                       L    4    $          $                 t               |       T                        D                   L           $    $    ,    no_visitD          $             D                 L      $    $          $             L         $   $   ,      $               L    $   $      $                   |    D                    enum_attrL   $        ,    $   ,   $   ,   body$         remainingL          D           L         $   $    $            $   $    $     ؼ L     % ĝ          ,    $   ,   $   ,                     D                             doc_attrD               variant<    ,                 4    ,                   ؼ L                                    $     $                        $      <           4                      <  LT                ؼ L        4    $                         D                         D           <              4             !            $    ,   D      4    ,             $    ,      <    ,      4    ,      $ $      4       $       $            4     $       $      <               <  LT         do_not_generate_to_tokens         foo                             arms$            4    ,    $    ,                   D                              D                <    ,           $                                 $                   D       $      <        4    $            $                       $            4    ,    $    ,                   D                              D                <    ,    4    ,           $                                $                   D       $      <           L       4      4    $            $                        $            4    ,    $    ,              D     <             <  LT  $    ,    D     $      L        $      4         \   \    , $       $    |  ! "  ! !  !  !  !  ,!  !  ! !   !  ! !  !  ! !  !  m !  !  $!   !  !  !  !  ,!  !  ! !  !   !  !   !   ! !  ! "  !  !  ! !  !  !  !  !  !  !  "  " "  " "  "  " "  "  " "  "   "   "  "  "  "  " "  "   "   "  "  " "" "  " "  " "   $"  $" "  " "  "  " "  " " "  " "  " LVU U U ܉>,<߹;   4t4‚_‚_,<߹F   4tD !ꌃБ%ꌃБ% !̨,<߹Q      <  4  < D1R   4t,##""$%ͼ/#ͼ/$%,""<""߹#F]   4td',7 ,7߹'  م7܉>' &input,&((((&( ߹܉>F   4td*,7 ,7߹*  م7‚_* ) ,) + + ++)+  ‚_ J    4 t t -,7 ,7߹-  م7 !ꌃБ%-  , ,  , . . ..,.   !ꌃБ% K        <   4   <  D  1\ 0,7 ,7߹0  م7""$%ͼ/0  / ,  / 1 1 11/1  ""$%ͼ/ s| 3,7 ,7߹3 Parenthesisʥל.  م7   2 , L D2 4 4 4424 NJ娄|  م7        ݳ     ԗK Parse a set of parentheses and expose their content to subsequent parsers.N # Examplel < # use quote::quote; ,= use syn::{parenthesized, token, Ident, Result, Token, Type};@& use syn::parse::{Parse, ParseStream};)! use syn::punctuated::Punctuated;$0 // Parse a simplified tuple struct syntax like:3 //4 // struct S(A, B);ԕ struct TupleStruct {İ" struct_token: Token![struct],% ident: Ident, paren_token: token::Paren,") fields: Punctuated,, semi_token: Token![;], , impl Parse for TupleStruct { 3 fn parse(input: ParseStream) -> Result {6 let content; Ok(TupleStruct {* struct_token: input.parse()?,-# ident: input.parse()?,&; paren_token: parenthesized!(content in input),>< fields: content.parse_terminated(Type::parse)?,?( semi_token: input.parse()?,+ })t }L , , # fn main() { # let input = quote! { # struct S(A, B); # };d2 # syn::parse2::(input).unwrap();5 < <d|  !     <  ,   4  $  ! ,  , L d      4  !  , L    parens4     <   4  <   4   ,   ,   L       ,    ! 4   ,   L       ,  ! !-L Parse a set of curly braces and expose their content to subsequent parsers.!O! l!" <" " ,"6 use syn::{braced, token, Ident, Result, Token, Type};"9 ")ˏ #$#* // Parse a simplified struct syntax like:#- 4# // struct S {# // a: A,$ // b: B,$ // }d$ struct Struct {$ $% $ brace_token: token::Brace,%"* fields: Punctuated,%- ,%% struct Field {% name: Ident,% colon_token: Token![:],& ty: Type,& ,&& impl Parse for Struct {& &6Γ ġ' Ok(Struct {' '-Ŕ (&4 brace_token: braced!(content in input),(7= fields: content.parse_terminated(Field::parse)?,(@ t)Ȗ L) ,)) impl Parse for Field {) )6 Ok(Field {*" name: input.parse()?,*%) colon_token: input.parse()?,*, ty: input.parse()?,*# t+Ȗ L+ ,+ ,+ + + # struct S {+ # a: A,, # b: B,, # }|,ϗ d,- # syn::parse2::(input).unwrap();,0 <- <-d-|-ć - 0 - .  - <. . ,. . . 4. . $.. . 0 ,. . ,.. L.. d. . .  . . 4. . 0 . ,.. L.. . . / braces4// / /  / (input).unwrap();88 <8 <8d8|8ڔ 9 < 9 9  9 <9 9 ,9 9 9 49 9 $99 9 < ,9 9 ,99 L99 t9 9 :  : : 4: : < : ,:: L:: : : : bracketsD:: : ;  : <: :  D: : <: :  D: ; ,; ; ,;; L;; ; ; ; ,;; ; < 4; ; ,;; L;; ; ; ; ,; ; <lVLVdV@ Tokens representing Rust punctuation, keywords, and delimiters.CDG The type names in this module can be difficult to keep straight, so weHJF prefer to use the [`Token!`] macro instead. This is a type-macro thatI. expands to the token type of the given token.1 [`Token!`]: crate::Token l: The [`ItemStatic`] syntax tree node is defined like this.=" [`ItemStatic`]: crate::ItemStatic% <> # use syn::{Attribute, Expr, Ident, Token, Type, Visibility};A , pub struct ItemStatic {܂ pub attrs: Vec," pub vis: Visibility,& pub static_token: Token![static],)) pub mutability: Option,, pub ident: Ident,̵ pub colon_token: Token![:],# pub ty: Box, pub eq_token: Token![=],  pub expr: Box, pub semi_token: Token![;]," , < # ParsinglJ Keywords and punctuation can be parsed through the [`ParseStream::parse`]MB method. Delimiter tokens are parsed using the [`parenthesized!`],E' [`bracketed!`] and [`braced!`] macros.*; [`ParseStream::parse`]: crate::parse::ParseBuffer::parse()>* [`parenthesized!`]: crate::parenthesized! -" [`bracketed!`]: crate::bracketed! % [`braced!`]: crate::braced!   <  use syn::{Attribute, Result}; !  ) ,  # enum ItemStatic {}  , // Parse the ItemStatic struct shown above. / impl Parse for ItemStatic {   6 # use syn::ItemStatic; "? # fn parse(input: ParseStream) -> Result { B Ok(ItemStatic { 8 attrs: input.call(Attribute::parse_outer)?, ;! vis: input.parse()?, $* static_token: input.parse()?, -( mutability: input.parse()?,+Ŕ & , #& eq_token: input.parse()?,)" expr: input.parse()?,% + t # }| # unimplemented!()Ȗ L , < # Other operationsG Every keyword and punctuation token supports the following operations.J* - [Peeking] — `input.peek(Token![...])`-0 - [Parsing] — `input.parse::()?`30 - [Printing] — `quote!( ... #the_token ... )`3E - Construction from a [`Span`] — `let the_token = Token![...](sp)`H9 - Field access to its span — `let sp = the_token.span`<- [Peeking]: crate::parse::ParseBuffer::peek()0. [Parsing]: crate::parse::ParseBuffer::parse()1@ [Printing]: https://docs.rs/quote/1.0/quote/trait.ToTokens.htmlCG [`Span`]: https://docs.rs/proc-macro2/1.0/proc_macro2/struct.Span.htmlJ,VY\bh"""""" !!!!!!!!!!!!!!!!!!!"""""""""D_894 8:48;D8< 8<'8> 8><(8? 8?<(8@ (8@T(8A (8A<(8B (8BD(8C (8CՌ4(8DՌ (8D4(8E (8EL8F,8H\8IL8J,8K$8L\8M L8O<8P,8QL8R DN8TTokenStreamExtt 8U|,8WDerefMutD8XR " 3 !   5 Marker trait for types that represent single tokens.8I This trait is sealed and cannot be implemented for types outside of Syn.L   < L܁,YY^|Y Z[Z[    4t$,7       ݳ ,7Y4Y Z 4    4 t <  YY [ \ < 8^_$!\] !! ! !  = = > <= =l= > > > D> > > <> > > > > > > > <> >l> $> o,> > > $> > ?  ? ,? ? ?  ? $?? $? ? ?  ? $? ? ? @ ? ? @ \       'D    , , D        , ,     3,    , , ,    9$    , , $      T    , , ,      (4    , , 4    )    , ,     ,    , , i,    ,    , , ,    D    , , sD    ,    , , ,    <<    , , {<    *    , ,     5    , ,      $    , , $     $    , , $     4    , , 4    +,    , , ,         , ,         , ,         , ,     $    , , $        , ,         , ,     $    , , $    ,,    , , ,    ,    , , ,        , ,     $    , , $        , ,     -D    , , D    .$    , , $        , ,         , ,     4    , , 4    $    , , D    $    , , L    4    , , 4    4    , , 4    ,    , , ,     ,    , , ,    6    , ,     "$    , , $    /4    , , 4    A,    , , ,    #4    , , 4    0<    , , <    $    , ,     1<    , , <    %,    , , ,    &,    , , ,    2,    , , ,        , ,         , , ,         , ,        , , º4        , , ,        , ,         , , ۼ$         , , Ͻ,        , , ľ<        , , ,       , , 4        , , ,         , ,         , , ,        , , 4        , ,        , , $       , , $       , , D        , ,        , , $       , ,         , ,        , ,         , ,         , , ,       , ,          , ,         , , $       , , $        , , ,        , , D       , , 4       , , 4         , ,         , , ,       , , D        , , $        , ,         , , ,        , ,         , , ,         , , $         , ,         , , ,        , , ,         , , T  |    4t    < L<4 ,4\LSpacing<$ o \^IK?<,7,7 ,7߹,7 ,7  م7\  ,,D       م7   8d,7,7       ݳ ,7 ,74 4,H,,7,7 ,7߹,7 ,7  م7\ L  ,,13Ud,7,7,7 ,7߹,7 ,7 ,7  م7\  ,,,D       م7   :T,7,7       ݳ ,7 ,74 4,҄  Մ ܄ 4քtЄ    < LT߄D L,,,<Ņ$΅\ԅ t I wydfRTD?,,7,7,7 ,7 ,7  ,7   ,4=<Ɗ,7,7 ,7 ,7 ъ  Ί$׊4s,,7,7 ,7 ,7 ɋ Ë,7 ,7Đ,7  Ƌ$ϋ4ۋ tvLV,V4/ L^,\4,Y, W* }kmZ\H95    < L܈    4t, 4)    < Lܛ|,7 ,7  ,     <  L ܰ   ,, ,7 ,7߹,7  م7\   , D        م7     <  L   $,7       ݳ ,74 4<        ,  ,   $ $  ,     ,   ,     $   ,  ,     , ,   ,     L     ,  ,  $  "$ˇ ,#4,7 ,7  symbol4VDWV V W V V W (attr.tokens)` except that:7C8D - the surrounding delimiters are *not* included in the input to the8G parser; and9C - the error message has a more useful span when `tokens` is empty.9F9 \9 #[my_attr(value < 5)]9% ^^^^^^^^^ what gets parsed:( <:::IǾl;; ; ; <; ;L;ܼ;T<,7 ,7  م7 < <,< $<#%>H= Parse the arguments to the attribute using the given parser.<@==IǾl>> > > <> >L>ܥ>|?,7 ,7  م7 ? ?4? $?parser4?02?    ,7 ,7߹,7  C;6 Parses zero or more outer attributes from the stream.A9AAIǾlBB B B  Returns the identifier that begins this structured meta item.hAhG For example this would return the `test` in `#[test]`, the `derive` inhJC `#[derive(Copy)]`, and the `path` in `#[path = "sys/windows.rs"]`.iF$j,7 ,7 ,7 j $jxI Conventional argument type associated with an invocation of an attributeoL macro.TppK For example if we are developing an attribute macro that is intended to bepN& invoked on function items as follows:q)q TokenStream {uO: let args = parse_macro_input!(args as AttributeArgs);v=5 let input = parse_macro_input!(input as ItemFn);v8ww # "".parse().unwrap()ܙw ,w x> xxx(xy,y   $yy,y   $yy, yDyzFilter predicate,ݤTT־T TTTTTپ ,7,7 ,7 ,7z,z $zz&Dz,7,7 ,7 ,7 { ${|,| $|}&D},7,7 ,7 ,7 } $}|~ ~  <~ ~L~~<D ,\4X XX' X)XXPX   1 LD  Å5678m ]YYYYYӆYYYZ ZZ ۥZ Z Z ͰZ ZZZ=ZZZZZZ ZZZZZZZ Z Z    "L+"LY#$_#Dd#lg#Tm#Ұ,##########%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&р&&&&&''&&ނ''؈''ׅ''''ӆ'''(( (( (( (( (Ռ(Ռ (( (((((((((Β(ؗ)C* * * ) * * * * * * * Ÿ* * * ˠ* * * ߡ* Ӣ* * ͥ* * * + * * * + , .* ......P\,7,7 ,7߹,7 ,7 \  ,,B,7 ,7߹,7  م7\  ,B,7 ,7߹,7\  ,6|,7 ,7߹,7  م7\  ,܏ ,,,7 ,7߹,7\  ,ڑ ,,,7 ,7߹,7  م7\  , ,,,7 ,7߹,7  م7\  , ,,,7 ,7߹,7  م7\  ,L,7 ,7߹,7\ $ ,Qԃ,7 ,7߹,7ۦ\ $ ,\ ,7 ,7߹,7\۟ $ȟ ,ԟd    < LT䋡?\ޡ DN ' )šƚP[ Y L1LDLA  5678ȯǒ ӆ  ۥ   Ͱ =œٜ߄    ȒӒ   "B"B#B#B#B#B#Ұ,ǟ#ҟ#ݟ########%%ˠ%֠%%%%%%%%%%ġ%ϡ%ڡ%%&&&&&&&&Ȣ&Ӣ&ޢ&&&&&&&&&р&̣&ף&&&''&&ނ''؈'Ť'ׅФ'ۤ'''ӆ'''((Ǥ ((ߤ (٤( (( (Ռ(Ռ (( ((ĥ(ϥ(ڥ(((((Β(ؗ)C* * * Ȧ) Ӧ* ަ* * * * * * Ÿ* * * ˠ* ̧* ק* ߡ* Ӣ* * ͥ* * * + * * Ũ* Ш+ , ѡ.|.¢ -L,7,7 ,7 ,7  $4D     ԧ ̦-LϦ,7,7 ,7 ,7 ٦ $ڦ4Dӧ      -L,7,7 ,7 ,7  $4Wd TX AddAssignL MulAssignL  79_4jڟ|w4w666161鈲/\  !L,7 ,7  $ -7 -7  $ +T-7 -7  $ incrementL   "T -7 -7  $ $ DXX X X X X X L= ĺ ͺ5678ۻ ӆ  ۥ   Ͱ Ѭ=­ͭحĮϮڮ       Բ޲"=#=#=#=#=#=#=#=#=#Ұ,#"#####%%%%%%%%%%%%%%%%%&&&&&&&&&&&&&&&&&&&р&&&&&''&&ނ''؈''ׅ''''ӆ'''(( (( (( (( (Ռ(Ռ (( (((((((((Β(ؗ)C* * * ) * * * * * * * Ÿ* * * ˠ* * * ߡ* Ӣ* * ͥ* * * + * * * + ,h h-ėi,i! ,,,,̚j j-Lj-7-7 -7 -7 j $j4jm n-Ln-7-7 -7 -7 n $n4nDn     o p-Lp-7-7 -7 -7 p $p4pDq     r r-Lr-7-7 -7 -7 r $r4ru v-Lv-7-7 -7 -7 v $v4vԷw w-Lw-7-7 -7 -7 w $w4wy y-Ly-7-7 -7 -7 y $y4yDz     Y| DZZ) Z Z Z Z Z Iterator<Item = &TypeParam>)+ over the type parameters in `self.params`..\-7 -7ց  Μ*-7  $2tLA style="padding-right:0;">Iterator<Item = &mut LifetimeDefConstParam 1 $1 l3      ଙ֪ ֪ 334' ڂ4L4$4 4($4-7 -7ڂ ʁʺڂ> 4 $4 L7  zz  ־  պֱŒB į 77į7# 7L7$7 8($8-7 -7 ʁʺ> 8 $8 d:  ਈ˳ਈ˳    ଙ ܳ ::ܳ;& ׃;L;$; ;($;-7 -7׃ ʁʺ׃> ; $; \>  ሷdሷd  ־  պֱŒB  >>>% >L>$> ?($?-7 -7 ʁʺ> ? $? tA      ଙ  AAA( ԄALB$B B($B-7 -7Ԅ ʁʺԄ> B $B ( Returned by `Generics::split_for_impl`.D+EM *This type is available only if Syn is built with the `"derive"` or `"full"`EP' feature and the `"printing"` feature.*E*FD F F ` into a turbofish like `::`.bJccId3dd-7 -7  k-7 d $dh φh Lifetime {' Lifetime::new("'a", Span::call_site())* < <.7 .7  4$ԍ $ .7 .7  $  &D .7 .7  $ $ ̏ <.7.7.7 .7 .7MMMKMKMKNʼKNټKNKޣZ.7  $L ,.7 .7  $ &.7.7 .7 .7  $,  ;\.7.7 .7 .7  $, +.7.7 .7 .7  $, $$.7.7 .7 .7  4 $h #%;a   < La   4tD 4|a   < L<,\4%NOOO LD, *  ,,.7 .7߹.7  م7\  ,D       م7      NJ娄|da   < LT,<\ DN t %NOOO  L, * ! ԕ -L.7.7 .7 .7  $4iͭ 8 fn get_path(attr: &Attribute) -> Result> {;% if !attr.path.is_ident("path") {( return Ok(None);Ȗ L match attr.parse_meta()? {"K Meta::NameValue(MetaNameValue { lit: Lit::Str(lit_str), .. }) => {N& lit_str.parse().map(Some)) }l _ => {8 let message = "expected #[path = \"...\"]";;3 Err(Error::new_spanned(attr, message))6lȖ L , <c   < Lܝ,.7 .7  ,  $ 'C5 Invoke parser on the content of this string literal. 8!!I! l!! <"" # use syn::{LitStr, Result};"  ," # fn main() -> Result<()> {"? # let lit_str = LitStr::new("a::b::c", Span::call_site());#B ,#( # const IGNORE: &str = stringify! {#+! let lit_str: LitStr = /* ... */;$$ϗ d$$C // Parse a string literal like "a::b::c" into a Path, not allowing$F2 // generic arguments on any of the path segments.%5B let basic_path = lit_str.parse_with(syn::Path::parse_mod_style)?;%E ,& # Ok(())& <& <&&c & & <& &L&&T'.7 .7 ' '4' $'4'#%',((F( stream4($)<)     *C* ,+$+Ժ0$0.7 .7 0 $01&D1.7 .7 1 $1$1141.7 .7 .7 1 $12,2.7 .7 2 $2|2 3,3.7 .7  3 ш,3$35,5.7 .7 5 $56$6.7 .7 6 $67&D7.7 .7 7 $7$7747.7 .7 .7 8 $88,8.7 .7 8 $8d9 9)9 ш,9$9̸;,;.7 .7 ; $;<$<.7 .7 < $<=&D=.7 .7 = $=$==4>.7 .7 .7 > $>>,>.7 .7 > $>d? ?+? ш,?$?ܿA,A.7 .7 A $AB$B.7 .7 B $BC&DC.7 .7 C $C$CD4D.7 .7 .7 D $DD,D.7 .7 D $D\E ̓E*E.7 .7̓ E  $E$EJ#lJ.7 .7̓ .7 J $JPa0 Parses the literal into a selected number type.J3KD This is equivalent to `lit.base10_digits().parse()` except that theKGI resulting errors will be correctly spanned to point to the literal tokenKL in the macro input.LL ()?;O3 Ok(Port { value })OȖ LO ,O (mac.tokens)` except that itG4 produces a more useful span when `tokens` is empty.7 l <I use syn::{parse_quote, Expr, ExprLit, Ident, Lit, LitStr, Macro, Token};L use syn::ext::IdentExt;ܘ5 use syn::parse::{Error, Parse, ParseStream, Result};8ˏ $C // The arguments expected by libcore's format_args macro, and as aFB // result most other formatting and printing macros like println.E 4C // println!("{} is {number:.prec$}", "x", prec=5, number=0.01)F struct FormatArgs { format_string: Expr, positional_args: Vec,#$ named_args: Vec<(Ident, Expr)>,' , impl Parse for FormatArgs { 6! let format_string: Expr;$. let mut positional_args = Vec::new();1) let mut named_args = Vec::new();,( format_string = input.parse()?;+" while !input.is_empty() {%) input.parse::()?;," if input.is_empty() {% break; }G if input.peek(Ident::peek_any) && input.peek2(Token![=]) {J* while !input.is_empty() {-E let name: Ident = input.call(Ident::parse_any)?;H1 input.parse::()?;46 let value: Expr = input.parse()?;94 named_args.push((name, value));7* if input.is_empty() {- break;" }1 input.parse::()?;4 }2 positional_args.push(input.parse()?);5l Ok(FormatArgs { format_string, positional_args,  named_args, tȖ L ,B // Extract the first argument, the format string literal, from anE1 // invocation of a formatting or printing macro.44 fn get_format_string(m: &Macro) -> Result { 7, let args: FormatArgs = m.parse_body()?; / match args.format_string {!"B Expr::Lit(ExprLit { lit: Lit::Str(lit), .. }) => Ok(lit),!E other => {"C // First argument was not a string literal expression."FA // Maybe something like: println!(concat!(...), ...)"DU Err(Error::new_spanned(other, "format string must be a string literal"))#Xl$Ȗ L$ ,$$ fn main() {|$$ let invocation = parse_quote! {$') println!("{:?}", Instant::now())%, T%7 let lit = get_format_string(&invocation).unwrap();%:% assert_eq!(lit.value(), "{:?}");&( ,& <&& & & <& &L&&T'/7 /7 ' ',' $')HD Parse the tokens within the macro invocation's delimiters using the(G given parser.((Џ ( ( <( (L((|)/7 /7 ) )4) $)4)#%+S+ + + <+ +L+ܔ+|+/7 /7߹/7  م7\+  ,+D,       م7 |11 1 1 <1 1L1ܳ1<1,2\242K KKKKK$ ߕ LD6    ѡ    5 6 7 8        ͭ ͭ ӆ        ۥ   Ͱ €   ΀  ր =ڀ ހ     Ƕ ض       ÷ Է                ",(t(Ұ , #Ϣ " # # # # #ԣ # # # # # #Ƥ #٤ # # % % % %˥ %ޥ % % % % % %Ц % % % % % %§ &է & & & & & &Ǩ &ڨ & & & & & &̩ &ߩ & & & &р & &Ѫ & & & ' ' &ë &ނ֫ ' '؈ ' 'ׅ ' 'Ȭ '۬ 'ӆ ' ' ' ( ( (ݮ (ݮ ( ( ( ( (Ռɯ (Ռɯ ( ( ( (r"r "r"r "r"r "ʰ (ݰ ( ( ( (Β (ؗ )Cͱ *  *  *  )  *  *  * Ҳ *  *  *  * Ÿ *  * ij * ˠ׳ *  *  * ߡ * Ӣ *  * ͥɴ * ܴ *  *  +  *  *  * ͵ + ,1 1* //////2 3,,3/7 /7߹/7  م7\3  ,3d66ґ 6 6 <6 6LT660\7 D7N }~~~~~~V ߕ8 4L2    ѡ    5 6 7 8             ͭ ͭ ӆ         ۥ   Ͱ       =      Ƕ ض       ÷ Է                "2(2(Ұ , #Ϣ " # # # # #ԣ # # # # # #Ƥ #٤ # # % % % %˥ %ޥ % % % % % %Ц % % % % % %§ &է & & & & & &Ǩ &ڨ & & & & & &̩ &ߩ & & & &р & &Ѫ & & & ' ' &ë &ނ֫ ' '؈ ' 'ׅ ' 'Ȭ '۬ 'ӆ ' ' ' ( ( (ݮ (ݮ ( ( ( ( (Ռɯ (Ռɯ ( ( ( (" ""ĥ ""ϥ "ʰ (ݰ ( ( ( (Β (ؗ )Cͱ *  *  *  )  *  *  * Ҳ *  *  *  * Ÿ *  * ij * ˠ׳ *  *  * ߡ * Ӣ *  * ͥɴ * ܴ *  *  +  *  *  * ͵ + ,6 ă7/|7/7 8-L8/7/7 /7 /7 8 $848D:     D;   D<   k#     TllՒ l l l l l *ߡLA*CD*LG*ӢDL*TO*Ұ , #Ϣ " # # # # #ԣ # # # # # #Ƥ #٤ # # % % % %˥ %ޥ % % % % % %Ц % % % % % %§ &է & & & & & &Ǩ &ڨ & & & & & &̩ &ߩ & & & &р & &Ѫ & & & ' ' &ë &ނ֫ ' '؈ ' 'ׅ ' 'Ȭ '۬ 'ӆ ' ' ' ( ( (ݮ (ݮ ( ( ( ( (Ռɯ (Ռɯ ( ( ( ( ( (ʰ (ݰ ( ( ( (Β (ؗ ) * ͥɴ * ܴ *  *  +  *  *  * ͵ + ,Q R-R* --,,,,\R,R. ,,,,,,,,S ÝS,,S/7 /7߹/7  م7Ý\T  ,SLU ÝX7? In some positions, types may not contain the `+` character, toUBE disambiguate them. For example in the expression `1 as T`, T may notVH contain a `+` character.VWA This parser does not allow a `+`, while the default parser does.WDdX/7 /7߹/7\X  ,XZDZ/7 /7߹/7\Z  ,ZTZallow_group_genericZظ ,,/7 /7߹/7  م7\  ,ğ »,,Ż/7 /7߹/7  م7\һ  ,˻ ܾ,,߾/7 /7߹/7  م7\  , ,,/7 /7߹/7  م7\  ,̈ ,,/7 /7߹/7  م7\  ,Xl/7 /7߹/7  م7 ʁʺ\  ,allow_mut_selftę ,,/7 /7߹/7  م7\  ,Ď آ,,/7 /7߹/7  م7آ\  ,ĉ ,,/7 /7߹/7  م7\  , ,,/7 /7߹/7  م7\  , ,,/7 /7߹/7  م7\  ,| 7d/7 /7߹/7  م7\  ,I,/7 /7߹/7\  ,T̸ ,,/7 /7߹/7\  , ,,/7 /7߹/7  م7\  ,  7d/7 /7߹/7\  ,I,/7 /7߹/7\  ,Td/7 /7߹/7֬\ dyn_spanD ,T䷇  އ,,/7 /7߹/7  م7 \  ,  ɉ7dЉ/7 /7߹/7 \  ,݉I,/7 /7߹/7 \  ,Tѓ  ,,/7 /7߹/7  م7 \  ,ĭ  Ж,,Ӗ/7 /7߹/7  م7 \  ,ٖt  >,/7 /7߹/7 \  ,Tľ  ,,/7 /7߹/7  م7 \  ,v/7 /7߹/7  م7 ʁʺ\  ,tԝ          ,,/7 /7߹/7  م7 \  , ة ,,/7 /7߹/7  م7ة \  ,d ɼ   < LTl1\ȵ  |    \   DN   t      o  Lm           ѡ          5   6   7   8  ɥ                                       ͭ   ͭ   ӆ                         ۥ         Ͱ                     =                  Ƕ   ض   ʔ                  ÷   Է                                               "  m)  m*  m*  m*  m*  m*  m*  m*  Ÿm*  m*  m*  ˠm*  m*  m*  ߡm*  Cm*  m*  Ӣm*  m*  Ұ ,   #  Ϣ "   #   #   #   #   #  ԣ #   #   #   #   #   #  Ƥ #  ٤ #   #   %   %   %   %  ˥ %  ޥ %   %   %   %   %   %  Ц %   %   %   %   %   %  § &  է &   &   &   &   &   &  Ǩ &  ڨ &   &   &   &   &   &  ̩ &  ߩ &   &   &   &  р &   &  Ѫ &   &   &   '   '   &  ë &  ނ֫ '   '  ؈ '   '  ׅ '   '  Ȭ '  ۬ '  ӆ '   '   '   (   (   (  ݮ (  ݮ (   (   (   (   (  Ռɯ (  Ռɯ (   (   (   (   (   (  ʰ (  ݰ (   (   (   (  Β (  ؗ )   *   ͥɴ *   ܴ *    *    +    *    *    *   ͵ +   , Ļ,ݵ,Ą,! ,,,,܇  -L/7/7 /7 /7   $4D         ܣ  ɹ-L̹/7/7 /7 /7  ֹ $׹4ݹD         ̞  ¼-Lż/7/7 /7 /7  ϼ $м4ּ  -L/7/7 /7 /7   $4  -L/7/7 /7 /7   $4D         ܉  -L/7/7 /7 /7   $4  -L/7/7 /7 /7   $4D           -L/7/7 /7 /7   $4!  -L/7/7 /7 /7   $4  -L/7/7 /7 /7   $4  -L/7/7 /7 /7   $4D         ܂  -L/7/7 /7 /7   $4D         ܜ آ -L/7/7 /7آ /7   $4  -L/7/7 /7 /7   $4  -L/7/7 /7 /7   $4  -L/7/7 /7 /7   $4  -L/7/7 /7 /7   $4  -L/7/7 /7 /7   $4p ͱ ͱ             Ҳ Ҳ           ij ij ׳ ׳         Dtt t t t t t ::c;y struct SingleUse {y use_token: Token![use],z path: Path,z ,zz impl Parse for SingleUse {z {6 Ok(SingleUse {{' use_token: input.parse()?,{*6 path: input.call(Path::parse_mod_style)?,|9 t|Ȗ L| ,} <}|}/7 /7߹/7 \~  ,}cA Determines whether this is a path of length 1 equal to the givenD ident.T݈5 For them to compare equal, it must be the case that:8! - the path has no leading colon,ɉ$$ - the number of path segments is 1,'A - the first path segment has no angle bracketed or parenthesizedD path arguments, andA - the ident of the first path segment is equal to the given one.DIǾl֌ l <7 use syn::{Attribute, Error, Meta, NestedMeta, Result};: # use std::iter::FromIterator;׍"G fn get_serde_meta_items(attr: &Attribute) -> Result> {J% if attr.path.is_ident("serde") {(# match attr.parse_meta()? {&A Meta::List(meta) => Ok(Vec::from_iter(meta.nested)),DK bad => Err(Error::new_spanned(bad, "unrecognized attribute")),Nl } else { Ok(Vec::new())ԔȖ L ,ɑ <בD/7/7 /7 /7     d $,Œ )< If this path consists of a single ident, returns the ident.?" A path is considered an ident if:%$( - the number of path segments is 1, andڕ+D path arguments.ۖIǾlחL/7 /7 ʁʺ /7   $Pd/7 /7߹/7 \  ,TT/7/7 /7߹/7 /7 \  ,$ϟTS,/7 /7߹/7  م7د \  ,T    < LTV |ײ    \   DN       X   LW             ѡ             5    6    7    8                                                       ͭ    ͭ    ӆ                                 ۥ            Ͱ                            =                        Ƕ    ض                            ÷    Է                                                              "   X*  X*  X*  X*  X*  ͥX*  X*  X+  X+  Ұ ,    #   Ϣ "    #    #    #    #    #   ԣ #    #    #    #    #    #   Ƥ #   ٤ #    #    %    %    %    %   ˥ %   ޥ %    %    %    %    %    %   Ц %    %    %    %    %    %   § &   է &    &    &    &    &    &   Ǩ &   ڨ &    &    &    &    &    &   ̩ &   ߩ &    &    &    &   р &    &   Ѫ &    &    &    '    '    &   ë &   ނ֫ '    '   ؈ '    '   ׅ '    '   Ȭ '   ۬ '   ӆ '    '    '    (    (    (   ݮ (   ݮ (    (    (    (    (   Ռɯ (   Ռɯ (    (    (    (    (    (   ʰ (   ݰ (    (    (    (   Β (   ؗ )   Cͱ *    *    *    )    *    *    *   Ҳ *    *    *    *   Ÿ *    *   ij *   ˠ׳ *    *    *   ߡ *   Ӣ *   , ɲ--|,D,  -L/7/7 /7 /7   $4 ۫ -L/7/7 /7۫ /7   $4  -L/7/7 /7 /7   $4!  -L¼/7/7 /7 /7  ̼ $ͼ4ӼD         0  -L/7/7 /7 /7   $4̱  -L/7/7 /7 /7   $4  -L/7/7 /7 /7   $4/ Ȯ -L/7/7 /7Ȯ /7   $4D         ȮVT/7/707 /7 /7د 07  4,$u   ɴ ɴ ܴ ܴ           ͵ ͵ twv v v                       ,   ,              ,              ,              <   ʘ ʘ    ʘ ʘ     ,    B A buffer that can be efficiently traversed multiple times, unlike EH `TokenStream` which requires a deep copy in order to traverse more than K once.L  L *This type is available only if Syn is built with the `"parsing"` feature.* O\    ѧ 񵛞񵛞 <      lܼȹ    ?l  07 07666161鈲/    ѧ< 4 +A Creates a `TokenBuffer` containing all the tokens from the inputD `proc_macro::TokenStream`.M *This method is available only if Syn is built with both the `"parsing"` andP `"proc-macro"` features.*             \ wasm32D      L unknownL   L wasi4  <  d  ϡY  4(D `proc_macro2::TokenStream`.$  4G Creates a cursor referencing the first token in the buffer and able toJ& traverse until the end of the buffer.),07 07       ݳ 07   $!0 A cheaply copyable cursor into a `TokenBuffer`.3K This cursor holds a shared reference into the immutable data which is usedNL internally to represent a `TokenStream`, and can be efficiently manipulatedO and copied around.M An empty `Cursor` can be created directly, or one may create a `TokenBuffer`P; object and get a cursor to its first token with `begin()`.> G Two cursors are equal if they have the same location in the same input J! stream, and have the same scope. $ !O4!         ݳ  ݳ  !""   #,#   $4$    ˂ٷФ  $          ݳ   $%9 Creates a cursor referencing a static empty TokenStream.%<,%    |) ͧΧ   <    ,)   )$ )#\) -D4-     -,-ܗ2,2      $25/5    $5̧8\8 07 07  8  $8Ğ;H Checks whether the cursor is currently pointing at the end of its valid:K scope.T;;   $;=RI If the cursor is pointing at a `Group` with the given delimiter, returns Extension traits to provide parsing methods on foreign types.ABͫFQ 4   $  \  4  L  \h  ,  # sua̗QB+M Additional methods for `Ident` not provided by proc-macro2 or libproc_macro.PL This trait is sealed and cannot be implemented for types outside of Syn. ItO. is implemented only for `proc_macro2::Ident`.1M *This trait is available only if Syn is built with the `"parsing"` feature.*PD   ,  | ' 1* Parses any identifier including keywords.-F This is useful when parsing macro input which allows Rust keywords asI identifiers. l <( use syn::{Error, Ident, Result, Token};+ܤ use syn::parse::ParseStream;  mod kw {d syn::custom_keyword!(name);# ,B // Parses input that looks like `name = NAME` where `NAME` can beE // any identifier.  4  // Examples:  4  // name = anything  // name = impl 4 fn parse_dsl(input: ParseStream) -> Result { 7 input.parse::()?; #! input.parse::()?; $. let name = input.call(Ident::parse_any)?; 1 Ok(name)  ,  < L 07 07߹07  م7  \    , 0 Peeks any identifier including keywords. Usage: 3 `input.peek(Ident::peek_any)` ! F This is different from `input.peek(Ident)` which only returns true in I2 the case of an ident which is not a Rust keyword. 5D  Ƿ̏D Strips the raw marker `r#`, if any, from the beginning of an ident.G - unraw(`x`) = `x` - unraw(`move`) = `move` - unraw(`r#move`) = `move`  lD In the case of interop with other languages like Python that have aGF different set of keywords than Rust, we might come across macro inputID that involves raw identifiers to refer to ordinary variables in theG> other language with a name that happens to be a Rust keyword.AH The function below appends an identifier from the caller's input onto aKB fixed prefix. Without using `unraw()`, this would tend to produceE. invalid identifiers like `__pyo3_get_r#move`.1 < use syn::Ident;ܠ1 fn ident_for_getter(variable: &Ident) -> Ident {4= let getter = format!("__pyo3_get_{}", variable.unraw());@+ Ident::new(&getter, Span::call_site()). , <,07 07     $  0L07 07߹07Ӌ \  ,D       ĵ,07 07   $ Ƿ T,  &  $07       ݳ 07 4 4<   * Ƿ\< ,  4    4Ƿʈ /+  ǷDP .*   Ƿ Ƿ ,07 07ǷǷ   $xE A punctuated sequence of syntax tree nodes separated by punctuation.HI1 Lots of things in Rust are punctuated sequences.M4= - The fields of a struct are `Punctuated`.@D - The segments of a path are `Punctuated`.GD - The bounds on a generic parameter are `Punctuated`.F - The arguments to a function call are `Punctuated`.IL This module provides a common representation for these punctuated sequencesOL in the form of the [`Punctuated`] type. We store a vector of pairs ofOM syntax tree node + punctuation, where every node in the sequence is followedP2 by punctuation except for possibly the final one.5! [`Punctuated`]: Punctuated$ \# a_function_call(arg1, arg2, arg3);&! ~~~~^ ~~~~^ ~~~~$ <ֈ $'  d=  ,Ɔ  IndexMutD  4D   , )    1     4    ʭ\    ,   \   4   , Y  L \TD  #  *  yܣ D A punctuated sequence of syntax tree nodes of type `T` separated by G punctuation of type `P`.  L Refer to the [module documentation] for details about punctuated sequences. O  [module documentation]: self T  ɱ     𓋌A 13.0 ,    $      ɱ   ֫  ?AEG & Creates an empty punctuated sequence. )          !   A Determines whether this punctuated sequence is empty, meaning itD. contains no syntax tree nodes or punctuation.1D07 07   $E Returns the number of syntax tree nodes in this punctuated sequence.HI This is the number of nodes of type `T`, not counting the punctuation ofL type `P`.l07 07   $!, Borrows the first element in this sequence./,07 07 ʁʺ 07   $-4 Mutably borrows the first element in this sequence.7L07 07 ʁʺ 07   $ + Borrows the last element in this sequence..$07 07 ʁʺ 07   $,3 Mutably borrows the last element in this sequence.6D07 07 ʁʺ 07   $B Returns an iterator over borrowed syntax tree nodes of type `&T`.E$07 07  ־  պֱŒB07   $(D Returns an iterator over mutably borrowed syntax tree nodes of typeG `&mut T`.lD07 07    ଙ07   $"C Returns an iterator over the contents of this sequence as borrowedF punctuated pairs.,07 07    ۱ Èl07   $!-B Returns an iterator over the contents of this sequence as mutably E borrowed punctuated pairs. L!07 07    ۱ 妖07  ! $!#*@ Returns an iterator over the contents of this sequence as owned"Cؽ#T#  $#$        (&I Appends a syntax tree node onto the end of this punctuated sequence. The$L6 sequence must previously have a trailing punctuation.%9&G Use [`push`] instead if the punctuated sequence may or may not already&J have trailing punctuation.&' [`push`]: Punctuated::push''d''I Panics if the sequence does not already have a trailing punctuation when'L this method is called.ԟ(T(07 07  ( $(ш,(,,I Appends a trailing punctuation onto the end of this punctuated sequence.*LB The sequence must be non-empty and must not already have trailing+E punctuation.++d+,G Panics if the sequence is empty or already has a trailing punctuation.,JT,07 07  , $, punctuation\-0+F Removes the last punctuated pair from this sequence, or `None` if the/I sequence is empty.0007 07 ʁʺ  0 $01        D1         2$A Determines whether this punctuated sequence ends with a trailing2D2t207 07  2 $25'H Returns true if either this `Punctuated` is empty, or it has a trailing3K44F Equivalent to `punctuated.is_empty() || punctuated.trailing_punct()`.4I507 07  5 $57>E Appends a syntax tree node onto the end of this punctuated sequence.5H6I If there is not a trailing punctuation in this sequence when this method6LH is called, the default value of punctuation type `P` is inserted before6K the given value of type `T`.7 $707 07  7 <8 $8ш,8;N( Inserts an element at position `index`.9+9d9:G Panics if `index` is greater than the number of elements previously in:J this punctuated sequence.:4;07 07  ; <; $;,;ш,;>D Clears the sequence of all values and punctuation, making it empty.=G,>07 07  > $>BiH Parses zero or more occurrences of `T` separated by punctuation of type?K) `P`, with optional trailing punctuation.?,@I Parsing continues until the end of this parse stream. The entire content@L2 of this parse stream must consist of `T` and `P`.@5AAIǾlBB B B Lk     kk=k  k8:l2  ɱ   l֫ l m>4m07 07    m  mmm $m m35r,  ɱ   r֫ r Lr$r  lrDr  s$Ls=  $s4t        t       u4   ɱ    uϺ u u$&!#Lu$v  ڵlvDv    ־  պֱŒB ڵv$Lv=   ڵϺ$vw8   ɱ    w wۺ w!#Lw$w  ڵlwDw      ଙ ڵx$Lxۺۺ=   ڵϺ$xx'  ɱ   x֫ x y`.y;yyOzz ,z  ɱ    { {ڵ {Ϻ {  q      ۱ Èl ڵϺÈl {  {,{   TT־T TTTTTپ ڵϺ{${   әәՙD鑊" ڵ{+   ɱ    { { {!#L|$|     𹬵@ ڵ Ϻ|($|07 07 ʁʺ>  |  ڵϺ$|D}       ڵϺ      𹬵@ ڵ Ϻ}       ڵϺ  ʁʺ       ۱ ÈlڵϺ~-L~07 07 ʁʺ  ~  ڵϺ$~~6   ɱ     ~ ~Ļ ~-L07 07Ļ ʁʺĻ>    ڵϺ$       ڵϺ  DÀ       ڵϺ 4   ɱ      !07 07    ڵϺ$(   ɱ       !‚,ł07 07  ˂  ڵϺ$̂%H An iterator over mutably borrowed pairs of type `Pair<&mut T, &mut P>`.˃KO D  ɱ     ڵ Ϻ  (qЛ      ۱ 妖 ڵϺ妖   !,   TTT TTTTTԠ  !$   әәՙD鑊" ڵ.   ɱ       #%L$Æ     𹬵@ ڵ Ϻ($07 07 ʁʺ>    ڵϺ$D·       ڵϺ      𹬵@ ڵ Ϻ       ڵϺ  ʁʺ       ۱ 妖ڵϺ-L07 07     ڵϺ$9   ɱ       !Ӊ-L։07 07 ʁʺ>    ڵϺ$ڊ       ڵϺ  D       ڵϺޢ 7   ɱ     ̾ !07 07̾    ڵϺ$ލ3 An iterator over owned pairs of type `Pair`.6O L ɱ    ֫ c *,/1,   33313 13cap1313 131⏎6 ̡$   әәՙD鑊"'  ɱ   Ď֫ ǎ L$  ($07 07 ʁʺ>   $D                 Ґ-LՐ07 07   ߐ $2  ɱ   ֫  -L07 07    $         D       0  ɱ   ֫ Ó 07 07   $F  ɱ   Ĕ֫ ǔ,, %'*,,07 07   $+ An iterator over owned values of type `T`..Ȗ̖O D̗   ՗͵  "ޗ,ޗ   33313 13 1313 131⏎6      L$  ($07 07 ʁʺ>   $˜-L07 07    $+       -L07 07    $)       07 07   $ڛ1    ߛ, ,07 07   $ԥ/ An iterator over borrowed values of type `&T`.2O $     ڵ    ־  պֱŒB ڵպֱŒB z| ;,     lܼȹ      ΛজL  ڵ> ڵ cL      > ! > d>  d    y ] R N IK ѡLLԡ 07 07   lܼȹ      ΛজL   >   ޡ   $ߡ$\   ɱ      ڵ Ϻ ¢ E E    ۱ ާחť ڵϺާחť   ̢,̢   TT־T TTTTTپ  $   әәՙD鑊" ڵ   ɱ      TT־T TTTTTپ  \ әәՙD鑊" ڵ\ؤ;   դ   Ԥ <  4  <¤ ʤD̤1  ־  պֱŒB ڵ      ڵ!!      ,07 07    ڵ$$      L$  ڵɧ($̧07 07 ʁʺ>  ѧ  ڵ$֧-L07 07     ڵ$/      -L07 07 ʁʺ>    ڵ$-      07 07  ª  ڵ$ê1   ɱ      !#L$  ڵƫ($ɫ07 07 ʁʺ>  Ϋ  ڵϺ$ӫ4       ڵϺ  ά       ڵϺ  ʁʺ       ۱ ާחťڵϺ<   ɱ      !-L07 07 ʁʺ>    ڵϺ$       ڵϺ  4       ڵϺ Ү:   ɱ    ۮ ޮ ׮!07 07    ڵϺ$.   ɱ      !,07 07    ڵϺ$       > ڵd dڵ >! ʱ> ͱ,ղ \  Ʊbd XZ KL 07 07  lܼȹ      ΛজL  ڵ>     ڵ$; An iterator over mutably borrowed values of type `&mut T`.>Ǵ˴O <˵    ׵ڵ ڵ Ŷ    ଙ ڵଙ ӵ|~ B,     lܼȹ      ΛজL  ڵ> ڵ nd        ζ% >   #  ¶   f L I EEG 't   ɱ      ڵ Ϻ ÷ X X    ۱ ƗϞU ڵϺƗϞU   ͷ!,ͷ   TTT TTTTTԠ  !$   әәՙD鑊" ڵ   ɱ      TTT TTTTTԠ  \ әәՙD鑊" ڵ\B       <¹ ʹ 4̹ ҹ <Թ ܹD޹1    ଙ ڵ      ڵ!'      L$  ڵŻ($Ȼ07 07 ʁʺ>  ͻ  ڵ$һ-L07 07     ڵ$2      -L07 07 ʁʺ>    ڵ$0      07 07  ľ  ڵ$ž4   ɱ      !#L$  ڵϿ($ҿ07 07 ʁʺ>  ׿  ڵϺ$ܿ4       ڵϺ       ڵϺ  ʁʺ       ۱ ƗϞUڵϺ? ɱ  !-L07 07 ʁʺ>  ڵϺ$   ڵϺʆ!!4   ڵϺޅ!= ɱ  !07 07  ڵϺ$ > ڵ!ڵ %  # 6846K A single syntax tree node of type `T` followed by its trailing punctuationN of type `P` if any.O $ɱ ֫ 𹬵@XZ]_                ɱ ֫ !$&H Extracts the syntax tree node from this punctuated pair, discarding theK following punctuation.ԖT $8 Borrows the syntax tree node from this punctuated pair.;,07 07 07  $%@ Mutably borrows the syntax tree node from this punctuated pair.CL07 07 07  $!G Borrows the punctuation from this punctuated pair, unless this pair isJ4 the final one and there is no trailing punctuation.7,07 07 ʁʺ 07  $-F Mutably borrows the punctuation from this punctuated pair, unless theI< pair is the final one and there is no trailing punctuation.? l <# # use syn::punctuated::Punctuated;&1 # use syn::{parse_quote, Token, TypeParamBound};4 ,G # let mut punctuated = Punctuated::::new();J # let span = Span::call_site();# ,/ punctuated.insert(0, parse_quote!('lifetime));2J if let Some(punct) = punctuated.pairs_mut().next().unwrap().punct_mut() {M punct.span = span; , <L07 07 ʁʺ 07  $&D Creates a punctuated pair out of a syntax tree node and an optionalG! ʁʺ  p )A Produces this punctuated pair as a tuple of syntax tree node andD optional following punctuation.#T! $A    < l ɱ ֫ ,,%'*,,07 07  $, ɱ ֫ \4.,07 07 07Ȇ  $,/ ɱ ֫ :L07 07 07ݩ!  $,d    < LTD \ DN t ' = Ɔ  D  )  1  ɇ   ʭ  ‡ Ƈ Y Ƅ    t ־l i e ^ B @ > 7 P!L , ļ! \ ɱ ֫ NDND358:-L0707 07 07  $4V ɱ ֫ !D!D%'*,-L0707 07 07  $4yy y y  Generics {=( for param in &mut generics.params { +8 if let GenericParam::Type(type_param) = param { ;< type_param.bounds.push(parse_quote!(HeapSize)); ?l Ȗ L  generics  ,  <   # Special cases  K This macro can parse the following additional types as a special case even N0 though they do not implement the `Parse` trait. 3 N - [`Attribute`] — parses one attribute, allowing either outer like `#[...]` Q or inner like `#![...]` L - [`Punctuated`] — parses zero or more `T` separated by punctuation O) `P` with optional trailing punctuation ,= - [`Vec`] — parses the same as `Block::parse_within`@# [`Vec`]: Block::parse_within&dI Panics if the tokens fail to parse as the expected syntax tree type. TheLK caller is responsible for ensuring that the input tokens are syntacticallyN valid.Td|                   , \ ,     , L  ,  ,             K This macro is [`parse_quote!`] + [`quote_spanned!`][quote::quote_spanned].N- Please refer to each of their documentation.0 l <# use quote::{quote, quote_spanned};& use syn::spanned::Spanned;7 use syn::{parse_quote_spanned, ReturnType, Signature};:B // Changes `fn()` to `fn() -> Pin>>`,EB // and `fn() -> T` to `fn() -> Pin>>`,E. // without introducing any call_site() spans.11 fn make_ret_pinned_future(sig: &mut Signature) {4" let ret = match &sig.output {%J ReturnType::Default => quote_spanned!(sig.paren_token.span=> ()),M2 ReturnType::Type(_, ret) => quote!(#ret),5 T4 sig.output = parse_quote_spanned! {ret.span()=>7X -> ::std::pin::Pin<::std::boxed::Box>>[ T , <d|      $  $               , \ ,     , L  , quote_spannedl     $         2 """"""""";   4t, T d%'ܚ   4tT,-,07 07߹07\   ,  , ,, 07 07߹07\   , "'" ''''## # # # # # <# # 4# # <# #D##1 $,,$07 07߹07\$  ,$%8 ɱ &֫ &,&,&!#')&,,&07 07߹07\&  ,&{z z { z z { z z { z z {  \z zڽDz z z z {  Lz zLz z  Lz zɾ4z { <{ {L{ { <{ { d{z{ { { 4{t{؜,\44\l!J Parse the input TokenStream of a macro, triggering a compile error if theM tokens fail to parse.NhK Refer to the [`parse` module] documentation for more details about parsinglN in Syn.\# [`parse` module]: mod@crate::parse& D # Intended usage7 This macro must be called from a function that returns:M `proc_macro::TokenStream`. Usually this will be your proc macro entry point,PE the function that has the #\[proc_macro\] / #\[proc_macro_derive\] /H% #\[proc_macro_attribute\] attribute.( <  ,  & use syn::{parse_macro_input, Result};) ) struct MyMacroInput { , impl Parse for MyMacroInput {! 6 /* ... */ # Ok(MyMacroInput {})Ȗ L ,' #[proc_macro] D6 pub fn my_macro(tokens: TokenStream) -> TokenStream {9< let input = parse_macro_input!(tokens as MyMacroInput);? ,  <   D   # Usage with Parser  J This macro can also be used with the [`Parser` trait] for types that have M' multiple ways that they can be parsed. * ' [`Parser` trait]: crate::parse::Parser *  <   ,  # use proc_macro::TokenStream; "( # use syn::{parse_macro_input, Result}; + # use syn::parse::ParseStream; " ,  # struct MyMacroInput {}  ,  impl MyMacroInput { = fn parse_alternate(input: ParseStream) -> Result { @! ! Ȗ L  ,   '! D!9O let input = parse_macro_input!(tokens with MyMacroInput::parse_alternate);R , < D # Expansion|D `parse_macro_input!($variable as $Type)` expands to something like:G ```no_runl  , # macro_rules! doc_test {) # ($variable:ident as $Type:ty) => {,' match syn::parse::<$Type>($variable) {*$ Ok(syntax_tree) => syntax_tree,'N Err(err) => return proc_macro::TokenStream::from(err.to_compile_error()),Q ,ϗ d < ,G # fn test(input: proc_macro::TokenStream) -> proc_macro::TokenStream {J. # let _ = doc_test!(input as syn::Ident);1% # proc_macro::TokenStream::new()( < <d|        tokenstream\  ,          ,  ,  ,         !\    , L    $ $   , L    err   4  , L \ $   "           !\  , with$  4  $   ,  , , 4 ,    4   !\    , L    $ $   , L    "   4  , L \ $   "          !\  ,    ,      !\    2 """"""!!!Hà   4t, | d%' ك   4t|,-,07 07߹07\   ,$  ,,,07 07߹07\  ,!'"&" " " " " " <" " 4" " <" "D""1 ",,"07 07߹07  م7\"  ,"||{̄ { | { { | <{ {L{ | <| |LT|{6I A trait that can provide the `Span` of the complete contents of a syntaxL  tree node.tM \ M *This module is available only if Syn is built with both the `"parsing"` and`P  `"printing"` features.*ܱ   D   l  H Suppose in a procedural macro we have a [`Type`] that we want to assertK K implements the [`Sync`] trait. Maybe this is the type of one of the fieldsN M of a struct for which we are deriving a trait implementation, and we need toP C be able to pass a reference to one of those fields across threads.F   [`Type`]: crate::Typȩ  [`Sync`]: std::marker::Sync  G If the field type does *not* implement `Sync` as required, we want theJ D compiler to report an error pointing out exactly which type it was.G  M The following macro code takes a variable `ty` of type `Type` and produces aP ; static assertion that `Sync` is implemented for that type.>   <    ,     use quote::quote_spanned;  use syn::Type; !   .  !  D   8  # let ty = get_a_type();   2 let assert_sync = quote_spanned! {ty.span()=> 5 , struct _AssertSync where #ty: Sync; /  T    # input|  ,  ,  # fn get_a_type() -> Type {   # unimplemented!()  <  <  K By inserting this `assert_sync` fragment into the output code generated by N K our macro, the user's code will fail to compile if `ty` does not implement N ; `Sync`. The errors they would see look like the following. >   \ O error[E0277]: the trait bound `*const i32: std::marker::Sync` is not satisfied R  --> src/main.rs:10:21  D  10 | bad_field: *const i32,# T | ^^^^^^^^^^ `*const i32` cannot be shared between threads safelyW  <  K In this technique, using the `Type`'s span for the error message makes theN > error appear in the correct place underlining the right type.A   D   # Limitations  G The underlying [`proc_macro::Span::join`] method is nightly-only. WhenJ L called from within a procedural macro in a nightly compiler, `Spanned` willO L use `join` to produce the intended span. When not using a nightly compiler,O H only the span of the *first token* of the syntax tree node is returned.K  F In the common case of wanting to use the joined span as the span of aI J `syn::Error`, consider instead using [`syn::Error::new_spanned`] which isM M able to span the error correctly under the complete syntax tree node withoutP  needing the unstable `join`.  7 [`syn::Error::new_spanned`]: crate::Error::new_spanned: $  D  ,  "L ד"t  E This trait is automatically implemented for all types that implementH C [`ToTokens`] from the `quote` crate, as well as for `Span` itself.F   [`ToTokens`]: quote::ToTokens!  / See the [module documentation] for an example.2    L *This trait is available only if Syn is built with both the `"parsing"` andO ʔ"ܺ <  D Returns a `Span` covering the complete contents of this syntax treeG 6 node, or [`Span::call_site()`] if this node is empty.9  4 [`Span::call_site()`]: proc_macro2::Span::call_site7 $ 07 07     $ (  D    $ 07 07   $ <}+T       <  4  < D1$  ../gen_helper.rs"4T     4t$   export.rs"\o,o.L2{()?`4  5 - [Printing] — `quote!( ... #whatever_token ... )`8  K - Construction from a [`Span`] — `let whatever_token = kw::whatever(sp)`N  > - Field access to its span — `let sp = whatever_token.span`A  + [Peeking]: crate::parse::ParseBuffer::peek. , [Parsing]: crate::parse::ParseBuffer::parse/  [Printing]: quote::ToTokens  [`Span`]: proc_macro2::Span   l  L This example parses input that looks like `bool = true` or `str = "value"`.O I The key must be either the identifier `bool` or the identifier `str`. IfL K `bool`, the value may be either `true` or `false`. If `str`, the value may N  be any string literal.  L The symbols `bool` and `str` are not reserved keywords in Rust so these are O C not considered keywords in the `syn::token` module. Like any other F K identifier that is not a keyword, these can be declared as custom keywords N ) by crates that need to use them as such. ,   < + use syn::{LitBool, LitStr, Result, Token}; .  )  d  syn::custom_keyword!(bool); #  syn::custom_keyword!(str); "  ,   enum Argument {  Bool {t  bool_token: kw::bool, !  eq_token: Token![=],  value: LitBool,  },T  Str {l  str_token: kw::str, "  value: LitStr,Ը "T  ,   impl Parse for Argument {  6 , let lookahead = input.lookahead1();/ & if lookahead.peek(kw::bool) {)  Ok(Argument::Bool {# 8 bool_token: input.parse::()?,; * eq_token: input.parse()?,- ' value: input.parse()?,*  }) , } else if lookahead.peek(kw::str) {/  Ok(Argument::Str {" 6 str_token: input.parse::()?,9 "- "* "  } else { # Err(lookahead.error())& l Ȗ L  ,  < d |          ,    ,     G      ,     non_camel_case_types   4    ,      $      ,   L   $              4       ,     L   ׁt        ,          ,   L   L         ,   L   $           $          ,       ,     $      ,   L   L   T     $        $    ,   L   {<     ,       <<     $       ,     $      ,   L   $   L         ,            ,      ,   !         ,      ,            ,      ,   $         ,     *      <  L ܤ      4 t d |   '       ,    ,    '  $    ,   ,   \     ,   "    $     4      ,   ۥ4   4     ,   L   $   !       ,   L   $        ,   _rest,   4   ,    ,   L     ,   $  !   ,  ! );2  <  "N  any built-in punctuation token.#  - - [Peeking] — `input.peek(LeftRightArrow)`0  3 - [Parsing] — `input.parse::()?`6  . - [Printing] — `quote!( ... #lrarrow ... )`1  F - Construction from a [`Span`] — `let lrarrow = LeftRightArrow(sp)`I  W - Construction from multiple [`Span`] — `let lrarrow = LeftRightArrow([sp, sp, sp])`Z  < - Field access to its spans — `let spans = lrarrow.spans`?  ". "/ " "   l   < + use proc_macro2::{TokenStream, TokenTree};. 4 use syn::parse::{Parse, ParseStream, Peek, Result};7 ˏ $  use syn::Expr;  . syn::custom_punctuation!(PathSeparator, );1   // expr expr expr ...!  struct PathSegments {̖ / segments: Punctuated, 2  ,   impl Parse for PathSegments { !  6 . let mut segments = Punctuated::new(); 1  8 let first = parse_until(input, PathSeparator)?; ; 2 segments.push_value(syn::parse2(first)?); 5  * while input.peek(PathSeparator) { - 1 segments.push_punct(input.parse()?); 4  ; let next = parse_until(input, PathSeparator)?; > 5 segments.push_value(syn::parse2(next)?); 8 l  & Ok(PathSegments { segments }) ) Ȗ L  ,  M fn parse_until(input: ParseStream, end: E) -> Result {P ) let mut tokens = TokenStream::new();, 2 while !input.is_empty() && !input.peek(end) {5 . let next: TokenTree = input.parse()?;1 # tokens.extend(Some(next));& Ȗ L  Ok(tokens)  ,  | ) let input = r#" a::b c::d::e "#;, : let _: PathSegments = syn::parse_str(input).unwrap();=  ,  < d |          ,    ,                        J  4    ,      ,      ,                                  4       ,     L   ׁt        ,          ,   L   L      ,                           ,          ,      _validate_lenl              ,   Ұ       strict4                ,     ,      ,   L   L   T     ,  $    ,   L   {<     ,       <<     $       ,        ,   L   $   L       ,   !         ,                    ,   %         ,                    ,   !         ,                    ,   (         ,                   .      <  L ܨ      4 t d |   !       ,    ,                       !  $    ,   ,   \     ,       $     4      ,   ۥ4   4  $        ,   ,   <   T     4      ,   |                     <       !8<    ,   L         4             ,   |                      $    ,   ,   ,     ,   !    ,      ,      ,   ,   \     ,   ,   4      ,     !   ,      ,                      ,   ,   <   ,    ,    ,   |              !   ,  !  ,  ! #2 "  " #  <" " LT" " #  # #  4# t# d# |#  # &  # #  #  ,#  #  ,#  #  #  # #  #   #  #   #  # #  # &  $$  $  ,$ $  L$ $   D$ $  $  ,$  $ %   $ L$  $ $   $  $$  $ 4$  $  $  $  $  ,$ $  L$ $  ù"d$  % %   %  ,% %  ,% %  LD% %  ,%  % %   %  ,% %  |%  %  % %  %  % %  %   %  %  %  %  $%  %  ,%  % 4%  & (. '  ' '  <' ' l' ' '  ' '  4' t' d( |'  ( *  ( (  (  ,(  (  ,(  (  (  ( (  (   (  (   (  ( (  ( *  $(  (  ,( (  L( )  t$) )  )  ,)  ) )  )  ) )  ,)  ) )  4) )  ")  $)  )  ,) )  L) )  o,) )  )  ,)  ) *   * ,*  * *   *  $* * $*  * *   *  $*  * 35 2  2 2  2  2 2  <2 2  t2 2% 2  2 2  42 t2 d2 |2  3 3  3 3  3  ,3  3  ,3  3  3  3 3  3   3  3   3  3 3  3 3  3 4$ 3  3 4  43 t3 d4 |4 ÷ 4 5  4 4  4  4 4  4   4  4   4  4 4  4 5  4 5   4  ,4 4  L4 4  $4  4  4  4  4 5  4  4  ,4 5  Ұ5  5  5 5  lenient<5  5  5   5  5  5 C* C  C C  4C tC dC |C Է D D  D D D  D D  D D D  D D  4D tD dD |D  D E  E E  E  E E  E   E  E   E  E E  E E  4E  E  E E  E  E E   LE  E  E E  E   E  E  E  E T!! ! ! <! !L!!L$!4!4>! $F!#DĠ$L" ,5T8 #  #$CR" ض { T~ $ "   T $ "   T $ݹ '    T $ǻ '    T $ '  ;  T $ ȇ   < LL,&T07 07    ,Շ   < Lܬ  %T07 07  ,   < Lܯ  %T07 07  ,   < Lܼ  %T07 07  , Tڠ$"%v,"NvN $/"ThreadIdD5";" m "_a!" B4&"+-"\" "h "D",""L";;;#;  &"  " ,"  "$""  "  "" ш,"""07 07 ʁʺ 07 " $"'"  "N,"<""070707 07 07MMMKMKMKNʼKNټKNKޣZ07 " $"L"l lj   < L4# $.#,4#4Z#Ls#,#Y L#$#<#"## ,&#@ #f##{# oq]_#P#H Support for checking the next token in a stream to decide how to parse.K##B An important advantage over [`ParseStream::peek`] is that here weE#H automatically construct an appropriate error message based on the tokenK#K alternatives that get peeked. If you are producing your own error message,N#. go ahead and use `ParseStream::peek` instead.1##: Use [`ParseStream::lookahead1`] to construct this object.=##7 [`ParseStream::peek`]: crate::parse::ParseBuffer::peek:#C [`ParseStream::lookahead1`]: crate::parse::ParseBuffer::lookahead1F##G Consuming tokens from the source stream after constructing a lookaheadJ#3 object does not also advance the lookahead object.6## l## <#O use syn::{ConstParam, Ident, Lifetime, LifetimeDef, Result, Token, TypeParam};R# )##L // A generic parameter, a single one of the comma-separated elements insideO# // angle brackets in:# 4 #< // fn f() { ... } ?# 4 #D // On invalid input, lookahead gives us a reasonable error message. G# 4 #= // error: expected one of: identifier, lifetime, `const` @# // |t #! // 5 | fn f() {} $# // | ^̠ # enum GenericParam { # Type(TypeParam), # Lifetime(LifetimeDef), # Const(ConstParam),Ԋ # , # # impl Parse for GenericParam { !# 6#" /## if lookahead.peek(Ident) { &#2 input.parse().map(GenericParam::Type) 5#- } else if lookahead.peek(Lifetime) {0#6 input.parse().map(GenericParam::Lifetime)9#2 } else if lookahead.peek(Token![const]) {5#3 input.parse().map(GenericParam::Const)6#"#"&#l#Ȗ L# ,# <#T#ڣ׷ڣ׷#\#,##4#       ݳ '#\#"""borrow!"ш!îڂE666161鈲/ 5##07       ݳ 07ڣ׷074# ,#4#t#L#0707 07ڣ׷07 07       ݳ 07   # L#$#<## ڣ׷#-#D Looks at the next token in the parse stream to determine whether itG#% matches the requested type of token.(## # Syntaxd##H Note that this method does not use turbofish syntax. Pass the peek typeK# inside of parentheses.## - `input.peek(Token![struct])`"# - `input.peek(Token![==])`#8 - `input.peek(Ident)` *(does not accept keywords)*;# - `input.peek(Ident::peek_any)`## - `input.peek(Lifetime)`# - `input.peek(token::Brace)` #$#07 07#ڵ # #ڵ$# ڵ$#,#57#? Triggers an error at the current position of the parse stream.B##E The error message will identify all of the expected token types thatH#2 have been peeked against this lookahead instance.5#,## $#%#7 Types that can be parsed by looking at just one token.#:###G Use [`ParseStream::peek`] to peek one of these types in a parse stream#J#& without consuming it from the stream.$)#$# $L#%##%:#$%# 4%#$ &#Yă$,&#&#&# &# &# 4&#t&#,&#&=# ڵ &# &#$&#$&# &#Yڵ,&#RTT'#,'#ڵ'#\'#ҿղ['$#  '#  '#T'# $'#(A#d(#07       ݳ 07 4(# 4(#L(#)?# ڄ$ )# )#$$)#$ě)# )#$,)#57l nj   < LܟF Parsing interface for parsing a token stream into a syntax tree node.I J K Parsing in Syn is built on parser functions that take in a [`ParseStream`]NN K and produce a [`Result`] where `T` is some syntax tree node. UnderlyingN C these parser functions is a lower level mechanism built around theF G [`Cursor`] type. `Cursor` is a cheaply copyable cursor over a range ofJ  tokens in a token stream.   [`Result`]: Result̠ " [`Cursor`]: crate::buffer::Cursor%   l  E Here is a snippet of parsing code to get a feel for the style of theH I library. We define data structures for a subset of Rust syntax includingL M enums (not shown) and structs, then provide implementations of the [`Parse`]P F trait to parse these syntax tree data structures from a token stream.I  M Once `Parse` impls have been defined, they can be called conveniently from aP J procedural macro through [`parse_macro_input!`] as shown at the bottom ofM G the snippet. If the caller provides syntactically invalid input to theJ E procedural macro, they will receive a helpful compiler error messageH B pointing out the exact token that triggered the failure to parse.E  2 [`parse_macro_input!`]: crate::parse_macro_input! 5   <    ,   J use syn::{braced, parse_macro_input, token, Field, Ident, Result, Token}; M   ) ˏ  $   enum Item {|  Struct(ItemStruct),  Enum(ItemEnum),  ,   struct ItemStruct {   %     " ҡ  -  ,  ,  # enum ItemEnum {}   impl Parse for Item {  6 "/ , if lookahead.peek(Token![struct]) {/ , input.parse().map(Item::Struct)/ 1 } else if lookahead.peek(Token![enum]) {4 * input.parse().map(Item::Enum)- " "& l Ȗ L  ,   impl Parse for ItemStruct {  6 Γ   Ok(ItemStruct {  - Ŕ &  7 C fields: content.parse_terminated(Field::parse_named)?,F  t Ȗ L  ,  ,  # impl Parse for ItemEnum { 5 # fn parse(input: ParseStream) -> Result {8  # unimplemented!()  # }\  <  ' !  D !9 4 let input = parse_macro_input!(tokens as Item);7     ,  <   # The `syn::parse*` functions!  L The [`syn::parse`], [`syn::parse2`], and [`syn::parse_str`] functions serveO I as an entry point for parsing syntax tree nodes that can be parsed in anL J obvious default way. These functions can return any syntax tree node thatM B implements the [`Parse`] trait, which includes most types in Syn.E   [`syn::parse`]: crate::parse()" ! [`syn::parse2`]: crate::parse2()$ ' [`syn::parse_str`]: crate::parse_str()*   < "  ' # fn run_parser() -> syn::Result<()> {* K let t: Type = syn::parse_str("std::collections::HashMap")?;N ʷ  <  ,  # run_parser().unwrap();  <  4 The [`parse_quote!`] macro also uses this approach.7  & [`parse_quote!`]: crate::parse_quote!)   # The `Parser` traitĸ  K Some types can be parsed in several ways depending on context. For exampleN E an [`Attribute`] can be either "outer" like `#[...]` or "inner" likeH M `#![...]` and parsing the wrong one would be a bug. Similarly [`Punctuated`]P H may or may not allow trailing punctuation, and parsing it the wrong wayK 9 would either reject valid input or accept invalid input. <   [`Attribute`]: crate::Attribute # " [`Punctuated`]: crate::punctuated % ! M The `Parse` trait is not implemented in these cases because there is no good!P " behavior to consider the default.!% "  ```compile_fail"  "  ," Ɯ!"& ) # use syn::{PathSegment, Result, Token};",  ,# 8 # fn f(tokens: proc_macro::TokenStream) -> Result<()> {#;  ,# I // Can't parse `Punctuated` without knowing whether trailing punctuation#L & // should be allowed in this context.$) E let path: Punctuated = syn::parse(tokens)?;$H  ,% ʷ%  <%  <% % L In these cases the types provide a choice of parser functions rather than a%O I single `Parse` implementation, and those parser functions can be invoked&L  through the [`Parser`] trait.&! ' '  <'  '  ,'  '  use syn::parse::Parser;' ˏ ($ 8 use syn::{Attribute, Expr, PathSegment, Result, Token};(; ( @ fn call_some_parser_methods(input: TokenStream) -> Result<()> {(C P // Parse a nonempty sequence of path segments separated by `::` punctuation)S % // with no trailing punctuation.*(  let tokens = input.clone();*# R let parser = Punctuated::::parse_separated_nonempty;*U ' let _path = parser.parse(tokens)?;+* + P // Parse a possibly empty sequence of expressions terminated by commas with+S ) // an optional trailing punctuation.,, ij$,# B let parser = Punctuated::::parse_terminated;,E ' let _args = parser.parse(tokens)?;-* - E // Parse zero or more outer attributes but not inner attributes.-H ij$.# ) let parser = Attribute::parse_outer;., ( let _attrs = parser.parse(tokens)?;/+ /  Ok(())t/  ,/   parsing `B*` and removing the leading members of `A` from theA$H repetition, bypassing the need to involve the downsides associated with K$ speculative parsing. $ $) [`ParseStream::fork`]: ParseBuffer::fork ,$ $ l $ $I There has been chatter about the possibility of making the colons in the L$F turbofish syntax like `path::to::` no longer required by accepting I$F `path::to` in expression position. Specifically, according to [RFC I$H 2544], [`PathSegment`] parsing should always try to consume a following K$E `<` token as the start of generic arguments, and reset to the `<` if H$? that fails (e.g. the token is acting as a less-than operator). B$$E This is the exact kind of parsing behavior which requires the "fork,H$C try, commit" behavior that [`ParseStream::fork`] discourages. WithF$D `advance_to`, we can avoid having to parse the speculatively parsedG$ content a second time.ԙ$$H This change in behavior can be implemented in syn by replacing just theK$* `Parse` implementation for `PathSegment`:-$$ <$ # use syn::ext::IdentExt;$* use syn::parse::discouraged::Speculative;-$( # use syn::parse::{Parse, ParseStream};+$2 # use syn::{Ident, PathArguments, Result, Token};5$$ pub struct PathSegment {$ ̽$" pub arguments: PathArguments,%$ ,$ ,$" # impl From for PathSegment%$ # where\$ # T: Into,$ # {<$" # fn from(ident: T) -> Self {%$ # PathSegment {ܧ$# # ident: ident.into(),&$. # arguments: PathArguments::None,1$ |$$\$ <$$ impl Parse for PathSegment { $ 6$% if input.peek(Token![super])($( || input.peek(Token![self])+$( || input.peek(Token![Self])+$) || input.peek(Token![crate]),$ {l$7 let ident = input.call(Ident::parse_any)?;:$1 return Ok(PathSegment::from(ident));4$l$$$ let ident = input.parse()?;'$> if input.peek(Token![::]) && input.peek3(Token![<]) {A$$ return Ok(PathSegment {'$ ident,$J arguments: PathArguments::AngleBracketed(input.parse()?),M$ });$l$> if input.peek(Token![<]) && !input.peek(Token![<=]) {A$% let fork = input.fork();($2 if let Ok(arguments) = fork.parse() {5$) input.advance_to(&fork);,$( return Ok(PathSegment {+$ ident,$I arguments: PathArguments::AngleBracketed(arguments),L$ });$$l $% Ok(PathSegment::from(ident)) ($Ȗ L $ , $ $4 # syn::parse_str::("a").unwrap(); 7$ serde::>();$+$ <$$$$I If this is parsed as generic arguments, we can provide the error message$L$%$ \%$ error: expected identifier%$ --> src.rs:L:C%$ <&$, L | let _ = f<&'a fn(), for<'a> serde::>();&/$) | ^&,$ <&$'$D but if parsed using the above speculative parsing, it falls back to'G$H assuming that the `<` is a less-than when it fails to parse the generic'K$G arguments, and tries to interpret the `&'a` as the start of a labelled(J$/ loop, resulting in the much less helpful error(2$)$ \)$ error: expected `:`)$$)$ <*$$*/$ | ^^*$ <*$*$G This can be mitigated with various heuristics (two examples: show both*J$E forks' parse errors, or show the one that consumed more tokens), but+H$D when you can control the grammar, sticking to something that can be,G$B parsed LL(3) and without the LL(*) speculative parsing this makes,E$A possible, displaying reasonable errors becomes much more simple.-D$-$8 [RFC 2544]: https://github.com/rust-lang/rfcs/pull/2544-;$$ [`PathSegment`]: crate::PathSegment.'$.$ # Performance.$.$G This method performs a cheap fixed amount of work that does not depend/J$1 on how far apart the two streams are positioned./4$0$d0$0$A The forked stream in the argument of `advance_to` must have been0D$F obtained by forking `self`. Attempting to advance to any other stream0I$ will cause a panic.1$T1$0707 07 07  1$  $1$$1$2($ 2$2!$T2$0707 07 07 2$ $2$$2$0$  CCCCd1 C1 B2 B2 B2 B3S  B\3 BBBBBBBBAAAAAA|3 A4  A4 AAAA4 AD5 @|5 @\5 @5 @5  @@@@5$  @@@@8 K Parsing interface implemented by all types that can be parsed in a default6N  way from a token stream.6 7 M Refer to the [module documentation] for details about implementing and using7P  the `Parse` trait.7 7 7 @,8 8- ,8 07 07߹07\8    ,8 :  Input to a Syn parser function.8# 9 M See the methods of this type under the documentation of [`ParseBuffer`]. For9P D an overview of parsing in Syn, refer to the [module documentation].9G : : D ߹: A 0 Cursor position within a buffered token stream.;3 ; M This type is more commonly used through the type alias [`ParseStream`] which;P  is an alias for `&ParseBuffer`.<# < K `ParseStream` is the input type for all parser functions in Syn. They have Result`.=1 =  ## Calling a parser function= = I There is no public way to construct a `ParseBuffer`. Instead, if you are=L J looking to invoke a parser function that requires `ParseStream` as input,>M D you will need to go through one of the public parsing entry points.>G ? K - The [`parse_macro_input!`] macro if parsing input of a procedural macro;?N 6 - One of [the `syn::parse*` functions][syn-parse]; or@9 $ - A method of the [`Parser`] trait.@' @ $@5 ) [syn-parse]: self#the-synparse-functionsA, L߹߹A \A ,A ܈G $G ""̞ "ш!ɽDZɧ       ݳ G 4G  ˂ٷФ       ݳ G. TG ""̞ "ш!ɽDZɧ ʁʺ H!  H H $H 17 17 H  $H J$  J K4 K 171717 17 17MMMKMKMKNʼKNټKNKޣZ17 K  $K  K K"  K L4 L 171717 17 17MMMKMKMKNʼKNټKNKޣZ17 L  $L  L X 2 Cursor state associated with speculative parsing.M5 M I This type is the input of the closure provided to [`ParseStream::step`].ML N ) [`ParseStream::step`]: ParseBuffer::stepN, N  lN N  Result<()> {P<  input.step(|cursor| {Q  let mut rest = *cursor;Q# 9 while let Some((tt, next)) = rest.token_tree() {Q<  match &tt {ܺR G TokenTree::Punct(punct) if punct.as_char() == '@' => {RJ + return Ok(((), next));S. S " _ => rest = next,S% T lT ? Err(cursor.error("no `@` was found after this point"))TB  })TT  ,T  ,U , # fn remainder_after_skipping_past_next_at(U/  # input: ParseStream,U * # ) -> Result {U- ! # skip_past_next_at(input)?;V$  # input.parse()V  @ab mNJ娄|       ݳ        ݳ b proof,b tob !#b e{ p17       ݳ 17 ߹174e ,e 4e Tf h rԠX $h       $h ȝ ȝ  ȝ ȝ   i  ܛi  i ,{  |%  |  |  ,} }  impl Parse for UnitStruct {}  }6  Ok(UnitStruct {}  ~;  ~-  %  +  t Ȗ L  ,  < $ 17 17% 17 17߹17%%    ڵ$ functionD /1- #G #Ӂ(  3 Does not advance the position of the parse stream.6  #d˂ ܂ #K #Դ Ӄ #ۃ" # #; ## #䍅 # Ӆ  lۅ  H In this example we finish parsing the list of supertraits when the nextK @ token in the input is either `where` or an opening curly brace.ņC   < J use syn::{braced, token, Generics, Ident, Result, Token, TypeParamBound};M  ) ˏ $ ʈ = // Parses a trait definition containing no associated items.҈@  4 ? // trait Marker<'de, T>: A + B<'de> where Box: Clone {}B  struct MarkerTrait {  trait_token: Token![trait],#    generics: Generics,Ȋ $ colon_token: Option,' 8 supertraits: Punctuated,;  ԋ"  ,   impl Parse for MarkerTrait {  6 9 let trait_token: Token![trait] = input.parse()?;< + let ident: Ident = input.parse()?;. 5 let mut generics: Generics = input.parse()?;8 = let colon_token: Option = input.parse()?;@  1 let mut supertraits = Punctuated::new();4 # if colon_token.is_some() {&  loop {Ϗ 8 supertraits.push_value(input.parse()?);; K if input.peek(Token![where]) || input.peek(token::Brace) {N  break;  8 supertraits.push_punct(input.parse()?);;  l  0 generics.where_clause = input.parse()?;3 Γ  ; let empty_brace_token = braced!(content in input);> “  Ok(MarkerTrait {ʓ  trait_token,  ident,  generics,̧  colon_token,Ŕ  supertraits, , brace_token: empty_brace_token,/  t Ȗ LΕ  ,ܕ  < $ 17 17%ڵ    #$ ڵ$ , 13. 4 Looks at the second-next token in the parse stream.7  C This is commonly useful as a way to implement contextual keywords.F   l  F This example needs to use `peek2` because the symbol `union` is not aI I keyword in Rust. We can't use just `peek` and decide to parse a union ifL H the very next token is `union`, because someone is free to write a `modK H union` and a macro invocation that looks like `union::some_macro! { ...K 4 }`. In other words `union` is a contextual keyword.ښ7   < 3 use syn::{Ident, ItemUnion, Macro, Result, Token};6  )  0 // Parses either a union or a macro invocation.3  enum UnionOrMacro {Ӝ 5 // union MaybeUninit { uninit: (), value: T }8  Union(ItemUnion),̬  // lazy_static! { ... }ʝ  Macro(Macro),  ,   impl Parse for UnionOrMacro {!  6 = if input.peek(Token![union]) && input.peek2(Ident) {@ 3 input.parse().map(UnionOrMacro::Union)6 " 3 input.parse().map(UnionOrMacro::Macro)6 lϠ Ȗ L  ,  < , 17 17%ڵ    #$ ڵ$ , 13@ , 1717 17߹17 17       ݳ 17 ϡ ۥ4ǡ $ݡ . 3 Looks at the third-next token in the parse stream.̤6 , 17 17%ڵ    #$ ڵ$ , 13@ ,å 1717 17߹17 17       ݳ 17 ѥ ۥ4ɥ $ߥ  K ,  ɪL 5 ԫ  lܫ   <    , Ҏ @  ) ˏ $ ĭ  ̭3  4 Ȑ ԏ  Į  ˮ%   ё "  ,    ,     6 Γ   䙱  - Ŕ &  >  ڲ?  +  tγ Ȗ L  ,  ,  # let input = quote! {ԃ  # struct S(A, B);̢  D . # syn::parse2::(input).unwrap();ʹ1  <  17 17% 17 17߹17%  م7ɱ      Ϻ, ڵϺ$ 4̵ FHKM ; Returns whether there are tokens remaining in this stream.ٶ>  ? This method returns true at the end of the content of a set ofB D delimiters, as well as at the very end of the complete macro input.G   l Ѹ  <ٸ 6 use syn::{braced, token, Ident, Item, Result, Token};9  ) ѹ @ // Parses a Rust `mod m { ... }` containing zero or more items.ٹC  struct Mod {  mod_token: Token![mod],  ں  "  items: Vec,̚  , »  impl Parse for Mod {ʻ  6 Γ Ģ  Ok(Mod { ' mod_token: input.parse()?,ؼ*  %  7  items: { , let mut items = Vec::new();/ , while !content.is_empty() {/ 2 items.push(content.parse()?);5   itemsƿ  },  t Ȗ L  ,  < D 17 17%   $ * E Constructs a helper for peeking at the next token in this stream andH H building an error message if it is not one of a set of expected tokens.K   l   < #R  )  #O #̦  4 #?  4 #G  4 #@ #t #$ # # #İ # #  ,  #!  6 "/ #& #5 #0 #9 #5 #6 " "& l Ȗ L  ,  < T 17 17%ڣ׷   $  G Forks a parse stream so that parsing tokens out of either the originalJ 8 or the fork does not advance the position of the other.;  $  D Forking a parse stream is a cheap fixed amount of work and does notG H involve copying token buffers. Where you might hit performance problemsK E is if your macro ends up parsing a large amount of content more thanH L   <  # use syn::{Expr, Result}; !"  , / # fn bad(input: ParseStream) -> Result {2  // Do not do this. * if input.fork().parse::().is_ok() {- " return input.parse::();%  ,  # unimplemented!()  <  <  G As a rule, avoid parsing an unbounded amount of tokens out of a forkedJ H parse stream. Only use a fork when the amount of work performed againstK  the fork is small and bounded."  > When complex speculative parsing against the forked stream isA D unavoidable, use [`parse::discouraged::Speculative`] to advance theG A original stream once the fork's parse is determined to have beenD  successful.|  I For a lower level way to perform speculative parsing at the token level,L . consider using [`ParseStream::step`] instead.1  > [`parse::discouraged::Speculative`]: discouraged::SpeculativeA Ę%,   l  E The parse implementation shown here parses possibly restricted `pub`H  visibilities.   - `pub`\  - `pub(crate)`  - `pub(self)`  - `pub(super)`  - `pub(in some::path)`Ԛ  G To handle the case of visibilities inside of tuple structs, the parserJ F needs to distinguish parentheses that specify visibility restrictionsI 1 from parentheses that form part of a tuple type.4   <  # struct A;|  # struct B;|  # struct C;|  , $ struct S(pub(crate) A, pub (B, C));'  <  @ In this example input the first tuple struct element of `S` hasC H `pub(crate)` visibility while the second tuple struct element has `pub`K H visibility; the parentheses around `(B, C)` are part of the type ratherK ' than part of a visibility restriction.*  I The parser uses a forked parse stream to check the first token inside ofL G parentheses after the `pub` keyword. This is a small bounded amount ofJ 0 work performed against the forked parse stream.3   < = use syn::{parenthesized, token, Ident, Path, Result, Token};@ ܁  )   struct PubVisibility {  pub_token: Token![pub], $ restricted: Option,'  ,   struct Restricted { ё " " in_token: Option,%   ,   impl Parse for PubVisibility {"  6 5 let pub_token: Token![pub] = input.parse()?;8  & if input.peek(token::Paren) {) & let ahead = input.fork();)  let mut content; . parenthesized!(content in ahead);1  + if content.peek(Token![crate]). . || content.peek(Token![self])1 / || content.peek(Token![super])2  { * return Ok(PubVisibility {-  pub_token," 2 restricted: Some(Restricted {5 G paren_token: parenthesized!(content in input),J ( in_token: None,+ K path: Path::from(content.call(Ident::parse_any)?),N  }), $ 1 } else if content.peek(Token![in]) {4 &- &" ߢ&5 &J : in_token: Some(content.parse()?),= D path: content.call(Path::parse_mod_style)?,G & $  l   Ok(PubVisibility {  pub_token,  restricted: None,!  t Ȗ L  ,  < $ 17 17%%   $ 4 #B   l   <  use syn::{Expr, Result, Token};#  )  2 // Some kind of loop: `while` or `for` or `loop`.5  struct Loop {  expr: Expr,  ,   impl Parse for Loop {̯  6 % if input.peek(Token![while])( ' || input.peek(Token![for])* ( || input.peek(Token![loop])+ $l  Ok(Loop {̦ & expr: input.parse()?,) " " ; Err(input.error("expected some kind of loop"))> l Ȗ L  ,  < , 17 17%ڵ    Nڵ< ڵ$ < 8:Ί B Speculatively parses tokens from this parse stream, advancing theE 2 position of this stream only if parsing succeeds.5  H This is a powerful low-level API used for defining the `Parse` impls ofK F the basic built-in token types. It is not something that will be usedI $ widely outside of the Syn codebase.'   l   < % Ǚ% ؀  %L ˚%ցL %䧂 ›%Ȃ< %쉃 %# ՜%Ӄ< %ܔ %J %.  Ξ%Ѕ%  l %B ۟%T  ,  , %/ % ݠ%- %$ %  <و  , % %; ٢%щ % %/  <Š $Պ 17 17%  م7  Ǹ& ڊ & ݊ Ǹ&NJ娄|= Ǹ&&  م7&       ݳ  Ǹ&&$ %D  Η = Returns the `Span` of the next token in the parse stream, or@ F `Span::call_site()` if this parse stream has completely exhausted itsI  input `TokenStream`.ı $՗ 17 17% ڗ  $ۗ " F Provides low-level access to the token representation underlying thisI  parse stream.  F Cursors are immutable so no operations you perform against the cursorI , will affect the state of this parse stream.֚/ 4 17 17%       ݳ    $ қ( ՛ 17 17%   $ Ν   ӝ ,֝ , , 17 17߹17  م7\   , *    , Y, #%, , 17 17߹17  م7\ş   , ԛ  , , 17 17߹17  م7\̡   ,š D        م7   , , 17 17߹17  م7\   , Dӣ        م7   ɥ, ,̥ 17 17߹17  م7\٥   ,ҥ D        م7   , , 17 17߹17  م7\   , Dު        م7   ެ, , 17 17߹17  م7\   , D        م7  F Parser that can parse Rust tokens into a particular syntax tree node.ѮI  F Refer to the [module documentation] for details about parsing in Syn.I    P ,  d \ 4 = C Parse a proc-macro2 token stream into the chosen syntax tree node.F ޱ F This function will check that the input is fully parsed. If there areI D any unparsed tokens at the end of the stream, an error is returned.G 4    م7&  $ 4 G > Parse tokens of source code into the chosen syntax tree node.óA  &I &ߴG  P 숶   ֛                Ķ    \Ŷ Ѷ ڽDӶ  ۶ ݶ      L  L    L  ɾ4   <   d  ,  &  $÷ 4ɷ 3 > Parse a string of Rust code into the chosen syntax tree node.˸A  &I D any unparsed tokens at the end of the string, an error is returned.G   # Hygienel ͺ F Every span in the resulting syntax tree will be set to resolve at theպI  macro call site. L 17 17& һ   $ɻ  ϻ Q Ҽ   ռ ܼ  4ּ tм            <   4   <  D 1 t  &  $ , 4 C ľ   Ǿ ξ  4Ⱦ t¾ ׾   ھ   ۾  ޾   <߾   4   <  D վ1 t 17 17߹17&\   $  , D      & > Ѫ17 17߹17  4 F  17 17߹17%L   17&   DF\ 4 ڵ1 4 % ڵ$ 4 Q            <   4   <  D 1 t  ڵ$ , 4 C   О         <   4   <  D 1 t 17 17߹17\  ڵ$  , b            <   4   <  D 1   4   , 4 13T            <   4   <  D 1 17 17߹17\   4    , (* ? An empty syntax tree node that consumes no tokens when parsed.B  E This is useful for attribute macros that want to ensure they are notH  provided any attribute args.   <    ,    use syn::parse_macro_input;  use syn::parse::Nothing;  '   D G pub fn my_attr(args: TokenStream, input: TokenStream) -> TokenStream {J ) parse_macro_input!(args as Nothing);,   ܯ  ,  <   \  error: unexpected token  --> src/main.rs:3:19̅  <  3 | #[my_attr(asdf)]ħ  | ^^^^  < ۿꎬ  - , 17 17߹17  م7\  _input4 d          <  4  < D  < LK\%\ % L@%\K%Dg%$z%'(% oq2%% egUW]%HLu%8O%<%߹ ч'% ,%%L Ơ         <  4  < D  < LTL\ D)N(|" |? SڵV'Z ڵ  ɋ' 'ɋ' ڵO'oP  xNڵDڵ<t,.-L1717 17 17  ڵ$4L͡4/  \J  Ln ,y , D < , < $ \ L  D N$ %v, NvN< Nd = , )  1  ; [n  |     T D   The result of a Syn parser. 4     @ Error returned when a Syn parser cannot parse the input tokens.C  ! # Error reporting in proc macros$  H The correct way to report errors back to the compiler from a proceduralK < macro is by emitting an appropriately spanned invocation of? L [`compile_error!`] in the generated code. This produces a better diagnosticO ) message than simply panicking the macro.,  ( [`compile_error!`]: std::compile_error!+  G When parsing macro input, the [`parse_macro_input!`] macro handles theJ . conversion to `compile_error!` automatically.1  $5   <    ,   8   '   D & J  =  8    # TokenStream::new()  ,  <  @ For errors that arise later than the initial parsing stage, the C L [`.to_compile_error()`] or [`.into_compile_error()`] methods can be used to O 4 perform an explicit conversion to `compile_error!`. 7  1 [`.to_compile_error()`]: Error::to_compile_error 4 5 [`.into_compile_error()`]: Error::into_compile_error8   <    , !" - # use syn::{parse_macro_input, DeriveInput};0  , '  #[proc_macro_derive(MyDerive)]"  D 6 pub fn my_derive(input: TokenStream) -> TokenStream {9  =  @ // fn(DeriveInput) -> syn::ResultC  expand::my_derive(input) 8 .unwrap_or_else(syn::Error::into_compile_error);  .into()  ,  ,  # mod expand { $ # use proc_macro2::TokenStream;' & # use syn::{DeriveInput, Result};)  , D # pub fn my_derive(input: DeriveInput) -> Result {G ɜ$ $\  <  < , ς D 666161鈲/ d ۂ T шhܣ D '| < T  #6 F Usually the [`ParseStream::error`] method will be used instead, whichI E automatically uses the correct span from the current position of theH &  I Use `Error::new` when the error needs to be triggered on some span otherL 5 than where the parse stream is currently positioned.8  9 [`ParseStream::error`]: crate::parse::ParseBuffer::error<   l   < 0 use syn::{Error, Ident, LitStr, Result, Token};3   H // Parses input that looks like `name = "string"` where the key must beK B // the identifier `name` and the value may be any string literal.E  // Returns the string literal." 6 fn parse_name(input: ParseStream) -> Result {9 , let name_token: Ident = input.parse()?;/  if name_token != "name" {! G // Trigger an error not on the current position of the stream, J = // but on the position of the unexpected identifier. @ F return Err(Error::new(name_token.span(), "expected `name`"));!I Ȗ L" "$ $ let s: LitStr = input.parse()?;"'  Ok(s)l"  ,"  <" #  # N<# $# <# ,.#, #  $$ <$ +J F Creates an error with the specified message spanning the given syntax&I ד"t& ' H Unlike the `Error::new` constructor, this constructor takes an argument'K H `tokens` which is a syntax tree node. This allows the resulting `Error`'K B to attempt to span all tokens inside of `tokens`. While you would(E I typically be able to use the `Spanned` trait with the above `Error::new`)L 8 constructor, implementation limitations today mean that); C `Error::new_spanned` may provide a higher-quality error message on*F  stable Rust.* * < When in doubt it's recommended to stick to `Error::new` (or*?  `ParseStream::error`)!Կ+ +  + +  <+ + LT+ + \,  , θ' , !D, Nθ'<, θ'4, <, IKFH-= \-  4- <- .     /    'ԑ3 " The source location of the error.1% 1 G Spans are not thread-safe so this function returns `Span::call_site()`1J H if called from a different thread than the one on which the `Error` was2K  originally created.2 $3 17 17 3  $3 8- 9 Render the error as an invocation of [`compile_error!`].6< 6 E The [`parse_macro_input!`] macro provides a convenient way to invoke6H - this method correctly in a procedural macro.70 7 '7+ $85 8 17 17 8  $8 A. ½'9< : ':+ :  l: ;  <;  ;  ,;  ; 2 use syn::{parse_macro_input, DeriveInput, Error};;5 <  # const _: &str = stringify! {<"  #[proc_macro_derive(MyTrait)] TokenStream {=?  ==  my_trait::expand(input)> 3 .unwrap_or_else(Error::into_compile_error)>6 '>  ,? ?  mod my_trait {? " use proc_macro2::TokenStream;?% $ use syn::{DeriveInput, Result};?' @ F pub(crate) fn expand(input: DeriveInput) -> Result {@I !@  @ Ȗ LA  ,A   `  $` a#  a Lb $b lb Db ־Ө[b$ Lb = $b c $c ־Ө[Ө[c c' Dc TT־T TTTTTپc  c Ld $d d( $d 17 17 ʁʺ> d  $d e  e< 4e 17 17 f  e =e =df $f $f =?     K&AL This is preferred over parsing a string because tokens are able to preserveOM information about where in the user's code they were originally written (thePM "span" of the token), possibly allowing the compiler to produce better errorP messages.lL This function parses a `proc_macro::TokenStream` which is the type used forO< interop with the compiler in a procedural macro. To parse a?9 `proc_macro2::TokenStream`, use [`syn::parse2`] instead.< [`syn::parse2`]: parse2O *This function is available only if Syn is built with both the `"parsing"` andR # Examplest <  ,    use syn::DeriveInput;̇ . ! D 8+ // Parse the tokens into a syntax tree.7 let ast: DeriveInput = syn::parse(input).unwrap();: ; ! T1 // Convert into a token stream and return it4 expanded.into() , <              \ ڽD      L L   L ɾ4  < L  <  d d 4 "M&F&I&GK This function parses a `proc_macro2::TokenStream` which is commonly usefulNI when the input comes from a node of the Syn syntax tree, for example theLH body tokens of a [`Macro`] node. When in a procedural macro parsing theKG `proc_macro::TokenStream` provided by the compiler, use [`syn::parse`]J instead.d [`syn::parse`]: parse()܍P *This function is available only if Syn is built with the `"parsing"` feature.*S è   < L܁ d 4 "7&A'S&lL Every span in the resulting syntax tree will be set to resolve at the macroO call site.t't < use syn::{Expr, Result}; fn run() -> Result<()> {3 let code = "assert_eq!(u8::max_value(), 255)";6. let expr = syn::parse_str::(code)?;1 println!("{:#?}", expr); $t , , # run().unwrap(); < ި   < L17 17  d  ! ' &  & ' 8 & &H & &  ' '17       ݳ 170 ' 0 ' '# '817 17߹17X '  ( ' )8 )   * )  ) * 8 ) *H * )  ' &  & ' 8 & &H & &  ' '17       ݳ 170 ' 0 ' '# '817 17߹17X '  ( ' )8 )   * )  ) * 8 ) *H * ) '& &' 8&&H&& ' '17       ݳ 170' 0''# '817 17߹17X'  (')8)  *) )* 8)*H*) '& &' 8&&H&& ' '17       ݳ 170' 0''# '817 17߹17X'  (')8)  *) ֪)* 8)*H*) '& ݪ&' 8&&H&& ' '17       ݳ 170' 0''# '817 17߹17X'  (')8)  *) )* 8)*H*) '& &' 8&&H&& ' '17       ݳ 170' 0''# '817 17߹17X'  (')8)  *) ȫ)* 8)*H*) '& ϫ&' 8&&H&& ̓' '17       ݳ 170' 0''# '817 17߹17X'  (')8)  *) )* 8)*H*) ̓'& &' 8&&H&&  ' '17       ݳ 170' 0''# '817 17߹17X'  (')8)  *) )* 8)*H*)  '& &' 8&&H&&  ' '17       ݳ 170' 0''# '817 17߹17X'  (')8)  *) )* 8)*H*)  '& &' 8&&H&&  ' '17       ݳ 170' 0''# '817 17߹17X'  (')8)  *) )* 8)*H*)  .. .. 8..H..  . .17       ݳ 170/ 0./8/  00 ӭ00 800H00  .. ڭ.. 8..H..  . .17       ݳ 170/ 0./8/  00 00 800H00  .. .. 8..H.. . .17       ݳ 170/ 0./8/  00 00 800H00 VI<Ӄ  `_`(#8TT U? UV VTƃˇ׶V(Vߨ W;W WW 0WpWˇWW (W,. Y$ ˇY8Yˇ  [Z ܮZ[ 8ZZhZZ ˇ\[ \\ 8\\h\[ ˇ](]17 17ˇˇ]  ]P ˇXP0P P (P17 17ˇ 17ˇP  PQ ˇR,HR17 17ˇ 17(R  R8@t  `abstract`з(*866 7? 78 8Dp8 8979 99 09p9}9ܲ(9  9 "Ҫ :$ ;8; =< << 8<<h<< >= => 8==h== ?(?17 17?  ?HG GG 8GGLPGG H-HH1717 17 17H  H0HJI II 8IIHII J,(J17 17߹17  م7XJ  (JLL LL 8LLHLL L L17       ݳ 170M 0MM8M  ON ܰNO 8NOHON  D  `as`($         Ȋӽ=          mȊ ܲ(    Ҫ   Ȋ  Ȋ            Ȋ           Ȋ  17 17ȊȊ           L   Ȋ  1717 17Ȋ 17       ̱        Ȋ  17 17߹17  م7Ȋ               Ȋ  17       ݳ 17                  Ȋ\  `async`('   ,ћx mܲ( Ҫ   IJ  ʲ  17 17 ܲ L 1717 17 17   17 17߹17  م7    17       ݳ 17     $T  `auto`(&$$ $ $$ $$Ֆ⛇2$$$$$$# ##m#ܲ(# #$$Ҫ # ## ##### #### ##### #### ##17 17# ###### ##L## ##1717 17 17# ####### #### ##17 17߹17  م7#  ####ô## #### ##17       ݳ 17# """  """"" """" /\  `await`('// / // /,ٌᄎm/////// //mٌ/ܲ(/ ///Ҫ / ٌ//ٌ ///// //// ٌ///// //// ٌ//17 17ٌٌ/ ////// //L// ٌ//1717 17ٌ 17/ ..../е.. .... ٌ..17 17߹17  م7ٌ.  ...... .... ٌ..17       ݳ 17. ...  ..... .... ٌ;d͗  `become`((;; ; ;; ;4;;;;;;; ;;n;ܲ(; ;;;Ҫ ; ;; ;;;ȶ;; ;;;; ::;ζ:: :::: ::17 17: :::::: ::L:: ::1727 17 27: ::::::: :::: ::27 27߹27  م7:  :::::: :::: ::27       ݳ 27: :::  ::::: :::: GL  `box`(%GG F FF FFFFFFŷFF FFmFܲ(F FGGҪ F FF FFFFF FFFF FFFFF FFFF FF27 27F FFFFFF FFLFF FF2727 27 27F FFFFFFF FFFF FF27 27߹27  م7F  FFEFǸEE EEEE EE27       ݳ 27E EEE  EEEEE EEEE R\  `break`)'RR R RR R,܃{RRRRRRR RRmRܲ(R RRRҪ R RR RRRRR RRRR RRRRR RRRR RR27 27R RRRRQQ QQLQQ QQ2727 27 27Q QQQQQԹQQ QQQQ QQ27 27߹27  م7Q  QQQQQQ QQQQ QQ27       ݳ 27Q QQQ  QQQQQ QQQQ ^\  `const`)'^^ ^ ^^ ^,ďجQ^^^^^^^ ^^mď^ܲ(^ ^^^Ҫ ^ ď]]ď ]]]̺]] ]]]] ď]]]Һ]] ]]]] ď]]27 27ďď] ]]]]]] ]]L]] ď]]2727 27ď 27] ]]]]]]] ]]]] ď]]27 27߹27  م7ď]  ]]]]]] ]]]] ď]]27       ݳ 27] ]]]  ]]]]\ \\\\ ďit û `continue`á)*ii i ii iDьiiiiiɻii iiniܲ(i iiiҪ i ii iiiii iiii iiiii iiii ii27 27i iiiiii iiLii ii2727 27 27i iiiiiii iihh hh27 27߹27  م7h  hhhh˼hh hhhh hh27       ݳ 27h hhh  hhhhh hhhh u\ݙ  `crate`)'uu u uu u,ЙDžݞuuuuuuu uunuܲ(u uuuҪ u uu uuuuu uuuu uuuuu uuut tt27 27t tttttt ttLtt tt2727 27 27t tttttؽtt tttt tt27 27߹27  م7t  tttttt tttt tt27       ݳ 27t ttt  ttttt tttt l  `default`))   <ՑҚ- vՑܲ( Ҫ  ՑՑ о  Ց־  Ց27 27ՑՑ  L Ց2727 27Ց 27   Ց߀27 27߹27  م7Ցހ  ݀܀ۀ܀ۀ ڀـ؀׀ ՑրԀ27       ݳ 27Ӏ ҀрЀ  π΀րπ΀ ̀̀ˀʀ ՑˍD˚ ǿ `do`)$͍   ӕݔ͙Ϳ wܲ( Ӎ׍Ҫ       27 27  L 2727 27 27   27 27߹27  م7    27       ݳ 27     L  `dyn`)%    wܲ( Ҫ    ߙޙݙ ۙڙۙڙ ؙٙי֙ ԙә27 27ҙ љЙϙיЙϙ Ι͙L̙˙ ʙș2727 27 27Ǚ ƙřęÙ˙ęÙ ™ 27 27߹27  م7    27       ݳ 27     T  `else`)&   $` vܲ( Ҫ       27 27  L 2727 27 27   27 27߹27  م7    27       ݳ 27ߥ ޥݥܥ  ۥڥۥڥ ٥إץ֥ ײT  `enum`)&Ѳв ϲ Ͳ̲ ˲$ڛӣXʲɲȲƲβDzƲ ŲIJvòܲ(² Ҫ IJ ² Dz    27 27  L 2727 27 27   27 27߹27  م7    27       ݳ 27     d  `extern`)(   4ح vܲ( Ҫ       27 27 ߾޾߾޾ ݾܾL۾ھ پ׾2727 27 27־ վԾӾҾھӾҾ ѾоϾξ ;˾27 27߹27  م7ʾ  ɾȾǾϾȾǾ ƾžľþ ¾27       ݳ 27   ¾  \Ӝ  `final`*'   ,ƜȨο wܲ( Ҫ       27 27  L 2727 27 27   27 27߹27  م7    27       ݳ 27     D  `fn`*$   Ӗ雿. vӖܲ( Ҫ  ӖӖ   Ӗ  Ӗ27 27ӖӖ  L Ӗ2727 27Ӗ 27   Ӗ27 27߹27  م7Ӗ    Ӗ27       ݳ 27     ӖL  `for`*%   قחۈD vܲ( Ҫ       27 27  L 2727 27 27   27 27߹27  م7    27       ݳ 27     D  `if`*$   ʢՕ wܲ( Ҫ       27 27  L 2727 27 27   27 27߹27  م7    27       ݳ 27     T  `impl`*&   $’鞥 wܲ( Ҫ       27 27  L 2727 27 27   27 27߹27  م7    27       ݳ 27     D؞  `in`*$   ˞Ĉϙ vܲ( Ҫ       27 27  L 2727 27 27   27 27߹27  م7  ߈ވ߈ވ ݈܈ۈڈ و׈27       ݳ 27ֈ ՈԈӈ  ҈шو҈ш ЈψΈ͈ ΕL  `let`*%Ǖƕ ŕ Õ• %ĕ vܲ( ֕ڕҪ       27 27  L 2727 27 27   27 27߹27  م7    27       ݳ 27     T  `loop`*&   $ǝ wܲ( Ҫ     ߡޡߡޡ ݡܡۡڡ ءס27 27֡ աԡӡۡԡӡ ҡѡLСϡ Ρ̡2727 27 27ˡ ʡɡȡǡϡȡǡ ơšġá ¡27 27߹27  م7  ġ  27       ݳ 27     \  `macro`*'   ,қٔ wқܲ( Ҫ  ққ   қ  қ27 27ққ  L қ2727 27қ 27   қ27 27߹27  م7қ    қ27       ݳ 27    ߭ޭݭܭ қݺ\  `match`*'غ׺ ֺ ԺӺ Һ,ՋҺѺкκֺϺκ ͺ̺w˺ܲ(ʺ ɺҪ ̺ ʺɺ ȺǺϺȺǺ ƺźĺú Ⱥ  27 27  L 2727 27 27   27 27߹27  م7    27       ݳ 27     L  `mod`*%   Ӡ֛˛ vܲ( Ҫ       27 27  L 2727 27 27   27 27߹27  م7    27       ݳ 27     T  `move`+&   $ҥu vܲ( Ҫ       27 27  L 2727 27 27   27 27߹27  م7    27       ݳ 27     Lɡ  `mut`+%   d vܲ( Ҫ       27 27  L 2727 27 27   27 27߹27  م7    27       ݳ 27     t  `override`+*   D^ vܲ( Ҫ       27 27  L 2727 27 27   27 27߹27  م7    27       ݳ 27     T  `priv`+&   $Óݦ wܲ( Ҫ       37 37  L 3737 37 37   37 37߹37  م7    37       ݳ 37     L  `pub`ʼ+%   ޢҠގR vҠܲ( Ҫ  ҠҠ  ߄ Ҡ݄܄݄܄ ۄڄل؄ ҠքՄ37 37ҠҠԄ ӄ҄фل҄ф ЄτL΄̈́ Ҡ̄ʄ3737 37Ҡ 37Ʉ ȄDŽƄń̈́Ƅń ĄÄ„ Ҡ37 37߹37  م7Ҡ  „  Ҡ37       ݳ 37     ҠL  `ref`+%   ÿ˛[ vܲ( Ҫ       37 37  L 3737 37 37   37 37߹37  م7    37       ݳ 37 ߐސݐ  ܐېܐې ڐِؐא ؝dӣ  `return`+(ԝӝ ҝ Нϝ Ν4ƣޖݬΝ̝͝ʝҝ˝ʝ ɝȝwǝܲ(Ɲ ŝҪ ȝ Ɲŝ ĝÝ˝ĝÝ  ĝ  37 37  L 3737 37 37   37 37߹37  م7    37       ݳ 37     T  `Self`+&   D̜ם wܲ( Ҫ       37 37  ߩLީݩ ܩک3737 37 37٩ ةש֩թݩ֩թ ԩөҩѩ ЩΩ37 37߹37  م7ͩ  ̩˩ʩҩ˩ʩ ɩȩǩƩ ũé37       ݳ 37©   ũ  T  `self`+&   Ld vܲ( öǶҪ       37 37  L 3737 37 37   37 37߹37  م7    37       ݳ 37     d  `static`+(   4㖚͐ wܲ( Ҫ       37 37  L 3737 37 37   37 37߹37  م7    37       ݳ 37     d  `struct`,(   4  vܲ( Ҫ       37 37  L 3737 37 37   37 37߹37  م7    37       ݳ 37     \  `super`,'   ,եѥ٘ wѥܲ( Ҫ  ѥѥ   ѥ  ѥ37 37ѥѥ  L ѥ3737 37ѥ 37   ѥ37 37߹37  م7ѥ    ѥ37       ݳ 37     ѥ\  `trait`˟,'   ,ŧ wܲ( Ҫ       37 37  L 3737 37 37   37 37߹37  م7    37       ݳ 37     LΦ  `try`,%   ڴv vܲ( Ҫ       37 37  L 3737 37 37   37 37߹37  م7    37       ݳ 37     ܀T  `type`,&րՀ Ԁ Ҁр Ѐ$шЀπ΀̀Ԁ̀̀ ˀʀwɀܲ(Ȁ ǀҪ ʀ Ȁǀ ƀŀ̀ƀŀ ĀÀ€ ƀ  37 37  L 3737 37 37   37 37߹37  م7    37       ݳ 37     d  `typeof`,(   4Ӌ vܲ( Ҫ       37 37  L ߌ݌3737 37 37܌ یڌٌ،ٌ، ׌֌ՌԌ ӌь37 37߹37  م7Ќ  όΌ͌ՌΌ͌ ̌ˌʌɌ Ȍƌ37       ݳ 37Ō ČÌŒ  Ȍ  \  `union`,'   ,̺ wܲ( ș̙Ҫ       37 37  L 3737 37 37   37 37߹37  م7    37       ݳ 37     d  `unsafe`,(   4ϩϺ ߥޥwݥܲ(ܥ ۥҪ ޥ ܥۥ ڥ٥ڥ٥ إץ֥ե ӥҥڥӥҥ ѥХϥΥ ̥˥37 37ʥ ɥȥǥϥȥǥ ƥťLĥå ¥3737 37 37 å  37 37߹37  م7    37       ݳ 37     lۨ  `unsized`,)   <ΨѪϿ wѪܲ( Ҫ  ѪѪ   Ѫ  Ѫ37 37ѪѪ  L Ѫ3737 37Ѫ 37   Ѫ37 37߹37  م7Ѫ   ߱ Ѫޱܱ37       ݳ 37۱ ڱٱر  ױֱޱױֱ ձԱӱұ ѪӾL  `use`,%̾˾ ʾ ȾǾ ƾņ žľþɾ¾ vܲ( ۾߾Ҫ   ¾    37 37  L 3737 37 37   37 37߹37  م7    37       ݳ 37     lǩ  `virtual`ς-)   <Ƀ wܲ( Ҫ       37 37  L 3737 37 37   37 37߹37  م7    37       ݳ 37     \  `where`-'   ,Ɗ͙ vܲ( Ҫ       37 37  L 3737 37 37   37 37߹37  م7    37       ݳ 37     \  `while`-'   ,ťʷ wܲ( Ҫ       37 37  L 3737 37 37   37 37߹37  م7    37       ݳ 37     \  `yield`-'   ,ުJ vܲ( Ҫ       37 37  L 3737 37 37   37 37߹37  م7    37       ݳ 37     PhPg PgPg 8PgPgLPPgPg Ph-HPh3737 37 37Ph  Ph0PhPjPj PjPj 8PjPjHPjPj Pk,(Pk37 37߹37  م7XPk  (PkPmPl PlPl 8PlPlHPlPl Pm Pm37       ݳ 370Pm 0PmPn8Pn  PoPo PoPo 8PoPoHPoPo  L 3737 37 37   37 37߹37  م7    37       ݳ 37      L    3737 37 37                 37 37߹37  م7                 37       ݳ 37                   L 3737 37 37   37 37߹37  م7    37       ݳ 37      L 3737 37 37   37 37߹37  م7    37       ݳ 37     """"" ""L"" ߲"!3737 37߲ 37! !!!!!!! !!!! ߲!!37 37߹37  م7߲!  !!!!!! !!!! ߲!!47       ݳ 47! !!!  !!!!! !!!! ߲((((( ((L(( ˳((4747 47˳ 47( ((((((( (((( ˳((47 47߹47  م7˳(  (((((( (((( ˳((47       ݳ 47( (((  ((((( (((( ˳///// //L// //4747 47 47/ /////// //// //47 47߹47  م7/  ////// ///. ..47       ݳ 47. ...  ..... .... 66666 66L66 664747 47 476 5555655 5555 5547 47߹47  م75  555555 5555 5547       ݳ 475 555  55555 5555 <<<<< <<L<< <<4747 47 47< <<<<<<< <<<< <<47 47߹47  م7<  <<<<<< <<<< <<47       ݳ 47< <<<  <<<<< <<<< CCCCC CCLCC CC4747 47 47C CCCCCCC CCCC CC47 47߹47  م7C  CCCCCC CCCC CB47       ݳ 47B BBB  BBBBB BBBB JJJJJ JJLJJ ÷JJ4747 47÷ 47J JJJIJII IIII ÷II47 47߹47  م7÷I  IIIIII IIII ÷II47       ݳ 47I III  IIIII IIII ÷PPPPP PPLPP PP4747 47 47P PPPPPPP PPPP PP47 47߹47  م7P  PPPPPP PPPP PP47       ݳ 47P PPP  PPPPP PPPP WWWWW WWLWW WW4747 47 47W WWWWWWW WWWW WW47 47߹47  م7W  WWWWWW WWWW WW47       ݳ 47W WVV  VVVVV VVVV ^^^^^ ^^L^^ ^^4747 47 47^ ^^^^^^^ ]]]] ]]47 47߹47  م7]  ]]]]׀]] ]]]] ]]47       ݳ 47] ]]]  ]]]]] ]]]] ddddd ddLdd dd4747 47 47d ddddddd dddd dd47 47߹47  م7d  dddddd dddd dd47       ݳ 47d ddd  dddԁdd dddd kkkہkk kkLkk ͻkk4747 47ͻ 47k kkkkkkk kkkk ͻkk47 47߹47  م7ͻk  kkkkkk kkkk ͻkk47       ݳ 47k kkk  jjkjj jjjj ͻrrrrr rrLrr rr4747 47 47r rrrrr؂rr rrqq qq47 47߹47  م7q  qqqqqq qqqq qq47       ݳ 47q qqq  qqqqq qqqq xxyxx xxLxx xx4747 47 47x xxxxxxx xxxx xx47 47߹47  م7x  xxxx׃xx xxxx xx47       ݳ 47x xxx  xxxxx xxxx  L ߽4747 47߽ 47   ߽47 47߹47  م7߽    ߽47       ݳ 47   Ԅ~ ~~~~ ߽ۄ L ʾ4747 47ʾ 47   ʾ47 47߹47  م7ʾ    ʾ47       ݳ 47     ʾ L 4747 47 47 ؅  47 47߹47  م7    47       ݳ 47     Ĕ L 4747 47 47   47 47߹47  م7  ׆  47       ݳ 47     ǛƛΛǛƛ śěLÛ› 4747 47 47 ›  47 47߹47  م7    47       ݳ 47   ԇ  ѢТآۇѢТ Ϣ΢L̢͢ ˢɢ4747 47 47Ȣ ǢƢŢĢ̢ŢĢ ⢠47 47߹47  م7    47       ݳ 47     ۩ک۩ک ٩ةLש֩ թө4747 47 47ҩ ѩЩϩΩ֩؈ϩΩ ̩ͩ˩ʩ ɩǩ47 47߹47  م7Ʃ  ũĩé˩ĩé © 47       ݳ 47      L ߰ݰ4747 47 47ܰ ۰ڰٰذٰذ װְհ԰ ӰѰ47 47߹47  م7а  ϰΰͰհ׉ΰͰ ̰˰ʰɰ Ȱư47       ݳ 47Ű İð°  Ȱ   L 4747 47 47  ߷޷ ݷ۷47 47߹47  م7ڷ  ٷط׷߷ط׷ ַշԷӷ ҷз47       ݳ 47Ϸ ηͷ̷  ˷ʷҷԊ˷ʷ ɷȷǷƷ ۊ L 4747 47 47   47 47߹47  م7   ߾޾ݾ ܾھ47       ݳ 47پ ؾ׾־  վԾܾվԾ ӾҾѾо  L 4747 47 47 ؋  47 47߹47  م7    47       ݳ 47      L 4747 47 47   47 47߹47  م7  ׌  47       ݳ 47      L 4747 47 47   47 47߹47  م7    47       ݳ 47   ԍ  ۍ L 4747 47 47   47 47߹47  م7    47       ݳ 47      L 4747 47 47 ؎  47 47߹47  م7    47       ݳ 47      L 4747 47 47   47 47߹47  م7  ׏  47       ݳ 47      L 4747 47 47   47 47߹47  م7    47       ݳ 47   Ԑ  ې L 4747 47 47   47 47߹47  م7    47       ݳ 47      L 4747 47 47 ؑ  47 47߹47  م7    57       ݳ 57     ݅܅݅܅ ۅڅLم؅ ׅՅ5757 57 57ԅ Ӆ҅хЅ؅хЅ υ΅̅ͅ ˅Ʌ57 57߹57  م7ȅ  DžƅŅͅגƅŅ ąÅ… 57       ݳ 57      L ߌ5757 57 57ތ ݌܌یڌیڌ ٌ،׌֌ Ռӌ57 57߹57  م7Ҍ  ьЌό׌Ќό Ό͌̌ˌ ʌȌ57       ݳ 57nj ƌŌČ  ÌŒʌԓÌŒ  ۓ L 5757 57 57   ߓݓ57 57߹57  م7ܓ  ۓړٓړٓ ؓד֓Փ ԓғ57       ݳ 57ѓ ГϓΓ  ͓̓ԓ͓̓ ˓ʓɓȓ  L 5757 57 57 ؔ  57 57߹57  م7   ߚ ޚܚ57       ݳ 57ۚ ښؚٚ  ך֚ޚך֚ ՚ԚӚҚ  L 5757 57 57   57 57߹57  م7  ו  57       ݳ 57    ߡޡݡܡ  L 5757 57 57   57 57߹57  م7    57       ݳ 57   Ԗ  ۖ L 5757 57 57   57 57߹57  م7    57       ݳ 57      L 5757 57 57 ؗ  57 57߹57  م7    57       ݳ 57     QVI<  `+`/#8QTQT QU? QUQV QV乖΋QV(QVߨ QW;QW QWQW 0QWpQWQWܲ(QW (QW " QY$ QY8QY  Q[QZ ՘QZQ[ 8QZQZhQZQZ Q\Q[ ۘQ\Q\ 8Q\Q\hQ\Q[ Q](Q]57 57Q]  Q]RP XRP0RP RP (RP57 57 57RP  RPRQ RR,HRR57 57 57/RR  RRTVID  `+=`/$8TTTT TU? TUTV TV,߫³TV(TVߨ TW;TW TWTW 0TWpTWTWTW (TW,. TY$ TY8TY  T[TZ TZT[ 8TZTZhTZTZ T\T[ T\T\ 8T\T\hT\T[ T](T]57 57T]  T]VVI<  `&`̀0#8VTVT VU? VUVV VV}VV(VVߨ VW;VW VWVW 0VWpVWVWܲ(VW (VW " VY$ VY8VY  V[VZ VZV[ 8VZVZhVZVZ V\V[ ĚV\V\ 8V\V\hV\V[ V](V]57 57V]  V]WP XWP0WP WP (WP57 57 57WP  WPWQ WR,HWR57 57 570WR  WRYVIDѬ  `&&`؈0$8YTYT YU? YUYV YV4Ĭ͆YV(YVߨ YW;YW YWYW 0YWpYWYW/YW (YW " YY$ YY8YY  Y[YZ ԛYZY[ 8YZYZhYZYZ Y\Y[ ڛY\Y\ 8Y\Y\hY\Y[ Y](Y]57 57Y]  Y][VID  `&=`ʎ0$8[T[T [U? [U[V [V,[V([Vߨ [W;[W [W[W 0[Wp[W[W/[W ([W " [Y$ [Y8[Y  [[[Z [Z[[ 8[Z[Zh[Z[Z [\[[ [\[\ 8[\[\h[\[[ []([]57 57[]  []]VI<  `@`0#8]T]T ]U? ]U]V ]V߲̎]V(]Vߨ ]W;]W ʜ]W]W 0]Wp]W߲]Wܲ(]W (]W " ]Y$ ߲]Y8]Y߲  ][]Z ]Z][ 8]Z]Zh]Z]Z ߲]\][ ]\]\ 8]\]\h]\][ ߲]](]]57 57߲߲]]  ]]^P ߲X^P0^P ^P (^P57 57߲ 57߲^P  ^P^Q ߲^R,H^R57 57߲ 570^R  ^R`VI< ם `!`ɜ0#8`T`T `U? `U`V `V$ܭ˳盀k`V(`Vߨ `W;`W `W`W 0`Wp`W˳`Wܲ(`W (`W " `Y$ ˳`Y8`Y˳  `[`Z `Z`[ 8`Z`Zh`Z`Z ˳`\`[ `\`\ 8`\`\h`\`[ ˳`](`]57 57˳˳`]  `]aP ˳XaP0aP aP (aP57 57˳ 57˳aP  aPaQ ˳aR,HaR57 57˳ 570aR  aRcVI<  `^`դ0#8cTcT cU? cUcV cV,ʕ悕1cV(cVߨ cW;cW cWcW 0cWpcWcWܲ(cW (cW " cY$ cY8cY  c[cZ cZc[ 8cZcZhcZcZ c\c[ c\c\ 8c\c\hc\c[ c](c]57 57c]  c]dP XdP0dP dP (dP57 57 57dP  dPdQ dR,HdR57 57 570dR  dRfVIDͮ  `^=`0$8fTfT fU? fUfV fV<񍈦㲹fV(fVߨ fW;fW fWfW 0fWpfWfW/fW (fW " fY$ fY8fY  f[fZ fZf[ 8fZfZhfZfZ f\f[  f\f\ 8f\f\hf\f[ f](f]57 57f]  f]hVI< ֠ `:`Ӳ0#8hThT hU? hUhV hV,ңhV(hVߨ hW;hW ߠhWhW 0hWphWhWܲ(hW (hW " hY$ hY8hY  h[hZ hZh[ 8hZhZhhZhZ h\h[ h\h\ 8h\h\hh\h[ h](h]57 57h]  h]iP XiP0iP iP (iP57 57 57iP  iPiQ iR,HiR57 57 570iR  iRkVID  `::`ߺ0$8kTkT kU? kUkV kV4媐Ʀ kV(kVߨ kW;kW kWkW 0kWpkWkW/kW (kW " kY$ kY8kY  k[kZ kZk[ 8kZkZhkZkZ k\k[ k\k\ 8k\k\hk\k[ k](k]57 57k]  k]mVI<  `,`0#8mTmT mU? mUmV mV,د÷umV(mVߨ mW;mW ȢmWmW 0mWpmW÷mWܲ(mW (mW " mY$ ÷mY8mY÷  m[mZ mZm[ 8mZmZhmZmZ ÷m\m[ m\m\ 8m\m\hm\m[ ÷m](m]57 57÷÷m]  m]nP ÷XnP0nP nP (nP57 57÷ 57÷nP  nPnQ ÷nR,HnR57 57÷ 570nR  nRpVI< գ `/`0#8pTpT pU? pUpV pVצՀpV(pVߨ pW;pW ޣpWpW 0pWppWpWܲ(pW (pW " pY$ pY8pY  p[pZ pZp[ 8pZpZhpZpZ p\p[ p\p\ 8p\p\hp\p[ p](p]57 57p]  p]qP XqP0qP qP (qP57 57 57qP  qPqQ qR,HqR57 57 570qR  qRsVIDɰ  `/=`0$8sTsT sU? sUsV sV,̓esV(sVߨ sW;sW sWsW 0sWpsWsW/sW (sW " sY$ sY8sY  s[sZ sZs[ 8sZsZhsZsZ s\s[ s\s\ 8s\s\hs\s[ s](s]57 57s]  s]uVI<  `$`0#8uTuT uU? uUuV uV4uV(uVߨ uW;uW ǥuWuW 0uWpuWuWܲ(uW (uW " uY$ uY8uY  u[uZ uZu[ 8uZuZhuZuZ u\u[ u\u\ 8u\u\hu\u[ u](u]57 57u]  u]vP XvP0vP vP (vP57 57 57vP  vPvQ vR,HvR57 57 570vR  vRxVI< Ԧ `.`0#8xTxT xU? xUxV xVŅxV(xVߨ xW;xW ݦxWxW 0xWpxWxWܲ(xW (xW " xY$ xY8xY  x[xZ xZx[ 8xZxZhxZxZ x\x[ x\x\ 8x\x\hx\x[ x](x]57 57x]  x]yP XyP0yP yP (yP57 57 57yP  yPyQ yR,HyR57 57 570yR  yR{VID  `..`0$8{T{T {U? {U{V {V$ӱͻƦ{V({Vߨ {W;{W {W{W 0{Wp{Wͻ{W/{W ({W " {Y$ ͻ{Y8{Yͻ  {[{Z {Z{[ 8{Z{Zh{Z{Z ͻ{\{[ {\{\ 8{\{\h{\{[ ͻ{]({]57 57ͻͻ{]  {]}VIL  `...`0%8}T}T }U? }U}V }V$Ȩ}V(}Vߨ }W;}W ƨ}W}W 0}Wp}W}W}W (}W,. }Y$ }Y8}Y  }[}Z }Z}[ 8}Z}Zh}Z}Z }\}[ }\}\ 8}\}\h}\}[ }](}]57 57}]  }]VILDz  `..=`0%8TT U? UV VD_V(Vߨ W;W WW 0WpWW0W (W " Y$ Y8Y  [Z ɩZ[ 8ZZhZZ \[ ϩ\\ 8\\h\[ ](]57 57]  ]VI<  `=`0#8TT U? UV V߽¦ƲV(Vߨ W;W WW 0WpW߽Wܲ(W (W#% Y$ ߽Y8Y߽  [Z Z[ 8ZZhZZ ߽\[ \\ 8\\h\[ ߽](]57 57߽߽]  ]P ߽XP0P P (P57 57߽ 57߽P  PQ ߽R,HR57 57߽ 57̀1R  RVID  `==`1$8TT U? UV V$ʾ蠌eV(Vߨ W;W WW 0WpWʾW/W (W#% Y$ ʾY8Yʾ  [Z Z[ 8ZZhZZ ʾ\[ \\ 8\\h\[ ʾ](]57 57ʾʾ]  ]VID ̫ `>=`1$8TT U? UV VӳƮږV(Vߨ W;W իWW 0WpWW/W (W#% Y$ Y8Y  [Z Z[ 8ZZhZZ \[ \\ 8\\h\[ ](]57 57]  ]VI<  `>`΍1#8TT U? UV VV(Vߨ W;W WW 0WpWWܲ(W (W#% Y$ Y8Y  [Z جZ[ 8ZZhZZ \[ ެ\\ 8\\h\[ ](]57 57]  ]P XP0P P (P57 57 57P  PQ R,HR57 57 57Õ1R  RVIDŴ  `<=`1$8TT U? UV VʟV(Vߨ W;W WW 0WpWW/W (W#% Y$  Y8Y     [Z Z[ 8ZZhZZ \[ \\ 8\\h\[  ](]57 57 ]  ]VI<  `<`1#8TT U? UV Vʴ V(V  ߨ W;W WW 0WpW  Wܲ(W (W#% Y$  Y8Y     [Z Z[ 8ZZhZZ \[ Ǯ\\ 8\\h\[  ](]57 57 ]  ]P  XP0P  P (P57 57 57 P  PQ  R,HR57 57 571 R  RVID  `*=`1$8TT U? UV V,ޗ V(V  ߨ W;W WW 0WpW  W/W (W#% Y$  Y8Y     [Z ׯZ[ 8ZZhZZ \[ ݯ\\ 8\\h\[  ](]57 57 ]  ]VIDݵ  `!=`1$8TT U? UV VеۊѠ V(V  ߨ W;W WW 0WpW  W/W (W#% Y$  Y8Y     [Z Z[ 8ZZhZZ \[ \\ 8\\h\[  ](]57 57 ]  ]VI< İ `|`1#8TT U? UV VԶ  V(V  ߨ W;W ͰWW 0WpW  Wܲ(W (W#% Y$  Y8Y     [Z Z[ 8ZZhZZ \[ \\ 8\\h\[  ](]57 57 ]  ]P  XP0P  P (P57 57 57 P  PQ  R,HR57 57 571 R  RVID¶ ڱ `|=`1$8TT U? UV V$ V(V  ߨ W;W WW 0WpW  W/W (W#% Y$  Y8Y     [Z Z[ 8ZZhZZ \[ \\ 8\\h\[  ](]57 57 ]  ]VID  `||`1$8TT U? UV V$׎ V(V  ߨ W;W WW 0WpW  W/W (W#% Y$  Y8Y     [Z Z[ 8ZZhZZ \[ \\ 8\\h\[  ](]57 57 ]  ]VI<  `#`1#8TT U? UV V,ϿЛ V(V  ߨ W;W WW 0WpW  Wܲ(W (W#% Y$  Y8Y     [Z Z[ 8ZZhZZ \[ \\ 8\\h\[  ](]57 57 ]  ]P  XP0P  P (P57 57 57 P  PQ  R,HR57 57 571 R  RVI<ڷ  `?`1#8TT U? UV VDͷ῞: V(V  ߨ W;W WW 0WpW  Wܲ(W (W#% Y$  Y8Y     [Z ϴZ[ 8ZZhZZ \[ մ\\ 8\\h\[  ](]57 57 ]  ]P  XP0P  P (P57 57 57 P  PQ  R,HR57 57 571 R  RVID  `->`1$8TT U? UV V4r V(V  ߨ W;W WW 0WpW  W/W (W#% Y$ !Y8Y!! ! !![Z Z[ 8ZZhZZ \[ \\ 8\\h\[ !](]57 57!]! ! ]VID  `<-`1$8TT U? UV V4̌ϙ]!V(V!!ߨ W;W WW 0WpW!!W/W !(W#% Y$ !Y8Y!! ! !![Z Z[ 8ZZhZZ \[ \\ 8\\h\[ !](]57 57!]! ! ]VI< Ҷ `%`1#8TT U? UV VLj!V(V!!ߨ W;W ۶WW 0WpW!!Wܲ(W !(W#% Y$ !Y8Y!! ! !![Z Z[ 8ZZhZZ \[ \\ 8\\h\[ !](]57 57!]! ! ]P !!XP0P!! P (P57 57 57!P! ! PQ !R,HR57 57 571!R! ! RVID  `%=`1$8TT U? UV V,!V(V!!ߨ W;W WW 0WpW!!W/W !(W#% Y$ !Y8Y!! ! !![Z Z[ 8ZZhZZ \[ \\ 8\\h\[ !](]57 57!]! ! ]VID׹  `=>`1$8TT U? UV VDʹ։!V(V!!ߨ W;W ĸWW 0WpW!!W/W !(W#% Y$ !Y8Y!! ! !![Z Z[ 8ZZhZZ \[ \\ 8\\h\[ !](]57 57!]! ! ]VI<  `;`1#8TT U? UV V$!V(V!!ߨ W;W WW 0WpW!!Wܲ(W !(W#% Y$ !Y8Y!! ! !![Z ǹZ[ 8ZZhZZ \[ ͹\\ 8\\h\[ !](]57 57!]! ! ]P !!XP0P!! P (P57 57 57!P! ! PQ !R,HR57 57 572!R! ! RVID  `<<`2$8TT U? UV VՖ!V(V!!ߨ W;W WW 0WpW!!W/W !(W#% Y$ !Y8Y!! ! !![Z ݺZ[ 8ZZhZZ \[ \\ 8\\h\[ !](]57 57!]! ! ]VIL  `<<=`2%8TT U? UV V,զ̡ٹ!V(V!!ߨ W;W WW 0WpW!!W0W !(W#% Y$ !Y8Y!! ! !![Z Z[ 8ZZhZZ \[ \\ 8\\h\[ !](]57 57!]! ! ]VID ʻ `>>`2$8TT U? UV Vٱ!V(V!!ߨ W;W ӻWW 0WpW!!W/W !(W#% Y$ !Y8Y!! ! !![Z Z[ 8ZZhZZ \[ \\ 8\\h\[ !](]57 57!]! ! ]VILֻ  `>>=`ܓ2%8TT U? UV V,ɻ핅!V(V!!ߨ W;W WW 0WpW!!W0W !(W#% Y$ !Y8Y!! ! !![Z ּZ[ 8ZZhZZ \[ ܼ\\ 8\\h\[ !](]57 57!]! ! ]VI<  `*`2#8TT U? UV V$߬!V(V!!ߨ W;W WW 0WpW""Wܲ(W "(W#% Y$ "Y8Y"" " ""[Z Z[ 8ZZhZZ \[ \\ 8\\h\[ "](]57 57"]" " ]P ""XP0P"" P (P57 57 57"P" " PQ "R,HR57 57 572"R" " RVI<  `-`2#8TT U? UV VŶ>"V(V""ߨ W;W WW 0WpW""Wܲ(W "(W#% Y$ "Y8Y"" " ""[Z Z[ 8ZZhZZ \[ ž\\ 8\\h\[ "](]57 57"]" " ]P ""XP0P"" P (P57 57 57"P" " PQ "R,HR57 57 572"R" " RVID  `-=`2$8TT U? UV V,¡"V(V""ߨ W;W WW 0WpW""W/W "(W#% Y$ "Y8Y"" " ""[Z տZ[ 8ZZhZZ \[ ۿ\\ 8\\h\[ "](]57 57"]" " ]VI<  `~`2#8TT U? UV V,킵"V(V""ߨ W;W WW 0WpW""Wܲ(W "(W#% Y$ "Y8Y"" " ""[Z Z[ 8ZZhZZ \[ \\ 8\\h\[ "](]57 57"]" " ]P ""XP0P"" P (P57 57 57"P" " PQ "R,HR57 57 572"R" " Rq@\  `{...}`׹2'8p,޽댮/"pq q""r7q qq 0qpq""rܲ(r " r#%ŧ s$ "t8t"" "vu uu 8uuhuu wv vv 8vvhvv "w(w57 57"w" " wP "  8LP@5757 57 57"""ƀ"À57 57572 " ǀ0̀tvނ ς 8ĂHƂ  \  `[...]`2' <讂ҽ"  ""     n""ܲ( "  ŧ  """ "    "57 57"" " " L5767 57 67""""57 57572 "  \׾  `(...)`2',ʾ:""" m""ܲ( "ŧ  """ "    "67 67"" " " L6767 67 67""""67 67672 "  č  None-delimited group24,""" n""ܲ( "ŧ  """ "    "67 67"" " " L6767 67 67""""67 67672 "  NϑBΒ ` x( '@ 0 ( @  0 (  3( 0 ( ( 9  0 (   4,?& 0 ( ( (0 0 ( 0 ) 0 (  ( 0 ( i( ( 0 ( ( @ 0 ( s@ ( 0 ( ( <8 0 ( {8 * 0 (  5 0 (    0 (     0 (    0 0 ( 0 +( 0 ( (   0 (   0 (   0 (    0 (    0 (   0 (    0 (   ,( 0 ( ( ( 0 ( (  0 (    0 (    0 (  -@ 0 ( @ .  0 (    0 (   0 (  0 0 ( 0   0 ( @   0 ( H 0 0 ( 0 0 0 ( 0 ( 0 ( (  ( 0 ( ( 6 0 (  "  0 (   /0 0 ( 0 A( 0 ( ( #0 0 ( 0 08 0 ( 8 $ 0 (  18 0 ( 8 %( 0 ( ( &( 0 ( ( 2( 0 ( (  0 (   0 ( (  0 (  0 ( º0  0 ( (  0 (   0 ( ۼ   0 ( Ͻ(  0 ( ľ8 0 ( ( 0 ( 0 0 ( (  0 (   0 ( ( 0 ( 0 0 (  0 (   0 (   0 ( @ 0 (  0 (   0 (  0 (  0 (  0 (   0 ( ( 0 (   0 (   0 (   0 (   0 ( ( 0 ( @ 0 ( 0 0 ( 0  0 (   0 ( ( 0 ( @ 0 (    0 (   0 ( (  0 (   0 ( (  0 (    0 (   0 ( (  0 ( (  0 ( P# "' "" "(# "' "" "(# "' ѥ"" "(# "' "" "(# "' "" "( " - * An attribute like `#[repr(transparent)]`.3I(" 'P  OlǾǾvD  d##% " Rust has six types of attributes.3AK H - Outer attributes like `#[repr(transparent)]`. These appear outside or3g) & in front of the item they describe.3EJ G - Inner attributes like `#![feature(proc_macro)]`. These appear inside3f2 / of the item they describe, usually a module.3N. + - Outer doc comments like `/// # Example`.3J9 6 - Inner doc comments like `//! Please file an issue`.3U. + - Outer block comments `/** # Example */`.3J9 6 - Inner block comments `/*! Please file an issue */`.3U  L I The `style` field of type `AttrStyle` distinguishes whether an attribute3h F C is outer or inner. Doc comments and block comments are promoted to3b H E attributes, as this is how they are processed by the compiler and by3d  `macro_rules!` macros.35   J G The `path` field gives the possibly colon-delimited path against which3f G D the attribute is resolved. It is equal to `"doc"` for desugared doc3c K H comments. The `tokens` field contains the rest of the attribute body as3g\  tokens.3& \    5 2 #[derive(Copy)] #[crate::precondition x < 5]3Q 4 1 ^^^^^^~~~~~~ ^^^^^^^^^^^^^^^^^^^ ~~~~~3P 5 2 path tokens path tokens3Q<    D   & # # Parsing from tokens to Attribute3BG D This type does not implement the [`Parse`] trait and thus cannot be3c: 7 parsed directly by [`ParseStream::parse`]. Instead use3V> ; [`ParseStream::call`] with one of the two parser functions3ZI F [`Attribute::parse_outer`] or [`Attribute::parse_inner`] depending on3e which you intend to parse.39܆ [`Parse`]: parse::Parse365 2 [`ParseStream::parse`]: parse::ParseBuffer::parse3Q3 0 [`ParseStream::call`]: parse::ParseBuffer::call3O<  / %% )    , %% 4  %%%%%%%%%        ,   %% 6    ܣ%% ;     -     %    !+    !t  !LȖ Ȗ ",  "<  ""|  ##4 1 # Parsing from Attribute to structured arguments3P$$G D The grammar of attributes in Rust is very flexible, which makes the3c%K H syntax tree not that useful on its own. In particular, arguments of the3g&H E attribute are held in an arbitrary `tokens: TokenStream`. Macros are3d'F C expected to check the `path` of the attribute, decide whether they3b'K H recognize it, and then parse the remaining tokens according to whatever3g(< 9 grammar they wish to require for that kind of attribute.3X))B ? If the attribute you are parsing is expected to conform to the3^*F C conventional structured form of attribute, use [`parse_meta()`] to3b+H E obtain that structured representation. If the attribute follows some3d,I F other grammar of its own, use [`parse_args()`] to parse that into the3e- expected data structure.37--+ ( [`parse_meta()`]: Attribute::parse_meta3G.+ ( [`parse_args()`]: Attribute::parse_args3G/ /|   / 0  # Doc comments3-0 0 H E The compiler transforms doc comments, such as `/// comment` and `/*!3d1!L I comment */`, into attributes before macros are expanded. Each comment is3h2"A > expanded into an attribute of the form `#[doc = r"comment"]`.3]3"3"F C As an example, the following `mod` items are expanded identically:3b4#4<#  5#& # # use syn::{ItemMod, parse_quote};3B5#% " let doc: ItemMod = parse_quote! {3A6$$ ! /// Single line doc comments3@6$ /// We write so many!387\$ /**3&7$!  * Multi-line comments...3=8% * May span many lines398\% */3&9% mod example {309%0 - //! Of course, they can be inner too3L:&+ ( /*! And fit in a single line */3G:L&Ȗ Ȗ ;4& };4!;&& # let attr: ItemMod = parse_quote! {4B<'- * #[doc = r" Single line doc comments"]4I<'& # #[doc = r" We write so many!"]4B=' #[doc = r"4-='! 33 >(33>\( "]4&>(33?(: 7 #![doc = r" Of course, they can be inner too"]ބ4V?)3 0 #![doc = r" And fit in a single line "]4O@L)Ȗ Ȗ @4)44A) assert_eq!(doc, attr);45A<*  Aʈo#####ԗ+\+""+,+""+!l+""t,$,"",4,"" " TI F Distinguishes between attributes that decorate an item and attributes4e(" U& # that are contained within an item.4BNUqUP  lVǾǾVV # Outer attributes݋41VV - `#[repr(transparent)]`47W - `/// # Example`40W#  - `/** Please file an issue */`4?WW # Inner attributes41WX  - `#![feature(proc_macro)]`4;X - `//! # Example`40X#  - `/*! Please file an issue */`4?߂굆#######˳,Y####  ## #  ˳## #LY##˳ " Z3 0 Content of a compile-time structured attribute.Ò4O(" Z'ZP  Ol[ǾǾv[\[ ## Path4&[[0 - A meta path is like the `test` in `#[test]`.4L\\\ ## List4&\\@ = A meta list is like the `derive(Copy)` in `#[derive(Copy)]`.Ӗ4\\] ## NameValueۗ4+]]= : A name-value meta is like the `path = "..."` in `#[path =4Y] "sys/windows.rs"]`.42]^ # Syntax tree enum41^^& # This type is a [syntax tree enum].Ӛ4B^^. + [syntax tree enum]: Expr#syntax-tree-enums›4J˟############  ## #  ## #$_## `F C A structured list within an attribute, like `derive(Copy, Clone)`.4bg ## #  ## #D`## `F C A name-value pair within an attribute, like `feature = "nightly"`.П4bg ## #  ## #la##  #  ## #   #  ## #   #  ## #   #= H 6767 67 67# # #  0 " aF 44 (" b'bG D *This type is available only if Syn is built with the `"derive"` or4cc `"full"` feature.*41###td$d##d\d##d-4d##    ۱ 𓋌A÷ " eF П4П4 (" e'eG 44 Of44vж###tg$g##gDg##߽dhh## " k- * Element of a compile-time attribute list.4I(" l'lP  OlmǾǾvµ######## nF C A structured meta item, like the `Copy` in `#[derive(Copy)]` whichҬ4bgn#  would be a nested `Meta::Path`.4?D ## #  ## #$o## oE B A Rust literal, like the `"new_name"` in `#[rename("new_name")]`.4af ## #  ## #o##  #  ## #   #  ## #   #= H 6767 67 67# # #  0 " D An enum variant.4.(" ]&ePMlǾǾtϭ####% " Attributes tagged on the variant.4AF,## ĉ Name of the variant.۵438,##"  Content stored in the variant.4>C4##+( % Explicit discriminant: `Variant = 1`4DId## ʁʺ߽ " 1 . Data stored within an enum variant or struct.ĸ4M(" 'P  OlǾǾv44& Ӛ4Ӛ4 . ›4›4 鉌ݴ########### G D Named fields of a struct or struct variant such as `Point { x: f64,ۼ4cht y: f64 }`.Ž4). ## #  ## #\ ## H E Unnamed fields of a tuple struct or tuple variant such as `Some(T)`.4di ## #  ## #l ##$  / , Unit struct or unit variant such as `None`.4KPZ##oq##  #  ## #   #  ## #   #= H 6767 67 67# # #  0 " G ۼ4ۼ4 (" t Ž4Ž4+ N G 44 v 44Z## \ ## ', ##    ۱ 𓋌A÷ " H 44 (" 'G 44 O44vۥڳ޽##\##)<##4 " "( % A field of a struct or enum variant.4D(" #'#P  Ol#ǾǾv#####̔%$#  Attributes tagged on the field.4?D,%## %% Visibility of the field.47<%##&% Name of the field, if any.49>& &* ' Fields of tuple structs have no names.4FK,&## ʁʺ'"\'## ʁʺd'' Type of the field.416'##Ý " (: 7 The visibility level of an item: inherited or `pub` or4V(" ( `pub(restricted)`.41=(`(P  l)ǾǾ))44))& Ӛ4Ӛ4 **. ›4›4 񴼢G############### +% " A public visibility level: `pub`.4AF ## #  ## #L+## ,& # A crate-level visibility: `crate`.4BG ## #  ## #D,## ,> ; A visibility level restricted to some path: `pub(self)` or4Z_-; 8 `pub(super)` or `pub(crate)` or `pub(in some::module)`.4W\ ## #  ## #l-##L..9 6 An inherited visibility, which usually means private.4UZd##y{##  #  ## #   #  ## #   #  ## #   #= H 6767 67 67# # #  0 " .% 44 (" /'/G 44 O/44vӮ#0L0##Ҡ " 1& 44 (" 1'1G 44 O244vҸQ#3\3## " 3> 44 (" 4; 44 ,4O4G 44 w544⦒####6L6##Ҡ6\6##7 D7## ʁʺ7$7##  lܼȹ "  A Rust expression.41(" 'P  OR O feature, but most of the variants are not available unless "full" is enabled.*4n # Syntax tree enums42L I This type is a syntax tree enum. In Syn this and other syntax tree enums4hE B are designed to be traversed using the following rebinding idiom.4a<   # use syn::Expr;4/,   # fn example(expr: Expr) {49'    let expr: Expr = /* ... */;4;D   match expr {4+#  Expr::MethodCall(expr) => {4?!!LȖ Ȗ  Expr::Cast(expr) => {48 !! LȖ Ȗ   Expr::If(expr) => {46 !! L Ȗ Ȗ      # _ => {}4, <    <    <      E B We begin with a variable `expr` of type `Expr` that has no fields4a K H (because it is an enum), and by matching on it and rebinding a variable4g K H with the same name `expr` we effectively imbue our variable with all of4g L I the data fields provided by the variant that it turned out to be. So for4h L I example above if we ended up in the `MethodCall` case then we get to use4h L I `expr.receiver`, `expr.args` etc; if we ended up in the `If` case we get4h ? < to use `expr.cond`, `expr.then_branch`, `expr.else_branch`.4[I F This approach avoids repeating the variant names twice on every line.4e<  & # # use syn::{Expr, ExprMethodCall};4B,  44, ) // Repetitive; recommend not doing this.4H44B ? Expr::MethodCall(ExprMethodCall { method, args, .. }) => {4^<  l # _ => {}4(<  <  <  L I In general, the name to which a syntax tree enum variant is bound should5h> ; be a suitable name for the complete syntax tree enum type.ց5Z<  !  # use syn::{Expr, ExprField};5=,  + ( # fn example(discriminant: ExprField) {5GG D // Binding is called `base` which is the name I would use if I wereÄ5c: 7 // assigning `*discriminant.base` without an `if let`.5V3 0 if let Expr::Tuple(base) = *discriminant.base {5O<   <   <   !J G A sign that you may not be choosing the right variable names is if you5f"; 8 see names getting repeated in your code, like accessing5W"4 1 `receiver.receiver` or `pat.pat` or `cond.cond`.щ5P#t޻###########$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$##########$$$$$$$$  $$  $$  $$  $$  $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$  $$!!$$""$$##$$$$$$%%$$&&$$''$$ / , A slice literal expression: `[a, b, c, d]`.ϒ5KP ## #  ## #L## . + An assignment expression: `a = compute()`.5JO ## #  ## #T## 5 2 A compound assignment expression: `counter += 1`.ҕ5QV ## #  ## #d## $ ! An async block: `async { ... }`.5@E ## #  ## #L## % " An await expression: `fut.await`.ј5AF ## #  ## #L## ) & A binary operation: `a + b`, `a * b`.5EJ ## #  ## $T##   A blocked scope: `{ ... }`.ś5;@ ## $  ## $L##  A box expression: `box f`.59> ## $  ## $<## > ; A `break`, with an optional label to break and an optional5Z_| expression.5*/ ## $  ## $L## / , A function call expression: `invoke(a, b)`.5KP ## $  ## $D## $ ! A cast expression: `foo as f64`.5@E ## $  ## $D## ) & A closure expression: `|a, b| a + b`.5EJ ## $  ## $\## ) & A `continue`, with an optional label.ߤ5EJ ## $  ## $d ## D A Access of a named struct field (`obj.k`) or unnamed tuple struct5`e! field (`obj.0`).5/4 ## $  ## $L!## !* ' A for loop: `for pat in expr { ... }`.5FK ## $  ## $\"## "8 5 An expression contained within invisible delimiters.5TY" "H E This variant is important for faithfully representing the precedence5di#@ = of expressions and is related to `None`-delimited spans in aѫ5\a$$ ## $  ## $L$## $F C An `if` expression with an optional `else` block: `if expr { ... }˭5bg% else { ... }`.5-2% %? < The `else` branch expression may only be an `If` or `Block`5[`%9 6 expression, not any of the other types of expression.5UZ ## $  ## $4&## &8 5 A square bracketed indexing expression: `vector[2]`.5TY ## $  ## $L'## '' $ A `let` guard: `let Some(x) = opt`.5CH ## $  ## $<'## '6 3 A literal in place of an expression: `1`, `"foo"`.5RW ## $  ## $<(## (' $ Conditionless loop: `loop { ... }`.5CH ## $  ## $D(## )6 3 A macro invocation expression: `format!("{}", q)`.ķ5RW ## $  ## $L)## )B ? A `match` expression: `match n { Some(n) => {}, None => {} }`.5^c ## $  ## $L*## *1 . A method call expression: `x.foo::(a, b)`.5MR ## $  ## $t+## +* ' A parenthesized expression: `(a + b)`.5FK ## $  ## $L+## +? < A path like `std::mem::replace` possibly containing generic5[`,) & parameters and a qualified self-type.ƾ5EJ, -6 3 A plain identifier like `x` is a path of length 1.5RW ## $  ## $D-## -> ; A range expression: `1..2`, `1..`, `..2`, `1..=2`, `..=2`.5Z_ ## $  ## $L.## .. + A referencing operation: `&a` or `&mut a`.5JO ## $  ## $l.## /G D An array literal constructed from one repeated element: `[0u8; N]`.5ch ## $  ## $T/## 06 3 A `return`, with an optional value to be returned.5RW ## $  ## $T0## 08 5 A struct literal expression: `Point { x: 1, y: 1 }`.5TY1 1G D The `rest` provides the value of the remaining fields as in `S { a:5ch1 1, b: 1, ..rest }`.527 ## $  ## $T2## 2 A try-expression: `expr?`.59> ## $  ## $<2## 2  A try block: `try { ... }`.5;@ ## $  ## $d3## 3' $ A tuple expression: `(a, b, c, d)`.5CH ## $  ## $L3## 4- * A type ascription expression: `foo: f64`.5IN ## $  ## $D4## 4"  A unary operation: `!x`, `*x`.5>C ## $  ## $L5## 5& # An unsafe block: `unsafe { ... }`.5BG ## $  ## $T5## 59 6 Tokens in expression position not interpreted by Syn.5UZ ## $  ## $\6## 6' $ A while loop: `while expr { ... }`.5CH ## $  ## $L7## 7% " A yield expression: `yield expr`.5AF ## $  ## $L7##  $  $$ $   $  $$ $   $  $$ $   $  $$ $   $  $$ $   $  $$ $   $  $$ $   $  $$ $   $  $$ $   $  $$ $   $  $$ $   $  $$ $   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %  %% %   %= H 6767 67 67% % %  0 "          8   0  >/ ϒ5ϒ5 (" ?'?L I *This type is available only if Syn is built with the `"full"` feature.*5hɵt%= ` %% ˂ٷФ              8   0  8  LP 8  %7 H 6767 67 67% % %   "          8   0  A. 55 (" B'BL 55 Oѡ%= ` %%5              8   0  8  LP 8  %7 H 6767 67 67% % %   "          8   0  D5 ҕ5ҕ5 (" E'EL 55 Oņꗪ%= ` %%5              8   0  8  LP 8  %7 H 6767 67 67% % %   "          8   0  G$ 55 (" H'HL 55 OծX%= ` %%5              8   0  8  LP 8  %7 H 6767 67 67% % %   "          8   0  J% ј5ј5 (" K'KL 55 Oփ%= ` %%5              8   0  8  LP 8  %7 H 6767 67 67% % %   " M) 55 (" M'NG 44 ON44vʿᣔ%%%%O,O%% O$P%%  lܼȹlPP%%P,P%%ڑ6 "          8   0  P ś5ś5 (" Q'QL 55 OǺ%= ` %%5              8   0  8  LP 8  %7 H 6767 67 67% % %   "          8   0  S55(" S'SL 55 OΛΞ:%= ` %%5              8   0  8  LP 8  %7 H 6767 67 67% % %   "          8   0  U> 55 (" |V55+VNVL 55 vȍ~%= ` %%5              8   0  8  LP 8  %7 H 6767 67 67% % %   " Y/ 55 (" Y'YG 44 OZ44v咡%%%%̷[,[%% [$[%%ڑ6[\[%%\%$\%%    ۱ 𓋌A÷ " \$ 55 (" ]']G 44 O]44vѕӬ%%%%^,^%% _$_%%ڑ6Ĥ_D_%%Ȋ__%%Ғ "          8   0  _) 55 (" `'`L 55 OٔѺ%= ` %%5              8   0  8  LP 8  %7 H 6767 67 67% % %   "          8   0  d) ߤ5ߤ5 (" d'dL 55 O֟%= ` %%5              8   0  8  LP 8  %7 H 6767 67 67% % %   " gD 55 (" g55+hNhL 55 v𾹮/%%%%i,i%% i$j%%ڑ6ĜjLj%%j4j%% "          8   0  j* 55 (" k'kL 55 Oˉ*%= ` %%5              8   0  8  LP 8  %7 H 6767 67 67% % %   "          8   0  n8 55 (" n'oH 55 Oo@ ѫ5ѫ5 wpppL 55 ׂᖘ%= ` %%5              8   0  8  LP 8  %7 H 6767 67 67% % %   "          8   0  rF ˭5˭5 (" s55+sNs? 55 vt9 55 ttL 55 ̷%= ` %%5              8   0  8  LP 8  %7 H 6767 67 67% % %   " w8 55 (" x'xG 44 Ox44vƃ=&&&&y,y&& y$z&&ڑ6z!lz&&z,z&&ڑ6 "          8   0  z' 55 (" {'{L 55 O&= ` &&5              8   0  8  LP 8  &7 H 6767 67 67& & &   " ~6 55 (" ~'~G 44 O44vƬͻܩ&&̘,&& d&& "          8   0  ' 55!("  (L 55!Qɺf&= ` &&5              8   0  8  LP 8  &7 H 6767 67 67& & &   "          8   0  ك6 ķ5ķ5!("  (L 55!QݦN&= ` &&5              8   0  8  LP 8  &7 H 6767 67 67& & &   "          8   0  B 55!(" ܆ (L 55!Q&= ` &&5              8   0  8  LP 8  &7 H 6767 67 67& & &   "          8   0  ͉1 55!("  (L 55!Q꿞&= ` &&5              8   0  8  LP 8  &7 H 6767 67 67& & &   " Ս* 55!("  (L 55!Qڵ&&&ʏ,Ώ&& \&&$&&ڑ6 " Đ? 55!(" ) ƾ5ƾ5!- Q6 55!z G 44!͒ 44 4&&&ԓ,ؓ&& ,&&د t$&& "          8   0  Ĕ> 55!("  (L 55!Q&= ` &&5              8   0  8  LP 8  &7 H 6767 67 67& & &   "          8   0  ٗ. 55!("  (L 55!QƩ&= ` &&5              8   0  8  LP 8  &7 H 6767 67 67& & &   "          8   0  G 55!(" ̛ (ԛL 55!Q҅&= ` &&5              8   0  8  LP 8  &7 H 6767 67 67& & &   "          8   0  6 55!("  (L 55!Qͳؔ˲&= ` &&5              8   0  8  LP 8  &7 H 6767 67 67& & &   "          8   0  8 55!("  (G 55!Q¢ 55 yޢ L 55!߲ל&= ` &&5              8   0  8  LP 8  &7 H 6767 67 67& & &   "          8   0   55 ("  (L 55!QːLjZ&= ` &&5              8   0  8  LP 8  &7 H 6767 67 67& & &   "          8   0  ݨ 55!("  (L 55!QƇϨ!&= ` &&5              8   0  8  LP 8  &7 H 6767 67 67& & &   "          8   0  ' 55!(" ׫ (߫L 55!Q΄w&= ` &&5              8   0  8  LP 8  &7 H 6767 67 67& & &   "          8   0  - 55!(" ɮ (ѮL 55!Q閍%&= ` &&5              8   0  8  LP 8  &7 H 6767 67 67& & &   " " 55!("  (G 44!Q 44 y&&&̐,&& d&&؜ɳ$ͳ&&ڑ6 "          8   0  & 55!("  (L 55!Q݀ᲃ"&= ` &&5              8   0  8  LP 8  &7 H 6767 67 67& & &   "          8   0  Ҷ' 55!("  (L 55!QʫԨ&= ` &&5              8   0  8  LP 8  &7 H 6767 67 67& & &   "          8   0  % 55!("  (L 55!Qόݍ&= ` &&5              8   0  8  LP 8  &7 H 6767 67 67& & &   " H E A struct or tuple struct field accessed in a struct literal or fieldæ7e(" | 55 , PP !yl ǾǾ <&&&&&&&&    A named field like `self.x`.7=B && &  && &,&& #  An unnamed field like `self.0`.7@E && &  && &,&& " / , The index of an unnamed tuple struct field.7L("  (P !Ql ǾǾ y&&t,&&t$&&L |Ÿa&!  &&z      0 p &&ڰ7 ڰ7: &ڰ7  02Ұ * | & 8 && &*  &&B  67       ݳ 67&0 & &0 !/ 8!  && &"$  &"L (" 67 67߹67  م7&X" & & (" @# & & & &&&&    م7 *+  &*A H* 6767 67 67&* & & * 0* /'  0(  &0 (0 67 67&0 & & 0 " J G Lifetimes and type parameters attached to a declaration of a function,7f("  enum, trait, etc.70<_P  lǾǾցñ&&&&D&& ʁʺ/4&&    ۱ 𓋌A÷D&& ʁʺ%d&& " L I A generic type parameter, lifetime, or const generic: `T: Into`,7h(" !  `'a: 'b`, `const LEN: usize`.7=IlP  lǾǾ44& Ӛ4Ӛ4 . ›4›4 `&&&&''&&&&'' 0 - A generic type parameter: `T: Into`.7LQ && &  && &L && . + A lifetime definition: `'a: 'b + 'c + 'd`.7JO && &  && &\ && 5 2 A const generic parameter: `const LENGTH: usize`.7QV && '  && 'T &&  '  '' '   '  '' '   '  '' '   '= H 6767 67 67' ' '  0 " 0 77 ("  ' G 44 O 44v׷:''''''̯,'' ,''"\''414''D'' ʁʺ߽<'' ʁʺÝ " . 77 (" 'G 44 O44v]'''','' D''"\''4+4''    ۱ 𓋌A " 5 77 (" 'G 44 O44vܨ'''''''̑,'' \''ď,''\''d''ÝD''7<'' ʁʺWV VW 8VVhVV '''WW(W67 67'X' '' XWV VW 8VVhVV ''҅'WW(W67 67҅҅'X' '' XWV VW 8VVhVV '''WW(W67 67'X' '' X " e0 - A set of bound lifetimes: `for<'a, 'b, 'c>`.7L(" e'eP  OlfǾǾvφڮķX''''ԷgLg''gDg''g1Lh''    ۱ 𓋌A÷hDh'' " o< 9 A trait or lifetime used as a bound on a type parameter.7X(" o'oP  OlpǾǾv ܮ4''''''''  '' '  '' 'Tq''  '' '  '' 'Dq''  '  '' '   '  '' '   '= H 6767 67 67' ' '  0 " q0 - A trait used as a bound on a type parameter.7L(" r'rP  OlrǾǾv ''''s%\t'' ʁʺt Dt''u%t) & The `for<'a>` in `for<'a> Foo<&'a T>`7EJLu''tuu, ) The `Foo<&'a T>` in `for<'a> Foo<&'a T>`7HM$u'' " vC @ A modifier on a trait bound, currently only used for the `?` in7_(" lv `?Sized`.7(4vWvP  lwǾǾ ۥȆ'''''''$x ''''  '' '  '' 'Lx'' " yD A A `where` clause in a definition: `where T: Deserialize<'de>, D:7`(" ly 'static`.7(4yWyP  lzǾǾ ȀѢ''{\{''{5T{''    ۱ 𓋌A÷ " |B ? A single predicate in a `where` clause: `T: Deserialize<'de>`.7^(" }'}P  Ol}ǾǾv}~44~~& Ӛ4Ӛ4 ~~. ›4›4  ހݠ"''''''''''މ'' G D A type predicate in a `where` clause: `for<'c> Foo<'c>: Trait<'c>`.7di  '' '  '' 'lՀ'' < 9 A lifetime predicate in a `where` clause: `'a: 'b + 'c`.7Y^  '' '  މ'' '''މ ف< 9 An equality predicate in a `where` clause (unsupported).7Y^  '' '  '' '\''  '  '' '   '  މ'' '   '  '' '   '= H 6767 67 67' ' '  0 " ʂG 77!("  (G 44!Q 44 y ьϟz''''%& # Any lifetimes from a `for` binding7CHL''ԅ  The type being bounded86;T''Ýԕ\''14 1 Trait and lifetime bounds (`Clone+Send+'static`)܁8QV4'' " ć< 77!("  (G 44!Qو 44 y މ⚑'''D''ԉ\''+4''7 " < 77!("  (G 44!Q 44 y ߣޝ|'''4''ÝD''߽ύ4Ӎ''Ý " : 7 A Rust literal such as a string or integer or boolean.8V(" '44Nq& Ӛ4Ӛ4 5 2 [syntax tree enum]: crate::Expr#syntax-tree-enumsʉ8Q ꨈ>''''''''''''''''''''''''''̓'''''' $ ! A UTF-8 string literal: `"foo"`.8@E  '' '  '' '4'' $ ! A byte string literal: `b"foo"`.ʍ8@E  '' '  '' 'T'' ܓ A byte literal: `b'f'`.86;  '' '  '' '<''   A character literal: `'a'`.8;@  '' '  '' '<'' & # An integer literal: `1` or `1u16`.8BG  '' '  ̓'' '4''̓ 4 1 A floating point literal: `1f64` or `1.0e10f64`.8PU / , Must be finite. May not be infinite or NaN.8KP  '' '  '' 'D'' ) & A boolean literal: `true` or `false`.֕8EJ  '' '  '' '< '' / , A raw token literal not interpreted by Syn.8KP  '' '  '' '< ''  (  (( (   (  (( (   (  (( (   (  (( (   (  ̓(( (   (  (( (   (  (( (   (= H 6767 67 67( ( (  0 " $ 88 (" ( $ ((  lܼȹ " $ ʍ8ʍ8 (" ᰪH( $ ((Р8 " ܋ 88(" g( $ ((Р8 "  88 (" ƅª§ͧ( $ ((Р8 " & 88 (" ܅̓—ѻj($((  lܼȹӑ " 4 88 (" '/ 88 O 㩕($((  lܼȹ " ) ֕8֕8 (" Ы((|,((t$((ޅ  8h ((67 67(( ( ̌1  8Hز  0p (0׌ޅ  8h ((67 67(( ( ̌1  8Hس  0p (0׌ޅ  8h ((67 67(( ( ̌1 ҁ 8Hش Ӂ 0p̆ (0׌ޅ  8h ((67 67(( ( ̌1  8Hص  0p (0׌ޅ  8h ̓((67 67̓̓(( ( ̌1  8Hض  0p̓ (0׌ޅ  8h ((67 67(( ( ̌1 ǂ 8Hط Ȃ 0p (0׌ " K ׂH The style of a string literal, either plain quoted or a raw string like8h(" Ґ ق `r##"data"##`.8.:  𫐿((((((( 4% ܂" An ordinary string like `"data"`.8BG R(( gi((  ͑$ ! A raw string like `r##"data"##`.8AF !; 8 The unsigned integer is the number of `#` symbols used.8X]  (( (   (( (,Β(( " . + A macro invocation: `println!("{}", mac)`.8J(" 'P  OlǾǾv ˺Ò{((((t$((̴T((˳L((4(( " V S A grouping token that surrounds a macro body: `m!(...)` or `m!{...}` or `m![...]`.8r(" 'P  OlǾǾv ꉷ*((((((((((((  (( (  (( (,((  (( (  (( (,((  (( (  (( (<(( " D74 Data structure sent to a `proc_macro_derive` macro.8R(" 'N K *This type is available only if Syn is built with the `"derive"` feature.*8j ͼ(((((2 / Attributes tagged on the whole struct or enum.8NS,(( % " Visibility of the struct or enum.8AF((  Name of the struct or enum.8;@,((1 . Generics required to complete the definition.8MRD((ցt#  Data within the struct or enum.8?D$((Д " : 7 The storage of a struct, enum or union data structure.8V(" 'N 88 OÌrŌ44nj& ɌӚ4Ӛ4 ˌ. ͌›4›4  ДƇҶ((((((((Д((Д((Д 2 Ќ/ A struct input to a `proc_macro_derive` macro.8NS  (( (  Д(( (T (( 1 ׌. An enum input to a `proc_macro_derive` macro.8MR  (( (  Д(( (D (( ; ތ8 An untagged union input to a `proc_macro_derive` macro.8W\  (( (  Д(( (L ((  Д(  Д(( (   Д(  Д(( (   Д(  Д(( ( " 2 88 ("  ' D A *This type is available only if Syn is built with the `"derive"`8`l ǾǾ Ѱﮥ\((( d (( 4 (( !T (( " 1 88 (" 'D Í88 OlōǾǾv բ̫(((T((\((,D(( " ; ڍ88 (" ܍'D ލ88 OlǾǾv Ζ((\((4(( " &Ȏ# A binary operator: `+`, `+=`, `&`.8A(" ;ʎ&CP̎MlΎǾǾt Βߝژ(((((((((((((((())))))))))))))))))))))))))))))))))))))))(((((((((((((((())  ))  ))  ))  ))ʾ  ))))))))))))))))))))))))))))))  ю The `+` operator (addition)8;@  (( (  (( (L(( " ֎ The `-` operator (subtraction)8>C  (( (  (( (L(( % ێ" The `*` operator (multiplication)8AF  (( (  (( (L((   The `/` operator (division)8;@  (( (  (( (L((  The `%` operator (modulus)89>  (( (  (( (L(( #  The `&&` operator (logical and)8?D  (( (  (( (T(( "  The `||` operator (logical or)8>C  (( (  (( (T(( "  The `^` operator (bitwise xor)8>C  (( (  (( (L(( "  The `&` operator (bitwise and)8>C  (( )  (( )L(( !  The `|` operator (bitwise or)8=B  (( )  (( )L(( "  The `<<` operator (shift left)8>C  (( )  (( )T(( #  The `>>` operator (shift right)8?D  (( )  (( )T((    The `==` operator (equality)8<A  (( )  ʾ(( )T((ʾ    The `<` operator (less than)8<A  (( )  (( )L (( - * The `<=` operator (less than or equal to)8IN  (( )  (( )T (( $ ! The `!=` operator (not equal to)8@E  (( )  (( )T (( 0 - The `>=` operator (greater than or equal to)8LQ  (( )  (( )T (( #  The `>` operator (greater than)9?D  (( )  (( )L ((  The `+=` operator905  (( )  (( )T ((  The `-=` operator˃905  (( )  (( )T ((Ă  The `*=` operator905 Ă (( )Ă Ă (( )T ((  The `/=` operator905  (( )  (( )T ((ԃ  The `%=` operator905 ԃ (( )ԃ ԃ (( )T (( ď The `^=` operator905  (( )  (( )T(( ɏ The `&=` operator905  (( )  (( )T(( Ώ The `|=` operator905  (( )  (( )T(( ӏ The `<<=` operator܌916  (( )  (( )\(( ؏ The `>>=` operator916  (( )  (( )\(( " $ ͐! A unary operator: `*`, `!`, `-`.9@(" ϐ'P ѐ OlӐǾǾv ؜֤C))))))))؜))˳؜))؜ & ֐# The `*` operator for dereferencingߑ9BG  )) )  ؜)) )L))̇ * ې' The `!` operator for logical inversion9FK ̇ )) )̇ ̇ ˳؜)) )L))˳ !  The `-` operator for negationՔ9=B  )) )  ؜)) )L)) " k4ő1 The possible types that a Rust value could have.9O(" Ǒ'P ɑ OlˑǾǾv͑ϑ44ё& ӑӚ4Ӛ4 Ց. ב›4›4 tّ Ý斒ܧ))))))))))))))))))))))))))))))))Ý))Ý))Ý))Ý))آÝ))Ý))Ý))Ý))Ý  ))Ý  ))Ý  ))Ý  ))Ý  ))Ý))Ý܈ & ۑ# A fixed size array type: `[T; n]`.9BG ܈ )) )܈ ܈ Ý)) )L)) . + A bare function type: `fn(usize) -> bool`.9JO  )) )  Ý)) )T)) 1 . A type contained within invisible delimiters.9MR  )) )  Ý)) )L)) G D An `impl Bound1 + Bound2 + Bound3` type where `Bound` is a trait or9ch| a lifetime.9*/  )) )  Ý)) )l)) C @ Indication that a type should be inferred by the compiler: `_`.9_d  )) )  آÝ)) )L))آċ !  A macro in the type position.9=B ċ )) )ċ ċ Ý)) )L))  The never type: `!`.Ʀ938  )) )  Ý)) )L ))Ԍ 6 3 A parenthesized type equivalent to the inner type.9RW Ԍ )) )Ԍ Ԍ Ý)) )L )) ? < A path like `std::slice::Iter`, optionally qualified with a9[` 8 5 self-type as in ` as SomeTrait>::Associated`.9TY  )) )  Ý)) )D )) / , A raw pointer type: `*const T` or `*mut T`.9KP  )) )  Ý)) )< )) - * A reference type: `&'a T` or `&'a mut T`.9IN  )) )  Ý)) )l )) * ' A dynamically sized slice type: `[T]`.9FK  )) )  Ý)) )L )) I F A trait object type `dyn Bound1 + Bound2 + Bound3` where `Bound` is a9ej  trait or a lifetime.938  )) )  Ý)) )|)) & # A tuple type: `(A, B, C, String)`.9BG  )) )  Ý)) )L))̐ 3 Ò0 Tokens in type position not interpreted by Syn.9OT ̐ )) )̐ ̐ Ý)) )\))  Ý)  Ý)) )   Ý)  Ý)) )   Ý)  Ý)) )   Ý)  Ý)) )   Ý)  آÝ)) )   Ý)  Ý)) )   Ý*  Ý** *   Ý*  Ý** *   Ý*  Ý** *   Ý*  Ý** *   Ý*   Ý** *    Ý*   Ý** *    Ý*   Ý** *    Ý*   Ý** *    Ý* = H  6767 67Ý 67*  * *  0 " & 99 ( " 'G 44 O44v ۾?****!l**$**Ғ ̶T**l** " . Ֆ99 ( " ז'G ٖ44 Oۖ44v 򹻏C********%L**$D** ʁʺ**ةĎD**Ӗ\**,4**    ۱ 𓋌A÷D** ʁʺ4** " 1 99 ( " 'G 44 O44v ס** \ **!$!**Ғ " !G 99 ( " |"99+"N"G 44 v#44 򃐦**$T$**$14$** " %C 99 ( " %'%G 44 O&44v آ͐ *''**ˇ " '! —99 ( " (ė'(G Ɨ44 O(ȗ44v 繺L*t))** " Ē*ΗƦ9Ʀ9( " *З'*G җ44 O+ԗ44v o*̋,T,**˳ " ,6 ܗ99 ( " ,ޗ'-G 44 O-44v =**.\.**.$/**Ғ " /? 99 ( " /8 99 ,0O0G 44 w144 ̳**ċ2,2**د t2$2** " 2/ 99 ( " 3'3G 44 O344v ****4T4**5&\5** ʁʺď5#T5** ʁʺ5$5**Ғ " 6- 99 ( " 6'6G 44 O744v Ή͘x****Ĩ8L8**8D8** ʁʺ8#T8**99$9**Ғ " 9* 99 ( " 9Ø':G Ř44 O:ǘ44v Ŝ**;!l;**<$<**Ғ " bool`.9c( " F'FP  OlGǾǾv ˶***̄H,H** H$$H** ʁʺdHH**Ý " H0 - The variadic argument of a foreign function.9L( " I'\I ```rust9&UI # struct c_char;9/I # struct c_int;9.,I  J extern "C" {9+J7 4 fn printf(format: *const c_char, ...) -> c_int;9SJ, ™) // ^^^9H,Kę  C  ** *  Ғ ** *TQ**LQ**Ғ " DPM A path at which a named item is exported (e.g. `std::collections::HashMap`).9k( " 'P  OlǾǾv 谫أ**%l** 1D** " I F A segment of a path together with any path arguments on that segment.9e( " 'P  OlǾǾv ۫|**,**L** " A > Angle bracketed or parenthesized arguments of a path segment.9]( "  ' P  Ol ǾǾv   ## Angle bracketed91  / , The `<'a, T>` in `std::slice::iter<'a, T>`.9K  ß ## Parenthesized:/ ş ) ǟ& The `(A, B) -> C` in `Fn(A, B) -> C`.:E ***********Ȯ$ **** / ̟99 %  ** *  ** *** ) ӟ:: %  ** *  Ȯ** ***Ȯ " B ڟ? An individual generic argument, like `'a`, `T`, or `Item = T`.:^( " ܟ'P ޟ OlǾǾv **************Ý****** č A lifetime argument.:38  ** *  ** *D**  A type argument.:/4  ** *  Ý** *$**ÝȔ 2 / A const expression. Must be inside of a block.:NS D A NOTE: Identity expressions are represented as Type arguments, as:`e- * they are indistinguishable syntactically.:IN Ȕ ** *Ȕ Ȕ ** *$** F C A binding (equality constraint) on an associated type: the `Item =:bg!  u8` in `Iterator`.:=B  ** *  ** *<**ؕ 8 5 An associated type bound: `Iterator`.ɐ:TY ؕ ** *ؕ ؕ ** *T** " L I Angle bracketed arguments of a path segment: the `` in `HashMap`.:#/RP  zlǾǾ Ϳ****$d** D**0$**    ۱ 𓋌A÷D** " G D A binding (equality constraint) on an associated type: `Item = u8`.:c( "  ' P  Ol!ǾǾv 9***","**"D"**߽d""**Ý " "8 Ǡɐ:ɐ: ( " #ɠ'#P ˠ Ol$͠ǾǾv *++%,%**ԫ%\%**%14%** " &J G Arguments of a function path segment: the `(A, B) -> C` in `Fn(A,B) ->:f( " <& C`.:".&Q'P  yl'ǾǾ ȮϦ+++(\(++)'d) `(A, B)`:',4)++9)<) `C`:"'4)++ " *A > The explicit Self type in a qualified path: the `T` in `::fmt`.:.:*]*K H The actual path, including the trait and the associated item, is storedŠ:g+K H separately. The `position` field represents the index of the associated:g,' $ item qualified with this Self type.:C,\,  ,+ ( as a::b::Trait>::AssociatedItem:G- ^~~~~~ ~~~~~~~~~~~~~~^:9ܵ- ty position = 3Τ:6-- >::AssociatedItem:7|- ^~~~~~ ^:*Ԓ. ty position = 0:5<.  ..P  l/ǾǾ +++++0D0++00++Ғ 0D0++0 D0++ ʁʺȊ1D1++L    < ll < $,  ++ ++ ѡ ++ ++ ++ 5++ 6++ 7++ 8++++ ++ ++++ #++Ϣ "++ ++ #++ #++ #++ #++͙++++ #++ԣ #++ #++ #++ #++ #++ #++Ƥ #++٤ #++++ #++ %++ %++ %++ %++˥ %++ޥ %++ %++ %++ %++ %++ %++Ц %++ %++ %++ %++ %++ %++§ &++է &++ &++ &++ &++ &++ &++Ǩ &++ڨ &++ &++ &++ &++ &++ &++̩ &++ߩ &++ &++ &++ &++р &++ &++Ѫ &++ &++ &++++ '++ '++ &++ë &++ނ֫ '++ '++؈ '++ '++ׅ '++ '++Ȭ '++۬ '++ӆ '++ '++ ++ ++ ++++ͭ ++ͭ ++ӆ++ '++ ++ (++ ++ (++ (++ݮ (++ݮ (++ (++ (++ (++ (++Ռɯ (++Ռɯ (++ (++ (++ (++Ϛ++ (++ (++++ʰ (++ݰ (++ (++ (++ (++++Β (++ؗ )++ ++Cͱ *++  *++  *++  )++  *++  *++  *++ Ҳ *++  *++  *++  *++ Ÿ *++  *++ ij *++ ˠ׳ *++  *++  *++ ߡ *++ Ӣ *++  ++ *++ ͥɴ *++ ܴ *++  *++  +++  *++  *++  *++ ͵ +++ ۥ ++Л ++ ++Ͱ ++++ ++ ++؜++ ++++=++++ǝ++ ++ ++ ++Ƕ ++ض ++֞++ ++ ++ ++ ++ ++÷ ++Է ++ ++++Ġ++ ڠ++++++++++͡++ ++ ++ ++ ++ ++ "++Ұ ,++,       < D  <  41 +,67 67+ + +$-Ԥ      < D  <  41 +,67 67+ + +$         <  D   <   4  1          <  D   <   4  1 + , 67 67+ + +$ ı         <  D   <   4  1 + , 67 67+ + +$ ĥ      < D  <  41 +,67 67+ + +$      < D  <  41       < D  <  41 +,67 67+ + +$      < D  <  41 +,67 67+ + +$      < D  <  41 φ+,67 67φφ+ + +$̌˦      < D  <  41 +,67 67+ + +$̄!        <  D   <   4  1 +!,!67 67+ !+ +$!#" " # <" "D"" Д+#,#67 67ДД+ #+ +$#&% % % <% %D%Ծ% +&,&67 67+ &+ +$&(( ( ( <( (D(' +(,(67 67+ (+ +$(ĕ+* * * <* *D** ++,+67 67+ ++ +$+ԣ-,Ũ , , <, ,D,, +-,-67 67+ -+ +$-0/ / / / / /   =  ;$=  =  ,=  > > >  > >  >  >  > >  >  ;$>  >  ,>  >  > >  > >  >  >  > >  >  ;$>  >  ,>  >  > >  > >  >  >  > >  >  ;$>  >  ,>  > > >  > >  >  >  ? ?  ?  ;$?  ?  ,?  ? ? ?  ? ?  ?  ?  ? ?  ?  ;$?  ?  ,?  ?  ? ?  ? ?  ?  ?  ? ?  ?  ;$?  ?  ,?  ? ? ?  ? ?  ?  ?  ? ?  ?  ;$?  ?  ,?  ? ? @  @ @  @  @  @ @  @  ;$@  @  ,@  @  @ @  @ @  @  @  @ @  @  ;$@  @  ,@  @ @ @  @ @  @  @  @ @  @  ;$@  @  ,@  @ @ @  @ @  @  @  @ A  @  ;$@  @  ,A  A A A  A A  A  A  A A  A  ;$A  A  ,A  A A A  A A  A  A  A A  A  ;$A  A  ,A  A  A A  A A  A  A  A A  A  ;$A  A  ,A  A  A A  A A  A  A  B B  B  ;$B  B  ,B  B B B  B B  B  B  B B  B  ;$B  B  ,B  B B B  B B  B  B  B B  # parse_quote!"Block::parse_within< Punctuated<< <<<< crate::parse< <quote!<<crate::parse::Parse<<l<<<<ll< <<< crate::parse::Parser Parser trait< parse module<<<<<<<syntax tree enum<<#'quote::ToTokensN crate::parse::ParseBuffer::parsePrintingParsing crate::parse::ParseBufferPeeking<crate::parse::ParseBuffer::peek<<<< < <proc_macro2::Span<<<<<<<<< <<<ParseStream::fork+https://github.com/rust-lang/rfcs/pull/2544RFC2544crate::PathSegment*<<<ParseBuffer::fork<<<<<<<0 crate::parse_macro_inputError::to_compile_errorparse_macro_input!<Error::into_compile_errorstd::compile_error crate::parse::ParseBuffer::errorcompile_error!<ParseStream::error<.to_compile_error()<.into_compile_error()< <<<<< << <<<<<<<<<<<<<< <#<<#$Punctuated::parse_separated_nonempty<ִPunctuated::pushmodule documentation<Punctuated::parse_terminated<<<ִ<< < ִ<<<rdiscouraged::SpeculativeAttribute::parse_outer<crate::buffer::Cursor crate::parse_quoteParseBuffer::step crate::parse2 the synParseStream::step< crate::buffersyn::parse_strthe syn::parse* functions<<<parse::discouraged<< Resultcrate::punctuatedparse::discouraged::Speculativecrate::parse_str <crate::Attributecrate::Attribute::parse_outer<<<<<<<<< <<<<<<<<<<<<<=<<<<<< < <<<<<<"=<<<<<<< <<<<<<< << ParseStream::lookahead1<=ParseStream::peek<<<<===<<%crate::parse::ParseBuffer::lookahead1օ=օ=<9ParseStream::parse< parse_meta()ParseStream::callparse::ParseBuffer"parse::ParseBuffer::call parse::ParseAttribute::parse_inner<<=#dž==Attribute::parse_args=<parse::ParseBuffer::parsedž= parse_args()Attribute::parse_meta==<͈=݆==#= =͈=݆=ވ===<==ވ===K=^crate::ItemStaticcrate::parenthesized5>==>->>==>->>==>->>==>->>==>-Y>>==>-YNNa>>==>-NNN=>>==>-N Yh>>==>-=Ɔ Y >>==>->>==>-YNNa>>==>-Na>>==>->>==>-Q cx 2\kyALӘ}!貺)^rMv#aQ=g 7] aYNa7Sn#70O֊>0%\Y@j6q@h2kYqԷjh,iAq={']it^0v R$S.?83gK#| [--X .ޟ<,0Ԋ(]u5f2; U0I3[` * э yه^WWq#:];{ 9iG$rQ=d)ۣ[_>wTkuy=hTraz<b[5[5baZls_RXUZ)xFFz\ (z7Q`GiTNxq4~35(wH= :}-l!~{9q(w Z^d\peWKs"P;0Ų|RBQv)RktC˳qdWsQt`҈hD(e.t'l..;5T(& bk;  xF㨼:Qc+?tx"F/d C@t Z א1mNox֢IaЈP֎RyVW L, UC :|/>u{ ebYӘciIUo Cg朎zb 1c `vxX]gZ@_OG ~():.Q\ {eX%0R 8i0rX0j4ɷ D 4sI(P|~;jn:×0CDvo;~KY4&H/!sWy㭧\+L^UH/X[CzA_Uj2@BSsAH~3X4ѨWU*P,䀊yފAJRM*jn6{[1Ω+ oZ̔S̪ ɖoGlrvt1mO%[Y13Ryp3jdYxc;*4)ifX2?%D~ĂtKK"ٷ]t~2GO0_lߣi&GZlq٣3-\0%tdT$Qm S hy[gn2{&쀩ё0VvVLRqhgSG%UO{袟)nÉvb#{u1VT[|-Բk+D֘9^{4W6BBa03ZO>ZHZH 8*}jٕu$j992?]G͟ե.Wb)(9!xQ Qs(Źib8GBz~Fu UIoN<=jV}.!UnONԭ@ƯjC=Beo!;(15+܎@&-]aݸDۑ#jh5aV B\zI>GVuzTAST%b/axDx+ 1ͱ}t=KeaUD3>'+UidR@<9r%wZv`OH.zٺR2ݢJ ly'^k Y=ey4 nIvt\M"< ٺҟfudq@6(ZAnUNS%CgTv-Xs)fo:"FYO QJ^S#gz0gW2-ww{O-פ3)f#Tf[ 8/xo ˇltǣNBy-XznH~Nӊ>m9 ݇9ꋯ,F4 tX'v("EeiB[z#ʰ%$qQz)T0Z?^(38a`=ئрLjBHR|pPiӥ9#ʉKk9's$T'{x_˚력cKa\Hb10זf\ +& u4B"LrV 3tftGmJ7}C}0cϯMd$; N\" ۷NoXpv2I;D=XbwZl)UJ/!(òIp!'IFʹ^V6JDH%> ^ޥՓSy:|qaFryR+G~1IH p7Ym\!U;ϸ WOUtqOh1Qi "ݣ21L:c vT|Eu})s̽X vrL2 +[Kb"4di? 1_;ԪDr# Z7q(A0) ,kz觖Q⸞f$ejK Uc2UPGE?L֮uQSrv܂nB=dh^Fhw`q&$sJ\+WJ1}J$:b6W^#1͜"3RO~厘uW$~ HG\髓FZԽ2_iqB\!8Z\1*sX) VԎ.5C^Xۚ$1:;(e\1g^B o$V %}sc,jsjfqLpnNH:sNV#ѻXMɲ10V w23 ai6x6]ʇ#ZQEu\k6L_,֮bb V Xcm`F& e I+N#s{E.ҕnնy'n\.S9xY_ i$;{#!t]3-kYgx<̠C WA,Pukn7 &mC&&7 cI]Q/z1 !vZmh2o)pE2 ˪irq1)nar;PW1 :Rk yg7T[,()[˱lZ SH+E"Xpx="<Ηk܈9e;="Q?fl<d"f#!E >]YkjK /H(; i@e#qSʯa:Y. 8~m%#ˢU|lSywIG &',Jisxͳ_cAs@JAV]-eJ0^s#=1{AFZlM=_h嫖bi) 1* ΄n"mVKy@" 4=//7n J~(1}D)jR M|=g2[<5f Xd,0MQk]gx ؤ;G20%$U2EkD&u4Y#H'7{Fv;91*盎<=԰kjlxFpFn٘*Uq}Q$Y&'.gQ}Tk:\I# .nj uvtI)ĦeL ?ic%@e7729A`O9[Ͳ #m=ye0N2,+R= & 9=zAuȌ5{Gī],(饬Q%^[> .a+(jaP>= mĬn5d琮Mz(`ɾ kę{LtVQ1 A@!E8nG8 qd L>Mz8fOGYU!62Od3`O࿘BIRXΫr}/j_Yb _#0Wa&;ƻ?'~,My*EGdcް1K5;Ԫo@1 /Bh)Ŕ*Ť7RMׅ<Ƒ=i800PG1h&Ԏ2ZOAA Tj0B (5ͱeHr#B.NC%cDʀjfyMJgFM"!FX4ùԨͅ,ggQT,Ǣ()iݦ!Q4qoEܛ&>$YJHt#OBYvޛU{#׃&h; X=j',Ю4,`i: 9S | s5 59wu2;7M[O,p[f!+NGW,(ę'6~{u  Ŭn›"'۟<{*$tygAzern^%$BG5V5)'(~~/:1lR+wܐ˶c#HݡkKsG+v!vYzR.JkV[SQnvR|p_n=\|Vs)e'Np=o1`F2N¯w'?*!dȕWSpBΡ^kƃٰ/Rd̝Fˠ_ CE8[/%f6-][qYz莦06S:#Ox\䥴v!a$K:$Ȧ *EYq+*#:sj=.?"*9"a 2zXG' rG̘Ĥ1w+ =gZ&aa wAhb#U>4=tmUQX4@\fƕbIOm‚vf.*L.>X+j1q*%)5sܺ:#Əژ]2:cIL%20ʧ4>5byQ]+^߃q! S(]&* Uv`1Bb5%!TI%zr5, PZIItOONПM6x_gtt t\*+N;Wrtn:)%mr'qY7%*P+( DzRn*D=8ji|44[Q>ʅ/8yj 5n/ޜA{ %bz톌ɢPRH e me6ئ9#[# }nMk)hHt%U6 GƜ2C+Ok[;vTqpel|%e#6ߘx~g<e[~5g);0A$UekJ\N/f^Uij2K$>xn*]A=;PmȠ]u-K+\+(EAWh*qC5 5&֖ʥaܟ4l=PfNWYsR縊ύ=s.CuIB%{3ukO(8怿jX+fjv+M'a;R7l|;6Q~l| qy)an< J[v{M P?!c_혰1QH`Wy-2orz!wlVE?4^ #yi0md] _ GԬWEZ6YؓGUy"aׇ#2e 5N0Of?%X2m;%X]@6ayO1rp2C#sʤ]!67^W5T7qAxssǼu!s\G6G4Щo<:6U(̉foiw2qCp VlJ{]v4UyMP$jSeog m`uEH,C-y(CH16=1np :\"$$xϔ_ޙSXPLcEq̶LoT̼L]jN,~{1&/b# W׺OO Ls0+MZQ&緔}Z]FşᐥY4 C^$ȟ H{xЭb_ۣ͓xC6̓V) ڙfEmsw׎/_rt-fU?*t\/̾t(F4giVO;B1C2v}(rLw2AX}7预ҹ(ھf%i %bΔS0kjar2f.w[WȆl`'@?Bk= pgы UtEY!(U~KƚɶaӏΚZ6\CxZo<}k"ZX!㩇`6tRⒼlx3Wr(;ֹ}fSj揪c)(lDn6x:n~byР#BN4if+GQe8;suw;L_@6t핧mݺB]Dv8{ m0 >!LR 5:IRj#pPF0u`L;$E0Cљ2?tc+}ɵ Fe>얷 i'UM BZ2"A (b `rE@د Qkoj>tԭ8Iu8a<&ӁlC~EFﲭQuZT%(?ȝR,Hd*XKU&dL<"NSd=u56qOz-YAIɕ;lwQ)g> @.%liqKp;n̺!^F j^iFEvTf (H!X 51TW *+W] nK߯cLPyR]z 9L%{n]hMgsI,Eڴh n>wL='*/s2/Cc&>hSbXkHKvÊT$-&]~s3 ;S*ۦ3UdQH*l:JmG0LjJǮDË<4TuH.5!حWnd5pz&Vj.s|CM  gk%/=[tՁ(gš"( 99JwHOco?2miYbV4)JbuQ_r1榠.H X&Y (r3Nd"OjrtOoEb%:`1cn^_a HfHĚ5rr7G=Qzyϝ +͍D;%- VX62RrJ_l|y@('My7Xd0>]0V1q5obk;;џzsF=]~f7C4u:vJEW1J()d6Aϭ\O!hp2qoA=cO4gPM`|ޮ%}W7FR'"~E %<7w BE̕nLRȟCIJ}K[Y! ??Ji>e$]4?2""'xvBV: /Llc5NgK(.CmnlO4_lmPBu U1!>z&77>nYQ;ɿ}#4^=b>@>vLN3=#^җt97Ӿ^sSjn#W<28X`@,Q5} n6V_™ZۙMVߦmh {'_))=[`i4`iٴd 3c3z|_"_ ܁W4o2NXPw] hfRz!LtO= fF^I\`0 -Ma-BHJ7NN I߳NfW$7aG0~=Ғ3!8Q`^Yf]>7W",u W\)6/Ќ$uA4gMR.ėis#5z~FxVD͎" }ŭ71D'8](MC%J߱;h!?BU *aK>,2=vVT+)U WGJ4Oy”#2OXb< UyT5U޹Aƞ ;")P_5&8܏i }]]UuROgΚ2+Hudu J pt2s1(|#ƚ13mE*/0&&]ߟWMT_!">mFPm̓IT9at!юf۞69p*F杼$3Ľq1K,;ȇ1HPW.S{wo{cΙjޗ ^\3qD%UP-"+zRɮ`Pla:j.bF=T=TDQHbb4'W H orR}I:O\ĺ}7p)7mG6R ZWqVBwUԚƣU{#oiyzKSړ C'p@6ܤW1`3+L8% , ـ N_tV#]28J  ĺ98kpB=VpSp ;o\LUL)SoL keyu[[a|DXZRE(ΐ$a\MWfmtA&8/w,L1d$༸Rݐ˹{䑡?rAk=I^RQvm5RݏYAg-`qQ<,͌E :3%!~h#0f-LlZ#vb>fH̥T_.C\~#hqkIa[$O8q P! &wzG|4Ѱhp@綀A$NNb\ F^|qr, VuR/_&@O21@OU.f;y$a%&\2.hj<+GK̬A/ Ts$%:ga^S,wZQbw,K#pH~a܆@7Csaf ~hT] ۅg¿ơ|yiy8C]o8 ( $2ù;E(F5b{S8\{VUKEĘ8٭{6PQR%܅uڝ@OEE}'nmo&f 0V5T\d/DڐP4! i?ľ "IS矔m:.`<;3sЈFKB`~kAdyg[V58ѳ sH H@#K΅u1kF-"W-eteAT"diw +3|ۨ%>A G9y2i[9m&_ й\,Xt&ͩ2Xӊ PE2ig0)@3BG4 y7t$[LfZeqa31u6)GU˶u&uQQ'!Z6&xkq PmuyֹDYY,NL koJ` $A+$G7 XZpA45Q)bf҉Tc=QW4 9jqrx!'opڑE 4gڂźbN>BN`Lf7}vU&-"Gmog:h/XWEZA@DXBK%ʚ`}X=Pqd|╨P?NWXI2!4r. ,YPTsӂL?S )q^-?aao޸uy M}f; $pikӊX\B D?CLgok|Z=>#>賍_ѢD>oed86)@iL?9-r."9rWֻ3)WPn LpMFRtѹB絩jwˈP,ȕ{s'{is#h,'qWN8ڿʉeKICW)՝]@ʟf(;M>:Qh4X)A*`ƍ"3g$J˯/\fI1C7ɀVoBc{6If0$/&hT9U`0Y.؀V(7ȶ6 8?/F^_%KWT{*bosģl{v(V#GWAo4Qh}hיqPw%L,=q1ܗZNr@^_S"dUa6 ӡNW CÐk_`WMtg2y1r= 7%;`M)hrSvE~u.hr|Xe%~'yhL$U_gt\ñX z6񂏱S=v, /kWZpe9u@}o&T?>#?L&M=n2HB:sNwLx_mȳJ: s<삜Cr9)WӘY^}y$dY&yiD4-#ZsgO%75N-kSn,JN-X l9+PͥnUY10Cɿ,dVF8=őVLZESt#h r9M j4G Jj5ؾsA؞G$!e&\P!XZlvgh[;LMޅ30,$8C:%%48ߝ닣I%jJ2b9I4jIs" e !WQ0l^1$cG {GǃgA]\+\}v&w; rʀs7f&Z¹kݼԪMzIkzS:| ,Ku=b:ЫvDmg]or>FPYִ$˞ѧ ̨{NHgE<0~G4}$N/sL2|S]?(%[Ε «B5I|Cɬ>v@1O3%ݴ2ǟ#u%=8tװKy7p$ٰ 4ibJܪv}Jf`gђL,'.`_u-Mdk'+?BNwx-wugm;7{y6wGԑZ`Wv[\CX@ s]mQ.\Źy^&1 &5=e˓u9ڃ8 ?͓ěItta oQcL:sc@,?41Nд7AԦX#E^w}eEJ#A*?|BX=/斶ly @D%吥!V17obn,G'GGKЈLCǺRvmfsׂ΅ėR\9C{k0/!$8_ :}; ~S]ah 8rZ~}l魃_`{KB fO^DL֘fsT}h0nZ%z%F HlQ3蓪3kKa{ت*o"Cbo w(tSɺ˜KIX2EG$j'Vi׼Cf2W]qbB0ڄuƂg`va7@>Nrg6wy˩D8=/ qsaܯ[(?E25h^˻|e2ɕ`9(ps#L:+cU,"E8a[o`oBtocѱ~gWwD2~g@ϏB_IA,>UGBrS}]aceh>]Vpu495is@K#13%&IYajrx-7WWz(Lz$OAR1aD{ֹ?3?{fӽ*~?1QrkW=> E XԮ.C*Q%u%heIhD.V+gy xjŝRjrUJ[B/4̢l{TMɯhJ=j@x ZÅ=}/ xca|Q#Z0.UxQXaG~ W5ljnbPC8[x-u`0oF9]YX%$)E}>8sbq0f0؏CQQ35>3_TY&쏔!M"vB}3>_&I}M.њ 3Pj}ش"6Y2q5טQc/_z*QEqf5SmF\ qؚ>T6 ;b>&ti"F̭K~1='?{y63j@iɯCCiuvn#U.{Ew'}Ym,7w]܉>%d| Ggs{L.L'喙X?g\G}8Sp9Q_A5$%C? vQ ^j N|:"|?Tlm[+ت_`6h ڄS}tTU%8yԽ׆zcAaFK&NJVQw_#ְP`Jixoniɣ BB"̙6ܔސ U9BHC`3dr>l!Y\oZ43PN{$ 5S*Qg]}X>Uٰ!f5.9lW;U]ߔt#oycp1;0i9w/&TO@aDu-6^Df7^{ |S*oQ_Gj Jn}ۉ!շ+ӕ2khVcq9YnJ!s-'[XbQNAMHjsBdRGӹ!&'WAC)7)럾&Ŧ PsI qGlqoZoy93[lx5lp;03&(-F,Rm<) =``^ T,V|ayRC919@:rNwg>Y"r-D.\ЀU.[5>R1m00JDTKW1RjoUW~g2}+Sۘ4A<1"F H|>A ܙBd=Rm|V=6" ǜs1$ą  6kbcA.!UDկL:Y'"]M!|~-i8fpVzZd2>!.JI#F`?쑷40qr+ tJ]{_\ A/7$wr[ ~^a:Bb9ŔRD@ROcF=݉}|j(5٨{t^{Apcߓ?sUΏE㘠k%ON&X?YjmpH4ju=פGҮOFJJ,Xk,>pt1 l[meBގݻQR7"LOj t(B,dZ"%4 5SX6m<Y.j.M&I[744Ha6L4a LbyUsJnT2?\Nh:|7ia4RtK60t]Kp@q2ihnYw07(m!jbuLZ5-0³ƥ˜;YP8쥻1(tmq"vFbĖe86|)"͖iCW"H:@T$/5=6.Uȡk=iC1}AJ4 X2]؅zS9cr|޴WnjbWaNs W~!! \˦ݗ#O+V1%g_X#+&^ HdkL@1uڥVG>ЬzZ]\33b%A0TĈyTHo+|"*\P#COz (1*GuLdľ^-aR)vZzJtTSɬj(v$Z=Gߺp% 0f^?_(Z# @Xa:R`v蹁u(T^w,_+ ܹrs{ѓ؜[ |eqTC6ؑH)ZCcu@ {`fS T|}ru2v0 hCH~ݒ $\a{M0amBDTͦ'F`Χ2qtD?]~X_,y4l(V%POP64'R#Pq]- Rj';8ATtPQR;$ͼ'Y$R8?+kwR$1t<\6r j5 簄L >×kJpr]?Q~QsԸ)@d0κF9l֔sb:/792 ؝C9 ̐y_)ht (ôbkwstϮ#Cl!z6%sKyz/\rNj1z]^d^wyppt\s{PuB%HD z lo(@BEۏ e.^ZljBTM4LoY&o|__G)̎hyMmM\Hu(䬉rm?; {6׵۠bkoO_ˀݴaK ={̙|ʺg(ӿd4^^;LtTUSՆ/HuNAiX豺b =9 VP9yNաFZk WB+LGI}>$1>Je3>G{3Ƀ&BGV@ZAo$6Ĺ$>Ee_65KFO,?R%k#C|v?F"$L6eYGUDd 2#:'# 1D,-!VBT'h<;cn}ÜzLxcEW)=m-]-<2S*Èfzc~(LH_IN0@gD%Ը* 7̦2{S@xq|'L7H{e{,-5vQ;5RhpPmQrl~lzs?L)v誀͕R"2I0K  }Hs7n AKCqrGQiJ̇# 5Ƕ\Svl$Ö}ȡh'B/U!NrE? 8bIF!25o {T_ޟveGw(Gy(xB Oq_6ƫa9ȴ$/b!éAuur¡ %24M Њ(ǽ pni3Hl70+e pE+}@ J^#C_bPƶ ~^UM;ײk[F4ERhs_0Ar/s(ID4@`Aښ\%Rrqʍ5<>tqD@dZ?=C6OmG/\PKE[\O7N,PQΙpӟfSQBAְ5 +H;3aC s{f5ԓtJ}zkդ/,aS<Ry//j֟8{Ћ)&f+Kdd=AQ!БF֋VcMAX0u?"ZXw\HfCqb]yѝ/%hC4CzW&R.eB-,ؙ?I2wS;X:clEk-^@CכOC~yzSwiÑL1 G1jU6"U7Crq}d "s KJ=tMc6=Tײ2MOr_w v Kx>nXƠ2c1CMvx$ r0#"i/L+jtTΎ˚V $zY-o)Vh fJ1hm8Ki$r sOt1z'Ht`z=s78 P -ؼ6َ847ǜ >v] 6"ANRĭx"O/,@!ζ7G?In0L3ϩ~Қ5)(lp[z9y&{_Vv`~ ڟtiGΟڸ_>HZ7k# na@J|&a/Rl&"jdCNE;Ҟ9 TY7gn[V ?ź+p(93Ux c cnigq MQWk":]j$~(@J7ꐵY"f(hvOFi?'"ݦ/4VUбС#$J/`S+"/rg_ L %zPr I;  *|ӷE*]")8ڈXჃm!lFX~32B븤s?`]hwIv^RE&TuOQqkJlǒS~mXdeSz,]1O wa~/\BMjN~C1\fdzc6(뷚7į;E nͩ92%+sԂy2xPvUnL8cVz^oODuUUsl /aO)KuRx]:0^*5wRL#(n,oOc8jb o^K[⧢('w꥟,Ja9%pzM !yu̚ZgFHǶ#@uR` :~ޅ܀+r䏢H&hR #x%d-F񡓩2bڸ MbZIfNCi+8"bep[pxMMƤW giͩ%Fk,/dlUI :WZ[I稐΂x Юz C&Dq֏~Ovoj0/8 v@puAȟy#B&OzH *&W qibr ZP֔mዓHhe~k}2ޛ 7D)DʊS6),VAչb]McZ)jǘƅ1e M]`!A*4c(@T3V̅=X]oߎƆI{ݩ OIb!pzе9"O<|ffUdr] CU/__<s3^v&,/N]U>G6q_7j9~ ]A*`?:O$Si yYiwOJNWX[6kkD{ٗ;k$uJϗ?R0l[X!rE%`'๩ۺ)3^ޚZR5lgBH(VwЀʽ20x@4`~=p )O1[GarM )@[.չb 7x ɮD!eD%ݯCyEJ 09E"p8 K.@iDKlo>'*[1a1촶qou|IFZ5p0Wv/cZn Lv;kϖKTG.;a^(J@ɼJ ˶SYJ;4p(81m>jHx~P$w!XxXUq{U^eMljOsxล pÝUKډg1A`E I&tOo}PҚL9 PdR Q_Ͳz$7($|J 2ZR5#o<cݘW7HJfo-)=߱_RG-(@OBUf-Q&=R4 W+v?@:d8h/8Ѣc,Xc#-J3@f@Ej Ε*=QJ䳍Yf4s9c:hsm42ZA :^CRQg)ϼԤu_93e,a.#/mOzJ0S>]Aᆇ_rqOT= /X@&K}bO#f 7/V9Q-+֣AErvc%l_I>Ħ' 28ı;R|y}*&9" NO ?B¿-M↳ +(Y ? n,oKF1idVϢӊ9~uA>8d\$ȁwqiˤ2g }ɡ^ťN׫y/7<+Yq4;kZ0x7~ xBs~R$D\O:䙦 ;"]鴫z P;BQ*~bJEQ=*zmk{G.iZbbz 5 5;Jtj>[o$yxNii(]Kӝʶ[Qʼn/c\ऋ/TtѦVEblLB_S \Jy SɉbvkVGDM |~CN0*x~1'הMN _o}jzҐZ|>Ѧ×)0> }PKN*^'uX 4X}ٳ18YaK(Bo?{gȯϥ/!w/G2=F:V~4>0lZ9&Gי](cM`LE:2PB=YMI&߸Yz}dJv>7>tofa }5'-r쳛F<"pb{G(OUҦ>X!5IS1ALJ]L45 #GO.ꄱ‚_vB`LO- X*mJU1\}Pط[1$7]s&/T FH2wCK(E~[[@k۵c-q ׫[ *F 59I=te~Am..km#NP213|, N4J|q"9z]:;%֗JogЙ4t'\X˘%MŠ?A n6jζ@ $qRy4,d- : cQb DB@p[!$[3At'`hG6UnÑckOLP3af<>?A!|9|!l ^v_F0W'6026sιօSzwXQ:qƿ8C5^_J>Q~@ۼ]XKLmd:7XA5؎!bf86*Wo#qXuWIkv%J #p/t@Pk(H D%[g3B qFY4 [Ԑpvok;(̎z5wNdo%Z'ˋCVe=`Vs⿯bũ}aٽiEh%dd>\VF*)]K +4\z^ڒ:R7kTf#Hw~.PXBfc!u .ʯS 'sy. 5',PksB>i<θ r57msCWaFlDxSDW7+Fl3E Ӎ$-P)e53]ȼlR9hXfBe,J^= 5]` 9̒ͤ.;nUzEhSPUU!7>F|4¦)͙$O rI#{ pAdo~ M"P/9I3brhGʢQĢ98-$FLCL0FWKيݒINEx&gbC (AS3\ŷ) 6dO|<ݎ,5é *'wZ&5Ibmȯ7yoS:q"Yin.aCe/9HQa*E`]zgX[@QOY_I<}51&%mlv*P !o ǎϔaidANSnLZ(WFm ^Dc ڹFz+HߒWL1oƒLHt-}c:Fj?F_+.mi TNBd=>Zy|3;ÂB)cF ƍ7H}ə;u@2P=0ßjLAna_境l3S]Egn| Wt[1 uA yɼqvzE{cs} x}%[A ,9MHz@snNDXUذU{iөg?0*'Pm~o cN7$[Rwr!ދ!h{(G;xQJq~c`bkO(]ki,qe`Yx;ij6ssdYH# 1 iY?P$TyC#U۠ NҚxQk:yPYOld5L= a'z( h7sK:VS"AVw27ȩCG(/E(Pm'9QϰCuJegH&h{A/Wf4U>|gm/Nv\`ɫp(ckZP^ᵤҲl&ըkDkp_zp q~)yv7U?BBd^=Of+Nf7bqիul H_h] ֈ9䫫]YBdjh`'31,eQD 5 {_{˵}i -\"}ғ5 H$O6bOÉT֨)-(\;Qutpt Ai#7԰M70(,Wi @wUy qkDXmw; XmPK,du N)kd;^d'duՕ ȲWP@@_4YI?A"h@ja&Q7"7:h nA]&`G`qwf7\{@TzKi(<>3=LyI}Ht#\Ml*fv4xE@4 =RG¼(ܫp)wOM.J.Ro!g3 kjZS(>%oMa=Ìtmŏ^HcoJ0w.5nm`xDҖyG7j+,69/ZMN!<[P/jG݅ANk/<5&\v B Z]~ud{k0v_YbtVtd-eI5 V_&: ^Wgw`@|kg/{;O[&gc!0"XvЬ 㝦vx}X^@!j%n# d}bO;}vf g`~$`,Ĺ+,Ʌ9R+b;"^2zu/Ew`$=-*-e]_K’գ#dbe7F78L/e,?TVtt7?$||v^$F /#x8˜B[Kw/ܥDp vP5A`'bcֲw:@aw+mPzFAIUS)gGdܮ>&No:= v3wR+!肥oa⠕=j~p6R<K5s{d#a9zӝ:A=Dho}ES*uEH=RǢ>|CɈ4 q= 6xnuIy+%N0UZ28ziL@ˑ # A V3٘AqZ\qeN ci 3WϲeA>Z=uK/<վ&MY3 )xE¹0Nơԭl p\u'4\}n!+;0קI𖁜Q$^ zt[|1䁻0H軄>Q-u3(wOCy.IOl6r"݊¸?OBiX >ϚO,ʃ t_-.(~Ui, Ww\myY+^tX+WWag&Ԟ57jbmle+MӋ},}og8Eӆ[@eʰ+˖ ֋\R $ĭ8z+6o B},$#nI sQ/f\/' UuBtu-l "M1RPƠ.w0KE6/Yw/DI;O$ER* ~ّh^ N"f~x(irA,m&qyj/qO|ĂPID ,;S\y h!eg|R0Q0V3!BMS{{-KmZ<#9.% 82ϻU3stz49G \C~@:^KX&ξ/CfNeƦo)Da_e(!tkQ2wʈ Ye@g/Mjl@9B}X rt-B!MITZWEg /TWmЌAe=nwt߳yi.t;;𝢮y^ł!cL:ܨwb$7!^1u"j_Ouq 5x e"A .ʣ"6D>٠*>No3Z5Гu0U`AmY4<#Q 7- 9ͽ2֎_,%ǿT={ iD[xlfϸ X=ŦG"uďezLQA+vc+V'̺|9 c:."Hз\mKgnd!7JUJֳ d~@4vH.''>rLg褭U,oY7tՃǵNˠ0UB+A3#nZ3jS]g2ɻLj^ueR0qa*OB+a0Ҫ&i4ms/^ G>|[i鱊 M Dg*~5=,&;6hL jO!jnvcYf Gf_5iZ8F}űMkS}~VM0F[i̷cFK"s{z(ci jDe -TvnWT?V`}#bK#P?UhmDūmFnmnS݌Lpr i)L-T&zu-Yݨۀþ涕~+A7 }R 7jV tň 'АOUle?써UV6NOJJW=J3Q:!)aj'&N^%y"ChvP -FGyegrβY-5[F%!wnzCJoA$AG5'ΕcQl*20d) ?e7l2ϋ6p ܆S*;t&ƭ e}X;^h؛?&ݎF3 8JDwEWKsz*u{iZUE"jˑgゥ%Q#(3P5Dc5iʈI5*ɔVY47:yΙ^Aηy5VK%ޢ#Xwӂr ^s}8>'{r D:AuZ: c) 9sfߟphgFABhS-B]{}phQrl4jj-<6tP=c9'Z(.*Yq"U, ` u!d-k{=Fu׃8 @Ȁ^ Tej1 pcGvi;G/i MBx/ >e MdSR-AA̖"aDgea,BWtkGHSҫs|3S/xf-tӽn:]#VNQt a:3|C= xbҫUNʍ]l3Iǣ 7kR&YOľ_G3`bޏqdC5ώN~ƅ%(mȦ0PKts3/d4)G1_I8uHO i+Gm+|ŀ5Ъ/jdIr9 yJ:c1(pAhvGtnMRR*pyE$,/t~SңƏۂ"I-"F1AjVvd0f5O8u-"X>UUnNV>b@k6B~i{V3gzfM|YWsm2rYgt/-Ԏf) [ d#؄ j@xArsƺl>V" }(x$9*XPYUic쮍J?-Bύf3֬.[S`2jfJce;,oԍ!@F@3ښ MњGt_0r[F4?%A3,3oa]ү^lKՅm*jbE+GIf=iE} a|+˭2 (C{-=KGGTOVaALIhyV3-ԗ_HoϤcb_~eY#X:_<y36-"ce,4QwWVv^z*=½9:߆k^A$ZQ}'$Sz8Bs1 wō%9|#i>Em`T.-'HtRoza]ŶbpnVC r#MhZc$d)Xqb$M\]k_O?,0AkDڼJ@k`(5RtWçzOd `Li Rӷ~6 +N-9ӆSoByx$d'S8 [8L& J3{&yHBx(ǽbQhy:l;1ǝ ws8KiF:. QHk|޼h[bJ 苪Y0=ȞIҪoèZ5Y!Z\,gcP?ݨ22@e$;tθ("h3WcEeX2uuj]61}DssQ9Z)4.y;0'Y% dgUJpP{6;zNiHɣNĒ>x<[XKȞ5;l|Nivbsqw9ۓK̋AIP=%Ln? ++iEEcDb =_DguAΎg򸆁CȶӀ﬌´*,.d,:HC# X{O P?6 %2pIuR=5p}"O8ֵR| ~~-FrWQ70N#* {Jwzt Zƚ,4 .=cto "%-),g"HAg/~b NRhbo$( p@`#k Oֶ\|[,zFɫKWbk9;yZ{oG{>~kWJ鎣Ne)^UlۚKXꫛ;H``b!lGf~_1js%QgNw}^'ܭԋoLPmj#ёQ0o)7&дxlhpA`+^GPy?Ղ à6Q) 5j=Rne1<\:]¨I̚0 tCG KV;0Lw(Zuh3R7Φκ;dwv4$>"anI 7 Ju?rr#PrZ%:GTԲޅs9eZ# O5ÀSC+'ͱ8jS:}>ˉrmDW }ys|>;Z)ӿb|1@'sҚql^lb+0Q~vSh@w} /O#PPơnA,pWiܙɱ9㻽7&Jy;`+ IbT\j9}BqBn4aˆ+ED{ongitan.W&jPYS_;zbx'8 9,'VBWlKH-%azzYNX~z:N3!rbB5\d~Q6"<@$24E2cRjp s6 k4Z.śyZⅧFgh^j$MEI&A\ E)=@~$$ovzt2@cPZnχNV $:$`TRhg=8h2*yyMAF:6.2*7`'d|SҾ 5 #m|[_kXw"ZI˪Ry]L-n3)*?Cj\ r7?ZE[ChZ:Xoaxd_}p~/@BG9D*-e1p)Ԩ3lޯHzyI7>n!Psu8vl$zز26S_װhv lcm2 3V*tRKfU,@MQG vOݴպssj~V4F2e_lڜ,)GYrl+bcǦ8I`QF)Itvoq{s!>OA^"oW@z- 'cD6a;Z+|N.5_::ӽڋ%2,CYz ̫.Y+Ũu: ,jjyg&i^%4¾%s1֞]ޏsm`}i@qpHnt4,C<^> )xD<ڔE(S);Sju ܎fJoA!} B6p[$̩2vq>¶j@S6SYS&ց; RgQc k&b^hW%,g$߻[>TJEl"xnZiGlN JI'ȩ\I7.&D?8[=>I\]u";ߒ._NF6 wXj tɕmӦCnMԒ{-Q`g0vЌM >u_-|#] /t[6H4I^*P"HP˅Gj x2:imoJyuSV{ zQWЯ-'4h#<߆-]m: WyR>Eھ1hN='Nr`NaBh/zG)RoRPO7٫ +Rt+&"@@ߑd5uD|h\NbB\t6gz&ZfrGP#v1Fo%x0o#m_}6TVp Knjݶk`)/Un <0Dю7V)ai ܁pEm> iB3z%\(wT@3?# UI[J, *6i-gGA{$H _L FC^}ղ*Brs|5 Uȣf_ca;;20`62&agkTbuK -*xxδ0\s7Kt? o[vA{ž7qXsឱA!ňQ]Q.q>oU(/QsOYb5vLqTq7CxZii8lEz_usnׅM?:%8,Ƿ8Lc\*e5OxL?JA&_\jI~j7ZZm91&VJHv!c)sd@6.*rc0ªS* ۿ: =_t|xQTVx;aƄޡ}) 3hѮΫj90/z9'  lvdonNd(.g[ T; N:{@̝S6ӓS(Ѥ?bS7EHOU JHyZYnP^*/aS3ȷ=B*ut{ԨbwiTcKf8ILVь'G`U)kg0*tuo?o]#UnOF:- MF@fܰ?]'Ijgi9?%ޗƒT3 B4zo@)vu\bOS }+g ' :8W=7g?}7sh:,|&QR<4]80 Swye,'|Z~Evj!(8Wiŀ/ឲaWS &~ʈt3Kj9؂/Q*쯇EǞkj:`v;,cA@)ޗhS 4J89l4Su9T9,9xvR{l50.mZpsgW.OjVh8ةQϋl @JUtfIOGN|K" *!3x[)2Jw݃.78Uʛ:# I/n$l8BV_nR dtr{c @ցxw&.J$sb @33T*p[@bJSݸI#@ #+K .nF Nuli2 [6ݕ/n[%8v F(~o4X|?vfۯSpY"%6+0Kސ{)4H1֚*u,Ŝ$s{^oOFILgiB! _6 cF;{^H(IɩTGB\a}6na c]4;Z 5&9= t)/#%}e(T5Cmu|WǰB a9os?XVt)yOT& T:}1kF mLDX&S:gW w oY y[n*aM{Fg\IJk5t3׹t楣HWtĮDPR1OJ]/(۟I Ź/8 J*b}aѱ#+aL ؖW@it9wh81{"bOQ=SlAH@b(woBubdXqK`ġ$,BiHgG*#(ɸGBO Ϊz 8ۦ;87.$K)h3V'& Y<\WBz~.RIvIGM< m4Fj;7" r֥YT7*":C{qakCOi A&t%Wlm2(im2䲭?3ֵӱVCj%o+R!.] 3|wBXΖHSNiv0APzPb&i1 ݡL)IA,UX+gD<H>u'BgT 7 9LXR\|Q?$_0@LtPiHNmd Sgn!XuHd]S_:A!VyN>N)?q -luY=:qM*m6t]"۲i&Z|ѕ^Gc{ (g4l2bg.$*q"$ca/k6!^0߫;& r~-&g`4t%=3#Z rn2E):w.մw֢3eu!4O&XdxlVu̘-a7 I+f;d҅=%!d(6d'}"G` 2xMmQzMCs Qt7BڞAA$ !#xpjLM$LGb/FJkgD ;=|;7>2Ff݇GsxS'!r&>F=\fWvhe?$g ej7=B6h8TRR@ʰnpZGtLYYB@."*wBˠ;_%\`7N’{ -^Z⬸p: jYTAl(MZ(8 A%3' MJ*b4\>(>~[ā@DY0ƚ^2.3#aP7)AaQ ESB{o:jr1YKP}noȡUQPP2/;VaWѣ/Bٜ o)Vw6 &$Du<"boτ'}p&z!f x~-|YT^hB9uؿvaǺfzh3"{$F_9K;"lo* H =Uk^(5X[Y5ZcAYe>c\"xPf| 's\i5vٸє~i $FGC@n452Nvt4Ԙ-+\ LSOI8n]\kVk`6n@zmo~RPWR\E U Ý=Dҟw鮁wSyk_7_pT4mEg1~~kK]аIr-@yUwcrOuC[5ߓ/?f/z pn="hC]]lys>l=QeVѾS~i'(ܹZ-J%vЁR$?!aY)Zh (ÃRm_kyί{ iB56a,R +5i}sqnsai)SGͱdHv-,GFS^+BsP-=afY7όUa@nfQw"lg** (`O-HG!"/>bI_5\r~,[z^bW݈p[2>S^a4֧GD׏wQQ/'AEn #jhuƃ[Qupe/2b'?D^ Q]ѡNESUzGI魤-P. K֩*{*prrҋ1]2b_ rmّ0 yeLُ[5ηϮs[Ġ14uzTZsve_ ]5 0?L\-f ڠ HH5>~+]gJL.vl3όT&WS(U{4Qrqtq4m\T4 IADc1uZ>pϘMү~كZy]0IN~UkQJPH^%'Z++g~@pe?-1,9y i! 6bndxnPp!@(Ad ɇ[v92e V..? Y [~4vɾx0 ,人+smސׅJ 0|5 h?]lRL)go30T[K`@NZX|)Vu7nsC 5=?ϗctD[HBApu$T8ܶraz 24%i|ek,,^8T<΃NS=&kx JuVSЅsEK`;}"YD[AXlQ ')Q/7J~tPaIpʰ Xk:줽oS8i]H菭0LAk:81`?:ֻbpTo&I\#rgR`dʖ4AՐAht0ޗ"ӎXՒ\`+s<(yF;Sp vi(bs*gz#M˼aj$Ͼ;Ę:o㡰DVV:00*W4c3ӧ_"1ٖ} @ù$pd8tmG*Y*C$eqEM6qاCmPqjKZƇas~^ NmUP\Oq9E4M_ *DbI@d[ǐG2U1z_4Q[tBp21;O|GV|%o:pJ8DނuA_m叕taR?Ӟ!c.WU{GeˊN='|G #@w/0iT~ީ\\L\I󬕈00ϸ/aZe-rP9lE~nkEҭ.E_!|YIb gzv򜇖^ ߺr4ԝ"Æu2|יHt^0 -ygXo訙m hf׭RQӊO.n[qϲ,0ş=ݱL3l .F5;~챟1 Ek[HB_{5^;.Nnԣ;1 &aފ&>1ql:p zl-1.X<&cv@a/+>zvZvf;~Y%xpzVzZҗjƢs3A8 ٓ/ɜXѫ"{o i*ba{SOY1^ 䆘{Np;Fÿ]͎AyN4:Y2nq |r*kR?o z%oD% QR-kI+BPG !aFIb$lɞ  `:#YCk 0G:EI껓oW! >1mvLYGfK ,N!\+mY3L0#AoN4mis9<567E&C|$erw>GEC &,Q%IFI;I}HB2{G2R$S@3k ٌ5MG\~>9AqX2/3s.Yispy@X]mm yXmYX>hj4Yc*^I56\|k3Zm7 :zo۞ +)ǒcx(̺oza7S׳ԋGN m^LCe0Ɣ/-F `Y'*PLDO} ƗXEcc^ˬ!)rq$0e֔8([$9\>(qgN~[DnaCG&-şQS\f Mɸm=zKkE>jJ:㳄D1W:]>>.Qb戾ĬXg E4Wx)@P]K ^3DشK:т+Sl)@RJsITY.DyFÁqJ;eH-к.h-6-}N8!ҧ2[i!~qI2w#jU6s5N<`KA64E]č%P=F&shZQfP]`{?br_(<$Y{Kc~^t4E=A84js-ͺv'5&`mou0P>ޱg暚`>&lzf $;!& 1)| V9Uv͕Vos~p|w-ɟx]FQ\ aTK|ug<&T^_!"OB9hz-U~͑%TG_j):f!RCaɔ \*l"eFvW1kګ# !Ivgα A]Uғ'7xF~p]Ӓ(1+%-QԕSŇ Kw&ޝ:@G#0F`^pYF歱Tsԩ^V*H?>_Lʔ^(ְ9 ȅhRˊ%5SzJ P;DfŴcgBڷ34 \|CMx-}.K}?ɨ$wN+Cҗ:{_!pw7ԧU{Ac9 }_]9&K`4G49E3vzp)Fya.ޏ==JJuD35g>-{Af։=W anUKw/RsL?D Qh hU~w-fO4ד5Bg6u[peu%IHyv`NE}'θs3w֫Us$++[UD%umDÔ*O3b21veQ)msKd3!"Q8RADz^A{d%\y7PNZeR{_2<@ޣd(bhix,t[EvU787 :G/B᪤]YµF5⪩gT¹f U y KElvalȟHEvҬg|"t=`[亙xXfOtYc3e坾h5Z-}f-osm<~z̐bP3hylC=#h5KV_EGp+ykBv0ĀLVJ_:f0j3n"U cFJG7R83GH9ZaV|Kf b#^`3 }j,Ȕ#e&_2nރSAYϐQ& 6c*@D7YCVxO;KJ/l"ri.hfielW}7 Y[꟱r$׊nVbVӵʷ%_V xX |"s$qZ8h7M:$Ot٦ CPs74#dP" 0h6$5$v#' U Ca˞=kDA͛q[m=ILǗ_Bph\b`P:!_q A)*s$);֛]<MOnJ@*oyg)8U`?X!+.{'[CV -[=Uf=ӾJGUT3EI_ڐŋ`b2F;',қ"K-&ȁ,B∆ʐ;Wߊ~o8(D$.D]Krb'do 9c~RO1Ri185c̚0Ɵ.Y01! F_u'ذ"&0W^ g~JtQ:k|$r_m:=0٢8OtB+3SA?2/!)4=7S#;}nUATu(L9Q>5Z XPziZٮf/IBņQ\B RZV=)i{kM )/Uol[mCjZss$+{þTAi#.P_<LNCT0{~`@4>7t{}ctUK7 uu+3=d^~'1dpC~(b팉{ns{(64g߃N8%ᒝm6ԫ(y2Ccd jʤpr$:{iQ{(3>3&Ո 8V]\=)^_?SCӰOڟ`*Pƻ8򜫲"+"5YNHn+Iq@A/~L5Kɬ Z~S}b?@u$kNЭN\2~@v"CY:?"bG6;EV/pp몺BW*{#soS,u+0GDU_˿+DjM$%A恛W K)N_ yY#'pY0,3F_ΰTg Nbezsg>EDߞn =)M!PWg#_T u0+>u!b4%,/[Nz{1Adj􈺋8G6yYLě|}Y Y-S%],~$ӚjlW[Qn>%{@HP#y>E9ũ ?P]ݝ@<ĮI$z}:c}j7m<"PuJx&E'~ָyLN6Y[\7$fؖ:WښՒG배P^ؙ6Cv<;<ܡNR|֎`I׊6:oXrl철(]!\I {ra|ZҙvډSI"ySc7yLY 9{q.6S o "d<'9׊RGg[[HU||E]-_-fF: 8$s*`d {vկbhiOH W7¹ {7xF}J%Ke6 jTZ?וjo '.6ۓ55wg'ěa`@RAŏ\2\֚vOƽ 2WPʠRh-a! $X%%E ogk"xD43#ep+Ed7v_MDBS=bτ8;EeWz x=(ƃn|װn3rHzT$a6 v*#Xԑ^:/DfNF3aOE]-VsdfP4)'XOiU0RX uJ,v .,I'q8eu]9t;󋗻LraWm?6[0 Ah<+| R(ʪ+O89PbDKcuy%2n%7:pf'wKpMo 2q Gt)w׌`}vE*YADl:DxT'-zaBcmeBtebwYYl+!-^*\ z~F:$_ٜr ;߫)%SAQ‚Sbe9/U9e,/D]Ґۻ|$2ؗcl/4K5 X@Ӆ'ey>I2f3qemTLhϛ3O&5IvH;p3+ Ů!j%20ydީ$ZrZ4#M'3P|^ҧV(;o xv)wg$ZR,rci+:8cn/IW!q6編YPq3iG1ʢn6q3;  1c "%69B w00y00u00000e0}00m0000000i000000000000c0s0g00{0k000000q0o00Ƞ6$kq 6Wr_u}̎8ͭ7uTߝ I (b')9#SIb|ʐVͫ*Et~7VL=x96u UV[xs#  0   2 hŕA"..%7(255647M77W8p88z999;2;;<=V??8AAlCCYE+F?NG(WZ]opvqqrnrrr.stx {{8|n||}~G~d aS"&E7j^}I\Zw|wM~g   - Rr8   !"%Z'3()++-6-#.2`3x334@45x556~6/NNOPQQDR]RUSnSfTTxU)VVWTomooNpgpp=qVqr`rrrr0ssssQtitt.Hw?n6:RF^Rj^xxHiPh\ti)G`'l<+AZ%e4yH\Xqi1*?u:Od    7/H@YQ%-s...a/z//0y0011112622253N33#4<444;56IIIIKLfNBOPQARRSSSTTUUV*VVWWX@XXYZ2ZYZZ[\H\o\]^4^a^^._ a$afbbcd\dIhrstttt9uPuu "3+D<V?k10IHSll WoMd:Og[sZ4Bv;X~. :u"DHQs _h!t+}Z`j*,q.0H|348Dj         )(A@Yp& pib @  "!!"7[8uS8E"GVH IHa`aTbzz*{{{U|7ON `x&Vnbz5 &7/H@YR\   l  }    ^wp2*C;*4** +"+++,,,-)---.../x//00001711 2%2223334+444*5C5556I1JuJJKKQKjKK Lbcccdde|eqff}gghh\itihj!jn s`uvvw77&??X. x`{Uk]y Xwpfh~9tBn(nSor8$_>XW1Fkl!F g, M B  *KUaSXB aUNAE "  7     f  vOLB)AwM}Qx<x\z{ T   Q!"@#9$=%^&&&'M())F***v++1,,4--.?.._/U0011L221334/526n7/8 9):::<Y===>>D??G@@)ARABrBgCCDD^EEDF&GxHHHI~II JJxK0LqMPQ}R=SST#TT UUXkYYaZZD\gl{mmnno:ppUqrjtaxT%|o3FYj}$Y2usMn"/tG#odgEi%zf Sz 5 f  Z u     0 s t$ $ = !> v? @ qA B ,G IG G _H H I uI I J J ,K R R S S S AT T T 9U U 4V YW X Y Z CZ Z Z [ %[ <[ o[ [ [ \ H] ] |^ _ k$` Hd B"n s t u ,v %z y) ~  N-   ( p n Q j b  1 )    j  i   5  y   J  3   /  u D . b  j  v  s   1 8   ' ?  5  + r  F a | \ C $ Q m  + * u a J @  w m  F    > s  4  k   a    +  !  X N '  {  T    L   B  y   o  6        F  < i % =   G    > X  W u $ < q  1   Z   ! ! ! 9" " " y# # # $ `$ $ $ g% % & & ' ' ( ( ( H) ^) ) ) /* }* * 6+ + w, , T- - - ^. w. / ,/ ]/ / / K0 0 1 U1 E2 2 "3 S3 3 -4 F4 4 4 ,5 {5 5 6 j6 6 $7 8 g8 8 "9 q9 9 : : : : L; ; ; ;< < < = 8> > > B? ? ? @ @ @ A jA A B qB B C D D D E E E RF hF F F 9G G G @H H I I ^J J J iK K !L 7L hL L M VM M N `N PO O -P ^P P <Q UQ Q R ;R R R )S yS S 3T #U vU V 1V V W %W W W X ZX X X IY Y Z Z F[ [ \ Q\ \ ] ] ] ] M^ ^ ^ R_ _ ` a ja a +b b c .c c c #d {d d 'e e e Hf <g g &h Yh h Bi ]i j j Rj j k Vk k l wl km m Un n n qo o 7p Np p p 3q q q Lr r s s t t u u u fv }v v w bw w x {x x y %z z z >{ { { | | | 9} } } >~ ~   V  o    j  o  7 +  H  / J ?  C  d X B u  ] x # : m   q 8  p    Q h   M  f    )   # }  (   @  Y   P  U    m .   1 & ~ *  K ? ) \  F a # V   Z ! { o Y   w  = T   9  R     n   j     -  F   >  C   [  t    m  r  : .  K  3 N  C  G  h \ F y  f  , C v  ( z A  y    \ s   X   q    4   ,  1   I  b   Z  _  '  w  8  $ ?  4  8  Y M 7 j  T o  1 d   h / } g    I `   E  ^    !  {   w  "   :   S      N   S    k  ,   2 '  +  L @  * ]  H c  % X   \  # } q  [   v  < S   8   Q         l    h      +! ! ! D" " " # # # ?$ $ $ D% % & ' \' ' ( u( ) #) ) ) * p* * + u+ + =, 1- - . N. . :/ U/ 0 0 J0 0 0 N1 1 2 o2 c3 3 M4 4 4 m5 5 36 J6 }6 6 /7 7 7 H8 8 9 9 : : ; ; ; a< x< < = ]= = > v> > ? @ @ @ 9A A A B B B 6C C C ;D D E E SF F G lG G H H H I fI I J kJ J 3K 'L L M DM M /N JN N O ?O O O CP P Q dQ XR R BS uS S _T zT %U <U oU U !V sV V :W W X X rY Y Y ^Z Z 2[ *\ \ ] T] ] ^ i^ ^ _ _ ` ` a Wa a b c Tc c d ^d d e he Xf f 5g fg g h nh h i j j j k \k k l m Ym m n cn n o mo ]p p :q kq q r sr r s t t t u au u v w ^w w x hx x !y ry bz z ?{ p{ { | x| | } ~ ~ ~  f   c  m & w g D u   }     k  %  h # r + | l I z        p  *  m ( w 0 q N        &   G ; % X  w  !  :  [ O 9 l     5  N  o c M   1   I  b ) w a   E   ]  v =  u   Y  !  q 2  Q    m  5 )  F  e    (  I = ' Z  y  #  <  ] Q ; n     7  P  q e O   3   K  d + y c   G    _  x ?  w   [  #  s  4  S    o  7 +  H  g    ,   d  7 U 9   } 6     m  % @ ^   B      {  4      m &   ^  1 O 3      j  " = [   ?      v  . I g   K     $   =      t  , G e   I     !   :  ! ! " q" " )# D# b# # # F$ $ % % % & ~& & 6' Q' o' ' ' S( ( ) ) ) +* * * D+ + , , , - |- - 4. O. m. . . Q/ / 0 0 0 )1 1 1 A2 \2 z2 2 2 ^3 3 #4 4 4 65 5 5 O6 6 7 7 7 58 8 8 N9 9 : : : '; ; ; A< < = = = .> > ? Z? v? ? @ @ @ "A QA B $B pB B BC C =D lD %E ?E E E ]F F WG G ?H YH H I wI I I J yJ J J K K L L L PM M N N N O O P jP P .Q JQ jQ Q Q WR R &S S S ET T U rU V AV V W `W W 2X X +Y ZY Z -Z yZ Z K[ [ [ [ M\ h\ \ n] ] V^ p^ ^ $_ _ _ ` ` qa a a ?b b c c c d d d Ye e f 9f Yf f f Fg g h h h 2i i j ^j zj j k !k k &l Ul m (m tm m Fn n @o oo (p Bp p p `q q Zr r Bs \s s t zt t t u |u u u v v w w w Sx x y y y z z { n{ { 3| | } } } ~ ~ ~ L h    u  D  c  5  0 _  2 ~  P  K z 3 M   k  f  N h     h  6  6 #   w ; W w d  3  R  $   M  l  > @ [  $ D  M   w   P  f |   M    x  0 F w   e {   P i   O  = S n   X r  0 t   " = X u {   - r     z     O i   @ g        < C \  6 P      b   ~ .  E 7 P  + ! 8! |! ! " # !# z# I$ e$ $ {% % 7& G' ' ' m* + %+ + + , - - - . %. h. . . . Y/ %0 B0 1 +1 '2 B2 ^2 2 K3 9I I I J J kK K "L ;L L L M M HN aN N O O P P P tQ Q 0R IR R S S T T T V V X X XY qY Z +Z Z Z [ [ ^\ w\ 3] L] ] ^ ^ ^ P` i` !a :a a a b b c c e 1e e e zf f 4g Mg g h h h bi {i .j Gj j k k k k l 2l ul l l l /m Im m m m n Fn `n n n o o ]o wo o o p 1p tp p p p .q Hq q q q r Er _r r r r s \s vs s s t 0t st t t t -u Gu u u u v Dv ^v v v v w [w uw w w x /x rx x x x ,y Fy y y y z zz { | | e} z~ ~ o   _ s  h   X + F   U h  ]  - s F a |   1 F h ;   +  3 N k   t       $ ? \ q  f    c z  o   b z  o   6 S p    % G     % G    >      ;      9  U r   , D f 9   ,  0 I    = n  ^ w c j  1  <   > W  ? Y   c ~ /  ` {   6 Q m  g  L  1  " ? n 3 N h $   ~  F  8 T   u  F a {  5 y   L</Mk@]zRkj    c | % @ Z     W q   +n_r d;>DrC$R#d6 P L!g!!!!#r####P$k$%&k&&9' ')N*g*+++++,X,r,,,-%.@.\.y.I/d///k000D44455J6c66777b8{890999::5;N;;<<<S=l=>>>>}??@@Y@@AAADB]BBCCC9DRDDDEE.FGFFF~GGHiII&J?JJ J]NNOOOPPQQdR}RS1SSSTTUU{VV;WTWWXY(YYYZZZ[ [c[}[[[\7\z\\\\4]N]]]]^K^e^^^__b_|___S`&aAa\awaaobbbcc:ccc dddef$fAfg+gghhhiijjk2kl!llllmmDn_n|nLogoo{pppqq:r:sUssttFucuzxxxyzz{{{||}~0~M ~2s $[t3Hc!<Y*Ea~&m!<Wr/j|dJ2*|&~(z$ rZB:50+&|!wrmh c^YTm2-(# )$zupkf a\WRMHC>94/*rmhc^YTOJ& 6Ojpqjr{ 26WrI u}8,uz"7uTIb-#SIb|V(Enh 7RL;x) 0N-W$8!HUR[mtsbb {*o27    $ @ Y    $ R #   * MPE ^ E 8   1_"S)81zHLy h(7K8n9 ;pjrr)s{|m}L@ c0-204QURfSwTeo_pNqrrsbtg^KWco zam"X <RA (08@HPX`iz*" /@Q.r//011.22F3444IISS)UU@W XXY$Zo[:\]S^`bcUdsttJu+<M0)Ad} h^K`l-li3by#A1     !9Ql8YazHqgs /@Q }   o*;,*+,,!-../00/12 33#44;55JJKbKccuefghmiyj/7P'@UjOHH a;n TO-Bq~c   !R~UC?  _"$(& ()}*,--0234N789;='?+@@CEF1HKHISSTGY=Zmn3p2q4 uSPA{~9 8   $ > @ G I I J qR S T 'U !V Y Y Y 6[ [ ^ Z    b )    l     X  1 8 . $    W   {  C $  r     *  W &  S      8  e    u  5 6  @  P P 5  *   ! 6" " # $ [$ $ % & ( ( Y) ) ** * + , - Y. '/ / / 0 P1 2 3 (4 4 x5 5 e6 7 `8 n9 9 : I; ; 6< < 1> ?? ? @ A eA B B C E E cF F 4G G H I J dK 2L L M M [N O P 7Q R R R tS .T oU }V W W WX X DY Y ?[ M\ \ ] I^ ^ L_ ` ba b c c wd d ze Bf g h <i j j j k ql m n ko Hp p -q q r s u u wv w \w x x z :{ { | 5} } 8~  N k   f  i 1  )    ^  W 4      b G    %    w "  8 U   L  O  e   z  } E  @    u  q N 3       d   % B   :  =  S p   i  l 4  -    b  ` = "     m R    0   (  +  A ^   V  Y ! o     S  N +     } Z ?        q   2 O   J  M  c   {  ~ F   B     w   p M  2      }  b   #! @" " # ;$ $ >% & T' q( ) ) l* * o+ 7, - . 4/ 0 0 0 1 i2 3 4 g5 D6 6 )7 7 8 9 ; ; r< < W= > > @ 5A A B 2C C 5D D KF hG G H bI I eJ -K {L M )N O O O P ^Q R S YT 6U U V V W X Y VZ *[ \ ] ] ^ _ a Ra b Mc [d d ce f g h h i k Wk l Rm `n n ho p q r r t u \u v Ww ex x my z { | | ~  a  \ j  r      f  a o  w      k % f t  |     " y A     6  U    - J  i  +  A ^  }  ?  U r    S  i     g / }    $ { C     8  W    / L  k  -  C `    A  W t    U  k     i 1     &   _  .    x    h  7    v    h    Y  (    e  4    q  @        o  >    |   ! l" " ;# # $ % y& & H' ' ( ) * * + , w- - F. . / 0 1 1 S2 2 3 4 5 5 6 7 8 8 9 : ; ; < = > > l? @ A B B :C 5D 7E E UF OG QH I oI I J K L JM M N O dP P @Q Q R S T U V W W *X #Y %Z Z C[ [ _\ f] h^ _ _ ` a 9b b c d Se e /f f g h i i pj k l m m >n 8o :p p Xq Rr Ts t rt t u v w Mx x y z h{ { | } ~ ~ ^    - ( * H C E c ^ `  ~ x z 0      q  M       6  R     M  w H   s A  v K   N   i  '  b j 7 L a   a  ]   + H   V  , A  0! ! " A$ m% ** ?* T* i* - . z. . 0 1 2 E F F 4F IF ^F sF F F F F F F G G 0G EG ZG oG G G G G G G H H ,H AH VH kH H H H H H H H I (I k *l l l Am m m Xn n o oo o )p p p @q q q Wr r s ns s (t t t ?u u u Vv v w mw w 'x x x >y y y { | q~ f   j _      _ T   :  = 2    v k      h ]    q f   q f  +                   J   ; 0   n   e o   |  )  Y n   Q   S T  W < !  H ] `    - 5 0    s  -   5YnR    i  #l^;{[ow@!"" #%g)|)) ,j,,.?/c012&2;2P2e2z2222222 3"373L3a3v3333333 4434HHH&M;MPMeMzMMMMMMM N"N7NLNZ[u[[/\\\F]]^]^^_t__aZbdfgghijkmCorpq1strxyy| ~ !; )v^Fz$x"lT<3.)$ f~" kfa\WRMHC########     ### ##  ######      #                """""""""""""   #         #       #                  !!!!!                                                                          !!      ##   #   #############                "!!                                                                                                                                                                        #"!!!!!!!!"!!!"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!"!!!!!!!!!!!!      "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!"!!!!!!!#~%22%y(2"56687Q77[8t8 9~99:;6;;9>@NBDMLTb[NjwppqqFrtrrstx{{{J|}$~K~hĥef59Jq1\om}Cy   J ${&(|*d+,:.22d333D41555166BNOOPQpRSTU@ZEKI   / _$<TlB93*|#uS  !+#8vEFuGRIrabz|˦-Sa'\BmG(9J[le"o'      EVG*5+#,,<-*../100J182&33>44V55f7CJJ0K|KKQL ccdefghinstsu+vv9x1JאƑRޒkA(˜%Rzƙ :b՚Y1У\{ƥ@hЦ%zçmvdudK)ܲݴ>#.ܸ3pعW"xƽjiL+V"fO/ 'fiG!Kg"E4 (   {TU<2|d+Da2g  !!"G#L$D%c&&()**+D,G-.R.023B56s7689.::<==>W?Z@.AeACEG~HHHHIOIIJKKL$P.QARPS T7TUU~YtZQ[ekmmmnLpgqss~ֆ 7_ߚ7J_nڞSy(1i,7(nyX5*.{7jG  ^ {  -   $ = 3> @ @ dB F 0G MG G cH *I I J Q R R S S ST KU V jW X Y Z +Z IZ uZ Z Z Z [ N[ [ [ \ Y] ^ _ c m [s s Hu u hy ,  ͞ . נ ٢ } D    ; V {  H *  c w G E  " 4 f | ~  J n Q G = 2  e  I U  =   S $   Q G  ~ t    4 a  2 (  _ U        $  A  P Z   k / \  O D   )! ! " " # # q$ % % ' ' j( ( ( o) @* * + , e- 8. a. . =/ 0 0 f1 2 33 4 04 4 5 5 {6 57 x8 9 9 : P: : ; L< = I> > ? ? @ @ {A B B D D tE E E yF JG G H I oJ CK lK K HL M M qN O >P Q ?Q Q R R S DT U V V W ^W W X ZY Z W[ [ \ \ ?] ] ^ d_ ,` |a b b c mc d d e Zf g 8h i Fi i 1j k k l m gn Jo uo o `p Eq q r t t yu u u v tw x x 7z z { { +| | } P~  h ځ  \ փ I '  3   v ƌ T 6 a L 1 ܐ c z _ җ "  :  R B ס g /   p  ] ;  J 5  ů ݱ k O { ѳ f K   | ' ? ; ڿ 0 U  m _ L * 7 "  z X ? j U : n j  -  C [ L q 9  ( ~  k I , X C ( y \ r W    4 L    @   e - }  q  ^  <  L  7     m O z  e J     ~    z %  =! ! " " 1# # $ V% & n' ' ( ) b) ) * + O, - -. / >/ / )0 1 1 2 3 _4 E5 q5 5 \6 A7 7 8 : : t; ; ; < o= > > 2@ @ A A (B B C MD E eF F G H XH H I }J EK L #M N 3N N O P P vQ R TS 8T cT T NU 3V V W X Y qZ E[ \ 2] ^ ^ ` ` ha "b ec c d ye f Fg h h j j mk 'l jm m n ~o p Kq r r t t ru ,v ow w x y z P{ | | ~ ~ w 1 t ΂ ˄ U % ߆ " | 6 y  ӌ Ў Z * ' ; ~  ؖ ՘ _ / , Y 7  3 m K / G ժ ѭ _ C [ Ͳ s W  o k 3   G % ! [ 9  5 o M 1 I a E ] u Y ! q m 5   I ' # 4 < h A =   E q    K     =  . 6 b   :   B n    F   N z    T     D   L x    Q   A! ! " I# u# # $ $ N% % & V' ' ( ( ( [) ) + + + L, , - T. . / / / Y0 0 1 a2 2 3 3 3 f4 4 6 6 6 Y7 7 9 9 9 W: : ; < < W= = ? |? ? 1@ @ (A A 8B VC D CD D SE qF -G ]G G mH I I !J J pK K L L M N N +O O P PQ ~Q R R R nS T +U U V V (W FX Y 1Y Y AZ _[ [ [ |\ D] t] ] ^ _ _` ` a a b yc c d d e ?f mf f g g [h h j j j 5k k ,l l X iX X Y 4Y ZY Y Y Z Z Z Z F[ q[ [ \ :\ `\ \ ] 5] ] ] ] e^ ^ ^ ` ,` R` ` ` #a a a a mb b b 6c ac c d d e ye e e +f Vf |f f g 6g g g g Zh h h i >i di i j 0j j j j Qk |k k k Fl l m ]m m n tn n .o o o Ep p p \q q r sr r -s s s Dt t t [u u v rv v ,w w w Cx x x Zy y z { { } O~ ~  ̀ I y | Ņ / J ‰ > n q    J e ǒ   L O ɖ ̗ И   7 R U n ( C F w z ~ ˦ ѧ   P Ϭ  O c ϱ ; X u { + . z + . " % p  " n  ( Z w  J M B 2  # D t w E @ )  @  x  m ) 2 g 3 3 d    : U q { ` E g &  u  5 | 8 m g K p  < X v T  % P w ! H I 4#4REbLw.Tb F l X    ? e   ' n  (   ?Kv<hqYG9'ygB 8 !P!k!!!"##N#t####$,$R$f%%T&&"''6))**P***++++),,,-).D.`./M/h//B0o00g1444C5n555&6L6666]7778>8d8889}9992:]:::;7;;;;Q<|<<=/=U===>w>>>.?Y???@B@@@@NAyAAA BFBBBBCCnCCCD;DDDD8EcEEE F0FFFF/GZGG^HIEIkIIJ(JJJJLNNNoOOO3P^PP?QjQQR@RfRRRSsSSScccddde f(ffggghhiiijjkk l%lllmmmHncn!oPokoQpppqqqs>sYstttJuPx~xx{yzz({S{|{{|||}~4~Ӏ7\́9df 7]؆ˇLgڊۋ %@.IeĎT%@[vӔeA*vگ°<:̶lTMHC>94/*% <72-(# {vqlgb];*)%2(255t6y6~66666*707I77M8S8l88p9v999;;.;;<<=N?R??0A4AAdChCCQEUEFNCW]nnnnnnnnnnno ooo o&o,o3o:oAoHoPoVo\obohopovo|ooooprqqqqjrrr)sitqtyttx{{4|i|||o}}}~C~_]M @2eY =EMSY`goswC3AVT=FLRX^bfjqves"(048<BHz{c{   ! )  !)/5;AGNm3   !"%%H'V'.() ++--2-.2U3[3t33 464<45s556z6N NNNN$N*NNOP{QQ?RWRPShSaTyTrU#VVW7o?oGoOogooIpapp7qPqqqqqqqqqrNrUrYr]rrrr+s~sssMtdttه)Cms:dj2 $*06MBYNeZstC}d|LcXoe $BZ !Yg7&<Tx  L`~/MtCa0WuSkdz, $8p4I^    1*B;SL_-g-p-v-|----n...\/t//0t0011112022203H33464446555555555555556 666!6)61696A6I6Q6Y6a6i6q6y6666666666666666iIoIvI|IIIIIIKLaN=OPQ=RRUSSSSSS TTnUUUUUU%VVWWWWXX;XXYYYZ(Z.ZTZZ[[[\>\D\j\]]^^/^W^]^^*_``a ab\bbb}bcccdWdDhrsstttt5uLuu׍Ў -&>7O×Ԙ͙ޚJRZbjsy 29߶e++CϹCںNfڻf  %-5=EMU]emu}qw}SjI`6KbWnt{V /"(.4:@HNTZbhnu|>r7Ty)'5|q?CMnZdo'yU\ f%'_m*|+Cx/03?d          ##;;Sk  jc \:  !!S"["c"k"s"{""""""S7Y7`7f7l7r7x77777777777W8p8EEGGRHI#a*a2a8a>aDa[aPbzzzzz&{{{9|A|I|Q|| %,3J"*2:BJ\s" %+2:@FLRi^u/ 1*B;SL }V    g  x    Yqj,%=6))))* ***.**++++ ,~,, -#---.../s///00011112222 333 4%444%5=555=6F6N6V6^6f6n6v6~6666666666666IIIJ-JpJJJKKMKfKKLbbbbbbb cccd_ewelffygghhXioidjjnssZuvvw؎12!9Œ9RƓ(ǔϔהߔėʗЗ֗ݗ<t$\wϚQ˜fYuNTsޤfl,b}c ܬz4 pŲ=ciƴ $ĸȸ͸ҸZj?OjԺ nͻۻ%3ntüѼ  kryZ:SS-Bqg LZhBb'G=%FBPN\@NES>io}\P I=A    2      z     `    p'.<JG<#< VdrGxKs6WesIWtu A O    L!a"h"y":#$"$3$7%,&3&F&Y&&' ('(7(G(q)x)))))@*****p++,,+,,-!-/----..9..Z/O0000011F22222+333334555)5-6P7W7h7)888999:#:::;;<<>=E=S=====>>)?0?>??-@4@B@@AAA$ALABmBaCCCCCDDXEEEEE=FFFG!GXHfHtHHHHI9IyIIIIJJrK*LkMPQwRS*S8SSSSTTTTTU|UXXXXXXIYWYeYY?ZMZ[ZZ \glllllllimwmmnnnooooo5pp4qBqPqrtN\ͅzls Õژ!xbj_ekqw}ĝ˝ѝםޝ #)/BUfyƞ -Źpn{i,q6D[jP_wTcAUd u TbAOu b  : H V q        + o j$ p$ $ = > > > > > > > > > > > > > > > > > > ? ? ? ? ? "? (? /? 6? =? D? K? R? X? ^? f? l? r? @ mA B B "G (G EG G ZH H I I pI I I J J J K wR }R R R S S S S S > > ?? ? ? a@ q@ @ @ @ A gA A B nB B C D D D E E E 0F @F OF eF F F 6G G G =H H ~I I [J J J fK K K L L 4L eL L M SM M N ]N MO O *P [P P 9Q RQ Q Q Q R 8R R R &S vS S 0T U sU U .V }V W "W W W W W X WX X X FY Y Z Z C[ [ [ M\ \ \ ] ] ] ] ] I^ ^ ^ N_ _ ` a fa a 'b b c *c c c c c d wd d #e |e e Df 8g g "h Uh h >i Yi i i j j Nj j k Rk k l sl gm m Qn n n mo o p $p 3p Jp }p p /q q q Hr r s s t t u u u Av Sv bv yv v w ^w w x wx x y !z z z :{ { { r| | | | | 5} } } :~ ~   R  k  Ă ۂ  f  k ل 3 '  D + F Ј  ; ?  ` T > q ɍ Y t   6 i  m Ɛ 4 ޒ l , > M d I b ͙ % Қ \ n } Ǜ  y ˜ $ < ʟ U L Q  i *  - ɧ ا " z Ԩ &  G ; % X B ]   R  V  w k DZ U s  * 9 P ۴ 5 N  I [ j f   ټ ͽ ) B ҿ w : ?  W  p    i  n 6 *  G / J ? C d X B u b }   ( ? r $ v = u 7 I X o T m  0 e w ( - E  ^ V  [ #  s  4 ; 0 4 U I 3 f P k   - `  d + y c  $ 6 E \ A Z   V h w  s   6   O        J   O    g  (  . # { ' H <  & Y  D _    ! T   X   y m  W   r   ) 8 O   4   M         G Y h    d   }  '! ! ! @" " " x# # # # # ;$ $ $ @% % & & X' ' ( q( ) ) ) ) ) ) * l* * + q+ + 9, -- - . J. . 6/ Q/ / / / 0 F0 0 0 J1 1 2 k2 _3 3 I4 |4 4 i5 5 6 6 /6 F6 y6 6 +7 }7 7 D8 8 9 9 |: : ; ; ; << N< ]< t< < < Y= = > r> > ? @ @ @ 5A A A oB B B B B 2C C C 7D D D E OF F G hG G H H H H H I bI I J gJ J /K #L L M @M M +N FN N N N O ;O O O ?P P Q `Q TR R >S qS S [T vT U U !U 8U kU U V oV V 6W W X X nY Y Y XZ Z ,[ %\ \ ] O] ] ] f^ ^ _ _ ` ` a Ta a b b Qc c d [d d e ee Uf f 2g cg g h kh h i i j j k Yk k l m Vm m n `n n o jo Zp p 7q hq q r pr r s t t t u ^u u v w [w w x ex x y oy _z z <{ m{ { | u| | } ~ ~ ~  c   `  j # t d A r  z ˆ  Ɉ  h щ "  e o ( y i F w Ə   А  Β  m ֓ '  j % t Ė - ~ n K | ˙  ՚ ś  Ӝ " { C 7 ! T  s ͡  ޣ 6 W K 5 h  թ 1 J  k _ I | Ԯ - E ӱ  ^ %  s ϴ ] A Y  r ˹ 9 q U ý   m . M  i 1 %  B a $ } E 9 # V  u  8 Y M 7 j  3 L  m a K ~ / G  ` ' u _ C [  t ; s W   o 0 O  k 3 '  D c & ~ _  2 O 3   x 0       h   ; X   <          v  .          h x Y  , I -          e   8 U   9          q  ) D a   E            7          o  ' B _   C          |  4 ! ! ! ! ! " l" " $# ?# \# # # @$ $ $ % % % % % & & y& & 1' L' i' ' ' M( ( ) ) ) ) ) ) * &* * * >+ + + , , , , , - - w- - /. J. g. . . K/ / 0 0 0 0 0 0 1 $1 1 1 <2 W2 t2 2 2 X3 3 4 4 4 4 4 4 5 15 5 5 I6 6 7 7 7 7 7 7 8 08 8 8 H9 9 9 : : : : : ; "; ; ; :< < < = = = = = > (> > > T? p? ? ? @ |@ A ;A JA A A B B UB jB B 2 Y2 2 3 5I I I I iJ J J 1K gK K K L 7L L L L \M M M N DN ]N N N O O O P P P P :Q pQ Q Q ,R ER R R S S S T }T T T bV V V SX X X Y TY mY Y Z 'Z Z Z Z [[ [ [ $\ Z\ s\ \ /] H] ] ] ^ z^ ^ ^ ` L` e` ` a 6a a a a b b b Kc c c d e -e e e e @f vf f f 0g Ig g g h oh h h (i ^i wi i *j Cj j j j fk k k k l ,l ol l l l )m Cm m m m m @n Zn n n n o Wo qo o o p +p np p p p (q Bq q q q q ?r Yr r r r s Vs ps s s t *t mt t t t 'u Au u u u u >v Xv v v v w Uw ow w w x )x lx x x x &y @y y y y y tz { | | _} s~ ~ h   Y l a Մ ކ R ' B ҈  ۊ O a V ʍ  & m B ] x ڒ  + ? a 4 ޖ %  / J e x m Π    ; V j _ ӥ ަ  ] s h ܫ  \ s h ܰ ű 1 N k   @    @   7 ~  4  {  2  y P m & = _ 2 & + E  6 g : H W q \ c ~  + 7  : S  9 S  _ z + \ w   2 M h Y a > F # +  9 j / H b    z B ^ 4 O i : p A [ u  / r  G6 *Ge;XuaNgw0 f  m   ) _ x  ! : T     Q k    %hYn`}58=k; }{K]1 J H!c!~!!!#8#n#####$L$e$%&g&&5'')*J*c**+'++++,R,l,,, - .<.W.s.E/`/{//g000@4444X5556F6_6667r777(8^8w889,9999G:}:::1;J;;;;f<<<=O=h==>>>>>C?y??@<@U@@@ AcAAA B@BYBBBCXCCCC5DNDDDDMEEEE*FCFFFFDGzGGH/IeI~II"J;JJJJYNNNOOOOHP~PPTQQQ*R`RyRRS-SSSSQTTTUUUAVwVVW7WPWWW XX Y$YYYYTZZZZ[[][w[[[\1\t\\\\.]H]]]]^E^_^^^^_\_v___M`!a=aXasaajbbbbc5cccddd eff;f g%gghhhiiijk,kllzlllmm?n[nvnGoco~ovpppqq4r5sQssttBu]uvxxxyzz={v{{{|||~,~G~.JoN {ʄ!Wp†/C_zҊ8S&A\x׎"g8Sm˔+}fxʬ`Fܮ.į|β&xг"z̴$vε ظnV>50+&|!wrmh c^YTOh-(# ~$zupkf a\WRMHC>94/*%mhc^YTOJE                       $ , 3 ; C J R Y a i p x                        " ) 1 8 ? F M T [ b i p w ~                       " ) 0 7 > E L S Z a h o v }                       ( / 6 = D K R Y ` g n u |                   !(07?FMT[bipw~  (/7>FMU\dks{#*18?FMT[bipw~ &-4;BIPW^elsz $+3:BIQX`gov}  '.5<CJQX_fmt{#*18?FMT[biqx%,4;CJRYahpw~$,3;BJQY`how  '.5<CJQX_fmt{#*18?FMT[bipw~ '.6=DKRY`gnu|$+29@GNU\cjqx &-4;BIPW_fmt{#*18?FMT[bipw~ #*18=DKRY_fmt{ %+29@GMT[biov}  '.5;BIPW]dkry     # ) 0 7 > E K R Y ` g m t {                    ! !!!!%!,!3!9!@!G!N!U![!b!i!p!w!}!!!!!!!!!!!!!!!!!!!!" """!"'"."5"<"C"I"P"W"^"e"k"r"y""""""""""""""""""""#######*#1#7#>#E#L#S#Y#`#g#n#u#{####################$$$$$"$)$0$7$=$D$K$R$X$_$f$m$s$z$$$$$$$$$$$$$$$$$$$$%%%%%#%*%0%7%>%E%K%R%Y%`%f%m%t%{%%%%%%%%%%%%%%%%%%%%&&&&&#&*&1&8&>&E&L&S&Y&`&g&n&t&{&&&&&&&&&&&&&&&&&&&&' ''''$'+'1'8'?'F'L'S'Z'a'g'n'u'|''''''''''''''''''''( (((($(+(2(9(?(F(M(T(Z(a(h(o(u(|((((((((((((((((((()))))$)+)2)9)@)G)N)U)\)c)j)q)x))))))))))))))))))))* *** *'*.*5*<*C*J*Q*X*_*f*m*t*{*******************+ +++ +%+,+1+8+=+D+I+P+U+\+e+l+u+|+++++++++++++++++, ,,,%,,,5,<,E,L,U,\,e,l,u,|,,,,,,,,,,,,,,,,,- ---%-,-5-<-E-L-U-\-e-l-u-|------------------. ...".).0.9.@.G.N.U.\.c.j.q.x..................../ /// /'/./5/P? @2AoEoMoSoYo_oeomosoyoooosppqqqBrprrsnsmtut}ttxw{{8|||A}q}}~G~d a=S "&17^BJPV^elqu}I5\Z{CIOU[`dhow|gy%-26:@F1g   %   &,28>DKT8 $%i&J'(j*R+ ,-!-(.22Y3`3x334:4@45x5566N NNN!N'N/NNOPQQFR]RWSnShTTxU)VVWVɗØژԙNOW_gpv|7?m12IչɺUln!)19AIQYaiqytzuKYoOd<Qg]sxC 4%+17=EKQW_ekrxDv;Z~)4u$DHSs _j!t+`j* ,a.2H~3w"8D         \)*ABY/p& pib @  !X"_"g"o"w""""""'#V7]7c7i7o7u7|77777777777]8dEEFGcGNI'a/a5a;aAaJa`abzzzzz>|E|M||P")09O&.6>F#J ?bx}i"(/7=CIOXnd5& 71HBYR\   n      `wp2,C))))* ***4* +"++,,,-)-....z//0000 1712%223334+444,5C555C6J6R6Z6b6j6r6z6666666666666b7III!J1JwJJJ KKSKjKKMLbbbbbbbcccdfe|esffgghh^itijjmrst`uvv6xݎ 7Đ(?˒AX.Ô˔Ӕ۔$Ǘ͗ӗڗ!@x (`}ӚUМ̣RXwj0fhs[wdRcR9űvòʲDgn˴,*¸Ƹ˸иظ#^nƹCSoۺtϻ#':rvżؼ½ov~@XW3HsR N\T=TW59nMDWPcBUGZmqcUA  "                v,0>OB )XfwOQ>Ygx?K\z} C T    !f"j""B# $$$9$?%1&6&I&^&&('%(*(:((v)z)))))H*****v++,,1,,-#-4----..?.W00000N2222233333345 55/56U7Y7n71888 99::):::;;<<C=G=[=====>>.?2?D??2@6@G@@A AA)ARAiCCCCC`EEEEEFFFGGGZHhHzHHHHI=I~IIIIJ KKLPQ.RRS,S=SSSST#TTTT UUXXXXXXKYYYkYYAZOZaZM[ekllllll mkmmmnnnoooo$p:pp6qDqUqos~P҅Ćp|%~ZgۚbhntzȝΝԝ۝  &,3F[j}ʞOu$-e(3$kv8G#qfDi%| Vf CU|5   < J Z w          m$ $ = = > !> > > > > > > > > > > > > > > > > ? ? ? ? ? %? ,? 3? :? A? H? O? U? [? c? i? o? @ @ aB B F &G ,G IG G _H H I I wI I I J J J Q {R R R R S S S S S AT T T T T -U 3U 9U U 'V -V V HW YW X X X Y Z Z EZ cZ Z Z Z [ '[ <[ q[ [ [ \ \ H] ] ~^ _ _ Y` c d m 0n Hs s s 5u u u Uy z z  ; ֝  Ġ * ^ p p Ƣ ţ ܣ S j  1 l  ( C i    5   Q ǻ e 9 C o     " ' , 3   1       % + 1 7 > F L S Y ` g n 0 b Y j W e v l " 8 \ ) ?  5  + t  H a | ^ E & K Q m  +  c O 9 @ c m      >   4  k  H a    u  ! D N q {      L  ) B  y  V o       f     <   ' =  1 G    A X * W   & <   1     ! ! '" " " # Z# {# # # L$ `$ $ $ % % & & ' ' e( ( ( )) J) ^) ) * /* * * s+ + , , T- - 3. ^. . . / ,/ / / / 0 0 A1 U1 2 2 "3 3 4 -4 o4 4 4 4 i5 5 5 V6 j6 7 $7 Q8 g8 8 _9 9 9 @: : : : :; ; ; '< ;< < < "> 8> > 0? ? ? @ d@ @ @ A VA jA A B B B C D D D oE E E 3F TF hF F %G 9G G G }H H I I ^J J >K iK K L #L 7L L L M M M LN `N O O -P P Q \ \ \ /] ] ] ] :^ ^ ^ =_ R_ ` ` Sa ja a pb b c ]c c c c hd d d ke e 3f Hf g g &h h i Bi i i j j j j k k k bl wl m m Un n Eo qo o p 9p Np p q 3q q q r r s s t t tu u u Ev hv }v v Mw bw w x x x z %z z +{ { { | v| | | &} ~} } )~ >~ ~  ? V \ Ձ  L ʂ ߂ W ă Z o " 7 p   / y Ԉ ܉ O d B 1 ]  % :  ʐ } ˒ p ^ Ք 0 S h 8 M    `  h }  ( ۝ ) @ Ο F 2 š = @ U   V m s  ` ާ k è ب n 6 K )  F  #  f { ˱ Y Ѳ J w  ? T ̴ $ 9 ϵ  { M p U j  ȼ ݼ  - 3 ֿ { + . C D [ a  O Z ] r % : s   3 }  S h F : f . C  ( y i ; ^ s C X    !  i  q  1 2 I O < G J _  ' ` w  } $ n  y | D Y 7 ' T  1   t g W ( K ` 0 E   Z } b w " # :  @   0    ;   > S   T k  q  a l o 7 L   *   H    %      h }   [  J v   > S  # 8         y   K n   S h     ! +! ! 1" " " !# |# # # ,$ $ $ /% D% % & E' \' ' b( ( ) R) ) ) ) ]* * * `+ u+ (, =, v- - . . / :/ / / 0 0 0 0 0 1 1 Z2 o2 3 3 M4 4 @5 m5 5 6 56 J6 6 7 /7 7 7 8 8 9 9 : : o; ; ; @< c< x< < H= ]= = > > > @ @ @ &A A A B sB B B #C {C C &D ;D D E c Tc c Ld d d Te he f f 5g g g h h h i j j j Hk \k l l Cm Ym m Qn n n Yo mo p p :q q q r r r s t t t Mu au v v Hw ^w w Vx x x ^y ry z z ?{ { { | | | } ~ ~  R f M c [ c w D  Ά  W k  % R h ` Œ h | I   Ӑ   \ p  * W m e ǖ m Ę N  Ě ؚ    j  2 G % ѡ ! ' ~ F [ 9   Ш  5 ê ; Z o M Ů  1 2 I ױ O n Ӵ a ٵ 0 E F ] c Ϲ л u D Y ! Z q w  X m 5 n    l 4 I ' # ) H ] ;  7 = \ q O  3 4 K Q p c 2 G  H _ e w F [  # \ s  y  Z o " 7 p    # P  7 U 0 i ,    Y   ( @ ^     :    g     ,    Y  z J  1 O   )    V   % = [     5    b   1 I g     C    p     3    `   / G e     @    m   0! ! ! ! ]" " " ,# D# b# # # $ $ =% % % % j& & & 9' Q' o' ' ' ( ( J) ) ) ) w* * * + + ;, , , , h- - - 7. O. m. . . / / H0 0 0 0 u1 1 1 D2 \2 z2 2 2 3 3 U4 4 4 4 5 5 5 6 6 H7 7 7 7 8 8 8 9 9 F: : : : s; ; ; < < F= = = = > > ? ]? v? ? @ @ @ "A A A B $B B +C BC D =D D E (E ?E E FF ]F (G WG G H BH YH H `I wI I I J |J J kK K L `L L L ;M M M N N O zO O O UP P P 1Q JQ jQ Q Q R R ]S S S S T U U U V xV V V W W X 2X X +Y Y Y Z -Z Z 4[ K[ [ [ [ P\ h\ ?] n] ] 4^ Y^ p^ _ w_ _ Z` ` ` Oa ta a *b b b tc c d id d d De e e f 9f Yf f f g g Jh h h h i i j aj zj j k !k k &l l l m (m m /n Fn o @o o p +p Bp p Iq `q +r Zr r s Es \s s ct zt t t u u u nv v w cw w w >x x x y y z ~z z z Y{ { { | | 8} } } } s~ ~ ~ O h     { ہ   5  0  2 х 9 P  K  6 M T k 8 f ̊ , Q h  o Q F k !  6 ' Ò b ʓ > W w Օ  j ʖ  $  ' > ԛ C [ $ { ۝    y Ӡ > G h | 9 M M x  2 F   g Ө $ P  ۪ ? ^ 2  Z r  0    " = X 1 ~      u   N k  ' D z     R i   8 g          C    9 P     1   b     7    !! 8! ! ! " # !# $ I$ e$ G% % & & G' ' ) * * + r+ + + , , , n- - - - . %. k. . . . / %0 0 1 1 '2 B2 ^2 2 -E I I I PJ mJ J K 5K kK K K "L L L L CM `M M M N HN N N N O O O jP P P !Q >Q tQ Q Q 0R R R R S S S dT T T IV fV V :X WX X Y "Y XY Y Y Z Z Z Z B[ _[ [ \ (\ ^\ \ \ 3] ] ] ] a^ ~^ ^ _ ` P` ` ` !a a a a ib b b 2c Oc c d d e ue e e 'f Df zf f f 4g g g g Vh sh h i ,i bi i i .j j j j Mk jk k k k l 2l xl l l l 2m Im m m m n In `n n n o o `o wo o o p 1p wp p p p 1q Hq q q q r Hr _r r r s s _s vs s s t 0t vt t t t 0u Gu u u u v Gv ^v v v w w ^w uw w w x /x ux x x x /y Fy y y y z { { | | K~ z~ W o Ȁ ԁ E s P h ͆ + F ʊ : h E ] ݎ  F a | Ò ޒ   F # ; Ö ̘  3 N Q  \ t j v  $ ? B q N f z Ʀ ͧ ب L z W o ˬ ׭ K z W o _ ʱ  6 S p w %   v %     l w   j u  $ U r  D ! 9 > 0   ? n < ` w c m   1 < %  > t B Y  . c ~ / / ` {  6 Q m : _ g  D L  ) 1 c "  q 3 Q h $ i c I ` 8 T r P m ! > u  F d {  5 | //M@]zHeR^{ 4 j T q   - c   % C Z     Z q   +qGr8dm,D5lu $LdU> 6 !L!g!!!"#<#r#####$P$b%%P&&''2))*N***+++++,[,r,,,-%.@.\./I/d//>0k00c1444?5\5556J6666Y7v778,8b8889y999.:K::::5;;;;M<j<<==S===>s>>>*?G?}?? @@@@@@JAgAAABDBBBB?C\CCCD9DDDD4EQEEEE.FFFF+GHG~GZHI3IiIII&JJJJLNNNkOOO/PLPP;QXQQR.RdRRRSoSSS8TUTTfUUU(VEV{VVW;WWWWXXYuYYY;ZXZZZZ [ [f[}[[[ \7\}\\\\7]N]]]]^N^e^^^__e_|___`&aAa\awa5bobbbcc:cccdddef$ffggghhiiijjkkl!lllmmmDn_noLogoMp{ppqqq s:sUstttFuLxzxxwyzz${A{z{{|||}~0~π5L5Rb%[ƆLJHc֊׋!<*Ea P!<Wrϔ`/g|Od7ˮȯk*Գi~(ҵu]rEZ-B$:50+& ! Wm}xso)$  \rWmRhMcH^CY>T9O4J                       ! ) 0 8 @ G O V ^ f m u }                        & . 5 < C J Q X _ f m t {                        & - 4 ; B I P W ^ e l s z                       % , 3 : A H O V ] d k r y                  %-4<CJQX_fmt{%,4;CJRYahpx  '.5<CJQX_fmt{#*18?FMT[bipw~ !(07?FNU]dlsz$+29@GNU\cjqx  '.5<CJQX_fnu} ")18@GOV^emt{ !)08?GNV]elt|$+29@GNU\cjqx  '.5<CJQX_fmt{$+3:AHOV]dkry !(/6=DKRY`gnu|#*18?FMT\cjqx  '.5<CJQX_fmt{  '.5:AHOV\cjqx~ "(/6=DJQX_flsz $+28?FMTZahov|     & - 4 ; B H O V ] d j q x                    !!!!!"!)!0!6!=!D!K!R!X!_!f!m!t!z!!!!!!!!!!!!!!!!!!!!" """"$"+"2"9"@"F"M"T"["b"h"o"v"}""""""""""""""""""""# ### #'#.#4#;#B#I#P#V#]#d#k#r#x####################$$ $$$$&$-$4$:$A$H$O$U$\$c$j$p$w$~$$$$$$$$$$$$$$$$$$$$% %%% %'%-%4%;%B%H%O%V%]%c%j%q%x%~%%%%%%%%%%%%%%%%%%%%& &&& &'&.&5&;&B&I&P&V&]&d&k&q&x&&&&&&&&&&&&&&&&&&&&&' '''!'('.'5'<'C'I'P'W'^'d'k'r'y''''''''''''''''''''(( (((!(((/(6(<(C(J(Q(W(^(e(l(r(y(((((((((((((((((((() )))!)()/)6)=)D)K)R)Y)`)g)n)u)|)))))))))))))))))))*****$*+*2*9*@*G*N*U*\*c*j*q*x*******************+ ++++"+)+.+5+:+A+F+M+R+Y+b+i+r+y+++++++++++++++++, ,,,",),2,9,B,I,R,Y,b,i,r,y,,,,,,,,,,,,,,,,,- ---"-)-2-9-B-I-R-Y-b-i-r-y------------------. ....&.-.6.=.D.K.R.Y.`.g.n.u.|.................../////$/+/2/9/@/G/N/U/\/c/j/q/x////////////////////0 000 0'0.050<0B0H0N0T0Z0`06B7[77e8~8!999:';@;<]=@??"AsAVCC;EEp^qqZr|rr$sSt{ |]|||X}z}}7~GR; \Fom>ObUpl Q   ^# u  4!8"%%'S'')*+-+-q.22o333+4O4Y556l6NOvPkQQ,RPR=SaSNTrT_U VVrW`oo pZppqIqqmrrr!snsss-t]tṫrpɋ3b Y}F0R<^Hjbn1۬eGu/\@hM0Szd7MI$vv'El;Y (Om@dQu%q;p0EZ  } u *;(L9J...?/m///Z0001r111)2223A334/4445{5IIIKLQN-OP{Q-RRRSSSSTTUUUVVVWWX(XXYYYZAZZ[[\5\W\\2]]'^N^p^_P``aaHbub3cccPd4hJs{tttt$uEuxuЍΏߐ&7$Ht͘ޙ˚ݛ+ضA$<ȹ)Ӻ4_Lxټf;c1YF[@g (R/Ld2WY.3=]JTt _iE3Nk3jl<p`q ,x.D         e} 4!LXh[TM]+   !b!2":8g8EEFGCHHTa>bz{j{{$|ӨCDlbLn*;(L9tj{C   K x e  v  =jW%6#'***+v++,d,,,-}-- .k...V///0r000*1112y223g333444 56555#6I*JZJJJJKCK]KKKcccdPepeZf}fgggshh5ihiRjtjnUssIuuvwr*w2K ܘ2jޙRoŚ fL՟GeiڥXuIѩԫ¬ӭ{`ݱV\³Lg}6LbZػ 0aμ&J?n=TWKWe rjw*Wv;.vMYK~ P&Ez: 7R #J    w    W    = '    9G_^  a&aox_Zg,bp\5Tl`1 L    7!!s""|#-$%~%@&S&p&&_'4(D(S))))!*o***Q++,(,, -,-u--..&..3//000\11(22223j3333Q45#5 66b77k88J9 ::;::+;<< =P====d>>?;??@?@@@A!A9AAFBBCCCnDD:EEEEF}F GGGcHqHHHH I'IgIIIIJJYKLRMPQ^RR'S5SSSSST~TTTU[UYTYbYYZJZXZZ>mtmm~nnnpo.pp q?qMqq#YdVƘd?Rv ApKf{@[pD_+N` c._w$Lna!hq   E S i        ( $ = > t> @ WA zB F =G ZG G pH I VI I dJ J yK R R R S S S T T "U yU U V QW X zY Y Z 7Z UZ Z Z Z Z [ 1[ a[ {[ [ S\ \ 4] ] i^ ^ !` b` d d m 9n s s t u u v uz z z X ˔ D R  C g Q ϣ  ۦ ] J $  i ث 0  G X ڵ = ;   ' c H л B O ' # X > s " b  ` n [  , x [  3  )   ^ ~ 0 R p  G v % ` > `  { ; l ' X  B ' m T 7    ) d  %  V   R    !   N 5  { b  E    7 r  3  d   `  '   q   p  7   L _    1 c {  ;    ( K  7 g    0 b  % q  ;  ! ! ! 1" " " 7# d# r# # # $ V$ $ $ N% % & & q' ' ' r( ( ) 3) A) T) ) ) %* k* * + }+ c, , @- x- - @. l. . / / "/ P/ / / 90 0 0 K1 12 2 3 F3 3 4 ;4 4 4 4 4 5 s5 5 6 `6 6 7 8 [8 8 9 i9 9 : t: : : : : D; ; ; 1< < < = ,> > > :? ? ? A@ n@ |@ @ @ A `A A A XB B C C {D D E |E E F =F KF ^F F F /G uG G 'H H mI I JJ J J KK wK K L L -L [L L L DM M M VN ߈  1 / Y B , g č > l ێ  / _  ]  p Ւ Z k ; I ] B J  Ù ʚ 9 k y  r  z Ξ 3 P ɠ f G J  ` } % Ƨ ԧ  u ͨ  x թ @ )  N & U ĭ   H F  p Y C ~ ۲ W ' 5 I y ִ . w ٵ 6 t & X f z  _ g Ҽ = T 5 8 N  k   d  g /  }  =  B  5 3 ] F 0 k G u  $ 8 h  f % y c v  F T h M U  + B t # { & < Y  p Q T   j *  3 & $ N 7 ! \ 4 c   & V T  ~ g Q d  3 A U : B  3 e s  l  t  -   J   d     E   H    ^   { &  v  y A *   O  ( W     J   H   r [  E   W   & 4 H x  - v  5    s     $ V d x   ]   e  ! ! ! ;" " " U# # # # # 6$ $ $ 9% % & & O' ' ( l( ( ) ) ) ) ) * g* * + j+ + 2, - - . @. . / I/ / / / 0 <0 0 0 :1 1 1 d2 M3 3 74 r4 4 M5 |5 5 6 +6 ?6 o6 6 $7 m7 7 ,8 8 9 9 j: : ; |; ; < K< Y< m< < < R= = = Z> > ? @ @ @ 0A A A LB ~B B B B -C C C 0D D D E FF F G cG G H |H H H H I ]I I I `J J (K L vL L 6M M N >N N N N O 1O O O /P P P YQ BR R ,S gS S @T nT T U U 1U aU U V _V V W W rX X \Y Y Y QZ Z %[ \ ~\ ] E] ] ] P^ ^ _ _ s` ` ` Ma a b b Hc c d Vd d d ^e Df f !g Yg g g Uh h i i xj j k Rk k l l Mm m n [n n o co Ip p &q ^q q r Zr r s s }t t u Wu u v v Rw w x `x x y hy Nz z +{ c{ { | _| | } ~ ~ ~  \   W ف  e m S 0 h d Ć   a   \ ދ  j  r X 5 m  i ɐ Ē  f  a  o  w ] : r ƙ  n Κ  ɜ  t ѝ < %  J [ ơ  ԣ 1 P 9 # ^  o ڨ é ( E d M 7 r Ϯ & װ < Y x a ƴ K :  P ո  m Ĺ ! u ڻ _ N  d $ 5 s b *  x 8 I   v > '  L ]  3 R ; % `  q * G f O 9 t ( > [  z c M <  R  o # w a P   f & 7 u d ,  z : K  ! X Z  ) G " e  s  a      c   2 P   +    o      q      a      c  R T # A     ^      `   / M   (    j      l   ; Y   4    x      z  &    h      j   9 W   2    u      w  # e! ! ! ! ! " g" " # 6# T# # # /$ $ $ % r% % % % % & t& & ' C' a' ' ' <( ( ( ) ) ) ) ) * * * * -+ + + + p, , , , , - r- - . A. _. . . :/ / / 0 }0 0 0 0 1 1 1 1 +2 N2 l2 2 2 G3 3 4 4 4 4 4 4 5 *5 5 5 86 6 6 7 }7 7 7 7 8 )8 8 8 79 9 9 : {: : : : ; ; }; ; )< < < = {= = = = > !> > > B? g? ? ? @ j@ A 3A FA A A A B KB cB B 5C C D ND aD D E E 2E fE ~E E PF F 5G hG {G G &H 4H LH H H I jI I I I aJ J J xK K K 5L iL wL L L L EM M M N N N OO O O O O O _P P Q ;Q [Q Q Q >R R S S S S S S T 8T T U YU U #V 6V V V V W ;W SW W %X tX Y [ [ [ [ 5\ Z\ \ L] ] ] ^ =^ K^ c^ ^ ^ _ _ _ g` ` ` $a Xa fa ~a a a 4b b b c c c >d rd d d d d Ne e f *f Jf f f -g g g h h h h h i %i i i Fj kj j j k nk l 7l Jl l l m m Om gm m 9n n o Qo do o p p 5p ip p p Sq q 8r kr ~r r )s 7s Os s s t mt t t u du u u {v v v 8w lw zw w w w Hx x x y y y Sz z z z z z c{ { | | | | m} } } } } ~ }~ ~ 4 Y y   \ & 9 > V ( w  A T ˄ % Y q ۅ C ) \ o  ( @ t ^ E w  5 C [  y Ȍ ^  O ] u +  ' ґ \  l ԓ # H h ˔ K  ( Ӗ - E  f / B  G _ ɚ 1 ś ( M  5 =  _ T ܠ H $ Q _ r C O Ƥ  Z  ) < j S q  ݨ 1 ^ Ʃ   B + I h  = d " Z    1 L g =          ]   6 l     6 \    D v         5 P   ( C z    b =   q    ) D    ! +! b! ! ! " # 0# '$ X$ t$ S% % +& & V' ' ) * * + + + + , , - {- - - - . O. u. . . 7/ 0 40 0 1 2 62 Q2 m2 2 9E I I I _J J J 'K ]K xK K L /L L L L RM M M N :N UN N N O O O P yP P P 0Q fQ Q Q "R =R R R R S S T sT T T XV V V IX X X Y JY eY Y Z Z Z Z Z Q[ [ [ \ P\ k\ \ %] @] ] ] ^ p^ ^ ^ ` B` ]` ` a .a a a a xb b b Ac wc c d e %e e e e 6f lf f f &g Ag g g h eh h h i Ti oi i j ;j j j j \k k k k k %l \l l l l m ; o  * E ` | R 7  t o 1 $ % @ [  z u r  V {  G c ~ _ 0 f  7 S n  ( _ ?."?]PmWD_ m& \ w c    U p   2 M     > d    U{=SDuy6Z(vh:VzJ' C '![!v!!!".#d##### $B$]$n%%_&&-''>) *@*[**+++++,?,e,,,,.4.O.k.&/X/s//J0z00o1444N5556<6W666 7h7778T8o88 9$9999=:s:::';B;;;;\<<<=E=`===>>>>9?o???2@M@@@AYAAAB6BQBBBBNCCCC+DFDDDDCEyEEE F;FFFF:GpGGfH%I[IvIIJ3JJJJLNN OzOOO>PtPPJQQQ RVRqRR S%S~SSSGT}TTuUUU7VmVVV-WHWWWXXYYYYYJZZZZZ[J[p[[[\*\a\\\\]A]x]]]]2^X^^^^_I_o___1`a5aPakaaAb~bbbc-cIcccddeef3ffgghhhiiij k$kkl0lllmmmSnnn)o[ovoYpppqqqsIsdstttUuXxxxyzz3{l{{{|||}$~?~ۀBgDzq„Mh և '׈!Wr0K9Tpώ_0Kfޔ$m VҫqYAծֱuhɳsfǵȸgO7.z)u$pkfa\ WRMHC>a }yid_Z UPKFA<72-(#fa\WRMHC>697R77\8u8999:;7;< =5?d?AFAKCzC0EgExpQqqGrurrsHt|{|T|||D}s}}.~@%4S7z`a7EVIiaC   W j  !"e%%&L'h')*+,$-c.22e3334E4O555a6NOjP_QQRIR.SZS?TkTPUUVfWYoooSpppBqqfrrrs`ssstVttŇ dފb)M|Ds?"K.W:cyT}`#ͬWnU2a?w&Lk] 0F*|ll;b 1OvEc1]Bnb/d$9N  n i #4E*_>.x.. /f///K0~00 1c111"2{223:333(444 5I5IIIKLCNOPmQRORRySSSSTTUUUVVVWWWXXXYY Z7ZZ[[\ \M\\]]^9^f^_;``aa>bkbcccId&h5smttttu>unuɍڎА0AeƘיΛߜö2p߷v5V̺%X=qʼWz|-\#R?T2`h!xK}%B] +h%K'w%z/V<FmQ [7x@ ]c ^ 5fRcz%it         Vn-ENYOHAA  !0!&"/8`8EEFG8HdHMa0bz{8{{{Ȩ<6e[>g#4E*h[l4   < q V  g  .cH/ *y**+g+++U,,,-n--.\...$/}// 0c000#1|112j222X3334p444/5556I#JPJzJJJ K9KVKKKbccdEeieLfvfYggehh'iaiDjmjtn6ss:uuvw c#| E+DٓҘ (`}ԙHeؚ\>˟=Wң_~ХNk?ǩݪʫɭqVȱHyG~ ߸B`s EX޺Lzѻ)=xǼۼC `6MI%P^d\i TIh q PFZRfDXI]Ps0f}-HSv    E    H    .    ~2@UOZv ORZhRPKA[iFMbQ E    (!!l""J#&$%J%9&L&f&&+'-(=(/)|)))*K***B+++!,,,%-f---.../m/Z000M111Q2222633334 5556[7v79889::1:::; <<I=^===U>>>4???8@y@@ AA/AABBlCCC_DDEcEEE FIFGGG\HjHHHHII]IIIIIJJKLCMPQTRR S.SpSSSS ToTTTTLUXMY[YYYCZQZZ(mmmmpnnnbo'ppp8qFqq RVHވV8Koz:fA_t6Ti{ :XGYUXmEXS|]fh   > L _ |       ! $ = = f> @ IA eB F 3G PG G fH H HI zI VJ J kK Q R R S S S T T T kU U V JW tX oY Y Z -Z KZ Z Z Z Z [ *[ W[ t[ [ 9\ \ )] ] ^^ ^ ` [` qd d m 2n |s s t iu u v Gz z z I w ڗ = # ٝ - ` B s ȣ t V ; p   7 ɫ z 8 N ˵    Y > w ɻ ; H    4 7 i [ Y g )  % j A , "   P w & K f  9 a  K ) V  ^ % e  Q ;  f E -   r  Z    J   K  w   x  G &  t S ;    + h  ,  X   Y     b   i  -   B X    * Y q  4 x    D  0 ]    ) X   b  ,  ! ! ! *" " " # ]# k# ~# # $ O$ $ $ A% % & & d' ' ' k( ( ( ,) :) M) x) ) * ^* * + v+ V, , 3- n- - 9. b. . . / / F/ / / ,0 0 0 D1 $2 2 3 <3 3 4 14 4 4 4 4 5 l5 5 5 Y6 6 7 7 T8 8 9 b9 9 : ]: : : : : =; ; ; *< ~< < = %> > > 3? ? ? *@ g@ u@ @ @ A YA A A KB B C C nD D E uE E E 6F DF WF F F (G hG G H H `I I =J xJ J DK mK K L L &L QL L L 7M M M ON /O O P GP P Q @Q Q Q Q Q $R {R R S hS S "T U cU U V qV V W kW W W W W KX X X 8Y Y Y Z 3[ [ [ A\ \ \ L] ] ] ] ] =^ ^ ^ @_ _ ` ` Va a b sb b c zc c c c d kd d e ne e 6f g g h Ah h i Gi i i i j :j j j 4k k k el Gm m 1n pn n Ko vo o p (p

8 i K 5 t Բ P | ޳ . B o ϴ ' i ҵ ( | f   Q _ s X  Y ˼  ־ 6 ۿ =  . 1 G  d l ] ` ( v 3 8 + % V 8 " a @ k   1 ^  X  k U o ? M a F G  $ + m {  t  u 5 R Y J M  c )  |   G )  R - Y  L  F  w Y C ] , : N { 3 u 4 r   ^ l e  f  &   C   M     >   A    W   t  ~  o r :    E  ! M     @   :   k M  7 v  P {   - A n  & h  '  {  e      O ] q   V   W  ! ! ! 4" " " ># # # # # /$ $ $ 2% % % & H' ' ( e( ( ) o) ) ) ) * `* * * c+ + +, - y- - 6. . / ?/ / / / 0 20 0 0 ,1 1 1 ]2 ?3 3 )4 h4 4 F5 r5 5 6 $6 86 e6 6 7 _7 7 8 8 r9 9 \: : : u; ; < D< R< f< < < K= = = L> > ? @ @ @ )A A A 5B wB B B B &C ~C C )D D D E ?F F F \G G H eH H H H H VI I I YJ J !K L oL L ,M M N 4N N N N N 'O O O !P P P RQ 4R R S ]S S 9T dT T U U *U WU U V QV V W W dX X NY Y Y JZ Z [ \ w\ \ ;] ] ] C^ ^ _ _ f` ` ` Fa a b b Ac c c Od d d We 7f f g Og g g Hh h i i kj j j Kk k l l Fm m m Tn n n \o ] ? ) h Ȯ  u ɰ 5 R q S = | ܵ 3 ݷ I Ǹ  f  g ӻ Q G  ] ۿ  z ' { e  [ #  q . ; y  o 7   B O  , K -  V c # @ _ A + j ! w 7 T  s U ? ~ 5 K  h  i S I  _  | ) } g  ] %  s 0 = {  A S " =  N  l  J      \   + F       X      j      J      \ ; | M  7     G      Y   ( C       S      e   4 O   %    a      s      Q      c   2 M   #    ^      p   N! ! ! ! ! ! `" " # /# J# # # $ $ $ $ [% % % % % & m& & ' <' W' ' ' -( ( ( ) h) ) ) ) ) * z* * + + + + Y, , , , , - k- - . :. U. . . +/ / / 0 f0 0 0 0 0 1 x1 1 2 G2 b2 2 2 83 3 3 4 s4 4 4 4 5 5 5 5 )6 6 6 7 f7 7 7 7 8 8 8 8 (9 9 9 : d: : : : : ; v; ; < < < < d= = = = = > > > 2? `? }? ? @ Z@ @ )A ?A A A A B AB YB B .C tC D DD ZD D E E +E \E tE E IF F .G ^G tG G H -H EH vH H H cI I I I QJ J J qK K K L bL pL L L L >M M M N N N 8O |O O O O O XP P Q 4Q QQ Q Q .R R R S {S S S S T .T T U IU U V /V V V V W 1W IW W X dX Y 2Y HY Y Y Z Z JZ bZ Z 7[ }[ [ [ %\ S\ \ E] u] ] ] 6^ D^ \^ ^ ^ _ z_ _ `` ` ` a Qa _a wa a a -b b b zc c c 'd kd yd d d d Ge e e #f @f f f g g g h hh h h h i i i i 6j dj j j k ^k k -l Cl l l l m Em ]m m 2n xn o Go ]o o p p .p _p wp p Lq q 1r ar wr r "s 0s Hs ys s s ft t t t Tu u u tv v v !w ew sw w w w Ax x x y y y m . < T r W  H V n $ ҏ  z ȑ ޑ E e ͓  A ^ ; ە ! ̖ ږ # ;  V % ; = U š * p  F + ݝ  3 O | 3 ՠ A J X k < | 2 S | ץ  " 5 `  F j ֨ * T 8 ު  B ԫ a 3 ]  P    ' B ] 6       z   S   , b }    , U    = l         + F    < p    R 6   g     :    $! X! ! ! " # &# $ N$ j$ L% % !& & L' ' ) * * + w+ + + , , , q- - - - . E. n. . . '/ / *0 0 1 1 ,2 G2 c2 2 2E I I I UJ J J K SK nK K L %L L L L HM ~M M M 0N KN N N N O O O oP P P &Q \Q wQ Q R 3R R R R S S S iT T T NV V V ?X uX X Y @Y [Y Y Y Z Z Z Z G[ }[ [ \ F\ a\ \ ] 6] ] ] ] f^ ^ ^ ` 8` S` ` a $a a a a nb b b 7c mc c d e e ze e e ,f bf }f f g 7g g g g [h h h i Ji ei i j 1j j j j Rk k k k k l Rl {l l l m 5m im m m m #n Ln n n n o :o co o o o p Qp zp p p q 4q hq q q q "r Kr r r r s 9s bs s s s t Pt yt t t u 3u gu u u u !v Jv ~v v v w 8w aw w w w x Ox xx x x y 2y fy y y y Hz { { | 8} P~ ~ Z  ̀ ׁ 2 J | S ƅ І + 0 K É ͊ ( ? q H  F  K f Ȓ   O & ̖ ј   8 S V _ o y Ԟ ) D G z Q  ̦ ҧ  ۨ 6 Q Z Ь  ڭ 5 P Z d б < Y v | .  ` { .  ` % W q z " T o x R ) [ x  M $  C  3  $ E u > L c 8 p   c A * & A  y  E y [ 3 h 4 4 e  ; V r = "   d h '  v  6 T  j n h  L q  = Y w U & \ x - I g ! U  5$5SFcM:Uc R m Y    K f   ( F z    4 ]    Kt-Ly=kr/wSoW3OsC 9  !Q!l!!!"$#Z#u####$8$S$g%%U&&#''7)*6*Q***++++,5,^,,,,-*.E.a./N/i//C0p00h1444D5z55526M6666^7778J8e8889~9993:i:::;8;;;;R<<<=;=V=== >x>>>/?e???(@C@@@@OAAAA,BGBBBBDCzCCC!DWWWWXXYzYYY@ZvZZZZ [@[i[[[[#\W\\\\]:]n]]]](^Q^^^^ _?_h___!``+aFaaa|a:btbbbc#c?cccddde f)ffggghhiiijjkk l&lllmmmIndn"oQoloRpppqqqs?sZstttKuQxxx|yzz){b{}{{|||}~5~Ԁ8]ف:pg C^͈̇Mhۊ܋ &A/JfŎU&A\wԔ_HījR:ήȱnZ³lXҷx`H0r'k"fa\WR MHC>94/Z {vrZU PKFA<72-(# _ZUPKFA<7{phr{2@+#8m0/ $ @ 6F7_78i88#999:+;D;<a=B??$AwAXCC=EEbqq~rr&sUt$|a||j}};~IV=$`KtoTdW:nV   `( w  9!="%,'')++---v.233-4T4^556n6NOxPmQQ1RRRBScSSTtTdU VVtWboo%p\ppqKqqorrr&sssss2t_tt·wu΋8d%[H5TA`Mlgs6 jLw4^EjR5UA9O`&{{,Jq@^-TrEfVw'v$=r2G\   w ,=-N>L...D/o///_0001w112+2223C3341444!55IIIKLVN2OPQ2RRRSSSSTTUUUVVVWWX-XXYYY!ZFZZ[[\7\\\\4]],^P^u^_R``aaMbzb5cccRd9hLstttt)uGu}uҍŽӏ(9)JyϘК-ڶF&>ʹ.պ9aŻQz޼k@e6[$H]Ei*T4Qf\ ^08B_OYvdnJ8S pPq >ue$v%.}3 I        j6&N]m]VO-  !g!4"<8i8EFEHHVaCbz{o{{)|ը EIndQp"  ,=-N>voH   P z j  {  Bl\'8()***+{++,i,,,--- .p...[///0w001,1112~223l333 44458555(6J_JJJKHK_KKKcccdRere_fflggxhh:ijiWjvjnusNuuvww,| 4$M7oWtʚ kQڟLjnߥ]zN֩٫Ǭحe߱[!^dzQ8gź_ʻk +LDs?V\fwo|/\{@2 3*0('+`?<@W($O  |  \  B r  dc"f:d#_{Rg@q e <   >$??(@@@>AAKBBCsDD?EEFFHHHHI,IlIIIJ^KLWMPQcRSSSTTT`UDYY:ZZXmnnuo0pp/qq=i[˘ iATxu Ph}E]rIa0Pb h8|>xf&js5 n      = > y> \A |B F BG _G G uH I [I I iJ J ~K R R R S S S T T $U ~U U W X |Y Y Z ` d n s t u v z ] Д  W V ѣ  _ O &  n ݫ 5 L ] ߵ B , h M  Q I ( @ x ? 9 ` !  . } m 5  + !  c 5 T u  L x * b @ e ! O ; & ,  o Y <    + i  '  X   T    #  P :  } g  J    9 w  5  f   b  ,   v   r  <   Q a   3 h   =    - M  9 l   2 g  ' v  @  ! ! ! 3" " " G# t# # # $ X$ $ $ S% % & & v' ' ' t( ( ) C) V) ) ) '* p* * "+ + h, , E- }- - B. q. . / $/ U/ / / >0 0 0 M1 62 2 3 K3 3 4 @4 4 4 4 $5 u5 5 6 b6 6 7 8 ]8 8 9 k9 9 : : : : : F; ; ; 3< < < = .> > >  [  S V  l /  8 + ) P < & a 6 h  ( [ Y  l V f  C W < G  E u  n  y  /   L   v    G   J    `  # } +  x  { C /   T  * \    O   M   t `  J   Y   6 J }  / {  :    x     6 f z   _   j  ! ! ! =" " " g# # # # 8$ $ $ ;% % & & Q' ' ( n( ( ) ) ) ) * i* * + l+ + 4, - - . E. . / N/ / / 0 A0 0 0 ?1 1 1 f2 R3 3 <4 w4 4 O5 5 5 -6 A6 t6 6 &7 r7 7 18 8 9 9 o: : ; ~; ; +< [< o< < < T= = = _> > ? @ @ @ 2A A A ^B B B B /C C C 2D D D E HF F G eG G H H H H I _I I J bJ J *K L xL M ;M M N CN N N O 6O O O 4P P P [Q GR R 1S lS S BT sT T U 3U fU U V dV V #W W wX X aY Y Y SZ Z '[ \ \ ] J] ] ] U^ ^ _ _ x` ` a Oa a b b Jc c d Xd d e `e If f &g ^g g g Zh h i i }j j k Tk k l l Om m n ]n n o eo Np p +q cq q r _r r s s t t u Yu u v v Tw w x bx x y jy Sz z 0{ h{ { | d| | } ~ ~ ~  ^    Y ށ  g  o X 5 m i Ɔ  Ĉ  c   ^  l  t ] : r Ï  n ː ɒ  h œ " c q  y b ? w ș  s К  Μ  v ֝ > *  O ` ȡ  ٣ 3 R > ( c  t ܨ ȩ * G f R < w Ѯ ( ܰ > Ʊ  [  z f ȴ P <  R ڸ  o ƹ & z ܻ d P   f ) : x d ,  z  = N  ! x @ ,  Q  b  5 T @ * e  v , I h T > y * @  ]  | h R >  T  q ( | f R   h + < z  f .  |  ? P  # l \ + L '  u $ u     e   4 U   0         s  "    u     e  f V  % F !    r     b   1 R   -    ~     n   = ^   9         |  +    |     l   ; \   7         y  ( y! ! ! ! " i" " # 8# Y# # # 4$ $ $ % % % % % & v& & %' E' f' ' ' A( ( ) ) ) ) ) * $* * * 2+ + + , , , , , - t- - #. C. d. . . ?/ / / 0 0 0 0 1 "1 1 1 02 P2 q2 2 2 L3 3 4 4 4 4 4 5 /5 5 5 =6 6 6 7 7 7 7 8 .8 8 8 <9 9 9 : : : : ; ; ; ; .< < < = = = = > &> > > G? i? ? ? @ o@ A 8A HA A B B PB hB B 7C C D SD cD D E 4E kE E E RF F 7G mG }G H 6H NH H H I lI I I J fJ J J zK K K KL yL L L L GM M N N N N eO O O O O aP P Q =Q `Q Q Q CR R S S S S S %T =T T U ^U U (V 8V V V W @W XW W 'X yX Y AY QY Y Z "Z YZ qZ Z @[ [ [ [ :\ \\ \ N] ] ] ^ M^ e^ ^ ^ _ _ _ i` ` ` :a ha a a a 6b b b c c c Td d d d d Pe e f ,f Of f f 2g g g h h h h i *i i i Kj mj j j k sk l o  X s h ߨ 3 c ֩   G 0 K @  B f $ _    6 Q l ?    $     b   ; q     ; ^   # F {         : U   - E     g ?   v    . I  $ ! -! g! ! ! " # 5# )$ ]$ y$ U% % 0& & [' ' * * + + + + + , , - - - - - . T. w. . . m xm m m m 2n Un n n n o Io lo o o p &p `p p p p q =q wq q q q 1r Tr r r r s Hs ks s s t %t _t t t t u >>>>?t??@7@R@@@A^AAAB;BVBBBBSCCCC0DKDDDDHE~EEE%F@FFFF?GuGGhH*I`I{IIJ8JJJJLNNOOOOCPyPPOQQQ%R[RvRRS*SSSSLTTTzUUUYuԎd5Pk&r[׫s[C׮# ۱wò!m˳ukɵ͸iQ90+z&u!pkfa \WRMHCc! {nid_ ZUPKFA<72-(#hc^YTOJE@67 9:;:>@PBDpqurs{K|}%~g6:Kr 2]rnFz  M $|&(}*g+,;.33255546CNOOPQqRSTU?VVo{pjqfrsCsst|tGeq}]&{t;Pncl;b 1OvEcE>  K\m ; ../00211J22b3P44I`K{LMN>PQQRmS$TTU=VVWSXXYlZ[[\]]^:``a2bccFgttucu$6GXk"SE] &z^wzGKG,W[r)4> s!}=?A[FL    0 %=UmC:6-}&v T  !8wEFvGsaz.b]I):K\mh#q*      FWH*6+$,,=-+../200K192'33?44W55DJJ1K}KK!ccdefghinstuu-vw2KSlC(U=2C(}nweveM*@%6#kj M,#gP0(gjH"Lh#5 )   V=3e,E3h  !!O$G%()*+E,H-S.023E569<=>X?[@fACEGHHIPIJ KKL%P/QBRQS8T UYuZmmnMphq!8Y6+/|8H|  . = 4> @ F +I I J Q TT LU V lW X Y Z -Z KZ wZ Z Z O[ [ [ \ [] ^ _ c m \s s Iu u iy -      /    ~ E    < W ~ I +  e y H F    7      M  o R H > 3   J  >    U %   R H   u    6 c  3 )  ` V        %   Q [  l 0  P E   *! ! " # # r$ % % ' ' k( ( p) A* * + , f- 9. . >/ 0 0 g1 2 43 4 4 5 5 |6 67 y8 9 9 Q: : ; M< = J> > ? @ @ |A B B D D uE E zF KG G H I pJ DK K IL M M rN O ?P Q Q R R S ET U V V _W W X [Y Z X[ [ \ @] ] ^ e_ -` }a b b nc d d e [f g 9h i i 2j k k l m hn Ko o ap Fq q r t t zu u v uw x x 8z z { ,| | } Q~  i ] J (    w U 7  M 2 d  { ` #  ;  S C h 0  q  ^ <   6  l P  g L   } ( @ 1 V  n ` M +  #  { Y @  V ; o  k  .  D \ M r :    l J -  D ) z ]  s X    5 M   A   f . ~ r  _  = !  8     n P  f K        { &  >! ! " 2# # $ W% & o' ' ( c) ) * + P, - .. / / *0 1 1 2 3 `4 F5 5 ]6 B7 7 8 : : u; ; < p= > > 3@ @ A )B B C ND E fF F G YH H I ~J FK L $M N N O P P wQ R US 9T T OU 4V V W X Y rZ F[ \ 3] ^ ^ ` ` ia #b fc c d ze f Gg h h j j nk (l km m n o p Lq r r t t su -v pw w x y z Q{ !| | ~ ~ x 2 u V & # } 7 z  [ + ( <  ` 0 - Z 8  4 n L 0 H ` D \ t X p l 4   H & " \ :  6 p N 2 J b F  ^ v Z " r n 6   J ( $ 5 i B >   r   L    >  / c  ;   o   G   {   U    E   y   R   B! ! " v# # $ O% % & ' ( ( \) ) + + M, , - . / / Z0 0 1 2 3 3 g4 5 6 6 Z7 7 9 9 X: : ; < X= = ? ? 2@ @ A 9B WC D D TE rF .G G nH I "J J qK L L M N ,O O P Q R R oS T ,U U V )W GX Y Y BZ `[ [ }\ E] ] ^ _ `` a a b zc d d e nf f g \h h j j 6k k l =m [n o o Wp uq 1r r qs t %u u tv w w x y 0z z { | J} }   $  , J   G e "  b >  } W  K 9  |  9  5 S p  + 2   _  S  X )  *  0   ( E  6      z  S ~ , W  ! ~  =       e  ! 6      M! ! " $ L% ) * * w+ + , , q- - - :. . . / 0 1 2E I I UJ J K HK K K L L HM sM M %N N N O O oP P &Q QQ Q R R R S S iT T NV yV ?X jX Y 5Y Y Y Z Z G[ r[ \ ;\ \ ] ] ] f^ ^ ` -` ` ` a a nb b 7c bc d d ze e ,f Wf f g g g [h h i ?i i j j j Rk }k k Gl l m ^m m n un n /o o o Fp p q ]q q r tr r .s s s Et t t \u u v sv v -w w w Dx x x [y y z { } P~   J } ? r    P V o G {   Q  P d | / { / & q # o ! )  N C E  x F *  y  n * 3 4 | a F h  v  } 9 n  L q  w U & Q " J Mx/c G Y   @   o  )   @L=rZH:(zhC  !"$#O###$-$g%7)*+***++*,,,-/C0h144D5o55'666^778?888~993:^::;;;R<}<=0===x>>/?Z??@@@OAzAA!BBBDCoCCDDD9EdEE FFF0G[G_HIFIIJJJLNNpOO4P_P@QkQRARRRtSS=ThTkUU-VXVVWWWXXzYY@ZkZZ5[[[L\\]c]]^z^^4___`:bdefghijkm"oRpqstQx|yzz){T{|}8]:eg 8B+w=;mUNID?:50+&!=83.)$ |wrmhc^;:>@PBDpqs{L|}&~g6:Kr 2]rnFz  M $}&(}*g+,;.33355546CNOOPQqRSTU?VVo{pjqsCsst|tŠGeq}]&{t;PnCcE>  K\m ; ../00211J22b3P44I`K{LMN>PQQSnS%T+UU>VBWWTXZYYmZq[[\]]^``b3bccFgttucu$6GXk˖ݗ"TEѸ] &^wzGH,W[r)4> s!}=?A[FL    0 %=UmC:6-}&v  T  !8xEFvGsaz̦.b]I):K\mh#q*      FWH*6+$,,=-+../200K192'33?44W55EJJ1K}KK!ccdefghinstuu-vw2KؐǑSߒlC+ŘBUWəl=2ȥ!CԦ)~ǧoxfwfN+޲ߴ@%7۹$kj ,iR2* ilJ$N k%8 ,  Y@6g.4i  !R$()*+G,J-V.023H5<=>Z?]@iACE5HHMHRIJ"KKL'P1QDRSS:T"UYwZmnnMpjq؆!9ܞ[6+/|8J . = 5> @ ,I I J VT NU V lW X Y wZ Y Z O[ [ [ \ [] ^ _ c m ^s s Ku u ly .  Ϟ 0 ۠ ۢ ~ E   = X ~ K -  f z F    M p R H > 3  ?   U %   R H   u    6 c  3 )  ` V        %  Q [  l  P E   *! ! # # r$ % % ' ' ( p) A* * + , f- . >/ 0 0 g1 2 43 4 5 5 |6 67 y8 9 R: : ; M< = J> > @ @ |A B B D D E zF KG G H I pJ K IL M M rN O ?P Q R R S ET U V `W W X [Y Z X[ [ A] ] ^ e_ -` }a b oc d d e [f g 9h i 2j k k l m hn o ap Fq q r t t u v uw x x 8z z -| | } Q~  i ^ ׃ J (   w nj U M 2 ݐ { ` ӗ #  ;  S D ء h 0  r  ^ < 6  Ư ޱ l ӳ g L   } ( @ ξ 2 V  n a M + #  { Y V ; k  . D \ N r :   l J D ) z s X    5 M  B   f . ~ s  _  =  8     n  f K       { &  >! ! 3# # $ W% & o' ' d) ) * + P, - .. / *0 1 1 2 3 `4 5 ]6 B7 7 8 : : ; < p= > > 3@ @ *B B C ND E fF F ZH H I ~J FK L $M N O P P wQ R US T OU 4V V W X Y rZ F[ \ 3] ^ ^ ` ` ia #b fc c d ze f Gg h h j j nk (l km m n o p Lq r r t t su -v pw w x y z Q{ !| | ~ ~ x 2 u ς ̄ V & # } 7 z  Ԍ ю [ + ( <  ٖ ֘ ` 0 - Z 8  4 £ n L 0 H ֪ ҭ ` D \ β t X p l 4   H & " \ :  6 p N 2 J b F  ^ v Z " r n 6   J ( $ 6 i C ?   r  M   ?  0 c <   o  H   {  V   F   y  S   C! ! " v# # P% % & ' ( ]) ) + N, , - . / [0 0 1 2 3 h4 5 6 [7 7 9 Y: : ; Y= = ? ? 2@ A 9B WC D TE rF G nH I "J J L L M -O O P Q R pS T ,U V )W GX Y BZ `[ [ }\ ] ^ _ a a b d d e nf f ]h h j j 6k l =m [n o Wp uq r qs t %u u w w x 1z z { K} }   $ , J G e ć b ߊ } K Ґ : ؒ  }  9 5 S p + 2  _ ̥ X ) ȧ 0  ( E l  9  N ~ c W  ! ~    -  e  !   .  M! ! ,* * A* + V* , - :. . . E I F J !F HK 6F K KF L `F sM uF %N F N F O F P F QQ F R F R G S G T 2G yV GG jX \G 5Y qG Y G Z G r[ G ;\ G ] G ] G ^ H -` H ` .H a CH b XH bc mH d H e H Wf H g H g H h H ?i I j I j *I }k k Gl l m ^m m n un n /o o o Fp p q ]q q r tr r .s s s Et t t \u u v sv v -w w w Dx x x [y y z }   } r  P ͗ {   / / & # ! N p x F [  p  n * } b G J _  } 9 7 Q " J [xp/G  @  o  )   @ZH:(zhy "O#"# #-$i)+*~)*)+*,,,142o5(2'6=26R27g2?8|28292^:2;2;2}<20=3=$3>93Z?N3@c3@x3zA3!B3B3oC3D3D3dE 4 F 4F54[GHFIHJHJ(MN=MORM_PgMkQ|MARMRMSMhTMUMXVMWNW$NX9NYNNkZZ5[[[L\\]c]]^z^^4___yT{΁#eփ8نˆB+wۯð=;ͶmUNID?:50+&!=83.)$ |wrmhc^;<+>V? @8A@BlCCYEpqrs{<|}~X'+<c#Na_|5k  <   !$m&Z'(n*V+ ,,.|33#5|55#64NNOPQbRsST}U.VVroolpp[qs4sssmt8VbnթLlxi e,A_R Q e4yv6/u  <M^Q*-../ 00#11;22S33A44;5IQKlLMN/P QQAR\STuU.VWDXY]Z[s\]^`!bc7g ttuTu'8I[ΗߘD6¸NڹHqOshkwZ88yHLwc%x/dn.0q2L7=   ! .F^4u+%ungE  "!!8hEFgGVHdaz*{{{SN |r9+<M^W a     |u7H9**'++,,.--..//#00<11*2233044H555JJ"KnKKccdefghximrteuvv#<ɐ7DВ]˓3D,Ԝ#2¦lw_{hVgV=βrϴ0%ʹs\[uXA!  FX[9=B YE &  7   LG.A$}Vx}$Y  >$()*{+6,9-D.._/0112345<=>I?L@WABrBCDDEHAIJKKLP Q3RBS(TUpYfZ mmn>pYqօȆ)̞J' m)9  = %> @ I I J ET =U V \W X Z gZ Z @[ [ [ \ K] ] _ c m Ms s :u u Zy  ɠ u ˢ Ԥ o b 6 )  q - H m :  U i s 7 n z  p < ` C 9 / $ q / E r    C 9  p f    & S $   Q G  ~ t       B L  ]  A 6   ! ! # # c$ % % & ' ( a) 2* * + , W- . // 0 0 X1 2 %3 q4 4 5 m6 '7 j8 8 B: : ; >< < ;> > @ @ mA B B D D E kF # ΐ t ה l Q ė   , D ҟ 4 ɡ Y ! q b ܨ O - '  ϱ ] ó X = n  1 " G  _ Q v >    l J G , } w \    5 M > c + { p  ] ; 5  k d I  { & >  2   W  o  c P  .  )     _  W <       l   /! ! ## # $ H% & `' ' T) ) * y+ A, - . / 0 1 1 s2 3 Q4 5 N6 37 7 8 9 : ; |< a= > > $@ @ B B C ?D E WF F JH H I oJ 7K L M {N O O P hQ R FS T @U %V V W X vY cZ 7[ \ $] ^ ^ ` ` Za b Wc c d ke f 8g h h j j _k l \m m n po p =q r r t t du v aw w x uy z B{ | | ~ ~ i # f z G  ц  n ( k Ō  Ž L  ֐  s - p ʖ ǘ Q ! ۚ  K ) ա % _ = ! 9 Ǫ s í Q 5 M ۱ ״ e I  a ӹ y ] % u  q 9   M +  ' a ? # ; u S 7 O g K  c { _ ' w   s ;   & Z 3 /   c  =   /  T ,   `  8   l  F   6   j  C   3! ! " g# # @% % & t' ' M) ) * >, , - r. . K0 0 1 2 3 X4 4 5 K7 7 8 I: : ; I= = ? ? #@ A *B HC D EE cF G _H }I J J L L M O O P pQ Q `S S U {V W 8X Y 3Z Q[ [ n\ ] v^ _ ` a b d d e _f f Mh h j j 'k l .m Ln o Hp fq r bs t u u w w x !z z { ;} } ~   ~  ; 8 V S q ϊ n < Ð * ɒ }  m * & D ڛ a ~  #  P I  !  x 6    o H   o    V     >! ! * + , - - +. . . I qJ 9K K L dM N N O P BQ Q R S T jV [X &Y Y Z c[ ,\ ] ] ^ ` ` a b Sc d e Hf g g wh 0i i j nk k 8l l l Om m n fn n o }o o 7p p p Nq q r er r s |s s 6t t t Mu u v dv v w {w w 5x x x Ly y z | u n c  A z l u u    ? } i 7  _  m R 7  n * b q B  ; i 8 u 1  `   w  1K9y+kY @##$**+,x,,4`566z70889O:;;n<!==>K?@@kABB`CDDUEEFLG7IIJNOPP\Q2RRSYTUIV WWXY\ZZ&[[[=\\\T]]^k^^%___zE{NV)ʆ3h̯.س,ֵv^F?:50+&! r.)$ wrmhc^YTO6? :19|fnv~9AIQX_fA{5=rzai{QRJRZb,4;y %,3:BJ\dpx N   & . 6 > F N U \ c j q x    . 5  07$,4<DLT\dlt| S CJV} FMT[bip8/_:Bm p|?)xZbjr N    !Z!!!G"`""".#n## $X$n$v$$$$$$$$$&%(()))5)A)M)U)])e)))))))E***V++ ,d,,, -W--------".Q......./6/I//[ho BIx!(ry/Fu}hLT\ckry !(/^fnu}")18?mu}#+3:BIP|4<DKSZa EMU\dkr !(V^fmu|%-4;iqy (07?FM|3;CJRY`DLT[cjq !(V^fmu| $,3:hpx'/6>EL{08@GOV] CKSZbip !(V^fmu| $,3:iqy?FNU ahpw)08?[bjq!(07SZbi+2:A=DLS _fnu'.6=KRZa!(nu}ELT[ gnv}&.5BIQXelt{,3;B'/7\"QY~ !Ft|KSx>lt|CKp #Hv~-5Z OW|Ds{ ;Ch /^f%-5=bGOW_<ks{2:_EMU]$Ix "*@LXdpZhq<r(]%[F4iX/e9{#*18?FMT[bipw~%-JMU  e  >Z3e$m.%6%>%%%%%%%%%%%%%%%%%&&&& &(&0&8&@&H&P&X&`&h&p&x&&&&&&&''''''/'7'?'G'O'W'_''''''''''''( (((%(-(5(=(E(M(U(](e(m(u(}(((((||}@r%U'f4lEG,JJsiN ڻ2мYgO[MR|         ;I" cqdrVN  u"/$B&U&6(F())**,.-..0022335%5d78 ::<<R===?A@A#ACCEE GGeHsHIJ)S7SSSTUVYdYLZZZvmnAqOq[ CaNG U   * SW \ d` d ;n s u z z F i   һ D  d b p n Z D   f# 5) / 4 : p@ ?F L Q W ] c i #p Rv |  = m ȧ ) Z  H v  5 g   ( X # ) / 6 M< B H N U         ! % ) , 0 4 7 : = A E (H kL O S V Y ?^ Za td h l p +s nw z }   7 Q Ֆ ޠ S Ȥ  j G Tڰ.pH_ V?ۜ)wŝaK5~]TTTPUUU?VVV5WWW+X}XX!YsYYZiZZ [_[[\U\\\K]]]A^^^7___-```#auaabkbbcaccdWdddMeeeFfffEgggDhhhCiiiBjjjAkkk@lll?mmm>nnn=oooڜ(vĝ`J4РPTTOUUU>VVV4WWW*X|XX YrYYZhZZ [^[[\T\\\J]]]@^^^6___,`~``"ataabjbbc`ccdVdddLeeeEfffDgggChhhBiiiAjjj@kkk?lll>mmm=nnnggg=hhhhtt.uu .~U3>VpE;)J#!c=GT ^i!sOXuY$v%zj){*8    o+brb [T2  !9"A8EGJHHb{NV'!2C{tM  U o  Ga-*+n,,-u.//|0 112q33455-6hJJMKKLcdWedfqg}h?i\jn~sSuuvw|")VQo]t.j0h4xa|<i!?-@;A988VI; s Y z}qln   E!0%q)9*i++,-.x1$3 4&6>=|>>?@AD6FJkK#LdMPQpRSTmUYZamn~opqFrdrUJN9moox  = > eA jI xJ K T U 9W X Y k[ [ ~\ ;] ] p^ Q` d n s t u v z l   *     _    T     U f   u Z   &    H  F    &   v      h  :  Q 9   X D / 1   ^  A  0 n  ]       ?  " l  O  > |  k   1 {   A  m  2   l { E  ! ! P# # $ X% & {' ' ) ) u* '+ m, J- - . Z/ C0 0 ;2 3 P3 4 )5 6 6 8 8 9 : : ; < = > > Z@ @ A bB C D D )F F G 1H wI TJ J K eL NM N FO #P [P Q 8R !S S U U .V W X X Y Z [ [ ~] ] ^ _ a a 'b c d e e 0g h Uh i Nj Lk l _m In n p }p {q :r s xt t 9v v w ix y z z j| | } ~          D  ; 9  L 6 q  i g & z d $  T   T          *  "   3  X  R P  c M   @  ~ A  q   o          "  G  ? =  P : u  r p /  m /  _   ]           4  0 .  A + f  ` ^  q [   L   N  ~          (  # !  4  Y  T R  e O     ?  }  ?   o  ! ! p# # $ % & ' ( ) * + + %- . J. / F0 D1 2 W3 A4 |4 6 y6 w7 68 9 t: : 4< < = d> ? @ @ gB B C D E F G H I J J L M @M N ;O 9P P LR 6S qS T kU iV (W |X fY Y Z \ ] O] Z^ _ }` ` a b c d e Nf +g cg _h i j j k l m n o Sp 0q hq dr s t t u w w x y Xz 5{ m{ i| } ~ ~      ] : r n       b ? w s      % ! g D | x    /  T e    C - h y    W A |      k U     +  i    . ?  }    B S    1  V g    E / j {    Y C ~      m W     -  k    0 A      D U   u   ,   ) ~    5   ' ~   o   & {    2   "  >   0     <   - ! ! # # 9$ % & *' ' F( ) * 7+ , - (. . D/ 0 1 52 2 Q3 4 5 B6 7 8 A9 : ; 3< = > L? ? t@ A UB C D pE F H H I kJ J TL L N nO O Q Q HR S *T cU V EW ~X Y ^Z [ ?\ \ (^ ^ _ Ca a b ]d d f f 7g h i Pj j xk l Ym n o sp q s s t nu u Ww w y rz z $| } ~ >  f  H   c   ~    :    { -  U  7 p  Q  2   G i  =    t ] q  L 5 I  G   d  @  (   l ! l! ! - Y. . A/ l fl l m }m m 7n n n No o p ep p q |q q 6r r r Ms s t dt t u {u u 5v v v Lw w x cx x y zy y bz R}  L  E B  `       P  O   z  z q  n  l    0 R   } 0   u         i    H  _Ga2rAI,,-ZT[[\k\\%]]]<^^^S__;`w`(rpzupkfa\WRMH&! snid_ZUPKFA<72-(#p\r{23#8m#" $ @ Z[OCZ[Z[Z[Z[Z[CZ[ CCCCOOOklCCCCOOOOOOO    '/0  '/0C    CCCCOOOOOOOOOOO {|{|{|{|{|{|  CCCCCCCCCCCCCOOOOOOOOOOOOOO'    'CO ' '   CCCCCCCCOOOOOOOCOCOCCOOCCCCCCCCCCCCCCCCCCCOOOOOOOOOOOOOOOOOO   CCCCCCOOOOOOOO   X Y e  ij   {|C {|C{|C {|C  {|C{|C {|C{|C HI OOLLLeep' p ''X Y    CCCCCCCCO'''   {|{|Z[Z[Z[Z[Z[Z[Z[Z[Z[Z[Z[Z[Z[  X Y e   OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[  OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[OCZ[  X Y e     X Y e       X Y e   X Y e   X Y e     X Y e     X Y e   X Y e     X Y e   X Y e         X Y e       X Y e     X Y e       X Y e       X Y e   X Y e       X Y e       X Y e           X Y e   X Y e     X Y e                 O  O  O   O                                       OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO ijCO    O     O   O       O                       O                                                                                |5679:Hjqpq@rnrsu{|?};  /yw  R-246QDRUSfTWToNp=qr`rrsQtAuH?v:FR^x0iP\G+Ale4yH\Xi /@s.a//y0112253#44r7IIRSTUVWXZZ\]4^3`acDd0stt9uučՎ +<ҙLk0ǺS߻lsWM:O[ABX"Qh}0|u     Z(@%#[8LIHabz|N7!=`{gVb /@ l }  ^** ++,--.x/001 22344*55`7IuJKQKKLbcdeqf}gh\ihj4x&?"{ʣñtB(ָٺr8ּ>1FPlKUaSX a   M<={  !@#=%&')F*+,-U0L21346/8 9:Y=>?@gC^EDFGxHIIRSTUXYK[mn"ppmszߘ|XٚYs"itodBz Sz  u     $ = @ F H uI J Q S T T U Y Z CZ Z %[ o[ |^ ( n ã Q  ߪ  A /  . '   r F \ C $  a      F  s B o    '  T ~   d   %  /  > ( $     %" " y# # J$ $ % & ' c( H) ) * * q+ , - 1. / / / 0 ?1 2 3 4 4 g5 5 T6 7 O8 ]9 9 : 8; ; %< < > .? ? @ A TA A B C D mE RF F #G G {H I J  T q ܧ i l 4  d ϲ H = ʴ " ͵ y n S Ƽ  1 ) , B _ X [ # q  Q 8 ,  g \ A    o  0 M E H  ^ { w z B %  r U I . {  ` ! >   9  <  R o j m 5        f   H <  !     w l  Q   ! /" " # *$ $ -% % C' `( ( ) [* * ^+ &, t- . / 0 0 0 1 X2 3 4 >5 36 6 7 7 8 9 : m; a< < F= = > @ $A A B !C yC $D D :F WG G H QI I TJ K jL M N N O O P MQ R S 1T %U U V V }W X Y EZ [ r\ ] ] ^ _ ` Aa a > Z? @ @ B B (C D %E E CF %G ?H H ]I I yJ hK L 8M M N O RP P .Q Q R S T T U V W X X Z Z 1[ [ M\ <] V^ _ t_ W` qa 'b b qc d Ae e f f g h i i ^j k k m m ,n o (p p Fq (r Bs s `t t |u kv w ;x x y z V{ { | } p~ ~ L    ΅ 6  3 Q 5 N  l N h  _ Ǔ ; ҕ  $ @  w < f 7  K 0  e Ѩ "  ٪ = X   . {  r K $   O  5     6   .    ~ ! |! " $ D% ) * o+ , k- - . h. . / 0 1 *E I MJ K K L @M M N O gP Q Q R S aT FV 7X Y Y Z ?[ \ \ ] ^^ _ ` a fb /c d re $f f g Sh i i j Jk k l ul l /m m m Fn n o ]o o p tp p .q q q Er r r \s s t st t -u u u Dv v v [w w x rx x ,y y y { | H~ T ŀ с B M ʆ NJ 7 B ڎ   ɘ N Y g s ? K w ʧ ը I T Ȭ ԭ H T \  t  s  i t g r !   ; = ^ j  " q ? + , 7   `  n N f F  o M  a  y  E[ Q   @   W  nD5j)i I;!"###_%/))*++X,,-/;0`14<556V7 88v9+::;J<<=p>'??@GAABE { \~ ـ V ҅ ω K % ( ݘ b { ͢ S ާ ] ܬ \ p    } { 5 & O Q 6 ? @ t ) z  !"XI~O,!"s%C).+/O0t1kHLaFbdefghijkm.o^pqst]xy|}& -04;BIP]n}(,048<@MVbp}3;?QY]s{  $(,048DO]ko|"*@]~&/3<E^fkpuz $).3<DQZafkpuz $).38=BGLQVh%.3;PXaly3JOX]fkty!&+48<@DHLPTafkp~$4<AJR[chqy  1DLQV[`ejox} #(-27<AFKP]bjow|  %*/49LQYkrw&+7<HMRZ_hmrw 9>GLUZch{#,1:?HMR[`inrvz~ ).38=BGNSf} "*?DMUZcks!).7?G]bksx 'EJSglsx 16?DMR[`inw|$-2;@ENS\ajox} .@HMU^ns{ $).38=BKOY^chmrw|$-6?DLYbj|!&.7@IR[`hqz #,5=BKT]fksx "',16;DIchqv#,1:?HQV[`ejot|  A _ u                 ! % / 4 9 > C H M R W \ a f k p u z                 & . 3 8 = B K P U Z ^ b f m r w                        ! % ) 2 ; @ E J O T g l u z                              " + 0 D T Y b g p u ~                  (-6?SXafox} #(-6;@INW\ejox} !&/37;?CGKOSW[_cgkosw{ &<AJOX]fk !*/8=FKTY^gluz  %*7@EMU^ckx} $-5BJOXe| 1CLTYbgpx},8=BGLQV[inv~ ',5=GLQV[`ejo "27<AIZ_dinsx} /8HPXev4Qq &/4<ENW\dmu~ *3;DMV[dlu} (8AIR[dirz!*38@IQY^clqy',4<AIQ]fnw % . 6 ; D L T Y b j r z                   !!!!!&!+!0!9!A!J!R!W!`!h!q!y!~!!!!!!!!!!!!""""("1"6"?"G"P"q"z""""""""""""""""""# ###"#'#,#5#=#F#O#T#Y#^#g#o#x##################$$$.$7$H$P$b$g$o$x$$$$$$$$$$$$$$$$$$$$% %%%#%5%>%Y%^%c%h%m%r%w%%%%%%%%%%%%%%%%%%&& &%&*&/&4&9&B&J&a&j&o&w&&&&&&&&&&&&&&&&'' '''' '%'*'/'4'9'>'C'H'M'R'W'\'a'i'n's'x'}'''''''''''''''''( ((('(0(I(R([(d(m(v((((((())))1)6);)D)I)N)S)\)a)f)k)t)y)~)))))))))))))))))))* ****#*,*3*8*=*B*G*L*Q*d*l*u********************++ +++&+/+8+F+Y+a+j+o+x++++++++++++++, ,,,&,9,>,Q,c,h,q,z,,,,,,,,,,,,,,,,,,,,,,,,,,,-- -----,-5-H-Q-Y-b-k-w---------------. ... .).1.9.>.G.P.U.^.g.o.t.}...........////"/*///6/;/C/U/]/u///////////0 000'00090A0J0S0e0q0z0000000000000001 111 1%1*13181=1F1K1P1Y1^1l1t11111111112 222$282A2U2^2m2r2w222222222222222223 3333(30393A3F3K3P3U3Z3_3d3i3n3s3x3}33333333333333334444%4-4@4H4Q4Z4_4d4m444444444444445 555 5%5-52575?5D5L5U5]5f5o5t5|5555555555555555556 666!6)61696=6F6O6X6\6`6i6r6{666666666666666666667 777!7*7.727;7D7M7Q7U7^7g7p7t7x77777777777777777788888"8)8.82868>8B8J8R8V8^8m8v8~88888888888888888888999999"9+9/989<9E9N9R9^9g9o9x9}99999999999999999999:: ::::":+:/:8:A:E:Q:Z:b:k:p:t:{:::::::::::::::::::::; ;;; ;$;-;6;:;D;M;U;^;c;g;n;r;v;~;;;;;;;;;;;;;;;;;;;;;< <<< <$<0<9<A<J<O<S<Z<^<b<j<n<w<{<<<<<<<<<<<<<<<<<<<<<= ===%=-=6=;=?=F=J=N=V=Z=c=g=p=t=}=====================>>>>$>(>/>3>8>@>E>N>S>\>a>j>s>x>>>>>>>>>>>>>>>>>>>? ???!?&?-?2?7???D?M?R?[?`?i?r?w???????????????????@ @@@#@(@/@4@9@A@F@O@T@]@b@k@t@y@@@@@@@@@@@@@@@@@@@A AAAA$A+A0A5A=ABAKAPAYA^AgApAuAAAAAAAAAAAAAAAAAAAABBBB!B(B-B2B:B?BHBMBVB[BdBmBrB}BBBBBBBBBBBBBBBBBBBC CCCC&C+C0C8C=CFCKCTCYCbCkCpCzCCCCCCCCCCCCCCCCCCCD DDDD%D*D/D7DEGELEUEZEcElEqE{EEEEEEEEEEEEEEEEEEEF FFFF&F+F0F8F=FFFKFTFYFbFkFpFzFFFFFFFFFFFFFFFFFFFGGGG"G)G.G3G;G@GIGNGWG\GeGnGsG~GGGGGGGGGGGGGGGGGGGHHHH!H(H-H2H:H?HHHMHVH[HdHmHrH|HHHHHHHHHHHHHHHHHHHIIIII"I'I,I4I9IBIGIPIUI^IgIlI{IIIIIIIIIIIIIIIIIIJ JJJJ$J+J0J5J=JBJKJPJYJ^JgJpJuJJJJJJJJJJJJJJJJJJJK KKK#K(K/K4K9KAKFKOKTK]KbKkKtKyKKKKKKKKKKKKKKKKKKKL LLLL$L+L0L5L=LBLKLPLYL^LgLpLuL|LLLLLLLLLLLLLLLLLLLM MMMM&M+M0M8M=MFMKMTMYMbMkMpM}MMMMMMMMMMMMMMMMMMMNNNN"N)N.N3N;N@NINNNWN\NeNnNsNNNNNNNNNNNNNNNNNNNO OOO"O'O.O3O8O@OEONOSO\OaOjOsOxOOOOOOOOOOOOOOOOOOOPPPP$P)P0P5P:PBPGPPPUP^PcPlPuPzPPPPPPPPPPPPPPPPPPPQQQ!Q&Q+Q2Q7Q]K]T]Y]a]j]o]t]{]]]]]]]]]]]]]]]]]]]]^ ^^^^#^(^-^5^:^B^J^O^W^b^k^p^x^^^^^^^^^^^^^^^^^^^^__ ____#_+_3_8_@_N_W_\_d_m_r_w_~____________________` `` `%`-`6`;`@`G`L`Q`V`^`j`s`x````````````````````aa aaaa$a)a1a9a>aFaRa[a`ahaqava{aaaaaaaaaaaaaaaaaaaabbbb"b'b/b8b=bBbIbNbSbXb`bebmbubzbbbbbbbbbbbbbbbbbbbcccccc&c5c>cCcKcTcYc^cecjcoctc|ccccccccccccccccccccd dddd&d+d0d5d=dFdOdTd\dedjdodvd{dddddddddddddddddddddeeee'e,e1e8e=eBeGeOeXeaefenewe|eeeeeeeeeeeeeeeeeeeeff fff&f+f3fjCjKjTjYj^jejjjojtj|jjjjjjjjjjjjjjjjjjjk kkkk$k+k0k5k:kBkLkUkZkbkkkpkuk|kkkkkkkkkkkkkkkkkkkkllll!l&l+l0l8l=lElMlRlZldlmlrlzllllllllllllllllllllm mmmm m,m5m:mBmKmPmUm\mamfmkmsmxmmmmmmmmmmmmmmmmmmnnn n)n.n3n:n?nDnLnQnZncnhntn}nnnnnnnnnnnnnnnnnnnoo ooo o)o.o6o;oCoHoPoUo]obojooowoooooooooopppp$p)p1p=pBpJp[p`phpmpupzppppppppppppq qq'q,q4q=qBqJqOqWq\qdqiqrqqqqqqqqqqqqqr rrrr'r,r5rHr[rhr}rrrrrrrrrrrrs sss+s0s8sIsNsSs[s`shsmsuszsssssssssstt t%t-t6t;tCtStXt`titntvtttttttttttttttttttu uu$u)u1u8u=uEuNuSu[ujuouwuuuuuuuuuuuuuuuuuuuv vvv#v+v=vBvJvSvXv`vhvmvuv}vvvvvvvvvvvvvvvvvwww w-w2w:wCwHwPw]wbwjwswxwwwwwwwwwwwwwwwwwwwx xxxx#x(x0x5x=xBxJxOxWx\xdxixqxvx~xxxxxxxxxxxxxxxxxxxxyy yyyy'y,y4y9yAyFyNySy[y`yhymyuyzyyyyyyyyyyyyyyyyyyzzzz%z.z3z{G{O{_{h{p{{{{{{{{{{{{{{{ |||$|-|6|?|D|M|V|_|d|m|~|||||||||||||||} }}}!}*}3}8}A}J}S}X}a}r}{}}}}}}}}}}}}}}}~ ~~~#~,~1~:~C~L~Q~Z~c~l~q~z~~~~~~~~~~~~~~~~%.7<ENW\es|!&+3CSaqŀ΀Ӏۀ!*2;IRYlu}Ł΁ց߁  (>OX`iĂɂ҂ '/4AFNatȃЃՃ݃ '/AJSlt}DŽЄՄ݄ #+6;CPU]fks|…ʅυׅ܅"19HP^fv~ņʆ҆ۆ -;@KPXai{ʇχׇ "+7@EMV[clqy~ƈψ -@IV_dluzƉωԉ܉',4=BJSX`hmu~Ŋ͊֊ۊ%.3;DIQafn~ƋˋӋߋ #,5:BPU]fksΌӌی',4AFNafnw|ƍ΍Ӎۍ!).6;CHPU^oxǎ׎ 09NW`qΏ׏"+=F[lt}ѐڐ$5>FN^gsܑ̑%*@EMbgoȒגܒ)=FNW`hqyʓӓܓ $).6;CHMUZbgoty”ǔϔԔܔ"*/7<DIQV^ckpx}ƕ˕ӕؕ !&.3;@HMUZbgot|–ʖϖזܖ"*/7<DIQV^ckpx}Ɨ˗ӗؗݗ &+38@EMkqw}Ƙ͘Ԙۘ !(/6=DKRY`gnu|™əЙיޙ$+29@GNU\cjqxŚ̚Ӛښ  '.5<CJQX_fmt{țϛ֛ݛ#*18?FMT[bipw~Ĝ˜Ҝٜ &-4;BIPW^elszǝΝ՝ܝ ")07>ELSZahov}Þʞў؞ߞ %,3:AHOV]dkryƟ͟ԟ۟ !(/6=DKRY`gnu| ɠРנޠ$+29@GNU\cjqxš̡ӡڡ  '.5<CJQX_fmt{ȢϢ֢ݢ#*18?FMT[bipw~ģˣң٣ &-4;BIPW^elszǤΤդܤ ")07>ELSZahov}åʥѥإߥ %,3:AHOV]dkryƦͦԦۦ !(/6=DKRY`gnu|§ɧЧקާ$+29@GNU\cjqxŲ̃Өڨ  '.5<CJQX_fmt{ȩϩ֩ݩ#*18?FMT[bipw~Ī˪Ҫ٪ &-4;BIPW^elszǫΫիܫ ")07>ELSZahov}ìʬѬج߬ %,3:AHOV]dkryƭͭԭۭ !(/6=DKRY`gnu|®ɮЮ׮ޮ$+29@GNU\cjqxů̯ӯگ  '.5<CJQX_fmt{Ȱϰְݰ#*18?FMT[bipw~ı˱ұٱ &-4;BIPW^elszDzβղܲ ")07>ELSZahov}óʳѳس߳ %,3:AHOV]dkryƴʹԴ۴ !(/6=DKRY`gnu|µɵе׵޵$+29@GNU\cjqxŶ̶Ӷڶ  '.5<CJQX_fmt{ȷϷַݷ#*18?FMT[bipw~ĸ˸Ҹٸ &-4;BIPW^elszǹιչܹ ")07>ELSZahov}úʺѺغߺ %,3:AHOV]dkryƻͻԻۻ !(/6=DKRY`gnu|¼ɼм׼޼$+29@GNU\cjqxŽ̽ӽڽ  '.5<CJQX_fmt{ȾϾ־ݾ#7F8i9;rr9 (08@HPX S!U8WPYg[]`a~cg8MbwJC iy M{Z"#&I79)HCHKyG lR Y Y Y d S 0 K " ( T. #4 9 ? E _K 2Q W \ c 7i fo u { $ R ݠ ; l ˿ ( [  I x  = k  " ( // b5 ; A G $N TT        $ ( + / 3 6 9 < A 0D JG K N R V Y a] |` c g l 3o Mr v y |  # > Y s   n F  Z b / D Y X   # Q  $ 9 " <$ h% "* 7* L* a* 0 1 2 E F F ,F AF VF kF F F F F F F F G (G =G RG gG |G G G G G G G H $H 9H NH cH xH H H H H H H I I { l~ e  ߉ Z 5 8 q ܢ c l l &    E 6 f { ` Q f { N O @ U % - + 0Qf{gYgo;!""#%_)t)).:/^01 2232H2]2r222222233/3D3Y3n333333344+4HHHM3MHM]MrMMMMMMMNN/NDNaUbdegghijkm>ompq,stmxyy|~̃ 6'44%{(2$5NLTc[txM~jƥg hKek~T)2j-8: 0TEC<71K1H[H<'57H7uK)B=r9:xLK"OMP"OL#MP}M5Q(Np"P#NN n  V   u   ]       d     k  y a|       hP    W  v    ^ }              T    s [              i   Q  p         f    m    {   c         R  q   Y     x   `            #   I+X</ % 1 I+XU7y]w% ^ I+X0xe\ #  I+X%:t-m ! p I+X7Wr**ZPf`Ss8I+X/Fo@%  I+X Ⱦy:f%  I+X a%V I+X7˺ŧ5 '  I+Xʕl: ȷ    I+XA 5 e I+Xʘ&Z! I+X$&ls8I+X(v ! I+XXdoc!  I+Xa(2 #   I+XʁN #   I+Xkg` I+Xo+.}M13-g8I+X9#h6A=V4!  I+Xnl.{0%   I+Xx?srݍ̢I+Xz`{ %   I+X~\LS & s8I+X7_߽կcrate::custom_keyword I+Xvzy˜S%  I+X؈=  s8I+X4В7%5   I+XO7'r$> @   I+X$xe#Or8I+XtL5   I+Xʋ$    I+XTG! I+XG+D?s8I+Xʃ I+X3Fa<;g)&.8I+XҾoEZs8I+Xuj! I+Xʨͦ5r|i #  I+X[fw\Y%  I+Xy]z Q  %  I+X\'4PCe#r8I+X-}Q"u$ I+X sԊI+Xʻ1%  I+XʙqW86e%  I+X2%  I+X^8Ǩ"<%  I+XmGw-s8I+X  I+Xʯ2+$f8I+XӘ;5Eb! I+XʜY8&U! I+Xʿid<!s8I+Xʈx%  I+XxI" ! I+X$?nA%  I+XW/k-  I+XEDz5  I+XQmTwls8I+X4Yi֓ @   I+X/;G #  I+X;1~]e# r8I+X0FWt^ I+XHnJ--f8I+Xʅ ˱C ! I+X$p/&  I+Xʛ75֨O s8I+XBw\g ݍˍI+X}N\%  I+Xg %  I+Xʔ-UHx #  I+Xv$as%  I+X϶ 1Tv   I+Xʵ_fZt%   I+X ` WW ! I+Xʷ2-d-%   I+X(ӤRA5  I+Xn  # ! I+XʖDX % ! I+X~pe#r8I+X|WH I+X8EbZc9pu8I+XbAHN=  I+X;-9 .%$crate::impl_clone_for_custom_keyword|. . I+X=fQ05 ! I+XH=/1 % $ I+Xʁ(Q #(#s8I+X;7I"" I+XmEe#r8I+XQWR"?! $I+Xʜeuz! %I+X1kh$$s8I+Xi.~ , 5 # I+X! &I+XʮYVTe#r8I+X} Y$!$ I+XI+Xb qlX 5 % I+XzL"a:% ) I+XʊJ~٧''s8I+X߽lꍚ  # ) I+X#jA_% * I+Xv 4.zT 5 ' I+Xʶ>+A' ' I+XʆZ)EIj! )I+Xʑ6f    I+X'R$k % , I+XmA6}**s8I+XʣtDu % , I+X# HIrOG! +I+Xn[% - I+XK~ݰb"*I+X2eH ** I+XoUca:% . I+XI%=! $I+Xdw]r% / I+XNX- ޙ % / I+XʻZ.ZT ! .I+XjMEWU % 0 I+XyǒVe# r8I+X!]-- I+XHN(7~,%*f8I+XͷJW ! 0I+X쿜4!Na +. I+XX Yi2=% 2 I+X>s8I+XS" . ! ?I+X0ЙXe ! ?I+X]Z,I+Xd9{y! @I+X2V` D % B I+X;,ʰfp>@@s8I+XݝT% C I+Xd=3 ! BI+Xp3|w(  @ I+Xccd@ @ I+XbRK+->f8I+X+ uKP =A I+Xʟ+Lƚ, @ 5 I+X՘#E%CCs8I+Xʧ}< cx% E I+X|{`% F I+XZ)I*g% F I+X zge#6r8I+Xtt CD I+X?~u(-D I+X95! FI+X8ؒe ! FI+Xo ! >I+X.V>! GI+Xʳ'5&R`e#9r8I+X"ڵ1\FF I+XNfꅘ06>g8I+Xʮgo3E % J I+Xʎa*~b # J I+XE86M! @I+XLMݍ>I+X`6 ?/ ! JI+X,5J%Js8I+X49! KI+X4{w! KI+X;_e* e#=r8I+X#r  ! CI+X@Ez J J I+Xʱ;p: @ > I+XʩWV u;9n% N I+X# ;aMMs8I+X?(UP ]@L I+X8jH.L I+XB? G ! NI+XD gMM I+Xʾ,ܖ! OI+XFG]! OI+X2_\= ! GI+XK̓?P Ps8I+X1 %-N I+XɂqO ՝ ! QI+X8.o4 K#R% R I+X͍d?PP I+Xʤe#Cr8I+Xȷ1^s @ D I+XL:f @ D I+X[ə RRs8I+XʭH qqv% U I+X.#Sf ! SI+X78T! TI+XʔhhG~ R I+Xn* Sf8I+XʞK`IK /V I+X|): ! OI+Xmh[9! YI+XO+˄5 W I+X}]ɮZ% [ I+Xs4t]yY Ys8I+XMh{Ц! ZI+X^cU'wm! [I+X%Q`e#Lr8I+X 4S~ YY I+Xm7_ % ] I+X͐$~״ ! \I+Xm=Thsl% ^ I+Xʕ.&H^`\\s8I+X5gv # ^ I+Xb|\[ I+X,-$ ,.Yf8I+Xʆxt! ^I+Xz,V Y] I+X5>'^^s8I+X^Td ! _I+XH$ >! _I+X)iI ! `I+XʥO&e#Rr8I+X披,g ^ _ I+X e`% b I+Xʃc6! XI+Xo{ ^ ! YI+XLLzg:`` I+X5s*[5q8I+X!}u %$crate::impl_parse_for_custom_keyword|.  I+XN~(^N  ! cI+XT\ߍc'cs8I+Xʰ͓?%bb I+Xʘ|>c.u% f I+X @ɛ)&X% f I+X\t6,ees8I+X9v c I+XʁWK: @d I+Xuړ$Ad% h I+X/oAee I+Xʝ&~iffs8I+X xXI e I+X{##_ff I+XO+k% i I+X~ f @ Z I+X_+0Mhhs8I+Xʞ! `I+X kuZ^! iI+X󰹾% k I+XP}͢X! jI+Xʥaeh{t1e#\r8I+X4Žiai&i I+Xʺ@TJ`%jI+Xʻ*7  ! kI+X@̽j-a ij I+Xʌ\x%^! lI+Xtd! lI+XzE& ! mI+Xʗ~zf@Qe#_r8I+XʂFll I+X78AT5+#if8I+X0=,= il I+Xʼld=  l I+X~L % p I+XĊҹ m I+X!%tb[! # q I+XʤYt'p"ps8I+Xgk*! pI+XʎJ`Y4! qI+Xw0ase#br8I+XӌŽu us8I+XKY SݍԆjI+X&3! vI+XlݧUz% x I+XJY%! nI+XNAn% y I+X` ! xI+X9֎`% z I+XE[oz! yI+XQWiз! yI+XʛQyt ! yI+X6 # { I+XlYlx I+Xʴ  ! qI+X u7ue#lr8I+Xʾkyy I+XA`Dc% } I+XʊH5g  # } I+Xʚd#ㆤ % ~ I+X5;t~s% ~ I+Xʬn #W% ~ I+XI`A ! }I+X+d-})}s8I+XʚX+"|| I+Xwu7x^%  I+Xʆ㵘e#pr8I+X=\)j%  I+Xcq  #  I+Xʻ/ @ q I+XʻsDj]s8I+XN??t%  I+Xt[uj2߄,&f8I+XʴA ϊ I+X\=a%  I+XDy # Վ I+XʞA \Wݍ̰I+X̜\ %  I+XKԔf Y$s8I+X\U1 n #  I+X<`Ơ5z>#h%  I+X=Q @  I+X GJ   I+Xʈ1jw% ˑ I+Xʌ!Z  I+XL2! I+Xʰfs8I+XF'(cqۏ I+X>OX! I+XL%me#Ճr8I+X+a5^ I+X!e t8I+Xʍ1z" ! I+Xʧn /F #  I+Xʵ>w s8I+Xtew5!)$crate::impl_to_tokens_for_custom_keyword|2 ) I+Xʜ#R! I+Xʦ ZEWtN %  I+Xʣ|: I+XV"! I+X[oT}e#r8I+Xʙ4A^y %  I+Xʬ#s8I+XV\M! I+Xއ4Ъ % ˙ I+Xun!xPo%  I+XʷL܄ s I+X8v^ % ֚ I+XԼ]0h%  I+Xg  I+XO&d! I+Xʳ ,ms ! ךI+XʒWd @  I+X@T+ #  I+X4"b;%  I+X=bK- ! I+X:ChP +s8I+X:W_ I+XuuٿAO1<  W USt  rp nl i g b  ?-   ,` [  :Y x v=  k^d     Q V  @.T zRu \ sqom >jh;fc a  ZX ywA /_]+9e  "اI+X^HD3E   I+X[)]H nI+X{6+ Ʀ I+XʠrÝ}EI+X_ oYCũI+Xʁv>n~I+XĪߦ0EI+XɝUGrЪI+XJU#qI+Xʅ9@JI+Xʲlr-&I+X$)PTBK2I+XʳG%?I+Xʚc#$!I+X(/%E'   I+Xʬb>4aI+X&.\8I+Xʬ_A / 3 I+XU1͐TxͮI+X;np I+Xʾ%46XI+Xʌ]2 دI+X`%F I+Xʫ-9r_I+Xʇ=36I+X(@=YTI+Xʵmo< I+X[}-Y!I+Xʴ}*I+Xʦ/55ȲI+Xʊܬ2I+XʮZ#gI+XʗoQҳI+XʔSaI+XTSeI+X7`bsMثI+XTT9rm zI+X]0ƱI+X1SyM ! I+XpqD'I+Xʥ?(PöI+X%1I+XqKI+XsDηI+Xh D%,4Q 3 I+X"=J2Aj rI+X/SW*ٸI+Xy|I+X7o9I<I+X`v{I+XF @gI+Xj]F 3 I+XΈݨ<I+X#ĺv, 3 I+X &˯ͻI+Xʰ+AI+Xڲ]:@  I+Xu]٭n   I+X_L"I+Xʃ_~#I+X_^K I+Xp+LkH˨I+Xʫ(@ k I+X8›7TҀI+X 0#n I+Xj?ۯ 3 ˶I+Xʄ'qs,I+XiS[>^UI+X _&: 3 ַI+Xʠ0+"I+XInjgN jI+XUTٹsI+Xʊ~zF,ǗI+XvRRw~I+XBK H`zC   I+XӁ0FZmnI+X:FjBI+Xʈs@m(j 3 I+XʹwGI+X=ŧ0I+XfL9 3 I+Xau"I+XxKI+X)fp QovI+Xbsh%" I+X+ƪޮ\I+X%lw,2I+X2A>d  I+Xˮ}:{"&I+XB6pI+X^/AwI+X{!z2I+X)Ea I+XkZ I+XmVHI+XNNd.Ԉ*I+XH w$I+Xʧ@wI+XsV3F   I+XCnJMI+Xʩ2I+Xʌ\V&U|.I+X1Ak*<} I+X~ xlI+X%iGZ.|  I+Xʍ-i  I+Xh~>=I+Xuf $i19I+XlI+XQTl;dI+X (>I+XʱrHaYÍI+X^{P# I+Xde# I+X$ytI+XfͼlI+X$Mh}eI+XQbC 5q}I+XR̢  I+XʌHhSI+X|Vf00K*I+X+U2 3 I+Xp5p8  I+X NH@ݗ3I+X^0ٶ: 3 I+X? O չI+XdR vI+XʕУWI+Xʱtou<jI+Xʶ?p. @  I+XʹAFȣI+Xʡk  I+Xʨ3fU DI+XJD I+X1; ǃI+Xmks/I+X@%.1YI+XʚI !> 3 I+X/D7tlWI+XkPj        I+X :TF\. I+Xʘ`梠  I+XWQD   I+Xp=~پ  I+X͂}t>GΖ   I+X-T,  I+XHnԀ  I+X7?{   I+XeesΦ  I+X>2l   I+XߦD      I+XʞΑhE]   I+Xʲ4}  I+X\$O  I+Xʋ/%W(   I+XʬD   I+XS8  I+Xʜi!  I+X*xH     I+Xcf\G  I+X[(7   I+X Çq@   I+X*-      I+X:p-1  I+XCsƐ   I+Xʒe#      I+XQaa   I+Xʋ-}벛  I+X<] [n+o     I+X 5   I+X-@P   I+X]6E      I+X[j34   I+X?;  I+Xʦ2oGt    I+XʠDzOZ`@   I+X)y@    I+Xʊgc˱g   I+Xʙr:    I+X)]y   I+X- ;ù    I+Xʃ2a   I+X,p*      I+Xv:4  I+XP Jr~     I+X"z6_G  I+Xr$     I+Xʑ1Oݿ  I+XE0?     I+XqH/K  I+Xʽe @ʜ  I+X9fY]B  I+X?UT'o  I+XG2  I+Xʺ$7YL  I+X̊A  I+X\H  I+X. K%T  I+Xʔ<a  I+Xis:  I+XH]R  I+XsiȲc  I+X :6ePI  I+Xp@S  I+XYR5]e@^  I+Xʘ   I+Xb"qY  I+XR %I  I+X!~`_~  I+XQP  I+XTϹ6:  I+Xn>x  I+X츛g7  I+Xʽ۱  I+X@S ٴ  I+X#KCÂ'@CmF*=A EH?oCF=AE}I?DaG?D}GgBy<T@%HB<@H?F=E?CF>ER<nDGB<@H>F?A$ICGAI2DGzB<q@BHB=@H[C=AsI?WG@B[<@@HB<@HGC=nEv?C>B*<FDGB<=?^BDdFLF+FP=+AFE}*GAxD<D8H>R=4?՝E6@wDGƷ!<=D/Fg-I"ΚAI?QCF=fAxEKI?C9G(>"BE4<@PDG>B2F<@DjH> CuF<=A2EI0?CF=AEI? Zn3G [ o4+?Sӿ,ԽAUɛ)CZ=5AG>(DGrg@D\ =@UFEiI$6BF>BHx="l?Cӛ <?(FVH>b(EHAEOc>ܛe<J@=ZFFEHdpAE42>BGG>+DC !AD.Hܙ@ Eߜ=AəMGO>֜DG@Dd=^7IX?E><KBF>2= ?eCCY>BD kPE&?wCF=P?=iGD><F=zA_I̜PGBPF<ؚ~HC)HACZ?Gw>pBFKڷ`HBAHAZE?CCG<>,BEH<@6{ʽ-_ ĚtH3CRA:? >IsGߝ F,@dDG>BFF@> AD?зAF? DI7TBwHҙ@B"@h]@zB<@DH>=CFn=\AZEAIb?C%G> !5Iݿ"q##ieF=XE^FHC-JBmH+<Hœ=pUI/GZD <H3ACEIo<@8FudECATBD=N?I_v%UlMbyXnOe{C[f^uYTjʯoЩsEܴJ8ϥ;Qŵ-ܟ&޶!]cs{>Y:PP fЭDZpRGK`, ١mӣpiCÞ/5UXoͅUPf#BedADF6ܲY#M +[M+wΫds@2tS `lM*zX@frR3~^?:k9L!y/W:d+hqSQU}9]Ҋ*jJw VтicoP|Y\iΘQvCUc/bWnXeZ#Q]SRfI]@^KQt[NsiR%Qudk Lmd6g'} ]SmwUZNzXf%h^lLcn*e|g}]TKx&mNVp"gEpi~_xUwMy:qO˖ArbhɌjua%HdY|\\tES/J+wlM&to)f|ʔ[Tـ{YWEoOW]ZqV}Vtb`JV)&P(psti,_vkbKysh_*kLa5oNog^ZtjJR`WeYcoP|I\iqkb0WO{trF4uSSxVЃcODHT  (9Jd\C1BhvҬitYm&]˞1@ONW^@DŽF3 8b `rpP ~ N 5 ط[& ) 6+! Zn"@@ߑde0ƔQ\ {DD@d/ U`]YjmpH Vs*/+Ed7U!pzе" <.;Vssb!.! %@syC^$ȟic%@es`~$`,ӟ$T'{'(w3 {'_ )A*`vWz(<+,`Xb\YAg-`|z$.8\ԡ.`( zc6( ޅ܀+ rL2 UrM )@[E QX4@\e 5Nв4|0x@4`~A ;64@u1 py36_ ;o{4A<G X=jJy;`+&jPz@>A J MBxC^ؽnD@la;ZI~j7Z&`G`qf&L@ G`ZnR@U$_0@l&I\hL jOgPr>yb@k,8T<}"Y)@\%hj}i@qE58yj +PuknVjk% -Uo`oʝoycp1G;o@'0L) [rbvpr i)Nr`N]xXfOl>v?s߉F@yLY 93|y@('uz3PN{$3=LyIkf7}vA=j~pNԭ@Ư嫖b,7w]5r^ j@x5 ,ۅ`vc2UL NE}'G1)|{q.6S 4rҋ҈G'Iͩ +Ntr(s;ܷ͋`3_Hl&ը7*`d=k= p59U`0_}`N:|D'$=5 RP^ؙ6'%ʚ`}XH }Y4 jo 'Eg@Ϗ1 A#Əژ a.oe)v ΅ fٜ 4,`i"@= W1@nJ@٠ZC`4$X!5I @=M֬.[S>|$er\ aT !I2M !^A@A/F3aOd;K#!$g(ΐ$a\؞G$!eo%A2a'!]CY G ~()ڟK()!tTCJoA$AG||}#!@,?9\,gcU+3--4b/axD{M0am ,0AxI2!4rLP7)Aa{lb*A4Aպ0#AI[7At'7{*#8wT GEÇi3Hl B_IAʤsI . 5KFOf J^! 񢩺I#P LtPm6a,R KlyPSAvTT~͑%TGރSAoW@XaDb $%A恞WUZZpʥqB\!88C]o~S]ah UWMT_!">J.ȭ[b`yaa1 m}Z1 |[ெyΙ^Agfl)jiq0kjar20 i!uLtl!B7(m!j # na@ h nA]eFpAl kp_zp q9I7>n! |"so 9cfc!u 1 uA u!n^zu!9Vu̘/X[CzA_iza|O{ra/<}5D2~]/ ȲWP_[~^R+yMAF"aׇ#2SlAH=ͥnӊ9 aN2l>V"7QWa)$(6na [ѐ!~M[!e.0fa } 1K۵c-. =W an3%,Cj7=X#=,1AayU Inzֽ xkzZҗj<{_!#} }A6I`qA]VV"|J/!(<챟(]r"s \ hgFA8i t! Y!jn_A5Wڝd]C/f%+Ͼѳ ɶa9a&;#ʉ$a wAhbkS}~Δ&f+D 9YnJ!s =%!x˿/a$?!@A$NNb\.¡8t)8ڈ B ajLAnaqK`ġ$A5N<mOfgA43%ZʁVpaØS͡!UJj oA=|OjOсfc~MFf#!9!I?A"hbP5Am+|ŀ{qakCOS WA,Eb 2!ۡ~`"_ ܁WnoȡUw-`q ӊ P`OFA!wpoa]J\)ta8^AI_X8gWrXR`dʹ3A>[m L R1aD,VA !?4!R 2dgAzDwuaRN編YI#mT_ !VQ0A Fg7-Z) u"A~1IG~ xBs Pb&bfˏ4wb E]'ƍ"wu_B2zmBHd q ^ O j߾H W vb0GT釞8T~I3btx"F/oju 'QMdtѹBhVO;B1&;aƄ}ږbhl([q€iv;7" rP &$J">B5JqGjF :wR.eO G?In| I Hgnd!7pn""B{Hr#B.=NA{ %bz.92%+ h'B/ AӋ(BټCt(B,Ɩ w)Bp %9k2M ,Gc rt-B!FS-B{1&/b#z- rc0ªS]4?2"ZH2b"6T7*":CRui2Fbji6#G& wkI+BQu49# R21:S.Sbѱu{ ebYy e},gŴcgBڷZeR{YՅm*jbELXjDll"@_\{{l" cn #(n GC@n4ySc72=C@rx5 r"5tluB*RXw"Z"*wBˠ^|qyB[Mz8fCOz %y"Ch}%[{JwztjC=Beo6Om2 򸆁]7B7 j>#%}e䛄~"bwhVB$%8 w[A2N¯B10ogzXBKGOB} NZxB:fVD͎"*bN=1C7zr䏢H E*]"ȥ 0UZ28]:Gb>B9sbd aɔ \"A (o[Ε «BFR'"~#"i/f Q7"7:dƕ֞ e"AX%$BG5gš"( \ "" Sɉbv )Xqbu1T7(Źib8G4ibJ!Q47) j>~bB5-"F['mÂ{Apc &gbqO|Ă(ے¶Ƣs=톌ɢPR/OBi,pWinVbVu'ذ"&0΂x  z&6"*9"4Bon/8Ѣc r/"kK:т+ox֢Iasq G}ڂź<Kx>nb 4||AH?l+bc&5IbJ/l"ºbV4)Ƀ&BGa +8 El"xn7R.Jptl+!Y*C$ʛ: IbT\FQEFR4¦saNh!"/\ "I/\BM ^uw$C[=2qCpxF\wKi 6UnÑc ht (. kkqHo C}vx}X^v lcmպ-5v ^oEn #f[[@k- ]Q †yY% H' U Ca& W  )#S$ v_Xt&$_{cb] u C&#at!юM81{";^2.j$"cNS%C"%6`& -/zG)_X#+& ,Hdzt4,C<"K(.Cm-r.a8{ m0 S>!.Jr =iC1} ײ2MO` ~d.Tj F5c85c9/#zGئ9#[2;jn:× yJ:cQ <\Cҗ:"f]>7W!^:b@nV[3At UGB|2@x ZÅm 4X^H#h\.]u,UXfv X-eOu`c}]acW^Gc{}qU#G h +k k9?l7 &mC7Sn#)nÉvWo#q Q$qCT;EnyrCShvbsit98q(w Z8isx 93Ux c ~)y:yUwcrO4wC"*" }V ^,7}L_Әc{aC = m\q#:쳛 p9 X&'4h#X#U i,#?f0$/}P"ラy McZ ї# xWw c6f-3wR0cAt#mH-%OU:sZ1=زErvc%é Gdcޜkm#\T"Z%0RCÛpg$5$v#x=(ƃnZJr+| sF㨼l{(64ykjKT$c dO$&6؜$S ֈ9䫫Aޣd([ M Dg*$0 3qBt U# di $FHS_}*A$ hmDūTm hR9d&^L:s77D)Dʊ %J /{}d= d'\io "d<51&d'q|' )ĦeqT'-zS.q7.$HPW1 :c2b,L1d$#NP213 85$wP im2䲭W뷚7įʹ : 8$s</@BG9D*0s:/LK:$H= 4bI@d[d6AfSQB8 =]Ah SB{o GffHĚ1pH<,`JpPM>n,JNpxMMƤ :O$Si/ Q$G/R -M ߠN$V GUD~ IOGN|K]ѡNE Xd?bДYi5laZDxGw[D7mǿ![DΙAq] )^rb _|a$un }c:^ Hd +Nf7b>yg7TVBWlK>[o$ (~o4#BqD3 XΫr}/ Ts$% at׼ ss$+iSQnvRAjVvd0(CMvx$d }(x$9*8azzu{ilw8(<$O;$,/D]rȳd{mpr$:{0קI ( %ml' UID*0hJ$U|lS  J!k(D33gMi_iydTd íٕu${ *қdf )͙$Oĭ8z+6\IJk<̠C ݡLd_JɚdEH=ǒPm#aj$Ͼ;DRcܛ&>$+|"* y7"qI2;Dfv`Fc8=d?v$<q^QGB\^ᵤҲ6"dU$6Ĺ$>Ed Tg Nb7Td MD8~mdąKG̘Ĥ6äB` d20ydީ]j$~ iɄ) 2n Dbndxn[DnAx t$#0Of?}Z]ugm;&8;kׄ+x ؤ;# UyT7<{*$wNd!$ M >Jo .F5;~'c\ऋ/ p\u'4U&dL<|Dp*Ŀ/ĮDP !$R~R$D\ aV$h~y @D%DIY43Dzh?$:$`U:!I\}y$dYӍ$-NWXKFZk Z A#;567E&C,?R%g hzv_MDBVe=} z@dJb y I Ź RzPLcE $g eE˴PE-&;ȥ Q E34 \0KE6DX] *l:JECW&#H ug<e[~>ڞAœ1] Ůâu"T43#epT$%C?X%%EQY!(7V) Ŕ*Ťȡ]( ,ggd-enuIy+%NCE8[/%f}0c2!;(15+ii1E"w#f1IbB0ڄx5l2 0} l3E 4Ya܈9e;܆S*;tg1h^F7>to _J>ֶ @e ]8ŁTN1@4>7oq2%_w(Gy \H1D Ih*eu%IH<3gK%MŠ? _cR^N 豖TKr$Ue@lVE?4l(V% )Us=ʔ[ "[ -;_%\ӝ*` 8`Z⿯bũ}wo{cV*!dȕcEfie‚Sbe9\SJh%?++iEEcYqԷjCLrle8 Nӊ>m9GmoCqoE? n,o T4mE03Wr(Cm2rY0ete݇Gsx$ovE}Mt%`]v4xE@pݯCyEK B3z%\zud{k^˻|e2 }ŭ7+OC~yzU F}űM6)րEd(;Ƨ ΂  肥V~ypМxE(;eB~eJge+ oΒ"Q8Tӽڋ%zJt Rn*'?@y#6:_l| ((]RJ]؎!b .L.Y猥?:%8n e9e9'ZWoeo[ 1gryz3jdGƜ7^ť T|EQONП~-|Y2e QKߞ,v_ڐŋ"\o%%!j%У䝸 ->me61Vc!,vȯ­E zcIL%2 %dnSw GEx.,Y%rWcXՅKN6K?إBQųer+vjSeop ڥV yYEeTԲޅײk[F& ʖu_ .%r p% y% k$Cle?1q*%)5 6 6(饬%:v[\*VꅜዓHh #攣 u!d4&eBRQA!ňQڭDOIB%{3 A%{/ >e M$P' ^9O$E P$Fş E&(Z# Of=ЈLK}fE -\"IVM0F[L/f F:0 yef\\訙m  37m$ &$!\I .qf9hXfBP_&OƧ]nOF &hz}/i R%W|WS &~<H#!|m#KޭC"F1#&kYY^l"fyNP"&ϐ>r$׊3V'& YJ* (`Zu"#ƷGzH *& r+xN*&%ui9w/&0%h#0f-g72fZ2AX*Yf4 G4*D~7F9W:tar;|>;ZȐvb>fH>FP TO@aG> @F@CAaFK&@qpHn!iIU|MzIFI{FLLf`8bIF!2 gL {AiM& 0JQ& 4R&&q7PNXUf-~ yVF8ٰ!f5ʪ+uF6uO-= CW"H: 7a}^eef#i5F$xIBņQ\`[WȆl2=6.U \˦ݗ 7̦ x&ͦ |#i>lTtѦV !t4`Ӧfy ,$Y߾&]TUSՆ/R ÔO$fl¿ơ|8ۦ;8G3{&y)G1"fBYAᆇΜ ۞ +)=F&GV xZA@DFOD ;aG&G<>A G9y` * ; 8   i? 1Y! GƤuƂgkBYDDO} J UC w5T7qH*]'gSKCqrGQ 7e^]w ]L4 Gei,pf455wg'G|%;#Ĥ&Ǖ:&ƭ[,(Q)gA*AyR+GF!շ+Y"f( i+Gu_-|K00P (g~-ψ~s3 E 4g;%3'5z W7")R83R9ud-!ABG "HAg{BGMS]EgnEǞk@G73H~aw)ISHGxLjJǮ99JwD$~Ls`ygvK T JNW3 7԰M7Re*P'aty7+Q-4)Ph[&>hS4 =RG¼q\ЀU? Ȅ[JgFYnP^bOQ=<XWt= Z'  hy[gn2!s\G6Zg aڢ^g!Z(rH[GP *]|"\ !Z1Bb5`+^GPy4l2bg.npZGt9ifggQ ggeaM6x_gi'E2ig0) ~kA Y< 5Гu0\nնy'wzG|%,g$4rGPkNkGq6}sqnM"lgX|gId#rgødh<U9؂/>\K'5, PZ ۅgd8tmG*4Q[tB U'P bK'׵'Gezsgi guAΎgi]58'4cV!_g@E=A84] /M@a$7aG0~D<ڔ$z~ً󼫷l ǎ5'Ε%jǒp 5'➣N0@gD (ɸGBD{䑡?{GKY'RJZ'lo>'*P :l;FJkgDL:ܨQiөg aYARǢ>v:ެgRWy㭧&XJɜXѫ"AŲ|=xxδ0d4E$3߮ e !lGf~*^'u Q70NNHgE<t#Yϳ@3BG4 !`'3 E&ZƇas0ʧ]xʧiMњGtE"*E #h,'qWmp]g] f5O)wc3ӧ_a4֧Gb"bG6;34a| џzCG(,>-fh p$ٰ \|[,q@6(Z_r1 y f8 9,' pn QËgq]q]"'vaǺf_28g!ls>l=;@g/CcGvE'/p!MD` lǒ +M'aMR.ė&GW|GFi?' (~UV'kvgY{̙|N 1]z3w\%ޭiɯCC *l=PfhR&HS5GPTV(fh^% >賍\m>,+#P! &p8(lS(>yATu(LK%()t{p{T_ -FG !h{(sb ESt#h̑h$u%he)&h~1z'Htp O[&g; ȇRDi!~uy%2ye,ȯ &c-(sj,.(@a/+4<HZ J1}{r;&H:g)! (HI,H*'`hGͨ bn¨O 6]CbUH=ms Xj70O H9YɈr cx(̺X;^h؛ ̨{ >˝Lʔ^(ְQt`҈hQa*V5)sAH~#B&O kO(_!tH..zFǻ=Rn@b(>?hvرPw+]H菭} us'{islrH\~L?S )PX z`1bZIf .iZ Q/z)ӑY%x9]j>òIp=cQb ׎l5FFE%)Mn zV78 r Rj 7] ai|e vi'Y%$d'^*ˉ|~-i8o &/Gcs4S0imt^0 -y3)f *4)ifq:3*ed86)@_}7预+PC8[xr j5 ! ȳJ: ù;EL3~ 5;J >I= ӷ~6 +("h3Wcb%A0 ࿘BIR5I|CɬuBtj$MEI&A x2:iRGaD PuB%H: II#]28J vٟ\K)G mL~,MyYMI& T&:Lgw?io3TRQi.8SzRɮ\cyR)x !aFIbS!UnONV { \v B O)e\t6iQ8{)|ve_ Vyi]^tt *lh5pm> iyf^@Ƒ=i8ۑ#j\iZ gitaT֨)M ;")P;ld ɇ[aCG9Z)4ʯ2LN>\VF*AIUSR2ݢ|)BⅧFg',Ю7NN Ii?ľ/`T)bh +iه&2ɻ~nZ3j|4I^O'ioCT?$l8BV,|F3NbMlg| } jijMݸI#״{t^ Ž9e/߳n&-şQ׽q IAv-6)Sw&ޝ 8P~1.L%$)ؗF'_;z>o^t? (T`Miq5&`D7YډSI"1E U)}ctq .,IliG1d~C #a6 Ӕ  S W$8* * TjaO,ʃc$dt# Cj\tj 5Ъ/jdz"*X0j4Ɋ *q:;(e\aj'&Zi8 V7 /SҾ -X .S T 7!^1SjIs" e&_\jgG*#CC%J߱.,&; V'*du(T D)jR wc)JmtJ5\{*S"W-.Ju6.**0@ :- +˭2 Qd 3c3o43j@33 &.J$ӯD=8ji(ڃ8 3{ V9Id;* p TЭcMAXG ;h!?B/`z=sq ]`!A*4c eEJ?UΏE 1m>jb  H obȟCIJoJ9c#-J3 рLjB!ƍ7Hc5NgNOJJ4?GyI*i=3W1RjC ;S*sSjn#4UyMrUJ.$qRy4 t3Kj=vcYf.OjV [ d3S \Jy }+O]%`F^_u\b|W\*1s *~bJE UkQJP}ud[K`f\,fMh\gTi .mikJA)ai ܁w%Wlm2(V]gJLmL koJ`1TRR@ʰ6Y2q5Pr W qi hHt%U52uuj]Evj!N? x@ 7{y6w']yJ{{q9F-!q  } YGfK ~T3 B  t\*+!q+ ÁqJ;7XJE >-{1mCjf jʤ~R1OJ =JQEGYNHH @=Aj`?byV?͎*2ZF*\1*ٹy=JS*}*  # $)ej֦K*糳>n٘*Ui_O?wίJm`}i sJn nԨb糔x ;1 - Sjj-pIu#* kE>j~OdbI8,jC W,(ęy2Ccd}p"J[c:pJ8x6]ʇ#֩׭r7CѹP<߯c-X li f6;ij^}ղ*BrL]j+fjvuC 곟NU/_& hj4ݟgDDJ1lJreF*vXkjl.P|^˧脇J Kt,ъn ikӊX\W<,0Ԋ(KE[\4 yj&>R$S#jjkgWGJ4O4eZ;؀wh9Z3'ʊqC&aފ&.ҧV(i N&nʭ4z H ?; {6I Ɯg 27J5 )jǘ ?I2wQ 13%&ډg1Ak P #@j ӽ*#^> )x#moJSg~+*ސ{1a/ B;- " -ڬz`-;g!67^WI:O\d3)*?+%#LMJM Du4"j mVK !L+ju Az %ݴ2@Ke7ӅM+O 4ǔ?S-K+ 6kbcP G ] o 1O Ĺ+,̪ ɖ֘ NH:sKGS@ #nk֧N_ʽ BWtkGNF6 wCRk 3 THuS ]yڌ+TU GZlܶON9 #+a5(bs*g\+s{dd Cp܎fJ(PqjKH@#K΅Xg E %}j3/'Ae@(Ać,#)`P"*)kD,sc,js30,$-[=XQ/ jGS%x@%s2 N~L5KɬY[\7$f#J1hm8Kim 9xY8>88v;kZ Dr9+zlM=_h߼v@:b-;kQ $A+$2/B᪤a? G+g:HCUIo3g$J˯/xXuWIkv Q& ٴ[ТMR.-BN4iLcFJG7 }PKN ,Pks=R4 X;VKZ>!?cWJVk^ gZ+XEӆ[ )]K^ #r/_ 08YaK( Qc+?n1L:c vPVb uJ ھf%-|]3_K+vc+j/^ GG7j+%k V.]\cl/] nKIhmpbq0fuOQqkJ xlhpAM]tma6?p u}DvKVEV/pp몺,9xAq*1xSQz٭{6Pkd{9@|kg$s{ʰ+˖Qt a]z 9OK)@ =Uk^Nًkn }zkդ? ^K:20d) ?e44H ߝ닣<+GKK+# 6p +͍D;Lُ[5=#+?XlQ QHk&əh1 Ek)c84-+cFK"sy4 nI .ʣ"6Y鎣 xE¹0+.s`0 -2] gTv->Ħ' wK! ""F̭K~^'ܭKSnJ%Ke6CCG K##+:<KNzN u})R7k ˼x, *6 4YK9j>aؿlf5~ W5‚_ kVG {Gī],~?sK;Ma-Bxŋ$ը L ?r75N-kS!+;$\[qYz+'͉3hѮΫNiv`RDΚUKw4!r&>F_9K;Ci#{^!БF֋VF N׫y/ KihOk$6]#׳ԋG$++[K^0߫;׵۠J -8nkzW CH~ 8v F ;߫ :$okC"Rk?!Eme ` >~kWJ KXꫛ; 9FGj&w1`3+Lrkq +w; &kx Jo@[Ae=nKw,_+ &+EkX}Rk}w\ti{kMbX[@QO@f O  "Dkd}2kxT,CD9+P٫ +RbyYKL0e iL}6@ ZS1ALJ BE̕qF ZUEׅHl,XhgsI,֓7EHV˨K+XmPK,ZMl~% @G,j0e5Ox'*PL|&QR`Li RWrxR쯼73IFK dXe)^Ul ˵IVLt5NW CÕ7jV tŪsOYbsoS,6p[$+)"d[ )2y]Ld]Sqmd] _ _lD\H _L 䳛yb/qNC%cD3drӿdP zbLn*,.d,g} h k Uic:+\ LS"¨ya>(h{o i*bBnI u ncpl[ V G^ gUf=l`_3 buL qիul ?RGg7yx=z I%zr];{ 9 eg|R-̺|9 l<~z̐ɜL^M Њ q䁌 魃WĀLVq̶ w%L,=qpt1 ?, ȼlR&ȁ,[ {k,,^A ,9QHb`,eE /Ll-,GQ l[ 0u`LW" ǜsM [Q +LG\ 1ǝ Ib gzLN6"Z̔S T,V8 wyː8;EXGlN9iC3~|2o D,͌E Z,8bw,Mjl@Dzl-1 wzպB: 2 3; ܫ|cpNu uJ,vk !U?=Ìt{d'ČsE1K,SpPFVuȌ5}eީ\\L\;7M[OM LoT̼1 ̬A5JRL) nɕ;lw lauGԬWE[LfZ$B Xf86* !حWy.IOl6qlѩx0nILVьMljg 8'ܬyL:LY7όUaURL)>&ly,P/!)4=w SRO猴^","Ŧ P- /~b=őVLZw/TLqQD 5F9B}XE׌`}I󬕈Cr/qϲ,0$6>Le<LsߒWL*r`F& D m^LCB1 v< e Ibo wigq MQW ƅ1e M U&-"B#ퟃ ͢i/ZMN!?q -lua7 IߗLV{ Uo%Ћ\| +cO;K۹R $ mRluFM"i'UMlMWbosģTy…1%sͲ`Ɯ ٦ t-ƞL3#{⮲$-/{)7)+ -).zci+:ȭH,CVo-M~%- kF-Ӛ.mDx+ 1ͱ,-!V b+0Q-Z5-0 = 5]d5ue[$O8q i6o5tK;- D;8cr>wL='q= ey>fU,@MQcA@kB5Cmu!LR 5:T۠ !h3qQr5MG 锋mDH%AcmwV ja{Mc5p g0vЌIԕSŇ K q^-Q%J # `3 }||9AR}N-X7&K} XΖ^yMmE ٤ M6l,,xW)՝q_1jCM90)8%ᒝm6{..km Ԙ-!mFȦ *8 I魤-TSɬ m#Ipʰ Xs̽X S :G`ug<&5amC}P% mFnmnS֋'<->gðcKH(V> 0RXjFa鳓~-&[jB ^UM;% ־/-+s 1͜ۊ }jʜJ- qVlmPL7Hؕ m \bz1?Rrqʍ, 6ssdjbmlUNʍ &(-F4 NơԭlE"խ/@t Z q/!-Aэ y` א1mNrjUXuzm]K Q_Ͳzr Psu83E\&-]oLPmBsP-S써#Lx-~7m<`(-K~!vZmh%-)2{ %X2m;%]vn_= v'["PƠ.wxf-tx-}h\mwo B}WW=ŦGgrqmĖCX+HɣNĒ\$3Qoσ# 5Ǧ 2, |r ^9Q(qgN~S8 [˳"ANRx T; N:{@uR K[ 4 yegIS*N@8 ?%!w'c#^qc%.d m&_)e'N^(3P4)'XOg* O7↳ + z,] i, W,80sE/ gm/Nv3痀-~ %2U35 4sI52N|7ʽ pw7$?L M ]XKLm ~L BbQNA "]Q ;.Nnԣ,/T ) AnUNg[V58 xPvUnL ?XV0*W4I=1Zoe S[Xa%&\2.?\Nh: :]>>c/_z*U_l v!a$ %bcn^_A*`?. >D(e.t'gY_ITRhg k&b2aϩ'mnY w\mdonNګpXO.n[#oN46sιֲ ATtPQ ~ ڟti 3Ru):K$>xn*D@xГ VyN>s4Wx }bg4Nl ج\N_u N\Q_{$(˟uOn+v fߟU!Nr qeN  0?;nCr9)W!~FC➄%fO., vޜn 1o֚3m榠.H ai6#ygnq GO. @@_`JHv!cxio# }n3v#tNbnd#{ 2.3Y1ĭ6v'96?0* -n_ ӦCnFՃǵNy6qOza,z0Ψh&4 .gs껎k;OgΚ@',қ/CfNe<5n,hC9br Z ЭN\.WUn?[>"anI7.@j 9 V t!: ِ,N{^Ԏ.5}ώ;7jtTΎh cZn X C5ώN~Dю7uηϮ}Hlޗ"ӎ_َʾan3;W,N!܎@snND dܮپ?&ݎYiw1 u1N0* ]{}phQY.j. I%jJRyNVx.6|{bULΘz r9DDnȪtO<#9.%3v]莒LjZx٘f"BJw3 0O!Z6{[1Ω+ ^le,a. o cN7$.ʯ\}nnLRP,N;:N3r7k..t} I/nuM.nFT3ZO>Kyz/4 3׹/;%v#NlW}7*oyqԎx!] 6w ?:7ϙ"<o_EEdk'"+H;3< 0h[;LM2C+Ok8ldOp` y.㣢 F00ϸ/Itt5+0GDvJfl<%n%3 o] Na Ht#O[ Vj%oZ +& -ڐ&Xi'(ܹ=)7f)vZ "+[%Fk,/d O̤)Кn Y]/( #0W:c}jy”#2OXb5a! $P?6[0 qOP5O0 6627BF:$sb:/7) cWn8oA!)]A +gD%7UHT:=nAU/o^h fpVzp 3Wϲe;YtlԎ2ZO?Tlm[+Dmg]or %^n<T$a6^O6bOLbҫ Bd=K meO Èf <"bor5dֈ~,BiHBߏjo  QkojrbkoO_K vR{l55nm`kn0jqlo-Dp@q2 qdS=bτW$tO%'u:+\}v&v/W y x,=ct9=zA|tvo 7CxZ@}o&-CuOF/ʅ/*TD_ &50o,} iM3 'o"JĽqR{$qZ8s >ZŸcM` BG5S Tk%iɣƅ%vl$zb o^ g4$06 oϤcZ 8/xozp|-QrPOv@Z/D$ao_ѢD]#/m< ϼԤu eo  J1.2q@YNaxZo<HOco|╨P?JQʼn/ XԮ.'yƃٰ/I3ҰO3k1^ EfP]b|CO8M"P/9DV|Z¹1Rn"U /G L坪o%PO z]E]-Vefo:0P/Pmŏ^|M|=@T$/5 ?{gȯ @υk R/_&ңƏ%>¶j@-shǯe$24EI껓oWW%HM!P(44|pwDկR iylSb׏VcR^|d"PvޛUVxQ-/9HAO ]S o$Ve̫/Yz<b(Oڟ-פ `7N´"K-̲ʻZ@_O)affU$ f/z 7zU!62n.W"/{ih3Ox" = i) 1*+}@ \C;mG0ڤ=H xR бС 'p@pMF S çzm 2"bep[  Dz& p aPb:Ыv 9} 9E"pM M#Px3w6UT#~H^%~"+"0'ka]?(%×)0> 1(pA?ź+p( ea,o* HƱ.0p /?6mou0P>b10+-e1pѿ>20`6cO4o30Ti#.P_k?@u$kN8 787_2=F: 5;ݞ <0tN<=jǜ >vv GE?Ld DB@p[ȥ x(irA,$0B m:=0٢4K5 ;p3+t[6HNTIFCkJpr]$ @ɼJ^ jfqLpnkL iHnw+H!KP}ĮI$ۯSpYF;Sp<'+U8U8|^WW4o2NXPw/XWEEFZԽ XZpA44QWЯ-W ZPOWr_QGSWk Ba0TZmaP%g3czzd0mEH e 0f. ;gHO!hp4Ѱhp@wVj&~C{k0/QO6j+N գ#dbjDe LoY&A ILgiB2qXG' rܫjf u_tVu<6tPgKv ¼9@w6 !#xpjL {wp?mB̸m"b0FCHR|p"N!gKZ:~ )SoL }$p ݇s?`˪ p21;Op)s]^0 ׆zc>G6* B0=g$w!Xd }>ˉrŒOjrtOkDWp(8a Ӏ﬌}1kF ;$E0CX:.%еw ƦM wЀ? PGRUPcF\ q̬޸uS5 ;  $zY-j ȟy ;ږTqpel:5rr7Grl4%ޗƒ mvl 3Py%\-s1(|EOtϥ/ lVp_G gUP-Z1rp2CU]/A0 ^䰬PRv a< ϐYMW$~ڬzGtǣNBit^0v:mj p _ȋֶ0\ ^v_F0W 1$7' L0 D:mȦ0P4QwbIҪoR=5p}:6wpVi jFX+rPQ) m\IL9 Pp 9Đ:p 0W pKгUą O 0APzaľ^- |Z?p9Y0<բ'АOUX]@Ƹ#jv [Ӱ'C HFв*{*prAְ9 =8tװK'1dpupnڰ ߯wܐ˶T u0+>ܔސ!X 5smސׅ[6c*+N# Ntiw9ՒG배&85p'eA.!UQ @HP9  /WQ0lÆĦpU  iw:eP 3R7'{þTAju0c |pR*py"J?eogЙ4 7 Jg,Q< 8{c @YCk 0G:V&Dq֏ *=QЈ kOŪ "N=/ qszf O89PbvJbuQӺ)I#o<cv Cl!z2 ߃q!ezLQAiMKQEJ:ןV1q;~8|eqT L@ZsĂ;`v9^vjM &f 0D!eDI w1-!1 )*`Xۚ$1:wR$1t s%Q)%mr'qY$q"$b'd\Ml*n$*'Z++u-l J0w.~l|.1N5V0Q>1ql/񡓩2b C &,Q%.Y01pX77:81`/U9e}ə;u>B>RB@n}HB2 rIYa[p30t4L+GvB`LO! )O1[C =PqdIPQΙ6 @2P='P nMR!wQQdVQZWqViٟWQ#: (.*Yq"UUZ)x,ZcAYe!D\/V f2W]qЊ^1SYOzF_eXѓ=b CcA#=`6Kte~ \fWqng`Jsz T֫Ri1 zkvLsmT7msa oQc6opExƩrQڋj)sWOUtqOL֮uQSe̩2vq,AR|ww:jr1YsԂy2 θsH䆘{NF\|t[|1x~1' Z|ѕ^|Gr="Q?ZۙsӂOwOMtr"߅xіS'|G A$ZQ}fi:OBmy{1aRgЋQt 8{Ћ)C :!_q "kqs/6񂏱Sϗj#ёQ0qNȥ9Qa_~H'bx'U'F EYqC*Q%(GTXsឱe\աY AW6cѱ(j AT"diwj0Y h1QMY =Qzy QbRE } ΦZfX}ٳ1 |1ʉeKoi(Q߸D0Q.jޗ X^nH]SFyɼqvstqdQm ol[e&8 Aq1)n(Y gQc1X4?Ә )[˱lZԪo@1 /"jˑgdT$QmqtsIBE&ёfQwWxQGԑZ(D8jX tt,ֱ/y QItvgα T(?B۱+h2Q0 |%hz1a/(њssQR| e1< },<݈}t#Ѥt $cf呥P4rT1=1n`?쑷t &4챩4Qrr1촶qS %Q~?1Q$"M1RfOZ!XQdjhC31u&.gQ}k\dQ_*GuLd 6Q~yѝ/L E`]zg6tRA> sH ayRC9: WB[ _0r[FFQ cx 2\f 7 r0e θ r6R h *2Z;jf-+n#~+[V;*r ̒c/d7 lEj Ε lDn6Hd 2 ~ĂtK2P .RvHSҫs.LZd2q !rE9 HtRodx"XArs3%$q$2{&쀺 6X<&cv3Ǣ()iݴ=H*>Q-+ o)D>`Wy-2s{E.ҕW.S{U`_u-M!tg2y1r=h2- "3RO~/2/ 25h-ޮy3rMڶ 82ϻ4}) LE: [;v9|> ~@tssAвLB_ /CcxDҖypE2 Fj!+NG'>rLv;S&93J ǑKR[ aALVzNE/,H NRh@1O3O2 r#PrV*tRKcF;{^%oD%Ou#RMRm|V=6L 5)W<IX2,)GYr6:oXrl,I2f3aZe-r N4^2't*_ʀ z^ڒDa2E<oEb{ocr6 idRf$ej`5d琄 gkаHudB~.RILb/Ρ^k7l2-Km1%j#41tW1R/!gXo暚`_r &$sJtq. KuRx u?r[Rwr!22KM]]{Rr¢2 |2Yr }R ł~25  o`{^ngҳC;ÂBNҚ"68sBdRG( yu 䬉rmH ˑ #Ln?|}r Ai#Q R$\rN5 Mg2` \,ۦ~>6RE;Ҟ9 8˜BNIzs QR-PŔRD 2Xۮ㝲Y)!)rq]2: bhix\yߏܽiˤ2g `Χ2qt W2- !ҧ2[^ sW Q0LRcvs)X g_ XƠ2c1c !9\<奦$ dc= 2h2*y'R eR0݊¸?['WR}e_nR d I PWR\(vЁR?tDF^|qr,hf~b V5T6_~^4`i GA{$:Y2nKA]Uғ6rd 49/>rS%˒G N$ !r4c`O9[Ͳvg 3Β&w$ Tra'Ѳrt2Բ 3s:392 * %24 rײ},_ 1$N ӡؒ~=+R![`(5RtW*kR?MEҭ.BQ N^Ir9Z| dtesmu8pT^_Rqν~p]Ӓ(1 _2nMG"<@P`D ,21^җtՒ\_ٜreG HAuur¡ |J 2Zt sQcr| 2DYk]DKr(iH.55f2:R o!g3 kw |pӟ7 Ls0+ ,;S\+XGs/aK =M {7xF}B$^ zD z; }y NO I&tm B}3>AxssǼA W=J3QFS^+R_93 ci#:sj;0 SJӞ ?Lwv>v&MY3 )\j S" g!I !oSoEG$j{%s/oV,&L@|, &S5nAr/s(ID) `'31Dwb$R +3jS:܋g-sE(S)%$N/sL0*tZw81!f23ye19 \>(X)?P64 .2*7`Ώ8}vJ: 9S |:3%c) 9s<N-9ӆ&E=siqE=3# }0SO C (AS3zӝ:A=-y(C?-B<8Bs1iED=Gߺ rhGʢ9E3v+X;~KYx=MjL}N6ݱL3l &9PS QsD-|HGH9CPs7l)U;P8XS [Kuu+3sr@^_S`S+" e/2b'Od3`O:ig\c:hsm ANk/6\|k3Zi4msZ rn*>No3Z[_^p%Qxq3/o ܹrs{ Arsƺ6U{nzp,)msKRwooԗLPyRF|yb{S82|S~g2}+E '6~{6V_™rʀs78`r~sbd߹8sԙD?CLgoY/3)umDN33hs?͓ě4 ogkRPq3ÀSC}ғ5J6ӓS(s{f5ԓtJ> !lՓ| ֳ dsSpz!I]MSz9osi)SGO,:|3S/*/aS3ȷq{s! *z׷/ߓm3$Z J䳍 ]\\FSV`VsK)-S!{97ЅsEKX2/3J:㳄iQ{(3Ӏ^Q) 5j3-X@̝S~u.hԜw֢3eS6) WSpB ,NS}tՓSyCusNbΔS/(r3NS'tB+3tGE`Btoݞ;,oԍ!BgTdnlO4_b4'WaDwE+g ' 8% , ـsr TVFm #N% B JI':L ؖ6Od " 4=bp1T\EWЭbKF 7t#O+V \T%3qTq{#!t]U1!>zIRj#U}#4^|#ľ,f#HF /#x|xQTt)/3mE*G"*TR+&I*b48(D$.g1~1AmY4<^/&5T'8U6"UY oY7txd8h Ģ98-qb%4Ti&h; l|;`<;3 KA64E-og7P(@T Am ~+A7 p@v1A41ꋯ,F4F ٮG2b9I4AJ4 X ę{Ltz!Lt`MBMt%va6L4a՟ ߯a[O _RX+ia4RtK qOT= gы UtE6{u1VT[j~V4F')Q/#Xԑa$ZrZ4#kn[tXx\m\T4u_0( O`]LP3af :bOiqa*OS~mXde 5@ds} a|PBgT ig:hD>:Qh4Xujy 7kTifmt9l4SQϋl g`4t%¦)qTf_EGp+ykwst0 Adj+Ũu: B*ut{wtLb7~OR,y4 G4Щ|[0opqM*mx#؄4 +4\uJeg/ԗ_HY|44[)f҉T6yTHo Ë<4TuiT0 gѸ=Z?0 ] dd3όT&oAo('t@ {G2EvU^6}̕xp;Tx mlQ>#[yi0蟯Y4 S6SY._4#R4*3{S矔 6.vLtUAqoW,%[$ vt4 f\>T2 vToЃ4p MW! nsC Tf (HbXkHN35'-r &Dh Qt7B4_^Uij2Cԫ(|@!N4=F=#kS{m> *|ӷ A']vΦ J 0L \/̾t(F$Q`G/$FLC4oNbtVt,%ǿT=bJUtf 97 r541בT8ƫa9ȴ$ "vF sOto J@k3O;8ܶraz&T Wt[st6vٸє~z#iT~u ި * QT,s9 e֔>&ti N 4z;'0ڞ| Aŏ\J>ZL-T&hgSnMO, ~hT]èT636TVpWg#_eY:yx4nEm`T.mu]9t;nBwUԚjcq ފ_;ԪZ[Ԑp VN1"FH =԰-t\7VufsT}h\vLL t Dr[z497\LUL|6''uT Q A )Qҥ\<P>=  s5 59`ɾ k 54 5 n^ff bz 5 /b!é ?8[?u9T9UU(dRq z! q!2wu2 Y [~|)Vu7Ӱ<K5ϧ Nx1e~k ; UPҚo %SAQiB[z# [#uHG%UkD&u4(.'U'/l(w];is#5'am*T+)U 3u&uQ(ӹ!&') C֍'wR0/5Ȼ0(S41:љ2?YCQQ35@1u d30UP?ݨ2ز26SI8u+|N.5_k`)/Uns`U)k)4H1rkW=>%V~4>0l X2?%D#P?U-YAI BB"h*qC5 "X>UUn+)IAe~Fx)H>u'hǐG2RADU%.$5UiDKO N~WLmvt\MiL?9`G(OUҦ 3&Ո IBhrU8UA5 [asuwOY,N0&V*叕t QuZTwUsJǟ#u%ZgX>Uiuv_š ěH{ony*(F5R하f7WP)e53]#:'# i1cV;c1uZxeqa%H-Q5} b}a6qN,~̎z5{=FYqvcM::;}nU6_^REͬ "XvЗ_yv%" A V3r_w v a G vOzb pY7Vs3^v&,( 0VvVL9/j֟B YvVp6%{T$-6y: 2Vt]&vs tX'v('602 o)Vk ʈI5*ɔ*mP(vHC;},`!ۂ"I-&.\-ͤ.莦0600vi@O2u2v0 ="0VZηy5V.6FM'386 Tk:\l;ֹDm5RS=v,(?kjȞ5;@͓xC6̓'cD6FEvX|?vfפGҮ @ùdJv WKs;zFɫKWP. K֩ g~JtQp">Oz vP6iְP`J,TR5o`#k OֶAA TjͯRDTV?J{_Vv`ł WVv^c V XcmSX6 \T߄q ׫[ / 5[F֞]ޏ?]' Oq_6 `v =_tT^P\V1mdVV:0 Uȣf_Af։2B RZV=)a$薳VvWk6!ⒼlxBF9l֔( >1mvZowW%żq7Mr֒E40qru p s6 @puA RBQv)>P¿pqHqrx!9yVWu\jMx# ,t[]| Gm‚vf.6%s3 H2 Ɇ Ni7sK(O `W)ljnbDu-6^kDڨ~vS , <\6 /{g H16 ֋\Q6xvB{ iDc\Svl /斶lCM}f;U m< d3!Sxvv(V#܊pE 9y& Ib! a:Y. ;("6 5&֖o)Vw6jygisCv&I vQI˪RW6B*a7@  Vٻ#sʤ]dXV1F'5% `'bcֲ:;%֗J Pm,=8f7hvGt .vln!"OOBVHЈP֎Rt̙6<#v1lGgǿ3An v0Sx+)ޡ61i鱊bĖe oi6bPƶ# '?(7ȶ6FHǶ# ~uA> ˶S_ ӝʶ[ |)"͖i !ζ7{ A̖",j5vL7,vEk]Ӗ=} :VS)mZ/e#6<vֶ$OӘY^+^tX/D[AOH.\{VUKjF_?QF)I f\Y3Pɲ10uC[55%XQ Im'喙X-u<}=G{3` -]-<2 UuR?ޟ Ʌ9R v PTe:jv6h"1ٖ}K ^y/yb6 H^q9EZaV|;֛]8G6tk@KvÜָy!aBh^̖7qx7 k:yPY$l|>~+lɇZ\|_װhhU~w-f7Ͼm`K#Q 7-_W KG Jjؖ:$Vʎ&gwÈבڍ$7($s 78c=QW4 7Y"`W6*[}ش"$ȁwq mP`bױo sgWgW w 'w ÃsE/x|5K4k!  f" *!?"I z5#!kE_!|Yɨ$wN+!:k|$r_| ^'w6AZ(WFֻ3)WPd+WWaђL,'. ˆ+A/Wf1j90W*1bg2C] FH2wC* Q2wʈAR5u S 4J8㻽7&m4FjO:8W=7WAC* wOCv"C&Gי HN (@J7ꐖ UK7 rL:l 7RMׅ<B:sNwLO7N,5 85ULke G'M7";R7QR7" 9SgJ4ѨWU*V@b AU "AVw2*ihnYw0 # Z7q\ TY7gn èZ5Yk]fr? ^w~RO1vڊ`[ I?"bV력cK)Rd̝SXb>fWGfO)gG̎hD saU2E'ˈPjSۘF /TIU?R#v||'7 uֿ6#W6ܤWq? wI@ja&c,+Gw_nkyί{FpׯW1\+Wn%7:pz n 7sC2'k SsׂNVY47:^WgwLw(Z%47u UK0wqzyxNi rW`si }]]>XmwX\ŷۘŷ~~wpw?£fʷh e7F78ΗkEwyNX ?ϗc#˥[7ѝ " ۷6 (z7.i %.Ĭܐ#HCȶ&緔bwi3EI4CzW&N R}71 31KtsQupywIG u W\# 7%;`}w훰֧ d:7X o)7= O5=LBte)wgNoXp7R8? xM;xR(A0)]]# b *Z L1s} x<5f Xd,!|X  xxI OxsRPO7afX̗ph8ةም 1CVx xXgn!XuHpj"88>|:"|*P"HPON&X? }7`*0`Y * @- .E$,/t~#W<28S2KBn4aq 5xW`6P` My7Xd70+ P5)0v9x'*[8"4!`B6h8ޭA>Z=uE{>o1hN='\iMQ3G2?|BX=BBDxSD[HB*cF8ay8nG8 ڠ Hj1Id1J()UD%MभL@!M"vYB6yOW "BO?𖁜QOR< ,mzSq+%-Q *D1/W 2Yxc;e`Yx>x<[XK<4]80 ^Xf}e_>-J^8M oaxd_\a}Qe8;NXbf8YgxH&h{0PlX`|mh mFPm̓K=>n}n+Iqzr{sX);s ZQEu\kBu =vV2+Գvؔ[[ zyYSzwXQ H{x"^{X^r|Xe%)85|RDi hB9uؿRGet>'q8em ƃXh}[xd 58B o ˇl4) ],1D, e8e_6e ^!sD=X9TU%8풘9` Osxh ߘx~= ĺ98kx 28ı YH5 W{#1 AIP=%@!j%ncIQxb ۾.YS,oOc8j [>TJ6 ?8#|ۨ%:X%yMx,8F=݉ Ka{تĭx"y  H~]~X_ ?dz@J[ Ϛ!cPE@دqp*FPݸD>tԭ8s}kȹz 0؏r퐥YXǦuO٠ZxxOJ]x c8_ SCǺL)=m 6 k": xXUe X; S;X:cR J,Xk W9cLFKZ8XdxlUP\O6YmYXY{KmN҇S s.YÙZ6YojjL8S }о ٫(K UaRt Hgt1|$2ؗ|dy b#~mY}z{Syy o[vA{h٘Kk9%٬,tgIhyVW"9b.[5@ [ā@>l!Y r(!fݥ |q"9z] j' Wn9y^#M:yky=YwUS8i!RC#y>E9ũ"FYO[K 6uLv% MJgM$LG7%*P+(%^RQv 3Pjэ6QHSIT9L3_TY& U9@wUy U yXY#H)yV}d%\yW]YBB`^Y  :^C Jf`g6ayOfi̷X[6kk4 J ly'WmЌJn,H룑ogӨiԘqy'd|Ijgi9? rIs9%_~vd^wypp8 qw9ۓ byn1ysǏt)yOTg|"tj3hy\d~zmo~R'ě|}Y <e/9H` 9̒?Ղ *yw|rβY-]542ZA ގݻ Bb9~ y6n<iM y[@5N2,+yy7yS& !FX4_G)C vƠp lfeByxkV[6xUV6¯aL9#ƞY*%Ȧ|َu mO%[Y L, v֥YQ#:ĹyTPiӥ9#QL^iY:\ =Kq}Q$Y&'jùԨͱf+GM ly(wT@{bu&Y,xv7Yi _Մ9}!94󅮙+كZy]0{vxR۶q YeB%Ը* ײV/Wͷi! V9U$Ö}Ȩ #nIz*=½9:d߻5 i@ WiI8f{'^;ITY)Fya.-~'yhߞh7M:Zٮf/_Fʹ?(ܫrWDP39 cz3yӲrΙWN8ڿn2fv9o]=̙V+2er[:!).չF )8yi2i[9Y59O 9ͽ`Xi@3k ٔu929 TY-|Zҙv0bwYYʢôv{Pc蹣Y#a99Yx{ c8WIw Zm91HyZ(y@NZX\9Pty.&D>)?2@9sWj992?sxJőSA?2M޴W x_˚(uy- `:#UkV$S:cpk.J_:XE& r : f xXZ&a-#Zsglzs Tzh쮍J;\ Em: Zm7 :zo7S#2~@߸Yz} Ǿg{V:' Z_d3!8W"\x0 ,j(v$Z Z%z%~Z%:Găgz&Zfj*EX`@,:}-l5q٣3-\f.w1gz0g )T0Z?^2zu/D1W4 к.hhd8`0/8 v qQ<m=zK(@= z$OA#C_" oaCZ CE#uFZ8C5^ iJ̥ k$uJϗ7 kyALqd L>UBN$s)7 9LXRjJJu/NQZp213Rת(/Q+cU)8V= W;9SUzG+v!vYzAuZ: 4$YڏhZ:X,[z^b_#@]:̐y_)- ?V`}`Pla:j]QXaGc~^t4#dPF@DggtshZQ ,kz^4;kZ0 Sxm0_ ΄nŬnern^tn:#m:.(ckZP5W!q6kvP[_>w$%wZv`bwZ:S,wZQO{w:@,'|Z~f~#}p~%/oGlrD +zxд7A<{KB YzҐZ "= 1% WKsz*;ϸ K;zNiV;0$:.Pp!ކf n}Üz RzKElvagGΟڸ_ iF:_:A!r/z9MZQ5^o \:] ɀVo{kO ΪzENSnLi5BBveGҰ }!貺Mү~z1ܗZN֑d[c\*zH#߶z|CɈ人+v'V O9* ۿ: #ƚ1F =`6 Zƚ,0ƚ/DڐPЮz C 1aR ¨I̚!Φκ;d(L Zaf[~u:Wqorz!w~Қ5) JӚ[ 't{:l-MHz@yZ W׺OOe.^Zl? aZls* gW^Znbj):fL~$Ӛj{4\֚L8cn/ڹFz+Hyh%[mYJ;4` הMN 3gz.Bh)럾&, 36 e'opڑ:7x k;(ȉFo%mMZ(s: fQUO:i6B>zv5kzS:|dGA:T G6_]'ӏΚZ6:  BZmzm2E):w0ZJ bk;;u495z({oG{mDWca;;.g[ w\ I5 V_I/;r>D׏c2 [68([K߬#MhZs_{5^+@Be&`El NNի{acJu93[l1 ;=HBx {`f hf׭!; YTvđ_[[$dS%{&Ϙ{.rXát]"۲z D%[ ۑa&{ 8f-'neWz Y8*}{e{, e,J^+.{UY10Cr4ԝà6T5:[L\V19@:rN; <]5Vq={']))=[`i ƻ?'ϙ3?{!uU^;=V h<;c lg@K z\@ BEۏ > |.<[ NEx?ZE[Cw/DI;n< J[ VlJ{]}K[Y'K;#E7QNc |, N4 +GIfMgUJpP{6wR[b gS{.[15@¦XUذU{ [V Ϗ T]\=ۺZ7<+Yq AqZ\fM|YWs/-(\;NQ]+^zZ]\ DKcx1&No: t;t@Bp;Pww{O |>v;, $T"yی ҁQzZl{BMS{{0Jn}ۉ.y;0x[)/-US]g}&7 KBr,S&ց;/g2[ T*p[@쏕;W;6 aw+<6 y0 ݕ/n[%Rj';8 fcׅ{oY y[nt;;N& T:m~W݈p[2`,ȕ{kVx {_G(۟ F-[l ht{{Ά#0LAk֊>0 JFbʥaܟ4יqPܥ(;MtVǡ٩bkԧU{Ac%Kog6u[p;"P;0<r¨ۦ^ (lp[z z P; RJs\4E譻$Iu~`2/;E t.|v0,g;\"팉{nw6jζΟ Q;[Nz{1+Yr;k~ W;T/UdDjMCxۜAz9=#| [-汯 ;b3/d4Z.śyZ"{$G;x`b2F;ۺ); ^V6J@ {v>M{*{|5ӛ{2+AD{ٗ5 W*<pCכT _ۣ?:ֻbLhϛ5g);0A?UI[}Z{;WT0{~`n 1D MVߦ .մg3B  0H軄zR*sW찌"Ee=Dҟ+k4Aa?X0J*Ca`;2oۘ؜[  yp*̀7Y*Fh1eZn4J9;=`[kp1@o༸<L| @<9r^  H|I {@ܸ_XA  tw DM | G \8q |rLmis9<:J-fF;I7=\ PіLǗѤ?bS~\{y|3\fd s$)+VIw~!|9 ="<%$&E %<7wQR%܅"'۟%F 0)fc?*t#)6/Ќ$>R1m0A (1 D4&8܏=}8SS:F=V B\z ?B¿ F\S=>I\]@bsǾK]Q8L|<^E IM|r$; N\5b%N9"O<|# [M|M VX62Rr~N.2vbJSIGM< N;V\-nWTQF=V1EL6 Z}Aӓ[܊jK|0>]0ZNrg6_Bph\- `:fO6$ovz*u,ŜmUw~ HG\髐؅z pzM ! z;"ͼq1UM˼5ZRݐ˖`3{4=VU|=V}.~5=9&*  ]1w+ =g[1.K}? 9d}'ouy=h&C0}abD"ykfoQ $/VWV(}g,5ݿړ Cod=u5~_o} ȩ;T{*ݛjOo}n ZVh=7+>CɥM>pϘyU{#okݒ $\a `|ޮ%}W7;! %ܠ{Ew'}Ymc&v`$=-*V$=6JG+S U,=dC]Q.q>0ßNy4٪5 c6=T_ ۣf7}a '8](M-F9]o[;]O|<ݎ,p= >]Y k>ݏ=}/D? ?BN$yC]% WzD]C v7U?B;g?}7sGc#Hݡk h?]lAJR̡L&M=nQNrR}c~S}b.bF=T=^T@JAV]-e<V]xrtX]g^k Y=e&Z=[dZ"% Nr]X] J_l8a`=ئ  wa~ Bd^=<rc}J Kdd=AQE JO'XW9"U}Sog?7 |޼hciIcg0MQk]g"rAk=I̢l{0OI8n]\# ˲nʑYp]t`e#qSCir}$@ s]mQ,s& ,Ku=hvO Hw=x4yiy7youh&ou|IT ,9y y=c'7xF 5zi(9[m=IEX|]|G@#w ʬU1z_Rgş=%KيݒIi(]K ˀݴL $M\]kv t֎{Lt #0F`^Eڴhl_I &GВx7Dޏ==.ۨO Z9 $j]{ Oj9}Bq)\ ݀b=)Z-J%>p[=F[=I_uY=v˞=MHҎM`#o]BKJ=] =n]B)=z B-,ؙP l=wB]DvRK"ٷ]TLE {˵}iHu!ri&{5=&Q((nB=dgò;q]-  DT-n y9= ͻO]dqW7¹ A,VfȽMJMӋ}, w)Ζ9]qL"ݣ2O|v1%͝LU2GUTa H29AusF=]J7}C1@y@}z|_Y'"]m (ս^ Y#X])sd@{d"]ݝ@<a'$g:}; TduU2}8YJ_ 3^ޚ< J0S>] `bp qa inPsT ^9 - : V|t>: >||;7>2o zN Xfq4~352I}>] x?X{f N){M?Q~Q% 24% $pVV|%o(6)ޗhlEk-^@S o8." K -*m-^?I1NC2~i*!2~jwG6/t5y6Uj9~ ]- <ueh><[@>]u¬;@Q B>i< F^k fF^I\%\0F0~G4}lUI @Hd&^DL֘[jN~C1 RQӊ"&hR  a'S^fCeoUb6W^#!lFX~3 ȝXk|Z=ZQ%^[> :)E[>@dr] C% Z]~_7, 3Y^`~Ὣ xca=b>#c LCWaFOld5%̉foL/e,}"G`Ji>e$ j^iDYI_5\r~^nYAdo~ cp.tC˳q@\~>9$9\>Yzt>k 4ju= ʷ%_V}|nvk~09y+RyLb E y>6,SN@ 6`^7 P4~Kjv^$Hx~Pc @Ȁ^d NulidHvPX}F0Pά ?F"| YNX~zHE>E}[C8DW~!X PP7C9{D3-kQutO:ga^,> y^O9^ɚH.v򜇖^ \~#h9 &ުq{U^ef ]G͟yi.M.3 v5>]Lj^uIԤgk$cG<=ޤ\b#^=d^~tb`P J~GGKJe4~]Fe>i譾B(չ ]kecD]Krr֫ iQ;\K%ޢ# s _ Sy.ү^lKKn#Uk"ZX>?D^ QXU`{u옿Yc*^I54=t> ^ޥB.aCm ^D&YOľ_ Aƞ:4! dA8L& J%4¾%Yִ$˞ѧ WyR>E[ ;X&ξ;9|6-^QeVѾS~<4vɾ97Ӿ^c/;>|> 3֞EHJ5ؾsA|Q#Z0?gf۞6NJ$:ت_`dCN fE K/<վp;033 g&Ԟ57mv߆k^e)/0 >b]LY Kp;n̺>S^aϝ _ i$;6 ԭA:^hޅhfR>Q-OA^" X >IN~|~eEcc^ˬMMQ@7Z $lɞ TӾJE^w}>c^< 5^ڻUbɻ ]~Z%hCM w'?NJVQ_z]^7 L1 G1W FWXPY9> 7 u JCM6@ ֳj H$Kugl _5uo?o.njo#X?F_+FBP -e]P˅GjQ)vh:,+K 8X^׎/_r!㩅ׄ;L_@Pb_~[s11h&rl~ :GIw-@pe?-1@K#$r n %c Mɸ$6U([(?E/E(P-ߛ+?s T9Mv(F?X!?$ //7n/0Hj16 2ܘ$s3?hia 3 58g,956N2tt7?$|q`9?jd p/% O;}i(<>jDb =_D<>?A ! ??H?>_ ] :JB'[CV <lg߃NzY:?>EDߞCv<;<ܡ)Je3^ ~KCdBdLߠ QJ\N/fB݌LP?!9&K`(1lR+mSDT~mJU1\$ h|9V0WV 3XuVSa{SOC/RsL?D5X_G)N_ y 0f^?_ !^]q]O`- jTZ?וD.QbDc5iԸ)@d0' e $L6eY} /rg_ e=&yi/j_Y'Kipvhe?٪o#m_}ou|~Ne*¹f UephF4^!qr?Ts( f?Dl:Dx 3|wB].H;o Dw~Z'wZv֜VU{_\y 0%tҶ&:  ? }k_`WM$$x 6َ8t W+v?@: 5oԝ&? T=Ғ2֎_ai;G/-Ԏf)2! _6 >~c\"k_7_p/"F1'iMǛ=3N 2b_ /h?H YͱcģcBנ_ŃaR?Ӟ o|_B ~^ N/' D?embVYE]-_:I;  DX&p?nDuҟf@?B4:_<^߱_R{ iG$r!%(?x"2I 5\f_q_cAsf蓗.f'w{{ݲ~0]MITZG&9" pi #bKʞw64M_$uA4g%AQ%ȟp 5E;?U|S.?877t@ʟfs= )] zg?}cE?  2k FÿHJ~ߓ?s 5&lȟHEhf_j,T}(!U_˿+C֟-3F_ΰ`{?b&&]ߟI"~*H'M~S:#OW@7I_Zϔ_ \%+ tʟ`n;{@&8xk~n.߯v ΰq{7{K` *qk5j>PY .UA: 7d. g D1g9 n.:D 0 U6 +a~?V1p^4U@'mgx8fWfb.$9ex&"Hqw Vw), a]3f$9R;F=DC'e#? okso64D #hY7aB= =^cwvw)~! ;^ZY\^)t9AAQ'1U$0ySp+"f J=bx%v>[JgqB>v[=Lb/Dw\KQ-Pk3C4-:76u^2 -]]zQSG`$dPw.!?_ JH;W#%p z=l;= ejo`c7!%ly#Q1 VT9)44i{G x1O0#]7$1eaQ7pU|U.y)M0pSL&`c8HJ1fo@/6];7|TC`pd;J~jgGqLs{UFq2BU >'GUf#-}.x+rw:! yR^1sQF`8>NE{$Hh?K>w/^Lhd1oE?#\AHjN;8rf-f1~'yM/p{wn*1 D+Q[,?h~sRP7*'J:E^}b~0E61R9k03Gt/vVXu8~b YAbH0``ELceig|SA(QM6]#9<{C;3) v} laoLv8s7X^OBQ TUZh\#PUt/rEKv{IYG2=Jw(Ve9Lg47pplizR4 +e%V^Lm|BtI=tN}H) 3?2s_[?[5!I~I__)K 3?;/pY*"1VlVHQQVT yt]7OByNn~xr 8(Z.?IN2=sB|PEm.l?l.,},t!p=M|b]rE}MRL|X %?dq?a aM8F@dn3 'igLB6DL^_:C$T7k[frurpJ1`v7R7M,iXq0uW.5=&w w8B3V|g CV~P/%1DXz-r2 n"[,|Oh}jQKVxD=9T 7z-K' (#DjUVgBgoWa|)pZ+DSxYIP#} B5u{e.|4J2)(ZzT&~Bp@&s- 2PuJ`!ew.s{_e6F,sHE,0#EwDOPq,Y]tCjdP(0h1o 7xUjMiz'SP 8LRWzNm)q(p[>7SHp-k`|m*%1L,ee+^F -NeN`er c|gZUAT7:B Uc]X /vR.6dK\E+Lb?iwqK>}XC]g}q8KUF_0a]R~wz""#(Dgf ZLQ!H75B0kTP0+B0Pd ^nHorf-x}<}:(2uAKvD!jB+d^,S>L(7o$a-wsr(ZMEihd_|?Wl[ J8O YHEA"yk|)uNrrWI? E'RgKy9\4F+~'ZWAQ3Qb-[B7.w36}B0Kwv?[ a>V!a3)#~^FRqhBI|u/JLQSV2~:)Q9xdJ-x8W'Ey_I[ ?Bu]R9.&%B,`<8(V(im*2~6n}-DFj3~oR Ms(0^ ZK/*E&I:H}'|#+:l U Mi.Uw0-nafW' 1,[s]M=eX`*b ]H@Omjkg_&@Nq4OsF8X?'}c7~ n?V`As9BJqmLjQiUw8ZfwXd5I2ycel1<33YB bsc"9ER'V3, g=41qV!7;l4'9-%u,{vg5y:cm#t Jg3%Q{+]M)(_3PKNe7Rg2$QfAzCeZ{9$OD9`.nP l%'MMo  3/#!jl Yo=f dM;whEZ@#-BPA?#Ap %&O%-7]5K &'n2}( 2N'=Pq;r 2b0L ?X_\86BCD ,D:Oc):0{hO[i^,kEDCTvcPyq!$;+RJ46_Mc1m6I+Q 0lO =SdMl r+(KN._Y:j1Vq(?: 1KvdvO0 9 Y-t@X#9rA>vXn`5C]u j}wdAs #U()F%+,YnFK> @Vl.Hh6 ?6plcve]=.^bK aOe%4n=w; ;mY>w#bEICUAc>QzEeh=)Mpl;M2FC''J+ yxIn$dee-|>x6.8| ]~d r FQuw& 7,yZ/u31w X,-k(4ehn16/A/:j O9}q_z@OCiak$iuNJ2kOx/Lez\4q5|Mc7!-.?yX5gQe?DI_ "ljGTR(Wx=uU`x&-{;A^WZk N:I&#MJ`||VZ||Ya|sEv&50QV:"d7AMMzU,\[-uthr51Os!q\UqWV9v*Si!1/2lEP^7oaUy[tD$d/|0u2}wVU -wmv\HX# uUHXb0)5QX /1A=a{wTNEyD|0vSl_w}.1!mUN]cYBkLZ+](FCZK` |+QHC8 n*_$t)+}1OajeZP*] +k]X"pJzbYJ>.jv]= ~m)S `} -x;>Db;"^MzU5 hqvhxsi' jZDhORO&u8%QLce'wC13,a'waS;UfN:nE!. )&P!;I[.+RS;7j|+5q. yx\cg j*cYR9gsd@\[B ';a*~6 T`CQj<~%r GhbA ]1iH1{v"kXr*~B05" q Fw2EO`r(cmSSY02:!h-mL]zcd}+*<2+hL=} uW?+%UD;*9PWnmP'EB;,`fb@/#rGvtm>b:Na`g~dA#``AMf_^ ;,(Uuq2?3XzU[#b~ Yb^5?RhpJZ%(C9Ob\yj9~@U;n?a?G=rt?R^m]jwn=Xn?h/1f.M{>==>':{^pNR4x_J; `{5Y \"XrnPrrnnN[;>l}zC8 '_g@"]Q Zia|PH$tW%xq'.6TrA-Uh]VKD K)jp`zLNv|Y!s;V +c"F,:{1&,rVCi`QQ&c!k'"Ntv A|x8SP`Sj7\ M^v!%28tw)@f\[kGF.V{l% ri5mjNAT:'p'\lYnhh+"@#!K|.k[C+D8.=q/_t<_x[$ JaU*V44 }"q[qB~b, Xj ,%"aRB,Rj3''29HJ_ Sn[|9n+O;0rLWv_5\d zl *`0D'n:*9ErtB'Y]erU{0 u`dtXG8t\X )`T;b<>.{\ p/v`]=oW0AfM7g|Y+.L -y0q?J1EpNifhLQ^n &by=xax^SJmV.qTnp-um.O08EJmvWAw;3W\|9^U(HT%nDqxb/6 o G\:g6O +Fm ;V9nw]9dF CHT/mZG[q`.@!"66hHnRA}r}r~)I0rl 2]q%zb:ii$)vaE~2LT l4QY5]">zV/,E v%$cro(6,:>j})k 4>/a{Wtt.u a~4K~,`-c43g%5L"mZ8(7Iuu`>Vc,/] n0 v]M.!D 5 IM~KHTp&5sK Boag7,3e FN3T?x'P &|.6 Je0%#X[YME6>&D{@ Gz?)(YE(V*SqkzwZK`7=~X879WgTp-weO0.PdRga Hp'Peh@N_[z $98#QMk,_EH L8Q]<1hLn<9KTgvx$Q$}`u? %0r2Po?7hy}\"G<e2 ;E+dQAPP/x ]0AD=PJ5_l- [ /"ygD4lRWqFJm 0p 5XRw7V)K%A<uDCZv %css"F[xlBZ!_<&L([0VlA@(I 'nSM,IlXhgm TH,Pf.m]@p*I15` 'S%CyOa,tfS*g GDR]>b=lB^px|ILJn.JVP*B9wFMPmB[U D5S;4bT'];3#;F)FvTGy$i?pC!3ok+l+=[FWj^>?H8I|c*LG)BI|;R`X]gAK we^g< wa ^\\ZfN6 :<jY8{+WdUWM3?KohUY_v+C|z?`j^GlY ` ;,a=Oq=wo-n,s"T`xbgfx|z2sDb3"bIUq+|s;XXRTr/fKi9)ebkSrT#Vm1\>5vR`S  a/D(zH0TvQNYsd9GjykK4LoPi0/NI(7.7q&N iIekxH^DxXO0_A(!0S2x[;iKf'69H7\KJs$`Vywd(]>*^eW%_zc+v^/tvGyoO/HQXw}<3VYx PlOvaw/ !Nt.'.4g]1^^Dgw` s1G3uBagUiI9\/ Y`g1+7 |jtc,J#Yqyea^uT sou3ku- +[v O}7x_?wG}CwC# Nlo1FXkz$es37gd_x{jU& t 1-]hq%jozCKGl1 P_]0"S 9XxO ,!|}ONau]7@9tV/yUl9J CTB)\2T?Gt`;DORSFm\R)T(" =_) ]V.u> MYH*zFb)A\xgaXYFt9$bIA^>u  S=ZLk/^WR ,x+zLU)3^+rGo&n=~ `'Yz!(6Q"OaLb4("]=?U~um6m* ZtK\U(+ n@!HOwA|B(p,vsh6T F!66DL?6jeHH@I}@K1<G+z_!tlE5O o&H0n6OW2OUFRo&DRHRM!!95Vf7'o\JX29T2SyknJS?O%(Dw1W3WGsH`)N(QV'\{74$ ^v@;/Wm$ Mf&/_$Rqek8 i`tAGR %ug_}IuTxL;;R"4kWIdIE2P%Kjw$Zs |Dw/,zi~irV:,7WGv},YJ~XEa bxM.gb7CA^L[a==(s|C4F! ]h.VM:(5.w>H2LE!@YJmvc!{^ YG7z4?XG{Bsd1v5(_4x#VV=-"(=v: bgNoMd{2j|:a#.G`oLKqx! `kKfwfA%,(=Y}R!b e%SmH\v?Y/FhZ] IyQb`ky\C] Sj4txbVSzMZHv]]-!uLe/+KAbY m5 (J5 ,Uk ??; 1\|Wq9#i7XL4J' P^v"yq} VD'BnP\\3ym^@.A[H"`r LJs4g, ?,{l> *~pGjhf,p.ScVkeWpc]d?jT]/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/token.rs <VTv֏DKJ2>&B#*-$!#NF+?.& "*0 7#C<%.,'-$*&, K.44I=12DKX(79'!!!!9M#%" Q"F"#;L $.6;(+ $*"&/%*'0(/$,$.(+ $(825%".#&,#)= L*) %F03'1,D#,D#*-E#G3-E&-E'7-E"=)A&@B(@#?@(#2:/.(. &$/F ";F !*E L*))%J/3':,D#,D#*-E#G3-E&-E'7-E"=1 "E *5)A&@B(@#??(#28/.(. !=  %F03'1,D#,D#*-E#G3-E&-E'7-E"=-J1C(. (54343:"A:,A. &7! 7+ #'&@#&:#&<#&9#93656746696834557634353456645495447557766457678486662323322232322322344233232332332233233234342232666C"W K )9::47698577:79456687454645677565:6558:;887756878959777575874679787578566:464444744667:8857:657576577< L2L-7('# &F:$5? ?7 O+1"\&17'-13#93F#'#G A3#)/5%B# SF*#&-/-9  5D,I %+'%$5 ,.w5iq:Yp\/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/expr.rs Y>lR #&UWQJ  #,$ ("  JPPQQQDN + #1G  QC & 0L?8 O@9N<87> -.2('G8-22 M3A QIO HBA0?0?K:$3H2 ?G7"P?A P '( 06+/B0. S ./. L5 POOM&4Q5!#+03Q5"#!:Q5$#)Q5!#(+*Q5!#"'.LN#$Q5!#"#Q5#$CQ5!#(%%4LN#'/)LN#".Q5##0.+"0" .Q5$#.%IQN#"/Q5##"$"=MEQ5!#'KD>Q5#" <=LN#+,Q5#$!;LN#,Q5 #"&;Q5!#GQ5!#('6Q5&#!"0'//QN#'D.;LN#"CQ5!#%!#3Q5%#"-LQ5"#+#;Q5"#*%=LQ5"#'7,%#Q5#'$Q5$#$,Q5!#'02Q5 #$'LN#+Q5"#*,Q5!#"(*Q5!#(% @.!) 7T-31=353/11/-3713753593331;39535533/339P-*!  MUN),&&&,)JN //1  CQ5%; M60Q5,#(I/, 9Q5$G   Q5#4)& 8Q5>079e'#4 !O@:1"  $IS20886D7 """"%%$"9 875 IJJ MQPQ +&5 - O L & #(0 GMK? JPMP>  #'M" KNQNKPE!SO6 !!"   " $-( %B$&# #"A06@7eK<2+-..+-.1)++:@74K0')*L:.--HCD;6O!#.'/+K;(1Y$,')&e=(1Y$,')!& "#"A06@7eK0')*K;(1Y$,')& ;/ E+)Z  &W4>B$**@VS/".L S"-#7#a)B71CD3. ,@\D< "SU'#$B. '##4217;'$ I**''CB,+-?H90++#%D9K"5Q<E<%>/3'$'KJ",''3,''A-.(''4 "U5**''CBe?D9K",'',3,''A- O2R$('* 4$),e +I.(b*( A*&A &.0<)$&%(()) 9-".=1.//(4)(.)# 8 7=#(.' C13%.(*^ *-'.(I+/).4-(2=:'K W1:'2K 6#87#% =7&* 87 =;$ 8+7!*I*7M; 8%7!.*63#K03#40* 87#+H*!;@O 87=*N-26 M7,6)-$#'+ 08!7A79I7K9?<&4 87A7;9?<4 87A=@9?'(6& ( :DD,C=)KHQ >K79=4::G717?87$21 #'> 87$23 # > 8!72. 8#72#+*,B 872, 8 72* 8"7#+' 87#-_- \A?<3,'-&'3& 39:+.F0#=( " 87#-)' 89+##$-$4646356:5676<0'5.% 87A7=@9?<&4 87&- 8#7&( 8"7#0' X)#$--CE) W*XVW0DE) 8 7=1X=2+;2'!5 8 7-, R5,$*''!829+$5&  8 7?9E<$5 J")#/,,87A79?<5 X$$--HCC' 8!70-748A39' 87*$%=D0 87#1+3C 86 &@%! Y*N*"\9 88.) 9"88;. 9!88)9- 9'88-.+.9- 9(81-)- 9.8GH 9"889.M9K> 9#88)'* 9"88') 9 88( 9!88)-' 9!88)0' ^3*N22-H1 9 88.(-2 988-208 9"88*02><5 9$88*.(-2><5 9!88*/><5 9"88029<  7$OPOOB2I!/ ! OQI/ "HOL  S&Z HOUQ!PO 0 @ KPOMOGO 6 MF;>NMPGK<_ IPSOS9R+O*:N BS R L:<7( !& "%! $  t % #$& ( % V    2 2T 2 2\2 Q2\_d`c22Ra!MB ][a_c4 # T2 2-2 M22" +22bc _N2 2JL4 4 Q39 V7O3 HOPOD  9 F/D:= M% &)'&(  T O1 C'!/>CO2  @0 OQ4 '!!* 5>+2  @C.)@ 6POPLJ* 9 I3G=@ J" *-/.0  N OE G.9*<174>VN$M7  %D<2 ":NNQLJ 9 M-J;? N !8 9,;  S M B*+&.:(';: 49G4: 5$% %%6! 4LM Q 'BPQQP@=S!/" 9/;<  5 VQN+GJHOMLK T4P,BTP72!4:*O".JLQDN)7),.-% /3K7&"")#4$4<+5 .   @ACDDEFFGH&ŜyF{)F:`/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/generics.rs +Ђ 4 4<<OUN)9)/Q&U+3N97>5LN#,;)#3LN# ,5:LN#($)#' E-L.3.'I-L.39.E/N.7+&I/N.76-E.M.70(I.M.7;/Q>>5+ 3'/) ! 7 9*#/) ! 7 2&!/) ! 9 8)%/) ! 9 4( /) ! 9 :+$/) ! 9 ,Q+ S+,Q+ S+.Q+ S(N * <> TO N8WY ( &(@%& )A%K2# )A#)A)1" )A$7$ ''$ON8.5UN $!;!"+*** -' !$' AUN5UN/*2/5 HUN"IUN(?GU+3NPE%ELLN//#$=;ALN# $5ALN!487(060+A4.K)2E):G)2E>+3('3+,*6**$ 8"7=0'2%18%64%' 8!7<*/*-+8#P'868'86 8$7 +*;3>3#>* 8,7)( 87=/A,,0'aM59/@.0;.B6- !W 8$7&D*D>795 & 303<31.-,1 8 7%W?C1?D1Be6JHM%H*&J<bD# 8(7'=- 8 7$<-'-$/7O' 8!7-<,855P5#464#46 8)7+( 8$7@@.1<0<9999'868'868/01<0<99T9'868'86 "'!" +9!8(?L%QT./E-A/(H0F614? -8*AL%QT.1E-A1E(>.'A3A@76S<4B@=7=41A -8*AL%QT.1FD45A1E(>.'A3A74B71A *8+;8 9'8.-.- 9$83-)F/ 9"83*)F/3)1CSBELWL2R.*&"C+ 9#89)ELA-12)?N.1&B+ 9+8/E 9#830*0'3C+ 9$8-43 9&8./0+ 9*8-0+ 9$8+-+ Be.O$3[/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/lit.rs } g(W #)+!?+:--$(/= 828)) $+94!.20%/ $0<JN T> # C@-!'S.@; 81"=N !% $G 0)K:J  8J CQ= AN)H<&/ Q$@;!-(#% 35%/ %0A!-(#% 05%/  0=!-(#% 23%/ "0=!-(#% 1B"B J"G ( *8LQ 6 ;28# / 9#!-(%  &&F,: C'1D"? J"E * */ 9#!-(% "&&H.7 C'2 "!-#;!!!=G(F = G,F =G)F =G)F =G(F =G*F =G)-  8')  8'))  8'))  (@&- )A!1L )A-9 $!< < P".- D4487">6>131#0@>0U46 Q-#6(FR&&4#$$ ?E". 87%".A 8 7%"2F 87%"/? 87%"/D 87%".B 87%"0I 87%"/B "+98/ 9#8/ 9 8/ 9 8/ 98/ 9!8/ 9 8)  &@-*#!<-C/%E9GA3G=/C(K18'(( M5:'(( !;3308 '/300/17 %-1..-/,2 15966573: M*D #)"<-*! D(C&)((!"?&YE">& &&&'&'%00&M6cT!*- %09@&( ++># HJ"@&2/! D(G&&X""*(!"<&'''('(&03O4-%1cT!! &M@&:3 7&'X'#$8"###$#$"_ 'M ='$$;"UA:""""#"#!_&) '9) G*11G&--C 2 2  ")..(!OGT$ %/P *H+ 4$ ' ");;!L+3/-?"'8;#:M1)2"!% ?.%N *JQIB78" !"&# ,!-0*%$)!, /+8$*#!)")!<%%-4$#" $ <- @E (S. N'__,B,B,C,C,C+B/1DE /e ?Hf`IWK\/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/path.rs $ }Acz#UUN/;"!) 2 NUN&  !,  FU4.N8826!%)S6 $)Y  GUN!; M6O*A Q UN0.!:!LUN!=UN$;O UN/'1 FPP,0# ! UN!*!487- 8%7AF=3:..+D5.-52%32D#=%]L=J%&1%%)4EDDF( 01,214DP0 @,&' ! #30'!- &%7/**+*@5 8470.*63#403#40* 837/?@? 8!7- Pd;56.OD!N- 87'*$ 8 7'-3 `,@(&((& P R  ,2 92Q6"( '?#3BG5#44-B:J M A -0M"M R  C+ S1/MW#<=! %) H . -4M R<4,,8. ["/:O0= " I81K1 Z#6-3;1'6;.J'-8(:03<=0&;($ $$? '"982- 9$8*. 9&8*>1=1 9(*8GC89QN!-;J0M-FI 9781-Q#.-(61E-02;-(-02:0F1E7- 9 8*-' 9#8*0+ 9689/+ ]""( *$A2@2J"767/.2 "' ȶ1rFN<b/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/punctuated.rs MzB.`%N|-I5AHHJPPQ6% '%!!2!)0HP!.&! .! I6%5MQ!C4(<43' ;3$J$6*G L/9.G K)&C J#4*C H1+5 Q>O##Q-&g +QJO3!z ./N2!4B I+0PN.MQP%% '1 0O"5 !6 !C LP1Q:N 8@ 5OEQ;N 8". 0"(*"(* O1OQLN 8H =NEN+KN 8*. 0(**(*  8&'% !9# !9*)/5!9% //!96;'$ ) 0<) *< ;E) 5E&c  LC"3# /!+;D0) 7!+;$+#*<P!%$#.$/294'94U7++'% LP!(''1,/294'<4U:+7P!"*/294'54U3+%'% /P!#/4'.4,' 3P!QQ?AHQ'$#5**2> 5$+ '/4'2404/!*?4D=+1'% & )*R,?P! HP*''8-.2E5*/4'5437/%*B4H@+) YOP! P#8 @ 8 H,8 O<(/" ND !+9 O( 7R 4/" L-/" I(04'  8 N2 /5%.! 2A%#2% "+9- 8- 9' 8,))5 rzKjB+c/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/parse_quote.rs CHܻ (PA;N #"(1 !POFK)4<>,<@ O4RP-A' MO ONO1';FF25&N6 8\ O##^Q-8>('2"3#QD#22 3=55 ;3& 3#  03 <k;; i/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/gen/../gen_helper.rs |2nG] /'0$'0 . 1+0 '2 WBC$ C( CC C+++ `IJ& J* J** J*** $["HI* I2 I22 I222 WEpsLD'\f/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/custom_keyword.rs g9F}>1yaE:Q KM) (O /59OB/0 PMOPGO-/* $#"!  ! 70*$<.+0#:.+' '/ ,XI 5#@ 8<8?-5QR0>6 /[&U9aA&, !-16POJ "1 -323& %-!43d9C 17E 2P &4`z\Qۯ7uij/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/custom_punctuation.rs u5gf|eEN' 3O$172J[@/0 /8%2"3"72<6.5?9* Q-62' ->"$B ,eVG 5#= EIEL1$5>^>E /[G^" !1&5$6Pg "5& 1$323& %1&!8$3dO 17E 2P &8&'Y&##############################################R-&^\yl{hKP]/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/parse.rs ՋfZλk=!o JOOGK&IMQJQNKIF6!N*%&#.70005.'  7.'8G  9 ( :8"PMNF#%++O8*OIQL=$&Q&'-<M*IPM"!%<DT)$V+T-$F+I$-,R* V#Y&!'.OQ!2$QH!04Q$O2!MNHO:(6-OKHOP@JN!%4$Z<$> ';7%;56M- !MM=$=K/&C 0.%< 0 &IKJPP7,',,"GO$:8eJKF?< &;W1 !2?H J 9T1 (;G: M,KKM%  M1PQ'B 4.1 "#*# $; @2*0 QL-;P'#@(!%PH R.)E G( ,@' %;A3=E9+@S#@8C!!!!4 4&<KNQPP< ;.8=$ &;E;; 5KJ8!7 $;5KJO!(% $P1Q:  E.)8 *'1# %;!2+CD0  6 *.$8CGL >.H$' ;/*<44: %MP W.T D L E)# &;4+:5>:;+ 12O@LPM #' 72*  OP'FLIQ6F1MON9  , HPP/QO8 E .$, '* ';=..%63672':O0S 92':OBL #& !%!L:O G (.: ;-/0.C ;:J:PN, $%QQ!A"(A O3*G 4"2) "@$4 7 JML9 NQQMKO1 LONP>1%! EN!$6 NN4)/)E 4"3$4-3%% 43J4380> 43[KO*.6 4336E 435:A JJ!QKNLBFNLU"ZN<FNLN:<6X6J=A#!;0)8-2"#[A 6X-"?A"#[A 6J2e$2WCI!! ( K- 4!9;!9!9* !91KxUbQ"#[]/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/error.rs + p'f ^& 4D%L@P-,K26!9( K>9DP859#1(# :>D!<(*H !PMPD:#!  NMQ=A 8%PJ'>4&OEN), =/7.86 NPPJQ@KD!QMH/P?.95 *OP!>!. :!. )AM50:41A0 # %:'& DB$; *,N# 5 Q6000.P$%BA'?EI.% NK >"LG2@*51 C&&*&' C-C7- .P1-+ $ %,+1 +/3 &+, -!/; C wRN\>^/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/macros.rs 8`mybQ" 4-. !.&&K A+F ( ./30 :& ,-#4 =J(-(,<  *, C %)-0 $326'+#  4-"33$( C( 3$(* [( 7=+L <*(%r=**xE@84]a/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/gen/clone.rs I˜)C➗4*B285% 280)5-%- 8'#';%' 2828283'7%) 28'%! 282828'-! 83' 28 /-/- 28'3'3!-+ 28'3) 8:68 813- 85)1 83) 8'#'-% 28%8%:%>%8%8:%8%4%866%<%>8%<%8%28%44%6%8%8%B86%8%@%:%:%:%4%>%8%68%:>%8%8F! 8'7' 8'%-' 8'%!' 8'3+' 8'%/3 28'%!' 8''' 8'/% 8'3'% 28'%3% 28'%-! 8'1/+/)/)% 8'9' 28'%/) 8''/#-%% 8'3% 8'-%33 28'%7' 8'/#-% 28'# 8''1% 8'# 8'3%3% 8 '-/)/3% 28'3% 28''% 8'%)! 8'/#1% 8'7%1# 8'5% 8'%3)1% 8'%9 8'/' 8'3' 8'%3! 28'!% 8'5' 8''3%% 8'3% 28'#'3! 8')3# 8')3% 28<@* 283' 283+ 8+'' 8@: 8@HDFL*! 8'##1 8"'#1 8#'#51'3!1 8!'#1'1 28!TLNRX 8'XZ 28FNH 28-)-5 8@B>@F*! 8'#33'3!-%1 8'#1 8 '#3#' 8'#31'--!1 28'% 886D2B68:4::8B684>*! 8'#3'3!-%1 8'#1'-3- 8!'#53')1 8'##' 8 '#3' 8'3-1-)+3' 8''#1 8'#3'' 8'#/'+% 8'#51'3!-%1 8'#5'-)1 8'#-13'-333' 8 '#3'--)1 8'#1'--!1 8'#3'-) 8'#/7%1 8%3 28'-3) 82:44264< 8'% 8'/#%1 28%1/) 28 LLP 28<@ 2866@ 28%3) 28%-# 8!5-%- 28B@ 28/(3)) 82626046>4686B4<4*! 8'/# 8')1') 8'% 8'# 8'5' 8''% 8'!)! 8'/1# 8'1 8'7' 8'%3)1 8'3' 8 '%# 8'#3! 8'= 287- 2883:Z 28'/ 28)-) 28#-3) 28/13) 28-!--- 888'/11 288R 8//-#-'-3)-) 8866F 283-/% 28$28$8BD@BH*! 8 '3'3!+1 8 '#1 8!'#+1 8'1'-3)+1 288:8@888864@8D8>*! 287%1# 28/-#-3)-) 283% 281) 28= 28,281 28''3)-+ 28 LR 283% 28'% 28131% 28/-1% 287% 28!/) 283' 282881 83' 8' 8'5% 8'-) 8<<@<> 28'% 28'')5 283 28/ 28/3-% 28FDN< 2831 28 JRF ᭥FD ^/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/buffer.rs n3kB=f($p2qNRNP> VcQ (CMFL PPLFNNV-;JB9KPX I#U"Z2"I$/&3=1 O.$)H4OPQ?K%P<LOQ$AQNO7 M%'0N!#! FI7KLQNB) ! "OGNI67QQ4, :6= P:QKYKO:& @,I`WK  O*<_ O*<@K P*@e K1Be@3*.' D/"; "L1HOIA/TD>>* MP 47110 L;5'*Je5*8 G  $)%>(+ 9: '>G! 2K;5<6p?j VŶ[/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/ext.rs !]l! o<BR)QP2Q.2N 0 %( J  <()6 68&N:%7L#%LNLFPJ6  9E3 7369 '&2  $)&!#." w5}mI!s\/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/span.rs X@.g?nh5 C%'%'%'*' *' *' +,,,'߁sybO+\/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/attr.rs @;1؛ժ#E2U *P.O73>3>QKMOLP:9:  +L?CN# :8 4.1 "#*# $; @2*0 9LPMKPAGKMN!00MQFK +*)"&#50 +2+&#?8  N$+!P#N 8/G.0  7)6\K W;?HLK- N 86'EN 8O,1/ +>N 8B$&B >N 8B$26#!%")C ,(Y3X'#% &3A&"*+&)# L D N+U!($(N8U5EB+3NOO"KLN'7KLN! FOK"&,1 2UNO,NM O*(* Q!9( P>9J*.!!/R"1*. %"1-+ %4W@B I)598& I)%98& D=+64:C100)>6F 875/ 8754 8#75: 8 7U32J4C S&D*O! X;B c&! "9"807%;-/ 9!8)9/ 9&8)-( o%vHU(S]@\/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/data.rs jw6k-ҋ)|#UN.#!+156U+3NPQ 8LLN'1MLN'3OJ$4H04 JM.?L48 &!/3 1%"48 1+H59 '1++4+-UN,#%' 3",?U+3N./GD#B*LN$+LN(C@LN$'*0487=:/7.10::9/ 8!78F 8#7?J 25AE.E#%2.< =)*01 !/0 '"+9 8,*+A,( 9$89. 9&890 98,(/)F' 9"8. 9!80 9&8.9M>1- %5lW[/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/mac.rs {GWk A=+683UN#'! [UND,<6:?+446 PL< Q =)KJ K!(, $;)610*1*O2M9><2'9: #%  J9<4'JKI] ,1?- 86'L 8O;GVI!2NHN%D04 487:,H& "98)/$2T2T6V 5SZs^/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/derive.rs OcGH#lG#<S7;#.(: ,?S+37;:D7I7*+6I7&'6@I7(!48!7=400E5;H!)&#4& *5A5;I!)&#0$,"6C5;A!)&#2% ' D0%+1, D),/50++H'1)<.'9# ( +/B,Z+%#"'"9$8-((EAC*-;/F212FM&FM&BA9'B3 }E$khZ/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/op.rs Z?&}"WB +UN(+.(',+++*+,))6-9, )UN/3*4:$*+)+*+*+)+)+)+)***********-*-*,*)*)9 8&7 !7(0/0/0/0/0/3/3/20000# 870+/2-2-' "9866666659986655555588888;;:88 98755  Ket?Z/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/ty.rs z !i# #9U+3N</7:P"L*!?HA86"3R!&/< S ,-/ L5 POOM&+LN+#3LN/."'6( 6LN'LLN&;HLN)&LNLN#;LN'D=LN"4LN#0-2LN"(-/LN+NLN!,;+LN'0:UN*"LUN#.5 <1 UN# -UN* N+%4887#,= KQ% M%%3>/)+#*2++#*.)./H+1I.+-1# 87=( 87=(.' 8780O-4-/A 8#7+*,EA 8 7(E _!&#'&!&84)DN3#1SG-)/'2;  87, 872 87@$&!.07-80<0#< 87% 87$NEe6JC,5@V4(HM+E) ;()/1.0),341>:!GGG/!&-- '_%/&!A  87.& 8!7,( "'"+9"8;- 9"8;-3, 9 8/%4J) 9&8.-/) 9#8.-(-9/9:;;0+ 9"8/ 9"89. 9!8I 9(8.+ 9&8/+ 9"89- 9"89- 9"85 9"8( 9#8*1-* 9"836()' 9!83) 981) M. k&a[]/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/drops.rs Ivp+e :!6( )&')3 *257;(I669<@L0nl_|^/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/export.rs r\q_ 똦'#,#+(:D  V!+ p 'ʭaML]/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/print.rs ]cb&SÐyR:04,4 Re~j&_X]/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/group.rs (&%<<$"""2"IR#IL#MP%2NJ#'GEMBU(,B=B?' OA*%4&#-!7.'?@,  64*:/+/6 P:*%. &#. 7.'8A 7&-$  14*:/+/6 J "0*& '$7 -=+ ! 94*<1-/6  gBڙji/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/parse_macro_input.rs 0d*XH6l%NO ' ;QI)!**"7 ( :@ N++#,#A ( :S H-+(R K2)Q!(F1-U 0D1-U 6Q-8K!#2'3#QJ22)3$"(") 5h3c7{+]/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/ident.rs #HQ2e08,'D^YPQLGOP.43:-.5 &7$ # .6; !)$&$'?1  T@)ÛߠQp^/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/bigint.rs #Cno'Mi B&8&(A%0(4   '%d( 2#2'"  )#(.  .LTλg`/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/lifetime.rs oANLzK 8%3NQM ! / 3'S 7 1A 3 !%(- #C")' -$B2%+>487" F 4+9!8C2'* [icoJt_/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/spanned.rs d^PrMQ LOQG KHQ?!/" 9!60  OO? S $XOB KPPLJNQ!;)MIG"3!PL><+*S'=xR6^/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/sealed.rs $ˤ1Ѻ_{JP~`0 K[^/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/thread.rs -QO"d ))#MI*M0#/ &6 *C94 %-!2Cɨ{Ya/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/lookahead.rs R"AT$,)!&$LFLO2>;GK7S*P@HA%"70'61:67' -8/# 8 L-P'#@(!%4;GM:"5"'FGF@\@3D@ ;K*M;@'D&U`;![(y%bc/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/discouraged.rs pHì{‘:^7 ><HLPOMMMQMQMKFP1QNNPMGMKLP2 "20:!* * * +6 %;-001?9,F,RF-:10#Q- < KNOK0 Q# 41 LPO7 4 OMLJI@,O9IN'+(FL <<3'P(<N"CONM.$JI# ;Wэ6H.`/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/verbatim.rs ̄b U|O !.+R%6)7RNQJFR(!M ' rK,(hA5=]/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/syn-1.0.109/src/await.rs ! EsYG)LtEdŔ!BҺ|bW9[b$a aarch64-apple-darwin:Kqɼ^<-b86a8fca400eda90I+Xt03,,,7,W*X+,+,7,777,,4,,,,,&t*܀*܀,,,,,,&&t,t,,,4,++7+,,,5X   ##'