Files
boc/aamos-command-center/target/release/deps/libtempfile-668b5acbd3318d37.rlib
T

907 lines
677 KiB
Plaintext
Raw Normal View History

!<arch>
/ 0 0 0 0 45218 `
äÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmRmR ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^_ZN111_$LT$core..result..Result$LT$T$C$std..io..error..Error$GT$$u20$as$u20$tempfile..error..IoResultExt$LT$T$GT$$GT$13with_err_path17h1c95a495bf5c85bcE_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h06e11545847e470cE_ZN111_$LT$core..result..Result$LT$T$C$std..io..error..Error$GT$$u20$as$u20$tempfile..error..IoResultExt$LT$T$GT$$GT$13with_err_path17h29c50e54a04956a8E_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h0ac721e6c1303fe6E_ZN111_$LT$core..result..Result$LT$T$C$std..io..error..Error$GT$$u20$as$u20$tempfile..error..IoResultExt$LT$T$GT$$GT$13with_err_path17h6b1dcc4f6d575515E_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h6239801dd171c290E_ZN111_$LT$core..result..Result$LT$T$C$std..io..error..Error$GT$$u20$as$u20$tempfile..error..IoResultExt$LT$T$GT$$GT$13with_err_path17h76e979a96cb430e9E_ZN4core6result19Result$LT$T$C$E$GT$7map_err17he42d925459569638E_ZN111_$LT$core..result..Result$LT$T$C$std..io..error..Error$GT$$u20$as$u20$tempfile..error..IoResultExt$LT$T$GT$$GT$13with_err_path17h945e1ddfb085475eE_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h94a2f79e54d24258E_ZN111_$LT$core..result..Result$LT$T$C$std..io..error..Error$GT$$u20$as$u20$tempfile..error..IoResultExt$LT$T$GT$$GT$13with_err_path17h9c86001a207ef35dE_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h8617b4eb2d800861E_ZN111_$LT$core..result..Result$LT$T$C$std..io..error..Error$GT$$u20$as$u20$tempfile..error..IoResultExt$LT$T$GT$$GT$13with_err_path17ha5e2be3742ab0d5fE_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hcfb76c3c600fa0e6E_ZN111_$LT$core..result..Result$LT$T$C$std..io..error..Error$GT$$u20$as$u20$tempfile..error..IoResultExt$LT$T$GT$$GT$13with_err_path17habfe0ef1373f2ae0E_ZN4core6result19Result$LT$T$C$E$GT$7map_err17hd80a4fc49841a838E_ZN111_$LT$core..result..Result$LT$T$C$std..io..error..Error$GT$$u20$as$u20$tempfile..error..IoResultExt$LT$T$GT$$GT$13with_err_path17hb280d4c190bd53aaE_ZN4core6result19Result$LT$T$C$E$GT$7map_err17h3c026e73e0470ca0E_ZN111_$LT$core..result..Result$LT$T$C$std..io..error..Error$GT$$u20$as$u20$tempfile..error..IoResultExt$LT$T$GT$$GT$13with_err_path17hbcccf07843f48dffE_ZN4core6result19Result$LT$T$C$E$GT$7map
tempfile-668b5acbd3318d37.tempfile.ee70a5c696168f2-cgu.0.rcgu.o/
tempfile-668b5acbd3318d37.tempfile.ee70a5c696168f2-cgu.1.rcgu.o/
tempfile-668b5acbd3318d37.tempfile.ee70a5c696168f2-cgu.2.rcgu.o/
tempfile-668b5acbd3318d37.tempfile.ee70a5c696168f2-cgu.3.rcgu.o/
lib.rmeta/ 0 0 0 644 241000 `
ELF·è«@@GNUÀrust
#rustc 1.96.0 (ac68faa20 2026-05-25)ÁÀ뉊]!ÜÛê(¹Þ—šên-5be7b69c3ff7b5b8ÁíàÄTËŸ ÜJîÄ)'ß\¥!-3d1337db07d0b3aeÁ¤²XctÔ'ÐÓ©z¨ɽÓ-a4945860e1c53b00Á¤°ð ¾ä-±($²ï=©Ã-7e98a21bfd32b0edÁòÖÀH•‘PIÓHã#£-055f30b747f859b6Árustc_std_workspace_coreÁ­Cçß^ò½èÝ$­Çÿ+Cé-c4878ee60b2242c9ÁŸÃï+Ñ]ŠqB<ÏïW#-8dd1dd90e70d0b6aÁ miniz_oxideÁ€š»J(P>àö÷g\K-1eb618da2918ab7fÁadler2ÁÆ;+Þ®5¥Ìýݰ¦ÛLˆ-f7919172d268e069Á hashbrownÁPäV9ÒÆèÜ"ÊÖVŽ\-0fc2184a5da6723aÁrustc_std_workspace_allocÁs&ØòØy¯s•bæ!‰ýŠ-97e4bf30be240674Á
std_detectÁhŠBîÙºÌI®ËÅš-9dbbf8346ba7ac8bÁrustc_demangleÁûë9´Ç×@Œ’ùXFº-f33013f239bf9f14Ácfg_ifÁÜLhž§Œaã¯>­-0a71c8f33a838301Á addr2lineÁ׎Þ!]8V$É@@-e618e6be60e87ba2ÁgimliÁ¸
°µ~Î1‹Ñt ðÁ€w-1f7768a68858f670ÁobjectÁ
áPÃ?­À¶¼QHJ¥-914cd6a4dbe590d1ÁmemchrÁ›º«8Ór­2Ù $¨ûib-cf21ca6f2bb15dcdÁë
‹ás«LÖ€îâƒ×ɯŒ-ee6f3747e38367f0ÁrustixÁDÊuU/ùy5²÷ô”-c1e7f36ca7ddee62Á
linux_raw_sysÁ–î>«Z{ Ž®ž%|-42d3d9ff2faae2c3ÁbitflagsÁ+«4<¥?Ý㉧ ¾ÉöÄ+-6ce4be5c3479e6ecÁ once_cellÁ†”Ìly4yíEÞ{ {-dbcb3221bc930737ÁfastrandÁ9×ù ºB¥*‰-e258a0f2628218daÁ getrandomÁØ 5Ôò¸eŒœÀ×-174897d3344759d0Á®a“
n@gä~&[µT1k-19b6a7ba2a83a898ÁŸ˜6v*°a,7Fú#-4d84f71ef282d676Á ¥Ó9ºLú$@4?[AsFdÁ$ÝúwasiÁ”¶[AsRawFdÁ<ãúú
[
BorrowedFdÁTìúú
;=[RawFdÁ,øúú
TV[AsHandleÁDºâ<•[ AsRawHandleÁ\Äâ [BorrowedHandleÁtÑâ=?[ RawHandleÁLáâWYwcreateÁ4ŒúlinuxÁœî¬íü
tempdir_inÁTGÓ5ü tempfile_inÁ\SÓüBuilderÁ<`Ó57À NUM_RETRIESÁNUM_RAND_CHARSÁdirÁ            
   tempdirÁ ñ ¡ TempDirÁõ
disable_cleanupÁ æ new_inÁ ¡ with_prefixÁ"¤ with_suffixÁ$¤with_suffix_inÁ&¤&¡with_prefix_inÁ)¤)¡õ
 into_pathÁkeepÁúcloseÁ0  2É 4× 6ã Ê  impÁ9ú:::::Ê ???? ? 9errorÁFFFFFFL×FNsourceÁF IoResultExtÁP¥P
with_err_pathÁRR¡FU¥UWW¡W Ì[[[[[[[[[[ [
[ [ [
[[[[[[[[[[[[[ˆvplatformÁwwwwwwwwww w
w w w create_namedÁ wcreate_unlinkedÁwÊ  w create_unixÁ wreopenÁwpersistÁNOSYSÁw¾v[tempfileÁ[
¡¡[£÷[¥÷[§×[©÷[TempPathÁ«õ
«ú[®Ð¯ ®±¡®persist_noclobberÁ³¡®¾®ú® from_pathÁ·impl Into<PathBuf>Á®
try_from_pathÁ¹¼®æ [¼×[¾ã[ÀåÀ´[ÃÉ[ ÅÉ[
NamedTempFileÁÇÇõ
ÇÌ[
ËË×[ ÎÎÉ[ PersistErrorÁÑÑÈÑÌ[ ÕÕ×[
ØØ÷[ÛÛ÷[ÞÞ×[áá÷[äæ äæ¡äÈè¤äáê¤ê¡ä¯í¤äï¤ï¡[òòõ
òÐòö¡òúø¡ò¾òúòas_fileÁò as_file_mutÁò into_fileÁòinto_temp_pathÁò
into_partsÁò
from_partsÁ[ƒ [readÁ 
read_vectoredÁ  read_to_endÁ read_to_stringÁ 
read_exactÁ [ä õ  §˜ š [œœwriteÁž œflushÁ  œwrite_vectoredÁ¢ œ write_allÁ¤ œï¦ [¨ª© ¨¼« ¨Î­ ¨é¯ ¨ï± [³³seekÁµ [·Ý¸ [ººas_fdÁ[½½ as_raw_fdÁ[œÀ À spooledÁÃÃÃÃÃÃÃÃÃà Ã
à à Ãspooled_tempfileÁÃspooled_tempfile_inÁÒ¡Ãcursor_to_tempfileÁÃÕæ Õ×¡Õ is_rolledÁÕrollÁÕset_lenÁÕ
into_innerÁÕüÃÞäÞõÞÞ§ÞÂÃäªäÎä¼ÃèÝutilÁêêêêêêêêêê êtmpnameÁõ õ ê
create_helperÁø£ø$impl FnMut(PathBuf) -> io::Result<R>Áø üüüüüüDEFAULT_TEMPDIRÁüoverride_temp_dirÁƒ ütemp_dirÁ  
  
>'aÁ'bÁæ prefixÁ¤suffixÁŸ¤
rand_bytesÁappendÁ permissionsÁú¾ë
§¡§ Éñ «¡« makeÁ®®£make_inÁ±±£±¡± F PathErrorÁõ
errÁF¹×[PathPersistErrorÁ»È»õ
[¾×à SpooledDataÁÀInMemoryÁÁ
ÁˆÀOnDiskÁÄ
ĈÃÇ×ÃSpooledTempFileÁÉmax_sizeÁÉÉinnerÁÃÍ׿ ©
Ð&Ð&Ð
random_lenÁÐ&г&ÐÛ&Ðé&ÐúÙ&Ù&Ù×Ý&Ý&݃á&á&áÖå&å&è&è&è,
/
3
5
5
5
7
8
?
M
M
M
O



Š






ž
¨
¨
¨
ª

½
½
½
¿
Â
Ä
Æ
Í
Í
Í
Ð
×
×
×
à
à
à
ã
ô
û
ü
ý
ƒ



















˜
˜
š
š
ž
ž
 
¢
¢
¢
¤
¤
¦
¦
¨
©
©
«
­
­
­
¯
¯
±
±
µ
·
¸
¼
¿
À
À
Ô
Ô
Ù
Ú
Û
ß
ß
à
à
à
á
á
â
â
ã
ã
å
å
æ
æ
æ
ç
é
õ
õ
õ
ø
ø
ø
ƒ



Ÿ
¡
¢
£
¤
¥
¦
§
ª
«
®
®
±
±
º
º
º
¿
¿
¿
È
È
È
Î
Î
Î
Ü
Ü
Ü
à
ä
ë
ë
Pàåõ
 ú dØFœ ;†¿…0…0PathÁ†0÷)ß-bªŸðcÂ^¿c¬3Œ"¬3¿c(·õ
F¸¦(FåçXSûhÄc­4¾­4PÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
¥ßßErrorÁà ¬
ÑøÿËO ŸÍ5¿c»»¼(¼È½õ
€è¿«(œéÓ56é««¹¬õ
[­ú[‹Ê€í¨W6Äc6¾6¿cØ6Œ"Ø6é!Ø6àØ6à3àØ6ˆˆOsStrÁ÷)ë//˜þÑ/ü¿cÇǾÉõ
[ÊÌ[sÅ€ÝZaZà–8à3¿cÑÑÓÈÔÌØ"ÈþŒLÿÎ8éÓ5è8é–8è8Äcè8¾è8à –8à  8ÇǾÉõ
[ÊÌ[sÅ€ÝZaZFileÁ÷)õýmï˜"ù.»Ÿ!8Ÿ!Þ9©!8©!Þ9,8«+–8¿cÀÁƒ)ÈÄÅ )ƈëÇV=ùÿ‹&¿cÉÉÈ)Êß)ÃËÃÌ÷)Ã9hxœà à;Ÿ!à;©!à;¿cÐЩ
Ó­*Ô&Õ³&ÖÛ&×é&ØúÇLñÂRŠy&&ØË<Ë<ÐìË<µßË<Ë<³ÐЩ
Ó­*Ô&Õ³&ÖÛ&×é&ØúÇLñÂRŠy882ëūÎÇ4¹¾»¼«ËÇÕÑÇÀÍÉÙÐ6¾«L§»ÞÑN©»áÑUÖ¿£ß¥«ØßÛÇÀ«Ç
ÞɜǨ
äɳǷ
èɺǽÇÝÐáÐåÐèÐÐàŸ¿c Œ"=Äc ¾Péé!à Ÿ!©!,«+ØÐìµß³65536Á¤¿|¿
¡Ï'Õüø]Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
¬3Ó5œ¥šBš ~•BÃtÏ?
(dÏ?
œFJé?
ôÏ?TÞ?
«šBD|Þ?ó?üˆ?k ò? 2ÍBœ±?šB¦? ÐЩ
Ó­*Ô&Õ³&ÖÛ&×é&ØúÇLñÂRŠyl×EtšB&Ãâ‰D ÙD/šBìtÇFdÇF‰D<ÝFôÇF4ÖF
¤[6|ÖF5üÇF(<æF
ª`LæF ôFõFü÷E~"ÍBœ©FßG4›FÕEÉ ×EÓ”I×E ßGý&7e‰DDÕGšHÒßGªßG¯tÇMdÇM‰D<ÝMôÇM4ÖM
ŸßGX3|ÖM2üÇM(<æMšHVLæM ôMõMü÷L~$ÍBœ©MßG4›MÕE¿”IÆ”I×E®Ií³&1_‰D4¼JšHÅßG¤ßG© ôƒU 
 tƒUdƒU‰D<™Ub4U¼JL'|Uˆ­U 
üƒU.T¢U
«¡ØH|¢U ¶U·Uü7G &1
ÍBœåTßG4ÁT˜NÔTÕEp”Ix”IX×E`®I>˜N±³&KO§‰D¡¼JÏŽNßGíßGò˜N÷ ôÈ\ 
 tÈ\dÈ\‰D<Þ\b4×\ÕGL'|×\ˆò\ 
üÈ\.Tç\ŽNË;|ç\ û\ü\üÆ[¶7G )1
ÍBœª\ßG4†\˜N™\ÕEc”Ik”IK×ES®I1˜Nö°&JN¦‰DÕGÁŽNßGìßGñ˜Nö(=
 h\
¬T€/€/PathBufÁ/÷)ß-1ùjÝÜ»€W ¿cpo
¬T
Ó5% 
1 •UÊÏ
ûcàåÔÙmrBº Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ŸÈŸÈ ÈÝ4 éBL ­4¦  c cˆ¢cµ
 `£cbufÁ `àB¤GS
í¬Tõ¬Tç•Uï ÓTú¬T•U  Ó5§ÂX¯@±NY¥X•UOÀX•UæðUsüýÇ ZÍ5¡Ó5Ó5­YüðÕ
ç[Í5Ó5Ó5ZÍ5­Y³Y¹Y¼YÉYzüõÐËWüöÕÿ4ÿ4$­Y$“óYÅõ
JäY´


 & .8
@ ¯Z
% 
­Y,
™"­YŠW@ŠW$-
è³YÓTP 

 üÉb  ü«t
­4Z?,Ä Ã  +
;­YZÆ Ó5óYÛÓ5 þËK*ÌKÍKNotFoundÁÎKÏKPermissionDeniedÁÐKÑKConnectionRefusedÁÒKÓKConnectionResetÁÔKÕKHostUnreachableÁÖK×KNetworkUnreachableÁØKÙKConnectionAbortedÁÚKÛK NotConnectedÁÜKÝK AddrInUseÁÞKßKAddrNotAvailableÁ àKáK NetworkDownÁ
âKãK
BrokenPipeÁ äKåK
AlreadyExistsÁ æKçK
WouldBlockÁ
èKéK
NotADirectoryÁêKëK IsADirectoryÁìKíKDirectoryNotEmptyÁîKïKReadOnlyFilesystemÁðKñKFilesystemLoopÁòKóKStaleNetworkFileHandleÁôKõK InvalidInputÁöK÷K InvalidDataÁøKùKTimedOutÁúKûK WriteZeroÁüKýK StorageFullÁþKÿK NotSeekableÁ€LL
QuotaExceededÁLƒL FileTooLargeÁ„L…L ResourceBusyÁ†L‡LExecutableFileBusyÁˆL‰LDeadlockÁŠLLCrossesDevicesÁŒLL TooManyLinksÁ ŽLLInvalidFilenameÁ!LLArgumentListTooLongÁ"L“L InterruptedÁ#”L•L UnsupportedÁ$L—L
UnexpectedEofÁ%˜L™L OutOfMemoryÁ&šLL
InProgressÁ'œLL¯(žLŸL
UncategorizedÁ)ÚóÞtÿÂ&:¿ÂX}­4®ÓT³Y<­YiÓ5í}°õ
S­Yù[-Â\÷\cá]Ó5Ì­YÒõ
Ù
âšBà3-ÌÍ
E  çèüˆ`¡Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
›:Ó5„¶šB« à3 šB"¢j*¹jšBâšBç(³ ¬T þ ¬TÓ5&•UÔ ¬T
Ø6& 
2 •UðU ¥šinÁ¸¿Ø ¼Vã 6íÆWô¬Tû¬Tí•UôÂXû¬TÌ•UÓ  Ø6àçnç;±ITÂX•UKån•UðUnÓ5 ñØ6ò¤ü©IÓ56È -Ø6[Ø6 ùÓ5ú¦ü³GØ66È -Ó5[üÍ11 TÚ1žBoxÁ¡ˆˆ¢ˆl }.xÏà3çEçEèEGlobalÁ ¿±‡§í# UniqueÁ ž_markerÁ8Åá™-Ýñà3§ ïíe¼îËè¿*à3 à3Dæ1Œæ14ï1j$ Dï1dÍ1
qA$ù1  µºüÇ17Ü â4
Ó5$¯5
üì4V »
üè4[ Ö¿ŠW6 Â5tè3dè3
ƒ/
 üè3 |÷3
œ/
9  Œ÷3LÜ3åq åq $¦4
 Œš4\š4
¼Ø6 ; 
 #kåq  ‡4 4½4 Ö¿ŠW6¡
ŠW Â4Ô5 Ó5üç0í .
>
±BüÞ4eÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ŠW6ä 1Ø6D†1šBD1Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ŠWÓ5økl åqwøkIƒla,2åqAÓTjŠWäØ6
Ó5ü6ÏØ6öåqИésßènew_pathÁô°O
à ‹jè¾tKšvô¼vÙåq¨wxšBšB Ø6üÈ@2 TÕ@åq îr¹sés4Dá@Œá@4ê@j$ Dê@dÈ@¾tˆ<,ô@  ËÏüÂ@8ð ÞC
Ó5$«D
üèCV »
üäC[ Ö¿ŠW6 ¾DtäBdäBšv
 üäB |óB¼v
3  ŒóBLØBåq åq $¢C
 Œ–C\C¨w 5 
 eåq  ƒC 4¹C Ö¿ŠW6)ŠW ¾CÐD ÏDüÁ? .
>
³BüÚCeúxä›@Ø6Dó?šBD…@æyðøkÑÇzÙøkƒl¨âz,‰AåqÓT¹ŠW9Ø6bÓ5K6Ø6Eåq2óés@Êz°
 j&¾t¤šv:¼v"åq¨wÄšBUšB[Ø6aDßY
\êY$ïY
è¼ÓT$êY4ïY ôY
$á[ó[
¬Tlé[Lé[
Š00#'¬á[
¸ßÓTøkuV*0 $û[
”û[
ë!ÓT
( !'\€\
0 Ll€\M ¼±\¬±\
   \£\  <¦\
 «ÓT<â\
Ӊ\Ѡ#
$ï\
A$ê\
±0ÓTi> Tê\$Û\
 ]
$¯]
´¯]|´]¼v5
Œ´]ü–]^ «,ä] ù]
ú]
üžYÜ Œ]   . < H¤·üÛYŸüÉ\:Ø6$ÌY´„$¯YÓTº¥Xo økVøk^¬T|êøkò¥X
Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ÓTÓ5öâzÓÓTÉÓTªøk²¥XÊÓT¢åq ÓT4Ôâz âz¨õ
õ
Äcur_dirÁ<
鮄՗…tÉ…F—†ÿ¾†ö†°—†S™ˆZÓTÒ¼v§ÓTÞŠŒ2ŠŒ9ÓT{D³c
\¾c$Ãc®„$¾c4Ãc Èc
$×c”×c—†#"\Üc¾†ElÜcF$ûcd

¬TlƒdLƒd—…
, # ¬ûc
·ßÓTøkqR*0 ÜÒd ËKü®d˜t®d
¬T 2üƒe0.¬T 5üªd Ö¿Ø6Ó5 ¹¼ñe¬ñeö†
À;ñe
ž$ŠŒ9 #'3
 EÄñelÓT
—f
$ f
t—f$f
ˆ/ÓTJ@Tf<ˆf[Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ˆê)?ÈXM´­Ó5H
¡$Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
Ø6Ó5””꽺f
$³f
üÓcõ$ïf
´ïf|ôf¼v5ŒôfüÖf^ «,¤güÓfb Ö¿Ø6Ó5 ºg
,4@»g Çf
üâbÙq¹<ü¯cŒüãeeov}„”c´„$÷bÓTMõøký¥Xc¥XÀØ‹¥øk­¬TËÓ59ƒ_VÓT<çe•¢˜¢™¢lš¢ˆ›¢œ¢[¢ˆe0<#˜””ÓT ŠŒHâzg””pÓT÷ŠW® ÓTéÓTâÓT£Ø6.åqYÓTõ
)õ
{cwdÁæ
Ž í¹x箄Ÿ—†]¾†d—…óìÉÄ‘}ö† Ã’à“s‰•¼vÓT¢ÓTUÓT®H>††Ø6ñ>ö¨  '
çn >þ… 
ÈbØ6
U%L ‚È‚ÈArgumentÁ„È´ÀbökÏ®ÝWj´œ ùA» ÉÎ
«cùAùAû  ùç¨. Iì¨ 
ëc ì…ñö¨ ùì¨) –†Íü¢…tkr ¼V\Ï… –8,©…ÆW °…äÈäÈ ArgumentsÁæÈtemplateÁ `çÈÀ `üöMõô]Tdçn÷çnÙùAÙü¬ž( ‰¡4çn<º±½À`Àl·]ÙžªŸ~\û†$€‡
ôÎ8$û†4€‡Œ‡Ðü׆5øk,놋 ,ᆠ0±¢{P@”ŠÓ5ñ@ö¨  '
ÂX @ŒŠ 
ÈbÓ5
U%L Ù\d ùAƒ 
«cùAùAà ÈÐùç¨. Iì¨ ªŸ û‰ñö¨ ùì¨) ¥Š×ü±‰t-4 ¼V\Þ‰ è8,¸‰ÆW ¿‰¢ iÂXlÂX‰¡}Ùc«¤²¡˜ÂX \±_ÀÄÀеî£Àؤꪟ\ ‹Ó5 °‹–8±‹ÚüéŠHÓ5LŒ‹è8,ñŠÈ
08`TºŒ–8 ÉŒÓ5ÊŒÝüü‹N–8„ŸŒè8,„ŒÈ
0Ó5`PBòÓ5ñBö¨  '
ÂX 
ÆbÓ5
U%L Ù\d  ùA%ƒ 
«cùA%ùAà ÈÐùç¨. Iì¨ ªŸ Çñö¨ ùì¨) ƒŽàüýŒ.5 ¼V„¦,„ÆW ¢ h£¦jÂX‰¡{Ùa»ª²¡ÂXž[±^ÀÂÀγþ©¾èªèªŸ\ÿŽÓ5 ¾ŒúŽ Û¼è­ãü¶Ž[Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙè­üÊŽ%„¦,ÀŽè­ÉÂXÐÂXè­ïtù  )dù ‰DAE”¡ üù \ˆ¡
§šBH„ˆ¡ž¡ü¬ r ¡æ5Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ã9Ó5ÌÕ šBÊ ÕE[×EcšB°+ЉDŰ#šBÚt¸£d¸£‰D<Σô¸£4Ç£¼JS,|Ç£+ü¸£)D×£
¦XT×£ æ£ç£üâ¢è´±Ì”£ßG4†£ÕEÊ”IÑ”I×E®Iù³&2e‰DB¼J ò³ØßG­ßG² ôá§   tá§dᧉD<÷§f4ð§¼JP)|ð§ŽŒ¨  üá§/\€¨
§˜NÞH„€¨ •¨–¨üÙ¦½:J ê3
´±̽§ßG4™§˜N¬§ÕE”I”If×En®IJ˜N ¹³&MP­‰D¯¼JÞœ·(ßGößGû˜Nt°ªd°ª‰D<ƪô°ª4¿ªÕGS,|¿ª+ü°ª)DϪò³RTϪ ÞªߪüÚ©í´±ÌŒªßG4þ©ÕEÄ”IË”I×E®Ió&2e‰D<ÕGò³ÒßG­ßG² ôÙ®   tÙ®dÙ®‰D<ï®f4è®ÕGP)|讎„¯  üÙ®/\ø®œ·Õ?„ø® ¯ޝüÑ­½:J ï3
´±̵®ßG4‘®˜N¤®ÕEv”I~”I]×Ee®IA˜N¹&MP­‰D¦ÕGÕœ·ßGößGû˜NTÔ³Ø6
ë!Ø6,4ä³ôü®³6øk,ij‹ ,º³çno7ÇÀŒ$‹ºØ6d¦º,«º
¯$¦º<«º ·ºÎ8üȹp¸º-Î8õ1ü÷¹AæytÞ¹–8$Õ¹Ø6²õ
ÈxâÁÆÎ8Î8¢$™ÅØ6$ŸÅÎ8´¼Å<ÁÅ
±˜N$¼ÅDÉÅŒÁÅ7ä¶ÅX„Æ6,µÆ Ó5$¼Æ
Ø6$Ç
ä‡Ç ÇÎ8

üÞÆs ÑÎ8  üÚÆx Ö¿Î8è8  ßÇ$íÅDêÅ Ö¿Î8è8 ñÅðÇ ïÇü«ÄÅöü…Åëü€ÆàüžÆÂÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
Î8è8ÔàÄ–8$ÊĘNDÐÄØ69Î8/úx#âz,áÅÎ8(6ßÓ5ÐØ6Æè8–8Î8ÌpÊzsõ
¯Ì©¦(CÈ8 õ
2
]ãÃÍÎ8$€×Ø6$†×Î8ü£× Œ¨×
³˜N$£×Dº×ܨ×8ü×&Zõ×6,¦Ø Ó5$­Ø
Ø6$ŽÙ
äøØ ÇÎ8

üÏØs ÑÎ8  üËØx Ö¿Î8è8  ÐÙ$Þ×DÛ× Ö¿Î8è8 â×áÙ àÙüˆÖÙøüìÖõüñ×àüØÂôÆÔÇÖ–8$±Ö˜ND·ÖØ6ëÎ8áúxÕâz,Ò×Î8Ø6ŽÓ5Ø6uè8@8eÎ8{oÊzrõ
`ÌZ¦(òÈç õ
á
 éÉ~Î80 ´õß LößÎ8LàØ69 $çßÎ8$íß Ø6$›à \›à$ à
µ;4 à) Œ•à J,öà
6Ó5$ýà6Ø6$Çáä±á ÇÎ8üŒág ÑÎ8
üˆál Ö¿Î8ÓTè8 óá$¸à
«ÓT$Åà dÄà 
„Áà Ö¿ëÑè8  Ðà „â ! 3
Cüßè…âkú.üâߣäµàüßàÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ëÑè8ü²ß%–8$©ßÎ8ÌØ6ÂÎ8Ø6)Î8Ø6Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ÓT6ñØ6âzDµàÓT
ëÑðÎ8Ó5ÔØ6Áè8ƒ–8¨Î8¾éâzñóÌÂõ
¼õ

È>
õ
/î™Ð®Î8RØ6XLÌæØ6üÌæ*|Öæ
1|ææüÖæ üæûü‰æsŠWÁæ –8L æ|«æ Ø6Žú#R÷סTØçÎ8èçüü²ç6 Î8Ëç‹ ,Áç 3tØèÎ8ìèýü¦èF Î84ÇèÁØL¹è 3LŸëÎ8 ­ëØ6®ëþüùê5Î8 “ë–8$Šë /Ø6_LŠíØ6 ˜íÎ8™íÿüØìAØ6D÷ì–8$îì /Î8_L¾ïÎ8LÉïØ6´½ï ÙïüŠïOŠÕl¥ï–8$œïÎ8nØ6c>œÊñ ÇÎ8ãñüñV–8$»ñÎ8$ŸñØ6$¨ñÌõ
G”Âû\Çû
ýÎ8$ÂûlÇûäÂû$Õû
á Î8LÚûLÕûtíû ˆÎ8¹YŠWøk‹ üÂû:lßû
RÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ùAÓ5ùAˆÎ8¹Y‡à’àøkôÆìßû‚üü€û´àŒ¦ûÁØLˆû 
“û´àP¯Ú‹á/‹ 8>çV=q‘߯Á߯à7$ðû‹ \ðû$õû±¢,4õûûûˆËøkïû‹áâ‹ ë$û‹ ±¢
_ref__selfÁ”äü\éü‘ß$äüléüüäü3l„ý
â Î8H$’ýœ„ýt³ý ŠÎ8¹Y‡à’àüäü^l¥ý
R´àùAŠÎ8¹Y‡à’àøkœmì¥ýÈýüˆüÀ´àŒÈüÁØL™ü 
ö ö ÷
IoSliceMutÁù ˆ¦ èóÇãp9Ü$¤ü´à3¯Úg¼å‹ ybufsÁA°‘ߨËä°å&$¶ý‹ \¶ý$»ý±¢,4»ýÁýбøkµý¼åÈ‹ Ñ$žü‹ ì±¢þ┚þ\Ÿþ‘ß$šþlŸþüšþ0\ºþ
å Î8HÆþ„ºþtæþ ŒÎ8¹Y‡à’àüšþ[lØþ
R´àùAŒÎ8¹Y‡à’àøkœmìØþûþüÎý­´àŒþýÁØLÝý ªBªBö­BçV÷<®B÷<9)
-ÜnL©rèý´à4¯Úh£ê‹ zçV=­‘ߥ²é—ê#$éþ‹ \éþ$îþ±¢,4îþôþŒ®økèþ£êÅ‹ Î$âý‹ é±¢þâ”Ïÿ\Ôÿ‘ß$ÏÿlÔÿüÏÿ3tïÿ
æ Î8Hþÿœïÿtž€ ŽÎ8¹Y‡à’àüÏÿ^l
R´àùAŽÎ8¹Y‡à’àøkœmì³€üÿ²´àŒ³ÿÁØL“ÿ úHúHßûHÁ‘4Ý­f‰úM÷žÿ´à"¯ÚV‡ï‹  hçV=‘ß–îoûî$¡€‹ \¡€$¦€±¢,4¦€¬€Žœøk €‡ï³‹ ¼$˜ÿ‹ ×±¢þâ”þ€‘ß$þ€üþ€/
ç Î8H© Î8¹Y‡à’àüþ€Z
RæyŠWÎ8¹Y‡à’àøklì»Þü¹€¥æytå€ÁØLÇ€ïáÒ€æyò¯Ú%ØóÏ‹ ×7çV9i‘ß`èò<ÍóÞ‹ ±¢,×høkËØó‹ ˆ$Ì€‹ £±¢þâ”®‰\³‰‘ß$®‰l³‰쮉,Á‰
 !Î8GljTÁ‰tÚ‰ ŸÎ8¹Y‡à’àü®‰;l̉
R´àùAŸÎ8¹Y‡à’àøkmì̉üïˆ´àŒ’‰ÁØLøˆ ñ჉´à÷¯Ú*ö÷Õ‹ Ý;çV:n‘ße…÷Aê÷ä$݉‹ \݉$≱¢,4â‰è‰Ÿnøk܉ö÷‹ Ž$ýˆ‹ ©±¢þ┲Š\·Š‘ß$²Šl·ŠÔ²Š,ÅŠ
¤!Î8G<ÅŠtÛŠ ¡Î8¹Y‡à’àü²Š8lÍŠ
RæyŠW¡Î8¹Y‡à’àøklìÍŠðŠ ü‚Šnæyt™ŠÁØL‹ŠæyݯÚüË Ë,P‘ß>¨û…üÅ$ÞŠ‹ \ÞŠ$㊱¢,4ãŠéŠ¡OøkÝŠüf‹ o$Š‹ Š±¢þâ”Ì‹\Ñ‹‘ß$Ì‹lÑ‹üÌ‹4tì‹
¡!Î8H$û‹¤ì‹tœŒ £Î8¹Y‡à’àüÌ‹_lŽŒ
R´àùA£Î8¹Y‡à’àøkœm쎌±Œ¢üöŠ»´àŒ°‹ÁØLˆ‹ 
æLæLçLIoSliceÁéLˆ¦ —óë@M$T$“‹´à0¯Úd–€‹ væ>ª‘ߢ¥ÿ~Š€ $ŸŒ‹ \ŸŒ$¤Œ±¢,4¤ŒªŒ£«økžŒ–€Â‹ Ë$‹ æ±¢þâ”÷Œ\üŒ‘ß$÷ŒlüŒü÷Œ.L—
¥!Î8H¡t— ¥Î8¹Y‡à’àü÷ŒY
RæyŠW¥Î8¹Y‡à’àøklì³Ö¤ü·ŒŸæytÞŒÁØLÄŒÚøÏŒæyò¯Ú%ö„Ï‹ ×7çV9i‘ß`†„<ë„Þ‹ ±¢,Ï¥høkÃö„‹ ˆ$ÉŒ‹ £±¢þ┩Ž\®Ž‘ß$©Žl®Žü©Ž.LÉŽ
§!Î8HÓŽtÉŽtóŽ §Î8¹Y‡à’àü©ŽYlåŽ
RæyŠW§Î8¹Y‡à’àøklì厈¦üܬæytŽÁØ¢ ôæyò¯Ú%”‰Ï‹ ×7×9i‘ß`¤ˆ<‰‰Þ$öŽ‹ \öŽ$ûޱ¢,4ûާhøkõŽ”‰‹ ˆ‹ £±¢þâ
ü›:-+´õ,„‘
¤! :Y<„‘tš‘ ¬¹Y‡à ã9üõ4lŒ‘
RæyŠW¬¹Y‡à¢økm쌑¯‘«üÅjæy ¤æyä åŒ)åŒ2ÌÓ¤/¤7@g¥Œhߌ5ÁÛ$¤\$¢‘
ô›:14¢‘¨‘¬løkœ‘̃¤Œ¤§»þâ”ø•\ý•‘ß$ø•lý•äø•$‹–
ª!Î8GL‹–t£– Î8¹Y‡à’àüø•:l•–
RÖ¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
Ó5Î8¹Y‡à’àøkë½ì•–¸–µü¹•å‘|Þ•ÁØLÁ•ñLòLóLStartÁôLˆõLöLEndÁ÷LˆøLùLCurrentÁúLˆaÍ>4¡9cÅ̕呯¯Úã¼’Ž‹ §posÁ@Ü‘ß#ûÿà‘¢$¦–‹ \¦–$«–±¢,4«–±–-øk¥–¼’D‹ M$Æ•‹ h±¢þâtä˜<é˜
üÎ8$ä˜L阴ä˜,ó˜
Ž,Î8L<󘀙¼ü¸˜HÎNÎN£ ÐNfdÁä+ÑN_phantomÁä+§]òÞ^t˘‹ ,Á˜ÅÙÖ{²–óâ–Ét“š<˜š²–$“šL˜šÔ“šL¢š
¬+Î8G\¢š³š¿üì™G¹Y,ƒš‹ ,ù™ÅÙŽ8²–«ã˜(Ñ" š ):B J
¬T, 8
 •Urw
‡dˆ 
jšxýƒ)öJöJCursorÁøJ÷)ÅùJÊ“ÅÞÀ6Ì¿­‰ëú ¬To{•U+1áš?E­SÖÈkqx ¼V ‘;ÆW˜âz  ™›¬T´•U *匩¬TÙ•U¹ åŒÅ÷±__self_0Á}õœ1Ê•UášE¥•U°ášU (   ¬Tx Æ 
¬TùA&•U  Û ¬T Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙÓTk •U õ
 ¬T
;& 
2  •U

ýc"(ïô
~ ƒQ ¢Îi¼Vu à;ÆWˆ¬T¬Tƒ•U ùA¬Th•Up ³Ÿ|¬T •U îœîœ&ö±ê¡•U…¢•UÚ¡¢•UhÜ 5ôà¤à
Ö!Ñüžbà;ùAß) -–£nüì&¼ì
ךBD„Ž-Òüà;ùAšBËß)D“¤ ­d­j$¼­
´à3?ì¨ Û¼ÓT
±B ¼ð
Ò‰ë A%üÚ. Àüï¤ É ˜ -ü›þ×
à;ùAšBʳŸÓTHøkuƒl‘;Í™›þ‰ë+ß)NR‹jÀ⥢¨¦dͦFšB쳟ךB÷|“>;¬>5$? ):d?,?
¤!:$?<?4Ç>ƒ)™›tÒ>,Ù>
¤!™›4Ò><Ù>¨?çüÝ=Ëü±>/üî>)æytô= à;Læ= ;âzì±> ™›¨ :ø4cursorÁÎ̈…ª̪ÖùA4Á6D´G
$¿ ”º\¿¾† $3l¿& ¼å¬åö† 3ÀTåÃ’ 3 3!
 -
Ô-Äå lÓT
< 
”› —†#, [””±
¡$Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
£Ó5””ˆ43(Å
±0økí, ,Œ‡ G
”¾ —†!
,*Ì·  Ö 
3
ùA$
”Œ

áAüï L ´

áA$¤ñ
Ӗ

3\—  pV”   £áA áApY”  
ÊL££¹ƒ£¹„£þ-'ºˆÉ¬gáA~3Z^ øY î

w


ûMí²3¦ª

 
ÛáA !  ûáA !ä› B ËK üƒe Ä‘B,üÁ ¬T A&3/ t
/"3 #"D #$• $"«À & 
s&'$%53$¿
(
*üÉ-

õ*))36ü¿8

±0OsStringÁ÷)ëY6a×é5W(¨)'3üÄ3 Ž,- '%
•"—$ÓT,>-4+3=A.+lˆ.Ý?+ä?Ô-1/+Ó50/ ²E0$´ù[E$3+4´#23ä¾4
øǯ¬¸ ƒ_ü²(
·ßƒ_ƒ_2p4F1++11! 656 ìáA 5!%,7+Ó587 ŒF8ù[F$;"+#:;Ę<
øǯ¬¸ŒºüŒ$¡º:e<;9#+"(9$\´>|´=> ÂáA =% ò+3üÿj @ Ö¿ǯÓ5A D C ûǯ¬¸¹Y‡àØ‹Düÿ 
Rù®ǯûǯ¬¸¹Y‡àÞ½øk@Cw'3´ï G(/G$*1G9E*+3/
3.üݪœ(-¬)-¼G)0Ì-ÜG-2p 1 øvü°×üéžü×  $ | üÝ ª
üã
¤ Ð ×
ü®/ üð ü´Å
ü¤UüþQHù®øk Ü74‹ðÁùA¬¸øké
ÓTŒíÉ
økà
ÓT‚šŽ
ŠŒ
âz
””
ÓTj
ÓTA
økI
¥Xa
øk£ økQ ¥XY áA ¯¯°RngÁ±ˆ 2?0})CØ
í²í²ÇáAÜí²« Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙáAø í² âz¡áAN
>Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ŒŒÝ4Žˆ .´-ùÑMâz+! ŠW ­ÃÓT
økò®·Ý™Æ÷ù®A ¬¸\²¸VâzÂXäÀXìmŒºÉƒ_ÑŒº«BáAWÂX$ÀX,¯Œº ƒ_ŒºëáA¢ù®ù®gÓ5Š ƒ_§ ‡¾aØ‹jÂX˜ÂX ùbaseÁZ&\³&`­*e±i¾ÇXbase_path_storageÁØŒy
Ž r
¹Ï
 num_retriesÁDrngÁ ù¥
´ë
seedÁ0
$õ
ÿ'°¥/°±0°½7°É8resÁü?£ áA¾†"ö†óÃ’Û—†kó®é€°y—†p
ÓT9
²º ç²i ê³p Ä‘W ½µ) ¡¶Ì
ì¶
¨·T
¦¸é ù[9 ¡ºíù[F¡ºüù®ú½2¬¸ç¬¸îù®¬ÓT»
¬¸ÓTÓTÓTl ËK~ø×Œºªƒ_²ºÇ  ËK Ù è ø2Œº
ƒ_

$€Ø‹ûŽøkÿ‡¾¤Ø‹­¾ÇØ‹É
_ref__baseÁ(#áE Ü ¬TùAˆ# FùA•Uˆ#·F
ðÁ 
•Uˆ#ÎF ðÁ  •U`#åF
•Uø#÷F Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ¶J¶J·J PermissionsÁ¸Jˆõ K@nüŠ9•U¨#G•U •U  
°½ 
•UÒÛ¬Tæ 
¬Tý
ƒd!'0#æEÜHNU¼VbÕEjÆWr³Ï{åÒ •UùA¥Ô¦•Uꡊ•Un ðÁz•U]ÞÔf•UI S•U8 êÐD•U¨ ƒÕ´ƒÕ½¬T'ŽÓ0:±HÑ V¼bkê¡•UKÞÔ•U0ÞÔ•UƒÕ•Uø•Õ•UÞ©Õ•UC¤Ó¬ gp¬T{dm¬Txaj¬Tu` i ¬Tt Þ ç¬Tò
 b ¬TB
¬T
˜Ü¨ ³ÏµµÏ¾¬Tu¬T}¬T`¬Th¬TK¬TS¬T8¬T@¬T¤¬T¬ ˆ$ FùAˆ$·FðÁˆ$ÎFðÁ`$åF  ø$÷F  êÐ
ÙêÐ /
7¨$G

($èE Ð
 $íEà=×EHÕEOùA1ê¡:ðÁ#ÞÔ,ðÁÞÔƒÕ êÐö•ÕþɃÕÑ»Å
ÙùA¯
ÙðÁœðÜ
ÙlàÚT„Ý %ñEä%ïE ŠW,ÕE3<F
`&åF!2¨&G!2ˆ& F
ùA ùA# 
 4 ˆ&·F
ðÁðÁ).
·ßðÁðÁ
EJ RX ˆ&ÎFðÁðÁ).‚à:?GMø&÷F êÐêÐ*/
·ßêÐêÐFK SW_k &üEëH&óE
ÕEÕE)07þ ÓùAÛùAã¨ÞÔ±ÞÔº[ÞÔdÞÔm•Õ•Õ$©¹
À‚à‚à±Äá]|¢^4©^
â¤Ü74¢^D©^ì”^ðÁ$»^Å^ü»]Š”IL€^”ILã] ä4î]ðÁ & O‰ä»|˜b4Ÿb‰ä4˜bDŸbìŠbðÁ$±b»bŸü±aŠ”ILöa”ILÙaûä4äaðÁƒ³& L‰ä­–™d–™4š™
â³Yà30Dš™\°™ðÁ\É™ðÁ|â™ùAüÿ™û ©³Y²¸´±ÕEüõ˜œõ˜
øã9©³Y’èŸèÔªŒ~S Šœ‹œüœ˜ï§ ´±ÌјÕE,¿˜³YƘøka ³Y}ùAÅèðÁ9ðÁAJMŠœç¸¼è!³YγYÓ$Àš '”Úš„Úš
!\ôš ÕE üÚš&4íš
lCœíš„–› ÕE  êÐÌ–›4§›
©T¯Ñ DD§›¤Å›
ÕE
ü˜šÔ
”˜š
ÀZÚ
aH ë› ú›+;©3´±…š ÅèNÓT$€šÓTõ ¤J¤J¥J OpenOptionsÁ¦Jˆõ ¤ŸÓAÍY´ÛîÝîñÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ¯ÑÈ•Õø«ÕE'ÕE/ÕE7\õ
ó$À˜ÕEf¥ëÒøëÍì8²íðÓTªþâÚ¨dÚ¨4Þ¨œç(DÞ¨\ô¨ðÁ\©ðÁ|¦©ùAüéI ­³Y²¸ÍBŸèü¹¨Þœ¹¨
ø¬3­³Y òŸèɧ˜{S œªªüç§« ÍBœ›¨ÕE,‰¨³Y¨økUòéoùAÑò
ðÁ7ðÁ?HKœçªÈò³Y˳YÐ$Ö©   '„Ü©ÕEêÐÌÜ©4í©Íì>Dí©¤÷©ÕEüÊ©B  \Ê©
8Ï{Y@ ‹ª  Œªm+; ­œ
ÍBÉ© ÑòÓT$Ä©ÓTc¹ï•ÕCüÕEèÕEð¬õ
C$ЍÕEÍìk±ö)ÓTëþâ$ÅÅ |ÒÅlÒÅ
 ãÅ üÅÅ <ÊÅ
±£ÓTuYÜÊÅëÅüÄħ êÅ®6Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ÇǾÉõ
[ÊÌ[sÅ€ÝZaZ×ùÓ5äæÄÕE,ÖÄÑù ÝÄÓTÑùií.±0ƒù¼ÇùÑù&dÃË
 
ÃË84ÇË
â¡à30DÇË\ÝËðÁ\öË ðÁ|ÌùAü¬Ìº

 µÑù×ù”ý²¸ÈúÑùÕEü¢ËÏœ¢Ë
ø–ûµÑù×ù”ý¢þ¯þ7Ö Ç¸ª^ öÍ÷Íü÷É:J
±3 Èúä«ÊÕE,Ê”ý–ÊÑù,žÊøkñ ”ýÖùAvÜþlðÁFðÁNÊ]_±aÊŽý\Òþl”ý”ýÑùüÍÌŠ
)1 üÌÑù,þÌ
—†
" +DüÌ  \
•"Ñùøks3<HZüÌ 
ž$Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
×ùÓ5®uy  LüÌ
l×ù *
$©Í ¤¯ÍÕEü›Í)l›Í
»^C
([„Í [””]!
¡$Èú”” 7 ÖÍ  åÍ
pyÌÍÌ
×ùCÐ 
±muüÊÌŽ Ö¿–ûÓ5
æÍá¿Ï È Ø µ0PW^
Èú·Ì ÜþgÓT$²Ì–û˜×ùB•¢˜¢™¢lš¢ˆ›¢œ¢[¢ˆe0<#˜””×ù9£ƒ ÑùÕó‚økÐ¥XØâz-””6×ùäØ6sÓT¿¦ÕED õ
î± ¢ÊÑù$ÊÕEŽ ª ¹[
¥ —†}é‚Uƒ¶… ÷…(ÓTâ†÷×ùµÓT¤± ÀÂ%;0™›8?4“ ÀÅ%;0:7> F[ÃêüÐÀæ6,ýAˆëí\’B¤J½Ð\ŸB¶JioÁ¶B¦ ê2$ÉB…0
É<©C ˆñ T²C å<¾CŠëDãC  Œ
\íC ¡¾lúCÇŽ¼(„‰D»d›DѹD©D«•!„ÏD Ñ­!œáD Òð(\öDÀÈ)|ƒEÉüùÍüa^ This is a library for creating temporary files and directories that are automatically deletedÁüb.+ when no longer referenced (i.e., on drop).Áúü•]Z - Use [`tempfile()`] when you need a real [`std::fs::File`] but don't need to refer to itÁ by-path.Áü‚eb - Use [`NamedTempFile::new()`] when you need a _named_ temporary file that can be referred to itsÁ path.Áüôeb - Use [`tempdir()`] when you need a temporary directory that will be recursively deleted on drop.ÁüÚda - Use [`spooled_tempfile()`] when you need an in-memory buffer that will ultimately be backed byÁü¿,) a temporary file if it gets too large.Áìú # DesignÁýúüWT This crate provides several approaches to creating temporary files and directories.ÁüÙ`] [`tempfile()`] relies on the OS to remove the temporary file once the last handle is closed.ÁüºPM [`TempDir`] and [`NamedTempFile`] both rely on Rust destructors for cleanup.Áú¼ ## Resource LeakingÁ§úü«]Z `tempfile` will (almost) never fail to cleanup temporary resources. However `TempDir` andÁü‰b_ `NamedTempFile` will fail if their destructors don't run. This is because `tempfile` relies onÁüì[X the OS to cleanup the underlying file, while `TempDir` and `NamedTempFile` rely on rustÁüÈ _\ destructors to do so. Destructors may fail to run if the process exits through an unhandledÁü¨
ZW signal interrupt (like `SIGINT`), or if the instance is declared statically (like withÁüƒ 30 [`lazy_static`]), among other possible reasons.Á· úü»  ## Unexpected File DeletionÁÛ úüß da Most operating systems periodically clean up temporary files that haven't been accessed recentlyÁüÄ a^ (often on the order of multiple days). This issue does not affect unnamed temporary files butÁü¦
c` can invalidate the paths associated with named temporary files on Unix-like systems because theÁüŠ[X temporary file can be unlinked from the filesystem while still open and in-use. See theÁüæ^[ [temporary file cleaner](#temporary-file-cleaners) section for more security implications.ÁÅú ## SecurityÁÙúüÝb_ This section discusses security issues relevant to Unix-like operating systems that use sharedÁüÀa^ temporary directories by default. Importantly, it's not relevant for Windows or macOS as bothÁü¢LI operating systems use private per-user temporary directories by default.Áïúüó_\ Applications can mitigate the issues described below by using [`env::override_temp_dir`] toÁüÓ`] change the default temporary directory but should do so if and only if default the temporaryÁü´`] directory ([`env::temp_dir`]) is unsuitable (is world readable, world writable, managed by aÁü•" temporary file cleaner, etc.).Á¸úü¼ ### Temporary File CleanersÁÜúüàc` In the presence of pathological temporary file cleaner, relying on file paths is unsafe becauseÁüÄb_ a temporary file cleaner could delete the temporary file which an attacker could then replace.Á§úü«eb This isn't an issue for [`tempfile`] as it doesn't rely on file paths. However, [`NamedTempFile`]Áü‘]Z and temporary directories _do_ rely on file paths for _some_ operations. See the securityÁüïZW documentation on the [`NamedTempFile`] and the [`TempDir`] types for more information.ÁÊú Mitigation:ÁÞúüâb_ - This is rarely an issue for short-lived files as temporary file cleaners usually only removeÁüÅVS temporary files that haven't been modified or accessed within many (10-30) days.Áüœc` - Very long lived temporary files should be placed in directories not managed by temporary fileÁ|€ cleaners.ÁúÔ” ### Access PermissionsÁ¯úü³`] Temporary _files_ created with this library are private by default on all operating systems.Áü”c` However, temporary _directories_ are created with the default permissions and will therefore beÁüø^[ world-readable by default unless the user has changed their umask and/or default temporaryÁt× directory.ÁæúÌê ### Denial of ServiceÁúüˆa^ If the file-name randomness ([`Builder::rand_bytes`]) is too small and/or this crate is builtÁüêb_ without the `getrandom` feature, it may be possible for an attacker to predict the random fileÁüÍ`] names chosen by this library, preventing temporary file creation by creating temporary filesÁü® ^[ with these predicted file names. By default, this library mitigates this denial of serviceÁt! attack by:Áœ!úü !b_ 1. Defaulting to 6 random characters per temporary file forcing an attacker to create billionsÁüƒ"^[ of files before random collisions are expected (at which point you probably have largerÁŒâ" problems).Áüô"a^ 2. Re-seeding the random filename generator from system randomness after 3 failed attempts toÁüÖ#b_ create temporary a file (when the `getrandom` feature is enabled as it is by default on allÁĹ$ major platforms).ÁÒ$úÌÖ$ ## Early drop pitfallÁð$úüô$^[ Because `TempDir` and `NamedTempFile` rely on their destructors for cleanup, this can leadÁüÓ%b_ to an unexpected early removal of the directory/fil
```no_runÁÔˆ' use tempfile::tempdir;Áô£' use std::process::Command;ÁÂ'úüÆ'63 // Create a directory inside of `env::temp_dir()`.Áôý' let temp_dir = tempdir()?;Áœ(úü ([X // Spawn the `touch` command inside the temporary directory and collect the exit statusÁüü(ZW // Note that `temp_dir` is **not** moved into `current_dir`, but passed as a referenceÁü×)XU let exit_status = Command::new("touch").arg("tmp").current_dir(&temp_dir).status()?;Áü°*# assert!(exit_status.success());ÁÔ*úüØ*" # Ok::<(), std::io::Error>(())Á<û* ```Áƒ+úü‡+]Z This works because a reference to `temp_dir` is passed to `current_dir`, resulting in theÁüå+]Z destructor of `temp_dir` being run after the `Command` has finished execution. Moving theÁüÃ,\Y `TempDir` into the `current_dir` call would result in the `TempDir` being converted intoÁü -\Y an internal representation, with the original value being dropped and the directory thusÁüý-63 being deleted, before the command can be executed.Á´.úü¸.MJ The `touch` command would fail with an `No such file or directory` error.Á†/ú|Š/ ## ExamplesÁš/úüž/85 Create a temporary file and write some data into it:Á×/ú<Û/ÓÀÜã/ use tempfile::tempfile;Á¼ÿ/ use std::io::Write;Á—0úü›01. // Create a file inside of `env::temp_dir()`.ÁüÍ0 let mut file = tempfile()?;Áí0úüñ00- writeln!(file, "Brian was here. Briefly.")?;Áü¢1"¨À<Å1ÓÀÍ1úüÑ1FC Create a named temporary file and open an independent file handle:Á˜2ú<œ2ÓÀü¤2  use tempfile::NamedTempFile;ÁüÅ2 use std::io::{Write, Read};Áå2úüé2*' let text = "Brian was here. Briefly.";Á”3úü˜31ˆÇüÊ3*' let mut file1 = NamedTempFile::new()?;Áõ3ú”ù3 // Re-open it.ÁüŒ4$! let mut file2 = file1.reopen()?;Á±4úüµ40- // Write some test data to the first handle.Áüæ4&# file1.write_all(text.as_bytes())?;Á5úü‘52/ // Read the test data using the second handle.ÁüÄ5  let mut buf = String::new();Áüå5$! file2.read_to_string(&mut buf)?;ÁÔŠ6 assert_eq!(buf, text);Áü¥6"¨À<È6ÓÀÐ6úüÔ663 Create a temporary directory and add a file to it:Á7ú<7ÓÀÔ—7ú»´²7 use std::fs::File;Á¼É7ÛÆá7úüå76ѼÌœ8 let dir = tempdir()?;Á¶8úüº8=: let file_path = dir.path().join("my-temporary-note.txt");Áüø8,) let mut file = File::create(file_path)?;Áü¥90øÇÖ9úüÚ9DA // By closing the `TempDir` explicitly, we can check that it hasÁüŸ:B? // been deleted successfully. If we don't close it explicitly,Áüâ:>; // the directory will still be deleted when `dir` goes outÁü¡;A> // of scope, but we won't know whether deleting the directoryÁŒã; // succeeded.Á|õ; drop(file);ÁŒ…< dir.close()?;Áü—<"¨À<º<ÓÀÂ<úüÆ<$! [`tempfile()`]: fn.tempfile.htmlÁüë<" [`tempdir()`]: fn.tempdir.htmlÁüŽ=$! [`TempDir`]: struct.TempDir.htmlÁü³=0- [`NamedTempFile`]: struct.NamedTempFile.htmlÁüä=RO [`lazy_static`]: https://github.com/rust-lang-nursery/lazy-static.rs/issues/62Á%https://www.rust-lang.org/favicon.icoÁ„˜?<https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.pngÁlÄ>https://docs.rs/tempfile/latestÁlØ? F[ÃêüÐÀ4&æ65&ˆëí4&¤J½Ð3&¶JÒŒ1&¦ ê20&…0
É/& ˆñ .& å-&Šë,&  Œ
+& ¡¾*&ÇŽ¼()&»(&ѹ'&«•!&& Ñ­!%& Òð($&ÀÈ)#&Éy'|''´­A\³AáAÜÍAtÓAùA|óAž'<ˆB'”'ƒ'†'<±Bx'|¾Bl'<ÐBÔB89æ6,íˆ  remove_dir_allÁt ô 
íšë õ
ß- ê2$µ…0 ÝS<»€/ ×Ϥ, ҌԦ P ©
<„Ð ͼø²D•¥L£˜$¨|~ÉqsacÌÞVtýJüÆ'ü«>; Create a new temporary directory. Also see [`tempdir_in`].ÁêúüîOL The `tempdir` function creates a directory in the file system and returns aÁü¾QN [`TempDir`]. The directory will be automatically deleted when the `TempDir`'sÁ´ destructor is run.Á§ú´« # Resource LeakingÁÂúüÆC@ See [the resource leaking][resource-leaking] docs on `TempDir`.ÁŠú # SecurityÁúü¡SP Temporary directories are created with the default permissions unless otherwiseÁüõUR specified via [`Builder::permissions`]. Depending on your platform, this may makeÁÄË them world-readable.Áäú # ErrorsÁõúüù;8 If the directory can not be created, `Err` is returned.Áµ ú # ExamplesÁÈ úÓÀÔÔ ú»´ï ½Ï¼†
ÛÆž
úü¢
52 // Create a directory inside of `env::temp_dir()`瓯
 let tmp_dir = tempdir()?;Áö
úüú
A> let file_path = tmp_dir.path().join("my-temporary-note.txt");Áü¼ 0- let mut tmp_file = File::create(file_path)?;Áüí 41 writeln!(tmp_file, "Brian was here. Briefly.")?;Á¢ úü¦ <9 // `tmp_dir` goes out of scope, the directory as well asÁüã '$ // `tmp_file` will be deleted here.Áœ‹
 drop(tmp_file);Á¬Ÿ
 tmp_dir.close()?;Áüµ
"¨À
ÓÀà
úüä
$ÃÕü‰<9 [resource-leaking]: struct.TempDir.html#resource-leakingÁ<ÍÍB
üø@ü†SP Create a new temporary directory in a specific directory. Also see [`tempdir`].ÁÚúüÞLI The `tempdir_in` function creates a directory in the specified directoryÁô« and returns a [`TempDir`].ÁüÊC@ The directory will be automatically deleted when the `TempDir`sÁ´Žˆà¥ú´©³àÀúüÄCßàˆúÃãúü;åãÙúµäìúÓÀìø use tempfile::tempdir_in;Á´–½Ï¼­ÛÆÅúüÉ:7 // Create a directory inside of the current directory.Áü„# let tmp_dir = tempdir_in(".")?;Á¨úü¬AŠæüî0ÕæüŸ4çÔúüØ<Ùçü•'Ÿèœ½Ïè¬Ñëèüç"¨ÀÓÀúü–$ÃÕü»<¿éTÿšBÍB¡ÍìšB ŠàšBà3\
šB*!$&”å/ü×DA A directory in the filesystem that is automatically deleted whenÁÌœ it goes out of scope.ÁúüºDA The [`TempDir`] type creates a directory on the file system thatÁüÿ>; is deleted once it goes out of scope. At construction, theÁü¾EB `TempDir` creates a new directory with a randomly generated name.ÁúüˆGD The default constructor, [`TempDir::new()`], creates directories inÁüÐ?< the location returned by [`env::temp_dir()`], but `TempDir`ÁüEB can be configured to manage a temporary directory in any locationÁüÖ'$ by constructing with a [`Builder`].Áþúü‚B? After creating a `TempDir`, work with the file system by doingÁüÅ@= standard [`std::fs`] file system operations on its [`Path`],Áü†GD which can be retrieved with [`TempDir::path()`]. Once the `TempDir`ÁüÎFC value is dropped, the directory at the path will be deleted, alongÁü•IF with any files and directories it contains. It is your responsibilityÁüßB? to ensure that no further file system operations are attemptedÁü¢ <9 inside the temporary directory once it has been deleted.Áß ú´ã ³àú úüþ DA Various platform-specific conditions may cause `TempDir` to failÁüÃ!EB to delete the underlying directory. It's important to ensure thatÁü‰"?< handles (like [`File`] and [`ReadDir`]) to files inside theÁüÉ"EB directory are dropped before the `TempDir` goes out of scope. TheÁü#DA `TempDir` destructor will silently ignore any errors in deletingÁüÔ#FC the directory; to instead handle errors call [`TempDir::close()`].Á$úüŸ$EB Note that if the program exits before the `TempDir` destructor isÁüå$DA run, such as via [`std::process::exit()`], by segfaulting, or byÁüª%B? receiving a signal like `SIGINT`, then the temporary directoryÁÄí% will not be deleted.Á†&útŠ&µä™&úü&74 Create a temporary directory with a generated name:ÁÕ&ú<Ù&ÓÀ´á&½Ï¼ø&ÛÆÔ' use tempfile::TempDir;Á«'úü¯'5™åüå'" let tmp_dir = TempDir::new()?;Áüˆ("¨À<«(ÓÀ³(úü·(;8 Create a temporary directory with a prefix in its name:Áó(ú<÷(ÓÀ´ÿ(½Ï¼–)ÛÆÔ®) use tempfile::Builder;ÁÉ)úüÍ)63 // Create a directory inside of `env::temp_dir()`,Áü„*,) // whose name will begin with 'example'.Áü±*>; let
))469;üÌb!ü‚]52 Accesses the [`Path`] to the temporary directory.Á¼]úüÄ]@·‡‰^út‘^µä¤^ú<¬^ÓÀÔ¸^Ò‚×^úŒß^ let tmp_path;Áõ^ú,ý^ü‡_%" let tmp_dir = TempDir::new()?;Áü±_,) tmp_path = tmp_dir.path().to_owned();Áâ_úüê_85 // Check that the temp directory actually exists.Áü§`" assert!(tmp_path.exists());ÁÎ`úüÖ`;8 // End of `tmp_dir` scope, directory will be deletedÁ,a aúü¨a.+ // Temp directory should be deleted by nowÁüÛa)& assert_eq!(tmp_path.exists(), false);Áü‰b"¨À<°bÓÀ.\¼b$Óbì ì¬3 ìà3 Øb
,$Ùbü€d!ü–c+( Deprecated alias for [`TempDir::keep`].Á.\Æcuse TempDir::keep()Á¬åcüÖc%L‡d…±(¬3ÓT
-$dü¹l üÃd[X Persist the temporary directory to disk, returning the [`PathBuf`] where it is located.Á£eúü«e\Y This consumes the [`TempDir`] without deleting directory on the filesystem, meaning thatÁüŒf:7 the directory will no longer be automatically deleted.ÁËfúüÓf]Z If you want to disable automatic cleanup of the temporary directory in-place, keeping theÁüµg>; `TempDir` as-is, use [`TempDir::disable_cleanup`] instead.Áøgúü€h$ÃÕü©hFC [`PathBuf`]: http://doc.rust-lang.org/std/path/struct.PathBuf.htmlÁôhútühµäiú<—iÓÀ„£i
use std::fs;ÁÔ¸iÒ‚×iúüßi"ƒ†júüŽj/, // Persist the temporary directory to disk,ÁüÂj$! // getting the path where it is.Áüëj" let tmp_path = tmp_dir.keep();Ákúüšk0- // Delete the temporary directory ourselves.ÁüÏk" fs::remove_dir_all(tmp_path)?;Áüök"¨À<lÓÀ.\©l$Àl¬3ÓT
.$Élü¬q8üÙm]Z Disable cleanup of the temporary directory. If `disable_cleanup` is `true`, the temporaryÁü»n^[ directory will not be deleted when this `TempDir` is dropped. This method is equivalent toÁüžoEB calling [`Builder::disable_cleanup`] when creating the `TempDir`.Áèoúüðo_\ **NOTE:** this method is primarily useful for testing/debugging. If you want to simply turnÁüÔpSP a temporary directory into a non-temporary directory, prefer [`TempDir::keep`].Á|³qí í¬3ŠW Ãq
/$Èqú|Îqü‚~(ü¡rEB Closes and removes the temporary directory, returning a `Result`.ÁërúüórGD Although `TempDir` removes the directory on drop, in the destructorÁü¿sFC any errors are ignored. To detect errors cleaning up the temporaryÁüŠt$! directory, call `close` instead.Á³túd»tÃãÌtúüÔtWT This function may return a variety of [`std::io::Error`]s that result from deletingÁü°uEB the files and directories contained with the temporary directory,ÁüúuIF as well as from deleting the temporary directory itself. These errorsÁìÈv may be platform specific.ÁêvúüòvIF [`std::io::Error`]: http://doc.rust-lang.org/std/io/struct.Error.htmlÁÀwútÈwµäÛwú<ãwÓÀ´ïw½Ï¼ŠxÛÆÔ¦xÒ‚ÅxúüÍx6Ѽüˆy"ƒü¯yAŠæüõy0Õæüªz4çãzúüëzC@ // By closing the `TempDir` explicitly we can check that it hasÁü³{B—Òüú{B? // the directory will still be deleted when `tmp_dir` goes outÁüÁ|A«ÓŒ‡}õÓœ}Ï謵}ëèüÏ}"¨À<ö}ÓÀ,‰~¬3æy
0$“~ì~0<closure_kind>Á1<closure_signature>Á1<upvars>Á1101¹Y‡à ¬3䛬33â3̾î î¬3 îà32 È2
3Ü÷
 `£cçV `àB¤GS
ñ¼V4  4
5$¡‚± §‚¬¾ƒ¬37"7”Úƒ$݃ò ò¬3ŠW6 âƒ6
7$çƒüÖ„Œ4ä„óÓTÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ó¯ÑÍB —…±öõ
$ð„é&\ƒ…ú|³…<œ† † :Ê 4` ?ED
ú$d$9?\ P:;å<* :<ŠÒŒ< ¦:=ÝS<O €/: Kt# ?<7 .”D !üY… ôÓTÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ô¯ÑÍB 
?õ
$l é&\ ú ŒÍ  ž ?¯ÈCÇÈCäÈCC?C¹YŠW¥X¥Xµ ?¯ÈDÇÈDäÈDD?D¹YŠW¬3ÓTƒÕ$,LÙB,ÝBÝS<€/FGÈ,"FI×)¤,FJÒŒ.¦FK”I<>.0!ü‚­4MÅcMü¨8«õö÷ õ­4 ö c cˆ¢cµ
 `£cçV `àB¤GS
÷¼VL ¯L
M± ü¦­4O¿OüÌ9ø ø­4Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ø¾N ÖN
Oü«P¥QPQÎìü«Íì¥ ÈP¤×,¤×2RRR&(üÑk¬×Ñù¬×PS¡TTSPÍìÑù âÍì¡ å–"ÑùŠWl”ÑùŠW˜"éØ  æéØÓT
R¬×À×ÑùéØõ
vxprüÀ/¥VVÍìÍ5 Åÿ4WRWüökÿ4­Yÿ4UX¡YXYUÍì­Y Íì³Y Š"­YŠW­YŠW˜"³Y Åæ³YÓT
WÍ5­Y³YÍ,õ
Ö,fhceýW¯ÈZÇÈZäÈZZWóYDäB$èB¡«ÇÑÀ»È, [\æ6,ˆ[]×.¤,[^fsÁ$Aõ[`¥9$G[aëí\M¤J[bÒŒ$i¦[dReadÁ$oà [eSeekÁ$u©![fSeekFromÁD{ñL[gWriteÁ,…Ÿ![híë[ir,©é![jê
,[lˆ «+[m£ ÎN[nÁ ,‡ª+[oê2$ý…0[qÝS<ƒ€/[rü[sP[t©
Ð[uT¯|£D)<7<}ps<_fdVYFI25!$D
ŒØôöåçÖØLñËͼ¾T’±Ì¢¤tÁ˜<ÒÖ[wœ ŸÊ  Ÿ Ÿ Ÿ¾$®! žŸ

v…Šžæ6,ˆwx©Ü$#õwz¥9$)w{ëí\/¤Jw|ÒŒF¦w}£#$Vêw~ê2$k…0wrenameÁ4‰ øwunlinkÁ4 ýwƒ hard_linkÁL§ äw|Ò<Ä·¹¨ª<Aœ\O|`v„vrt\^”žGü¶¾ƒùúû ùà3 úÝîÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ û¯Ñ•k Õ
õ
 open_optionsÁdàé&\³ŒèǯÈÇÈäȹYþïáAŠWüŽ3|‘wü üà3•k §
Šõ
üÖ -úÝ œÀ ܺ ý ýà3•k é ¹jä 
T—
4


ü·
!
 ¯ÈÇÈäȹY¿Y•kó‚üÍ.wþ þà3•k á
Ü4ÿ¯ÈÇÈäȲ¸•kŠWü§;ÿ ÿ›: à3•k »
Ìõ
üSÛ à3 à3æy š¾told_pathÁDÊzD¡ overwriteÁL²l™µŒËŒîT‚ŒŽįw¤]¤]V¦]Á‚]üß3ø¤”&Àü§!'σ ƒà3æy ¶!
ž ³!
ü¨ %üÜ:7 Create a new temporary file. Also see [`tempfile_in`].Áúü›MJ The file will be created in the location returned by [`env::temp_dir()`].Áéú·áüúü€]Z This variant is secure/reliable in the presence of a pathological temporary file cleaner.ÁÞú´â³àùúüýda The temporary file will be automatically removed by the OS when the last handle to it is closed.Áüâpm This doesn't rely on Rust destructors being run, so will (almost) never fail to clean up the temporary file.ÁÓúÃãäúüè63 If the file can not be created, `Err` is returned.ÁŸ úµä² úÓÀܾ ·Æ¼Ú ÛÆò úüö 1ˆÇü¨
ÃÇÈ
úüÌ
0øÇüý
"¨À<  ÓÀ •k
 üˆ>üô RO Create a new temporary file in the specified directory. Also see [`tempfile`].ÁÇ ú ·áÚ úüÞ ]ùîü¼
li If the temporary file isn't created in [`env::temp_dir()`] then temporary file cleaners aren't an issue.Á©ú´­³àÄúüÈd…ðü­póðžúÃã¯úü³6’òêúµäýú<ÓÀô‰ use tempfile::tempfile_in;Á¼¨ÛÆÀúüÄ<9 // Create a file inside of the current working directoryÁü&# let mut file = tempfile_in("./")?;Á¨úü¬0øÇüÝ"¨À<€ÓÀ\šB•k¡¢¢²ò Âò
¡šBr5üë)Ó5¤ë¤ü©-6Ó5££
¤ÈŒ7üö(Ø6¦ë¦ü³,6Ø6¥¥
¦È8üþ&Åc¨ü«8® 6  c cˆ¢cµ
 `£cçV `àB¤GS
¼V§ ²§
¨± ¹üº&¿ªüç9 6Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ ÍÖ© ñ©
ªœöüÆA> A path to a named temporary file without an open file handle.ÁˆúüŒOL This is useful when the temporary file needs to be used by a child process,Á„Ü
for example.Áíúüñ`] When dropped, the temporary file is deleted unless `disable_cleanup(true)` was called on theÁüÒc` builder that constructed this temporary file and/or was called on either this `TempPath` or theÁü¶?< `NamedTempFile` from which this `TempPath` was constructed.ÁDØ6‹Ê€í¨W¬­¿|$[««åq¬¥[««l¿Ø6¯±³µ·¹»üŽ%(üÓ(% Close and remove the temporary file.Áúüˆ?< Use this if you want to detect errors in deleting the file.ÁÌúÃãåúüí52 If the file cannot be deleted, `Err` is returned.Á§ úµä úä»üÜ ÂÉ!úü‰!%" let file = NamedTempFile::new()?;Á³!úü»!63 // Close the file, but keep the path to it around.Áüö!%" let path = file.into_temp_path();Á "úü¨"EB // By closing the `TempPath` explicitly, we can check that it hasÁüò"FC // been deleted successfully. If we don't close it explicitly, theÁü½#GD // file will still be deleted when `file` goes out of scope, but weÁü‰$63 // won't know whether deleting the file succeeded.Á”Ä$ path.close()?;ÁüÛ$"¨À<%ÓÀ,•%Ø6æy®®âÁ$Ÿ%ø%¯¯È°ÇȰäȰ°¯°¹Y‡àó‚üç0Uüô&2/ Persist the temporary file at the target path.Á«'úü³'LI If a file exists at the target path, persist will atomically replace it.Áü„(@= If this method fails, it will return `self` in the resultingÁÌÉ( [`PathPersistError`].Áç(úüï(FC Note: Temporary files cannot be persisted across filesystems. AlsoÁüº)>; neither the file contents nor the containing directory areÁüý)FC synchronized, so the update may not yet have reached the disk whenÁ´È* `persist` returns.Áã*útë*·áþ*úü†+IF Only use this method if you're positive that a temporary file cleanerÁüÔ+KH won't have deleted your file. Otherwise, you might end up persisting anÁì¤, attacker controlled file.ÁÆ,údÎ,Ããß,úüç,GD If the file cannot be moved to the new location, `Err` is returned.Á³-út»-µäÎ-úlÖ-仼è-ÛÆü„. ÂÉ©.úü±.)& let mut file = NamedTempFile::new()?;Áüß.0øÇ”/úüœ/%§‡üÆ/&# path.persist("./saved_file.txt")?;Áüñ/"¨À<˜0ÓÀ¤0úü¬063 [`PathPersistError`]: struct.PathPersistError.htmlÁ<î0Ø6šBúx®¡²²®²ò ö0Âò\ù0
±šB$Š1Êz`<"$üÁ?vüÚ5VS Persist the temporary file at the target path if and only if no file exists there.Áµ6úü½6LI If a file exists at the target path, fail. If this method fails, it willÁüŽ785 return `self` in the resulting [`PathPersistError`].ÁË7úüÓ7LI Note: Temporary files cannot be persisted across filesystems. Also Note:Áü¤8DA This method is not atomic. It can leave the original link to theÁÔí8 temporary file behind.ÁŒ9út”9·á§9úü¯9I¥üý9KøìÍ:Ì‘ï:úd÷:Ããˆ;úü;LI If the file cannot be moved to the new location or a file already existsÁìá; there, `Err` is returned.Áƒ<út<µäž<úl¦<ä»ü¸< ÂɼÝ<ÛÆù<úü=)
;E')üâbBü€^_û§|ä^ã¨ø^úü€_]ˆ©üâ_L侀`úü»``] Relative paths are resolved relative to the current working directory. If the passed path isÁü a\Y empty or if the current working directory cannot be determined, this function returns anÁTb error.Ábúü˜bEB **NOTE:** this function does not check if the target path exists.Áléb´„®¼ºº® ¯”ýb±¯l‚c
¹´„õ
LüÁg?ÏgÓTØ6®®¶…õ
$Ógú|âgäìhØ6½Àc½üi8’iŠ Ø6 Š c cˆ¢cµ
 `£cçV `àB¤GS
¼V¼ –i¼
½$—i± i´ìiØ6¿"¿”‰j$ŒjŒ ŒØ6ŠW¾ ‘j¾
¿$–j¼…kØ6ÁÂê!ë!Â\£k4¨kÀÀà3ļk,¿k Ø6 à3À ÅkÀ
Â$ÆkìókØ6ÄâÄÌ—l4šlŽ ŽØ6 Žà3à ¡lÃ
Ä$¢lôÏlØ6ÆâÆÔôl4÷l Ø6 Ü7Å þlÅ
Æ$ÿlü«„"ܸm A named temporary file.ÁÔmúüØmGD The default constructor, [`NamedTempFile::new()`], creates files inÁü nEB the location returned by [`env::temp_dir()`], but `NamedTempFile`Áüæn@= can be configured to manage a temporary file in any locationÁü§o52 by constructing with [`NamedTempFile::new_in()`].ÁÝoútáo·áðoúüôoGD Most operating systems employ temporary file cleaners to delete oldÁü¼pMJ temporary files. Unfortunately these temporary file cleaners don't alwaysÁüŠqEB reliably _detect_ whether the temporary file is still being used.ÁÐqúüÔq>; Specifically, the following sequence of events can happen:Á“rúü—rC@ 1. A user creates a temporary file with `NamedTempFile::new()`.ÁœÛr 2. Time passes.ÁüïrOL 3. The temporary file cleaner deletes (unlinks) the temporary file from theÁ”¿s filesystem.ÁüÒsNK 4. Some other program creates a new file to replace this deleted temporaryÁd¡t file.Áü®tPM 5. The user tries to re-open the temporary file (in the same program or in aÁüÿtLI different program) by path. Unfortunately, they'll end up opening theÁüÌu@= file created by the other program, not the original file.Ávúü‘v)& ## Operating System Specific ConcernsÁ»vúü¿vIF The behavior of temporary files and temporary file cleaners differ byÁ¬‰w operating system.ÁŸwú|£w ### WindowsÁ³wúü·wNK On Windows, temporary files are, by default, created in per-user temporaryÁü†xMJ file directories so only an application running as the same user would beÁüÔxLI able to interfere (which they could do anyways). However, an applicationÁü¡yGD running as the same user can still _accidentally_ re-create deletedÁüéyOL temporary files if the number of random bytes in the temporary file name isÁt¹z too small.ÁÈzúlÌz
### MacOSÁÚzúüÞzKH Like on Windows, temporary files are created in per-user temporary fileÁüª{FC directories by default so calling `NamedTempFile::new()` should beÁ¤ñ{ relatively safe.Á†|úlŠ|
### LinuxÁ˜|úüœ|MJ Unfortunately, most _Linux_ distributions don't create per-user temporaryÁüê|OL file directories. Worse, systemd's tmpfiles daemon (a common temporary fileÁüº}JG cleaner) will happily remove open temporary files if they haven't beenÁü…~%" modified within the last 10 days.Á«~ú´¯~³àÆ~úüÊ~A> If the program exits before the `NamedTempFile` destructor isÁüŒ@= run, the temporary file will not be deleted. This can happenÁüÍKH if the process exits using [`std::process::exit()`], a segfault occurs,Áü™€PM receiving an interrupt signal like `SIGINT` that is not handled, or by usingÁüê€OL a statically declared `NamedTempFile` instance (like with [`lazy_static`]).Áºúü¾FC Use the [`tempfile()`] function unless you need a named file path.Á…‚úü‰‚$éÔü®‚)& [`NamedTempFile::new()`]: #method.newÁüØ‚/, [`NamedTempFile::new_in()`]: #method.new_inÁüˆƒO–‹ü؃R«Öl¶„ÈÈÍìÎ8DÄ„–8sÅ€ÝZaZÉÊ Ä„›:tÔ„$Ô„[ÇÇØ6<è„$è„[ÇÇÎ8üô„'ÌÌùÓ ù„–8ÍÀcÍü¢…8¥… –8  c cˆ¢cµ
 `£cçV `àB¤GS
¼VË ©…Ë
ÍÎ8$ª…±›Oüš†(ÏÏùÓ Ÿ†–8ÐâÐÌ׆4Ú† –8 à3Î á†Î
ÐÎ8$â†üˇ!ü:7 Error returned when persisting a temporary file fails.ÁdÖ‡ÒÒùÓDã‡è8Ø"ÈþŒLÿÓÔ ã‡›:¤”ˆäó‡ The underlying IO error.Á,˜ˆÑÑÓ5Ôåˆü®ˆ2/ The temporary file that couldn't be persisted.Á$éˆÑÑ–8ü„‰&ÖÖùÓ ‰‰è8×Àc×ü±‰8´‰ è8  c cˆ¢cµ
 `£cçV `àB¤GS
¼VÕ ¸‰Õ
×Î8$¹‰±”Rü©Š+ÙÙùÓ ®ŠÓ5ÚëÚüéŠ,$ìŠè8Ó5ØØ
ÚÎ8ÈSüµ‹2ÜÜùÓ º‹–8ÝëÝüü‹3$ÿ‹è8–8ÛÛ
ÝÎ8È TüÎŒ(ßßùÓ ÓŒè8àÅcàüýŒ8˜ è8 ˜ c cˆ¢cµ
 `£cçV `àB¤GS
¼VÞ Þ
àÎ8$…±£Uü‡Ž(ââùÓ ŒŽè8ã¿ãü¶Ž94¹Žš šè8Û¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡zÙ šÍÖá ÀŽá
ãÎ8$ÁŽÄ•ã9åæèêíïü¨)ü´&# Create a new named temporary file.Áßúüç+Ðú·á²úüºC@ This will create a temporary file in the default temporary fileÁü‚‘JG directory (platform dependent). This has security implications on manyÁüÑ‘@= platforms so please read the security section of this type'sÁ”–’ documentation.Á­úüµ’ Reasons to use this method:ÁÙ’úüá’IF 1. The file has a short lifetime and your temporary file cleaner isÁü¯“74 sane (doesn't delete recently accessed files).Áë“úüó“JG 2. You trust every user on your system (i.e. you are the only user).Á”úüÊ”KH 3. You have disabled your system's temporary file cleaner or verifiedÁüš•@= that your system doesn't have a temporary file cleaner.Áß•úüç•# Reasons not to use this method:Áúü—–+( 1. You'll fix it later. No you won't.ÁÇ–úüÏ–LI 2. You don't care about the security of the temporary file. If none ofÁü —IF the "reasons to use this method" apply, referring to a temporaryÁüî—DA file by name may allow an attacker to create/overwrite yourÁü·˜KH non-temporary files. There are exceptions but if you don't alreadyÁü‡™*' know them, don't use this method.Á¶™úd¾™ÃãÏ™úü×™6’ò’šútššµä­šúüµš<9 Create a named temporary file and write some data to it:Áöšúlþšä»¼ÛÆü¬› ÂÉÑ›úüÙ›)“‡œúüœ0øÇüÄœ"¨À<ëœÓÀ÷œúüÿœ$ψ¯´±ää
åü¬ BüžA> Create a new named temporary file in the specified directory.ÁÇžúÔÏž This is equivalent to:Áîžúlöž
```ignoreÁüˆŸ# Builder::new().tempfile_in(dir)Á<°ŸÓÀ¼ŸúüÄŸ-* See [`NamedTempFile::new()`] for details.ÁöŸúüþŸ)ØÑ4³ šB´±ä¡ççä²ò º Âò\½ 
æšB’Xüâ¢Kü¤¡IF Create a new named temporary file with the specified filename suffix.Áò¡úüú¡-âñ¬¢úü´¢)ØÑ\é¢ßG´±ä¤ééä« õ¢»dø¢
èßG³&çYüÙ¦}üì£IF Create a new named temporary file with the specified filename suffix,Áüº¤ in the specified directory.ÁÞ¤úÔæ¤Ðð…¥úl¥ñüŸ¥96 Builder::new().suffix(&suffix).tempfile_in(directory)Á<Ý¥ÓÀé¥úüñ¥-âñ£¦úü«¦)ØÑtà¦ßG˜N´±ä¤ë¡ììëä« ï¦ð¦ €§»dò¦ˆ§\ƒ§
êßG˜N³&¹[Ã[9;=?üÚ©Küœ¨IF Create a new named temporary file with the specified filename prefix.Áê¨úüò¨-âñ¤©úü¬©)ØÑ\á©ßG´±ä¤îîä« í©»dð©
íßG&H]üÑ­}üäªIF Create a new named temporary file with the specified filename prefix,Áü²«€öÖ«úÔÞ«Ððý«úl…¬ñü—¬96 Builder::new().prefix(&prefix).tempfile_in(directory)Á<Õ¬ÓÀá¬úüé¬-âñ›­úü£­)ØÑtØ­ßG˜N´±ä¤ð¡ññðä« ç­ð¦ ø­»dê­ˆ§\û­
ïßG˜N&__9;=?Ä’¯óóùÓ —¯–8ôõöøúûüýþÿ,.Ü®³ü±¯" Get the temporary file's path.Áدút௷áó¯úüû¯HE Referring to a temporary file's path may not be secure in all cases.ÁüȰKH Please read the security section on the top level documentation of thisÁ¬˜± type for details.Á²±útº±µäͱúlÕ±ä»üç± ÂÉŒ²úü”²%¬†¾²úüƲ" println!("{:?}", file.path());Áüí²"¨À<”³ÓÀ$µ³ –8 à3ò º³ò±¢$»³üȹ$üê³(õƒ—´úüŸ´?³„ã´údë´Ããü´úü„µ5¡…¾µútƵµäÙµúláµä»üóµ Âɘ¶úü ¶%¬†ʶúüÒ¶JG // By closing the `NamedTempFile` explicitly, we can check that it hasÁü¡·B—Òüè·:7 // the file will still be deleted when `file` goes outÁü§¸<9 // of scope, but we won't know whether deleting the fileÁŒè¸õÓ”þ¸ file.close()?;Áü•¹"¨À<¼¹ÓÀ,Ϲ–8æyòò
õÎ8æ`ü«ÄOü¾º2ã‹õºúüýºL«Œüλ@¬“¼ [`PersistError`].Á­¼úüµ¼JG **Note:** Temporary files cannot be persisted across filesystems. AlsoÁü„½>ÉŽüǽF´’¾à­¾útµ¾·áȾúüоIF This method persists the temporary file using its path and may not beÁüž¿DA secure in all cases. Please read the security section on the topÁüç¿1. level documentation of this type for details.ÁÀúd¥ÀÃã¶Àúü¾ÀG˜’ŠÁút’Áµä¥Áúl­Á仼¿ÁÛÆüÛÁ ÂÉ€ÂúüˆÂ%¬†²ÂúüºÂ?< let mut persisted_file = file.persist("./saved_file.txt")?;ÁüþÂ:7 writeln!(persisted_file, "Brian was here. Briefly.")?;Áü½Ã"¨À<äÃÓÀðÃúüøÃ.+ [`PersistError`]: struct.PersistError.htmlÁ<²Ä–8˜NôÆò¡÷÷ò𦠺Ĉ§\½Ä
öÎ8˜NRcÊz\c&(üˆÖYüöÇV­–ÑÈúüÙÈL™—
ÌnÄçñã9ƒü¦ù(ü†ò'$ Securely reopen the temporary file.Á²òúüºòIF This function is useful when you need multiple independent handles toÁüˆóKH the same file. It's perfectly fine to drop the original `NamedTempFile`ÁüØóKH while holding on to `File`s returned by this function; the `File`s willÁü¨ô52 remain usable. However, they may not be nameable.ÁâôúdêôÃãûôúüƒõ63 If the file cannot be reopened, `Err` is returned.Á¾õútÆõ·áÙõúüáõGD Unlike `File::open(my_temp_file.path())`, `NamedTempFile::reopen()`Áü­öFC guarantees that the re-opened file is the _same_ file, even in theÁüøö52 presence of pathological temporary file cleaners.Á²÷útº÷µäÍ÷úlÕ÷ä»üç÷ ÂÉŒøúü”ø%¬†¾øúüÆø(% let another_handle = file.reopen()?;Áüóø"¨À<šùÓÀ4­ùŸ Ÿã9•k ´ù
ƒ$µù«úƒ¯ÈÇÈäȃ¹Y‡à¢üÒú'ùÓ ×úà Î8$Úú–8‡á â å æ ç OQü€û7$ƒû ¡  –8 ¡ñá´à ˆû
Î8YqçVvpíû¯ÈˆÇȈäȈˆ‹áüˆüQl‹ü¢£¤ ¢–8 £
ö ö ÷ ±åù ˆ¦ èóÇãp9ܤ´à ™ü
Î8Ésæâr³ý¯ÈŠÇÈŠäÈŠŠ¼åüÎýA\Ñý¥¦ ¥–8 ¦‰ë´à Ýý
Î8-vçVJuæþ¯ÈŒÇÈŒäÈŒŒ£êüÿCt„ÿ§¨ §–8 ¨íï´à “ÿ
Î8xçVœwž€¯ÈŽÇÈŽäÈŽŽ‡ïü¹€:T¼€©ª ©–8 ªñáæy Ç€
Î8zçV¿yɯÈÇÈäÈØóüâ"8««Þ9’˜šá â å æ ç ˜šü‹‚7$Ž‚¬­ ¬Þ9 ­ñá´à “‚
8$˜‚çVž‚ô‚¯ÈÇÈäȹY‡à¢üƒQl’ƒ®¯° ®Þ9 ¯
ö ö ÷ ±åù ˆ¦ èóÇãp9ܰ´à  ƒ
8$¥ƒæ$«ƒ¶„¯ÈÇÈäȹY‡à¢üÑ„A\Ô„±² ±Þ9 ²‰ë´à à„
8$å„çVë„å…¯ÈÇÈäȹY‡à¢ü€†Ctƒ†³´ ³Þ9 ´íï´à ’†
˜8$—†çV™‡˜¯ÈÇÈäȘ¹Y‡à¢ü´‡:T·‡µ µÞ9 ñáæy ‡
š8$LJçV͇¦ˆš¯ÈÇÈäÈš¹Y‡à¢ü¿ˆ)ùÓ ĈŸ!Î8,Lj–8ž ¢¤¦ !¤!¡!¥!§!¦¤ ž¢OQüïˆ4,òˆ·¸ ·–8 ¸ñá´àœ øˆœ
žÎ8À|çVá{Ú‰ž¯ÈŸÇÈŸäÈŸŸžö÷ü‚Š%,…й ¹–8æyœ ‹Šœ
 Î8¼~ÛŠ ¯È¡ÇÈ¡äÈ¡¡ üüöŠKtùŠº»¼ º–8 »
æLæLçL‹€éLˆ¦ —óë@M$T¼´àœ ˆ‹œ
¢Î8æ9€œŒ¢¯È£ÇÈ£äÈ££¢–€ü·Œ5LºŒ½¾ ½–8 ¾ñáæyœ ÄŒœ
¤Î8çV]‚Á¤¯È¥ÇÈ¥äÈ¥¥¤ö„üÜB¿À ¿–8äÈäÈ®ŸæÈÁŸ `çÈÀ `üöMõô]TdÀæyœ éœ
¦Î8Y…×{„󎦯ȧÇȧäȧ§¦”‰üŒ#8ÁÁÞ9©«­¯± !¤!¡!¥!§!±¯­©«ü¶4Âà ÂÞ9 Ãñá´à¨ ¿¨
©8çVÊ©¯ÈªÇȪäȪª©ª¹Y‡à¢üÅ%Ä ÄÞ9æy¨ Ψ
«8“‡š‘«¯È¬ÇȬäȬ¬«Ìüµ‘Kt¸‘ÅÆÇ ÅÞ9 Æ
æLæLçL‹€éLˆ¦ —óë@M$TǴਠǑ¨
­8$Ì‘æ$Ò‘×’­¯È®ÇÈ®äÈ®®­®¹Y‡à¢üò’5Lõ’ÈÉ ÈÞ9 Éñáæy¨ ÿ’¨
¯8$„“çVŠ“Þ“¯¯È°ÇȰäȰ°¯°¹Y‡à¢üù“BLü“ÊË ÊÞ9äÈäÈ®ŸæÈÁŸ `çÈÀ `üöMõô]TdËæy¨ †”¨
±8$‹”ב”ò”±¯È²ÇȲäȲ²±²¹Y‡à¢ü‹•'´´ùÓ ©!Î8$“•–8µª!µ#%ü¹•4$¼•Ì Ì–8Ÿ“味 Á•³
µÎ8Ê“£–µ¯ÈÇÈäȵ¼’ü¼–"8ÍÍÞ9¸ª!¸üå–4$è–Î ÎÞ9Ÿ“å‘· í–·
¸8$ò–Ê“ø–Ë—¸¯È¹Çȹäȹ¹¸¹¹Y‡à¢üŠ˜'ú$î—úú
”ô—Ôí—üä—%»»ùÓ ˜,Î8$’˜–8¼Ž,¼#%ü¸˜!,»˜Ï Ï–8ÎNÎN£ ÐN¯–ä+ÑN½–ä+§]òÞ^Ϻ Á˜º
¼Î8$˜üª™-ú$Ž™úú
””™Ôü„™%¾¾ùÓ ¯™«+Î8<²™8¿¬+¿#%äì™Lï™Ð Ж8¹Y½ ù™½
¿Î8$ú™ü”±ÑÒÓT ÑÝîÛ¼ݼÞ¼©ß¼à¼ÛἈcSñŸ«‡z٠үѴ± Õ²íõ
ñäé&\ë¾$›ž—ŸÀ¯ÈÁÇÈÁäÈÁÁÀÁ¹YŠWÓT•Ò4µŸÀ¯ÈÂÇÈÂäÈÂÂÀ¹Y›:ã9õÒ\îB<òBÑÒÔÀÉëD  ÃÄ
\& ¡ÃÅ¥9$@ÃÆÒŒ$T¦ÃÈ£š4ZöJÃÉõÜ$bà ÃÊ‹Ý$h©!ÃË¡ÝDnñLÃÌ»Ý,xŸ!ÃÍê2$…0ÃÏÝS<–€/ÃЬè”Ùl7Æ<JO¦¨subdL„VXEGüž;üŒGD Create a new [`SpooledTempFile`]. Also see [`spooled_tempfile_in`].ÁÔú·áçúüëOL This variant is secure/reliable in the presence of a pathological temporaryÁŒ» file cleaner.ÁÍú¬Ñ # Backing StorageÁçúüëb_ By default, the underlying temporary file will be created in your operating system's temporaryÁüÎ[X file directory which is _often_ an in-memory filesystem. You may want to consider usingÁüª ]Z [`spooled_tempfile_in`] instead, passing a storage-backed filesystem (e.g., `/var/tmp` onÁ\ˆ
 Linux).Á
ú´˜
³à¯
úü³
LI The temporary file will be automatically removed by the OS when the lastÁü€ OL handle to it is closed. This doesn't rely on Rust destructors being run, soÁüÐ <9 will (almost) never fail to clean up the temporary file.Á út‘ µä  ú ÓÀü¬ # use tempfile::spooled_tempfile;Á¼Ð ÛÆè úüì (% let mut file = spooled_tempfile(15);Á
úü™
" writeln!(file, "short line")?;Áü¼
 assert!(!file.is_rolled());ÁÜ
úüà
GD // as a result of this write call, the size of the data will exceedÁü¨JG // `max_size` (15), so it will be written to a temporary file on disk,Áüó/, // and the in-memory buffer will be droppedÁü£&# writeln!(file, "marvin gardens")?;ÁôÊ assert!(file.is_rolled());Áüé"¨ÀÓÀ„¥ùAà;
Ñß)V‘üVü‚da Construct a new [`SpooledTempFile`], backed by a file in the specified directory. Use this when,Áüçda e.g., you need the temporary file to be backed by a specific filesystem (e.g., when your defaultÁüÌEB temporary directory is in-memory). Also see [`spooled_tempfile`].Áúü–da **NOTE:** The specified path isn't checked until the temporary file is "rolled over" into a realÁüû`] temporary file. If the specified directory isn't writable, writes to the temporary file willÁüÜ(% fail once the `max_size` is reached.Áœ–ùAšBà;¡ÓÓ²ò ªÂò
ÒšBß)Þ‘ç‘"$üÞX”áÃÓÔ Ó™› Ô³Ÿ•k ü
Ô窻 ޤ‰à;Ö×ÙÚÛÜÝüá.ü¤(% Construct a new [`SpooledTempFile`].Á.\ÑèùAà;ÕÕ–£ß)Dìü›Iü±UR Construct a new [`SpooledTempFile`], backed by a file in the specified directory.Á.\ùAšBà;Õ¡ØØÕ²ò ©Âò“¤ß)Š“üîüŸ:7 Returns true if the file has been rolled over to disk.Á.\ÞÕ Õà;Õ ÿÕ
Ù$€üŠ!(ü› JG Rolls over to a file on disk, regardless of current size. Does nothingÁÜê  if already rolled over.Á$!Ö Öà;æyÕ –!Õ
Ú$!ü¡#=üð",) Truncate the file to the specified size.Á<¨#× ×à;æyÕ °#Õ
Û$µ#$»#ü¡'&üÖ&63 Consumes and returns the inner `SpooledData` type.Á.\'T¨'à;‘;ÕÕ
Ü$³'üÀ(*üè'SP Convert into a regular unnamed temporary file, writing it to disk if necessary.ÁLÇ(à;•kÕÕ
Ý$Ñ(ì£*à;ßàáâãá â å æ ç âãáßàüÇ*7$Ê*ØÙ Øà; Ùñá´àÞ Ï*Þ
ß$Ô*çVÚ*ü®,Ql±,ÚÛÜ Úà; Û
ö ö ÷ ±åù ˆ¦ èóÇãp9ÜÜ´àÞ ¿,Þ
à$Ä,æ$Ê,üÃ.A\Æ.ÝÞ Ýà; Þ‰ë´àÞ Ò.Þ
á$×.çVÝ.üÂ0CtÅ0ßà ßà; àíï´àÞ Ô0Þ
â$Ù0çVß0üÉ2:TÌ2áâ áà; âñáæyÞ ×2Þ
ã$Ü2çVâ2ô½4à;åæç !¡!¤!æåçüâ44,å4ãä ãà; äñá´àä ë4ä
å$ð4çVö4üä8Ktç8åæç åà; æ
æLæLçL‹€éLˆ¦ —óë@M$Tç´àä ö8ä
æ$û8æ$9üÝ=%,à=è èà;æyä æ=ä
ç$ë=ì¬?à;éª!éüÐ?4$Ó?é éà;Ÿ“å‘è Ø?è
é$Ý?Ê“ã?DûB$ÿBõøæ6,ˆê츶Dêíê2$1…0êïÝS<7€/êðÒŒK¦êò repeat_withÁ\U ÙKêó\vPêôD˜š‰L%z|jlE\^ŒODÌh5ü„`<‡êêëì ê­Ã ëÜ7 ìÜ7ùA®· ì¶îÈ&4¨³&4¸rand_lenÁDÈ ÁõõùAÞõ¯È÷ÇÈ÷äÈ÷÷õ÷ŠW™Æüݬíîï íà3 îÜ7 ïÜ7ùA¬¸ù®£ù—$úúù Íìǯ òÍ쬸üÑ$“"¬¸²¸üÖ¬¸²¸˜"ù®
øǯ¬¸¾Çj &v ³&€ ­*‰ ± Îtvprýø¯ÈûÇÈûäÈûûø‡¾\†CŽCƒ üý¡üýê2$…0üÿÝS<$€/üOnceLockÁD߯üDmLJL:<ÌÂ&üê)ü¯¯°OnceCellÁ²ˆ¥ ý!¿Â&"ÖÓTC ÿÿÿÿÿÿ üÌ <ü¨`] Override the default temporary directory (defaults to [`std::env::temp_dir`]). This functionÁü‰da changes the _global_ default temporary directory for the entire program and should not be calledÁüîa^ except in exceptional cases where it's not configured correctly by the platform. ApplicationsÁüÐOL should first check if the path returned by [`env::temp_dir`] is acceptable.Á úü¤^[ If you're writing a library and want to control where your temporary files are placed, youÁüƒ^[ should instead use the `_in` variants of the various temporary file/directory constructorsÁüâSP ([`tempdir_in`], [`tempfile_in`], the so-named functions on [`Builder`], etc.).Áúüºc` Only the first call to this function will succeed. All further calls will fail with `Err(path)`ÁüžHE where `path` is previously set default temporary directory override.Áçúüë`] **NOTE:** This function does not check if the specified directory exists and/or is writable.ÁŒÓ ð ðà3Ö¿Ù¿Ú¿«Û¿ˆÜ¿Ý¿Þ¿ˆ‚†f|Â
ŠWÓT ë 
ƒõ
Ñ
ƒ¯ÈÇÈäȃ¹Y¾è økäñüá `] Returns the default temporary directory, used for both temporary directories and files if noÁü &# directory is explicitly specified.Áé úüí c` This function simply delegates to [`std::env::temp_dir`] unless the default temporary directoryÁüÑ
;8 has been overridden by a call to [`override_temp_dir`].Áúü‘_\ **NOTE:** This function does not check if the returned directory exists and/or is writable.ÁDøÓTƒùÀ¯ÈÇÈäȹY•ÒÓTŠWTœCÆÆžÆžÆ\ÐC¯Æ¯ÆÁÆÁÆÓÆÓÆåÆåÆ÷Æ÷Æ Ç Çt¾DÇÇQÇü·G 8ñ8òñòï=˜´˜¤ÞG<áGï=
˜88äóI&š&šË<œŸ¡¢£¤¥¦§ª«®±øIüI¤ZÜ–J Create a new `Builder`.Á¶Jút¾JµäÑJúüÙJ>; Create a named temporary file and write some data into it:ÁœKú<¤KÓÀİK use std::ffi::OsStr;ÁÔÍKÚ„ìKúüôK'$ let named_tempfile = Builder::new()Áü L$! .prefix("my-temporary-note")Á¼ÉL .suffix(".txt")Á´åL .rand_bytes(5)Á¬€M .tempfile()?;ÁšMúì¢M let name = named_tempfileÁ|ÄM .path()ÁüØM-* .file_name().and_then(OsStr::to_str);ÁŠNúô’N if let Some(name) = name {ÁüµN74 assert!(name.starts_with("my-temporary-note"));ÁüñN(% assert!(name.ends_with(".txt"));ÁüžOB? assert_eq!(name.len(), "my-temporary-note.txt".len() + 5);Á,åOÍ®üïO"¨À<PÓÀ¢PúüªP6ØÎåPú<íPÓÀ¼ùPÛÆ´•Q½ÏİQå«ÔÍQÚ„ìQúäôQ let dir = Builder::new()Áü•R# .prefix("my-temporary-dir")Á´½Rž­¤ØR .tempdir()?;ÁñRúüùR=²Ðü»S,ùÐüìS0øÇ¡Túü©TDÉÑüòTB—Òü¹U>ãÒüüUA«ÓŒÂVõÓ|ØVÔŒìV§Ôü‚W"¨À<©WÓÀµWúü½WLI Create a temporary directory with a chosen prefix under a chosen folder:ÁŽXúl–Xä»Ô¨XÚ„ÇXúäÏXé±üðX#²ü˜Y-* .tempdir_in("folder-with-tempdirs")?;ÁüÊY"¨À<ñYÓÀ.\ýY”ZË<
œ&&ü»]NüÇZ! Set a custom filename prefix.ÁíZúüõZ0- Path separators are legal but not advisable.Á¤ª[ Default: `.tmp`.ÁÃ[útË[µäÞ[ú<æ[ÓÀÔò[Ú„‘\úü™\' ¬üÅ\$Ѭ¬î\½­üˆ]"¨À<¯]ÓÀ4Â]ó óË< &䣺¤žž ã]Îìä É]àäÜ7dÌ]
&&ä$è]&²:<ü±aNüË^! Set a custom filename suffix.Áñ^úüù^0¦·œ®_ Default: empty.ÁÆ_útÎ_µäá_ú<é_ÓÀÔõ_Ú„”`úüœ`' ¬¼È`þ¬¬ä`½­üþ`"¨À<¥aÓÀ4¸aô ôË< &äʽ¤   ÙaẠ¿aòºdÂa
Ÿ&&ä$Þa³&¼²/1üñd6üÁb# Set the number of random bytes.ÁébúŒñb Default: `6`.Á‡cútcµä¢cú<ªcÓÀÔ¶cÚ„ÕcúüÝc' ¬´‰dž­¬¤d½­ü¾d"¨À<ådÓÀTødõ õË<ùAÎÀ ƒe
¡&&$ˆerandÁ$Žeüªh3üâe85 Configure the file to be opened in append-only mode.ÁŸfú¬§f Default: `false`.ÁÁfútÉfµäÜfú<äfÓÀÔðfÚ„gúü—g' ¬¬Ãg .append(true)Á¬Ýg½­ü÷g"¨À<žhÓÀ4±h
 `£cçV `àB¤GS
¼V¹=¹
º›)±›)Ü»üê?< Error returned when persisting a temporary file path fails.Á„Æ6€è¿«(œ¼½¤þäÝÁØ,‚»»Ó5”Ôü˜74 The temporary file path that couldn't be persisted.Á$Ø»»Ø6Ã5Ã56¿Àc¿Ã5Ã5 6  c cˆ¢cµ
 `£cçV `àB¤GS
¼V¾³¾
¿Ã5±Ã5¤Ùü¡B? A wrapper for the two states of a [`SpooledTempFile`]. Either:ÁäúüèB? 1. An in-memory [`Cursor`] representing the state of the file.Áä« 2. A temporary [`File`].Á;ëÇV=ùÿ‹&ÁÂÄÅÂÙ›‘;ÅÆ›:‘; ÀÀ
™›‘;ÀÀ‹ªÀÀ™›¯Å ¯ÅÀÀ
ůůś:‘;ÀÀöªÀÀ›:‘;ÈÀcÈˆŠ ˆ‘;  c cˆ¢cµ
 `£cçV `àB¤GS
мVÇÑÇ
ȱdŒÔ¥ü¤KH An object that behaves like a regular temporary file, but keeps data inÁüðIF memory until it reaches a configured size, at which point the data isÁüºLI written to a temporary file on disk, and further operations use the fileÁd‡ on disk.Á
à;9hxœÊËÌÃÉÉùA¤ÛÛÃÉɳŸ”õÃÉÉ‘;ÅŽÅŽà;ÎÀcÎÅŽÅŽŒ à; Œ c cˆ¢cµ
 `£cçV `àB¤GS
¼VÍ Í
ÎÅŽ±ÅŽ4Œ;æ¯ÈÏÇÈÏäÈÏÏæÏ ý€ŠWÔÿEü–EA> Create a new temporary file or directory with custom options.Á
<ŠF&Ñ&ÒÑÒË<ÇLñÂRŠyÓÔÕÖר’F–FŒ FT FÐÐùAŒ·F4·FÐÐ &Ü7ŒÎF4ÎFÐÐ &Ü7dåF4åFÐÐü÷F \÷FÐÐêЬG|GÐЧ§&Ú&ÛÚÛË<ÜÀcÜðòîð§§Ž ŽË<  c cˆ¢cµ
 `£cçV `àB¤GS
¼VÙ#áEÙ
Ü&&§±§­­&Þ&ßßÞË<àÙàíðíð­­ Ë<Ë<Ý$èEÝ
à&&­&â&ããâË<ää Ë<ŠWá%ïEá
ä&&•°•°&æ&ççæË<DGDG•°•°&é&êêéË<ë·ß뎎•°•° Ë< Ë<è&óEè
ë&&•°¹
•°^Ô-Ô-¢øÔ-ã÷Ô- ª‚Ô-¾‚Ô-‚÷Ô-ëöÔ-´õÔ-¬óÔ- ¹Ô-ÍÔ-÷òÔ-ƒëÔ- îÔ- ÇÔ-¶êÔ-Ô-•éÔ-ÙèÔ- ÈÔ-èÔ- «Ô-˜çÔ-žßÔ- ¼Ô-ÐÔ-êÞÔ-Ô-ìÃÔ-  iÔ-´iÔ-ŠÃÔ-øÂÔ-†ÂÔ-ÂÔ-©³Ô- ³…Ô-Ç…Ô-³Ô-é°Ô- ‰Ô-Ö‰Ô-ò®Ô- ŽÔ-¢Ô-®Ô-éœÔ-Ô-÷ŒÔ-Ô-‰ƒÔ-G‚Ô- ˜ûÔ-SÔ- ªüÔ-¿üÔ-¤€Ô- íýÔ-îÔ- £ÿÔ-9Ô- ×€Ô- ðÔ-5~Ô- £‚Ô-,}Ô- ±ƒÔ-ƃÔ-h|Ô- ð„Ô-{Ô- ¢†Ô-ÓzÔ- Ò‡Ô-‰yÔ- ˆ‰Ô-æxÔ-ñwÔ- ™‹Ô-§‹Ô-CwÔ- ÔŒÔ-SvÔ-ˆŽÔ- Ô-OuÔ- ÏÔ-—tÔ- sÔ- Ø‘Ô-æ‘Ô-ÝrÔ- Ô-ØqÔ-¥”Ô-ÉpÔ- Ê–Ô-÷oÔ-znÔ-¬mÔ-ýlÔ- ÿÔ-±aÔ- Ô-¢_Ô-Ý^Ô-X^Ô-„\Ô- ß*Ô-å[Ô- Ð,Ô-å,Ô-Š[Ô- â.Ô-)[Ô- ä0Ô-ÉZÔ- ç2Ô-6ZÔ- û4Ô-—YÔ- ‡9Ô-•9Ô-OYÔ-âXÔ-˜WÔ- °Ô- ÀÔ-|VÔ- Ô- §Ô-ØOÔ-ÐGÔ-ÔGÔ-<DÔ-BÔ-4AÔ-À?Ô-ˆ3Ô-.Ô-­-Ô-u*Ô-;(Ô-%Ô-@#Ô- žÅÔ-Ô- ãÊÔ-+Ô-÷Ô-ýÔ-)Ô-GÔ-MÔ-Ã5Ô-œ Ô-¢ Ô-Ô-M Ô-S Ô-ÅŽÔ-°Ô-Ô-§Ô-Ô-_Ô-uÔ-{Ô-®äòÕenv::temp_dir()ÁNamedTempFile::keepÁstd::fsÁÀNamedTempFile::new()Ásecurity implicationsÁ
env::temp_dirÁBuilder::rand_bytesÁtime-of-check to time-of-usebugÁ:https://en.wikipedia.org/wiki/Time-of-check_to_time-of-useÁóÃ
std::fs::FileÁŸÄ°ÄÀüenv::override_temp_dirÁèÄ úćÄ
Builder::makeÁÎÄ•!’Åfn.tempfile.htmlÁûÅŸÄõ‡ÄóÃtemporary file cleanerÁ¬Æ ƒBuilder::appendÁèÄÞÆÎÄ•! Ñstd::ioÁ
tempfile()ÁÇûÅstd::io::ErrorKind::AddrInUseÁÙÇ=https://github.com/rust-lang-nursery/lazy-static.rs/issues/62Á³Ç¬ÆÞÆ•!‰È•ÈÇstd::io::ErrorKindÁµÈ lazy_staticÁÝȳǽÐÙÇBuilder::disable_cleanupÁ‰È¦ú•È!std::io::ErrorKind::AlreadyExistsÁÈÉstruct.NamedTempFile.htmlÁåÉÝȽеÈÜK¾ÊúBuilder::make_inÁÀÊÈÉËKstruct.TempDir.htmlÁìÊåɽжJ¾Êústd::io::ResultÁ·ËÀÊäKspooled_tempfile()ÁÝËìÊëthe resource leakingÁ¾ÇTempDir::disable_cleanupÁ the securityÁœÌ·Ëfn.tempdir.htmlÁÁÌÝËåë  éÌŒÍNamedTempFile::disable_cleanupÁ©ÍœÌÝ tempdir()ÁÆÍÁÌBuilder::tempfileÁåë
TempDir::keepÁéÌ©
ŒÍΩÍNamedTempFile::newÁµÎÆÍstd::fs::File::createÁÏÎåïΩ
ΞϵζÅÁÏÏÎïΩ
СÀ°ÄžÏ’ŶÅÁÏúÄf0http://doc.rust-lang.org/std/fs/struct.File.htmlÁ3http://doc.rust-lang.org/std/fs/struct.ReadDir.htmlÁTempDir::close()ÁÝË1http://doc.rust-lang.org/std/process/fn.exit.htmlÁóÃBuilder::permissionsÁstruct.Builder.htmlÁŸÄÀ¥9ReadDirÁèÄÊ std::processÁ1ÞГÑÝËéÌóâÒTempDir::new()ÁŸÄÀèÒèÄÝSŒÍTempDir::path()ÁÞÐÝË1http://doc.rust-lang.org/std/io/struct.Error.htmlÁéÌ¢Òå¿ÓóßÄõèÒê2std::process::exit()ÁèÄÝS2http://doc.rust-lang.org/std/path/struct.Path.htmlÁøÓ5http://doc.rust-lang.org/std/path/struct.PathBuf.htmlÁŒÍ‰È˜Ôñ åéÌ¿ÓïΩ
ÕâÕê2ŒÍÝS€/*http://doc.rust-lang.org/std/fs/index.htmlÁ¥ÕøÓstd::io::ErrorÁ‰È˜ÔÉñ  åæÑïÎËÑâÕ©
Õê2…0»ÒðÖ¥Õ¥9Ê«×‰È¦É ñ €Ó“ÑËÑæÑ©
ÐïΡ»ÒÀðÖ¥9Ê«×ßÉ€Ó`ÑæÑ¥9NamedTempFile::into_partsÁåÉóÃ
¾¼(»°ÄÀÊèÄTempPath::keepÁTempPath::try_from_pathÁúNamedTempFile::new_in()Á€Ó1»Ò‡Ä¥9ÅÙëóÃ
 ¡ü°Ä¾ÇÀ'https://en.wikipedia.org/wiki/Hard_linkÁèÄ struct.PathPersistError.htmlÁŸÚ²Ú‡ÄÅÙ
hard linksÁóÃ
ë  ÕÇÎۇąÜèÄŸÚ¹struct.PersistError.htmlÁ¾Üë•ÈÇ©
ÕÝÈÎۅܹ‘ÝæÑ•ÈǾܩ
ÕåÉÝȻҼ(¹«¥9ÊúÓÚ€ÓæÑ•È‘Ý©
ÐåÉÝÈ¡¼(°Ä¾ÀʻҲÚÓÚú€Ó¥9È)£šöJ•!­! Ò¥9È)•!£š­!¥9È)É•! Ñ£š­!Àÿ$ñ std::envÁ¡èÄ Ö©

ÿ$ ƒÀstd::env::temp_dirÁ Ö¾àñ èÄ©

ÿ$¡õà¾àÀèÄñ ©

õàØŠ ³ºµßíßÃLðì ãàéæŒ""“""Û Þ ã ŒMÃMÐLÇLùMÌìÍì“í²—6PØŠ ³ºµßíßÃLðì ãàéæŒ""“""Û Þ ã ŒMÃMÐLÇLùMÌìÍì“í²—6à ©!Ÿ!é!,«+PØŠ ³ºµßíßÃLðì ãàéæŒ""“""Û Þ ã ŒMÃMÐLÇLùMÌìÍì“í²—6ØŠ ³ºµßíßÃLðì ãàéæŒ""“""Û Þ ã ŒMÃMÐLÇLùMÌìÍì“í²—6 PathError patherrPathPersistErrorerror.cannot construct a TempPath from an empty path.NamedTempFile(À)
PersistError(À)%"failed to persist temporary file: À%OnDiskInMemorySpooledTempFilemax_sizedirinnertoo many temporary files existBuilderprefixsuffixappend permissions disable_cleanup
random_len
¥åµåÀåÊåáåíåôå©æÃæÜæˆç•ç¤çºçÉçÓçßç„è’èŸè¬è¹èËèáèòhai\
çã«ÚµÃ1ükásÛ;Šu‹àŒ×€AJ:ø”Ë•!ÕxfRIÑ¿BKJ%ÒèBäCíÚÁÅÞ°9ÃÁÏÇjÖ“âÖÛk\gË´g[–(tôÛeàGÌÆY\®óNÕoÆÿº&…v5XusêƒM‡ù„S›.‚.¥,œºÂ`ðÐÚûX±D¹É$Ìž&6âYªAÓ|~o¨MÈ!×å%­ˆªó0ØtG·â‡B·îÙ'hÕè7& ³ eN"4ø&·ÞÕIm®¤e‡ÌZÂŽ"`ôÑ’_å“äpCƒ3«I+¦Al[óõœ¯·‘‡\ø«wéfÀûKU¹œß;MîdÑ´¨p`\à®þ.´¬±WǨñEùc8Š˜xíxN´›4ÚXým¾£]¼å>5)rë±Ù$“IØgÃÜóWœVxî45e Ãc³Y1ˆF&ãî¡\_³K_ÊøË±n|ªó¨«/˜°?纣<U]Œ‘u/Âæ*󴜥Æã,Û|YÏd\yôç]Úl§ÖÆ@NßÇ<1…/ÖN‚<ሽÀ©3öñÊÀˆ}VÍ-è{ùµÊò|;l14ßÔÏ÷l¢Ÿ}ëŒ¶à «=VQ"År¿À™SòšÌG\¬¦C€Îƒ*Õòâ(-¦Ì`¦™—"¾Y7ï“öï6¦AèÜ,r0óÖ¥ºà³!
’Z#”ªàÞœ_!Ž}c+{ó˜©L*ˆ°«Œ$ì¹Éå$šz
mâ“¶T€›¬qŸÀÐ1{ç–"kaçä—MúXbÔŸ&½Mq à;«©Ýº³V"™ƒðÊqãKŠÿ0a¬Yº !ÇŠ‡"­îmD4¶¦B²<VÎ’ÙÝÏ߮ˀƒÔ±q¦ºÖ.Â9x¥ÑÏ‘—|ƒ™´»õr×z«ÃŒGÕÁ–ÖWj¼ã4aÜtF=ðÿTÝ~ìL{ê=Õ+žJ~“$7aÓôɆü%Xéé`"¿(¼0JýÀáíï]t~ѵ3ýuOT”þfØh#1
×åâ¹ÔäEpÑÏÞƒ ‰é®Š—Qß±MP0¿oFε–œU»ôNœÿîãÁ¯kÍêC5šb‰3r…·,%–3“7"0 üHòí[ØÂXœ õFHQÄyùi]àÙa‚HÄf»Çíâ½T²‹úqå÷¼9TMJ8Vš ]ª}FÕ`e,T8­~:¯?ˆ9½=ÿÍrÛùàÁwñÌ¥K[ÜëÄÐßܯ̾]F1œ:K•
¼"}ßµò/EñtÐå‚ú€!†-™ÖÏâÏV3Qì¾ËŒ ˜s:¼}ÊzÀ*ª>*W÷\8OÛ-v]ËKMx lôç
ш]œâÙ)/lmwðPYØ!J/×LHßòÆõ.ªìêWÆçÄ…«Ø</ofLžP}»¤#½´§ »¼Ç3Ûw~ã(õI»‘¨jIÊ‘d#W „¼Q
?’ÙŒg0U¡šcÔ&}«po©‡
—Í'ñAˆ}‰:˜){f±GûD½l3˜Çö[bòzÌH¬ýà( b5ÙPÒã’]> /‰½ÁÛ¨1ðI7õ
_ZfQ€“XðÁ6oF"@%dŠÙÉ3†6è ud½“Ó]gׯ¼9h¤.[§·È¤Úkîj‹ÄÁÇ:){¶Tä(øãÇ-ݯèµ Üå}PÍMLð=KµWÝ,çkõ%…,z\÷,˜qvK Pö±4¤f§Ž]bzÐö™%€¸'xcêÊ:åŠÍ…øí ÜUZ!F|Ó/BlvÎT¢÷ØŒ5äÏ_íµÞC؉¢`ºèŒÂŸ–Pœ…Ì/ Æ3^P$ÈiÖ€Ëzâáä>ÈàþŽ$J|ê­1`§0ØXÈ
M©e­Nŵr”‹BN¢¦çkÆÞö£ÓTÚÉYxn7ðBHe¸ñ'a@6t¥¼yöÍÑë<¯ÝŽ;vpIFý¸ê\8ÆÐo‡Ë,t¬Š¯µ,•ìcŒÊ¯À!1PN3Mè¦Í•´ÄTÜ'œŽ›OVXþƒ¼h°/þÕ¶°¿öGn‡1=0—¸°h›Üz8‘cóÇïÛ«jr¦CưޠDÈ;¬-á¬ÿ Ív¥àÝYqŒþ³Z^†J©6­9¹3†‰;0HpŸ‘R ŸÿnÚâüȹyq¶~æÑ¿<[«TØdñ#éè£Âw÷–Ò¤½ÅzíHKüïÇ¡âö¦j…zÏxzò.ºµˆ(=º/¶ý¤ÓŠÌ{eVçTe•༰ù¯æŒ=—àý¾4â/°¶…Zè‡#\ØyŠÛ&T7?¢^cMÞoW…F®ÒºýâíÊþ‰sbl¥×'>û{ŒZ쮿äÀ?ßûgÍweZ²hú„Ð ™AîݾeXðA¹'WïöHøÂ„<œÏb­ˆ\‡Á{ø: L?’èÈx›·Hñòºùrzƒ®$Aw¹á<l®¬˜—&JW†EÝö³-·<óòÿÑ^ì[|ec¦›Uy~¦9mÚÍîÊ-N:z¯Àè©ÉÇØªÌK”ò,öQfŸ2 ¸‘ ÊQÓ‚#cÈ3u\‹ýy¥Ó› “Ð:£Ò‡rÙ¹IÎ×&é!ý½¡×SN½ê(ÞZ¦þ”!Ö³qÓ…ýö6N~šÃ,
é'¼æ.‰"çì#®Vì´Þ$–†€ ÈRÞÞöˆª<%6HŽtñÃj™¿¡®ìåȃ­b6O@¡–v`&ÝöudœÌûÅD"½!$Uÿñ±$*Fÿ‚A¯÷×R5xYëÕó2ô|úEŽÀ9¾&Ô¿KfŸt.ƒä§é¹Á_„®Ð䘆¯Äf„ÿ¯y@\“Ä Ô°ž+ÅHÜîl ZT¬r°¡"FY(TyNjÞá–[)‡]£Æ“:»u ï–sfrs™£ÒÀ†…
ÐëgeOtU2_öÐ|Ò €ÊÈÚŒ¾”‹‰ìÄRCVµ8e ƒ&Ö`#{Ôñ¯€fwÊŒ†9†y{é…n¶~Ãáòˆs}¾Ô
ÐóãR‹¦]ïÎo
k*G ®YXÿ<ª+9”{! Œ­÷×à"y„>Ò{B³þ}›že€G=­ú~Zô:N¶t$Æ1`ÀM\VuïoΖe¼…Š7ùÙêa× QBÿ‚4L¼…64²b{“Î$"aùvÉK#À¥\ÊxþáIë–/@+ 8œ”–@r¾£&&“@ÿf?ñx ?Ò‹Ç:VÉôË41Një $˜æ^zõï3þü±Ýå.¸ãûÆ­Çšoã ÛhèùÐgI==2¯íÍ?Q+ÍŽ‚ò5zc^=¨Ù¹Ø‹ÔRüó³
^Ê@Š
ßFÔ
tÓ«Ü༫^½•¿
E|˜;ÐiAš
4_?,=õFë­Au[àlÙbÝÏK/O8ÿkŽ2àFpfàqk6m‹’¿QÆÐ³’éàT’¨Óªw.rk¾$ÝÑïÍ)4¦p9Ü~¯Jâ´ ¦æä}]ÅÀö¹“!µšÁV9Ü1¬ÛMv*ÕUR6qo
þɨ]A ²¬¬í Œps\èÐÑT 4œá–ƒLÅ0;¥AûþbEÔœC<•«¯& m…¥Þd1 C«É“žè¬zÁáÛ¼æÛGtt+À#—ß±Þ£ëxck˜€c;À>*K·k¢ÝÐË–A ý­.9:§¬\uø’Å:õÜÐÀÖLKV…²]ûî32݆ œé‡1Ëú¿¨Ð–8×;3ºä±b¨Ÿ¦›†á{#‹ à])bŽÄ²à;(Ëü´öó3ߣ~Øï¡¤×ÇLzâEMé!b
}‰‹Ó Û/™œ"NA¿Ö†ÈùÏ'¢­E‰¿-;¯V; Z7å|Ú{ÙÅ´ Ý_JåÝöYŠas®@J—ö7ûÊ
Ê-5M’ü&РˢQ#Üf·ìe´>n=Z‡Ù{w+hŠž Yåc ·/Ñe|•(þ},Ãbƒ%®${ŒîóŸ‘[:Ì–~­ÅÇäœ~Áý«CƒîÁÆÞŸ4€N&$Ö§1fæ½µ™3ôâ(êtã{¤ÛÆ™ï ¾oÇÃ’g,ŽÍñ%Àì ˆAy8éu9¿„XA¥\~‰ñ?Nv”º¯>éž+ÖȲ™fþ&z/ñ»–V*ÂÁâ óÿƒún"·!Ý;heùiä¬T·)òM8­zž.Érò @"R°"Ê*0΋u‡ÙÅÏø Æ»êäj I*‹Çv9¹E¸0”=>„ K#l˜ßY‰ï‘ò!ùۿǚĻã=黵~8oXëÍ’»°Dºm´ÏLøŸþét/»¥oc4K>¼Ð|cf
¹${ ýa#®´¸Ö/°¸Éó:3Z²¶m/}PÁ÷Æž"w©¾”^«”¸ § *!r³‰º*U¥p'zþmºô6þÔ™çÚž«ñ䜀?ŒEçq‹á ÉVš­1ì ©¶w‘hx]ÎÈÞ°YI±Þ0µMM²÷H?Þc ¹¹Yâis~ï­¨ú&SAæXM¥¤ýÅ­òËB4F<ñ›a©Ëo³¾@òYz.ûqšpyÑȆú«[‚Ø
‰f&ª­û‚ ŒsoÕ£)Õuø«ô>â¼ÓêFH•5gë_.<kí–ù2äàÖù