rust# rustc 1.48.0std؝-6bf3f16f340782cacoreƞ-3375e4f89d420e7acompiler_builtins-f74b197469e67088rustc_std_workspace_core扪ڹ8-5e0675f526ef5c6ballocץޯČ-1ebf406bd4ea5769libcɄ-dfbef8c525de0186unwindܽ݇!-bd645b20c6c7b56dcfg_ifшC-b9e1e523c0c29a77 hashbrownǰ-c6632ca171f954ddrustc_std_workspace_allocW-b5bfd0198c7b740drustc_demangleة-3ac2d0878c297d42 addr2lineƄ-12740563628e601fgimlin-0ac82a1e1820dd21object»-af517d7f13e7c960 miniz_oxide֕㵤 -a2ba33c985785afeadler˯-3f6e9f8f4afbea6d panic_unwindի-13f3099d50c21bc6 proc_macroתӺ-98fe22f4772d9a7f proc_macro2ѐB-4a51a5cb4a3b3b3e unicode_xidܙv-2f683cc8ef7518b9 @p2h,= Ydn8stdGo proc_macroCȦ&4#FQext @ f7V>L:8k0W7GW)Iﯦ+T.mwlq1,K0ݠjy!e5~TokenStreamExt(+{$q3 append&RR Kz:ڋ UhinSo=2  append_allF*X I1QG> append_separated} W!sI R3.G-xiRUcՏvGBb append_terminatedDP_j(2GIxĎRʊ hUOZe)1k&iHappend7I)3T-cJU1yid Μ append_allcRI ,_AxeIH/}ŭn2L?append_separated|?R*-L IɺW@|*0"|UyIST_append_terminated_5^y IzU;7Ϸ5qU<}RrUR,>privateQ[Yy'W/ Jv toGFD Sealed(ivJڸ(3& ZPp8+\1hformatׯ+r=pL$ format_ident皑;>P$format_ident_impl1߰wKa*ޅident_fragment;T?B$%H'q fHQ-e';Hn{;x'%Wǻ^~Yd': %q4Tg`BBoy,4spanFܟ.lsp]4fmt Rj!|IԢΨC'A2}:*K$ʼn78span?V}fMk8fmt~l5'Sr^fXK4o!'q|lZž~;TY'aal\$;spanF/X%XjL;fmt4V?Μ2OeW'ident_fragment_displayz,֯Gv} to_tokens4B Rk. ~@.3^ u +R@s%tR?@A8;30PP%@fYuy''C@O@6@vS 2{C@%0lr <68 @juHc @i-^sI:kC@1B3=/~YC D@ =p6`J8od>%@ h\D_T=@ #v*~sA ɕ@ToTokenss&YP$TM to_tokens$:C:Mto_token_stream AҒ9AeMinto_token_stream 8;0:[6y@i!T$M>BjQ'a0ug!2G{Eb8QT%y4PbkQ to_tokens>NP \x;@~'A$Dxw]U'a}eTN@mYUTMaiV |V 6GU to_tokensYi@ =A; >@SuCh/"vtY'a::+)VYT2¶yu帄vY to_tokens>NY!wFNcGy@T_&j [N]Ṫރ^0] to_tokenst$WZ;|9—@tTfˏ?t`Tv{ĜҸ` to_tokens`"Fɟ@eXf&|2cT3hU 3c to_tokens@LRȴ+@K Fq]ZB]$m{f to_tokens:\w喋|@Uoyv6 Th to_tokens5OEWѣR@ primitivepl-&@A8cMas.{k to_tokenst2Æ/Z~_&@ 0mŚAm to_tokensu1Y5@ p>V0no to_tokens4YTOB\@ iZDfi@e)qq to_tokens֒ϡTK@ +nZwlX!w(s to_tokens q2vT{@ n}D(\'iau to_tokenso8%i0^Z@ڽ>{Kqw to_tokensֱz:ds@@Zj&y to_tokenswi0jaÛx^ڧCBHyinto_token_stream b$@ׁ? __privatep㔥rhXꄸW|EnFU|r/*7s %1HW|RueK?M?,|1Ss-,Gf겑m|yE-=|} 1xlWT|ݱzWJ$SK+O| HasIteratorG#*O0 }U><ԅCHåXl>u|ThereIsNoIteratorInRepetitionWr\7ao`|1=ôW8' Output<'\jwRҾ&~wbitorcbOs࿬"Y|j#4)?R@y;nOutputIqto\HHbitor[rr'- |SnԀfzSEVjOutputS!{DaiV!bitor9 37mVlхe6|S,̥|Outputgm5If}LHbitorf2|[}Ni*R|ext1CTC 4qݏ,U^m<mh$224{[du]rw˷HjYN%HC`OxenC bYs4ܸX=@1ȇ`"ZQc^b 8<RepIteratorExt1lJm[F$quote_into_iterPu+^ZL-O^Z{ T7# D*Cz+RepToTokensExt?ROiwMnextbC.(pץquote_into_iter=q!|(XQq9ukfT{q>Zb=lq\RepAsIteratorExttLDNU'q8ۍ߃!]_zIter&oM'?3quote_into_iter #C=qaᓱGXœ%\l'q["=RGp.,'a:ē-.B ς$TRӿ;9\-``>.H~Iter$ ntW5:#quote_into_iterTj5+iScPCX@.k`Z'qkj~)4w 5'aLvy'`-k;TW( Yӳa1޾Iter)Fsaquote_into_iterѽ2CXpڳX9$bb"[ֈR'qѴ^+{0i`Ta-38Iter rԚZquote_into_iterU-#$=*Ty-%v^'q3t|"v)T{I_GWIter- l_ÃYHwquote_into_iter)B8{D$n'uC'n'qɃdQˀdmT 9D]SgIters ݪ)(quote_into_iter V1bBin+z4 j'q8Ǚ!M;FTQ'TP2TE5Iter׭A(ɶ{lquote_into_iter1PZr_[Ak|h- X#T Tr N:nextw!3fl\Ublf|^s3z|T?v ro`Item-s);$C)"V nextdkkoՆ@|9p*( U>[Ta<,588> to_tokensvL \3c| push_grouptXW) "-|push_group_spanned3[ Ժ|parse0jbp icjAbHcC| parse_spannedJ|!'>kQ٩_ quote_token_with_context_spanned'j`"Q~ quote_token=>pqquote_token_spannedmOQ5Z(Iu'ТE:aqؗ 8fmtO5=ݕcLym &'PngvN;ȟ1%fmt*) w]h2P DV'Tͫ1J]^rH1fmt>Bw08'ʨveؠfmtdkRk9.'YV3$fmtcG3Rdd::r' !LE%fmtM&Ի@' NMk'82fmt]ݡ,s3fC' 1K4 Ilfmt_1߱k\Jreih,"d' 8\ cQY:@ؚfmt}7T=*N ȳp`' |fw~ưBfmtYK@?]@ iԛӆ8e to_tokensQHLe%G؄P@ $m R\ to_tokens Á!@?T:*'+T b to_tokensq섃;Nr$@:T}KT3!R to_tokensvBP'@@9P{Xβ^i to_tokens_X[p@u[YQ\]rE to_tokensYأ~_c`$3@bGWM/; to_tokensvvk0%p@eoV;o_Kw to_tokensG^m۽s~!@3HQsC~$ to_tokens)hC}'It @? Rsqq$V to_tokenslfSRwfnOj@ܥ+  to_tokensax:+N>`D@ri7{*'Lv to_tokenso,˿n.g@h *7eTt to_tokens]FvE^Fs@Rj[:0MGo to_tokens]A-| RepInterpV|"RS?Z%=޴Wy6TCQvwU: x'K0a/]u'|xopBJ| 0kaSфYTZ|@‹GSclonehw @йCr1|T(P5WTMZ1<䜸' )E|push_add;3Ѱ(,0|push_add_spanned(Nk( b| push_add_eqg?shȁ|push_add_eq_spannedK &rP|ޅ-|push_anda8T)t^A1jD|push_and_spanned 7Dun{b | push_and_andb:h쿟Z9Y[V|push_and_and_spannedoT%SPC| push_and_eqՓSvĦp|push_and_eq_spannedZy:32?X.|:7|push_atev"D5](0r|push_at_spanned*j|2*Ige| push_bang/jz[I*W/ Yu|push_bang_spanned]wQ2a7| push_caret$FDaAC|push_caret_spanned r+k\| push_caret_eq$$:O|push_caret_eq_spanned+ξ]\BM| push_coloncta{,m%s#ϖ|push_colon_spannedeݞ=g| push_colon25dGY|push_colon2_spannedY5ƋYGrURG| push_commaI3Hv|push_comma_spannedFyC$d&|push_div)o~`M(x|push_div_spanned*ZhE1';J | push_div_eq~"@gӞN_|push_div_eq_spanned{9c I|push_dotXNR6;|push_dot_spannedpD*^2SԵy| push_dot2{̦,e[K"mk|push_dot2_spannedS(3%G-q| push_dot3h\ tv+|push_dot3_spanned@j"zS|push_pound_spannedH;` N|!f| push_questionz"t2z4|push_question_spannedsr!󎗬F| push_rarrowC5V@JM|push_rarrow_spannedz([09Iq@| push_larrowVO҉l=jP{)|push_larrow_spanned"z[kR!e7|push_remz/a\)8J|push_rem_spanned{)3Qzn~#{ua| push_rem_eq"#*MiW4VG!|push_rem_eq_spanned}9sڻPL|push_fat_arrow:s2aRXz%CXM|push_fat_arrow_spanned4!$je| push_semiSg ԉ<fVH|push_semi_spanned[S^>^F}Fm|push_shlbB9vsE8 j|push_shl_spannedGI}-n| push_shl_eqnobc\0p|push_shl_eq_spannedwVB=|push_shrHÄרAL]|push_shr_spannedMQ#zn$Sд%| push_shr_eqsY=Ҥn|push_shr_eq_spannedK?Wr{| push_star>9PcZAl|push_star_spanned{ljAy&|push_subN,oQ |push_sub_spanned/LH @C>| push_sub_eq_DBiD|push_sub_eq_spanned5y_zaQSn|IdentFragmentAdapter ,m@Av6;&9d^)=Tc^G(+9WD0#'K8Rf@|0ngz{7TyTa+J +$O]clonerB8ٸ}1m(|zp9m\+T#ńÙjrBb5>Z?YX5|gFc=$N%/8[nYj@~?XqS+XB`\J ,J GA R3Fw .Ch K G!֝TH\0U+!S{C[DhVu)$=D^Ź')!_W`m*>joF\Y*xhKM7꒿+<ջ a6+[.f)jZ'X,c$z[ؘ8m,LGV4Gl/F]J_AcWKw <AtAD^#0+B@hgfaN0B HOTkИɂMwXC8HGjj12ACxreo<DHm_tbѾa D¡#2[^` KF) $b+F/VH5-zd1 G@AwVu{GR$!:;fHѕ7Xk2bH-(\ӹsNbDInMϑfqk LI{pyR"4>\TJrh~a I"JzFtKkK JCB6\KmVh1Q]\(jLNbBF2-q&LhӔgF;O ._~&Gz-_6~I CoCӏoXd\vd # *'XʶBj2X_.ɸϱ9i.HfԊ\W_!MDftkxGkhƐ.-χ9dҷ\/RvntJbt}f eC`z%ǧ!mhfUnYiVhj蒔+&2&уloz2j^|V @6+Zua{/ɡbcޱ\Zˊ:10Fs/Ly]PnCD+Onjj SONQiy60?,ڣ$CWh~2E= 4v: xz.Qs&R@&GpbS(-Fan'P[V]eħiGͼ0ga`z>ܢ 8Fr,Z[D |ch!` 1G & 5_}Z=p#7EVHGӰ0'_9=Nn 4'_Qɀ2Ý!d`;'_h(ڌTTJ$1048);#(`cfukswQUqY]Umh)oy#33-33)   M3}3" proc_macro$ # format_ident %format_ident_impl& TokenStreamExt% % IdentFragment% -%$ToTokens&M%quotexx quote_spanned pounded_var_namespounded_var_names_with_contextpounded_var_with_contextޚquote_bind_into_iterџğquote_bind_next_or_breakquote_each_tokenquote_each_token_spannedquote_tokens_with_contextܪϪ!quote_tokens_with_context_spanned!quote_token_with_context quote_token_with_context_spanned  quote_token %quote_token_spanned0˵ [![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=rustn [docs-rs]: https://img.shields.io/badge/docs.rs-66c2a5?style=for-the-badge&labelColor=555555&logoColor=white&logo=data:image/svg+xml;base64,PHN2ZyByb2xlPSJpbWciIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDUxMiA1MTIiPjxwYXRoIGZpbGw9IiNmNWY1ZjUiIGQ9Ik00ODguNiAyNTAuMkwzOTIgMjE0VjEwNS41YzAtMTUtOS4zLTI4LjQtMjMuNC0zMy43bC0xMDAtMzcuNWMtOC4xLTMuMS0xNy4xLTMuMS0yNS4zIDBsLTEwMCAzNy41Yy0xNC4xIDUuMy0yMy40IDE4LjctMjMuNCAzMy43VjIxNGwtOTYuNiAzNi4yQzkuMyAyNTUuNSAwIDI2OC45IDAgMjgzLjlWMzk0YzAgMTMuNiA3LjcgMjYuMSAxOS45IDMyLjJsMTAwIDUwYzEwLjEgNS4xIDIyLjEgNS4xIDMyLjIgMGwxMDMuOS01MiAxMDMuOSA1MmMxMC4xIDUuMSAyMi4xIDUuMSAzMi4yIDBsMTAwLTUwYzEyLjItNi4xIDE5LjktMTguNiAxOS45LTMyLjJWMjgzLjljMC0xNS05LjMtMjguNC0yMy40LTMzLjd6TTM1OCAyMTQuOGwtODUgMzEuOXYtNjguMmw4NS0zN3Y3My4zek0xNTQgMTA0LjFsMTAyLTM4LjIgMTAyIDM4LjJ2LjZsLTEwMiA0MS40LTEwMi00MS40di0uNnptODQgMjkxLjFsLTg1IDQyLjV2LTc5LjFsODUtMzguOHY3NS40em0wLTExMmwtMTAyIDQxLjQtMTAyLTQxLjR2LS42bDEwMi0zOC4yIDEwMiAzOC4ydi42em0yNDAgMTEybC04NSA0Mi41di03OS4xbDg1LTM4Ljh2NzUuNHptMC0xMTJsLTEwMiA0MS40LTEwMi00MS40di0uNmwxMDItMzguMiAxMDIgMzguMnYuNnoiPjwvcGF0aD48L3N2Zz4K 
  K This crate provides the [`quote!`] macro for turning Rust syntax tree data N' structures into tokens of source code. *  [`quote!`]: macro.quote.html  G Procedural macros in Rust receive a stream of tokens as input, execute JM arbitrary Rust code to determine how to manipulate those tokens, and produce PM 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 thanOM compiling that as code into the current crate, we can treat it as data, passPL it around, mutate it, and eventually hand it back to the compiler as tokensO* to compile into the macro caller's crate.-C This crate is motivated by the procedural macro use case, but is aFM general-purpose Rust quasi-quoting library and is not specific to proceduralP macros.  ```toml  [dependencies] quote = "1.0" ```
 # Example 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.html0 ``` # use quote::quote; # # let generics = ""; # let where_clause = ""; # let field_ty = ""; # let item_ty = ""; # let path = ""; # let value = ""; # let tokens = quote! {3 struct SerializeWith #generics #where_clause {6 value: &'a #field_ty,!6 phantom: core::marker::PhantomData<#item_ty>,9 } P impl #generics serde::Serialize for SerializeWith #generics #where_clause {SI fn serialize(&self, serializer: S) -> ResultL where" S: serde::Serializer,% { * #path(self.value, serializer)- }  }  SerializeWith { value: #value,8 phantom: core::marker::PhantomData::<#item_ty>,; }  };  ```  doc  ! html_root_url https://docs.rs/quote/1.0.10  7!allow!!# clippy!! doc_markdown! ! clippy!! missing_errors_doc!! clippy!! missing_panics_doc!! clippy"" module_name_repetitions"" clippy"" wrong_self_convention"#!$'@|$ToTokensصMѵiter  TokenStream   TokenTree  o$   ? TokenStream extension trait with methods for appending tokens.BM This trait is sealed and cannot be implemented outside of the `quote` crate.P Self  "SelfѷѷselftokenڸG' For use by `ToTokens` implementations.*4 Appends the token specified to this list of tokens.7ݸ U  U   selfiterb' For use by `ToTokens` implementations.*ֹ ```޹0 # use quote::{quote, TokenStreamExt, ToTokens};3 # use proc_macro2::TokenStream;# #ʺ struct X;Ժ  impl ToTokens for X {4 fn to_tokens(&self, tokens: &mut TokenStream) {7+ tokens.append_all(&[true, false]);Ȼ. }  } let tokens = quote!(#X);. assert_eq!(tokens.to_string(), "true false");1 ``` IȪ I Ȫ(Ȫ MȪ(׽selfiterop' For use by `ToTokens` implementations.*F Appends all of the items in the iterator `I`, separated by the tokensI `U`. ȪUȪ IU ¿ Mselfiterterm' For use by `ToTokens` implementations.*A Appends all tokens in the iterator `I`, appending `U` after eachD; element, including after the last element of the iterator.> ȪȪ IU ح  selftoken U U%    '% ( 66  % self tokenselfiter II( M(>>>==>> (>>==@==== = = == )(==  @@= = =  Someʷ      = = ===   Nʷ     @= @33 =ڹ>==ڹ=ʷ=ʷ= ڹ==ʷʷʷ ʷself iteriter=__next=val token selfiterop IU ķMAAA?  ? )ڹ ?AA (ڹAA??? ? ? ? ? ?  ?? )  ??      ? ?  ?   Someʷ      ? ?   ʷ@< < N <  ? ʷ  ?A???ڹ???? ??   ʷ@ self iteropiter?__next? val itokenselfiterterm IU ķCCCBBCCCCBBbBBB B B B  BBԹ BB    bbB BB  Someʷ      B BBBB       bBbUU BڹCBBڹBʷBBBBʷʷʷself itertermiterB__nextBval token TokenStream  n!"#Self"" "$$ $Ident'Span'Cow'fmt'_$()*+,-048; 6 Specialized formatting trait used by `format_ident!`.9K [`Ident`] arguments formatted using this trait will have their `r#` prefixN stripped, if present., See [`format_ident!`] for more information././Self--selff5- Format this value as an identifier fragment.0 .  2--self 3+ Span associated with this `IdentFragment`..: If non-`None`, may be inherited by formatted identifiers.= /--3  self3 '23 '_T-'_T11- self 'P 2'_ 00! /!P   !selfPselff'a 3'_00 .a  2selffa '67 '_-'_T55 self 'P 6'_ 44!!P   !selfPselff'a 7'_44a selffa'9:-self '@ 9 88selff' :88 '=>'_-'_T<< self '< ='_ ;;   <     self<selff'T >'_;;T selffT$ TokenStreamExt @CowցɁ@iter߁ @Rc @Group@Ident@Literal@Punct@Span@ TokenStream  @ TokenTree  @ $ABCDEFGHIJKLMQUY]`cfhkmoqsuwy= Types that can be interpolated inside a `quote!` invocation.̂@ [`quote!`]: macro.quote.html NOPSelfMMselfҎtokens؎Ď.) Write `self` to the given `TokenStream`.˃,F The token append methods provided by the [`TokenStreamExt`] extensionI1 trait may be useful for implementing `ToTokens`.҄4. [`TokenStreamExt`]: trait.TokenStreamExt.html1Ʌ # Exampleх A Example implementation for a struct representing Rust paths likeD `std::cmp::PartialEq`:ӆ ```ۆA use proc_macro2::{TokenTree, Spacing, Span, Punct, TokenStream};D' use quote::{TokenStreamExt, ToTokens};*߇ pub struct Path { pub global: bool,$ pub segments: Vec,' }ˈՈ impl ToTokens for Path {݈4 fn to_tokens(&self, tokens: &mut TokenStream) {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);* }  }Ì  }ь #ی # pub struct PathSegment; #" # impl ToTokens for PathSegment {%6 # fn to_tokens(&self, tokens: &mut TokenStream) {9 # unimplemented!() # }  # } ```ǎ N MюMself ΐ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.=ѐ OMM ΐ     ˏȑȑɑɑߑޑΐ^   selftokens ΐselfГ s5 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.= PMMssٓ ГselfГs @T R'aMۙ'aRTSSRMǔselftokens@Y TR'a ۙ׏QQ N++ÕYselftokensY Е@ǕX V'aM'aVTWWVܕselftokens@Y XV'a ׏UUΖΖĖ ћĖԖԖՖ++ܖYΖselftokensY @\Z'aMۡ'aZT[[Zselftokens@Y \Z'a ۡ׏YYߗߗߗߗߗߗߗߗ ћ՗+՗+Y՗ߗߗߗselftokensY @_UTMܦT^^Mselfǘtokens͘@Y _ ܦ׏]Ƙ] N++Y ܦƘ͘ selfƘtokens͘Y @bMҪTaaselfؙtokensޙ@ʙY͙ b Ҫ׏`י` Ҫ ++ʙY ҪיޙselfיtokensޙʙY @eMTddselftokens@֚ٚ e ׏cc   GGGSomeÛÛ ɛɛʛ,,ԛG֚ۛ,  Ûselftokenst֚@ߛgMselftokens@c g ׏ff@i)Mѵselftokens@^ i ѵ׏hh@lMselftokens@g l ׏kk@nMselftokens@ n ׏mm@zpMselftokens@ۥZޥ p ׏oo@zrMselftokens@צZڦ r׏qq@ztMselftokens@ӧZ֧ t ׏ss@|vMselfߨtokens@ѨZԨ v ׏uިu@xxMselfߩdst@ѩTԩ x ׏wީw@z{Mself۪dst@ͪ`Ъ z ׏yڪyselfȫ @> {yy% IdentFragment - |ToTokensM|TokenStreamExt |fmt|BitOrǬ|fallback,r׬ TokenStream2 ׬LexError3׬Spand׬ TokenTree ׬Group׬ Delimiter ׬Punct׬Spacing׬Ident׬Literal׬ token_stream ׬%$doc$ $$ hidden$$$path$ $ runtime.rs$ $}~ ))||,selfȮ_rhsή|® |ů|self_rhs|^ ||Ʊ˱self_rhs|L ||self_rhs|L ƶ RepInterp۶ Զ RepInterp۶ ԶHasIterHasIterDoesNotHaveIter0DoesNotHaveIter0ToTokensзMɷ btree_set BTreeSet(slice  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.NJ These traits expose a `quote_into_iter` method which should allow callingMK whichever impl happens to be applicable. Calling that method repeatedly onµN) the returned value should be idempotent.,E Extension trait providing the `quote_into_iter` method on iterators.HSelfϗ)ϗself S SȹselfS )Tݯ); 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.Ȼ Selfself߽ ֽBA 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.(ٽ ޽ Some ֽB ޽ self޽ֽBself e eselfe 2TF Extension trait providing the `quote_into_iter` method for types that˿I" can be referenced as an iterator.%Self'q'q)self 6 'q 'q  'aT'q'q'aT'q'qself } 'q'a 'q'q/( /}  /self}  'a'q'q'aT'q'qself } 'q'a 'q'q/(/}  /self}  'q'qT'q7'qself d 'q 'q'q   >7d  selfd #'q'qT'q7'qself d 'q 'q'q      d   selfd ('q'qT'q#'qself d 'q 'q'q   d  selfd 'q'qT'q'qself f 'q 'q'q f selff |Tݯself ;  Some ;  self; |)Tݯ|)self |F  )  )F   self F |MTݯselftokens|W  ׏ ))W selftokensW tokens delimiter inner&U tokensspan delimiter inner0| tokenss/  3  33  ֈ3 tspanֈ3 tokensspansC ۆ tokenss4 ۆtokensspansH ۆidspań6 Ɓ |wTݯ- selfŒ @    /@ˌ   self@ |3Tݯ selfǍf͍|c Ďƍ .c ƍ͍selfƍf͍c |3Tݯ 3 selff|` ĎƏƏƏƏϏϏ 3ЏЏ֏׏` ƏƏϏselff` |ۏ3Tݯ 3 selff|c Ď 3cې selffc |3Tݯ 3 selff|c Ď’’’’˒˒ 3̒̒ҒӒc ’’˒selffc ܒ|ג3Tݯܒߒ 3 selff|a Ď 3aӓ selffa&ToTokensMSpan TokenStream  U&&doc&&& hidden&&Ք˔3Selfself  Lself .   ӕΕ~Tߕself M   P–$ $ÖʖM$$selfM  I;I(<əə ə əə  ə ə ə  Ι I(< I(< I(< I(<I(<љљI(<ֈJ<љ<љ<ֈI(<љ<љ<љ<љ<љ< 3   2I(<I(< 3I(<˚ J<J<I(< J<J<I(< I(< I(<   ͰJ< I(<I(< 3 I(<J< J<I=;I; I=; J;J;J;J; J; J;J;J ѵ D  bytes(0..0)   ˚f  Some f f ˚ ˚˚˚˚̚IZ;I(<   ѵѵI;I(<əəəI(< ͰI(<I(<I(<I(<ֈљֈљ<ͰI(<ֈљ<ǯљ<fJfff ѵ əttspandebugresI;arg0љ<ə əəəIZ;I(<əəə֛ Some ֛  ֛כޛ_prevכnextޛ֛ֈ   ֈlastfirstؚֈі tokensܖ Ζ*ԩ'-selff'w '-selff'w 'ѵ-ѵselff'w '-selff'w '-selff'w  '-selff'w  '-selff'w  '-selff'w  '-selff'w  '-selff'w  @Mselftokens@{   ׏@Mselftokens@{   ׏@Mselftokens@{   ׏@Mselftokens@{   ׏@Mselftokens@{   ׏@Mselftokens@{   ׏@Mselftokens@{  ׏@Mselftokens@{  ׏@Mselftokens@{  ׏@Mselftokens@{  ׏@Mselftokens@{  ׏@Mselftokens@{  ׏@Mselftokens@{   ׏@Mselftokens@{   ׏  Tݯ  |  automatically_derived   allow    unused_qualifications   Tݯ  self |  inline                                self  __self_0_0   |  automatically_derived   allow    unused_qualifications  Tݯ tokens  &  tokens span 5   tokens  &  tokens span 5  tokens  &  tokens span 5   tokens & tokensspan5  tokens & tokensspan5 tokens & tokensspan5  tokens & tokensspan5  tokens & tokensspan5  tokens & tokensspan5  tokens & tokensspan5  tokens & tokensspan5  tokens & tokensspan5 tokens & tokensspan5  tokens & tokensspan5 tokens & tokensspan5  tokens & tokensspan5  tokens & tokensspan5 tokens & tokensspan5 tokens & tokensspan5  tokens & tokensspan5 tokens & tokensspan5 tokens  &  tokens span 5  tokens! &! !tokens!span!5! !tokens" &" "tokens"span"5" " tokens# &# #tokens#span#5# #tokens$ &$ $tokens$span$5$ $tokens% &% %tokens%span%5% % tokens& && &tokens&span&5& & tokens' &' 'tokens'span'5' ' tokens( &( (tokens(span(5( ( tokens) &) )tokens)span)5) ) tokens* &* *tokens*span*5* * tokens+ &+ +tokens+span+5+ +tokens, &, ,tokens,span,5, , tokens- &- -tokens-span-5- -tokens. &. .tokens.span.5. . tokens/ &/ /tokens/span/5/ /tokens0 &0 0tokens0span050 0 tokens1 &1 1tokens1span151 1tokens2 &2 2tokens2span252 2 tokens3 &3 3tokens3span353 3 tokens4 &4 4tokens4span454 4tokens5 &5 5tokens5span555 5 tokens6 &6 6tokens6span656 6 Ћŋ9Tݯ ŋ9 ŋ9ŋ9ŋ9ŋ9ŋ9ŋ9 |99automatically_derived9399allow9399 unused_qualifications99 Tݯ 9self |99inline9399 Ď9999999999999999‹999999999999self9 __self_0_099 |::automatically_derived:3::allow:3:: unused_qualifications::Tݯ :             fmt expr crate format_ident_impl   std option Option None fmt fmt expr rest tt  crate format_ident_impl   std option Option None fmt rest , Formatting macro for constructing `Ident`s./
 # Syntax L Syntax is copied from the [`format!`] macro, supporting both positional andO 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`)-0 * `{:x}` ⇒ [`LowerHex`](`std::fmt::LowerHex`)30 * `{:X}` ⇒ [`UpperHex`](`std::fmt::UpperHex`)3, * `{:b}` ⇒ [`Binary`](`std::fmt::Binary`)/' See [`std::fmt`] for more information.*
 # 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 [`Ident`]: `proc_macro2::Ident`#
 # Hygiene L 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 areK provided.  ``` # 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");* ```F Alternatively, the span can be overridden by passing the `span` namedI argument.  ``` # use quote::format_ident;3 # const IGNORE_TOKENS: &'static str = stringify! {6 let my_span = /* ... */; # };0 # let my_span = proc_macro2::Span::call_site();3* format_ident!("MyIdent", span = my_span);- ``` [`Span`]: `proc_macro2::Span`!4 [`Span::call_site`]: `proc_macro2::Span::call_site`7


 # Panics H This method will panic if the resulting formatted string is not a validK identifier.
 # Examples' Composing raw and non-raw identifiers:* ``` # use quote::format_ident;/ 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");- ``` Integer formatting options: ``` # use quote::format_ident; 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");" ```  macro_export   span expr fmt tt  crate __private  mk_ident  format  fmt  span old expr fmt tt  span span expr crate format_ident_impl  old fmt  span span  old expr fmt tt  span span expr rest tt  crate format_ident_impl  std option Option Some crate __private  Span span fmt  rest   span expr fmt tt  name ident arg expr crate format_ident_impl  span fmt  name arg span expr fmt tt  name ident arg expr rest tt  match crate __private  IdentFragmentAdapter  arg arg crate format_ident_impl  span or arg span fmt  name arg rest  span expr fmt tt  arg expr crate format_ident_impl  span fmt  arg  span expr fmt tt  arg expr rest tt  match crate __private  IdentFragmentAdapter  arg arg crate format_ident_impl   span or arg span fmt  arg rest %   macro_export doc hiddenxyxxxxx x cratexx __privatex x TokenStreamx x newxxxxxxxxxx ttxx ttx xxxyxy letx mutx _syyy crateyy __privatey y TokenStreamy y newyyyyy crateyy quote_each_tokeny yyy _syyyyy tty yy _syyx The whole point.&&E Performs variable interpolation against the input and produces it as&H [`proc_macro2::TokenStream`].'!'F Note: for returning tokens to the compiler in a procedural macro, use'IC `.into()` on the result to convert to [`proc_macro::TokenStream`].(F(U [`TokenStream`]: https://docs.rs/proc-macro2/1.0/proc_macro2/struct.TokenStream.html(X)
)) # Interpolation))A Variable interpolation is done with `#var` (similar to `$var` in)DK `macro_rules!` macros). This grabs the `var` variable that is currently in*NE scope and inserts it in that location in the output tokens. Any type*HL implementing the [`ToTokens`] trait can be interpolated. This includes most+OM Rust primitive types as well as most of the syntax tree types from the [Syn],P crate., ," [`ToTokens`]: trait.ToTokens.html,%& [Syn]: https://github.com/dtolnay/syn-)-B Repetition is done using `#(...)*` or `#(...),*` again similar to-EC `macro_rules!`. This iterates through the elements of any variable.FM interpolated within the repetition and inserts a copy of the repetition body.PG for each one. The variables in an interpolation may be a `Vec`, slice,/J `BTreeSet`, or any `Iterator`./"0 - `#(#var)*` — no separators0"K - `#(#var),*` — the character before the asterisk is used as a separator0NC - `#( struct #var; )*` — the repetition can contain other tokens1FE - `#( #k => println!("{}", #v), )*` — even multiple interpolations1H2
22 # Hygiene2 2J Any interpolated tokens preserve the `Span` information provided by their2ME `ToTokens` implementation. Tokens that originate within the `quote!`3H3 invocation are spanned with [`Span::call_site()`].364e [`Span::call_site()`]: https://docs.rs/proc-macro2/1.0/proc_macro2/struct.Span.html#method.call_site4h4G A different span can be provided through the [`quote_spanned!`] macro.4J5- [`quote_spanned!`]: macro.quote_spanned.html505
56 # Return type66I The macro evaluates to an expression of type `proc_macro2::TokenStream`.6LA Meanwhile Rust procedural macros are expected to return the type6D `proc_macro::TokenStream`.77M The difference between the two types is that `proc_macro` types are entirely7PI specific to procedural macros and cannot ever exist in code outside of a8LI procedural macro, while `proc_macro2` types may exist anywhere including8LI tests and non-macro code like main.rs and build.rs. This is why even the9LJ procedural macro ecosystem is largely built around `proc_macro2`, because:MI that ensures the libraries are unit testable and accessible in non-macro:L contexts.; ;M There is a [`From`]-conversion in both directions so returning the output of;PG `quote!` from a procedural macro usually looks like `tokens.into()` or== # Examples== ### Procedural macro=>L The structure of a basic procedural macro is as follows. Refer to the [Syn]>OL crate for further useful guidance on using `quote!` as part of a procedural>O macro.? ?& [Syn]: https://github.com/dtolnay/syn?)? ```? # #[cfg(any())]? extern crate proc_macro;@ # extern crate proc_macro2;@@ # #[cfg(any())]@ use proc_macro::TokenStream;@  # use proc_macro2::TokenStream;@# use quote::quote;AA3 # const IGNORE_TOKENS: &'static str = stringify! {A6 #[proc_macro_derive(HeapSize)]A" # };B= pub fn derive_heap_size(input: TokenStream) -> TokenStream {B@I // Parse the input and figure out what implementation to generate...BL7 # const IGNORE_TOKENS: &'static str = stringify! {C: let name = /* ... */;C let expr = /* ... */;D # };D  #D  # let name = 0;D # let expr = 0;DD let expanded = quote! {D // The generated impl.E", impl heapsize::HeapSize for #name {E/7 fn heap_size_of_children(&self) -> usize {E: #exprF }F }F  };F F4 // Hand the output tokens back to the compiler.F7 TokenStream::from(expanded)G# }G ```GG


