Mw0NChZae2OBzQAA4wAAAAAAAAAAAAAAADYAAABAAAAAc9QMAABkAFoAZAFkAmwBWgFkAWQCbAJaAmQBZAJsA1oDZAFkAmwEWgRkAWQCbARaBWQBZAJsBloGZAFkA2wHbQhaCAEAZAFkBGwJbQpaCgEAZAFkBWwJbQtaCwEAZAFkBmwMbQ1aDQEAZAFkB2wMbQ5aDgEAZAFkCGwMbQ9aDwEAZAlkCmwQbRFaEQEAZAlkC2wQbRJaEgEAZAlkDGwQbRNaEwEAZAlkDWwQbRRaFAEAZAlkDmwVbRZaFgEAZAlkD2wXbRhaGAEAZAlkEGwZbRpaGgEAZAlkEWwZbRtaGwEAZAlkEmwZbRxaHAEAZAlkE2wZbR1aHQEAZAlkFGwZbR5aHgEAZAlkFWwZbR9aHwEAZAlkFmwZbSBaIAEAZQVqIZABcmpkAWQCbCJaI2QJZBdsJG0lWiUBAGQJZBhsJm0nWicBAGQJZBlsF20oWigBAGQJZBpsKW0qWioBAEcAZBtkHIQAZBxlI2orgwNaLGUFai1kHWUFai5kHmUFai9mAhkAZB+NAlowZQVqLWQggwFaMWUFai1kIYMBWjJlMGUwZCKcAmQjZCSEBFozZTBlMGQinAJkJWQmhARaNGUwZTBkIpwCZCdkKIQEWjVlMmUyZCmcAmQqZCuEBFo2kAFkAWQsZQVqN2UFajhlOWU6ZgIZABkAZQVqN2UFai5lBWovZwFlBWovZgIZABkAZQVqN2UFai8ZAGUFai5lBWovZwFlBWovZgIZAGQtnAVkLmQvhAVaO5ABZAJkLGUFajdlBWo4ZTllOmYCGQAZAGUFajdlBWouZQVqL2cBZQVqL2YCGQAZAGUFai5lBWovZwFlBWo8ZQVqLxkAZgIZAGQwnARkMWQyhAVaPWUFajdlBWo4ZTllOmYCGQAZAGUFajxlBWo4ZTllOmYCGQAZAGQznAJkNGQ1hARaPmQ2ZQ5kKZwCZDdkOIQEWj9lBWo4ZTllBWpAZTllBWovZgIZAGUFakFlBWpCZTllBWovZgIZABkAZgMZAGU5ZCmcAmQ5ZDqEBFpDZR2QAWQDZDtlOWU5ZTllBWo3ZToZAGU5ZDycBmQ9ZD6EBYMBWkRlOWU5ZD+cAmRAZEGEBFpFZTllOWQ/nAJkQmRDhARaRmUdkAFkBGQ7ZQVqQGU5ZQVqL2YCGQBlR2U5ZEWcBGRGZEeEBYMBWkhlOWU5ZD+cAmRIZEmEBFpJZQNqSmRKgwFaS2U5ZTlkP5wCZEtkTIQEWkyQAWQFZQVqQGUxZTJmAhkAZUdkT2VHZQVqPGUFakJlMWUyZgIZABkAZFCcBWRRZFKEBVpNZRyQAWQGZCxkU2VHZUdlBWo3ZQVqOGU5ZTpmAhkAGQBkVGRVnAZkVmRXhAWDAVpOZRyQAWQHZCxkU2VHZQVqN2UFajhlOWU6ZgIZABkAZFhkWZwFZFpkW4QFgwFaT2QsZFNkXGVHZQVqN2UFajhlOWU6ZgIZABkAZF1kXpwGZF9kYIQEWlBlHJABZAhkLGRTZUdlBWo3ZQVqOGU5ZTpmAhkAGQBkXWRZnAVkYWRihAWDAVpRZRyQAWQJZCxkU2VHZQVqN2UFajhlOWU6ZgIZABkAZF1kWZwFZGNkZIQFgwFaUpABZAplMmUyZUdlMmRmnARkZ2RohAVaU2UdkAFkC2Q7ZQVqQWU5ZQVqN2UFajhlOWU6ZgIZABkAZTlkaZwFZGpka4QFgwFaVGURZVSDAZABZAxkO2UFajhlBWpVZQVqQWYCGQBlOWUFajdlBWo4ZTllOmYCGQAZAGU5ZGmcBWRsZG2EBYMBWlaQAWQNZTllOmU5ZG+cA2RwZHGEBVpXZRxkLGRTZF1kcpwDZHNkdIQEgwFaWGURZViDAWQsZHVkXWRynANkdmR3hASDAVpZZRxkLGR4ZF1kcpwDZHlkeoQEgwFaWmUbZHtkfGRdZH2cA2R+ZH+EBIMBWluQAWQOZQVqOGU5ZVxlOmYDGQBlR2U5ZICcA2SBZIKEBVpdZQVqL2U5ZCmcAmSDZISEBFpeZQNqSmSFgwFaX2UdkAFkD2Q7ZTllBWo3ZToZAGVHZQVqN2U5GQBlBWo3ZTkZAGUFajdlBWpBZTkZABkAZTlkhpwIZIdkiIQFgwFaYJABZBBlOWUFajhlOmU5ZgIZAGVHZUdlOWSKnAVki2SMhAVaYWUckAFkEWQsZTllOmVHZTllBWo3ZToZAGU5ZI+cB2SQZJGEBYMBWmJlHJABZBJkLGU5ZTplR2UFajdlORkAZUdlOWSTnAdklGSVhAWDAVpjZQNqSmSWgwFaZGU5ZTpkP5wCZJdkmIQEWmWQAWQTZQVqL2U6ZTplOmSanARkm2SchAVaZpABZBRlBWovZVxlXGSenANkn2SghAVaZ2U5ZQVqL2UFai9lOWShnARkomSjhARaaJABZBVlOWUFajdlORkAZTlkpJwDZKVkpoQFWmlkNmU5ZCmcAmSnZKiEBFpqkAFkFmSpZTpkqmSrZKycBGStZK6EBVprZRFla4MBkAFkF2R1ZTplBWo3ZQVqLxkAZKtkrJwEZK9ksIQFgwFabJABZBhkU2U6ZKpkq2SxnARksmSzhAVabZABZBllXGU6ZLVlXGS2nARkt2S4hAVabkcAZLlkuoQAZLplBWpvgwNacGUckAFkGmQsZFNlBWo4ZTllOmYCGQBlBWo3ZQVqLxkAZLtkvJwFZL1kvoQFgwFacWURZXGDAZABZBtkLGR1ZQVqOGU5ZTpmAhkAZQVqN2UFai8ZAGS7ZLycBWS/ZMCEBYMBWnJlHJABZBxkLGRTZQVqN2UFajhlOWU6ZgIZABkAZTJlMmTBnAVkwmTDhAWDAVpzZRFlc4MBkAFkHWQsZHVlBWo3ZQVqOGU5ZTpmAhkAGQBlMmUyZMGcBWTEZMWEBYMBWnRkU2RUZCmcAmTGZMeEBFp1ZRFldYMBZHVkVGQpnAJkyGTJhASDAVp2ZTllDmQpnAJkymTLhARad2U5ZTlkKZwCZMxkzYQEWnhlBGp5ZTllOWQpnAJkzmTPhASDAVp6ZQRqeWRTZFNkKZwCZNBkz4QEgwFaemUFajhlOWUFakFlMhkAZgIZAGUFajhlOWUFakFlMhkAZgIZAGQpnAJk0WTPhARaemUcZCxlBWovZTllBWo4ZRhlBWovZgIZAGTSnARk02TUhASDAVp7ZQRqeWR7ZQVqQWU5ZQVqL2UFai9lBWpBZNWcBmTWZNeEBIMBWnxlBGp5ZB5kAmTYnAJke2UFakFlOWUFajdlBWovGQBlBWpBZNmcBWTaZNeEBoMBWnxlG2R7ZQVqQWUFai9lBWovZQVqQWTbnAVk3GTXhASDAVp8ZQRqeWR7ZQVqOGUFalVlBWpBZgIZAGU5ZQVqL2UFai9lBWpBZNWcBmTdZN6EBIMBWn1lBGp5ZB5kAmTYnAJke2UFajhlBWpVZQVqQWYCGQBlOWUFajdlBWovGQBlBWpBZNmcBWTfZN6EBoMBWn1lEWV8gwFke2UFajhlBWpVZQVqQWYCGQBlBWovZQVqL2UFalVk25wFZOBk3oQEgwFafWUbZHtkU2UFai9lBWovZFhk25wFZOFk4oQEgwFafmURZX6DAWR7ZHVlBWovZQVqL2TjZNucBWTkZOWEBIMBWn9lG2R7ZFNlBWovZQVqL2RYZNucBWTmZOeEBIMBWoBlEWWAgwFke2R1ZQVqL2UFai9k42TbnAVk6GTphASDAVqBZRtke2RTZQVqL2UFai9kWGTbnAVk6mTrhASDAVqCZRFlgoMBZHtkdWUFai9lBWovZONk25wFZOxk7YQEgwFag2UbZHtkU2UFai9lBWovZFhk25wFZO5k74QEgwFahGURZYSDAWR7ZHVlBWovZQVqL2TjZNucBWTwZPGEBIMBWoVlHZABZB5kO2UFai9lBWo3ZToZAGUOZPKcBGTzZPSEBYMBWoZke2UFakJlBWqHZTllBWovZgIZAGUFai5lBWovZwFlBWovZgIZAGT1nARk9mT3hARaiGR7ZQVqQmUFaodlOWUFai9mAhkAZQVqLmUFai9nAWUFai9mAhkAZUdlBWouZQVqL2cBZQVqL2YCGQBk+JwGZPlk+oQEWolke2RTZQVqQmUFaodlOWUFai9mAhkAZQVqLmUFai9nAWUFai9mAhkAZUdkWGT7nAdk/GT9hARaimR7ZHVlBWpCZQVqh2U5ZQVqL2YCGQBlBWouZQVqL2cBZQVqL2YCGQBlR2TjZPucB2T+ZP+EBFqLZYxle2VtZUllV2WNZVNlU2VNZQ1lDWVdZVllZ2U/ZWhlcmVhZWZlVmVaZY1ldmVGZX1lUWVSZV5lW2WBZYVlRGV6ZW5ld2V/ZYNlbGVOZQ9lamV0ZUxlaWViZU9lRWVDZWBlZWVjZUhlhpABZACcNVqOZAJTACgfAQAAejdCdWlsdC1pbiB0ZW1wbGF0ZSBmaWx0ZXJzIHVzZWQgd2l0aCB0aGUgYGB8YGAgb3BlcmF0b3Iu6QAAAABOKQHaA2FiYykB2gVjaGFpbikB2gdncm91cGJ5KQHaBmVzY2FwZSkB2gZNYXJrdXApAdoIc29mdF9zdHLpAQAAACkB2g1hc3luY192YXJpYW50KQHaCmF1dG9fYWl0ZXIpAdoKYXV0b19hd2FpdCkB2gxhdXRvX3RvX2xpc3QpAdoTRmlsdGVyQXJndW1lbnRFcnJvcikB2glVbmRlZmluZWQpAdoTaHRtbHNhZmVfanNvbl9kdW1wcykB2gxwYXNzX2NvbnRleHQpAdoQcGFzc19lbnZpcm9ubWVudCkB2hFwYXNzX2V2YWxfY29udGV4dCkB2gdwZm9ybWF0KQHaCXVybF9xdW90ZSkB2gZ1cmxpemUpAdoLRW52aXJvbm1lbnQpAdoLRXZhbENvbnRleHQpAdoHQ29udGV4dCkB2hRTYW5kYm94ZWRFbnZpcm9ubWVudGMAAAAAAAAAAAAAAAADAAAAQAAAAHMaAAAAZQBaAWQAWgJlA2QBnAFkAmQDhARaBGQEUwApBdoHSGFzSFRNTCkB2gZyZXR1cm5jAQAAAAAAAAABAAAAAQAAAEMAAABzBAAAAGQAUwApAU6pACkB2gRzZWxmchwAAAByHAAAAPp/L2hvbWUvdWV0bGhyL0RvY3VtZW50cy9TZXJtb1Bsb3RfYmFja2VuZC9kcmFmdF9TUkFNX2JsYWNrYm94L1VFVFJWX0VTb0NfbXB3OC92ZW52L2xpYi9weXRob24zLjYvc2l0ZS1wYWNrYWdlcy9qaW5qYTIvZmlsdGVycy5wedoIX19odG1sX18mAAAAcwIAAAAAAXoQSGFzSFRNTC5fX2h0bWxfX04pBdoIX19uYW1lX1/aCl9fbW9kdWxlX1/aDF9fcXVhbG5hbWVfX9oDc3Rych8AAAByHAAAAHIcAAAAchwAAAByHgAAAHIaAAAAJQAAAHMCAAAACAFyGgAAANoBRi4pAdoFYm91bmTaAUvaAVYpAtoBZnIbAAAAYwEAAAAAAAAAAQAAAAUAAABDAAAAcxgAAAB0AGoBZAF0AmQCZAONAwEAdAN8AIMBUwApBHq3UGFzcyB0aGUgY29udGV4dCBhcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gdGhlIGRlY29yYXRlZCBmdW5jdGlvbi4KCiAgICAuLiBkZXByZWNhdGVkOjogMy4wCiAgICAgICAgV2lsbCBiZSByZW1vdmVkIGluIEppbmphIDMuMS4gVXNlIDpmdW5jOmB+amluamEyLnBhc3NfY29udGV4dGAKICAgICAgICBpbnN0ZWFkLgogICAgelgnY29udGV4dGZpbHRlcicgaXMgcmVuYW1lZCB0byAncGFzc19jb250ZXh0JywgdGhlIG9sZCBuYW1lIHdpbGwgYmUgcmVtb3ZlZCBpbiBKaW5qYSAzLjEu6QIAAAApAdoKc3RhY2tsZXZlbCkE2gh3YXJuaW5n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ciBjaXR5IGluIGNpdGllc3xzb3J0ICV9CiAgICAgICAgICAgIC4uLgogICAgICAgIHslIGVuZGZvciAlfQoKICAgIDpwYXJhbSByZXZlcnNlOiBTb3J0IGRlc2NlbmRpbmcgaW5zdGVhZCBvZiBhc2NlbmRpbmcuCiAgICA6cGFyYW0gY2FzZV9zZW5zaXRpdmU6IFdoZW4gc29ydGluZyBzdHJpbmdzLCBzb3J0IHVwcGVyIGFuZCBsb3dlcgogICAgICAgIGNhc2Ugc2VwYXJhdGVseS4KICAgIDpwYXJhbSBhdHRyaWJ1dGU6IFdoZW4gc29ydGluZyBvYmplY3RzIG9yIGRpY3RzLCBhbiBhdHRyaWJ1dGUgb3IKICAgICAgICBrZXkgdG8gc29ydCBieS4gQ2FuIHVzZSBkb3Qgbm90YXRpb24gbGlrZSBgYCJhZGRyZXNzLmNpdHkiYGAuCiAgICAgICAgQ2FuIGJlIGEgbGlzdCBvZiBhdHRyaWJ1dGVzIGxpa2UgYGAiYWdlLG5hbWUiYGAuCgogICAgVGhlIHNvcnQgaXMgc3RhYmxlLCBpdCBkb2VzIG5vdCBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyIG9mCiAgICBlbGVtZW50cyB0aGF0IGNvbXBhcmUgZXF1YWwuIFRoaXMgbWFrZXMgaXQgaXMgcG9zc2libGUgdG8gY2hhaW4KICAgIHNvcnRzIG9uIGRpZmZlcmVudCBhdHRyaWJ1dGVzIGFuZCBvcmRlcmluZy4KCiAgICAuLiBzb3VyY2Vjb2RlOjogamluamEKCiAgICAgICAgeyUgZm9yIHVzZXIgaW4gdXNlcnN8c29ydChhdHRyaWJ1dGU9Im5hbWUiKQogICAgICAgICAgICB8c29ydChyZXZlcnNlPXRydWUsIGF0dHJpYnV0ZT0iYWdlIikgJX0KICAgICAgICAgICAgLi4uCiAgICAgICAgeyUgZW5kZm9yICV9CgogICAgQXMgYSBzaG9ydGN1dCB0byBjaGFpbmluZyB3aGVuIHRoZSBkaXJlY3Rpb24gaXMgdGhlIHNhbWUgZm9yIGFsbAogICAgYXR0cmlidXRlcywgcGFzcyBhIGNvbW1hIHNlcGFyYXRlIGxpc3Qgb2YgYXR0cmlidXRlcy4KCiAgICAuLiBzb3VyY2Vjb2RlOjogamluamEKCiAgICAgICAgeyUgZm9yIHVzZXIgdXNlcnN8c29ydChhdHRyaWJ1dGU9ImFnZSxuYW1lIikgJX0KICAgICAgICAgICAgLi4uCiAgICAgICAgeyUgZW5kZm9yICV9CgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAyLjExLjAKICAgICAgICBUaGUgYGBhdHRyaWJ1dGVgYCBwYXJhbWV0ZXIgY2FuIGJlIGEgY29tbWEgc2VwYXJhdGVkIGxpc3Qgb2YKICAgICAgICBhdHRyaWJ1dGVzLCBlLmcuIGBgImFnZSxuYW1lImBgLgoKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMi42CiAgICAgICBUaGUgYGBhdHRyaWJ1dGVgYCBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogICAgTikBcjkAAAApAnJtAAAAcncAAAApA3JMAAAAcjYAAAByewAAACkGcjcAAAByMQAAAHJ3AAAAcnUAAAByOAAAANoIa2V5X2Z1bmNyHAAAAHIcAAAAch4AAADaB2RvX3NvcnR7AQAAcwYAAAAAMgIBFAJyfgAAAHoNdC5JdGVyYXRvcltWXSkFcjcAAAByMQAAAHJ1AAAAcjgAAAByGwAAAGMEAAAAAAAAAAgAAAAFAAAAYwAAAHNOAAAAdAB8AHwDfAJzDnQBbgJkAWQCjQN9BHQCgwB9BXgsfAFEAF0kfQZ8BHwGgwF9B3wHfAVrB3IifAVqA3wHgwEBAHwGVgABAHEiVwBkAVMAKQNhzQEAAFJldHVybnMgYSBsaXN0IG9mIHVuaXF1ZSBpdGVtcyBmcm9tIHRoZSBnaXZlbiBpdGVyYWJsZS4KCiAgICAuLiBzb3VyY2Vjb2RlOjogamluamEKCiAgICAgICAge3sgWydmb28nLCAnYmFyJywgJ2Zvb2JhcicsICdGb29CYXInXXx1bmlxdWV8bGlzdCB9fQogICAgICAgICAgICAtPiBbJ2ZvbycsICdiYXInLCAnZm9vYmFyJ10KCiAgICBUaGUgdW5pcXVlIGl0ZW1zIGFyZSB5aWVsZGVkIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZWlyIGZpcnN0IG9jY3VycmVuY2UgaW4KICAgIHRoZSBpdGVyYWJsZSBwYXNzZWQgdG8gdGhlIGZpbHRlci4KCiAgICA6cGFyYW0gY2FzZV9zZW5zaXRpdmU6IFRyZWF0IHVwcGVyIGFuZCBsb3dlciBjYXNlIHN0cmluZ3MgYXMgZGlzdGluY3QuCiAgICA6cGFyYW0gYXR0cmlidXRlOiBGaWx0ZXIgb2JqZWN0cyB3aXRoIHVuaXF1ZSB2YWx1ZXMgZm9yIHRoaXMgYXR0cmlidXRlLgogICAgTikBcjkAAAApBHJCAAAAcjYAAADaA3NldNoDYWRkKQhyNwAAAHIxAAAAcnUAAAByOAAAANoGZ2V0dGVy2gRzZWVucjsAAABybQAAAHIcAAAAchwAAAByHgAAANoJZG9fdW5pcXVlswEAAHMQAAAAABQCARQCBgIKAQgCCAEKAXKDAAAAehJ0LkNhbGxhYmxlWy4uLiwgVl16FXQuVW5pb25bViwgVW5kZWZpbmVkXSkGcjcAAAByMQAAANoEZnVuY3J1AAAAcjgAAAByGwAAAGMFAAAAAAAAAAgAAAANAAAAQwAAAHNaAAAAdAB8AYMBfQV5DHQBfAWDAX0GVwBuGgQAdAJrCnIuAQABAAEAfABqA2QBgwFTAFgAdAR8AHwEfANzPnQFbgJkAGQCjQN9B3wCdAZ8BmcBfAWDAnwHZAONAlMAKQROeidObyBhZ2dyZWdhdGVkIGl0ZW0sIHNlcXVlbmNlIHdhcyBlbXB0eS4pAXI5AAAAKQFybQAAACkH2gRpdGVy2gRuZXh02g1TdG9wSXRlcmF0aW9u2gl1bmRlZmluZWRyQgAAAHI2AAAAcgMAAAApCHI3AAAAcjEAAAByhAAAAHJ1AAAAcjgAAADaAml02gVmaXJzdHJ9AAAAchwAAAByHAAAAHIeAAAA2gtfbWluX29yX21heNQBAABzEAAAAAAHCAICAQwBDgEMAgIBFAJyiwAAAGMEAAAAAAAAAAQAAAAGAAAAQwAAAHMQAAAAdAB8AHwBdAF8AnwDgwVTACkBYRABAABSZXR1cm4gdGhlIHNtYWxsZXN0IGl0ZW0gZnJvbSB0aGUgc2VxdWVuY2UuCgogICAgLi4gc291cmNlY29kZTo6IGppbmphCgogICAgICAgIHt7IFsxLCAyLCAzXXxtaW4gfX0KICAgICAgICAgICAgLT4gMQoKICAgIDpwYXJhbSBjYXNlX3NlbnNpdGl2ZTogVHJlYXQgdXBwZXIgYW5kIGxvd2VyIGNhc2Ugc3RyaW5ncyBhcyBkaXN0aW5jdC4KICAgIDpwYXJhbSBhdHRyaWJ1dGU6IEdldCB0aGUgb2JqZWN0IHdpdGggdGhlIG1pbiB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZS4KICAgICkCcosAAADaA21pbikEcjcAAAByMQAAAHJ1AAAAcjgAAAByHAAAAHIcAAAAch4AAADaBmRvX21pbugBAABzAgAAAAARco0AAABjBAAAAAAAAAAEAAAABgAAAEMAAABzEAAAAHQAfAB8AXQBfAJ8A4MFUwApAWEPAQAAUmV0dXJuIHRoZSBsYXJnZXN0IGl0ZW0gZnJvbSB0aGUgc2VxdWVuY2UuCgogICAgLi4gc291cmNlY29kZTo6IGppbmphCgogICAgICAgIHt7IFsxLCAyLCAzXXxtYXggfX0KICAgICAgICAgICAgLT4gMwoKICAgIDpwYXJhbSBjYXNlX3NlbnNpdGl2ZTogVHJlYXQgdXBwZXIgYW5kIGxvd2VyIGNhc2Ugc3RyaW5ncyBhcyBkaXN0aW5jdC4KICAgIDpwYXJhbSBhdHRyaWJ1dGU6IEdldCB0aGUgb2JqZWN0IHdpdGggdGhlIG1heCB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZS4KICAgICkCcosAAADaA21heCkEcjcAAAByMQAAAHJ1AAAAcjgAAAByHAAAAHIcAAAAch4AAADaBmRvX21hePwBAABzAgAAAAARco8AAABycgAAACkEcjEAAADaDWRlZmF1bHRfdmFsdWXaB2Jvb2xlYW5yGwAAAGMDAAAAAAAAAAMAAAADAAAAQwAAAHMcAAAAdAB8AHQBgwJzFHwCchh8AAwAchh8AVMAfABTACkBYWADAABJZiB0aGUgdmFsdWUgaXMgdW5kZWZpbmVkIGl0IHdpbGwgcmV0dXJuIHRoZSBwYXNzZWQgZGVmYXVsdCB2YWx1ZSwKICAgIG90aGVyd2lzZSB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlOgoKICAgIC4uIHNvdXJjZWNvZGU6OiBqaW5qYQoKICAgICAgICB7eyBteV92YXJpYWJsZXxkZWZhdWx0KCdteV92YXJpYWJsZSBpcyBub3QgZGVmaW5lZCcpIH19CgogICAgVGhpcyB3aWxsIG91dHB1dCB0aGUgdmFsdWUgb2YgYGBteV92YXJpYWJsZWBgIGlmIHRoZSB2YXJpYWJsZSB3YXMKICAgIGRlZmluZWQsIG90aGVyd2lzZSBgYCdteV92YXJpYWJsZSBpcyBub3QgZGVmaW5lZCdgYC4gSWYgeW91IHdhbnQKICAgIHRvIHVzZSBkZWZhdWx0IHdpdGggdmFyaWFibGVzIHRoYXQgZXZhbHVhdGUgdG8gZmFsc2UgeW91IGhhdmUgdG8KICAgIHNldCB0aGUgc2Vjb25kIHBhcmFtZXRlciB0byBgdHJ1ZWA6CgogICAgLi4gc291cmNlY29kZTo6IGppbmphCgogICAgICAgIHt7ICcnfGRlZmF1bHQoJ3RoZSBzdHJpbmcgd2FzIGVtcHR5JywgdHJ1ZSkgfX0KCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDIuMTEKICAgICAgIEl0J3Mgbm93IHBvc3NpYmxlIHRvIGNvbmZpZ3VyZSB0aGUgOmNsYXNzOmB+amluamEyLkVudmlyb25tZW50YCB3aXRoCiAgICAgICA6Y2xhc3M6YH5qaW5qYTIuQ2hhaW5hYmxlVW5kZWZpbmVkYCB0byBtYWtlIHRoZSBgZGVmYXVsdGAgZmlsdGVyIHdvcmsKICAgICAgIG9uIG5lc3RlZCBlbGVtZW50cyBhbmQgYXR0cmlidXRlcyB0aGF0IG1heSBjb250YWluIHVuZGVmaW5lZCB2YWx1ZXMKICAgICAgIGluIHRoZSBjaGFpbiB3aXRob3V0IGdldHRpbmcgYW4gOmV4YzpgfmppbmphMi5VbmRlZmluZWRFcnJvcmAuCiAgICApAnIyAAAAcg4AAAApA3IxAAAAcpAAAABykQAAAHIcAAAAchwAAAByHgAAANoKZG9fZGVmYXVsdBACAABzBgAAAAAbFAEEAnKSAAAAKQVyXQAAAHIxAAAAcmkAAAByOAAAAHIbAAAAYwQAAAAAAAAABwAAAAQAAABDAAAAc7AAAAB8A2QBawlyGnQAdAF8AGoCfAODAnwBgwJ9AXwAagNzNHQEfAKDAWoFdAB0BHwBgwKDAVMAdAZ8AmQCgwJznHQHfAGDAX0BZAN9BHgwdAh8AYMBRABdJFwCfQV9BnQGfAZkAoMCcmxkBH0EcVR0BHwGgwF8AXwFPABxVFcAfARyinQJfAKDAX0Cbgh0BHwCgwF9AnwCagV8AYMBUwB0CnwCgwFqBXQAdAp8AYMCgwFTACkFYSMCAABSZXR1cm4gYSBzdHJpbmcgd2hpY2ggaXMgdGhlIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZ3MgaW4gdGhlCiAgICBzZXF1ZW5jZS4gVGhlIHNlcGFyYXRvciBiZXR3ZWVuIGVsZW1lbnRzIGlzIGFuIGVtcHR5IHN0cmluZyBwZXIKICAgIGRlZmF1bHQsIHlvdSBjYW4gZGVmaW5lIGl0IHdpdGggdGhlIG9wdGlvbmFsIHBhcmFtZXRlcjoKCiAgICAuLiBzb3VyY2Vjb2RlOjogamluamEKCiAgICAgICAge3sgWzEsIDIsIDNdfGpvaW4oJ3wnKSB9fQogICAgICAgICAgICAtPiAxfDJ8MwoKICAgICAgICB7eyBbMSwgMiwgM118am9pbiB9fQogICAgICAgICAgICAtPiAxMjMKCiAgICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGpvaW4gY2VydGFpbiBhdHRyaWJ1dGVzIG9mIGFuIG9iamVjdDoKCiAgICAuLiBzb3VyY2Vjb2RlOjogamluamEKCiAgICAgICAge3sgdXNlcnN8am9pbignLCAnLCBhdHRyaWJ1dGU9J3VzZXJuYW1lJykgfX0KCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAyLjYKICAgICAgIFRoZSBgYXR0cmlidXRlYCBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogICAgTnIfAAAARlQpC9oDbWFwckIAAAByNwAAAHJjAAAAciMAAAByWwAAAHJSAAAA2gRsaXN0ckcAAAByBQAAAHIHAAAAKQdyXQAAAHIxAAAAcmkAAAByOAAAAFoJZG9fZXNjYXBl2gNpZHhyOwAAAHIcAAAAchwAAAByHgAAANoMc3luY19kb19qb2luMQIAAHMgAAAAABwIARIDBgEUBAoBCAEEAhIBCgEGAhACBAEKAggCCgNylgAAAGMEAAAAAAAAAAQAAAAFAAAAwwAAAHMYAAAAdAB8AHQBfAGDAUkAZABIAHwCfAODBFMAKQFOKQJylgAAAHIMAAAAKQRyXQAAAHIxAAAAcmkAAAByOAAAAHIcAAAAchwAAAByHgAAANoHZG9fam9pbmsCAABzAgAAAAAHcpcAAADpUAAAACkDcjEAAADaBXdpZHRochsAAABjAgAAAAAAAAACAAAAAgAAAEMAAABzDgAAAHQAfACDAWoBfAGDAVMAKQF6LkNlbnRlcnMgdGhlIHZhbHVlIGluIGEgZmllbGQgb2YgYSBnaXZlbiB3aWR0aC4pAnIHAAAA2gZjZW50ZXIpAnIxAAAAcpkAAAByHAAAAHIcAAAAch4AAADaCWRvX2NlbnRlcnUCAABzAgAAAAACcpsAAAApA3I3AAAA2gNzZXFyGwAAAGMCAAAAAAAAAAIAAAALAAAAQwAAAHMsAAAAeQx0AHQBfAGDAYMBUwAEAHQCawpyJgEAAQABAHwAagNkAYMBUwBYAGQCUwApA3okUmV0dXJuIHRoZSBmaXJzdCBpdGVtIG9mIGEgc2VxdWVuY2UueiJObyBmaXJzdCBpdGVtLCBzZXF1ZW5jZSB3YXMgZW1wdHkuTikEcoYAAAByhQAAAHKHAAAAcogAAAApAnI3AAAAcpwAAAByHAAAAHIcAAAAch4AAADaDXN5bmNfZG9fZmlyc3R6AgAAcwgAAAAABQIBDAEOAXKdAAAAeip0LlVuaW9uW3QuQXN5bmNJdGVyYWJsZVtWXSwgdC5JdGVyYWJsZVtWXV1jAgAAAAAAAAACAAAACwAAAMMAAABzMgAAAHkSdAB8AYMBagGDAEkAZABIAFMABAB0AmsKciwBAAEAAQB8AGoDZAGDAVMAWABkAFMAKQJOeiJObyBmaXJzdCBpdGVtLCBzZXF1ZW5jZSB3YXMgZW1wdHkuKQRyCgAAANoJX19hbmV4dF9f2hJTdG9wQXN5bmNJdGVyYXRpb25yiAAAACkCcjcAAABynAAAAHIcAAAAchwAAAByHgAAANoIZG9fZmlyc3SFAgAAcwgAAAAABAIBEgEOAXKgAAAAeg90LlJldmVyc2libGVbVl1jAgAAAAAAAAACAAAACwAAAEMAAABzMAAAAHkQdAB0AXQCfAGDAYMBgwFTAAQAdANrCnIqAQABAAEAfABqBGQBgwFTAFgAZAJTACkDeuhSZXR1cm4gdGhlIGxhc3QgaXRlbSBvZiBhIHNlcXVlbmNlLgoKICAgIE5vdGU6IERvZXMgbm90IHdvcmsgd2l0aCBnZW5lcmF0b3JzLiBZb3UgbWF5IHdhbnQgdG8gZXhwbGljaXRseQogICAgY29udmVydCBpdCB0byBhIGxpc3Q6CgogICAgLi4gc291cmNlY29kZTo6IGppbmphCgogICAgICAgIHt7IGRhdGEgfCBzZWxlY3RhdHRyKCduYW1lJywgJz09JywgJ0ppbmphJykgfCBsaXN0IHwgbGFzdCB9fQogICAgeiFObyBsYXN0IGl0ZW0sIHNlcXVlbmNlIHdhcyBlbXB0eS5OKQVyhgAAAHKFAAAA2ghyZXZlcnNlZHKHAAAAcogAAAApAnI3AAAAcpwAAAByHAAAAHIcAAAAch4AAADaB2RvX2xhc3SPAgAAcwgAAAAADQIBEAEOAXKiAAAAchgAAAB6DXQuU2VxdWVuY2VbVl0pA9oHY29udGV4dHKcAAAAchsAAABjAgAAAAAAAAACAAAACwAAAEMAAABzLAAAAHkKdABqAXwBgwFTAAQAdAJrCnImAQABAAEAfABqA2oEZAGDAVMAWABkAlMAKQN6J1JldHVybiBhIHJhbmRvbSBpdGVtIGZyb20gdGhlIHNlcXVlbmNlLnojTm8gcmFuZG9tIGl0ZW0sIHNlcXVlbmNlIHdhcyBlbXB0eS5OKQXaBnJhbmRvbdoGY2hvaWNl2gpJbmRleEVycm9ycjcAAAByiAAAACkCcqMAAABynAAAAHIcAAAAchwAAAByHgAAANoJZG9fcmFuZG9tpQIAAHMIAAAAAAMCAQoBDgFypwAAACkDcjEAAADaBmJpbmFyeXIbAAAAYwIAAAAAAAAACAAAAAgAAABDAAAAc+gAAAB0AHwAgwF9AnwBchBkAW4CZAJ9A3wBchxkA24CZAR8AXImZAVuAmQGfAFyMGQHbgJkCHwBcjpkCW4CZAp8AXJEZAtuAmQMfAFyTmQNbgJkDnwBclhkD24CZBB8AXJiZBFuAmQSZwh9BHwCZBNrAnJ0ZBRTAHwCfANrAHKKdAF8AoMBmwBkFZ0CUwB4QHQCfASDAUQAXTRcAn0FfQZ8A3wFZBYXABMAfQd8AnwHawBylHwDfAIUAHwHGwBkF5sEZBh8BpsAnQNTAHGUVwB8A3wCFAB8BxsAZBebBGQYfAabAJ0DUwBkGVMAKRp6+EZvcm1hdCB0aGUgdmFsdWUgbGlrZSBhICdodW1hbi1yZWFkYWJsZScgZmlsZSBzaXplIChpLmUuIDEzIGtCLAogICAgNC4xIE1CLCAxMDIgQnl0ZXMsIGV0YykuICBQZXIgZGVmYXVsdCBkZWNpbWFsIHByZWZpeGVzIGFyZSB1c2VkIChNZWdhLAogICAgR2lnYSwgZXRjLiksIGlmIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGlzIHNldCB0byBgVHJ1ZWAgdGhlIGJpbmFyeQogICAgcHJlZml4ZXMgYXJlIHVzZWQgKE1lYmksIEdpYmkpLgogICAgaQAEAABp6AMAAFoDS2lCWgJrQloDTWlCWgJNQloDR2lCWgJHQloDVGlCWgJUQloDUGlCWgJQQloDRWlCWgJFQloDWmlCWgJaQloDWWlCWgJZQnIIAAAAegYxIEJ5dGV6BiBCeXRlc3IpAAAAegMuMWZyawAAAE4pA9oFZmxvYXRyTwAAAHJHAAAAKQhyMQAAAHKoAAAA2gVieXRlc9oEYmFzZdoIcHJlZml4ZXNySQAAANoGcHJlZml42gR1bml0chwAAAByHAAAAHIeAAAA2hFkb19maWxlc2l6ZWZvcm1hdK4CAABzJgAAAAAGCAEMAgoBCgEKAQoBCgEKAQoBDgMIAQQBCAEOAhIBDAIIARwCcq8AAABjAQAAAAAAAAABAAAAAgAAAEMAAABzCAAAAHQAfACDAVMAKQF6LlByZXR0eSBwcmludCBhIHZhcmlhYmxlLiBVc2VmdWwgZm9yIGRlYnVnZ2luZy4pAXITAAAAKQFyMQAAAHIcAAAAchwAAAByHgAAANoJZG9fcHByaW50zwIAAHMCAAAAAAJysAAAAHoYXihbXHcuKy1dezIsfTooLyl7MCwyfSkkKQhyXQAAAHIxAAAA2g50cmltX3VybF9saW1pdNoIbm9mb2xsb3faBnRhcmdldNoDcmVs2g1leHRyYV9zY2hlbWVzchsAAABjBwAAAAAAAAALAAAABwAAAEMAAABzwAAAAHwAagBqAX0HdAJ8BXAQZAFqA4MAgwF9CHwDciZ8CGoEZAKDAQEAfAhqBXwHZAMZAHA0ZAFqA4MAgwEBAGQEagZ0B3wIgwGDAXBMZAV9BXwEZAVrCHJefAdkBhkAfQR8BmQFawhycnwHZAcZAHBwZgB9BngofAZEAF0gfQl0CGoJfAmDAWQFawhyeHQKfAmbAmQInQKDAYIBcXhXAHQLfAF8AnwFfAR8BmQJjQV9CnwAagxyvHQNfAqDAX0KfApTACkKYTAGAABDb252ZXJ0IFVSTHMgaW4gdGV4dCBpbnRvIGNsaWNrYWJsZSBsaW5rcy4KCiAgICBUaGlzIG1heSBub3QgcmVjb2duaXplIGxpbmtzIGluIHNvbWUgc2l0dWF0aW9ucy4gVXN1YWxseSwgYSBtb3JlCiAgICBjb21wcmVoZW5zaXZlIGZvcm1hdHRlciwgc3VjaCBhcyBhIE1hcmtkb3duIGxpYnJhcnksIGlzIGEgYmV0dGVyCiAgICBjaG9pY2UuCgogICAgV29ya3Mgb24gYGBodHRwOi8vYGAsIGBgaHR0cHM6Ly9gYCwgYGB3d3cuYGAsIGBgbWFpbHRvOmBgLCBhbmQgZW1haWwKICAgIGFkZHJlc3Nlcy4gTGlua3Mgd2l0aCB0cmFpbGluZyBwdW5jdHVhdGlvbiAocGVyaW9kcywgY29tbWFzLCBjbG9zaW5nCiAgICBwYXJlbnRoZXNlcykgYW5kIGxlYWRpbmcgcHVuY3R1YXRpb24gKG9wZW5pbmcgcGFyZW50aGVzZXMpIGFyZQogICAgcmVjb2duaXplZCBleGNsdWRpbmcgdGhlIHB1bmN0dWF0aW9uLiBFbWFpbCBhZGRyZXNzZXMgdGhhdCBpbmNsdWRlCiAgICBoZWFkZXIgZmllbGRzIGFyZSBub3QgcmVjb2duaXplZCAoZm9yIGV4YW1wbGUsCiAgICBgYG1haWx0bzphZGRyZXNzQGV4YW1wbGUuY29tP2NjPWNvcHlAZXhhbXBsZS5jb21gYCkuCgogICAgOnBhcmFtIHZhbHVlOiBPcmlnaW5hbCB0ZXh0IGNvbnRhaW5pbmcgVVJMcyB0byBsaW5rLgogICAgOnBhcmFtIHRyaW1fdXJsX2xpbWl0OiBTaG9ydGVuIGRpc3BsYXllZCBVUkwgdmFsdWVzIHRvIHRoaXMgbGVuZ3RoLgogICAgOnBhcmFtIG5vZm9sbG93OiBBZGQgdGhlIGBgcmVsPW5vZm9sbG93YGAgYXR0cmlidXRlIHRvIGxpbmtzLgogICAgOnBhcmFtIHRhcmdldDogQWRkIHRoZSBgYHRhcmdldGBgIGF0dHJpYnV0ZSB0byBsaW5rcy4KICAgIDpwYXJhbSByZWw6IEFkZCB0aGUgYGByZWxgYCBhdHRyaWJ1dGUgdG8gbGlua3MuCiAgICA6cGFyYW0gZXh0cmFfc2NoZW1lczogUmVjb2duaXplIFVSTHMgdGhhdCBzdGFydCB3aXRoIHRoZXNlIHNjaGVtZXMKICAgICAgICBpbiBhZGRpdGlvbiB0byB0aGUgZGVmYXVsdCBiZWhhdmlvci4gRGVmYXVsdHMgdG8KICAgICAgICBgYGVudi5wb2xpY2llc1sidXJsaXplLmV4dHJhX3NjaGVtZXMiXWBgLCB3aGljaCBkZWZhdWx0cyB0byBubwogICAgICAgIGV4dHJhIHNjaGVtZXMuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjAKICAgICAgICBUaGUgYGBleHRyYV9zY2hlbWVzYGAgcGFyYW1ldGVyIHdhcyBhZGRlZC4KCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMAogICAgICAgIEdlbmVyYXRlIGBgaHR0cHM6Ly9gYCBsaW5rcyBmb3IgVVJMcyB3aXRob3V0IGEgc2NoZW1lLgoKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4wCiAgICAgICAgVGhlIHBhcnNpbmcgcnVsZXMgd2VyZSB1cGRhdGVkLiBSZWNvZ25pemUgZW1haWwgYWRkcmVzc2VzIHdpdGgKICAgICAgICBvciB3aXRob3V0IHRoZSBgYG1haWx0bzpgYCBzY2hlbWUuIFZhbGlkYXRlIElQIGFkZHJlc3Nlcy4gSWdub3JlCiAgICAgICAgcGFyZW50aGVzZXMgYW5kIGJyYWNrZXRzIGluIG1vcmUgY2FzZXMuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAyLjgKICAgICAgIFRoZSBgYHRhcmdldGBgIHBhcmFtZXRlciB3YXMgYWRkZWQuCiAgICBycgAAAHKyAAAAegp1cmxpemUucmVscmsAAABOeg11cmxpemUudGFyZ2V0ehR1cmxpemUuZXh0cmFfc2NoZW1lc3oiIGlzIG5vdCBhIHZhbGlkIFVSSSBzY2hlbWUgcHJlZml4LikEcrEAAABytAAAAHKzAAAAcrUAAAApDnI3AAAA2ghwb2xpY2llc3J/AAAAckoAAABygAAAANoGdXBkYXRlclsAAAByewAAANoOX3VyaV9z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ACAIAQoCJAEWAhABBAIEARgCIAFy0AAAAOlPAAAAKQdyNwAAAHJeAAAAcpkAAADaEGJyZWFrX2xvbmdfd29yZHPaCndyYXBzdHJpbmfaEGJyZWFrX29uX2h5cGhlbnNyGwAAAGMGAAAAAAAAAAYAAAAGAAAAAwAAAHM6AAAAZAFkAmwAiQKIBGQCawhyFnwAagGJBIgEagKHAIcBhwKHA4cEZgVkA2QEhAh8AWoDgwBEAIMBgwFTACkFYfoCAABXcmFwIGEgc3RyaW5nIHRvIHRoZSBnaXZlbiB3aWR0aC4gRXhpc3RpbmcgbmV3bGluZXMgYXJlIHRyZWF0ZWQKICAgIGFzIHBhcmFncmFwaHMgdG8gYmUgd3JhcHBlZCBzZXBhcmF0ZWx5LgoKICAgIDpwYXJhbSBzOiBPcmlnaW5hbCB0ZXh0IHRvIHdyYXAuCiAgICA6cGFyYW0gd2lkdGg6IE1heGltdW0gbGVuZ3RoIG9mIHdyYXBwZWQgbGluZXMuCiAgICA6cGFyYW0gYnJlYWtfbG9uZ193b3JkczogSWYgYSB3b3JkIGlzIGxvbmdlciB0aGFuIGBgd2lkdGhgYCwgYnJlYWsKICAgICAgICBpdCBhY3Jvc3MgbGluZXMuCiAgICA6cGFyYW0gYnJlYWtfb25faHlwaGVuczogSWYgYSB3b3JkIGNvbnRhaW5zIGh5cGhlbnMsIGl0IG1heSBiZSBzcGxpdAogICAgICAgIGFjcm9zcyBsaW5lcy4KICAgIDpwYXJhbSB3cmFwc3RyaW5nOiBTdHJpbmcgdG8gam9pbiBlYWNoIHdyYXBwZWQgbGluZS4gRGVmYXVsdHMgdG8KICAgICAgICA6YXR0cjpgRW52aXJvbm1lbnQubmV3bGluZV9zZXF1ZW5jZWAuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAyLjExCiAgICAgICAgRXhpc3RpbmcgbmV3bGluZXMgYXJlIHRyZWF0ZWQgYXMgcGFyYWdyYXBocyB3cmFwcGVkIHNlcGFyYXRlbHkuCgogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAyLjExCiAgICAgICAgQWRkZWQgdGhlIGBgYnJlYWtfb25faHlwaGVuc2BgIHBhcmFtZXRlci4KCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6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UHJvdG9jb2xyGgAAANoHVHlwZVZhctoIQ2FsbGFibGVyQQAAAHIkAAAAciYAAAByJwAAAHIuAAAAci8AAAByMAAAAHI2AAAA2ghPcHRpb25hbNoFVW5pb25yIwAAAHJPAAAAckIAAABySwAAAHJMAAAAckAAAAByUwAAANoHTWFwcGluZ3JZAAAAcnoAAAByXAAAAHJlAAAAcmcAAAByaAAAAHIsAQAAcm8AAABycQAAANoHY29tcGlsZXJzAAAAcnQAAAByfAAAAHJ+AAAAcoMAAAByiwAAAHKNAAAAco8AAABykgAAAHKWAAAA2g1Bc3luY0l0ZXJhYmxlcpcAAABymwAAAHKdAAAAcqAAAAByogAAAHKnAAAAcqkAAAByrwAAAHKwAAAAcrgAAAByuwAAAHLFAAAActAAAABy2QAAAHLaAAAActwAAABy4AAAAHLiAAAAcuUAAABy6AAAAHLqAAAAcvIAAABy8wAAAHL1AAAAcv4AAADaCk5hbWVkVHVwbGVy/wAAAHIFAQAAcgYBAAByCQEAAHIKAQAAcgsBAAByDAEAAHINAQAAcg4BAADaCG92ZXJsb2Fkcg8BAAByFQEAAHIWAQAAchgBAAByGwEAAHIdAQAAch4BAAByHwEAAHIgAQAAciEBAAByIgEAAHIjAQAAcicBAADaBERpY3RyFwEAAHIuAQAAchoBAAByHAEAAHIvAQAAckYAAABaB0ZJTFRFUlNyHAAAAHIcAAAAchwAAAByHgAAANoIPG1vZHVsZT4BAAAAc4ACAAAEAQgBCAEIAQgBCAEIAQwBDAEMAgwBDAEMAgwBDAEMAQwBDAEMAQwBDAEMAQwBDAEMAQwCCAEIAQwBDAEMAQwCEgUaAQoBCgMQEBATEBEQDAABOgEeGjABJCYSAR4KEAksAQ4dAgIUARAhEAUQBQICFgEQJhAHCgMQDwABAAEWAR4kAgQAAQABHgEQMQIEAAEcARAcAgECAQIBAgESAQ4OAgQAARwBEA4CBAABHAEQEAABCgEOHQIEAAEeARA0BgQAASoBEAQWBQICBAEQCAYCBAEQBwICBAEQEwIBFAgiIRIFCgMCBAABAAEAAQABMAEQSBYBDi4CBAABAAEAARYBECgCBAABAAEAARYBEDAKAxAFGhYYCxgcHAUQCQoBDikGBBIBEAUKAQ4lAAEKAQ4kEg0CBR4BEDUGBR4BEAgCBAABHAEQFQYEAAEcARAQEAcGARIEEAcQBQQBEgQEARIEMBICAggBHBwEAhABEgQEBQIBGAESBAICDgESLwQCAgEQAQIBBAEEARIEBAUCASQBEgQGAgIBEAEEAQQBEggCAgwBEBwGAgIBAgEEAQQBEAQCAgwBEBcGAgIBAgEEAQQBEAQCAgwBEBsGAgIBAgEEAQQBEAQCAgwBEBkGAgIBAgEEAQQBEAQCAhIBEBsUAR4bAgEEAQ4BEgECAR4dAgECAQQBDgESAQIBDgoCAQIBBAEOARIBAgEOCgIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIBAgECAQIB