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ICVzKS4gICVzACVzICVzIHBhY2thZ2VzACVzICVzIHBhY2thZ2VzIGluIHNlY3Rpb24gJXMAJXMgJXMgcGFja2FnZXMgd2l0aG91dCBhIHNlY3Rpb24AJXMgZm9yIG1vcmUAJXMgcGFja2FnZXMgaW4gc2VjdGlvbiAlcwAlcyBwYWNrYWdlcyB3aXRob3V0IGEgc2VjdGlvbgAlcyB0byBnbyBiYWNrACogSGlnaGxpZ2h0OiBPbmUgbGluZSBpbiB0aGUgcGFja2FnZSBsaXN0IHdpbGwgYmUgaGlnaGxpZ2h0ZWQuICBJdCBpbmRpY2F0ZXMKICB3aGljaCBwYWNrYWdlKHMpIHdpbGwgYmUgYWZmZWN0ZWQgYnkgcHJlc3NlcyBvZiBgKycsIGAtJyBhbmQgYF8nLgoKKiBUaGUgZGl2aWRpbmcgbGluZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBzY3JlZW4gc2hvd3MgYSBicmllZiBleHBsYW5hdGlvbiBvZgogIHRoZSBzdGF0dXMgb2YgdGhlIGN1cnJlbnRseS1oaWdobGlnaHRlZCBwYWNrYWdlLCBvciBhIGRlc2NyaXB0aW9uIG9mIHdoaWNoCiAgZ3JvdXAgaXMgaGlnaGxpZ2h0ZWQgaWYgYSBncm91cCBsaW5lIGlzLiAgSWYgeW91IGRvbid0IHVuZGVyc3RhbmQgdGhlCiAgbWVhbmluZyBvZiBzb21lIG9mIHRoZSBzdGF0dXMgY2hhcmFjdGVycyBkaXNwbGF5ZWQsIGdvIHRvIHRoZSByZWxldmFudAogIHBhY2thZ2UgYW5kIGxvb2sgYXQgdGhpcyBkaXZpZGVyIGxpbmUsIG9yIHVzZSB0aGUgYHYnIGtleSBmb3IgYSB2ZXJib3NlCiAgZGlzcGxheSAocHJlc3MgYHYnIGFnYWluIHRvIGdvIGJhY2sgdG8gdGhlIHRlcnNlIGRpc3BsYXkpLgoKKiBUaGUgYm90dG9tIG9mIHRoZSBzY3JlZW4gc2hvd3MgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUKICBjdXJyZW50bHktaGlnaGxpZ2h0ZWQgcGFja2FnZSAoaWYgdGhlcmUgaXMgb25seSBvbmUpLgoKICBJdCBjYW4gc2hvdyBhbiBleHRlbmRlZCBkZXNjcmlwdGlvbiBvZiB0aGUgcGFja2FnZSwgdGhlIGludGVybmFsIHBhY2thZ2UKICBjb250cm9sIGRldGFpbHMgKGVpdGhlciBmb3IgdGhlIGluc3RhbGxlZCBvciBhdmFpbGFibGUgdmVyc2lvbiBvZiB0aGUKICBwYWNrYWdlKSwgb3IgaW5mb3JtYXRpb24gYWJvdXQgY29uZmxpY3RzIGFuZCBkZXBlbmRlbmNpZXMgaW52b2x2aW5nIHRoZQogIGN1cnJlbnQgcGFja2FnZSAoaW4gY29uZmxpY3QvZGVwZW5kZW5jeSByZXNvbHV0aW9uIHN1Ymxpc3RzKS4KCiAgVXNlIHRoZSBgaScga2V5IHRvIGN5Y2xlIHRocm91Z2ggdGhlIGRpc3BsYXlzLCBhbmQgYEknIHRvIGhpZGUgdGhlCiAgaW5mb3JtYXRpb24gZGlzcGxheSBvciBleHBhbmQgaXQgdG8gdXNlIGFsbW9zdCBhbGwgb2YgdGhlIHNjcmVlbi4KAD8AQWJicmV2LgBBYm9ydCAtIHF1aXQgd2l0aG91dCBtYWtpbmcgY2hhbmdlcwBBY2Nlc3MgbWV0aG9kIGAlcycuAEFjdGlvbnM6CiAgYWNjZXNzIHVwZGF0ZSBzZWxlY3QgaW5zdGFsbCBjb25maWcgcmVtb3ZlIHF1aXQKCgBBbGwAQWxsIHBhY2thZ2VzAEF0dHJpYnV0ZXM6CgBBdmFpbC52ZXIAQXZhaWxhYmxlAEF2YWlsYWJsZSBjb250cm9sIGZpbGUgaW5mb3JtYXRpb24AQXZhaWxhYmxlIHBhY2thZ2VzIChub3QgY3VycmVudGx5IGluc3RhbGxlZCkAQnJva2VuAEJyb2tlbmx5IGluc3RhbGxlZCBwYWNrYWdlcwBDaG9vc2UgdGhlIGFjY2VzcyBtZXRob2QgdG8gdXNlLgBDb2xvdXJzOgoAQ29uZmlndXJlIGFueSBwYWNrYWdlcyB0aGF0IGFyZSB1bmNvbmZpZ3VyZWQuAENvcHlyaWdodCAoQykgMTk5NC0xOTk2IElhbiBKYWNrc29uLgpDb3B5cmlnaHQgKEMpIDIwMDAsMjAwMSBXaWNoZXJ0IEFra2VybWFuLgoAQ3ljbGUgdGhyb3VnaCBpbmZvcm1hdGlvbiBkaXNwbGF5cwBEZWJpYW4gYCVzJyBwYWNrYWdlIGhhbmRsaW5nIGZyb250ZW5kIHZlcnNpb24gJXMuCgBEZXBlbmRlbmN5L2NvbmZsaWN0IHJlc29sdXRpb24gLSBpbnRyb2R1Y3Rpb24uCgpPbmUgb3IgbW9yZSBvZiB5b3VyIGNob2ljZXMgaGF2ZSByYWlzZWQgYSBjb25mbGljdCBvciBkZXBlbmRlbmN5IHByb2JsZW0gLQpzb21lIHBhY2thZ2VzIHNob3VsZCBvbmx5IGJlIGluc3RhbGxlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGNlcnRhaW4gb3RoZXJzLCBhbmQKc29tZSBjb21iaW5hdGlvbnMgb2YgcGFja2FnZXMgbWF5IG5vdCBiZSBpbnN0YWxsZWQgdG9nZXRoZXIuCgpZb3Ugd2lsbCBzZWUgYSBzdWItbGlzdCBjb250YWluaW5nIHRoZSBwYWNrYWdlcyBpbnZvbHZlZC4gIFRoZSBib3R0b20gaGFsZiBvZgp0aGUgZGlzcGxheSBzaG93cyByZWxldmFudCBjb25mbGljdHMgYW5kIGRlcGVuZGVuY2llczsgdXNlIGBpJyB0byBjeWNsZSBiZXR3ZWVuCnRoYXQsIHRoZSBwYWNrYWdlIGRlc2NyaXB0aW9ucyBhbmQgdGhlIGludGVybmFsIGNvbnRyb2wgaW5mb3JtYXRpb24uCgpBIHNldCBvZiBgc3VnZ2VzdGVkJyBwYWNrYWdlcyBoYXMgYmVlbiBjYWxjdWxhdGVkLCBhbmQgdGhlIGluaXRpYWwgbWFya2luZ3MgaW4KdGhpcyBzdWItbGlzdCBoYXZlIGJlZW4gc2V0IHRvIG1hdGNoIHRob3NlLCBzbyB5b3UgY2FuIGp1c3QgaGl0IFJldHVybiB0bwphY2NlcHQgdGhlIHN1Z2dlc3Rpb25zIGlmIHlvdSB3aXNoLiAgWW91IG1heSBhYm9ydCB0aGUgY2hhbmdlKHMpIHdoaWNoIGNhdXNlZAp0aGUgcHJvYmxlbShzKSwgYW5kIGdvIGJhY2sgdG8gdGhlIG1haW4gbGlzdCwgYnkgcHJlc3NpbmcgY2FwaXRhbCBgWCcuCgpZb3UgY2FuIGFsc28gbW92ZSBhcm91bmQgdGhlIGxpc3QgYW5kIGNoYW5nZSB0aGUgbWFya2luZ3Mgc28gdGhhdCB0aGV5IGFyZSBtb3JlCmxpa2Ugd2hhdCB5b3Ugd2FudCwgYW5kIHlvdSBjYW4gYHJlamVjdCcgbXkgc3VnZ2VzdGlvbnMgYnkgdXNpbmcgdGhlIGNhcGl0YWwKYEQnIG9yIGBSJyBrZXlzIChzZWUgdGhlIGtleWJpbmRpbmdzIGhlbHAgc2NyZWVuKS4gIFlvdSBjYW4gdXNlIGNhcGl0YWwgYFEnIHRvCmZvcmNlIG1lIHRvIGFjY2VwdCB0aGUgc2l0dWF0aW9uIGN1cnJlbnRseSBkaXNwbGF5ZWQsIGluIGNhc2UgeW91IHdhbnQgdG8Kb3ZlcnJpZGUgYSByZWNvbW1lbmRhdGlvbiBvciB0aGluayB0aGF0IHRoZSBwcm9ncmFtIGlzIG1pc3Rha2VuLgoKUHJlc3MgPHNwYWNlPiB0byBsZWF2ZSBoZWxwIGFuZCBlbnRlciB0aGUgc3ViLWxpc3Q7IHJlbWVtYmVyOiBwcmVzcyBgPycgZm9yIGhlbHAuCgBEZXNjcmlwdGlvbgBEaXNwbGF5LCBwYXJ0IDE6IHBhY2thZ2UgbGlzdGluZyBhbmQgc3RhdHVzIGNoYXJzAERpc3BsYXksIHBhcnQgMjogbGlzdCBoaWdobGlnaHQ7IGluZm9ybWF0aW9uIGRpc3BsYXkARUlPTQBFT0YgYmVmb3JlIG9wdGlvbiBuYW1lIHN0YXJ0AEVPRiBiZWZvcmUgc3VtbWFyeQBFT0YgaW4gaW5kZXggc3RyaW5nAEVPRiBpbiBvcHRpb24gbmFtZQBFT0YgaW4gc3VtbWFyeSAtIG1pc3NpbmcgbmV3bGluZQBFcnJvcgBFcnJvcjogAEV4cGxhbmF0aW9uAEV4dHJhAEdvIHRvIGVuZCBvZiBsaXN0AEdvIHRvIHRvcCBvZiBsaXN0AEhlbHAgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIHVuZGVyIHRoZSBmb2xsb3dpbmcgdG9waWNzOgBIZWxwOiAASW1wAEltcG9ydGFudABJbnN0LnZlcgBJbnN0YWxsIGFuZCB1cGdyYWRlIHdhbnRlZCBwYWNrYWdlcy4ASW5zdGFsbGVkAEluc3RhbGxlZCBjb250cm9sIGZpbGUgaW5mb3JtYXRpb24ASW5zdGFsbGVkIHBhY2thZ2VzAEluc3RhbGxlZD8ASW50ZXJyZWxhdGlvbnNoaXBzAEludHJvZHVjdGlvbiB0byBjb25mbGljdC9kZXBlbmRlbmN5IHJlc29sdXRpb24gc3ViLWxpc3QASW50cm9kdWN0aW9uIHRvIG1ldGhvZCBzZWxlY3Rpb24gZGlzcGxheQBJbnRyb2R1Y3Rpb24gdG8gcGFja2FnZSBzZWxlY3Rpb25zAEludHJvZHVjdGlvbiB0byByZWFkLW9ubHkgcGFja2FnZSBsaXN0IGJyb3dzZXIASW52YWxpZCAlcyBgJXMnCgBLZXliaW5kaW5ncwBLZXlzdHJva2VzAEtleXN0cm9rZXMgZm9yIG1ldGhvZCBzZWxlY3Rpb24ATWFrZSBoaWdobGlnaHQgbGVzcyBzcGVjaWZpYwBNYWtlIGhpZ2hsaWdodCBtb3JlIHNwZWNpZmljAE1hcmsgcGFja2FnZShzKSBmb3IgZGVpbnN0YWxsIGFuZCBwdXJnZQBNYXJrIHBhY2thZ2UocykgZm9yIGRlaW5zdGFsbGF0aW9uAE1hcmsgcGFja2FnZShzKSBmb3IgaW5zdGFsbGF0aW9uAE1hcmtlZCBmb3IATW90aW9uIGtleXM6IE5leHQvUHJldmlvdXMsIFRvcC9FbmQsIFVwL0Rvd24sIEJhY2t3YXJkcy9Gb3J3YXJkczoKICBqLCBEb3duLWFycm93ICAgICAgICAgaywgVXAtYXJyb3cgICAgICAgICAgICAgbW92ZSBoaWdobGlnaHQKICBOLCBQYWdlLWRvd24sIFNwYWNlICAgUCwgUGFnZS11cCwgQmFja3NwYWNlICAgc2Nyb2xsIGxpc3QgYnkgMSBwYWdlCiAgXm4gICAgICAgICAgICAgICAgICAgIF5wICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbCBsaXN0IGJ5IDEgbGluZQogIHQsIEhvbWUgICAgICAgICAgICAgICBlLCBFbmQgICAgICAgICAgICAgICAgICBqdW1wIHRvIHRvcC9lbmQgb2YgbGlzdAogIHUgICAgICAgICAgICAgICAgICAgICBkICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGwgaW5mbyBieSAxIHBhZ2UKICBedSAgICAgICAgICAgICAgICAgICAgXmQgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsIGluZm8gYnkgMSBsaW5lCiAgQiwgTGVmdC1hcnJvdyAgICAgICAgIEYsIFJpZ2h0LWFycm93ICAgICAgICAgIHBhbiBkaXNwbGF5IGJ5IDEvMyBzY3JlZW4KICBeYiAgICAgICAgICAgICAgICAgICAgXmYgICAgICAgICAgICAgICAgICAgICAgcGFuIGRpc3BsYXkgYnkgMSBjaGFyYWN0ZXIKCk1hcmsgcGFja2FnZXMgZm9yIGxhdGVyIHByb2Nlc3Npbmc6CiArLCBJbnNlcnQgIGluc3RhbGwgb3IgdXBncmFkZSAgICAgID0sIEggIGhvbGQgaW4gcHJlc2VudCBzdGF0ZQogLSwgRGVsZXRlICByZW1vdmUgICAgICAgICAgICAgICAgICA6LCBHICB1bmhvbGQ6IHVwZ3JhZGUgb3IgbGVhdmUgdW5pbnN0YWxsZWQKIF8gICAgICAgICAgcmVtb3ZlICYgcHVyZ2UgY29uZmlnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pc2NlbGxhbmVvdXM6ClF1aXQsIGV4aXQsIG92ZXJ3cml0ZSAobm90ZSBjYXBpdGFscyEpOiAgICAgICA/LCBGMSByZXF1ZXN0IGhlbHAgKGFsc28gSGVscCkKIFJldHVybiAgQ29uZmlybSwgcXVpdCAoY2hlY2sgZGVwZW5kZW5jaWVzKSAgIGksIEkgIHRvZ2dsZS9jeWNsZSBpbmZvIGRpc3BsYXlzCiAgIFEgICAgIENvbmZpcm0sIHF1aXQgKG92ZXJyaWRlIGRlcC5zKSAgICAgICBvLCBPICBjeWNsZSB0aHJvdWdoIHNvcnQgb3B0aW9ucwogWCwgRXNjICBlWGl0LCBhYmFuZG9uaW5nIGFueSBjaGFuZ2VzIG1hZGUgICAgdiwgViAgY2hhbmdlIHN0YXR1cyBkaXNwbGF5IG9wdHMKICAgUiAgICAgUmV2ZXJ0IHRvIHN0YXRlIGJlZm9yZSB0aGlzIGxpc3QgICAgICBebCAgIHJlZHJhdyBkaXNwbGF5CiAgIFUgICAgIHNldCBhbGwgdG8gc1VnZ2VzdGVkIHN0YXRlICAgICAgICAgICAgIC8gICBzZWFyY2ggKFJldHVybiB0byBjYW5jZWwpCiAgIEQgICAgIHNldCBhbGwgdG8gRGlyZWN0bHkgcmVxdWVzdGVkIHN0YXRlICBuLCBcICByZXBlYXQgbGFzdCBzZWFyY2gKAE1vdGlvbiBrZXlzOiBOZXh0L1ByZXZpb3VzLCBUb3AvRW5kLCBVcC9Eb3duLCBCYWNrd2FyZHMvRm9yd2FyZHM6CiAgaiwgRG93bi1hcnJvdyAgICAgICAgIGssIFVwLWFycm93ICAgICAgICAgICAgIG1vdmUgaGlnaGxpZ2h0CiAgTiwgUGFnZS1kb3duLCBTcGFjZSAgIFAsIFBhZ2UtdXAsIEJhY2tzcGFjZSAgIHNjcm9sbCBsaXN0IGJ5IDEgcGFnZQogIF5uICAgICAgICAgICAgICAgICAgICBecCAgICAgICAgICAgICAgICAgICAgICBzY3JvbGwgbGlzdCBieSAxIGxpbmUKICB0LCBIb21lICAgICAgICAgICAgICAgZSwgRW5kICAgICAgICAgICAgICAgICAganVtcCB0byB0b3AvZW5kIG9mIGxpc3QKICB1ICAgICAgICAgICAgICAgICAgICAgZCAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsIGluZm8gYnkgMSBwYWdlCiAgXnUgICAgICAgICAgICAgICAgICAgIF5kICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbCBpbmZvIGJ5IDEgbGluZQogIEIsIExlZnQtYXJyb3cgICAgICAgICBGLCBSaWdodC1hcnJvdyAgICAgICAgICBwYW4gZGlzcGxheSBieSAxLzMgc2NyZWVuCiAgXmIgICAgICAgICAgICAgICAgICAgIF5mICAgICAgICAgICAgICAgICAgICAgIHBhbiBkaXNwbGF5IGJ5IDEgY2hhcmFjdGVyCihUaGVzZSBhcmUgdGhlIHNhbWUgbW90aW9uIGtleXMgYXMgaW4gdGhlIHBhY2thZ2UgbGlzdCBkaXNwbGF5LikKClF1aXQ6CiBSZXR1cm4sIEVudGVyICAgIHNlbGVjdCB0aGlzIG1ldGhvZCBhbmQgZ28gdG8gaXRzIGNvbmZpZ3VyYXRpb24gZGlhbG9ndWUKIHgsIFggICAgICAgICAgICAgZXhpdCB3aXRob3V0IGNoYW5naW5nIG9yIHNldHRpbmcgdXAgdGhlIGluc3RhbGxhdGlvbiBtZXRob2QKCk1pc2NlbGxhbmVvdXM6CiAgPywgSGVscCwgRjEgICAgICByZXF1ZXN0IGhlbHAKIF5sICAgICAgICAgICAgICAgIHJlZHJhdyBkaXNwbGF5CiAgLyAgICAgICAgICAgICAgICBzZWFyY2ggKGp1c3QgcmV0dXJuIHRvIGNhbmNlbCkKICBcICAgICAgICAgICAgICAgIHJlcGVhdCBsYXN0IHNlYXJjaAoATW92ZSBkb3duAE1vdmUgdXAATmV3AE5ld2x5IGF2YWlsYWJsZSBwYWNrYWdlcwBObyBkZXNjcmlwdGlvbiBhdmFpbGFibGUuAE5vIGV4cGxhbmF0aW9uIGF2YWlsYWJsZS4ATnVsbCBjb2xvdXIgc3BlY2lmaWNhdGlvbgoAT2Jzb2xldGUgYW5kIGxvY2FsIHBhY2thZ2VzIHByZXNlbnQgb24gc3lzdGVtAE9ic29sZXRlL2xvY2FsAE9sZCBtYXJrAE9wdABPcHRpb25hbABPcHRpb25zOgogIC0tYWRtaW5kaXIgPGRpcmVjdG9yeT4gICAgIFVzZSA8ZGlyZWN0b3J5PiBpbnN0ZWFkIG9mICVzLgogIC0tZXhwZXJ0ICAgICAgICAgICAgICAgICAgIFR1cm4gb24gZXhwZXJ0IG1vZGUuCiAgLS1kZWJ1ZyA8ZmlsZT4gfCAtRDxmaWxlPiAgVHVybiBvbiBkZWJ1Z2dpbmcsIHNlbmRpbmcgb3V0cHV0IHRvIDxmaWxlPi4KICAtLWNvbG91ciB8IC0tY29sb3Igc2NyZWVucGFydDpbZm9yZWdyb3VuZF0sW2JhY2tncm91bmRdWzphdHRyWythdHRyKy4uXV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmUgc2NyZWVuIGNvbG91cnMuCgoAUGFja2FnZQBQcmVzcyA8ZW50ZXI+IHRvIGNvbnRpbnVlLgoAUHJlc3MgPyBmb3IgaGVscCBtZW51LCAuIGZvciBuZXh0IHRvcGljLCA8c3BhY2U+IHRvIGV4aXQgaGVscC4AUHJlc3MgYSBrZXkgZnJvbSB0aGUgbGlzdCBhYm92ZSwgPHNwYWNlPiBvciBgcScgdG8gZXhpdCBoZWxwLAogIG9yIGAuJyAoZnVsbCBzdG9wKSB0byByZWFkIGVhY2ggaGVscCBwYWdlIGluIHR1cm4uIABQcmlvcml0eQBQdXJnZWQAUHVyZ2VkIHBhY2thZ2VzIGFuZCB0aG9zZSBuZXZlciBpbnN0YWxsZWQAUXVpdCBkc2VsZWN0LgBRdWl0IHdpdGhvdXQgY2hhbmdpbmcgc2VsZWN0ZWQgYWNjZXNzIG1ldGhvZABRdWl0LCBjb25maXJtaW5nIHdpdGhvdXQgY2hlY2sAUXVpdCwgY29uZmlybWluZywgYW5kIGNoZWNraW5nIGRlcGVuZGVuY2llcwBRdWl0LCByZWplY3RpbmcgY29uZmxpY3QvZGVwZW5kZW5jeSBzdWdnZXN0aW9ucwBSRUlOU1RBTEwAUmVkcmF3IGRpc3BsYXkAUmVtb3ZlIHVud2FudGVkIHNvZnR3YXJlLgBSZW1vdmVkAFJlbW92ZWQgYW5kIG5vIGxvbmdlciBhdmFpbGFibGUgcGFja2FnZXMAUmVtb3ZlZCBwYWNrYWdlcyAoY29uZmlndXJhdGlvbiBzdGlsbCBwcmVzZW50KQBSZXBlYXQgbGFzdCBzZWFyY2guAFJlcQBSZXF1ZXN0IGhlbHAgKGN5Y2xlIHRocm91Z2ggaGVscCBzY3JlZW5zKQBSZXF1ZXN0IHdoaWNoIHBhY2thZ2VzIHlvdSB3YW50IG9uIHlvdXIgc3lzdGVtLgBSZXF1aXJlZABSZXZlcnQgdG8gY3VycmVudGx5IGluc3RhbGxlZCBzdGF0ZSBmb3IgYWxsIHBhY2thZ2VzAFJldmVydCB0byBkaXJlY3RseSByZXF1ZXN0ZWQgc3RhdGUgZm9yIGFsbCBwYWNrYWdlcwBSZXZlcnQgdG8gb2xkIHN0YXRlIGZvciBhbGwgcGFja2FnZXMAUmV2ZXJ0IHRvIHN1Z2dlc3RlZCBzdGF0ZSBmb3IgYWxsIHBhY2thZ2VzAFNjcmVlbnBhcnRzOgoAU2Nyb2xsIGJhY2t3YXJkcyB0aHJvdWdoIGhlbHAvaW5mb3JtYXRpb24AU2Nyb2xsIGJhY2t3YXJkcyB0aHJvdWdoIGhlbHAvaW5mb3JtYXRpb24gYnkgMSBsaW5lAFNjcm9sbCBiYWNrd2FyZHMgdGhyb3VnaCBsaXN0AFNjcm9sbCBiYWNrd2FyZHMgdGhyb3VnaCBsaXN0IGJ5IDEgbGluZQBTY3JvbGwgb253YXJkcyB0aHJvdWdoIGhlbHAvaW5mb3JtYXRpb24AU2Nyb2xsIG9ud2FyZHMgdGhyb3VnaCBoZWxwL2luZm9ybWF0aW9uIGJ5IDEgbGluZQBTY3JvbGwgb253YXJkcyB0aHJvdWdoIGxpc3QAU2Nyb2xsIG9ud2FyZHMgdGhyb3VnaCBsaXN0IGJ5IDEgbGluZQBTZWFyY2ggZm9yID8gAFNlYXJjaCBmb3IgYSBwYWNrYWdlIHdob3NlIG5hbWUgY29udGFpbnMgYSBzdHJpbmcAU2VjdGlvbgBTZWxlY3QgY3VycmVudGx5LWhpZ2hsaWdodGVkIGFjY2VzcyBtZXRob2QAU2V0IHlvdXIgVEVSTSB2YXJpYWJsZSBjb3JyZWN0bHksIHVzZSBhIGJldHRlciB0ZXJtaW5hbCwKb3IgbWFrZSBkbyB3aXRoIHRoZSBwZXItcGFja2FnZSBtYW5hZ2VtZW50IHRvb2wgJXMuCgBTdGFuZGFyZABTdGQAU3dhcCBzb3J0IG9yZGVyIHByaW9yaXR5L3NlY3Rpb24AVGVybWluYWwgZG9lcyBub3QgYXBwZWFyIHRvIHN1cHBvcnQgY3Vyc29yIGFkZHJlc3NpbmcuCgBUZXJtaW5hbCBkb2VzIG5vdCBhcHBlYXIgdG8gc3VwcG9ydCBoaWdobGlnaHRpbmcuCgBUaGUgbGluZSB5b3UgaGF2ZSBoaWdobGlnaHRlZCByZXByZXNlbnRzIG1hbnkgcGFja2FnZXM7IGlmIHlvdSBhc2sgdG8gaW5zdGFsbCwgcmVtb3ZlLCBob2xkLCBldGMuIGl0IHlvdSB3aWxsIGFmZmVjdCBhbGwgdGhlIHBhY2thZ2VzIHdoaWNoIG1hdGNoIHRoZSBjcml0ZXJpb24gc2hvd24uCgpJZiB5b3UgbW92ZSB0aGUgaGlnaGxpZ2h0IHRvIGEgbGluZSBmb3IgYSBwYXJ0aWN1bGFyIHBhY2thZ2UgeW91IHdpbGwgc2VlIGluZm9ybWF0aW9uIGFib3V0IHRoYXQgcGFja2FnZSBkaXNwbGF5ZWQgaGVyZS4KWW91IGNhbiB1c2UgYG8nIGFuZCBgTycgdG8gY2hhbmdlIHRoZSBzb3J0IG9yZGVyIGFuZCBnaXZlIHlvdXJzZWxmIHRoZSBvcHBvcnR1bml0eSB0byBtYXJrIHBhY2thZ2VzIGluIGRpZmZlcmVudCBraW5kcyBvZiBncm91cHMuAFRoZSB0b3AgaGFsZiBvZiB0aGUgc2NyZWVuIHNob3dzIGEgbGlzdCBvZiBwYWNrYWdlcy4gIEZvciBlYWNoIHBhY2thZ2UgeW91IHNlZQpmb3VyIGNvbHVtbnMgZm9yIGl0cyBjdXJyZW50IHN0YXR1cyBvbiB0aGUgc3lzdGVtIGFuZCBtYXJrLiAgSW4gdGVyc2UgbW9kZSAodXNlCmB2JyB0byB0b2dnbGUgdmVyYm9zZSBkaXNwbGF5KSB0aGVzZSBhcmUgc2luZ2xlIGNoYXJhY3RlcnMsIGZyb20gbGVmdCB0byByaWdodDoKCiBFcnJvciBmbGFnOiBTcGFjZSAtIG5vIGVycm9yIChidXQgcGFja2FnZSBtYXkgYmUgaW4gYnJva2VuIHN0YXRlIC0gc2VlIGJlbG93KQogICAgICAgICAgICAgIGBSJyAgLSBzZXJpb3VzIGVycm9yIGR1cmluZyBpbnN0YWxsYXRpb24sIG5lZWRzIHJlaW5zdGFsbGF0aW9uOwogSW5zdGFsbGVkIHN0YXRlOiAgICAgU3BhY2UgICAgLSBub3QgaW5zdGFsbGVkOwogICAgICAgICAgICAgICAgICAgICAgIGAqJyAgICAgLSBpbnN0YWxsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgYC0nICAgICAtIG5vdCBpbnN0YWxsZWQgYnV0IGNvbmZpZyBmaWxlcyByZW1haW47CiAgIHBhY2thZ2VzIGluIHRoZXNlIHsgYFUnICAgICAtIHVucGFja2VkIGJ1dCBub3QgeWV0IGNvbmZpZ3VyZWQ7CiAgIHN0YXRlcyBhcmUgbm90ICAgIHsgYEMnICAgICAtIGhhbGYtY29uZmlndXJlZCAoYW4gZXJyb3IgaGFwcGVuZWQpOwogICAocXVpdGUpIHByb3Blcmx5ICB7IGBJJyAgICAgLSBoYWxmLWluc3RhbGxlZCAoYW4gZXJyb3IgaGFwcGVuZWQpOwogICBpbnN0YWxsZWQgICAgICAgICB7IGBXJyxgdCcgLSB0cmlnZ2VycyBhcmUgYXdhaXRlZCByZXNwLiBwZW5kaW5nLgogT2xkIG1hcms6IHdoYXQgd2FzIHJlcXVlc3RlZCBmb3IgdGhpcyBwYWNrYWdlIGJlZm9yZSBwcmVzZW50aW5nIHRoaXMgbGlzdDsKIE1hcms6IHdoYXQgaXMgcmVxdWVzdGVkIGZvciB0aGlzIHBhY2thZ2U6CiAgYConOiBtYXJrZWQgZm9yIGluc3RhbGxhdGlvbiBvciB1cGdyYWRlOwogIGAtJzogbWFya2VkIGZvciByZW1vdmFsLCBidXQgYW55IGNvbmZpZ3VyYXRpb24gZmlsZXMgd2lsbCByZW1haW47CiAgYD0nOiBvbiBob2xkOiBwYWNrYWdlIHdpbGwgbm90IGJlIHByb2Nlc3NlZCBhdCBhbGw7CiAgYF8nOiBtYXJrZWQgZm9yIHB1cmdlIGNvbXBsZXRlbHkgLSBldmVuIHJlbW92ZSBjb25maWd1cmF0aW9uOwogIGBuJzogcGFja2FnZSBpcyBuZXcgYW5kIGhhcyB5ZXQgdG8gYmUgbWFya2VkIGZvciBpbnN0YWxsL3JlbW92ZS8mYy4KCkFsc28gZGlzcGxheWVkIGFyZSBlYWNoIHBhY2thZ2UncyBQcmlvcml0eSwgU2VjdGlvbiwgbmFtZSwgaW5zdGFsbGVkIGFuZAphdmFpbGFibGUgdmVyc2lvbiBudW1iZXJzIChzaGlmdC1WIHRvIGRpc3BsYXkvaGlkZSkgYW5kIHN1bW1hcnkgZGVzY3JpcHRpb24uCgBUeXBlIGRzZWxlY3QgLS1oZWxwIGZvciBoZWxwLgBVbmNsYXNzaWZpZWQAVXAgdG8gZGF0ZSBpbnN0YWxsZWQgcGFja2FnZXMAVXAtdG8tZGF0ZQBVcGRhdGUgbGlzdCBvZiBhdmFpbGFibGUgcGFja2FnZXMsIGlmIHBvc3NpYmxlLgBVcGRhdGVkAFVwZGF0ZWQgcGFja2FnZXMgKG5ld2VyIHZlcnNpb24gaXMgYXZhaWxhYmxlKQBVc2FnZTogJXMgWzxvcHRpb24+IC4uLl0gWzxhY3Rpb24+IC4uLl0KCgBXZWxjb21lIHRvIGRzZWxlY3QncyBtYWluIHBhY2thZ2UgbGlzdGluZy4KCllvdSB3aWxsIGJlIHByZXNlbnRlZCB3aXRoIGEgbGlzdCBvZiBwYWNrYWdlcyB3aGljaCBhcmUgaW5zdGFsbGVkIG9yIGF2YWlsYWJsZQpmb3IgaW5zdGFsbGF0aW9uLiAgU2luY2UgeW91IGRvIG5vdCBoYXZlIHRoZSBwcml2aWxlZ2UgbmVjZXNzYXJ5IHRvIHVwZGF0ZQpwYWNrYWdlIHN0YXRlcywgeW91IGFyZSBpbiBhIHJlYWQtb25seSBtb2RlLiAgWW91IGNhbiBuYXZpZ2F0ZSBhcm91bmQgdGhlCmxpc3QgdXNpbmcgdGhlIGN1cnNvciBrZXlzIChwbGVhc2Ugc2VlIHRoZSBgS2V5c3Ryb2tlcycgaGVscCBzY3JlZW4pLCBvYnNlcnZlCnRoZSBzdGF0dXMgb2YgdGhlIHBhY2thZ2VzIGFuZCByZWFkIGluZm9ybWF0aW9uIGFib3V0IHRoZW0uCgpZb3Ugc2hvdWxkIHJlYWQgdGhlIGxpc3Qgb2Yga2V5cyBhbmQgdGhlIGV4cGxhbmF0aW9ucyBvZiB0aGUgZGlzcGxheS4KTXVjaCBvbi1saW5lIGhlbHAgaXMgYXZhaWxhYmxlLCBwbGVhc2UgbWFrZSB1c2Ugb2YgaXQgLSBwcmVzcyBgPycgYXQKYW55IHRpbWUgZm9yIGhlbHAuCgpXaGVuIHlvdSBoYXZlIGZpbmlzaGVkIGJyb3dzaW5nLCBwcmVzcyBgUScgb3IgPGVudGVyPiB0byBxdWl0LgoKUHJlc3MgPHNwYWNlPiB0byBsZWF2ZSBoZWxwIGFuZCBlbnRlciB0aGUgbGlzdCBub3cuCgBXZWxjb21lIHRvIGRzZWxlY3QncyBtYWluIHBhY2thZ2UgbGlzdGluZy4KCllvdSB3aWxsIGJlIHByZXNlbnRlZCB3aXRoIGEgbGlzdCBvZiBwYWNrYWdlcyB3aGljaCBhcmUgaW5zdGFsbGVkIG9yIGF2YWlsYWJsZQpmb3IgaW5zdGFsbGF0aW9uLiAgWW91IGNhbiBuYXZpZ2F0ZSBhcm91bmQgdGhlIGxpc3QgdXNpbmcgdGhlIGN1cnNvciBrZXlzLAptYXJrIHBhY2thZ2VzIGZvciBpbnN0YWxsYXRpb24gKHVzaW5nIGArJykgb3IgZGVpbnN0YWxsYXRpb24gKHVzaW5nIGAtJykuClBhY2thZ2VzIGNhbiBiZSBtYXJrZWQgZWl0aGVyIHNpbmdseSBvciBpbiBncm91cHM7IGluaXRpYWxseSB5b3Ugd2lsbCBzZWUgdGhhdAp0aGUgbGluZSBgQWxsIHBhY2thZ2VzJyBpcyBzZWxlY3RlZC4gIGArJywgYC0nIGFuZCBzbyBvbiB3aWxsIGFmZmVjdCBhbGwgdGhlCnBhY2thZ2VzIGRlc2NyaWJlZCBieSB0aGUgaGlnaGxpZ2h0ZWQgbGluZS4KClNvbWUgb2YgeW91ciBjaG9pY2VzIHdpbGwgY2F1c2UgY29uZmxpY3RzIG9yIGRlcGVuZGVuY3kgcHJvYmxlbXM7IHlvdSB3aWxsIGJlCmdpdmVuIGEgc3ViLWxpc3Qgb2YgdGhlIHJlbGV2YW50IHBhY2thZ2VzLCBzbyB0aGF0IHlvdSBjYW4gc29sdmUgdGhlIHByb2JsZW1zLgoKWW91IHNob3VsZCByZWFkIHRoZSBsaXN0IG9mIGtleXMgYW5kIHRoZSBleHBsYW5hdGlvbnMgb2YgdGhlIGRpc3BsYXkuCk11Y2ggb24tbGluZSBoZWxwIGlzIGF2YWlsYWJsZSwgcGxlYXNlIG1ha2UgdXNlIG9mIGl0IC0gcHJlc3MgYD8nIGF0CmFueSB0aW1lIGZvciBoZWxwLgoKV2hlbiB5b3UgaGF2ZSBmaW5pc2hlZCBzZWxlY3RpbmcgcGFja2FnZXMsIHByZXNzIDxlbnRlcj4gdG8gY29uZmlybSBjaGFuZ2VzLApvciBgWCcgdG8gcXVpdCB3aXRob3V0IHNhdmluZyBjaGFuZ2VzLiBBIGZpbmFsIGNoZWNrIG9uIGNvbmZsaWN0cyBhbmQKZGVwZW5kZW5jaWVzIHdpbGwgYmUgZG9uZSAtIGhlcmUgdG9vIHlvdSBtYXkgc2VlIGEgc3VibGlzdC4KClByZXNzIDxzcGFjZT4gdG8gbGVhdmUgaGVscCBhbmQgZW50ZXIgdGhlIGxpc3Qgbm93LgoAWHRyAFtBXWNjZXNzAFtDXW9uZmlnAFtJXW5zdGFsbABbUV11aXQAW1JdZW1vdmUAW1NdZWxlY3QAW1VdcGRhdGUAW25vdCBib3VuZF0AW3VuazogJWRdAGEAYXdhaXRpbmcgdHJpZ2dlciBwcm9jZXNzaW5nAGJVRwBicmVha3MAYwBjb2xvdXIAY29sb3VyIGF0dHJpYnV0ZQBjb25mbGljdHMgd2l0aABjb3VsZG4ndCBvcGVuIGRlYnVnIGZpbGUgYCUuMjU1cycKAGRlcGVuZHMgb24AZG91cGRhdGUgZmFpbGVkAGRvdXBkYXRlIGluIFNJR1dJTkNIIGhhbmRsZXIgZmFpbGVkAGRzZWxlY3QgLSBpbnNwZWN0aW9uIG9mIHBhY2thZ2Ugc3RhdGVzAGRzZWxlY3QgLSBsaXN0IG9mIGFjY2VzcyBtZXRob2RzAGRzZWxlY3QgLSBtYWluIHBhY2thZ2UgbGlzdGluZwBkc2VsZWN0IC0gcmVjdXJzaXZlIHBhY2thZ2UgbGlzdGluZwBkc2VsZWN0IGFuZCBkcGtnIGNhbiBkbyBhdXRvbWF0aWMgaW5zdGFsbGF0aW9uLCBsb2FkaW5nIHRoZSBwYWNrYWdlIGZpbGVzIHRvIGJlCmluc3RhbGxlZCBmcm9tIG9uZSBvZiBhIG51bWJlciBvZiBkaWZmZXJlbnQgcG9zc2libGUgcGxhY2VzLgoKVGhpcyBsaXN0IGFsbG93cyB5b3UgdG8gc2VsZWN0IG9uZSBvZiB0aGVzZSBpbnN0YWxsYXRpb24gbWV0aG9kcy4KCk1vdmUgdGhlIGhpZ2hsaWdodCB0byB0aGUgbWV0aG9kIHlvdSB3aXNoIHRvIHVzZSwgYW5kIGhpdCBFbnRlci4gIFlvdSB3aWxsIHRoZW4KYmUgcHJvbXB0ZWQgZm9yIHRoZSBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBkbyB0aGUgaW5zdGFsbGF0aW9uLgoKQXMgeW91IG1vdmUgdGhlIGhpZ2hsaWdodCBhIGRlc2NyaXB0aW9uIG9mIGVhY2ggbWV0aG9kLCB3aGVyZSBhdmFpbGFibGUsIGlzCmRpc3BsYXllZCBpbiB0aGUgYm90dG9tIGhhbGYgb2YgdGhlIHNjcmVlbi4KCklmIHlvdSB3aXNoIHRvIHF1aXQgd2l0aG91dCBjaGFuZ2luZyBhbnl0aGluZyB1c2UgdGhlIGB4JyBrZXkgd2hpbGUgaW4gdGhlIGxpc3QKb2YgaW5zdGFsbGF0aW9uIG1ldGhvZHMuCgpBIGZ1bGwgbGlzdCBvZiBrZXlzdHJva2VzIGlzIGF2YWlsYWJsZSBieSBwcmVzc2luZyBgaycgbm93LCBvciBmcm9tIHRoZSBoZWxwCm1lbnUgcmVhY2hhYmxlIGJ5IHByZXNzaW5nIGA/Jy4KAGVuaGFuY2VzAGVycm9yIGR1cmluZyByZWFkIG9mIG1ldGhvZCBvcHRpb25zIGZpbGUgYCUuMjUwcycAZXJyb3IgZHVyaW5nIHJlYWQgb2Ygb3B0aW9uIGRlc2NyaXB0aW9uIGZpbGUgYCUuMjUwcycAZXJyb3IgaW4gcmVndWxhciBleHByZXNzaW9uAGVycm9yIHJlYWRpbmcgYWNrbm93bGVkZ2VtZW50IG9mIHByb2dyYW0gZmFpbHVyZSBtZXNzYWdlAGVycm9yIHJlYWRpbmcga2V5Ym9hcmQgaW4gaGVscABlcnJvciByZWFkaW5nIG9wdGlvbnMgZmlsZSBgJS4yNTBzJwBmYWlsZWQgdG8gYWxsb2NhdGUgY29sb3VyIHBhaXIAZmFpbGVkIHRvIGJsb2NrIFNJR1dJTkNIAGZhaWxlZCB0byBjcmVhdGUgYmFzZWxpc3QgcGFkAGZhaWxlZCB0byBjcmVhdGUgaGVhZGluZyBwYWQAZmFpbGVkIHRvIGNyZWF0ZSBpbmZvIHBhZABmYWlsZWQgdG8gY3JlYXRlIHF1ZXJ5IHdpbmRvdwBmYWlsZWQgdG8gY3JlYXRlIHRoaXNzdGF0ZSBwYWQAZmFpbGVkIHRvIGNyZWF0ZSB0aXRsZSB3aW5kb3cAZmFpbGVkIHRvIGNyZWF0ZSB3aGF0aW5mbyB3aW5kb3cAZmFpbGVkIHRvIGdldCBvbGQgU0lHV0lOQ0ggc2lnYWN0AGZhaWxlZCB0byBnZXQgb2xkIHNpZ25hbCBtYXNrAGZhaWxlZCB0byBnZXRjaCBpbiBtYWluIG1lbnUAZmFpbGVkIHRvIHJlLWJsb2NrIFNJR1dJTkNIAGZhaWxlZCB0byByZWFkIG9wdGlvbiBkZXNjcmlwdGlvbiBmaWxlIGAlLjI1MHMnAGZhaWxlZCB0byByZXN0b3JlIG9sZCBTSUdXSU5DSCBzaWdhY3QAZmFpbGVkIHRvIHJlc3RvcmUgb2xkIHNpZ25hbCBtYXNrAGZhaWxlZCB0byBzZXQgbmV3IFNJR1dJTkNIIHNpZ2FjdABmYWlsZWQgdG8gdW5ibG9jayBTSUdXSU5DSABnZXRjaCBmYWlsZWQAaGFsZiBpbnN0YWxsZWQAaG9sZABpAGluZGV4IHN0cmluZyB0b28gbG9uZwBpbnN0YWxsAGluc3RhbGxhdGlvbiBzY3JpcHQAaW5zdGFsbGVkAGludmFsaWQgc2VhcmNoIG9wdGlvbiBnaXZlbgBpb2N0bChUSU9DR1dJTlNaKSBmYWlsZWQAbWVudQBtZXRob2QgYCUuMjUwcycgaGFzIG5hbWUgdGhhdCBpcyB0b28gbG9uZyAoJWQgPiAlZCBjaGFyYWN0ZXJzKQBuZXcgcGFja2FnZQBuZXdsaW5lIGJlZm9yZSBvcHRpb24gbmFtZSBzdGFydABuZXdsaW5lIGJlZm9yZSBzdW1tYXJ5AG5vbi1hbHBoYW51bSBpbiBvcHRpb24gbmFtZQBub24tZGlnaXQgd2hlcmUgZGlnaXQgd2FudGVkAG5vbmFscGhhIHdoZXJlIG9wdGlvbiBuYW1lIHN0YXJ0IHdhbnRlZABub3QgaW5zdGFsbGVkAHByZS1kZXBlbmRzIG9uAHByb3ZpZGVzAHB1cmdlAHEAcXVlcnkvc2V0dXAgc2NyaXB0AHIAcmVjb21tZW5kcwByZW1vdmUAcmVtb3ZlZCAoY29uZmlncyByZW1haW4pAHJlcGxhY2VzAHMAc2NyZWVuIHBhcnQAc3VnZ2VzdHMAc3ludGF4IGVycm9yIGluIG1ldGhvZCBvcHRpb25zIGZpbGUgYCUuMjUwcycgLS0gJXMAdGVybWluYWwgbGFja3MgbmVjZXNzYXJ5IGZlYXR1cmVzLCBnaXZpbmcgdXAAdHJpZ2dlcmVkAHUAdW5hYmxlIHRvIGFjY2VzcyBtZXRob2Qgc2NyaXB0IGAlLjI1MHMnAHVuYWJsZSB0byBjbG9zZSBuZXcgb3B0aW9uIGZpbGUgYCUuMjUwcycAdW5hYmxlIHRvIGluc3RhbGwgbmV3IG9wdGlvbiBhcyBgJS4yNTBzJwB1bmFibGUgdG8gb3BlbiBjdXJyZW50IG9wdGlvbiBmaWxlIGAlLjI1MHMnAHVuYWJsZSB0byBvcGVuIG5ldyBvcHRpb24gZmlsZSBgJS4yNTBzJwB1bmFibGUgdG8gb3BlbiBvcHRpb24gZGVzY3JpcHRpb24gZmlsZSBgJS4yNTBzJwB1bmFibGUgdG8gcmVhZCBgJS4yNTBzJyBkaXJlY3RvcnkgZm9yIHJlYWRpbmcgbWV0aG9kcwB1bmFibGUgdG8gcmVhZCBtZXRob2Qgb3B0aW9ucyBmaWxlIGAlLjI1MHMnAHVuYWJsZSB0byBzdGF0IG9wdGlvbiBkZXNjcmlwdGlvbiBmaWxlIGAlLjI1MHMnAHVuYWJsZSB0byB3cml0ZSBuZXcgb3B0aW9uIHRvIGAlLjI1MHMnAHVua25vd24gYWN0aW9uIHN0cmluZyBgJS41MHMnAHVucGFja2VkIChub3Qgc2V0IHVwKQB1cGRhdGUgYXZhaWxhYmxlIGxpc3Qgc2NyaXB0AFByb2plY3QtSWQtVmVyc2lvbjogZHBrZyAxLjkuNApSZXBvcnQtTXNnaWQtQnVncy1UbzogZGViaWFuLWRwa2dAbGlzdHMuZGViaWFuLm9yZwpQT1QtQ3JlYXRpb24tRGF0ZTogMjAxMS0xMC0xNCAwNzoxMSswMjAwClBPLVJldmlzaW9uLURhdGU6IDIwMDgtMDUtMDUgMTM6MjArMDEwMApMYXN0LVRyYW5zbGF0b3I6IEJhcnQgQ29ybmVsaXMgPGNvYmFjb0Bza29sZWxpbnV4Lm5vPgpMYW5ndWFnZS1UZWFtOiBEdXRjaCA8ZGViaWFuLWwxMG4tZHV0Y2hAZGViaWFuLm9yZz4KTGFuZ3VhZ2U6IG5sCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0ClgtUG9lZGl0LUxhbmd1YWdlOiBEdXRjaAoACgolczogJXMKAAoKQmV3ZWVnIG1ldCBeUCBlbiBeTiwgY3Vyc29ydG9ldHNlbiwgYmVnaW5sZXR0ZXJzLCBvZiBjaWpmZXJzOwpEcnVrIG9wIDxlbnRlcj4gb20gc2VsZWN0aWUgdGUgYWN0aXZlcmVuLiAgXkwgdGVrZW50IGhldCBzY2hlcm0gb3BuaWV1dy4KCgAKClRvZWdhbmcgaXMgYWxsZWVuIGxlemVuOiBkZSBzZWxlY3RpZXMgd29yZGVuIG5pZXQgYmV3YWFyZCEACkRydWsgb3AgPGVudGVyPiBvbSBkb29yIHRlIGdhYW4uACAAICAtLSAlZCUlLCBkcnVrIG9wIAAgKGFsZmFiZXRpc2NoKQAgKGJlc2NoLiwgcHJpb3JpdGVpdCkAIChiZXNjaC4sIHNlY3RpZSkAIChvcCBiZXNjaGlrYmFhcmhlaWQpACAob3AgcHJpb3JpdGVpdCkAIChvcCBzZWN0aWUpACAob3Agc3RhdHVzKQAgKHN0YXR1cywgcHJpb3JpdGVpdCkAIChzdGF0dXMsIHNlY3RpZSkAIGxpamt0IG5pZXQgYmVzY2hpa2JhYXIgdGUgemlqbgoAIG1hcmtlZXI6Ky89Ly0ga29ydDp2IGh1bHA6PwAgbWFya2VlcjorLz0vLSBsYW5nOnYgaHVscDo/ACBvZiAAIGtvcnQ6diBodWxwOj8AIGxhbmc6diBodWxwOj8AIUJ1ZyEAJS0qcyAlcyVzJXM7ICAlcyAod2FzOiAlcykuICAlcwAlcyAlcyBwYWtrZXR0ZW4AJXMgJXMgcGFra2V0dGVuIGluIHNlY3RpZSAlcwAlcyAlcyBwYWtrZXR0ZW4gem9uZGVyIHNlY3RpZQAlcyB2b29yIG1lZXIAJXMgcGFra2V0dGVuIGluIHNlY3RpZSAlcwAlcyBwYWtrZXR0ZW4gem9uZGVyIHNlY3RpZQAlcyBvbSB0ZXJ1ZyB0ZSBnYWFuACogT3BsaWNodGVuOiBFZW4gcGFra2V0IGluIGRlIGxpanN0IHdvcmR0IG9wZ2VsaWNodC4gIEhldCBnZWVmdCBhYW4gb3AKICB3ZWxrKGUpIHBha2tldCh0ZW4pIGRlIGtub3BwZW4gYCsnLCBgLScgZW4gYF8nIGVmZmVjdCB6dWxsZW4gaGViYmVuLgoKKiBEZSBzY2hlaWRpbmdzbGlqbiBpbiBoZXQgbWlkZGVuIHZhbiBoZXQgc2NoZXJtIHRvb250IGVlbiBrb3J0ZQogIHVpdGxlZyB2YW4gZGUgc3RhdHVzIHZhbiBoZXQgb3BnZWxpY2h0ZSBwYWtrZXQsIG9mIGVlbiBvbXNjaHJpanZpbmcKICB2YW4gZGUgZ3JvZXAgZGllIGlzIG9wZ2VsaWNodC4gIEFscyB1IGRlIGJldGVrZW5pcyB2YW4gZWVuIGdlZ2V2ZW4KICBzdGF0dXN0ZWtlbiwga3VudCB1IG5hYXIgaGV0IHJlbGV2YW50ZSBwYWtrZXQgZ2FhbiBlbiBuYWFyIGRlCiAgc2NoZWlkaW5nc2xpam4ga2lqZW4sIG9mIGdlYnJ1aWsgZGUgdG9ldHMgYHYnIHZvb3IgZWVuIHVpdGdlYnJlaWRlCiAgd2VlcmdhdmUgKGRydWsgd2VlciBvcCBgdicgb20gdGVydWcgdGUgZ2FhbiBuYWFyIGRlIGtvcnRlIHdlZXJnYXZlKS4KCiogRGUgb25kZXJzdGUgaGVsZnQgdmFuIGhldCBzY2hlcm0gZ2VlZnQgbWVlciBpbmZvcm1hdGllIG92ZXIgaGV0CiAgb3BnZWxpY2h0ZSBwYWtrZXQgKGFscyBkYXQgZXIgc2xlY2h0cyBlZW4gaXMpLgoKICBIZXQga2FuIGVlbiB1aXRnZWJyZWlkZSBvbXNjaHJpanZpbmcgdmFuIGhldCBwYWtrZXQgemlqbiwgZGUgaW50ZXJuZQogIHBha2tldGJlc3R1cmluZ3MgZGV0YWlscyAob2Z3ZWwgdm9vciBkZSBnZcOvbnN0YWxsZWVyZGUgb2YgYmVzY2hpa2JhcmUKICB2ZXJzaWUgdmFuIGhldCBwYWtrZXQpLCBvZiBpbmZvcm1hdGllIG92ZXIKICBjb25mbGljdHMtL3ZlcmVpc3RlbnJlbGF0aWVzIG1ldCBoZXQgaHVpZGlnZSBwYWtrZXQgKGluIGRlCiAgY29uZmxpY3RzLS92ZXJlaXN0ZW5vcGxvc3NlcnMpLgoKICBHZWJydWlrIGRlIGBpJy10b2V0cyBvbSBkZSB3aXNzZWxlbiB0dXNzZW4gd2VlcmdhdmVuLCBlbiBgSScgb20gaGV0CiAgaW5mb3JtYXRpZXNjaGVybSB0ZSB2ZXJncm90ZW4gb2YgdmVyYmVyZ2VuLgoAPwBBZmtvcnRpbmcAQWZicmVrZW4gLSBiZcOraW5kaWdlbiB6b25kZXIgdmVyYW5kZXJpbmdlbiB0ZSBtYWtlbgBUb2VnYW5nc21ldGhvZGUgYCVzJy4AQWN0aWVzOgogIGFjY2VzcyB1cGRhdGUgc2VsZWN0IGluc3RhbGwgY29uZmlnIHJlbW92ZSBxdWl0CgoAQWxsZXMAQWxsZSBwYWtrZXR0ZW4AQXR0cmlidXRlczoKAEJlc2NoLnZlcgBCZXNjaGlrYmFhcgBCZXNjaGlrYmFyZSBpbmZvcm1hdGllIHVpdCAnY29udHJvbCctYmVzdGFuZGVuAEJlc2NoaWtiYXJlIHBha2tldHRlbiAobmlldCBnZcOvbnN0YWxsZWVyZCkATmlldC13ZXJrZW5kAE5pZXQtd2Vya2VuZGUgZ2XDr25zdGFsbGVlcmRlIHBha2tldHRlbgBLaWVzIGVlbiB0b2VnYW5nc21ldGhvZGUuAEtsZXVyZW46CgBDb25maWd1cmVlciBwYWtrZXR0ZW4gZGllIG5vZyBuaWV0IGdlY29uZmlndXJlZXJkIHppam4uAENvcHlyaWdodCAoQykgMTk5NC0xOTk2IElhbiBKYWNrc29uLgpDb3B5cmlnaHQgKEMpIDIwMDAsMjAwMSBXaWNoZXJ0IEFra2VybWFuLgoAV2lzc2VsIHR1c3NlbiBpbmZvcm1hdGllc2NoZXJtZW4ARGViaWFuIGAlcycgcGFra2V0YmVoZWVyLWZyb250ZW5kIHZlcnNpZSAlcy4KAEFmaGFua2VsaWpraGVpZHMtL2NvbmZsaWN0b3Bsb3NzZXIgLSBpbmxlaWRpbmcuCgpFZW4gb2YgbWVlciB2YW4gdXcga2V1emVzIGhlYmJlbiBlZW4gdmVyZWlzdGVuIG9mIGNvbmZsaWN0cHJvYmxlZW0Kb3BnZXJvZXBlbiAtIHNvbW1pZ2UgcGFra2V0dGVuIG1vZ2VuIGFsbGVlbiBnZcOvbnN0YWxsZWVyZCB3b3JkZW4gaW4gY29tYmluYXRpZQptZXQgYW5kZXJlLCBlbiBzb21taWdlIGNvbWJpbmF0aWVzIG1vZ2VuIG5pZXQgc2FtZW4gZ2XDr25zdGFsbGVlcmQgemlqbi4KClUga3Jpamd0IGVlbiBzdWJsaWpzdCBtZXQgYWxsZSBiZXRyb2trZW4gcGFra2V0dGVuIHRlIHppZW4uICBEZSBvbmRlcnN0ZSBoZWxmdCB2YW4gaGV0CnNjaGVybSBiZXZhdCBkZSByZWxldmFudGUgY29uZmxpY3RlbiBlbiB2ZXJlaXN0ZW47IGdlYnJ1aWsgYGknIG9tIHRlCndpc3NlbGVuIGRhYXJ0dXNzZW4sIGRlIHBha2tldG9tc2NocmlqdmluZ2VuIGVuIGRlIGludGVybmUgYmVzdHVyaW5nc2luZm8uCgpFZW4gcGFhciBgdm9vcmdlc3RlbGRlJyBwYWtrZXR0ZW4ga3VubmVuIGJlcmVrZW5kIHppam4sIGVuIGRlIGJlZ2lubWFya2VyaW5nZW4KemlqbiBvdmVyZWVua29tc3RpZyBpbmdlc3RlbGQsIHpvZGF0IHUgZ2V3b29uIG9wIFJldHVybiBrdW50IGRydWtrZW4gYWxzIHUgaGV0CmVyIG1lZSBlZW5zIGJlbnQuICBVIGt1bnQgZGUgdmVyYW5kZXJpbmcoZW4pIGFmYnJla2VuIGRpZSBkZSBwcm9ibGVtZW4gdmVyb29yLQp6YWFrdGVuLCBlbiB0ZXJ1Z2dhYW4gbmFhciBkZSBob29mZGxpanN0IGRvb3Igb3AgZGUgaG9vZmRsZXR0ZXIgYFgnIHRlIGRydWtrZW4uCgpVIGt1bnQgb29rIGRvb3IgZGUgbGlqc3QgYmV3ZWdlbiBlbiBkZSBtYXJrZXJpbmdlbiB2ZXJhbmRlcmVuIHpvZGF0IHplIG1lZXIKb3ZlcmVlbmtvbWVuIG1ldCB3YXQgdSB3aWx0LCBlbiB1IGt1bnQgbWlqbiBzdWdnZXN0aWVzIHZlcndlcnBlbiBtZXQgZGUgaG9vZmQtCmxldHRlcnMgYEQnIG9mIGBSJyAoemllIGh1bHBzY2hlcm0gb3ZlciB0b2V0c2VuKS4gIFUga3VudCBkZSBob29mZGxldHRlciBgUScKZ2VicnVpa2VuIG9tIGRlIGdldG9vbmRlIGxpanN0IGdlZm9yY2VlcmQgdGUgYWNjZXB0ZXJlbiwgaW4gaGV0IGdldmFsIGRhdCB1CmRlbmt0IGRhdCBoZXQgcHJvZ3JhbW1hIGhldCBtaXMgaGVlZnQuCgpEcnVrIG9wIFNwYXRpZSBvbSBodWxwIHRlIHZlcmxhdGVuIGVuIGRlIHN1YmxpanN0IGJpbm5lbiB0ZSBnYWFuOyBWZXJnZWV0IG9vayBuaWV0CmRhdCAnPycgZHJ1a2tlbiBqZSBuYWFyIGRlIGhlbHAgYnJlbmd0LgoAT21zY2hyaWp2aW5nAFNjaGVybSwgZGVlbCAxOiBwYWtrZXRsaWpzdCBlbiBzdGF0dXN0ZWtlbnMAU2NoZXJtLCBkZWVsIDI6IGxpanN0c2VsZWN0aWU7IGluZm9ybWF0aWVzY2hlcm0ARUlPTQBFT0Ygdm9vciBiZWdpbiBvcHRpZW5hYW0AYmVzdGFuZHNlaW5kZSB2b29yIHNhbWVudmF0dGluZwBiZXN0YW5kc2VpbmRlIGluIGluZGV4dGVrc3QAYmVzdGFuZHNlaW5kZSBpbiBvcHRpZW5hYW0AYmVzdGFuZHNlaW5kZSBpbiBzYW1lbnZhdHRpbmcgLSBvbnRicmVrZW5kZSBuaWV1d2UgcmVnZWwARm91dABGb3V0OiAAVmVya2xhcmluZwBFeHRyYQBHYSBuYWFyIGhldCBlaW5kIHZhbiBkZSBsaWpzdABHYSBuYWFyIGRlIHRvcCB2YW4gZGUgbGlqc3QASHVscCBpbmZvcm1hdGllIGlzIGJlc2NoaWtiYWFyIG9uZGVyIHRlIHZvbGdlbmRlIG9uZGVyd2VycGVuOgBIdWxwOiAASW1wAEJlbGFuZ3JpamsAR2XDr25zdC52ZXIASW5zdGFsbGVlciBwYWtrZXR0ZW4gb2Ygd2VyayBnZXdlbnN0ZSBwYWtrZXR0ZW4gYmlqLgBHZcOvbnN0YWxsZWVyZGUAR2XDr25zdGFsbGVlcmRlIGluZm9ybWF0aWUgdWl0ICdjb250cm9sJy1iZXN0YW5kZW4AR2XDr25zdGFsbGVlcmRlIHBha2tldHRlbgBHZcOvbnN0YWxsZWVyZD8AT25kZXJsaW5nZSByZWxhdGllcwBJbmxlaWRpbmcgaW4gc3VibGlqc3Qgdm9vciBvcGxvc3NlbiBjb25mbGljdC9hZmhhbmtlbGlqa2hlaWQASW5sZWlkaW5nIGluIHNjaGVybSB2b29yIG1ldGhvZGVzZWxlY3RpZQBJbmxlaWRpbmcgaW4gcGFra2V0dGVubGlqc3QASW5sZWlkaW5nIHRvdCBkZSBwYWtrZXR0ZW5saWpzdCBzZWxlY3RpZSAoYWxsZWVuLWxlemVuKQBPbmdlbGRpZ2UgJXMgJyVzJwoAVG9ldHNiaW5kaW5nZW4AVG9ldHNlbgBUb2V0c2FhbnNsYWdlbiB2b29yIG1ldGhvZGVzZWxlY3RpZQBNYWFrIG9wbGljaHRpbmcgbWluZGVyIHNwZWNpZmllawBNYWFrIG9wbGljaHRpbmcgbWVlciBzcGVjaWZpZWsATWFya2VlciBwYWtrZXQodGVuKSB2b29yIGRlaW5zdGFsbGF0aWUgZW4gd2lzc2VuAE1hcmtlZWVyIHBha2tldCh0ZW4pIHZvb3IgZGVpbnN0YWxsYXRpZQBNYXJrZWVyIHBha2tldCh0ZW4pIHZvb3IgaW5zdGFsbGF0aWUAR2V3ZW5zdABCZXdlZ2luZ3N0b2V0c2VuOiBWb2xnZW5kZS9Wb3JpZ2UsIEJlZ2luL0VpbmRlLCBPbWxhYWcvT21ob29nLCBBY2h0ZXItL1Zvb3J1aXQ6CiBQaWpsdC1vbWxhYWcsIGogICAgUGlqbHQtb21ob29nLCBrICAgYmV3ZWVnIHNlbGVjdGllCiBOLFBhZ2UtZG93bixTcGF0aWUgICBQLFBhZ2UtdXAsQmFja3NwYWNlICAgdmVyc2NodWlmIGxpanN0IG1ldCAxIHBhZ2luYQogXm4gICAgICAgICAgICAgICAgICAgICBecCAgICAgICAgICAgICAgICAgICAgICAgdmVyc2NodWlmIGxpanN0IG1ldCAxIHJlZ2VsCiB0LCBIb21lICAgICAgICAgICAgIGUsIEVuZCAgICAgICAgICAgICAgICAgZ2EgbmFhciBiZWdpbi9laW5kZSBsaWpzdAogdSAgICAgICAgICAgICAgICAgICAgICAgIGQgICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNjaHVpZiBpbmZvIG1ldCAxIHBhZ2luYQogXnUgICAgICAgICAgICAgICAgICAgICBeZCAgICAgICAgICAgICAgICAgICAgICAgdmVyc2NodWlmIGluZm8gbWV0IDEgcmVnZWwKIEIsIFBpamwtTGlua3MgICAgICAgIEYsIFBpamwtUmVjaHRzICAgICAgdmVyc2NodWlmIHNjaGVybSBtZXQgMS8zCiBeYiAgICAgICAgICAgICAgICAgICAgIF5mICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2NodWlmIHNjaGVybSBtZXQgMSB0ZWtlbgoKTWFya2VlciBwYWtrZXR0ZW4gdm9vciBsYXRlcmUgYmVoYW5kZWxpbmc6CiArIEluc2VydCAgaW5zdGFsbGVlci93ZXJrIGJpaiAgICAgPSwgSCAgYmV2cmllcyBodWlkaWdlIHN0YWF0CiAtICBEZWxldGUgIHZlcndpamRlciAgICAgICAgICAgICAgIDosIEcgIG9udC12YXN0OiBiaWp3ZXJrZW4vbmlldCBpbnN0YWxsZXJlbgpfICB2ZXJ3aWpkZXIgJiB3aXNzZW4gY29uZmlndXJhdGllCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGl2ZXJzZW46CkVuZCwgc3RvcHBlbiwgb3ZlcnNjaHJpanZlbiAobGV0IG9wIGhvb2ZkbGV0dGVycykgICA/LCBGMSBodWxwIChvb2sgSGVscCkKIEVudGVyICBCZXZlc3RpZywgZWluZGUgKGNvbnRyb2xlIGFmaGFua2VsaWpraGVpZCkgIGksIEkgIHdpc3NlbCBpbmZvIHNjaGVybWVuCiBRICAgIEJldmVzdGlnLCBlaW5kZSAoZm9yY2VlciBhZmhhbmtlbGlqa2hlaWQpICAgICAgIG8sIE8gIHdpc3NlbCBzb3J0ZWVyIG9wdGllcwogWCwgRXNjIEVpbmRlLCB2ZXJhbmRlcmluZ2VuIGdhYW4gdmVybG9yZW4gICAgICAgICAgdiwgViAgd2lzc2VsIHN0YXR1cyBvcHRpZXMKICBSICAgIFRlcnVnIG5hYXIgYmVnaW5zaXR1YXRpZSAgICAgICAgICAgICAgICAgICAgICAgXmwgICBvcG5pZXV3IHRla2VuZW4KICBVICAgIFpldCBhbGxlcyBvcCB2b29yZ2VzdGVsZGUgc3RhdHVzICAgICAgICAgLyAgICB6b2VrZW4gKEVudGVyPWVpbmRlKQogIEQgICAgWmV0IGFsbGVzIG9wIGRpcmVjdCBnZXZyYWFnZGUgc3RhdHVzICAgXCAgICBoZXJoYWFsIHpvZWtlbgoAQmV3ZWdpbmdzdG9ldHNlbjogVm9sZ2VuZGUvVm9yaWdlLCBCZWdpbi9FaW5kLCBPcC9OZWVyLCBWb29ydWl0L0FjaHRlcnVpdDoKICBuLCBQaWpsdC1vbWxhYWcgICBwLCBQaWpsdGplLW9taG9vZyAgICAgdmVycGxhYXRzIG1hcmtlcmluZwogIE4sIFBhZ2UtZG93biwgU3BhdGllICBQLCBQYWdlLXVwLCBCYWNrc3BhY2UgICB2ZXJzY2h1aWYgbGlqc3QgbWV0IDEgcGFnaW5hCiAgXm4gICAgICAgICAgICAgICAgICAgICBecCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2NodWlmIGxpanN0IG1ldCAxIHJlZ2VsCiAgdCwgSG9tZSAgICAgICAgICAgICBlLCBFbmQgICAgICAgICAgICAgICAgICAgICAgIG5hYXIgYmVnaW4vZWluZGUgbGlqc3QKICB1ICAgICAgICAgICAgICAgICAgICAgICAgZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2NodWlmIGluZm8gbWV0IDEgcGFnaW5hCiAgXnUgICAgICAgICAgICAgICAgICAgIF5kICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2NodWlmIGluZm8gbWV0IDEgcmVnZWwKICBCLCBQaWpsLWxpbmtzICAgICAgICBGLCBQaWpsLXJlY2h0cyAgICAgICAgICAgICAgcGFuIGRpc3BsYXkgYnkgMS8zIHNjcmVlbgogIF5iICAgICAgICAgICAgICAgICAgICBeZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYW4gZGlzcGxheSBieSAxIGNoYXJhY3RlcgooRGl0IHppam4gZGUgemVsZmRlIHRvZXRzZW4gYWxzIGluIGhldCBzY2hlcm0gbWV0IHBha2tldGxpanN0LikKCkVpbmRlOgogUmV0dXJuLCBFbnRlciAgICBzZWxlY3RlZXIgZGV6ZSBtZXRob2RlIGVuIGdhIG5hYXIgemlqbiBjb25maWd1cmF0aWVkaWFsb29nCiB4LCBYICAgICAgICAgICAgIGJlw6tpbmRpZyB6b25kZXIgdmVyYW5kZXJpbmdlbiBvZiBpbnN0ZWxsZW4gdmFuIGluc3RhbGxhdGllbWV0aG9kZQoKRGl2ZXJzOgogID8sIEhlbHAsIEYxICAgdnJhYWcgaHVscAogXmwgICAgICAgICAgICAgICAgICBzY2hlcm0gb3BuaWV1dyB0ZWtlbmVuCiAgLyAgICAgICAgICAgICAgICAgICB6b2VrZW4gKGFsbGVlbiBlbnRlciB2b29yIGFubnVsZXJlbikKICBcICAgICAgICAgICAgICAgICAgbGFhdHN0ZSB6b2Vrb3BkcmFjaHQgaGVyaGFsZW4KAEdhIG9tbGFhZwBHYSBvbWhvb2cATmlldXcATmlldXcgYmVzY2hpa2JhcmUgcGFra2V0dGVuAEdlZW4gb21zY2hyaWp2aW5nIGJlc2NoaWtiYWFyLgBHZWVuIHVpdGxlZyBiZXNjaGlrYmFhci4AQmxhbmNvLWtsZXVyIHNwZWNpZmljYXRpZQoAVmVyb3VkZXJkZSBlbiBsb2thbGUgcGFra2V0dGVuIG9wIHN5c3RlZW0AVmVyb3VkZXJkL2xva2FhbABIdWlkaWcAT3B0AE9wdGlvbmVlbABPcHRpZXM6CiAgLS1hZG1pbmRpciA8bWFwPiAgICAgR2VicnVpayA8bWFwPiBpLnAudi4gJXMuCiAgLS1leHBlcnQgICAgICAgICAgICAgICAgICAgICAgWmV0IGV4cGVydC1tb2R1cyBhYW4uCiAgLS1kZWJ1ZyA8YmVzdGFuZD4gfCAtRDxmaWxlPiAgWmV0IGRlYnVnZ2VuIGFhbiwgc3R1dXIgdWl0dm9lciBuYWFyIDxiZXN0YW5kPi4KICAtLWNvbG91ciB8IC0tY29sb3Igc2NoZXJtZGVlbDpbdm9vcmdyb25kXSxbYWNodGVyZ3JvbmRdWzphdHRyWythdHRyKy4uXV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0ZWwgc2NoZXJta2xldXJlbiBpbi4KCgBQYWtrZXQARHJ1ayBvcCA8ZW50ZXI+IG9tIGRvb3IgdGUgZ2Fhbi4KACc/JyBkcnVra2VuIGdlZWZ0IGhldCBoZWxwbWVudSwgJy4nIGdlZWZ0IGhldCB2b2xnZW5kIG9uZGVyd2VycCwgJ3NwYXRpZScgdmVybGFhdCBoZXQgaGVscG1lbnUuAERydWsgb3AgZWVuIHZhbiBkZSB0b2V0c2VuIGhpZXJib3ZlbiwgJ1NwYXRpZScgb2YgJ3EnIG9tIGRlIGhlbHAgYWYgdGUgc2x1aXRlbiwKICBvZiBgLicgKHB1bnQpIG9tIGFsbGUgcGFnaW5hJ3MgZWVuIHZvb3IgZWVuIHRlIGxlemVuLiAAVm9vcnJhbmcAR2V3aXN0AEdld2lzdGUgb2Ygbm9vaXQgZ2XDr25zdGFsbGVlcmRlIHBha2tldHRlbgBkc2VsZWN0IGFmc2x1aXRlbi4AQmXDq2luZGlnZW4gem9uZGVyIGRlIHRvZWdhbmdzbWV0aG9kZSB0ZSB2ZXJhbmRlcmVuAEJlw6tpbmRpZ2VuLCBtZXQgYmV2ZXN0aWdpbmcgem9uZGVyIGNvbnRyb2xlAEJlw6tpbmRpZ2VuLCBtZXQgYmV2ZXN0aWdpbmcgZW4gY29udHJvbGUgYWZoYW5rZWxpamtoZWlkAEJlw6tpbmRpZ2VuLCB6b25kZXIgY29uZmxpY3QvdmVyZWlzdGVuIHN1Z2dlc3RpZXMgdGUgYWNjZXB0ZXJlbgBIRVJJTlNUQUxMQVRJRQBTY2hlcm0gb3BuaWV1dyB0ZWtlbmVuAFZlcndpamRlciBvbmdld2Vuc3RlIHByb2dyYW1tYXR1dXIuAFZlcndpamRlcmQAVmVyd2lqZGVyZGUgZW4gaW50dXNzZW4gdmVyb3VkZXJkZSBwYWtrZXR0ZW4AVmVyd2lqZGVyZGUgcGFra2V0dGVuIChtYWFyIGNvbmZpZ3VyYXRpZSBzdGFhdCBlciBub2cpAEhlcmhhYWwgbGFhdHN0ZSB6b2Vrb3BkcmFjaHQuAFJlcQBWcmFhZyBodWxwIG9wICh3aXNzZWxlbiB2YW4gaHVscHNjaGVybWVuKQBWZXJ0ZWwgd2Vsa2UgcGFra2V0dGVuIHUgb3AgdXcgc3lzdGVlbSB3aWx0LgBWZXJlaXN0AFRlcnVnZ2FhbiBuYWFyIGRlIG1vbWVudGVlbCBnZcOvbnN0YWxsZWVyZGUgc3RhdHVzIHZvb3IgYWxsZSBwYWtrZXR0ZW4AVGVydWdnYWFuIG5hYXIgZGlyZWN0IGdldnJhYWdkZSBzdGF0dXMgdm9vciBhbGxlIHBha2tldHRlbgBUZXJ1Z2dhYW4gbmFhciBkZSBvdWRlIHN0YWF0IHZvb3IgYWxsZSBwYWtrZXR0ZW4AVGVydWdnYWFuIG5hYXIgdm9vcmdlc3RlbGRlIHN0YXR1cyB2b29yIGFsbGUgcGFra2V0dGVuAFNjaGVybWRlbGVuOgoAU2NodWlmIHRlcnVnIGRvb3IgaHVscC9pbmZvcm1hdGllAFNjaHVpZiBkb29yIGRlIGh1bHAvaW5mb3JtYXRpZSBtZXQgMSByZWdlbABTY2h1aWYgdGVydWcgZG9vciBkZSBsaWpzdABTY2h1aWYgdGVydWcgZG9vciBkZSBsaWpzdCBtZXQgMSByZWdlbABTY2h1aWYgZG9vciBodWxwL2luZm9ybWF0aWUAU2NodWlmIGRvb3IgZGUgaHVscC9pbmZvcm1hdGllIG1ldCAxIHJlZ2VsAFNjaHVpZiBkb29yIGRlIGxpanN0AFNjaHVpZiBkb29yIGRlIGxpanN0IG1ldCAxIHJlZ2VsAFpvZWtlbiBuYWFyID8gAFpvZWsgZWVuIHBha2tldCB3YWFydmFuIGRlIG5hYW0gZWVuIHRla2VucmVla3MgYmV2YXQAU2VjdGllAFNlbGVjdGVlciBodWlkaWdlIHRvZWdhbmdzbWV0aG9kZQBaZXQgdXcgVEVSTSB2YXJpYWJlbGUgZ29lZCwgZ2VicnVpayBlZW4gYmV0ZXJlIHRlcm1pbmFsLApvZiBkb2UgaGV0IG1ldCBkZSBwZXItcGFra2V0LWJlaGVlcnRvb2wgJXMuCgBTdGFuZGFhcmQAU3RkAFdpc3NlbCBzb3J0ZWVydm9sZ29yZGUgcHJpb3JpdGVpdC9zZWN0aWUAVGVybWluYWwgbGlqa3QgZGUgY3Vyc29yIG5pZXQgdGUga3VubmVuIGJlc3R1cmVuLgoAVGVybWluYWwgbGlqa3Qgb3BsaWNodGVuIG5pZXQgdGUgb25kZXJzdGV1bmVuLgoARGUgcmVnZWwgZGllIHUgaGVlZnQgZ2VzZWxlY3RlZXJkIHJlcHJlc2VudGVlcnQgbWVlcmRlcmUgcGFra2V0dGVuOyBhbHMgdSB2cmFhZ3Qgb20gdGUgaW5zdGFsbGVyZW4sIHZlcndpamRlcmVuLCB2YXN0aG91ZGVuLCBlbnouLCBpcyBkaXQgdmFuIHRvZXBhc3Npbmcgb3AgYWxsZSBwYWtrZXR0ZW4gd2FhciBkaXQgY3JpdGVyaWEgb3AgdmFuIHRvZXBhc3NpbmcgaXMuCgpXYW5uZWVyIHUgZGUgc2VsZWN0aWUgdmVycGxhYXRzdCBuYWFyIGRlIHJlZ2VsIHZvb3IgZWVuIGJlcGFhbGQgcGFra2V0LCBrcmlqZ3QgdSBkZSBpbmZvcm1hdGllIG92ZXIgZGF0IHBha2tldCB0ZSB6aWVuLgpVIGt1bnQgYG8nIGVuIGBPJyBnZWJydWlrZW4gb20gZGUgc29ydGVlcnZvbGdvcmRlIHRlIHZlcmFuZGVyZW4gd2FhcmRvb3IgdSBkZSBtb2dlbGlqa2hlaWQga3Jpamd0IG9tIHBha2tldHRlbiBkZSBtYXJrZXJlbiBpbiB2ZXJzY2hpbGxlbmRlIGdyb2VwZXJpbmdlbi4ARGUgYm92ZW5zdGUgaGVsZnQgdmFuIGhldCBzY2hlcm0gZ2VlZnQgZWVuIGxpanN0IHZhbiBwYWtrZXR0ZW4uICBWb29yIGllZGVyIHBha2tldAp2aWVyIGtvbG9tbWVuIG1ldCBkZSBodWlkaWdlIHN0YXR1cyBvcCBoZXQgc3lzdGVlbSBlbiBtYXJrZXJpbmcuICBJbiBkZSBrb3J0ZQptb2R1cyAoZ2VicnVpayBgdicgb20gdGUgd2lzc2VsZW4pIHppam4gZGl0IGVua2VsZSB0ZWtlbnMsIGxpbmtzIG5hYXIgcmVjaHRzOgoKRm91dHZsYWc6IFNwYXRpZSAtIGdlZW4gZm91dCAobWFhciBwYWtrZXQga2FuIGthcG90IHppam4gLSB6aWUgaGllcm9uZGVyKQogICAgICAgICAgICAgICBgUicgIC0gZXJuc3RpZ2UgZm91dCBiaWogaW5zdGFsbGF0aWUsIGhlcmluc3RhbGxhdGllIG5vZGlnCiBHZcOvbnN0YWxsZWVyZDogICAgICBTcGF0aWUgLSBuaWV0IGdlw69uc3RhbGxlZXJkOwogICAgICAgICAgICAgICAgICAgICAgYConICAgLSBnZcOvbnN0YWxsZWVyZDsKICAgICAgICAgICAgICAgICAgICAgIGAtJyAgIC0gbmlldCBnZcOvbnN0YWxsZWVyZCBtYWFyIGNvbmZpZyBiZXN0YWF0IG5vZzsKICBwYWtrZXR0ZW4gbWV0IGRlemUgeyBgVScgICAtIHVpdGdlcGFrdCBtYWFyIG5vZyBuaWV0IGdlY29uZmlndXJlZXJkOwogIHN0YXR1c3NlbiB6aWpuIG5pZXQgICAgIHsgYEMnICAgLSBoYWxmZ2Vjb25maWd1cmVlcmQgKGVyIGdpbmcgaWV0cyBmb3V0KTsKICAoaGVsZW1hYWwpIGdvZWQgICAgICAgIHsgYEknICAgLSBoYWxmZ2XDr25zdGFsbGVlcmQgKGVyIGdpbmcgaWV0cyBmb3V0KS4KICBnZcOvbnN0YWxsZWVyZCAgICAgICAgICAgICAgeyBgVycsYHQnIC0gdHJpZ2dlcnMgd2FjaHRlbiBvZiB6aWpuIHBlbmRpbmcuCiBPdWRlIG1hcmtlcmluZzogd2F0IGVyIGdldnJhYWdkIHdhcyB2b29yZGF0IGRlemUgbGlqc3QgdmVyc2NoZWVuOwogTWFya2VyaW5nOiB3YXQgZ2V2cmFhZ2Qgd29yZHQgdm9vciBkaXQgcGFra2V0OgogIGAqJzogZ2VtYXJrZWVyZCB2b29yIGluc3RhbGxhdGllIG9mIGJpandlcmtlbjsKICBgLSc6IGdlbWFya2VlcmQgdm9vciB2ZXJ3aWpkZXJpbmcsIG1hYXIgY29uZmlnIHphbCBhY2h0ZXJibGlqdmVuOwogIGA9JzogdmFzdGdlaG91ZGVuOiBwYWtrZXQgd29yZHQgbmlldCBiZWhhbmRlbGQ7CiAgYF8nOiBnZW1hcmtlZXJkIHZvb3IgdG90YWxlIHZlcndpamRlcmluZyAtIG9vayBjb25maWd1cmF0aWU7CiAgYG4nOiBwYWtrZXQgaXMgbmlldXcgZW4gbW9ldCBub2cgZWVuIG1hcmtlcmluZyBrcmlqZ2VuLgoKT29rIHRlIHppam4gemlqbiBkZSBQcmlvcml0ZWl0LCBTZWN0aWUsIG5hYW0sIGdlw69uc3RhbGxlZXJkZSBlbiBiZXNjaGlrYmFyZQp2ZXJzaWVudW1tZXJzIChzaGlmdC1WIG9tIHRlIHRvbmVuL3ZlcmJlcmdlbikgZW4gZWVuIGtvcnRlIG9tc2NocmlqdmluZy4KAFR5cGUgZHNlbGVjdCAtLWhlbHAgdm9vciBodWxwLgBPbmdlY2xhc3NpZmljZWVyZABVcC10by1kYXRlIGdlw69uc3RhbGxlZXJkZSBwYWtrZXR0ZW4AVXAtdG8tZGF0ZQBXZXJrIGRlIGxpanN0IG1ldCBwYWtrZXR0ZW4gYmlqLCBpbmRpZW4gbW9nZWxpamsuAEJpamdld2Vya3QAQmlqZ2V3ZXJrdGUgcGFra2V0dGVuIChuaWV1d2UgdmVyc2llIGlzIGJlc2NoaWtiYWFyKQBHZWJydWlrOiAlcyBbPG9wdGllPiAuLi5dIFs8YWN0aWU+IC4uLl0KCgBXZWxrb20gYmlqIGRlIGhvb2ZkcGFra2V0bGlqc3QuCgpVIGtyaWpndCB6b21ldGVlbiBlZW4gbGlqc3QgdGUgemllbiB2YW4gcGFra2V0dGVuIGRpZSBnZcOvbnN0YWxsZWVyZCBvZiBiZXNjaGlrLQpiYWFyIHppam4gdm9vciBpbnN0YWxsYXRpZS4gT21kYXQgdSBuaWV0IGRlIGJlbm9kaWdkZSByZWNodGVuIGhlZWZ0IG9tIGRlIApwYWtrZXRzdGF0dXMgdGUgdmVyYW5kZXJlbiwgYmV2aW5kdCB1IHppY2ggaW4gZGUgYWxsZWVuLWxlemVuIG1vZHVzLiBVIGt1bnQgCmRlIGxpanN0IGJla2lqa2VuIG0uYi52LiBkZSBjdXJzb3J0b2V0c2VuKHppZSBoZXQgJ3RvZXRzYWFuc2xhZ2VuJyBoZWxwc2NoZXJtKQpkZSBzdGF0dXMgdmFuIHBha2tldHRlbiBuYWdhYW4sIGVuIGluZm9ybWF0aWUgb3ZlciBkZXplIHBha2tldHRlbiBuYWxlemVuLgoKVSBrdW50IGJlc3QgZGUgbGlqc3QgbWV0IHRvZXRzYWFuc2xhZ2VuIGVuIGRlIHVpdGxlZyBvdmVyIGRlIHdlZXJnYXZlIGRvb3ItIApsZXplbi4gRXIgaXMgdmVlbCBvbi1saW5lIGh1bHAgYmVzY2hpa2JhYXIsIGdlbGlldmUgZGFhciBkdXMgZ2VicnVpayB2YW4gdGUgCm1ha2VuISAgRHJ1ayBvcCBvbSBoZXQgZXZlbiB3ZWxrIG1vbWVudCBvcCAnPycgIG9tIGhldCBoZWxwc2NoZXJtIHRlIGJla29tZW4KCkFscyB1IGtsYWFyIGJlbnQgbWV0IGtpamtlbiwgZHJ1ayBvcCAnUScgb2YgJ2VudGVyJyBvbSBhZiB0ZSBzbHVpdGVuLgoKRHJ1ayBvcCAnc3BhdGllJyBvbSBkZSBoZWxwIHRlIHZlcmxhdGVuIGVuIGRlIGxpanN0IHRlIGJla2lqa2VuLgoAV2Vsa29tIGJpaiBkZSBob29mZHBha2tldGxpanN0LgoKVSBrcmlqZ3Qgem9tZXRlZW4gZWVuIGxpanN0IHRlIHppZW4gdmFuIHBha2tldHRlbiBkaWUgZ2XDr25zdGFsbGVlcmQgb2YgYmVzY2hpay0KYmFhciB6aWpuIHZvb3IgaW5zdGFsbGF0aWUuICBVIGt1bnQgZG9vciBkZSBsaWpzdCBoZWVuIGxvcGVuIG1ldCBkZSBjdXJzb3J0b2V0c2VuLApwYWtrZXR0ZW4gbWFya2VyZW4gb20gdGUgaW5zdGFsbGVyZW4gKG1ldCBgKycpIG9mIGRlaW5zdGFsbGVyZW4gKG1ldCBgLScpLgpQYWtrZXR0ZW4ga3VubmVuIGFsbGVlbiBvZiBpbiBncm9lcGVuIGdlbWFya2VlcmQgd29yZGVuOyBhYW52YW5rZWxpamsgenVsdCB1CnppZW4gZGF0IGRlIHJlZ2VsIG1ldCBgQWxsZSBwYWtrZXR0ZW4nIGdlc2VsZWN0ZWVyZCBpcy4KYCsnLCBgLScsIGVuIGRlcmdlbGlqa2Ugd2Vya2VuIG9wIGFsbGUgcGFra2V0dGVuIG9tc2NocmV2ZW4gZG9vciBkZSBvcGdlbGljaHRlCnJlZ2VsLiAKU29tbWlnZSBrZXV6ZXMgenVsbGVuIGNvbmZsaWN0ZW4gb2YgdmVyZWlzdGVucHJvYmxlbWVuIHZlcm9vcnpha2VuOyB1CnppZXQgZGFuIGVlbiBsaWpzdCB2YW4gcmVsZXZhbnRlIHBha2tldHRlbiwgem9kYXQgdSBoZXQgcHJvYmxlZW0ga3VudCBvcGxvc3Nlbi4KClUga3VudCBiZXN0IGRlIGxpanN0IG1ldCBzbmVsdG9ldHNlbiBlbiBkZSB1aXRsZWcgb3ZlciBkZSB3ZWVyZ2F2ZSBnb2VkIApkb29ybGV6ZW4uIEVyIGlzIGVlbiBncm90ZSBob2V2ZWVsaGVpZCBvbi1saW5lIGhlbHAgYmVzY2hpa2JhYXIsIG1hYWsgaGllciBkdXMKZ2VicnVpayB2YW4hIFUga29tdCBvcCBlbGsgbW9tZW50IGJpaiBkZSBoZWxwIGRvb3IgJz8nIHRlIGRydWtrZW4uCkFscyB1IHRldnJlZGVuIGJlbnQgbWV0IGRlIGxpanN0IG1vZXQgdSBvcCBFbnRlciBkcnVra2VuIG9tIGRlIHZlcmFuZGVyaW5nZW4KdGUgYmV2ZXN0aWdlbiwgb2YgJ1gnIG9tIGRlIGxpanN0IHRlIHZlcmxhdGVuIHpvbmRlciBhYW5wYXNzaW5nZW4gdWl0IHRlIHZvZXJlbi4KRWVuIGxhYXRzdGUgY29udHJvbGUgb3AgY29uZmxpY3RlbiBlbiB2ZXJlaXN0ZW4gd29yZHQgdWl0Z2V2b2VyZCAtIG9vayBoaWVyIGt1bnQKIHUgbm9nIGVlbiBsaWpzdCBrcmlqZ2VuLgoKRHJ1ayBvcCBTcGF0aWUgb20gaHVscCB0ZSB2ZXJsYXRlbiBlbiBkZSBiaW5uZW4gdGUgZ2Fhbi4KAFh0cgBbVF1vZWdhbmcAW0Ndb25maWd1cmVyZW4AW0ldbnN0YWxsZXJlbgBbRV1pbmRlAFtWXWVyd2lqZGVyZW4AW1NdZWxlY3RlZXIAW0JdaWp3ZXJrZW4AW25pZXQgZ2Vib25kZW5dAFtvbmJlazogJWRdAHQAd2FjaHQgb3Agb3AgdmVyd2Vya2luZyB2YW4gdHJpZ2dlcnMAYlVHAGJyZWVrcHVudGVuAGMAa2xldXIAa2xldXJhdHRyaWJ1dXQAaXMgaW4gc3RyaWpkIG1ldABrb24gZGVidWdiZXN0YW5kIGAlLjI1NXMnIG5pZXQgb3BlbmVuCgBoZWVmdCBhbHMgdmVyZWlzdGUAZG91cGRhdGUgaXMgbWlzbHVrdABkb3VwZGF0ZSBpcyBTSUdXSU5DSCBhZmhhbmRlbGluZyBpcyBtaXNsdWt0AGRzZWxlY3QgLSBiZWtpamtlbiBwYWtrZXRzdGF0dXMAZHNlbGVjdCAtIGxpanN0IHZhbiB0b2VnYW5nc21ldGhvZGVuAGRzZWxlY3QgLSBob29mZHBha2tldHRlbmxpanN0AGRzZWxlY3QgLSByZWN1cnNpZXZlIHBha2tldHRlbmxpanN0AGRzZWxlY3QgZW4gZHBrZyBrdW5uZW4gYXV0b21hdGlzY2hlIGluc3RhbGxhdGllIGFhbiwgZG9vciBkZSB0ZQppbnN0YWxsZXJlbiBwYWtrZXRiZXN0YW5kZW4gb3AgdGUgaGFsZW4gdmFuIGVlbiBhYW50YWwgbW9nZWxpamtlCnBsYWF0c2VuLgoKRGV6ZSBsaWpzdCBnZWVmdCB1IGRlIG1vZ2VsaWpraGVpZCBvbSBlZW4gdmFuIGRlemUgaW5zdGFsbGF0aWVtZXRob2Rlcwp0ZSBraWV6ZW4uCgpCZXdlZWcgZGUgbWFya2VyaW5nIG5hYXIgZGUgZ2V3ZW5zdGUgbWV0aG9kZSBlbiBkcnVrIG9wIEVudGVyLiAgVSB6dWx0CmRhbiBpbmZvcm1hdGllIG1vZXRlbiBvcGdldmVuIHZvb3IgZGUgaW5zdGFsbGF0aWUuCgpBbHMgdSBkZSBtYXJrZXJpbmcgYmV3ZWVndCB6YWwgZWVuIG9tc2NocmlqdmluZyB3b3JkZW4gZ2VnZXZlbiB2YW4gZGllCm1ldGhvZGUgaW4gZGUgb25kZXJzdGUgaGVsZnQgdmFuIGhldCBzY2hlcm0uCgpBbHMgdSB3aWx0IG9waG91ZGVuIHpvbmRlciBpZXRzIHRlIHZlcmFuZGVyZW4ga3VudCB1IGRlIGB4JyB0b2V0cwpnZWJydWlrZW4gaW4gZGUgbGlqc3QgdmFuIG1ldGhvZGVuLgoKRWVuIHZvbGxlZGlnZSBsaWpzdCBtZXQgdG9ldHNlbiBpcyBiZXNjaGlrYmFhciBkb29yIG51IG9wIGBrJyB0ZQpkcnVra2VuLCBvZiB2YW51aXQgaGV0IGh1bHBtZW51IGRhdCB1IGt1bnQgYmVyZWlrZW4gbWV0IGA/Jy4KAHZlcmJldGVydABmb3V0IGJpaiBsZXplbiB2YW4gYmVzdGFuZCBtZXQgbWV0aG9kZW5vcHRpZXMgYCUuMjUwcycAZm91dCBiaWogbGV6ZW4gdmFuIGJlc3RhbmQgbWV0IG9wdGllYmVzY2hyaWp2aW5uZ2VuIGAlLjI1MHMnAGZvdXQgaW4gcmVndWxpZXJlIGV4cHJlc3NpZQBrb24gYmV2ZXN0aWdpbmcgdmFuIHByb2dyYW1tYWZvdXQtYmVyaWNodCBuaWV0IGxlemVuAGZvdXQgYmlqIGxlemVuIHZhbiB0b2V0c2VuYm9yZCBpbiBodWxwAGZvdXQgYmlqIGxlemVuIG9wdGllYmVzdGFuZCBgJS4yNTBzJwBrb24ga2xldXJwYXJlbiBuaWV0IHJlc2VydmVyZW4Aa29uIFNJR1dJTkNIIG5pZXQgYmxva2tlcmVuAGtvbiBsaWpzdGdlYmllZCBuaWV0IGFhbm1ha2VuAGtvbiBrb3BnZWJpZWQgbmlldCBhYW5tYWtlbgBrb24gaW5mb2dlYmllZCBuaWV0IGFhbm1ha2VuAGtvbiB2cmFnZW52ZW5zdGVyIG5pZXQgYWFubWFrZW4Aa29uIHN0YXR1c2dlYmllZCBuaWV0IGFhbm1ha2VuAGtvbiB0aXRlbHZlbnN0ZXIgbmlldCBhYW5tYWtlbgBrb24gd2hhdGluZm8gdmVuc3RlciBuaWV0IGFhbm1ha2VuAGtvbiBvdWRlIFNJR1dJTkNIIGFjdGllIG5pZXQgb3B2cmFnZW4Aa29uIG91ZCBzaWduYWFsbWFza2VyIG5pZXQgb3B2cmFnZW4AZ2V0Y2ggaW4gaG9vZmRtZW51IGlzIG1pc2x1a3QAa29uIFNJR1dJTkNIIG5pZXQgb3BuaWV1dyBibG9ra2VyZW4Aa29uIGJlc3RhbmQgbWV0IG9wdGllYmVzY2hyaWp2aW5nZW4gYCUuMjUwcycgbmlldCBsZXplbgBrb24gb3VkZSBTSUdXSU5DSCBhY3RpZSBuaWV0IGhlcnN0ZWxsZW4Aa29uIG91ZCBzaWduYWFsbWFza2VyIG5pZXQgaGVyc3RlbGxlbgBrb24gbmlldXdlIFNJR1dJTkNIIGFjdGllIG5pZXQgaW5zdGVsbGVuAGtvbiBTSUdXSU5DSCBuaWV0IGRlYmxva2tlcmVuAGdldGNoIGlzIG1pc2x1a3QAaGFsZiBnZcOvbnN0YWxsZWVyZABiZWhvdWRlbgBpAGluZGV4dGVrc3QgdGUgbGFuZwBpbnN0YWxsZWVyAGluc3RhbGxhdGllc2NyaXB0AGdlw69uc3RhbGxlZXJkAG9uZ2VsZGlnZSB6b2Vrb3B0aWUgb3BnZWdldmVuAGlvY3RsKFRJT0NHV0lOU1opIG1pc2x1a3QAbWVudQBtZXRob2RlIGAlLjI1MHMnIGhlZWZ0IGVlbiB0ZSBsYW5nZSBuYWFtICglZCA+ICVkIHRla2VucykAbmlldXcgcGFra2V0AG5pZXV3ZSByZWdlbCB2b29yIGJlZ2luIG9wdGllbmFhbQBuaWV1d2UgcmVnZWwgdm9vciBzYW1lbnZhdHRpbmcAbmlldC1hbGZhbnVtZXJpZWsgdGVrZW4gaW4gb3B0aWVuYWFtAG5pZXQtY2lqZmVycyB3YWFyIGVlbiBjaWpmZXIgZ2V3ZW5zdCBpcwBuaWV0LWxldHRlciB3YWFyIGVlbiBvcHRpZW5hYW0gZ2V3ZW5zdCBpcwBuaWV0IGdlw69uc3RhbGxlZXJkAGhlZWZ0IGFscyB2b29yLXZlcmVpc3RlAHZvb3J6aWV0AHdpc3NlbgBlAHF1ZXJ5L3NldHVwIHNjcmlwdAB2AHJhYWQgYWFuAHZlcndpamRlcgB2ZXJ3aWpkZXJkIChjb25maWcgYmxpamZ0KQB2ZXJ2YW5ndABzAHNjaGVybWRlZWwAc3VnZ2VyZWVydABzeW50YXhmb3V0IGluIG1ldGhvZGUgb3B0aWViZXN0YW5kIGAlLjI1MHMnIC0tICVzAHRlcm1pbmFsIGthbiBlc3NlbnRpw6tsZSAuLi4gbmlldCBhYW4sIGVyIHdvcmR0IG9wZ2VnZXZlbgB0cmlnZ2VyIGFhbmdlcm9lcGVuAGIAa29uIG1ldGhvZGVzY3JpcHQgYCUuMjUwcycgbmlldCBiZW5hZGVyZW4Aa29uIG5pZXV3ZSBvcHRpZWJlc3RhbmQgYCUuMjUwcycgbmlldCBhZnNsdWl0ZW4Aa29uIG5pZXV3ZSBvcHRpZSBuaWV0IGluc3RhbGxlcmVuIGFscyBgJS4yNTBzJwBrb24gaHVpZGlnIG9wdGllYmVzdGFuZCBgJS4yNTBzJyBuaWV0IG9wZW5lbgBrb24gbmlldXdlIG9wdGllYmVzdGFuZCBgJS4yNTBzJyBuaWV0IG9wZW5lbgBrb24gYmVzdGFuZCBtZXQgb3B0aWViZXNjaHJpanZpbmdlbiBgJS4yNTBzJyBuaWV0IG9wZW5lbgBrb24gYCUuMjUwcycgbWFwIG5pZXQgbGV6ZW4gb20gbWV0aG9kZW4gdGUgbGV6ZW4Aa29uIG1ldGhvZGUgb3B0aWViZXN0YW5kIGAlLjI1MHMnIG5pZXQgbGV6ZW4Aa29uIGJlc3RhbmQgbWV0IG9wdGllYmVzY2hyaWp2aW5nZW4gYCUuMjUwcycgbmlldCB2aW5kZW4Aa29uIG5pZXV3ZSBvcHRpZSBuaWV0IHdlZ3NjaHJpanZlbiBuYWFyIGAlLjI1MHMnAG9uYmVrZW5kIGFjdGlld29vcmQgYCUuNTBzJwB1aXRnZXBha3QgKG5pZXQgaW5nZXN0ZWxkKQBzY3JpcHQgdm9vciBiaWp3ZXJrZW4gdmFuIGJlc2NoaWtiYWFyaGVpZHNsaWpzdAA=