GG ### Combining quoted fragmentsG"HK Usually you don't end up constructing an entire final `TokenStream` in oneHNL piece. Different parts may come from different helper functions. The tokensHOC produced by `quote!` themselves implement `ToTokens` and so can beIFI interpolated into later `quote!` invocations to build up a final result.ILJ ```J # use quote::quote;J #J$ let type_definition = quote! {...};J' let methods = quote! {...};KK let tokens = quote! {K #type_definitionK #methodsK };K ```LL


LL ### Constructing identifiersL LK Suppose we have an identifier `ident` which came from somewhere in a macroLNG input and we need to modify it in some way for the macro output. Let'sMJ7 consider prepending the identifier with an underscore.M:NL Simply interpolating the identifier next to an underscore will not have theNOG behavior of concatenating them. The underscore and the identifier willNJ@ continue to be two separate tokens as if you had written `_ x`.OCO ```P( # use proc_macro2::{self as syn, Span};P+ # use quote::quote;P #P7 # let ident = syn::Ident::new("i", Span::call_site());P: #Q // incorrectQ quote! {Q  let mut _#ident = 0;Q }Q # ;Q ```QQK The solution is to build a new identifier token with the correct value. AsQNC this is such a common case, the [`format_ident!`] macro provides aRF+ convenient utility for doing so correctly.S.S ```S" # use proc_macro2::{Ident, Span};S%$ # use quote::{format_ident, quote};S' #T2 # let ident = Ident::new("i", Span::call_site());T5 #T+ let varname = format_ident!("_{}", ident);T. quote! {T  let mut #varname = 0;U }U # ;U ```UUG Alternatively, the APIs provided by Syn and proc-macro2 can be used toUJL directly build the identifier. This is roughly equivalent to the above, butVO0 will not handle `ident` being a raw identifier.V3W ```W( # use proc_macro2::{self as syn, Span};W+ # use quote::quote;W #W7 # let ident = syn::Ident::new("i", Span::call_site());W: #X* let concatenated = format!("_{}", ident);X-< let varname = syn::Ident::new(&concatenated, ident.span());X? quote! {Y  let mut #varname = 0;Y }Y # ;Y ```YY


