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EABkigCDAAdlSABkCwBkiwBkZQBkjABkZwBkFwFkaABnAABkaQBlNABnAQBkagBkFABkEABkjQCDAAdlSABkCwBkjgBkZQBkjwBkZwBkFwFkaABnAABkaQBlNABnAQBkagBkFABkEABkkACDAAdlSABkCwBkkQBkZQBkkgBkZwBlHABkaABnAABkaQBlOgBnAQBkagBkawBkEABkkwCDAAdlSABkCwBklABkZQBklQBkZwBlHgBkaABnAABkaQBlOgBnAQBkagBkDgBkEABklgCDAAdlSABkCwBklwBkZQBkmABkZwBlJABkaABnAABkaQBlNgBnAQBkagBkawBkEABkmQCDAAdlSABkCwBkmgBkZQBkmwBkZwBlJgBkaABnAABkaQBlNgBnAQBkagBkDgBkEABknACDAAdlSABkCwBknQBkZQBkngBkZwBkFwFkaABnAABkaQBlQQBnAQBkagBkDgBkEABknwCDAAdlSABkCwBkoABkZQBkoQBkZwBkFwFkaABlQQBlRABnAgBkaQBlQQBnAQBkagBkawBkEABkogCDAAdlSABkCwBkowBkZQBkpABkZwBkFwFkaABlQQBlRQBlRgBnAwBkaQBlQQBnAQBkagBkDgBkEABkpQCDAAdlSABkCwBkpgBkZQBkpwBkZwBkFwFkaABlRQBlRgBnAgBkaQBlQQBnAQBkagBkawBkEABkqACDAAdlSABkCwBkqQBkZQBkqgBkZwBkFwFkaABnAABkaQBlPwBnAQBkagBkDgBkEABkqwCDAAdlSABkCwBkrABkZQBkrQBkZwBkFwFkaABlRQBlRgBnAgBkaQBlPwBnAQBkagBkawBkEABkrgCDAAdlSABkCwBkrwBkZQBksABkZwBkFwFkaABlRABnAQBkaQBlPwBnAQBkagBkFABkEABksQCDAAdlSABkCwBksgBkZQBkswBkZwBkFwFkaABlRABlRABnAgBkaQBlPwBnAQBkagBkFABkEABktACDAAdlSABkCwBktQBkZQBktgBkZwBkFwFkaABlRABlRABlRABnAwBkaQBlPwBnAQBkagBkFABkEABktwCDAAdlSABkCwBkuABkZQBkuQBkZwBkFwFkaABnAABkaQBlQwBnAQBkagBkDgBkEABkugCDAAdlSABkCwBkuwBkZQBkvABkZwBkFwFkaABlRQBlRgBnAgBkaQBlQwBnAQBkagBkawBkEABkvQCDAAdlSABkCwBkvgBkZQBkvwBkZwBkFwFkaABlQwBlRABlRABnAwBkaQBlQwBnAQBkagBkawBkEABkwACDAAdlSABkCwBkwQBkZQBkwgBkZwBkFwFkaABlQwBlRQBlRgBnAwBkaQBlQwBnAQBkagBkDgBkEABkwwCDAAdlSABkCwBkxABkZQBkxQBkZwBkFwFkaABlRABnAQBkaQBnAABkagBkawBkEABkxgCDAAdlSABkCwBkxwBkZQBkyABkZwBkFwFkaABlRABnAQBkaQBlRABlRABnAgBkagBkawBkEABkyQCDAAdlSABkCwBkygBkZQBkywBkZwBkFwFkaABnAABkaQBlRQBnAQBkagBkawBkEABkzACDAAdlSABkCwBkzQBkZQBkzgBkZwBkFwFkaABlRQBlRgBnAgBkaQBnAABkagBkDgBkEABkzwCDAAdlSABkCwBk0ABkZQBk0QBkZwBlIQBkaABnAABkaQBlRABnAQBkagBkawBkEABk0gCDAAdlSABkCwBk0wBkZQBk1ABkZwBlCwBkaABnAABkaQBlRABnAQBkagBkDgBkEABk1QCDAAdlSABkCwBk1gBkZQBk1wBkZwBlDwBkaABnAABkaQBlRABnAQBkagBkDgBkEABk2ACDAAdlSABkCwBk2QBkZQBk2gBkZwBlIQBkaABnAABkaQBnAABkagBkawBkEABk2wCDAAdlSABkCwBk3ABkZQBk3QBkZwBlCwBkaABnAABkaQBnAABkagBkDgBkEABk3gCDAAdlSABkCwBk3wBkZQBk4ABkZwBlDwBkaABnAABkaQBnAABkagBkDgBkEABk4QCDAAdlSABkCwBk4gBkZQBk4wBkZwBlCwBkaABnAABkaQBlRABnAQBkagBkFABkEABk5ACDAAdlSABkCwBk5QBkZQBk5gBkZwBlDQBkaABnAABkaQBlRABnAQBkagBkFABkEABk5wCDAAdlSABkCwBk6ABkZQBk6QBkZwBlDwBkaABnAABkaQBlRABnAQBkagBkFABkEABk6gCDAAdlSABkCwBk6wBkZQBk7ABkZwBlFgBkaABnAABkaQBlRABnAQBkagBkawBkEABk7QCDAAdlSABkCwBk7gBkZQBk7wBkZwBkFwFkaABlRABlRABnAgBkaQBlRABn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AAABdBEAAABzdHJpbmdubF9ub2VzY2FwZXMDAQAAQSBuZXdsaW5lLXRlcm1pbmF0ZWQgc3RyaW5nLgoKICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyBhIHN0ci1zdHlsZSBzdHJpbmcsIHdpdGhvdXQgZW1iZWRkZWQgZXNjYXBlcywKICAgICAgICAgICAgICAgICAgICAgICAgb3IgYnJhY2tldGluZyBxdW90ZXMuICBJdCBzaG91bGQgY29uc2lzdCBzb2xlbHkgb2YKICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRhYmxlIEFTQ0lJIGNoYXJhY3RlcnMuCiAgICAgICAgICAgICAgICAgICAgICAgIGMBAAAAAQAAAAQAAABDAAAAcxoAAABkAQB0AAB8AACDAQB0AAB8AACDAQBmAgAWUygCAAAAc3wAAAAKICAgID4+PiBpbXBvcnQgU3RyaW5nSU8KICAgID4+PiByZWFkX3N0cmluZ25sX25vZXNjYXBlX3BhaXIoU3RyaW5nSU8uU3RyaW5nSU8oIlF1ZXVlXG5FbXB0eVxuanVuayIpKQogICAgJ1F1ZXVlIEVtcHR5JwogICAgcwUAAAAlcyAlcygBAAAAUiwAAAAoAQAAAFIYAAAAKAAAAAAoAAAAAHNTAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvcGlja2xldG9vbHMucHl0GwAAAHJlYWRfc3RyaW5nbmxfbm9lc2NhcGVfcGFpck8BAABzAgAAAAAHdBYAAABzdHJpbmdubF9ub2VzY2FwZV9wYWlyc7YBAABBIHBhaXIgb2YgbmV3bGluZS10ZXJtaW5hdGVkIHN0cmluZ3MuCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIGFyZSBzdHItc3R5bGUgc3RyaW5ncywgd2l0aG91dCBlbWJlZGRlZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVzY2FwZXMsIG9yIGJyYWNrZXRpbmcgcXVvdGVzLiAgVGhleSBzaG91bGQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zaXN0IHNv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L2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2Rhcndpbi14ODZfNjQvbGliL3B5dGhvbjIuNy9waWNrbGV0b29scy5weXQTAAAAcmVhZF9kZWNpbWFsbmxfbG9uZwICAABzCAAAAAASGAEPARMBdA8AAABkZWNpbWFsbmxfc2hvcnRznwEAAEEgbmV3bGluZS10ZXJtaW5hdGVkIGRlY2ltYWwgaW50ZWdlciBsaXRlcmFsLgoKICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG5ldmVyIGhhcyBhIHRyYWlsaW5nICdMJywgYW5kIHRoZSBpbnRlZ2VyIGZpdAogICAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgc2hvcnQgUHl0aG9uIGludCBvbiB0aGUgYm94IHdoZXJlIHRoZSBwaWNrbGUKICAgICAgICAgICAgICAgICAgICAgICAgICB3YXMgd3JpdHRlbiAtLSBidXQgdGhlcmUncyBubyBndWFyYW50ZWUgaXQgd2lsbCBmaXQKICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhIHNob3J0IFB5dGhvbiBpbnQgb24gdGhlIGJveCB3aGVyZSB0aGUgcGlja2xlCiAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgcmVhZC4KICAgICAgICAgICAgICAgICAgICAgICAgICB0DgAAAGRlY2ltYWxubF9sb25nc7sAAABBIG5ld2xpbmUtdGVybWluYXRlZCBkZWNpbWFsIGludGVnZXIgbGl0ZXJhbC4KCiAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGhhcyBhIHRyYWlsaW5nICdMJywgYW5kIGNhbiByZXByZXNlbnQgaW50ZWdlcnMKICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGFueSBzaXplLgogICAgICAgICAgICAgICAgICAgICAgICAgYwEAAAACAAAABgAAAEMAAABzIgAAAHQAAHwAAGQBAHQBAGQCAHQBAIMBAn0BAHQCAHwBAIMBAFMoAwAAAHNbAAAACiAgICA+Pj4gaW1wb3J0IFN0cmluZ0lPCiAgICA+Pj4gcmVhZF9mbG9hdG5sKFN0cmluZ0lPLlN0cmluZ0lPKCItMS4yNVxu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bnRhaW5lZCgAAAAAKAAAAABzUwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5UhAAAADGAgAAcxIAAAAAARUBCQIkAQ8BDQEcAQkCFQFjAQAAAAEAAAABAAAAQwAAAHMHAAAAfAAAagAAUygBAAAATigBAAAAUgQAAAAoAQAAAFIPAAAAKAAAAAAoAAAAAHNTAAAAL3RtcC9uZGstVXNlci9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9kYXJ3aW4teDg2XzY0L2xpYi9weXRob24yLjcvcGlja2xldG9vbHMucHl0CAAAAF9fcmVwcl9f0wIAAHMCAAAAAAEoAwAAAHMEAAAAbmFtZXMGAAAAb2J0eXBlcwMAAABkb2MoBQAAAFIRAAAAUhIAAABSEwAAAFIQAAAAUlMAAAAoAAAAACgAAAAAKAAAAABzUwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvZGFyd2luLXg4Nl82NC9saWIvcHl0aG9uMi43L3BpY2tsZXRvb2xzLnB5Uk4AAAC5AgAAcwoAAAAGAwAEAAMGAwkNUgsAAABSTwAAAHMzAAAAQSBzaG9ydCAoYXMgb3Bwb3NlZCB0byBsb25nKSBQeXRob24gaW50ZWdlciBvYmplY3QuUj4AAABzMwAAAEEgbG9uZyAoYXMgb3Bwb3NlZCB0byBzaG9ydCkgUHl0aG9uIGludGVnZXIgb2JqZWN0LnQLAAAAaW50X29yX2Jvb2xzOgAAAEEgUHl0aG9uIGludGVnZXIgb2JqZWN0IChzaG9ydCBvciBsb25nKSwgb3IgYSBQeXRob24gYm9vbC50BAAAAGJvb2xzFQAAAEEgUHl0aG9uIGJvb2wgb2JqZWN0LlJEAAAAcxYAAABBIFB5dGhvbiBmbG9hdCBvYmplY3QuUgkAAABzFwAAAEEgUHl0aG9uIHN0cmluZyBvYmplY3QuUjQAAABzHwAAAEEgUHl0aG9uIFVuaWNvZGUgc3RyaW5nIG9iamVjdC50BAAAAE5vbmVzFwAAAFRoZSBQeXRob24gTm9uZSBvYmplY3QuUlEAAABzFgAAAEEgUHl0aG9uIHR1cGxlIG9iamVjdC50BAAAAGxpc3RzFQAAAEEgUHl0aG9uIGxpc3Qgb2JqZWN0LnQEAAAAZGljdHMVAAAAQSBQeXRob24gZGljdCBvYmplY3QudAMAAABhbnlzHgAAAEFueSBraW5kIG9mIG9iamVjdCB3aGF0c29ldmVyLnQEAAAAbWFya3MCAgAAJ1RoZSBtYXJrJyBpcyBhIHVuaXF1ZSBvYmplY3QuCgogICAgICAgICAgICAgICAgIE9wY29kZXMgdGhhdCBvcGVyYXRlIG9uIGEgdmFyaWFibGUgbnVtYmVyIG9mIG9iamVjdHMKICAgICAgICAgICAgICAgICBnZW5lcmFsbHkgZG9uJ3QgZW1iZWQgdGhlIGNvdW50IG9mIG9iamVjdHMgaW4gdGhlIG9wY29kZSwKICAgICAgICAgICAgICAgICBvciBwdWxsIGl0IG9mZiB0aGUgc3RhY2suICBJbnN0ZWFkIHRoZSBNQVJLIG9wY29kZSBpcyB1c2VkCiAgICAgICAgICAgICAgICAgdG8gcHVzaCBhIHNwZWNpYWwgbWFya2VyIG9iamVjdCBvbiB0aGUgc3RhY2ssIGFuZCB0aGVuCiAgICAgICAgICAgICAgICAgc29tZSBvdGhlciBvcGNvZGVzIGdyYWIgYWxsIHRoZSBvYmplY3RzIGZyb20gdGhlIHRvcCBvZgogICAgICAgICAgICAgICAgIHRoZSBzdGFjayBkb3duIHRvIChidXQgbm90IGluY2x1ZGluZykgdGhlIHRvcG1vc3QgbWFya2VyCiAgICAgICAgICAgICAgICAgb2JqZWN0LgogICAgICAgICAgICAgICAgIHQKAAAAc3RhY2tzbGljZXNLAgAAQW4gb2JqZWN0IHJlcHJlc2VudGluZyBhIGNvbnRpZ3VvdXMgc2xpY2Ugb2YgdGhlIHN0YWNrLgoKICAgICAgICAgICAgICAgICBUaGlzIGlzIHVzZWQgaW4gY29uanVjdGlvbiB3aXRoIG1hcmtvYmplY3QsIHRvIHJlcHJlc2VudCBhbGwKICAgICAgICAgICAgICAgICBvZiB0aGUgc3RhY2sgZm9sbG93aW5nIHRoZSB0b3Btb3N0IG1hcmtvYmplY3QuICBGb3IgZXhhbXBsZSwKICAgICAg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T05HIHRoZW4gaXMgdGhhdCBJTlQgc2tpcHMgYSB0cmFpbGluZyAnTCcsIGFuZCBwcm9kdWNlcyBhIHNob3J0CiAgICAgIGludCB3aGVuZXZlciBwb3NzaWJsZS4KCiAgICAgIEFub3RoZXIgZGlmZmVyZW5jZSBpcyBkdWUgdG8gdGhhdCwgd2hlbiBib29sIHdhcyBpbnRyb2R1Y2VkIGFzIGEKICAgICAgZGlzdGluY3QgdHlwZSBpbiAyLjMsIGJ1aWx0aW4gbmFtZXMgVHJ1ZSBhbmQgRmFsc2Ugd2VyZSBhbHNvIGFkZGVkIHRvCiAgICAgIDIuMi4yLCBtYXBwaW5nIHRvIGludHMgMSBhbmQgMC4gIEZvciBjb21wYXRpYmlsaXR5IGluIGJvdGggZGlyZWN0aW9ucywKICAgICAgVHJ1ZSBnZXRzIHBpY2tsZWQgYXMgSU5UICsgIkkwMVxuIiwgYW5kIEZhbHNlIGFzIElOVCArICJJMDBcbiIuCiAgICAgIExlYWRpbmcgemVyb2VzIGFyZSBuZXZlciBwcm9kdWNlZCBmb3IgYSBnZW51aW5lIGludGVnZXIuICBUaGUgMi4zCiAgICAgIChhbmQgbGF0ZXIpIHVucGlja2xlcnMgc3BlY2lhbC1jYXNlIHRoZXNlIGFuZCByZXR1cm4gYm9vbCBpbnN0ZWFkOwogICAgICBlYXJsaWVyIHVucGlja2xlcnMgaWdub3JlIHRoZSBsZWFkaW5nICIwIiBhbmQgcmV0dXJuIHRoZSBpbnQuCiAgICAgIHQGAAAAQklOSU5UdAEAAABKczEBAABQdXNoIGEgZm91ci1ieXRlIHNpZ25lZCBpbnRlZ2VyLgoKICAgICAgVGhpcyBoYW5kbGVzIHRoZSBmdWxsIHJhbmdlIG9mIFB5dGhvbiAoc2hvcnQpIGludGVnZXJzIG9uIGEgMzItYml0CiAgICAgIGJveCwgZGlyZWN0bHkgYXMgYmluYXJ5IGJ5dGVzICgxIGZvciB0aGUgb3Bjb2RlIGFuZCA0IGZvciB0aGUgaW50ZWdlcikuCiAgICAgIElmIHRoZSBpbnRlZ2VyIGlzIG5vbi1uZWdhdGl2ZSBhbmQgZml0cyBpbiAxIG9yIDIgYnl0ZXMsIHBpY2tsaW5nIHZpYQogICAgICBCSU5JTlQxIG9yIEJJTklOVDIgc2F2ZXMgc3BhY2UuCiAgICAgIHQHAAAAQklOSU5UMXQBAAAAS3OMAAAAUHVzaCBhIG9uZS1ieXRlIHVuc2lnbmVkIGludGVnZXIuCgogICAgICBUaGlzIGlzIGEgc3BhY2Ugb3B0aW1pemF0aW9uIGZvciBwaWNrbGluZyB2ZXJ5IHNtYWxsIG5vbi1uZWdhdGl2ZSBpbnRzLAogICAgICBpbiByYW5nZSgyNTYpLgogICAgICB0BwAAAEJJTklOVDJ0AQAAAE1z6wAAAFB1c2ggYSB0d28tYnl0ZSB1bnNpZ25lZCBpbnRlZ2VyLgoKICAgICAgVGhpcyBpcyBhIHNwYWNlIG9wdGltaXphdGlvbiBmb3IgcGlja2xpbmcgc21hbGwgcG9zaXRpdmUgaW50cywgaW4KICAgICAgcmFuZ2UoMjU2LCAyKioxNikuICBJbnRlZ2VycyBpbiByYW5nZSgyNTYpIGNhbiBhbHNvIGJlIHBpY2tsZWQgdmlhCiAgICAgIEJJTklOVDIsIGJ1dCBCSU5JTlQxIGluc3RlYWQgc2F2ZXMgYSBieXRlLgogICAgICB0BAAAAExPTkdSOQAAAHPHAQAAUHVzaCBhIGxvbmcgaW50ZWdlci4KCiAgICAgIFRoZSBzYW1lIGFzIElOVCwgZXhjZXB0IHRoYXQgdGhlIGxpdGVyYWwgZW5kcyB3aXRoICdMJywgYW5kIGFsd2F5cwogICAgICB1bnBpY2tsZXMgdG8gYSBQeXRob24gbG9uZy4gIFRoZXJlIGRvZXNuJ3Qgc2VlbSBhIHJlYWwgcHVycG9zZSB0byB0aGUKICAgICAgdHJhaWxpbmcgJ0wnLgoKICAgICAgTm90ZSB0aGF0IExPTkcgdGFrZXMgdGltZSBxdWFkcmF0aWMgaW4gdGhlIG51bWJlciBvZiBkaWdpdHMgd2hlbgogICAgICB1bnBpY2tsaW5nICh0aGlzIGlzIHNpbXBseSBkdWUgdG8gdGhlIG5hdHVyZSBvZiBkZWNpbWFsLT5iaW5hcnkKICAgICAgY29udmVyc2lvbikuICBQcm90byAyIGFkZGVkIGxpbmVhci10aW1lIChpbiBDOyBzdGlsbCBxdWFkcmF0aWMtdGltZQogICAgICBpbiBQeXRob24pIExPTkcxIGFuZCBMT05HNCBvcGNvZGVzLgogICAgICB0BQAAAExPTkcxcwEAAACKc3wAAABMb25nIGludGVnZXIgdXNpbmcgb25lLWJ5dGUgbGVuZ3RoLgoKICAgICAgQSBtb3JlIGVmZmljaWVudCBlbmNvZGluZyBvZiBhIFB5dGhvbiBsb25nOyB0aGUgbG9uZzEgZW5jb2RpbmcKICAgICAgc2F5cyBpdCBhbGwudAUAAABMT05HNHMBAAAAi3N+AAAATG9uZyBpbnRlZ2VyIHVzaW5nIGZvdW5kLWJ5dGUgbGVuZ3RoLgoKICAgICAgQSBtb3JlIGVmZmljaWVudCBlbmNvZGluZyBvZiBhIFB5dGhvbiBsb25nOyB0aGUgbG9uZzQgZW5jb2RpbmcKICAgICAgc2F5cyBpdCBhbGwudAYAAABTVFJJTkd0AQAAAFNz0wAAAFB1c2ggYSBQeXRob24gc3RyaW5nIG9iamVjdC4KCiAgICAgIFRoZSBhcmd1bWVudCBpcyBhIHJlcHItc3R5bGUgc3RyaW5nLCB3aXRoIGJyYWNrZXRpbmcgcXVvdGUgY2hhcmFjdGVycywKICAgICAgYW5kIHBlcmhhcHMgZW1iZWRkZWQgZXNjYXBlcy4gIFRoZSBhcmd1bWVudCBleHRlbmRzIHVudGlsIHRoZSBuZXh0CiAgICAgIG5ld2xpbmUgY2hhcmFjdGVyLgogICAgICB0CQAAAEJJTlNUUklOR3QBAAAAVHP9AAAAUHVzaCBhIFB5dGhvbiBzdHJpbmcgb2JqZWN0LgoKICAgICAgVGhlcmUgYXJlIHR3byBhcmd1bWVudHM6ICB0aGUgZmlyc3QgaXMgYSA0LWJ5dGUgbGl0dGxlLWVuZGlhbiBzaWduZWQgaW50CiAgICAgIGdpdmluZyB0aGUgbnVtYmVyIG9mIGJ5dGVzIGluIHRoZSBzdHJpbmcsIGFuZCB0aGUgc2Vjb25kIGlzIHRoYXQgbWFueQogICAgICBieXRlcywgd2hpY2ggYXJlIHRha2VuIGxpdGVyYWxseSBhcyB0aGUgc3RyaW5nIGNvbnRlbnQuCiAgICAgIHQPAAAAU0hPUlRfQklOU1RSSU5HdAEAAABVc/EAAABQdXNoIGEgUHl0aG9uIHN0cmluZyBvYmplY3QuCgogICAgICBUaGVyZSBhcmUgdHdvIGFyZ3VtZW50czogIHRoZSBmaXJzdCBpcyBhIDEtYnl0ZSB1bnNpZ25lZCBpbnQgZ2l2aW5nCiAgICAgIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIHN0cmluZywgYW5kIHRoZSBzZWNvbmQgaXMgdGhhdCBtYW55IGJ5dGVzLAogICAgICB3aGljaCBhcmUgdGFrZW4gbGl0ZXJhbGx5IGFzIHRoZSBzdHJpbmcgY29udGVudC4KICAgICAgdAQAAABOT05FdAEAAABOcxcAAABQdXNoIE5vbmUgb24gdGhlIHN0YWNrLnQHAAAATkVXVFJVRXMBAAAAiHMmAAAAVHJ1ZS4KCiAgICAgIFB1c2ggVHJ1ZSBvbnRvIHRoZSBzdGFjay50CAAAAE5FV0ZBTFNFcwEAAACJcycAAABUcnVlLgoKICAgICAgUHVzaCBGYWxzZSBvbnRvIHRoZSBzdGFjay50BwAAAFVOSUNPREV0AQAAAFZz5wAAAFB1c2ggYSBQeXRob24gVW5pY29kZSBzdHJpbmcgb2JqZWN0LgoKICAgICAgVGhlIGFyZ3VtZW50IGlzIGEgcmF3LXVuaWNvZGUtZXNjYXBlIGVuY29kaW5nIG9mIGEgVW5pY29kZSBzdHJpbmcsCiAgICAgIGFuZCBzbyBtYXkgY29udGFpbiBlbWJlZGRlZCBlc2NhcGUgc2VxdWVuY2VzLiAgVGhlIGFyZ3VtZW50IGV4dGVuZHMKICAgICAgdW50aWwgdGhlIG5leHQgbmV3bGluZSBjaGFyYWN0ZXIuCiAgICAgIHQKAAAAQklOVU5JQ09ERXQBAAAAWHMCAQAAUHVzaCBhIFB5dGhvbiBVbmljb2RlIHN0cmluZyBvYmplY3QuCgogICAgICBUaGVyZSBhcmUgdHdvIGFyZ3VtZW50czogIHRoZSBmaXJzdCBpcyBhIDQtYnl0ZSBsaXR0bGUtZW5kaWFuIHNpZ25lZCBpbnQKICAgICAgZ2l2aW5nIHRoZSBudW1iZXIgb2YgYnl0ZXMgaW4gdGhlIHN0cmluZy4gIFRoZSBzZWNvbmQgaXMgdGhhdCBtYW55CiAgICAgIGJ5dGVzLCBhbmQgaXMgdGhlIFVURi04IGVuY29kaW5nIG9mIHRoZSBVbmljb2RlIHN0cmluZy4KICAgICAgdAUAAABGTE9BVHQBAAAARnONAgAATmV3bGluZS10ZXJtaW5hdGVkIGRlY2ltYWwgZmxvYXQgbGl0ZXJhbC4KCiAgICAgIFRoZSBhcmd1bWVudCBpcyByZXByKGFfZmxvYXQpLCBhbmQgaW4gZ2VuZXJhbCByZXF1aXJlcyAxNyBzaWduaWZpY2FudAogICAgICBkaWdpdHMgZm9yIHJvdW5kdHJpcCBjb252ZXJzaW9uIHRvIGJlIGFuIGlkZW50aXR5ICh0aGlzIGlzIHNvIGZvcgogICAgICBJRUVFLTc1NCBkb3VibGUgcHJlY2lzaW9uIHZhbHVlcywgd2hpY2ggaXMgd2hhdCBQeXRob24gZmxvYXQgbWFwcyB0bwogICAgICBvbiBtb3N0IGJveGVzKS4KCiAgICAgIEluIGdlbmVyYWwsIEZMT0FUIGNhbm5vdCBiZSB1c2VkIHRvIHRyYW5zcG9ydCBpbmZpbml0aWVzLCBOYU5zLCBvcgogICAgICBtaW51cyB6ZXJvIGFjcm9zcyBib3hlcyAob3IgZXZlbiBvbiBhIHNpbmdsZSBib3gsIGlmIHRoZSBwbGF0Zm9ybSBDCiAgICAgIGxpYnJhcnkgY2FuJ3QgcmVhZCB0aGUgc3RyaW5ncyBpdCBwcm9kdWNlcyBmb3Igc3VjaCB0aGluZ3MgLS0gV2luZG93cwogICAgICBpcyBsaWtlIHRoYXQpLCBidXQgbWF5IGRvIGxlc3MgZGFtYWdlIHRoYW4gQklORkxPQVQgb24gYm94ZXMgd2l0aAogICAgICBncmVhdGVyIHByZWNpc2lvbiBvciBkeW5hbWljIHJhbmdlIHRoYW4gSUVFRS03NTQgZG91YmxlLgogICAgICB0CAAAAEJJTkZMT0FUdAEAAABHc9wBAABGbG9hdCBzdG9yZWQgaW4gYmluYXJ5IGZvcm0sIHdpdGggOCBieXRlcyBvZiBkYXRhLgoKICAgICAgVGhpcyBnZW5lcmFsbHkgcmVxdWlyZXMgbGVzcyB0aGFuIGhhbGYgdGhlIHNwYWNlIG9mIEZMT0FUIGVuY29kaW5nLgogICAgICBJbiBnZW5lcmFsLCBCSU5GTE9BVCBjYW5ub3QgYmUgdXNlZCB0byB0cmFuc3BvcnQgaW5maW5pdGllcywgTmFOcywgb3IKICAgICAgbWludXMgemVybywgcmFpc2VzIGFuIGV4Y2VwdGlvbiBpZiB0aGUgZXhwb25lbnQgZXhjZWVkcyB0aGUgcmFuZ2Ugb2YKICAgICAgYW4gSUVFRS03NTQgZG91YmxlLCBhbmQgcmV0YWlucyBubyBtb3JlIHRoYW4gNTMgYml0cyBvZiBwcmVjaXNpb24gKGlmCiAgICAgIHRoZXJlIGFyZSBtb3JlIHRoYW4gdGhhdCwgImFkZCBhIGhhbGYgYW5kIGNob3AiIHJvdW5kaW5nIGlzIHVzZWQgdG8KICAgICAgY3V0IGl0IGJhY2sgdG8gNTMgc2lnbmlmaWNhbnQgYml0cykuCiAgICAgIHQKAAAARU1QVFlfTElTVHQBAAAAXXMTAAAAUHVzaCBhbiBlbXB0eSBsaXN0LnQGAAAAQVBQRU5EdAEAAABhc60AAABBcHBlbmQgYW4gb2JqZWN0IHRvIGEgbGlzdC4KCiAgICAgIFN0YWNrIGJlZm9yZTogIC4uLiBweWxpc3QgYW55b2JqZWN0CiAgICAgIFN0YWNrIGFmdGVyOiAgIC4uLiBweWxpc3QrW2FueW9iamVjdF0KCiAgICAgIGFsdGhvdWdoIHB5bGlzdCBpcyByZWFsbHkgZXh0ZW5kZWQgaW4tcGxhY2UuCiAgICAgIHQHAAAAQVBQRU5EU3QBAAAAZXPHAAAARXh0ZW5kIGEgbGlzdCBieSBhIHNsaWNlIG9mIHN0YWNrIG9iamVjdHMuCgogICAgICBTdGFjayBiZWZvcmU6ICAuLi4gcHlsaXN0IG1hcmtvYmplY3Qgc3RhY2tzbGljZQogICAgICBTdGFjayBhZnRlcjogICAuLi4gcHlsaXN0K3N0YWNrc2xpY2UKCiAgICAgIGFsdGhvdWdoIHB5bGlzdCBpcyByZWFsbHkgZXh0ZW5kZWQgaW4tcGxhY2UuCiAgICAgIHQEAAAATElTVHQBAAAAbHNzAQAAQnVpbGQgYSBsaXN0IG91dCBvZiB0aGUgdG9wbW9zdCBzdGFjayBzbGljZSwgYWZ0ZXIgbWFya29iamVjdC4KCiAgICAgIEFsbCB0aGUgc3RhY2sgZW50cmllcyBmb2xsb3dpbmcgdGhlIHRvcG1vc3QgbWFya29iamVjdCBhcmUgcGxhY2VkIGludG8KICAgICAgYSBzaW5nbGUgUHl0aG9uIGxpc3QsIHdoaWNoIHNpbmdsZSBsaXN0IG9iamVjdCByZXBsYWNlcyBhbGwgb2YgdGhlCiAgICAgIHN0YWNrIGZyb20gdGhlIHRvcG1vc3QgbWFya29iamVjdCBvbndhcmQuICBGb3IgZXhhbXBsZSwKCiAgICAgIFN0YWNrIGJlZm9yZTogLi4uIG1hcmtvYmplY3QgMSAyIDMgJ2FiYycKICAgICAgU3RhY2sgYWZ0ZXI6ICAuLi4gWzEsIDIsIDMsICdhYmMnXQogICAgICB0CwAAAEVNUFRZX1RVUExFdAEAAAApcxQAAABQdXNoIGFuIGVtcHR5IHR1cGxlLnQFAAAAVFVQTEV0AQAAAHRzdgEAAEJ1aWxkIGEgdHVwbGUgb3V0IG9mIHRoZSB0b3Btb3N0IHN0YWNrIHNsaWNlLCBhZnRlciBtYXJrb2JqZWN0LgoKICAgICAgQWxsIHRoZSBzdGFjayBlbnRyaWVzIGZvbGxvd2luZyB0aGUgdG9wbW9zdCBtYXJrb2JqZWN0IGFyZSBwbGFjZWQgaW50bwogICAgICBhIHNpbmdsZSBQeXRob24gdHVwbGUsIHdoaWNoIHNpbmdsZSB0dXBsZSBvYmplY3QgcmVwbGFjZXMgYWxsIG9mIHRoZQogICAgICBzdGFjayBmcm9tIHRoZSB0b3Btb3N0IG1hcmtvYmplY3Qgb253YXJkLiAgRm9yIGV4YW1wbGUsCgogICAgICBTdGFjayBiZWZvcmU6IC4uLiBtYXJrb2JqZWN0IDEgMiAzICdhYmMnCiAgICAgIFN0YWNrIGFmdGVyOiAgLi4uICgxLCAyLCAzLCAnYWJjJykKICAgICAgdAYAAABUVVBMRTFzAQAAAIVz/AAAAEJ1aWxkIGEgb25lLXR1cGxlIG91dCBvZiB0aGUgdG9wbW9zdCBpdGVtIG9uIHRoZSBzdGFjay4KCiAgICAgIFRoaXMgY29kZSBwb3BzIG9uZSB2YWx1ZSBvZmYgdGhlIHN0YWNrIGFuZCBwdXNoZXMgYSB0dXBsZSBvZgogICAgICBsZW5ndGggMSB3aG9zZSBvbmUgaXRlbSBpcyB0aGF0IHZhbHVlIGJhY2sgb250byBpdC4gIEluIG90aGVyCiAgICAgIHdvcmRzOgoKICAgICAgICAgIHN0YWNrWy0xXSA9IHR1cGxlKHN0YWNrWy0xOl0pCiAgICAgIHQGAAAAVFVQTEUycwEAAACGcwEBAABCdWlsZCBhIHR3by10dXBsZSBvdXQgb2YgdGhlIHRvcCB0d28gaXRlbXMgb24gdGhlIHN0YWNrLgoKICAgICAgVGhpcyBjb2RlIHBvcHMgdHdvIHZhbHVlcyBvZmYgdGhlIHN0YWNrIGFuZCBwdXNoZXMgYSB0dXBsZSBvZgogICAgICBsZW5ndGggMiB3aG9zZSBpdGVtcyBhcmUgdGhvc2UgdmFsdWVzIGJhY2sgb250byBpdC4gIEluIG90aGVyCiAgICAgIHdvcmRzOgoKICAgICAgICAgIHN0YWNrWy0yOl0gPSBbdHVwbGUoc3RhY2tbLTI6XSldCiAgICAgIHQGAAAAVFVQTEUzcwEAAACHcwcBAABCdWlsZCBhIHRocmVlLXR1cGxlIG91dCBvZiB0aGUgdG9wIHRocmVlIGl0ZW1zIG9uIHRoZSBzdGFjay4KCiAgICAgIFRoaXMgY29kZSBwb3BzIHRocmVlIHZhbHVlcyBvZmYgdGhlIHN0YWNrIGFuZCBwdXNoZXMgYSB0dXBsZSBvZgogICAgICBsZW5ndGggMyB3aG9zZSBpdGVtcyBhcmUgdGhvc2UgdmFsdWVzIGJhY2sgb250byBpdC4gIEluIG90aGVyCiAgICAgIHdvcmRzOgoKICAgICAgICAgIHN0YWNrWy0zOl0gPSBbdHVwbGUoc3RhY2tbLTM6XSldCiAgICAgIHQKAAAARU1QVFlfRElDVHQBAAAAfXMTAAAAUHVzaCBhbiBlbXB0eSBkaWN0LnQEAAAARElDVHQBAAAAZHOyAQAAQnVpbGQgYSBkaWN0IG91dCBvZiB0aGUgdG9wbW9zdCBzdGFjayBzbGljZSwgYWZ0ZXIgbWFya29iamVjdC4KCiAgICAgIEFsbCB0aGUgc3RhY2sgZW50cmllcyBmb2xsb3dpbmcgdGhlIHRvcG1vc3QgbWFya29iamVjdCBhcmUgcGxhY2VkIGludG8KICAgICAgYSBzaW5nbGUgUHl0aG9uIGRpY3QsIHdoaWNoIHNpbmdsZSBkaWN0IG9iamVjdCByZXBsYWNlcyBhbGwgb2YgdGhlCiAgICAgIHN0YWNrIGZyb20gdGhlIHRvcG1vc3QgbWFya29iamVjdCBvbndhcmQuICBUaGUgc3RhY2sgc2xpY2UgYWx0ZXJuYXRlcwogICAgICBrZXksIHZhbHVlLCBrZXksIHZhbHVlLCAuLi4uICBGb3IgZXhhbXBsZSwKCiAgICAgIFN0YWNrIGJlZm9yZTogLi4uIG1hcmtvYmplY3QgMSAyIDMgJ2FiYycKICAgICAgU3RhY2sgYWZ0ZXI6ICAuLi4gezE6IDIsIDM6ICdhYmMnfQogICAgICB0BwAAAFNFVElURU1SPwAAAHO6AAAAQWRkIGEga2V5K3ZhbHVlIHBhaXIgdG8gYW4gZXhpc3RpbmcgZGljdC4KCiAgICAgIFN0YWNrIGJlZm9yZTogIC4uLiBweWRpY3Qga2V5IHZhbHVlCiAgICAgIFN0YWNrIGFmdGVyOiAgIC4uLiBweWRpY3QKCiAgICAgIHdoZXJlIHB5ZGljdCBoYXMgYmVlbiBtb2RpZmllZCB2aWEgcHlkaWN0W2tleV0gPSB2YWx1ZS4KICAgICAgdAgAAABTRVRJVEVNU3QBAAAAdXNcAgAAQWRkIGFuIGFyYml0cmFyeSBudW1iZXIgb2Yga2V5K3ZhbHVlIHBhaXJzIHRvIGFuIGV4aXN0aW5nIGRpY3QuCgogICAgICBUaGUgc2xpY2Ugb2YgdGhlIHN0YWNrIGZvbGxvd2luZyB0aGUgdG9wbW9zdCBtYXJrb2JqZWN0IGlzIHRha2VuIGFzCiAgICAgIGFuIGFsdGVybmF0aW5nIHNlcXVlbmNlIG9mIGtleXMgYW5kIHZhbHVlcywgYWRkZWQgdG8gdGhlIGRpY3QKICAgICAgaW1tZWRpYXRlbHkgdW5kZXIgdGhlIHRvcG1vc3QgbWFya29iamVjdC4gIEV2ZXJ5dGhpbmcgYXQgYW5kIGFmdGVyIHRoZQogICAgICB0b3Btb3N0IG1hcmtvYmplY3QgaXMgcG9wcGVkLCBsZWF2aW5nIHRoZSBtdXRhdGVkIGRpY3QgYXQgdGhlIHRvcAogICAgICBvZiB0aGUgc3RhY2suCgogICAgICBTdGFjayBiZWZvcmU6ICAuLi4gcHlkaWN0IG1hcmtvYmplY3Qga2V5XzEgdmFsdWVfMSAuLi4ga2V5X24gdmFsdWVfbgogICAgICBTdGFjayBhZnRlcjogICAuLi4gcHlkaWN0CgogICAgICB3aGVyZSBweWRpY3QgaGFzIGJlZW4gbW9kaWZpZWQgdmlhIHB5ZGljdFtrZXlfaV0gPSB2YWx1ZV9pIGZvciBpIGluCiAgICAgIDEsIDIsIC4uLiwgbiwgYW5kIGluIHRoYXQgb3JkZXIuCiAgICAgIHQDAAAAUE9QdAEAAAAwczwAAABEaXNjYXJkIHRoZSB0b3Agc3RhY2sgaXRlbSwgc2hyaW5raW5nIHRoZSBzdGFjayBieSBvbmUgaXRlbS50AwAAAERVUHQBAAAAMnM9AAAAUHVzaCB0aGUgdG9wIHN0YWNrIGl0ZW0gb250byB0aGUgc3RhY2sgYWdhaW4sIGR1cGxpY2F0aW5nIGl0LnQEAAAATUFSS3QBAAAAKHPyAAAAUHVzaCBtYXJrb2JqZWN0IG9udG8gdGhlIHN0YWNrLgoKICAgICAgbWFya29iamVjdCBpcyBhIHVuaXF1ZSBvYmplY3QsIHVzZWQgYnkgb3RoZXIgb3Bjb2RlcyB0byBpZGVudGlmeSBhCiAgICAgIHJlZ2lvbiBvZiB0aGUgc3RhY2sgY29udGFpbmluZyBhIHZhcmlhYmxlIG51bWJlciBvZiBvYmplY3RzIGZvciB0aGVtCiAgICAgIHRvIHdvcmsgb24uICBTZWUgbWFya29iamVjdC5kb2MgZm9yIG1vcmUgZGV0YWlsLgogICAgICB0CAAAAFBPUF9NQVJLdAEAAAAxcxUBAABQb3AgYWxsIHRoZSBzdGFjayBvYmplY3RzIGF0IGFuZCBhYm92ZSB0aGUgdG9wbW9zdCBtYXJrb2JqZWN0LgoKICAgICAgV2hlbiBhbiBvcGNvZGUgdXNpbmcgYSB2YXJpYWJsZSBudW1iZXIgb2Ygc3RhY2sgb2JqZWN0cyBpcyBkb25lLAogICAgICBQT1BfTUFSSyBpcyB1c2VkIHRvIHJlbW92ZSB0aG9zZSBvYmplY3RzLCBhbmQgdG8gcmVtb3ZlIHRoZSBtYXJrb2JqZWN0CiAgICAgIHRoYXQgZGVsaW1pdGVkIHRoZWlyIHN0YXJ0aW5nIHBvc2l0aW9uIG9uIHRoZSBzdGFjay4KICAgICAgdAMAAABHRVR0AQAAAGdz6AAAAFJlYWQgYW4gb2JqZWN0IGZyb20gdGhlIG1lbW8gYW5kIHB1c2ggaXQgb24gdGhlIHN0YWNrLgoKICAgICAgVGhlIGluZGV4IG9mIHRoZSBtZW1vIG9iamVjdCB0byBwdXNoIGlzIGdpdmVuIGJ5IHRoZSBuZXdsaW5lLXRlcm1pbmF0ZWQKICAgICAgZGVjaW1hbCBzdHJpbmcgZm9sbG93aW5nLiAgQklOR0VUIGFuZCBMT05HX0JJTkdFVCBhcmUgc3BhY2Utb3B0aW1pemVkCiAgICAgIHZlcnNpb25zLgogICAgICB0BgAAAEJJTkdFVHQBAAAAaHOiAAAAUmVhZCBhbiBvYmplY3QgZnJvbSB0aGUgbWVtbyBhbmQgcHVzaCBpdCBvbiB0aGUgc3RhY2suCgogICAgICBUaGUgaW5kZXggb2YgdGhlIG1lbW8gb2JqZWN0IHRvIHB1c2ggaXMgZ2l2ZW4gYnkgdGhlIDEtYnl0ZSB1bnNpZ25lZAogICAgICBpbnRlZ2VyIGZvbGxvd2luZy4KICAgICAgdAsAAABMT05HX0JJTkdFVHQBAAAAanOuAAAAUmVhZCBhbiBvYmplY3QgZnJvbSB0aGUgbWVtbyBhbmQgcHVzaCBpdCBvbiB0aGUgc3RhY2suCgogICAgICBUaGUgaW5kZXggb2YgdGhlIG1lbW8gb2JqZWN0IHRvIHB1c2ggaXMgZ2l2ZW4gYnkgdGhlIDQtYnl0ZSBzaWduZWQKICAgICAgbGl0dGxlLWVuZGlhbiBpbnRlZ2VyIGZvbGxvd2luZy4KICAgICAgdAMAAABQVVR0AQAAAHBz9wAAAFN0b3JlIHRoZSBzdGFjayB0b3AgaW50byB0aGUgbWVtby4gIFRoZSBzdGFjayBpcyBub3QgcG9wcGVkLgoKICAgICAgVGhlIGluZGV4IG9mIHRoZSBtZW1vIGxvY2F0aW9uIHRvIHdyaXRlIGludG8gaXMgZ2l2ZW4gYnkgdGhlIG5ld2xpbmUtCiAgICAgIHRlcm1pbmF0ZWQgZGVjaW1hbCBzdHJpbmcgZm9sbG93aW5nLiAgQklOUFVUIGFuZCBMT05HX0JJTlBVVCBhcmUKICAgICAgc3BhY2Utb3B0aW1pemVkIHZlcnNpb25zLgogICAgICB0BgAAAEJJTlBVVFIoAAAAc7AAAABTdG9yZSB0aGUgc3RhY2sgdG9wIGludG8gdGhlIG1lbW8uICBUaGUgc3RhY2sgaXMgbm90IHBvcHBlZC4KCiAgICAgIFRoZSBpbmRleCBvZiB0aGUgbWVtbyBsb2NhdGlvbiB0byB3cml0ZSBpbnRvIGlzIGdpdmVuIGJ5IHRoZSAxLWJ5dGUKICAgICAgdW5zaWduZWQgaW50ZWdlciBmb2xsb3dpbmcuCiAgICAgIHQLAAAATE9OR19CSU5QVVR0AQAAAHJzvAAAAFN0b3JlIHRoZSBzdGFjayB0b3AgaW50byB0aGUgbWVtby4gIFRoZSBzdGFjayBpcyBub3QgcG9wcGVkLgoKICAgICAgVGhlIGluZGV4IG9mIHRoZSBtZW1vIGxvY2F0aW9uIHRvIHdyaXRlIGludG8gaXMgZ2l2ZW4gYnkgdGhlIDQtYnl0ZQogICAgICBzaWduZWQgbGl0dGxlLWVuZGlhbiBpbnRlZ2VyIGZvbGxvd2luZy4KICAgICAgdAQAAABFWFQxcwEAAACCc4wCAABFeHRlbnNpb24gY29kZS4KCiAgICAgIFRoaXMgY29kZSBhbmQgdGhlIHNpbWlsYXIgRVhUMiBhbmQgRVhUNCBhbGxvdyB1c2luZyBhIHJlZ2lzdHJ5CiAgICAgIG9mIHBvcHVsYXIgb2JqZWN0cyB0aGF0IGFyZSBwaWNrbGVkIGJ5IG5hbWUsIHR5cGljYWxseSBjbGFzc2VzLgogICAgICBJdCBpcyBlbnZpc2lvbmVkIHRoYXQgdGhyb3VnaCBhIGdsb2JhbCBuZWdvdGlhdGlvbiBhbmQKICAgICAgcmVnaXN0cmF0aW9uIHByb2Nlc3MsIHRoaXJkIHBhcnRpZXMgY2FuIHNldCB1cCBhIG1hcHBpbmcgYmV0d2VlbgogICAgICBpbnRzIGFuZCBvYmplY3QgbmFtZXMuCgogICAgICBJbiBvcmRlciB0byBndWFyYW50ZWUgcGlja2xlIGludGVyY2hhbmdlYWJpbGl0eSwgdGhlIGV4dGVuc2lvbgogICAgICBjb2RlIHJlZ2lzdHJ5IG91Z2h0IHRvIGJlIGdsb2JhbCwgYWx0aG91Z2ggYSByYW5nZSBvZiBjb2RlcyBtYXkKICAgICAgYmUgcmVzZXJ2ZWQgZm9yIHByaXZhdGUgdXNlLgoKICAgICAgRVhUMSBoYXMgYSAxLWJ5dGUgaW50ZWdlciBhcmd1bWVudC4gIFRoaXMgaXMgdXNlZCB0byBpbmRleCBpbnRvIHRoZQogICAgICBleHRlbnNpb24gcmVnaXN0cnksIGFuZCB0aGUgb2JqZWN0IGF0IHRoYXQgaW5kZXggaXMgcHVzaGVkIG9uIHRoZSBzdGFjay4KICAgICAgdAQAAABFWFQycwEAAACDc04AAABFeHRlbnNpb24gY29kZS4KCiAgICAgIFNlZSBFWFQxLiAgRVhUMiBoYXMgYSB0d28tYnl0ZSBpbnRlZ2VyIGFyZ3VtZW50LgogICAgICB0BAAAAEVYVDRzAQAAAIRzTwAAAEV4dGVuc2lvbiBjb2RlLgoKICAgICAgU2VlIEVYVDEuICBFWFQ0IGhhcyBhIGZvdXItYnl0ZSBpbnRlZ2VyIGFyZ3VtZW50LgogICAgICB0BgAAAEdMT0JBTHQBAAAAY3OnAQAAUHVzaCBhIGdsb2JhbCBvYmplY3QgKG1vZHVsZS5hdHRyKSBvbiB0aGUgc3RhY2suCgogICAgICBUd28gbmV3bGluZS10ZXJtaW5hdGVkIHN0cmluZ3MgZm9sbG93IHRoZSBHTE9CQUwgb3Bjb2RlLiAgVGhlIGZpcnN0IGlzCiAgICAgIHRha2VuIGFzIGEgbW9kdWxlIG5hbWUsIGFuZCB0aGUgc2Vjb25kIGFzIGEgY2xhc3MgbmFtZS4gIFRoZSBjbGFzcwogICAgICBvYmplY3QgbW9kdWxlLmNsYXNzIGlzIHB1c2hlZCBvbiB0aGUgc3RhY2suICBNb3JlIGFjY3VyYXRlbHksIHRoZQogICAgICBvYmplY3QgcmV0dXJuZWQgYnkgc2VsZi5maW5kX2NsYXNzKG1vZHVsZSwgY2xhc3MpIGlzIHB1c2hlZCBvbiB0aGUKICAgICAgc3RhY2ssIHNvIHVucGlja2xpbmcgc3ViY2xhc3NlcyBjYW4gb3ZlcnJpZGUgdGhpcyBmb3JtIG9mIGxvb2t1cC4KICAgICAgdAYAAABSRURVQ0V0AQAAAFJzTgQAAFB1c2ggYW4gb2JqZWN0IGJ1aWx0IGZyb20gYSBjYWxsYWJsZSBhbmQgYW4gYXJndW1lbnQgdHVwbGUuCgogICAgICBUaGUgb3Bjb2RlIGlzIG5hbWVkIHRvIHJlbWluZCBvZiB0aGUgX19yZWR1Y2VfXygpIG1ldGhvZC4KCiAgICAgIFN0YWNrIGJlZm9yZTogLi4uIGNhbGxhYmxlIHB5dHVwbGUKICAgICAgU3RhY2sgYWZ0ZXI6ICAuLi4gY2FsbGFibGUoKnB5dHVwbGUpCgogICAgICBUaGUgY2FsbGFibGUgYW5kIHRoZSBhcmd1bWVudCB0dXBsZSBhcmUgdGhlIGZpcnN0IHR3byBpdGVtcyByZXR1cm5lZAogICAgICBieSBhIF9fcmVkdWNlX18gbWV0aG9kLiAgQXBwbHlpbmcgdGhlIGNhbGxhYmxlIHRvIHRoZSBhcmd0dXBsZSBpcwogICAgICBzdXBwb3NlZCB0byByZXByb2R1Y2UgdGhlIG9yaWdpbmFsIG9iamVjdCwgb3IgYXQgbGVhc3QgZ2V0IGl0IHN0YXJ0ZWQuCiAgICAgIElmIHRoZSBfX3JlZHVjZV9fIG1ldGhvZCByZXR1cm5zIGEgMy10dXBsZSwgdGhlIGxhc3QgY29tcG9uZW50IGlzIGFuCiAgICAgIGFyZ3VtZW50IHRvIGJlIHBhc3NlZCB0byB0aGUgb2JqZWN0J3MgX19zZXRzdGF0ZV9fLCBhbmQgdGhlbiB0aGUgUkVEVUNFCiAgICAgIG9wY29kZSBpcyBmb2xsb3dlZCBieSBjb2RlIHRvIGNyZWF0ZSBzZXRzdGF0ZSdzIGFyZ3VtZW50LCBhbmQgdGhlbiBhCiAgICAgIEJVSUxEIG9wY29kZSB0byBhcHBseSAgX19zZXRzdGF0ZV9fIHRvIHRoYXQgYXJndW1lbnQuCgogICAgICBJZiB0eXBlKGNhbGxhYmxlKSBpcyBub3QgQ2xhc3NUeXBlLCBSRURVQ0UgY29tcGxhaW5zIHVubGVzcyB0aGUKICAgICAgY2FsbGFibGUgaGFzIGJlZW4gcmVnaXN0ZXJlZCB3aXRoIHRoZSBjb3B5X3JlZyBtb2R1bGUncwogICAgICBzYWZlX2NvbnN0cnVjdG9ycyBkaWN0LCBvciB0aGUgY2FsbGFibGUgaGFzIGEgbWFnaWMKICAgICAgJ19fc2FmZV9mb3JfdW5waWNrbGluZ19fJyBhdHRyaWJ1dGUgd2l0aCBhIHRydWUgdmFsdWUuICBJJ20gbm90IHN1cmUKICAgICAgd2h5IGl0IGRvZXMgdGhpcywgYnV0IEkndmUgc3VyZSBzZWVuIHRoaXMgY29tcGxhaW50IG9mdGVuIGVub3VnaCB3aGVuCiAgICAgIEkgZGlkbid0IHdhbnQgdG8gPHdpbms+LgogICAgICB0BQAAAEJVSUxEdAEAAABic8gCAABGaW5pc2ggYnVpbGRpbmcgYW4gb2JqZWN0LCB2aWEgX19zZXRzdGF0ZV9fIG9yIGRpY3QgdXBkYXRlLgoKICAgICAgU3RhY2sgYmVmb3JlOiAuLi4gYW55b2JqZWN0IGFyZ3VtZW50CiAgICAgIFN0YWNrIGFmdGVyOiAgLi4uIGFueW9iamVjdAoKICAgICAgd2hlcmUgYW55b2JqZWN0IG1heSBoYXZlIGJlZW4gbXV0YXRlZCwgYXMgZm9sbG93czoKCiAgICAgIElmIHRoZSBvYmplY3QgaGFzIGEgX19zZXRzdGF0ZV9fIG1ldGhvZCwKCiAgICAgICAgICBhbnlvYmplY3QuX19zZXRzdGF0ZV9fKGFyZ3VtZW50KQoKICAgICAgaXMgY2FsbGVkLgoKICAgICAgRWxzZSB0aGUgYXJndW1lbnQgbXVzdCBiZSBhIGRpY3QsIHRoZSBvYmplY3QgbXVzdCBoYXZlIGEgX19kaWN0X18sIGFuZAogICAgICB0aGUgb2JqZWN0IGlzIHVwZGF0ZWQgdmlhCgogICAgICAgICAgYW55b2JqZWN0Ll9fZGljdF9fLnVwZGF0ZShhcmd1bWVudCkKCiAgICAgIFRoaXMgbWF5IHJhaXNlIFJ1bnRpbWVFcnJvciBpbiByZXN0cmljdGVkIGV4ZWN1dGlvbiBtb2RlICh3aGljaAogICAgICBkaXNhbGxvd3MgYWNjZXNzIHRvIF9fZGljdF9fIGRpcmVjdGx5KTsgaW4gdGhhdCBjYXNlLCB0aGUgb2JqZWN0CiAgICAgIGlzIHVwZGF0ZWQgaW5zdGVhZCB2aWEKCiAgICAgICAgICBmb3IgaywgdiBpbiBhcmd1bWVudC5pdGVtcygpOgogICAgICAgICAgICAgIGFueW9iamVjdFtrXSA9IHYKICAgICAgdAQAAABJTlNUdAEAAABpc5MJAABCdWlsZCBhIGNsYXNzIGluc3RhbmNlLgoKICAgICAgVGhpcyBpcyB0aGUgcHJvdG9jb2wgMCB2ZXJzaW9uIG9mIHByb3RvY29sIDEncyBPQkogb3Bjb2RlLgogICAgICBJTlNUIGlzIGZvbGxvd2VkIGJ5IHR3byBuZXdsaW5lLXRlcm1pbmF0ZWQgc3RyaW5ncywgZ2l2aW5nIGEKICAgICAgbW9kdWxlIGFuZCBjbGFzcyBuYW1lLCBqdXN0IGFzIGZvciB0aGUgR0xPQkFMIG9wY29kZSAoYW5kIHNlZQogICAgICBHTE9CQUwgZm9yIG1vcmUgZGV0YWlscyBhYm91dCB0aGF0KS4gIHNlbGYuZmluZF9jbGFzcyhtb2R1bGUsIG5hbWUpCiAgICAgIGlzIHVzZWQgdG8gZ2V0IGEgY2xhc3Mgb2JqZWN0LgoKICAgICAgSW4gYWRkaXRpb24sIGFsbCB0aGUgb2JqZWN0cyBvbiB0aGUgc3RhY2sgZm9sbG93aW5nIHRoZSB0b3Btb3N0CiAgICAgIG1hcmtvYmplY3QgYXJlIGdhdGhlcmVkIGludG8gYSB0dXBsZSBhbmQgcG9wcGVkIChhbG9uZyB3aXRoIHRoZQogICAgICB0b3Btb3N0IG1hcmtvYmplY3QpLCBqdXN0IGFzIGZvciB0aGUgVFVQTEUgb3Bjb2RlLgoKICAgICAgTm93IGl0IGdldHMgY29tcGxpY2F0ZWQuICBJZiBhbGwgb2YgdGhlc2UgYXJlIHRydWU6CgogICAgICAgICsgVGhlIGFyZ3R1cGxlIGlzIGVtcHR5IChtYXJrb2JqZWN0IHdhcyBhdCB0aGUgdG9wIG9mIHRoZSBzdGFjawogICAgICAgICAgYXQgdGhlIHN0YXJ0KS4KCiAgICAgICAgKyBJdCdzIGFuIG9sZC1zdHlsZSBjbGFzcyBvYmplY3QgKHRoZSB0eXBlIG9mIHRoZSBjbGFzcyBvYmplY3QgaXMKICAgICAgICAgIENsYXNzVHlwZSkuCgogICAgICAgICsgVGhlIGNsYXNzIG9iamVjdCBkb2VzIG5vdCBoYXZlIGEgX19nZXRpbml0YXJnc19fIGF0dHJpYnV0ZS4KCiAgICAgIHRoZW4gd2Ugd2FudCB0byBjcmVhdGUgYW4gb2xkLXN0eWxlIGNsYXNzIGluc3RhbmNlIHdpdGhvdXQgaW52b2tpbmcKICAgICAgaXRzIF9faW5pdF9fKCkgbWV0aG9kIChwaWNrbGUgaGFzIHdhZmZsZWQgb24gdGhpcyBvdmVyIHRoZSB5ZWFyczsgbm90CiAgICAgIGNhbGxpbmcgX19pbml0X18oKSBpcyBjdXJyZW50IHdpc2RvbSkuICBJbiB0aGlzIGNhc2UsIGFuIGluc3RhbmNlIG9mCiAgICAgIGFuIG9sZC1zdHlsZSBkdW1teSBjbGFzcyBpcyBjcmVhdGVkLCBhbmQgdGhlbiB3ZSB0cnkgdG8gcmViaW5kIGl0cwogICAgICBfX2NsYXNzX18gYXR0cmlidXRlIHRvIHRoZSBkZXNpcmVkIGNsYXNzIG9iamVjdC4gIElmIHRoaXMgc3VjY2VlZHMsCiAgICAgIHRoZSBuZXcgaW5zdGFuY2Ugb2JqZWN0IGlzIHB1c2hlZCBvbiB0aGUgc3RhY2ssIGFuZCB3ZSdyZSBkb25lLiAgSW4KICAgICAgcmVzdHJpY3RlZCBleGVjdXRpb24gbW9kZSBpdCBjYW4gZmFpbCAoYXNzaWdubWVudCB0byBfX2NsYXNzX18gaXMKICAgICAgZGlzYWxsb3dlZCksIGFuZCBJJ20gbm90IHJlYWxseSBzdXJlIHdoYXQgaGFwcGVucyB0aGVuIC0tIGl0IGxvb2tzCiAgICAgIGxpa2UgdGhlIGNvZGUgZW5kcyB1cCBjYWxsaW5nIHRoZSBjbGFzcyBvYmplY3QncyBfX2luaXRfXyBhbnl3YXksCiAgICAgIHZpYSBmYWxsaW5nIGludG8gdGhlIG5leHQgY2FzZS4KCiAgICAgIEVsc2UgKHRoZSBhcmd0dXBsZSBpcyBub3QgZW1wdHksIGl0J3Mgbm90IGFuIG9sZC1zdHlsZSBjbGFzcyBvYmplY3QsCiAgICAgIG9yIHRoZSBjbGFzcyBvYmplY3QgZG9lcyBoYXZlIGEgX19nZXRpbml0YXJnc19fIGF0dHJpYnV0ZSksIHRoZSBjb2RlCiAgICAgIGZpcnN0IGluc2lzdHMgdGhhdCB0aGUgY2xhc3Mgb2JqZWN0IGhhdmUgYSBfX3NhZmVfZm9yX3VucGlja2xpbmdfXwogICAgICBhdHRyaWJ1dGUuICBVbmxpa2UgYXMgZm9yIHRoZSBfX3NhZmVfZm9yX3VucGlja2xpbmdfXyBjaGVjayBpbiBSRURVQ0UsCiAgICAgIGl0IGRvZXNuJ3QgbWF0dGVyIHdoZXRoZXIgdGhpcyBhdHRyaWJ1dGUgaGFzIGEgdHJ1ZSBvciBmYWxzZSB2YWx1ZSwgaXQKICAgICAgb25seSBtYXR0ZXJzIHdoZXRoZXIgaXQgZXhpc3RzIChYWFggdGhpcyBpcyBhIGJ1ZzsgY1BpY2tsZQogICAgICByZXF1aXJlcyB0aGUgYXR0cmlidXRlIHRvIGJlIHRydWUpLiAgSWYgX19zYWZlX2Zvcl91bnBpY2tsaW5nX18KICAgICAgZG9lc24ndCBleGlzdCwgVW5waWNrbGluZ0Vycm9yIGlzIHJhaXNlZC4KCiAgICAgIEVsc2UgKHRoZSBjbGFzcyBvYmplY3QgZG9lcyBoYXZlIGEgX19zYWZlX2Zvcl91bnBpY2tsaW5nX18gYXR0ciksCiAgICAgIHRoZSBjbGFzcyBvYmplY3Qgb2J0YWluZWQgZnJvbSBJTlNUJ3MgYXJndW1lbnRzIGlzIGFwcGxpZWQgdG8gdGhlCiAgICAgIGFyZ3R1cGxlIG9idGFpbmVkIGZyb20gdGhlIHN0YWNrLCBhbmQgdGhlIHJlc3VsdGluZyBpbnN0YW5jZSBvYmplY3QKICAgICAgaXMgcHVzaGVkIG9uIHRoZSBzdGFjay4KCiAgICAgIE5PVEU6ICBjaGVja3MgZm9yIF9fc2FmZV9mb3JfdW5waWNrbGluZ19fIHdlbnQgYXdheSBpbiBQeXRob24gMi4zLgogICAgICB0AwAAAE9CSnQBAAAAb3PYBAAAQnVpbGQgYSBjbGFzcyBpbnN0YW5jZS4KCiAgICAgIFRoaXMgaXMgdGhlIHByb3RvY29sIDEgdmVyc2lvbiBvZiBwcm90b2NvbCAwJ3MgSU5TVCBvcGNvZGUsIGFuZCBpcwogICAgICB2ZXJ5IG11Y2ggbGlrZSBpdC4gIFRoZSBtYWpvciBkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIGNsYXNzIG9iamVjdAogICAgICBpcyB0YWtlbiBvZmYgdGhlIHN0YWNrLCBhbGxvd2luZyBpdCB0byBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgbWVtbwogICAgICByZXBlYXRlZGx5IGlmIHNldmVyYWwgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGNsYXNzIGFyZSBjcmVhdGVkLiAgVGhpcwogICAgICBjYW4gYmUgbXVjaCBtb3JlIGVmZmljaWVudCAoaW4gYm90aCB0aW1lIGFuZCBzcGFjZSkgdGhhbiByZXBlYXRlZGx5CiAgICAgIGVtYmVkZGluZyB0aGUgbW9kdWxlIGFuZCBjbGFzcyBuYW1lcyBpbiBJTlNUIG9wY29kZXMuCgogICAgICBVbmxpa2UgSU5TVCwgT0JKIHRha2VzIG5vIGFyZ3VtZW50cyBmcm9tIHRoZSBvcGNvZGUgc3RyZWFtLiAgSW5zdGVhZAogICAgICB0aGUgY2xhc3Mgb2JqZWN0IGlzIHRha2VuIG9mZiB0aGUgc3RhY2ssIGltbWVkaWF0ZWx5IGFib3ZlIHRoZQogICAgICB0b3Btb3N0IG1hcmtvYmplY3Q6CgogICAgICBTdGFjayBiZWZvcmU6IC4uLiBtYXJrb2JqZWN0IGNsYXNzb2JqZWN0IHN0YWNrc2xpY2UKICAgICAgU3RhY2sgYWZ0ZXI6ICAuLi4gbmV3X2luc3RhbmNlX29iamVjdAoKICAgICAgQXMgZm9yIElOU1QsIHRoZSByZW1haW5kZXIgb2YgdGhlIHN0YWNrIGFib3ZlIHRoZSBtYXJrb2JqZWN0IGlzCiAgICAgIGdhdGhlcmVkIGludG8gYW4gYXJndW1lbnQgdHVwbGUsIGFuZCB0aGVuIHRoZSBsb2dpYyBzZWVtcyBpZGVudGljYWwsCiAgICAgIGV4Y2VwdCB0aGF0IG5vIF9fc2FmZV9mb3JfdW5waWNrbGluZ19fIGNoZWNrIGlzIGRvbmUgKFhYWCB0aGlzIGlzCiAgICAgIGEgYnVnOyBjUGlja2xlIGRvZXMgdGVzdCBfX3NhZmVfZm9yX3VucGlja2xpbmdfXykuICBTZWUgSU5TVCBmb3IKICAgICAgdGhlIGdvcnkgZGV0YWlscy4KCiAgICAgIE5PVEU6ICBJbiBQeXRob24gMi4zLCBJTlNUIGFuZCBPQkogYXJlIGlkZW50aWNhbCBleGNlcHQgZm9yIGhvdyB0aGV5CiAgICAgIGdldCB0aGUgY2xhc3Mgb2JqZWN0LiAgVGhhdCB3YXMgYWx3YXlzIHRoZSBpbnRlbnQ7IHRoZSBpbXBsZW1lbnRhdGlvbnMKICAgICAgaGFkIGRpdmVyZ2VkIGZvciBhY2NpZGVudGFsIHJlYXNvbnMuCiAgICAgIHQGAAAATkVXT0JKcwEAAACBc0wBAABCdWlsZCBhbiBvYmplY3QgaW5zdGFuY2UuCgogICAgICBUaGUgc3RhY2sgYmVmb3JlIHNob3VsZCBiZSB0aG91Z2h0IG9mIGFzIGNvbnRhaW5pbmcgYSBjbGFzcwogICAgICBvYmplY3QgZm9sbG93ZWQgYnkgYW4gYXJndW1lbnQgdHVwbGUgKHRoZSB0dXBsZSBiZWluZyB0aGUgc3RhY2sKICAgICAgdG9wKS4gIENhbGwgdGhlc2UgY2xzIGFuZCBhcmdzLiAgVGhleSBhcmUgcG9wcGVkIG9mZiB0aGUgc3RhY2ssCiAgICAgIGFuZCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgY2xzLl9fbmV3X18oY2xzLCAqYXJncykgaXMgcHVzaGVkIGJhY2sKICAgICAgb250byB0aGUgc3RhY2suCiAgICAgIHQFAAAAUFJPVE9zAQAAAIBzrgAAAFByb3RvY29sIHZlcnNpb24gaW5kaWNhdG9yLgoKICAgICAgRm9yIHByb3RvY29sIDIgYW5kIGFib3ZlLCBhIHBpY2tsZSBtdXN0IHN0YXJ0IHdpdGggdGhpcyBvcGNvZGUuCiAgICAgIFRoZSBhcmd1bWVudCBpcyB0aGUgcHJvdG9jb2wgdmVyc2lvbiwgYW4gaW50IGluIHJhbmdlKDIsIDI1NikuCiAgICAgIHQEAAAAU1RPUHQBAAAALnPPAAAAU3RvcCB0aGUgdW5waWNrbGluZyBtYWNoaW5lLgoKICAgICAgRXZlcnkgcGlja2xlIGVuZHMgd2l0aCB0aGlzIG9wY29kZS4gIFRoZSBvYmplY3QgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2sKICAgICAgaXMgcG9wcGVkLCBhbmQgdGhhdCdzIHRoZSByZXN1bHQgb2YgdW5waWNrbGluZy4gIFRoZSBzdGFjayBzaG91bGQgYmUKICAgICAgZW1wdHkgdGhlbi4KICAgICAgdAYAAABQRVJTSUR0AQAAAFBzGAIAAFB1c2ggYW4gb2JqZWN0IGlkZW50aWZpZWQgYnkgYSBwZXJzaXN0ZW50IElELgoKICAgICAgVGhlIHBpY2tsZSBtb2R1bGUgZG9lc24ndCBkZWZpbmUgd2hhdCBhIHBlcnNpc3RlbnQgSUQgbWVhbnMuICBQRVJTSUQncwogICAgICBhcmd1bWVudCBpcyBhIG5ld2xpbmUtdGVybWluYXRlZCBzdHItc3R5bGUgKG5vIGVtYmVkZGVkIGVzY2FwZXMsIG5vCiAgICAgIGJyYWNrZXRpbmcgcXVvdGUgY2hhcmFjdGVycykgc3RyaW5nLCB3aGljaCAqaXMqICJ0aGUgcGVyc2lzdGVudCBJRCIuCiAgICAgIFRoZSB1bnBpY2tsZXIgcGFzc2VzIHRoaXMgc3RyaW5nIHRvIHNlbGYucGVyc2lzdGVudF9sb2FkKCkuICBXaGF0ZXZlcgogICAgICBvYmplY3QgdGhhdCByZXR1cm5zIGlzIHB1c2hlZCBvbiB0aGUgc3RhY2suICBUaGVyZSBpcyBubyBpbXBsZW1lbnRhdGlvbgogICAgICBvZiBwZXJzaXN0ZW50X2xvYWQoKSBpbiBQeXRob24ncyB1bnBpY2tsZXI6ICBpdCBtdXN0IGJlIHN1cHBsaWVkIGJ5IGFuCiAgICAgIHVucGlja2xlciBzdWJjbGFzcy4KICAgICAgdAkAAABCSU5QRVJTSUR0AQAAAFFzWAEAAFB1c2ggYW4gb2JqZWN0IGlkZW50aWZpZWQgYnkgYSBwZXJzaXN0ZW50IElELgoKICAgICAgTGlrZSBQRVJTSUQsIGV4Y2VwdCB0aGUgcGVyc2lzdGVudCBJRCBpcyBwb3BwZWQgb2ZmIHRoZSBzdGFjayAoaW5zdGVhZAogICAgICBvZiBiZWluZyBhIHN0cmluZyBlbWJlZGRlZCBpbiB0aGUgb3Bjb2RlIGJ5dGVzdHJlYW0pLiAgVGhlIHBlcnNpc3RlbnQKICAgICAgSUQgaXMgcGFzc2VkIHRvIHNlbGYucGVyc2lzdGVudF9sb2FkKCksIGFuZCB3aGF0ZXZlciBvYmplY3QgdGhhdAogICAgICByZXR1cm5zIGlzIHB1c2hlZCBvbiB0aGUgc3RhY2suICBTZWUgUEVSU0lEIGZvciBtb3JlIGRldGFpbC4KICAgICAgcyUAAAByZXBl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bGUuCgogICAgRWFjaCBvcGNvZGUgaW4gdGhlIHBpY2tsZSBpcyBnZW5lcmF0ZWQsIGZyb20gdGhlIGN1cnJlbnQgcGlja2xlIHBvc2l0aW9uLAogICAgc3RvcHBpbmcgYWZ0ZXIgYSBTVE9QIG9wY29kZSBpcyBkZWxpdmVyZWQuICBBIHRyaXBsZSBpcyBnZW5lcmF0ZWQgZm9yCiAgICBlYWNoIG9wY29kZToKCiAgICAgICAgb3Bjb2RlLCBhcmcsIHBvcwoKICAgIG9wY29kZSBpcyBhbiBPcGNvZGVJbmZvIHJlY29yZCwgZGVzY3JpYmluZyB0aGUgY3VycmVudCBvcGNvZGUuCgogICAgSWYgdGhlIG9wY29kZSBoYXMgYW4gYXJndW1lbnQgZW1iZWRkZWQgaW4gdGhlIHBpY2tsZSwgYXJnIGlzIGl0cyBkZWNvZGVkCiAgICB2YWx1ZSwgYXMgYSBQeXRob24gb2JqZWN0LiAgSWYgdGhlIG9wY29kZSBkb2Vzbid0IGhhdmUgYW4gYXJndW1lbnQsIGFyZwogICAgaXMgTm9uZS4KCiAgICBJZiB0aGUgcGlja2xlIGhhcyBhIHRlbGwoKSBtZXRob2QsIHBvcyB3YXMgdGhlIHZhbHVlIG9mIHBpY2tsZS50ZWxsKCkKICAgIGJlZm9yZSByZWFkaW5nIHRoZSBjdXJyZW50IG9wY29kZS4gIElmIHRoZSBwaWNrbGUgaXMgYSBzdHJpbmcgb2JqZWN0LAogICAgaXQncyB3cmFwcGVkIGluIGEgU3RyaW5nSU8gb2JqZWN0LCBhbmQgdGhlIGxhdHRlcidzIHRlbGwoKSByZXN1bHQgaXMKICAgIHVzZWQuICBFbHNlICh0aGUgcGlja2xlIGRvZXNuJ3QgaGF2ZSBhIHRlbGwoKSwgYW5kIGl0J3Mgbm90IG9idmlvdXMgaG93CiAgICB0byBxdWVyeSBpdHMgY3VycmVudCBwb3NpdGlvbikgcG9zIGlzIE5vbmUuCiAgICBp/////050BAAAAHRlbGxjAAAAAAAAAAABAAAAUwAAAHMEAAAAZAAAUygBAAAATigBAAAAUlYAAAAoAAAAACgAAAAAKAAAAABzUwAAAC90bXAvbmRrLVVzZXIvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVp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UFVUIG9wY29kZXMuCiAgICBQYXNzaW5nIHRoZSBzYW1lIG1lbW8gb2JqZWN0IHRvIGFub3RoZXIgZGlzKCkgY2FsbCB0aGVuIGFsbG93cyBkaXNhc3NlbWJseQogICAgdG8gcHJvY2VlZCBhY3Jvc3MgbXVsdGlwbGUgcGlja2xlcyB0aGF0IHdlcmUgYWxsIGNyZWF0ZWQgYnkgdGhlIHNhbWUKICAgIHBpY2tsZXIgd2l0aCB0aGUgc2FtZSBtZW1vLiAgT3JkaW5hcmlseSB5b3UgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCB0aGlzLgoKICAgIE9wdGlvbmFsIGFyZyBpbmRlbnRsZXZlbCBpcyB0aGUgbnVtYmVyIG9mIGJsYW5rcyBieSB3aGljaCB0byBpbmRlbnQKICAgIGEgbmV3IE1BUksgbGV2ZWwuICBJdCBkZWZhdWx0cyB0byA0LgoKICAgIEluIGFkZGl0aW9uIHRvIHByaW50aW5nIHRoZSBkaXNhc3NlbWJseSwgc29tZSBzYW5pdHkgY2hlY2tzIGFyZSBtYWRlOgoKICAgICsgQWxsIGVtYmVkZGVkIG9wY29kZSBhcmd1bWVudHMgIm1ha2Ugc2Vuc2UiLgoKICAgICsgRXhwbGljaXQgYW5kIGltcGxpY2l0IHBvcCBvcGVyYXRpb25zIGhhdmUgZW5vdWdoIGl0ZW1zIG9uIHRoZSBzdGFjay4KCiAgICArIFdoZW4gYW4gb3Bjb2RlIGltcGxpY2l0bHkgcmVmZXJzIHRvIGEgbWFya29iamVjdCwgYSBtYXJrb2JqZWN0IGlzCiAgICAgIGFjdHVhbGx5IG9uIHRoZSBzdGFjay4KCiAgICArIEEgbWVtbyBlbnRyeSBpc24ndCByZWZlcmVuY2VkIGJlZm9yZSBpdCdzIGRlZmluZWQuCgogICAgKyBUaGUgbWFya29iamVjdCBpc24ndCBzdG9yZWQgaW4gdGhlIG1lbW8uCgogICAgKyBBIG1lbW8gZW50cnkgaXNuJ3QgcmVkZWZpbmVkLgogICAgaf////90AQAAACBzBAAAACU1ZDpzCQAAACUtNHMgJXMlc2kBAAAAUpYAAABzHwAAAChNQVJLIGF0IHVua25vd24gb3Bjb2RlIG9mZnNldClzDAAAAChNQVJL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IDI1OiAoICAgIE1BUksKICAgMjY6IGQgICAgICAgIERJQ1QgICAgICAgKE1BUksgYXQgMjUpCiAgIDI3OiBwICAgIFBVVCAgICAgICAgMgogICAzMDogUyAgICBTVFJJTkcgICAgICdhYmMnCiAgIDM3OiBwICAgIFBVVCAgICAgICAgMwogICA0MDogViAgICBVTklDT0RFICAgIHUnZGVmJwogICA0NTogcCAgICBQVVQgICAgICAgIDQKICAgNDg6IHMgICAgU0VUSVRFTQogICA0OTogYSAgICBBUFBFTkQKICAgNTA6IC4gICAgU1RPUApoaWdoZXN0IHByb3RvY29sIGFtb25nIG9wY29kZXMgPSAwCgpUcnkgYWdhaW4gd2l0aCBhICJiaW5hcnkiIHBpY2tsZS4KCj4+PiBwa2wgPSBwaWNrbGUuZHVtcHMoeCwgMSkKPj4+IGRpcyhwa2wpCiAgICAwOiBdICAgIEVNUFRZX0xJU1QKICAgIDE6IHEgICAgQklOUFVUICAgICAwCiAgICAzOiAoICAgIE1BUksKICAgIDQ6IEsgICAgICAgIEJJTklOVDEgICAgMQogICAgNjogSyAgICAgICAgQklOSU5UMSAgICAyCiAgICA4OiAoICAgICAgICBNQVJLCiAgICA5OiBLICAgICAgICAgICAgQklOSU5UMSAgICAzCiAgIDExOiBLICAgICAgICAgICAgQklOSU5UMSAgICA0CiAgIDEzOiB0ICAgICAgICAgICAgVFVQTEUgICAgICAoTUFSSyBhdCA4KQogICAxNDogcSAgICAgICAgQklOUFVUICAgICAxCiAgIDE2OiB9ICAgICAgICBFTVBUWV9ESUNUCiAgIDE3OiBxICAgICAgICBCSU5QVVQgICAgIDIKICAgMTk6IFUgICAgICAgIFNIT1JUX0JJTlNUUklORyAnYWJjJwogICAyNDogcSAgICAgICAgQklOUFVUICAgICAzCiAgIDI2OiBYICAgICAgICBCSU5VTklDT0RFIHUnZGVmJwogICAzNDogcSAgICAgICAgQklOUFVUICAgICA0CiAgIDM2OiBzICAgICAgICBTRVRJVEVNCiAgIDM3OiBlICAgICAgICBBUFBFTkRTICAgIChNQVJLIGF0IDMpCiAgIDM4OiAuICAgIFNUT1AKaGlnaGVzdCBwcm90b2NvbCBhbW9uZyBvcGNvZGVzID0gMQoKRXhlcmNpc2UgdGhlIElOU1QvT0JKL0JVSUxEIGZhbWlseS4KCj4+PiBpbXBvcnQgcGlja2xldG9vbHMKPj4+IGRpcyhwaWNrbGUuZHVtcHMocGlja2xldG9vbHMuZGlzLCAwKSkKICAgIDA6IGMgICAgR0xPQkFMICAgICAncGlja2xldG9vbHMgZGlzJwogICAxNzogcCAgICBQVVQgICAgICAgIDAKICAgMjA6IC4gICAgU1RPUApoaWdoZXN0IHByb3RvY29sIGFtb25nIG9wY29kZXMgPSAwCgo+Pj4gZnJvbSBwaWNrbGV0b29scyBpbXBvcnQgX0V4YW1wbGUKPj4+IHggPSBbX0V4YW1wbGUoNDIpXSAqIDIKPj4+IGRpcyhwaWNrbGUuZHVtcHMoeCwgMCkpCiAgICAwOiAoICAgIE1BUksKICAgIDE6IGwgICAgICAgIExJU1QgICAgICAgKE1BUksgYXQgMCkKICAgIDI6IHAgICAgUFVUICAgICAgICAwCiAgICA1OiAoICAgIE1BUksKICAgIDY6IGkgICAgICAgIElOU1QgICAgICAgJ3BpY2tsZXRvb2xzIF9FeGFtcGxlJyAoTUFSSyBhdCA1KQogICAyODogcCAgICBQVVQgICAgICAgIDEKICAgMzE6ICggICAgTUFSSwogICAzMjogZCAgICAgICAgRElDVCAgICAgICAoTUFSSyBhdCAzMSkKICAgMzM6IHAgICAgUFVUICAgICAgICAyCiAgIDM2OiBTICAgIFNUUklORyAgICAgJ3ZhbHVlJwogICA0NTogcCAgICBQVVQgICAgICAgIDMKICAgNDg6IEkgICAgSU5UICAgICAgICA0MgogICA1MjogcyAgICBTRVRJVEVNCiAgIDUzOiBiICAgIEJVSUxECiAgIDU0OiBhICAgIEFQUEVORAogICA1NTogZyAgICBHRVQgICAgICAgIDEKICAgNTg6IGEgICAgQVBQRU5ECiAgIDU5OiAuICAgIFNUT1AKaGlnaGVzdCBwcm90b2NvbCBhbW9uZyBvcGNvZGVzID0gMAoKPj4+IGRpcyhwaWNrbGUuZHVtcHMoeCwgMSkpCiAgICAwOiBdICAgIEVNUFRZX0xJU1QKICAgIDE6IHEgICAgQklOUFVUICAgICAwCiAgICAzOiAoICAgIE1BUksKICAgIDQ6ICggICAgICAgIE1BUksKICAgIDU6IGMgICAgICAgICAgICBHTE9CQUwgICAgICdwaWNrbGV0b29scyBfRXhhbXBsZScKICAgMjc6IHEgICAgICAgICAgICBCSU5QVVQgICAgIDEKICAgMjk6IG8gICAgICAgICAgICBPQkogICAgICAgIChNQVJLIGF0IDQpCiAgIDMwOiBxICAgICAgICBCSU5QVVQgICAgIDIKICAgMzI6IH0gICAgICAgIEVNUFRZX0RJQ1QKICAgMzM6IHEgICAgICAgIEJJTlBVVCAgICAgMwogICAzNTogVSAgICAgICAgU0hPUlRfQklOU1RSSU5HICd2YWx1ZScKICAgNDI6IHEgICAgICAgIEJJTlBVVCAgICAgNAogICA0NDogSyAgICAgICAgQklOSU5UMSAgICA0MgogICA0NjogcyAgICAgICAgU0VUSVRFTQogICA0NzogYiAgICAgICAgQlVJTEQKICAgNDg6IGggICAgICAgIEJJTkdFVCAgICAgMgogICA1MDogZSAgICAgICAgQVBQRU5EUyAgICAoTUFSSyBhdCAzKQogICA1MTogLiAgICBTVE9QCmhpZ2hlc3QgcHJvdG9jb2wgYW1vbmcgb3Bjb2RlcyA9IDEKClRyeSAidGhlIGNhbm9uaWNhbCIgcmVjdXJzaXZlLW9iamVjdCB0ZXN0LgoKPj4+IEwgPSBbXQo+Pj4gVCA9IEwsCj4+PiBMLmFwcGVuZChUKQo+Pj4gTFswXSBpcyBUClRydWUKPj4+IFRbMF0gaXMgTApUcnVlCj4+PiBMWzBdWzBdIGlzIEwKVHJ1ZQo+Pj4gVFswXVswXSBpcyBUClRydWUKPj4+IGRpcyhwaWNrbGUuZHVtcHMoTCwgMCkpCiAgICAwOiAoICAgIE1BUksKICAgIDE6IGwgICAgICAgIExJU1QgICAgICAgKE1BUksgYXQgMCkKICAgIDI6IHAgICAgUFVUICAgICAgICAwCiAgICA1OiAoICAgIE1BUksKICAgIDY6IGcgICAgICAgIEdFVCAgICAgICAgMAogICAgOTogdCAgICAgICAgVFVQTEUgICAgICAoTUFSSyBhdCA1KQogICAxMDogcCAgICBQVVQgICAgICAgIDEKICAgMTM6IGEgICAgQVBQRU5ECiAgIDE0OiAuICAgIFNUT1AKaGlnaGVzdCBwcm90b2NvbCBhbW9uZyBvcGNvZGVzID0gMAoKPj4+IGRpcyhwaWNrbGUuZHVtcHMoTCwgMSkpCiAgICAwOiBdICAgIEVNUFRZX0xJU1QKICAgIDE6IHEgICAgQklOUFVUICAgICAwCiAgICAzOiAoICAgIE1BUksKICAgIDQ6IGggICAgICAgIEJJTkdFVCAgICAgMAogICAgNjogdCAgICAgICAgVFVQTEUgICAgICAoTUFSSyBhdCAzKQogICAgNzogcSAgICBCSU5QVVQgICAgIDEKICAgIDk6IGEgICAgQVBQRU5ECiAgIDEwOiAuICAgIFNUT1AKaGlnaGVzdCBwcm90b2NvbCBhbW9uZyBvcGNvZGVzID0gMQoKTm90ZSB0aGF0LCBpbiB0aGUgcHJvdG9jb2wgMCBwaWNrbGUgb2YgdGhlIHJlY3Vyc2l2ZSB0dXBsZSwgdGhlIGRpc2Fzc2VtYmxlcgpoYXMgdG8gZW11bGF0ZSB0aGUgc3RhY2sgaW4gb3JkZXIgdG8gcmVhbGl6ZSB0aGF0IHRoZSBQT1Agb3Bjb2RlIGF0IDE2IGdldHMKcmlkIG9mIHRoZSBNQVJLIGF0IDAuCgo+Pj4gZGlzKHBpY2tsZS5kdW1wcyhULCAwKSkKICAgIDA6ICggICAgTUFSSwogICAgMTogKCAgICAgICAgTUFSSwogICAgMjogbCAgICAgICAgICAgIExJU1QgICAgICAgKE1BUksgYXQgMSkKICAgIDM6IHAgICAgICAgIFBVVCAgICAgICAgMAogICAgNjogKCAgICAgICAgTUFSSwogICAgNzogZyAgICAgICAgICAgIEdFVCAgICAgICAgMAogICAxMDogdCAgICAgICAgICAgIFRVUExFICAgICAgKE1BUksgYXQgNikKICAgMTE6IHAgICAgICAgIFBVVCAgICAgICAgMQogICAxNDogYSAgICAgICAgQVBQRU5ECiAgIDE1OiAwICAgICAgICBQT1AKICAgMTY6IDAgICAgICAgIFBPUCAgICAgICAgKE1BUksgYXQgMCkKICAgMTc6IGcgICAgR0VUICAgICAgICAxCiAgIDIwOiAuICAgIFNUT1AKaGlnaGVzdCBwcm90b2NvbCBhbW9uZyBvcGNvZGVzID0gMAoKPj4+IGRpcyhwaWNrbGUuZHVtcHMoVCwgMSkpCiAgICAwOiAoICAgIE1BUksKICAgIDE6IF0gICAgICAgIEVNUFRZX0xJU1QKICAgIDI6IHEgICAgICAgIEJJTlBVVCAgICAgMAogICAgNDogKCAgICAgICAgTUFSSwogICAgNTogaCAgICAgICAgICAgIEJJTkdFVCAgICAgMAogICAgNzogdCAgICAgICAgICAgIFRVUExFICAgICAgKE1BUksgYXQgNCkKICAgIDg6IHEgICAgICAgIEJJTlBVVCAgICAgMQogICAxMDogYSAgICAgICAgQVBQRU5ECiAgIDExOiAxICAgICAgICBQT1BfTUFSSyAgIChNQVJLIGF0IDApCiAgIDEyOiBoICAgIEJJTkdFVCAgICAgMQogICAxNDogLiAgICBTVE9QCmhpZ2hlc3QgcHJvdG9jb2wgYW1vbmcgb3Bjb2RlcyA9IDEKClRyeSBwcm90b2NvbCAyLgoKPj4+IGRpcyhwaWNrbGUuZHVtcHMoTCwgMikpCiAgICAwOiBceDgwIFBST1RPICAgICAgMgogICAgMjogXSAgICBFTVBUWV9MSVNUCiAgICAzOiBxICAgIEJJTlBVVCAgICAgMAogICAgNTogaCAgICBCSU5HRVQgICAgIDAKICAgIDc6IFx4ODUgVFVQTEUxCiAgICA4OiBxICAgIEJJTlBVVCAgICAgMQogICAxMDogYSAgICBBUFBFTkQKICAgMTE6IC4gICAgU1RPUApoaWdoZXN0IHByb3RvY29sIGFtb25nIG9wY29kZXMgPSAyCgo+Pj4gZGlzKHBpY2tsZS5kdW1wcyhULCAyKSkKICAgIDA6IFx4ODAgUFJPVE8gICAgICAyCiAgICAyOiBdICAgIEVNUFRZX0xJU1QKICAgIDM6IHEgICAgQklOUFVUICAgICAwCiAgICA1OiBoICAgIEJJTkdFVCAgICAgMAogICAgNzogXHg4NSBUVVBMRTEKICAgIDg6IHEgICAgQklOUFVUICAgICAxCiAgIDEwOiBhICAgIEFQUEVORAogICAxMTogMCAgICBQT1AKICAg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CAkCCRYGAQYBBgEGBgkDCREGAQYBBgEGBgkDCQ4GAQYBBgEGBgkCCRsGAQYBBgEGBwkDCR0JGAYBBgEGAQYICQIGAQYBBgEGBQkDCQkGAQYBBgEGCAkCCRAGAQYBBgEGDQkEEAIJFQYBBgEGAQYGCQIJFwYBBgEGAQYICQkWHgYBBgEGAQkCBgEGAQYBCQIGAQYBDwEJAwYBBgEJAQkCBgEGAQYBCQIGAQYBBgEJAgYBBgEGAQkCBgEGAQwBCQIGAQYBBgEJAgYBBgEGAQkCBgEGAQYBCQIGAQYBBgEJAgYBBgEGCgkCBgEGAQYOCQUWOwYFDAEGAQYBBgEJAQYSBgIMAQYBBgEGAQkBBgcGAgwBBgEGAQYBCQEGBQYCDAEGAQYBBgEJAQYGBgIMAQYBBgEGAQkBBgsGAgwBBgEGAQYBCQEGBAYCDAEGAQYBBgEJAQYEBgQMAQYBBgEGAQkBBgYGAgwBBgEGAQYBCQEGBgYCDAEGAQYBBgEJAQYGBgQMAQYBBgEGAQkBBgEGBQwBBgEGAQYBCQEGAwYCDAEGAQYBBgEJAQYDBgQMAQYBBgEGAQkBBgYGAgwBBgEGAQYBCQEGBgYEDAEGAQYBBgEJAQYNBgIMAQYBBgEGAQkBBgkGBAwBBgEGAQYBCQEGAQYCDAEGAQYBDAEJAQYHBgIMAQYBBgEPAQkBBgcGAgwBBgEGAQwBCQEGCQYEDAEGAQYBBgEJAQYBBgIMAQYBBgEMAQkBBgkGAgwBBgEGAQkBCQEGCAYCDAEGAQYBDAEJAQYIBgIMAQYBBgEPAQkBBggGBAwBBgEGAQYBCQEGAQYCDAEGAQYBDAEJAQYKBgIMAQYBBgEPAQkBBgcGAgwBBgEGAQ8BCQEGDgYEDAEGAQYBCQEGAQYBBgIMAQYBBgEJAQwBBgEGAgwBBgEGAQYBCQEGBgYCDAEGAQYBDAEGAQYGBgUMAQYBBgEGAQkBBgYGAgwBBgEGAQYBCQEGBQYCDAEGAQYBBgEJAQYFBgIMAQYBBgEGAQYBBgYGAgwBBgEGAQYBBgEGBQYCDAEGAQYBBgEGAQYFBgUMAQYBBgEGAQkBBg8GAgwBBgEGAQYBCQEGBAYCDAEGAQYBBgEJAQYEBgUMAQYBBgEGAQkBBggGBwwBBgEGAQwBCQEGFgYCDAEGAQYBDAEJAQYZBgIMAQYBBgEMAQkBBjEGAgwBBgEGAQ8BCQEGGgYCDAEGAQYBDAEJAQYIBgQMAQYBBgEGAQYBBgUGAgwBBgEGAQkBBgEGBgYEDAEGAQYBBgEJAQYKBgIMAQYBBgEJAQkBBgcMAgMDBgEGAhkBDwEGASABDwEGASACDQERAgwHBgENAREBAwIMJgcBAwUJOQkbEokTzwYcBgIKAQoDCQQMAQ==