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ICVzKS4gICVzACVzICVzIHBhY2thZ2VzACVzICVzIHBhY2thZ2VzIGluIHNlY3Rpb24gJXMAJXMgJXMgcGFja2FnZXMgd2l0aG91dCBhIHNlY3Rpb24AJXMgZm9yIG1vcmUAJXMgcGFja2FnZXMgaW4gc2VjdGlvbiAlcwAlcyBwYWNrYWdlcyB3aXRob3V0IGEgc2VjdGlvbgAlcyB0byBnbyBiYWNrACogSGlnaGxpZ2h0OiBPbmUgbGluZSBpbiB0aGUgcGFja2FnZSBsaXN0IHdpbGwgYmUgaGlnaGxpZ2h0ZWQuICBJdCBpbmRpY2F0ZXMKICB3aGljaCBwYWNrYWdlKHMpIHdpbGwgYmUgYWZmZWN0ZWQgYnkgcHJlc3NlcyBvZiBgKycsIGAtJyBhbmQgYF8nLgoKKiBUaGUgZGl2aWRpbmcgbGluZSBpbiB0aGUgbWlkZGxlIG9mIHRoZSBzY3JlZW4gc2hvd3MgYSBicmllZiBleHBsYW5hdGlvbiBvZgogIHRoZSBzdGF0dXMgb2YgdGhlIGN1cnJlbnRseS1oaWdobGlnaHRlZCBwYWNrYWdlLCBvciBhIGRlc2NyaXB0aW9uIG9mIHdoaWNoCiAgZ3JvdXAgaXMgaGlnaGxpZ2h0ZWQgaWYgYSBncm91cCBsaW5lIGlzLiAgSWYgeW91IGRvbid0IHVuZGVyc3RhbmQgdGhlCiAgbWVhbmluZyBvZiBzb21lIG9mIHRoZSBzdGF0dXMgY2hhcmFjdGVycyBkaXNwbGF5ZWQsIGdvIHRvIHRoZSByZWxldmFudAogIHBhY2thZ2UgYW5kIGxvb2sgYXQgdGhpcyBkaXZpZGVyIGxpbmUsIG9yIHVzZSB0aGUgYHYnIGtleSBmb3IgYSB2ZXJib3NlCiAgZGlzcGxheSAocHJlc3MgYHYnIGFnYWluIHRvIGdvIGJhY2sgdG8gdGhlIHRlcnNlIGRpc3BsYXkpLgoKKiBUaGUgYm90dG9tIG9mIHRoZSBzY3JlZW4gc2hvd3MgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUKICBjdXJyZW50bHktaGlnaGxpZ2h0ZWQgcGFja2FnZSAoaWYgdGhlcmUgaXMgb25seSBvbmUpLgoKICBJdCBjYW4gc2hvdyBhbiBleHRlbmRlZCBkZXNjcmlwdGlvbiBvZiB0aGUgcGFja2FnZSwgdGhlIGludGVybmFsIHBhY2thZ2UKICBjb250cm9sIGRldGFpbHMgKGVpdGhlciBmb3IgdGhlIGluc3RhbGxlZCBvciBhdmFpbGFibGUgdmVyc2lvbiBvZiB0aGUKICBwYWNrYWdlKSwgb3IgaW5mb3JtYXRpb24gYWJvdXQgY29uZmxpY3RzIGFuZCBkZXBlbmRlbmNpZXMgaW52b2x2aW5nIHRoZQogIGN1cnJlbnQgcGFja2FnZSAoaW4gY29uZmxpY3QvZGVwZW5kZW5jeSByZXNvbHV0aW9uIHN1Ymxpc3RzKS4KCiAgVXNlIHRoZSBgaScga2V5IHRvIGN5Y2xlIHRocm91Z2ggdGhlIGRpc3BsYXlzLCBhbmQgYEknIHRvIGhpZGUgdGhlCiAgaW5mb3JtYXRpb24gZGlzcGxheSBvciBleHBhbmQgaXQgdG8gdXNlIGFsbW9zdCBhbGwgb2YgdGhlIHNjcmVlbi4KAD8AQWJicmV2LgBBYm9ydCAtIHF1aXQgd2l0aG91dCBtYWtpbmcgY2hhbmdlcwBBY2Nlc3MgbWV0aG9kIGAlcycuAEFjdGlvbnM6CiAgYWNjZXNzIHVwZGF0ZSBzZWxlY3QgaW5zdGFsbCBjb25maWcgcmVtb3ZlIHF1aXQKCgBBbGwAQWxsIHBhY2thZ2VzAEF0dHJpYnV0ZXM6CgBBdmFpbC52ZXIAQXZhaWxhYmxlAEF2YWlsYWJsZSBjb250cm9sIGZpbGUgaW5mb3JtYXRpb24AQXZhaWxhYmxlIHBhY2thZ2VzIChub3QgY3VycmVudGx5IGluc3RhbGxlZCkAQnJva2VuAEJyb2tlbmx5IGluc3RhbGxlZCBwYWNrYWdlcwBDaG9vc2UgdGhlIGFjY2VzcyBtZXRob2QgdG8gdXNlLgBDb2xvdXJzOgoAQ29uZmlndXJlIGFueSBwYWNrYWdlcyB0aGF0IGFyZSB1bmNvbmZpZ3VyZWQuAENvcHlyaWdodCAoQykgMTk5NC0xOTk2IElhbiBKYWNrc29uLgpDb3B5cmlnaHQgKEMpIDIwMDAsMjAwMSBXaWNoZXJ0IEFra2VybWFuLgoAQ3ljbGUgdGhyb3VnaCBpbmZvcm1hdGlvbiBkaXNwbGF5cwBEZWJpYW4gYCVzJyBwYWNrYWdlIGhhbmRsaW5nIGZyb250ZW5kIHZlcnNpb24gJXMuCgBEZXBlbmRlbmN5L2NvbmZsaWN0IHJlc29sdXRpb24gLSBpbnRyb2R1Y3Rpb24uCgpPbmUgb3IgbW9yZSBvZiB5b3VyIGNob2ljZXMgaGF2ZSByYWlzZWQgYSBjb25mbGljdCBvciBkZXBlbmRlbmN5IHByb2JsZW0gLQpzb21lIHBhY2thZ2VzIHNob3VsZCBvbmx5IGJlIGluc3RhbGxlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGNlcnRhaW4gb3RoZXJzLCBhbmQKc29tZSBjb21iaW5hdGlvbnMgb2YgcGFja2FnZXMgbWF5IG5vdCBiZSBpbnN0YWxsZWQgdG9nZXRoZXIuCgpZb3Ugd2lsbCBzZWUgYSBzdWItbGlzdCBjb250YWluaW5nIHRoZSBwYWNrYWdlcyBpbnZvbHZlZC4gIFRoZSBib3R0b20gaGFsZiBvZgp0aGUgZGlzcGxheSBzaG93cyByZWxldmFudCBjb25mbGljdHMgYW5kIGRlcGVuZGVuY2llczsgdXNlIGBpJyB0byBjeWNsZSBiZXR3ZWVuCnRoYXQsIHRoZSBwYWNrYWdlIGRlc2NyaXB0aW9ucyBhbmQgdGhlIGludGVybmFsIGNvbnRyb2wgaW5mb3JtYXRpb24uCgpBIHNldCBvZiBgc3VnZ2VzdGVkJyBwYWNrYWdlcyBoYXMgYmVlbiBjYWxjdWxhdGVkLCBhbmQgdGhlIGluaXRpYWwgbWFya2luZ3MgaW4KdGhpcyBzdWItbGlzdCBoYXZlIGJlZW4gc2V0IHRvIG1hdGNoIHRob3NlLCBzbyB5b3UgY2FuIGp1c3QgaGl0IFJldHVybiB0bwphY2NlcHQgdGhlIHN1Z2dlc3Rpb25zIGlmIHlvdSB3aXNoLiAgWW91IG1heSBhYm9ydCB0aGUgY2hhbmdlKHMpIHdoaWNoIGNhdXNlZAp0aGUgcHJvYmxlbShzKSwgYW5kIGdvIGJhY2sgdG8gdGhlIG1haW4gbGlzdCwgYnkgcHJlc3NpbmcgY2FwaXRhbCBgWCcuCgpZb3UgY2FuIGFsc28gbW92ZSBhcm91bmQgdGhlIGxpc3QgYW5kIGNoYW5nZSB0aGUgbWFya2luZ3Mgc28gdGhhdCB0aGV5IGFyZSBtb3JlCmxpa2Ugd2hhdCB5b3Ugd2FudCwgYW5kIHlvdSBjYW4gYHJlamVjdCcgbXkgc3VnZ2VzdGlvbnMgYnkgdXNpbmcgdGhlIGNhcGl0YWwKYEQnIG9yIGBSJyBrZXlzIChzZWUgdGhlIGtleWJpbmRpbmdzIGhlbHAgc2NyZWVuKS4gIFlvdSBjYW4gdXNlIGNhcGl0YWwgYFEnIHRvCmZvcmNlIG1lIHRvIGFjY2VwdCB0aGUgc2l0dWF0aW9uIGN1cnJlbnRseSBkaXNwbGF5ZWQsIGluIGNhc2UgeW91IHdhbnQgdG8Kb3ZlcnJpZGUgYSByZWNvbW1lbmRhdGlvbiBvciB0aGluayB0aGF0IHRoZSBwcm9ncmFtIGlzIG1pc3Rha2VuLgoKUHJlc3MgPHNwYWNlPiB0byBsZWF2ZSBoZWxwIGFuZCBlbnRlciB0aGUgc3ViLWxpc3Q7IHJlbWVtYmVyOiBwcmVzcyBgPycgZm9yIGhlbHAuCgBEZXNjcmlwdGlvbgBEaXNwbGF5LCBwYXJ0IDE6IHBhY2thZ2UgbGlzdGluZyBhbmQgc3RhdHVzIGNoYXJzAERpc3BsYXksIHBhcnQgMjogbGlzdCBoaWdobGlnaHQ7IGluZm9ybWF0aW9uIGRpc3BsYXkARUlPTQBFT0YgYmVmb3JlIG9wdGlvbiBuYW1lIHN0YXJ0AEVPRiBiZWZvcmUgc3VtbWFyeQBFT0YgaW4gaW5kZXggc3RyaW5nAEVPRiBpbiBvcHRpb24gbmFtZQBFT0YgaW4gc3VtbWFyeSAtIG1pc3NpbmcgbmV3bGluZQBFcnJvcgBFcnJvcjogAEV4cGxhbmF0aW9uAEV4dHJhAEdvIHRvIGVuZCBvZiBsaXN0AEdvIHRvIHRvcCBvZiBsaXN0AEhlbHAgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIHVuZGVyIHRoZSBmb2xsb3dpbmcgdG9waWNzOgBIZWxwOiAASW1wAEltcG9ydGFudABJbnN0LnZlcgBJbnN0YWxsIGFuZCB1cGdyYWRlIHdhbnRlZCBwYWNrYWdlcy4ASW5zdGFsbGVkAEluc3RhbGxlZCBjb250cm9sIGZpbGUgaW5mb3JtYXRpb24ASW5zdGFsbGVkIHBhY2thZ2VzAEluc3RhbGxlZD8ASW50ZXJyZWxhdGlvbnNoaXBzAEludHJvZHVjdGlvbiB0byBjb25mbGljdC9kZXBlbmRlbmN5IHJlc29sdXRpb24gc3ViLWxpc3QASW50cm9kdWN0aW9uIHRvIG1ldGhvZCBzZWxlY3Rpb24gZGlzcGxheQBJbnRyb2R1Y3Rpb24gdG8gcGFja2FnZSBzZWxlY3Rpb25zAEludHJvZHVjdGlvbiB0byByZWFkLW9ubHkgcGFja2FnZSBsaXN0IGJyb3dzZXIASW52YWxpZCAlcyBgJXMnCgBLZXliaW5kaW5ncwBLZXlzdHJva2VzAEtleXN0cm9rZXMgZm9yIG1ldGhvZCBzZWxlY3Rpb24ATWFrZSBoaWdobGlnaHQgbGVzcyBzcGVjaWZpYwBNYWtlIGhpZ2hsaWdodCBtb3JlIHNwZWNpZmljAE1hcmsgcGFja2FnZShzKSBmb3IgZGVpbnN0YWxsIGFuZCBwdXJnZQBNYXJrIHBhY2thZ2UocykgZm9yIGRlaW5zdGFsbGF0aW9uAE1hcmsgcGFja2FnZShzKSBmb3IgaW5zdGFsbGF0aW9uAE1hcmtlZCBmb3IATW90aW9uIGtleXM6IE5leHQvUHJldmlvdXMsIFRvcC9FbmQsIFVwL0Rvd24sIEJhY2t3YXJkcy9Gb3J3YXJkczoKICBqLCBEb3duLWFycm93ICAgICAgICAgaywgVXAtYXJyb3cgICAgICAgICAgICAgbW92ZSBoaWdobGlnaHQKICBOLCBQYWdlLWRvd24sIFNwYWNlICAgUCwgUGFnZS11cCwgQmFja3NwYWNlICAgc2Nyb2xsIGxpc3QgYnkgMSBwYWdlCiAgXm4gICAgICAgICAgICAgICAgICAgIF5wICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbCBsaXN0IGJ5IDEgbGluZQogIHQsIEhvbWUgICAgICAgICAgICAgICBlLCBFbmQgICAgICAgICAgICAgICAgICBqdW1wIHRvIHRvcC9lbmQgb2YgbGlzdAogIHUgICAgICAgICAgICAgICAgICAgICBkICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGwgaW5mbyBieSAxIHBhZ2UKICBedSAgICAgICAgICAgICAgICAgICAgXmQgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsIGluZm8gYnkgMSBsaW5lCiAgQiwgTGVmdC1hcnJvdyAgICAgICAgIEYsIFJpZ2h0LWFycm93ICAgICAgICAgIHBhbiBkaXNwbGF5IGJ5IDEvMyBzY3JlZW4KICBeYiAgICAgICAgICAgICAgICAgICAgXmYgICAgICAgICAgICAgICAgICAgICAgcGFuIGRpc3BsYXkgYnkgMSBjaGFyYWN0ZXIKCk1hcmsgcGFja2FnZXMgZm9yIGxhdGVyIHByb2Nlc3Npbmc6CiArLCBJbnNlcnQgIGluc3RhbGwgb3IgdXBncmFkZSAgICAgID0sIEggIGhvbGQgaW4gcHJlc2VudCBzdGF0ZQogLSwgRGVsZXRlICByZW1vdmUgICAgICAgICAgICAgICAgICA6LCBHICB1bmhvbGQ6IHVwZ3JhZGUgb3IgbGVhdmUgdW5pbnN0YWxsZWQKIF8gICAgICAgICAgcmVtb3ZlICYgcHVyZ2UgY29uZmlnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1pc2NlbGxhbmVvdXM6ClF1aXQsIGV4aXQsIG92ZXJ3cml0ZSAobm90ZSBjYXBpdGFscyEpOiAgICAgICA/LCBGMSByZXF1ZXN0IGhlbHAgKGFsc28gSGVscCkKIFJldHVybiAgQ29uZmlybSwgcXVpdCAoY2hlY2sgZGVwZW5kZW5jaWVzKSAgIGksIEkgIHRvZ2dsZS9jeWNsZSBpbmZvIGRpc3BsYXlzCiAgIFEgICAgIENvbmZpcm0sIHF1aXQgKG92ZXJyaWRlIGRlcC5zKSAgICAgICBvLCBPICBjeWNsZSB0aHJvdWdoIHNvcnQgb3B0aW9ucwogWCwgRXNjICBlWGl0LCBhYmFuZG9uaW5nIGFueSBjaGFuZ2VzIG1hZGUgICAgdiwgViAgY2hhbmdlIHN0YXR1cyBkaXNwbGF5IG9wdHMKICAgUiAgICAgUmV2ZXJ0IHRvIHN0YXRlIGJlZm9yZSB0aGlzIGxpc3QgICAgICBebCAgIHJlZHJhdyBkaXNwbGF5CiAgIFUgICAgIHNldCBhbGwgdG8gc1VnZ2VzdGVkIHN0YXRlICAgICAgICAgICAgIC8gICBzZWFyY2ggKFJldHVybiB0byBjYW5jZWwpCiAgIEQgICAgIHNldCBhbGwgdG8gRGlyZWN0bHkgcmVxdWVzdGVkIHN0YXRlICBuLCBcICByZXBlYXQgbGFzdCBzZWFyY2gKAE1vdGlvbiBrZXlzOiBOZXh0L1ByZXZpb3VzLCBUb3AvRW5kLCBVcC9Eb3duLCBCYWNrd2FyZHMvRm9yd2FyZHM6CiAgaiwgRG93bi1hcnJvdyAgICAgICAgIGssIFVwLWFycm93ICAgICAgICAgICAgIG1vdmUgaGlnaGxpZ2h0CiAgTiwgUGFnZS1kb3duLCBTcGFjZSAgIFAsIFBhZ2UtdXAsIEJhY2tzcGFjZSAgIHNjcm9sbCBsaXN0IGJ5IDEgcGFnZQogIF5uICAgICAgICAgICAgICAgICAgICBecCAgICAgICAgICAgICAgICAgICAgICBzY3JvbGwgbGlzdCBieSAxIGxpbmUKICB0LCBIb21lICAgICAgICAgICAgICAgZSwgRW5kICAgICAgICAgICAgICAgICAganVtcCB0byB0b3AvZW5kIG9mIGxpc3QKICB1ICAgICAgICAgICAgICAgICAgICAgZCAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsIGluZm8gYnkgMSBwYWdlCiAgXnUgICAgICAgICAgICAgICAgICAgIF5kICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbCBpbmZvIGJ5IDEgbGluZQogIEIsIExlZnQtYXJyb3cgICAgICAgICBGLCBSaWdodC1hcnJvdyAgICAgICAgICBwYW4gZGlzcGxheSBieSAxLzMgc2NyZWVuCiAgXmIgICAgICAgICAgICAgICAgICAgIF5mICAgICAgICAgICAgICAgICAgICAgIHBhbiBkaXNwbGF5IGJ5IDEgY2hhcmFjdGVyCihUaGVzZSBhcmUgdGhlIHNhbWUgbW90aW9uIGtleXMgYXMgaW4gdGhlIHBhY2thZ2UgbGlzdCBkaXNwbGF5LikKClF1aXQ6CiBSZXR1cm4sIEVudGVyICAgIHNlbGVjdCB0aGlzIG1ldGhvZCBhbmQgZ28gdG8gaXRzIGNvbmZpZ3VyYXRpb24gZGlhbG9ndWUKIHgsIFggICAgICAgICAgICAgZXhpdCB3aXRob3V0IGNoYW5naW5nIG9yIHNldHRpbmcgdXAgdGhlIGluc3RhbGxhdGlvbiBtZXRob2QKCk1pc2NlbGxhbmVvdXM6CiAgPywgSGVscCwgRjEgICAgICByZXF1ZXN0IGhlbHAKIF5sICAgICAgICAgICAgICAgIHJlZHJhdyBkaXNwbGF5CiAgLyAgICAgICAgICAgICAgICBzZWFyY2ggKGp1c3QgcmV0dXJuIHRvIGNhbmNlbCkKICBcICAgICAgICAgICAgICAgIHJlcGVhdCBsYXN0IHNlYXJjaAoATW92ZSBkb3duAE1vdmUgdXAATmV3AE5ld2x5IGF2YWlsYWJsZSBwYWNrYWdlcwBObyBkZXNjcmlwdGlvbiBhdmFpbGFibGUuAE5vIGV4cGxhbmF0aW9uIGF2YWlsYWJsZS4ATnVsbCBjb2xvdXIgc3BlY2lmaWNhdGlvbgoAT2Jzb2xldGUgYW5kIGxvY2FsIHBhY2thZ2VzIHByZXNlbnQgb24gc3lzdGVtAE9ic29sZXRlL2xvY2FsAE9sZCBtYXJrAE9wdABPcHRpb25hbABPcHRpb25zOgogIC0tYWRtaW5kaXIgPGRpcmVjdG9yeT4gICAgIFVzZSA8ZGlyZWN0b3J5PiBpbnN0ZWFkIG9mICVzLgogIC0tZXhwZXJ0ICAgICAgICAgICAgICAgICAgIFR1cm4gb24gZXhwZXJ0IG1vZGUuCiAgLS1kZWJ1ZyA8ZmlsZT4gfCAtRDxmaWxlPiAgVHVybiBvbiBkZWJ1Z2dpbmcsIHNlbmRpbmcgb3V0cHV0IHRvIDxmaWxlPi4KICAtLWNvbG91ciB8IC0tY29sb3Igc2NyZWVucGFydDpbZm9yZWdyb3VuZF0sW2JhY2tncm91bmRdWzphdHRyWythdHRyKy4uXV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmUgc2NyZWVuIGNvbG91cnMuCgoAUGFja2FnZQBQcmVzcyA8ZW50ZXI+IHRvIGNvbnRpbnVlLgoAUHJlc3MgPyBmb3IgaGVscCBtZW51LCAuIGZvciBuZXh0IHRvcGljLCA8c3BhY2U+IHRvIGV4aXQgaGVscC4AUHJlc3MgYSBrZXkgZnJvbSB0aGUgbGlzdCBhYm92ZSwgPHNwYWNlPiBvciBgcScgdG8gZXhpdCBoZWxwLAogIG9yIGAuJyAoZnVsbCBzdG9wKSB0byByZWFkIGVhY2ggaGVscCBwYWdlIGluIHR1cm4uIABQcmlvcml0eQBQdXJnZWQAUHVyZ2VkIHBhY2thZ2VzIGFuZCB0aG9zZSBuZXZlciBpbnN0YWxsZWQAUXVpdCBkc2VsZWN0LgBRdWl0IHdpdGhvdXQgY2hhbmdpbmcgc2VsZWN0ZWQgYWNjZXNzIG1ldGhvZABRdWl0LCBjb25maXJtaW5nIHdpdGhvdXQgY2hlY2sAUXVpdCwgY29uZmlybWluZywgYW5kIGNoZWNraW5nIGRlcGVuZGVuY2llcwBRdWl0LCByZWplY3RpbmcgY29uZmxpY3QvZGVwZW5kZW5jeSBzdWdnZXN0aW9ucwBSRUlOU1RBTEwAUmVkcmF3IGRpc3BsYXkAUmVtb3ZlIHVud2FudGVkIHNvZnR3YXJlLgBSZW1vdmVkAFJlbW92ZWQgYW5kIG5vIGxvbmdlciBhdmFpbGFibGUgcGFja2FnZXMAUmVtb3ZlZCBwYWNrYWdlcyAoY29uZmlndXJhdGlvbiBzdGlsbCBwcmVzZW50KQBSZXBlYXQgbGFzdCBzZWFyY2guAFJlcQBSZXF1ZXN0IGhlbHAgKGN5Y2xlIHRocm91Z2ggaGVscCBzY3JlZW5zKQBSZXF1ZXN0IHdoaWNoIHBhY2thZ2VzIHlvdSB3YW50IG9uIHlvdXIgc3lzdGVtLgBSZXF1aXJlZABSZXZlcnQgdG8gY3VycmVudGx5IGluc3RhbGxlZCBzdGF0ZSBmb3IgYWxsIHBhY2thZ2VzAFJldmVydCB0byBkaXJlY3RseSByZXF1ZXN0ZWQgc3RhdGUgZm9yIGFsbCBwYWNrYWdlcwBSZXZlcnQgdG8gb2xkIHN0YXRlIGZvciBhbGwgcGFja2FnZXMAUmV2ZXJ0IHRvIHN1Z2dlc3RlZCBzdGF0ZSBmb3IgYWxsIHBhY2thZ2VzAFNjcmVlbnBhcnRzOgoAU2Nyb2xsIGJhY2t3YXJkcyB0aHJvdWdoIGhlbHAvaW5mb3JtYXRpb24AU2Nyb2xsIGJhY2t3YXJkcyB0aHJvdWdoIGhlbHAvaW5mb3JtYXRpb24gYnkgMSBsaW5lAFNjcm9sbCBiYWNrd2FyZHMgdGhyb3VnaCBsaXN0AFNjcm9sbCBiYWNrd2FyZHMgdGhyb3VnaCBsaXN0IGJ5IDEgbGluZQBTY3JvbGwgb253YXJkcyB0aHJvdWdoIGhlbHAvaW5mb3JtYXRpb24AU2Nyb2xsIG9ud2FyZHMgdGhyb3VnaCBoZWxwL2luZm9ybWF0aW9uIGJ5IDEgbGluZQBTY3JvbGwgb253YXJkcyB0aHJvdWdoIGxpc3QAU2Nyb2xsIG9ud2FyZHMgdGhyb3VnaCBsaXN0IGJ5IDEgbGluZQBTZWFyY2ggZm9yID8gAFNlYXJjaCBmb3IgYSBwYWNrYWdlIHdob3NlIG5hbWUgY29udGFpbnMgYSBzdHJpbmcAU2VjdGlvbgBTZWxlY3QgY3VycmVudGx5LWhpZ2hsaWdodGVkIGFjY2VzcyBtZXRob2QAU2V0IHlvdXIgVEVSTSB2YXJpYWJsZSBjb3JyZWN0bHksIHVzZSBhIGJldHRlciB0ZXJtaW5hbCwKb3IgbWFrZSBkbyB3aXRoIHRoZSBwZXItcGFja2FnZSBtYW5hZ2VtZW50IHRvb2wgJXMuCgBTdGFuZGFyZABTdGQAU3dhcCBzb3J0IG9yZGVyIHByaW9yaXR5L3NlY3Rpb24AVGVybWluYWwgZG9lcyBub3QgYXBwZWFyIHRvIHN1cHBvcnQgY3Vyc29yIGFkZHJlc3NpbmcuCgBUZXJtaW5hbCBkb2VzIG5vdCBhcHBlYXIgdG8gc3VwcG9ydCBoaWdobGlnaHRpbmcuCgBUaGUgbGluZSB5b3UgaGF2ZSBoaWdobGlnaHRlZCByZXByZXNlbnRzIG1hbnkgcGFja2FnZXM7IGlmIHlvdSBhc2sgdG8gaW5zdGFsbCwgcmVtb3ZlLCBob2xkLCBldGMuIGl0IHlvdSB3aWxsIGFmZmVjdCBhbGwgdGhlIHBhY2thZ2VzIHdoaWNoIG1hdGNoIHRoZSBjcml0ZXJpb24gc2hvd24uCgpJZiB5b3UgbW92ZSB0aGUgaGlnaGxpZ2h0IHRvIGEgbGluZSBmb3IgYSBwYXJ0aWN1bGFyIHBhY2thZ2UgeW91IHdpbGwgc2VlIGluZm9ybWF0aW9uIGFib3V0IHRoYXQgcGFja2FnZSBkaXNwbGF5ZWQgaGVyZS4KWW91IGNhbiB1c2UgYG8nIGFuZCBgTycgdG8gY2hhbmdlIHRoZSBzb3J0IG9yZGVyIGFuZCBnaXZlIHlvdXJzZWxmIHRoZSBvcHBvcnR1bml0eSB0byBtYXJrIHBhY2thZ2VzIGluIGRpZmZlcmVudCBraW5kcyBvZiBncm91cHMuAFRoZSB0b3AgaGFsZiBvZiB0aGUgc2NyZWVuIHNob3dzIGEgbGlzdCBvZiBwYWNrYWdlcy4gIEZvciBlYWNoIHBhY2thZ2UgeW91IHNlZQpmb3VyIGNvbHVtbnMgZm9yIGl0cyBjdXJyZW50IHN0YXR1cyBvbiB0aGUgc3lzdGVtIGFuZCBtYXJrLiAgSW4gdGVyc2UgbW9kZSAodXNlCmB2JyB0byB0b2dnbGUgdmVyYm9zZSBkaXNwbGF5KSB0aGVzZSBhcmUgc2luZ2xlIGNoYXJhY3RlcnMsIGZyb20gbGVmdCB0byByaWdodDoKCiBFcnJvciBmbGFnOiBTcGFjZSAtIG5vIGVycm9yIChidXQgcGFja2FnZSBtYXkgYmUgaW4gYnJva2VuIHN0YXRlIC0gc2VlIGJlbG93KQogICAgICAgICAgICAgIGBSJyAgLSBzZXJpb3VzIGVycm9yIGR1cmluZyBpbnN0YWxsYXRpb24sIG5lZWRzIHJlaW5zdGFsbGF0aW9uOwogSW5zdGFsbGVkIHN0YXRlOiAgICAgU3BhY2UgICAgLSBub3QgaW5zdGFsbGVkOwogICAgICAgICAgICAgICAgICAgICAgIGAqJyAgICAgLSBpbnN0YWxsZWQ7CiAgICAgICAgICAgICAgICAgICAgICAgYC0nICAgICAtIG5vdCBpbnN0YWxsZWQgYnV0IGNvbmZpZyBmaWxlcyByZW1haW47CiAgIHBhY2thZ2VzIGluIHRoZXNlIHsgYFUnICAgICAtIHVucGFja2VkIGJ1dCBub3QgeWV0IGNvbmZpZ3VyZWQ7CiAgIHN0YXRlcyBhcmUgbm90ICAgIHsgYEMnICAgICAtIGhhbGYtY29uZmlndXJlZCAoYW4gZXJyb3IgaGFwcGVuZWQpOwogICAocXVpdGUpIHByb3Blcmx5ICB7IGBJJyAgICAgLSBoYWxmLWluc3RhbGxlZCAoYW4gZXJyb3IgaGFwcGVuZWQpOwogICBpbnN0YWxsZWQgICAgICAgICB7IGBXJyxgdCcgLSB0cmlnZ2VycyBhcmUgYXdhaXRlZCByZXNwLiBwZW5kaW5nLgogT2xkIG1hcms6IHdoYXQgd2FzIHJlcXVlc3RlZCBmb3IgdGhpcyBwYWNrYWdlIGJlZm9yZSBwcmVzZW50aW5nIHRoaXMgbGlzdDsKIE1hcms6IHdoYXQgaXMgcmVxdWVzdGVkIGZvciB0aGlzIHBhY2thZ2U6CiAgYConOiBtYXJrZWQgZm9yIGluc3RhbGxhdGlvbiBvciB1cGdyYWRlOwogIGAtJzogbWFya2VkIGZvciByZW1vdmFsLCBidXQgYW55IGNvbmZpZ3VyYXRpb24gZmlsZXMgd2lsbCByZW1haW47CiAgYD0nOiBvbiBob2xkOiBwYWNrYWdlIHdpbGwgbm90IGJlIHByb2Nlc3NlZCBhdCBhbGw7CiAgYF8nOiBtYXJrZWQgZm9yIHB1cmdlIGNvbXBsZXRlbHkgLSBldmVuIHJlbW92ZSBjb25maWd1cmF0aW9uOwogIGBuJzogcGFja2FnZSBpcyBuZXcgYW5kIGhhcyB5ZXQgdG8gYmUgbWFya2VkIGZvciBpbnN0YWxsL3JlbW92ZS8mYy4KCkFsc28gZGlzcGxheWVkIGFyZSBlYWNoIHBhY2thZ2UncyBQcmlvcml0eSwgU2VjdGlvbiwgbmFtZSwgaW5zdGFsbGVkIGFuZAphdmFpbGFibGUgdmVyc2lvbiBudW1iZXJzIChzaGlmdC1WIHRvIGRpc3BsYXkvaGlkZSkgYW5kIHN1bW1hcnkgZGVzY3JpcHRpb24uCgBUeXBlIGRzZWxlY3QgLS1oZWxwIGZvciBoZWxwLgBVbmNsYXNzaWZpZWQAVXAgdG8gZGF0ZSBpbnN0YWxsZWQgcGFja2FnZXMAVXAtdG8tZGF0ZQBVcGRhdGUgbGlzdCBvZiBhdmFpbGFibGUgcGFja2FnZXMsIGlmIHBvc3NpYmxlLgBVcGRhdGVkAFVwZGF0ZWQgcGFja2FnZXMgKG5ld2VyIHZlcnNpb24gaXMgYXZhaWxhYmxlKQBVc2FnZTogJXMgWzxvcHRpb24+IC4uLl0gWzxhY3Rpb24+IC4uLl0KCgBXZWxjb21lIHRvIGRzZWxlY3QncyBtYWluIHBhY2thZ2UgbGlzdGluZy4KCllvdSB3aWxsIGJlIHByZXNlbnRlZCB3aXRoIGEgbGlzdCBvZiBwYWNrYWdlcyB3aGljaCBhcmUgaW5zdGFsbGVkIG9yIGF2YWlsYWJsZQpmb3IgaW5zdGFsbGF0aW9uLiAgU2luY2UgeW91IGRvIG5vdCBoYXZlIHRoZSBwcml2aWxlZ2UgbmVjZXNzYXJ5IHRvIHVwZGF0ZQpwYWNrYWdlIHN0YXRlcywgeW91IGFyZSBpbiBhIHJlYWQtb25seSBtb2RlLiAgWW91IGNhbiBuYXZpZ2F0ZSBhcm91bmQgdGhlCmxpc3QgdXNpbmcgdGhlIGN1cnNvciBrZXlzIChwbGVhc2Ugc2VlIHRoZSBgS2V5c3Ryb2tlcycgaGVscCBzY3JlZW4pLCBvYnNlcnZlCnRoZSBzdGF0dXMgb2YgdGhlIHBhY2thZ2VzIGFuZCByZWFkIGluZm9ybWF0aW9uIGFib3V0IHRoZW0uCgpZb3Ugc2hvdWxkIHJlYWQgdGhlIGxpc3Qgb2Yga2V5cyBhbmQgdGhlIGV4cGxhbmF0aW9ucyBvZiB0aGUgZGlzcGxheS4KTXVjaCBvbi1saW5lIGhlbHAgaXMgYXZhaWxhYmxlLCBwbGVhc2UgbWFrZSB1c2Ugb2YgaXQgLSBwcmVzcyBgPycgYXQKYW55IHRpbWUgZm9yIGhlbHAuCgpXaGVuIHlvdSBoYXZlIGZpbmlzaGVkIGJyb3dzaW5nLCBwcmVzcyBgUScgb3IgPGVudGVyPiB0byBxdWl0LgoKUHJlc3MgPHNwYWNlPiB0byBsZWF2ZSBoZWxwIGFuZCBlbnRlciB0aGUgbGlzdCBub3cuCgBXZWxjb21lIHRvIGRzZWxlY3QncyBtYWluIHBhY2thZ2UgbGlzdGluZy4KCllvdSB3aWxsIGJlIHByZXNlbnRlZCB3aXRoIGEgbGlzdCBvZiBwYWNrYWdlcyB3aGljaCBhcmUgaW5zdGFsbGVkIG9yIGF2YWlsYWJsZQpmb3IgaW5zdGFsbGF0aW9uLiAgWW91IGNhbiBuYXZpZ2F0ZSBhcm91bmQgdGhlIGxpc3QgdXNpbmcgdGhlIGN1cnNvciBrZXlzLAptYXJrIHBhY2thZ2VzIGZvciBpbnN0YWxsYXRpb24gKHVzaW5nIGArJykgb3IgZGVpbnN0YWxsYXRpb24gKHVzaW5nIGAtJykuClBhY2thZ2VzIGNhbiBiZSBtYXJrZWQgZWl0aGVyIHNpbmdseSBvciBpbiBncm91cHM7IGluaXRpYWxseSB5b3Ugd2lsbCBzZWUgdGhhdAp0aGUgbGluZSBgQWxsIHBhY2thZ2VzJyBpcyBzZWxlY3RlZC4gIGArJywgYC0nIGFuZCBzbyBvbiB3aWxsIGFmZmVjdCBhbGwgdGhlCnBhY2thZ2VzIGRlc2NyaWJlZCBieSB0aGUgaGlnaGxpZ2h0ZWQgbGluZS4KClNvbWUgb2YgeW91ciBjaG9pY2VzIHdpbGwgY2F1c2UgY29uZmxpY3RzIG9yIGRlcGVuZGVuY3kgcHJvYmxlbXM7IHlvdSB3aWxsIGJlCmdpdmVuIGEgc3ViLWxpc3Qgb2YgdGhlIHJlbGV2YW50IHBhY2thZ2VzLCBzbyB0aGF0IHlvdSBjYW4gc29sdmUgdGhlIHByb2JsZW1zLgoKWW91IHNob3VsZCByZWFkIHRoZSBsaXN0IG9mIGtleXMgYW5kIHRoZSBleHBsYW5hdGlvbnMgb2YgdGhlIGRpc3BsYXkuCk11Y2ggb24tbGluZSBoZWxwIGlzIGF2YWlsYWJsZSwgcGxlYXNlIG1ha2UgdXNlIG9mIGl0IC0gcHJlc3MgYD8nIGF0CmFueSB0aW1lIGZvciBoZWxwLgoKV2hlbiB5b3UgaGF2ZSBmaW5pc2hlZCBzZWxlY3RpbmcgcGFja2FnZXMsIHByZXNzIDxlbnRlcj4gdG8gY29uZmlybSBjaGFuZ2VzLApvciBgWCcgdG8gcXVpdCB3aXRob3V0IHNhdmluZyBjaGFuZ2VzLiBBIGZpbmFsIGNoZWNrIG9uIGNvbmZsaWN0cyBhbmQKZGVwZW5kZW5jaWVzIHdpbGwgYmUgZG9uZSAtIGhlcmUgdG9vIHlvdSBtYXkgc2VlIGEgc3VibGlzdC4KClByZXNzIDxzcGFjZT4gdG8gbGVhdmUgaGVscCBhbmQgZW50ZXIgdGhlIGxpc3Qgbm93LgoAWHRyAFtBXWNjZXNzAFtDXW9uZmlnAFtJXW5zdGFsbABbUV11aXQAW1JdZW1vdmUAW1NdZWxlY3QAW1VdcGRhdGUAW25vdCBib3VuZF0AW3VuazogJWRdAGEAYXdhaXRpbmcgdHJpZ2dlciBwcm9jZXNzaW5nAGJVRwBicmVha3MAYwBjb2xvdXIAY29sb3VyIGF0dHJpYnV0ZQBjb25mbGljdHMgd2l0aABjb3VsZG4ndCBvcGVuIGRlYnVnIGZpbGUgYCUuMjU1cycKAGRlcGVuZHMgb24AZG91cGRhdGUgZmFpbGVkAGRvdXBkYXRlIGluIFNJR1dJTkNIIGhhbmRsZXIgZmFpbGVkAGRzZWxlY3QgLSBpbnNwZWN0aW9uIG9mIHBhY2thZ2Ugc3RhdGVzAGRzZWxlY3QgLSBsaXN0IG9mIGFjY2VzcyBtZXRob2RzAGRzZWxlY3QgLSBtYWluIHBhY2thZ2UgbGlzdGluZwBkc2VsZWN0IC0gcmVjdXJzaXZlIHBhY2thZ2UgbGlzdGluZwBkc2VsZWN0IGFuZCBkcGtnIGNhbiBkbyBhdXRvbWF0aWMgaW5zdGFsbGF0aW9uLCBsb2FkaW5nIHRoZSBwYWNrYWdlIGZpbGVzIHRvIGJlCmluc3RhbGxlZCBmcm9tIG9uZSBvZiBhIG51bWJlciBvZiBkaWZmZXJlbnQgcG9zc2libGUgcGxhY2VzLgoKVGhpcyBsaXN0IGFsbG93cyB5b3UgdG8gc2VsZWN0IG9uZSBvZiB0aGVzZSBpbnN0YWxsYXRpb24gbWV0aG9kcy4KCk1vdmUgdGhlIGhpZ2hsaWdodCB0byB0aGUgbWV0aG9kIHlvdSB3aXNoIHRvIHVzZSwgYW5kIGhpdCBFbnRlci4gIFlvdSB3aWxsIHRoZW4KYmUgcHJvbXB0ZWQgZm9yIHRoZSBpbmZvcm1hdGlvbiByZXF1aXJlZCB0byBkbyB0aGUgaW5zdGFsbGF0aW9uLgoKQXMgeW91IG1vdmUgdGhlIGhpZ2hsaWdodCBhIGRlc2NyaXB0aW9uIG9mIGVhY2ggbWV0aG9kLCB3aGVyZSBhdmFpbGFibGUsIGlzCmRpc3BsYXllZCBpbiB0aGUgYm90dG9tIGhhbGYgb2YgdGhlIHNjcmVlbi4KCklmIHlvdSB3aXNoIHRvIHF1aXQgd2l0aG91dCBjaGFuZ2luZyBhbnl0aGluZyB1c2UgdGhlIGB4JyBrZXkgd2hpbGUgaW4gdGhlIGxpc3QKb2YgaW5zdGFsbGF0aW9uIG1ldGhvZHMuCgpBIGZ1bGwgbGlzdCBvZiBrZXlzdHJva2VzIGlzIGF2YWlsYWJsZSBieSBwcmVzc2luZyBgaycgbm93LCBvciBmcm9tIHRoZSBoZWxwCm1lbnUgcmVhY2hhYmxlIGJ5IHByZXNzaW5nIGA/Jy4KAGVuaGFuY2VzAGVycm9yIGR1cmluZyByZWFkIG9mIG1ldGhvZCBvcHRpb25zIGZpbGUgYCUuMjUwcycAZXJyb3IgZHVyaW5nIHJlYWQgb2Ygb3B0aW9uIGRlc2NyaXB0aW9uIGZpbGUgYCUuMjUwcycAZXJyb3IgaW4gcmVndWxhciBleHByZXNzaW9uAGVycm9yIHJlYWRpbmcgYWNrbm93bGVkZ2VtZW50IG9mIHByb2dyYW0gZmFpbHVyZSBtZXNzYWdlAGVycm9yIHJlYWRpbmcga2V5Ym9hcmQgaW4gaGVscABlcnJvciByZWFkaW5nIG9wdGlvbnMgZmlsZSBgJS4yNTBzJwBmYWlsZWQgdG8gYWxsb2NhdGUgY29sb3VyIHBhaXIAZmFpbGVkIHRvIGJsb2NrIFNJR1dJTkNIAGZhaWxlZCB0byBjcmVhdGUgYmFzZWxpc3QgcGFkAGZhaWxlZCB0byBjcmVhdGUgaGVhZGluZyBwYWQAZmFpbGVkIHRvIGNyZWF0ZSBpbmZvIHBhZABmYWlsZWQgdG8gY3JlYXRlIHF1ZXJ5IHdpbmRvdwBmYWlsZWQgdG8gY3JlYXRlIHRoaXNzdGF0ZSBwYWQAZmFpbGVkIHRvIGNyZWF0ZSB0aXRsZSB3aW5kb3cAZmFpbGVkIHRvIGNyZWF0ZSB3aGF0aW5mbyB3aW5kb3cAZmFpbGVkIHRvIGdldCBvbGQgU0lHV0lOQ0ggc2lnYWN0AGZhaWxlZCB0byBnZXQgb2xkIHNpZ25hbCBtYXNrAGZhaWxlZCB0byBnZXRjaCBpbiBtYWluIG1lbnUAZmFpbGVkIHRvIHJlLWJsb2NrIFNJR1dJTkNIAGZhaWxlZCB0byByZWFkIG9wdGlvbiBkZXNjcmlwdGlvbiBmaWxlIGAlLjI1MHMnAGZhaWxlZCB0byByZXN0b3JlIG9sZCBTSUdXSU5DSCBzaWdhY3QAZmFpbGVkIHRvIHJlc3RvcmUgb2xkIHNpZ25hbCBtYXNrAGZhaWxlZCB0byBzZXQgbmV3IFNJR1dJTkNIIHNpZ2FjdABmYWlsZWQgdG8gdW5ibG9jayBTSUdXSU5DSABnZXRjaCBmYWlsZWQAaGFsZiBpbnN0YWxsZWQAaG9sZABpAGluZGV4IHN0cmluZyB0b28gbG9uZwBpbnN0YWxsAGluc3RhbGxhdGlvbiBzY3JpcHQAaW5zdGFsbGVkAGludmFsaWQgc2VhcmNoIG9wdGlvbiBnaXZlbgBpb2N0bChUSU9DR1dJTlNaKSBmYWlsZWQAbWVudQBtZXRob2QgYCUuMjUwcycgaGFzIG5hbWUgdGhhdCBpcyB0b28gbG9uZyAoJWQgPiAlZCBjaGFyYWN0ZXJzKQBuZXcgcGFja2FnZQBuZXdsaW5lIGJlZm9yZSBvcHRpb24gbmFtZSBzdGFydABuZXdsaW5lIGJlZm9yZSBzdW1tYXJ5AG5vbi1hbHBoYW51bSBpbiBvcHRpb24gbmFtZQBub24tZGlnaXQgd2hlcmUgZGlnaXQgd2FudGVkAG5vbmFscGhhIHdoZXJlIG9wdGlvbiBuYW1lIHN0YXJ0IHdhbnRlZABub3QgaW5zdGFsbGVkAHByZS1kZXBlbmRzIG9uAHByb3ZpZGVzAHB1cmdlAHEAcXVlcnkvc2V0dXAgc2NyaXB0AHIAcmVjb21tZW5kcwByZW1vdmUAcmVtb3ZlZCAoY29uZmlncyByZW1haW4pAHJlcGxhY2VzAHMAc2NyZWVuIHBhcnQAc3VnZ2VzdHMAc3ludGF4IGVycm9yIGluIG1ldGhvZCBvcHRpb25zIGZpbGUgYCUuMjUwcycgLS0gJXMAdGVybWluYWwgbGFja3MgbmVjZXNzYXJ5IGZlYXR1cmVzLCBnaXZpbmcgdXAAdHJpZ2dlcmVkAHUAdW5hYmxlIHRvIGFjY2VzcyBtZXRob2Qgc2NyaXB0IGAlLjI1MHMnAHVuYWJsZSB0byBjbG9zZSBuZXcgb3B0aW9uIGZpbGUgYCUuMjUwcycAdW5hYmxlIHRvIGluc3RhbGwgbmV3IG9wdGlvbiBhcyBgJS4yNTBzJwB1bmFibGUgdG8gb3BlbiBjdXJyZW50IG9wdGlvbiBmaWxlIGAlLjI1MHMnAHVuYWJsZSB0byBvcGVuIG5ldyBvcHRpb24gZmlsZSBgJS4yNTBzJwB1bmFibGUgdG8gb3BlbiBvcHRpb24gZGVzY3JpcHRpb24gZmlsZSBgJS4yNTBzJwB1bmFibGUgdG8gcmVhZCBgJS4yNTBzJyBkaXJlY3RvcnkgZm9yIHJlYWRpbmcgbWV0aG9kcwB1bmFibGUgdG8gcmVhZCBtZXRob2Qgb3B0aW9ucyBmaWxlIGAlLjI1MHMnAHVuYWJsZSB0byBzdGF0IG9wdGlvbiBkZXNjcmlwdGlvbiBmaWxlIGAlLjI1MHMnAHVuYWJsZSB0byB3cml0ZSBuZXcgb3B0aW9uIHRvIGAlLjI1MHMnAHVua25vd24gYWN0aW9uIHN0cmluZyBgJS41MHMnAHVucGFja2VkIChub3Qgc2V0IHVwKQB1cGRhdGUgYXZhaWxhYmxlIGxpc3Qgc2NyaXB0AFByb2plY3QtSWQtVmVyc2lvbjogZHNlbGVjdF9nbApSZXBvcnQtTXNnaWQtQnVncy1UbzogZGViaWFuLWRwa2dAbGlzdHMuZGViaWFuLm9yZwpQT1QtQ3JlYXRpb24tRGF0ZTogMjAxMS0xMC0xNCAwNzoxMSswMjAwClBPLVJldmlzaW9uLURhdGU6IDIwMDgtMTItMjcgMTU6NTYrMDEwMApMYXN0LVRyYW5zbGF0b3I6IG12aWxsYXJpbm8gPG12aWxsYXJpbm9AdXNlcnMuc291cmNlZm9yZ2UubmV0PgpMYW5ndWFnZS1UZWFtOiBnYWxpY2lhbiA8cHJveGVjdG9AdHJhc25vLm5ldD4KTGFuZ3VhZ2U6IGdsCk1JTUUtVmVyc2lvbjogMS4wCkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOApDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0ClgtR2VuZXJhdG9yOiBLQmFiZWwgMS4xMS40ClBsdXJhbC1Gb3JtczogbnBsdXJhbHM9MjsgcGx1cmFsPW4gIT0gMTsKAAoKJXM6ICVzCgAKCk3Ds3Zhc2UgY29uIF5QIGUgXk4sIGFzIGZyZWNoYXMgZG8gY3Vyc29yLCBsZXRyYXMgaW5pY2lhaXMgb3UgbsO6bWVyb3M7ClByZW1hIDxpbnRybz4gcGFyYSBjb25maXJtYXIgYSBlc2NvbGxhLiBeTCB2b2x2ZSBkZWJ1eGFyIGEgcGFudGFsbGEuCgAKCkFjY2VzbyBkZSBzw7MgbGVjdHVyYTogc8OzIGVzdMOhIGRpc3Bvw7HDrWJlbCBhIGFudGV2aXNpw7NuIGRhcyBlc2NvbGxhcy4AClByZW1hIDxpbnRybz4gcGFyYSBjb250aW51YXIuACAAICAtLSAlZCUlLCBwcmVtYSAAIChhbGZhYmV0aWNhbWVudGUpACAoZGlzcG8uLCBwcmlvcmlkYWRlKQAgKGRpc3BvLiwgc2VjY2nDs24pACAocG9yIGRpc3Bvw7FpYmlsaWRhZGUpACAocG9yIHByaW9yaWRhZGUpACAocG9yIHNlY2Npw7NuKQAgKHBvciBlc3RhZG8pACAoZXN0YWRvLCBwcmlvcmlkYWRlKQAgKGVzdGFkbywgc2VjY2nDs24pACBub24gc2VtZWxsYSBxdWUgZXN0ZWEgZGlzcG/DscOtYmVsCgAgbWFyY2FyOisvPS8tIGJyZXZlOnYgYXh1ZGE6PwAgbWFyY2FyOisvPS8tIGV4cGFuZGlkbzp2IGF4dWRhOj8AIG91IAAgYnJldmU6diBheHVkYTo/ACBleHBhbmRpZG86diBheHVkYTo/AMKhQnVnIQAlLSpzICVzJXMlczsgICVzIChlcmE6ICVzKS4gJXMAJXMgcGFxdWV0ZXMgJXMAJXMgcGFxdWV0ZXMgJXMgbmEgc2VjY2nDs24gJXMAJXMgcGFxdWV0ZXMgJXMgc2VuIHNlY2Npw7NuACVzIHBhcmEgbcOhaXMAJXMgcGFxdWV0ZXMgbmEgc2VjY2nDs24gJXMAJXMgcGFxdWV0ZXMgc2VuIHNlY2Npw7NuACVzIHBhcmEgdm9sdGFyACogUmVzYWx0YWRvOiBIYXNlIHJlc2FsdGFyIHVuaGEgbGnDsWEgZGEgbGlzdGEgZGUgcGFxdWV0ZXMuIEluZGljYSBxdWUgcGFxdWV0ZXMKICBoYW4gc2VyIGFmZWN0YWRvcyBhbyBwcmVtZXIgIisiLCAiLSIgZSAiXyIuCgoqIEEgbGnDsWEgZGl2aXNvcmEgZG8gbWVkaW8gZGEgcGFudGFsbGEgbW9zdHJhIHVuaGEgYnJldmUgZGVzY3JpY2nDs24gZG8gZXN0YWRvCiAgZG8gcGFxdWV0ZSByZWFsemFkbywgb3UgdW5oYSBkZXNjcmljacOzbiBkbyBncnVwbyByZWFsemFkbyBzZSBlc3TDoQogIHJlYWx6YWRhIHVuaGEgbGnDsWEgZGUgZ3J1cG8uIFNlIG5vbiBlbnRlbmRlIG8gc2lnbmlmaWNhZG8gZGUgYWxnw7puIGRvcwogIGNhcmFjdGVyZXMgZGUgZXN0YWRvIHF1ZSBzZSBtb3N0cmFuLCB2YWlhIGFvIHBhcXVldGUgcmVsZXZhbnRlIGUgbWlyZSBlc3RhCiAgbGnDsWEgZGl2aXNvcmEsIG91IGVtcHJlZ3VlIGEgdGVjbGEgInYiIHBhcmEgdGVyIHVuaGEgcGFudGFsbGEgY29tcGxldGEKICAodm9sdmEgcHJlbWVyICJ2IiBwYXJhIHZvbHRhciBhbyBtb2RvIGFicmV2aWFkbykuCgoqIEEgcGFydGUgZGUgZW1iYWl4byBkYSBwYW50YWxsYSBtb3N0cmEgbcOhaXMgaW5mb3JtYWNpw7NuIGFjZXJjYSBkbyBwYXF1ZXRlCiAgcmVzYWx0YWRvIChzZSBzw7MgaGFpIHVuKS4KCiAgUG9kZSBtb3N0cmFyIHVuaGEgZGVzY3JpY2nDs24gZXh0ZW5kaWRhIGRvIHBhcXVldGUsIG9zIGRldGFsbGVzIGludGVybm9zIGRlCiAgY29udHJvbCBkbyBwYXF1ZXRlIChkYSB2ZXJzacOzbiBpbnN0YWxhZGEgZG8gcGFxdWV0ZSBvdSBkYSBkaXNwb8Oxw61iZWwpIG91CiAgaW5mb3JtYWNpw7NuIGFjZXJjYSBkZSBjb25mbGl0b3MgZSBkZXBlbmRlbmNpYXMgcXVlIGltcGxpY2FuIG8gcGFxdWV0ZSBhY3R1YWwKICAoZW4gc3ViLWxpc3RhcyBkZSByZXNvbHVjacOzbiBkZSBjb25mbGl0b3MgZSBkZXBlbmRlbmNpYXMpLgoKICBFbXByZWd1ZSBhIHRlY2xhICJpIiBwYXJhIHBhc2FyIHBvbGFzIHBhbnRhbGxhLCBlICJJIiBwYXJhIGFnb2NoYXIgYSBwYW50YWxsYQogIGRlIGluZm9ybWFjacOzbiBvdSBwYXJhIGEgZXhwYW5kaXIgcGFyYSBxdWUgZW1wcmVndWUgY2FzZSB0b2RhIGEgcGFudGFsbGEuCgA/AEFicmV2LgBBYm9ydGFyIC0gc2HDrXIgc2VuIGZhY2VyIGNhbWJpbyBuaW5nw7puAE3DqXRvZG8gZGUgYWNjZXNvICIlcyIuAEFjY2nDs25zOgogIGFjY2VzcyB1cGRhdGUgc2VsZWN0IGluc3RhbGwgY29uZmlnIHJlbW92ZSBxdWl0CgoAVG9kb3MAVG9kb3Mgb3MgcGFxdWV0ZXMAQXRyaWJ1dG9zOgoAVmVyLiBkaXNwbwBEaXNwb8Oxw61iZWlzAFZlcnNpw7NuIGRpc3Bvw7HDrWJlbCBkYSBpbmZvcm1hY2nDs24gZG8gZmljaGVpcm8gZGUgY29udHJvbABQYXF1ZXRlcyBkaXNwb8Oxw61iZWlzIChzZW4gaW5zdGFsYXIpAFJvdG9zAFBhcXVldGVzIGluc3RhbGFkb3MgcGVybyByb3RvcwBFc2NvbGxlIG8gbcOpdG9kbyBkZSBhY2Nlc28gYSBlbXByZWdhci4AQ29yZXM6CgBDb25maWd1cmEgb3MgcGFxdWV0ZXMgcXVlIG5vbiBlc3RlYW4gY29uZmlndXJhZG9zLgBDb3B5cmlnaHQgKEMpIDE5OTQtMTk5NiBJYW4gSmFja3Nvbi4KQ29weXJpZ2h0IChDKSAyMDAwLDIwMDEgV2ljaGVydCBBa2tlcm1hbi4KAFBhc2FyIHBvbGFzIHBhbnRhbGxhcyBkZSBpbmZvcm1hY2nDs24ASW50ZXJmYWNlIGRlIHhlc3Rpw7NuIGRlIHBhcXVldGVzICIlcyIgZGUgRGViaWFuIHZlcnNpw7NuICVzLgoAUmVzb2x1Y2nDs24gZGUgZGVwZW5kZW5jaWFzIGUgY29uZmxpdG9zIC0gaW50cm9kdWNpw7NuLgoKVW5oYSBvdSBtw6FpcyBkYXMgc8O6YXMgZXNjb2xsYXMgcHJvZHVjaXUgdW4gcHJvYmxlbWEgZGUgZGVwZW5kZW5jaWFzIG91CmNvbmZsaXRvcyAtIGFsZ8O6bnMgcGFxdWV0ZXMgc8OzIHNlIGRlYmVuIGluc3RhbGFyIGVuIGNvbWJpbmFjacOzbiBjb24gb3V0cm9zLAplIGFsZ3VuaGFzIGNvbWJpbmFjacOzbnMgZGUgcGFxdWV0ZXMgbm9uIHNlIHBvZGVuIGluc3RhbGFyLgoKSGEgdmVyIHVuaGEgc3ViLWxpc3RhIHF1ZSBjb250w6luIG9zIHBhcXVldGVzIGltcGxpY2Fkb3MuIEEgbWV0YWRlIGluZmVyaW9yIGRhCnBhbnRhbGxhIG1vc3RyYSBvcyBjb25mbGl0b3MgZSBkZXBlbmRlbmNpYXMgcmVsZXZhbnRlczsgZW1wcmVndWUgImkiIHBhcmEKcGFzYXIgZGlzbyDDoXMgZGVzY3JpY2nDs25zIGRvcyBwYXF1ZXRlcyBlIMOhIGluZm9ybWFjacOzbiBpbnRlcm5hIGRlIGNvbnRyb2wuCgpDYWxjdWxvdXNlIHVuIGNvbnh1bnRvIGRlIHBhcXVldGVzICJzdXhlcmlkb3MiLCBlIGFzIG1hcmNhcyBpbmljaWFzIGRlc3RhCnN1Yi1saXN0YSB4YSBzZSBlc3RhYmVsZWNlcm9uIGVuIGNvbnNlY3VlbmNpYSwgYXPDrSBxdWUgcG9kZSBzaW1wbGVtZW50ZSBwcmVtZXIKSW50cm8gcGFyYSBhY2VwdGFyIGFzIHN1eGVzdGnDs25zIHNlIHF1ZXJlLiBQb2RlIGFib3J0YXIgYXMgbW9kaWZpY2FjacOzbnMgcXVlCmNhdXNhcm9uIG8gcHJvYmxlbWEgZSB2b2x0YXIgw6EgbGlzdGEgcHJpbmNpcGFsIHByZW1lbmRvIG8gIlgiIG1hacO6c2N1bG8uCgpUYW3DqW4gc2UgcG9kZSBtb3ZlciBwb2xhIGxpc3RhIGUgdHJvY2FyIGFzIG1hcmNhcyBwYXJhIHF1ZSBzZSBhc2VtZWxsZW4gbcOhaXMKYW8gcXVlIHF1ZXJlLCBlIHBvZGUgInJleGVpdGFyIiBhcyBzdXhlc3Rpw7NucyBlbXByZWdhbmRvIGFzIHRlY2xhcyAiRCIgb3UgIlIiCm1hacO6c2N1bGFzIChjb25zdWx0ZSBhIHBhbnRhbGxhIGRlIGF4dWRhIGRlIHRlY2xhcykuIFBvZGUgZW1wcmVnYXIgbyAiUSIgbWFpw7pzY3VsbwpwYXJhIGZvcnphciBhIGFjZXB0YWNpw7NuIGRhIHNpdHVhY2nDs24gcXVlIHNlIG1vc3RyYSwgc2UgcXVlcmUgaWdub3JhciB1bmhhCnJlY29tZW5kYWNpw7NuIG91IHNlIHBlbnNhIHF1ZSBvIHByb2dyYW1hIGVzdMOhIGVxdWl2b2NhZG8uCgpQcmVtYSA8RXNwYXpvPiBwYXJhIHNhw61yIGRhIGF4dWRhIGUgZW50cmFyIG5hIHN1Yi1saXN0YTsgcHJlbWEgIj8iIHBhcmEgYXh1ZGEuCgBEZXNjcmljacOzbgBQYW50YWxsYSwgcGFydGUgMTogbGlzdGFkbyBkZSBwYXF1ZXRlcyBlIGNhcmFjdGVyZXMgZGUgZXN0YWRvAFBhbnRhbGxhLCBwYXJ0ZSAyOiByZXNhbHRhZG8gZGUgbGlzdGFzOyBwYW50YWxsYSBkZSBpbmZvcm1hY2nDs24ARUlBTQBmaW4gZGUgZmljaGVpcm8gYW50ZXMgZG8gY29tZXpvIGRvIG5vbWUgZGEgb3BjacOzbgBmaW4gZGUgZmljaGVpcm8gYW50ZXMgZG8gcmVzdW1vAGZpbiBkZSBmaWNoZWlybyBuYSBjYWRlYSBkZSDDrW5kaWNlAGZpbiBkZSBmaWNoZWlybyBubyBub21lIGRhIG9wY2nDs24AZmluIGRlIGZpY2hlaXJvIG5vIHJlc3VtbyAtIGZhbGxhIHVuIHNhbHRvIGRlIGxpw7FhAEVycm8ARXJybzogAEV4cGxpY2FjacOzbgBFeHRyYQBJciBhbyBmaW5hbCBkYSBsaXN0YQBJciBhbyBjdW1pbyBkYSBsaXN0YQBIYWkgaW5mb3JtYWNpw7NuIGRlIGF4dWRhIGRpc3Bvw7HDrWJlbCBwYXJhIG9zIHNlZ3VpbnRlcyB0ZW1hczoAQXh1ZGE6IABJbXAASW1wb3J0YW50ZQBWZXIuIGluc3QASW5zdGFsYSBlIGFjdHVhbGl6YSBvcyBwYXF1ZXRlcyBzb2xpY2l0YWRvcy4ASW5zdGFsYWRvcwBJbmZvcm1hY2nDs24gZG8gZmljaGVpcm8gZGUgY29udHJvbCBpbnN0YWxhZG8AUGFxdWV0ZXMgaW5zdGFsYWRvcwBFc3TDoSBpbnN0YWxhZG8/AEludGVycmVsYWNpw7NucwBJbnRyb2R1Y2nDs24gw6Egc3VibGlzdGEgZGUgcmVzb2x1Y2nDs24gZGUgY29uZmxpdG9zL2RlcGVuZGVuY2lhcwBJbnRyb2R1Y2nDs24gw6EgcGFudGFsbGEgZGUgc2VsZWNjacOzbiBkZSBtw6l0b2RvcwBJbnRyb2R1Y2nDs24gw6FzIGVzY29sbGFzIGRlIHBhcXVldGVzAEludHJvZHVjacOzbiBhbyBuYXZlZ2Fkb3IgZGEgbGlzdGEgZGUgcGFxdWV0ZXMgZGUgc8OzIGxlY3R1cmEAJXMgIiVzIiBub24gdsOhbGlkbwoAQXNpZ25hY2nDs25zIGRlIHRlY2xhcwBUZWNsYXMAVGVjbGFzIHBhcmEgYSBlc2NvbGxhIGRlIG3DqXRvZG9zAEZhY2VyIG8gcmVhbHphZG8gbWVub3MgZXNwZWPDrWZpY28ARmFjZXIgbyByZWFsemFkbyBtw6FpcyBlc3BlY8OtZmljbwBNYXJjYXIgbyhzKSBwYXF1ZXRlKHMpIHBhcmEgbyhzKSBkZXNpbnRhbGFyIGUgcHVyZ2FyAE1hcmNhciBvKHMpIHBhcXVldGUocykgcGFyYSBvKHMpIGRlc2luc3RhbGFyAE1hcmNhciBvKHMpIHBhcXVldGUocykgcGFyYSBvKHMpIGluc3RhbGFyAE1hcmNhZG8gcGFyYQBUZWNsYXMgZGUgbW92ZW1lbnRvOiBTZWd1aW50ZS9BbnRlcmlvciwgSW5pL0ZpbiwgQXJyaWJhL0FiYWl4bywgQXRyw6FzL0FkaWFudGU6CiAgRnJlY2hhLWFiYWl4bywgaiAgICAgIEZyZWNoYS1hcnJpYmEsIGsgICAgICAgIG1vdmVyIG8gcmVhbHphZG8KICBOLCBBdlDDoXgsIEVzcGF6byAgICAgIFAsIFJlUMOheCwgUmV0cm9jZXNvICAgICBkZXNwcmF6YXIgYSBsaXN0YSAxIHDDoXhpbmEKICBebiAgICAgICAgICAgICAgICAgICAgXnAgICAgICAgICAgICAgICAgICAgICAgZGVzcHJhemFyIGEgbGlzdGEgMSBsacOxYQogIHQsIEluaWNpbyAgICAgICAgICAgICBlLCBGaW4gICAgICAgICAgICAgICAgICBzYWx0YXIgYW8gaW5pY2lvL2ZpbiBkYSBsaXN0YQogIHUgICAgICAgICAgICAgICAgICAgICBkICAgICAgICAgICAgICAgICAgICAgICBkZXNwcmF6YXIgYSBpbmZvcm1hY2nDs24gMSBww6F4LgogIF51ICAgICAgICAgICAgICAgICAgICBeZCAgICAgICAgICAgICAgICAgICAgICBkZXNwcmF6YXIgYSBpbmZvcm1hY2nDs24gMSBsacOxYQogIEIsIEZyZWNoYS1lc3F1ZXJkYSAgICBGLCBGcmVjaGEtZGVyZWl0YSAgICAgICBtb3ZlciAxLzMgZGUgcGFudGFsbGEKICBeYiAgICAgICAgICAgICAgICAgICAgXmYgICAgICAgICAgICAgICAgICAgICAgbW92ZXIgYSBwYW50YWxsYSAxIGNhcsOhY3RlcgoKTWFyY2FyIHBhcXVldGVzIHBhcmEgcG9zdGVyaW9yIHByb2Nlc2FtZW50bzoKICssIEluc2VydCAgaW5zdGFsYXIgb3UgYWN0dWFsaXphciAgPSwgSCAgcmV0ZXIgbm8gZXN0YWRvIGFjdHVhbAogLSwgU3VwciAgICBlbGltaW5hciAgICAgICAgICAgICAgICA6LCBHICBsaWJlcmFyOiBhY3R1YWxpemFyIG91IG5vbiBpbnN0YWxhcgogXyAgICAgICAgICBlbGltaW5hciBlIHB1cmdhciBjb25maWcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFyaW9zOgpTYcOtciwgc29icmVzY3JpYmlyIChvbGxvIMOhcyBtYWnDunNjdWxhcyk6ICAgICAgPywgRjEgcGVkaXIgYXh1ZGEKIEludHJvICAgQ29uZmlybWFyLCBzYcOtciAoY29tcHJvYmFyIGRlcHMpICAgICBpLCBJICBwYW50YWxsYXMgZGUgaW5mb3JtYWNpw7NuCiAgIFEgICAgIENvbmZpcm1hciwgc2HDrXIgKGlnbm9yYXIgZGVwcykgICAgICAgbywgTyAgb3BjacOzbnMgZGUgb3JkZWFtZW50bwogWCwgRXNjICBTYcOtciwgYWJhbmRvbmFyIG9zIGNhbWJpb3MgICAgICAgICAgIHYsIFYgIG9wY2nDs25zIGRhIHBhbnQuIGRlIGVzdGFkbwogICBSICAgICBWb2x0YXIgYW8gZXN0YWRvIGFudGVyaW9yIMOhIGxpc3RhICAgICBebCAgIHJlZGVidXhhciBwYW50YWxsYQogICBVICAgICBFc3RhYmVsZWNlciB0b2RvIGFvIGVzdGFkbyBzdXhlcmlkbyAgICAgLyAgIHByb2N1cmFyIChJbnRybyBwYXJhIGNhbmNlbC4pCiAgIEQgICAgIEVzdGFibGVjZSBvIGVzdGFkbyBzb2xpY2l0YWRvICAgICAgICBuLCBcXCAgcmVwZXRpciBhIMO6bHRpbWEgcHJvY3VyYQoAVGVjbGFzIGRlIG1vdmVtZW50bzogU2VndWludGUvQW50ZXJpb3IsIEluaS9GaW4sIEFycmliYS9BYmFpeG8sIEF0csOhcy9BZGlhbnRlOgogIEZyZWNoYS1hYmFpeG8sIGogICAgICBGcmVjaGEtYXJyaWJhLCBrICAgICAgICBtb3ZlciBvIHJlYWx6YWRvCiAgTiwgQXZQw6F4LCBFc3Bhem8gICAgICBQLCBSZVDDoXgsIFJldHJvY2VzbyAgICAgZGVzcHJhemFyIGEgbGlzdGEgMSBww6F4aW5hCiAgXm4gICAgICAgICAgICAgICAgICAgIF5wICAgICAgICAgICAgICAgICAgICAgIGRlc3ByYXphciBhIGxpc3RhIDEgbGnDsWEKICB0LCBJbmljaW8gICAgICAgICAgICAgZSwgRmluICAgICAgICAgICAgICAgICAgc2FsdGFyIGFvIGluaWNpby9maW4gZGEgbGlzdGEKICB1ICAgICAgICAgICAgICAgICAgICAgZCAgICAgICAgICAgICAgICAgICAgICAgZGVzcHJhemFyIGEgaW5mb3JtYWNpw7NuIDEgcMOheC4KICBedSAgICAgICAgICAgICAgICAgICAgXmQgICAgICAgICAgICAgICAgICAgICAgZGVzcHJhemFyIGEgaW5mb3JtYWNpw7NuIDEgbGnDsWEKICBCLCBGcmVjaGEtZXNxdWVyZGEgICAgRiwgRnJlY2hhLWRlcmVpdGEgICAgICAgbW92ZXIgMS8zIGRlIHBhbnRhbGxhCiAgXmIgICAgICAgICAgICAgICAgICAgIF5mICAgICAgICAgICAgICAgICAgICAgIG1vdmVyIGEgcGFudGFsbGEgMSBjYXLDoWN0ZXIKKFNvbiBhcyBtZXNtYXMgdGVjbGFzIGRlIG1vdmVtZW50byBxdWUgbmEgcGFudGFsbGEgZGUgbGlzdGEgZGUgcGFxdWV0ZXMpLgoKU2HDrXI6CiBJbnRybyAgIGVzY29sbGVyIGVzdGUgbcOpdG9kbyBlIGlyIGFvIHNldSBkacOhbG9nbyBkZSBjb25maWd1cmFjacOzbgogeCwgWCAgICBzYcOtciBzZW4gdHJvY2FyIG91IGNvbmZpZ3VyYXIgbyBtw6l0b2RvIGRlIGluc3RhbGFjacOzbgoKVmFyaW9zOgogID8sIEF4dWRhLCBGMSAgICBwZWRpciBheHVkYQogXmwgICAgICAgICAgICAgICB2b2x2ZXIgZGVidXhhciBhIHBhbnRhbGxhCiAgLyAgICAgICAgICAgICAgIHByb2N1cmFyIChwcmVtYSBzw7MgSW50cm8gcGFyYSBjYW5jZWxhcikKICBcICAgICAgICAgICAgICAgcmVwZXRpciBhIMO6bHRpbWEgcHJvY3VyYQoAQmFpeGFyAFN1YmlyAE5vdm9zAFBhcXVldGVzIGRpc3Bvw7HDrWJlaXMgbm92b3MATm9uIGhhaSBuZW5ndW5oYSBkZXNjcmljacOzbiBkaXNwb8Oxw61iZWwuAE5vbiBoYWkgbmVuZ3VuaGEgZXhwbGljYWNpw7NuIGRpc3Bvw7HDrWJlbC4ARXNwZWNpZmljYWNpw7NuIGRlIGNvcmVzIG51bGEKAFBhcXVldGVzIG9ic29sZXRvcyBlIGxvY2FpcyBwcmVzZW50ZXMgbm8gc2lzdGVtYQBPYnNvbGV0b3MvbG9jYWlzAE1hcmNhIGFudGlnYQBPcGMAT3BjaW9uYWwAT3BjacOzbnM6CiAgLS1hZG1pbmRpciA8ZGlyZWN0b3Jpbz4gICAgRW1wcmVnYSBvIDxkaXJlY3RvcmlvPiBubyBjYW50byBkZSAlcy4KICAtLWV4cGVydCAgICAgICAgICAgICAgICAgICBBY3RpdmEgbyBtb2RvIGV4cGVydG8uCiAgLS1kZWJ1ZyA8ZmljaD4gfCAtRDxmaWNoPiAgQWN0aXZhIGEgZGVwdXJhY2nDs24sIGdhZGEgYSBzYcOtZGEgbm8gPGZpY2g+ZWlyby4KICAtLWNvbG91ciB8IC0tY29sb3IgcGFydGU6W3RleHRvXSxbZm9uZG9dWzphdHJpYlsrYXRyaWIrLi4uXV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb25maWd1cmEgYXMgY29yZXMgZGEgcGFudGFsbGEuCgoAUGFxdWV0ZQBQcmVtYSA8aW50cm8+IHBhcmEgY29udGludWFyLgoAUHJlbWEgPyBwYXJhIG8gbWVuw7ogZGUgYXh1ZGEsIC4gcGFyYSBvIHNlZ3VpbnRlIHRlbWEsIDxlc3Bhem8+IHBhcmEgc2HDrXIuAFByZW1hIG51bmhhIHRlY2xhIGRhIGxpc3RhIGRlIHJpYmEsIDxlc3Bhem8+IG91ICJxIiBwYXJhIHNhw61yIGRhIGF4dWRhLAogIG91ICIuIiAocHVudG8pIHBhcmEgbGVyIGFzIHDDoXhpbmFzIGRlIGF4dWRhIHVuaGEgcG9yIHVuaGEuIABQcmlvcmlkYWRlAFB1cmdhZG9zAFBhcXVldGVzIHB1cmdhZG9zIGUgbm9uIGluc3RhbGFkb3MgbnVuY2EAU2FlIGRlIGRzZWxlY3QuAFNhw61yIHNlbiB0cm9jYXIgbyBtw6l0b2RvIGRlIGFjY2VzbyBlc2NvbGxpZG8AU2HDrXIsIGNvbmZpcm1hbmRvIHNlbiBjb21wcm9iYXIAU2HDrXIsIGNvbmZpcm1hbmRvIGUgY29tcHJvYmFuZG8gYXMgZGVwZW5kZW5jaWFzAFNhw61yLCByZXhlaXRhbmRvIGFzIHN1eGVzdGnDs25zIGRlIGNvbmZsaXRvcy9kZXBlbmRlbmNpYXMAUkVJTlNUQUxBUgBEZWJ1eGFyIGRlIG5vdm8gYSBwYW50YWxsYQBFbGltaW5hIG8gc29mdHdhcmUgbm9uIGRlc2V4YWRvLgBFbGltaW5hZG9zAFBhcXVldGVzIGVsaW1pbmFkb3MgZSBxdWUgeGEgbm9uIGVzdMOhbiBkaXNwb8Oxw61iZWlzAFBhcXVldGVzIGVsaW1pbmFkb3MgKGHDrW5kYSBlc3TDoSBwcmVzZW50ZSBhIGNvbmZpZ3VyYWNpw7NuKQBSZXBldGlyIGEgw7psdGltYSBwcm9jdXJhLgBSZXEAU29saWNpdGFyIGF4dWRhIChwYXNhciBwb2xhcyBwYW50YWxsYXMgZGUgYXh1ZGEpAEVzY29sbGUgb3MgcGFxdWV0ZXMgcXVlIHNlIHF1ZXJlbiBubyBzaXN0ZW1hLgBSZXF1ZXJpZG8AVm9sdGFyIHRvZG9zIG9zIHBhcXVldGVzIGFvIGVzdGFkbyBjbyBxdWUgZXN0w6FuIGluc3RhbGFkb3MAVm9sdGFyIHRvZG9zIG9zIHBhcXVldGVzIGFvIGVzdGFkbyBzb2xpY2l0YWRvIGRpcmVjdGFtZW50ZQBWb2x0YXIgdG9kb3Mgb3MgcGFxdWV0ZXMgYW8gZXN0YWRvIGFudGlnbwBWb2x0YXIgdG9kb3Mgb3MgcGFxdWV0ZXMgYW8gZXN0YWRvIHN1eGVyaWRvAFBhcnRlcyBkYSBwYW50YWxsYToKAFJldHJvY2VkZXIgcG9sYSBheHVkYS9pbmZvcm1hY2nDs24AUmV0cm9jZWRlciAxIGxpw7FhIG5hIGF4dWRhL2luZm9ybWFjacOzbgBSZXRyb2NlZGVyIHBvbGEgbGlzdGEAUmV0cm9jZWRlciAxIGxpw7FhIG5hIGxpc3RhAEF2YW56YXIgcG9sYSBheHVkYS9pbmZvcm1hY2nDs24AQXZhbnphciAxIGxpw7FhIG5hIGF4dWRhL2luZm9ybWFjacOzbgBBdmFuemFyIHBvbGEgbGlzdGEAQXZhbnphciAxIGxpw7FhIG5hIGxpc3RhAEJ1c2NhciA/IABQcm9jdXJhciB1biBwYXF1ZXRlIGN1biBub21lIHF1ZSBjb250w6luIHVuaGEgY2FkZWEAU2VjY2nDs24ARXNjb2xsZXIgbyBtw6l0b2RvIGRlIGFjY2VzbyByZWFsemFkbwBFc3RhYmVsZXphIGNvcnJlY3RhbWVudGUgYSB2YXJpw6FiZWwgVEVSTSwgZW1wcmVndWUgdW4gdGVybWluYWwgbWVsbG9yCm91IGVtcHJlZ3VlIGEgZmVycmFtZW50YSBkZSB4ZXN0acOzbiBwYXF1ZXRlIGEgcGFxdWV0ZSAlcy4KAEVzdMOhbmRhcgBFc3QAVHJvY2FyIGEgb3JkZSBkZSBwcmlvcmlkYWRlL3NlY2Npw7NuAFNlbWVsbGEgcXVlIG8gdGVybWluYWwgbm9uIHNvcG9ydGEgbG9jYWxpemFjacOzbiBkbyBjdXJzb3IuCgBTZW1lbGxhIHF1ZSBvIHRlcm1pbmFsIG5vbiBzb3BvcnRhIHJlYWx6YWRvLgoAQSBsacOxYSBxdWUgcmVhbHpvdSByZXByZXNlbnRhIHZhcmlvcyBwYXF1ZXRlczsgc2Ugc29saWNpdGEgaW5zdGFsYWxhLCBlbGltaW5hbGEsIHJldGVsYSwgZXRjLiwgdmFpIGFmZWN0YXIgYSB0b2RvcyBvcyBwYXF1ZXRlcyBxdWUgY2FzYW4gY28gY3JpdGVyaW8gcXVlIHNlIGFtb3NhLgoKU2UgZGVzcHJhemEgbyByZWFsemFkbyBhIHVuaGEgbGnDsWEgZHVuIHBhcXVldGUgY29uY3JldG8gaGEgdmVyIG1vc3RyYWRhIGFxdcOtIGEgaW5mb3JtYWNpw7NuIGRlc2UgcGFxdWV0ZS4KUG9kZSBlbXByZWdhciAibyIgZSAiTyIgcGFyYSB0cm9jYXIgYSBvcmRlIGUgcGFyYSB0ZXIgYSBwb3NpYmlsaWRhZGUgZGUgbWFyY2FyIHBhcXVldGVzIGRlIGRpc3RpbnRvcyB0aXBvcyBkZSBncnVwb3MuAEEgbWV0YWRlIHN1cGVyaW9yIGRhIHBhbnRhbGxhIG1vc3RyYSB1bmhhIGxpc3RhIGRlIHBhcXVldGVzLiBFbiBjYWRhIHBhcXVldGUKcG9kZSB2ZXIgY2F0cm8gY29sdW1uYXMgcGFyYSBvIHNldSBlc3RhZG8gYWN0dWFsIG5vIHNpc3RlbWEgZSBhIG1hcmNhLiBObyBtb2RvCmFicmV2aWFkbyAoZW1wcmVndWUgInYiIHBhcmEgdHJvY2FyIGVudHJlIG1vZG8gYWJyZXZpYWRvIGUgZXhwYW5kaWRvKSBoYWkKY2FyYWN0ZXJlcyBzaW1wbGVzLiBEYSBlc3F1ZXJkYSDDoSBkZXJlaXRhOgoKIEVycm86IEVzcGF6byAtIG5pbmfDum4gKHBlcm8gbyBwYXF1ZXRlIHBvZGUgZXN0YXIgcm90bywgbWlyZSBlbWJhaXhvKTsKICAgICAgICAgIlIiICAtIGVycm8gZ3JhdmUgbmEgaW5zdGFsYWNpw7NuLCBoYWkgcXVlIHJlaW5zdGFsYXI7CiBFc3RhZG8gaW5zdGFsYWRvOiBFc3Bhem8gLSBzZW4gaW5zdGFsYXI7CiAgICAgICAgICAgICAgICAgICAgICIqIiAgLSBpbnN0YWxhZG87CiAgICAgICAgICAgICAgICAgICAgICItIiAgLSBzZW4gaW5zdGFsYXIgcGVybyBoYWkgZmljaGVpcm9zIGRlIGNvbmZpZ3VyYWNpw7NuOwogICAgICAgb3MgcGFxdWV0ZXMgeyAiVSIgICAgICAgIC0gZGVzZW1wYXF1ZXRhZG8gcGVybyBzZW4gY29uZmlndXJhcjsKICAgIG5lc3RlcyBlc3RhZG9zIHsgIkMiICAgICAgICAtIG1lZGlvIGNvbmZpZ3VyYWRvIChob3VibyB1biBlcnJvKTsKICAgICBub24gZXN0w6FuIGJlbiB7ICJJIiAgICAgICAgLSBtZWRpbyBpbnN0YWxhZG8gKGhvdWJvIHVuIGVycm8pLgogICAgICBpbnN0YWxhZG9zICAgeyAiVyIsICJ0IiAtIGhhaSBkZXNlbmNhZGVhbnRlcyBhIGFnYXJkYXIgcmVzcG9zdGFzLgogTWFyY2EgYW50aWdhOiBvIHF1ZSBzZSBzb2xpY2l0b3UgbmVzdGUgcGFxdWV0ZSBhbnRlcyBkZSBtb3N0cmFyIGEgbGlzdGE7CiBNYXJjYTogbyBxdWUgc2Ugc29saWNpdGEgcGFyYSBlc3RlIHBhcXVldGU6CiAgICAgICAgIioiOiBtYXJjYWRvIHBhcmEgaW5zdGFsYWNpw7NuIG91IGFjdHVhbGl6YWNpw7NuOwogICAgICAgICItIjogbWFyY2FkbyBwYXJhIGVsaW1pbmFjacOzbiwgcGVybyBjb25zZXJ2YW5kbyBhIGNvbmZpZ3VyYWNpw7NuOwogICAgICAgICI9IjogcmV0aWRvOiBvIHBhcXVldGUgbm9uIHNlIHByb2Nlc2EgZW4gYWJzb2x1dG87CiAgICAgICAgIl8iOiBtYXJjYWRvIHBhcmEgcHVyZ2FkbyAtIHRhbcOpbiBzZSBlbGltaW5hIGEgY29uZmlndXJhY2nDs247CiAgICAgICAgIm4iOiBvIHBhcXVldGUgw6kgbm92byBlIGHDrW5kYSBub24gZXN0w6EgbWFyY2FkbyBwYXJhIGluc3RhbC4vZWxpbS4vZXRjLgoKVGFtw6luIHNlIG1vc3RyYW4sIHBhcmEgY2FkYSBwYXF1ZXRlLCBhIFByaW9yaWRhZGUsIFNlY2Npw7NuLCBub21lLCB2ZXJzacOzbnMKaW5zdGFsYWRhIGUgZGlzcG/DscOtYmVsIChtYWnDunNjLVYgcGFyYSBtb3N0cmFyL2Fnb2NoYXIpIGUgZGVzY3JpY2nDs24gcmVzdW1pZGEuCgBFc2NyaWJhIGRzZWxlY3QgLS1oZWxwIHBhcmEgb2J0ZXIgYXh1ZGEuAFNlbiBjbGFzaWZpY2FyAFBhcXVldGVzIGluc3RhbGFkb3MgZSBhbyBkw61hAEFvIGTDrWEAQWN0dWFsaXphIGEgbGlzdGEgZGUgcGFxdWV0ZXMgZGlzcG/DscOtYmVpcywgc2Ugw6kgcG9zw61iZWwuAEFjdHVhbGl6YWRvcwBQYXF1ZXRlcyBhY3R1YWxpemFkb3MgKGhhaSB1bmhhIG5vdmEgdmVyc2nDs24gZGlzcG/DscOtYmVsKQBFbXByZWdvOiAlcyBbPG9wY2nDs24+IC4uLl0gWzxhY2Npw7NuPiAuLi5dCgoAQmVudmlkbyDDoSBsaXN0YSBwcmluY2lwYWwgZGUgcGFxdWV0ZXMgZGUgZHNlbGVjdAoKSMOhc2VsbGUgcHJlc2VudGFyIHVuaGEgbGlzdGEgZGUgcGFxdWV0ZXMgcXVlIGVzdMOhbiBpbnN0YWxhZG9zIG91IGRpc3Bvw7HDrWJlaXMKcGFyYSBvcyBpbnN0YWxhci4gQ29tbyBub24gdGVuIHByaXZpbGV4aW9zIGRhYm9uZG8gcGFyYSBhY3R1YWxpemFyIG9zIGVzdGFkb3MKZG9zIHBhcXVldGVzLCBlc3TDoSBudW4gbW9kbyBkZSBzw7MgbGVjdHVyYS4gUG9kZSBuYXZlZ2FyIHBvbGEgbGlzdGEgZW1wcmVnYW5kbwphcyBmcmVjaGFzIGRvIGN1cnNvciAoY29uc3VsdGUgYSBwYW50YWxsYSBkZSBheHVkYSAiVGVjbGFzIiksIG9ic2VydmFyIG9zIGVzdGFkb3MKZG9zIHBhcXVldGVzIGUgbGVyIGluZm9ybWFjacOzbiBzb2JyZSBlbGVzLgoKRGViZXLDrWEgbGVyIGEgbGlzdGEgZGUgdGVjbGFzIGUgYXMgZXhwbGljYWNpw7NucyBkYSBwYW50YWxsYS4gSGFpIG1vaXRhIGF4dWRhCmVuIGxpw7FhIGRpc3Bvw7HDrWJlbCwgZW1wcsOpZ3VlYSwgcHJlbWEgIj8iIGVuIGNhbHF1ZXJhIG1vbWVudG8gcGFyYSB0ZXIgYXh1ZGEuCgpDYW5kbyByZW1hdGUgZGUgYm90YXIgdW5oYSBvbGxhZGEsIHByZW1hICJRIiBvdSA8SW50cm8+IHBhcmEgc2HDrXIuCgpQcmVtYSA8RXNwYXpvPiBwYXJhIHNhw61yIGRhIGF4dWRhIGUgZW50cmFyIGFnb3JhIG5hIGxpc3RhLgoAQmVudmlkbyDDoSBsaXN0YSBwcmluY2lwYWwgZGUgcGFxdWV0ZXMgZGUgZHNlbGVjdAoKSMOhc2VsbGUgcHJlc2VudGFyIHVuaGEgbGlzdGEgZGUgcGFxdWV0ZXMgcXVlIGVzdMOhbiBpbnN0YWxhZG9zIG91IGRpc3Bvw7HDrWJlaXMKcGFyYSBvcyBpbnN0YWxhci4gUG9kZSBuYXZlZ2FyIHBvbGEgbGlzdGEgZW1wcmVnYW5kbyBhcyBmcmVjaGFzIGRvIGN1cnNvciwKbWFyY2FyIHBhcXVldGVzIHBhcmEgb3MgaW5zdGFsYXIgKGVtcHJlZ2FuZG8gIisiKSBvdSBwYXJhIG9zIGRlc2luc3RhbGFyCihlbXByZWdhbmRvICItIikuIE9zIHBhcXVldGVzIHDDs2RlbnNlIG1hcmNhciB1biBhIHVuIG91IHBvciBncnVwb3MuIEFvCnByaW5jaXBpbyBoYSB2ZXIgcXVlIGEgbGnDsWEgIlRvZG9zIG9zIHBhcXVldGVzIiBlc3TDoSBlc2NvbGxpZGEuICIrIiwgIi0iIGUKdG9kbyBpc28gaGFuIGFmZWN0YXIgYSB0b2RvcyBvcyBwYXF1ZXRlcyBkZXNjcml0b3MgcG9sYSBsacOxYSByZXNhbHRhZGEuCgpBbGd1bmhhcyBkYXMgc8O6YXMgYWNjacOzbnMgaGFuIGNhdXNhciBjb25mbGl0b3Mgb3UgcHJvYmxlbWFzIGRlIGRlcGVuZGVuY2lhczsKaMOhc2VsbGUgZm9ybmVjZXIgdW5oYSBzdWItbGlzdGEgY29zIHBhcXVldGVzIHJlbGV2YW50ZXMgcGFyYSBxdWUgcG9pZGEKc29sdWNpb25hciBvcyBwcm9ibGVtYXMuCgpEZWJlcsOtYSBsZXIgYSBsaXN0YSBkZSB0ZWNsYXMgZSBhcyBleHBsaWNhY2nDs25zIGRhIHBhbnRhbGxhLiBIYWkgbW9pdGEgYXh1ZGEKZW4gbGnDsWEgZGlzcG/DscOtYmVsLCBlbXByw6lndWVhLCBwcmVtYSAiPyIgZW4gY2FscXVlcmEgbW9tZW50byBwYXJhIHRlciBheHVkYS4KCkNhbmRvIHJlbWF0ZSBkZSBlc2NvbGxlciBvcyBwYXF1ZXRlcywgcHJlbWEgPEludHJvPiBwYXJhIGNvbmZpcm1hciBhcwptb2RpZmljYWNpw7Nucywgb3UgIlgiIHBhcmEgc2HDrXIgc2VuIGdhcmRhbGFzLiBIYXNlIHJlYWxpemFyIHVuaGEgZGVycmFkZWlyYQpjb21wcm9iYWNpw7NuIGRlIGNvbmZsaXRvcyBlIGRlcGVuZGVuY2lhcywgb25kZSB0YW3DqW4gaGEgdmVyIHVuaGEgc3ViLWxpc3RhLgoKUHJlbWEgPEVzcGF6bz4gcGFyYSBzYcOtciBkYSBheHVkYSBlIGVudHJhciBhZ29yYSBuYSBsaXN0YS4KAFh0cgBbQV1jY2VzbwBbQ11vbmZpZ3VyYXIAW0ldbnN0YWxhcgBbU11hw61yAFtFXWxpbWluYXIARVtTXWNvbGxlcgBBY3RbVV1hbGl6YXIAW3NlbiBhc2lnbmFyXQBbZGVzYzogJWRdAGEAYSBhZ2FyZGFyIHF1ZSBzZSBwcm9jZXNlIG8gZGVzZW5jYWRlYW50ZQBiVUcAcmFjaGEAYwBjb3IAYXRyaWJ1dG8gZGUgY29yZXMAdGVuIGNvbmZsaXRvcyBjb24Abm9uIGZvaSBwb3PDrWJlbCBhYnJpciBvIGZpY2hlaXJvIGRlIGRlcHVyYWNpw7NuICIlLjI1NXMiCgBkZXBlbmRlIGRlAGEgY2hhbWFkYSBhIGRvdXBkYXRlIGZhbGxvdQBhIGNoYW1hZGEgYSBkb3VwZGF0ZSBubyBtYW5leGFkb3IgZGUgU0lHV0lOQ0ggZmFsbG91AGRzZWxlY3QgLSBpbnNwZWNjacOzbiBkb3MgZXN0YWRvcyBkb3MgcGFxdWV0ZXMAZHNlbGVjdCAtIGxpc3RhIGRlIG3DqXRvZG9zIGRlIGFjY2VzbwBkc2VsZWN0IC0gbGlzdGEgcHJpbmNpcGFsIGRlIHBhcXVldGVzAGRzZWxlY3QgLSBsaXN0YSByZWN1cnNpdmEgZGUgcGFxdWV0ZXMAZHNlbGVjdCBlIGRwa2cgcG9kZW4gZmFjZXIgaW5zdGFsYWNpw7NuIGF1dG9tw6F0aWNhLCBjYXJnYW5kbyBvcyBmaWNoZWlyb3MgY29zCnBhcXVldGVzIGEgaW5zdGFsYXIgZGUgdmFyaW9zIHNpdGlvcyBkaWZlcmVudGVzLgoKRXN0YSBsaXN0YSBwZXJtw610ZWxsZSBlc2NvbGxlciB1biBkZXNlcyBtw6l0b2RvcyBkZSBpbnN0YWxhY2nDs24uCgpNb3ZhIG8gcmVhbHphZG8gYW8gbcOpdG9kbyBxdWUgcXVlcmUgZW1wcmVnYXIgZSBwcmVtYSBJbnRyby4gSMOhc2VsbGUgcGVkaXIKYSBpbmZvcm1hY2nDs24gcXVlIHNlIHByZWNpc2UgcGFyYSBmYWNlciBhIGluc3RhbGFjacOzbi4KCkFvIG1vdmVyIG8gcmVhbHphZG8gcGFyZWNlIHVuaGEgZGVzY3JpY2nDs24gZGUgY2FkYSBtw6l0b2RvLCBjYW5kbyBhIGhhaSwKbmEgbWV0YWRlIGluZmVyaW9yIGRhIHBhbnRhbGxhLgoKU2UgcXVlcmUgc2HDrXIgc2VuIHRyb2NhciBuYWRhIGVtcHJlZ3VlIGEgdGVjbGEgIngiIG5hIGxpc3RhIGRlIG3DqXRvZG9zCmRlIGluc3RhbGFjacOzbi4KCkhhaSB1bmhhIGxpc3RhIGNvbXBsZXRhIGRlIHRlY2xhcyBkaXNwb8Oxw61iZWwgcGFyYSBhIHZlciBwcmVtZW5kbyAiayIgYWdvcmEsCm91IG5vIG1lbsO6IGRlIGF4dWRhIHF1ZSBzZSBwb2RlIHZlciBwcmVtZW5kbyAiPyIuCgBtZWxsb3JhAGVycm8gbmEgbGVjdHVyYSBkbyBmaWNoZWlybyBkZSBvcGNpw7NucyBkbyBtw6l0b2RvICIlLjI1MHMiAGVycm8gbmEgbGVjdHVyYSBkbyBmaWNoZWlybyBkZSBkZXNjcmljacOzbiBkYSBvcGNpw7NuICIlLjI1NXMiAGVycm8gbmEgZXhwcmVzacOzbiByZWd1bGFyAGVycm8gYW8gbGVyIG8geHVzdGlmaWNhbnRlIGRlIHJlY2VwY2nDs24gZGEgbWVuc2F4ZSBkZSBmYWxsbyBkbyBwcm9ncmFtYQBlcnJvIGFvIGxlciBvIHRlY2xhZG8gbmEgYXh1ZGEAZXJybyBhbyBsZXIgbyBmaWNoZWlybyBkZSBvcGNpw7NucyAiJS4yNTBzIgBub24gZm9pIHBvc8OtYmVsIHJlc2VydmFyIHVuIHBhciBkZSBjb3JlcwBub24gZm9pIHBvc8OtYmVsIGJsb3F1ZWFyIFNJR1dJTkNIAG5vbiBmb2kgcG9zw61iZWwgY3JlYXIgbyBwYW5lbCBkZSBiYXNlbGlzdABub24gZm9pIHBvc8OtYmVsIGNyZWFyIG8gcGFuZWwgZGUgY2FiZWNlaXJhcwBub24gZm9pIHBvc8OtYmVsIGNyZWFyIG8gcGFuZWwgZGUgaW5mb3JtYWNpw7NuAG5vbiBmb2kgcG9zw61iZWwgY3JlYXIgYSBmaWVzdHJhIGRlIGNvbnN1bHRhcwBub24gZm9pIHBvc8OtYmVsIGNyZWFyIG8gcGFuZWwgZGUgZXN0YWRvAG5vbiBmb2kgcG9zw61iZWwgY3JlYXIgYSBmaWVzdHJhIGRlIHTDrXR1bG8Abm9uIGZvaSBwb3PDrWJlbCBjcmVhciBhIGZpZXN0cmEgZGUgd2hhdGluZm8Abm9uIGZvaSBwb3PDrWJlbCBvYnRlciBvIGFudGlnbyBtYW5leGFkb3IgZGUgU0lHV0lOQ0gAbm9uIGZvaSBwb3PDrWJlbCBvYnRlciBhIGFudGlnYSBtw6FzY2FyYSBkZSBzaW5haXMAbm9uIGZvaSBwb3PDrWJlbCBjaGFtYXIgYSBnZXRjaCBubyBtZW7DuiBwcmluY2lwYWwAbm9uIGZvaSBwb3PDrWJlbCB2b2x2ZXIgYmxvcXVlYXIgU0lHV0lOQ0gAbm9uIGZvaSBwb3PDrWJlbCBsZXIgbyBmaWNoZWlybyBkZSBkZXNjcmljacOzbiBkYSBvcGNpw7NuICIlLjI1MHMiAG5vbiBmb2kgcG9zw61iZWwgcmVjdXBlcmFyIG8gYW50aWdvIG1hbmV4YWRvciBkZSBTSUdXSU5DSABub24gZm9pIHBvc8OtYmVsIHJlY3VwZXJhciBhIGFudGlnYSBtw6FzY2FyYSBkZSBzaW5haXMAbm9uIGZvaSBwb3PDrWJlbCBlc3RhYmVsZWNlciBvIG5vdm8gbWFuZXhhZG9yIGRlIFNJR1dJTkNIAG5vbiBmb2kgcG9zw61iZWwgZGVzYmxvcXVlYXIgU0lHV0lOQ0gAYSBjaGFtYWRhIGEgZ2V0Y2ggZmFsbG91AG1lZGlvIGluc3RhbGFkbwByZXRlcgBpAGNhZGVhIGRlIMOtbmRpY2UgbG9uZ2EgZGUgbcOhaXMAaW5zdGFsYXIAc2NyaXB0IGRlIGluc3RhbGFjacOzbgBpbnN0YWxhZG8AZm9ybmVjZXVzZSB1bmhhIG9wY2nDs24gZGUgcHJvY3VyYSBub24gdsOhbGlkYQBpb2N0bChUSU9DR1dJTlNaKSBmYWxsb3UAbWVuw7oAbyBtw6l0b2RvICIlLjI1MHMiIHRlbiB1biBub21lIGxvbmdvIGRlIG3DoWlzICglZCA+ICVkIGNhcmFjdGVyZXMpAG5vdm8gcGFxdWV0ZQBzYWx0byBkZSBsacOxYSBhbnRlcyBkbyBjb21lem8gZG8gbm9tZSBkYSBvcGNpw7NuAHNhbHRvIGRlIGxpw7FhIGFudGVzIGRvIHJlc3VtbwBjYXLDoWN0ZXIgbm9uIGFsZmFudW3DqXJpY28gbm8gbm9tZSBkYSBvcGNpw7NuAGFsZ28gZGlzdGludG8gZHVuIGTDrXhpdG8gb25kZSBzZSBlc3BlcmFiYSB1bgBjYXLDoWN0ZXIgbm9uIGFsZmFudW3DqXJpY28gb25kZSBzZSBhZ2FyZGFiYSBvIGNvbWV6byBkbyBub21lIGRhIG9wY2nDs24Ac2VuIGluc3RhbGFyAHByZS1kZXBlbmRlIGRlAGZvcm5lY2UAcHVyZ2FyAHMAc2NyaXB0IGRlIGNvbnN1bHRhL2NvbmZpZ3VyYWNpw7NuAGUAcmVjb21lbmRhAGVsaW1pbmFyAGVsaW1pbmFkbyAocXVlZGEgY29uZmlnKQBzdWJzdGl0w7plIGEAcwBwYXJ0ZSBkYSBwYW50YWxsYQBzdXhpcmUAZXJybyBkZSBzaW50YXhlIG5vIGZpY2hlaXJvIGRlIG9wY2nDs25zIGRvIG3DqXRvZG8gIiUuMjUwcyIgLS0gJXMAbyB0ZXJtaW5hbCBub24gdGVuIGNhcmFjdGVyw61zdGljYXMgbmVjZXNhcmlhczsgc8OhZXNlAGRlc2VuY2FkZWFkbwB1AG5vbiBmb2kgcG9zw61iZWwgYWNjZWRlciBhbyBzY3JpcHQgZGUgbcOpdG9kbyAiJS4yNTBzIgBub24gZm9pIHBvc8OtYmVsIHBlY2hhciBvIG5vdm8gZmljaGVpcm8gZGUgb3BjacOzbnMgIiUuMjUwcyIAbm9uIGZvaSBwb3PDrWJlbCBpbnN0YWxhciBhIG5vdmEgb3BjacOzbiBjb21hICIlLjI1MHMiAG5vbiBmb2kgcG9zw61iZWwgYWJyaXIgbyBmaWNoZWlybyBkZSBvcGNpw7NucyBhY3R1YWwgIiUuMjUwcyIAbm9uIGZvaSBwb3PDrWJlbCBhYnJpciBvIG5vdm8gZmljaGVpcm8gZGUgb3BjacOzbnMgIiUuMjUwcyIAbm9uIGZvaSBwb3PDrWJlbCBhYnJpciBvIGZpY2hlaXJvIGRlIGRlc2NyaWNpw7NuIGRhIG9wY2nDs24gIiUuMjUwcyIAbm9uIGZvaSBwb3PDrWJlbCBsZXIgbyBkaXJlY3RvcmlvICIlLjI1MHMiIHBhcmEgbGVyIG9zIG3DqXRvZG9zAG5vbiBmb2kgcG9zw61iZWwgbGVyIG8gZmljaGVpcm8gZGUgb3BjacOzbnMgZG8gbcOpdG9kbyAiJS4yNTBzIgBub24gc2UgYXRvcGEgbyBmaWNoZWlybyBkZSBkZXNjcmljacOzbiBkYSBvcGNpw7NuICIlLjI1MHMiAG5vbiBmb2kgcG9zw61iZWwgZ2FyZGFyIGEgbm92YSBvcGNpw7NuIGVuICIlLjI1MHMiAGNhZGVhIGRlIGFjY2nDs24gIiUuNTBzIiBkZXNjb8OxZWNpZGEAZGVzZW1wYXF1ZXRhZG8gKHNlbiBjb25maWd1cmFyKQBzY3JpcHQgZGUgYWN0dWFsaXphY2nDs24gZGEgbGlzdGEgZGUgZGlzcG/DscOtYmVpcwA=