E,biBSr/SQrSSKrSSKr\\R S'\rSSKJr SSKJ r SSKJ r SSKJr SS KJr SS KJr SS KJr SS KJr SS KJr \R<R?\5 SSKJ!r! SSKJ"r" "SS\RF5r$"SS\RJ5r&"SS\RN5r("SS\)5r*"SS\+5r,SSKJ,r, SSKJ-r- SSSS.Sjr.S r/SS!KJ/r/ "S"S#\+5r0"S$S%\Rb5r2"S&S'\Rb5r3"S(S)\R<5r4"S*S+\Rj5r6g!\ a Nf=f!\ a Nf=f!\ a Nf=f!\ a Nf=f!\ a Sr-Nf=f!\ a Nf=f),a?This module implements specialized container datatypes providing alternatives to Python's general purpose built-in containers, dict, list, set, and tuple. * namedtuple factory function for creating tuple subclasses with named fields * deque list-like container with fast appends and pops on either end * ChainMap dict-like class for creating a single view of multiple mappings * Counter dict subclass for counting hashable objects * OrderedDict dict subclass that remembers the order entries were added * defaultdict dict subclass that calls a factory function to supply missing values * UserDict wrapper around dictionary objects for easier dict subclassing * UserList wrapper around list objects for easier list subclassing * UserString wrapper around string objects for easier string subclassing ) ChainMapCounter OrderedDictUserDictUserList UserString defaultdictdeque namedtupleNzcollections.abc)chain)repeat)starmap) iskeyword)eq) itemgetter)recursive_repr)proxy)r )_deque_iterator)rc\rSrSrSrSrg)_OrderedDictKeysViewBc#J# [UR5ShvN gN7fNreversed_mappingselfs ;/opt/alt/python313/lib64/python3.13/collections/__init__.py __reversed__!_OrderedDictKeysView.__reversed__DsDMM***s #!#N__name__ __module__ __qualname____firstlineno__r __static_attributes__r"rrrBs+r)rc\rSrSrSrSrg)_OrderedDictItemsViewGc#h# [UR5HnXRU4v M g7frrrkeys rr "_OrderedDictItemsView.__reversed__Is*DMM*C c*+ ++s02r"Nr#r"r)rr+r+Gs,r)r+c\rSrSrSrSrg)_OrderedDictValuesViewMc#f# [UR5HnURUv M g7frrr.s rr #_OrderedDictValuesView.__reversed__Os'DMM*C--$ $+s/1r"Nr#r"r)rr2r2Ms%r)r2c\rSrSrSrSrg)_LinkS)prevnextr/ __weakref__r"N)r$r%r&r' __slots__r(r"r)rr7r7Ss4Ir)r7c|\rSrSrSrSrSSjr\R\ \ 4Sjr\R4Sjr Sr Sr S rSS jrSS jrS r\R&R(=rrS rSrSr\R&R2r\"5r\4SjrSSjr\"5S5rSr Sr!\"SSj5r#Sr$Sr%Sr&Sr'Sr(g)rVz)Dictionary that remembers insertion orderc[RU5n[5Ul[ UR5=UlnU=UlUl0UlU$)zDCreate the ordered dict object and set up the underlying structures.) dict__new__r7_OrderedDict__hardroot_proxy_OrderedDict__rootr9r:_OrderedDict__map)clsargskwdsrroots rrAOrderedDict.__new__esH||C '#DOO44 d $$ DI  r)c *UR"U40UD6 g)z|Initialize an ordered dictionary. The signature is the same as regular dictionaries. Keyword argument order is preserved. N)_OrderedDict__update)rotherrHs r__init__OrderedDict.__init__ns e$t$r)cX;aVU"5=URU'nURnURnXUsUlUlUlXhlU"U5UlU"XU5 g)z!od.__setitem__(i, y) <==> od[i]=yN)rErDr9r:r/) rr/value dict_setitemrLinklinkrIlasts r __setitem__OrderedDict.__setitem__ts] ?%)V +DJJsOd;;D99D-1 *DIty$(Id DIT&r)cU"X5 URRU5nURnURnXTlXElSUlSUlg)z od.__delitem__(y) <==> del od[y]N)rEpopr9r:)rr/ dict_delitemrT link_prev link_nexts r __delitem__OrderedDict.__delitem__sH Tzz~~c"II II ""  r)c## URnURnX!La!URv URnX!LaM gg7f)zod.__iter__() <==> iter(od)N)rDr:r/rrIcurrs r__iter__OrderedDict.__iter__9{{yy((N99D ;AAc## URnURnX!La!URv URnX!LaM gg7f)z#od.__reversed__() <==> reversed(od)N)rDr9r/r`s rr OrderedDict.__reversed__rdrecURnU=UlUlURR 5 [ R U5 g)z.od.clear() -> None. Remove all items from od.N)rDr9r:rEclearr@)rrIs rriOrderedDict.clears5{{ $$ DI  4r)c@U(d [S5eURnU(a%URnURnX$lXBlO$URnURnXRlX%lURnUR U [ RX5nXg4$)zRemove and return a (key, value) pair from the dictionary. Pairs are returned in LIFO order if last is true or FIFO order if false. zdictionary is empty)KeyErrorrDr9r:r/rEr@rY)rrUrIrTr[r\r/rQs rpopitemOrderedDict.popitems 01 1{{ 99D I!N!I99D I!I!Nhh JJsO#zr)c:URUnURnURnURnXTlXElURnU(a%URnX#lXslXglX2lgURnXslXlXhlX7lg)ztMove an existing element to the end (or beginning if last is false). Raise KeyError if the element does not exist. N)rEr9r:rD) rr/rUrTr[r\ soft_linkrIfirsts r move_to_endOrderedDict.move_to_ends| zz#II II NN ""{{ 99DII!IIIIEII"JIr)c[Rn[U5S-nU"UR5nX1"UR5S-- nX1"UR 5U-- nX1"UR 5U-- nU$)N)_sys getsizeoflen__dict__rErBrD)rsizeofnsizes r __sizeof__OrderedDict.__sizeof__ss IMdmm$ tzz"Q&& t'!++ t{{#a'' r)c[U5$)z:D.keys() -> a set-like object providing a view on D's keys)rrs rkeysOrderedDict.keyss #D))r)c[U5$)z a set-like object providing a view on D's items)r+rs ritemsOrderedDict.itemss $T**r)c[U5$)z6D.values() -> an object providing a view on D's values)r2rs rvaluesOrderedDict.valuess %d++r)cURn[RXU5nXCLaOURRU5nURnUR nXvlXglSUlSUlU$X#La [ U5eU$)zod.pop(k[,d]) -> v, remove specified key and return the corresponding value. If key is not found, d is returned if given, otherwise KeyError is raised. N)_OrderedDict__markerr@rYrEr9r:rl)rr/defaultmarkerresultrTr[r\s rrYOrderedDict.popsy $V,  ::>>#&D I I&N&NDIDIM  3- r)Nc X;aX$X U'U$)zInsert key with a value of default if key is not in the dictionary. Return the value for key if key is in the dictionary, else default. r"rr/rs r setdefaultOrderedDict.setdefault s ;9 S r)cU(dURR<S3$URR<S[UR55<S3$)zod.__repr__() <==> repr(od)()()) __class__r$r@rrs r__repr__OrderedDict.__repr__s:!^^446 6>>22D4FGGr)cUR5nU(a[U[5(aUupO0nUR5nUR5n[ [ 55H'nUR US5 UR US5 M) U(aX4nO U=(d SnURSUS[UR554$)z%Return state information for picklingNr") __getstate__ isinstancetuplecopyvarsrrYriterr)rstateslotsks r __reduce__OrderedDict.__reduce__s!!# %''$ uJJLEJJLE+-( !T" !T")  ~~r5$TZZ\0BBBr)c$URU5$)z!od.copy() -> a shallow copy of odrrs rrOrderedDict.copy-~~d##r)c.U"5nUHnX#U'M U$)zYCreate a new ordered dictionary with keys from iterable and values set to value. r")rFiterablerQrr/s rfromkeysOrderedDict.fromkeys1s!uCI r)c[U[5(a5[RX5=(a [ [ [ X55$[RX5$)zod.__eq__(y) <==> od==y. Comparison to another OD is order-sensitive while comparison to a regular mapping is order-insensitive. )rrr@__eq__allmap_eqrrMs rrOrderedDict.__eq__:s@ e[ ) );;t+JCT4I0J J{{4''r)c(URU5 U$r)updaters r__ior__OrderedDict.__ior__Cs E r)c[U[5(d[$URU5nUR U5 U$rrr@NotImplementedrrrrMnews r__or__OrderedDict.__or__Gs4%&&! !nnT" 5 r)c[U[5(d[$URU5nUR U5 U$rrrs r__ror__OrderedDict.__ror__Ns4%&&! !nnU# 4 r)) __hardroot__map__root)r")Tr))r$r%r&r'__doc__rArNr@rVrCr7r]rbr rirmrrr~_collections_abcMutableMappingrrLrrr__ne__objectrrYr_recursive_reprrrr classmethodrrrrrr(r"r)rrrVs/%"&!1!1e '-1,<,< .2)77>>>FX*+, , , 3 3FxH',HH C&$(r)r)r) _tuplegetterc([[U5US9$)N)doc)property _itemgetter)indexrs rrdsh{5/As&Kr)F)renamedefaultsmodulec ^^^^^^^^^[T[5(a TRSS5R5m[ [ [T55m[ R"[U55nU(aw[5n[T5H^upgUR5(a+[U5(dURS5(dXu;aSU3TU'URU5 M` U/T-Hcn[U5[La [S5eUR5(d[!SU<35e[U5(dMV[!SU<35e [5nTHTnURS5(aU(d[!SU<35eXu;a[!SU<35eURU5 MV 0nUbg[#U5n[%U5[%T5:a [S 5e['[)[ [+[)T5[)U55555n[#[ [ RT55m[%T5mS R-T5n TS :XaU S- n S S R-S T55-S-m["R.m[&["[$[ [*4ummmmmT0SU3S.n SU SU S3n [1X5n SU lSUS U S3U lUbX>> Point = namedtuple('Point', ['x', 'y']) >>> Point.__doc__ # docstring for the new class 'Point(x, y)' >>> p = Point(11, y=22) # instantiate with positional args or keywords >>> p[0] + p[1] # indexable like a plain tuple 33 >>> x, y = p # unpack like a regular tuple >>> x, y (11, 22) >>> p.x + p.y # fields also accessible by name 33 >>> d = p._asdict() # convert to a dictionary >>> d['x'] 11 >>> Point(**d) # convert from a dictionary Point(x=11, y=22) >>> p._replace(x=100) # _replace() is like str.replace() but targets named fields Point(x=100, y=22) , _z*Type names and field names must be stringsz6Type names and field names must be valid identifiers: z0Type names and field names cannot be a keyword: z-Field names cannot start with an underscore: z"Encountered duplicate field name: z(Got more default values than field names, rurc3*# UH oS3v M g7f)z=%rNr").0names r namedtuple..sD s| sr namedtuple_) _tuple_new __builtins__r$z lambda _cls, z: _tuple_new(_cls, (z))rAzCreate new instance of cd>T"X5nT"U5T:wa[STS[U535eU$)Nz Expected z arguments, got ) TypeErrorry)rFrr_len num_fields tuple_news r_makenamedtuple.._makes;3) <: %i |3CCK=QR R r)z Make a new z# object from a sequence or iterablec>URT"URTU55nU(a[S[U5<35eU$)NzGot unexpected field names: )rrYrlist)rrHr_map field_namess r_replacenamedtuple.._replaces=D;=> :4:.IJ J r)z Return a new z2 object replacing specified fields with new valuesc<>URRTU--$)z/Return a nicely formatted representation string)rr$)rrepr_fmts rrnamedtuple..__repr__s~~&&D88r)c6>T"T"URU55$)z9Return a new dict which maps field names to their values.)_fields)r_dict_zips r_asdictnamedtuple.._asdictsT$,,-..r)c>T"U5$)z7Return self as a plain tuple. Used by copy and pickle.r")r_tuples r__getnewargs__"namedtuple..__getnewargs__s d|r).r") rr<r_field_defaultsrAr __replace__rrrr__match_args__zAlias for field number __main__r$)&rstrreplacesplitrrrwinternset enumerate isidentifier _iskeyword startswithaddtyper ValueErrorrryr@rzipjoinrAevalr$r __defaults__r__func__r&r_getframemodulenameAttributeError _getframe f_globalsgetr%)typenamerrrrseenrrfield_defaultsarg_list namespacecoderArrrrrmethodclass_namespacerrrrrrrrrrs ` @@@@@@@@rr r fs4+s##!))#s399; s3 ,-K{{3x=)H u$[1KE%%''d##??3''<'([ E" HHTN 2 [( :S HI I  ""--1H67 7 d  ))-23 3) 5D ??3  L $x)* * <A$JK K  N? x=3{+ +FG GhtC0E080B-D(EFGDKK56K[!Jyy%HQCTYYD DDDsJH I&*E3S&@#E64t  !(,I 8*$8 " ED4#G G/z8*AFGO' !,H:6,,ENN (z211H9/   "* !FOO+<=Zq !,)(% O!- kk3E7;< ,UC 8.(UHo 6F~ --a0>JF " M  *4488ZP"J/   s*'P Q'0QQ#Q'"Q##Q'cJURnUHnU"US5S-X'M g)z!Tally elements from the iterable.r ruN)r)mappingr mapping_getelems r_count_elementsr%s(++K#D!,q0 r))r%c^\rSrSrSrS!U4SjjrSrSrS!SjrSr \ S!Sj5r S!U4S jjr S!S jr S rS rU4S jrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSrSr Sr!Sr"S r#U=r$$)"ri$aDict subclass for counting hashable items. Sometimes called a bag or multiset. Elements are stored as dictionary keys and their counts are stored as dictionary values. >>> c = Counter('abcdeabcdabcaba') # count elements from a string >>> c.most_common(3) # three most common elements [('a', 5), ('b', 4), ('c', 3)] >>> sorted(c) # list all unique elements ['a', 'b', 'c', 'd', 'e'] >>> ''.join(sorted(c.elements())) # list elements with repetitions 'aaaaabbbbcccdde' >>> sum(c.values()) # total of all counts 15 >>> c['a'] # count of letter 'a' 5 >>> for elem in 'shazam': # update counts from an iterable ... c[elem] += 1 # by adding 1 to each element's count >>> c['a'] # now there are seven 'a' 7 >>> del c['b'] # remove all 'b' >>> c['b'] # now there are zero 'b' 0 >>> d = Counter('simsalabim') # make another counter >>> c.update(d) # add in the second counter >>> c['a'] # now there are nine 'a' 9 >>> c.clear() # empty the counter >>> c Counter() Note: If a count is set to zero or reduced to zero, it will remain in the counter until the entry is deleted or the counter is cleared: >>> c = Counter('aaabbc') >>> c['b'] -= 2 # reduce the count of 'b' by two >>> c.most_common() # 'b' is still in, but its count is zero [('a', 3), ('c', 1), ('b', 0)] c H>[TU]5 UR"U40UD6 g)aCreate a new, empty Counter object. And if given, count elements from an input iterable. Or, initialize the count from another mapping of elements to their counts. >>> c = Counter() # a new, empty counter >>> c = Counter('gallahad') # a new counter from an iterable >>> c = Counter({'a': 4, 'b': 2}) # a new counter from a mapping >>> c = Counter(a=4, b=2) # a new counter from keyword args N)superrNr)rrrHrs rrNCounter.__init__Ws!  H%%r)cg)z1The count of elements not in the Counter is zero.r r"r.s r __missing__Counter.__missing__esr)c4[UR55$)zSum of the counts)sumrrs rtotal Counter.totaljs4;;=!!r)cUc"[UR5[S5SS9$SSKnUR XR5[S5S9$)zList the n most common elements and their counts from the most common to the least. If n is None, then list all element counts. >>> Counter('abracadabra').most_common(3) [('a', 5), ('b', 2), ('r', 2)] NruT)r/reverser )r/)sortedrrheapqnlargest)rr|r4s r most_commonCounter.most_commonnsD 9$**,KNDI I ~~a;q>~BBr)cf[R"[[UR 555$)aIterator over elements repeating each as many times as its count. >>> c = Counter('ABCABC') >>> sorted(c.elements()) ['A', 'A', 'B', 'B', 'C', 'C'] Knuth's example for prime factors of 1836: 2**2 * 3**3 * 17**1 >>> import math >>> prime_factors = Counter({2: 2, 3: 3, 17: 1}) >>> math.prod(prime_factors.elements()) 1836 Note, if an element's count has been set to zero or is a negative number, elements() will ignore it. )_chain from_iterable_starmap_repeatrrs relementsCounter.elements~s"&##HWdjjl$CDDr)c[S5e)Nz@Counter.fromkeys() is undefined. Use Counter(iterable) instead.)NotImplementedError)rFrvs rrCounter.fromkeyss" NP Pr)c &>Ubt[U[R5(aJU(a3URnUR 5HupEXS"US5-X'M O[ TU]U5 O [X5 U(aUR U5 gg)aLike dict.update() but add counts instead of replacing them. Source can be an iterable, a dictionary, or another Counter instance. >>> c = Counter('which') >>> c.update('witch') # add elements from another iterable >>> d = Counter('watch') >>> c.update(d) # add elements from another counter >>> c['h'] # four 'h' in which, witch, and watch 4 Nr )rrMappingrrr(rr%)rrrHself_getr$countrs rrCounter.updates{(  ($4$<$<==#xxH'/~~'7 %*XdA->%> (8GN8,/  KK  r)c UbjURn[U[R5(a(UR 5HupEU"US5U- X'M OUHnU"US5S- X'M U(aUR U5 gg)a_Like dict.update() but subtracts counts instead of replacing them. Counts can be reduced below zero. Both the inputs and outputs are allowed to contain zero and negative counts. Source can be an iterable, a dictionary, or another Counter instance. >>> c = Counter('which') >>> c.subtract('witch') # subtract elements from another iterable >>> c.subtract(Counter('watch')) # subtract elements from another counter >>> c['h'] # 2 in which, minus 1 in witch, minus 1 in watch 0 >>> c['w'] # 1 in which, minus 1 in witch, minus 1 in watch -1 Nr ru)rrrrDrsubtract)rrrHrEr$rFs rrICounter.subtracts  xxH($4$<$<==#+>>#3KD!)$!2U!:DJ$4%D!)$!2Q!6DJ%  MM$  r)c$URU5$)zReturn a shallow copy.rrs rr Counter.copyrr)c2UR[U544$r)rr@rs rrCounter.__reduce__s~~T },,r)c0>X;a[TU]U5 gg)zGLike dict.__delitem__() but does not raise KeyError for missing values.N)r(r])rr$rs rr]Counter.__delitem__s < G  % r)cU(dURRS3$[UR55nURRSU<S3$![a [U5nN4f=f)Nrrr)rr$r@r6r)rds rrCounter.__repr__sonn--.b1 1 T%%'(A..))*!A522 T A sAA0/A0cl^^[T[5(d[$[UU4SjTT455$)z=True if all counts agree. Missing counts are treated as zero.c3L># UHoHnTUTU:Hv M M g7frr"rcerMrs rr!Counter.__eq__..'I 1q!47eAh&q& !$rrrrrs``rrCounter.__eq__+%))! !Iu IIIr)cB[U[5(d[$X:X+$)z@True if any counts disagree. Missing counts are treated as zero.rrrrs rrCounter.__ne__s%))! !  r)cl^^[T[5(d[$[UU4SjTT455$)z:True if all counts in self are a subset of those in other.c3L># UHoHnTUTU:*v M M g7frr"rVs rr!Counter.__le__..'rZr[r\rs``r__le__Counter.__le__#r^r)cV[U[5(d[$X:*=(a X:g$)zATrue if all counts in self are a proper subset of those in other.r`rs r__lt__Counter.__lt__)$%))! !}..r)cl^^[T[5(d[$[UU4SjTT455$)z# UHoHnTUTU:v M M g7frr"rVs rr!Counter.__ge__..3rZr[r\rs``r__ge__Counter.__ge__/r^r)cV[U[5(d[$X:=(a X:g$)zCTrue if all counts in self are a proper superset of those in other.r`rs r__gt__Counter.__gt__5rjr)c[U[5(d[$[5nUR5Hup4XAU-nUS:dMXRU'M UR5Hup4X0;dM US:dMXBU'M U$)zgAdd counts from two counters. >>> Counter('abbb') + Counter('bcc') Counter({'b': 4, 'c': 2, 'a': 1}) r rrrrrrMrr$rFnewcounts r__add__Counter.__add__;sx%))! !::>> Counter('abbbc') - Counter('bccd') Counter({'b': 2, 'a': 1}) r rtrus r__sub__Counter.__sub__Ns|%))! !::>> Counter('abbb') | Counter('bcc') Counter({'b': 3, 'c': 2, 'a': 1}) r rtrrMrr$rF other_countrvs rrCounter.__or__as%))! !::>> Counter('abbb') & Counter('bcc') Counter({'b': 1}) r rtr}s r__and__Counter.__and__usX%))! !::/3zz|M| 519t| MD   Ns ::clUR5Hup#X==U- ss'M UR5$)zInplace add from another counter, keeping only positive counts. >>> c = Counter('abbb') >>> c += Counter('bcc') >>> c Counter({'b': 4, 'c': 2, 'a': 1}) rrrrMr$rFs r__iadd__Counter.__iadd__1!;;=KD J% J)""$$r)clUR5Hup#X==U-ss'M UR5$)zInplace subtract counter, but keep only results with positive counts. >>> c = Counter('abbbc') >>> c -= Counter('bccd') >>> c Counter({'b': 2, 'a': 1}) rrs r__isub__Counter.__isub__rr)crUR5Hup#XnX4:dMX0U'M UR5$)zInplace union is the maximum of value from either counter. >>> c = Counter('abbb') >>> c |= Counter('bcc') >>> c Counter({'b': 3, 'c': 2, 'a': 1}) r)rrMr$r~rFs rrCounter.__ior__s<"' DJE"(T "/""$$r)crUR5Hup#XnXC:dMX@U'M UR5$)zInplace intersection is the minimum of corresponding counts. >>> c = Counter('abbb') >>> c &= Counter('bcc') >>> c Counter({'b': 1}) r)rrMr$rFr~s r__iand__Counter.__iand__s; ::G LA?Awr)cB^[U4SjUR55$)Nc3.># UH nTU;v M g7frr")rmr/s rr(ChainMap.__contains__.. s/Y3!8Ysanyrr.s `r __contains__ChainMap.__contains__ s/TYY///r)c,[UR5$rrrs r__bool__ChainMap.__bool__ 499~r)cURRSSR[[UR 55S3$)Nrrr)rr$rrreprrrs rrChainMap.__repr__s5..))*!DIIc$ 6J,K+LANNr)c8U"[RX55$)zFCreate a new ChainMap with keys from iterable and values set to value.)r@r)rFrrQs rrChainMap.fromkeyss4==122r)cxUR"URSR5/URSSQ76$)zHNew ChainMap or subclass with a new copy of maps[0] and refs to maps[1:]r ruN)rrrrs rr ChainMap.copys1~~diil//1BDIIabMBBr)c xUcUnOU(aURU5 UR"U/URQ76$)zNew ChainMap with a new map followed by all previous maps. If no map is provided, an empty dict is used. Keyword arguments update the map or new empty dict. )rrr)rrkwargss r new_childChainMap.new_childs5 9A  HHV ~~a,$)),,r)c:UR"URSS6$)zNew ChainMap from maps[1:].ruN)rrrs rparentsChainMap.parents)s~~tyy}--r)c&X RSU'gNr r)rr/rQs rrVChainMap.__setitem__.s! ! Sr)c`URSU g![a [SU<35ef=f)Nr $Key not found in the first mapping: )rrlr.s rr]ChainMap.__delitem__1s< K ! S! KA#IJ J Ks-cpURSR5$![a [S5ef=f)zPRemove and return an item pair from maps[0]. Raise KeyError is maps[0] is empty.r z#No keys found in the first mapping.)rrmrlrs rrmChainMap.popitem7s< B99Q<'') ) B@A A Bs5c~URSR"U/UQ76$![a [SU<35ef=f)zWRemove *key* from maps[0] and return its value. Raise KeyError if *key* not in maps[0].r r)rrYrl)rr/rGs rrY ChainMap.pop>sJ K99Q<##C/$/ / KA#IJ J Ks"<c>URSR5 g)z'Clear maps[0], leaving maps[1:] intact.r N)rrirs rriChainMap.clearEs ! r)cBURSRU5 U$r)rrrs rrChainMap.__ior__Is ! E" r)c[U[R5(d[$UR 5nUR SR U5 U$r)rrrDrrrr)rrMrs rrChainMap.__or__MsB%!1!9!9::! ! IIK q r)c[U[R5(d[$[ U5n[ UR 5HnURU5 M URU5$r) rrrDrr@rrrr)rrMrchilds rrChainMap.__ror__TsR%!1!9!9::! ! Kdii(E HHUO)~~a  r)rr)r$r%r&r'rrNr+rrrrbrrrrrrr__copy__rrrrVr]rmrYrirrrr(r"r)rrrs '%5, 0OO33CH -.."K BK!r)rc\rSrSrSSjrSrSrSrSrSr S r SS jr S r S r S rSrSrSr\SSj5rSrg)riaNc l0UlUbURU5 U(aURU5 ggr)datar)rr@rs rrNUserDict.__init__ds/   KK   KK  r)c,[UR5$rryrrs rrUserDict.__len__krr)cXR;aURU$[URS5(aURRX5$[ U5e)Nr+)rhasattrrr+rlr.s rrUserDict.__getitem__nsJ )) 99S> ! 4>>= 1 1>>--d8 8smr)c X RU'grr)rr/items rrVUserDict.__setitem__us  #r)cURU grrr.s rr]UserDict.__delitem__xs IIcNr)c,[UR5$r)rrrs rrbUserDict.__iter__{DIIr)cXR;$rrr.s rrUserDict.__contains__siir)cX;aX$U$rr"rs rr UserDict.gets ;9 r)c,[UR5$rrrrs rrUserDict.__repr__rr)c[U[5(a(URURUR-5$[U[5(aURURU-5$[ $rrrrrr@rrs rrUserDict.__or__sV eX & &>>$))ejj"89 9 eT " ">>$))e"34 4r)c[U[5(a(URURUR-5$[U[5(aURXR-5$[ $rrrs rrUserDict.__ror__sT eX & &>>%**tyy"89 9 eT " ">>%))"34 4r)c[U[5(a!U=RUR-slU$U=RU-slU$r)rrrrs rrUserDict.__ior__s= eX & & II #I  II I r)cURRUR5nURRUR5 URSR 5URS'U$Nr)rrArzrrrinsts rrUserDict.__copy__sU~~%%dnn5 T]]+ $ f 5 : : < f r)cUR[La#[URR55$SSKnURn0UlURU5nX lUR U5 U$!X lf=fr)rrrrr)rrrrWs rr UserDict.copysg >>X %DIINN,- -yy DI $AI Is A99Bc.U"5nUHnX#U'M U$rr")rFrrQrRr/s rrUserDict.fromkeyss ECcFr)rr)r$r%r&r'rNrrrVr]rbrrrrrrrrrrr(r"r)rrras\    r)rc\rSrSrSrS#SjrSrSrSrSr S r S r S r S r S rSrSrSrSrSrSrSr\rSrSrSrSrS$SjrSrSrSrSrSr Sr!S r"S!r#S"r$g)%rizAA more or less complete user-defined wrapper around list objects.Nc/UlUbt[U5[UR5:XaXRSS&g[U[5(aURSSURSS&g[ U5Ulggr)rr rrr)rinitlists rrNUserList.__init__sa  H~dii0' ! Hh//'}}Q/ !  N  r)c,[UR5$rrrs rrUserList.__repr__rr)c>URURU5:$rr_UserList__castrs rrhUserList.__lt__yy4;;u---r)c>URURU5:*$rrrs rreUserList.__le__yyDKK...r)c>URURU5:H$rrrs rrUserList.__eq__rr)c>URURU5:$rrrs rrqUserList.__gt__rr)c>URURU5:$rrrs rrnUserList.__ge__rr)cH[U[5(a UR$U$r)rrrrs r__castUserList.__casts'x88uzzCeCr)cXR;$rrrrs rrUserList.__contains__syy  r)c,[UR5$rrrs rrUserList.__len__rr)c[U[5(aURURU5$URU$r)rslicerrris rrUserList.__getitem__s4 a  >>$))A,/ /99Q< r)c X RU'grrrr'rs rrVUserList.__setitem__s  ! r)cURU grrr&s rr]UserList.__delitem__s IIaLr)cN[U[5(a(URURUR-5$[U[ UR55(aURURU-5$URUR[ U5-5$rrrrrr rrs rrwUserList.__add__st eX & &>>$))ejj"89 9 tDII / />>$))e"34 4~~dii$u+566r)cL[U[5(a(URURUR-5$[U[ UR55(aURXR-5$UR[ U5UR-5$rr/rs r__radd__UserList.__radd__sr eX & &>>%**tyy"89 9 tDII / />>%))"34 4~~d5kDII566r)c$[U[5(a!U=RUR- slU$[U[UR55(aU=RU- slU$U=R[ U5- slU$r)rrrr rrs rrUserList.__iadd__sm eX & & II #I  tDII / / II I  IIe $I r)c>URURU-5$rrrrr|s r__mul__UserList.__mul__~~dii!m,,r)c0U=RU-slU$rrr8s r__imul__UserList.__imul__s Q  r)cURRUR5nURRUR5 URSSSURS'U$r)rrArzrrs rrUserList.__copy__sQ~~%%dnn5 T]]+ $ f 5a 8 f r)c:URRU5 gr)rappendr s rrBUserList.append r)c:URRX5 gr)rinsertr*s rrFUserList.insert!s !r)c8URRU5$r)rrYr&s rrY UserList.pop$syy}}Qr)c:URRU5 gr)rremover s rrKUserList.remove'rDr)c8URR5 gr)rrirs rriUserList.clear*s r)c$URU5$rrrs rr UserList.copy-s~~d##r)c8URRU5$r)rrFr s rrFUserList.count0syyt$$r)c<URR"U/UQ76$r)rr)rrrGs rrUserList.index3syyt+d++r)c8URR5 gr)rr2rs rr2UserList.reverse6s r)c<URR"U0UD6 gr)rsortrrGrHs rrX UserList.sort9s %%r)c[U[5(a&URRUR5 gURRU5 gr)rrrextendrs rr\UserList.extend<s7 eX & & II  UZZ ( II  U #r)rr)%r$r%r&r'rrNrrhrerrqrnrrrrrVr]rwr2rr9__rmul__r=rrBrFrYrKrirrFrr2rXr\r(r"r)rrrsK +.//./D! 77-H" $%,&$r)rc\rSrSrSrSrSrSrSrSr Sr S r S r S r S rS rSrSrSrSrSrSrSr\rSrSrSrSrSrS\R<4SjrSr Sr!SHSjr"S\R<4Sjr#SIS jr$S\R<4S!jr%S"r&S#r'S\R<4S$jr(S%r)S&r*S'r+S(r,S)r-S*r.S+r/S,r0S-r1S.r2S/r3S0r4S1r5S2r6S3r7SJS5jr8\9Rtr:S6r;SKS7jrS:r?S;r@SJS<jrASLS=jrBSLS>jrCSMS?jrDS\R<4S@jrESJSAjrFSBrGSCrHSDrISErJSFrKSGrLg4)NriGc[U[5(aXlg[U[5(aURSSUlg[U5Ulgr)rrrrrseqs rrNUserString.__init__Is; c3  I Z ( ( DICDIr)c,[UR5$r)rrrs r__str__UserString.__str__Qrr)c,[UR5$rrrs rrUserString.__repr__Trr)c,[UR5$r)intrrs r__int__UserString.__int__Wrr)c,[UR5$r)floatrrs r __float__UserString.__float__ZsTYYr)c,[UR5$r)complexrrs r __complex__UserString.__complex__]styy!!r)c,[UR5$r)hashrrs r__hash__UserString.__hash__`rr)c"URSS4$rrrs rrUserString.__getnewargs__cs ! r)c|[U[5(aURUR:H$URU:H$rrrrrstrings rrUserString.__eq__f1 fj ) )99 + +yyF""r)c|[U[5(aURUR:$URU:$rr~rs rrhUserString.__lt__k1 fj ) )99v{{* *yy6!!r)c|[U[5(aURUR:*$URU:*$rr~rs rreUserString.__le__prr)c|[U[5(aURUR:$URU:$rr~rs rrqUserString.__gt__urr)c|[U[5(aURUR:$URU:$rr~rs rrnUserString.__ge__zrr)c`[U[5(a URnXR;$rr~)rchars rrUserString.__contains__s% dJ ' '99Dyy  r)c,[UR5$rrrs rrUserString.__len__rr)c>URURU5$rr7)rrs rrUserString.__getitem__s~~dii.//r)c0[U[5(a(URURUR-5$[U[5(aURURU-5$URUR[ U5-5$r)rrrrrrs rrwUserString.__add__sl eZ ( (>>$))ejj"89 9 s # #>>$))e"34 4~~dii#e*455r)c[U[5(aURXR-5$UR[U5UR-5$r)rrrrrs rr2UserString.__radd__sA eS ! !>>%))"34 4~~c%j499455r)c>URURU-5$rr7r8s rr9UserString.__mul__r;r)c>URURU-5$rr7rrGs r__mod__UserString.__mod__s~~dii$.//r)c<UR[U5U-5$r)rr)rtemplates r__rmod__UserString.__rmod__s~~c(md233r)cTURURR55$r)rr capitalizers rrUserString.capitalizes~~dii22455r)cTURURR55$r)rrcasefoldrs rrUserString.casefold~~dii00233r)cZURURR"U/UQ765$r)rrcenterrwidthrGs rrUserString.centers%~~dii..u !dll0 > > 2 &'DLL6= T\\/ /- !dll0 ###%#(#%'####=17 I(E !dll0 !"t||1 =)7./.()dll8641:16r)r)7r__all__rsysrwmodulesabc itertoolsr r9r r<rr;keywordrr operatorrrrrreprlibrr_weakrefrrC _collectionsr MutableSequenceregister ImportErrorrrKeysViewr ItemsViewr+ ValuesViewr2rr7r@rrr r%rrrrrSequencerr"r)rrVs "2 %')+.5$5"$$--e4 , (++44+ ,,66, %-88% 5F5}$}@ (L)16Tlf1  ,r%dr%r }!..}!HZ..ZB~$//~$Jy6!**y6s(      |  LKLL|  slE3E":E.E:F0FEE"E+*E+.E76E7:FF FFFF