YY ### Making method callsYZL Let's say our macro requires some type specified in the macro input to haveZOB a constructor called `new`. We have the type in a variable calledZEE `field_type` of type `syn::Type` and want to invoke the constructor.[H[ ```[ # use quote::quote;[ #\ # let field_type = quote!(...);\# #\ // incorrect\ quote! {\ $ let value = #field_type::new();\' }] # ;] ```]]J This works only sometimes. If `field_type` is `String`, the expanded code]MI contains `String::new()` which is fine. But if `field_type` is something]LM like `Vec` then the expanded code is `Vec::new()` which is invalid^PJ syntax. Ordinarily in handwritten Rust we would write `Vec::::new()`_M7 but for macros often the following is more convenient._:` ```` # use quote::quote;` #` # let field_type = quote!(...);`# #` quote! {` & let value = <#field_type>::new();`) }a # ;a ```aa= This expands to `>::new()` which behaves correctly.a@a4 A similar pattern is appropriate for trait methods.a7b ```b # use quote::quote;b #b # let field_type = quote!(...);b# #c quote! {c D let value = <#field_type as core::default::Default>::default();cG }c # ;c ```cc


cd. ### Interpolating text inside of doc commentsd1dG Neither doc comments nor string literals get interpolation behavior indJ quote:e e ```compile_faile quote! {e # /// try to interpolate: #idente& ///e  /// ...e }f ```ff ```compile_failf quote! {f * #[doc = "try to interpolate: #ident"]f- }f ```ff5 Macro calls in a doc attribute are not valid syntax:f8g ```compile_failg quote! {g A #[doc = concat!("try to interpolate: ", stringify!(#ident))]gD }h ```hhH Instead the best way to build doc comments that involve variables is byhK4 formatting the doc string literal outside of quote.h7i ```rusti " # use proc_macro2::{Ident, Span};i% # use quote::quote;i #i$ # const IGNORE: &str = stringify! {j' let msg = format!(...);j # };j #j4 # let ident = Ident::new("var", Span::call_site());j76 # let msg = format!("try to interpolate: {}", ident);k9 quote! {k  #[doc = #msg]k ///k  /// ...k }l # ;l ```ll


