A/MNCkxcrFFjAAAAAAAAAAAFAAAAQAAAAHOXAAAAZAAAWgAAZAEAZAIAbAEAWgEAZwAAZQEAagIARF0VAFoDAGUEAGUBAGUDAIMCAF4CAHEcAFoFAGQDAGQEAGQFAGcDAFoGAGQGAFoHAGQHAIQAAFoIAGQIAIQAAFoJAGQJAGQKAGQLAIQCAFoKAGQEAGQOAGQMAIQAAIMAAFlaCwBkBQBkDwBkDQCEAACDAABZWgwAZAIAUygQAAAAc1sIAABVdGlsaXRpZXMgdG8gY29tcGlsZSBwb3NzaWJseSBpbmNvbXBsZXRlIFB5dGhvbiBzb3VyY2UgY29kZS4KClRoaXMgbW9kdWxlIHByb3ZpZGVzIHR3byBpbnRlcmZhY2VzLCBicm9hZGx5IHNpbWlsYXIgdG8gdGhlIGJ1aWx0aW4KZnVuY3Rpb24gY29tcGlsZSgpLCB3aGljaCB0YWtlIHByb2dyYW0gdGV4dCwgYSBmaWxlbmFtZSBhbmQgYSAnbW9kZScKYW5kOgoKLSBSZXR1cm4gY29kZSBvYmplY3QgaWYgdGhlIGNvbW1hbmQgaXMgY29tcGxldGUgYW5kIHZhbGlkCi0gUmV0dXJuIE5vbmUgaWYgdGhlIGNvbW1hbmQgaXMgaW5jb21wbGV0ZQotIFJhaXNlIFN5bnRheEVycm9yLCBWYWx1ZUVycm9yIG9yIE92ZXJmbG93RXJyb3IgaWYgdGhlIGNvbW1hbmQgaXMgYQogIHN5bnRheCBlcnJvciAoT3ZlcmZsb3dFcnJvciBhbmQgVmFsdWVFcnJvciBjYW4gYmUgcHJvZHVjZWQgYnkKICBtYWxmb3JtZWQgbGl0ZXJhbHMpLgoKQXBwcm9hY2g6CgpGaXJzdCwgY2hlY2sgaWYgdGhlIHNvdXJjZSBjb25zaXN0cyBlbnRpcmVseSBvZiBibGFuayBsaW5lcyBhbmQKY29tbWVudHM7IGlmIHNvLCByZXBsYWNlIGl0IHdpdGggJ3Bhc3MnLCBiZWNhdXNlIHRoZSBidWlsdC1pbgpwYXJzZXIgZG9lc24ndCBhbHdheXMgZG8gdGhlIHJpZ2h0IHRoaW5nIGZvciB0aGVzZS4KCkNvbXBpbGUgdGhyZWUgdGltZXM6IGFzIGlzLCB3aXRoIFxuLCBhbmQgd2l0aCBcblxuIGFwcGVuZGVkLiAgSWYgaXQKY29tcGlsZXMgYXMgaXMsIGl0J3MgY29tcGxldGUuICBJZiBpdCBjb21waWxlcyB3aXRoIG9uZSBcbiBhcHBlbmRlZCwKd2UgZXhwZWN0IG1vcmUuICBJZiBpdCBkb2Vzbid0IGNvbXBpbGUgZWl0aGVyIHdheSwgd2UgY29tcGFyZSB0aGUKZXJyb3Igd2UgZ2V0IHdoZW4gY29tcGlsaW5nIHdpdGggXG4gb3IgXG5cbiBhcHBlbmRlZC4gIElmIHRoZSBlcnJvcnMKYXJlIHRoZSBzYW1lLCB0aGUgY29kZSBpcyBicm9rZW4uICBCdXQgaWYgdGhlIGVycm9ycyBhcmUgZGlmZmVyZW50LCB3ZQpleHBlY3QgbW9yZS4gIE5vdCBpbnR1aXRpdmU7IG5vdCBldmVuIGd1YXJhbnRlZWQgdG8gaG9sZCBpbiBmdXR1cmUKcmVsZWFzZXM7IGJ1dCB0aGlzIG1hdGNoZXMgdGhlIGNvbXBpbGVyJ3MgYmVoYXZpb3IgZnJvbSBQeXRob24gMS40CnRocm91Z2ggMi4yLCBhdCBsZWFzdC4KCkNhdmVhdDoKCkl0IGlzIHBvc3NpYmxlIChidXQgbm90IGxpa2VseSkgdGhhdCB0aGUgcGFyc2VyIHN0b3BzIHBhcnNpbmcgd2l0aCBhCnN1Y2Nlc3NmdWwgb3V0Y29tZSBiZWZvcmUgcmVhY2hpbmcgdGhlIGVuZCBvZiB0aGUgc291cmNlOyBpbiB0aGlzCmNhc2UsIHRyYWlsaW5nIHN5bWJvbHMgbWF5IGJlIGlnbm9yZWQgaW5zdGVhZCBvZiBjYXVzaW5nIGFuIGVycm9yLgpGb3IgZXhhbXBsZSwgYSBiYWNrc2xhc2ggZm9sbG93ZWQgYnkgdHdvIG5ld2xpbmVzIG1heSBiZSBmb2xsb3dlZCBieQphcmJpdHJhcnkgZ2FyYmFnZS4gIFRoaXMgd2lsbCBiZSBmaXhlZCBvbmNlIHRoZSBBUEkgZm9yIHRoZSBwYXJzZXIgaXMKYmV0dGVyLgoKVGhlIHR3byBpbnRlcmZhY2VzIGFyZToKCmNvbXBpbGVfY29tbWFuZChzb3VyY2UsIGZpbGVuYW1lLCBzeW1ib2wpOgoKICAgIENvbXBpbGVzIGEgc2luZ2xlIGNvbW1h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b3VyY2Ugd2FzIHJlYWQ7IGRlZmF1bHQKICAgICAgICAgICAgICAgICI8aW5wdXQ+IgogICAgc3ltYm9sIC0tIG9wdGlvbmFsIGdyYW1tYXIgc3RhcnQgc3ltYm9sOyAic2luZ2xlIiAoZGVmYXVsdCkgb3IgImV2YWwiCgogICAgUmV0dXJuIHZhbHVlIC8gZXhjZXB0aW9ucyByYWlzZWQ6CgogICAgLSBSZXR1cm4gYSBjb2RlIG9iamVjdCBpZiB0aGUgY29tbWFuZCBpcyBjb21wbGV0ZSBhbmQgdmFsaWQKICAgIC0gUmV0dXJuIE5vbmUgaWYgdGhlIGNvbW1hbmQgaXMgaW5jb21wbGV0ZQogICAgLSBSYWlzZSBTeW50YXhFcnJvciwgVmFsdWVFcnJvciBvciBPdmVyZmxvd0Vycm9yIGlmIHRoZSBjb21tYW5kIGlzIGEKICAgICAgc3ludGF4IGVycm9yIChPdmVyZmxvd0Vycm9yIGFuZCBWYWx1ZUVycm9yIGNhbiBiZSBwcm9kdWNlZCBieQogICAgICBtYWxmb3JtZWQgbGl0ZXJhbHMpLgogICAgKAIAAABSFgAAAFIZAAAAKAMAAABSDAAAAFINAAAAUg4AAAAoAAAAACgAAAAAc04AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9jb2Rlb3AucHlSAAAAAGgAAABzAgAAAAASYwAAAAAAAAAAAQAAAEIAAABzIAAAAGUAAFoBAGQAAFoCAGQBAIQAAFoDAGQCAIQAAFoEAFJTKAMAAABz6wAAAEluc3RhbmNlcyBvZiB0aGlzIGNsYXNzIGJlaGF2ZSBtdWNoIGxpa2UgdGhlIGJ1aWx0LWluIGNvbXBpbGUKICAgIGZ1bmN0aW9uLCBidXQgaWYgb25lIGlzIHVzZWQgdG8gY29tcGlsZSB0ZXh0IGNvbnRhaW5pbmcgYSBmdXR1cmUKICAgIHN0YXRlbWVudCwgaXQgInJlbWVtYmVycyIgYW5kIGNvbXBpbGVzIGFsbCBzdWJzZXF1ZW50IHByb2dyYW0gdGV4dHMKICAgIHdpdGggdGhlIHN0YXRlbWVudCBpbiBmb3JjZS5jAQAAAAEAAAACAAAAQwAAAHMNAAAAdAAAfAAAXwEAZAAAUygBAAAATigCAAAAUhgAAAB0BQAAAGZsYWdzKAEAAAB0BAAAAHNlbGYoAAAAACgAAAAAc04AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9jb2Rlb3AucHl0CAAAAF9faW5pdF9fgQAAAHMCAAAAAAFjBAAAAAYAAAAGAAAAQwAAAHNVAAAAdAAAfAEAfAIAfAMAfAAAagEAZAEAgwUAfQQAeDMAdAIARF0rAH0FAHwEAGoDAHwFAGoEAEByIgB8AAAEagEAfAUAagQATwJfAQBxIgBxIgBXfAQAUygCAAAATmkBAAAAKAUAAABSFwAAAFIbAAAAdAkAAABfZmVhdHVyZXN0CAAAAGNvX2ZsYWdzdA0AAABjb21waWxlcl9mbGFnKAYAAABSHAAAAFIMAAAAUg0AAABSDgAAAHQGAAAAY29kZW9idAcAAABmZWF0dXJlKAAAAAAoAAAAAHNOAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvY29kZW9wLnB5dAgAAABfX2NhbGxfX4QAAABzCgAAAAABGwENARABGQEoBQAAAHQIAAAAX19uYW1lX190CgAAAF9fbW9kdWxlX190BwAAAF9fZG9jX19SHQAAAFIjAAAAKAAAAAAoAAAAACgAAAAAc04AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9jb2Rlb3AucHlSAQAAAHwAAABzBgAAAAYEBgEJA2MAAAAAAAAAAAMAAABCAAAAcyYAAABlAABaAQBkAABaAgBkAQCEAABaAwBkAgBkAwBkBACEAgBaBABSUygFAAAAcygBAABJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBoYXZlIF9fY2FsbF9fIG1ldGhvZHMgaWRlbnRpY2FsIGluCiAgICBzaWduYXR1cmUgdG8gY29tcGlsZV9jb21tYW5kOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGlmIHRoZQogICAgaW5zdGFuY2UgY29tcGlsZXMgcHJvZ3JhbSB0ZXh0IGNvbnRhaW5pbmcgYSBfX2Z1dHVyZV9fIHN0YXRlbWVudCwKICAgIHRoZSBpbnN0YW5jZSAncmVtZW1iZXJzJyBhbmQgY29tcGlsZXMgYWxsIHN1YnNlcXVlbnQgcHJvZ3JhbSB0ZXh0cwogICAgd2l0aCB0aGUgc3RhdGVtZW50IGluIGZvcmNlLmMBAAAAAQAAAAIAAABDAAAAcxAAAAB0AACDAAB8AABfAQBkAABTKAEAAABOKAIAAABSAQAAAFILAAAAKAEAAABSHAAAACgAAAAAKAAAAABzTgAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L2NvZGVvcC5weVIdAAAAkgAAAHMCAAAAAAFzBwAAADxpbnB1dD5SGgAAAGMEAAAABAAAAAUAAABDAAAAcxYAAAB0AAB8AABqAQB8AQB8AgB8AwCDBABTKAEAAABztQIAAENvbXBpbGUgYSBjb21tYW5kIGFuZCBkZXRlcm1pbmUgd2hldGhlciBpdCBpcyBpbmNvbXBsZXRlLgoKICAgICAgICBBcmd1bWVudHM6CgogICAgICAgIHNvdXJjZSAtLSB0aGUgc291cmNlIHN0cmluZzsgbWF5IGNvbnRhaW4gXG4gY2hhcmFjdGVycwogICAgICAgIGZpbGVuYW1lIC0tIG9wdGlvbmFsIGZpbGVuYW1lIGZyb20gd2hpY2ggc291cmNlIHdhcyByZWFkOwogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgIjxpbnB1dD4iCiAgICAgICAgc3ltYm9sIC0tIG9wdGlvbmFsIGdyYW1tYXIgc3RhcnQgc3ltYm9sOyAic2luZ2xlIiAoZGVmYXVsdCkgb3IKICAgICAgICAgICAgICAgICAgImV2YWwiCgogICAgICAgIFJldHVybiB2YWx1ZSAvIGV4Y2VwdGlvbnMgcmFpc2VkOgoKICAgICAgICAtIFJldHVybiBhIGNvZGUgb2JqZWN0IGlmIHRoZSBjb21tYW5kIGlzIGNvbXBsZXRlIGFuZCB2YWxpZAogICAgICAgIC0gUmV0dXJuIE5vbmUgaWYgdGhlIGNvbW1hbmQgaXMgaW5jb21wbGV0ZQogICAgICAgIC0gUmFpc2UgU3ludGF4RXJyb3IsIFZhbHVlRXJyb3Igb3IgT3ZlcmZsb3dFcnJvciBpZiB0aGUgY29tbWFuZCBpcyBhCiAgICAgICAgICBzeW50YXggZXJyb3IgKE92ZXJmbG93RXJyb3IgYW5kIFZhbHVlRXJyb3IgY2FuIGJlIHByb2R1Y2VkIGJ5CiAgICAgICAgICBtYWxmb3JtZWQgbGl0ZXJhbHMpLgogICAgICAgICgCAAAAUhYAAABSCwAAACgEAAAAUhwAAABSDAAAAFINAAAAUg4AAAAoAAAAACgAAAAAc04AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9jb2Rlb3AucHlSIwAAAJUAAABzAgAAAAATKAUAAABSJAAAAFIlAAAAUiYAAABSHQAAAFIjAAAAKAAAAAAoAAAAACgAAAAAc04AAAAvdG1wL25kay1Vc2VyL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9jb2Rlb3AucHlSAgAAAIsAAABzBgAAAAYFBgIJAygAAAAAKAAAAAAoDQAAAFImAAAAdAoAAABfX2Z1dHVyZV9fdBEAAABhbGxfZmVhdHVyZV9uYW1lc3QFAAAAZm5hbWV0BwAAAGdldGF0dHJSHgAAAHQHAAAAX19hbGxfX1IYAAAAUhYAAABSGQAAAFIAAAAAUgEAAABSAgAAACgAAAAAKAAAAAAoAAAAAHNOAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvY29kZW9wLnB5dAgAAAA8bW9kdWxlPjkAAABzFAAAAAYCDAIDASICDwIGAgkhCQMPFBMP