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UhQAAAB0AwAAAG1yb3QBAAAAdCgCAAAAdAQAAABmdW5jdAgAAAByZWdpc3RyeSgAAAAAc3IAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BrZ3V0aWwucHl0BwAAAHdyYXBwZXIiAAAAcyIAAAAAAQoBAwENAQ0BEAEDAQ0BDQEDARkCEQENAREBDQEMARUCYwIAAAACAAAAAwAAABMAAABzKgAAAHwBAGQAAGsIAHIcAIcBAIcAAGYCAGQBAIYAAFN8AQCIAgCIAAA8fAEAUygCAAAATmMBAAAAAQAAAAMAAAATAAAAcw0AAACIAACIAQB8AACDAgBTKAEAAABOKAAAAAAoAQAAAHQBAAAAZigCAAAAdAgAAAByZWdpc3RlcnQDAAAAdHlwKAAAAABzcgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvcGtndXRpbC5weXQIAAAAPGxhbWJkYT49AAAAcwAAAAAoAQAAAFIQAAAAKAIAAABSJwAAAFIiAAAAKAIAAABSJgAAAFIjAAAAKAEAAABSJwAAAHNyAAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9wa2d1dGlsLnB5UiYAAAA7AAAAcwgAAAAAAQwBEAEKAU4oBwAAAFIVAAAAUhwAAABSGAAAAFIQAAAAdAgAAABfX2RpY3RfX3QHAAAAX19kb2NfX1ImAAAAKAIAAABSIgAAAFIkAAAAKAAAAAAoAwAAAFIiAAAAUiYAAABSIwAAAHNyAAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9wa2d1dGlsLnB5dA0AAABzaW1wbGVnZW5lcmljHwAAAHMWAAAAAAIGARIUAwEQARMBBAIVBgwBDAEJAXQAAAAAYwMAAAAJAAAABgAAAGMAAABzGwEAAGkAAGQBAIQBAH0DAHgIAXQAAHwAAHwBAIMCAERd9wBcAwB9BAB9BQB9BgB8BAB8BQB8BgBmAwBWAXwGAHIcAHkOAHQBAHwFAIMBAAFXblYABHQCAGsKAHJ5AAEBAXwCAGQEAGsJAHIQAXwCAHwFAIMBAAFxEAFxEwEEdAQAawoAcqUAAQEBfAIAZAQAawkAcp8AfAIAfAUAgwEAAXEQAYIAAHETAVh0BQB0BgBqBwB8BQAZZAIAZAQAgwMAcMIAZwAAfQAAZwAAfAAARF0YAH0HAHwDAHwHAIMBAHPMAHwHAF4CAHHMAH0AAHgmAHQIAHwAAHwFAGQDABd8AgCDAwBEXQsAfQgAfAgAVgFxAQFXcRwAcRwAV2QEAFMoBQAAAHO9AwAAWWllbGRzIChtb2R1bGVfbG9hZGVyLCBuYW1lLCBpc3BrZykgZm9yIGFsbCBtb2R1bGVzIHJlY3Vyc2l2ZWx5CiAgICBvbiBwYXRoLCBvciwgaWYgcGF0aCBpcyBOb25lLCBhbGwgYWNjZXNzaWJsZSBtb2R1bGVzLgoKICAgICdwYXRoJyBzaG91bGQgYmUgZWl0aGVyIE5vbmUgb3IgYSBsaXN0IG9mIHBhdGhzIHRvIGxvb2sgZm9yCiAgICBtb2R1bGVzIGluLgoKICAgICdwcmVmaXgnIGlzIGEgc3RyaW5nIHRvIG91dHB1dCBvbiB0aGUgZnJvbnQgb2YgZXZlcnkgbW9kdWxlIG5hbWUKICAgIG9uIG91dHB1dC4KCiAgICBOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBtdXN0IGltcG9ydCBhbGwgKnBhY2thZ2VzKiAoTk9UIGFsbAogICAgbW9kdWxlcyEpIG9uIHRoZSBnaXZlbiBwYXRoLCBpbiBvcmRlciB0byBhY2Nlc3MgdGhlIF9fcGF0aF9fCiAgICBhdHRyaWJ1dGUgdG8gZmluZCBzdWJtb2R1bGVzLgoKICAgICdvbmVycm9yJyBpcyBhIGZ1bmN0aW9uIHdoaWNoIGdldHMgY2FsbGVkIHdpdGggb25lIGFyZ3VtZW50ICh0aGUKICAgIG5hbWUgb2YgdGhlIHBhY2thZ2Ugd2hpY2ggd2FzIGJlaW5nIGltcG9ydGVkKSBpZiBhbnkgZXhjZXB0aW9uCiAgICBvY2N1cnMgd2hpbGUgdHJ5aW5nIHRvIGltcG9ydCBhIHBhY2thZ2UuICBJZiBubyBvbmVycm9yIGZ1bmN0aW9uIGlzCiAgICBzdXBwbGllZCwgSW1wb3J0RXJyb3JzIGFyZSBjYXVnaHQgYW5kIGlnbm9yZWQsIHdoaWxlIGFsbCBvdGhlcgogICAgZXhjZXB0aW9ucyBhcmUgcHJvcGFnYXRlZCwgdGVybWluYXRpbmcgdGhlIHNlYXJjaC4KCiAgICBFeGFtcGxlczoKCiAgICAjIGxpc3QgYWxsIG1vZHVsZXMgcHl0aG9uIGNhbiBhY2Nlc3MKICAgIHdhbGtfcGFja2FnZXMoKQoKICAgICMgbGlzdCBhbGwgc3VibW9kdWxlcyBvZiBjdHlwZXMKICAgIHdhbGtfcGFja2FnZXMoY3R5cGVzLl9fcGF0aF9fLCBjdHlwZXMuX19uYW1lX18rJy4nKQogICAgYwIAAAACAAAAAwAAAFMAAABzHgAAAHwAAHwBAGsGAHIQAHQAAFN0AAB8AQB8AAA8ZAAAUygBAAAATigBAAAAdAQAAABUcnVlKAIAAAB0AQAAAHB0AQAAAG0oAAAAACgAAAAAc3IAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BrZ3V0aWwucHl0BAAAAHNlZW5kAAAAcwYAAAAAAQwBBAF0CAAAAF9fcGF0aF9fdAEAAAAuTigJAAAAUgYAAAB0CgAAAF9faW1wb3J0X190CwAAAEltcG9ydEVycm9yUhAAAAB0CQAAAEV4Y2VwdGlvbnQHAAAAZ2V0YXR0cnQDAAAAc3lzdAcAAABtb2R1bGVzUgUAAAAoCQAAAHQEAAAAcGF0aHQGAAAAcHJlZml4dAcAAABvbmVycm9yUjAAAAB0CAAAAGltcG9ydGVydAQAAABuYW1ldAUAAABpc3BrZ1IuAAAAdAQAAABpdGVtKAAAAAAoAAAAAHNyAAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9wa2d1dGlsLnB5UgUAAABHAAAAcyIAAAAAHQwFHwEOAgYBAwEOAQ0BDAEQAQ0BDAENAgcCHwMlAh0BYwIAAAAHAAAABQAAAGMAAABziQAAAHwAAGQCAGsIAHIYAHQBAIMAAH0CAG4PAHQCAHQDAHwAAIMCAH0CAGkAAH0DAHhVAHwCAERdTQB9BAB4RAB0BAB8BAB8AQCDAgBEXTMAXAIAfQUAfQYAfAUAfAMAawcAckoAZAEAfAMAfAUAPHwEAHwFAHwGAGYDAFYBcUoAcUoAV3E0AFdkAgBTKAMAAABzJgEAAFlpZWxkcyAobW9kdWxlX2xvYWRlciwgbmFtZSwgaXNwa2cpIGZvciBhbGwgc3VibW9kdWxlcyBvbiBwYXRoLAogICAgb3IsIGlmIHBhdGggaXMgTm9uZSwgYWxsIHRvcC1sZXZlbCBtb2R1bGVzIG9uIHN5cy5wYXRoLgoKICAgICdwYXRoJyBzaG91bGQgYmUgZWl0aGVyIE5vbmUgb3IgYSBsaXN0IG9mIHBhdGhzIHRvIGxvb2sgZm9yCiAgICBtb2R1bGVzIGluLgoKICAgICdwcmVmaXgnIGlzIGEgc3RyaW5nIHRvIG91dHB1dCBvbiB0aGUgZnJvbnQgb2YgZXZlcnkgbW9kdWxlIG5hbWUKICAgIG9uIG91dHB1dC4KICAgIGkBAAAATigFAAAAUhAAAABSAgAAAHQDAAAAbWFwUgEAAAB0FQAAAGl0ZXJfaW1wb3J0ZXJfbW9kdWxlcygHAAAAUjkAAABSOgAAAHQJAAAAaW1wb3J0ZXJzdAcAAAB5aWVsZGVkdAEAAABpUj0AAABSPgAAACgAAAAAKAAAAABzcgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvcGtndXRpbC5weVIGAAAAgQAAAHMSAAAAAAsMAQwCDwIGAQ0BHAEMAQoBYwIAAAACAAAAAwAAAEMAAABzIAAAAHQAAHwAAGQBAIMCAHMTAGcAAFN8AABqAQB8AQCDAQBTKAIAAABOUgYAAAAoAgAAAHQHAAAAaGFzYXR0clIGAAAAKAIAAABSPAAAAFI6AAAAKAAAAAAoAAAAAHNyAAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0xLjAvcHl0aG9uLXJ1bnRpbWUvbGliL3B5dGhvbjIuNy9wa2d1dGlsLnB5UkEAAACaAAAAcwYAAAAAAQ8BBAFjAAAAAAAAAAACAAAAQgAAAHMyAAAAZQAAWgEAZAAAWgIAZAUAZAEAhAEAWgQAZAUAZAIAhAEAWgUAZAMAZAQAhAEAWgYAUlMoBgAAAHOFAQAAUEVQIDMwMiBJbXBvcnRlciB0aGF0IHdyYXBzIFB5dGhvbidzICJjbGFzc2ljIiBpbXBvcnQgYWxnb3JpdGhtCgogICAgSW1wSW1wb3J0ZXIoZGlybmFtZSkgcHJvZHVjZXMgYSBQRVAgMzAyIGltcG9ydGVyIHRoYXQgc2VhcmNoZXMgdGhhdAogICAgZGlyZWN0b3J5LiAgSW1wSW1wb3J0ZXIoTm9uZSkgcHJvZHVjZXMgYSBQRVAgMzAyIGltcG9ydGVyIHRoYXQgc2VhcmNoZXMKICAgIHRoZSBjdXJyZW50IHN5cy5wYXRoLCBwbHVzIGFueSBtb2R1bGVzIHRoYXQgYXJlIGZyb3plbiBvciBidWlsdC1pbi4KCiAgICBOb3RlIHRoYXQgSW1wSW1wb3J0ZXIgZG9lcyBub3QgY3VycmVudGx5IHN1cHBvcnQgYmVpbmcgdXNlZCBieSBwbGFjZW1lbnQKICAgIG9uIHN5cy5tZXRhX3BhdGguCiAgICBjAgAAAAIAAAACAAAAQwAAAHMNAAAAfAEAfAAAXwAAZAAAUygBAAAATigBAAAAUjkAAAAoAgAAAHQEAAAAc2VsZlI5AAAAKAAAAAAoAAAAAHNyAAAAL2hvbWUvdmFncmFudC9ycG1idWlsZC9CVUlMRC9idWlsZC10b29sY2hhaW4vb3B0L3Rvb2xjaGFpbnMvc3RiZ2NjLTQuOC0x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aGV5IHdpbGwgYmUgaW1wb3J0ZXJzIGZvciBzeXMubWV0YV9wYXRoLAogICAgc3lzLnBhdGgsIGFuZCBQeXRob24ncyAiY2xhc3NpYyIgaW1wb3J0IG1hY2hpbmVyeSwgaW4gdGhhdCBvcmRlci4gIElmCiAgICB0aGUgbmFtZWQgbW9kdWxlIGlzIGluIGEgcGFja2FnZSwgdGhhdCBwYWNrYWdlIGlzIGltcG9ydGVkIGFzIGEgc2lkZQogICAgZWZmZWN0IG9mIGludm9raW5nIHRoaXMgZnVuY3Rpb24uCgogICAgTm9uIFBFUCAzMDIgbWVjaGFuaXNtcyAoZS5nLiB0aGUgV2luZG93cyByZWdpc3RyeSkgdXNlZCBieSB0aGUKICAgIHN0YW5kYXJkIGltcG9ydCBtYWNoaW5lcnkgdG8gZmluZCBmaWxlcyBpbiBhbHRlcm5hdGl2ZSBsb2NhdGlvbnMKICAgIGFyZSBwYXJ0aWFsbHkgc3VwcG9ydGVkLCBidXQgYXJlIHNlYXJjaGVkIEFGVEVSIHN5cy5wYXRoLiBOb3JtYWxseSwKICAgIHRoZXNlIGxvY2F0aW9ucyBhcmUgc2VhcmNoZWQgQkVGT1JFIHN5cy5wYXRoLCBwcmV2ZW50aW5nIHN5cy5wYXRoCiAgICBlbnRyaWVzIGZyb20gc2hhZG93aW5nIHRoZW0uCgogICAgRm9yIHRoaXMgdG8gY2F1c2UgYSB2aXNpYmxlIGRpZmZlcmVuY2UgaW4gYmVoYXZpb3VyLCB0aGVyZSBtdXN0CiAgICBiZSBhIG1vZHVsZSBvciBwYWNrYWdlIG5hbWUgdGhhdCBpcyBhY2Nlc3NpYmxlIHZpYSBib3RoIHN5cy5wYXRoCiAgICBhbmQgb25lIG9mIHRoZSBub24gUEVQIDMwMiBmaWxlIHN5c3RlbSBtZWNoYW5pc21zLiBJbiB0aGlzIGNhc2UsCiAgICB0aGUgZW11bGF0aW9uIHdpbGwgZmluZCB0aGUgZm9ybWVyIHZlcnNpb24sIHdoaWxlIHRoZSBidWlsdGluCiAgICBpbXBvcnQgbWVjaGFuaXNtIHdpbGwgZmluZCB0aGUgbGF0dGVyLgoKICAgIEl0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgdHlwZXMgY2FuIGJlIGFmZmVjdGVkIGJ5IHRoaXMgZGlzY3JlcGFuY3k6CiAgICAgICAgaW1wLkNfRVhURU5TSU9OLCBpbXAuUFlfU09VUkNFLCBpbXAuUFlfQ09NUElMRUQsIGltcC5QS0dfRElSRUNUT1JZCiAgICBSMgAAAHMjAAAAUmVsYXRpdmUgbW9kdWxlIG5hbWVzIG5vdCBzdXBwb3J0ZWRp/////1IxAAAATigNAAAAUnwAAABSNAAAAFJXAAAAUkgAAABSNwAAAFI4AAAAUjMAAABSNgAAAFIQAAAAdAkAAABtZXRhX3BhdGhSOQAAAFIBAAAAUggAAAAoBQAAAFJMAAAAdAMAAABwa2dSOQAAAFI8AAAAUj8AAAAoAAAAACgAAAAAc3IAAAAvaG9tZS92YWdyYW50L3JwbWJ1aWxkL0JVSUxEL2J1aWxkLXRvb2xjaGFpbi9vcHQvdG9vbGNoYWlucy9zdGJnY2MtNC44LTEuMC9weXRob24tcnVudGltZS9saWIvcHl0aG9uMi43L3BrZ3V0aWwucHlSAgAAAJABAABzHAAAAAAYDwEPAQwCHAEPAQ0BIgIQAQkBCQENAQ8BDAFjAQAAAAQAAAAEAAAAQwAAAHNyAAAAfAAAdAAAagEAawYAch8AdAAAagEAfAAAGX0AAG4AAHQCAHwAAHQDAIMCAHJiAHwAAH0BAHQEAHwBAGQBAGQCAIMDAH0CAHwCAGQCAGsJAHJWAHwCAFN8AQBqBgB9AwBuBgB8AAB9AwB0BwB8AwCDAQBTKAMAAABzRAIAAEdldCBhIFBFUCAzMDIgImxvYWRlciIgb2JqZWN0IGZvciBtb2R1bGVfb3JfbmFtZQoKICAgIElmIHRoZSBtb2R1bGUgb3IgcGFja2FnZSBpcyBhY2Nlc3NpYmxlIHZpYSB0aGUgbm9ybWFsIGltcG9ydAogICAgbWVjaGFuaXNtLCBhIHdyYXBwZXIgYXJvdW5kIHRoZSByZWxldmFudCBwYXJ0IG9mIHRoYXQgbWFjaGluZXJ5CiAgICBpcyByZXR1cm5lZC4gIFJldHVybnMgTm9uZSBpZiB0aGUgbW9kdWxlIGNhbm5vdCBiZSBmb3VuZCBvciBpbXBvcnRlZC4KICAgIElmIHRoZSBuYW1lZCBtb2R1bGUgaXMgbm90IGFscmVhZHkgaW1wb3J0ZWQsIGl0cyBjb250YWluaW5nIHBhY2thZ2UKICAgIChpZiBhbnkpIGlzIGltcG9ydGVkLCBpbiBvcmRlciB0byBlc3RhYmxpc2ggdGhlIHBhY2thZ2UgX19wYXRoX18uCgogICAgVGhpcyBmdW5jdGlvbiB1c2VzIGl0ZXJfaW1wb3J0ZXJzKCksIGFuZCBpcyB0aHVzIHN1YmplY3QgdG8gdGhlIHNhbWUKICAgIGxpbWl0YXRpb25zIHJlZ2FyZGluZyBwbGF0Zm9ybS1zcGVjaWZpYyBzcGVjaWFsIGltcG9ydCBsb2NhdGlvbnMgc3VjaAogICAgYXMgdGhlIFdpbmRvd3MgcmVnaXN0cnkuCiAgICB0CgAAAF9fbG9hZGVyX19OKAgAAABSNwAAAFI4AAAAdAoAAABpc2luc3RhbmNlUgAAAABSNgAAAFIQAAAAUhUAAABSBAAAACgEAAAAdA4AAABtb2R1bGVfb3JfbmFtZXQGAAAAbW9kdWxldAYAAABsb2FkZXJSTAAAACgAAAAAKAAAAABzcgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvcGtndXRpbC5weVIDAAAAuQEAAHMUAAAAAA0PARABDwEGARIBDAEEAQwCBgFjAQAAAAMAAAADAAAAQwAAAHM6AAAAeDMAdAAAfAAAgwEARF0lAH0BAHwBAGoBAHwAAIMBAH0CAHwCAGQBAGsJAHINAHwCAFNxDQBXZAEAUygCAAAAc2gBAABGaW5kIGEgUEVQIDMwMiAibG9hZGVyIiBvYmplY3QgZm9yIGZ1bGxuYW1lCgogICAgSWYgZnVsbG5hbWUgY29udGFpbnMgZG90cywgcGF0aCBtdXN0IGJlIHRoZSBjb250YWluaW5nIHBhY2thZ2UncyBfX3BhdGhfXy4KICAgIFJldHVybnMgTm9uZSBpZiB0aGUgbW9kdWxlIGNhbm5vdCBiZSBmb3VuZCBvciBpbXBvcnRlZC4gVGhpcyBmdW5jdGlvbiB1c2VzCiAgICBpdGVyX2ltcG9ydGVycygpLCBhbmQgaXMgdGh1cyBzdWJqZWN0IHRvIHRoZSBzYW1lIGxpbWl0YXRpb25zIHJlZ2FyZGluZwogICAgcGxhdGZvcm0tc3BlY2lmaWMgc3BlY2lhbCBpbXBvcnQgbG9jYXRpb25zIHN1Y2ggYXMgdGhlIFdpbmRvd3MgcmVnaXN0cnkuCiAgICBOKAMAAABSAgAAAFJLAAAAUhAAAAAoAwAAAFJMAAAAUjwAAABSjgAAACgAAAAAKAAAAABzcgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvcGtndXRpbC5weVIEAAAA0gEAAHMKAAAAAAgTAQ8BDAEIAmMCAAAADQAAAAgAAABDAAAAc8gBAAB0AAB8AAB0AQCDAgBzEwB8AABTdAIAagMAagQAfAEAagUAZAEAgwEAjAAAfQIAdAIAagYAagQAfAEAagUAZAEAgwEAgwEAfQMAfAMAdAIAagYAF2QCABd9BABkAwB0AgBqBgAXZAQAF30FAHwAAB59AAB4TwF0BwBqAwBEXUQBfQYAdAAAfAYAdAgAgwIADHN8AHQCAGoDAGoJAHwGAIMBAAxyqwBxfABuAAB0AgBqAwBqBAB8BgB8AgCDAgB9BwB0AgBqAwBqBAB8BwB8BQCDAgB9CAB8BwB8AABrBwByAwF0AgBqAwBqCgB8CACDAQByAwF8AABqCwB8BwCDAQABbgAAdAIAagMAagQAfAYAfAQAgwIAfQkAdAIAagMAagoAfAkAgwEAcnwAeRAAdAwAfAkAgwEAfQoAV24tAAR0DQBrCgByaQEBfQsAAXQHAGoOAGoPAGQFAHwJAHwLAGYCABaDAQABccABWHhGAHwKAERdPgB9DAB8DABqEABkBgCDAQB9DAB8DAAMc3EBfAwAahEAZAcAgwEAcqIBcXEBbgAAfAAAagsAfAwAgwEAAXFxAVd8CgBqEgCDAAABcXwAcXwAV3wAAFMoCAAAAHOLBQAARXh0ZW5kIGEgcGFja2FnZSdzIHBhdGguCgogICAgSW50ZW5kZWQgdXNlIGlzIHRvIHBsYWNlIHRoZSBmb2xsb3dpbmcgY29kZSBpbiBhIHBhY2thZ2UncyBfX2luaXRfXy5weToKCiAgICAgICAgZnJvbSBwa2d1dGlsIGltcG9ydCBleHRlbmRfcGF0aAogICAgICAgIF9fcGF0aF9fID0gZXh0ZW5kX3BhdGgoX19wYXRoX18sIF9fbmFtZV9fKQoKICAgIFRoaXMgd2lsbCBhZGQgdG8gdGhlIHBhY2thZ2UncyBfX3BhdGhfXyBhbGwgc3ViZGlyZWN0b3JpZXMgb2YKICAgIGRpcmVjdG9yaWVzIG9uIHN5cy5wYXRoIG5hbWVkIGFmdGVyIHRoZSBwYWNrYWdlLiAgVGhpcyBpcyB1c2VmdWwKICAgIGlmIG9uZSB3YW50cyB0byBkaXN0cmlidXRlIGRpZmZlcmVudCBwYXJ0cyBvZiBhIHNpbmdsZSBsb2dpY2FsCiAgICBwYWNrYWdlIGFzIG11bHRpcGxlIGRpcmVjdG9yaWVzLgoKICAgIEl0IGFsc28gbG9va3MgZm9yICoucGtnIGZpbGVzIGJlZ2lubmluZyB3aGVyZSAqIG1hdGNoZXMgdGhlIG5hbWUKICAgIGFyZ3VtZW50LiAgVGhpcyBmZWF0dXJlIGlzIHNpbWlsYXIgdG8gKi5wdGggZmlsZXMgKHNlZSBzaXRlLnB5KSwKICAgIGV4Y2VwdCB0aGF0IGl0IGRvZXNuJ3Qgc3BlY2lhbC1jYXNlIGxpbmVzIHN0YXJ0aW5nIHdpdGggJ2ltcG9ydCcuCiAgICBBICoucGtnIGZpbGUgaXMgdHJ1c3RlZCBhdCBmYWNlIHZhbHVlOiBhcGFydCBmcm9tIGNoZWNraW5nIGZvcgogICAgZHVwbGljYXRlcywgYWxsIGVudHJpZXMgZm91bmQgaW4gYSAqLnBrZyBmaWxlIGFyZSBhZGRlZCB0byB0aGUKICAgIHBhdGgsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGV5IGFyZSBleGlzdCB0aGUgZmlsZXN5c3RlbS4gIChUaGlzCiAgICBpcyBhIGZlYXR1cmUuKQoKICAgIElmIHRoZSBpbnB1dCBwYXRoIGlzIG5vdCBhIGxpc3QgKGFzIGlzIHRoZSBjYXNlIGZvciBmcm96ZW4KICAgIHBhY2thZ2VzKSBpdCBpcyByZXR1cm5lZCB1bmNoYW5nZWQuICBUaGUgaW5wdXQgcGF0aCBpcyBub3QKICAgIG1vZGlmaWVkOyBhbiBleHRlbmRlZCBjb3B5IGlzIHJldHVybmVkLiAgSXRlbXMgYXJlIG9ubHkgYXBwZW5kZWQKICAgIHRvIHRoZSBjb3B5IGF0IHRoZSBlbmQuCgogICAgSXQgaXMgYXNzdW1lZCB0aGF0IHN5cy5wYXRoIGlzIGEgc2VxdWVuY2UuICBJdGVtcyBvZiBzeXMucGF0aCB0aGF0CiAgICBhcmUgbm90ICh1bmljb2RlIG9yIDgtYml0KSBzdHJpbmdzIHJlZmVycmluZyB0byBleGlzdGluZwogICAgZGlyZWN0b3JpZXMgYXJlIGlnbm9yZWQuICBVbmljb2RlIGl0ZW1zIG9mIHN5cy5wYXRoIHRoYXQgY2F1c2UKICAgIGVycm9ycyB3aGVuIHVzZWQgYXMgZmlsZW5hbWVzIG1heSBjYXVzZSB0aGlzIGZ1bmN0aW9uIHRvIHJhaXNlIGFuCiAgICBleGNlcHRpb24gKGluIGxpbmUgd2l0aCBvcy5wYXRoLmlzZGlyKCkgYmVoYXZpb3IpLgogICAgUjIAAABSiQAAAFJHAAAAdAIAAABweXMSAAAAQ2FuJ3Qgb3BlbiAlczogJXMKcwEAAAAKdAEAAAAjKBMAAABSiwAAAHQEAAAAbGlzdFJJAAAAUjkAAABSVwAAAFJIAAAAdAYAAABleHRzZXBSNwAAAHQKAAAAYmFzZXN0cmluZ1JRAAAAdAYAAABpc2ZpbGV0BgAAAGFwcGVuZFJiAAAAdAcAAABJT0Vycm9ydAYAAABzdGRlcnJ0BQAAAHdyaXRldAYAAAByc3RyaXBSfAAAAFJfAAAAKA0AAABSOQAAAFI9AAAAdAUAAABwbmFtZXQFAAAAc25hbWV0CQAAAHNuYW1lX3BrZ3QHAAAAaW5pdF9weXQDAAAAZGlydAYAAABzdWJkaXJ0CAAAAGluaXRmaWxldAcAAABwa2dmaWxlUiUAAAB0AwAAAG1zZ3QEAAAAbGluZSgAAAAAKAAAAABzcgAAAC9ob21lL3ZhZ3JhbnQvcnBtYnVpbGQvQlVJTEQvYnVpbGQtdG9vbGNoYWluL29wdC90b29sY2hhaW5zL3N0YmdjYy00LjgtMS4wL3B5dGhvbi1ydW50aW1lL2xpYi9weXRob24yLjcvcGtndXRpbC5weVILAAAA4gEAAHM4AAAAACEPAwQCGwIbAREB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