ll! ### Indexing into a tuple structl$lK When interpolating indices of a tuple or tuple struct, we need them not tolNM appears suffixed as integer literals by interpolating them as [`syn::Index`]mP instead.m n> [`syn::Index`]: https://docs.rs/syn/1.0/syn/struct.Index.htmlnAn ```compile_failn# let i = 0usize..self.fields.len();n&oJ // expands to 0 + self.0usize.heap_size() + self.1usize.heap_size() + ...oM // which is not valid syntaxo  quote! {p " 0 #( + self.#i.heap_size() )*p% }p ```pp ```p) # use proc_macro2::{Ident, TokenStream};p, # use quote::quote;p #q # mod syn {q/ # use proc_macro2::{Literal, TokenStream};q2- # use quote::{ToTokens, TokenStreamExt};q0 #r # pub struct Index(usize);r" #r# # impl From for Index {r&& # fn from(i: usize) -> Self {r) # Index(i)s # }s # }s  #s # impl ToTokens for Index {s#: # fn to_tokens(&self, tokens: &mut TokenStream) {s=@ # tokens.append(Literal::usize_unsuffixed(self.0));tC # }t # }u  # }u #u # struct Struct {u # fields: Vec,u # }u #u # impl Struct {u) # fn example(&self) -> TokenStream {u,6 let i = (0..self.fields.len()).map(syn::Index::from);v9v@ // expands to 0 + self.0.heap_size() + self.1.heap_size() + ...vC quote! {w " 0 #( + self.#i.heap_size() )*w% }w # }w  # }w ```ww  macro_exportw wx span expr letŒ _ɒʒ̒ crate͒Ғ __privateԒ ݒ Spanߒ span crate __private  TokenStream  new span expr tt tt ēœ# letϓ mutӓ _sדړܓ crateݓ __private  TokenStream  new let _span crate __private  Span span crateŔ quote_each_token_spannedǔ ߔ _s _span tt  _s L Same as `quote!`, but applies a given span to all tokens originating withinyO the macro invocation.zz
zz # Syntaxz zM A span expression of type [`Span`], followed by `=>`, followed by the tokenszPI to quote. The span expression should be brief — use a variable for{LI 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} ```} # use proc_macro2::Span;} # use quote::quote_spanned;} #~3 # const IGNORE_TOKENS: &'static str = stringify! {~6 let span = /* ... */;~ # };~ # 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))& }; ```J The lack of space before the `=>` should look jarring to Rust programmersāMB and this is intentional. The formatting is designed to be visiblyEJ off-balance and draw the eye a particular way, due to the span expression؂MI being evaluated in the context of the procedural macro and the remainingL. tokens being evaluated in the generated code.1
 # Hygiene ĄJ Any interpolated tokens preserve the `Span` information provided by theirȄMM `ToTokens` implementation. Tokens that originate within the `quote_spanned!`P5 invocation are spanned with the given span argument.8
 # Example K The following procedural macro code uses `quote_spanned!` to assert that aÆNM 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͈ ```ш8 # use quote::{quote_spanned, TokenStreamExt, ToTokens};و;( # use proc_macro2::{Span, TokenStream};+ # # struct Type;lj #ډ # impl Type { # fn span(&self) -> Span {" # Span::call_site() # }  # } #Ɋ # impl ToTokens for Type {ϊ8 # fn to_tokens(&self, _tokens: &mut TokenStream) {}; # } # # let ty = Type;% # let call_site = Span::call_site();͋( # let ty_span = ty.span();, let assert_sync = quote_spanned! {ty_span=>/( struct _AssertSync where #ty: Sync;Ɍ+ }; ```K If the assertion fails, the user will see an error like the following. TheN6 input span of their type is highlighted in the error.׍9 ```text N error[E0277]: the trait bound `*const (): std::marker::Sync` is not satisfiedQ --> src/main.rs:10:21 |* 10 | static ref PTR: *const () = &();-W | ^^^^^^^^^ `*const ()` cannot be shared between threads safelyƏZ ```L In this example it is important for the where-clause to be spanned with theOL line/column information of the user's input type so that error messages areO& placed appropriately by the compiler.͑)  macro_export  ɘ  call ident  extra tt tts tt ×ƗƘЗ crateї֗ pounded_var_names_with_contextؗ  call  extra  tts  tts  ǘܖ  macro_exportܖ ږdoc hiddenЙ  call ident  extra tt b1 tt ™ϙÙę͙ř currƙʙ tt˙ Ιҙՙߙ crate pounded_var_with_context   call  extra b1 curr Θ  macro_exportΘ ̘ޘdocޘ hiddenܘ call ident  extra tt b1 tt inner tt ɛ crateʛϛ pounded_var_namesћ  call  extra inner  call ident  extra tt b1 tt inner tt ʜ crate˜М pounded_var_namesҜ  call  extra inner  call ident  extra tt b1 tt inner tt ˝ crate̝ѝ pounded_var_namesӝ  call  extra inner   call ident  extra tt  var identŞ crateƞ˞͞ callΞ ҞӞԞ՞ܞ֞ extraמ ݞߞ var call ident  extra tt b1 tt curr ttޚ  macro_export њdocњԚۚ hidden՚Ϛס has_iter ident var identԡ allow unused_mut let mut var i var quote_into_iter let has_iter has_iter¡ ˡ i͡Ρաğ  macro_export doc hiddenџţ var ident£ letâ varĢȢ matchʢТ varѢԢ nextբ٢ڢܢ Some _x crate __private  RepInterp  _x None breakãܡ  macro_exportܡ ڡdoc hidden tokens ident tts tt  crate quote_tokens_with_context դ֤ަ פ tokensؤ       tts       tts  ƥ     tts  å ťԥ ե ץ ٥ۥܥݥޥ ttsߥ       tts       tts      Ԧ Ʀ¦ ttsæ Ǧ ɦ ˦ ͦ Ϧ Ѧ Ӧߦ ʣ  macro_exportʣ ȣڣdocڣݣ hiddenޣأܧ  tokens identŧ spanƧʧ ident˧ѧҧڧӧ ttsԧק ttا ۧާ crate !quote_tokens_with_context_spanned!   tokens spanŨ      è tts ĨӨ Ԩ ֨ ب ڨ ܨިߨ tts       tts       tts    ө  éĩɩũ ttsƩ ʩ ̩ Ω Щ ҩ  tts        tts          macro_export doc hidden  tokens ident b3 tt  b2 tt  b1 tt «ϫëīͫū currƫʫ tt˫ Ϋ٫ګ۫ܫ a1ݫ߫ tt  a2 tt  a3 tt  crate quote_token_with_context ¬ìĬ tokensŬ̬ b3ͬЬ b2ѬԬ b1լج curr٬ެ a1߬ a2 a3 Ϫ  macro_export ªdocªŪ̪ hiddenƪܪϭխ֭ tokens׭ݭ identޭ span ident b3 tt  b2 tt  b1 tt  curr tt ɮǮ a1®Į ttŮ Ȯˮ̮֮ͮԮή a2ϮѮ ttҮ ծخٮڮۮ a3ܮޮ tt߮  crate quote_token_with_context_spanned ܯ tokens span b3ï b2įǯ b1ȯ˯ curr̯ѯ a1үկ a2֯ٯ a3گݯ    macro_export doc hidden!0 tokensǰ identȰΰ b3ϰѰ ttҰհ b2ְذ ttٰܰ b1ݰ߰ tt  a1 tt a2 tt a3 ttɱ tokens ident b3 tt b2 tt b1 tt inner tt  ñ a3ıƱ ttDZ˱αϱ) useٱݱ crateޱ __private  ext  let has_iter crate __private  ThereIsNoIteratorInRepetitionɲ crateʲϲ pounded_var_namesѲ  quote_bind_into_iter  has_iter inner  let _ crate __private  HasIterator ³ has_iterij̳ loop crate pounded_var_names  quote_bind_next_or_break ӸԸո׸ظڸ۸ܸ innerݸ  crate quote_each_token  tokens inner  if falseܹ breakɹι tokens ident b3 tt b2 tt inner tt   a2 tt a3 ttúĺ tokensź˺ ident̺Һ b3Ӻպ ttֺٺۺݺ޺ߺ inner tt   a1 tt a2 tt a3 ttֻ tokens ident b3 tt b2 tt b1 tt˻Ȼ innerŻ ttƻ ɻͻ sepλѻ ttһ ջػۻܻ/ use crate __private  ext  let mut _i0usize let has_iter crate __private ʼ ThereIsNoIteratorInRepetition̼ crate pounded_var_names  quote_bind_into_iter  has_iter inner  letƽ _ʽ˽ͽ crateνӽ __privateս ޽ HasIterator  has_iter loop crate pounded_var_names ׾ quote_bind_next_or_break ƾǾȾʾ˾;ξվϾ innerо ־ؾ if _i0 crate quote_token  tokens sep _i ÿ1ƿǿտ crateֿۿ quote_each_tokenݿ  tokens inner  if false break tokens ident b3 tt b2 tt inner tt  sep tt  a3 tt tokens ident b3 tt inner tt  sep tt  a2 tt a3 tt tokens ident inner tt    a1 tt a2 tt a3 tt crate quote_token  tokens  tokens ident inner tt  sep tt  a1 tt a2 tt a3 tt tokens ident b3 tt b2 tt b1 tt var ident a2 tt a3 tt crate ToTokens to_tokens   var  mut tokens tokens ident b3 tt b2 tt var ident a1 tt a2 tt a3 tt tokens ident b3 tt b2 tt b1 tt curr tt a1 tt a2 tt a3 tt crate quote_token  tokens curr>  macro_export doc hidden0! tokens ident span ident b3 tt b2 tt b1 tt  a1 tt a2 tt a3 tt tokens ident span ident b3 tt b2 tt b1 tt inner tt   a3 tt) use crate __private  ext  let has_iter crate __private  ThereIsNoIteratorInRepetition crate pounded_var_names  quote_bind_into_iter  has_iter inner  let _ crate __private  HasIterator  has_iter loop crate pounded_var_names  quote_bind_next_or_break  inner  crate quote_each_token_spanned  tokens span inner  if false break tokens ident span ident b3 tt b2 tt inner tt   a2 tt a3 tt tokens ident span ident b3 tt inner tt   a1 tt a2 tt a3 tt tokens ident span ident b3 tt b2 tt b1 tt inner tt  sep tt / use crate __private  ext  let mut _i0usize let has_iter crate __private  ThereIsNoIteratorInRepetition crate pounded_var_names  quote_bind_into_iter  has_iter inner  let _ crate __private  HasIterator  has_iter loop crate pounded_var_names  quote_bind_next_or_break  inner  if _i0 crate quote_token_spanned  tokens span sep _i 1 crate quote_each_token_spanned  tokens span inner  if false break tokens ident span ident b3 tt b2 tt inner tt  sep tt  a3 tt tokens ident span ident b3 tt inner tt  sep tt  a2 tt a3 tt tokens ident span ident inner tt    a1 tt a2 tt a3 tt crate quote_token_spanned  tokens span  tokens ident span ident inner tt  sep tt  a1 tt a2 tt a3 tt! tokens ident span ident b3 tt b2 tt b1 tt var ident a2 tt a3 tt crate ToTokens to_tokens   var  mut tokens tokens ident span ident b3 tt b2 tt var ident a1 tt a2 tt a3 tt! tokens ident span ident b3 tt b2 tt b1 tt curr tt a1 tt a2 tt a3 tt crate quote_token_spanned  tokens span currD  macro_export doc hidden  tokens ident inner tt  crate __private  push_group   mut tokens crate __private  Delimiter  Parenthesis  crate quote  inner  tokens ident inner tt  crate __private  push_group   mut tokens crate __private  Delimiter  Bracket crate quote  inner  tokens ident inner tt  crate __private  push_group   mut tokens crate __private  Delimiter  Brace crate quote  inner  tokens ident  crate __private  push_add  mut tokens tokens ident  crate __private  push_add_eq   mut tokens tokens ident  crate __private  push_and  mut tokens tokens ident crate __private  push_and_and   mut tokens tokens ident  crate __private  push_and_eq   mut tokens tokens ident  crate __private  push_at  mut tokens tokens ident  crate __private  push_bang   mut tokens tokens ident  crate __private  push_caret   mut tokens tokens ident  crate __private  push_caret_eq   mut tokens tokens ident crate __private  push_colon   mut tokens tokens ident crate __private  push_colon2   mut tokens tokens ident crate __private  push_comma   mut tokens tokens ident  crate __private  push_div  mut tokens tokens ident  crate __private  push_div_eq   mut tokens tokens ident crate __private  push_dot  mut tokens tokens ident crate __private  push_dot2   mut tokens tokens ident crate __private  push_dot3   mut tokens tokens ident crate __private  push_dot_dot_eq  mut tokens tokens ident crate __private  push_eq  mut tokens tokens ident crate __private  push_eq_eq   mut tokens tokens ident crate __private  push_ge  mut tokens tokens ident crate __private  push_gt  mut tokens tokens ident crate __private  push_le  mut tokens tokens ident crate __private  push_lt  mut tokens tokens ident  crate __private  push_mul_eq   mut tokens tokens ident crate __private  push_ne  mut tokens tokens ident  crate __private  push_or  mut tokens tokens ident  crate __private  push_or_eq   mut tokens tokens ident crate __private  push_or_or   mut tokens tokens ident crate __private  push_pound   mut tokens tokens ident crate __private  push_question   mut tokens tokens ident crate __private  push_rarrow   mut tokens tokens ident crate __private  push_larrow   mut tokens tokens ident  crate __private  push_rem  mut tokens tokens ident  crate __private  push_rem_eq   mut tokens tokens ident crate __private  push_fat_arrow  mut tokens tokens ident crate __private  push_semi   mut tokens tokens ident  crate __private  push_shl  mut tokens tokens ident  crate __private  push_shl_eq   mut tokens tokens ident  crate __private  push_shr  mut tokens tokens ident À crateĀɀ __privateˀ Ԁ push_shr_eqր   mut tokens tokens ident ́ crate __private  push_star Ł  mut tokensƁ́ԁՁ tokensց܁ ident݁  crate __private  push_sub  mut tokens tokens ident ʂ crate˂Ђ __private҂ ۂ push_sub_eq݂   mut tokens tokens ident ident ident crate __private  push_ident ˃ ̃ mut̓у tokens҃؃ stringifyڃ  ident tokens ident other tt crate __private  parseۄ  mut tokensDŽ stringifyɄ ҄ӄڄԄ otherՄ܄q%  macro_export doc hidden ʵڅ  tokens ident span… identÅɅم˅̅օͅ inner΅Ӆ ttԅ ׅ܅߅ crate __private  push_group_spanned  mut tokens spanɆ crateʆφ __privateц چ Delimiter܆  Parenthesis  crate quote_spanned  span inner Ç ć tokensҡ idenṫ҇ spanӇׇ ident؇އ inner tt ̉ crate __private  push_group_spannedʼn  mut tokensˈ span̈Јވ crate߈ __private  Delimiter  Bracket crate quote_spanned  span inner Ɖ͉ԉ Չ tokens։܉ ident݉ span ident inner tt ۋ crate __private  push_group_spannedԋ Š mutÊNJ tokensȊΊ܊ span݊ crate __private  Delimiter  Brace crate quote_spanned ɋ spanNj inner‹ ȋʋՋ܋  tokens ident span ident ̌ crate __private  push_add_spannedŌ  mut tokens spanƌ͌Ԍ Ռ tokens֌܌ ident݌ span ident  crate __private  push_add_eq_spanned  mut tokens spanɍ ʍ tokensˍэ identҍ؍ spanٍݍ identލ  crate __private  push_and_spanned  mut tokens span׎  tokensŽ identÎɎ spanʎΎ identώՎَ܎ crate __private  push_and_and_spanned  mut tokens span͏  tokens ident spanď identŏ ˏϏҏ܏ crateݏ __private  push_and_eq_spanned  mut tokens span  tokens ident span ident ÐƐА crateѐ֐ __privateؐ  push_at_spanned  mut tokens span  tokens ident span ident  crateƑ __privateȑ ё push_bang_spannedӑ  mut tokens span  tokens ident span ident  crate __private Ò push_caret_spannedŒג ؒ mutْݒ tokensޒ span  tokens ident span ident  crate __private  push_caret_eq_spannedΓ ϓ mutГԓ tokensՓۓݓ spanޓ  tokens ident span identܔ crate __private  push_colon_spannedՔ ” mutÔǔ tokensȔΔД spanє֔ݔ  tokens ident span identѕ crate __private  push_colon2_spannedʕ  mut tokensÕŕ spanƕ˕ҕٕ ڕ tokensە ident span identĖ crate __private  push_comma_spanned  mut tokens spanŖ̖ ͖ tokensΖԖ identՖۖ spanܖ ident  crate __private  push_div_spanned  mut tokens spanڗ  tokensŗ identƗ̗ span͗ї identҗ ؗܗߗ crate __private  push_div_eq_spanned  mut tokens spanΘ  tokens ident span˜Ƙ identǘ͘ИӘݘ crateޘ __private  push_dot_spanned  mut tokens span  tokens ident span ident™řϙ crateЙՙ __privateי  push_dot2_spanned  mut tokens span  tokens ident span identÚ crateĚɚ __private˚ Ԛ push_dot3_spanned֚  mut tokens span  tokens ident span ident crate __private ț push_dot_dot_eq_spannedʛ  mut tokens span  tokens ident span ident crate __private  push_eq_spannedœќ Ҝ mutӜל tokens؜ޜ span  tokens ident span ident crate __private  push_eq_eq_spannedŝٝ Ɲ mutǝ˝ tokens̝ҝԝ span՝ڝ  tokens ident span identў crate __private  push_ge_spannedʞ  mut tokensÞŞ spanƞ˞Ҟٞ ڞ tokens۞ ident span ident crate __private  push_gt_spanned  mut tokens spanŸɟ ʟ tokens˟џ identҟ؟ spanٟݟ identޟ crate __private  push_le_spanned  mut tokens span֠  tokens  identàɠ spanʠΠ identϠՠؠ۠ crate __private  push_lt_spanned  mut tokens spanǡ  tokens ident span ident šɡ̡֡ crateסܡ __privateޡ  push_mul_eq_spanned  mut tokens span  tokens ident span identˢ crate̢Ѣ __privateӢ ܢ push_ne_spannedޢ  mut tokens span  tokens ident span ident  crate __privateã ̣ push_or_spannedΣݣ ޣ mutߣ tokens span  tokens ident span ident  crate __private  push_or_eq_spannedѤ Ҥ mutӤפ tokensؤޤ span  tokens ident span ident crate __private  push_or_or_spannedť٥ ƥ mutǥ˥ tokens̥ҥԥ spanեڥ  tokens ident span identӦ crate __private  push_pound_spanned̦  mut tokensŦǦ spanȦͦԦۦ ܦ tokensݦ ident span identɧ crate __private  push_question_spanned§  mut tokens spançʧѧ ҧ tokensӧ٧ identڧ span ident crate __private  push_rarrow_spanned  mut tokens spanƨ Ǩ tokensȨΨ identϨը span֨ڨ identۨ crate __private  push_larrow_spanned  mut tokens spanש  tokensé identĩʩ span˩ϩ identЩ ֩٩ܩ crate __private  push_rem_spanned  mut tokens spanɪ  tokens ident span ident Ǫ˪Ϊت crate٪ު __private  push_rem_eq_spanned  mut tokens span  tokens ident span identëͫ crateΫӫ __privateի ޫ push_fat_arrow_spanned  mut tokens span  tokens ident span identĬ crateŬʬ __private̬ լ push_semi_spanned׬  mut tokens span  tokens ident span ident  crate __private ȭ push_shl_spannedʭڭ ۭ mutܭ tokens span  tokens ident span ident  crate __private  push_shl_eq_spannedЮ Ѯ mutҮ֮ tokens׮ݮ߮ span  tokens ident span ident ݯ crate __private  push_shr_spanned¯֯ ï mutįȯ tokensɯϯѯ spanүׯޯ  tokens ident span ident Ӱ crate __private  push_shr_eq_spanned̰  mut tokensŰǰ spanȰͰ԰۰ ܰ tokensݰ ident span ident ű crate __private  push_star_spanned  mut tokens spanƱͱ α tokensϱձ identֱܱ spanݱ ident  crate __private  push_sub_spanned  mut tokens span۲  tokensƲ identDzͲ spanβҲ identӲ ٲݲ crate __private  push_sub_eq_spanned  mut tokens spanڳ  tokens ident³ spanódz identȳγ identϳԳ identճܳ߳ crate __private  push_ident_spanned  mut tokens span stringify  identŴ ƴ tokensǴʹ identδԴ spanմٴ identڴ other ttǵ crate __private  parse_spanned   mut tokens span stringify  otherȵ0  macro_export doc hiddenn<PPQJ RR VUZ b Vj r  XNXz Z `  i  pppp1iqqrysttu0vwwwynzzz3{&{{V}doCNASFNAÐϒ’/Ŕ*Й E6o(dڜV͝ F6a̢ AhܣAwܤU(ܨMA3&uYӯ[۱bڳͳHͶ۸θFһ\PC;V|9TG#(p^Q 3phy{PΞeU;p$[K;|4t,l$dR@|.j6!k& LX%d1p=|IUa&m2y> JV#b/n;zG S_$k0w< H0   u p<PPQK RS XU[ c Vk s XPX{ Z `  i  pppp 1kqqr{sttu2vwwwypzzz5{'{{X}fqEPBUGPBŐђÒ1ǔ ,ҙ GÚ8q*fܜXϝ H<g΢ CjޣCyޤW*ިOC 5'w[ԯ]ܱdܳγJ!϶ݸϸHԻ^RDϾX~; VH %*r`R 3shy{SўľeW=r&]M=~6v.n&fTB~0l<"l(NZ'f3r?~KWc(o4{@ LX%d1p=|IUa&m2y> J6   v q<PPQL RT YU\ d Vl t XSX| Z `  i  pppp 1nqqr|sttu5vwwwyszzz8{({{[}irFSCXHSCȐԒĒ4ʔ#/ՙJƚ;t-iߜ[ҝK=hѢFmF|X+ߨPD 9(x\կaݱhϳN%ӶиL#ػ _UEҾ[<!YI#(-sdS3thy{TҞžeZ@u)`P @9y1q)iW E3o=#m+O[(g4s@LXd)p5|AMY&e2q>}JVb'n3z? K7   w PP-RTUWXZXZ`icppppPx1pqsttu;vwx!yizzz.{{a}/Eq*InjNŎIΐʒ:)%˙@1{#oa؝QTע<sףLr B .jbۯgnճTٶָR޻eKؾa>dO $).3e"YcvyX|s`'?2>!f$P 6{fVFw?o7g/_"M;)u)s!-5qA}MYe'q3}?KW'c3o?{K Wc%o1{= IU%a1m } w<SPPQR`UVXZXZ`ippppm1sqqrstu;vwx!yzzzz?{{a}nx*LZnj_ŎZΐے:є)6ܙP͚B{3o#a؝Q"nעMsL_2WJ?bgnT,ٶR*޻ e\ؾaB'_ $).3y"j3j{hay{! [ٞ̾e$a G{0f VF?7x/p"^L:uCs1 U"a.m:yF R^#j/v;GS _,k8wD P\!h-t9EQ  O PSQXppppsqrtwzz?{n+4Z_Zےє6ܙP͚B3#|"nM?,* \_UyjaG0 xp^L:CsP  3RTVWX`XZaip s tt uAvw x'y|zz{A{{g}Kw0[͌`ˎ[Ԑܒ@Ҕ/7ݙQΚ C4u$gޝW"CnݢQyR?mtZ0߶X."k`޾gB'a&*/49(l*cI2l"\LE=z5r(`N<{Ey3sU"a.m:yF R^#j/v;GS _,k8wD P\!h-t9EQ=R   @RTVWiXZai(st1uRvx8yz{{x}S8݌ێH7yk[!W ˰ҲtpG7,/38=B-%/qaQJB:- <Z'f3r?~KWc(o4{@ LX%d1p=|IUa&m2y> JVF "XptwzS{gll۔AޙVϚD7)T B97codJ4$|tbP>vU  HRRT VW{X[aiUs&tAu_v*xEyz{{}eBZI.}m's.ɣd*1ïٴ׹ ~0V9<@EJO=<" sc[SK9' JF'c3o?{K Wc%o1{= IU%a1m=yI Ua#m/y; GS#_P WQTRT#VW)X|X[aipprVs'ttCuavw,xGyzz{Z{{}7fCnss[JH—.]ԚIě>0}#m'FsĢ.`|ɣd+2Jhůl۴JjٹH"+k0VD9j=AFKP{=w2<i"O :*sc[SKz9h'VD K|G~'c3o?{K Wc%o1{= IU%a1m=yI Ua#m/y; GS#_Q]   mQoRTKVW/XX[Gaipprds5ttQuovw:xUyzz"{z{{}MtKiX[З<cښ-OʛD6){-Oyʢ7fң m&,:A_$qί?F"ul&(sj+@$<bELPUZ_LKo1U@ 0 rj bZHn6\$J`V3o?{K Wc%o1{= IU%a1m=yI Ua#m/y; GS#_/kZ$r  - QprO.WXZ[a'j9tUusv>xYy{}` m\ԗ?F +0QUZ_dp[_ Z`wibptvwxhz<}.1@E@ʙ%ڱ̳͸B t ?Rf~<Wm/EYt6Lb~#FZn'@Xl " ; S ~  ( < P d x  % < R p  . B X v   8 L j 2Pd>\pOdx*EYu&;Pe=Ri+B\1I`z"7Of(<Sm5\v/CZt'@Tk 5J_t &F[pGpS*>Wk  8 L e y !%!9!X!l!!!!!!"$"8"W"k""""""###7#V#j#######$0$D$[$x$$$$%'%H%q%%%%%&=&\&&&&&'5']'|''''(-(J(o((((()G)c))))) *)*M*i*****+1+U+q+++++!,@,g,,,,,-C-`-----.9._.|..../+/K/s/////0A0j00000001121F1Z1n111111112"262J2^2r222222223&3:3N3b3v333333344*4>4R4f4z4444444 5!565K5`5u55555556626G6\6q666666677.7E7\7BVn ,G]| 5Idz&<Rn6J^r0H\r + C n   , @ T h |   , B ` t  2 H f z ( < Z x "@Tr.L`t ?Th5Ie+@Uy-BY2Lq !9Pj'?Vp,C]q%Lf3Jdx0D[t%:Od6K`u 7` Cp.G[t ( < U i !)!H!\!{!!!!!!"("G"["z""""""#'#F#Z#y######$ $4$K$h$$$$$%8%a%%%%%&-&L&s&&&&'%'M'l'''''(:(_(}(((( )7)S)w)))))*=*Y*}****+!+E+a+++++,0,W,y,,,, -3-P-u---- .).O.l...../;/c///// 010Z0o00000001"161J1^1r111111112&2:2N2b2v222222233*3>3R3f3z333333344.4B4V4j4~44444445&5;5P5e5z5555555 6"676L6a6v6666666 7757L7c7    !۶! ۶  )          &    77                           3              ۶                    ۶                  ED) ۶)   ) )   )   *)    *  )       *   * !۶ ۶* )    *                ) )  )  ) * ٶ*ٶ*ٶ  ٶ)  ) )  )  ) )  ) ) )   )   )   )    ) *ٶ   ''!۶!۶             ! ۶                                  ?6, ,    ,,   ,,,  , , ,   ) ,,/gnl% #( ( (( ( ( ( ( prtvi- x{z,,:9% ---% ---,,'''                               crate?$crate,1crate&+crate %cratecratecratecrate crateL$cratecrate@$crate-2crate',crate!&crate cratecratecrate cratecrateA$crate=99core.3crate(-crate"'crate!cratecratecrate crate: coreB$crate<::core/4crate).crate#(crate"cratecratecrate crate9 coreC$crate4;alloc05crate*/crate$)crate#cratecratecrate crate crateD$crate><<core16crate+0crate%*crate$cratecratecrate crate cratecrateE$crateClone36;core_intrinsicsderive_clone_copy = push_punct5 1 push_punct/ + push_punct5 % push_punct-  push_punct3  push_punct5  push_punct/   push_punct5 D$crate::__export::format_args4I(;̌ fmt_internals> push_punct9 , push_punct5 & push_punct)   push_punct-  push_punct+  push_punct9  push_punct+ Eident_fragment_display1??Copy=:core_intrinsicsderive_clone_copy9 push_punct/ - push_punct+ ' push_punct3 ! push_punct)  push_punct1  push_punct/ L push_punct7  ident_fragment_display8?@Clone6;core_intrinsicsderive_clone_copy :formatI4 push_punct9 . push_punct5 ( push_punct3 " push_punct-  push_punct5  push_punct5  push_punct5   primitivejA push_punct- / push_punct; ) push_punct/ # push_punct)  push_punctA  push_punct/  push_punct)  BCopy3=:core_intrinsicsderive_clone_copy< push_punct+ 0 push_punct- * push_punct5 $ push_punct5  push_punct)  push_punct+  push_punct-   push_punct+ Cderivederiveŋ93 @%    '       t  x  h }l  \ q`  P eT  D YH  8 =  - L0    3  KI   \#v j !N B &  m}  EU  [-  Y3 c Y r5E  IR/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/quote-1.0.10/src/lib.rsV $5cV}l̵ ko O+!KQQN&OMKPQP.GQ   PPONM-17": TM&. < >8  %K# = $.$I"JGY EOIPQ &*FGQK##OGI NI7iK1 MEQMMMNMQK-D PP * !$7# AM;  #0; 8$#OPGM( !OK;PKD,; OG/&(6/ KP4,;.@ PFI$ (NMQN;$ *A8$ H2K  '  .9 EL8 &( 8:  %OQ B'N! &-31#'* $>D -:D &  . .> H (;>;>;>4)4$&J4'(':  %3###%### (1A###%### )// V 1// d (GN'IS:JLLNM. A@S; OOO'IS:S4; PPH7)PK:MN-0SZ'IS:JLLNM. A@SI [[['IS:SBI \\T77\W:YZ;+'7( +'3( +'1( 36376245856536344:25222262255586636943636436&I#D#7/78 7/38 7/18 'B(E'B(F(E'A'C'D(G'D(E'D'B(E'B(C)C)I'A(D(A'A(A'A(E(A'A(D(D'D'G(E(E'B(E(H'C(B)E(B)E'C'B(E2X/S0011Ǡ{R/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/quote-1.0.10/src/ext.rs%mX{$͵p͵+CQ,/<& / 8( <3 !6 ) /N 9 /IC< && /) # 9 9$# < #" "#ͅГU/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/quote-1.0.10/src/format.rs&dwE q6G0  PO"!.440+ PCN&N$ PL*Q=+J7 4."8 L +3%&?. /"/ 0#3#3#%) #%)!%?6CD%K=DK?h /<=?` ؙܤȷχ>]/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/quote-1.0.10/src/ident_fragment.rsr d"\hâV :O05:3B% 7%*;%;%*;%%;#"+* %)%;QO& (G/ 2ڃȓŁX/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/quote-1.0.10/src/to_tokens.rsCkrrgOA!1N96I I/, !# 3=OB/-%=OB. 44$84$C4$14$04$+4%! 4.4)' #@:  4249<4%4%4%4%1" 1.0 硊ğ͚V/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/quote-1.0.10/src/runtime.rsFEg=t*`rl6 3N1[&<I<7*7OONO-[7M16 .CK%MH1* @$ 7N*%?T@< X@< 3(@# 6(@# ;,@# N@% OH QOI.%./.4"X1.2CFC. 7OJ* 9KOJ*( ,01? @@"" :1?? @@""@"" D1??? @@""@""@"" ,6,86*.0:060,6,26B*4.*.*6.*440666,6<.0:0:.,6NELKF95'FPMPJ*0'U 9P=LO:1)B;'M;$S;'S;'O;%¡̛̭ʼnV/home/seth/.cargo/registry/src/github.com-1ecc6299db9ec823/quote-1.0.10/src/spanned.rs>^YN5Q*&+--8KJG+, $*.+⇽ֆ̠뗤quotex86_64-unknown-linux-gnu-055b4b091be8b4cc髙;[E(w q     5