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GwBkHABsagBaagBkGwBkHABsKABaKABlagBqawBlKABqbABlaQAZgwEAAW4AAGQcAFMoiQAAAHPLCQAAClRoaXMgaXMgYSBQeTIuMyBpbXBsZW1lbnRhdGlvbiBvZiBkZWNpbWFsIGZsb2F0aW5nIHBvaW50IGFyaXRobWV0aWMgYmFzZWQgb24KdGhlIEdlbmVyYWwgRGVjaW1hbCBBcml0aG1ldGljIFNwZWNpZmljYXRpb246CgogICAgaHR0cDovL3NwZWxlb3Ryb3ZlLmNvbS9kZWNpbWFsL2RlY2FyaXRoLmh0bWwKCmFuZCBJRUVFIHN0YW5kYXJkIDg1NC0xOTg3OgoKICAgIHd3dy5jcy5iZXJrZWxleS5lZHUvfmVqci9wcm9qZWN0cy83NTQvcHJpdmF0ZS9kcmFmdHMvODU0LTE5ODcvZGlyLmh0bWwKCkRlY2ltYWwgZmxvYXRpbmcgcG9pbnQgaGFzIGZpbml0ZSBwcmVjaXNpb24gd2l0aCBhcmJpdHJhcmlseSBsYXJnZSBib3VuZHMuCgpUaGUgcHVycG9zZSBvZiB0aGlzIG1vZHVsZSBpcyB0byBzdXBwb3J0IGFyaXRobWV0aWMgdXNpbmcgZmFtaWxpYXIKInNjaG9vbGhvdXNlIiBydWxlcyBhbmQgdG8gYXZvaWQgc29tZSBvZiB0aGUgdHJpY2t5IHJlcHJlc2VudGF0aW9uCmlzc3VlcyBhc3NvY2lhdGVkIHdpdGggYmluYXJ5IGZsb2F0aW5nIHBvaW50LiAgVGhlIHBhY2thZ2UgaXMgZXNwZWNpYWxseQp1c2VmdWwgZm9yIGZpbmFuY2lhbCBhcHBsaWNhdGlvbnMgb3IgZm9yIGNvbnRleHRzIHdoZXJlIHVzZXJzIGhhdmUKZXhwZWN0YXRpb25zIHRoYXQgYXJlIGF0IG9kZHMgd2l0aCBiaW5hcnkgZmxvYXRpbmcgcG9pbnQgKGZvciBpbnN0YW5jZSwKaW4gYmluYXJ5IGZsb2F0aW5nIHBvaW50LCAxLjAwICUgMC4xIGdpdmVzIDAuMDk5OTk5OTk5OTk5OTk5OTUgaW5zdGVhZApvZiB0aGUgZXhwZWN0ZWQgRGVjaW1hbCgnMC4wMCcpIHJldHVybmVkIGJ5IGRlY2ltYWwgZmxvYXRpbmcgcG9pbnQpLgoKSGVyZSBhcmUgc29tZSBleGFtcGxlcyBvZiB1c2luZyB0aGUgZGVjaW1hbCBtb2R1bGU6Cgo+Pj4gZnJvbSBkZWNpbWFsIGltcG9ydCAqCj4+PiBzZXRjb250ZXh0KEV4dGVuZGVkQ29udGV4dCkKPj4+IERlY2ltYWwoMCkKRGVjaW1hbCgnMCcpCj4+PiBEZWNpbWFsKCcxJykKRGVjaW1hbCgnMScpCj4+PiBEZWNpbWFsKCctLjAxMjMnKQpEZWNpbWFsKCctMC4wMTIzJykKPj4+IERlY2ltYWwoMTIzNDU2KQpEZWNpbWFsKCcxMjM0NTYnKQo+Pj4gRGVjaW1hbCgnMTIzLjQ1ZTEyMzQ1Njc4OTAxMjM0NTY3ODkwJykKRGVjaW1hbCgnMS4yMzQ1RSsxMjM0NTY3ODkwMTIzNDU2Nzg5MicpCj4+PiBEZWNpbWFsKCcxLjMzJykgKyBEZWNpbWFsKCcxLjI3JykKRGVjaW1hbCgnMi42MCcpCj4+PiBEZWNpbWFsKCcxMi4zNCcpICsgRGVjaW1hbCgnMy44NycpIC0gRGVjaW1hbCgnMTguNDEnKQpEZWNpbWFsKCctMi4yMCcpCj4+PiBkaWcgPSBEZWNpbWFsKDEpCj4+PiBwcmludCBkaWcgLyBEZWNpbWFsKDMpCjAuMzMzMzMzMzMzCj4+PiBnZXRjb250ZXh0KCkucHJlYyA9IDE4Cj4+PiBwcmludCBkaWcgLyBEZWNpbWFsKDMpCjAuMzMzMzMzMzMzMzMzMzMzMzMzCj4+PiBwcmludCBkaWcuc3FydCgpCjEKPj4+IHByaW50IERlY2ltYWwoMykuc3FydCgpCjEuNzMyMDUwODA3NTY4ODc3MjkKPj4+IHByaW50IERlY2ltYWwoMykgKiogMTIzCjQuODUxOTI3ODA5NzY4OTY0MjdFKzU4Cj4+PiBpbmYgPSBEZWNpbWFsKDEpIC8gRGVjaW1hbCgwKQo+Pj4gcHJpbnQgaW5mCkluZmluaXR5Cj4+PiBuZWdpbmYgPSBEZWNpbWFsKC0xKSAvIERlY2ltYWwoMCkKPj4+IHByaW50IG5lZ2luZgotSW5maW5pdHkKPj4+IHByaW50IG5lZ2luZiArIGluZgpOYU4KPj4+IHByaW50IG5lZ2luZiAqIGluZgotSW5maW5pdHkKPj4+IHByaW50IGRpZyAvIDAKSW5maW5pdHkKPj4+IGdldGNvbnRleHQoKS50cmFwc1tEaXZpc2lvbkJ5WmVyb10gPSAxCj4+PiBwcmludCBkaWcgLyAwClRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAuLi4KICAuLi4KICAuLi4KRGl2aXNpb25CeVplcm86IHggLyAwCj4+PiBjID0gQ29udGV4dCgpCj4+PiBjLnRyYXBzW0ludmFsaWRPcGVyYXRpb25dID0gMAo+Pj4gcHJpbnQgYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXQowCj4+PiBjLmRpdmlkZShEZWNpbWFsKDApLCBEZWNpbWFsKDApKQpEZWNpbWFsKCdOYU4nKQo+Pj4gYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDEKPj4+IHByaW50IGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0KMQo+Pj4gYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDAKPj4+IHByaW50IGMuZmxhZ3NbSW52YWxpZE9wZXJhdGlvbl0KMAo+Pj4gcHJpbnQgYy5kaXZpZGUoRGVjaW1hbCgwKSwgRGVjaW1hbCgwKSkKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIC4uLgogIC4uLgogIC4uLgpJbnZhbGlkT3BlcmF0aW9uOiAwIC8gMAo+Pj4gcHJpbnQgYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXQoxCj4+PiBjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dID0gMAo+Pj4gYy50cmFwc1tJbnZhbGlkT3BlcmF0aW9uXSA9IDAKPj4+IHByaW50IGMuZGl2aWRlKERlY2ltYWwoMCksIERlY2ltYWwoMCkpCk5hTgo+Pj4gcHJpbnQgYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXQoxCj4+Pgp0BwAAAERlY2ltYWx0BwAAAENvbnRleHR0DgAAAERlZmF1bHRDb250ZXh0dAwAAABCYXNpY0NvbnRleHR0DwAAAEV4dGVuZGVkQ29udGV4dHQQAAAARGVjaW1hbEV4Y2VwdGlvbnQHAAAAQ2xhbXBlZHQQAAAASW52YWxpZE9wZXJhdGlvbnQOAAAARGl2aXNpb25CeVplcm90BwAAAEluZXhhY3R0BwAAAFJvdW5kZWR0CQAAAFN1Ym5vcm1hbHQIAAAAT3ZlcmZsb3d0CQAAAFVuZGVyZmxvd3QKAAAAUk9VTkRfRE9XTnQNAAAAUk9VTkRfSEFMRl9VUHQPAAAAUk9VTkRfSEFMRl9FVkVOdA0AAABST1VORF9DRUlMSU5HdAsAAABST1VORF9GTE9PUnQIAAAAUk9VTkRfVVB0DwAAAFJPVU5EX0hBTEZfRE9XTnQKAAAAUk9VTkRfMDVVUHQKAAAAc2V0Y29udGV4dHQKAAAAZ2V0Y29udGV4dHQMAAAAbG9jYWxjb250ZXh0cwQAAAAxLjcwaf////9OKAEAAAB0CgAAAG5hbWVkdHVwbGV0DAAAAERlY2ltYWxUdXBsZXMUAAAAc2lnbiBkaWdpdHMgZXhwb25lbnRjAAAAAAEAAAABAAAARwAAAHMEAAAAfAAAUygBAAAATigAAAAAKAEAAAB0BAAAAGFyZ3MoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0CAAAADxsYW1iZGE+kwAAAHMAAAAAYwAAAAAAAAAAAQAAAEIAAABzFwAAAGUAAFoBAGQAAFoCAGQBAIQAAFoDAFJTKAIAAABzMQMAAEJhc2UgZXhjZXB0aW9uIGNsYXNzLgoKICAgIFVzZWQgZXhjZXB0aW9ucyBkZXJpdmUgZnJvbSB0aGlzLgogICAgSWYgYW4gZXhjZXB0aW9uIGRlcml2ZXMgZnJvbSBhbm90aGVyIGV4Y2VwdGlvbiBiZXNpZGVzIHRoaXMgKHN1Y2ggYXMKICAgIFVuZGVyZmxvdyAoSW5leGFjdCwgUm91bmRlZCwgU3Vibm9ybWFsKSB0aGF0IGluZGljYXRlcyB0aGF0IGl0IGlzIG9ubHkKICAgIGNhbGxlZCBpZiB0aGUgb3RoZXJzIGFyZSBwcmVzZW50LiAgVGhpcyBpc24ndCBhY3R1YWxseSB1c2VkIGZvcgogICAgYW55dGhpbmcsIHRob3VnaC4KCiAgICBoYW5kbGUgIC0tIENhbGxlZCB3aGVuIGNvbnRleHQuX3JhaXNlX2Vycm9yIGlzIGNhbGxlZCBhbmQgdGhlCiAgICAgICAgICAgICAgIHRyYXBfZW5hYmxlciBpcyBub3Qgc2V0LiAgRmlyc3QgYXJndW1lbnQgaXMgc2VsZiwgc2Vjb25kIGlzIHRoZQogICAgICAgICAgICAgICBjb250ZXh0LiAgTW9yZSBhcmd1bWVudHMgY2FuIGJlIGdpdmVuLCB0aG9zZSBiZWluZyBhZnRlcgogICAgICAgICAgICAgICB0aGUgZXhwbGFuYXRpb24gaW4gX3JhaXNlX2Vycm9yIChGb3IgZXhhbXBsZSwKICAgICAgICAgICAgICAgY29udGV4dC5fcmFpc2VfZXJyb3IoTmV3RXJyb3IsICcoLXgpIScsIHNlbGYuX3NpZ24pIHdvdWxkCiAgICAgICAgICAgICAgIGNhbGwgTmV3RXJyb3IoKS5oYW5kbGUoY29udGV4dCwgc2VsZi5fc2lnbikuKQoKICAgIFRvIGRlZmluZSBhIG5ldyBleGNlcHRpb24sIGl0IHNob3VsZCBiZSBzdWZmaWNpZW50IHRvIGhhdmUgaXQgZGVyaXZlCiAgICBmcm9tIERlY2ltYWxFeGNlcHRpb24uCiAgICBjAgAAAAMAAAABAAAARwAAAHMEAAAAZAAAUygBAAAATigAAAAAKAMAAAB0BAAAAHNlbGZ0BwAAAGNvbnRleHRSGwAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQGAAAAaGFuZGxltAAAAHMCAAAAAAEoBAAAAHQIAAAAX19uYW1lX190CgAAAF9fbW9kdWxlX190BwAAAF9fZG9jX19SHwAAACgAAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UgUAAAChAAAAcwQAAAAGEgYBYwAAAAAAAAAAAQAAAEIAAABzDgAAAGUAAFoBAGQAAFoCAFJTKAEAAABzKQIAAEV4cG9uZW50IG9mIGEgMCBjaGFuZ2VkIHRvIGZpdCBib3VuZHMuCgogICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgY2xhbXBlZCBpZiB0aGUgZXhwb25lbnQgb2YgYSByZXN1bHQgaGFzIGJlZW4KICAgIGFsdGVyZWQgaW4gb3JkZXIgdG8gZml0IHRoZSBjb25zdHJhaW50cyBvZiBhIHNwZWNpZmljIGNvbmNyZXRlCiAgICByZXByZXNlbnRhdGlvbi4gIFRoaXMgbWF5IG9jY3VyIHdoZW4gdGhlIGV4cG9uZW50IG9mIGEgemVybyByZXN1bHQgd291bGQKICAgIGJlIG91dHNpZGUgdGhlIGJvdW5kcyBvZiBhIHJlcHJlc2VudGF0aW9uLCBvciB3aGVuIGEgbGFyZ2Ugbm9ybWFsCiAgICBudW1iZXIgd291bGQgaGF2ZSBhbiBlbmNvZGVkIGV4cG9uZW50IHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkLiAgSW4KICAgIHRoaXMgbGF0dGVyIGNhc2UsIHRoZSBleHBvbmVudCBpcyByZWR1Y2VkIHRvIGZpdCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcKICAgIG51bWJlciBvZiB6ZXJvIGRpZ2l0cyBhcmUgYXBwZW5kZWQgdG8gdGhlIGNvZWZmaWNpZW50ICgiZm9sZC1kb3duIikuCiAgICAoAwAAAFIgAAAAUiEAAABSIgAAACgAAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UgYAAAC4AAAAcwIAAAAGCmMAAAAAAAAAAAEAAABCAAAAcxcAAABlAABaAQBkAABaAgBkAQCEAABaAwBSUygCAAAAczACAABBbiBpbnZhbGlkIG9wZXJhdGlvbiB3YXMgcGVyZm9ybWVkLgoKICAgIFZhcmlvdXMgYmFkIHRoaW5ncyBjYXVzZSB0aGlzOgoKICAgIFNvbWV0aGluZyBjcmVhdGVzIGEgc2lnbmFsaW5nIE5hTgogICAgLUlORiArIElORgogICAgMCAqICgrLSlJTkYKICAgICgrLSlJTkYgLyAoKy0pSU5GCiAgICB4ICUgMAogICAgKCstKUlORiAlIHgKICAgIHguX3Jlc2NhbGUoIG5vbi1pbnRlZ2VyICkKICAgIHNxcnQoLXgpICwgeCA+IDAKICAgIDAgKiogMAogICAgeCAqKiAobm9uLWludGVnZXIpCiAgICB4ICoqICgrLSlJTkYKICAgIEFuIG9wZXJhbmQgaXMgaW52YWxpZAoKICAgIFRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbiBhZnRlciB0aGVzZSBpcyBhIHF1aWV0IHBvc2l0aXZlIE5hTiwKICAgIGV4Y2VwdCB3aGVuIHRoZSBjYXVzZSBpcyBhIHNpZ25hbGluZyBOYU4sIGluIHdoaWNoIGNhc2UgdGhlIHJlc3VsdCBpcwogICAgYWxzbyBhIHF1aWV0IE5hTiwgYnV0IHdpdGggdGhlIG9yaWdpbmFsIHNpZ24sIGFuZCBhbiBvcHRpb25hbAogICAgZGlhZ25vc3RpYyBpbmZvcm1hdGlvbi4KICAgIGMCAAAABAAAAAUAAABHAAAAczoAAAB8AgByNgB0AAB8AgBkAQAZagEAfAIAZAEAGWoCAGQCAHQDAIMEAH0DAHwDAGoEAHwBAIMBAFN0BQBTKAMAAABOaQAAAAB0AQAAAG4oBgAAAHQQAAAAX2RlY19mcm9tX3RyaXBsZXQFAAAAX3NpZ250BAAAAF9pbnR0BAAAAFRydWV0CAAAAF9maXhfbmFudAQAAABfTmFOKAQAAABSHQAAAFIeAAAAUhsAAAB0AwAAAGFucygAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVIfAAAA2wAAAHMIAAAAAAEGASMBDQEoBAAAAFIgAAAAUiEAAABSIgAAAFIfAAAAKAAAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSBwAAAMQAAABzBAAAAAYWBgF0EAAAAENvbnZlcnNpb25TeW50YXhjAAAAAAAAAAABAAAAQgAAAHMXAAAAZQAAWgEAZAAAWgIAZAEAhAAAWgMAUlMoAgAAAHPdAAAAVHJ5aW5nIHRvIGNvbnZlcnQgYmFkbHkgZm9ybWVkIHN0cmluZy4KCiAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBpbnZhbGlkLW9wZXJhdGlvbiBpZiBhbiBzdHJpbmcgaXMgYmVpbmcKICAgIGNvbnZlcnRlZCB0byBhIG51bWJlciBhbmQgaXQgZG9lcyBub3QgY29uZm9ybSB0byB0aGUgbnVtZXJpYyBzdHJpbmcKICAgIHN5bnRheC4gIFRoZSByZXN1bHQgaXMgWzAscU5hTl0uCiAgICBjAgAAAAMAAAABAAAARwAAAHMEAAAAdAAAUygBAAAATigBAAAAUikAAAAoAwAAAFIdAAAAUh4AAABSGwAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVIfAAAA6AAAAHMCAAAAAAEoBAAAAFIgAAAAUiEAAABSIgAAAFIfAAAAKAAAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSKwAAAOEAAABzBAAAAAYGBgFjAAAAAAAAAAABAAAAQgAAAHMXAAAAZQAAWgEAZAAAWgIAZAEAhAAAWgMAUlMoAgAAAHOyAQAARGl2aXNpb24gYnkgMC4KCiAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBkaXZpc2lvbi1ieS16ZXJvIGlmIGRpdmlzaW9uIG9mIGEgZmluaXRlIG51bWJlcgogICAgYnkgemVybyB3YXMgYXR0ZW1wdGVkIChkdXJpbmcgYSBkaXZpZGUtaW50ZWdlciBvciBkaXZpZGUgb3BlcmF0aW9uLCBvciBhCiAgICBwb3dlciBvcGVyYXRpb24gd2l0aCBuZWdhdGl2ZSByaWdodC1oYW5kIG9wZXJhbmQpLCBhbmQgdGhlIGRpdmlkZW5kIHdhcwogICAgbm90IHplcm8uCgogICAgVGhlIHJlc3VsdCBvZiB0aGUgb3BlcmF0aW9uIGlzIFtzaWduLGluZl0sIHdoZXJlIHNpZ24gaXMgdGhlIGV4Y2x1c2l2ZQogICAgb3Igb2YgdGhlIHNpZ25zIG9mIHRoZSBvcGVyYW5kcyBmb3IgZGl2aWRlLCBvciBpcyAxIGZvciBhbiBvZGQgcG93ZXIgb2YKICAgIC0wLCBmb3IgcG93ZXIuCiAgICBjAwAAAAQAAAACAAAARwAAAHMIAAAAdAAAfAIAGVMoAQAAAE4oAQAAAHQPAAAAX1NpZ25lZEluZmluaXR5KAQAAABSHQAAAFIeAAAAdAQAAABzaWduUhsAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSHwAAAPgAAABzAgAAAAABKAQAAABSIAAAAFIhAAAAUiIAAABSHwAAACgAAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UggAAADrAAAAcwQAAAAGCwYCdBIAAABEaXZpc2lvbkltcG9zc2libGVjAAAAAAAAAAABAAAAQgAAAHMXAAAAZQAAWgEAZAAAWgIAZAEAhAAAWgMAUlMoAgAAAHPzAAAAQ2Fubm90IHBlcmZvcm0gdGhlIGRpdmlzaW9uIGFkZXF1YXRlbHkuCgogICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgaW52YWxpZC1vcGVyYXRpb24gaWYgdGhlIGludGVnZXIgcmVzdWx0IG9mIGEKICAgIGRpdmlkZS1pbnRlZ2VyIG9yIHJlbWFpbmRlciBvcGVyYXRpb24gaGFkIHRvbyBtYW55IGRpZ2l0cyAod291bGQgYmUKICAgIGxvbmdlciB0aGFuIHByZWNpc2lvbikuICBUaGUgcmVzdWx0IGlzIFswLHFOYU5dLgogICAgYwIAAAADAAAAAQAAAEcAAABzBAAAAHQAAFMoAQAAAE4oAQAAAFIpAAAAKAMAAABSHQAAAFIeAAAAUhsAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSHwAAAAMBAABzAgAAAAABKAQAAABSIAAAAFIhAAAAUiIAAABSHwAAACgAAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5Ui4AAAD7AAAAcwQAAAAGBgYCdBEAAABEaXZpc2lvblVuZGVmaW5lZGMAAAAAAAAAAAEAAABCAAAAcxcAAABlAABaAQBkAABaAgBkAQCEAABaAwBSUygCAAAAc+4AAABVbmRlZmluZWQgcmVzdWx0IG9mIGRpdmlzaW9uLgoKICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGludmFsaWQtb3BlcmF0aW9uIGlmIGRpdmlzaW9uIGJ5IHplcm8gd2FzCiAgICBhdHRlbXB0ZWQgKGR1cmluZyBhIGRpdmlkZS1pbnRlZ2VyLCBkaXZpZGUsIG9yIHJlbWFpbmRlciBvcGVyYXRpb24pLCBhbmQKICAgIHRoZSBkaXZpZGVuZCBpcyBhbHNvIHplcm8uICBUaGUgcmVzdWx0IGlzIFswLHFOYU5dLgogICAgYwIAAAADAAAAAQAAAEcAAABzBAAAAHQAAFMoAQAAAE4oAQAAAFIpAAAAKAMAAABSHQAAAFIeAAAAUhsAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSHwAAAA4BAABzAgAAAAABKAQAAABSIAAAAFIhAAAAUiIAAABSHwAAACgAAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5Ui8AAAAGAQAAcwQAAAAGBgYCYwAAAAAAAAAAAQAAAEIAAABzDgAAAGUAAFoBAGQAAFoCAFJTKAEAAABzrQEAAEhhZCB0byByb3VuZCwgbG9zaW5nIGluZm9ybWF0aW9uLgoKICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIGluZXhhY3Qgd2hlbmV2ZXIgdGhlIHJlc3VsdCBvZiBhbiBvcGVyYXRpb24gaXMKICAgIG5vdCBleGFjdCAodGhhdCBpcywgaXQgbmVlZGVkIHRvIGJlIHJvdW5kZWQgYW5kIGFueSBkaXNjYXJkZWQgZGlnaXRzCiAgICB3ZXJlIG5vbi16ZXJvKSwgb3IgaWYgYW4gb3ZlcmZsb3cgb3IgdW5kZXJmbG93IGNvbmRpdGlvbiBvY2N1cnMuICBUaGUKICAgIHJlc3VsdCBpbiBhbGwgY2FzZXMgaXMgdW5jaGFuZ2VkLgoKICAgIFRoZSBpbmV4YWN0IHNpZ25hbCBtYXkgYmUgdGVzdGVkIChvciB0cmFwcGVkKSB0byBkZXRlcm1pbmUgaWYgYSBnaXZlbgogICAgb3BlcmF0aW9uIChvciBzZXF1ZW5jZSBvZiBvcGVyYXRpb25zKSB3YXMgaW5leGFjdC4KICAgICgDAAAAUiAAAABSIQAAAFIiAAAAKAAAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSCQAAABEBAABzAgAAAAYKdA4AAABJbnZhbGlkQ29udGV4dGMAAAAAAAAAAAEAAABCAAAAcxcAAABlAABaAQBkAABaAgBkAQCEAABaAwBSUygCAAAAc+wBAABJbnZhbGlkIGNvbnRleHQuICBVbmtub3duIHJvdW5kaW5nLCBmb3IgZXhhbXBsZS4KCiAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyBpbnZhbGlkLW9wZXJhdGlvbiBpZiBhbiBpbnZhbGlkIGNvbnRleHQgd2FzCiAgICBkZXRlY3RlZCBkdXJpbmcgYW4gb3BlcmF0aW9uLiAgVGhpcyBjYW4gb2NjdXIgaWYgY29udGV4dHMgYXJlIG5vdCBjaGVja2VkCiAgICBvbiBjcmVhdGlvbiBhbmQgZWl0aGVyIHRoZSBwcmVjaXNpb24gZXhjZWVkcyB0aGUgY2FwYWJpbGl0eSBvZiB0aGUKICAgIHVuZGVybHlpbmcgY29uY3JldGUgcmVwcmVzZW50YXRpb24gb3IgYW4gdW5rbm93biBvciB1bnN1cHBvcnRlZCByb3VuZGluZwogICAgd2FzIHNwZWNpZmllZC4gIFRoZXNlIGFzcGVjdHMgb2YgdGhlIGNvbnRleHQgbmVlZCBvbmx5IGJlIGNoZWNrZWQgd2hlbgogICAgdGhlIHZhbHVlcyBhcmUgcmVxdWlyZWQgdG8gYmUgdXNlZC4gIFRoZSByZXN1bHQgaXMgWzAscU5hTl0uCiAgICBjAgAAAAMAAAABAAAARwAAAHMEAAAAdAAAUygBAAAATigBAAAAUikAAAAoAwAAAFIdAAAAUh4AAABSGwAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVIfAAAAKAEAAHMCAAAAAAEoBAAAAFIgAAAAUiEAAABSIgAAAFIfAAAAKAAAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSMAAAAB0BAABzBAAAAAYJBgJjAAAAAAAAAAABAAAAQgAAAHMOAAAAZQAAWgEAZAAAWgIAUlMoAQAAAHPZAQAATnVtYmVyIGdvdCByb3VuZGVkIChub3QgIG5lY2Vzc2FyaWx5IGNoYW5nZWQgZHVyaW5nIHJvdW5kaW5nKS4KCiAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyByb3VuZGVkIHdoZW5ldmVyIHRoZSByZXN1bHQgb2YgYW4gb3BlcmF0aW9uIGlzCiAgICByb3VuZGVkICh0aGF0IGlzLCBzb21lIHplcm8gb3Igbm9uLXplcm8gZGlnaXRzIHdlcmUgZGlzY2FyZGVkIGZyb20gdGhlCiAgICBjb2VmZmljaWVudCksIG9yIGlmIGFuIG92ZXJmbG93IG9yIHVuZGVyZmxvdyBjb25kaXRpb24gb2NjdXJzLiAgVGhlCiAgICByZXN1bHQgaW4gYWxsIGNhc2VzIGlzIHVuY2hhbmdlZC4KCiAgICBUaGUgcm91bmRlZCBzaWduYWwgbWF5IGJlIHRlc3RlZCAob3IgdHJhcHBlZCkgdG8gZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4KICAgIG9wZXJhdGlvbiAob3Igc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucykgY2F1c2VkIGEgbG9zcyBvZiBwcmVjaXNpb24uCiAgICAoAwAAAFIgAAAAUiEAAABSIgAAACgAAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UgoAAAArAQAAcwIAAAAGCmMAAAAAAAAAAAEAAABCAAAAcw4AAABlAABaAQBkAABaAgBSUygBAAAAc5gBAABFeHBvbmVudCA8IEVtaW4gYmVmb3JlIHJvdW5kaW5nLgoKICAgIFRoaXMgb2NjdXJzIGFuZCBzaWduYWxzIHN1Ym5vcm1hbCB3aGVuZXZlciB0aGUgcmVzdWx0IG9mIGEgY29udmVyc2lvbiBvcgogICAgb3BlcmF0aW9uIGlzIHN1Ym5vcm1hbCAodGhhdCBpcywgaXRzIGFkanVzdGVkIGV4cG9uZW50IGlzIGxlc3MgdGhhbgogICAgRW1pbiwgYmVmb3JlIGFueSByb3VuZGluZykuICBUaGUgcmVzdWx0IGluIGFsbCBjYXNlcyBpcyB1bmNoYW5nZWQuCgogICAgVGhlIHN1Ym5vcm1hbCBzaWduYWwgbWF5IGJlIHRlc3RlZCAob3IgdHJhcHBlZCkgdG8gZGV0ZXJtaW5lIGlmIGEgZ2l2ZW4KICAgIG9yIG9wZXJhdGlvbiAob3Igc2VxdWVuY2Ugb2Ygb3BlcmF0aW9ucykgeWllbGRlZCBhIHN1Ym5vcm1hbCByZXN1bHQuCiAgICAoAwAAAFIgAAAAUiEAAABSIgAAACgAAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UgsAAAA3AQAAcwIAAAAGCWMAAAAAAAAAAAEAAABCAAAAcxcAAABlAABaAQBkAABaAgBkAQCEAABaAwBSUygCAAAAcxoEAABOdW1lcmljYWwgb3ZlcmZsb3cuCgogICAgVGhpcyBvY2N1cnMgYW5kIHNpZ25hbHMgb3ZlcmZsb3cgaWYgdGhlIGFkanVzdGVkIGV4cG9uZW50IG9mIGEgcmVzdWx0CiAgICAoZnJvbSBhIGNvbnZlcnNpb24gb3IgZnJvbSBhbiBvcGVyYXRpb24gdGhhdCBpcyBub3QgYW4gYXR0ZW1wdCB0byBkaXZpZGUKICAgIGJ5IHplcm8pLCBhZnRlciByb3VuZGluZywgd291bGQgYmUgZ3JlYXRlciB0aGFuIHRoZSBsYXJnZXN0IHZhbHVlIHRoYXQKICAgIGNhbiBiZSBoYW5kbGVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiAodGhlIHZhbHVlIEVtYXgpLgoKICAgIFRoZSByZXN1bHQgZGVwZW5kcyBvbiB0aGUgcm91bmRpbmcgbW9kZToKCiAgICBGb3Igcm91bmQtaGFsZi11cCBhbmQgcm91bmQtaGFsZi1ldmVuIChhbmQgZm9yIHJvdW5kLWhhbGYtZG93biBhbmQKICAgIHJvdW5kLXVwLCBpZiBpbXBsZW1lbnRlZCksIHRoZSByZXN1bHQgb2YgdGhlIG9wZXJhdGlvbiBpcyBbc2lnbixpbmZdLAogICAgd2hlcmUgc2lnbiBpcyB0aGUgc2lnbiBvZiB0aGUgaW50ZXJtZWRpYXRlIHJlc3VsdC4gIEZvciByb3VuZC1kb3duLCB0aGUKICAgIHJlc3VsdCBpcyB0aGUgbGFyZ2VzdCBmaW5pdGUgbnVtYmVyIHRoYXQgY2FuIGJlIHJlcHJlc2VudGVkIGluIHRoZQogICAgY3VycmVudCBwcmVjaXNpb24sIHdpdGggdGhlIHNpZ24gb2YgdGhlIGludGVybWVkaWF0ZSByZXN1bHQuICBGb3IKICAgIHJvdW5kLWNlaWxpbmcsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUgYXMgZm9yIHJvdW5kLWRvd24gaWYgdGhlIHNpZ24gb2YKICAgIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0IGlzIDEsIG9yIGlzIFswLGluZl0gb3RoZXJ3aXNlLiAgRm9yIHJvdW5kLWZsb29yLAogICAgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBhcyBmb3Igcm91bmQtZG93biBpZiB0aGUgc2lnbiBvZiB0aGUgaW50ZXJtZWRpYXRlCiAgICByZXN1bHQgaXMgMCwgb3IgaXMgWzEsaW5mXSBvdGhlcndpc2UuICBJbiBhbGwgY2FzZXMsIEluZXhhY3QgYW5kIFJvdW5kZWQKICAgIHdpbGwgYWxzbyBiZSByYWlzZWQuCiAgICBjAwAAAAQAAAAFAAAARwAAAHO3AAAAfAEAagAAdAEAdAIAdAMAdAQAZgQAawYAciMAdAUAfAIAGVN8AgBkAQBrAgByawB8AQBqAAB0BgBrAgByRgB0BQB8AgAZU3QHAHwCAGQCAHwBAGoIABR8AQBqCQB8AQBqCAAYZAMAF4MDAFN8AgBkAwBrAgByswB8AQBqAAB0CgBrAgByjgB0BQB8AgAZU3QHAHwCAGQCAHwBAGoIABR8AQBqCQB8AQBqCAAYZAMAF4MDAFNkAABTKAQAAABOaQAAAAB0AQAAADlpAQAAACgLAAAAdAgAAAByb3VuZGluZ1IPAAAAUhAAAABSFAAAAFITAAAAUiwAAABSEQAAAFIkAAAAdAQAAABwcmVjdAQAAABFbWF4UhIAAAAoBAAAAFIdAAAAUh4AAABSLQAAAFIbAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5Uh8AAABYAQAAcxoAAAAAAQwBDwEIAQwBDwEIARABFQEMAQ8BCAEQASgEAAAAUiAAAABSIQAAAFIiAAAAUh8AAAAoAAAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVIMAAAAQgEAAHMEAAAABhQGAmMAAAAAAAAAAAEAAABCAAAAcw4AAABlAABaAQBkAABaAgBSUygBAAAAc3gCAABOdW1lcmljYWwgdW5kZXJmbG93IHdpdGggcmVzdWx0IHJvdW5kZWQgdG8gMC4KCiAgICBUaGlzIG9jY3VycyBhbmQgc2lnbmFscyB1bmRlcmZsb3cgaWYgYSByZXN1bHQgaXMgaW5leGFjdCBhbmQgdGhlCiAgICBhZGp1c3RlZCBleHBvbmVudCBvZiB0aGUgcmVzdWx0IHdvdWxkIGJlIHNtYWxsZXIgKG1vcmUgbmVnYXRpdmUpIHRoYW4KICAgIHRoZSBzbWFsbGVzdCB2YWx1ZSB0aGF0IGNhbiBiZSBoYW5kbGVkIGJ5IHRoZSBpbXBsZW1lbnRhdGlvbiAodGhlIHZhbHVlCiAgICBFbWluKS4gIFRoYXQgaXMsIHRoZSByZXN1bHQgaXMgYm90aCBpbmV4YWN0IGFuZCBzdWJub3JtYWwuCgogICAgVGhlIHJlc3VsdCBhZnRlciBhbiB1bmRlcmZsb3cgd2lsbCBiZSBhIHN1Ym5vcm1hbCBudW1iZXIgcm91bmRlZCwgaWYKICAgIG5lY2Vzc2FyeSwgc28gdGhhdCBpdHMgZXhwb25lbnQgaXMgbm90IGxlc3MgdGhhbiBFdGlueS4gIFRoaXMgbWF5IHJlc3VsdAogICAgaW4gMCB3aXRoIHRoZSBzaWduIG9mIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0IGFuZCBhbiBleHBvbmVudCBvZiBFdGlueS4KCiAgICBJbiBhbGwgY2FzZXMsIEluZXhhY3QsIFJvdW5kZWQsIGFuZCBTdWJub3JtYWwgd2lsbCBhbHNvIGJlIHJhaXNlZC4KICAgICgDAAAAUiAAAABSIQAAAFIiAAAAKAAAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSDQAAAGgBAABzAgAAAAYNdA0AAABNb2NrVGhyZWFkaW5nYwAAAAAAAAAAAgAAAEIAAABzFAAAAGUAAFoBAGUCAGQAAIQBAFoDAFJTKAEAAABjAgAAAAIAAAACAAAAQwAAAHMLAAAAfAEAagAAdAEAGVMoAQAAAE4oAgAAAHQHAAAAbW9kdWxlc1IgAAAAKAIAAABSHQAAAHQDAAAAc3lzKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5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AHQBAIMAAH0AAG4AAHQCAHwAAIMBAFMoAgAAAHNeBAAAUmV0dXJuIGEgY29udGV4dCBtYW5hZ2VyIGZvciBhIGNvcHkgb2YgdGhlIHN1cHBsaWVkIGNvbnRleHQKCiAgICBVc2VzIGEgY29weSBvZiB0aGUgY3VycmVudCBjb250ZXh0IGlmIG5vIGNvbnRleHQgaXMgc3BlY2lmaWVkCiAgICBUaGUgcmV0dXJuZWQgY29udGV4dCBtYW5hZ2VyIGNyZWF0ZXMgYSBsb2NhbCBkZWNpbWFsIGNvbnRleHQKICAgIGluIGEgd2l0aCBzdGF0ZW1lbnQ6CiAgICAgICAgZGVmIHNpbih4KToKICAgICAgICAgICAgIHdpdGggbG9jYWxjb250ZXh0KCkgYXMgY3R4OgogICAgICAgICAgICAgICAgIGN0eC5wcmVjICs9IDIKICAgICAgICAgICAgICAgICAjIFJlc3Qgb2Ygc2luIGNhbGN1bGF0aW9uIGFsZ29yaXRobQogICAgICAgICAgICAgICAgICMgdXNlcyBhIHByZWNpc2lvbiAyIGdyZWF0ZXIgdGhhbiBub3JtYWwKICAgICAgICAgICAgIHJldHVybiArcyAgIyBDb252ZXJ0IHJlc3VsdCB0byBub3JtYWwgcHJlY2lzaW9uCgogICAgICAgICBkZWYgc2luKHgpOgogICAgICAgICAgICAgd2l0aCBsb2NhbGNvbnRleHQoRXh0ZW5kZWRDb250ZXh0KToKICAgICAgICAgICAgICAgICAjIFJlc3Qgb2Ygc2luIGNhbGN1bGF0aW9uIGFsZ29yaXRobQogICAgICAgICAgICAgICAgICMgdXNlcyB0aGUgRXh0ZW5kZWQgQ29udGV4dCBmcm9tIHRoZQogICAgICAgICAgICAgICAgICMgR2VuZXJhbCBEZWNpbWFsIEFyaXRobWV0aWMgU3BlY2lmaWNhdGlvbgogICAgICAgICAgICAgcmV0dXJuICtzICAjIENvbnZlcnQgcmVzdWx0IHRvIG5vcm1hbCBjb250ZXh0CgogICAgPj4+IHNldGNvbnRleHQoRGVmYXVsdENvbnRleHQpCiAgICA+Pj4gcHJpbnQgZ2V0Y29udGV4dCgpLnByZWMKICAgIDI4CiAgICA+Pj4gd2l0aCBs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ICAgIGNvbXBhcmVfc2lnbmFsLCBfX2xlX18sIF9fbHRfXywgX19nZV9fLCBfX2d0X18uCgogICAgICAgIFNpZ25hbCBJbnZhbGlkT3BlcmF0aW9uIGlmIGVpdGhlciBzZWxmIG9yIG90aGVyIGlzIGEgKHF1aWV0CiAgICAgICAgb3Igc2lnbmFsaW5nKSBOYU4uICBTaWduYWxpbmcgTmFOcyB0YWtlIHByZWNlZGVuY2Ugb3ZlciBxdWlldAogICAgICAgIE5hTnMuCgogICAgICAgIFJldHVybiAwIGlmIG5laXRoZXIgb3BlcmFuZCBpcyBhIE5hTi4KCiAgICAgICAgcxkAAABjb21wYXJpc29uIGludm9sdmluZyBzTmFOcxgAAABjb21wYXJpc29uIGludm9sdmluZyBOYU5pAAAAAE4oBwAAAFJAAAAAUhcAAABSRAAAAHQHAAAAaXNfc25hblJVAAAAUgcAAAB0BwAAAGlzX3FuYW4oAwAAAFIdAAAAUnwAAABSHgAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQTAAAAX2NvbXBhcmVfY2hlY2tfbmFuc/gCAABzKAAAAAALDAEMAhIBDAEJAQMBBwEMAQkBAwEHAQwBCQEDAQcBDAEJAQMBCgFjAQAAAAEAAAADAAAAQwAAAHMWAAAAfAAAagAAcBUAfAAAagEAZAEAawMAUygCAAAAc3UAAABSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIG5vbnplcm87IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuCgogICAgICAgIE5hTnMgYW5kIGluZmluaXRpZXMgYXJlIGNvbnNpZGVyZWQgbm9uemVyby4KICAgICAgICBSRQAAACgCAAAAUkQAAABSJgAAACgBAAAAUh0AAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0CwAAAF9fbm9uemVyb19fGQMAAHMCAAAAAAVjAgAAAAgAAAAFAAAA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AAB0AwAAAGFkalKeAAAAUjUBAABSpQAAAFIiAQAAUsQAAABSSgAAAFIyAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UkoAAAB0CwAAc0oAAAAAAwwBDAMSAQYBBAMSAQQDBgEEAxIBCgYJAQwHMgIcATYCHwEcAiYBIAIiAwwBEwEPAQoFBgEJARwBJgEEAQ4CGAQMAQ8BDwEJAmMBAAAAAQAAAAEAAABDAAAAcwQAAAB0AABTKAEAAABzwwAAAFJldHVybiBUcnVlIGlmIHNlbGYgaXMgY2Fub25pY2FsOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgoKICAgICAgICBDdXJyZW50bHksIHRoZSBlbmNvZGluZyBvZiBhIERlY2ltYWwgaW5zdGFuY2UgaXMgYWx3YXlzCiAgICAgICAgY2Fub25pY2FsLCBzbyB0aGlzIG1ldGhvZCByZXR1cm5zIFRydWUgZm9yIGFueSBEZWNpbWFsLgogICAgICAgICgBAAAAUicAAAAoAQAAAFIdAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAwAAABpc19jYW5vbmljYWy/CwAAcwIAAAAABmMBAAAAAQAAAAEAAABDAAAAcwgAAAB8AABqAAAMUygBAAAAc50AAABSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGZpbml0ZTsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS4KCiAgICAgICAgQSBEZWNpbWFsIGluc3RhbmNlIGlzIGNvbnNpZGVyZWQgZmluaXRlIGlmIGl0IGlzIG5laXRoZXIKICAgICAgICBpbmZpbml0ZSBub3IgYSBOYU4uCiAgICAgICAgKAEAAABSRAAAACgBAAAAUh0AAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0CQAAAGlzX2Zpbml0ZccLAABzAgAAAAAGYwEAAAABAAAAAgAAAEMAAABzDQAAAHwAAGoAAGQBAGsCAFMoAgAAAHM4AAAAUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBpbmZpbml0ZTsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS5STgAAACgBAAAAUkMAAAAoAQAAAFIdAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5Ui0BAADPCwAAcwIAAAAAAmMBAAAAAQAAAAMAAABDAAAAcw0AAAB8AABqAABkAwBrBgBTKAQAAABzPgAAAFJldHVybiBUcnVlIGlmIHNlbGYgaXMgYSBxTmFOIG9yIHNOYU47IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuUiMAAABSTQAAACgCAAAAUiMAAABSTQAAACgBAAAAUkMAAAAoAQAAAFIdAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UpcAAADTCwAAcwIAAAAAAmMCAAAAAgAAAAMAAABDAAAAcz8AAAB8AABqAABzEAB8AAAMchQAdAEAU3wBAGQBAGsIAHIsAHQDAIMAAH0BAG4AAHwBAGoEAHwAAGoFAIMAAGsBAFMoAgAAAHM/AAAAUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBhIG5vcm1hbCBudW1iZXI7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuTigGAAAAUkQAAABSWQAAAFJAAAAAUhcAAABSKgEAAFKEAAAAKAIAAABSHQAAAFIeAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAkAAABpc19ub3JtYWzXCwAAcwoAAAAAAhABBAEMAQwBYwEAAAABAAAAAgAAAEMAAABzDQAAAHwAAGoAAGQBAGsCAFMoAgAAAHM7AAAAUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBhIHF1aWV0IE5hTjsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS5SIwAAACgBAAAAUkMAAAAoAQAAAFIdAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UoEAAADfCwAAcwIAAAAAAmMBAAAAAQAAAAIAAABDAAAAcw0AAAB8AABqAABkAQBrAgBTKAIAAABzOAAAAFJldHVybiBUcnVlIGlmIHNlbGYgaXMgbmVnYXRpdmU7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuaQEAAAAoAQAAAFIlAAAAKAEAAABSHQAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQJAAAAaXNfc2lnbmVk4wsAAHMCAAAAAAJjAQAAAAEAAAACAAAAQwAAAHMNAAAAfAAAagAAZAEAawIAUygCAAAAcz8AAABSZXR1cm4gVHJ1ZSBpZiBzZWxmIGlzIGEgc2lnbmFsaW5nIE5hTjsgb3RoZXJ3aXNlIHJldHVybiBGYWxzZS5STQAAACgBAAAAUkMAAAAoAQAAAFIdAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UoAAAADnCwAAcwIAAAAAAmMCAAAAAgAAAAMAAABDAAAAcz8AAAB8AABqAABzEAB8AAAMchQAdAEAU3wBAGQBAGsIAHIsAHQDAIMAAH0BAG4AAHwAAGoEAIMAAHwBAGoFAGsAAFMoAgAAAHM5AAAAUmV0dXJuIFRydWUgaWYgc2VsZiBpcyBzdWJub3JtYWw7IG90aGVyd2lzZSByZXR1cm4gRmFsc2UuTigGAAAAUkQAAABSWQAAAFJAAAAAUhcAAABShAAAAFIqAQAAKAIAAABSHQAAAFIeAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAwAAABpc19zdWJub3JtYWzrCwAAcwoAAAAAAhABBAEMAQwBYwEAAAABAAAAAwAAAEMAAABzFwAAAHwAAGoAAAxvFgB8AABqAQBkAQBrAgBTKAIAAABzNgAAAFJldHVybiBUcnVlIGlmIHNlbGYgaXMgYSB6ZXJvOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLlJFAAAAKAIAAABSRAAAAFImAAAAKAEAAABSHQAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQHAAAAaXNfemVyb/MLAABzAgAAAAACYwEAAAAHAAAABQAAAEMAAABz+QAAAHwAAGoAAHQBAHwAAGoCAIMBABdkAQAYfQEAfAEAZAEAawUAckIAdAEAdAMAfAEAZAIAFGQDABqDAQCDAQBkAQAYU3wBAGQEAGsBAHJuAHQBAHQDAGQFAHwBABhkAgAUZAMAGoMBAIMBAGQBABhTdAQAfAAAgwEAfQIAfAIAagUAfAIAagYAAn0DAH0EAHwBAGQGAGsCAHLYAHQDAHwDAGQDAHwEAAsTGIMBAH0FAHQDAHwDAIMBAH0GAHQBAHwFAIMBAHQBAHwGAIMBABh8BQB8BgBrAAAYU3wEAHQBAHQDAGQDAHwEAAsTfAMAGIMBAIMBABdkAQAYUygHAAAAc8wAAABDb21wdXRlIGEgbG93ZXIgYm91bmQgZm9yIHRoZSBhZGp1c3RlZCBleHBvbmVudCBvZiBzZWxmLmxuKCkuCiAgICAgICAgSW4gb3RoZXIgd29yZHMsIGNvbXB1dGUgciBzdWNoIHRoYXQgc2VsZi5sbigpID49IDEwKipyLiAgQXNzdW1lcwogICAgICAgIHRoYXQgc2VsZiBpcyBmaW5pdGUgYW5kIHBvc2l0aXZlIGFuZCB0aGF0IHNlbGYgIT0gMS4KICAgICAgICBpAQAAAGkXAAAAaQoAAABp/v///2n/////aQAAAAAoBwAAAFJDAAAAUlgAAABSJgAAAFJXAAAAUl0AAABSRwAAAFJKAAAAKAcAAABSHQAAAFJIAQAAUp4AAABSNQEAAFKlAAAAdAMAAABudW10AwAAAGRlbigAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQNAAAAX2xuX2V4cF9ib3VuZPcLAABzGAAAAAAHGgEMAhwBDAIgAQwBEwEMAhUBDAEeAmMCAAAACgAAAAcAAABDAAAAc3oBAAB8AQBkCQBrCAByGAB0AQCDAAB9AQBuAAB8AABqAgBkAQB8AQCDAAF9AgB8AgByNAB8AgBTfAAAcz4AdAMAU3wAAGoEAIMAAGQCAGsCAHJUAHQFAFN8AAB0BgBrAgByZAB0BwBTfAAAaggAZAIAawIAcoMAfAEAagkAdAoAZAMAgwIAU3QLAHwAAIMBAH0DAHwDAGoMAHwDAGoNAAJ9BAB9BQB8AQBqDgB9BgB8BgB8AABqDwCDAAAYZAQAF30HAHhWAHQQAHIXAXQRAHwEAHwFAHwHAIMDAH0IAHwIAGQFAGQGAHQSAHQTAHQUAHwIAIMBAIMBAIMBAHwGABhkAgAYExQWcgoBUG4AAHwHAGQHADd9BwBxwgBXdBUAdAwAfAgAZAgAawAAgwEAdBMAdBQAfAgAgwEAgwEAfAcAC4MDAH0CAHwBAGoWAIMAAH0BAHwBAGoXAHQYAIMBAH0JAHwCAGoZAHwBAIMBAH0CAHwJAHwBAF8aAHwCAFMoCgAAAHMvAAAAUmV0dXJucyB0aGUgbmF0dXJhbCAoYmFzZSBlKSBsb2dhcml0aG0gb2Ygc2VsZi5SHgAAAGkBAAAAcxYAAABsbiBvZiBhIG5lZ2F0aXZlIHZhbHVlaQIAAABpBQAAAGkKAAAAaQMAAABpAAAAAE4oGwAAAFJAAAAAUhcAAABSfwAAAHQRAAAAX05lZ2F0aXZlSW5maW5pdHlSegAAAHQJAAAAX0luZmluaXR5UhcBAABSPwEAAFIlAAAAUlUAAABSBwAAAFJdAAAAUkcAAABSSgAAAFIzAAAAUlEBAABSJwAAAHQFAAAAX2Rsb2dSWAAAAFJXAAAAUlwAAABSJAAAAFIzAQAAUjQBAABSEAAAAFKvAAAAUjIAAAAoCgAAAFIdAAAAUh4AAABSKgAAAFKeAAAAUjUBAABSpQAAAFIIAQAAUjABAABSxAAAAFIyAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAIAAABsbhAMAABzOgAAAAADDAEMAxIBBgEEAwYBBAMSAQQDDAEEAw8BCQEHAwwBEwEJBBQBCQESAiwBBAEOASsCDAEPAQ8BCQFjAQAAAAcAAAAEAAAAQwAAAHMBAQAAfAAAagAAdAEAfAAAagIAgwEAF2QBABh9AQB8AQBkAQBrBQByOgB0AQB0AwB8AQCDAQCDAQBkAQAYU3wBAGQCAGsBAHJeAHQBAHQDAGQDAHwBABiDAQCDAQBkAQAYU3QEAHwAAIMBAH0CAHwCAGoFAHwCAGoGAAJ9AwB9BAB8AQBkBABrAgBy0AB0AwB8AwBkBQB8BAALExiDAQB9BQB0AwBkBgB8AwAUgwEAfQYAdAEAfAUAgwEAdAEAfAYAgwEAGHwFAHwGAGsAABhkBwAXU3QDAGQFAHwEAAsTfAMAGIMBAH0FAHQBAHwFAIMBAHwEABd8BQBkCABrAAAYZAEAGFMoCQAAAHPOAAAAQ29tcHV0ZSBhIGxvd2VyIGJvdW5kIGZvciB0aGUgYWRqdXN0ZWQgZXhwb25lbnQgb2Ygc2VsZi5sb2cxMCgpLgogICAgICAgIEluIG90aGVyIHdvcmRzLCBmaW5kIHIgc3VjaCB0aGF0IHNlbGYubG9nMTAoKSA+PSAxMCoqci4KICAgICAgICBBc3N1bWVzIHRoYXQgc2VsZiBpcyBmaW5pdGUgYW5kIHBvc2l0aXZlIGFuZCB0aGF0IHNlbGYgIT0gMS4KICAgICAgICBpAQAAAGn+////af////9pAAAAAGkKAAAAaecAAABpAgAAAHQDAAAAMjMxKAcAAABSQwAAAFJYAAAAUiYAAABSVwAAAFJdAAAAUkcAAABSSgAAACgHAAAAUh0AAABSSAEAAFKeAAAAUjUBAABSpQAAAFJPAQAAUlABAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSGAEAAEIMAABzGgAAAAAMGgEMAhQBDAIYAQwBEwEMAhUBEAEiAhUBYwIAAAAKAAAACAAAAEMAAABzxAEAAHwBAGQLAGsIAHIYAHQBAIMAAH0BAG4AAHwAAGoCAGQBAHwBAIMAAX0CAHwCAHI0AHwCAFN8AABzPgB0AwBTfAAAagQAgwAAZAIAawIAclQAdAUAU3wAAGoGAGQCAGsCAHJzAHwBAGoHAHQIAGQDAIMCAFN8AABqCQBkBAAZZAUAawIAcs0AfAAAagkAZAIAH2QGAHQKAHwAAGoJAIMBAGQCABgUawIAcs0AdAsAfAAAagwAdAoAfAAAagkAgwEAF2QCABiDAQB9AgBuwAB0DQB8AACDAQB9AwB8AwBqDgB8AwBqDwACfQQAfQUAfAEAahAAfQYAfAYAfAAAahEAgwAAGGQHABd9BwB4VgB0EgByYQF0EwB8BAB8BQB8BwCDAwB9CAB8CABkCABkCQB0CgB0FAB0FQB8CACDAQCDAQCDAQB8BgAYZAIAGBMUFnJUAVBuAAB8BwBkCgA3fQcAcQwBV3QWAHQOAHwIAGQEAGsAAIMBAHQUAHQVAHwIAIMBAIMBAHwHAAuDAwB9AgB8AQBqFwCDAAB9AQB8AQBqGAB0GQCDAQB9CQB8AgBqGgB8AQCDAQB9AgB8CQB8AQBfGwB8AgBTKAwAAABzJgAAAFJldHVybnMgdGhlIGJhc2UgMTAgbG9nYXJpdGhtIG9mIHNlbGYuUh4AAABpAQAAAHMZAAAAbG9nMTAgb2YgYSBuZWdhdGl2ZSB2YWx1ZWkAAAAAUr4AAABSRQAAAGkCAAAAaQUAAABpCgAAAGkDAAAATigcAAAAUkAAAABSFwAAAFJ/AAAAUlIBAABSegAAAFJTAQAAUiUAAABSVQAAAFIHAAAAUiYAAABSWAAAAFIAAAAAUkMAAABSXQAAAFJHAAAAUkoAAABSMwAAAFIYAQAAUicAAAB0BwAAAF9kbG9nMTBSVwAAAFJcAAAAUiQAAABSMwEAAFI0AQAAUhAAAABSrwAAAFIyAAAAKAoAAABSHQAAAFIeAAAAUioAAABSngAAAFI1AQAAUqUAAABSCAEAAFIwAQAAUsQAAABSMgAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQFAAAAbG9nMTBgDAAAczoAAAAAAwwBDAMSAQYBBAMGAQQDEgEEAw8BCQEHAzcCIwMMARMBCQQUAQkBEgIsAQQBDgErAgwBDwEPAQkBYwIAAAADAAAABAAAAEMAAABzfAAAAHwAAGoAAGQBAHwBAIMAAX0CAHwCAHIcAHwCAFN8AQBkBABrCAByNAB0AgCDAAB9AQBuAAB8AABqAwCDAAByRAB0BABTfAAAc10AfAEAagUAdAYAZAIAZAMAgwMAU3QHAHwAAGoIAIMAAIMBAH0CAHwCAGoJAHwBAIMBAFMoBQAAAHNNAQAAIFJldHVybnMgdGhlIGV4cG9uZW50IG9mIHRoZSBtYWduaXR1ZGUgb2Ygc2VsZidzIE1TRC4KCiAgICAgICAgVGhlIHJlc3VsdCBpcyB0aGUgaW50ZWdlciB3aGljaCBpcyB0aGUgZXhwb25lbnQgb2YgdGhlIG1hZ25pdHVkZQogICAgICAgIG9mIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0IG9mIHNlbGYgKGFzIHRob3VnaCBpdCB3ZXJlIHRydW5jYXRlZAogICAgICAgIHRvIGEgc2luZ2xlIGRpZ2l0IHdoaWxlIG1haW50YWluaW5nIHRoZSB2YWx1ZSBvZiB0aGF0IGRpZ2l0IGFuZAogICAgICAgIHdpdGhvdXQgbGltaXRpbmcgdGhlIHJlc3VsdGluZyBleHBvbmVudCkuCiAgICAgICAgUh4AAABzBwAAAGxvZ2IoMClpAQAAAE4oCgAAAFJ/AAAAUkAAAABSFwAAAFJ6AAAAUlMBAABSVQAAAFIIAAAAUgAAAABShAAAAFKvAAAAKAMAAABSHQAAAFIeAAAAUioAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0BAAAAGxvZ2KTDAAAcxYAAAAACRIBBgEEAgwBDAMMAQQDBgETBRIBYwEAAAACAAAABAAAAEMAAABzSgAAAHwAAGoAAGQBAGsDAHMeAHwAAGoBAGQBAGsDAHIiAHQCAFN4IQB8AABqAwBEXRYAfQEAfAEAZAIAawcAciwAdAIAU3EsAFd0BABTKAMAAABz1wAAAFJldHVybiBUcnVlIGlmIHNlbGYgaXMgYSBsb2dpY2FsIG9wZXJhbmQuCgogICAgICAgIEZvciBiZWluZyBsb2dpY2FsLCBpdCBtdXN0IGJlIGEgZmluaXRlIG51bWJlciB3aXRoIGEgc2lnbiBvZiAwLAogICAgICAgIGFuIGV4cG9uZW50IG9mIDAsIGFuZCBhIGNvZWZmaWNpZW50IHdob3NlIGRpZ2l0cyBtdXN0IGFsbCBiZQogICAgICAgIGVpdGhlciAwIG9yIDEuCiAgICAgICAgaQAAAAB0AgAAADAxKAUAAABSJQAAAFJDAAAAUlkAAABSJgAAAFInAAAAKAIAAABSHQAAAHQDAAAAZGlnKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAoAAABfaXNsb2dpY2FssQwAAHMMAAAAAAceAQQBEAEMAQgBYwQAAAAFAAAAAwAAAEMAAABzpAAAAHwBAGoAAHQBAHwCAIMBABh9BAB8BABkAQBrBAByMABkAgB8BAAUfAIAF30CAG4dAHwEAGQBAGsAAHJNAHwCAHwBAGoAAAsffQIAbgAAfAEAagAAdAEAfAMAgwEAGH0EAHwEAGQBAGsEAHJ9AGQCAHwEABR8AwAXfQMAbh0AfAQAZAEAawAAcpoAfAMAfAEAagAACx99AwBuAAB8AgB8AwBmAgBTKAMAAABOaQAAAABSRQAAACgCAAAAUjMAAABSWAAAACgFAAAAUh0AAABSHgAAAHQDAAAAb3BhdAMAAABvcGJ0AwAAAGRpZigAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQNAAAAX2ZpbGxfbG9naWNhbL8MAABzFgAAAAABEwEMAREBDAERARMBDAERAQwBEQFjAwAAAAgAAAAIAAAAQwAAAHPYAAAAfAIAZAUAawgAchgAdAEAgwAAfQIAbgAAdAIAfAEAZAEAdAMAgwEBfQEAfAAAagQAgwAADHNEAHwBAGoEAIMAAAxyUQB8AgBqBQB0BgCDAQBTfAAAagcAfAIAfAAAaggAfAEAaggAgwMAXAIAfQMAfQQAZAIAagkAZwAAdAoAfAMAfAQAgwIARF0oAFwCAH0FAH0GAHQLAHQMAHwFAIMBAHQMAHwGAIMBAECDAQBeAgBxiACDAQB9BwB0DQBkAwB8BwBqDgBkBACDAQBw0QBkBABkAwCDAwBTKAYAAABzOwAAAEFwcGxpZXMgYW4gJ2FuZCcgb3BlcmF0aW9uIGJldHdlZW4gc2VsZiBhbmQgb3RoZXIncyBkaWdpdHMuUpUAAABSSQAAAGkAAAAAUkUAAABOKA8AAABSQAAAAFIXAAAAUo0AAABSJwAAAFJcAQAAUlUAAABSBwAAAFJgAQAAUiYAAABSYgAAAHQDAAAAemlwUlcAAABSRwAAAFIkAAAAUloAAAAoCAAAAFIdAAAAUnwAAABSHgAAAFJdAQAAUl4BAABSFAEAAHQBAAAAYlJ4AAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAsAAABsb2dpY2FsX2FuZMwMAABzEAAAAAACDAEMAhICGgENAyEDRwFjAgAAAAIAAAAFAAAAQwAAAHM7AAAAfAEAZAMAawgAchgAdAEAgwAAfQEAbgAAfAAAagIAdAMAZAEAZAIAfAEAagQAFGQBAIMDAHwBAIMCAFMoBAAAAHMWAAAASW52ZXJ0IGFsbCBpdHMgZGlnaXRzLmkAAAAAUr4AAABOKAUAAABSQAAAAFIXAAAAdAsAAABsb2dpY2FsX3hvclIkAAAAUjMAAAAoAgAAAFIdAAAAUh4AAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0DgAAAGxvZ2ljYWxfaW52ZXJ03QwAAHMIAAAAAAIMAQwBHAFjAwAAAAgAAAAIAAAAQwAAAHPYAAAAfAIAZAUAawgAchgAdAEAgwAAfQIAbgAAdAIAfAEAZAEAdAMAgwEBfQEAfAAAagQAgwAADHNEAHwBAGoEAIMAAAxyUQB8AgBqBQB0BgCDAQBTfAAAagcAfAIAfAAAaggAfAEAaggAgwMAXAIAfQMAfQQAZAIAagkAZwAAdAoAfAMAfAQAgwIARF0oAFwCAH0FAH0GAHQLAHQMAHwFAIMBAHQMAHwGAIMBAEKDAQBeAgBxiACDAQB9BwB0DQBkAwB8BwBqDgBkBACDAQBw0QBkBABkAwCDAwBTKAYAAABzOgAAAEFwcGxpZXMgYW4gJ29yJyBvcGVyYXRpb24gYmV0d2VlbiBzZWxmIGFuZCBvdGhlcidzIGRpZ2l0cy5SlQAAAFJJAAAAaQAAAABSRQAAAE4oDwAAAFJAAAAAUhcAAABSjQAAAFInAAAAUlwBAABSVQAAAFIHAAAAUmABAABSJgAAAFJiAAAAUmEBAABSVwAAAFJHAAAAUiQAAABSWgAAACgIAAAAUh0AAABSfAAAAFIeAAAAUl0BAABSXgEAAFIUAQAAUmIBAABSeAAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQKAAAAbG9naWNhbF9vcuQMAABzEAAAAAACDAEMAhICGgENAyEDRwFjAwAAAAgAAAAIAAAAQwAAAHPYAAAAfAIAZAUAawgAchgAdAEAgwAAfQIAbgAAdAIAfAEAZAEAdAMAgwEBfQEAfAAAagQAgwAADHNEAHwBAGoEAIMAAAxyUQB8AgBqBQB0BgCDAQBTfAAAagcAfAIAfAAAaggAfAEAaggAgwMAXAIAfQMAfQQAZAIAagkAZwAAdAoAfAMAfAQAgwIARF0oAFwCAH0FAH0GAHQLAHQMAHwFAIMBAHQMAHwGAIMBAEGDAQBeAgBxiACDAQB9BwB0DQBkAwB8BwBqDgBkBACDAQBw0QBkBABkAwCDAwBTKAYAAABzOwAAAEFwcGxpZXMgYW4gJ3hvcicgb3BlcmF0aW9uIGJldHdlZW4gc2VsZiBhbmQgb3RoZXIncyBkaWdpdHMuUpUAAABSSQAAAGkAAAAAUkUAAABOKA8AAABSQAAAAFIXAAAAUo0AAABSJwAAAFJcAQAAUlUAAABSBwAAAFJgAQAAUiYAAABSYgAAAFJhAQAAUlcAAABSRwAAAFIkAAAAUloAAAAoCAAAAFIdAAAAUnwAAABSHgAAAFJdAQAAUl4BAABSFAEAAFJiAQAAUngAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSZAEAAPUMAABzEAAAAAACDAEMAhICGgENAyEDRwFjAwAAAAcAAAAHAAAAQwAAAHMeAQAAdAAAfAEAZAEAdAEAgwEBfQEAfAIAZAUAawgAcioAdAMAgwAAfQIAbgAAfAAAagQAczwAfAEAagQAcr0AfAAAagUAgwAAfQMAfAEAagUAgwAAfQQAfAMAc2AAfAQAcr0AfAQAZAIAawIAcoUAfAMAZAMAawIAcoUAfAAAagYAfAIAgwEAU3wDAGQCAGsCAHKqAHwEAGQDAGsCAHKqAHwBAGoGAHwCAIMBAFN8AABqBwB8AQB8AgCDAgBTbgAAfAAAaggAgwAAagkAfAEAaggAgwAAgwEAfQUAfAUAZAMAawIAcvYAfAAAagoAfAEAgwEAfQUAbgAAfAUAZAQAawIAcgsBfAEAfQYAbgYAfAAAfQYAfAYAagYAfAIAgwEAUygGAAAAczgAAABDb21wYXJlcyB0aGUgdmFsdWVzIG51bWVyaWNhbGx5IHdpdGggdGhlaXIgc2lnbiBpZ25vcmVkLlKVAAAAaQEAAABpAAAAAGn/////TigLAAAAUo0AAABSJwAAAFJAAAAAUhcAAABSRAAAAFJ5AAAAUq8AAABSfwAAAFKtAAAAUosAAABSOAEAACgHAAAAUh0AAABSfAAAAFIeAAAAUjkBAABSOgEAAFI1AQAAUioAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0BwAAAG1heF9tYWcGDQAAcyYAAAAAAhICDAEMAhIDDAEMAQwBGAENARgBDQETAhsBDAESAgwBCQIGAmMDAAAABwAAAAcAAABDAAAAcx4BAAB0AAB8AQBkAQB0AQCDAQF9AQB8AgBkBQBrCAByKgB0AwCDAAB9AgBuAAB8AABqBABzPAB8AQBqBAByvQB8AABqBQCDAAB9AwB8AQBqBQCDAAB9BAB8AwBzYAB8BAByvQB8BABkAgBrAgByhQB8AwBkAwBrAgByhQB8AABqBgB8AgCDAQBTfAMAZAIAawIAcqoAfAQAZAMAawIAcqoAfAEAagYAfAIAgwEAU3wAAGoHAHwBAHwCAIMCAFNuAAB8AABqCACDAABqCQB8AQBqCACDAACDAQB9BQB8BQBkAwBrAgBy9gB8AABqCgB8AQCDAQB9BQBuAAB8BQBkBABrAgByCwF8AAB9BgBuBgB8AQB9BgB8BgBqBgB8AgCDAQBTKAYAAABzOAAAAENvbXBhcmVzIHRoZSB2YWx1ZXMgbnVtZXJpY2FsbHkgd2l0aCB0aGVpciBzaWduIGlnbm9yZWQuUpUAAABpAQAAAGkAAAAAaf////9OKAsAAABSjQAAAFInAAAAUkAAAABSFwAAAFJEAAAAUnkAAABSrwAAAFJ/AAAAUq0AAABSiwAAAFI4AQAAKAcAAABSHQAAAFJ8AAAAUh4AAABSOQEAAFI6AQAAUjUBAABSKgAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQHAAAAbWluX21hZyQNAABzJgAAAAACEgIMAQwCEgMMAQwBDAEYAQ0BGAENARMCGwEMARICDAEJAgYCYwIAAAAEAAAABgAAAEMAAABz4QAAAHwBAGQHAGsIAHIYAHQBAIMAAH0BAG4AAHwAAGoCAGQBAHwBAIMAAX0CAHwCAHI0AHwCAFN8AABqAwCDAABkAgBrAgBySgB0BABTfAAAagMAgwAAZAMAawIAcnkAdAUAZAQAZAUAfAEAagYAFHwBAGoHAIMAAIMDAFN8AQBqCACDAAB9AQB8AQBqCQB0CgCDAQABfAEAagsAgwAAAXwAAGoMAHwBAIMBAH0DAHwDAHwAAGsDAHK7AHwDAFN8AABqDQB0BQBkBABkBgB8AQBqDgCDAABkAwAYgwMAfAEAgwIAUygIAAAAcz0AAABSZXR1cm5zIHRoZSBsYXJnZXN0IHJlcHJlc2VudGFibGUgbnVtYmVyIHNtYWxsZXIgdGhhbiBpdHNlbGYuUh4AAABp/////2kBAAAAaQAAAABSMQAAAFK+AAAATigPAAAAUkAAAABSFwAAAFJ/AAAAUnoAAABSUgEAAFIkAAAAUjMAAABS5QAAAFI6AAAAUjQBAABSEgAAAHQRAAAAX2lnbm9yZV9hbGxfZmxhZ3NSrwAAAFK8AAAAUsIAAAAoBAAAAFIdAAAAUh4AAABSKgAAAHQIAAAAbmV3X3NlbGYoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0CgAAAG5leHRfbWludXNCDQAAcyIAAAAAAgwBDAISAQYBBAISAQQBEgEdAgwBDQEKAQ8BDAEEAR8BYwIAAAAEAAAABgAAAEMAAABz4QAAAHwBAGQHAGsIAHIYAHQBAIMAAH0BAG4AAHwAAGoCAGQBAHwBAIMAAX0CAHwCAHI0AHwCAFN8AABqAwCDAABkAgBrAgBySgB0BABTfAAAagMAgwAAZAMAawIAcnkAdAUAZAIAZAQAfAEAagYAFHwBAGoHAIMAAIMDAFN8AQBqCACDAAB9AQB8AQBqCQB0CgCDAQABfAEAagsAgwAAAXwAAGoMAHwBAIMBAH0DAHwDAHwAAGsDAHK7AHwDAFN8AABqDQB0BQBkBQBkBgB8AQBqDgCDAABkAgAYgwMAfAEAgwIAUygIAAAAcz0AAABSZXR1cm5zIHRoZSBzbWFsbGVzdCByZXByZXNlbnRhYmxlIG51bWJlciBsYXJnZXIgdGhhbiBpdHNlbGYuUh4AAABpAQAAAGn/////UjEAAABpAAAAAFK+AAAATigPAAAAUkAAAABSFwAAAFJ/AAAAUnoAAABSUwEAAFIkAAAAUjMAAABS5QAAAFI6AAAAUjQBAABSEQAAAFJpAQAAUq8AAABSuwAAAFLCAAAAKAQAAABSHQAAAFIeAAAAUioAAABSagEAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQJAAAAbmV4dF9wbHVzWQ0AAHMiAAAAAAIMAQwCEgEGAQQCEgEEARIBHQIMAQ0BCgEPAQwBBAEfAWMDAAAABQAAAAQAAABDAAAAc0ABAAB0AAB8AQBkAQB0AQCDAQF9AQB8AgBkBQBrCAByKgB0AwCDAAB9AgBuAAB8AABqBAB8AQB8AgCDAgB9AwB8AwByRgB8AwBTfAAAagUAfAEAgwEAfQQAfAQAZAIAawIAcm4AfAAAagYAfAEAgwEAU3wEAGQDAGsCAHKMAHwAAGoHAHwCAIMBAH0DAG4PAHwAAGoIAHwCAIMBAH0DAHwDAGoJAIMAAHLaAHwCAGoKAHQLAGQEAHwDAGoMAIMDAAF8AgBqCgB0DQCDAQABfAIAagoAdA4AgwEAAW5iAHwDAGoPAIMAAHwCAGoQAGsAAHI8AXwCAGoKAHQRAIMBAAF8AgBqCgB0EgCDAQABfAIAagoAdA0AgwEAAXwCAGoKAHQOAIMBAAF8AwBzPAF8AgBqCgB0EwCDAQABcTwBbgAAfAMAUygGAAAAc4sBAABSZXR1cm5zIHRoZSBudW1iZXIgY2xvc2VzdCB0byBzZWxmLCBpbiB0aGUgZGlyZWN0aW9uIHRvd2FyZHMgb3RoZXIuCgogICAgICAgIFRoZSByZXN1bHQgaXMgdGhlIGNsb3Nlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgdG8gc2VsZgogICAgICAgIChleGNsdWRpbmcgc2VsZikgdGhhdCBpcyBpbiB0aGUgZGlyZWN0aW9uIHRvd2FyZHMgb3RoZXIsCiAgICAgICAgdW5sZXNzIGJvdGggaGF2ZSB0aGUgc2FtZSB2YWx1ZS4gIElmIHRoZSB0d28gb3BlcmFuZHMgYXJlCiAgICAgICAgbnVtZXJpY2FsbHkgZXF1YWwsIHRoZW4gdGhlIHJlc3VsdCBpcyBhIGNvcHkgb2Ygc2VsZiB3aXRoIHRoZQogICAgICAgIHNpZ24gc2V0IHRvIGJlIHRoZSBzYW1lIGFzIHRoZSBzaWduIG9mIG90aGVyLgogICAgICAgIFKVAAAAaQAAAABp/////3MgAAAASW5maW5pdGUgcmVzdWx0IGZyb20gbmV4dF90b3dhcmROKBQAAABSjQAAAFInAAAAUkAAAABSFwAAAFJ/AAAAUosAAABSRgEAAFJsAQAAUmsBAABSegAAAFJVAAAAUgwAAABSJQAAAFIJAAAAUgoAAABShAAAAFIqAQAAUg0AAABSCwAAAFIGAAAAKAUAAABSHQAAAFJ8AAAAUh4AAABSKgAAAHQKAAAAY29tcGFyaXNvbigAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQLAAAAbmV4dF90b3dhcmRwDQAAczQAAAAACRICDAEMAhIBBgEEAg8BDAENAgwBEgIPAwwBCQEDAQoBDQEQARUBDQENAQ0BDQMGARMCYwIAAAADAAAAAwAAAEMAAABzvwAAAHwAAGoAAIMAAHIQAGQBAFN8AABqAQCDAAByIABkAgBTfAAAagIAgwAAfQIAfAIAZAMAawIAcjwAZAQAU3wCAGQFAGsCAHJMAGQGAFN8AABqAwCDAABybAB8AABqBAByZQBkBwBTZAgAU24AAHwBAGQOAGsIAHKEAHQGAIMAAH0BAG4AAHwAAGoHAGQJAHwBAIMAAXKqAHwAAGoEAHKjAGQKAFNkCwBTbgAAfAAAagQAcrcAZAwAU2QNAFNkDgBTKA8AAABzGwEAAFJldHVybnMgYW4gaW5kaWNhdGlvbiBvZiB0aGUgY2xhc3Mgb2Ygc2VsZi4KCiAgICAgICAgVGhlIGNsYXNzIGlzIG9uZSBvZiB0aGUgZm9sbG93aW5nIHN0cmluZ3M6CiAgICAgICAgICBzTmFOCiAgICAgICAgICBOYU4KICAgICAgICAgIC1JbmZpbml0eQogICAgICAgICAgLU5vcm1hbAogICAgICAgICAgLVN1Ym5vcm1hbAogICAgICAgICAgLVplcm8KICAgICAgICAgICtaZXJvCiAgICAgICAgICArU3Vibm9ybWFsCiAgICAgICAgICArTm9ybWFsCiAgICAgICAgICArSW5maW5pdHkKICAgICAgICBSewAAAFKjAAAAaQEAAABzCQAAACtJbmZpbml0eWn/////cwkAAAAtSW5maW5pdHlzBQAAAC1aZXJvcwUAAAArWmVyb1IeAAAAcwoAAAAtU3Vibm9ybWFscwoAAAArU3Vibm9ybWFscwcAAAAtTm9ybWFscwcAAAArTm9ybWFsTigIAAAAUoAAAABSgQAAAFJ6AAAAUk4BAABSJQAAAFJAAAAAUhcAAABSTQEAACgDAAAAUh0AAABSHgAAAHQDAAAAaW5mKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAwAAABudW1iZXJfY2xhc3OeDQAAcywAAAAADwwBBAEMAQQBDAEMAQQBDAEEAQwBCQEEAgcBDAEMARIBCQEEAgcCCQEEAmMBAAAAAQAAAAIAAABDAAAAcwoAAAB0AABkAQCDAQBTKAIAAABzJwAAAEp1c3QgcmV0dXJucyAxMCwgYXMgdGhpcyBpcyBEZWNpbWFsLCA6KWkKAAAAKAEAAABSAAAAACgBAAAAUh0AAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0BQAAAHJhZGl4yA0AAHMCAAAAAAJjAwAAAAgAAAAGAAAAQwAAAHNEAQAAfAIAZAQAawgAchgAdAEAgwAAfQIAbgAAdAIAfAEAZAEAdAMAgwEBfQEAfAAAagQAfAEAfAIAgwIAfQMAfAMAckYAfAMAU3wBAGoFAGQCAGsDAHJiAHwCAGoGAHQHAIMBAFN8AgBqCAALdAkAfAEAgwEABANrAQBvhgB8AgBqCABrAQBuAgACAXOYAHwCAGoGAHQHAIMBAFN8AABqCgCDAAByrgB0CwB8AACDAQBTdAkAfAEAgwEAfQQAfAAAagwAfQUAfAIAaggAdA0AfAUAgwEAGH0GAHwGAGQCAGsEAHLzAGQDAHwGABR8BQAXfQUAbhoAfAYAZAIAawAAcg0BfAUAfAYACx99BQBuAAB8BQB8BAAffAUAfAQAIBd9BwB0DgB8AABqDwB8BwBqEABkAwCDAQBwOgFkAwB8AABqBQCDAwBTKAUAAABzNQAAAFJldHVybnMgYSByb3RhdGVkIGNvcHkgb2Ygc2VsZiwgdmFsdWUtb2Ytb3RoZXIgdGltZXMuUpUAAABpAAAAAFJFAAAATigRAAAAUkAAAABSFwAAAFKNAAAAUicAAABSfwAAAFJDAAAAUlUAAABSBwAAAFIzAAAAUkcAAABSegAAAFIAAAAAUiYAAABSWAAAAFIkAAAAUiUAAABSWgAAACgIAAAAUh0AAABSfAAAAFIeAAAAUioAAAB0BQAAAHRvcm90dAYAAAByb3RkaWd0BQAAAHRvcGFkdAcAAAByb3RhdGVkKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAYAAAByb3RhdGXMDQAAcywAAAAAAgwBDAISAhIBBgEEAg8BDQEpAQ0CDAEKAwwBCQETAQwBEQEMAQ4DEgEJAWMDAAAABwAAAAcAAABDAAAAcwcBAAB8AgBkBQBrCAByGAB0AQCDAAB9AgBuAAB0AgB8AQBkAQB0AwCDAQF9AQB8AABqBAB8AQB8AgCDAgB9AwB8AwByRgB8AwBTfAEAagUAZAIAawMAcmIAfAIAagYAdAcAgwEAU2QDAHwCAGoIAHwCAGoJABcUfQQAZAQAfAIAaggAfAIAagkAFxR9BQB8BAB0CgB8AQCDAQAEA2sBAG+nAHwFAGsBAG4CAAIBc7kAfAIAagYAdAcAgwEAU3wAAGoLAIMAAHLPAHQMAHwAAIMBAFN0DQB8AABqDgB8AABqDwB8AABqBQB0CgB8AQCDAQAXgwMAfQYAfAYAahAAfAIAgwEAfQYAfAYAUygGAAAAcz4AAABSZXR1cm5zIHNlbGYgb3BlcmFuZCBhZnRlciBhZGRpbmcgdGhlIHNlY29uZCB2YWx1ZSB0byBpdHMgZXhwLlKVAAAAaQAAAABp/v///2kCAAAATigRAAAAUkAAAABSFwAAAFKNAAAAUicAAABSfwAAAFJDAAAAUlUAAABSBwAAAFI0AAAAUjMAAABSRwAAAFJ6AAAAUgAAAABSJAAAAFIlAAAAUiYAAABSrwAAACgHAAAAUh0AAABSfAAAAFIeAAAAUioAAAB0BgAAAGxpbWluZnQGAAAAbGltc3VwUnYAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0BgAAAHNjYWxlYu0NAABzIgAAAAACDAEMAhICEgEGAQQCDwENARQBFAEiAQ0CDAEKAiUBDwFjAwAAAAgAAAAGAAAAQwAAAHNnAQAAfAIAZAQAawgAchgAdAEAgwAAfQIAbgAAdAIAfAEAZAEAdAMAgwEBfQEAfAAAagQAfAEAfAIAgwIAfQMAfAMAckYAfAMAU3wBAGoFAGQCAGsDAHJiAHwCAGoGAHQHAIMBAFN8AgBqCAALdAkAfAEAgwEABANrAQBvhgB8AgBqCABrAQBuAgACAXOYAHwCAGoGAHQHAIMBAFN8AABqCgCDAAByrgB0CwB8AACDAQBTdAkAfAEAgwEAfQQAfAAAagwAfQUAfAIAaggAdA0AfAUAgwEAGH0GAHwGAGQCAGsEAHLzAGQDAHwGABR8BQAXfQUAbhoAfAYAZAIAawAAcg0BfAUAfAYACx99BQBuAAB8BABkAgBrAAByJgF8BQB8BAAgfQcAbhwAfAUAZAMAfAQAFBd9BwB8BwB8AgBqCAALH30HAHQOAHwAAGoPAHwHAGoQAGQDAIMBAHBdAWQDAHwAAGoFAIMDAFMoBQAAAHM1AAAAUmV0dXJucyBhIHNoaWZ0ZWQgY29weSBvZiBzZWxmLCB2YWx1ZS1vZi1vdGhlciB0aW1lcy5SlQAAAGkAAAAAUkUAAABOKBEAAABSQAAAAFIXAAAAUo0AAABSJwAAAFJ/AAAAUkMAAABSVQAAAFIHAAAAUjMAAABSRwAAAFJ6AAAAUgAAAABSJgAAAFJYAAAAUiQAAABSJQAAAFJaAAAAKAgAAABSHQAAAFJ8AAAAUh4AAABSKgAAAFJyAQAAUnMBAABSdAEAAHQHAAAAc2hpZnRlZCgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVLFAAAABg4AAHMyAAAAAAIMAQwCEgISAQYBBAIPAQ0BKQENAgwBCgMMAQkBEwEMAREBDAEOAwwBDQIOAQ4CCQFjAQAAAAEAAAADAAAAQwAAAHMWAAAAfAAAagAAdAEAfAAAgwEAZgEAZgIAUygBAAAATigCAAAAdAkAAABfX2NsYXNzX19SVwAAACgBAAAAUh0AAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0CgAAAF9fcmVkdWNlX18tDgAAcwIAAAAAAWMBAAAAAQAAAAMAAABDAAAAcykAAAB0AAB8AACDAQB0AQBrCAByFgB8AABTfAAAagIAdAMAfAAAgwEAgwEAUygBAAAATigEAAAAdAQAAAB0eXBlUgAAAABSewEAAFJXAAAAKAEAAABSHQAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQIAAAAX19jb3B5X18wDgAAcwYAAAAAARIBBAFjAgAAAAIAAAADAAAAQwAAAHMpAAAAdAAAfAAAgwEAdAEAawgAchYAfAAAU3wAAGoCAHQDAHwAAIMBAIMBAFMoAQAAAE4oBAAAAFJ9AQAAUgAAAABSewEAAFJXAAAAKAIAAABSHQAAAHQEAAAAbWVtbygAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQMAAAAX19kZWVwY29weV9fNQ4AAHMGAAAAAAESAQQBYwQAAAAOAAAACwAAAEMAAABz9AIAAHwCAGQQAGsIAHIYAHQBAIMAAH0CAG4AAHQCAHwBAGQBAHwDAIMBAX0EAHwAAGoDAHJnAHQEAHwAAGoFAHwEAIMCAH0FAHQGAHwAAGoHAIMAAIMBAH0GAHQIAHwFAHwGAHwEAIMDAFN8BABkAgAZZBAAawgAcpEAZAMAZAQAZwIAfAIAagkAGXwEAGQCADxuAAB8BABkAgAZZAUAawIAcsMAdAoAfAAAagUAfAAAagsAfAAAagwAZAYAF4MDAH0AAG4AAHwCAGoNAH0HAHwEAGQHABl9CAB8CABkEABrCQBybgF8BABkAgAZZAgAawYAcgsBfAAAag4AfAgAZAkAF3wHAIMCAH0AAHFuAXwEAGQCABlkCgBrBgByMQF8AABqDwB8CAALfAcAgwIAfQAAcW4BfAQAZAIAGWQLAGsGAHJuAXQQAHwAAGoLAIMBAHwIAGsEAHJuAXwAAGoOAHwIAHwHAIMCAH0AAHFuAW4AAHwAAAxyqQF8AABqDABkDABrBAByqQF8BABkAgAZZAoAawYAcqkBfAAAag8AZAwAfAcAgwIAfQAAbgAAfAAAagwAdBAAfAAAagsAgwEAF30JAHwEAGQCABlkCABrBgBy+AF8AAAMcu8BfAgAZBAAawkAcu8BZAkAfAgAGH0KAHFOAmQJAH0KAG5WAHwEAGQCABlkCgBrBgByEQJ8CQB9CgBuPQB8BABkAgAZZAsAawYAck4CfAAAagwAZAwAawEAckUCfAkAZA0AawQAckUCfAkAfQoAcU4CZAkAfQoAbgAAfAoAZAwAawAAcnUCZA4AfQsAZA4AfAoACxR8AABqCwAXfQwAblwAfAoAdBAAfAAAagsAgwEAawQAcrECfAAAagsAZA4AfAoAdBAAfAAAagsAgwEAGBQXfQsAZA8AfQwAbiAAfAAAagsAfAoAIHDBAmQOAH0LAHwAAGoLAHwKAB99DAB8CQB8CgAYfQ0AdBEAfAAAagUAfAsAfAwAfA0AfAQAgwUAUygRAAAAc3wBAABGb3JtYXQgYSBEZWNpbWFsIGluc3RhbmNlIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gc3BlY2lmaWVyLgoKICAgICAgICBUaGUgc3BlY2lmaWVyIHNob3VsZCBiZSBhIHN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIsIHdpdGggdGhlCiAgICAgICAgZm9ybSBkZXNjcmliZWQgaW4gUEVQIDMxMDEuICBGb3JtYXR0aW5nIHR5cGVzICdlJywgJ0UnLCAnZicsCiAgICAgICAgJ0YnLCAnZycsICdHJywgJ24nIGFuZCAnJScgYXJlIHN1cHBvcnRlZC4gIElmIHRoZSBmb3JtYXR0aW5nCiAgICAgICAgdHlwZSBpcyBvbWl0dGVkIGl0IGRlZmF1bHRzIHRvICdnJyBvciAnRycsIGRlcGVuZGluZyBvbiB0aGUKICAgICAgICB2YWx1ZSBvZiBjb250ZXh0LmNhcGl0YWxzLgogICAgICAgIHQLAAAAX2xvY2FsZWNvbnZSfQEAAHQBAAAAZ3QBAAAAR3QBAAAAJWkCAAAAdAkAAABwcmVjaXNpb250AgAAAGVFaQEAAABzAwAAAGZGJXQCAAAAZ0dpAAAAAGn6////UkUAAABSSQAAAE4oEgAAAFJAAAAAUhcAAAB0FwAAAF9wYXJzZV9mb3JtYXRfc3BlY2lmaWVyUkQAAAB0DAAAAF9mb3JtYXRfc2lnblIlAAAAUlcAAABSrQAAAHQNAAAAX2Zvcm1hdF9hbGlnblKnAAAAUiQAAABSJgAAAFJDAAAAUjIAAABSMQEAAFK2AAAAUlgAAAB0DgAAAF9mb3JtYXRfbnVtYmVyKA4AAABSHQAAAHQJAAAAc3BlY2lmaWVyUh4AAABSgQEAAHQEAAAAc3BlY1ItAAAAdAQAAABib2R5UjIAAABShQEAAFKpAAAAUqoAAABSagAAAFJrAAAAUkoAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0CgAAAF9fZm9ybWF0X188DgAAc1YAAAAADwwBDAISAwkBEgESARADEAEaAxABIgMJAQoBDAEQARkBEAEWASUBGAMmARUDFgEQARMBDQIJARABCQEQARsBCQIJAwwBBgEVARUBHgEJAhMBDQEKBCgEAAAAcwQAAABfZXhwcwQAAABfaW50cwUAAABfc2lnbnMLAAAAX2lzX3NwZWNpYWxOKIQAAABSIAAAAFIhAAAAUiIAAAB0CQAAAF9fc2xvdHNfX1JAAAAAUlAAAABSZQAAAHQLAAAAY2xhc3NtZXRob2RSeQAAAFJ6AAAAUn8AAABSggAAAFKDAAAAUosAAABSjwAAAFKQAAAAUpEAAABSkgAAAFKTAAAAUpQAAABSlgAAAFKfAAAAUqAAAABSoQAAAFJZAAAAUqsAAABSrAAAAFKwAAAAUrEAAABSJwAAAFKzAAAAUrsAAAB0CAAAAF9fcmFkZF9fUrwAAABSvQAAAFLBAAAAdAgAAABfX3JtdWxfX1LIAAAAUswAAABSzQAAAHQHAAAAX19kaXZfX3QIAAAAX19yZGl2X19SzwAAAFLQAAAAUtEAAABS0gAAAFLUAAAAUtUAAABS1gAAAFLZAAAAUtsAAAB0CQAAAF9fdHJ1bmNfX1LcAAAAdAgAAABwcm9wZXJ0eVLdAAAAUt4AAABS4AAAAFLhAAAAUigAAABSrwAAAFLuAAAAUu8AAABS8QAAAFLzAAAAUvUAAABS9gAAAFL3AAAAUvkAAAB0BAAAAGRpY3RS5gAAAFL8AAAAUgQBAABSFgEAAFIlAQAAUiYBAABSKQEAAFIsAQAAUi4BAABStgAAAFIxAQAAUjIBAABSmgAAAHQLAAAAdG9faW50ZWdyYWxSNwEAAFK1AAAAUrQAAABSmQAAAFL9AAAAUoQAAABSPAEAAFI9AQAAUjgBAABSRQEAAFKtAAAAUq4AAABSRgEAAFJKAAAAUkkBAABSSgEAAFItAQAAUpcAAABSSwEAAFKBAAAAUkwBAABSgAAAAFJNAQAAUk4BAABSUQEAAFJVAQAAUhgBAABSWAEAAFJZAQAAUlwBAABSYAEAAFJjAQAAUmUBAABSZgEAAFJkAQAAUmcBAABSaAEAAFJrAQAAUmwBAABSbgEAAFJwAQAAUnEBAABSdgEAAFJ5AQAAUsUAAABSfAEAAFJ+AQAAUoABAABSjwEAACgAAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UgAAAAD6AQAAcw4BAAAGAQYCBgYPkwkkDAIJDwkNDyAJIQkHCUAMCAwIDAkMCQwJDAkMEwk0CQcJBQ80DAoMFgwVDxYMVgYCDA4MCAw3BgIMOwkhDAcGAQYCDCQMBwwbDAcMSwwcDAcJCgkNBgIJAgwCCQIMAgkDCQMJBwkMCWYJBwkECQkJBwkICQcJBwkHBgEGAQYBBgEGAQYBBgEGAQkDDCwMVAntD9gMBwwZEkcJDwkiCRcPHQ8RBgIMYwwqDCIJCQkGCQgMCAwMCUkJCwkECQcJBgxLCQgJCAkECQQMCAkECQQJBAwICQQJGQwyCR4MMwweCQ4JDQwRDAcMEQwRDB4MHgwXDBcMLgwqCQQMIQwZDCcJAwkFCQdjBAAAAAUAAAACAAAAQwAAAHM3AAAAdAAAagEAdAIAgwEAfQQAfAAAfAQAXwMAfAEAfAQAXwQAfAIAfAQAXwUAfAMAfAQAXwYAfAQAUygBAAAAc70AAABDcmVhdGUgYSBkZWNpbWFsIGluc3RhbmNlIGRpcmVjdGx5LCB3aXRob3V0IGFueSB2YWxpZGF0aW9uLAogICAgbm9ybWFsaXphdGlvbiAoZS5nLiByZW1vdmFsIG9mIGxlYWRpbmcgemVyb3MpIG9yIGFyZ3VtZW50CiAgICBjb252ZXJzaW9uLgoKICAgIFRoaXMgZnVuY3Rpb24gaXMgZm9yICppbnRlcm5hbCB1c2Ugb25seSouCiAgICAoBwAAAFJPAAAAUlAAAABSAAAAAFIlAAAAUiYAAABSQwAAAFJEAAAAKAUAAABSLQAAAHQLAAAAY29lZmZpY2llbnRSAgEAAHQHAAAAc3BlY2lhbFIdAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UiQAAACMDgAAcwwAAAAACA8BCQEJAQkBCQJSQQAAAGMAAAAAAAAAAAEAAABCAAAAcykAAABlAABaAQBkAABaAgBkAQCEAABaAwBkAgCEAABaBABkAwCEAABaBQBSUygEAAAAc60AAABDb250ZXh0IG1hbmFnZXIgY2xhc3MgdG8gc3VwcG9ydCBsb2NhbGNvbnRleHQoKS4KCiAgICAgIFNldHMgYSBjb3B5IG9mIHRoZSBzdXBwbGllZCBjb250ZXh0IGluIF9fZW50ZXJfXygpIGFuZCByZXN0b3JlcwogICAgICB0aGUgcHJldmlvdXMgZGVjaW1hbCBjb250ZXh0IGluIF9fZXhpdF9fKCkKICAgIGMCAAAAAgAAAAIAAABDAAAAcxMAAAB8AQBqAACDAAB8AABfAQBkAABTKAEAAABOKAIAAABSOgAAAHQLAAAAbmV3X2NvbnRleHQoAgAAAFIdAAAAUpwBAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0CAAAAF9faW5pdF9fqg4AAHMCAAAAAAFjAQAAAAEAAAACAAAAQwAAAHMgAAAAdAAAgwAAfAAAXwEAdAIAfAAAagMAgwEAAXwAAGoDAFMoAQAAAE4oBAAAAFIXAAAAdA0AAABzYXZlZF9jb250ZXh0UhYAAABSnAEAACgBAAAAUh0AAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0CQAAAF9fZW50ZXJfX6wOAABzBgAAAAABDAENAWMEAAAABAAAAAIAAABDAAAAcxEAAAB0AAB8AABqAQCDAQABZAAAUygBAAAATigCAAAAUhYAAABSngEAACgEAAAAUh0AAAB0AQAAAHR0AQAAAHZ0AgAAAHRiKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAgAAABfX2V4aXRfX7AOAABzAgAAAAABKAYAAABSIAAAAFIhAAAAUiIAAABSnQEAAFKfAQAAUqMBAAAoAAAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVJBAAAApA4AAHMIAAAABgUGAQkCCQRjAAAAAAAAAAAKAAAAQgAAAHPnAgAAZQAAWgEAZAAAWgIAZE4AZE4AZE4AZE4AZE4AZE4AZE4AZAEAZE4AZAIAhAkAWgQAZAMAhAAAWgUAZAQAhAAAWgYAZAUAhAAAWgcAZAYAhAAAWggAZQgAWgkAZE4AZAcAhAEAWgoAZAgAhAAAWgsAZAkAhAAAWgwAZAoAhAAAWg0AZE4AWg4AZAsAhAAAWg8AZAwAhAAAWhAAZA0AhAAAWhEAZA4AZA8AhAEAWhIAZBAAhAAAWhMAZBEAhAAAWhQAZBIAhAAAWhUAZBMAhAAAWhYAZBQAhAAAWhcAZBUAhAAAWhgAZBYAhAAAWhkAZBcAhAAAWhoAZBgAhAAAWhsAZBkAhAAAWhwAZBoAhAAAWh0AZBsAhAAAWh4AZBwAhAAAWh8AZB0AhAAAWiAAZB4AhAAAWiEAZB8AhAAAWiIAZCAAhAAAWiMAZCEAhAAAWiQAZCIAhAAAWiUAZCMAhAAAWiYAZCQAhAAAWicAZCUAhAAAWigAZCYAhAAAWikAZCcAhAAAWioAZCgAhAAAWisAZCkAhAAAWiwAZCoAhAAAWi0AZCsAhAAAWi4AZCwAhAAAWi8AZC0AhAAAWjAAZC4AhAAAWjEAZC8AhAAAWjIAZDAAhAAAWjMAZDEAhAAAWjQAZDIAhAAAWjUAZDMAhAAAWjYAZDQAhAAAWjcAZDUAhAAAWjgAZDYAhAAAWjkAZDcAhAAAWjoAZDgAhAAAWjsAZDkAhAAAWjwAZDoAhAAAWj0AZDsAhAAAWj4AZDwAhAAAWj8AZD0AhAAAWkAAZD4AhAAAWkEAZE4AZD8AhAEAWkIAZEAAhAAAWkMAZEEAhAAAWkQAZEIAhAAAWkUAZEMAhAAAWkYAZEQAhAAAWkcAZEUAhAAAWkgAZEYAhAAAWkkAZEcAhAAAWkoAZEgAhAAAWksAZEkAhAAAWkwAZEoAhAAAWk0AZEsAhAAAWk4AZEwAhAAAWk8AZE0AhAAAWlAAZVAAWlEAUlMoTwAAAHPfAgAAQ29udGFpbnMgdGhlIGNvbnRleHQgZm9yIGEgRGVjaW1hbCBpbnN0YW5jZS4KCiAgICBDb250YWluczoKICAgIHByZWMgLSBwcmVjaXNpb24gKGZvciB1c2UgaW4gcm91bmRpbmcsIGRpdmlzaW9uLCBzcXVhcmUgcm9vdHMuLikKICAgIHJvdW5kaW5nIC0gcm91bmRpbmcgdHlwZSAoaG93IHlvdSByb3VuZCkKICAgIHRyYXBzIC0gSWYgdHJhcHNbZXhjZXB0aW9uXSA9IDEsIHRoZW4gdGhlIGV4Y2VwdGlvbiBpcwogICAgICAgICAgICAgICAgICAgIHJhaXNlZCB3aGVuIGl0IGlzIGNhdXNlZC4gIE90aGVyd2lzZSwgYSB2YWx1ZSBpcwogICAgICAgICAgICAgICAgICAgIHN1YnN0aXR1dGVkIGluLgogICAgZmxhZ3MgIC0gV2hlbiBhbiBleGNlcHRpb24gaXMgY2F1c2VkLCBmbGFnc1tleGNlcHRpb25dIGlzIHNldC4KICAgICAgICAgICAgIChXaGV0aGVyIG9yIG5vdCB0aGUgdHJhcF9lbmFibGVyIGlzIHNldCkKICAgICAgICAgICAgIFNob3VsZCBiZSByZXNldCBieSB1c2VyIG9mIERlY2ltYWwgaW5zdGFuY2UuCiAgICBFbWluIC0gICBNaW5pbXVtIGV4cG9uZW50CiAgICBFbWF4IC0gICBNYXhpbXVtIGV4cG9uZW50CiAgICBjYXBpdGFscyAtICAgICAgSWYgMSwgMSoxMF4xIGlzIHByaW50ZWQgYXMgMUUrMS4KICAgICAgICAgICAgICAgICAgICBJZiAwLCBwcmludGVkIGFzIDFlMQogICAgX2NsYW1wIC0gSWYgMSwgY2hhbmdlIGV4cG9uZW50cyBpZiB0b28gaGlnaCAoRGVmYXVsdCAwKQogICAgaQAAAABjCgAAAAsAAAAFAAAAAwAAAHOwAQAAeQoAdAAAfQoAV24RAAR0AQBrCgByHQABAQFuAQBYfAEAZAAAawkAcjAAfAEAbgYAfAoAagMAfAAAXwMAfAIAZAAAawkAck4AfAIAbgYAfAoAagQAfAAAXwQAfAUAZAAAawkAcmwAfAUAbgYAfAoAagUAfAAAXwUAfAYAZAAAawkAcooAfAYAbgYAfAoAagYAfAAAXwYAfAcAZAAAawkAcqgAfAcAbgYAfAoAagcAfAAAXwcAfAgAZAAAawkAcsYAfAgAbgYAfAoAaggAfAAAXwgAfAkAZAAAawgAcuoAZwAAfAAAXwkAbgkAfAkAfAAAXwkAiAEAZAAAawgAchQBfAoAagoAagsAgwAAfAAAXwoAbjoAdAwAiAEAdA0AgwIAc0UBdA0AhwEAZgEAZAEAhgAAdA4ARIMBAIMBAHwAAF8KAG4JAIgBAHwAAF8KAIgAAGQAAGsIAHJyAXQNAGoPAHQOAGQCAIMCAHwAAF8QAG46AHQMAIgAAHQNAIMCAHOjAXQNAIcAAGYBAGQDAIYAAHQOAESDAQCDAQB8AABfEABuCQCIAAB8AABfEABkAABTKAQAAABOYwEAAAACAAAABQAAADMAAABzJwAAAHwAAF0dAH0BAHwBAHQAAHwBAIgAAGsGAIMBAGYCAFYBcQMAZAAAUygBAAAATigBAAAAUkcAAAAoAgAAAHQCAAAALjBS2AAAACgBAAAAUhsBAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5cwkAAAA8Z2VuZXhwcj7hDgAAcwIAAAAGAGkAAAAAYwEAAAACAAAABQAAADMAAABzJwAAAHwAAF0dAH0BAHwBAHQAAHwBAIgAAGsGAIMBAGYCAFYBcQMAZAAAUygBAAAATigBAAAAUkcAAAAoAgAAAFKkAQAAUtgAAAAoAQAAAFIcAQAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXMJAAAAPGdlbmV4cHI+6A4AAHMCAAAABgAoEQAAAFICAAAAdAkAAABOYW1lRXJyb3JSQAAAAFIzAAAAUjIAAABSKgEAAFI0AAAAUqcAAABS4gAAAHQOAAAAX2lnbm9yZWRfZmxhZ3NSGwEAAFI6AAAAUlEAAABSmAEAAFIaAQAAdAgAAABmcm9ta2V5c1IcAQAAKAsAAABSHQAAAFIzAAAAUjIAAABSGwEAAFIcAQAAUioBAABSNAAAAFKnAAAAUuIAAABSpgEAAHQCAAAAZGMoAAAAACgCAAAAUhwBAABSGwEAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5Up0BAADGDgAAcy4AAAAABwMBCgENAQQCHgEeAR4BHgEeAR4CDAEMAgkCDAEVAQ8BIgIJAgwBGAEPASICYwEAAAAGAAAABAAAAEMAAABzzAAAAGcAAH0BAHwBAGoAAGQBAHQBAHwAAIMBABaDAQABZwAAfAAAagIAagMAgwAARF0bAFwCAH0CAH0DAHwDAHItAHwCAGoEAF4CAHEtAH0EAHwBAGoAAGQCAGQDAGoFAHwEAIMBABdkBAAXgwEAAWcAAHwAAGoGAGoDAIMAAERdGwBcAgB9BQB9AwB8AwByfAB8BQBqBABeAgBxfAB9BAB8AQBqAABkBQBkAwBqBQB8BACDAQAXZAQAF4MBAAFkAwBqBQB8AQCDAQBkBgAXUygHAAAAcxkAAABTaG93IHRoZSBjdXJyZW50IGNvbnRleHQuc2EAAABDb250ZXh0KHByZWM9JShwcmVjKWQsIHJvdW5kaW5nPSUocm91bmRpbmcpcywgRW1pbj0lKEVtaW4pZCwgRW1heD0lKEVtYXgpZCwgY2FwaXRhbHM9JShjYXBpdGFscylkcwcAAABmbGFncz1bcwIAAAAsIHQBAAAAXXMHAAAAdHJhcHM9W3QBAAAAKSgHAAAAUmEAAAB0BAAAAHZhcnNSHAEAAHQFAAAAaXRlbXNSIAAAAFJiAAAAUhsBAAAoBgAAAFIdAAAAUtgAAABSdQAAAFKhAQAAdAUAAABuYW1lc1KgAQAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UqEAAADsDgAAcxAAAAAAAgYBCQIOATEBHgExAR4BYwEAAAACAAAABAAAAEMAAABzJQAAAHgeAHwAAGoAAERdEwB9AQBkAQB8AABqAAB8AQA8cQoAV2QCAFMoAwAAAHMXAAAAUmVzZXQgYWxsIGZsYWdzIHRvIHplcm9pAAAAAE4oAQAAAFIcAQAAKAIAAABSHQAAAHQEAAAAZmxhZygAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVI7AAAA+A4AAHMEAAAAAAIQAWMBAAAAAgAAAAoAAABDAAAAc0MAAAB0AAB8AABqAQB8AABqAgB8AABqAwB8AABqBAB8AABqBQB8AABqBgB8AABqBwB8AABqCAB8AABqCQCDCQB9AQB8AQBTKAEAAABzIQAAAFJldHVybnMgYSBzaGFsbG93IGNvcHkgZnJvbSBzZWxmLigKAAAAUgEAAABSMwAAAFIyAAAAUhsBAABSHAEAAFIqAQAAUjQAAABSpwAAAFLiAAAAUqYBAAAoAgAAAFIdAAAAdAIAAABuYygAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVIzAQAA/Q4AAHMIAAAAAAIVARIBGAFjAQAAAAIAAAAKAAAAQwAAAHNPAAAAdAAAfAAAagEAfAAAagIAfAAAagMAagQAgwAAfAAAagUAagQAgwAAfAAAagYAfAAAagcAfAAAaggAfAAAagkAfAAAagoAgwkAfQEAfAEAUygBAAAAcx4AAABSZXR1cm5zIGEgZGVlcCBjb3B5IGZyb20gc2VsZi4oCwAAAFIBAAAAUjMAAABSMgAAAFIbAQAAUjoAAABSHAEAAFIqAQAAUjQAAABSpwAAAFLiAAAAUqYBAAAoAgAAAFIdAAAAUq8BAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSOgAAAAQPAABzCAAAAAACGwEYARgBYwMAAAAFAAAAAwAAAEcAAABzcQAAAHQAAGoBAHwBAHwBAIMCAH0EAHwEAHwAAGoCAGsGAHI0AHwEAIMAAGoDAHwAAHwDAIwBAFNkAQB8AABqBAB8BAA8fAAAagUAfAQAGXNhAHwBAIMAAGoDAHwAAHwDAIwBAFN8BAB8AgCDAQCCAQBkAgBTKAMAAABzIwEAAEhhbmRsZXMgYW4gZXJyb3IKCiAgICAgICAgSWYgdGhlIGZsYWcgaXMgaW4gX2lnbm9yZWRfZmxhZ3MsIHJldHVybnMgdGhlIGRlZmF1bHQgcmVzcG9uc2UuCiAgICAgICAgT3RoZXJ3aXNlLCBpdCBzZXRzIHRoZSBmbGFnLCB0aGVuLCBpZiB0aGUgY29ycmVzcG9uZGluZwogICAgICAgIHRyYXBfZW5hYmxlciBpcyBzZXQsIGl0IHJlcmFpc2VzIHRoZSBleGNlcHRpb24uICBPdGhlcndpc2UsIGl0IHJldHVybnMKICAgICAgICB0aGUgZGVmYXVsdCB2YWx1ZSBhZnRlciBzZXR0aW5nIHRoZSBmbGFnLgogICAgICAgIGkBAAAATigGAAAAdA4AAABfY29uZGl0aW9uX21hcHQDAAAAZ2V0UqYBAABSHwAAAFIcAQAAUhsBAAAoBQAAAFIdAAAAdAkAAABjb25kaXRpb250CwAAAGV4cGxhbmF0aW9uUhsAAAB0BQAAAGVycm9yKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UlUAAAAMDwAAcw4AAAAACBIBDwITAg0BDQITBGMBAAAAAQAAAAIAAABDAAAAcw0AAAB8AABqAAB0AQCMAABTKAEAAABzJAAAAElnbm9yZSBhbGwgZmxhZ3MsIGlmIHRoZXkgYXJlIHJhaXNlZCgCAAAAdA0AAABfaWdub3JlX2ZsYWdzUhoBAAAoAQAAAFIdAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UmkBAAAiDwAAcwIAAAAAAmMBAAAAAgAAAAMAAABHAAAAcyAAAAB8AABqAAB0AQB8AQCDAQAXfAAAXwAAdAEAfAEAgwEAUygBAAAAcyQAAABJZ25vcmUgdGhlIGZsYWdzLCBpZiB0aGV5IGFyZSByYWlzZWQoAgAAAFKmAQAAUl4AAAAoAgAAAFIdAAAAUhwBAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlStQEAACYPAABzBAAAAAAEFgFjAQAAAAMAAAAFAAAARwAAAHNRAAAAfAEAciwAdAAAfAEAZAEAGXQBAHQCAGYCAIMCAHIsAHwBAGQBABl9AQBuAAB4HgB8AQBEXRYAfQIAfAAAagMAagQAfAIAgwEAAXEzAFdkAgBTKAMAAABzKwAAAFN0b3AgaWdub3JpbmcgdGhlIGZsYWdzLCBpZiB0aGV5IGFyZSByYWlzZWRpAAAAAE4oBQAAAFJRAAAAUl8AAABSXgAAAFKmAQAAdAYAAAByZW1vdmUoAwAAAFIdAAAAUhwBAABSrgEAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQNAAAAX3JlZ2FyZF9mbGFncy0PAABzCAAAAAACHwENAQ0BYwEAAAABAAAAAwAAAEMAAABzGAAAAHQAAHwAAGoBAHwAAGoCABhkAQAXgwEAUygCAAAAcyEAAABSZXR1cm5zIEV0aW55ICg9IEVtaW4gLSBwcmVjICsgMSlpAQAAACgDAAAAUkcAAABSKgEAAFIzAAAAKAEAAABSHQAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVLCAAAANw8AAHMCAAAAAAJjAQAAAAEAAAADAAAAQwAAAHMYAAAAdAAAfAAAagEAfAAAagIAGGQBABeDAQBTKAIAAABzLAAAAFJldHVybnMgbWF4aW11bSBleHBvbmVudCAoPSBFbWF4IC0gcHJlYyArIDEpaQEAAAAoAwAAAFJHAAAAUjQAAABSMwAAACgBAAAAUh0AAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlS5QAAADsPAABzAgAAAAACYwIAAAADAAAAAgAAAEMAAABzFgAAAHwAAGoAAH0CAHwBAHwAAF8AAHwCAFMoAQAAAHPTAQAAU2V0cyB0aGUgcm91bmRpbmcgdHlwZS4KCiAgICAgICAgU2V0cyB0aGUgcm91bmRpbmcgdHlwZSwgYW5kIHJldHVybnMgdGhlIGN1cnJlbnQgKHByZXZpb3VzKQogICAgICAgIHJvdW5kaW5nIHR5cGUuICBPZnRlbiB1c2VkIGxpa2U6CgogICAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNvcHkoKQogICAgICAgICMgc28geW91IGRvbid0IGNoYW5nZSB0aGUgY2FsbGluZyBjb250ZXh0CiAgICAgICAgIyBpZiBhbiBlcnJvciBvY2N1cnMgaW4gdGhlIG1pZGRsZS4KICAgICAgICByb3VuZGluZyA9IGNvbnRleHQuX3NldF9yb3VuZGluZyhST1VORF9VUCkKICAgICAgICB2YWwgPSBzZWxmLl9fc3ViX18ob3RoZXIsIGNvbnRleHQ9Y29udGV4dCkKICAgICAgICBjb250ZXh0Ll9zZXRfcm91bmRpbmcocm91bmRpbmcpCgogICAgICAgIFRoaXMgd2lsbCBtYWtlIGl0IHJvdW5kIHVwIGZvciB0aGF0IG9wZXJhdGlvbi4KICAgICAgICAoAQAAAFIyAAAAKAMAAABSHQAAAFJ9AQAAUjIAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSNAEAAD8PAABzBgAAAAAPCQEJAVJFAAAAYwIAAAADAAAABQAAAEMAAABziwAAAHQAAHwBAHQBAIMCAHIxAHwBAHwBAGoCAIMAAGsDAHIxAHwAAGoDAHQEAGQBAIMCAFN0BQB8AQBkAgB8AACDAQF9AgB8AgBqBgCDAAByfgB0BwB8AgBqCACDAQB8AABqCQB8AABqCgAYawQAcn4AfAAAagMAdAQAZAMAgwIAU3wCAGoLAHwAAIMBAFMoBAAAAHObAAAAQ3JlYXRlcyBhIG5ldyBEZWNpbWFsIGluc3RhbmNlIGJ1dCB1c2luZyBzZWxmIGFzIGNvbnRleHQuCgogICAgICAgIFRoaXMgbWV0aG9kIGltcGxlbWVudHMgdGhlIHRvLW51bWJlciBvcGVyYXRpb24gb2YgdGhlCiAgICAgICAgSUJNIERlY2ltYWwgc3BlY2lmaWNhdGlvbi5zLwAAAG5vIHRyYWlsaW5nIG9yIGxlYWRpbmcgd2hpdGVzcGFjZSBpcyBwZXJtaXR0ZWQuUh4AAABzHwAAAGRpYWdub3N0aWMgaW5mbyB0b28gbG9uZyBpbiBOYU4oDAAAAFJRAAAAUlIAAABSVAAAAFJVAAAAUisAAABSAAAAAFJ5AAAAUlgAAABSJgAAAFIzAAAAUuIAAABSrwAAACgDAAAAUh0AAABSTwEAAFJ2AAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dA4AAABjcmVhdGVfZGVjaW1hbFIPAABzEAAAAAAGIQEJAQcDEgErAQkBBwFjAgAAAAMAAAACAAAAQwAAAHMcAAAAdAAAagEAfAEAgwEAfQIAfAIAagIAfAAAgwEAUygBAAAAc8cBAABDcmVhdGVzIGEgbmV3IERlY2ltYWwgaW5zdGFuY2UgZnJvbSBhIGZsb2F0IGJ1dCByb3VuZGluZyB1c2luZyBzZWxmCiAgICAgICAgYXMgdGhlIGNvbnRleHQuCgogICAgICAgID4+PiBjb250ZXh0ID0gQ29udGV4dChwcmVjPTUsIHJvdW5kaW5nPVJPVU5EX0RPV04pCiAgICAgICAgPj4+IGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgzLjE0MTU5MjY1MzU4OTc5MzIpCiAgICAgICAgRGVjaW1hbCgnMy4xNDE1JykKICAgICAgICA+Pj4gY29udGV4dCA9IENvbnRleHQocHJlYz01LCB0cmFwcz1bSW5leGFjdF0pCiAgICAgICAgPj4+IGNvbnRleHQuY3JlYXRlX2RlY2ltYWxfZnJvbV9mbG9hdCgzLjE0MTU5MjY1MzU4OTc5MzIpCiAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogICAgICAgICAgICAuLi4KICAgICAgICBJbmV4YWN0OiBOb25lCgogICAgICAgICgDAAAAUgAAAABSZQAAAFKvAAAAKAMAAABSHQAAAFJ1AAAAUnYAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0GQAAAGNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXRjDwAAcwQAAAAADg8BYwIAAAACAAAABAAAAEMAAABzIgAAAHQAAHwBAGQBAHQBAIMBAX0BAHwBAGoCAGQCAHwAAIMAAVMoAwAAAHNbAgAAUmV0dXJucyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIG9wZXJhbmQuCgogICAgICAgIElmIHRoZSBvcGVyYW5kIGlzIG5lZ2F0aXZlLCB0aGUgcmVzdWx0IGlzIHRoZSBzYW1lIGFzIHVzaW5nIHRoZSBtaW51cwogICAgICAgIG9wZXJhdGlvbiBvbiB0aGUgb3BlcmFuZC4gIE90aGVyd2lzZSwgdGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBhcyB1c2luZwogICAgICAgIHRoZSBwbHVzIG9wZXJhdGlvbiBvbiB0aGUgb3BlcmFuZC4KCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hYnMoRGVjaW1hbCgnMi4xJykpCiAgICAgICAgRGVjaW1hbCgnMi4xJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFicyhEZWNpbWFsKCctMTAwJykpCiAgICAgICAgRGVjaW1hbCgnMTAwJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFicyhEZWNpbWFsKCcxMDEuNScpKQogICAgICAgIERlY2ltYWwoJzEwMS41JykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFicyhEZWNpbWFsKCctMTAxLjUnKSkKICAgICAgICBEZWNpbWFsKCcxMDEuNScpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hYnMoLTEpCiAgICAgICAgRGVjaW1hbCgnMScpCiAgICAgICAgUpUAAABSHgAAACgDAAAAUo0AAABSJwAAAFKzAAAAKAIAAABSHQAAAFIUAQAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UlwAAAB1DwAAcwQAAAAAEhIBYwMAAAAEAAAABAAAAEMAAABzTgAAAHQAAHwBAGQBAHQBAIMBAX0BAHwBAGoCAHwCAGQCAHwAAIMBAX0DAHwDAHQDAGsIAHJGAHQEAGQDAHwCABaDAQCCAQBuBAB8AwBTZAQAUygFAAAAc6sBAABSZXR1cm4gdGhlIHN1bSBvZiB0aGUgdHdvIG9wZXJhbmRzLgoKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmFkZChEZWNpbWFsKCcxMicpLCBEZWNpbWFsKCc3LjAwJykpCiAgICAgICAgRGVjaW1hbCgnMTkuMDAnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWRkKERlY2ltYWwoJzFFKzInKSwgRGVjaW1hbCgnMS4wMUUrNCcpKQogICAgICAgIERlY2ltYWwoJzEuMDJFKzQnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuYWRkKDEsIERlY2ltYWwoMikpCiAgICAgICAgRGVjaW1hbCgnMycpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hZGQoRGVjaW1hbCg4KSwgNSkKICAgICAgICBEZWNpbWFsKCcxMycpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5hZGQoNSwgNSkKICAgICAgICBEZWNpbWFsKCcxMCcpCiAgICAgICAgUpUAAABSHgAAAHMfAAAAVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbE4oBQAAAFKNAAAAUicAAABSuwAAAFKOAAAAUmYAAAAoBAAAAFIdAAAAUhQBAABSYgEAAFLLAAAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5dAMAAABhZGSKDwAAcwoAAAAADhIBFQEMARMCYwIAAAACAAAAAwAAAEMAAABzEwAAAHQAAHwBAGoBAHwAAIMBAIMBAFMoAQAAAE4oAgAAAFJXAAAAUq8AAAAoAgAAAFIdAAAAUhQBAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0BgAAAF9hcHBseZ8PAABzAgAAAAABYwIAAAACAAAAAwAAAEMAAABzEAAAAHwBAGoAAGQBAHwAAIMAAVMoAgAAAHP7AAAAUmV0dXJucyB0aGUgc2FtZSBEZWNpbWFsIG9iamVjdC4KCiAgICAgICAgQXMgd2UgZG8gbm90IGhhdmUgZGlmZmVyZW50IGVuY29kaW5ncyBmb3IgdGhlIHNhbWUgbnVtYmVyLCB0aGUKICAgICAgICByZWNlaXZlZCBvYmplY3QgYWxyZWFkeSBpcyBpbiBpdHMgY2Fub25pY2FsIGZvcm0uCgogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY2Fub25pY2FsKERlY2ltYWwoJzIuNTAnKSkKICAgICAgICBEZWNpbWFsKCcyLjUwJykKICAgICAgICBSHgAAACgBAAAAUjwBAAAoAgAAAFIdAAAAUhQBAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSPAEAAKIPAABzAgAAAAAJYwMAAAADAAAABAAAAEMAAABzJQAAAHQAAHwBAGQBAHQBAIMBAX0BAHwBAGoCAHwCAGQCAHwAAIMBAVMoAwAAAHOFBQAAQ29tcGFyZXMgdmFsdWVzIG51bWVyaWNhbGx5LgoKICAgICAgICBJZiB0aGUgc2lnbnMgb2YgdGhlIG9wZXJhbmRzIGRpZmZlciwgYSB2YWx1ZSByZXByZXNlbnRpbmcgZWFjaCBvcGVyYW5kCiAgICAgICAgKCctMScgaWYgdGhlIG9wZXJhbmQgaXMgbGVzcyB0aGFuIHplcm8sICcwJyBpZiB0aGUgb3BlcmFuZCBpcyB6ZXJvIG9yCiAgICAgICAgbmVnYXRpdmUgemVybywgb3IgJzEnIGlmIHRoZSBvcGVyYW5kIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvKSBpcyB1c2VkIGluCiAgICAgICAgcGxhY2Ugb2YgdGhhdCBvcGVyYW5kIGZvciB0aGUgY29tcGFyaXNvbiBpbnN0ZWFkIG9mIHRoZSBhY3R1YWwKICAgICAgICBvcGVyYW5kLgoKICAgICAgICBUaGUgY29tcGFyaXNvbiBpcyB0aGVuIGVmZmVjdGVkIGJ5IHN1YnRyYWN0aW5nIHRoZSBzZWNvbmQgb3BlcmFuZCBmcm9tCiAgICAgICAgdGhlIGZpcnN0IGFuZCB0aGVuIHJldHVybmluZyBhIHZhbHVlIGFjY29yZGluZyB0byB0aGUgcmVzdWx0IG9mIHRoZQogICAgICAgIHN1YnRyYWN0aW9uOiAnLTEnIGlmIHRoZSByZXN1bHQgaXMgbGVzcyB0aGFuIHplcm8sICcwJyBpZiB0aGUgcmVzdWx0IGlzCiAgICAgICAgemVybyBvciBuZWdhdGl2ZSB6ZXJvLCBvciAnMScgaWYgdGhlIHJlc3VsdCBpcyBncmVhdGVyIHRoYW4gemVyby4KCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCczJykpCiAgICAgICAgRGVjaW1hbCgnLTEnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKCcyLjEnKSwgRGVjaW1hbCgnMi4xJykpCiAgICAgICAgRGVjaW1hbCgnMCcpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCcyLjEwJykpCiAgICAgICAgRGVjaW1hbCgnMCcpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnMi4xJykpCiAgICAgICAgRGVjaW1hbCgnMScpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCctMycpKQogICAgICAgIERlY2ltYWwoJzEnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKCctMycpLCBEZWNpbWFsKCcyLjEnKSkKICAgICAgICBEZWNpbWFsKCctMScpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlKDEsIDIpCiAgICAgICAgRGVjaW1hbCgnLTEnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZShEZWNpbWFsKDEpLCAyKQogICAgICAgIERlY2ltYWwoJy0xJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmUoMSwgRGVjaW1hbCgyKSkKICAgICAgICBEZWNpbWFsKCctMScpCiAgICAgICAgUpUAAABSHgAAACgDAAAAUo0AAABSJwAAAFKWAAAAKAMAAABSHQAAAFIUAQAAUmIBAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSlgAAAK0PAABzBAAAAAAhEgFjAwAAAAMAAAAEAAAAQwAAAHMlAAAAdAAAfAEAZAEAdAEAgwEBfQEAfAEAagIAfAIAZAIAfAAAgwEBUygDAAAAcxQEAABDb21wYXJlcyB0aGUgdmFsdWVzIG9mIHRoZSB0d28gb3BlcmFuZHMgbnVtZXJpY2FsbHkuCgogICAgICAgIEl0J3MgcHJldHR5IG11Y2ggbGlrZSBjb21wYXJlKCksIGJ1dCBhbGwgTmFOcyBzaWduYWwsIHdpdGggc2lnbmFsaW5nCiAgICAgICAgTmFOcyB0YWtpbmcgcHJlY2VkZW5jZSBvdmVyIHF1aWV0IE5hTnMuCgogICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0CiAgICAgICAgPj4+IGMuY29tcGFyZV9zaWduYWwoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzMnKSkKICAgICAgICBEZWNpbWFsKCctMScpCiAgICAgICAgPj4+IGMuY29tcGFyZV9zaWduYWwoRGVjaW1hbCgnMi4xJyksIERlY2ltYWwoJzIuMScpKQogICAgICAgIERlY2ltYWwoJzAnKQogICAgICAgID4+PiBjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dID0gMAogICAgICAgID4+PiBwcmludCBjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dCiAgICAgICAgMAogICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoJ05hTicpLCBEZWNpbWFsKCcyLjEnKSkKICAgICAgICBEZWNpbWFsKCdOYU4nKQogICAgICAgID4+PiBwcmludCBjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dCiAgICAgICAgMQogICAgICAgID4+PiBjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dID0gMAogICAgICAgID4+PiBwcmludCBjLmZsYWdzW0ludmFsaWRPcGVyYXRpb25dCiAgICAgICAgMAogICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKERlY2ltYWwoJ3NOYU4nKSwgRGVjaW1hbCgnMi4xJykpCiAgICAgICAgRGVjaW1hbCgnTmFOJykKICAgICAgICA+Pj4gcHJpbnQgYy5mbGFnc1tJbnZhbGlkT3BlcmF0aW9uXQogICAgICAgIDEKICAgICAgICA+Pj4gYy5jb21wYXJlX3NpZ25hbCgtMSwgMikKICAgICAgICBEZWNpbWFsKCctMScpCiAgICAgICAgPj4+IGMuY29tcGFyZV9zaWduYWwoRGVjaW1hbCgtMSksIDIpCiAgICAgICAgRGVjaW1hbCgnLTEnKQogICAgICAgID4+PiBjLmNvbXBhcmVfc2lnbmFsKC0xLCBEZWNpbWFsKDIpKQogICAgICAgIERlY2ltYWwoJy0xJykKICAgICAgICBSlQAAAFIeAAAAKAMAAABSjQAAAFInAAAAUj0BAAAoAwAAAFIdAAAAUhQBAABSYgEAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVI9AQAA0Q8AAHMEAAAAACASAWMDAAAAAwAAAAQAAABDAAAAcx8AAAB0AAB8AQBkAQB0AQCDAQF9AQB8AQBqAgB8AgCDAQBTKAIAAABzKwQAAENvbXBhcmVzIHR3byBvcGVyYW5kcyB1c2luZyB0aGVpciBhYnN0cmFjdCByZXByZXNlbnRhdGlvbi4KCiAgICAgICAgVGhpcyBpcyBub3QgbGlrZSB0aGUgc3RhbmRhcmQgY29tcGFyZSwgd2hpY2ggdXNlIHRoZWlyIG51bWVyaWNhbAogICAgICAgIHZhbHVlLiBOb3RlIHRoYXQgYSB0b3RhbCBvcmRlcmluZyBpcyBkZWZpbmVkIGZvciBhbGwgcG9zc2libGUgYWJzdHJhY3QKICAgICAgICByZXByZXNlbnRhdGlvbnMuCgogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbChEZWNpbWFsKCcxMi43MycpLCBEZWNpbWFsKCcxMjcuOScpKQogICAgICAgIERlY2ltYWwoJy0xJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoRGVjaW1hbCgnLTEyNycpLCAgRGVjaW1hbCgnMTInKSkKICAgICAgICBEZWNpbWFsKCctMScpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyLjMwJyksIERlY2ltYWwoJzEyLjMnKSkKICAgICAgICBEZWNpbWFsKCctMScpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyLjMwJyksIERlY2ltYWwoJzEyLjMwJykpCiAgICAgICAgRGVjaW1hbCgnMCcpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKERlY2ltYWwoJzEyLjMnKSwgIERlY2ltYWwoJzEyLjMwMCcpKQogICAgICAgIERlY2ltYWwoJzEnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbChEZWNpbWFsKCcxMi4zJyksICBEZWNpbWFsKCdOYU4nKSkKICAgICAgICBEZWNpbWFsKCctMScpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb21wYXJlX3RvdGFsKDEsIDIpCiAgICAgICAgRGVjaW1hbCgnLTEnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29tcGFyZV90b3RhbChEZWNpbWFsKDEpLCAyKQogICAgICAgIERlY2ltYWwoJy0xJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvbXBhcmVfdG90YWwoMSwgRGVjaW1hbCgyKSkKICAgICAgICBEZWNpbWFsKCctMScpCiAgICAgICAgUpUAAAAoAwAAAFKNAAAAUicAAABSOAEAACgDAAAAUh0AAABSFAEAAFJiAQAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UjgBAAD0DwAAcwQAAAAAGhIBYwMAAAADAAAABAAAAEMAAABzHwAAAHQAAHwBAGQBAHQBAIMBAX0BAHwBAGoCAHwCAIMBAFMoAgAAAHOjAAAAQ29tcGFyZXMgdHdvIG9wZXJhbmRzIHVzaW5nIHRoZWlyIGFic3RyYWN0IHJlcHJlc2VudGF0aW9uIGlnbm9yaW5nIHNpZ24uCgogICAgICAgIExpa2UgY29tcGFyZV90b3RhbCwgYnV0IHdpdGggb3BlcmFuZCdzIHNpZ24gaWdub3JlZCBhbmQgYXNzdW1lZCB0byBiZSAwLgogICAgICAgIFKVAAAAKAMAAABSjQAAAFInAAAAUkUBAAAoAwAAAFIdAAAAUhQBAABSYgEAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVJFAQAAERAAAHMEAAAAAAUSAWMCAAAAAgAAAAQAAABDAAAAcxwAAAB0AAB8AQBkAQB0AQCDAQF9AQB8AQBqAgCDAABTKAIAAABzFgEAAFJldHVybnMgYSBjb3B5IG9mIHRoZSBvcGVyYW5kIHdpdGggdGhlIHNpZ24gc2V0IHRvIDAuCgogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9hYnMoRGVjaW1hbCgnMi4xJykpCiAgICAgICAgRGVjaW1hbCgnMi4xJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfYWJzKERlY2ltYWwoJy0xMDAnKSkKICAgICAgICBEZWNpbWFsKCcxMDAnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9hYnMoLTEpCiAgICAgICAgRGVjaW1hbCgnMScpCiAgICAgICAgUpUAAAAoAwAAAFKNAAAAUicAAABSrQAAACgCAAAAUh0AAABSFAEAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVKtAAAAGRAAAHMEAAAAAAoSAWMCAAAAAgAAAAQAAABDAAAAcxwAAAB0AAB8AQBkAQB0AQCDAQF9AQB0AgB8AQCDAQBTKAIAAABzFAEAAFJldHVybnMgYSBjb3B5IG9mIHRoZSBkZWNpbWFsIG9iamVjdC4KCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X2RlY2ltYWwoRGVjaW1hbCgnMi4xJykpCiAgICAgICAgRGVjaW1hbCgnMi4xJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfZGVjaW1hbChEZWNpbWFsKCctMS4wMCcpKQogICAgICAgIERlY2ltYWwoJy0xLjAwJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfZGVjaW1hbCgxKQogICAgICAgIERlY2ltYWwoJzEnKQogICAgICAgIFKVAAAAKAMAAABSjQAAAFInAAAAUgAAAAAoAgAAAFIdAAAAUhQBAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0DAAAAGNvcHlfZGVjaW1hbCYQAABzBAAAAAAKEgFjAgAAAAIAAAAEAAAAQwAAAHMcAAAAdAAAfAEAZAEAdAEAgwEBfQEAfAEAagIAgwAAUygCAAAAcygBAABSZXR1cm5zIGEgY29weSBvZiB0aGUgb3BlcmFuZCB3aXRoIHRoZSBzaWduIGludmVydGVkLgoKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfbmVnYXRlKERlY2ltYWwoJzEwMS41JykpCiAgICAgICAgRGVjaW1hbCgnLTEwMS41JykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfbmVnYXRlKERlY2ltYWwoJy0xMDEuNScpKQogICAgICAgIERlY2ltYWwoJzEwMS41JykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfbmVnYXRlKDEpCiAgICAgICAgRGVjaW1hbCgnLTEnKQogICAgICAgIFKVAAAAKAMAAABSjQAAAFInAAAAUq4AAAAoAgAAAFIdAAAAUhQBAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSrgAAADMQAABzBAAAAAAKEgFjAwAAAAMAAAAEAAAAQwAAAHMfAAAAdAAAfAEAZAEAdAEAgwEBfQEAfAEAagIAfAIAgwEAUygCAAAAcxkDAABDb3BpZXMgdGhlIHNlY29uZCBvcGVyYW5kJ3Mgc2lnbiB0byB0aGUgZmlyc3Qgb25lLgoKICAgICAgICBJbiBkZXRhaWwsIGl0IHJldHVybnMgYSBjb3B5IG9mIHRoZSBmaXJzdCBvcGVyYW5kIHdpdGggdGhlIHNpZ24KICAgICAgICBlcXVhbCB0byB0aGUgc2lnbiBvZiB0aGUgc2Vjb25kIG9wZXJhbmQuCgogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9zaWduKERlY2ltYWwoICcxLjUwJyksIERlY2ltYWwoJzcuMzMnKSkKICAgICAgICBEZWNpbWFsKCcxLjUwJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfc2lnbihEZWNpbWFsKCctMS41MCcpLCBEZWNpbWFsKCc3LjMzJykpCiAgICAgICAgRGVjaW1hbCgnMS41MCcpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X3NpZ24oRGVjaW1hbCggJzEuNTAnKSwgRGVjaW1hbCgnLTcuMzMnKSkKICAgICAgICBEZWNpbWFsKCctMS41MCcpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X3NpZ24oRGVjaW1hbCgnLTEuNTAnKSwgRGVjaW1hbCgnLTcuMzMnKSkKICAgICAgICBEZWNpbWFsKCctMS41MCcpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5jb3B5X3NpZ24oMSwgLTIpCiAgICAgICAgRGVjaW1hbCgnLTEnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuY29weV9zaWduKERlY2ltYWwoMSksIC0yKQogICAgICAgIERlY2ltYWwoJy0xJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmNvcHlfc2lnbigxLCBEZWNpbWFsKC0yKSkKICAgICAgICBEZWNpbWFsKCctMScpCiAgICAgICAgUpUAAAAoAwAAAFKNAAAAUicAAABSRgEAACgDAAAAUh0AAABSFAEAAFJiAQAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UkYBAABAEAAAcwQAAAAAFRIBYwMAAAAEAAAABAAAAEMAAABzTgAAAHQAAHwBAGQBAHQBAIMBAX0BAHwBAGoCAHwCAGQCAHwAAIMBAX0DAHwDAHQDAGsIAHJGAHQEAGQDAHwCABaDAQCCAQBuBAB8AwBTZAQAUygFAAAAc4gEAABEZWNpbWFsIGRpdmlzaW9uIGluIGEgc3BlY2lmaWVkIGNvbnRleHQuCgogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzEnKSwgRGVjaW1hbCgnMycpKQogICAgICAgIERlY2ltYWwoJzAuMzMzMzMzMzMzJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcyJyksIERlY2ltYWwoJzMnKSkKICAgICAgICBEZWNpbWFsKCcwLjY2NjY2NjY2NycpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCgnNScpLCBEZWNpbWFsKCcyJykpCiAgICAgICAgRGVjaW1hbCgnMi41JykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcxJyksIERlY2ltYWwoJzEwJykpCiAgICAgICAgRGVjaW1hbCgnMC4xJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZShEZWNpbWFsKCcxMicpLCBEZWNpbWFsKCcxMicpKQogICAgICAgIERlY2ltYWwoJzEnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzguMDAnKSwgRGVjaW1hbCgnMicpKQogICAgICAgIERlY2ltYWwoJzQuMDAnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzIuNDAwJyksIERlY2ltYWwoJzIuMCcpKQogICAgICAgIERlY2ltYWwoJzEuMjAnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzEwMDAnKSwgRGVjaW1hbCgnMTAwJykpCiAgICAgICAgRGVjaW1hbCgnMTAnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzEwMDAnKSwgRGVjaW1hbCgnMScpKQogICAgICAgIERlY2ltYWwoJzEwMDAnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKERlY2ltYWwoJzIuNDBFKzYnKSwgRGVjaW1hbCgnMicpKQogICAgICAgIERlY2ltYWwoJzEuMjBFKzYnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlKDUsIDUpCiAgICAgICAgRGVjaW1hbCgnMScpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGUoRGVjaW1hbCg1KSwgNSkKICAgICAgICBEZWNpbWFsKCcxJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZSg1LCBEZWNpbWFsKDUpKQogICAgICAgIERlY2ltYWwoJzEnKQogICAgICAgIFKVAAAAUh4AAABzHwAAAFVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWxOKAUAAABSjQAAAFInAAAAUpQBAABSjgAAAFJmAAAAKAQAAABSHQAAAFIUAQAAUmIBAABSywAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQGAAAAZGl2aWRlWBAAAHMKAAAAAB4SARUBDAETAmMDAAAABAAAAAQAAABDAAAAc04AAAB0AAB8AQBkAQB0AQCDAQF9AQB8AQBqAgB8AgBkAgB8AACDAQF9AwB8AwB0AwBrCAByRgB0BABkAwB8AgAWgwEAggEAbgQAfAMAU2QEAFMoBQAAAHMvAgAARGl2aWRlcyB0d28gbnVtYmVycyBhbmQgcmV0dXJucyB0aGUgaW50ZWdlciBwYXJ0IG9mIHRoZSByZXN1bHQuCgogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlX2ludChEZWNpbWFsKCcyJyksIERlY2ltYWwoJzMnKSkKICAgICAgICBEZWNpbWFsKCcwJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZV9pbnQoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnMycpKQogICAgICAgIERlY2ltYWwoJzMnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlX2ludChEZWNpbWFsKCcxJyksIERlY2ltYWwoJzAuMycpKQogICAgICAgIERlY2ltYWwoJzMnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2aWRlX2ludCgxMCwgMykKICAgICAgICBEZWNpbWFsKCczJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmRpdmlkZV9pbnQoRGVjaW1hbCgxMCksIDMpCiAgICAgICAgRGVjaW1hbCgnMycpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5kaXZpZGVfaW50KDEwLCBEZWNpbWFsKDMpKQogICAgICAgIERlY2ltYWwoJzMnKQogICAgICAgIFKVAAAAUh4AAABzHwAAAFVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWxOKAUAAABSjQAAAFInAAAAUtUAAABSjgAAAFJmAAAAKAQAAABSHQAAAFIUAQAAUmIBAABSywAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weXQKAAAAZGl2aWRlX2ludH0QAABzCgAAAAAQEgEVAQwBEwJjAwAAAAQAAAAEAAAAQwAAAHNOAAAAdAAAfAEAZAEAdAEAgwEBfQEAfAEAagIAfAIAZAIAfAAAgwEBfQMAfAMAdAMAawgAckYAdAQAZAMAfAIAFoMBAIIBAG4EAHwDAFNkBABTKAUAAABz3QEAAFJldHVybiAoYSAvLyBiLCBhICUgYikuCgogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2bW9kKERlY2ltYWwoOCksIERlY2ltYWwoMykpCiAgICAgICAgKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMicpKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2bW9kKERlY2ltYWwoOCksIERlY2ltYWwoNCkpCiAgICAgICAgKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMCcpKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2bW9kKDgsIDQpCiAgICAgICAgKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMCcpKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2bW9kKERlY2ltYWwoOCksIDQpCiAgICAgICAgKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMCcpKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZGl2bW9kKDgsIERlY2ltYWwoNCkpCiAgICAgICAgKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnMCcpKQogICAgICAgIFKVAAAAUh4AAABzHwAAAFVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWxOKAUAAABSjQAAAFInAAAAUs8AAABSjgAAAFJmAAAAKAQAAABSHQAAAFIUAQAAUmIBAABSywAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVLDAAAAlBAAAHMKAAAAAA4SARUBDAETAmMCAAAAAgAAAAQAAABDAAAAcyIAAAB0AAB8AQBkAQB0AQCDAQF9AQB8AQBqAgBkAgB8AACDAAFTKAMAAABzIwIAAFJldHVybnMgZSAqKiBhLgoKICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQogICAgICAgID4+PiBjLkVtYXggPSA5OTkKICAgICAgICA+Pj4gYy5leHAoRGVjaW1hbCgnLUluZmluaXR5JykpCiAgICAgICAgRGVjaW1hbCgnMCcpCiAgICAgICAgPj4+IGMuZXhwKERlY2ltYWwoJy0xJykpCiAgICAgICAgRGVjaW1hbCgnMC4zNjc4Nzk0NDEnKQogICAgICAgID4+PiBjLmV4cChEZWNpbWFsKCcwJykpCiAgICAgICAgRGVjaW1hbCgnMScpCiAgICAgICAgPj4+IGMuZXhwKERlY2ltYWwoJzEnKSkKICAgICAgICBEZWNpbWFsKCcyLjcxODI4MTgzJykKICAgICAgICA+Pj4gYy5leHAoRGVjaW1hbCgnMC42OTMxNDcxODEnKSkKICAgICAgICBEZWNpbWFsKCcyLjAwMDAwMDAwJykKICAgICAgICA+Pj4gYy5leHAoRGVjaW1hbCgnK0luZmluaXR5JykpCiAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKQogICAgICAgID4+PiBjLmV4cCgxMCkKICAgICAgICBEZWNpbWFsKCcyMjAyNi40NjU4JykKICAgICAgICBSlQAAAFIeAAAAKAMAAABSjQAAAFInAAAAUkoAAAAoAgAAAFIdAAAAUhQBAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSSgAAAKkQAABzBAAAAAAVEgFjBAAAAAQAAAAFAAAAQwAAAHMoAAAAdAAAfAEAZAEAdAEAgwEBfQEAfAEAagIAfAIAfAMAZAIAfAAAgwIBUygDAAAAcwwDAABSZXR1cm5zIGEgbXVsdGlwbGllZCBieSBiLCBwbHVzIGMuCgogICAgICAgIFRoZSBmaXJzdCB0d28gb3BlcmFuZHMgYXJlIG11bHRpcGxpZWQgdG9nZXRoZXIsIHVzaW5nIG11bHRpcGx5LAogICAgICAgIHRoZSB0aGlyZCBvcGVyYW5kIGlzIHRoZW4gYWRkZWQgdG8gdGhlIHJlc3VsdCBvZiB0aGF0CiAgICAgICAgbXVsdGlwbGljYXRpb24sIHVzaW5nIGFkZCwgYWxsIHdpdGggb25seSBvbmUgZmluYWwgcm91bmRpbmcuCgogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZm1hKERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnNScpLCBEZWNpbWFsKCc3JykpCiAgICAgICAgRGVjaW1hbCgnMjInKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZm1hKERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnLTUnKSwgRGVjaW1hbCgnNycpKQogICAgICAgIERlY2ltYWwoJy04JykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmZtYShEZWNpbWFsKCc4ODg1NjUyOTAnKSwgRGVjaW1hbCgnMTU1Ny45NjkzMCcpLCBEZWNpbWFsKCctODYwODcuNzU3OCcpKQogICAgICAgIERlY2ltYWwoJzEuMzg0MzU3MzZFKzEyJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmZtYSgxLCAzLCA0KQogICAgICAgIERlY2ltYWwoJzcnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuZm1hKDEsIERlY2ltYWwoMyksIDQpCiAgICAgICAgRGVjaW1hbCgnNycpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5mbWEoMSwgMywgRGVjaW1hbCg0KSkKICAgICAgICBEZWNpbWFsKCc3JykKICAgICAgICBSlQAAAFIeAAAAKAMAAABSjQAAAFInAAAAUvwAAAAoBAAAAFIdAAAAUhQBAABSYgEAAFI1AQAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UvwAAADBEAAAcwQAAAAAFBIBYwIAAAACAAAAAQAAAEMAAABzCgAAAHwBAGoAAIMAAFMoAQAAAHMSAQAAUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgY2Fub25pY2FsOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgoKICAgICAgICBDdXJyZW50bHksIHRoZSBlbmNvZGluZyBvZiBhIERlY2ltYWwgaW5zdGFuY2UgaXMgYWx3YXlzCiAgICAgICAgY2Fub25pY2FsLCBzbyB0aGlzIG1ldGhvZCByZXR1cm5zIFRydWUgZm9yIGFueSBEZWNpbWFsLgoKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Nhbm9uaWNhbChEZWNpbWFsKCcyLjUwJykpCiAgICAgICAgVHJ1ZQogICAgICAgICgBAAAAUkkBAAAoAgAAAFIdAAAAUhQBAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSSQEAANgQAABzAgAAAAAJYwIAAAACAAAABAAAAEMAAABzHAAAAHQAAHwBAGQBAHQBAIMBAX0BAHwBAGoCAIMAAFMoAgAAAHMsAgAAUmV0dXJuIFRydWUgaWYgdGhlIG9wZXJhbmQgaXMgZmluaXRlOyBvdGhlcndpc2UgcmV0dXJuIEZhbHNlLgoKICAgICAgICBBIERlY2ltYWwgaW5zdGFuY2UgaXMgY29uc2lkZXJlZCBmaW5pdGUgaWYgaXQgaXMgbmVpdGhlcgogICAgICAgIGluZmluaXRlIG5vciBhIE5hTi4KCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19maW5pdGUoRGVjaW1hbCgnMi41MCcpKQogICAgICAgIFRydWUKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Zpbml0ZShEZWNpbWFsKCctMC4zJykpCiAgICAgICAgVHJ1ZQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfZmluaXRlKERlY2ltYWwoJzAnKSkKICAgICAgICBUcnVlCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5pc19maW5pdGUoRGVjaW1hbCgnSW5mJykpCiAgICAgICAgRmFsc2UKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX2Zpbml0ZShEZWNpbWFsKCdOYU4nKSkKICAgICAgICBGYWxzZQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfZmluaXRlKDEpCiAgICAgICAgVHJ1ZQogICAgICAgIFKVAAAAKAMAAABSjQAAAFInAAAAUkoBAAAoAgAAAFIdAAAAUhQBAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHlSSgEAAOMQAABzBAAAAAATEgFjAgAAAAIAAAAEAAAAQwAA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bWFsKCctMEUrMicpKQogICAgICAgIFRydWUKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LmlzX3plcm8oMSkKICAgICAgICBGYWxzZQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQuaXNfemVybygwKQogICAgICAgIFRydWUKICAgICAgICBSlQAAACgDAAAAUo0AAABSJwAAAFJOAQAAKAIAAABSHQAAAFIUAQAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5Uk4BAAB1EQAAcwQAAAAADhIBYwIAAAACAAAABAAAAEMAAABzIgAAAHQAAHwBAGQBAHQBAIMBAX0BAHwBAGoCAGQCAHwAAIMAAVMoAwAAAHP+AQAAUmV0dXJucyB0aGUgbmF0dXJhbCAoYmFzZSBlKSBsb2dhcml0aG0gb2YgdGhlIG9wZXJhbmQuCgogICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQogICAgICAgID4+PiBjLkVtaW4gPSAtOTk5CiAgICAgICAgPj4+IGMuRW1heCA9IDk5OQogICAgICAgID4+PiBjLmxuKERlY2ltYWwoJzAnKSkKICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQogICAgICAgID4+PiBjLmxuKERlY2ltYWwoJzEuMDAwJykpCiAgICAgICAgRGVjaW1hbCgnMCcpCiAgICAgICAgPj4+IGMubG4oRGVjaW1hbCgnMi43MTgyODE4MycpKQogICAgICAgIERlY2ltYWwoJzEuMDAwMDAwMDAnKQogICAgICAgID4+PiBjLmxuKERlY2ltYWwoJzEwJykpCiAgICAgICAgRGVjaW1hbCgnMi4zMDI1ODUwOScpCiAgICAgICAgPj4+IGMubG4oRGVjaW1hbCgnK0luZmluaXR5JykpCiAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKQogICAgICAgID4+PiBjLmxuKDEpCiAgICAgICAgRGVjaW1hbCgnMCcpCiAgICAgICAgUpUAAABSHgAAACgDAAAAUo0AAABSJwAAAFJVAQAAKAIAAABSHQAAAFIUAQAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UlUBAACGEQAAcwQAAAAAExIBYwIAAAACAAAABAAAAEMAAABzIgAAAHQAAHwBAGQBAHQBAIMBAX0BAHwBAGoCAGQCAHwAAIMAAVMoAwAAAHOnAgAAUmV0dXJucyB0aGUgYmFzZSAxMCBsb2dhcml0aG0gb2YgdGhlIG9wZXJhbmQuCgogICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQogICAgICAgID4+PiBjLkVtaW4gPSAtOTk5CiAgICAgICAgPj4+IGMuRW1heCA9IDk5OQogICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJzAnKSkKICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQogICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJzAuMDAxJykpCiAgICAgICAgRGVjaW1hbCgnLTMnKQogICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJzEuMDAwJykpCiAgICAgICAgRGVjaW1hbCgnMCcpCiAgICAgICAgPj4+IGMubG9nMTAoRGVjaW1hbCgnMicpKQogICAgICAgIERlY2ltYWwoJzAuMzAxMDI5OTk2JykKICAgICAgICA+Pj4gYy5sb2cxMChEZWNpbWFsKCcxMCcpKQogICAgICAgIERlY2ltYWwoJzEnKQogICAgICAgID4+PiBjLmxvZzEwKERlY2ltYWwoJzcwJykpCiAgICAgICAgRGVjaW1hbCgnMS44NDUwOTgwNCcpCiAgICAgICAgPj4+IGMubG9nMTAoRGVjaW1hbCgnK0luZmluaXR5JykpCiAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKQogICAgICAgID4+PiBjLmxvZzEwKDApCiAgICAgICAgRGVjaW1hbCgnLUluZmluaXR5JykKICAgICAgICA+Pj4gYy5sb2cxMCgxKQogICAgICAgIERlY2ltYWwoJzAnKQogICAgICAgIFKVAAAAUh4AAAAoAwAAAFKNAAAAUicAAABSWAEAACgC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fAAAgwEBUygDAAAAc7MDAABtYXggY29tcGFyZXMgdHdvIHZhbHVlcyBudW1lcmljYWxseSBhbmQgcmV0dXJucyB0aGUgbWF4aW11bS4KCiAgICAgICAgSWYgZWl0aGVyIG9wZXJhbmQgaXMgYSBOYU4gdGhlbiB0aGUgZ2VuZXJhbCBydWxlcyBhcHBseS4KICAgICAgICBPdGhlcndpc2UsIHRoZSBvcGVyYW5kcyBhcmUgY29tcGFyZWQgYXMgdGhvdWdoIGJ5IHRoZSBjb21wYXJlCiAgICAgICAgb3BlcmF0aW9uLiAgSWYgdGhleSBhcmUgbnVtZXJpY2FsbHkgZXF1YWwgdGhlbiB0aGUgbGVmdC1oYW5kIG9wZXJhbmQKICAgICAgICBpcyBjaG9zZW4gYXMgdGhlIHJlc3VsdC4gIE90aGVyd2lzZSB0aGUgbWF4aW11bSAoY2xvc2VyIHRvIHBvc2l0aXZlCiAgICAgICAgaW5maW5pdHkpIG9mIHRoZSB0d28gb3BlcmFuZHMgaXMgY2hvc2VuIGFzIHRoZSByZXN1bHQuCgogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4KERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnMicpKQogICAgICAgIERlY2ltYWwoJzMnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4KERlY2ltYWwoJy0xMCcpLCBEZWNpbWFsKCczJykpCiAgICAgICAgRGVjaW1hbCgnMycpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXgoRGVjaW1hbCgnMS4wJyksIERlY2ltYWwoJzEnKSkKICAgICAgICBEZWNpbWFsKCcxJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm1heChEZWNpbWFsKCc3JyksIERlY2ltYWwoJ05hTicpKQogICAgICAgIERlY2ltYWwoJzcnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubWF4KDEsIDIpCiAgICAgICAgRGVjaW1hbCgnMicpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tYXgoRGVjaW1hbCgxKSwgMikKICAgICAgICBEZWNpbWFsKCcyJykKICAgICAgICA+Pj4g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cmFuZHMuCgogICAgICAgIElmIGVpdGhlciBvcGVyYW5kIGlzIGEgc3BlY2lhbCB2YWx1ZSB0aGVuIHRoZSBnZW5lcmFsIHJ1bGVzIGFwcGx5LgogICAgICAgIE90aGVyd2lzZSwgdGhlIG9wZXJhbmRzIGFyZSBtdWx0aXBsaWVkIHRvZ2V0aGVyCiAgICAgICAgKCdsb25nIG11bHRpcGxpY2F0aW9uJyksIHJlc3VsdGluZyBpbiBhIG51bWJlciB3aGljaCBtYXkgYmUgYXMgbG9uZyBhcwogICAgICAgIHRoZSBzdW0gb2YgdGhlIGxlbmd0aHMgb2YgdGhlIHR3byBvcGVyYW5kcy4KCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseShEZWNpbWFsKCcxLjIwJyksIERlY2ltYWwoJzMnKSkKICAgICAgICBEZWNpbWFsKCczLjYwJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KERlY2ltYWwoJzcnKSwgRGVjaW1hbCgnMycpKQogICAgICAgIERlY2ltYWwoJzIxJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KERlY2ltYWwoJzAuOScpLCBEZWNpbWFsKCcwLjgnKSkKICAgICAgICBEZWNpbWFsKCcwLjcyJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KERlY2ltYWwoJzAuOScpLCBEZWNpbWFsKCctMCcpKQogICAgICAgIERlY2ltYWwoJy0wLjAnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoRGVjaW1hbCgnNjU0MzIxJyksIERlY2ltYWwoJzY1NDMyMScpKQogICAgICAgIERlY2ltYWwoJzQuMjgxMzU5NzFFKzExJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0Lm11bHRpcGx5KDcsIDcpCiAgICAgICAgRGVjaW1hbCgnNDknKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubXVsdGlwbHkoRGVjaW1hbCg3KSwgNykKICAgICAgICBEZWNpbWFsKCc0OScpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5tdWx0aXBseSg3LCBEZWNpbWFsKDcpKQogICAgICAgIERlY2ltYWwoJzQ5JykKICAgICAgICBSlQAAAFIeAAAAcx8AAABVbmFibGUgdG8gY29udmVydCAlcyB0byBEZWNpbWFsTigFAAAAUo0AAABSJwAAAFLBAAAAUo4AAABSZgAAACgEAAAAUh0AAABSFAEAAFJiAQAAUssAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0CAAAAG11bHRpcGx5nxIAAHMKAAAAABkSARUBDAETAmMCAAAAAgAAAAQAAABDAAAAcyIAAAB0AAB8AQBkAQB0AQCDAQF9AQB8AQBqAgBkAgB8AACDAAFTKAMAAABzIgIAAFJldHVybnMgdGhlIGxhcmdlc3QgcmVwcmVzZW50YWJsZSBudW1iZXIgc21hbGxlciB0aGFuIGEuCgogICAgICAgID4+PiBjID0gRXh0ZW5kZWRDb250ZXh0LmNvcHkoKQogICAgICAgID4+PiBjLkVtaW4gPSAtOTk5CiAgICAgICAgPj4+IGMuRW1heCA9IDk5OQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubmV4dF9taW51cyhEZWNpbWFsKCcxJykpCiAgICAgICAgRGVjaW1hbCgnMC45OTk5OTk5OTknKQogICAgICAgID4+PiBjLm5leHRfbWludXMoRGVjaW1hbCgnMUUtMTAwNycpKQogICAgICAgIERlY2ltYWwoJzBFLTEwMDcnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQubmV4dF9taW51cyhEZWNpbWFsKCctMS4wMDAwMDAwMycpKQogICAgICAgIERlY2ltYWwoJy0xLjAwMDAwMDA0JykKICAgICAgICA+Pj4gYy5uZXh0X21pbnVzKERlY2ltYWwoJ0luZmluaXR5JykpCiAgICAgICAgRGVjaW1hbCgnOS45OTk5OTk5OUUrOTk5JykKICAgICAgICA+Pj4gYy5uZXh0X21pbnVzKDEpCiAgICAgICAgRGVjaW1hbCgnMC45OTk5OTk5OTknKQogICAg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bAogICAgICAgICAgK0luZmluaXR5CgogICAgICAgID4+PiBjID0gQ29udGV4dChFeHRlbmRlZENvbnRleHQpCiAgICAgICAgPj4+IGMuRW1pbiA9IC05OTkKICAgICAgICA+Pj4gYy5FbWF4ID0gOTk5CiAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJ0luZmluaXR5JykpCiAgICAgICAgJytJbmZpbml0eScKICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnMUUtMTAnKSkKICAgICAgICAnK05vcm1hbCcKICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnMi41MCcpKQogICAgICAgICcrTm9ybWFsJwogICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCcwLjFFLTk5OScpKQogICAgICAgICcrU3Vibm9ybWFsJwogICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCcwJykpCiAgICAgICAgJytaZXJvJwogICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCctMCcpKQogICAgICAgICctWmVybycKICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3MoRGVjaW1hbCgnLTAuMUUtOTk5JykpCiAgICAgICAgJy1TdWJub3JtYWwnCiAgICAgICAgPj4+IGMubnVtYmVyX2NsYXNzKERlY2ltYWwoJy0xRS0xMCcpKQogICAgICAgICctTm9ybWFsJwogICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCctMi41MCcpKQogICAgICAgICctTm9ybWFsJwogICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCctSW5maW5pdHknKSkKICAgICAgICAnLUluZmluaXR5JwogICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCdOYU4nKSkKICAgICAgICAnTmFOJwogICAgICAgID4+PiBjLm51bWJlcl9jbGFzcyhEZWNpbWFsKCctTmFOJykpCiAgICAgICAgJ05hTicKICAgICAgICA+Pj4gYy5udW1iZXJfY2xhc3Mo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dGgKICAgICAgICB1bmJvdW5kZWQgcHJlY2lzaW9uLCBidXQgaXMgY29tcHV0ZWQgbW9yZSBlZmZpY2llbnRseS4gIEl0IGlzCiAgICAgICAgYWx3YXlzIGV4YWN0LgoKICAgICAgICA+Pj4gYyA9IEV4dGVuZGVkQ29udGV4dC5jb3B5KCkKICAgICAgICA+Pj4gYy5FbWluID0gLTk5OQogICAgICAgID4+PiBjLkVtYXggPSA5OTkKICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCcyJyksIERlY2ltYWwoJzMnKSkKICAgICAgICBEZWNpbWFsKCc4JykKICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctMicpLCBEZWNpbWFsKCczJykpCiAgICAgICAgRGVjaW1hbCgnLTgnKQogICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzInKSwgRGVjaW1hbCgnLTMnKSkKICAgICAgICBEZWNpbWFsKCcwLjEyNScpCiAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMS43JyksIERlY2ltYWwoJzgnKSkKICAgICAgICBEZWNpbWFsKCc2OS43NTc1NzQ0JykKICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCcwLjMwMTAyOTk5NicpKQogICAgICAgIERlY2ltYWwoJzIuMDAwMDAwMDAnKQogICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJ0luZmluaXR5JyksIERlY2ltYWwoJy0xJykpCiAgICAgICAgRGVjaW1hbCgnMCcpCiAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnSW5maW5pdHknKSwgRGVjaW1hbCgnMCcpKQogICAgICAgIERlY2ltYWwoJzEnKQogICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJ0luZmluaXR5JyksIERlY2ltYWwoJzEnKSkKICAgICAgICBEZWNpbWFsKCdJbmZpbml0eScpCiAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLUluZmluaXR5JyksIERlY2ltYWwoJy0xJykpCiAgICAgICAgRGVjaW1hbCgnLTAnKQogICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy1JbmZpbml0eScpLCBEZWNpbWFsKCcwJykpCiAgICAgICAgRGVjaW1hbCgnMScpCiAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLUluZmluaXR5JyksIERlY2ltYWwoJzEnKSkKICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQogICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy1JbmZpbml0eScpLCBEZWNpbWFsKCcyJykpCiAgICAgICAgRGVjaW1hbCgnSW5maW5pdHknKQogICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzAnKSwgRGVjaW1hbCgnMCcpKQogICAgICAgIERlY2ltYWwoJ05hTicpCgogICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJzMnKSwgRGVjaW1hbCgnNycpLCBEZWNpbWFsKCcxNicpKQogICAgICAgIERlY2ltYWwoJzExJykKICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctMycpLCBEZWNpbWFsKCc3JyksIERlY2ltYWwoJzE2JykpCiAgICAgICAgRGVjaW1hbCgnLTExJykKICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCctMycpLCBEZWNpbWFsKCc4JyksIERlY2ltYWwoJzE2JykpCiAgICAgICAgRGVjaW1hbCgnMScpCiAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnMycpLCBEZWNpbWFsKCc3JyksIERlY2ltYWwoJy0xNicpKQogICAgICAgIERlY2ltYWwoJzExJykKICAgICAgICA+Pj4gYy5wb3dlcihEZWNpbWFsKCcyM0UxMjM0NScpLCBEZWNpbWFsKCc2N0UxODknKSwgRGVjaW1hbCgnMTIzNDU2Nzg5JykpCiAgICAgICAgRGVjaW1hbCgnMTE3Mjk4MzAnKQogICAgICAgID4+PiBjLnBvd2VyKERlY2ltYWwoJy0wJyksIERlY2ltYWwoJzE3JyksIERlY2ltYWwoJzE3MjknKSkKICAgICAgICBEZWNpbWFsKCctMCcpCiAgICAgICAgPj4+IGMucG93ZXIoRGVjaW1hbCgnLTIzJyksIERlY2ltYWwoJzAnKSwgRGVjaW1hbCgnNjU1MzcnKSkKICAgICAgICBEZWNpbWFsKCcxJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnBvd2VyKDcsIDcpCiAgICAgICAgRGVjaW1hbCgnODIzNTQzJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnBvd2VyKERlY2ltYWwoNyksIDcpCiAgICAgICAgRGVjaW1hbCgnODIzNTQzJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnBvd2VyKDcsIERlY2ltYWwoNyksIDIpCiAgICAgICAgRGVjaW1hbCgnMScpCiAgICAgICAgUpUAAABSHgAAAHMfAAAAVW5hYmxlIHRvIGNvbnZlcnQgJXMgdG8gRGVjaW1hbE4oBQAAAFKNAAAAUicAAABSJQEAAFKOAAAAUmYAAAAoBQAAAFIdAAAAUhQBAABSYgEAAFL/AAAAUssAAAAoAAAAACgAAAAAc04AAAAvYnVpbGRib3QvdG1wL2J1aWxkaG9zdC9pbnN0YWxsL3ByZWJ1aWx0L2xpbnV4LXg4Nl82NC9saWIvcHl0aG9uMi43L2RlY2ltYWwucHl0BQAAAHBvd2VyZRMAAHMKAAAAAEkSARgBDAETAmMDAAAAAwAAAAQAAABDAAAAcyUAAAB0AAB8AQBkAQB0AQCDAQF9AQB8AQBqAgB8AgBkAgB8AACDAQFTKAMAAABzFQoAAFJldHVybnMgYSB2YWx1ZSBlcXVhbCB0byAnYScgKHJvdW5kZWQpLCBoYXZpbmcgdGhlIGV4cG9uZW50IG9mICdiJy4KCiAgICAgICAgVGhlIGNvZWZmaWNpZW50IG9mIHRoZSByZXN1bHQgaXMgZGVyaXZlZCBmcm9tIHRoYXQgb2YgdGhlIGxlZnQtaGFuZAogICAgICAgIG9wZXJhbmQuICBJdCBtYXkgYmUgcm91bmRlZCB1c2luZyB0aGUgY3VycmVudCByb3VuZGluZyBzZXR0aW5nIChpZiB0aGUKICAgICAgICBleHBvbmVudCBpcyBiZWluZyBpbmNyZWFzZWQpLCBtdWx0aXBsaWVkIGJ5IGEgcG9zaXRpdmUgcG93ZXIgb2YgdGVuIChpZgogICAgICAgIHRoZSBleHBvbmVudCBpcyBiZWluZyBkZWNyZWFzZWQpLCBvciBpcyB1bmNoYW5nZWQgKGlmIHRoZSBleHBvbmVudCBpcwogICAgICAgIGFscmVhZHkgZXF1YWwgdG8gdGhhdCBvZiB0aGUgcmlnaHQtaGFuZCBvcGVyYW5kKS4KCiAgICAgICAgVW5saWtlIG90aGVyIG9wZXJhdGlvbnMsIGlmIHRoZSBsZW5ndGggb2YgdGhlIGNvZWZmaWNpZW50IGFmdGVyIHRoZQogICAgICAgIHF1YW50aXplIG9wZXJhdGlvbiB3b3VsZCBiZSBncmVhdGVyIHRoYW4gcHJlY2lzaW9uIHRoZW4gYW4gSW52YWxpZAogICAgICAgIG9wZXJhdGlvbiBjb25kaXRpb24gaXMgcmFpc2VkLiAgVGhpcyBndWFyYW50ZWVzIHRoYXQsIHVubGVzcyB0aGVyZSBpcwogICAgICAgIGFuIGVycm9yIGNvbmRpdGlvbiwgdGhlIGV4cG9uZW50IG9mIHRoZSByZXN1bHQgb2YgYSBxdWFudGl6ZSBpcyBhbHdheXMKICAgICAgICBlcXVhbCB0byB0aGF0IG9mIHRoZSByaWdodC1oYW5kIG9wZXJhbmQuCgogICAgICAgIEFsc28gdW5saWtlIG90aGVyIG9wZXJhdGlvbnMsIHF1YW50aXplIHdpbGwgbmV2ZXIgcmFpc2UgVW5kZXJmbG93LCBldmVuCiAgICAgICAgaWYgdGhlIHJlc3VsdCBpcyBzdWJub3JtYWwgYW5kIGluZXhhY3QuCgogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcwLjAwMScpKQogICAgICAgIERlY2ltYWwoJzIuMTcwJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIuMTcnKSwgRGVjaW1hbCgnMC4wMScpKQogICAgICAgIERlY2ltYWwoJzIuMTcnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcwLjEnKSkKICAgICAgICBEZWNpbWFsKCcyLjInKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMi4xNycpLCBEZWNpbWFsKCcxZSswJykpCiAgICAgICAgRGVjaW1hbCgnMicpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCcyLjE3JyksIERlY2ltYWwoJzFlKzEnKSkKICAgICAgICBEZWNpbWFsKCcwRSsxJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJy1JbmYnKSwgRGVjaW1hbCgnSW5maW5pdHknKSkKICAgICAgICBEZWNpbWFsKCctSW5maW5pdHknKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMicpLCBEZWNpbWFsKCdJbmZpbml0eScpKQogICAgICAgIERlY2ltYWwoJ05hTicpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCctMC4xJyksIERlY2ltYWwoJzEnKSkKICAgICAgICBEZWNpbWFsKCctMCcpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCctMCcpLCBEZWNpbWFsKCcxZSs1JykpCiAgICAgICAgRGVjaW1hbCgnLTBFKzUnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnKzM1MjM2NDUwLjYnKSwgRGVjaW1hbCgnMWUtMicpKQogICAgICAgIERlY2ltYWwoJ05hTicpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKCctMzUyMzY0NTAuNicpLCBEZWNpbWFsKCcxZS0yJykpCiAgICAgICAgRGVjaW1hbCgnTmFOJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKERlY2ltYWwoJzIxNycpLCBEZWNpbWFsKCcxZS0xJykpCiAgICAgICAgRGVjaW1hbCgnMjE3LjAnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMjE3JyksIERlY2ltYWwoJzFlLTAnKSkKICAgICAgICBEZWNpbWFsKCcyMTcnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMjE3JyksIERlY2ltYWwoJzFlKzEnKSkKICAgICAgICBEZWNpbWFsKCcyLjJFKzInKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoRGVjaW1hbCgnMjE3JyksIERlY2ltYWwoJzFlKzInKSkKICAgICAgICBEZWNpbWFsKCcyRSsyJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnF1YW50aXplKDEsIDIpCiAgICAgICAgRGVjaW1hbCgnMScpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5xdWFudGl6ZShEZWNpbWFsKDEpLCAyKQogICAgICAgIERlY2ltYWwoJzEnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucXVhbnRpemUoMSwgRGVjaW1hbCgyKSkKICAgICAgICBEZWNpbWFsKCcxJykKICAgICAgICBSlQAAAFIeAAAAKAMAAABSjQAAAFInAAAAUiwBAAAoAwAAAFIdAAAAUhQBAABSYgEAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVIsAQAAtRMAAHMEAAAAADcSAWMBAAAAAQAAAAIAAABDAAAAcwoAAAB0AABkAQCDAQBTKAIAAABzawAAAEp1c3QgcmV0dXJucyAxMCwgYXMgdGhpcyBpcyBEZWNpbWFsLCA6KQoKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJhZGl4KCkKICAgICAgICBEZWNpbWFsKCcxMCcpCiAgICAgICAgaQoAAAAoAQAAAFIAAAAAKAEAAABSHQAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVJxAQAA7xMAAHMCAAAAAAZjAwAAAAQAAAAEAAAAQwAAAHNOAAAAdAAAfAEAZAEAdAEAgwEBfQEAfAEAagIAfAIAZAIAfAAAgwEBfQMAfAMAdAMAawgAckYAdAQAZAMAfAIAFoMBAIIBAG4EAHwDAFNkBABTKAUAAABzFgUAAFJldHVybnMgdGhlIHJlbWFpbmRlciBmcm9tIGludGVnZXIgZGl2aXNpb24uCgogICAgICAgIFRoZSByZXN1bHQgaXMgdGhlIHJlc2lkdWUgb2YgdGhlIGRpdmlkZW5kIGFmdGVyIHRoZSBvcGVyYXRpb24gb2YKICAgICAgICBjYWxjdWxhdGluZyBpbnRlZ2VyIGRpdmlzaW9uIGFzIGRlc2NyaWJlZCBmb3IgZGl2aWRlLWludGVnZXIsIHJvdW5kZWQKICAgICAgICB0byBwcmVjaXNpb24gZGlnaXRzIGlmIG5lY2Vzc2FyeS4gIFRoZSBzaWduIG9mIHRoZSByZXN1bHQsIGlmCiAgICAgICAgbm9uLXplcm8sIGlzIHRoZSBzYW1lIGFzIHRoYXQgb2YgdGhlIG9yaWdpbmFsIGRpdmlkZW5kLgoKICAgICAgICBUaGlzIG9wZXJhdGlvbiB3aWxsIGZhaWwgdW5kZXIgdGhlIHNhbWUgY29uZGl0aW9ucyBhcyBpbnRlZ2VyIGRpdmlzaW9uCiAgICAgICAgKHRoYXQgaXMsIGlmIGludGVnZXIgZGl2aXNpb24gb24gdGhlIHNhbWUgdHdvIG9wZXJhbmRzIHdvdWxkIGZhaWwsIHRoZQogICAgICAgIHJlbWFpbmRlciBjYW5ub3QgYmUgY2FsY3VsYXRlZCkuCgogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCczJykpCiAgICAgICAgRGVjaW1hbCgnMi4xJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcihEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCczJykpCiAgICAgICAgRGVjaW1hbCgnMScpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgnLTEwJyksIERlY2ltYWwoJzMnKSkKICAgICAgICBEZWNpbWFsKCctMScpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXIoRGVjaW1hbCgnMTAuMicpLCBEZWNpbWFsKCcxJykpCiAgICAgICAgRGVjaW1hbCgnMC4yJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcihEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCcwLjMnKSkKICAgICAgICBEZWNpbWFsKCcwLjEnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKERlY2ltYWwoJzMuNicpLCBEZWNpbWFsKCcxLjMnKSkKICAgICAgICBEZWNpbWFsKCcxLjAnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKDIyLCA2KQogICAgICAgIERlY2ltYWwoJzQnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKERlY2ltYWwoMjIpLCA2KQogICAgICAgIERlY2ltYWwoJzQnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyKDIyLCBEZWNpbWFsKDYpKQogICAgICAgIERlY2ltYWwoJzQnKQogICAgICAgIFKVAAAAUh4AAABzHwAAAFVuYWJsZSB0byBjb252ZXJ0ICVzIHRvIERlY2ltYWxOKAUAAABSjQAAAFInAAAAUtEAAABSjgAAAFJmAAAAKAQAAABSHQAAAFIUAQAAUmIBAABSywAAACgAAAAAKAAAAABzTgAAAC9idWlsZGJvdC90bXAvYnVpbGRob3N0L2luc3RhbGwvcHJlYnVpbHQvbGludXgteDg2XzY0L2xpYi9weXRob24yLjcvZGVjaW1hbC5weVLGAAAA9xMAAHMKAAAAAB8SARUBDAETAmMDAAAAAwAAAAQAAABDAAAAcyUAAAB0AAB8AQBkAQB0AQCDAQF9AQB8AQBqAgB8AgBkAgB8AACDAQFTKAMAAABzRwUAAFJldHVybnMgdG8gYmUgImEgLSBiICogbiIsIHdoZXJlIG4gaXMgdGhlIGludGVnZXIgbmVhcmVzdCB0aGUgZXhhY3QKICAgICAgICB2YWx1ZSBvZiAieCAvIGIiIChpZiB0d28gaW50ZWdlcnMgYXJlIGVxdWFsbHkgbmVhciB0aGVuIHRoZSBldmVuIG9uZQogICAgICAgIGlzIGNob3NlbikuICBJZiB0aGUgcmVzdWx0IGlzIGVxdWFsIHRvIDAgdGhlbiBpdHMgc2lnbiB3aWxsIGJlIHRoZQogICAgICAgIHNpZ24gb2YgYS4KCiAgICAgICAgVGhpcyBvcGVyYXRpb24gd2lsbCBmYWlsIHVuZGVyIHRoZSBzYW1lIGNvbmRpdGlvbnMgYXMgaW50ZWdlciBkaXZpc2lvbgogICAgICAgICh0aGF0IGlzLCBpZiBpbnRlZ2VyIGRpdmlzaW9uIG9uIHRoZSBzYW1lIHR3byBvcGVyYW5kcyB3b3VsZCBmYWlsLCB0aGUKICAgICAgICByZW1haW5kZXIgY2Fubm90IGJlIGNhbGN1bGF0ZWQpLgoKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnJlbWFpbmRlcl9uZWFyKERlY2ltYWwoJzIuMScpLCBEZWNpbWFsKCczJykpCiAgICAgICAgRGVjaW1hbCgnLTAuOScpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCcxMCcpLCBEZWNpbWFsKCc2JykpCiAgICAgICAgRGVjaW1hbCgnLTInKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnMycpKQogICAgICAgIERlY2ltYWwoJzEnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnLTEwJyksIERlY2ltYWwoJzMnKSkKICAgICAgICBEZWNpbWFsKCctMScpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC5yZW1haW5kZXJfbmVhcihEZWNpbWFsKCcxMC4yJyksIERlY2ltYWwoJzEnKSkKICAgICAgICBEZWNpbWFsKCcwLjInKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQucmVtYWluZGVyX25lYXIoRGVjaW1hbCgnMTAnKSwgRGVjaW1hbCgnMC4zJykpCiAgICAgICAgRGVjaW1hbCgnMC4xJykKICAgICAgICA+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IG9wZXJhdGlvbi4gIFRoZSByb3VuZGluZyBtb2RlIGlzIHRha2VuIGZyb20gdGhlCiAgICAgICAgY29udGV4dC4KCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCcyLjEnKSkKICAgICAgICBEZWNpbWFsKCcyJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJzEwMCcpKQogICAgICAgIERlY2ltYWwoJzEwMCcpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCcxMDAuMCcpKQogICAgICAgIERlY2ltYWwoJzEwMCcpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCcxMDEuNScpKQogICAgICAgIERlY2ltYWwoJzEwMicpCiAgICAgICAgPj4+IEV4dGVuZGVkQ29udGV4dC50b19pbnRlZ3JhbF9leGFjdChEZWNpbWFsKCctMTAxLjUnKSkKICAgICAgICBEZWNpbWFsKCctMTAyJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJzEwRSs1JykpCiAgICAgICAgRGVjaW1hbCgnMS4wRSs2JykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX2V4YWN0KERlY2ltYWwoJzcuODlFKzc3JykpCiAgICAgICAgRGVjaW1hbCgnNy44OUUrNzcnKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfZXhhY3QoRGVjaW1hbCgnLUluZicpKQogICAgICAgIERlY2ltYWwoJy1JbmZpbml0eScpCiAgICAgICAgUpUAAABSHgAAACgDAAAAUo0AAABSJwAAAFIyAQAAKAIAAABSHQAAAFIUAQAAKAAAAAAoAAAAAHNOAAAAL2J1aWxkYm90L3RtcC9idWlsZGhvc3QvaW5zdGFsbC9wcmVidWlsdC9saW51eC14ODZfNjQvbGliL3B5dGhvbjIuNy9kZWNpbWFsLnB5UjIBAADsFAAAcwQAAAAAGxIBYwIAAAACAAAABAAAAEMAAABzIgAAAHQAAHwBAGQBAHQBAIMBAX0BAHwBAGoCAGQCAHwAAIMAAVMoAwAAAHNMBAAAUm91bmRzIHRvIGFuIGludGVnZXIuCgogICAgICAgIFdoZW4gdGhlIG9wZXJhbmQgaGFzIGEgbmVnYXRpdmUgZXhwb25lbnQsIHRoZSByZXN1bHQgaXMgdGhlIHNhbWUKICAgICAgICBhcyB1c2luZyB0aGUgcXVhbnRpemUoKSBvcGVyYXRpb24gdXNpbmcgdGhlIGdpdmVuIG9wZXJhbmQgYXMgdGhlCiAgICAgICAgbGVmdC1oYW5kLW9wZXJhbmQsIDFFKzAgYXMgdGhlIHJpZ2h0LWhhbmQtb3BlcmFuZCwgYW5kIHRoZSBwcmVjaXNpb24KICAgICAgICBvZiB0aGUgb3BlcmFuZCBhcyB0aGUgcHJlY2lzaW9uIHNldHRpbmcsIGV4Y2VwdCB0aGF0IG5vIGZsYWdzIHdpbGwKICAgICAgICBiZSBzZXQuICBUaGUgcm91bmRpbmcgbW9kZSBpcyB0YWtlbiBmcm9tIHRoZSBjb250ZXh0LgoKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJzIuMScpKQogICAgICAgIERlY2ltYWwoJzInKQogICAgICAgID4+PiBFeHRlbmRlZENvbnRleHQudG9faW50ZWdyYWxfdmFsdWUoRGVjaW1hbCgnMTAwJykpCiAgICAgICAgRGVjaW1hbCgnMTAwJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJzEwMC4wJykpCiAgICAgICAgRGVjaW1hbCgnMTAwJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJzEwMS41JykpCiAgICAgICAgRGVjaW1hbCgnMTAyJykKICAgICAgICA+Pj4gRXh0ZW5kZWRDb250ZXh0LnRvX2ludGVncmFsX3ZhbHVlKERlY2ltYWwoJy0xMDEuNScpKQogICAg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AIMCAHwDAGQbADx8AwBTKB0AAABzDgMAAFBhcnNlIGFuZCB2YWxpZGF0ZSBhIGZvcm1hdCBzcGVjaWZpZXIuCgogICAgVHVybnMgYSBzdGFuZGFyZCBudW1lcmljIGZvcm1hdCBzcGVjaWZpZXIgaW50byBhIGRpY3QsIHdpdGggdGhlCiAgICBmb2xsb3dpbmcgZW50cmllczoKCiAgICAgIGZpbGw6IGZpbGwgY2hhcmFjdGVyIHRvIHBhZCBmaWVsZCB0byBtaW5pbXVtIHdpZHRoCiAgICAgIGFsaWduOiBhbGlnbm1lbnQgdHlwZSwgZWl0aGVyICc8JywgJz4nLCAnPScgb3IgJ14nCiAgICAgIHNpZ246IGVpdGhlciAnKycsICctJyBvciAnICcKICAgICAgbWluaW11bXdpZHRoOiBub25uZWdhdGl2ZSBpbnRlZ2VyIGdpdmluZyBtaW5pbXVtIHdpZHRoCiAgICAgIHplcm9wYWQ6IGJvb2xlYW4sIGluZGljYXRpbmcgd2hldGhlciB0byBwYWQgd2l0aCB6ZXJvcwogICAgICB0aG91c2FuZHNfc2VwOiBzdHJpbmcgdG8gdXNlIGFzIHRob3VzYW5kcyBzZXBhcmF0b3IsIG9yICcnCiAgICAgIGdyb3VwaW5nOiBncm91cGluZyBmb3IgdGhvdXNhbmRzIHNlcGFyYXRvcnMsIGluIGZvcm1hdAogICAgICAgIHVzZWQgYnkgbG9jYWxlY29udgogICAgICBkZWNpbWFsX3BvaW50OiBzdHJpbmcgdG8gdXNlIGZvciBkZWNpbWFsIHBvaW50CiAgICAgIHByZWNpc2lvbjogbm9ubmVnYXRpdmUgaW50ZWdlciBnaXZpbmcgcHJlY2lzaW9uLCBvciBOb25lCiAgICAgIHR5cGU6IG9uZSBvZiB0aGUgY2hhcmFjdGVycyAnZUVmRmdHJScsIG9yIE5vbmUKICAgICAgdW5pY29kZTogYm9vbGVhbiAoYWx3YXlzIFRydWUgZm9yIFB5dGhvbiAzLngpCgogICAgcxoAAABJbnZhbGlkIGZvcm1hdCBzcGVjaWZpZXI6IHQEAAAAZmlsbHQFAAAAYWxpZ250BwAAAHplcm9wYWRzNwAAAEZpbGwgY2hhcmFjdGVyIGNvbmZsaWN0cyB3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