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  \3  \  extTokenStreamExt append U  append_allI append_separated   append_terminated            private!!Sealed!% format_ident%format_ident_implident_fragment(((((( IdentFragment..span(11 1(55 5(9 9(<< <(ident_fragment_display to_tokensAAAAAAAAAA A A AToTokensN Nto_token_streamNinto_token_streamAR'aRR AVVV AZZZ A^^ Aaa Add Ag Ai A primitiveAl A n A p A r A t A v Ax Az z __private}}}}}}}}}} } } } } }}}}}} Delimiter}Span}} HasIterator }ThereIsNoIteratorInRepetition }}}}} RepIteratorExtquote_into_iterRepToTokensExtRepAsIteratorExt'qIter}}} }get_span}GetSpan   GetSpanInner   GetSpanBase   __into_span} push_group}push_group_spanned}parse} parse_spanned }respan_token_tree } push_ident}push_ident_spanned} push_lifetimeLifetime }push_lifetime_spanned  } push_punct}push_underscore}push_underscore_spanned}mk_ident}ident_maybe_raw} }} } } } spannedSpanned__span join_spans     __quote__quote_spannedpounded_var_namespounded_var_names_with_contextpounded_var_with_contextquote_bind_into_iterquote_bind_next_or_breakquote_each_tokenquote_each_token_spannedquote_tokens_with_context!quote_tokens_with_context_spannedquote_token_with_context quote_token_with_context_spanned quote_tokenquote_token_spanned(((((( ( ( ( ( A A A A A A A A A A A A A A } RepInterp  } }}push_add}push_add_spanned} push_add_eq}push_add_eq_spanned}push_and}push_and_spanned} push_and_and}push_and_and_spanned} push_and_eq}push_and_eq_spanned}push_at}push_at_spanned} push_bang}push_bang_spanned} push_caret}push_caret_spanned} push_caret_eq}push_caret_eq_spanned} push_colon}push_colon_spanned} push_colon2}push_colon2_spanned} push_comma}push_comma_spanned}push_div}push_div_spanned} push_div_eq}push_div_eq_spanned}push_dot}push_dot_spanned} push_dot2}push_dot2_spanned} push_dot3}push_dot3_spanned}push_dot_dot_eq}push_dot_dot_eq_spanned}push_eq}push_eq_spanned} push_eq_eq}push_eq_eq_spanned}push_ge}push_ge_spanned}push_gt}push_gt_spanned}push_le}push_le_spanned}push_lt}push_lt_spanned} push_mul_eq}push_mul_eq_spanned}push_ne}push_ne_spanned}push_or}push_or_spanned} push_or_eq}push_or_eq_spanned} push_or_or}push_or_or_spanned} push_pound}push_pound_spanned} push_question}push_question_spanned} push_rarrow}push_rarrow_spanned} push_larrow}push_larrow_spanned}push_rem}push_rem_spanned} push_rem_eq}push_rem_eq_spanned}push_fat_arrow}push_fat_arrow_spanned} push_semi}push_semi_spanned}push_shl}push_shl_spanned} push_shl_eq}push_shl_eq_spanned}push_shr}push_shr_spanned} push_shr_eq}push_shr_eq_spanned} push_star}push_star_spanned}push_sub}push_sub_spanned} push_sub_eq}push_sub_eq_spanned}IdentFragmentAdapter  }}  quote_spanned 77777777/7/7/70717374747475777878787:7;7;7;7<7>7?7?7?7O7O7P7U7U7Y7Y7]7]7`7`7c7c7f7f7h7h7j7j7m7m7o7o7q7q7s7s7u7u7w7w7y7y7{7{777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777N#.  inner_marker1#C. 7. 7D.IdentBBI.Borrowed Owned ૤7D...;;; +ͤL.......N SDN WDNC D ૤[DNBox  lܼȹ999Global ̫dN&&& %&phantom%&%ّGGN ʁʺGNNENNNNNNNENFNFNFNFNFNNNNNGroupB䊃)NDNPunctchspacing 씦ʜ NLiteralBBϽӌNI C I J 9NC ך/L LLLLLGG  M D666buf161鈲/DGeҊdDG$ ڥVD$ ڥVGO>ONO  G  ҔG>} }>} } }i3 ͍˷ۤGRNRNRNRNRNRBB˦ DelimSpanBBÓGRSGga&td^nR pzxlvZrV i;$5 91 <;  6 N#.E #N>NNNN% G&O1G8?, G&P1P8?Ԣ- G&P1  ߡjGfm- G&Y1G8?v1 G'R2G9@%(A} , T d& ' t   l .D!N ā  ę !ij!̣!!!Ľ" "\" ,͉4l [![github]](https://github.com/dtolnay/quote) [![crates-io]](https://crates.io/crates/quote) [![docs-rs]](https://docs.rs/quote)g [github]: https://img.shields.io/badge/github-8da0cb?style=for-the-badge&labelColor=555555&logo=githubjk [crates-io]: https://img.shields.io/badge/crates.io-fc8d62?style=for-the-badge&labelColor=555555&logo=rustnj [docs-rs]: https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logo=docs.rsm
DK This crate provides the [`quote!`] macro for turning Rust syntax tree dataN' structures into tokens of source code.* [`quote!`]: macro.quote.html G Procedural macros in Rust receive a stream of tokens as input, executeJM arbitrary Rust code to determine how to manipulate those tokens, and producePM a stream of tokens to hand back to the compiler to compile into the caller'sPJ crate. Quasi-quoting is a solution to one piece of that — producingM" tokens to return to the compiler.%K The idea of quasi-quoting is that we write *code* that we treat as *data*.NI Within the `quote!` macro, we can write what looks like code to our textLG editor or IDE. We get all the benefits of the editor's brace matching, JL syntax highlighting, indentation, and maybe autocompletion. But rather than OM compiling that as code into the current crate, we can treat it as data, pass PL it around, mutate it, and eventually hand it back to the compiler as tokens O* to compile into the macro caller's crate. - C This crate is motivated by the procedural macro use case, but is a FM general-purpose Rust quasi-quoting library and is not specific to procedural P macros.\   ```toml\  [dependencies]  quote = "1.0"  ```<  aD   # Examplel  L The following quasi-quoted block of code is something you might find in [a]OL procedural macro having to do with data structure serialization. The `#var`OK syntax performs interpolation of runtime variables into the quoted tokens.NJ Check out the documentation of the [`quote!`] macro for more detail aboutMI the syntax. See also the [`quote_spanned!`] macro which is important forL) implementing hygienic procedural macros., [a]: https://serde.rs/Խ- [`quote_spanned!`]: macro.quote_spanned.html0l< # use quote::quote; #, # let generics = "";ij # let where_clause = ""; # let field_ty = ""; # let item_ty = ""; # let path = ""; # let value = "";r, let tokens = quote! {3 struct SerializeWith #generics #where_clause {6 value: &'a #field_ty,!6 phantom: core::marker::PhantomData<#item_ty>,9 }LP impl #generics serde::Serialize for SerializeWith #generics #where_clause {SI fn serialize(&self, serializer: S) -> ResultL where" S: serde::Serializer,% {l* #path(self.value, serializer)- }luL SerializeWith { value: #value,8 phantom: core::marker::PhantomData::<#item_ty>,;uL };4l<aD # Non-macro code generatorsL When using `quote` in a build.rs or main.rs and writing the output out to aOA file, consider having the code generator pass the tokens throughDL [prettyplease] before writing. This way if an error occurs in the generatedO5 code it is convenient for a human to read and debug.88 [prettyplease]: https://github.com/dtolnay/prettyplease;   l https://docs.rs/quote/1.0.367%(A} ## # #& #' #  #.#N## # # # #!#!#!#!#"#"#"# #4#&&&&&< !D N$'\7 TokenTreeLD |TTD)%;=$&)? TokenStream extension trait with methods for appending tokens.QBM This trait is sealed and cannot be implemented outside of the `quote` crate.Pt  #| ӄ  G' For use by `ToTokens` implementations.*4 Appends the token specified to this list of tokens.747 7ل       K| ل$token,57b*l<0 # use quote::{quote, TokenStreamExt, ToTokens};3 # use proc_macro2::TokenStream;#r, struct X;l impl ToTokens for X {̠4 fn to_tokens(&self, tokens: &mut TokenStream) {7+ tokens.append_all(&[true, false]);.uL }, let tokens = quote!(#X);. assert_eq!(tokens.to_string(), "true false");1l<T7 7ل      =dN=D ل$$CE *F Appends all of the items in the iterator `I`, separated by the tokensI `U`.D  7 7ل       ɍ ҋd D NɍD  لɍ$ $ op Z\WY  * A Appends all tokens in the iterator `I`, appending `U` after each D; element, including after the last element of the iterator. > 7 7لɍ       ҋd D D  لɍ$ $ term$ LNRT #C G4 7 7C    K|  $ , -/bT7 7C   ۓ =ۓdNۓ=D ۓ$$?A7 7Cۓ    ҆ dDND ۓ$$ԍLNRT7 7Cۓ     ҆ dDD ۓ$$ΐ$EGKM\<#\!"4###ܒCT4, Formatting macro for constructing `Ident`s./0aD4= # SyntaxdANL Syntax is copied from the [`format!`] macro, supporting both positional andRO named arguments.K Only a limited set of formatting traits are supported. The current mappingN of format types to traits is:! * `{}` ⇒ [`IdentFragment`] ( * `{:o}` ⇒ [`Octal`](std::fmt::Octal)+. * `{:x}` ⇒ [`LowerHex`](std::fmt::LowerHex)1. * `{:X}` ⇒ [`UpperHex`](std::fmt::UpperHex)1* * `{:b}` ⇒ [`Binary`](std::fmt::Binary)-' See [`std::fmt`] for more information.*aD # IdentFragmentL Unlike `format!`, this macro uses the [`IdentFragment`] formatting trait byO? default. This trait is like `Display`, with a few differences:BJ * `IdentFragment` is only implemented for a limited set of types, such asM" unsigned integers and strings.%J * [`Ident`] arguments will have their `r#` prefixes stripped, if present.M( [`IdentFragment`]: crate::IdentFragment+ [`Ident`]: proc_macro2::Ident!aD # HygienelL The [`Span`] of the first `Ident` argument is used as the span of the finalOH identifier, falling back to [`Span::call_site`] when no identifiers are K provided.l  l<  # use quote::format_ident; & # let ident = format_ident!("Ident"); )M // If `ident` is an Ident, the span of `my_ident` will be inherited from it. P9 let my_ident = format_ident!("My{}{}", ident, "IsCool"); <' assert_eq!(my_ident, "MyIdentIsCool"); *l<  F Alternatively, the span can be overridden by passing the `span` named I argument.l  l< Σ 3 # const IGNORE_TOKENS: &'static str = stringify! { 6 let my_span = /* ... */;  # };D 0 # let my_span = proc_macro2::Span::call_site(); 3* format_ident!("MyIdent", span = my_span);-l< [`Span`]: proc_macro2::Span2 [`Span::call_site`]: proc_macro2::Span::call_site5


| # PanicsdH This method will panic if the resulting formatted string is not a validK identifier.|aD # Examplest' Composing raw and non-raw identifiers:*l<Σ/ let my_ident = format_ident!("My{}", "Ident");2! assert_eq!(my_ident, "MyIdent");$" let raw = format_ident!("r#Raw");% assert_eq!(raw, "r#Raw");; let my_ident_raw = format_ident!("{}Is{}", my_ident, raw);>* assert_eq!(my_ident_raw, "MyIdentIsRaw");-l< Integer formatting options:l<Σ let num: u32 = 10;+ let decimal = format_ident!("Id_{}", num);. assert_eq!(decimal, "Id_10");!+ let octal = format_ident!("Id_{:o}", num);. assert_eq!(octal, "Id_12");, let binary = format_ident!("Id_{:b}", num);/ assert_eq!(binary, "Id_1010");"/ let lower_hex = format_ident!("Id_{:x}", num);2 assert_eq!(lower_hex, "Id_a");"/ let upper_hex = format_ident!("Id_{:X}", num);2 assert_eq!(upper_hex, "Id_A");"l<d|Y        $    ,          , L 4 $          $      rest$         ,          , L 4 $        $   d|   4tZ  %       $  $               , L D      , L 4              $        old  $             $    $  $    ,         ϼ          $    $         ϼ  $             $    $  $      $         ,         , L 4 $   , L $      $             $           $  $             $  ,   arg  $    ,          $            $         !     $   $                $   ,       $       $       ! ! " ,! ! ,!! L!! 3! ! !  ! ! ! ! " !! ! ,!!  ! ! ! " ! " !  $! ! ! ! " ! "  $" " " " " " " " "  " " " $" " " " " " " $"  " " " " # " " "  $" " $" " " " " " " "  "  " " " " $"# # # # ,##  # # # # # # #  $# # # # # # #  # # # # # # $  # # #  $# # $# # # # # # # #  #  # # # # $# # # # $ # $# #  #  $$ $ % ,$ $ ,$$ L$$ 3$ $ $  $ $ $ $ % $$ $ ,$$  $ $ $ % $ %  $  $$ $ $ % % % %  $% % % % % % % % %  % % % % % % % $%  % % %t.u()"K(*C,9(,$@(-HL;+13#%6 Specialized formatting trait used by `format_ident!`.H9K [`Ident`] arguments formatted using this trait will have their `r#` prefixN stripped, if present., See [`format_ident!`] for more information./' [`format_ident!`]: crate::format_ident*l.../0/05- Format this value as an identifier fragment.0777 7ل 7MMMflagsKMfillKMKNwidthKN precisionKNMKޣZ7  م7 . . /ل$ + Span associated with this `IdentFragment`..: If non-`None`, may be inherited by formatted identifiers.=$7 7ل ʁʺR. . 0ل$4722.DlD34 $7 7D1 1 37D$4777 7D 7MMMKMKMKNKNKNMKޣZ71 1 47D$ 8766lD78 $7 7D5 5 77D$4777 7D 7MMMKMKMKNKNKNMKޣZ75 5 87D$  D:; $ 7 7D9 9 :$  4 777 7D 7MMMKMKMKNKNKNMKޣZ79 9 ;$   S7==l D< D>?  $ 7 7D< < >7D$  4 777 7D 7MMMKMKMKNKNKNMKޣZ7< < ?7D$  #                      $  l              $         L  4    <    $      lLN t  ABu.ACB&AD$P'AEI,hAGC,oAHJ,', impl ToTokens for Path {7? for (i, segment) in self.segments.iter().enumerate() {B& if i > 0 || self.global {)% // Double colon `::` (@ tokens.append(Punct::new(':', Spacing::Joint)); C@ tokens.append(Punct::new(':', Spacing::Alone)); C } ' segment.to_tokens(tokens); *xl uL , r,  # pub struct PathSegment; r, " # impl ToTokens for PathSegment { %6 # fn to_tokens(&self, tokens: &mut TokenStream) { 9 # unimplemented!()  # }\  # }< l< L 77 7ل 7CN N Oل$ tokens4 (5 Convert `self` directly into a `TokenStream` object. 8G This method is implicitly implemented using `to_tokens`, and acts as aJ: convenience method for consumers of the `ToTokens` trait.=|7 7لCN N Pل$H8J=لCNNل, Qل$1STTSNDDFU -L77 7F 7CR R USD$45WXXWƂDFY -L77 7F 7CV V YWD$4@[\\[<ƂDF] -L77 7F 7CZ Z ][D$4.__NGDG` -L77 7G 7C^ ^ `G$4-bbDHc -L77 7H 7Ca a cG$4(eeG DHf-L77 7H 7Cd d fG$4h-L77 7 7Cg g h$4ļEj-L77 7E 7Ci i j$4L          t   ,  $  ,        $ D          L     $  4     \   4   4   J<  $     $    !m!-L!77 7 7Cl !l m$!4!"o"-L"77 7 7Cn "n o$"4"$Jq$-L$77 7J 7Cp $p q$$4$%Ds%-L%77 7D 7Cr %r s$%4%&Ju&-L&77 7J 7Ct &t u$&4&̋'Kw'-L'77 7K 7Cv 'v w$'4'܉(Ky(*L(77 7K 7Cx (x y$(dst()C{|)*L)77 7C 7Cz )z {$)ږ)*)*CCzz |$*     4t$   runtime.rsdL <}}\}}d+}} lF.}DUN} t_ }zK}$'}BitOr,}I,}C,}I,}Spacing<}ԁL}444>0LtT6l    4tL ParenthesisBraceBracketʥל.l    4t$R    4t\C    4t\LZ*L(    4tLך/Z)LKL\4LT,LLL $_rhs$9L\4LB,LLL $$9L\4L 0, LLL $ $  'L\ 4 L 0, LLL $ $ \ K Extension traits used by the implementation of `quote!`. These are defined NK in separate traits, rather than as a single trait due to ambiguity issues. N J These traits expose a `quote_into_iter` method which should allow calling MK whichever impl happens to be applicable. Calling that method repeatedly on N) the returned value should be idempotent. ,     4 t  $L$HasIter<DoesNotHaveIter|DN btree_set$$eD ,P Q\|}/fLXZ\K*E Extension trait providing the `quote_into_iter` method on iterators.H    4tt>لD,+|للL ل$& >GDG; Extension trait providing the `quote_into_iter` method for>C non-iterable types. These types interpolate the same value in eachF iteration of the repetition.     4ttA Pretend to be an iterator for the purposes of `quote_into_iter`.D< This allows repeated calls to `quote_into_iter` to continue?% correctly returning DoesNotHaveIter.($7 7ل ʁʺ޴  ل$5|7 7لL  ل$/DG F Extension trait providing the `quote_into_iter` method for types thatI" can be referenced as an iterator.%    4tل>D$6| لL ل$MMM L$M5| MML M$QMM L$M5| MML M$,D DM!#L$TTT TT end_or_lenTTBTپD5| MML D$/پ DN!#L$TTT TT˾TTBTپD5| NNL D$ 4پ D N !#L!$!϶ZD!5|! NNL D$!"Gپ "D"O"(*L#$#D#5|# OOL D$#% %O ($(OH G$((+ (D(OL)$)G>)($)7 7O ʁʺO> ) G$))+ )D*O*-L*77 7O 7C * G$*4*+)+ + + 4+t+D+GP + G $+d+D+}|,,RL,$,,@,1,"W<, ,PPPWNPP G_aԀ-PXd- -PҔYPXOYP G`b̽-YY\- -YߡjGYYNGY G_ad-G.  R. \.R $./  ҔS/!\/7 7R / $/0 0Y 0\07 7YG 0 G$01 1P  \141P2 ,27 7P 7P 2 G$22! 2P  \343Y3 ,37 7P 7P 3 G$34U4 4 4 44t4T47 7CC 4 44 delimiterL4B,45|5 5 5 45t557 7CRC 5 45 $5L6B,67/7 7 7 47t7,777 7C 7 7 47 78C8 8 8 48t8l877 7CR 7 8 48 $8 99I KK R:C:}KRK ,: $;<<I>4> > > 4>t>T>77 7C 7 > 4> >?H? ? ? 4?t??77 7CR 7 ? 4? $? ?@>@ @ @ 4@t@l@77 7C 7 @ 4@D@ADA}} }AlA$A} LA,A}EA"PALB$BKB($B7 7P ʁʺP> B $BFRF F F 4FtFF77 7CR 7 F 4F $GDGGDG}} } }iiGlG$G} TG$G}RLG,G}EH"QHLH$HKH($H7 7Q ʁʺQ> H $HMTM M \  M N  M $M M ,M N  println!("{}", #v), )*` — even multiple interpolations/H#/#aD/#/#l0#0#J Any interpolated tokens preserve the `Span` information provided by their0M#E `ToTokens` implementation. Tokens that originate within the `quote!`0H#3 invocation are spanned with [`Span::call_site()`].16#2#e [`Span::call_site()`]: https://docs.rs/proc-macro2/1.0/proc_macro2/struct.Span.html#method.call_site2h#3#G A different span can be provided through the [`quote_spanned!`] macro.3J#3#q30#4#aD4#4# # Return type4#4#I The macro evaluates to an expression of type `proc_macro2::TokenStream`.4L#A Meanwhile Rust procedural macros are expected to return the type5D# `proc_macro::TokenStream`.6#6#M The difference between the two types is that `proc_macro` types are entirely6P#I specific to procedural macros and cannot ever exist in code outside of a7L#I procedural macro, while `proc_macro2` types may exist anywhere including7L#I tests and non-macro code like main.rs and build.rs. This is why even the8L#J procedural macro ecosystem is largely built around `proc_macro2`, because9M#I that ensures the libraries are unit testable and accessible in non-macro9L# contexts.l:#:#M There is a [`From`]-conversion in both directions so returning the output of:P#G `quote!` from a procedural macro usually looks like `tokens.into()` or;J#) `proc_macro::TokenStream::from(tokens)`.<,#<#@ [`From`]: https://doc.rust-lang.org/std/convert/trait.From.html#L The structure of a basic procedural macro is as follows. Refer to the [Syn]>O#L crate for further useful guidance on using `quote!` as part of a procedural?O# macro.T?#?#?)#@#l<@# # #[cfg(any())]@# extern crate proc_macro;@# # extern crate proc_macro2;A#A#A# use proc_macro::TokenStream;A #A## use quote::quote;B#B#B6# #[proc_macro_derive(HeapSize)]C"#DC#= pub fn derive_heap_size(input: TokenStream) -> TokenStream {C@#I // Parse the input and figure out what implementation to generate...DL#7 # const IGNORE_TOKENS: &'static str = stringify! {D:# let name = /* ... */;E# let expr = /* ... */;E# # };dE# #LF# # let name = 0;F# # let expr = 0;F#F# let expanded = quote! {F# // The generated impl.G"#, impl heapsize::HeapSize for #name {G/#7 fn heap_size_of_children(&self) -> usize {G:# #expr̾H#H#xlH# };TI#I#4 // Hand the output tokens back to the compiler.I7# TokenStream::from(expanded)I##,J#l` then the expanded code is `Vec::new()` which is invalidgP#J syntax. Ordinarily in handwritten Rust we would write `Vec::::new()`hM#7 but for macros often the following is more convenient.i:#i#l::new();j)#,k#>::new()` which behaves correctly.k@#l#4 A similar pattern is appropriate for trait methods.l7#l#l::default();nG#,n# [`syn::Index`]: https://docs.rs/syn/2.0/syn/struct.Index.html{A#{#{## let i = 0usize..self.fields.len();{&#|#J // expands to 0 + self.0usize.heap_size() + self.1usize.heap_size() + ...|M# // which is not valid syntax} #d}#" 0 #( + self.#i.heap_size() )*}%#,}#l<~#~#l<~#) # use proc_macro2::{Ident, TokenStream};~,#r~#r,# # mod syn {|#/ # use proc_macro2::{Literal, TokenStream};2#- # use quote::{ToTokens, TokenStreamExt};0#r,# # pub struct Index(usize);"#r,Ԁ## # impl From for Index {&#& # fn from(i: usize) -> Self {)# # Index(i)Á# # }|#\#r,# # impl ToTokens for Index {##: # fn to_tokens(&self, tokens: &mut TokenStream) {̂=#@ # tokens.append(Literal::usize_unsuffixed(self.0));C#|ރ#\#<#r,# # struct Struct {# # fields: Vec,Ƅ#<#r,# # impl Struct {#) # fn example(&self) -> TokenStream {,#6 let i = (0..self.fields.len()).map(syn::Index::from);ۅ9##@ // expands to 0 + self.0.heap_size() + self.1.heap_size() + ...C#d#%#,#\Ƈ#<ڇ#l<   , 䝑|    ԑ  4l‘ ϑ $Б֑ ّ b#L Same as `quote!`, but applies a given span to all tokens originating withinO# the macro invocation.̻#ݒ#aD##Ƙd##M A span expression of type [`Span`], followed by `=>`, followed by the tokensP#I to quote. The span expression should be brief — use a variable forL#I anything more than a few characters. There should be no space before theՔL# `=>` token.|#•#G [`Span`]: https://docs.rs/proc-macro2/1.0/proc_macro2/struct.Span.htmlΕJ##l<# # use proc_macro2::Span;佖# # use quote::quote_spanned;#r,#6# let span = /* ... */;ח#D# # let span = Span::call_site();## # let init = 0;#Ҙ#! // On one line, use parentheses.ޘ$#D let tokens = quote_spanned!(span=> Box::into_raw(Box::new(#init)));G#ۙ#@ // On multiple lines, place the span at the top and use braces.C#$ let tokens = quote_spanned! {span=>'## Box::into_raw(Box::new(#init))&#y4#l<##J The lack of space before the `=>` should look jarring to Rust programmersM#B and this is intentional. The formatting is designed to be visiblyE#J off-balance and draw the eye a particular way, due to the span expressionM#I being evaluated in the context of the procedural macro and the remainingL#. tokens being evaluated in the generated code.1#ƞ#aDҞ##l##ԴM#M `ToTokens` implementation. Tokens that originate within the `quote_spanned!`P#5 invocation are spanned with the given span argument.8##aD##ml##K The following procedural macro code uses `quote_spanned!` to assert that a̡N#M particular Rust type implements the [`Sync`] trait so that references can beP# safely shared between threads."##? [`Sync`]: https://doc.rust-lang.org/std/marker/trait.Sync.htmlB##l<#8 # use quote::{quote_spanned, TokenStreamExt, ToTokens};;#( # use proc_macro2::{Span, TokenStream};ޤ+#r,# # struct Type;#r,# # impl Type {ɥ# # fn span(&self) -> Span {"# # Span::call_site()#\#<ʦ#r,ڦ# # impl ToTokens for Type {#8 # fn to_tokens(&self, _tokens: &mut TokenStream) {};#<ӧ#r,# # let ty = Type;#% # let call_site = Span::call_site();(#r,# let ty_span = ty.span();ͨ#, let assert_sync = quote_spanned! {ty_span=>/#( struct _AssertSync where #ty: Sync;+#y4ީ#l<##K If the assertion fails, the user will see an error like the following. TheN#6 input span of their type is highlighted in the error.9## ```text\#N error[E0277]: the trait bound `*const (): std::marker::Sync` is not satisfied«Q# --> src/main.rs:10:21ܜ# |D#* 10 | static ref PTR: *const () = &();Ѭ-#W | ^^^^^^^^^ `*const ()` cannot be shared between threads safelyZ#l<##L In this example it is important for the where-clause to be spanned with theO#L line/column information of the user's input type so that error messages areޮO#& placed appropriately by the compiler.)  4l d |    4t[       $  ,   extra,        tts         ,      $   ,                     +d |    4t[       $  ,   ,          b1            curr$            ,  č      $   ,  ˩  $   %d |    4t[      $  ,   ,     ˩          B,         ,      $   ,     B,       $  ,   ,     ˩          B,         ,      $   ,     B,       $  ,   ,     ˩          B,         ,      $   ,     B,        $  ,        ,           ,    ,  $        ,           $  ,   ,     ˩     $      !d |    4t[      has_iterD  ,     ,      ,   unused_mutT                |      ԼD   ԼD      %d |    4t[         ,        ,     $     $   _x  , L $L     $ ,   d |    4t\      4  ,              , !̭      4                                                                                                             %d |    4t\       4  ,   $  ,              , !!      4   $                                                                                                             &d |    4t\       4  ,       b3            b2            ˩            $            a1            a2            a3            , !     4      ˩  $         .d |    4t\      4  ,   $  ,                               ˩            $                                                , "      4   $      ˩  $         %d |    4t\  0    4  ,            ˩                          4  ,            ˩             B,                ) $  , L       ԼD   , L    ,          ԼD       B,        , L \  ԼD  &, !$     ,                B,    ,       4     B,       4  ,                    B,                        4  ,             B,                               4  ,            ˩             B,       sep         / $ ŀ ,ƀˀ L̀ր  ؀ۀ  ݀ ހ   _i   4   ԼD   , L 직 ā ΁ ,ρԁ ց         ԼD       B,        , L \ Ƃ ԼDȂ Ђ &,ڂ !$    ,      Ď          B,   Ń ȃ ˃ ̓ σ   , "\       4      ,   ˄ ̄ ߄ ̈́ 4΄ Մ ք ݄ ׄ B,؄  ބ   م  4  ,             Dž  ƅ   Å  B,     ą Ʌ ʅ ͅ  ΅  х Ӆ ԅ օ  ׅۅ ޅ ߅   Ȇ  4  ,             B,                    † Æ ņ  Ɔʆ ͆ Ά φ    4  ,        B,                              , "\       4     4 ʼn ,Ɖ ̉ Ή މ Љ щ ۉ ҉ B,Ӊ ؉  ى  ܉                               4  , Ċ Ŋ NJ  Ȋ ˊ ̊ Ί  ϊ Ҋ ˩ӊ Պ  ֊ ي ۊ ڊ ݊  ފ  ,              , D  L             4      4  ,                  ,                      4  ,            ˩       $                      , "\ ̍ ͍ ۍ ΍ $ύ ԍ 4Ս -dю |ώ    4tߎ\  ۡ0  !  4  ,   $  ,      ď ŏ Ǐ  ȏ ˏ ˩̏ Ώ  Ϗ ҏ ԏ Տ ׏  ؏ ۏ ܏ ޏ  ߏ          Đ  4  ,   $  ,            ˩             B,            Ɛ ɐ  ʐ ) $Ԑ ؐ ,ِސ L       ԼD   , L 응  đ ,őʑ ̑ ݑ ޑ   ߑ    ԼD       B,        , L \  ԼD ƒ &,В !$֒ ے    ,      Ą          B,    , !Ó ۓ ܓ  ݓ 4ޓ   $     B,     ۔  4  ,   $  ,             ʔ  ɔ   Ɣ  B, Ô  Ĕ  ǔ  ̔ Δ ϔ є  Ҕ Ք ֔ ؔ  ٔݔ       4  ,   $  ,             B,                            ĕ  ŕ 4ƕ ̕ ,͕ ӕ  $ԕ ؕ ,ٕ ߕ           ˩             B,                / $  , L      ʖ Ζ Җ Ֆ  4ז ݖ  ԼD   , L 쉗   ,  ɗ ʗ   ˗ ߗ   ԼD       B,        , L \  ԼD  &, !$˜ ǘ  ՘ ,֘ۘ ݘ               B,         Ù ,ęə "˙ ޙ ߙ     4   $      , !ī Ú Ě ݚ Ś 4ƚ ͚  $Κ Ӛ Ԛ ۚ ՚ B,֚  ܚ   ě  4  ,   $  ,                    B,                 ›ƛ ɛ ʛ ˛ ћ  қ 4ӛ ٛ ,ڛ   $  ,             B,                               4  ,   $  ,œ Ȝ ʜ ڜ ̜ ͜ ל Μ B,Ϝ Ԝ  ՜  ؜  ܜ ޜ   ߜ                   , "ĝ ם ؝   ٝ ۝ 4ܝ   $   Ğ  4  ,   $  ,        B,                             žƞ ɞ ʞ ˞ Ҟ ! Ӟ 4Ԟ ڞ ,۞   $  ,            ˩           ,              , D  L ȟ ܟ  ɟ ʟ  ˟ Ο  П џ ՟ 4֟ ݟ     4  ,   $  ,                  ,                   Ġ ! Š 4Ơ ̠ ,͠ Ӡ  $Ԡ ؠ ,٠ ߠ           ˩       $                    ء  , "   ҡ  $ š 4ơ ͡  $Ρ ١d |ޤ    4t\      ,  ,  4  ,   ƥ ,ǥ̥ LΥץ T٥       4   L     ,      4  ,    , LĦ (\Ʀ Ѧ ަ  Ҧ Ӧ צ 4ئ ߦ          B,       4  ,  è  , L T    ǧ ȧ ̧ 4ͧ ӧ  , L L \   ,  ,        B,     Ĩ ˨  ̨ ܨ Ψ Ϩ ٨ Ш B,Ѩ ֨  ר  ڨ ި 4ߨ  ,    , L T       4   ,ũ LǩЩ Lҩ۩ <ݩ   ,  ,        B,       Ū       B,       4  ,Ǫ ʪ  Ԫ ,ժڪ Lܪ T       4   , L L ӟ,  ʫ ,˫Ы  ,ҫ ׫ ث  ٫ ګ  ۫ B,ܫ          4  ,  ͬ  , L .T  Ƭ     4 Ǭ ά լ  ֬ ج 4٬ ߬ ,    , L )T       4       4  , ­  ̭ ,ͭҭ Lԭݭ *D߭       4       4  ,  Ү  , L 1L  ˮ    Į 4Ů ̮ Ӯ ڮ  ۮ ݮ 4ޮ  ,    , L (T       4    ¯   4  ,į ǯ  ѯ ,үׯ Lٯ %D       4       4  ,  ڰ  , L %\ ư Ӱ  ǰ Ȱ ̰ 4Ͱ ԰ ۰      4  ,    , L &D       4    ɱ  4 ñ ,ı˱ α  ر ,ٱޱ L &d       4       4  ,    , LIJ &\Ʋ Ѳ ޲  Ҳ Ӳ ײ 4ز ߲      4  ,    , L '<       4   ³ ҳ ó ų 4Ƴ ̳ ,ͳԳ ׳   , L 'L       4        4  ,    , Lɴ 'T˴ մ   ִ ״ ۴ 4ܴ       4  ,  ŵ  , L (l       4  Ƶ ͵ ݵ  ε е 4ѵ ׵ ,صߵ    , L )D       4       4  ,   ö ,Ķɶ L˶Զ )\ֶ       4      4  ,  ͷ  , L *L  Ʒ     4 Ƿ η շ ַ ڷ 4۷  ,    , L *L       4      4  ,¸ Ÿ  ϸ ,иո L׸ +|       4       4  ,  ڹ  , L +< ƹ ӹ  ǹ ȹ ̹ 4͹ Թ ۹    4  ,    , L +T       4    ̺  4 ƺ ,Ǻκ Ѻ  ۺ ,ܺ L ,<       4       4  ,  ޻  , L ,<û ʻ ׻  ˻ ̻ л 4ѻ ػ ߻    4  ,    , L ,<       4    ̼   4 Ƽ ,Ǽμ Ѽ  ۼ ,ܼ L ,<       4       4  ,    , L½ -\Ľ Ͻ ܽ  н ѽ ս 4ֽ ݽ     4  ,    , L -<       4    Ѿ  ¾ ľ 4ž ˾ ,̾Ӿ ־   , L -<       4       4  ,    , Lǿ .Tɿ ӿ   Կ տ ٿ 4ڿ      4  ,    , L .T       4       4  ,    , L /l       4      4  ,    , L /\       4      4  ,    , L /\       4        4  ,    , L 0D       4       4  ,    , L 0\       4      4  ,    , L 0t       4       4  ,    , L 1D       4       4  ,    , L 1\       4       4  ,    , L 2D       4       4  ,    , L 2\       4        4  ,    , L 2L       4        4  ,    , L 3D       4       4  ,    , L 3\       4      D  D  4  ,    , L l       4   L     D        4  ,    , L |       4      ,     4  ,    , L ,       4   L     ,   d |    4t]       ,  ,  4  ,   $  ,    , L        4    $   L     ,       4  ,   $  ,    , L (       4    $            B,       4  ,   $  ,    , L        4    $   , L L \   , 4l      $     B,               B,       4  ,   $  ,    , L        4    $   , L L <   , 4l      $     B,               B,       4  ,   $  ,    , L        4    $   , L L ӟ,   , 4l      $     B,           4  ,   $  ,    , L .       4    $        4  ,   $  ,    , L )       4    $        4  ,   $  ,    , L *       4    $        4  ,   $  ,    , L 1       4    $        4  ,   $  ,    , L (       4    $       4  ,   $  ,    , L %       4    $       4  ,   $  ,    , L %       4    $        4  ,   $  ,    , L &       4    $       4  ,   $  ,    , L &       4    $       4  ,   $  ,    , L &       4    $       4  ,   $  ,    , L '|       4    $       4  ,   $  ,    , L '       4    $        4  ,   $  ,    , L '       4    $       4  ,   $  ,    , L (       4    $        4  ,   $  ,    , L )       4    $       4  ,   $  ,    , L )       4    $       4  ,   $  ,    , L *       4    $       4  ,   $  ,    , L *       4    $       4  ,   $  ,    , L +       4    $       4  ,   $  ,    , L +|       4    $       4  ,   $  ,    , L +       4    $       4  ,   $  ,    , L ,|       4    $        4  ,   $  ,    , L ,|       4    $       4  ,   $  ,    , L ,|       4    $        4  ,   $  ,    , L ,|       4    $       4  ,   $  ,    , L -       4    $       4  ,   $  ,    , L -|       4    $        4  ,   $  ,    , L -|       4    $       4  ,   $  ,    , L .       4    $       4  ,   $  ,    , L .       4    $        4  ,   $  ,    , L /       4    $       4  ,   $  ,    , L /       4    $       4  ,   $  ,    , L /       4    $        4  ,   $  ,    , L 0       4    $       4  ,   $  ,    , L 0       4    $       4  ,   $  ,    , L 0       4    $       4  ,   $  ,    , L 1       4    $       4  ,   $  ,    , L 1       4    $       4  ,   $  ,    , L 2       4    $       4  ,   $  ,    , L 2       4    $        4  ,   $  ,    , L 2       4    $        4  ,   $  ,    , L 3       4    $       4  ,   $  ,    , L 3       4    $       D  D  4  ,   $  ,    , L        4    $   L     D        4  ,   $  ,    , L        4    $       ,     4  ,   $  ,    , L l       4    $   L     ,  4777 7 7MMMKMKMKNKNKNMKޣZ7  777 7 7MMMKMKMKNKNKNMKޣZ7 E777 7E 7MMMKMKMKNKNKNMKޣZ7 777 7 7MMMKMKMKNKNKNMKޣZ7 E4777 7E 7MMMKMKMKNKNKNMKޣZ7  F777 7F 7MMMKMKMKNKNKNMKޣZ7 F777 7F 7MMMKMKMKNKNKNMKޣZ7 F777 7F 7MMMKMKMKNKNKNMKޣZ7 F777 7F 7MMMKMKMKNKNKNMKޣZ7  F  777 7F 7MMMKMKMKNKNKNMKޣZ7    I-H77 7I 7C  0I77 7I 7C ~I77 7I 7C I77 7I 7C I77 7I 7C I77 7I 7C E77 7E 7C F77 7F 7C F77 7F 7C F77 7F 7C  F  77 7F 7C     F  77 7F 7C     I  77 7I 7C     I  77 7I 7C    W% % % 4%t%L% %OڥVGOWNGO G^`,%G % 6GGO( % 7GGO]_7 7OO % G,%N&N NN 0NpND\7 7CN 0NO5O OO 0OpO\7 7CRO 0O OQ&Q QQ 0QpQ\]7 7CR 0RS5S SS 0SpS]7 7CRS 0S SN&N NN 0NpND]7 7CN 0NO5O OO 0OpO]7 7CRO 0O OQ&Q QQ 0QpQd]7 7CR 0RS5S SS 0SpS^7 7CRS 0S SQ&Q !QQ 0QpQ\^7 7CR 0RS5S !SS 0SpS^7 7CRS 0S SN&N !NN 0NpN<^7 7CN 0NO5O !OO 0OpO|^7 7CRO 0O ON&N "NN 0NpNL_7 7CN 0NO5O "OO 0OpO_7 7CRO 0O ON&N "NN 0NpNT_7 7CN 0NO5O "OO 0OpO_7 7CRO 0O OQ&Q #QQ 0QpQl_7 7CR 0RS5S #SS 0SpS`7 7CRS 0S SN&N #NN 0NpNT`7 7CN 0NO5O $OO 0OpO`7 7CRO 0O OQ&Q $QQ 0QpQ\`7 7CR 0RS5S $SS 0SpS`7 7CRS 0S SN&N %NN 0NpNTa7 7CN 0NO5O %OO 0OpOa7 7CRO 0O ON&N %NN 0NpNDa7 7CN 0NO5O %OO 0OpOa7 7CRO 0O OQ&Q &QQ 0QpQ\a7 7CR 0RS5S &SS 0SpSa7 7CRS 0S SN&N &NN 0NpNDb7 7CN 0NO5O &OO 0OpOb7 7CRO 0O OQ&Q 'QQ 0QpQLb7 7CR 0RS5S 'SS 0SpSb7 7CRS 0S SV&V 'VV 0VpVLc7 7CW 0WY5X (XX 0XpXc7 7CRY 0Y YV&V )VV 0VpV|c7 7CW 0WY5X )XX 0XpXc7 7CRY 0Y Y N& N * N N 0 Np N<>O @ A G͑ xLx yLy {L{ |L| ~L~ПߠH(%96H(%96JG[X'3?KWco{Ǽʻκ̹иηҶеԴҳֲԱذ֯ڮحܬګުܩާ~}|{zyxwvutsrqponmlkjihgfeafahttps://crates.io/crates/quoteSpan::call_site()https://github.com/dtolnay/syn4https://doc.rust-lang.org/std/marker/trait.Sync.html format_ident!ƙ https://github.com/dtolnay/quotegithubproc_macro::TokenStream-https://docs.rs/syn/2.0/syn/struct.Index.html crates-iodocs-rs  quote_spanned! prettyplease  trait.ToTokens.htmlƙ >==>->>==>- .N>>==>-?tbl(q[N v˻طS1u2d}V)n"yR]xW(.%})7]1N?py* dfnq~<0حhW98b0/u(OZ{{&~"_b 4S şNqQWCCz꧀4,/ vXa$D/u ?xwG<ےUT/#+>{[j/nV?5fd‡G6i!/:)d$>Pkؘae7U1 v2YZɮHj\4U`]415SwDq<[xjLg=M<zt4FI=%w1 cMUYC" N@So#}ɳ'xUL00v6 W;fݓ9l4ht1 =e ôߗXϵK+Z 6f@֛a3U!i] k &vbjx^6c@lu@&(Iv+LǪ#F_|٪ zd˼mE@ןm6wp;o7Pzڏ7QA* g- \V eӂu5<>l,pξKG@0,Qj͆v[0a4::M*"o`5 QD>yUWpURX~ݜ@ n'm;.X3IlfLv_R) !ǽp*ؓnZ}})t䳹RxڐU2{~"Ho7mFfE",y 8tr83&#yfi%Eecweݧ2#,`vh3c] xcvO6*f]'rB80 vLdyWuEcS4o3`f(M<pcy6 Vz jz!2 ~4YvYJؒY'>=NozTH:zm] '$6dvŠ`4~#zIW{M*5iV 4k1 t:M^yRL#gunNzF IrՐb{VT?JQe-8I,,+QKxx pF5UЎPP%eP>{3AJfEu/J .,t&W.]gyX|0Z*tګb~hcqbtn4yPޙ0z⛫M@gs7og~VE"2DWq/вia9V{v@A!|tcxyg[o%'A,|'I:lvHh s(pX-l "ܭ~Г6Y9dUmΉào`.k$(DݳeMIUi6Bk̑o+N%\5sӵC*X%93hm.o'7H-z $rihCnQZ 0/z08鮓@וwZK!'$Εngmu/XAD@T:$Ó/~U*#1;g}4za/#)2s&™à'wR#zs~䘧2cʳ]W 8e8y9;S'I?VҩںuH(G3?45>A5isDpXeAT+s6ǜp޿2w0gjs"1I>2Lͱá&Txǖξk$(]tF$F-!& : ٜJr٢o/F2XEؔ{Zu=1 '0D:.#‹O:#E['TGH~BX4oo%DLe8M1^87zZ`-BiErMUJoPHd>k~i2CevéU:Nd <2L^b(,R-S/2Z)X2gc}6b /|`AMkkR0w͟DY˶P-RY.VX!hq Q/*?zK7ʜ}xmqZ& '(:V|a\=+y3y1H r=M3HaA®&؃$cj L~VtE}'vRBilыx+bF#ͨ6Q!>[bk鉧DRu[!S6maDSVKLjl~t%·MhO[wh2'ms[Tc gDnJ=Š@hv'iBNsUB#EA ܤ O(' ;3Y`दr9ΏC?F88um9 :2u}"8K`j3K"}p$m,oVW{KW"S:&I`4 ' .!loׯ ui4&쥎{JQϙ@ Ǜy{F6Xyc̒\uXgHJ.yEb?'^<#%191Q9KN.S;jovjw9qnۓpC0"FYZC'r`VڻŦ`4cꆾ2b.@B **Hm{cNx% Kl:fL嚺 ,b,օ" =~bJ{~΢/9dxX(FҰnZQeR5EY2AW!ZNccаlV.p +? CܜOzUF/KYq!]ÏZYN>]-͊ƕ@B(D5lSTL7sI UWO[2&uN R7\B O"& 2i)α6sfl<9-CPoZ(' + Ӣ|h`(pn`]/!j^ \Nΐ@0\o!;u[@6\շNlp}1&ݎb` R KpkSO)~/=V^Lyߩvm˶oI蝃*/:D+H,H2 ӄ~)rD) ׻*a^nWl:S :=RUm2b33 IۏUgc}i~)RilQ?‹KMVLi,,  hQ1FJΚ" , :~0a*6t4!j`JuAe2xjG*%_ >nNsѫs@PZ/7sl"&z.yHSO{Gfv?hʮ,C;ϥo59< آ+ ?2మ+ndTk[iS X(^TG3 R3zl~X!x@~ %z̪~CmO[@`|aKxDh&&Zfřm.hlԸ^w L[n"@Pi+z[۔te+G iբUG9}?TDEhW|u廫>LC¿Q5 әZXʨv''oCRm٦DNuqg"l# զlɾ g>׊dk7l.(.*>nr\QLˮ^AZU~*M bݫUn4:72߃m,w W:=nPٴ$uSˤ1)Hy[mI4fg1 };v}pb䲧Y$>1 Au/V0suF@ )R{v2퍪 U֐t'bI'ڶyY4'󟵸[yEnaU9*AFR1hr+'s oc@zs)::Xʡ ,vq@6l>7fjr Ҕ*7U!꽈\Xg_~)Kw]%cEN{z{"~_>׿6Ԫ ހQ{}di=K0Jx-8!zu9G®mYzRn>vDFo$?}ү̅aMDx+1.I$'}2«"Ʀ᷏2QmmsࣨbXyKӷ cˏ&/ [k< _60 `DžYvEf~W@E) ;%JkhyKnwIY4<ǭGd4N?S&V7=rC6㣜w. C&P[gk ooLlۜSZ΀RQY vEe9q 賀 ,C48LVoVS3zW'jVz+ɣG&б\H  I?<܂b'hlBk? pu |ps bC<,'هv~^x=2SwdGۗw LFijQ=#1+DٽWx>xJNjgWVCVts@WNѷ(AUL[C?!`Gv9K;jg X]C3 ~VԂxwXܥ'fHM~R4c g~ :4]bO8gEa[X sYz~xLs{UƼ;2q>)눧g3 LC s^#ϐm Mucx m 21tkumiI]Y54<'[Q~./GZ=dSIR9]g)c+f#C .RmDPe ِ@IY?\J n 'X&{ rQ]aXWy4XD;Ћ%BK >Ak=]Ƨz͸j(s^++>j gqJً͕SIFOzwi'*/mњ+Og>E_fE@W(fFcg+E.NF/.g06eˍo<kg?VYlwS7 W c-06;R^p @ (/w?X*i6=!tb zqUL[LYLWLSL?@Kk\ wlC  ѻ].@ AB&CEFyHH1IIJKKKKnKY\jdklknoo.pq[qqrrss0ttruSwmx*x~#h+7Nmig}g~qW'B2vxN[2,=S92mfWG`&wC^Bj3Dhn 2YT-wD$wW|3'|y?pz,!v&A+k/3FNj}nYnDY/D43+#z r"|R^jv %1=IUamy*6BNZfr~ !  -  9  E  Q  ]iu&2>JVtba3 ?@AKKKkl[wxs=ElAHKKloEqrtxc!|ywwkG4dYG-6 b/b-l~iT?,.&\ hT`        ##   #      #                               #          ###############       ## ?@ABD+FGHCIIJKKKY\jlmoo@pmqqrsBttvuYwx~bƁI+GɐH}ّ+T̒D<`ʘәmD>OWʠޢ%] eI8ĩGp/«W|Bկq˰HlܱԳDٴ#VE9E%y-I 5"&+/4NLkʛjUGD<4,$ z ,8DP\ht %1=IUamy(4@LXd  p  |     !-9EQ]iu rO,t8.r@x@~@@@@@@@AAAC!CEEFFFXHfHtHHI,IIIJJJ`KnK|KKKKKKU\jHkMkRkXk\k`klgnooo)pqGqWqqrrrst,ttmuOw(x.x4x:x@xGxMxSxYx]xaxexixx~ր܀c&djz"2˃ۃI}i}ezcxcy %+29AGMSY_fmSk‘ #=-r8?GNU[cimsIʗؗVޚ-'88>Ohn͡4Ǣ.[iߣaޥBHNTڦR5C\ܨ!s1?Y=٭e.:@dűi̳ -ѴTO(dr 1?drR^chosw/#wu)/5;lu&!p&;+e/3@NjwkVkAV,A.0(  wog jzLXdp|+7CO[gs $0<HT`lx  '  3  ?  K  Wco{ ,8DP_br3pEwE~EEEEEEEEEEEEEEEEEEEF FFFF&F-F4F;FBFIFPFWF^FeFlFsFzFFFFFFFFFFFFFFFFFFFFG GGG"G)G0G7G>GEGLGSGZGaGhGoGvG}GGGGGGGGGGGGGGGGGGGH HHHH%H,H3H:HAHHHOHVH]HdHkHrHyHHHHHHHHHHHHHHHHHHHHHIIIIII$I)I0I5I:IAIFIKIRIZIaIfImIrIyI~IIIIIIIIIIIIIIIIIIIIIJJJJJ#J*J1J8J?JFJMJTJ[JbJiJpJwJ~JJJJJJJJJJJJJJJJJJJK KKKK&K-K4K;KBKIKPKWK^KeKlKsKzKKKKKKKKKKKKKKKKKKKKKKL LLLL#L)L/L5L;LALGLMLu@{@@@@@@@AAA}BCDEFFFGZHhH{HH I1IIIJJJbKpKKKKKKY\jKkPkUkZk^kl mnooo.pqKq[qqrrss t0ttruUw+x1x7x=xDxJxPxVx[x_xcxgxxz~Pڀj-hn&7σPoki}i~ "(/6>DJPV\cjCŐDmǑ'B28<DKRY`ekqN̗Ƙ[2,=<@S!lpҡ;̢4]mFLRYܦU7Gb&y3C^ǪE۬nj0ï_ǰ>Dhʱ г2մ/fw3D&fwYaflqu~3'|-39Arz"v*F 2"&+/4NIkǛp[nFY1D4 3+#| tj7m|&2>JVbnz+7CO[gs ".:FR  ^  j  v   '3?KWco{ b/etL,q8tE{EEEEEEEEEEEEEEEEEEEFFFFF#F*F1F8F?FFFMFTF[FbFiFpFwF~FFFFFFFFFFFFFFFFFFFG GGGG&G-G4G;GBGIGPGWG^GeGlGsGzGGGGGGGGGGGGGGGGGGGGH HHH"H)H0H7H>HEHLHSHZHaHhHoHvH}HHHHHHHHHHHHHHHHHHHHHI IIII!I&I-I2I7I>ICIHIOIWI^IcIjIoIvI{IIIIIIIIIIIIIIIIIIIIIIJ JJJ J'J.J5JLDLJLPLABClHʐI~,`ؒPqΗ˘4`iz ğBX$r>7_8_æަ q9Ke¨U| 5Hʪ^zqΰJnBݲֳ.2h5)h*\]"aV"Fu}fXIs4^I 4!w#tld \TLw":p0<HT`lx+7CO[gs ,8DP\ht       '  3?KWco{(4} 2hAKlx7ԛjBwEF0HHIIsJ?KKRnrooppCqq|rrrstrtQu~ӀF aԂȃ4kW{ԈSw҉QuЊOuыQӐR;o +_ȗGܚoۜx&.ӟ2gbW٣ޤKϥҦ,ڧ-ZnѨh+Wq)H~Y}ñU(ʳ+;`- `=p +tiY~xl[|Fg1R=* ,$~vn f^B f>JVbnz !-9EQ]iu ".:FR^jv      )  5  AMYeq}*6B:^BD,FGHDIIJmooApnqqrsCtt~cJ,I~UEanE?P&^ g9q0X~CrE$WF:kVHE=5-%!{!-9EQ]iu&2>JVbnz)5AMYe  q  }     ".:FR^jv sBE/FGHEIIJmooCppqqrsEtt~dɁK,ڑU͒EbՙoGBS͠' Ih9Ʃr1ëX~C֯rޱF%XF;kVHE=5-%^|!-9EQ]iu&2>JVbnz)5AMYe  q  }     ".:FR^jv VtBDFGH5IIJ mno2p_qqrs4tt~~T; oˑF6Rř_60A֡ТqW*b!I߬rݭn4ǯcα6{H{7+yq\G96.&l~*6BNZfr~ #/;GS_kw&2>JV  b  n  z   +7CO[gs dv:!|!!!!!""" #}##$$t$y$~$$$%A%%%%&&)&0&7&T&n&&&'}'''''6((((((()W)^)e)l)<"A"F"t"y"""""" $&$,$2$8$>$D$J$P$V$\$b$h$n$C'v'(( CEFFeHsH+IIJJmK{KoVq+ty1ڃח K{hB>q >q"yq+,,+,,,,+'-CEF@HIIJKKZnzo#pqqrrst`u~U;o[WUStdP.(Smy.c@Exyq}q`K6! {skcCO[gs&2>JVbnz'3?KWco{     "  .  :  FR^jv #/;GAKlx*Ǜ] 0/0/0/0/OOOOOOOOOOOOOOOOQmmmmmmmm{|OX Y X Y {|{|'' '"''CCC//////////OOOOOOOOOOOOOO  ?@AyHKKKKjloqrsSwxh+NmiggÐB6Ę92W`wŪŰ -$W|?pnYD/zr5 -a<.yQIՐT.ܧ lD<  19PW^v} #8<@DHL`grv}  $(,;BXpt} $(/3:>EIPT[_fjqx 1 6 : B J N V ^ b j r v ~    ' ? I U ] b j r z      & + 3 ; C K O W _ c k s {    ! ) 1 6 I N V [ c k p x  " ; O _ g o w | :I_cksw ',49AFNVhmrw-Hg~+=W[cgos{ #'/3;?GKSW_ckow4Gbt4E^p,<Td| "0FTjx,=Vg.@Zo,>Xh")=CIOU[agmsy !'-39?EKQW]ciou{$+29@GNU\cjqx  '.5<CJQX_fmt{#*18?FMT[bipw~ &-4;BIPW^elsz   " ) 0 7 > E L S Z a h o v } ! !!!!%!c?1|TLY\xu۴&z.J 6"&+/4NMk˛P,u8]LQsSSTdTT5=9::07-4*1'.$+!(%"  7 :;;18.5+2(/%,")&#   4<29/6,3)0&-#* '$! 6 o}-7core_intrinsicsderive_clone_copyvp={Y m*M}vp=W|Esj,/}vp=9W{h4Z}vp=5#e4}vp=t2c(}vp=Z`N@a*}vp=p:)o@_,}vp=e{w\*}vp=гCD vp='R$km4}vp=pꕒˡk.}vp=YKQܿh4}vp=of,}vp=Ld2}vp=Rʙ a4}vp=H)3_.}vp=蟹YeY]4}vp=1Q@ 0@(vp= aR&3t3$uu   vp=Vzu-*vp=X4*k8}vp=tYN3i4}vp=Yf(}vp=@Td$gd,}vp=FT*3b*}vp=V3R_8}vp=V1]* }vp=6[ 7@(vp=Knvo3   vp=N+L!fvp=ݤ46k. }vp= si* }vp=l0g2 }vp=fd ^s=d( }vp=oTvPb0 }vp=tQ`. }vp=f'u]6 }vp=kAvp=ᡓ0 vp= rzl8 }vp=m@i4 }vp=R,N)Q#g2}vp=+;Obe,}vp=tb4}vp=}O. `4}vp=Т*tC^4}vp=S-Xu% *vp=#mI8=t$%   vp=-~ֿ1al,}vp=ʂ j:}vp=VC? g.}vp=Mve(}vp=`9l6c@}vp=>a.}vp='->v^(}vp=eU.?353453~453v443n443f443^443V443N443F443>4436443.443&44344344|344s344k356}8C:<=6Q8:;p=?6%89;D=>s679;=>G679W;<~>67g9+;<R>5u7;9:<&>5I79:h<=578:6<=B58n:25 78^:&<=6m83:;=?6A8:;`=>689;4=>c679s;=>7679G;<n> 67W9;<B>5e7+9:<>5978:X<=58:hODHT Bk? p8_e8"@P(m~ !/:'bXV0\4k1 t7sI U#EA ܤY&/ [Yܿh`(jr ;^p Y42Lͱ 4cu5<>YZ/7y9;S'V;]mr=;Wx>x]1N?py9}?TD2q>)'rB80 QWCCzLC YvEf]7mFAFR14E'I:=K0JGL=<:L{kv9K`eRLQ|}~R4c 4U`.iBNsUBXS]e\Xg>KYq͛]Y5VYlб\Hɑ@`|aKa4:^Tc gDT(fFcg+ecweݧjLg=M2눧g3 Qj͆\hCnQ:M*"o`5_Kpkvq@9*6t4 ui4mQKxx yEu/z0N{zB5{xܭ~#zs~䘧꧀4,/d>k~i!m] '> ~4YVԂxVzdy şNQ>׊dkLi,,.IQ""t"}penۓpC~*7U!=/H~B <2$Pe !>[H~ݜ@ nc4ym9< n>vLL)R|@i֓qg~ :4]b2Cev"BSfDiu0w͟DY-٢o/F2(G3?9ΏC?F^eMIU5EY2~CmO[O8gfHMd4N?e4<˶P-R.oCRm٦ xLs{U~W^aXWynZ}})Tk[iS z[۔AZU~L[CrQ]Ϡi`SyD;b1qb~hcqb W c-*f]L#gunEhвia9K`jc 2i)@luMqgϐmiErMU0suF(7=rCg8um9`2#,`vh3Ը^wɳ'xU<!zu9GInsvU>{}diFW|u^x=2}i~)RiX sYN>]-͊ڐU2{83&#H,H*5ic}6b)m2b3]W 8w9q}TH:zéU:Nd#wG<ے!" =~b.(.*>n_?~TjI?Vҩ{v@A!ƕ@BI4f"(DAu/V'Ne=.EuǭGd~"HoĆoI3DBG~ ,C48LooLj  8tr&tuAoںuHVtA'هv~87zZ`-O{Gf3zl~Xmu&؃$> L[noo%दr]ꆾw.i.g06e}V)n ɨ“RZr0gjsEؔ{Zu/JS6M$F-M!j`JҔ< ހQEmΉào[y0 ne}@lFPhjz!2s@PaMDO}4En1[gk kv[0]Ƽ;u*tA> b zq z~ ׻*a^2d\շNpnײl:?tbS :=uAe2x- \VW<$"\*tګlɾ g;fb ,8J{~΢ˍv2+rB҄ pVoV͍}'vRBiC(]tF AU!i] JpF5U$'}2«R({+ɣG&4:7^ \N若 :~o<#+>{#ٜJrfL嚺c@zs6,x_bSvYJQYv?hʮRmDá&T 4"&z.ΐ@1H :0"FYZIxyg/aTf2~JNj0z⛫\<fݓ@3h eӂXJϵv̑o+N*/:!& : + ?2]C3 ~[N vX<[x1xc~@~<W{`Bki+cj L?'/? Cܜ `Dž\gHJs퍪 ,u[!L"8bXʨv'' a/#)2sIv+LOm,w +Dٟ0zy3y9tn4X43Kd‹O:#E06;RkE_fE.NF/dGۗJoPH t4FI4r\QLˮ^$>Pk)ePN.S;jzUT/"eAT+s6X3IleMUYC" 8ÏZYEa[W.]gy`]/!j _60[܂b'7ogkhyaA5isD=C#gW^oLS>i'*/ߩvm˶మ+nd=Noz6wp;oT~)rD)|tcx+EyWu:M^yR?zK73ucx g1 };v#Ó/~U*y[m!B9eAzjGϥo5>{3yPW:=sӵCY$>%$uSˤ&쥎{Jn^LyՐb{,R-S/& gq&™àyKW5~gApsM@gsb?'vu=1 '06l>7f:7l c7{"~_>CX>,yɉIFmњ+OhO[wQX2g($m,ofQ~./GZS&VfVT5lSTL2cʳ'wRVcXpv6 W;?t䳹Rx +јo!;u[@6廫>L |mSo#};xǖξk$ =#1X&{ ?‹hr+'s o5K >WO[2&kg?®JQ3ЧwؒY'>l "[SKnwIbNѷ(zd˼mR*%_ Wq7Pzڏ7UڻŁSO)?x ,C;:bݫUnxX(Jً͕SZ(ӷ cX0ح7Ћ%B'm;.dKS3zW'"yR ۼyǜ$Εngten\gOzw< =e ôC8 nOa~A,`[u-Nt {^r(f~_VL~g4lj|XNh@G<"=~3@ ~ZVu}vH~23fTd%"S&Cgv{R "srhS4,AM'z5wmrA^Q!_m-7`%69$kt$Uz _C3d6sm -*L?ITvS-f*UIiuV)H )J-FT:SR4w@iD0me{xX/yTSH7k"\Ecle {s#1Dr^/B}6E`_ 1FD vbloI1M EU#y-vZ)SxMMJ?w})|1eu7 } ^ *#!yB#v4?4,XtcH3I$\B+{ ~QL#Ken{WsN3GpgLaYY @6SbG$Z20 Q;vQ++.-jr >|>,YqUg6EzY-"CG"QpMWaacvz y5Ypmw1c{Hmpavv"{ln|hDTR~C1PS$ BTBF+nE=t$4[F~8=2I17*Te A Q"ebN#&lA[&D4,DN1RG. LGPhiHb5ma:J=l9YG$xL3,:@Zbe7An-hE&%F( ^<2Yv@ "X| c8?/h'ko1GC 7TPF C$6z`biy7) eViKNk)Yg3byko8 nOa~A,`[u-\/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/quote-1.0.36/src/lib.rs q=xR3n kon O+!KQQN&OMKPQP.GQ   PPONM-17": TM&. <   PEP9<>8  %K# $.$ Q* RO a   MWQXY .2 NOYS+ +WOQ   VQ? q S 9   UM' YUUUVU YS5 L   ! XX 2 %( ), ?+IUC&& (+8C" @,  + WXOU  0( "!  ) WSC XSL 4 C% WO7 .0>7& SX< 4 C6H&  $ XNQ  ,0 VUYVC  ,2 I @  ,P  : S / 6 T@ . 0$@B  - WY J / V). 5 ;9+/2#,FL&5B L.   2 ?@) <@9 @** 0@2 X"   YUU S %(?", -P L0/ VNVU:   VYA   WY+ K D4+('D1%84 WB Z$6c XX2 !' !_2 ?$@c7 <*@_9 -@c88 0(@c@ M;!.> .> G (;=;=;=4)4$&J4'(': O0QCNFOML2%EEEEEEE /6666666666666666IONQ'HOCM8LPHN %3###%### ,(1A###%### ,)// U ,1// c ,(Q)G'N'IR:JLLNM.R: OO$O'IR:R3: PPMNH7(P'K:M9N,K0SZ'IR:RH [[['IR:RAH \\T76\W:YZ:LPMP3&I6+'7( +'3( +'1( 553453637624583644:252222622558663693636436,O:#DA#2X(E7/78 7/38 7/18 'D'D'B'C'D'B(E'B(F(E'A'C'D(G'B(E(C)C)I'A(D(A'A(A'A(E(A'A(D(D'G(E(E'B(E(H(B)E(B)E'C'B(E8^'I/S--./_-~9]֔`/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/quote-1.0.36/src/runtime.rs b-1X[8]",4t~:6<-#1 3N1[&<I<7*7OONO-[9M16 .CK%MH1* @$ 7N*%?T@< X@< 3(@# 6(@# ;,@# N@% OH QOI.%./.4" ,-'7;-+ #, &) #'+ (&+ X1.2C"FCF9F!=4 ' 7")K-A)3$M$U U)3$K47$M 01? @@"" :1?? @@""@"" D1??? @@""@""@"" ,6,86*.0:060,6,26B*4.*.*6.*440666,6<.0:0:.,638G*N954.! P=LO:1)B;'M;$S;'S;'O;%.rHSEY_/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/quote-1.0.36/src/format.rs "SaC '𜥺}%%0  PO"!,22.+ PCN&N," PL*Q=+J7 4. 6 L +3%&?. /"/ 0#3#3#%- #%-!%%3 6CD%O=DK?h /<=?` WګɖB^niC\/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/quote-1.0.36/src/ext.rs |hL b'9|Pn+CQ,/<& / 8( <3 !6 ) /N 9 /IC< && /) # 9 9$# < #" "#2`A+Fg/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/quote-1.0.36/src/ident_fragment.rs 8x V`DZenX :O0+5:3B% 7%*;%;%*;%%;#2%* %)%;QO& (G/ 2[ )Dʇ` u(b/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/quote-1.0.36/src/to_tokens.rs jHaᙚ*OA!1N96I I/, !# 3=OB/-%=OB. 44$84$C4$14$04$+4%! 4.4)' #@:  4249<4%4%4%4%1" 1.0 $.w9#?CM"`/Users/kalanlee/.cargo/registry/src/index.crates.io-6f17d22bba15001f/quote-1.0.36/src/spanned.rs  t~u$^!s2#&K%+--;$*.+'!/A]A7ou{~[aarch64-apple-darwinEWz M -a53a5302d6df220evp= 90             B)>;;؅