A/MNCktcrFFjAAAAAAAAAAADAAAAQAAAAHO8AAAAZAAAWgAAZAEAZAIAbAEAVGQBAGQDAGwBAG0CAFoCAAFkBABkBQBkBgCEAgBaAwBkBwCEAABaBABlBQBlBgBkCACEAgBaBwBkCQCEAABaCABkCgCEAABaCQBkCwBkDACEAQBaCgBkDQCEAABaCwBkDgCEAABaDABlBQBkDwCEAQBaDQBkEACEAABaDgBkEQBlDwBmAQBkEgCEAACDAABZWhAAZBMAZRAAZgEAZBQAhAAAgwAAWVoRAGQVAFMoFgAAAHNIBAAACiAgICBhc3QKICAgIH5+fgoKICAgIFRoZSBgYXN0YCBtb2R1bGUgaGVscHMgUHl0aG9uIGFwcGxpY2F0aW9ucyB0byBwcm9jZXNzIHRyZWVzIG9mIHRoZSBQeXRob24KICAgIGFic3RyYWN0IHN5bnRheCBncmFtbWFyLiAgVGhlIGFic3RyYWN0IHN5bnRheCBpdHNlbGYgbWlnaHQgY2hhbmdlIHdpdGgKICAgIGVhY2ggUHl0aG9uIHJlbGVhc2U7IHRoaXMgbW9kdWxlIGhlbHBzIHRvIGZpbmQgb3V0IHByb2dyYW1tYXRpY2FsbHkgd2hhdAogICAgdGhlIGN1cnJlbnQgZ3JhbW1hciBsb29rcyBsaWtlIGFuZCBhbGxvd3MgbW9kaWZpY2F0aW9ucyBvZiBpdC4KCiAgICBBbiBhYnN0cmFjdCBzeW50YXggdHJlZSBjYW4gYmUgZ2VuZXJhdGVkIGJ5IHBhc3NpbmcgYGFzdC5QeUNGX09OTFlfQVNUYCBhcwogICAgYSBmbGFnIHRvIHRoZSBgY29tcGlsZSgpYCBidWlsdGluIGZ1bmN0aW9uIG9yIGJ5IHVzaW5nIHRoZSBgcGFyc2UoKWAKICAgIGZ1bmN0aW9uIGZyb20gdGhpcyBtb2R1bGUuICBUaGUgcmVzdWx0IHdpbGwgYmUgYSB0cmVlIG9mIG9iamVjdHMgd2hvc2UKICAgIGNsYXNzZXMgYWxsIGluaGVyaXQgZnJvbSBgYXN0LkFTVGAuCgogICAgQSBtb2RpZmllZCBhYnN0cmFjdCBzeW50YXggdHJlZSBjYW4gYmUgY29tcGlsZWQgaW50byBhIFB5dGhvbiBjb2RlIG9iamVjdAogICAgdXNpbmcgdGhlIGJ1aWx0LWluIGBjb21waWxlKClgIGZ1bmN0aW9uLgoKICAgIEFkZGl0aW9uYWxseSB2YXJpb3VzIGhlbHBlciBmdW5jdGlvbnMgYXJlIHByb3ZpZGVkIHRoYXQgbWFrZSB3b3JraW5nIHdpdGgKICAgIHRoZSB0cmVlcyBzaW1wbGVyLiAgVGhlIG1haW4gaW50ZW50aW9uIG9mIHRoZSBoZWxwZXIgZnVuY3Rpb25zIGFuZCB0aGlzCiAgICBtb2R1bGUgaW4gZ2VuZXJhbCBpcyB0byBwcm92aWRlIGFuIGVhc3kgdG8gdXNlIGludGVyZmFjZSBmb3IgbGlicmFyaWVzCiAgICB0aGF0IHdvcmsgdGlnaHRseSB3aXRoIHRoZSBweXRob24gc3ludGF4ICh0ZW1wbGF0ZSBlbmdpbmVzIGZvciBleGFtcGxlKS4KCgogICAgOmNvcHlyaWdodDogQ29weXJpZ2h0IDIwMDggYnkgQXJtaW4gUm9uYWNoZXIuCiAgICA6bGljZW5zZTogUHl0aG9uIExpY2Vuc2UuCmn/////KAEAAAB0AQAAACooAQAAAHQLAAAAX192ZXJzaW9uX19zCQAAADx1bmtub3duPnQEAAAAZXhlY2MDAAAAAwAAAAUAAABDAAAAcxMAAAB0AAB8AAB8AQB8AgB0AQCDBABTKAEAAABzbgAAAAogICAgUGFyc2UgdGhlIHNvdXJjZSBpbnRvIGFuIEFTVCBub2RlLgogICAgRXF1aXZhbGVudCB0byBjb21waWxlKHNvdXJjZSwgZmlsZW5hbWUsIG1vZGUsIFB5Q0ZfT05MWV9BU1QpLgogICAgKAIAAAB0BwAAAGNvbXBpbGV0DQAAAFB5Q0ZfT05MWV9BU1QoAwAAAHQGAAAAc291cmNldAgAAABmaWxlbmFtZXQEAAAAbW9kZSgAAAAAKAAAAABzSwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2FzdC5weXQFAAAAcGFyc2UgAAAAcwIAAAAABWMBAAAAAQAAAAQAAAADAAAAc3YAAABpAwBkBwBkAQA2dAEAZAIANnQCAGQDADaJAQB0AwB8AAB0BACDAgByPwB0BQB8AABkBABkBQCDAQF9AABuAAB0AwB8AAB0BgCDAgByWgB8AABqBwB9AABuAACHAACHAQBmAgBkBgCGAACJAACIAAB8AACDAQBTKAgAAABz+gAAAAogICAgU2FmZWx5IGV2YWx1YXRlIGFuIGV4cHJlc3Npb24gbm9kZSBvciBhIHN0cmluZyBjb250YWluaW5nIGEgUHl0aG9uCiAgICBleHByZXNzaW9uLiAgVGhlIHN0cmluZyBvciBub2RlIHByb3ZpZGVkIG1heSBvbmx5IGNvbnNpc3Qgb2YgdGhlIGZvbGxvd2luZwogICAgUHl0aG9uIGxpdGVyYWwgc3RydWN0dXJlczogc3RyaW5ncywgbnVtYmVycywgdHVwbGVzLCBsaXN0cywgZGljdHMsIGJvb2xlYW5zLAogICAgYW5kIE5vbmUuCiAgICB0BAAAAE5vbmV0BAAAAFRydWV0BQAAAEZhbHNlUgcAAAB0BAAAAGV2YWxjAQAAAAMAAAAKAAAAEwAAAHOlAQAAdAAAfAAAdAEAgwIAchYAfAAAagIAU3QAAHwAAHQDAIMCAHIsAHwAAGoEAFN0AAB8AAB0BQCDAgByUQB0BgB0BwCIAAB8AABqCACDAgCDAQBTdAAAfAAAdAkAgwIAcnYAdAoAdAcAiAAAfAAAaggAgwIAgwEAU3QAAHwAAHQLAIMCAHKuAHQMAIcAAGYBAGQBAIYAAHQNAHwAAGoOAHwAAGoPAIMCAESDAQCDAQBTdAAAfAAAdBAAgwIActoAfAAAahEAiAEAawYAcpUBiAEAfAAAahEAGVNuuwB0AAB8AAB0EgCDAgBylQF0AAB8AABqEwB0FAB0FQBmAgCDAgBylQF0AAB8AABqFgB0AwCDAgBylQF0AAB8AABqFgBqBAB0FwCDAgBylQF0AAB8AABqGAB0AwCDAgBylQF0AAB8AABqGABqBAB0GQB0GgB0GwBmAwCDAgBylQF8AABqGABqBAB9AQB8AABqFgBqBAB9AgB0AAB8AABqEwB0FACDAgByigF8AQB8AgAXU3wBAHwCABhTbgAAdBwAZAIAgwEAggEAZAAAUygDAAAATmMBAAAAAwAAAAQAAAAzAAAAcy0AAAB8AABdIwBcAgB9AQB9AgCIAAB8AQCDAQCIAAB8AgCDAQBmAgBWAXEDAGQAAFMoAQAAAE4oAAAAACgDAAAAdAIAAAAuMHQBAAAAa3QBAAAAdigBAAAAdAgAAABfY29udmVydCgAAAAAc0sAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9hc3QucHlzCQAAADxnZW5leHByPj4AAABzAgAAAAYAcxAAAABtYWxmb3JtZWQgc3RyaW5nKB0AAAB0CgAAAGlzaW5zdGFuY2V0AwAAAFN0cnQBAAAAc3QDAAAATnVtdAEAAABudAUAAABUdXBsZXQFAAAAdHVwbGV0AwAAAG1hcHQEAAAAZWx0c3QEAAAATGlzdHQEAAAAbGlzdHQEAAAARGljdHQEAAAAZGljdHQDAAAAemlwdAQAAABrZXlzdAYAAAB2YWx1ZXN0BAAAAE5hbWV0AgAAAGlkdAUAAABCaW5PcHQCAAAAb3B0AwAAAEFkZHQDAAAAU3VidAUAAAByaWdodHQHAAAAY29tcGxleHQEAAAAbGVmdHQDAAAAaW50dAQAAABsb25ndAUAAABmbG9hdHQKAAAAVmFsdWVFcnJvcigDAAAAdAQAAABub2RlUikAAABSJwAAACgCAAAAUhAAAAB0CwAAAF9zYWZlX25hbWVzKAAAAABzSwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2FzdC5weVIQAAAANAAAAHM0AAAAAAEPAQcBDwEHAQ8BFgEPARYBDwEPARoBDwEPAQ4BDwEYARIBFQESAR4BDAEMARIBCAILAU4oCAAAAFIJAAAAUgoAAABSCwAAAFIRAAAAdAoAAABiYXNlc3RyaW5nUggAAAB0CgAAAEV4cHJlc3Npb250BAAAAGJvZHkoAQAAAHQOAAAAbm9kZV9vcl9zdHJpbmcoAAAAACgCAAAAUhAAAABSLwAAAHNLAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvYXN0LnB5dAwAAABsaXRlcmFsX2V2YWwoAAAAcw4AAAAABxsBDwEVAQ8BDAESHGMDAAAAAwAAAAMAAAADAAAAc0cAAACHAACHAQCHAgBmAwBkAQCGAACJAAB0AAB8AAB0AQCDAgBzPQB0AgBkAgB8AABqAwBqBAAWgwEAggEAbgAAiAAAfAAAgwEAUygDAAAAc7sBAAAKICAgIFJldHVybiBhIGZvcm1hdHRlZCBkdW1wIG9mIHRoZSB0cmVlIGluICpub2RlKi4gIFRoaXMgaXMgbWFpbmx5IHVzZWZ1bCBmb3IKICAgIGRlYnVnZ2luZyBwdXJwb3Nlcy4gIFRoZSByZXR1cm5lZCBzdHJpbmcgd2lsbCBzaG93IHRoZSBuYW1lcyBhbmQgdGhlIHZhbHVlcwogICAgZm9yIGZpZWxkcy4gIFRoaXMgbWFrZXMgdGhlIGNvZGUgaW1wb3NzaWJsZSB0byBldmFsdWF0ZSwgc28gaWYgZXZhbHVhdGlvbiBpcwogICAgd2FudGVkICphbm5vdGF0ZV9maWVsZHMqIG11c3QgYmUgc2V0IHRvIEZhbHNlLiAgQXR0cmlidXRlcyBzdWNoIGFzIGxpbmUKICAgIG51bWJlcnMgYW5kIGNvbHVtbiBvZmZzZXRzIGFyZSBub3QgZHVtcGVkIGJ5IGRlZmF1bHQuICBJZiB0aGlzIGlzIHdhbnRlZCwKICAgICppbmNsdWRlX2F0dHJpYnV0ZXMqIGNhbiBiZSBzZXQgdG8gVHJ1ZS4KICAgIGMBAAAABQAAAAcAAAATAAAAcxIBAAB0AACIAAB0AQCDAgBy2ABnAAB0AgCIAACDAQBEXR4AXAIAfQEAfQIAfAEAiAEAfAIAgwEAZgIAXgIAcRwAfQMAZAEAiAAAagMAagQAZAIAagUAiAIAcmgAZAMAhAAAfAMARIMBAG4NAGQEAIQAAHwDAESDAQCDAQBmAgAWfQQAiAMActAAiAAAagYActAAfAQAfAMAcp0AZAIAcKAAZAUAN30EAHwEAGQCAGoFAIcBAIcAAGYCAGQGAIYAAIgAAGoGAESDAQCDAQA3fQQAbgAAfAQAZAcAF1N0AACIAAB0BwCDAgByCAFkCABkAgBqBQCHAQBmAQBkCQCGAACIAABEgwEAgwEAFlN0CACIAACDAQBTKAoAAABOcwUAAAAlcyglc3MCAAAALCBjAQAAAAIAAAADAAAAcwAAAHMZAAAAfAAAXQ8AfQEAZAAAfAEAFlYBcQMAZAEAUygCAAAAcwUAAAAlcz0lc04oAAAAACgCAAAAUg0AAAB0BQAAAGZpZWxkKAAAAAAoAAAAAHNLAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvYXN0LnB5cwkAAAA8Z2VuZXhwcj5gAAAAcwIAAAAGAGMBAAAAAwAAAAMAAABzAAAAcxsAAAB8AABdEQBcAgB9AQB9AgB8AgBWAXEDAGQAAFMoAQAAAE4oAAAAACgDAAAAUg0AAAB0AQAAAGF0AQAAAGIoAAAAACgAAAAAc0sAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9hc3QucHlzCQAAADxnZW5leHByPmIAAABzAgAAAAYAdAEAAAAgYwEAAAACAAAABwAAADMAAABzLgAAAHwAAF0kAH0BAGQAAHwBAIgAAHQAAIgBAHwBAIMCAIMBAGYCABZWAXEDAGQBAFMoAgAAAHMFAAAAJXM9JXNOKAEAAAB0BwAAAGdldGF0dHIoAgAAAFINAAAAUjYAAAAoAgAAAHQHAAAAX2Zvcm1hdFIuAAAAKAAAAABzSwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2FzdC5weXMJAAAAPGdlbmV4cHI+ZgAAAHMCAAAABgF0AQAAAClzBAAAAFslc11jAQAAAAIAAAADAAAAMwAAAHMbAAAAfAAAXREAfQEAiAAAfAEAgwEAVgFxAwBkAABTKAEAAABOKAAAAAAoAgAAAFINAAAAdAEAAAB4KAEAAABSOgAAACgAAAAAc0sAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9hc3QucHlzCQAAADxnZW5leHByPmoAAABzAgAAAAYAKAkAAABSEQAAAHQDAAAAQVNUdAsAAABpdGVyX2ZpZWxkc3QJAAAAX19jbGFzc19fdAgAAABfX25hbWVfX3QEAAAAam9pbnQLAAAAX2F0dHJpYnV0ZXNSGwAAAHQEAAAAcmVwcigFAAAAUi4AAABSNgAAAFI3AAAAdAYAAABmaWVsZHN0AgAAAHJ2KAMAAABSOgAAAHQPAAAAYW5ub3RhdGVfZmllbGRzdBIAAABpbmNsdWRlX2F0dHJpYnV0ZXMoAQAAAFIuAAAAc0sAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9hc3QucHlSOgAAAFwAAABzGgAAAAABDwExARICFgEXAg8BFgEYARQBCAEPASEBcxQAAABleHBlY3RlZCBBU1QsIGdvdCAlcigFAAAAUhEAAABSPQAAAHQJAAAAVHlwZUVycm9yUj8AAABSQAAAACgDAAAAUi4AAABSRgAAAFJHAAAAKAAAAAAoAwAAAFI6AAAAUkYAAABSRwAAAHNLAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvYXN0LnB5dAQAAABkdW1wUwAAAHMIAAAAAAkVEA8BGQFjAgAAAAMAAAAJAAAAQwAAAHNeAAAAeFcAZAMARF1PAH0CAHwCAHwBAGoAAGsGAHIHAHwCAHwAAGoAAGsGAHIHAHQBAHwBAHwCAIMCAHIHAHQCAHwAAHwCAHQDAHwBAHwCAIMCAIMDAAFxBwBxBwBXfAAAUygEAAAAc4sAAAAKICAgIENvcHkgc291cmNlIGxvY2F0aW9uIChgbGluZW5vYCBhbmQgYGNvbF9vZmZzZXRgIGF0dHJpYnV0ZXMpIGZyb20KICAgICpvbGRfbm9kZSogdG8gKm5ld19ub2RlKiBpZiBwb3NzaWJsZSwgYW5kIHJldHVybiAqbmV3X25vZGUqLgogICAgdAYAAABsaW5lbm90CgAAAGNvbF9vZmZzZXQoAgAAAHMGAAAAbGluZW5vcwoAAABjb2xfb2Zmc2V0KAQAAABSQgAAAHQHAAAAaGFzYXR0cnQHAAAAc2V0YXR0clI5AAAAKAMAAAB0CAAAAG5ld19ub2RldAgAAABvbGRfbm9kZXQEAAAAYXR0cigAAAAAKAAAAABzSwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2FzdC5weXQNAAAAY29weV9sb2NhdGlvbnEAAABzCgAAAAAFDQEeAQ8BIAFjAQAAAAEAAAAEAAAAAwAAAHMjAAAAhwAAZgEAZAEAhgAAiQAAiAAAfAAAZAIAZAMAgwMAAXwAAFMoBAAAAHN7AQAACiAgICBXaGVuIHlvdSBjb21waWxlIGEgbm9kZSB0cmVlIHdpdGggY29tcGlsZSgpLCB0aGUgY29tcGlsZXIgZXhwZWN0cyBsaW5lbm8gYW5kCiAgICBjb2xfb2Zmc2V0IGF0dHJpYnV0ZXMgZm9yIGV2ZXJ5IG5vZGUgdGhhdCBzdXBwb3J0cyB0aGVtLiAgVGhpcyBpcyByYXRoZXIKICAgIHRlZGlvdXMgdG8gZmlsbCBpbiBmb3IgZ2VuZXJhdGVkIG5vZGVzLCBzbyB0aGlzIGhlbHBlciBhZGRzIHRoZXNlIGF0dHJpYnV0ZXMKICAgIHJlY3Vyc2l2ZWx5IHdoZXJlIG5vdCBhbHJlYWR5IHNldCwgYnkgc2V0dGluZyB0aGVtIHRvIHRoZSB2YWx1ZXMgb2YgdGhlCiAgICBwYXJlbnQgbm9kZS4gIEl0IHdvcmtzIHJlY3Vyc2l2ZWx5IHN0YXJ0aW5nIGF0ICpub2RlKi4KICAgIGMDAAAABAAAAAUAAAATAAAAc5cAAABkAQB8AABqAABrBgByNgB0AQB8AABkAQCDAgBzKgB8AQB8AABfAgBxNgB8AABqAgB9AQBuAABkAgB8AABqAABrBgBybAB0AQB8AABkAgCDAgBzYAB8AgB8AABfAwBxbAB8AABqAwB9AgBuAAB4JAB0BAB8AACDAQBEXRYAfQMAiAAAfAMAfAEAfAIAgwMAAXF5AFdkAABTKAMAAABOUkoAAABSSwAAACgFAAAAUkIAAABSTAAAAFJKAAAAUksAAAB0EAAAAGl0ZXJfY2hpbGRfbm9kZXMoBAAAAFIuAAAAUkoAAABSSwAAAHQFAAAAY2hpbGQoAQAAAHQEAAAAX2ZpeCgAAAAAc0sAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9hc3QucHlSVAAAAIUAAABzFAAAAAABDwEPAQwCDAEPAQ8BDAIMARMBaQEAAABpAAAAACgAAAAAKAEAAABSLgAAACgAAAAAKAEAAABSVAAAAHNLAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvYXN0LnB5dBUAAABmaXhfbWlzc2luZ19sb2NhdGlvbnN9AAAAcwYAAAAACA8NEAFpAQAAAGMCAAAAAwAAAAUAAABDAAAAc0YAAAB4PwB0AAB8AACDAQBEXTEAfQIAZAEAfAIAagEAawYAcg0AdAIAfAIAZAEAZAIAgwMAfAEAF3wCAF8DAHENAHENAFd8AABTKAMAAABznAAAAAogICAgSW5jcmVtZW50IHRoZSBsaW5lIG51bWJlciBvZiBlYWNoIG5vZGUgaW4gdGhlIHRyZWUgc3RhcnRpbmcgYXQgKm5vZGUqIGJ5ICpuKi4KICAgIFRoaXMgaXMgdXNlZnVsIHRvICJtb3ZlIGNvZGUiIHRvIGEgZGlmZmVyZW50IGxvY2F0aW9uIGluIGEgZmlsZS4KICAgIFJKAAAAaQAAAAAoBAAAAHQEAAAAd2Fsa1JCAAAAUjkAAABSSgAAACgDAAAAUi4AAABSFQAAAFJTAAAAKAAAAAAoAAAAAHNLAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvYXN0LnB5dBAAAABpbmNyZW1lbnRfbGluZW5vlgAAAHMIAAAAAAUTAQ8BIAFjAQAAAAIAAAAGAAAAYwAAAHNEAAAAeD0AfAAAagAARF0yAH0BAHkYAHwBAHQBAHwAAHwBAIMCAGYCAFYBV3EKAAR0AgBrCgByOwABAQFxCgBYcQoAV2QBAFMoAgAAAHNzAAAACiAgICBZaWVsZCBhIHR1cGxlIG9mIGBgKGZpZWxkbmFtZSwgdmFsdWUpYGAgZm9yIGVhY2ggZmllbGQgaW4gYGBub2RlLl9maWVsZHNgYAogICAgdGhhdCBpcyBwcmVzZW50IG9uICpub2RlKi4KICAgIE4oAwAAAHQHAAAAX2ZpZWxkc1I5AAAAdA4AAABBdHRyaWJ1dGVFcnJvcigCAAAAUi4AAABSNQAAACgAAAAAKAAAAABzSwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2FzdC5weVI+AAAAoQAAAHMKAAAAAAUQAQMBGAENAWMBAAAABAAAAAUAAABjAAAAc3IAAAB4awB0AAB8AACDAQBEXV0AXAIAfQEAfQIAdAEAfAIAdAIAgwIAcjAAfAIAVgFxDQB0AQB8AgB0AwCDAgByDQB4KAB8AgBEXR0AfQMAdAEAfAMAdAIAgwIAckYAfAMAVgFxRgBxRgBXcQ0AcQ0AV2QBAFMoAgAAAHOJAAAACiAgICBZaWVsZCBhbGwgZGlyZWN0IGNoaWxkIG5vZGVzIG9mICpub2RlKiwgdGhhdCBpcywgYWxsIGZpZWxkcyB0aGF0IGFyZSBub2RlcwogICAgYW5kIGFsbCBpdGVtcyBvZiBmaWVsZHMgdGhhdCBhcmUgbGlzdHMgb2Ygbm9kZXMuCiAgICBOKAQAAABSPgAAAFIRAAAAUj0AAABSGwAAACgEAAAAUi4AAAB0BAAAAG5hbWVSNQAAAHQEAAAAaXRlbSgAAAAAKAAAAABzSwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2FzdC5weVJSAAAArQAAAHMOAAAAAAUZAQ8BCAEPAQ0BDwFjAgAAAAMAAAAFAAAAQwAAAHOqAAAAdAAAfAAAdAEAdAIAdAMAZgMAgwIAczEAdAQAZAEAfAAAagUAagYAFoMBAIIBAG4AAHwAAGoHAHKmAHQAAHwAAGoHAGQCABl0CACDAgBypgB0AAB8AABqBwBkAgAZagkAdAoAgwIAcqYAfAEAcpUAZAMAZAQAbAsAfQIAfAIAagwAfAAAagcAZAIAGWoJAGoNAIMBAFN8AABqBwBkAgAZagkAag0AU2QEAFMoBQAAAHOqAAAACiAgICBSZXR1cm4gdGhlIGRvY3N0cmluZyBmb3IgdGhlIGdpdmVuIG5vZGUgb3IgTm9uZSBpZiBubyBkb2NzdHJpbmcgY2FuCiAgICBiZSBmb3VuZC4gIElmIHRoZSBub2RlIHByb3ZpZGVkIGRvZXMgbm90IGhhdmUgZG9jc3RyaW5ncyBhIFR5cGVFcnJvcgogICAgd2lsbCBiZSByYWlzZWQuCiAgICBzGAAAACVyIGNhbid0IGhhdmUgZG9jc3RyaW5nc2kAAAAAaf////9OKA4AAABSEQAAAHQLAAAARnVuY3Rpb25EZWZ0CAAAAENsYXNzRGVmdAYAAABNb2R1bGVSSAAAAFI/AAAAUkAAAABSMgAAAHQEAAAARXhwcnQFAAAAdmFsdWVSEgAAAHQHAAAAaW5zcGVjdHQIAAAAY2xlYW5kb2NSEwAAACgDAAAAUi4AAAB0BQAAAGNsZWFuUmEAAAAoAAAAACgAAAAAc0sAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9hc3QucHl0DQAAAGdldF9kb2NzdHJpbme7AAAAcxAAAAAABhgBGQEfARkBBgEMARoBYwEAAAADAAAAAwAAAGMAAABzVAAAAGQBAGQCAGwAAG0BAH0BAAF8AQB8AABnAQCDAQB9AgB4LgB8AgByTwB8AgBqAgCDAAB9AAB8AgBqAwB0BAB8AACDAQCDAQABfAAAVgFxIgBXZAMAUygEAAAAc+UAAAAKICAgIFJlY3Vyc2l2ZWx5IHlpZWxkIGFsbCBkZXNjZW5kYW50IG5vZGVzIGluIHRoZSB0cmVlIHN0YXJ0aW5nIGF0ICpub2RlKgogICAgKGluY2x1ZGluZyAqbm9kZSogaXRzZWxmKSwgaW4gbm8gc3BlY2lmaWVkIG9yZGVyLiAgVGhpcyBpcyB1c2VmdWwgaWYgeW91CiAgICBvbmx5IHdhbnQgdG8gbW9kaWZ5IG5vZGVzIGluIHBsYWNlIGFuZCBkb24ndCBjYXJlIGFib3V0IHRoZSBjb250ZXh0LgogICAgaf////8oAQAAAHQFAAAAZGVxdWVOKAUAAAB0CwAAAGNvbGxlY3Rpb25zUmUAAAB0BwAAAHBvcGxlZnR0BgAAAGV4dGVuZFJSAAAAKAMAAABSLgAAAFJlAAAAdAQAAAB0b2RvKAAAAAAoAAAAAHNLAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvYXN0LnB5UlYAAADLAAAAcwwAAAAABhABDwEJAQwBEwF0CwAAAE5vZGVWaXNpdG9yYwAAAAAAAAAAAQAAAEIAAABzIAAAAGUAAFoBAGQAAFoCAGQBAIQAAFoDAGQCAIQAAFoEAFJTKAMAAABzPAMAAAogICAgQSBub2RlIHZpc2l0b3IgYmFzZSBjbGFzcyB0aGF0IHdhbGtzIHRoZSBhYnN0cmFjdCBzeW50YXggdHJlZSBhbmQgY2FsbHMgYQogICAgdmlzaXRvciBmdW5jdGlvbiBmb3IgZXZlcnkgbm9kZSBmb3VuZC4gIFRoaXMgZnVuY3Rpb24gbWF5IHJldHVybiBhIHZhbHVlCiAgICB3aGljaCBpcyBmb3J3YXJkZWQgYnkgdGhlIGB2aXNpdGAgbWV0aG9kLgoKICAgIFRoaXMgY2xhc3MgaXMgbWVhbnQgdG8gYmUgc3ViY2xhc3NlZCwgd2l0aCB0aGUgc3ViY2xhc3MgYWRkaW5nIHZpc2l0b3IKICAgIG1ldGhvZHMuCgogICAgUGVyIGRlZmF1bHQgdGhlIHZpc2l0b3IgZnVuY3Rpb25zIGZvciB0aGUgbm9kZXMgYXJlIGBgJ3Zpc2l0XydgYCArCiAgICBjbGFzcyBuYW1lIG9mIHRoZSBub2RlLiAgU28gYSBgVHJ5RmluYWxseWAgbm9kZSB2aXNpdCBmdW5jdGlvbiB3b3VsZAogICAgYmUgYHZpc2l0X1RyeUZpbmFsbHlgLiAgVGhpcyBiZWhhdmlvciBjYW4gYmUgY2hhbmdlZCBieSBvdmVycmlkaW5nCiAgICB0aGUgYHZpc2l0YCBtZXRob2QuICBJZiBubyB2aXNpdG9yIGZ1bmN0aW9uIGV4aXN0cyBmb3IgYSBub2RlCiAgICAocmV0dXJuIHZhbHVlIGBOb25lYCkgdGhlIGBnZW5lcmljX3Zpc2l0YCB2aXNpdG9yIGlzIHVzZWQgaW5zdGVhZC4KCiAgICBEb24ndCB1c2UgdGhlIGBOb2RlVmlzaXRvcmAgaWYgeW91IHdhbnQgdG8gYXBwbHkgY2hhbmdlcyB0byBub2RlcyBkdXJpbmcKICAgIHRyYXZlcnNpbmcuICBGb3IgdGhpcyBhIHNwZWNpYWwgdmlzaXRvciBleGlzdHMgKGBOb2RlVHJhbnNmb3JtZXJgKSB0aGF0CiAgICBhbGxvd3MgbW9kaWZpY2F0aW9ucy4KICAgIGMCAAAABAAAAAQAAABDAAAAcy8AAABkAQB8AQBqAABqAQAXfQIAdAIAfAAAfAIAfAAAagMAgwMAfQMAfAMAfAEAgwEAUygCAAAAcw0AAABWaXNpdCBhIG5vZGUudAYAAAB2aXNpdF8oBAAAAFI/AAAAUkAAAABSOQAAAHQNAAAAZ2VuZXJpY192aXNpdCgEAAAAdAQAAABzZWxmUi4AAAB0BgAAAG1ldGhvZHQHAAAAdmlzaXRvcigAAAAAKAAAAABzSwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2FzdC5weXQFAAAAdmlzaXTtAAAAcwYAAAAAAhABFQFjAgAAAAUAAAAFAAAAQwAAAHOCAAAAeHsAdAAAfAEAgwEARF1tAFwCAH0CAH0DAHQBAHwDAHQCAIMCAHJbAHhPAHwDAERdJQB9BAB0AQB8BAB0AwCDAgByLwB8AABqBAB8BACDAQABcS8AcS8AV3ENAHQBAHwDAHQDAIMCAHINAHwAAGoEAHwDAIMBAAFxDQBxDQBXZAEAUygCAAAAczkAAABDYWxsZWQgaWYgbm8gZXhwbGljaXQgdmlzaXRvciBmdW5jdGlvbiBleGlzdHMgZm9yIGEgbm9kZS5OKAUAAABSPgAAAFIRAAAAUhsAAABSPQAAAFJwAAAAKAUAAABSbQAAAFIuAAAAUjUAAABSYAAAAFJbAAAAKAAAAAAoAAAAAHNLAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvYXN0LnB5UmwAAADzAAAAcw4AAAAAAhkBDwENAQ8BFwEPASgFAAAAUkAAAAB0CgAAAF9fbW9kdWxlX190BwAAAF9fZG9jX19ScAAAAFJsAAAAKAAAAAAoAAAAACgAAAAAc0sAAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9hc3QucHlSagAAANkAAABzBgAAAAYSBgIJBnQPAAAATm9kZVRyYW5zZm9ybWVyYwAAAAAAAAAAAQAAAEIAAABzFwAAAGUAAFoBAGQAAFoCAGQBAIQAAFoDAFJTKAIAAABzXAUAAAogICAgQSA6Y2xhc3M6YE5vZGVWaXNpdG9yYCBzdWJjbGFzcyB0aGF0IHdhbGtzIHRoZSBhYnN0cmFjdCBzeW50YXggdHJlZSBhbmQKICAgIGFsbG93cyBtb2RpZmljYXRpb24gb2Ygbm9kZXMuCgogICAgVGhlIGBOb2RlVHJhbnNmb3JtZXJgIHdpbGwgd2FsayB0aGUgQVNUIGFuZCB1c2UgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUKICAgIHZpc2l0b3IgbWV0aG9kcyB0byByZXBsYWNlIG9yIHJlbW92ZSB0aGUgb2xkIG5vZGUuICBJZiB0aGUgcmV0dXJuIHZhbHVlIG9mCiAgICB0aGUgdmlzaXRvciBtZXRob2QgaXMgYGBOb25lYGAsIHRoZSBub2RlIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIGl0cyBsb2NhdGlvbiwKICAgIG90aGVyd2lzZSBpdCBpcyByZXBsYWNlZCB3aXRoIHRoZSByZXR1cm4gdmFsdWUuICBUaGUgcmV0dXJuIHZhbHVlIG1heSBiZSB0aGUKICAgIG9yaWdpbmFsIG5vZGUgaW4gd2hpY2ggY2FzZSBubyByZXBsYWNlbWVudCB0YWtlcyBwbGFjZS4KCiAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdHJhbnNmb3JtZXIgdGhhdCByZXdyaXRlcyBhbGwgb2NjdXJyZW5jZXMgb2YgbmFtZSBsb29rdXBzCiAgICAoYGBmb29gYCkgdG8gYGBkYXRhWydmb28nXWBgOjoKCiAgICAgICBjbGFzcyBSZXdyaXRlTmFtZShOb2RlVHJhbnNmb3JtZXIpOgoKICAgICAgICAgICBkZWYgdmlzaXRfTmFtZShzZWxmLCBub2RlKToKICAgICAgICAgICAgICAgcmV0dXJuIGNvcHlfbG9jYXRpb24oU3Vic2NyaXB0KAogICAgICAgICAgICAgICAgICAgdmFsdWU9TmFtZShpZD0nZGF0YScsIGN0eD1Mb2FkKCkpLAogICAgICAgICAgICAgICAgICAgc2xpY2U9SW5kZXgodmFsdWU9U3RyKHM9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