BLUE
PHP 7.4.33
Path:
/usr/lib/python3.10/xml/etree/__pycache__
Run
Logout
Edit File
Size: 54.57 KB
Close
/usr/lib/python3.10/xml/etree/__pycache__/ElementTree.cpython-310.pyc
Text
Base64
bw0NCgAAAABwzKZpYSABAOMAAAAAAAAAAAAAAAAAAAAACAAAAEAAAABzigIAAGQAWgBnAGQBogFaAWQCWgJkA2QEbANaA2QDZARsBFoEZANkBGwFWgVkA2QEbAZaBmQDZARsB1oHZANkBGwIWgdkA2QEbAlaCWQFZAZsCm0LWgsBAEcAZAdkCIQAZAhlDIMDWg1kCWQKhABaDkcAZAtkDIQAZAyDAloPaQBmAWQNZA6EAVoQZF5kD2QQhAFaEWReZBFkEoQBWhJlEloTRwBkE2QUhABkFIMCWhRHAGQVZBaEAGQWgwJaFWUJahZkF2QYhACDAVoXZF5kGWQahAFaGGQbZByEAFoZZB1aGnoGZRtlGoMBWhpXAG4JBABlHHl+AQABAAEAWQBuAXcAZB5kH4QAWh1kIGQhhABaHmUZZR1lHmQinANaH2QjZCSEAFogZCVkJmQnZChkKWQqZCtkLJwHWiFlIWUgXyFkLWQuhABaImQvZDCEAFojZDFkMoQAWiRkM2Q0hABaJWRfZARkBGQ1ZDacA2Q3ZDiEA1omRwBkOWQ6hABkOmUGaieDA1ooZF9kBGQEZDVkNpwDZDtkPIQDWilkPWQ+hABaKmRgZEBkQYQBWitkXmRCZEOEAVosZF9kRGRFhAFaLUcAZEZkR4QAZEeDAlouZF5kSGRJhAFaL2ReZEpkS4QBWjBlL1oxZF5kTGRNhAFaMkcAZE5kT4QAZE+DAlozRwBkUGRRhABkUYMCWjRkXmQEZARkUpwCZFNkVIQDWjVlBKA2ZFVlBGo3oQJqOFo5RwBkVmRXhABkV4MCWjpkWGRZhABaO2RaZFuEAFo8eg5lD1o9ZANkXGw+VABkA2RdbD5tP1o/AQBXAG4LBABlQJABeT0BAAEAAQBZAGQEUwB3AGU/ZRFlEoMCAQBkBFMAKWFhBgUAAExpZ2h0d2VpZ2h0IFhNTCBzdXBwb3J0IGZvciBQeXRob24uCgogWE1MIGlzIGFuIGluaGVyZW50bHkgaGllcmFyY2hpY2FsIGRhdGEgZm9ybWF0LCBhbmQgdGhlIG1vc3QgbmF0dXJhbCB3YXkgdG8KIHJlcHJlc2VudCBpdCBpcyB3aXRoIGEgdHJlZS4gIFRoaXMgbW9kdWxlIGhhcyB0d28gY2xhc3NlcyBmb3IgdGhpcyBwdXJwb3NlOgoKICAgIDEuIEVsZW1lbnRUcmVlIHJlcHJlc2VudHMgdGhlIHdob2xlIFhNTCBkb2N1bWVudCBhcyBhIHRyZWUgYW5kCgogICAgMi4gRWxlbWVudCByZXByZXNlbnRzIGEgc2luZ2xlIG5vZGUgaW4gdGhpcyB0cmVlLgoKIEludGVyYWN0aW9ucyB3aXRoIHRoZSB3aG9sZSBkb2N1bWVudCAocmVhZGluZyBhbmQgd3JpdGluZyB0by9mcm9tIGZpbGVzKSBhcmUKIHVzdWFsbHkgZG9uZSBvbiB0aGUgRWxlbWVudFRyZWUgbGV2ZWwuICBJbnRlcmFjdGlvbnMgd2l0aCBhIHNpbmdsZSBYTUwgZWxlbWVudAogYW5kIGl0cyBzdWItZWxlbWVudHMgYXJlIGRvbmUgb24gdGhlIEVsZW1lbnQgbGV2ZWwuCgogRWxlbWVudCBpcyBhIGZsZXhpYmxlIGNvbnRhaW5lciBvYmplY3QgZGVzaWduZWQgdG8gc3RvcmUgaGllcmFyY2hpY2FsIGRhdGEKIHN0cnVjdHVyZXMgaW4gbWVtb3J5LiBJdCBjYW4gYmUgZGVzY3JpYmVkIGFzIGEgY3Jvc3MgYmV0d2VlbiBhIGxpc3QgYW5kIGEKIGRpY3Rpb25hcnkuICBFYWNoIEVsZW1lbnQgaGFzIGEgbnVtYmVyIG9mIHByb3BlcnRpZXMgYXNzb2NpYXRlZCB3aXRoIGl0OgoKICAgICd0YWcnIC0gYSBzdHJpbmcgY29udGFpbmluZyB0aGUgZWxlbWVudCdzIG5hbWUuCgogICAgJ2F0dHJpYnV0ZXMnIC0gYSBQeXRob24gZGljdGlvbmFyeSBzdG9yaW5nIHRoZSBlbGVtZW50J3MgYXR0cmlidXRlcy4KCiAgICAndGV4dCcgLSBhIHN0cmluZyBjb250YWluaW5nIHRoZSBlbGVtZW50J3MgdGV4dCBjb250ZW50LgoKICAgICd0YWlsJyAtIGFuIG9wdGlvbmFsIHN0cmluZyBjb250YWluaW5nIHRleHQgYWZ0ZXIgdGhlIGVsZW1lbnQncyBlbmQgdGFnLgoKICAgIEFuZCBhIG51bWJlciBvZiBjaGlsZCBlbGVtZW50cyBzdG9yZWQgaW4gYSBQeXRob24gc2VxdWVuY2UuCgogVG8gY3JlYXRlIGFuIGVsZW1lbnQgaW5zdGFuY2UsIHVzZSB0aGUgRWxlbWVudCBjb25zdHJ1Y3RvciwKIG9yIHRoZSBTdWJFbGVtZW50IGZhY3RvcnkgZnVuY3Rpb24uCgogWW91IGNhbiBhbHNvIHVzZSB0aGUgRWxlbWVudFRyZWUgY2xhc3MgdG8gd3JhcCBhbiBlbGVtZW50IHN0cnVjdHVyZQogYW5kIGNvbnZlcnQgaXQgdG8gYW5kIGZyb20gWE1MLgoKKRraB0NvbW1lbnTaBGR1bXDaB0VsZW1lbnTaC0VsZW1lbnRUcmVl2gpmcm9tc3RyaW5n2g5mcm9tc3RyaW5nbGlzdNoGaW5kZW502glpc2VsZW1lbnTaCWl0ZXJwYXJzZdoFcGFyc2XaClBhcnNlRXJyb3LaAlBJ2hVQcm9jZXNzaW5nSW5zdHJ1Y3Rpb27aBVFOYW1l2gpTdWJFbGVtZW502gh0b3N0cmluZ9oMdG9zdHJpbmdsaXN02gtUcmVlQnVpbGRlctoHVkVSU0lPTtoDWE1M2gVYTUxJRNoJWE1MUGFyc2Vy2g1YTUxQdWxsUGFyc2Vy2hJyZWdpc3Rlcl9uYW1lc3BhY2XaDGNhbm9uaWNhbGl6ZdoQQzE0TldyaXRlclRhcmdldHoFMS4zLjDpAAAAAE7pAQAAACkB2gtFbGVtZW50UGF0aGMAAAAAAAAAAAAAAAAAAAAAAQAAAEAAAABzEAAAAGUAWgFkAFoCZAFaA2QCUwApA3ILAAAAeuxBbiBlcnJvciB3aGVuIHBhcnNpbmcgYW4gWE1MIGRvY3VtZW50LgoKICAgIEluIGFkZGl0aW9uIHRvIGl0cyBleGNlcHRpb24gdmFsdWUsIGEgUGFyc2VFcnJvciBjb250YWlucwogICAgdHdvIGV4dHJhIGF0dHJpYnV0ZXM6CiAgICAgICAgJ2NvZGUnICAgICAtIHRoZSBzcGVjaWZpYyBleGNlcHRpb24gY29kZQogICAgICAgICdwb3NpdGlvbicgLSB0aGUgbGluZSBhbmQgY29sdW1uIG9mIHRoZSBlcnJvcgoKICAgIE4pBNoIX19uYW1lX1/aCl9fbW9kdWxlX1/aDF9fcXVhbG5hbWVfX9oHX19kb2NfX6kAciIAAAByIgAAAPosL3Vzci9saWIvcHl0aG9uMy4xMC94bWwvZXRy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ZmlsZW5hbWUqIC0tIGZpbGUgbmFtZSBvciBhIGZpbGUgb2JqZWN0IG9wZW5lZCBmb3Igd3JpdGluZwoKICAgICAgICAgICplbmNvZGluZyogLS0gdGhlIG91dHB1dCBlbmNvZGluZyAoZGVmYXVsdDogVVMtQVNDSUkpCgogICAgICAgICAgKnhtbF9kZWNsYXJhdGlvbiogLS0gYm9vbCBpbmRpY2F0aW5nIGlmIGFuIFhNTCBkZWNsYXJhdGlvbiBzaG91bGQgYmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGVkIHRvIHRoZSBvdXRwdXQuIElmIE5vbmUsIGFuIFhNTCBkZWNsYXJhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYWRkZWQgaWYgZW5jb2RpbmcgSVMgTk9UIGVpdGhlciBvZjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVTLUFTQ0lJLCBVVEYtOCwgb3IgVW5pY29kZQoKICAgICAgICAgICpkZWZhdWx0X25hbWVzcGFjZSogLS0gc2V0cyB0aGUgZGVmYXVsdCBYTUwgbmFtZXNwYWNlIChmb3IgInhtbG5zIikKCiAgICAgICAgICAqbWV0aG9kKiAtLSBlaXRoZXIgInhtbCIgKGRlZmF1bHQpLCAiaHRtbCwgInRleHQiLCBvciAiYzE0biIKCiAgICAgICAgICAqc2hvcnRfZW1wdHlfZWxlbWVudHMqIC0tIGNvbnRyb2xzIHRoZSBmb3JtYXR0aW5nIG9mIGVsZW1lbnRzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgY29udGFpbiBubyBjb250ZW50LiBJZiBUcnVlIChkZWZhdWx0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGV5IGFyZSBlbWl0dGVkIGFzIGEgc2luZ2xlIHNlbGYtY2xvc2VkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZywgb3RoZXJ3aXNlIHRoZXkgYXJlIGVtaXR0ZWQgYXMgYSBwYWlyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHN0YXJ0L2VuZCB0YWdzCgogICAgICAgINoDeG1sehF1bmtub3duIG1ldGhvZCAlctoEYzE0bvoFdXRmLTj6CHVzLWFzY2lpTtoHdW5pY29kZSkCcqEAAAByogAAAHokPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nJXMnPz4KcjsAAABynQAAACkH2gpfc2VyaWFsaXpl2gpWYWx1ZUVycm9y2gtfZ2V0X3dyaXRlctoFbG93ZXLaD19zZXJpYWxpemVfdGV4dHKIAAAA2gtfbmFtZXNwYWNlcykMci0AAADaEGZpbGVfb3JfZmlsZW5hbWXaCGVuY29kaW5n2g94bWxfZGVjbGFyYXRpb27aEWRlZmF1bHRfbmFtZXNwYWNl2gZtZXRob2RyngAAANoFd3JpdGXaEWRlY2xhcmVkX2VuY29kaW5n2gZxbmFtZXNyYAAAANoJc2VyaWFsaXplciIAAAByIgAAAHIjAAAAcq8AAAC1AgAAczQAAAAEHQYBCAEMAQQBCAEGAQQCEAEMAQgBDAEMAQQBAgEI/wgCDgEQAggBDAECAQj/DvQCCCL4ehFFbGVtZW50VHJlZS53cml0ZWMCAAAAAAAAAAAAAAACAAAABAAAAEMAAABzDgAAAHwAagB8AWQBZAKNAlMAKQNOcqAAAAApAXKuAAAAKQFyrwAAACkCci0AAAByiQAAAHIiAAAAciIAAAByIwAAANoKd3JpdGVfYzE0buoCAABzAgAAAA4CehZFbGVtZW50VHJlZS53cml0ZV9jMTRucnQAAAByOgAAACkETk5OTikPch4AAAByHwAAAHIgAAAAciEAAAByLwAAAHKLAAAAcowAAAByCgAAAHJwAAAAcl0AAAByYgAAAHJlAAAAcmYAAAByrwAAAHKzAAAAciIAAAByIgAAAHIiAAAAciMAAAByBAAAAA0CAABzJgAAAAgABAEKCggGCAQKCgolCgwKFgoWChYCFwIBAgECAQL8AgUM+ww1cgQAAABjAgAAAAAAAAAAAAAABQAAAAsAAABjAAAAc2YBAACBAHoFfABqAH0CVwBuMgQAdAF5OAEAAQABAHwBoAKhAGQBawJyFWQCfQF0A3wAZAN8AWQEZAWNBI8QfQN8A2oAfAFmAlYAAQBXAGQABAAEAIMDAQBZAGQAUwAxAHMwdwEBAAEAAQBZAAEAWQBkAFMAdwB8AaACoQBkAWsCckx8AnQEfABkBmQAgwNwR2QCZgJWAAEAZABTAHQFoAahAI9ZfQR0B3wAdAhqCYMCclp8AH0DbjJ0B3wAdAhqCoMCcmx0CKALfAChAX0DfASgDHwDag2hAQEAbiB0CKAJoQB9A2QHZAiEAHwDXw58AnwDXwB6CnwAag98A18PfABqEHwDXxBXAG4JBAB0AXmLAQABAAEAWQBuAXcAdAhqEXwDfAFkBGQJZAqNBH0DfASgDHwDag2hAQEAfANqAHwBZgJWAAEAVwBkAAQABACDAwEAZABTADEAc6x3AQEAAQABAFkAAQBkAFMAKQtOcqMAAAByoQAAANoBd9oReG1sY2hhcnJlZnJlcGxhY2UpAnKrAAAA2gZlcnJvcnNyqwAAAGMAAAAAAAAAAAAAAAAAAAAAAQAAAFMAAADzBAAAAGQBUwCpAk5UciIAAAByIgAAAHIiAAAAciIAAAByIwAAANoIPGxhbWJkYT4RAwAAcwIAAAAEAHodX2dldF93cml0ZXIuPGxvY2Fscz4uPGxhbWJkYT7aAQopA3KrAAAAcrYAAADaB25ld2xpbmUpEnKvAAAA2g5BdHRyaWJ1dGVFcnJvcnKnAAAAcpAAAADaB2dldGF0dHLaCmNvbnRleHRsaWLaCUV4aXRTdGFja3InAAAA2gJpb9oOQnVmZmVyZWRJT0Jhc2XaCVJhd0lPQmFzZdoOQnVmZmVyZWRXcml0ZXLaCGNhbGxiYWNr2gZkZXRhY2jaCHdyaXRhYmxl2ghzZWVrYWJsZdoEdGVsbNoNVGV4dElPV3JhcHBlcikFcqoAAAByqwAAAHKvAAAAcokAAADaBXN0YWNrciIAAAByIgAAAHIjAAAAcqYAAADxAgAAc0wAAAACgAIDCgEMAQwCBAEIAQIBBv8CAQ4BJv4C/AwKGgIKAwwBBgEMAQoBDgMIBAoBBgECAQgDDAEMAQQBAv8GAgIBAgECAQb9DAYOASLkcqYAAABjAgAAAAAAAAAAAAAABwAAAAUAAAADAAAAcxQBAABkAGQAaQGJAmkAiQGIAHIMZAGIAYgAPACHAIcBhwJmA2QCZAOECH0CfACgAKEARABdbX0AfABqAX0DdAJ8A3QDgwJyLXwDagSIAnYBcix8AnwDagSDAQEAbh50AnwDdAWDAnI7fAOIAnYBcjp8AnwDgwEBAG4QfANkAHUBckt8A3QGdQFyS3wDdAd1AXJLdAh8A4MBAQB8AKAJoQBEAF0jXAJ9BH0FdAJ8BHQDgwJyW3wEagR9BHwEiAJ2AXJjfAJ8BIMBAQB0AnwFdAODAnJyfAVqBIgCdgFycnwCfAVqBIMBAQBxT3wAagR9BnQCfAZ0A4MCcoV8BmoEiAJ2AXKFfAJ8BmoEgwEBAHEYiAKIAWYCUwApBE7aAGMBAAAAAAAAAAAAAAAEAAAACAAAABMAAABzyAAAAHpVfABkAGQBhQIZAGQCawJySXwAZAFkAIUCGQCgAGQDZAGhAlwCfQF9AogBoAF8AaEBfQN8A2QAdQByNXQCoAF8AaEBfQN8A2QAdQByLWQEdAOIAYMBFgB9A3wDZAVrA3I1fAOIAXwBPAB8A3JCZAZ8A3wCZgIWAIgCfAA8AFcAZABTAHwCiAJ8ADwAVwBkAFMAiAByT3QEZAeDAYIBfACIAnwAPABXAGQAUwAEAHQFeWMBAAEAAQB0BnwAgwEBAFkAZABTAHcAKQhOchwAAAD6AXv6AX16BG5zJWRynwAAAHoFJXM6JXN6PGNhbm5vdCB1c2Ugbm9uLXF1YWxpZmllZCBuYW1lcyB3aXRoIGRlZmF1bHRfbmFtZXNwYWNlIG9wdGlvbikH2gZyc3BsaXRyaAAAANoOX25hbWVzcGFjZV9tYXByPwAAAHKlAAAAcikAAADaGl9yYWlzZV9zZXJpYWxpemF0aW9uX2Vycm9yKQTaBXFuYW1l2gN1cmlyJAAAANoGcHJlZml4qQNyrQAAAHJgAAAAcrEAAAByIgAAAHIjAAAA2glhZGRfcW5hbWUuAwAAcyoAAAACAhABGAEKAQgBCgEIAQwBCAEIAQQBFgEOAgQCAgICAQT/DgQMAQ4BAv96Hl9uYW1lc3BhY2VzLjxsb2NhbHM+LmFkZF9xbmFtZSkKcnAAAAByJAAAAHInAAAAcg4AAAByOwAAAHJxAAAAcgEAAAByDAAAAHLQAAAAcm4AAAApB3I9AAAAcq0AAABy1QAAAHIkAAAAcmkAAAByagAAAHI7AAAAciIAAABy1AAAAHIjAAAAcqkAAAAjAwAAczwAAAAIBAQDBAEIARACDBwGAQoBCgEKAQKACgEIAQgBAoAYAQgBEAEKAQYBCAEIARQBCgECgAYBFAEKAQKACAFyqQAAAGMFAAAAAAAAAAAAAAAMAAAACAAAAEsAAABzogEAAHwBagB9BnwBagF9B3wGdAJ1AHIRfABkAXwHFgCDAQEAbrJ8BnQDdQByHHwAZAJ8BxYAgwEBAG6nfAJ8BhkAfQZ8BmQAdQByO3wHcix8AHQEfAeDAYMBAQB8AUQAXQt9CHQFfAB8CHwCZAB8BGQDjQUBAHEuboh8AGQEfAYXAIMBAQB0BnwBoAehAIMBfQl8CXNLfANylHwDcmx0CHwDoAehAGQFZAaEAGQHjQJEAF0UXAJ9Cn0LfAtyYWQIfAsXAH0LfABkCXwLdAl8CoMBZgIWAIMBAQBxV3wJRABdJVwCfQt9CnQKfAt0C4MCcnp8C2oBfQt0CnwKdAuDAnKFfAJ8CmoBGQB9Cm4EdAl8CoMBfQp8AGQKfAJ8CxkAfApmAhYAgwEBAHFufAdznHQMfAGDAXOcfARzv3wAZAuDAQEAfAdyqHwAdAR8B4MBgwEBAHwBRABdC30IdAV8AHwIfAJkAHwEZAONBQEAcap8AGQMfAYXAGQLFwCDAQEAbgR8AGQNgwEBAHwBag1yz3wAdAR8AWoNgwGDAQEAZABTAGQAUwApDk76CTwhLS0lcy0tPvoGPD8lcz8+cp0AAAD6ATxjAQAAAAAAAAAAAAAAAQAAAAIAAABTAAAA8wgAAAB8AGQBGQBTAKkCTnIcAAAAciIAAACpAdoBeHIiAAAAciIAAAByIwAAAHK5AAAAdgMAAPMCAAAACAB6IF9zZXJpYWxpemVfeG1sLjxsb2NhbHM+LjxsYW1iZGE+qQFyaQAAAPoBOvoNIHhtbG5zJXM9IiVzIvoIICVzPSIlcyL6AT76AjwvegMgLz4pDnIkAAAAcjsAAAByAQAAAHINAAAA2g1fZXNjYXBlX2NkYXRh2g5fc2VyaWFsaXplX3htbNoEbGlzdHJuAAAA2gZzb3J0ZWTaDl9lc2NhcGVfYXR0cmlicicAAAByDgAAAHI/AAAAcjwAAAApDHKvAAAAcj0AAABysQAAAHJgAAAAcp4AAADaBmt3YXJnc3IkAAAAcjsAAAByWQAAAHJuAAAA2gF22gFrciIAAAByIgAAAHIjAAAAcuUAAABgAwAAc2AAAAAGAgYBCAEOAQgBDgEIAggBBAEMAQgBCgECAQj/Av8MBAwBCAEEAQgBBgEO/wQCCAEEAQIBBgEK/gwECgEGAQoBDAEIAhYBEAEIAQQBDAEIAQoBAgEI/xICCAIGARIBBP9y5QAAACkN2gRhcmVh2gRiYXNl2ghiYXNlZm9udNoCYnLaA2NvbNoFZnJhbWXaAmhy2gNpbWfaBWlucHV02gdpc2luZGV42gRsaW5r2gRtZXRh2gVwYXJhbWMEAAAAAAAAAAAAAAAMAAAABgAAAEsAAABzsgEAAHwBagB9BXwBagF9BnwFdAJ1AHITfABkAXQDfAaDARYAgwEBAG64fAV0BHUAciB8AGQCdAN8BoMBFgCDAQEAbqt8AnwFGQB9BXwFZAB1AHI9fAZyMHwAdAN8BoMBgwEBAHwBRABdCX0HdAV8AHwHfAJkAIMEAQBxMm6OfABkA3wFFwCDAQEAdAZ8AaAHoQCDAX0IfAhzTXwDcpZ8A3JudAh8A6AHoQBkBGQFhABkBo0CRABdFFwCfQl9CnwKcmNkB3wKFwB9CnwAZAh8CnQJfAmDAWYCFgCDAQEAcVl8CEQAXSVcAn0KfQl0CnwKdAuDAnJ8fApqAX0KdAp8CXQLgwJyh3wCfAlqARkAfQluBHQMfAmDAX0JfABkCXwCfAoZAHwJZgIWAIMBAQBxcHwAZAqDAQEAfAWgDaEAfQt8BnKzfAtkC2sCc6h8C2QMawJyrXwAfAaDAQEAbgZ8AHQDfAaDAYMBAQB8AUQAXQl9B3QFfAB8B3wCZACDBAEAcbV8C3QOdgFyy3wAZA18BRcAZAoXAIMBAQB8AWoPctd8AHQDfAFqD4MBgwEBAGQAUwBkAFMAKQ5OctYAAABy1wAAAHLYAAAAYwEAAAAAAAAAAAAAAAEAAAACAAAAUwAAAHLZAAAActoAAAByIgAAAHLbAAAAciIAAAByIgAAAHIjAAAAcrkAAACuAwAAct0AAAB6IV9zZXJpYWxpemVfaHRtbC48bG9jYWxzPi48bGFtYmRhPnLeAAAAct8AAABy4AAAAHLhAAAAcuIAAADaBnNjcmlwdNoFc3R5bGVy4wAAACkQciQAAAByOwAAAHIBAAAAcuQAAAByDQAAANoPX3NlcmlhbGl6ZV9odG1scuYAAABybgAAAHLnAAAAcugAAAByJwAAAHIOAAAA2hNfZXNjYXBlX2F0dHJpYl9odG1scqcAAADaCkhUTUxfRU1QVFlyPAAAACkMcq8AAAByPQAAAHKxAAAAcmAAAABy6QAAAHIkAAAAcjsAAAByWQAAAHJuAAAAcuoAAABy6wAAANoEbHRhZ3IiAAAAciIAAAByIwAAAHL7AAAAmgMAAHNcAAAABgEGAQgBEgEIARIBCAIIAQQBDAEIARABAv8MAwwBCAEEAQgBBgEO/wQCCAEEAQIBBgEK/gwECgEGAQoBDAEIAhYCCAEIAQQBEAEKAQwCCAEQAQgBEAEGARIBBP9y+wAAAGMCAAAAAAAAAAAAAAADAAAAAwAAAEMAAABzLgAAAHwBoAChAEQAXQZ9AnwAfAKDAQEAcQR8AWoBchV8AHwBagGDAQEAZABTAGQAUwByOgAAACkCcnIAAAByPAAAACkDcq8AAAByPQAAANoEcGFydHIiAAAAciIAAAByIwAAAHKoAAAAzAMAAHMKAAAADAEKAQYBDgEE/3KoAAAAKQNynwAAANoEaHRtbHI7AAAAYwIAAAAAAAAAAAAAAAQAAAAEAAAAQwAAAHNMAAAAdACgAWQBfAChAnIKdAJkAoMBggF0A3QEoAWhAIMBRABdD1wCfQJ9A3wCfAFrAnMcfAN8AGsCch90BHwCPQBxEHwAdAR8ATwAZANTACkEYXQBAABSZWdpc3RlciBhIG5hbWVzcGFjZSBwcmVmaXguCgogICAgVGhlIHJlZ2lzdHJ5IGlzIGdsb2JhbCwgYW5kIGFueSBleGlzdGluZyBtYXBwaW5nIGZvciBlaXRoZXIgdGhlCiAgICBnaXZlbiBwcmVmaXggb3IgdGhlIG5hbWVzcGFjZSBVUkkgd2lsbCBiZSByZW1vdmVkLgoKICAgICpwcmVmaXgqIGlzIHRoZSBuYW1lc3BhY2UgcHJlZml4LCAqdXJpKiBpcyBhIG5hbWVzcGFjZSB1cmkuIFRhZ3MgYW5kCiAgICBhdHRyaWJ1dGVzIGluIHRoaXMgbmFtZXNwYWNlIHdpbGwgYmUgc2VyaWFsaXplZCB3aXRoIHByZWZpeCBpZiBwb3NzaWJsZS4KCiAgICBWYWx1ZUVycm9yIGlzIHJhaXNlZCBpZiBwcmVmaXggaXMgcmVzZXJ2ZWQgb3IgaXMgaW52YWxpZC4KCiAgICB6Bm5zXGQrJHonUHJlZml4IGZvcm1hdCByZXNlcnZlZCBmb3IgaW50ZXJuYWwgdXNlTikG2gJyZdoFbWF0Y2hypQAAAHLmAAAAcs8AAABybgAAACkEctMAAABy0gAAAHLrAAAAcuoAAAByIgAAAHIiAAAAciMAAAByGAAAANsDAABzDgAAAAwMCAEUARABBgECgAwBchgAAABynwAAAHIAAQAA2gNyZGbaBHdzZGzaAnhz2gN4c2naAmRjKQf6JGh0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZXocaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbHoraHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zI3ogaHR0cDovL3NjaGVtYXMueG1sc29hcC5vcmcvd3NkbC96IGh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1heilodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZXogaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS9jAQAAAAAAAAAAAAAAAQAAAAUAAABDAAAAcxYAAAB0AGQBfAB0AXwAgwFqAmYCFgCDAYIBKQJOeh1jYW5ub3Qgc2VyaWFsaXplICVyICh0eXBlICVzKSkDcikAAAByWAAAAHIeAAAAcngAAAByIgAAAHIiAAAAciMAAABy0AAAAP0DAABzBgAAAAIBEAEE/3LQAAAAYwEAAAAAAAAAAAAAAAEAAAAJAAAAQwAAAPNkAAAAeiFkAXwAdgByC3wAoABkAWQCoQJ9AGQDfAB2AHIVfACgAGQDZAShAn0AZAV8AHYAch98AKAAZAVkBqECfQB8AFcAUwAEAHQBdAJmAnkxAQABAAEAdAN8AIMBAQBZAGQAUwB3ACkHTvoBJvoFJmFtcDty2AAAAPoEJmx0O3LiAAAA+gQmZ3Q7qQTaB3JlcGxhY2VyKQAAAHK8AAAActAAAAByeAAAAHIiAAAAciIAAAByIwAAAHLkAAAAAgQAAHMWAAAAAgIIBAwBCAEMAQgBDAEGARABDgEC/3LkAAAAYwEAAAAAAAAAAAAAAAEAAAAJAAAAQwAAAHO0AAAAeklkAXwAdgByC3wAoABkAWQCoQJ9AGQDfAB2AHIVfACgAGQDZAShAn0AZAV8AHYAch98AKAAZAVkBqECfQBkB3wAdgByKXwAoABkB2QIoQJ9AGQJfAB2AHIzfACgAGQJZAqhAn0AZAt8AHYAcj18AKAAZAtkDKECfQBkDXwAdgByR3wAoABkDWQOoQJ9AHwAVwBTAAQAdAF0AmYCeVkBAAEAAQB0A3wAgwEBAFkAZABTAHcAKQ9OcgoBAAByCwEAAHLYAAAAcgwBAABy4gAAAHINAQAA+gEi+gYmcXVvdDv6AQ16BSYjMTM7croAAAB6BSYjMTA7+gEJegUmIzA5O3IOAQAAcngAAAByIgAAAHIiAAAAciMAAABy6AAAABIEAABzJgAAAAICCAEMAQgBDAEIAQwBCAEMAQgIDAEIAQwBCAEMAQYBEAEOAQL/cugAAABjAQAAAAAAAAAAAAAAAQAAAAkAAABDAAAAcgkBAAApB05yCgEAAHILAQAAcuIAAAByDQEAAHIQAQAAchEBAAByDgEAAHJ4AAAAciIAAAByIgAAAHIjAAAAcvwAAAAuBAAAcxYAAAACAggBDAEIAQwBCAEMAQYBEAEOAQL/cvwAAABUKQNyrAAAAHKtAAAAcp4AAABjAwAAAAAAAAADAAAABwAAAAgAAABDAAAAczoAAAB8AWQBawJyCHQAoAGhAG4DdACgAqEAfQZ0A3wAgwFqBHwGfAF8A3wEfAJ8BWQCjQYBAHwGoAWhAFMAKQNhCgIAAEdlbmVyYXRlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBYTUwgZWxlbWVudC4KCiAgICBBbGwgc3ViZWxlbWVudHMgYXJlIGluY2x1ZGVkLiAgSWYgZW5jb2RpbmcgaXMgInVuaWNvZGUiLCBhIHN0cmluZwogICAgaXMgcmV0dXJuZWQuIE90aGVyd2lzZSBhIGJ5dGVzdHJpbmcgaXMgcmV0dXJuZWQuCgogICAgKmVsZW1lbnQqIGlzIGFuIEVsZW1lbnQgaW5zdGFuY2UsICplbmNvZGluZyogaXMgYW4gb3B0aW9uYWwgb3V0cHV0CiAgICBlbmNvZGluZyBkZWZhdWx0aW5nIHRvIFVTLUFTQ0lJLCAqbWV0aG9kKiBpcyBhbiBvcHRpb25hbCBvdXRwdXQgd2hpY2ggY2FuCiAgICBiZSBvbmUgb2YgInhtbCIgKGRlZmF1bHQpLCAiaHRtbCIsICJ0ZXh0IiBvciAiYzE0biIsICpkZWZhdWx0X25hbWVzcGFjZSoKICAgIHNldHMgdGhlIGRlZmF1bHQgWE1MIG5hbWVzcGFjZSAoZm9yICJ4bWxucyIpLgoKICAgIFJldHVybnMgYW4gKG9wdGlvbmFsbHkpIGVuY29kZWQgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIFhNTCBkYXRhLgoKICAgIHKjAAAAqQRyrAAAAHKtAAAAcq4AAAByngAAACkGcsAAAADaCFN0cmluZ0lP2gdCeXRlc0lPcgQAAAByrwAAANoIZ2V0dmFsdWUpB3ImAAAAcqsAAAByrgAAAHKsAAAAcq0AAAByngAAANoGc3RyZWFtciIAAAByIgAAAHIjAAAAchAAAAA9BAAAcxAAAAAYEAwBAgECAQIBAgEG/AgFchAAAABjAAAAAAAAAAAAAAAAAAAAAAIAAABAAAAAczgAAABlAFoBZABaAmQBWgNkAmQDhABaBGQEZAWEAFoFZAZkB4QAWgZkCGQJhABaB2QKZAuEAFoIZAxTACkN2g9fTGlzdERhdGFTdHJlYW16N0FuIGF1eGlsaWFyeSBzdHJlYW0gYWNjdW11bGF0aW5nIGludG8gYSBsaXN0IHJlZmVyZW5jZS5jAgAAAAAAAAAAAAAAAgAAAAIAAABDAAAAcwoAAAB8AXwAXwBkAFMAcjoAAAApAdoDbHN0KQJyLQAAAHIaAQAAciIAAAByIgAAAHIjAAAAci8AAABXBAAAckEAAAB6GF9MaXN0RGF0YVN0cmVhbS5fX2luaXRfX2MBAAAAAAAAAAAAAAABAAAAAQAAAEMAAABytwAAAHK4AAAAciIAAAByMQAAAHIiAAAAciIAAAByIwAAAHLGAAAAWgQAAPMCAAAABAF6GF9MaXN0RGF0YVN0cmVhbS53cml0YWJsZWMBAAAAAAAAAAAAAAABAAAAAQAAAEMAAABytwAAAHK4AAAAciIAAAByMQAAAHIiAAAAciIAAAByIwAAAHLHAAAAXQQAAHIbAQAAehhfTGlzdERhdGFTdHJlYW0uc2Vla2FibGVjAgAAAAAAAAAAAAAAAgAAAAMAAABDAAAAcxAAAAB8AGoAoAF8AaEBAQBkAFMAcjoAAAApAnIaAQAAclEAAAApAnItAAAA2gFiciIAAAByIgAAAHIjAAAAcq8AAABgBAAA8wIAAAAQAXoVX0xpc3REYXRhU3RyZWFtLndyaXRlYwEAAAAAAAAAAAAAAAEAAAACAAAAQwAAAHI+AAAAcjoAAAApAnI/AAAAchoBAAByMQAAAHIiAAAAciIAAAByIwAAAHLIAAAAYwQAAHJBAAAAehRfTGlzdERhdGFTdHJlYW0udGVsbE4pCXIeAAAAch8AAAByIAAAAHIhAAAAci8AAAByxgAAAHLHAAAAcq8AAAByyAAAAHIiAAAAciIAAAByIgAAAHIjAAAAchkBAABVBAAAcw4AAAAIAAQBCAEIAwgDCAMMA3IZAQAAYwMAAAAAAAAAAwAAAAgAAAAIAAAAQwAAAHMqAAAAZwB9BnQAfAaDAX0HdAF8AIMBagJ8B3wBfAN8BHwCfAVkAY0GAQB8BlMAKQJOchQBAAApA3IZAQAAcgQAAAByrwAAACkIciYAAAByqwAAAHKuAAAAcqwAAAByrQAAAHKeAAAAchoBAAByGAEAAHIiAAAAciIAAAByIwAAAHIRAAAAZgQAAHMSAAAABAMIAQwBAgECAQIBAgEG/AQFchEAAABjAQAAAAAAAAAAAAAAAgAAAAQAAABDAAAAc1AAAAB0AHwAdAGDAnMJdAF8AIMBfQB8AGoCdANqBGQBZAKNAgEAfACgBaEAagZ9AXwBch58AWQDGQBkBGsDciZ0A2oEoAJkBKEBAQBkBVMAZAVTACkGYSMBAABXcml0ZSBlbGVtZW50IHRyZWUgb3IgZWxlbWVudCBzdHJ1Y3R1cmUgdG8gc3lzLnN0ZG91dC4KCiAgICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB1c2VkIGZvciBkZWJ1Z2dpbmcgb25seS4KCiAgICAqZWxlbSogaXMgZWl0aGVyIGFuIEVsZW1lbnRUcmVlLCBvciBhIHNpbmdsZSBFbGVtZW50LiAgVGhlIGV4YWN0IG91dHB1dAogICAgZm9ybWF0IGlzIGltcGxlbWVudGF0aW9uIGRlcGVuZGVudC4gIEluIHRoaXMgdmVyc2lvbiwgaXQncyB3cml0dGVuIGFzIGFuCiAgICBvcmRpbmFyeSBYTUwgZmlsZS4KCiAgICByowAAACkBcqsAAADp/////3K6AAAATikHcicAAAByBAAAAHKvAAAA2gNzeXPaBnN0ZG91dHKLAAAAcjwAAAApAnI9AAAAcjwAAAByIgAAAHIiAAAAciMAAAByAgAAAHMEAABzDgAAAAoLCAEQAQoBEAEQAQT/cgIAAAD6AiAgYwMAAAAAAAAAAAAAAAMAAAADAAAAAwAAAHNgAAAAdAB8AHQBgwJyCXwAoAKhAH0AfAJkAWsAchR0A2QCfAKbAJ0CgwGCAXQEfACDAXMaZANTAGQEfAKIAhQAFwBnAYkBhwCHAYcCZgNkBWQGhAiJAIgAfABkAYMCAQBkA1MAKQdhJgIAAEluZGVudCBhbiBYTUwgZG9jdW1lbnQgYnkgaW5zZXJ0aW5nIG5ld2xpbmVzIGFuZCBpbmRlbnRhdGlvbiBzcGFjZQogICAgYWZ0ZXIgZWxlbWVudHMuCgogICAgKnRyZWUqIGlzIHRoZSBFbGVtZW50VHJlZSBvciBFbGVtZW50IHRvIG1vZGlmeS4gIFRoZSAocm9vdCkgZWxlbWVudAogICAgaXRzZWxmIHdpbGwgbm90IGJlIGNoYW5nZWQsIGJ1dCB0aGUgdGFpbCB0ZXh0IG9mIGFsbCBlbGVtZW50cyBpbiBpdHMKICAgIHN1YnRyZWUgd2lsbCBiZSBhZGFwdGVkLgoKICAgICpzcGFjZSogaXMgdGhlIHdoaXRlc3BhY2UgdG8gaW5zZXJ0IGZvciBlYWNoIGluZGVudGF0aW9uIGxldmVsLCB0d28KICAgIHNwYWNlIGNoYXJhY3RlcnMgYnkgZGVmYXVsdC4KCiAgICAqbGV2ZWwqIGlzIHRoZSBpbml0aWFsIGluZGVudGF0aW9uIGxldmVsLiBTZXR0aW5nIHRoaXMgdG8gYSBoaWdoZXIKICAgIHZhbHVlIHRoYW4gMCBjYW4gYmUgdXNlZCBmb3IgaW5kZW50aW5nIHN1YnRyZWVzIHRoYXQgYXJlIG1vcmUgZGVlcGx5CiAgICBuZXN0ZWQgaW5zaWRlIG9mIGEgZG9jdW1lbnQuCiAgICByGwAAAHosSW5pdGlhbCBpbmRlbnRhdGlvbiBsZXZlbCBtdXN0IGJlID49IDAsIGdvdCBOcroAAABjAgAAAAAAAAAAAAAABQAAAAgAAAATAAAAc6IAAAB8AWQBFwB9AnoGiAF8AhkAfQNXAG4UBAB0AHkeAQABAAEAiAF8ARkAiAIXAH0DiAGgAXwDoQEBAFkAbgF3AHwAagJyJ3wAagKgA6EAcyp8A3wAXwJ8AEQAXRZ9BHQEfASDAXI3iAB8BHwCgwIBAHwEagVyP3wEagWgA6EAc0J8A3wEXwVxLHwEagWgA6EAc0+IAXwBGQB8BF8FZABTAGQAUwBy2gAAACkG2gpJbmRleEVycm9yclEAAAByOwAAANoFc3RyaXByPwAAAHI8AAAAKQVyPQAAANoFbGV2ZWzaC2NoaWxkX2xldmVs2hFjaGlsZF9pbmRlbnRhdGlvbtoFY2hpbGSpA9oQX2luZGVudF9jaGlsZHJlbtoMaW5kZW50YXRpb25z2gVzcGFjZXIiAAAAciMAAAByKQEAAJ8EAABzJAAAAAgCAgEMAQwBDAEOAQL+EAQGAQgCCAEKARABBgECgAoDDgEE/3ogaW5kZW50Ljxsb2NhbHM+Ll9pbmRlbnRfY2hpbGRyZW4pBXInAAAAcgQAAAByiwAAAHKlAAAAcj8AAAApA9oEdHJlZXIrAQAAciQBAAByIgAAAHIoAQAAciMAAAByBwAAAIYEAABzEgAAAAoPCAEIAQ4BCAEEAQ4DEAIOFnIHAAAAYwIAAAAAAAAAAAAAAAMAAAAEAAAAQwAAAHMWAAAAdACDAH0CfAKgAXwAfAGhAgEAfAJTACkBetVQYXJzZSBYTUwgZG9jdW1lbnQgaW50byBlbGVtZW50IHRyZWUuCgogICAgKnNvdXJjZSogaXMgYSBmaWxlbmFtZSBvciBmaWxlIG9iamVjdCBjb250YWluaW5nIFhNTCBkYXRhLAogICAgKnBhcnNlciogaXMgYW4gb3B0aW9uYWwgcGFyc2VyIGluc3RhbmNlIGRlZmF1bHRpbmcgdG8gWE1MUGFyc2VyLgoKICAgIFJldHVybiBhbiBFbGVtZW50VHJlZSBpbnN0YW5jZS4KCiAgICApAnIEAAAAcgoAAAApA3KTAAAAcpQAAAByLAEAAHIiAAAAciIAAAByIwAAAHIKAAAAvAQAAHMGAAAABgkMAQQBcgoAAABjAwAAAAAAAAAAAAAABAAAAAQAAAADAAAAc1AAAAB0AHwBfAJkAY0CiQKHAIcCZgJkAmQDhAiJAUcAhwGHA2YCZARkBYQIZAV0AWoCagODA30DfAODAIkAZAaIAF8EigF+A3QFiACDAQEAiABTACkHYUoCAABJbmNyZW1lbnRhbGx5IHBhcnNlIFhNTCBkb2N1bWVudCBpbnRvIEVsZW1lbnRUcmVlLgoKICAgIFRoaXMgY2xhc3MgYWxzbyByZXBvcnRzIHdoYXQncyBnb2luZyBvbiB0byB0aGUgdXNlciBiYXNlZCBvbiB0aGUKICAgICpldmVudHMqIGl0IGlzIGluaXRpYWxpemVkIHdpdGguICBUaGUgc3VwcG9ydGVkIGV2ZW50cyBhcmUgdGhlIHN0cmluZ3MKICAgICJzdGFydCIsICJlbmQiLCAic3RhcnQtbnMiIGFuZCAiZW5kLW5zIiAodGhlICJucyIgZXZlbnRzIGFyZSB1c2VkIHRvIGdldAogICAgZGV0YWlsZWQgbmFtZXNwYWNlIGluZm9ybWF0aW9uKS4gIElmICpldmVudHMqIGlzIG9taXR0ZWQsIG9ubHkKICAgICJlbmQiIGV2ZW50cyBhcmUgcmVwb3J0ZWQuCgogICAgKnNvdXJjZSogaXMgYSBmaWxlbmFtZSBvciBmaWxlIG9iamVjdCBjb250YWluaW5nIFhNTCBkYXRhLCAqZXZlbnRzKiBpcwogICAgYSBsaXN0IG9mIGV2ZW50cyB0byByZXBvcnQgYmFjaywgKnBhcnNlciogaXMgYW4gb3B0aW9uYWwgcGFyc2VyIGluc3RhbmNlLgoKICAgIFJldHVybnMgYW4gaXRlcmF0b3IgcHJvdmlkaW5nIChldmVudCwgZWxlbSkgcGFpcnMuCgogICAgKQLaBmV2ZW50c9oHX3BhcnNlcmMBAAAAAAAAAAAAAAAEAAAACAAAADMAAABzlAAAAIEAZAF9AXo+dAB8AGQCgwJzEHQBfABkA4MCfQBkBH0BZABWAAEACQCIAaACoQBFAGQASAABAHwAoANkBaEBfQJ8AnMjbgaIAaAEfAKhAQEAcRSIAaAFoQB9A4gBoAKhAEUAZABIAAEAfAOIAF8GVwB8AXJAfACgB6EAAQBkAFMAZABTAHwBckl8AKAHoQABAHcAdwApBk5Gco0AAAByjgAAAFRpAEAAACkIciUAAABykAAAANoLcmVhZF9ldmVudHNyjQAAAHKSAAAA2hZfY2xvc2VfYW5kX3JldHVybl9yb2902gRyb290cpEAAAApBHKTAAAAcpUAAABylgAAAHIxAQAAKQLaAml02gpwdWxscGFyc2VyciIAAAByIwAAANoIaXRlcmF0b3LdBAAAcywAAAACgAQBAgEKAQoBBAEGAQIBDgEKAgQBAgEKAQL6CAcOAQgBBAIMAQj/CgEC/3obaXRlcnBhcnNlLjxsb2NhbHM+Lml0ZXJhdG9yYwAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAHMWAAAAZQBaAWQAWgKUAJQBgwFqA1oDZAFTACkCeiRpdGVycGFyc2UuPGxvY2Fscz4uSXRlclBhcnNlSXRlcmF0b3JOKQRyHgAAAHIfAAAAciAAAADaCF9fbmV4dF9fciIAAAApAnI0AQAAcpMAAAByIgAAAHIjAAAA2hFJdGVyUGFyc2VJdGVyYXRvcvIEAABzBAAAAAgADgFyNgEAAE4pBnIXAAAA2gtjb2xsZWN0aW9uc9oDYWJj2ghJdGVyYXRvcnIxAQAA2gRuZXh0KQRykwAAAHItAQAAcpQAAAByNgEAAHIiAAAAKQRyMgEAAHI0AQAAcjMBAABykwAAAHIjAAAAcgkAAADKBAAAcxAAAAAMEQ4CGhUGAgYBBAEIAgQBcgkAAABjAAAAAAAAAAAAAAAAAAAAAAQAAABAAAAAczwAAABlAFoBZABaAmQNZAFkApwBZANkBIQDWgNkBWQGhABaBGQHZAiEAFoFZAlkCoQAWgZkC2QMhABaB2QBUwApDnIXAAAATikBci4BAABjAgAAAAAAAAABAAAAAwAAAAQAAABDAAAAczwAAAB0AKABoQB8AF8CfAJwDHQDdASDAGQBjQF8AF8FfAFkAHUAchRkAn0BfABqBaAGfABqAnwBoQIBAGQAUwApA06pAXJ3AAAAKQHaA2VuZCkHcjcBAADaBWRlcXVl2g1fZXZlbnRzX3F1ZXVlchYAAAByEgAAAHIuAQAA2gpfc2V0ZXZlbnRzKQNyLQAAAHItAQAAci4BAAByIgAAAHIiAAAAciMAAAByLwAAAP4EAABzCgAAAAoFEgEIAgQBFAF6FlhNTFB1bGxQYXJzZXIuX19pbml0X19jAgAAAAAAAAAAAAAAAwAAAAoAAABDAAAAc2AAAAB8AGoAZAF1AHIJdAFkAoMBggF8AXIuegl8AGoAoAJ8AaEBAQBXAGQBUwAEAHQDeS0BAH0CAQB6DXwAagSgBXwCoQEBAFcAWQBkAX0CfgJkAVMAZAF9An4CdwF3AGQBUwApA/ocRmVlZCBlbmNvZGVkIGRhdGEgdG8gcGFyc2VyLk56IWZlZWQoKSBjYWxsZWQgYWZ0ZXIgZW5kIG9mIHN0cmVhbSkGci4BAABypQAAAHKSAAAA2gtTeW50YXhFcnJvcnI+AQAAclEAAAApA3ItAAAAcpYAAADaA2V4Y3IiAAAAciIAAAByIwAAAHKSAAAACgUAAHMUAAAACgIIAQQBAgESAQ4BGgEIgAL/BP16ElhNTFB1bGxQYXJzZXIuZmVlZGMBAAAAAAAAAAAAAAACAAAAAgAAAEMAAABzFAAAAHwAagCgAaEAfQFkAHwAXwB8AVMAcjoAAAApAnIuAQAAcpEAAAApAnItAAAAcjEBAAByIgAAAHIiAAAAciMAAAByMAEAABQFAABzBgAAAAoCBgEEAXokWE1MUHVsbFBhcnNlci5fY2xvc2VfYW5kX3JldHVybl9yb290YwEAAAAAAAAAAAAAAAEAAAACAAAAQwAAAHMMAAAAfACgAKEAAQBkAVMAKQJ6pkZpbmlzaCBmZWVkaW5nIGRhdGEgdG8gcGFyc2VyLgoKICAgICAgICBVbmxpa2UgWE1MUGFyc2VyLCBkb2VzIG5vdCByZXR1cm4gdGhlIHJvb3QgZWxlbWVudC4gVXNlCiAgICAgICAgcmVhZF9ldmVudHMoKSB0byBjb25zdW1lIGVsZW1lbnRzIGZyb20gWE1MUHVsbFBhcnNlci4KICAgICAgICBOKQFyMAEAAHIxAAAAciIAAAByIgAAAHIjAAAAcpEAAAAaBQAAcwIAAAAMBnoTWE1MUHVsbFBhcnNlci5jbG9zZWMBAAAAAAAAAAAAAAADAAAAAwAAAGMAAABzNAAAAIEAfABqAH0BfAFyGHwBoAGhAH0CdAJ8AnQDgwJyEXwCggF8AlYAAQB8AXMGZAFTAGQBUwApAnq1UmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgY3VycmVudGx5IGF2YWlsYWJsZSAoZXZlbnQsIGVsZW0pIHBhaXJzLgoKICAgICAgICBFdmVudHMgYXJlIGNvbnN1bWVkIGZyb20gdGhlIGludGVybmFsIGV2ZW50IHF1ZXVlIGFzIHRoZXkgYXJlCiAgICAgICAgcmV0cmlldmVkIGZyb20gdGhlIGl0ZXJhdG9yLgogICAgICAgIE4pBHI+AQAA2gdwb3BsZWZ0cicAAADaCUV4Y2VwdGlvbikDci0AAAByLQEAANoFZXZlbnRyIgAAAHIiAAAAciMAAAByLwEAACIFAABzEAAAAAKABgYEAQgBCgEEAQYCDPt6GVhNTFB1bGxQYXJzZXIucmVhZF9ldmVudHNyOgAAACkIch4AAAByHwAAAHIgAAAAci8AAABykgAAAHIwAQAAcpEAAAByLwEAAHIiAAAAciIAAAByIgAAAHIjAAAAchcAAAD8BAAAcwwAAAAIABACCAwICggGDAhyFwAAAGMCAAAAAAAAAAAAAAACAAAAAwAAAEMAAABzIgAAAHwBcwh0AHQBgwBkAY0BfQF8AaACfAChAQEAfAGgA6EAUwApAmEXAQAAUGFyc2UgWE1MIGRvY3VtZW50IGZyb20gc3RyaW5nIGNvbnN0YW50LgoKICAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gZW1iZWQgIlhNTCBMaXRlcmFscyIgaW4gUHl0aG9uIGNvZGUuCgogICAgKnRleHQqIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgWE1MIGRhdGEsICpwYXJzZXIqIGlzIGFuCiAgICBvcHRpb25hbCBwYXJzZXIgaW5zdGFuY2UsIGRlZmF1bHRpbmcgdG8gdGhlIHN0YW5kYXJkIFhNTFBhcnNlci4KCiAgICBSZXR1cm5zIGFuIEVsZW1lbnQgaW5zdGFuY2UuCgogICAgcjsBAACpBHIWAAAAchIAAABykgAAAHKRAAAAKQJyOwAAAHKUAAAAciIAAAByIgAAAHIjAAAAchQAAAAxBQAAcwgAAAAECwwBCgEIAXIUAAAAYwIAAAAAAAAAAAAAAAYAAAAEAAAAQwAAAHNSAAAAfAFzCHQAdAGDAGQBjQF9AXwBoAJ8AKEBAQB8AaADoQB9AmkAfQN8AqAEoQBEAF0NfQR8BKAFZAKhAX0FfAVyJHwEfAN8BTwAcRd8AnwDZgJTACkDYRYBAABQYXJzZSBYTUwgZG9jdW1lbnQgZnJvbSBzdHJpbmcgY29uc3RhbnQgZm9yIGl0cyBJRHMuCgogICAgKnRleHQqIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgWE1MIGRhdGEsICpwYXJzZXIqIGlzIGFuCiAgICBvcHRpb25hbCBwYXJzZXIgaW5zdGFuY2UsIGRlZmF1bHRpbmcgdG8gdGhlIHN0YW5kYXJkIFhNTFBhcnNlci4KCiAgICBSZXR1cm5zIGFuIChFbGVtZW50LCBkaWN0KSB0dXBsZSwgaW4gd2hpY2ggdGhlCiAgICBkaWN0IG1hcHMgZWxlbWVudCBpZDpzIHRvIGVsZW1lbnRzLgoKICAgIHI7AQAAcjAAAAApBnIWAAAAchIAAABykgAAAHKRAAAAcnAAAAByaAAAACkGcjsAAABylAAAAHIsAQAA2gNpZHNyPQAAAHIwAAAAciIAAAByIgAAAHIjAAAAchUAAABCBQAAcxYAAAAECgwBCgEIAQQBDAEKAQQBCAECgAgBchUAAABjAgAAAAAAAAAAAAAAAwAAAAQAAABDAAAAcywAAAB8AXMIdAB0AYMAZAGNAX0BfABEAF0HfQJ8AaACfAKhAQEAcQp8AaADoQBTACkCet1QYXJzZSBYTUwgZG9jdW1lbnQgZnJvbSBzZXF1ZW5jZSBvZiBzdHJpbmcgZnJhZ21lbnRzLgoKICAgICpzZXF1ZW5jZSogaXMgYSBsaXN0IG9mIG90aGVyIHNlcXVlbmNlLCAqcGFyc2VyKiBpcyBhbiBvcHRpb25hbCBwYXJzZXIKICAgIGluc3RhbmNlLCBkZWZhdWx0aW5nIHRvIHRoZSBzdGFuZGFyZCBYTUxQYXJzZXIuCgogICAgUmV0dXJucyBhbiBFbGVtZW50IGluc3RhbmNlLgoKICAgIHI7AQAAckYBAAApA9oIc2VxdWVuY2VylAAAAHI7AAAAciIAAAByIgAAAHIjAAAAcgYAAABaBQAAcwoAAAAECQwBCAEMAQgBcgYAAABjAAAAAAAAAAAAAAAAAAAAAAYAAABAAAAAc2gAAABlAFoBZABaAmQBWgNkF2QCZAJkA2QDZAScBGQFZAaEA1oEZAdkCIQAWgVkCWQKhABaBmQLZAyEAFoHZA1kDoQAWghkD2QQhABaCWQRZBKEAFoKZBdkE2QUhAFaC2QVZBaEAFoMZAJTACkYchIAAABhOAMAAEdlbmVyaWMgZWxlbWVudCBzdHJ1Y3R1cmUgYnVpbGRlci4KCiAgICBUaGlzIGJ1aWxkZXIgY29udmVydHMgYSBzZXF1ZW5jZSBvZiBzdGFydCwgZGF0YSwgYW5kIGVuZCBtZXRob2QKICAgIGNhbGxzIHRvIGEgd2VsbC1mb3JtZWQgZWxlbWVudCBzdHJ1Y3R1cmUuCgogICAgWW91IGNhbiB1c2UgdGhpcyBjbGFzcyB0byBidWlsZCBhbiBlbGVtZW50IHN0cnVjdHVyZSB1c2luZyBhIGN1c3RvbSBYTUwKICAgIHBhcnNlciwgb3IgYSBwYXJzZXIgZm9yIHNvbWUgb3RoZXIgWE1MLWxpa2UgZm9ybWF0LgoKICAgICplbGVtZW50X2ZhY3RvcnkqIGlzIGFuIG9wdGlvbmFsIGVsZW1lbnQgZmFjdG9yeSB3aGljaCBpcyBjYWxsZWQKICAgIHRvIGNyZWF0ZSBuZXcgRWxlbWVudCBpbnN0YW5jZXMsIGFzIG5lY2Vzc2FyeS4KCiAgICAqY29tbWVudF9mYWN0b3J5KiBpcyBhIGZhY3RvcnkgdG8gY3JlYXRlIGNvbW1lbnRzIHRvIGJlIHVzZWQgaW5zdGVhZCBvZgogICAgdGhlIHN0YW5kYXJkIGZhY3RvcnkuICBJZiAqaW5zZXJ0X2NvbW1lbnRzKiBpcyBmYWxzZSAodGhlIGRlZmF1bHQpLAogICAgY29tbWVudHMgd2lsbCBub3QgYmUgaW5zZXJ0ZWQgaW50byB0aGUgdHJlZS4KCiAgICAqcGlfZmFjdG9yeSogaXMgYSBmYWN0b3J5IHRvIGNyZWF0ZSBwcm9jZXNzaW5nIGluc3RydWN0aW9ucyB0byBiZSB1c2VkCiAgICBpbnN0ZWFkIG9mIHRoZSBzdGFuZGFyZCBmYWN0b3J5LiAgSWYgKmluc2VydF9waXMqIGlzIGZhbHNlICh0aGUgZGVmYXVsdCksCiAgICBwcm9jZXNzaW5nIGluc3RydWN0aW9ucyB3aWxsIG5vdCBiZSBpbnNlcnRlZCBpbnRvIHRoZSB0cmVlLgogICAgTkYpBNoPY29tbWVudF9mYWN0b3J52gpwaV9mYWN0b3J52g9pbnNlcnRfY29tbWVudHPaCmluc2VydF9waXNjAgAAAAAAAAAEAAAABgAAAAIAAABDAAAAc2QAAABnAHwAXwBnAHwAXwFkAHwAXwJkAHwAXwNkAHwAXwR8AmQAdQByFXQFfQJ8AnwAXwZ8BHwAXwd8A2QAdQByIXQIfQN8A3wAXwl8BXwAXwp8AWQAdQByLXQLfQF8AXwAXwxkAFMAcjoAAAApDdoFX2RhdGHaBV9lbGVt2gVfbGFzdHKIAAAA2gVfdGFpbHIB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WhBkHGQdhABaEWQDUwApH3IaAAAAYdgDAAAKICAgIENhbm9uaWNhbGl6YXRpb24gd3JpdGVyIHRhcmdldCBmb3IgdGhlIFhNTFBhcnNlci4KCiAgICBTZXJpYWxpc2VzIHBhcnNlIGV2ZW50cyB0byBYTUwgQzE0TiAyLjAuCgogICAgVGhlICp3cml0ZSogZnVuY3Rpb24gaXMgdXNlZCBmb3Igd3JpdGluZyBvdXQgdGhlIHJlc3VsdGluZyBkYXRhIHN0cmVhbQogICAgYXMgdGV4dCAobm90IGJ5dGVzKS4gIFRvIHdyaXRlIHRvIGEgZmlsZSwgb3BlbiBpdCBpbiB0ZXh0IG1vZGUgd2l0aCBlbmNvZGluZwogICAgInV0Zi04IiBhbmQgcGFzcyBpdHMgYGAud3JpdGVgYCBtZXRob2QuCgogICAgQ29uZmlndXJhdGlvbiBvcHRpb25zOgoKICAgIC0gKndpdGhfY29tbWVudHMqOiBzZXQgdG8gdHJ1ZSB0byBpbmNsdWRlIGNvbW1lbnRzCiAgICAtICpzdHJpcF90ZXh0Kjogc2V0IHRvIHRydWUgdG8gc3RyaXAgd2hpdGVzcGFjZSBiZWZvcmUgYW5kIGFmdGVyIHRleHQgY29udGVudAogICAgLSAqcmV3cml0ZV9wcmVmaXhlcyo6IHNldCB0byB0cnVlIHRvIHJlcGxhY2UgbmFtZXNwYWNlIHByZWZpeGVzIGJ5ICJue251bWJlcn0iCiAgICAtICpxbmFtZV9hd2FyZV90YWdzKjogYSBzZXQgb2YgcW5hbWUgYXdhcmUgdGFnIG5hbWVzIGluIHdoaWNoIHByZWZpeGVzCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIHJlcGxhY2VkIGluIHRleHQgY29udGVudAogICAgLSAqcW5hbWVfYXdhcmVfYXR0cnMqOiBhIHNldCBvZiBxbmFtZSBhd2FyZSBhdHRyaWJ1dGUgbmFtZXMgaW4gd2hpY2ggcHJlZml4ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIHJlcGxhY2VkIGluIHRleHQgY29udGVudAogICAgLSAqZXhjbHVkZV9hdHRycyo6IGEgc2V0IG9mIGF0dHJpYnV0ZSBu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
Base64 mode: content will be decoded on save.
Save
Close
Exit & Reset
Directory Contents
Dirs: 0 × Files: 5
Delete Selected
Select All
Select None
Sort:
Name
Size
Modified
Enable drag-to-move
Name
Size
Perms
Modified
Actions
cElementTree.cpython-310.pyc
176 B
lrw-r--r--
2026-03-12 07:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ElementInclude.cpython-310.pyc
2.38 KB
lrw-r--r--
2026-03-12 07:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ElementPath.cpython-310.pyc
8.82 KB
lrw-r--r--
2026-03-12 07:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
ElementTree.cpython-310.pyc
54.57 KB
lrw-r--r--
2026-03-12 07:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
__init__.cpython-310.pyc
134 B
lrw-r--r--
2026-03-12 07:02:02
Edit
Download
Rename
Chmod
Change Date
Delete
OK
Cancel
recursive
OK
Cancel
recursive
OK
Cancel
Zip Selected
If ZipArchive is unavailable, a
.tar
will be created (no compression).