Mw0NCn2EhGP4jQAA4wAAAAAAAAAAAAAAAAcAAABAAAAAc1wCAABkAFoAZAFkAmwBWgFkAWQCbAJaAmQBZAJsA1oDZAFkAmwEWgRkAWQDbAVtBloGbQdaB20IWghtCVoJbQpaCm0LWgttDFoMAQBkAWQEbA1tDloOAQBkAWQFbA9tEFoQAQBkAWQGbBFtEloSAQBkAWQHbBNtFFoUAQBkAWQIbBNtFVoWAQBkAWQJbBdtGFoYbRlaGW0aWhptG1obAQBkAWQKbBxtHVodbR5aHgEAZAFkC2wfbSBaIAEAZAFkDGwhbSJaIgEAZAFkDWwjbSRaJAEAZAFkDmwlbSZaJgEAZAFkD2wnbShaKAEAZAFkEGwpbSpaKgEAZAFkEWwrbSxaLAEAZAFkEmwtbS5aLgEAZAFkE2wvbTBaMAEAZAFkFGwxbTJaMgEAZAFkFWwzbTRaNAEAZAFkFmw1bTZaNgEAZAFkF2w3bThaOAEAZAFkGGw5bTpaOgEAZAFkGWw7bTxaPAEAZAFkGmw9bT5aPgEAZBtkHGQdZwNaP2UwZUCDAVpBZQxlC2YAGQBlC2VCZUNmAhkAZgIZAFpEZQtlQmVCZUJlFGUJZUIZAGVEZgYZAFpFZDJlJGULZUJlQmVCZgMZAGVGZUZkH5wEZCBkIYQFWkdHAGQiZCOEAGQjgwJaSGUIZSAZAGU0ZUNlCGUgGQBkJJwEZCVkJoQEWklHAGQnZCiEAGQogwJaSkcAZClkHIQAZByDAlpLRwBkKmQrhABkK4MCWkxHAGQsZB2EAGQdgwJaTWVDZUNlQmQtnANkLmQvhARaTmVDZUNlCWVDGQBkLZwDZDBkMYQEWk9kAlMAKTN6IVJvdXRpbmVzIHJlbGF0ZWQgdG8gUHlQSSwgaW5kZXhlc+kAAAAATikH2glGcm96ZW5TZXTaCEl0ZXJhYmxl2gRMaXN02ghPcHRpb25hbNoDU2V02gVUdXBsZdoFVW5pb24pAdoKc3BlY2lmaWVycykB2gNUYWcpAdoRY2Fub25pY2FsaXplX25hbWUpAdoMX0Jhc2VWZXJzaW9uKQHaBXBhcnNlKQTaG0Jlc3RWZXJzaW9uQWxyZWFkeUluc3RhbGxlZNoURGlzdHJpYnV0aW9uTm90Rm91bmTaFEludmFsaWRXaGVlbEZpbGVuYW1l2hBVbnN1cHBvcnRlZFdoZWVsKQLaDUxpbmtDb2xsZWN0b3LaC3BhcnNlX2xpbmtzKQHaFUluc3RhbGxhdGlvbkNhbmRpZGF0ZSkB2g1Gb3JtYXRDb250cm9sKQHaBExpbmspAdoLU2VhcmNoU2NvcGUpAdoUU2VsZWN0aW9uUHJlZmVyZW5jZXMpAdoMVGFyZ2V0UHl0aG9uKQHaBVdoZWVsKQHaEkluc3RhbGxSZXF1aXJlbWVudCkB2glnZXRMb2dnZXIpAdoPV0hFRUxfRVhURU5TSU9OKQHaBkhhc2hlcykB2gppbmRlbnRfbG9nKQHaDGJ1aWxkX25ldGxvYykB2hVjaGVja19yZXF1aXJlc19weXRob24pAdoUU1VQUE9SVEVEX0VYVEVOU0lPTlMpAdoLdXJsX3RvX3BhdGhyFQAAANoTQmVzdENhbmRpZGF0ZVJlc3VsdNoNUGFja2FnZUZpbmRlckYpBNoEbGlua9oMdmVyc2lvbl9pbmZv2hZpZ25vcmVfcmVxdWlyZXNfcHl0aG9u2gZyZXR1cm5jAwAAAAAAAAAFAAAADQAAAEMAAABzfgAAAHkSdAB8AGoBfAFkAY0CfQNXAG4mBAB0AmoDawpyOAEAAQABAHQEagVkAnwAagF8AIMDAQBZAG5CWAB8A3N6ZANqBnQHdAh8AYMCgwF9BHwCc2h0BGoJZAR8BHwAagF8AIMEAQBkBVMAdARqBWQGfAR8AGoBfACDBAEAZAdTACkIYWEBAAAKICAgIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBQeXRob24gdmVyc2lvbiBpcyBjb21wYXRpYmxlIHdpdGggYSBsaW5rJ3MKICAgICJSZXF1aXJlcy1QeXRob24iIHZhbHVlLgoKICAgIDpwYXJhbSB2ZXJzaW9uX2luZm86IEEgMy10dXBsZSBvZiBpbnRzIHJlcHJlc2VudGluZyB0aGUgUHl0aG9uCiAgICAgICAgbWFqb3ItbWlub3ItbWljcm8gdmVyc2lvbiB0byBjaGVjay4KICAgIDpwYXJhbSBpZ25vcmVfcmVxdWlyZXNfcHl0aG9uOiBXaGV0aGVyIHRvIGlnbm9yZSB0aGUgIlJlcXVpcmVzLVB5dGhvbiIKICAgICAgICB2YWx1ZSBpZiB0aGUgZ2l2ZW4gUHl0aG9uIHZlcnNpb24gaXNuJ3QgY29tcGF0aWJsZS4KICAgICkBcicAAAB6Mklnbm9yaW5nIGludmFsaWQgUmVxdWlyZXMtUHl0aG9uICglcikgZm9yIGxpbms6ICVz2gEuejRMaW5rIHJlcXVpcmVzIGEgZGlmZmVyZW50IFB5dGhvbiAoJXMgbm90IGluOiAlcik6ICVzRnpCSWdub3JpbmcgZmFpbGVkIFJlcXVpcmVzLVB5dGhvbiBjaGVjayAoJXMgbm90IGluOiAlcikgZm9yIGxpbms6ICVzVCkKciEAAADaD3JlcXVpcmVzX3B5dGhvbnIJAAAA2hBJbnZhbGlkU3BlY2lmaWVy2gZsb2dnZXLaBWRlYnVn2gRqb2lu2gNtYXDaA3N0ctoHdmVyYm9zZSkFciYAAAByJwAAAHIoAAAAWg1pc19jb21wYXRpYmxl2gd2ZXJzaW9uqQByNAAAAPqTL2hvbWUvdWV0bGhyL0RvY3VtZW50cy9TZXJtb1Bsb3RfYmFja2VuZC9kcmFmdF9TUkFNX2JsYWNrYm94L1VFVFJWX0VTb0NfdjIvdmVudi9saWI2NC9weXRob24zLjYvc2l0ZS1wYWNrYWdlcy9waXAvX2ludGVybmFsL2luZGV4L3BhY2thZ2VfZmluZGVyLnB52htfY2hlY2tfbGlua19yZXF1aXJlc19weXRob24zAAAAczAAAAAADgIBAgEEAQwCEAEEAQIBBAEMAwQBEAEEAQQBAgECAQQBBgIEAgQBAgECAQQBBgNyNgAAAGMAAAAAAAAAAAAAAAAJAAAAQAAAAHNaAAAAZQBaAWQAWgJkAVoDZQRqBWQCgwFaBmQKZQdlB2UIZQcZAGUJZQplC2UKGQBkA2QEnAdkBWQGhAVaDGUNZQ5lCmULZQcZAGYCGQBkB5wCZAhkCYQEWg9kA1MAKQvaDUxpbmtFdmFsdWF0b3J6RAogICAgUmVzcG9uc2libGUgZm9yIGV2YWx1YXRpbmcgbGlua3MgZm9yIGEgcGFydGljdWxhciBwcm9qZWN0LgogICAgehQtcHkoWzEyM11cLj9bMC05XT8pJE4pB9oMcHJvamVjdF9uYW1l2g5jYW5vbmljYWxfbmFtZdoHZm9ybWF0c9oNdGFyZ2V0X3B5dGhvbtoMYWxsb3dfeWFua2VkcigAAAByKQAAAGMHAAAAAAAAAAcAAAACAAAAQwAAAHM0AAAAfAZkAWsIcgxkAn0GfAV8AF8AfAJ8AF8BfAZ8AF8CfAN8AF8DfAR8AF8EfAF8AF8FZAFTACkDYdUDAAAKICAgICAgICA6cGFyYW0gcHJvamVjdF9uYW1lOiBUaGUgdXNlciBzdXBwbGllZCBwYWNrYWdlIG5hbWUuCiAgICAgICAgOnBhcmFtIGNhbm9uaWNhbF9uYW1lOiBUaGUgY2Fub25pY2FsIHBhY2thZ2UgbmFtZS4KICAgICAgICA6cGFyYW0gZm9ybWF0czogVGhlIGZvcm1hdHMgYWxsb3dlZCBmb3IgdGhpcyBwYWNrYWdlLiBTaG91bGQgYmUgYSBzZXQKICAgICAgICAgICAgd2l0aCAnYmluYXJ5JyBvciAnc291cmNlJyBvciBib3RoIGluIGl0LgogICAgICAgIDpwYXJhbSB0YXJnZXRfcHl0aG9uOiBUaGUgdGFyZ2V0IFB5dGhvbiBpbnRlcnByZXRlciB0byB1c2Ugd2hlbgogICAgICAgICAgICBldmFsdWF0aW5nIGxpbmsgY29tcGF0aWJpbGl0eS4gVGhpcyBpcyB1c2VkLCBmb3IgZXhhbXBsZSwgdG8KICAgICAgICAgICAgY2hlY2sgd2hlZWwgY29tcGF0aWJpbGl0eSwgYXMgd2VsbCBhcyB3aGVuIGNoZWNraW5nIHRoZSBQeXRob24KICAgICAgICAgICAgdmVyc2lvbiwgZS5nLiB0aGUgUHl0aG9uIHZlcnNpb24gZW1iZWRkZWQgaW4gYSBsaW5rIGZpbGVuYW1lCiAgICAgICAgICAgIChvciBlZ2cgZnJhZ21lbnQpIGFuZCBhZ2FpbnN0IGFuIEhUTUwgbGluaydzIG9wdGlvbmFsIFBFUCA1MDMKICAgICAgICAgICAgImRhdGEtcmVxdWlyZXMtcHl0aG9uIiBhdHRyaWJ1dGUuCiAgICAgICAgOnBhcmFtIGFsbG93X3lhbmtlZDogV2hldGhlciBmaWxlcyBtYXJrZWQgYXMgeWFua2VkIChpbiB0aGUgc2Vuc2UKICAgICAgICAgICAgb2YgUEVQIDU5MikgYXJlIHBlcm1pdHRlZCB0byBiZSBjYW5kaWRhdGVzIGZvciBpbnN0YWxsLgogICAgICAgIDpwYXJhbSBpZ25vcmVfcmVxdWlyZXNfcHl0aG9uOiBXaGV0aGVyIHRvIGlnbm9yZSBpbmNvbXBhdGlibGUKICAgICAgICAgICAgUEVQIDUwMyAiZGF0YS1yZXF1aXJlcy1weXRob24iIHZhbHVlcyBpbiBIVE1MIGxpbmtzLiBEZWZhdWx0cwogICAgICAgICAgICB0byBGYWxzZS4KICAgICAgICBORikG2g1fYWxsb3dfeWFua2Vk2g9fY2Fub25pY2FsX25hbWXaF19pZ25vcmVfcmVxdWlyZXNfcHl0aG9u2ghfZm9ybWF0c9oOX3RhcmdldF9weXRob25yOAAAACkH2gRzZWxmcjgAAAByOQAAAHI6AAAAcjsAAAByPAAAAHIoAAAAcjQAAAByNAAAAHI1AAAA2ghfX2luaXRfX24AAABzEAAAAAAaCAEEAgYBBgEGAQYBBgJ6FkxpbmtFdmFsdWF0b3IuX19pbml0X18pAnImAAAAcikAAABjAgAAAAAAAAAMAAAADQAAAEMAAABz/gEAAGQBfQJ8AWoAcip8AGoBDAByKnwBagJwGmQCfQNkA2QEfAObAJ0CZgJTAHwBagNyQHwBagN9BHwBagR9BZAAbvZ8AWoFgwBcAn0EfQV8BXNUZBhTAHwFdAZrB3JqZANkBnwFmwCdAmYCUwBkB3wAagdrB3KQfAV0CGsCcpBkCGoJfABqCoMBfQNkA3wDZgJTAGQJfAFqC2sGcqZ8BWQKawJypmQZUwB8BXQIawKQAXI2eQ50DHwBag2DAX0GVwBuFAQAdA5rCnLSAQABAAEAZBpTAFgAdA98BmoQgwF8AGoRawOQAHL6ZA1qCXwAagqDAX0DZAN8A2YCUwB8AGoSahODAH0HfAZqFHwHgwGQAXMwfAZqFYMAfQhkDmoJZA9qFnwIgwGDAX0DZAN8A2YCUwB8BmoXfQJkEHwAagdrB5ABcmB8BXQIawOQAXJgZBF8AGoKmwCdAn0DZAN8A2YCUwB8ApABc3J0GHwEfABqEYMCfQJ8ApABc4xkEnwAagqbAJ0CfQNkA3wDZgJTAHwAahlqGnwCgwF9CXwJkAFyynwCZAF8CWobgwCFAhkAfQJ8CWocZBODAX0KfAp8AGoSah1rA5ABcspkG1MAdB58AXwAahJqH3wAaiBkFY0DfQt8C5ABc+hkHFMAdCFqImQWfAF8AoMDAQBkF3wCZgJTACkdYUcBAAAKICAgICAgICBEZXRlcm1pbmUgd2hldGhlciBhIGxpbmsgaXMgYSBjYW5kaWRhdGUgZm9yIGluc3RhbGxhdGlvbi4KCiAgICAgICAgOnJldHVybjogQSB0dXBsZSAoaXNfY2FuZGlkYXRlLCByZXN1bHQpLCB3aGVyZSBgcmVzdWx0YCBpcyAoMSkgYQogICAgICAgICAgICB2ZXJzaW9uIHN0cmluZyBpZiBgaXNfY2FuZGlkYXRlYCBpcyBUcnVlLCBhbmQgKDIpIGlmCiAgICAgICAgICAgIGBpc19jYW5kaWRhdGVgIGlzIEZhbHNlLCBhbiBvcHRpb25hbCBzdHJpbmcgdG8gbG9nIHRoZSByZWFzb24KICAgICAgICAgICAgdGhlIGxpbmsgZmFpbHMgdG8gcXVhbGlmeS4KICAgICAgICBOegw8bm9uZSBnaXZlbj5GehN5YW5rZWQgZm9yIHJlYXNvbjog+gpub3QgYSBmaWxlehx1bnN1cHBvcnRlZCBhcmNoaXZlIGZvcm1hdDog2gZiaW5hcnl6HE5vIGJpbmFyaWVzIHBlcm1pdHRlZCBmb3Ige31aCG1hY29zeDEwegQuemlw+gxtYWNvc3gxMCBvbmX6FmludmFsaWQgd2hlZWwgZmlsZW5hbWV6G3dyb25nIHByb2plY3QgbmFtZSAobm90IHt9KXpebm9uZSBvZiB0aGUgd2hlZWwncyB0YWdzICh7fSkgYXJlIGNvbXBhdGlibGUgKHJ1biBwaXAgZGVidWcgLS12ZXJib3NlIHRvIHNob3cgY29tcGF0aWJsZSB0YWdzKXoCLCDaBnNvdXJjZXoZTm8gc291cmNlcyBwZXJtaXR0ZWQgZm9yIHocTWlzc2luZyBwcm9qZWN0IHZlcnNpb24gZm9yIOkBAAAA+htQeXRob24gdmVyc2lvbiBpcyBpbmNvcnJlY3QpAnInAAAAcigAAAB6GkZvdW5kIGxpbmsgJXMsIHZlcnNpb246ICVzVCkCRnJEAAAAKQJGckYAAAApAkZyRwAAACkCRnJKAAAAKQJGTikj2glpc195YW5rZWRyPQAAANoNeWFua2VkX3JlYXNvbtoMZWdnX2ZyYWdtZW502gNleHTaCHNwbGl0ZXh0ciIAAAByQAAAAHIdAAAA2gZmb3JtYXRyOAAAANoEcGF0aHIaAAAA2ghmaWxlbmFtZXIQAAAAcgsAAADaBG5hbWVyPgAAAHJBAAAA2ghnZXRfdGFnc9oJc3VwcG9ydGVk2hdnZXRfZm9ybWF0dGVkX2ZpbGVfdGFnc3IvAAAAcjMAAADaHl9leHRyYWN0X3ZlcnNpb25fZnJvbV9mcmFnbWVudNoOX3B5X3ZlcnNpb25fcmXaBnNlYXJjaNoFc3RhcnTaBWdyb3Vw2gpweV92ZXJzaW9ucjYAAADaD3B5X3ZlcnNpb25faW5mb3I/AAAAci0AAAByLgAAACkMckIAAAByJgAAAHIzAAAA2gZyZWFzb27aCGVnZ19pbmZvck4AAADaBXdoZWVs2g5zdXBwb3J0ZWRfdGFnc9oJZmlsZV90YWdz2gVtYXRjaHJcAAAAWg9zdXBwb3J0c19weXRob25yNAAAAHI0AAAAcjUAAADaDWV2YWx1YXRlX2xpbmuTAAAAc3AAAAAACQQBDgEKAQ4CBgEGAQoCDAEEAQQBCAEOARIBDAEIARIBBAEKAQIBDgEOAQYBEgEMAQgCCgEMAwgCBAIMAwgCBgMWAQwBCAIGAQIBAgEIAgYBDAEIAgwBBgEQAQoBDgEEAgIBAgEGAQoCBgMEAg4CehtMaW5rRXZhbHVhdG9yLmV2YWx1YXRlX2xpbmspAU4pENoIX19uYW1lX1/aCl9fbW9kdWxlX1/aDF9fcXVhbG5hbWVfX9oHX19kb2NfX9oCcmXaB2NvbXBpbGVyWAAAAHIxAAAAcgIAAAByGQAAANoEYm9vbHIFAAAAckMAAAByFgAAAHIHAAAAcmQAAAByNAAAAHI0AAAAcjQAAAByNQAAAHI3AAAAYgAAAHMKAAAACAQEAgoNFgEOHXI3AAAAKQTaCmNhbmRpZGF0ZXPaBmhhc2hlc3I4AAAAcikAAABjAwAAAAAAAAAKAAAACAAAAEMAAABz4gAAAHwBcx50AGoBZAF0AnwAgwF8AoMDAQB0A3wAgwFTAGcAfQNnAH0EZAJ9BXhGfABEAF0+fQZ8BmoEfQd8B2oFc0JuInwHagZ8AWQDjQFyWHwFZAQ3AH0Fbgx8BGoHfAaDAQEAcTB8A2oHfAaDAQEAcTBXAHwFcnx8A30Ibgh0A3wAgwF9CHQCfAiDAXQCfACDAWsCcppkBX0JbiBkBmoIdAJ8BIMBZAdqCWQIZAmEAHwERACDAYMBgwJ9CXQAagFkCnQCfACDAXwCfAFqCnwFdAJ8A4MBfAUYAHwJgwcBAHwIUwApC2HGAgAACiAgICBGaWx0ZXIgb3V0IGNhbmRpZGF0ZXMgd2hvc2UgaGFzaGVzIGFyZW4ndCBhbGxvd2VkLCBhbmQgcmV0dXJuIGEgbmV3CiAgICBsaXN0IG9mIGNhbmRpZGF0ZXMuCgogICAgSWYgYXQgbGVhc3Qgb25lIGNhbmRpZGF0ZSBoYXMgYW4gYWxsb3dlZCBoYXNoLCB0aGVuIGFsbCBjYW5kaWRhdGVzIHdpdGgKICAgIGVpdGhlciBhbiBhbGxvd2VkIGhhc2ggb3Igbm8gaGFzaCBzcGVjaWZpZWQgYXJlIHJldHVybmVkLiAgT3RoZXJ3aXNlLAogICAgdGhlIGdpdmVuIGNhbmRpZGF0ZXMgYXJlIHJldHVybmVkLgoKICAgIEluY2x1ZGluZyB0aGUgY2FuZGlkYXRlcyB3aXRoIG5vIGhhc2ggc3BlY2lmaWVkIHdoZW4gdGhlcmUgaXMgYSBtYXRjaAogICAgYWxsb3dzIGEgd2FybmluZyB0byBiZSBsb2dnZWQgaWYgdGhlcmUgaXMgYSBtb3JlIHByZWZlcnJlZCBjYW5kaWRhdGUKICAgIHdpdGggbm8gaGFzaCBzcGVjaWZpZWQuICBSZXR1cm5pbmcgYWxsIGNhbmRpZGF0ZXMgaW4gdGhlIGNhc2Ugb2Ygbm8KICAgIG1hdGNoZXMgbGV0cyBwaXAgcmVwb3J0IHRoZSBoYXNoIG9mIHRoZSBjYW5kaWRhdGUgdGhhdCB3b3VsZCBvdGhlcndpc2UKICAgIGhhdmUgYmVlbiBpbnN0YWxsZWQgKGUuZy4gcGVybWl0dGluZyB0aGUgdXNlciB0byBtb3JlIGVhc2lseSB1cGRhdGUKICAgIHRoZWlyIHJlcXVpcmVtZW50cyBmaWxlIHdpdGggdGhlIGRlc2lyZWQgaGFzaCkuCiAgICB6SkdpdmVuIG5vIGhhc2hlcyB0byBjaGVjayAlcyBsaW5rcyBmb3IgcHJvamVjdCAlcjogZGlzY2FyZGluZyBubyBjYW5kaWRhdGVzcgEAAAApAXJtAAAAckkAAAB6GGRpc2NhcmRpbmcgbm8gY2FuZGlkYXRlc3ofZGlzY2FyZGluZyB7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AAAAfABqAH0CdAF8AoMBfQNmAH0EZAF9BXwBagJ9BnwGagNypnQEfAZqBYMBfQd5FHwHagZ8AnwAageDAgsAfQhXAG4kBAB0CGsKcmQBAAEAAQB0CWQCagp8B2oFgwGDAYIBWQBuAlgAfABqC3JwZAN9BXwHagxkBGsJcqx0DWoOZAV8B2oMgwJ9CXwJag+DAH0KdBB8CmQBGQCDAXwKZAMZAGYCfQRuBnwDCwB9CHQQfAZqEXwAahKDAYMBfQtkBnQQfAZqE4MBFAB9DHwLfAx8BXwBahR8CHwEZgZTACkHYSkFAAAKICAgICAgICBGdW5jdGlvbiB0byBwYXNzIGFzIHRoZSBga2V5YCBhcmd1bWVudCB0byBhIGNhbGwgdG8gc29ydGVkKCkgdG8gc29ydAogICAgICAgIEluc3RhbGxhdGlvbkNhbmRpZGF0ZXMgYnkgcHJlZmVyZW5jZS4KCiAgICAgICAgUmV0dXJucyBhIHR1cGxlIHN1Y2ggdGhhdCB0dXBsZXMgc29ydGluZyBhcyBncmVhdGVyIHVzaW5nIFB5dGhvbidzCiAgICAgICAgZGVmYXVsdCBjb21wYXJpc29uIG9wZXJhdG9yIGFyZSBtb3JlIHByZWZlcnJlZC4KCiAgICAgICAgVGhlIHByZWZlcmVuY2UgaXMgYXMgZm9sbG93czoKCiAgICAgICAgRmlyc3QgYW5kIGZvcmVtb3N0LCBjYW5kaWRhdGVzIHdpdGggYWxsb3dlZCAobWF0Y2hpbmcpIGhhc2hlcyBhcmUKICAgICAgICBhbHdheXMgcHJlZmVycmVkIG92ZXIgY2FuZGlkYXRlcyB3aXRob3V0IG1hdGNoaW5nIGhhc2hlcy4gVGhpcyBpcwogICAgICAgIGJlY2F1c2UgZS5nLiBpZiB0aGUgb25seSBjYW5kaWRhdGUgd2l0aCBhbiBhbGxvd2VkIGhhc2ggaXMgeWFua2VkLAogICAgICAgIHdlIHN0aWxsIHdhbnQgdG8gdXNlIHRoYXQgY2FuZGlkYXRlLgoKICAgICAgICBTZWNvbmQsIGV4Y2VwdGluZyBoYXNoIGNvbnNpZGVyYXRpb25zLCBjYW5kaWRhdGVzIHRoYXQgaGF2ZSBiZWVuCiAgICAgICAgeWFua2VkIChpbiB0aGUgc2Vuc2Ugb2YgUEVQIDU5MikgYXJlIGFsd2F5cyBsZXNzIHByZWZlcnJlZCB0aGFuCiAgICAgICAgY2FuZGlkYXRlcyB0aGF0IGhhdmVuJ3QgYmVlbiB5YW5rZWQuIFRoZW46CgogICAgICAgIElmIG5vdCBmaW5kaW5nIHdoZWVscywgdGhleSBhcmUgc29ydGVkIGJ5IHZlcnNpb24gb25seS4KICAgICAgICBJZiBmaW5kaW5nIHdoZWVscywgdGhlbiB0aGUgc29ydCBvcmRlciBpcyBieSB2ZXJzaW9uLCB0aGVuOgogICAgICAgICAgMS4gZXhpc3RpbmcgaW5zdGFsbHMKICAgICAgICAgIDIuIHdoZWVscyBvcmRlcmVkIHZpYSBXaGVlbC5zdXBwb3J0X2luZGV4X21pbihzZWxmLl9zdXBwb3J0ZWRfdGFncykKICAgICAgICAgIDMuIHNvdXJjZSBhcmNoaXZlcwogICAgICAgIElmIHByZWZlcl9iaW5hcnkgd2FzIHNldCwgdGhlbiBhbGwgd2hlZWxzIGFyZSBzb3J0ZWQgYWJvdmUgc291cmNlcy4KCiAgICAgICAgTm90ZTogaXQgd2FzIGNvbnNpZGVyZWQgdG8gZW1iZWQgdGhpcyBsb2dpYyBpbnRvIHRoZSBMaW5rCiAgICAgICAgICAgICAgY29tcGFyaXNvbiBvcGVyYXRvcnMsIGJ1dCB0aGVuIGRpZmZlcmVudCBzZGlzdCBsaW5rcwogICAgICAgICAgICAgIHdpdGggdGhlIHNhbWUgdmVyc2lvbiwgd291bGQgaGF2ZSB0byBiZSBjb25zaWRlcmVkIGVxdWFsCiAgICAgICAgcgEAAAB6Qnt9IGlzIG5vdCBhIHN1cHBvcnRlZCB3aGVlbCBmb3IgdGhpcyBwbGF0Zm9ybS4gSXQgY2FuJ3QgYmUgc29ydGVkLnJJAAAATnoLXihcZCspKC4qKSTp/////ykVcpIAAABycQAAAHImAAAA2ghpc193aGVlbHIaAAAAclIAAADaF2ZpbmRfbW9zdF9wcmVmZXJyZWRfdGFncpQAAADaClZhbHVlRXJyb3JyEQAAAHJQAAAAco8AAADaCWJ1aWxkX3RhZ3JpAAAAcmMAAADaBmdyb3Vwc9oDaW50cnQAAAByjgAAAHJLAAAAcjMAAAApDXJC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OFBhY2thZ2VGaW5kZXIuZmluZF9yZXF1aXJlbWVudC48bG9jYWxzPi5fZm9ybWF0X3ZlcnNpb25zek5Db3VsZCBub3QgZmluZCBhIHZlcnNpb24gdGhhdCBzYXRpc2ZpZXMgdGhlIHJlcXVpcmVtZW50ICVzIChmcm9tIHZlcnNpb25zOiAlcyl6JU5vIG1hdGNoaW5nIGRpc3RyaWJ1dGlvbiBmb3VuZCBmb3Ige31UekxFeGlzdGluZyBpbnN0YWxsZWQgdmVyc2lvbiAoJXMpIGlzIG1vc3QgdXAtdG8tZGF0ZSBhbmQgc2F0aXNmaWVzIHJlcXVpcmVtZW50elVFeGlzdGluZyBpbnN0YWxsZWQgdmVyc2lvbiAoJXMpIHNhdGlzZmllcyByZXF1aXJlbWVudCAobW9zdCB1cC10by1kYXRlIHZlcnNpb24gaXMgJXMpej1JbnN0YWxsZWQgdmVyc2lvbiAoJXMpIGlzIG1vc3QgdXAtdG8tZGF0ZSAocGFzdCB2ZXJzaW9uczogJXMpeilVc2luZyB2ZXJzaW9uICVzIChuZXdlc3Qgb2YgdmVyc2lvbnM6ICVzKSkTcm0AAABy3gAAAHJTAAAAcoYAAAByfQAAANoMc2F0aXNmaWVkX2J5cuMAAAByMwAAAHIDAAAAchQAAAByMQAAAHItAAAA2ghjcml0aWNhbHKDAAAAcg8AAAByUAAAAHIuAAAAcoQAAAByDgAAACkJckIAAABy3wAAAHLgAAAAcm0AAABaFWJlc3RfY2FuZGlkYXRlX3Jlc3VsdHJ9AAAAWhFpbnN0YWxsZWRfdmVyc2lvbnLkAAAAWg5iZXN0X2luc3RhbGxlZHI0AAAAcjQAAAByNQAAANoQZmluZF9yZXF1aXJlbWVudGEDAABzVAAAAAAJDAEEAQQBBAEIAgYCBAEKAQwCFA8QAQQBAgICAQ4DAgEMAwQBBAESAgQCDgEEAQQBAgIIAwQBAgICAQgCBAIEAgQBAgECAQ4CBAIEAQIBBAEOAnoeUGFja2FnZUZpbmRlci5maW5kX3JlcXVpcmVtZW50KQNOTk4pAU4pAk5OKQJOTikycmUAAAByZgAAAHJnAAAAcmgAAAByEgAAAHIZAAAAcmsAAAByBQAAAHIVAAAAcnkAAAByQwAAAHKqAAAAchgAAAByiQAAANoIcHJv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Y29sbGVjdG9ychIAAAByEwAAANoecGlwLl9pbnRlcm5hbC5tb2RlbHMuY2FuZGlkYXRlchQAAADaI3BpcC5faW50ZXJuYWwubW9kZWxzLmZvcm1hdF9jb250cm9schUAAADaGXBpcC5faW50ZXJuYWwubW9kZWxzLmxpbmtyFgAAANohcGlwLl9pbnRlcm5hbC5tb2RlbHMuc2VhcmNoX3Njb3BlchcAAADaJHBpcC5faW50ZXJuYWwubW9kZWxzLnNlbGVjdGlvbl9wcmVmc3IYAAAA2iJwaXAuX2ludGVybmFsLm1vZGVscy50YXJnZXRfcHl0aG9uchkAAADaGnBpcC5faW50ZXJuYWwubW9kZWxzLndoZWVschoAAADaEXBpcC5faW50ZXJuYWwucmVxchsAAABaGHBpcC5faW50ZXJuYWwudXRpbHMuX2xvZ3IcAAAA2h1waXAuX2ludGVybmFsLnV0aWxzLmZpbGV0eXBlc3IdAAAA2hpwaXAuX2ludGVybmFsLnV0aWxzLmhhc2hlc3IeAAAA2htwaXAuX2ludGVybmFsLnV0aWxzLmxvZ2dpbmdyHwAAANoYcGlwLl9pbnRlcm5hbC51dGlscy5taXNjciAAAABaHXBpcC5faW50ZXJuYWwudXRpbHMucGFja2FnaW5nciEAAABaHXBpcC5faW50ZXJuYWwudXRpbHMudW5wYWNraW5nciIAAADaGHBpcC5faW50ZXJuYWwudXRpbHMudXJsc3IjAAAA2gdfX2FsbF9fcmUAAAByLQAAAHKmAAAAcjEAAADaCEJ1aWxkVGFncqwAAAByawAAAHI2AAAAcjcAAAByeAAAAHJ5AAAAciQAAAByhQAAAHIlAAAAcu4AAAByVwAAAHI0AAAAcjQAAAByNAAAAHI1AAAA2gg8bW9kdWxlPgEAAABzYgAAAAQFCAEIAQgBCAEkAgwBDAEMAQwBDAIYBhABDAEMAQwBDAEMAQwBDAEMAQwBDAEMAQwBDAEMAQwBDAIKAwgCGAEYBhIBDisOfwALBgECAQIBEkYOEw4oDn8ATQ5/AH8AfhIa