VQ0NCgAAAADLuIxjSk0AAOMAAAAAAAAAAAAAAAAAAAAABQAAAEAAAABzOAEAAGQAZAFsAG0BWgEBAGQAZAJsAloCZABkAmwDWgNkAGQCbARaBGQDZARsBW0GWgYBAGQDZAVsB20IWghtCVoJbQpaCgEAZANkBmwLbQxaDG0NWg1tDloObQ9aD20QWhABAGQDZAdsEW0SWhIBAGQDZAhsE20UWhQBAGQDZAlsFW0WWhYBAGQDZApsF20YWhgBAGQDZAtsGW0aWhoBAGQDZAxsG20cWhwBAGQNZA5kD2cDWh1lBKAeZR+hAVogZBBaIWQRWiJlAqAjZBJlIqECWiRkE1olZQKgI2QUZSWhAlomZBVkFoQAWidlA6AoZSdlJKECZQOgKGUnZSShAmQXnAJaKWUIZQlkF5wCWipHAGQYZA2EAGQNZRaDA1orRwBkGWQOhABkDmUrgwNaLGQaZA+EAFotZAJTACkb6QAAAAApAdoPYWJzb2x1dGVfaW1wb3J0TukBAAAAKQHaFVJlY2VudGx5VXNlZENvbnRhaW5lcikD2hJIVFRQQ29ubmVjdGlvblBvb2zaE0hUVFBTQ29ubmVjdGlvblBvb2zaDnBvcnRfYnlfc2NoZW1lKQXaEkxvY2F0aW9uVmFsdWVFcnJvctoNTWF4UmV0cnlFcnJvctoSUHJveHlTY2hlbWVVbmtub3du2hZQcm94eVNjaGVtZVVuc3VwcG9ydGVk2hBVUkxTY2hlbWVVbmtub3duKQHaA3NpeCkB2gd1cmxqb2luKQHaDlJlcXVlc3RNZXRob2RzKQHaH2Nvbm5lY3Rpb25fcmVxdWlyZXNfaHR0cF90dW5uZWwpAdoFUmV0cnkpAdoJcGFyc2VfdXJs2gtQb29sTWFuYWdlctoMUHJveHlNYW5hZ2Vy2g5wcm94eV9mcm9tX3VybCkJ2ghrZXlfZmlsZdoJY2VydF9maWxl2gljZXJ0X3JlcXPaCGNhX2NlcnRz2gtzc2xfdmVyc2lvbtoLY2FfY2VydF9kaXLaC3NzbF9jb250ZXh02gxrZXlfcGFzc3dvcmTaD3NlcnZlcl9ob3N0bmFtZSka2gprZXlfc2NoZW1l2ghrZXlfaG9zdNoIa2V5X3BvcnTaC2tleV90aW1lb3V02gtrZXlfcmV0cmllc9oKa2V5X3N0cmljdNoJa2V5X2Jsb2Nr2hJrZXlfc291cmNlX2FkZHJlc3PaDGtleV9rZXlfZmlsZdoQa2V5X2tleV9wYXNzd29yZNoNa2V5X2NlcnRfZmlsZdoNa2V5X2NlcnRfcmVxc9oMa2V5X2NhX2NlcnRz2g9rZXlfc3NsX3ZlcnNpb27aD2tleV9jYV9jZXJ0X2RpctoPa2V5X3NzbF9jb250ZXh02gtrZXlfbWF4c2l6ZdoLa2V5X2hlYWRlcnPaCmtleV9fcHJveHnaEmtleV9fcHJveHlfaGVhZGVyc1oRa2V5X19wcm94eV9jb25maWfaEmtleV9zb2NrZXRfb3B0aW9uc9oSa2V5X19zb2Nrc19vcHRpb25z2hNrZXlfYXNzZXJ0X2hvc3RuYW1l2hZrZXlfYXNzZXJ0X2ZpbmdlcnByaW502hNrZXlfc2VydmVyX2hvc3RuYW1l2gdQb29sS2V5KQJyHAAAANoYdXNlX2ZvcndhcmRpbmdfZm9yX2h0dHBz2gtQcm94eUNvbmZpZ2MCAAAAAAAAAAAAAAAGAAAABQAAAEMAAABzwgAAAHwBoAChAH0CfAJkARkAoAGhAHwCZAE8AHwCZAIZAKABoQB8AmQCPABkA0QAXSx9A3wDfAJrBnIsfAJ8AxkAZARrCXIsdAJ8AnwDGQCgA6EAgwF8AnwDPABxLHwCoARkBaEBfQR8BGQEawlyeHQFfASDAXwCZAU8AHQGfAKgB6EAgwFEAF0WfQN8AqAIfAOhAXwCZAZ8AxcAPABxhHwAaglEAF0UfQV8BXwCawdyomQEfAJ8BTwAcaJ8AGYAfAKOAVMAKQdh9wIAAAogICAgQ3JlYXRlIGEgcG9vbCBrZXkgb3V0IG9mIGEgcmVxdWVzdCBjb250ZXh0IGRpY3Rpb25hcnkuCgogICAgQWNjb3JkaW5nIHRvIFJGQyAzOTg2LCBib3RoIHRoZSBzY2hlbWUgYW5kIGhvc3QgYXJlIGNhc2UtaW5zZW5zaXRpdmUuCiAgICBUaGVyZWZvcmUsIHRoaXMgZnVuY3Rpb24gbm9ybWFsaXplcyBib3RoIGJlZm9yZSBjb25zdHJ1Y3RpbmcgdGhlIHBvb2wKICAgIGtleSBmb3IgYW4gSFRUUFMgcmVxdWVzdC4gSWYgeW91IHdpc2ggdG8gY2hhbmdlIHRoaXMgYmVoYXZpb3VyLCBwcm92aWRlCiAgICBhbHRlcm5hdGUgY2FsbGFibGVzIHRvIGBga2V5X2ZuX2J5X3NjaGVtZWBgLgoKICAgIDpwYXJhbSBrZXlfY2xhc3M6CiAgICAgICAgVGhlIGNsYXNzIHRvIHVzZSB3aGVuIGNvbnN0cnVjdGluZyB0aGUga2V5LiBUaGlzIHNob3VsZCBiZSBhIG5hbWVkdHVwbGUKICAgICAgICB3aXRoIHRoZSBgYHNjaGVtZWBgIGFuZCBgYGhvc3RgYCBrZXlzIGF0IGEgbWluaW11bS4KICAgIDp0eXBlICBrZXlfY2xhc3M6IG5hbWVkdHVwbGUKICAgIDpwYXJhbSByZXF1ZXN0X2NvbnRleHQ6CiAgICAgICAgQSBkaWN0aW9uYXJ5LWxpa2Ugb2JqZWN0IHRoYXQgY29udGFpbiB0aGUgY29udGV4dCBmb3IgYSByZXF1ZXN0LgogICAgOnR5cGUgIHJlcXVlc3RfY29udGV4dDogZGljdAoKICAgIDpyZXR1cm46IEEgbmFtZWR0dXBsZSB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgY29ubmVjdGlvbiBwb29sIGtleS4KICAgIDpydHlwZTogIFBvb2xLZXkKICAgINoGc2NoZW1l2gRob3N0KQPaB2hlYWRlcnPaDl9wcm94eV9oZWFkZXJz2g5fc29ja3Nfb3B0aW9uc07aDnNvY2tldF9vcHRpb25z2gRrZXlfKQraBGNvcHnaBWxvd2Vy2glmcm96ZW5zZXTaBWl0ZW1z2gNnZXTaBXR1cGxl2gRsaXN02gRrZXlz2gNwb3DaB19maWVsZHMpBtoJa2V5X2NsYXNz2g9yZXF1ZXN0X2NvbnRleHTaB2NvbnRleHTaA2tledoLc29ja2V0X29wdHPaBWZpZWxkqQByUgAAAPpDL3RtcC9waXAtdW5wYWNrZWQtd2hlZWwtaWt2dHFzeTEvcGlwL192ZW5kb3IvdXJsbGliMy9wb29sbWFuYWdlci5wedoXX2RlZmF1bHRfa2V5X25vcm1hbGl6ZXJPAAAAcx4AAAAAFQgBEAEQAwgBFAEWBAoBCAEMBBABFAMKAQgBCgJyVAAAAKkC2gRodHRw2gVodHRwc2MAAAAAAAAAAAAAAAAAAAAAAwAAAEAAAABzjAAAAGUAWgFkAFoCZAFaA2QCWgRkAloFZCBkBGQFhAFaBmQGZAeEAFoHZAhkCYQAWghkIWQKZAuEAVoJZAxkDYQAWgpkImQPZBCEAVoLZBFkEoQAWgxkI2QTZBSEAVoNZCRkFWQWhAFaDmQXZBiEAFoPZBlkGoQAWhBkG2QchABaEWQlZB5kH4QBWhJkAlMAKSZyEwAAAGEkAwAACiAgICBBbGxvd3MgZm9yIGFyYml0cmFyeSByZXF1ZXN0cyB3aGlsZSB0cmFuc3BhcmVudGx5IGtlZXBpbmcgdHJhY2sgb2YKICAgIG5lY2Vzc2FyeSBjb25uZWN0aW9uIHBvb2xzIGZvciB5b3UuCgogICAgOnBhcmFtIG51bV9wb29sczoKICAgICAgICBOdW1iZXIgb2YgY29ubmVjdGlvbiBwb29scyB0byBjYWNoZSBiZWZvcmUgZGlzY2FyZGluZyB0aGUgbGVhc3QKICAgICAgICByZWNlbnRseSB1c2VkIHBvb2wuCgogICAgOnBhcmFtIGhlYWRlcnM6CiAgICAgICAgSGVhZGVycyB0byBpbmNsdWRlIHdpdGggYWxsIHJlcXVlc3RzLCB1bmxlc3Mgb3RoZXIgaGVhZGVycyBhcmUgZ2l2ZW4KICAgICAgICBleHBsaWNpdGx5LgoKICAgIDpwYXJhbSBcKipjb25uZWN0aW9uX3Bvb2xfa3c6CiAgICAgICAgQWRkaXRpb25hbCBwYXJhbWV0ZXJzIGFyZSB1c2VkIHRvIGNyZWF0ZSBmcmVzaAogICAgICAgIDpjbGFzczpgdXJsbGliMy5jb25uZWN0aW9ucG9vbC5Db25uZWN0aW9uUG9vbGAgaW5zdGFuY2VzLgoKICAgIEV4YW1wbGU6OgoKICAgICAgICA+Pj4gbWFuYWdlciA9IFBvb2xNYW5hZ2VyKG51bV9wb29scz0yKQogICAgICAgID4+PiByID0gbWFuYWdlci5yZXF1ZXN0KCdHRVQnLCAnaHR0cDovL2dvb2dsZS5jb20vJykKICAgICAgICA+Pj4gciA9IG1hbmFnZXIucmVxdWVzdCgnR0VUJywgJ2h0dHA6Ly9nb29nbGUuY29tL21haWwnKQogICAgICAgID4+PiByID0gbWFuYWdlci5yZXF1ZXN0KCdHRVQnLCAnaHR0cDovL3lhaG9vLmNvbS8nKQogICAg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YXJhbSBwcm94eV9zc2xfY29udGV4dDoKICAgICAgICBUaGUgcHJveHkgU1NMIGNvbnRleHQgaXMgdXNlZCB0byBlc3RhYmxpc2ggdGhlIFRMUyBjb25uZWN0aW9uIHRvIHRoZQogICAgICAgIHByb3h5IHdoZW4gdXNpbmcgSFRUUFMgcHJveGllcy4KCiAgICA6cGFyYW0gdXNlX2ZvcndhcmRpbmdfZm9yX2h0dHBzOgogICAgICAgIChEZWZhdWx0cyB0byBGYWxzZSkgSWYgc2V0IHRvIFRydWUgd2lsbCBmb3J3YXJkIHJlcXVlc3RzIHRvIHRoZSBIVFRQUwogICAgICAgIHByb3h5IHRvIGJlIG1hZGUgb24gYmVoYWxmIG9mIHRoZSBjbGllbnQgaW5zdGVhZCBvZiBjcmVhdGluZyBhIFRMUwogICAgICAgIHR1bm5lbCB2aWEgdGhlIENPTk5FQ1QgbWV0aG9kLiAqKkVuYWJsaW5nIHRoaXMgZmxhZyBtZWFucyB0aGF0IHJlcXVlc3QKICAgICAgICBhbmQgcmVzcG9uc2UgaGVhZGVycyBhbmQgY29udGVudCB3aWxsIGJlIHZpc2libGUgZnJvbSB0aGUgSFRUUFMgcHJveHkqKgogICAgICAgIHdoZXJlYXMgdHVubmVsaW5nIGtlZXBzIHJlcXVlc3QgYW5kIHJlc3BvbnNlIGhlYWRlcnMgYW5kIGNvbnRlbnQKICAgICAgICBwcml2YXRlLiAgSVAgYWRkcmVzcywgdGFyZ2V0IGhvc3RuYW1lLCBTTkksIGFuZCBwb3J0IGFyZSBhbHdheXMgdmlzaWJsZQogICAgICAgIHRvIGFuIEhUVFBTIHByb3h5IGV2ZW4gd2hlbiB0aGlzIGZsYWcgaXMgZGlzYWJsZWQuCgogICAgRXhhbXBsZToKICAgICAgICA+Pj4gcHJveHkgPSB1cmxsaWIzLlByb3h5TWFuYWdlcignaHR0cDovL2xvY2FsaG9zdDozMTI4LycpCiAgICAgICAgPj4+IHIxID0gcHJveHkucmVxdWVzdCgnR0VUJywgJ2h0dHA6Ly9nb29nbGUuY29tLycpCiAgICAgICAgPj4+IHIyID0gcHJveHkucmVxdWVzdCgnR0VUJywgJ2h0dHA6Ly9odHRwYmluLm9y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