RIFFWEBPVP8X ALPHz)NaصE.̱nmwww H5uΜa~ˆ~oeW|aV_:]\iVۦ6ؿ÷i]65b%ymniU]^^|ŇdOZV˗/_V_\nP\Qu<_+*m߮'O$C_}QǹQjEZ;\Q<=)?U(Qc_,Vޛr^˷6Uq(Lߡ9e ;R*7lLݰqkcA׫$O`l^Xlک}jRm*;^~W^\$%W^~_/"^H@G5KIJ A  p)Ax9A+sF+Vd\kUz#\׹*@Γ<:/gTtեiqs$)XҚq臒Q(InDRZj$aKtS.IQ}.2>EX҂OqDIҍ`)X8 qܭDI~Pe'R8 !4XRAubIn38NJ$:xG)Vdw;sEbxP O{h~<3JR@ޑt.Z<)(XJ/W,)/M8Aqi CuJZQ JRjII)VŒKm"I~nBN+$bI4"Œj<8T"AEE&OǨ*%)RjI;SEbQkMw]|LUJR+7J}VW '/h:Krly(WHI4<_XREQKwҜF2$XRU]ၔ(ߩ:o*$)(Thx H˃fU$s\X+[jNWXvť1O DII@ c'Q 3S gDO(Jġ/*RfR#UFxCq9=Y.(H0z~7BREQHn8SJIqq,)z9IaI`ZaE+d&QŒ*fSSG&m)*(SUQbV媬*GIz1.zMo\'8r=+>kpJI&`>JR)5v)(}R{qyr<ٗ=~t$-^  ˦;p :~ɗtgФwٴ'۽.` ]؍4'OpDGyנI'L9MU5jtF:hE&xڍv4ud'bzRw轑߼@ H:{OUw: 6O^0r\GqwU7s>pFU{w9Q\;j;=Γ;-A˶mo[+K;dxLw7. -fK2lII;̧wLI6[͖d/ ͖d٬w:W8oF~@GחRuO&4ҍ(Zmꎽ:c:6fcLsM{ X 4ߴ&y1b9Xۍb8ڏ;N8V@fkTK]f9d]c^,Ǒk;pl8Gߥ0M r6e\)Pu~> Gfܣwv?B?}l3GEmRk;r›k^]0,9jRrIO\ ,desfƳ۽sF8j_Щ`ݝdX2;gJm 𜴰yg `d^rͰ_h&wο6So&?W>sωZAbұu~zqزfOOAI?=Jw}?%Mꆒ pW-;r;Yx=L]s/%e|q'Va:9FY'%2 3b>{|YVYۺ6<6,n@-0{.59>n?>}w||%YV: #ֶ.}7wcuBZ?X޾:1pv]o#sIْL|,9ΞϔOYyQJ9L WȃE)ǯqPc_Oɗ4e4 (M۔@ h跬c5kY W맲×6 Ok`{xzyA;0 hYRS-ál7||s<{RNZ|[f=Y@k88neAK:RN<5;l?7ݹu^]q#Gv%z ÀqD׵/#44/8wl_]1?ω[!0.eYƪF|NQp/9r< !#ӟ3x~+5-qꦴ ~7 [4ß`,PΥN{aE+Nz캡/ qu-=,P54 wjNN>xުQz<ߟ2u킚}7wú< 8m}h_(0:oƭˑ=WO|}lmk<߄ ^7gowCw&}-ꂲoKʎv068zϞOx0u{'ׇ&{vwk@>j^+Cs{ g>p-cyo<-xvXtQt>czLv< O0oG={î[Ÿ_{{j)kgdA_e`C{RuF##׌b:r T#Q|#ՌT]`a93p c y08y9pΜ3Rp 3ͼox7;x;o]8ü<`FfF)`C>RT<`TT3r͠04h~s/\V#׌6R]o.VP8 9*>Q(F#$p Mi%kU~n>{^`?e+;w@{Q'V_?ߵ_?a=;|2u'J 9¨_bōޱ7zXcwnޱ!\59h'B|qY:L!F޵!%t^/'}f_Xԅ]=S~ DŽaP&\q`fv ; D-dYt w%BGPo}7_$|Fq%?)t^n5+WCXF|CNO.'{|[xxkGDV0YvBjx]rw˱|Б݀7gZ#6o ۈ/>Uh8\d< ߭ .gS#H+`#ՒUF4/7۳7\:R8f!*P* OP0LHw͢h>q2}+vO Fxrt3,. |N8PrKi#͑SG}%+$ bQȟ2F_qU ʩG |uZe7~LK.DUN'..M}ґGNݳiwksDxce{/pk 7ރ P*P1A ֨.I=͠#PLuV 1-+$$-?4 At1jS>s}?rU?K>7N8d7=I%_B.)tN0VUӇaP'\ꈱqBC!=r_ ]da_~Uu4 xP$wr)Ǯ&vP-"A"ˏzIʡZe<lyؔvѶRWD%6*v}U^|r5g$Ut朹Zd ٩9ӹvܒ-m"o6NaZ?¯0;_# $6B$nEyCΓN}Qi~5z }[foQ6Ped z0鱫 }g,n&aM>hj89So1Mxx]Qe? FbPB28eJZ^sjFYk~4WUj1fx[܏H8k*1tMҐ%bo Zl];MS򐋋0eBk2L2owS@z MgʔKNJ7=<,̏Udpg\fI9ZEE7PW$Z6 (0{k f/@\7q'_Yg$QII 1fj\jX dxi0}a$XWIIaԢpHI"HM6"doJoUvsB4 )ZlEc˝r=ݢ$/:yX4owQʖ# axӦ7?$W:+Gm)80Bj&"r_p*rᣤF>>e'q|H~20^pSx=Ŗ_( wdê0oBG]$-#|YzWrF<V?m^и/J:5.7c'~AL^['uz (CeI}MK!x.|u>\Օ>sbTKB(OGs{h+gAtW&ߧ?6<1 yE2q|5?*_FӒڻw S :̽b%h,r*A&0;@2j+rteΠEXIFExifII*V^(ifHH02100100XMP a DOgN @sdZddlZddlZddlZddlZddlZddlZddlm Z ddl m Z gdZ dddZ dddddd d d Zdddddd ddZdddZddZedkree ZeedS)aModule/script to byte-compile all .py files to .pyc files. When called as a script with arguments, this compiles the directories given as arguments recursively; the -l option prevents it from recursing into directories. Without arguments, if compiles all modules on sys.path, without recursing into subdirectories. (Even though it should do so for packages -- for now, you'll have to deal with packages separately.) See module py_compile for details of the actual byte-compilation. N)partial)Path) compile_dir compile_file compile_pathccs|dkrt|tjrt|}|s0td|zt|}Wn,tyj|dkrbtd|g}Yn0||D]|}|dkrqxtj ||}tj |s|Vqx|dkrx|tj krx|tj krxtj |rxtj |sxt||d|dEdHqxdS)NzListing {!r}...zCan't list {!r} __pycache__r) maxlevelsquiet) isinstanceosPathLikefspathprintformatlistdirOSErrorsortpathjoinisdircurdirpardirislink _walk_dir)dirr r namesnamefullnamer "/usr/lib64/python3.9/compileall.pyrs2       rFr stripdir prependdir limit_sl_desthardlink_dupesc CsNd}|dur$| dus| dur$td|dur8|} |} d}|dkrHtd|dkrxzddlm}Wntyvd}Yn0|durt}t|||d}d}|dkr|dur|pd}||d D}|tt ||||||| | | | | d |}t |dd }Wdn1s 0Yn2|D],}t |||||||| | | | | d sd }q|S)aByte-compile all modules in the given directory tree. Arguments (only dir is required): dir: the directory to byte-compile maxlevels: maximum recursion level (default `sys.getrecursionlimit()`) ddir: the directory that will be prepended to the path to the file as it is compiled into each byte-code file. force: if True, force compilation, even if timestamps are up-to-date quiet: full output with False or 0, errors only with 1, no output with 2 legacy: if True, produce legacy pyc paths instead of PEP 3147 paths optimize: int or list of optimization levels or -1 for level of the interpreter. Multiple levels leads to multiple compiled files each with one optimization level. workers: maximum number of parallel workers invalidation_mode: how the up-to-dateness of the pyc will be checked stripdir: part of path to left-strip from source file path prependdir: path to prepend to beginning of original file path, applied after stripdir limit_sl_dest: ignore symlinks if they are pointing outside of the defined path hardlink_dupes: hardlink duplicated pyc files NPDestination dir (ddir) cannot be used in combination with stripdir or prependdirrz%workers must be greater or equal to 0r )ProcessPoolExecutor)r r T) max_workers) ddirforcerxr legacyoptimizeinvalidation_moder$r%r&r')defaultr#F) ValueErrorconcurrent.futuresr) ImportErrorsysgetrecursionlimitrmaprrmin)rr r+r,r-r r.r/workersr0r$r%r&r'r)filessuccessexecutorresultsfiler r r!r0sX     . rc& Cs|dur |dus| dur tdd} |dkrBt|tjrBt|}tj|} d}|durhtj|| }|dur|tjj }|tjj }t |}t ||D]\}}||kr| |qtjj|}| dur|durtj| |}ntj| |}t|t r|g}tt|}| r.t|dkr.td|durL||}|rL| S| durtj|rt| t|jvr| Si}tj|r|D]d}|r|d||<nJ|dkr|dkr|nd }tjj||d }|||<ntj|}|||<q| dd | d d}}|d kr|szt t|j}td tjjd|d@}|D]L}t |d}|!d}Wdn1s0Y||kr\qq\| WSWnt"yYn0|st#d$|zt%|D]p\}}||}t&j'|||d||d} |dkr| r|||d}!t(j)||!ddrt*|t+|!|qWnt&j,y}"z|d} |dkr| WYd}"~"S|rt#d$|n t#dd dt-j.j/pt-0}#|"j1j2|#dd3|#}$t#|$WYd}"~"nd}"~"0t4t5t"fyp}%z^d} |dkr(| WYd}%~%S|r>t#d$|n t#dd dt#|%j6j7d|%WYd}%~%nd}%~%00| dkrd} | S)aByte-compile one file. Arguments (only fullname is required): fullname: the file to byte-compile ddir: if given, the directory name compiled in to the byte-code file. force: if True, force compilation, even if timestamps are up-to-date quiet: full output with False or 0, errors only with 1, no output with 2 legacy: if True, produce legacy pyc paths instead of PEP 3147 paths optimize: int or list of optimization levels or -1 for level of the interpreter. Multiple levels leads to multiple compiled files each with one optimization level. invalidation_mode: how the up-to-dateness of the pyc will be checked stripdir: part of path to left-strip from source file path prependdir: path to prepend to beginning of original file path, applied after stripdir limit_sl_dest: ignore symlinks if they are pointing outside of the defined path. hardlink_dupes: hardlink duplicated pyc files Nr(TrzXHardlinking of duplicated bytecode makes sense only for more than one optimization levelcrr ) optimizationz.pyz<4sLLlrb zCompiling {!r}...)r/r0F)shallowz*** Error compiling {!r}...z*** )endbackslashreplace)errors:)8r2r r rrrbasenamersplitseplistzipremoveintsortedsetlensearchrrresolveparentsisfile importlibutilcache_from_sourcestatst_mtimestructpack MAGIC_NUMBERvaluesopenreadrrr enumerate py_compilecompilefilecmpcmpunlinklinkPyCompileErrorr5stdoutencodinggetdefaultencodingmsgencodedecode SyntaxError UnicodeError __class____name__)&rr+r,r-r r.r/r0r$r%r&r'r;rdfilefullname_partsstripdir_parts ddir_partsspartopartmo opt_cfiles opt_leveloptcfileheadtailmtimeexpectchandleactualindexokprevious_cfileerrrlrner r r!r{s                *         ( rc CsTd}tjD]D}|r|tjkr2|r2|dkrNtdq |oLt||d|||||d}q |S)aByte-compile all module on sys.path. Arguments (all optional): skip_curdir: if true, skip current directory (default True) maxlevels: max recursion level (default 0) force: as for compile_dir() (default False) quiet: as for compile_dir() (default 0) legacy: as for compile_dir() (default False) optimize: as for compile_dir() (default -1) invalidation_mode: as for compiler_dir() TrzSkipping current directoryN)r r.r/r0)r5rr rrr) skip_curdirr r,r r.r/r0r;rr r r!rs    rc Csddl}|jdd}|jddddddd |jd td d d |jddddd|jdddddd|jddddd|jdddddd|jd d!d"dd#d|jd$d%d&dd'd|jd(d)d*dd+d|jd,d-d.d/d0|jd1d2d3d4d5|jd6d7d8td9d:d;d<tjD}|jd=t|d>d?|jd@dAtdBdCdD|jdEdFdGdHd0|jdIddJdKd|}|j}|j rddl }| |j |_ |j dLkrd|_ |j dur|j }n|j}|jdurdMg|_t|jd8kr|jr|dN|jdur|jdus |jdur|dO|jrz\|jdPkr0tjnt|j*}|D]}||q@Wdn1sl0YWn2ty|jdQkrtdR|jYdSS0|j r|j !dPdT"} tj| } nd} dU} z|r~|D]} t#j$%| r4t&| |j|j'|j |j|j(| |j|j|j|j |jdV stdS} n@t)| ||j|j'|j |j|j(|j*| |j|j|j|j |jdWsdS} q| WSt+|j(|j'|j| dXWSWn*t,y|jdQkrtdYYdSS0dUS)ZzScript main program.rNz1Utilities to support installing Python libraries.) descriptionz-l store_constr z!don't recurse into subdirectories)actionconstr1desthelpz-r recursionzhcontrol the maximum recursion level. if `-l` and `-r` options are specified, then `-r` takes precedence.)typerrz-f store_truer,z/force rebuild even if timestamps are up to date)rrrz-qcountr zIoutput only error messages; -qq will suppress the error messages as well.)rrr1rz-br.z0use legacy (pre-PEP3147) compiled file locationsz-dDESTDIRr+zdirectory to prepend to file paths for use in compile-time tracebacks and in runtime tracebacks in cases where the source file is unavailable)metavarrr1rz-sSTRIPDIRr$zpart of path to left-strip from path to source file - for example buildroot. `-d` and `-s` options cannot be specified together.z-p PREPENDDIRr%zpath to add as prefix to path to source file - for example / to make it absolute when some part is removed by `-s` option. `-d` and `-p` options cannot be specified together.z-xREGEXPr-zskip files matching the regular expression; the regexp is searched for in the full path of each file considered for compilationz-iFILEflistzzadd all the files and directories listed in FILE to the list considered for compilation; if "-", names are read from stdin)rrr compile_destzFILE|DIR*zrzero or more file and directory names to compile; if no arguments given, defaults to the equivalent of -l sys.path)rnargsrz-jz --workersr zRun compileall concurrently)r1rrcSsg|]}|jddqS)_-)rlowerreplace).0moder r r! gszmain..z--invalidation-modezset .pyc invalidation mode; defaults to "checked-hash" if the SOURCE_DATE_EPOCH environment variable is set, and "timestamp" otherwise.)choicesrz-oappend opt_levelszOptimization levels to run compilation with. Default is -1 which uses the optimization level of the Python interpreter itself (see -O).)rrrrz-eDIRr&z+Ignore symlinks pointing outsite of the DIRz--hardlink-dupesr'zHardlink duplicated pyc filesr@r"zYHardlinking of duplicated bytecode makes sense only for more than one optimization level.z.-d cannot be used in combination with -s or -prrzError reading file list {}FrT)r0r$r%r/r&r')r9r0r$r%r/r&r')r.r,r r0z [interrupted])-argparseArgumentParser add_argumentrPrdPycInvalidationModerQ parse_argsrr-rerer&rr rrSr'errorr+r$r%rr5stdinrarstriprr rrr0rupperr rrWrr,r.rr9rKeyboardInterrupt) rparserinvalidation_modesargs compile_destsrr flineivl_moder0r;rr r r!main2s                    6        r__main__)r) NNFNrFr"r N)NFNrFr"N)r rFrFr"N)__doc__r r5importlib.utilrXrdr]rf functoolsrpathlibr__all__rrrrrrtrP exit_statusexitr r r r!sD     K  "