ÿØÿà JFIF    ÿÛ „ !.%+&8&+/1555$;@;4?.451 4,$,44444444444414444444444444444444444444444444444444ÿÀ  á á" ÿÄ     ÿÄ ?    !1AQaq"2‘¡±ÁðBRbrÑá#‚’¢²3S CñÿÄ   ÿÄ !    !1QAa‘2ÿÚ   ? 5˜Z¯V¦cø)›t/? z¨±>Õ5€¶‹Á¤·¼z¼Ü¬+ñ®v¤¨_ˆR­BFn©—˜ý®ç̝P8gýt·ÉSTŦˆìät?þé¼íìN/Þa)ì–í6ô… Ï¿øÃj´¿KÇü]ÿ ªô¹-eKànëÕHTx}ýSÜ›ÿ ”7Ø×&µ<¦  ¥ÑO¶[Ù¯ä¨ÞÃÿ PZ-¬;#õ|•oaÿ ©CìÞz3˜öː/¤­ñTûIØ}š^ mÓ%ªxˆ¥ÉŸu=Z+ISe¿45™¼u;ú&WØ÷€æßQ™®{|íx*TC“#ZŠìZ§²‹ 6pv…³¿¡äª*áZÐ%ÒOáˆo"x«OHk w±æ+¬V(kMúŸ5Vö«$ ÁrÏbàb57/luR ¸ÑÛj Òµì`Мq­û žICÀÊ•©4€Âcà¨Ï€O´<èÐ:›ù(Ë^L8þ‘ÍÌ#¸Ð_Ì©ÙK(Öz 4¬û+¸;ü’V’84‘¬ÃŽ:[â‡ÔÌáõp¢~§ªlæ£ö{®G>J¼"°‡7¯ÆÉèßû ‹É‹§ÁòÃýâßî ^ƾÙõ‹×óH#«LP½ïX=xÑÍ$|W?•~• îëÔ©ª‹ {ÝT…Kÿ ”hûâá)J*ö˜–ÔU;iÇ€/ ÆþjóZ\ýwØ=Ìm ºèËL9 ýèÆð/¨’¥öo=nË.%Îì ŽÕ¯È|{Oj²ƒE6e/ßdÄõ²Ìâ1O®ò×TsəԸhOMýíMˆ¿¼H˜l²,7Â¥#MF/Úf°Ö½± ¸–dr‹NýÊ íjqx{œÉ ä-È ¦ øÄër¨q°ð †nцýÑÄÆ’mä…n<0È™;ÁÝá¯ÁZƒ7FÀmì­ É&9ˆîéi¶ùN§Y• ÃZãAâ?•‡©‰ , ó¾IŸŠc1 4â&y­&pŠ­6;M À 0¹qç»p.á …ŸÅáK@%6·y6ƒ‰3?”úºŽ‰éX5ªPT §µ!=Mž«Ú½‹ÅgÂSâÉaþÓoö–¯ÁÔìR>5éÿ üs¶ÆUcÌ kÇR ]ÿ ù¬¼«VŽ;Â|‡~¢¦”ÏŰæ {L™Õ°Óv¹ò¸írޡעCÃ!íVÕ {¶»sŒNPg/ "uÕbkm²“$ďå¿é¹§°½æz¯6 †s¿!s–wÚÝ“™Œ °.ûj>·+™Òa…©Œ&rÝÎtÛë긪Ît’LAVp%c Úý[ÄzJ¾ÇàXXç@˜ó<êL]·T˜¾¥1Ó©V‡g´æ½¦Ý@¹óø!_@´ÞâSÁ —S3™•& ]@JHÚý©ZŽ €×æÔr»Áf!‡yÞ4Mv*èÓã_{‘åóUuљØ«Oïé*®EvÑ Œ÷‡U \"㪒ÍK+À 4“M¡ï:0¥5í!'<@î´”>Ç»&Z–ïCCV˜Ì5Šo&îhè.žû |ÓK©h$s6KìŒëã)¹hI¦GïOåóI;ììü#É$Š0…Ææ¥TØ.5­¾gn´ “ÂÖ\:hœ89G)J@„}œ:’Ò{/Š"¦_Æ×7Æ3VÇŠÊa]ÚŒÙ€Ä–=®uÁßâACZƒ§§£ Qnâ:«,×{tyø¬iÛcœÜÄ€H½ÄÍCk´÷šß .W'b¤Íåh]÷€=,Žv×cÚEÚHXJX¶îo¨FÒtèöŸ>ªª6[J®Fµ£sGÁeqõfe\íjÒÐïÄÐGˆe1Ø‹.Ø”‘Ëuø Y­ˆÜ ŽG|zùªüMpDnQWÄ”%JŠ™)â*p@Örš«ÕT2Ð%ˆG#ª„ ·¤!°ŸOTÂT¸aÚ%4&h™LµšØüÐ.F¿²ÐÞ_Ç‚¾ÅÃaÜ÷09Æ q€öy˜v‡85õN÷]¬äѼóS{°_MެúÔ#°Ç¸0åÞè2ëôPcvÆw9®ií1Ä8F™˜à‰´+‰Ik1òÝ7“Ñ×ÒsÝ\x‚h`ÞÑ`ó"|µEcý£n˜h`}GÞ !±ù²Ápü²ß6 0ïi󜵩SÈÇ7˜-ÕURO˜¦´f$ªž-Í6(œ}<„ éc øs]ŽŽ„*—¾ ìdŽ„)méª\¿êÎIg¾ØÞ~I#C/¼¼´EÁÈŽi8“©õådô·>euä ƒ'Ê×लR1ÉJE1ÐAát`t;ÇР%Ý<‡¥„ÍÆ`×Oyó)õiI€ñQaŸ4Ûù\áàaÃÔ¹HÃu¹*k€¦<„e S‡&õÏ B!ŽhüÞ`yj}mªf×\¿ Ç~æ­9‡û\՞Ǖg²1Žû5V7 !àöšm° c`ܬøÇìµÒ'P"?…´Ö,"§^•õލsÔ)6˜sæéÍR¼ ò|Sl”‹7 nPW Gòú÷½§O¯‡„l¡kSÞŒr½PÊ@æ¢pŽ-mÿ #Ÿ˜Àº¶Áä¦;ïÔæ$1££`“Õ>„—·ž)ßð³ñ#Ï Ô$¶œ‰ÊE‹À;÷º ¯«P:Ñ”8–IÊtpÞ3ª“>ê“þës4ò2OÏÕ­±zô†Õ§‰.÷ä¸;¿˜“'œ›žª}«Œ{ª±Ì 9ÔóÞÕ‡0 $íWV3Üì¬ —@kÝ4@¿r¼±½¬™›?øØæ´'Áé®CË3-g$˜ö‡×auÚi´Žp/êÛ æF›Ú2v‹ã¿¿,nB1̨ƃqÞa5͝@&Æû“él÷ \C²½UÍc ¯k×¢U ÖéQå™—-r wô ÞÏ<Ò=&=ÿ Ôê Òêˈt,i—;LîÜ á¸*ÚÃ1$êL•LÍ <É)ýÐà’ ;F™{ƒ™˜€&'}‚ãÄK`¡ÞT@I;®žZóè‚s’7®°›+§O­Åq©é»²9<Ô J ¼9O’HL»Ùïì¸rk¼Ž_ý‘TŸu[²ßÚŒ·ü÷B%¯E ŸÔX5êO´ Ç•€’I0 ÉJX` ñ¹õ%;µŸD‘«´€àwÒ™U ûئžÖö\×®×´8 ½‡ºÐÆÓ§?Àkmœ=;d5*@-ì0F Rªýš[Ü6âö̃ڸr*KA9· u*µæ£?U¸Âêí†8@¦X4 e-ò„0s{ HâUpU?¼mñRa°®a%Ð'tÉ×’\¾ÊÉ]t›h>·(Ë@R¼¡Ãt h}’O÷au<+nT…Ö…MӐ??Óe95 q>í/;&JSû °¯ÊéÞ øƒ*Ã2½Ài&:nôUl=¾¿5eˆ3”ñc|Ú2V”>„»&eE;«ÚäC p¢Û úy 9š[ŒÌx¼擼A&DåÒ¯ˆ¤ÀÌ;"˜ ÏQä¸åhÊ}Ûq«Û0WžÒ|»€ø®öCm5•\ÇÀ§Pe3£]0ÃàLDÉ‰1øªxjgwT‚÷¿LΨK‹›ùs—xˆÜ±µ kæ¸f‰‰ÜGk/LÛØ6d9ò¶ùA{ƒA3š/¬D¬khÓk‰`˜"㯒r¿±Óã jx‡°e}<Ñø\3y:'À•/h½Í€Ç4~g ?Û(¼]v‘ªlKÎâ~?O‚W%{Ì:“'©úNq¾›úo(X’¥¯ˆ nFê{Ç€ü?º'ë ø‹ì Þ09ŒÌç9Æ —ËC`j@ÓÄ(+a‹un¸#ÂꟋ{K`‘ÑÍÍ'à´»/Û,KW;Þ4²þð ï Nm|~fGÏ(…³Ã)«1ö­Õ ¥‡¨©ƒÃ™ü-s=à=U66Ï«Ýc蓦W¹íž®›nÔ%êÇìŒ<#Ü×84ån®Ð ÒåOC` ñânÑs‡¢ç 1õ%Îhì½Ã½® e:ݼUZo™`  ÅZŸŒÊ«ê1ÏÄo$q¹Þ€©ˆhÐÉä¯ñ[!…Ú˜àJ:x2$Íß&PåT£6ç— ‡Í*4Ýšçjÿ ‰É nófÐ ó(L5C•åÆ\rMÒ@ò }y-W}™üýVù—ú¢=Ù”c®‘< M ž ´Phr ¦©TD ‘ù.$´÷O‡‘V2Æò.=IUŒ=ž‡â¬i™aþÓåÙ?òUø'ØÖ•.~* šTŒ!•-×áºTâ®ä#õü'´ eýlYÅÓeÕKÂrT"CÚ@u!Óxƒ{š3€}1¿(r}%«nËamjÑ%ÑNEò v ˜à  σöK³,*º.àzù¨™Ó ÚçâU¦*¿ 9{%Ö¹ njûdaXöb) kÛÆ±ûÓ\°M7ˆÂ=û›ç¿Ã‚­V»Cg–8ÙêE- j)k$º`Ã-ùEýeBÆÇ]c¡°ñty&Òd0nõ'¡W+ƒ*|–øµFa\GQªEAÔp5\Ǽ·¼Ç8·õ -â§Ú[ ‡ uZeÖ 3}×d'+¹:ð+K†Û®s!Ï$úe€<Û”x)1»a­¡LC]¸µík…ÚàA»AYº{†ªS[¦5HÒ7ù --,ísòDØ€èk ÞÀîÜ ò@â( ËNˆë›4ô½•/¦o‡€Û7 ê•ÆêòðÜy'Án½µ á˜ݦ ndeo…[ì¶Ê,¥R³Ä=À±—–ß;£™´ñSâ*g§”ïaið‘Jå~™ÓÞ ß³Õ¢»8x埒²52>AÊb&-÷\7´éÄù€T˜,w;3{ï˜k…à¹ÄqÀ«œ{€\ ˆ¾[´¨јr &Úé„Ívˆ±8†¿]|¬ņ4I×pÞS1ÈÖz‰#Ìv‡G!YNògñ:màTz¢Ý1ô©^O=~ë|5Bã™ç•¼µõ•bÆ@úÕS¬ÈŒ#¬zünrŸ û” Z²•èðV"ÁHÚý©wÝ €7¼Ìu1hÑa3Éä û f$o¿É ™Ú›ÝçnpÒ3äÌ3†Í§,Äï]$‰/pê †«À¼¸e9­Æê_C]žƒ·ý·frÁN«, E=›Çq -‰öŒ:aÏ¿±í&£Í:-} 84‘ÿ eƒQÑeëSsuiA ³g㟥ú£?ÿ ʼn*”“÷aühe:ÊWa@ÒÞk±eØ] F Ô—r.åä˜ @ö¥ªZoÐýYL·¥S²G/‡ñ <~*ZÆ´è>JlòàÛÆ½ÿ 窘ìGN¢:I®KšJp/`íIÁÀõ#Ä-€ö­šµŒoF4|ÆQØÆ@Ì|£Ô…¢À{9˜è½Üó›€ôYÒÎYsið;ís¤€à²ˆ‚4qÉVŒI$ ‰"° æµ8cXGjœˏ¡Aâý•ËÜ¢ûï e·çLx']á"oÅÎê3¯Ç—¹”ó0nå‚âg{Œñ> S´˜îè°g238‚ãköÝfÚd´6Ò€;ò÷±¢™¼›º ¢Æ'¥Ðx'e¬ç ]bÈÆV¢ó‹kýBO ðÊâ$Ÿ!×T 3Mýמ žìٍàÌü‘8÷€àæØ8æ©6‰©L´«…oãpð„~Çk‰!ñ;‹”ÛžÍ àž±z Ÿôû øŸÝužÏ;ÿ #|u6™Þ¬ÚˆÐõA4¶â|ôl|Ê2ŽÇ¤ÝÅÇY.<#Aí.k§hóF‚”Y; M½Ö4hŸ4&›­¿tès´%FìL¥£Ãk‰ÇT¤haÁ¤ÚxfÉ`ÑìË›>i 3t‚:,–+^÷´–{Û–Nxi"x‘Ûg î¨>¥Õ܁ùZH,2Û“:8xÊ¢Çí9.É-Ìâã-=çjwµS˜dütžçwýGòú®®ûº_ˆýx$–¡ãøO EÚÛÏ÷R„×w+3£Á£öUMyR²¹âŒ°š›¸Ñãò9§Ó_Dl+Ùßc›úšGÅÌc†Ž!Ko=¶.‘Îÿ c²(2®V mª.ÿ ¹B›¹å ù„öŸSV>™ü¯$y:G¢Z×àøúdî¹û­·ýÇ´:•c LÍõi_‹ö+ÎæGÊè>OŠ•äž´§Þ{X}¨1ÚTc›»Qþ•êô°t¿OP?eæ~É{5]•ÙR£r5†nZ\ã@ &îJõ ¾àC°þV>fé¥/ü5ñÊIº_é5 ;e­h<@ Ä&æÃëE%;X,ÒãÆÞ`Oò¦kŸm#˜!ÀyÄ¢| óLšò¥Ä` ¶R=|ÈCâh5ò3DˆïF†ðÒ#ÅìÛœ?¸yhBãœí ZxßÎÄhºRK„`Þödvײ™ÀÈÑÒgŒuY w³%†ƒÓzõ ÖÏp‚dH®¦A´ù§»ÓÇMæ~)ˆð‡û:ù&Ä •vGD´À n ݇¼Ö8Fö óáà£~Ë¥x`oK|Ä?fxiØü%pìR>éò+Û±éÎ>núlFŤ'tq8LZÏvÃ?„¡ß±È⽆¯³íü@x|PöUäèØã¡ð‚ŒAìÏ"vÍwóŸÍ{ ý0.z È•Ö{,N¡£¡ŸKÕÙž>Ýœþ ÍÀ°<×EA!Å‚D™IúOÍ¡>ôG}Â` ÍßkÜL™Ž Þð™ {IøF²¹òQ3&!ÃÂÞz.d&Ï-sH¸,Ôõ˜ŽP€ 77ˆÝ¼ÊëÜw =cÕ Ú,ØÐ5ÎYÐ)ì´öœgŒ[¤ßv㙑8心>h]§µháYš£²ºÑ.{Ï7Sð•?´~×SÃKýJÛ˜ ™Íäiúu<µX¶1õ^kâçIÑ£sZ4h>j*ÔšD:4­¿_ ÷¸ Õxæÿ ¸?Mù _•­ÊÐ ä ÷ý ÑwL œ­ïnTkÛUÍN©ë:¦fV ¶ÜÔÜMªÅâA½–¿R×TXš-%iTÊT•‡Ù‚JôϐZxWÑè‰f‰òG º ×Õû2aZ7OU3[“×AT–ÞŒ…-‘¤”Ì ì&(ˆ¿­•ƒkï’:ðY¦W‘ Å)“†‘˜³Åtcø˜ñTÂwÚÇ4|üLÇªí–v- qˆèU qPE.†â‘˜µ Æ,ÐÅs]8¾„oúÑ i>ÜxxÈó)ƒ ´æÁâØ$À‰vžŸf$Ž |ãw;ÀÁIJ»b` {¦Ó¤Ú$©YÀ‘n@Óïž«9J¼êG m¤ ܯ¹ÌW4€ÐÒÅÛ‡#褕Ÿn-?í|с¥÷Ú¹¬'´ÞÜ9ÓK `hê£SÄSà?7—Wí_´…óB›»:=Ãïq`<8ñÓŒÑlú2d¬ê³£hÖ[l|$vÝro~'R®‰§°ñmY ͧäP |PUª¹·:3Œ[Û{Xÿ ºâ@‚W–Äé u‚ ¯´*=íή.pûÒdt @G‰¬ s¸ ëÉücr ÞæÑ¨Ê@>¤¢Ö±. Þ'¯°ÌME[YéïĵÂCå½ Ué©Áû'Ê9%eÔðNU”ë‘ÌsD3/®+UI˜9h.WC”빓$#:pz:YÓ ¿xž* ³$Í +$kñAŠ‹†¢ Uê>¸)_š¬÷©ßAÂÔb9ÇU ¯¾á•9¯ÏÏ÷O÷¼¼Fähal1‰3Ì[Ïr•´UCksNÐ] R‘¸¥H+§Šé†c©vÖÞ0iÓ76s†î!§=ß ¼~Ô'°Ãmäoäš³ªøi1úÉ)³yV8 CLÄØÁ‘WYïi€H6ÖÑiámø^ÈY´°Ñ7¥Û*—Ñ©L«Qƒï—Ùrÿ ›£Ð*š¸ˆL©ˆ$ˆ ÷¾D§9È®«qbqC)–ˆïv´çñsÑVT­Ø, <àïºÀO«Jý·õ àfPìð .wFšir´þ’2_Y *Æ€x\« ì€9š@ Ž|F⇥ˆkZ@hÖÄ0t¿-<“‹qµ¾*ZL¤Ú)&BJpÓF5=$„at*Zš$’ÑtdûÝRI1 2މ$€$I$#‰SÞ’Hë¬ï;Á$¡t$’`<(ñÇt)$‡Ð.Êf¢X’Kt=Éé$‚ˆªè¢oÝëòI%Rgcª÷ŠyI%¡‰ÿ !ñ)´õ $¤ Ô’IIGÿÙ (iHdZddgZddlmZddlZddlZddlZddlZddlZddl Z ej dkrddl Z dZ nddl Z dZ d d lmZejejzZd Ze rd Znd ZdZGddZdZGddZdS)zProvides shared memory for direct access across processes. The API of this package is currently provisional. Refer to the documentation for details. SharedMemory ShareableList)partialNntFT)resource_trackerz/psm_wnsm_ctttz dz}|dks Jdttj|z}t|tksJ|S)z6Create a random filename for the shared memory object.z_SHM_NAME_PREFIX too long)_SHM_SAFE_NAME_LENGTHlen_SHM_NAME_PREFIXsecrets token_hex)nbytesnames 4/usr/lib/python3.11/multiprocessing/shared_memory.py_make_filenamer(sb$c*:&;&;; AF Q;;;3;;; g/77 7D t99- - - - - KceZdZdZdZdZdZdZej Z dZ e rdndZ ddZd Zd Zd Zed Zed ZedZdZdZdS)raCreates a new shared memory block or attaches to an existing shared memory block. Every shared memory block is assigned a unique name. This enables one process to create a shared memory block with a particular name so that a different process can attach to that same shared memory block using that same name. As a resource for sharing data across processes, shared memory blocks may outlive the original process that created them. When one process no longer needs access to a shared memory block that might still be needed by other processes, the close() method should be called. When a shared memory block is no longer needed by any process, the unlink() method should be called to ensure proper cleanup.NiTFrcx|dkstd|r.ttjz|_|dkrtd|#|jtjzstdt r*|O t} tj ||j|j |_ n#t$rYCwxYw||_ n;|jrd|zn|}tj ||j|j |_ ||_ |r|rtj|j |tj|j }|j}t%j|j ||_n##t($r|wxYwt-j|j dn|r# |tn|}t1jt0jt0jt0j|d z d z|d z|} t1j}|t0jkrZ|Btt>j tj!t>j |t0j t1j"|t%jd || |_t1j"|n#t1j"|wxYw||_ n||_ t1j#t0j$d |} t1j%|t0j$ddd}t1j"|n#t1j"|wxYw t1j&|}t1j'|n#t1j'|wxYwt%jd || |_||_(tS|j|_*dS)Nrz!'size' must be a positive integerz4'size' must be a positive number different from zeroz&'name' can only be None if create=TrueT)mode/ shared_memory lr)tagnameF)+ ValueError_O_CREXosO_RDWR_flagsO_EXCL _USE_POSIXr _posixshmemshm_open_mode_fdFileExistsError_name_prepend_leading_slash ftruncatefstatst_sizemmap_mmapOSErrorunlinkrregister_winapiCreateFileMappingINVALID_HANDLE_VALUENULLPAGE_READWRITE GetLastErrorERROR_ALREADY_EXISTSerrnoEEXISTstrerror CloseHandleOpenFileMapping FILE_MAP_READ MapViewOfFileVirtualQuerySizeUnmapViewOfFile_size memoryview_buf) selfrcreatesizestats temp_nameh_maplast_error_codep_bufs r__init__zSharedMemory.__init__Ksqyy@AA A  Y!BI-DKqyy !WXXX < bi 7<EFF F _ ?| )++D!#.#7  K!%$$$ +!!! !!%DJ%)%@JsTzzd&/K "  1d1L4000**}!Ytx66        %dj/ B B B B 6 ?48L 0 0 0dI$54 .z1z)! E3*1*>*@*@*g.JJJ#/&5$)L$&K $=$=$($+$@ '"'"!"!) +E2222&*Yr4%K%K%K +E2222+E2222!*DJ"  /) /#1- E'....G'....3"3E::D+E2222G+E2222!Yr4>>>  tz** sJ&B,, B98B9AE E>4A'J"1J""J8+"L""L8<M%%M;cR |dS#t$rYdSwxYwN)closer2rHs r__del__zSharedMemory.__del__s:  JJLLLLL    DD s  &&c.|j|jd|jffS)NF) __class__rrJrTs r __reduce__zSharedMemory.__reduce__s# N     rc@|jjd|jd|jdS)N(z, size=))rW__name__rrJrTs r__repr__zSharedMemory.__repr__s*.)LLDILL LLLLrc|jS)z4A memoryview of contents of the shared memory block.)rGrTs rbufzSharedMemory.bufs yrc|j}tr0|jr)|jdr|jdd}|S)z4Unique name that identifies the shared memory block.rrN)r+r%r, startswith)rH reported_names rrzSharedMemory.namesJ  /$5 /z$$S)) / $ 122 rc|jS)zSize in bytes.)rErTs rrJzSharedMemory.sizes zrc|j |jd|_|j |jd|_tr-|jdkr$t j|jd|_dSdSdS)zkCloses access to the shared memory from this instance but does not destroy the shared memory block.Nrr)rGreleaser1rSr%r)r!rTs rrSzSharedMemory.closes 9 I     DI : ! J     DJ  $(a-- HTX   DHHH  --rctr<|jr7tj|jt j|jddSdSdS)zRequests that the underlying shared memory block be destroyed. In order to ensure proper cleanup of resources, unlink should be called once (and only once) across all processes which have access to the shared memory block.rN)r%r+r& shm_unlinkr unregisterrTs rr3zSharedMemory.unlinks]  E$* E  "4: . . .  ' O D D D D D E E E Er)NFr)r\ __module__ __qualname____doc__r+r)r1rGr!r"r#r(r%r,rPrUrXr]propertyr_rrJrSr3rrrr2s B B E C E D YF E%/:TTUl+l+l+l+\    MMMXXX   EEEEErutf8c leZdZdZedededededdj diZ dZ d d d d d Z e dZd"dddZdZdZdZdZdZdZdZdZedZedZedZedZedZedZedZd Z d!Z!e"e#j$Z%dS)#raPattern for a mutable list-like object shareable via a shared memory block. It differs from the built-in list type in that these lists can not change their overall length (i.e. no append, insert, etc.) Because values are packed into a memoryview as bytes, the struct packing format for any storable value must require no more than 8 characters to describe its format.qdzxxxxxxx?z%dsNzxxxxxx?xc|SrRrmvalues rzShareableList.src\|dtSN)rstripdecode _encodingrts rrvzShareableList.s g..55i@@rc,|dSrx)rzrts rrvzShareableList.sg..rcdSrRrm)_values rrvzShareableList.s$r)rrr ct|ttdjfsdSt|trdSt|trdSdS)zUsed in concert with _back_transforms_mapping to convert values into the appropriate Python objects when retrieving them from the list as well as when storing them.Nrrr r) isinstancestrbytesrWrts r_extract_recreation_codez&ShareableList._extract_recreation_codesW %#udn!=>> 1 s # # 1 u % % 11rrc|||pd}fd|D}t|_td|DjksJd}dg_|D]I}||ddkrjnt |ddz }j|Jfd|D}tjdj zd |zj zj z}t|d | _nt|_|ttjdj zjjdjgjRtjd |jjjgfd |DRtjj jjjgfd |DRtjj jjjg|RdSt_t+tjj jjd_dS)Nrmcg|]v}t|ttfsjt |n=jt |jt |jzdzzfzwS)r)rrr_types_mappingtype _alignmentr.0itemrHs r z*ShareableList.__init__..-s  &dS%L99#DJJ//,T$ZZ83t99+G!+KL<rc3<K|]}t|dkVdS)rrN)r)rfmts r z)ShareableList.__init__..6s,99s3xx1}999999rrrsc:g|]}|Srm)rrs rrz*ShareableList.__init__..?s4!!!8<--d33!!!rrpT)rIrJc3pK|]0}t|tr|n|V1dSrR)rrencoderv_encs rrz)ShareableList.__init__..Zs@PP!Jq#$6$6=!((4...APPPPPPrc3BK|]}|VdSrR)rrs rrz)ShareableList.__init__..`s-33Q!((4..333333rrr)r _list_lensum_allocated_offsetsrintappendstructcalcsize_format_size_metainfojoin_format_packing_metainfo_format_back_transform_codesrshmr| pack_intor__offset_data_start_offset_packing_formats_offset_back_transform_codeslist unpack_from) rHsequencer_formatsoffsetr_recreation_codesrequested_sizers ` @rrPzShareableList.__init__*s <8/~2H % H!]]DN9999999T^KKKKF()cD # 7 7SW^^$//S"XN'..v6666!!!!@H!!! $_d00!!"-.12N$DNKKKDHH#D))DH  D  d00    )       !! ' QPPPxPPP       - , 4333(333       1 1 $       !YYDN&*".HL''D # # #rc4|dkr|n ||jz}||jks |jdkrtdtjd|jj|j|dzzd}|d}|t}|S)z>Gets the packing format for a single value stored in the list.r Requested position out of range.8srrry) r IndexErrorrrrr_rrzr{r|)rHpositionrr fmt_as_strs r_get_packing_formatz!ShareableList._get_packing_formatss'1}}88(T^2K  & &DNQ,>,>?@@ @    HL  (8a< 7     hhwZZ ** rc||jks |jdkrtdtjd|jj|j|zd}|j|}|S)z9Gets the back transformation function for a single value.rrb)rrrrrr_r_back_transforms_mapping)rHrtransform_codetransform_functions r_get_back_transformz!ShareableList._get_back_transformss  & &DNQ,>,>?@@ @+  HL  - 8     ":>J!!rcT||jks |jdkrtdtjd|jj|j|dzz|t| |}tjd|jj|j |z|dS)zvSets the packing format and back transformation code for a single value in the list at the specified position.rrrrrrN) rrrrrr_rrr|rr)rHrrrurs r!_set_packing_format_and_transformz/ShareableList._set_packing_format_and_transforms  & &DNQ,>,>?@@ @  HL  (8a< 7   i ( (    66u==  HL  - 8       rc<|dkr|n ||jz} |j|j|z}tj|||jj|\}n#t$rtdwxYw| |}||}|S)Nrzindex out of range) rrrrrrrr_rr)rHrrrback_transforms r __getitem__zShareableList.__getitem__s'1}}88(T^2K 3,t/Fx/PPF%((22 DQQ  3 3 3122 2 311(;; N1  s A AA9c|dkr|n ||jz} |j|}|j|z}||}n#t$rt dwxYwt |t tfs|jt|}|}n|j|dz|z }t |t r| tn|}t||krtd|ddkr|}n|jt |fz}||||tj||jj||dS)Nrzassignment index out of rangerz(bytes/str item exceeds available storagerr)rrrrrrrrrrrr|rrrrrrr_) rHrru item_offsetrcurrent_format new_format encoded_valueallocated_lengths r __setitem__zShareableList.__setitem__s'1}}88(T^2K >1(;K,{:F!55h??NN > > ><== = >%#u.. ,T%[[9J!MM#6x!|D{R !+5# 6 6BU\\)444>rcNtjd|jjddS)Nrpr)rrrr_rTs r__len__zShareableList.__len__s !#tx|Q77::rcZ|jjdt|d|jjdS)NrZz, name=r[)rWr\rrrrTs rr]zShareableList.__repr__s0.)QQDJJQQtx}QQQQrcjdfdtjDS)z=The struct packing format used by all currently stored items.rc3BK|]}|VdSrR)r)rirHs rrz'ShareableList.format..sB  ,-D $ $Q ' '      r)rrangerrTs`rformatzShareableList.formatsKww    16t~1F1F      rcd|jdzzS)z>The struct packing format used for the items' storage offsets.rprrrTs rrz#ShareableList._format_size_metainfosdnq())rcd|jzS)z>The struct packing format used for the items' packing formats.rrrTs rrz&ShareableList._format_packing_metainfosdn$$rcd|jzS)z>The struct packing format used for the items' back transforms.rrrTs rrz*ShareableList._format_back_transform_codessT^##rc|jdzdzS)Nr rrrrTs rrz ShareableList._offset_data_starts"a''rc,|j|jdzS)Nr)rrrTs rrz%ShareableList._offset_packing_formatss&)@)DDDrc&|j|jdzzS)Nrr)rrrTs rrz*ShareableList._offset_back_transform_codess+dnq.@@@rc:tfd|DS)zCL.count(value) -> integer -- return number of occurrences of value.c3$K|] }|kV dSrRrm)rentryrus rrz&ShareableList.count.. s'44e5E>444444r)r)rHrus `rcountzShareableList.counts(4444t444444rcdt|D]\}}||kr|cSt|d)zpL.index(value) -> integer -- return first index of value. Raises ValueError if the value is not present.z not in this container) enumerater)rHrurrs rindexzShareableList.index sO ) A AOHe~~???@@ @rrR)&r\rirjrkrfloatboolrrrWrrr staticmethodrrPrrrrrrXrr]rlrrrrrrrrr classmethodtypes GenericAlias__class_getitem__rmrrrrs)**& S s j U u  NJ   @ @ . .       \ GdGGGGGR " " "   ,"JJJB???;;;RRR  X **X*%%X%$$X$((X( EEXEAAXA555 AAA$ E$677r)rk__all__ functoolsrr0r!r<rrrrr5r%r&rrO_CREATr$r r rrrr|rrmrrrs] O -  7d??NNNJJJ *ry BEBEBEBEBEBEBEBEJ  ]8]8]8]8]8]8]8]8]8]8r