UNPKG

@inst/vscode-bin-darwin

Version:

BINARY ONLY - VSCode binary deployment for macOS

6 lines 87 kB
/*--------------------------------------------------------------------------------------------- * Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ 'use strict'; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVidWdQcm90b2NvbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kZWJ1Z1Byb3RvY29sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Z0dBR2dHO0FBRWhHLFlBQVksQ0FBQztBQWs3Q1oiLCJzb3VyY2VzQ29udGVudCI6WyIvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICogIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4gU2VlIExpY2Vuc2UudHh0IGluIHRoZSBwcm9qZWN0IHJvb3QgZm9yIGxpY2Vuc2UgaW5mb3JtYXRpb24uXG4gKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKiogRGVjbGFyYXRpb24gbW9kdWxlIGRlc2NyaWJpbmcgdGhlIFZTIENvZGUgZGVidWcgcHJvdG9jb2wuXG5cdEF1dG8tZ2VuZXJhdGVkIGZyb20ganNvbiBzY2hlbWEuIERvIG5vdCBlZGl0IG1hbnVhbGx5LlxuKi9cbmV4cG9ydCBtb2R1bGUgRGVidWdQcm90b2NvbCB7XG5cblx0LyoqIEJhc2UgY2xhc3Mgb2YgcmVxdWVzdHMsIHJlc3BvbnNlcywgYW5kIGV2ZW50cy4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBQcm90b2NvbE1lc3NhZ2Uge1xuXHRcdC8qKiBTZXF1ZW5jZSBudW1iZXIuICovXG5cdFx0c2VxOiBudW1iZXI7XG5cdFx0LyoqIE1lc3NhZ2UgdHlwZS5cblx0XHRcdFZhbHVlczogJ3JlcXVlc3QnLCAncmVzcG9uc2UnLCAnZXZlbnQnLCBldGMuXG5cdFx0Ki9cblx0XHR0eXBlOiBzdHJpbmc7XG5cdH1cblxuXHQvKiogQSBjbGllbnQgb3Igc2VydmVyLWluaXRpYXRlZCByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFJlcXVlc3QgZXh0ZW5kcyBQcm90b2NvbE1lc3NhZ2Uge1xuXHRcdC8vIHR5cGU6ICdyZXF1ZXN0Jztcblx0XHQvKiogVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZS4gKi9cblx0XHRjb21tYW5kOiBzdHJpbmc7XG5cdFx0LyoqIE9iamVjdCBjb250YWluaW5nIGFyZ3VtZW50cyBmb3IgdGhlIGNvbW1hbmQuICovXG5cdFx0YXJndW1lbnRzPzogYW55O1xuXHR9XG5cblx0LyoqIFNlcnZlci1pbml0aWF0ZWQgZXZlbnQuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgRXZlbnQgZXh0ZW5kcyBQcm90b2NvbE1lc3NhZ2Uge1xuXHRcdC8vIHR5cGU6ICdldmVudCc7XG5cdFx0LyoqIFR5cGUgb2YgZXZlbnQuICovXG5cdFx0ZXZlbnQ6IHN0cmluZztcblx0XHQvKiogRXZlbnQtc3BlY2lmaWMgaW5mb3JtYXRpb24uICovXG5cdFx0Ym9keT86IGFueTtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byBhIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgUmVzcG9uc2UgZXh0ZW5kcyBQcm90b2NvbE1lc3NhZ2Uge1xuXHRcdC8vIHR5cGU6ICdyZXNwb25zZSc7XG5cdFx0LyoqIFNlcXVlbmNlIG51bWJlciBvZiB0aGUgY29ycmVzcG9uZGluZyByZXF1ZXN0LiAqL1xuXHRcdHJlcXVlc3Rfc2VxOiBudW1iZXI7XG5cdFx0LyoqIE91dGNvbWUgb2YgdGhlIHJlcXVlc3QuICovXG5cdFx0c3VjY2VzczogYm9vbGVhbjtcblx0XHQvKiogVGhlIGNvbW1hbmQgcmVxdWVzdGVkLiAqL1xuXHRcdGNvbW1hbmQ6IHN0cmluZztcblx0XHQvKiogQ29udGFpbnMgZXJyb3IgbWVzc2FnZSBpZiBzdWNjZXNzID09IGZhbHNlLiAqL1xuXHRcdG1lc3NhZ2U/OiBzdHJpbmc7XG5cdFx0LyoqIENvbnRhaW5zIHJlcXVlc3QgcmVzdWx0IGlmIHN1Y2Nlc3MgaXMgdHJ1ZSBhbmQgb3B0aW9uYWwgZXJyb3IgZGV0YWlscyBpZiBzdWNjZXNzIGlzIGZhbHNlLiAqL1xuXHRcdGJvZHk/OiBhbnk7XG5cdH1cblxuXHQvKiogRXZlbnQgbWVzc2FnZSBmb3IgJ2luaXRpYWxpemVkJyBldmVudCB0eXBlLlxuXHRcdFRoaXMgZXZlbnQgaW5kaWNhdGVzIHRoYXQgdGhlIGRlYnVnIGFkYXB0ZXIgaXMgcmVhZHkgdG8gYWNjZXB0IGNvbmZpZ3VyYXRpb24gcmVxdWVzdHMgKGUuZy4gU2V0QnJlYWtwb2ludHNSZXF1ZXN0LCBTZXRFeGNlcHRpb25CcmVha3BvaW50c1JlcXVlc3QpLlxuXHRcdEEgZGVidWcgYWRhcHRlciBpcyBleHBlY3RlZCB0byBzZW5kIHRoaXMgZXZlbnQgd2hlbiBpdCBpcyByZWFkeSB0byBhY2NlcHQgY29uZmlndXJhdGlvbiByZXF1ZXN0cyAoYnV0IG5vdCBiZWZvcmUgdGhlIEluaXRpYWxpemVSZXF1ZXN0IGhhcyBmaW5pc2hlZCkuXG5cdFx0VGhlIHNlcXVlbmNlIG9mIGV2ZW50cy9yZXF1ZXN0cyBpcyBhcyBmb2xsb3dzOlxuXHRcdC0gYWRhcHRlcnMgc2VuZHMgSW5pdGlhbGl6ZWRFdmVudCAoYWZ0ZXIgdGhlIEluaXRpYWxpemVSZXF1ZXN0IGhhcyByZXR1cm5lZClcblx0XHQtIGZyb250ZW5kIHNlbmRzIHplcm8gb3IgbW9yZSBTZXRCcmVha3BvaW50c1JlcXVlc3Rcblx0XHQtIGZyb250ZW5kIHNlbmRzIG9uZSBTZXRGdW5jdGlvbkJyZWFrcG9pbnRzUmVxdWVzdFxuXHRcdC0gZnJvbnRlbmQgc2VuZHMgYSBTZXRFeGNlcHRpb25CcmVha3BvaW50c1JlcXVlc3QgaWYgb25lIG9yIG1vcmUgZXhjZXB0aW9uQnJlYWtwb2ludEZpbHRlcnMgaGF2ZSBiZWVuIGRlZmluZWQgKG9yIGlmIHN1cHBvcnRzQ29uZmlndXJhdGlvbkRvbmVSZXF1ZXN0IGlzIG5vdCBkZWZpbmVkIG9yIGZhbHNlKVxuXHRcdC0gZnJvbnRlbmQgc2VuZHMgb3RoZXIgZnV0dXJlIGNvbmZpZ3VyYXRpb24gcmVxdWVzdHNcblx0XHQtIGZyb250ZW5kIHNlbmRzIG9uZSBDb25maWd1cmF0aW9uRG9uZVJlcXVlc3QgdG8gaW5kaWNhdGUgdGhlIGVuZCBvZiB0aGUgY29uZmlndXJhdGlvblxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEluaXRpYWxpemVkRXZlbnQgZXh0ZW5kcyBFdmVudCB7XG5cdFx0Ly8gZXZlbnQ6ICdpbml0aWFsaXplZCc7XG5cdH1cblxuXHQvKiogRXZlbnQgbWVzc2FnZSBmb3IgJ3N0b3BwZWQnIGV2ZW50IHR5cGUuXG5cdFx0VGhlIGV2ZW50IGluZGljYXRlcyB0aGF0IHRoZSBleGVjdXRpb24gb2YgdGhlIGRlYnVnZ2VlIGhhcyBzdG9wcGVkIGR1ZSB0byBzb21lIGNvbmRpdGlvbi5cblx0XHRUaGlzIGNhbiBiZSBjYXVzZWQgYnkgYSBicmVhayBwb2ludCBwcmV2aW91c2x5IHNldCwgYSBzdGVwcGluZyBhY3Rpb24gaGFzIGNvbXBsZXRlZCwgYnkgZXhlY3V0aW5nIGEgZGVidWdnZXIgc3RhdGVtZW50IGV0Yy5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBTdG9wcGVkRXZlbnQgZXh0ZW5kcyBFdmVudCB7XG5cdFx0Ly8gZXZlbnQ6ICdzdG9wcGVkJztcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogVGhlIHJlYXNvbiBmb3IgdGhlIGV2ZW50LlxuXHRcdFx0XHRGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB0aGlzIHN0cmluZyBpcyBzaG93biBpbiB0aGUgVUkgaWYgdGhlICdkZXNjcmlwdGlvbicgYXR0cmlidXRlIGlzIG1pc3NpbmcgKGJ1dCBpdCBtdXN0IG5vdCBiZSB0cmFuc2xhdGVkKS5cblx0XHRcdFx0VmFsdWVzOiAnc3RlcCcsICdicmVha3BvaW50JywgJ2V4Y2VwdGlvbicsICdwYXVzZScsICdlbnRyeScsIGV0Yy5cblx0XHRcdCovXG5cdFx0XHRyZWFzb246IHN0cmluZztcblx0XHRcdC8qKiBUaGUgZnVsbCByZWFzb24gZm9yIHRoZSBldmVudCwgZS5nLiAnUGF1c2VkIG9uIGV4Y2VwdGlvbicuIFRoaXMgc3RyaW5nIGlzIHNob3duIGluIHRoZSBVSSBhcyBpcy4gKi9cblx0XHRcdGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXHRcdFx0LyoqIFRoZSB0aHJlYWQgd2hpY2ggd2FzIHN0b3BwZWQuICovXG5cdFx0XHR0aHJlYWRJZD86IG51bWJlcjtcblx0XHRcdC8qKiBBZGRpdGlvbmFsIGluZm9ybWF0aW9uLiBFLmcuIGlmIHJlYXNvbiBpcyAnZXhjZXB0aW9uJywgdGV4dCBjb250YWlucyB0aGUgZXhjZXB0aW9uIG5hbWUuIFRoaXMgc3RyaW5nIGlzIHNob3duIGluIHRoZSBVSS4gKi9cblx0XHRcdHRleHQ/OiBzdHJpbmc7XG5cdFx0XHQvKiogSWYgYWxsVGhyZWFkc1N0b3BwZWQgaXMgdHJ1ZSwgYSBkZWJ1ZyBhZGFwdGVyIGNhbiBhbm5vdW5jZSB0aGF0IGFsbCB0aHJlYWRzIGhhdmUgc3RvcHBlZC5cblx0XHRcdFx0KiAgVGhlIGNsaWVudCBzaG91bGQgdXNlIHRoaXMgaW5mb3JtYXRpb24gdG8gZW5hYmxlIHRoYXQgYWxsIHRocmVhZHMgY2FuIGJlIGV4cGFuZGVkIHRvIGFjY2VzcyB0aGVpciBzdGFja3RyYWNlcy5cblx0XHRcdFx0KiAgSWYgdGhlIGF0dHJpYnV0ZSBpcyBtaXNzaW5nIG9yIGZhbHNlLCBvbmx5IHRoZSB0aHJlYWQgd2l0aCB0aGUgZ2l2ZW4gdGhyZWFkSWQgY2FuIGJlIGV4cGFuZGVkLlxuXHRcdFx0Ki9cblx0XHRcdGFsbFRocmVhZHNTdG9wcGVkPzogYm9vbGVhbjtcblx0XHR9O1xuXHR9XG5cblx0LyoqIEV2ZW50IG1lc3NhZ2UgZm9yICdjb250aW51ZWQnIGV2ZW50IHR5cGUuXG5cdFx0VGhlIGV2ZW50IGluZGljYXRlcyB0aGF0IHRoZSBleGVjdXRpb24gb2YgdGhlIGRlYnVnZ2VlIGhhcyBjb250aW51ZWQuXG5cdFx0UGxlYXNlIG5vdGU6IGEgZGVidWcgYWRhcHRlciBpcyBub3QgZXhwZWN0ZWQgdG8gc2VuZCB0aGlzIGV2ZW50IGluIHJlc3BvbnNlIHRvIGEgcmVxdWVzdCB0aGF0IGltcGxpZXMgdGhhdCBleGVjdXRpb24gY29udGludWVzLCBlLmcuICdsYXVuY2gnIG9yICdjb250aW51ZScuXG5cdFx0SXQgaXMgb25seSBuZWNlc3NhcnkgdG8gc2VuZCBhIENvbnRpbnVlZEV2ZW50IGlmIHRoZXJlIHdhcyBubyBwcmV2aW91cyByZXF1ZXN0IHRoYXQgaW1wbGllZCB0aGlzLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIENvbnRpbnVlZEV2ZW50IGV4dGVuZHMgRXZlbnQge1xuXHRcdC8vIGV2ZW50OiAnY29udGludWVkJztcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogVGhlIHRocmVhZCB3aGljaCB3YXMgY29udGludWVkLiAqL1xuXHRcdFx0dGhyZWFkSWQ6IG51bWJlcjtcblx0XHRcdC8qKiBJZiBhbGxUaHJlYWRzQ29udGludWVkIGlzIHRydWUsIGEgZGVidWcgYWRhcHRlciBjYW4gYW5ub3VuY2UgdGhhdCBhbGwgdGhyZWFkcyBoYXZlIGNvbnRpbnVlZC4gKi9cblx0XHRcdGFsbFRocmVhZHNDb250aW51ZWQ/OiBib29sZWFuO1xuXHRcdH07XG5cdH1cblxuXHQvKiogRXZlbnQgbWVzc2FnZSBmb3IgJ2V4aXRlZCcgZXZlbnQgdHlwZS5cblx0XHRUaGUgZXZlbnQgaW5kaWNhdGVzIHRoYXQgdGhlIGRlYnVnZ2VlIGhhcyBleGl0ZWQuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgRXhpdGVkRXZlbnQgZXh0ZW5kcyBFdmVudCB7XG5cdFx0Ly8gZXZlbnQ6ICdleGl0ZWQnO1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBUaGUgZXhpdCBjb2RlIHJldHVybmVkIGZyb20gdGhlIGRlYnVnZ2VlLiAqL1xuXHRcdFx0ZXhpdENvZGU6IG51bWJlcjtcblx0XHR9O1xuXHR9XG5cblx0LyoqIEV2ZW50IG1lc3NhZ2UgZm9yICd0ZXJtaW5hdGVkJyBldmVudCB0eXBlcy5cblx0XHRUaGUgZXZlbnQgaW5kaWNhdGVzIHRoYXQgZGVidWdnaW5nIG9mIHRoZSBkZWJ1Z2dlZSBoYXMgdGVybWluYXRlZC5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBUZXJtaW5hdGVkRXZlbnQgZXh0ZW5kcyBFdmVudCB7XG5cdFx0Ly8gZXZlbnQ6ICd0ZXJtaW5hdGVkJztcblx0XHRib2R5Pzoge1xuXHRcdFx0LyoqIEEgZGVidWcgYWRhcHRlciBtYXkgc2V0ICdyZXN0YXJ0JyB0byB0cnVlIChvciB0byBhbiBhcmJpdHJhcnkgb2JqZWN0KSB0byByZXF1ZXN0IHRoYXQgdGhlIGZyb250IGVuZCByZXN0YXJ0cyB0aGUgc2Vzc2lvbi5cblx0XHRcdFx0VGhlIHZhbHVlIGlzIG5vdCBpbnRlcnByZXRlZCBieSB0aGUgY2xpZW50IGFuZCBwYXNzZWQgdW5tb2RpZmllZCBhcyBhbiBhdHRyaWJ1dGUgJ19fcmVzdGFydCcgdG8gdGhlIGxhdW5jaFJlcXVlc3QuXG5cdFx0XHQqL1xuXHRcdFx0cmVzdGFydD86IGFueTtcblx0XHR9O1xuXHR9XG5cblx0LyoqIEV2ZW50IG1lc3NhZ2UgZm9yICd0aHJlYWQnIGV2ZW50IHR5cGUuXG5cdFx0VGhlIGV2ZW50IGluZGljYXRlcyB0aGF0IGEgdGhyZWFkIGhhcyBzdGFydGVkIG9yIGV4aXRlZC5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBUaHJlYWRFdmVudCBleHRlbmRzIEV2ZW50IHtcblx0XHQvLyBldmVudDogJ3RocmVhZCc7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIFRoZSByZWFzb24gZm9yIHRoZSBldmVudC5cblx0XHRcdFx0VmFsdWVzOiAnc3RhcnRlZCcsICdleGl0ZWQnLCBldGMuXG5cdFx0XHQqL1xuXHRcdFx0cmVhc29uOiBzdHJpbmc7XG5cdFx0XHQvKiogVGhlIGlkZW50aWZpZXIgb2YgdGhlIHRocmVhZC4gKi9cblx0XHRcdHRocmVhZElkOiBudW1iZXI7XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBFdmVudCBtZXNzYWdlIGZvciAnb3V0cHV0JyBldmVudCB0eXBlLlxuXHRcdFRoZSBldmVudCBpbmRpY2F0ZXMgdGhhdCB0aGUgdGFyZ2V0IGhhcyBwcm9kdWNlZCBzb21lIG91dHB1dC5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBPdXRwdXRFdmVudCBleHRlbmRzIEV2ZW50IHtcblx0XHQvLyBldmVudDogJ291dHB1dCc7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIFRoZSBvdXRwdXQgY2F0ZWdvcnkuIElmIG5vdCBzcGVjaWZpZWQsICdjb25zb2xlJyBpcyBhc3N1bWVkLlxuXHRcdFx0XHRWYWx1ZXM6ICdjb25zb2xlJywgJ3N0ZG91dCcsICdzdGRlcnInLCAndGVsZW1ldHJ5JywgZXRjLlxuXHRcdFx0Ki9cblx0XHRcdGNhdGVnb3J5Pzogc3RyaW5nO1xuXHRcdFx0LyoqIFRoZSBvdXRwdXQgdG8gcmVwb3J0LiAqL1xuXHRcdFx0b3V0cHV0OiBzdHJpbmc7XG5cdFx0XHQvKiogSWYgYW4gYXR0cmlidXRlICd2YXJpYWJsZXNSZWZlcmVuY2UnIGV4aXN0cyBhbmQgaXRzIHZhbHVlIGlzID4gMCwgdGhlIG91dHB1dCBjb250YWlucyBvYmplY3RzIHdoaWNoIGNhbiBiZSByZXRyaWV2ZWQgYnkgcGFzc2luZyB2YXJpYWJsZXNSZWZlcmVuY2UgdG8gdGhlIFZhcmlhYmxlc1JlcXVlc3QuICovXG5cdFx0XHR2YXJpYWJsZXNSZWZlcmVuY2U/OiBudW1iZXI7XG5cdFx0XHQvKiogQW4gb3B0aW9uYWwgc291cmNlIGxvY2F0aW9uIHdoZXJlIHRoZSBvdXRwdXQgd2FzIHByb2R1Y2VkLiAqL1xuXHRcdFx0c291cmNlPzogU291cmNlO1xuXHRcdFx0LyoqIEFuIG9wdGlvbmFsIHNvdXJjZSBsb2NhdGlvbiBsaW5lIHdoZXJlIHRoZSBvdXRwdXQgd2FzIHByb2R1Y2VkLiAqL1xuXHRcdFx0bGluZT86IG51bWJlcjtcblx0XHRcdC8qKiBBbiBvcHRpb25hbCBzb3VyY2UgbG9jYXRpb24gY29sdW1uIHdoZXJlIHRoZSBvdXRwdXQgd2FzIHByb2R1Y2VkLiAqL1xuXHRcdFx0Y29sdW1uPzogbnVtYmVyO1xuXHRcdFx0LyoqIE9wdGlvbmFsIGRhdGEgdG8gcmVwb3J0LiBGb3IgdGhlICd0ZWxlbWV0cnknIGNhdGVnb3J5IHRoZSBkYXRhIHdpbGwgYmUgc2VudCB0byB0ZWxlbWV0cnksIGZvciB0aGUgb3RoZXIgY2F0ZWdvcmllcyB0aGUgZGF0YSBpcyBzaG93biBpbiBKU09OIGZvcm1hdC4gKi9cblx0XHRcdGRhdGE/OiBhbnk7XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBFdmVudCBtZXNzYWdlIGZvciAnYnJlYWtwb2ludCcgZXZlbnQgdHlwZS5cblx0XHRUaGUgZXZlbnQgaW5kaWNhdGVzIHRoYXQgc29tZSBpbmZvcm1hdGlvbiBhYm91dCBhIGJyZWFrcG9pbnQgaGFzIGNoYW5nZWQuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgQnJlYWtwb2ludEV2ZW50IGV4dGVuZHMgRXZlbnQge1xuXHRcdC8vIGV2ZW50OiAnYnJlYWtwb2ludCc7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIFRoZSByZWFzb24gZm9yIHRoZSBldmVudC5cblx0XHRcdFx0VmFsdWVzOiAnY2hhbmdlZCcsICduZXcnLCAncmVtb3ZlZCcsIGV0Yy5cblx0XHRcdCovXG5cdFx0XHRyZWFzb246IHN0cmluZztcblx0XHRcdC8qKiBUaGUgYnJlYWtwb2ludC4gKi9cblx0XHRcdGJyZWFrcG9pbnQ6IEJyZWFrcG9pbnQ7XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBFdmVudCBtZXNzYWdlIGZvciAnbW9kdWxlJyBldmVudCB0eXBlLlxuXHRcdFRoZSBldmVudCBpbmRpY2F0ZXMgdGhhdCBzb21lIGluZm9ybWF0aW9uIGFib3V0IGEgbW9kdWxlIGhhcyBjaGFuZ2VkLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIE1vZHVsZUV2ZW50IGV4dGVuZHMgRXZlbnQge1xuXHRcdC8vIGV2ZW50OiAnbW9kdWxlJztcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogVGhlIHJlYXNvbiBmb3IgdGhlIGV2ZW50LiAqL1xuXHRcdFx0cmVhc29uOiAnbmV3JyB8ICdjaGFuZ2VkJyB8ICdyZW1vdmVkJztcblx0XHRcdC8qKiBUaGUgbmV3LCBjaGFuZ2VkLCBvciByZW1vdmVkIG1vZHVsZS4gSW4gY2FzZSBvZiAncmVtb3ZlZCcgb25seSB0aGUgbW9kdWxlIGlkIGlzIHVzZWQuICovXG5cdFx0XHRtb2R1bGU6IE1vZHVsZTtcblx0XHR9O1xuXHR9XG5cblx0LyoqIEV2ZW50IG1lc3NhZ2UgZm9yICdsb2FkZWRTb3VyY2UnIGV2ZW50IHR5cGUuXG5cdFx0VGhlIGV2ZW50IGluZGljYXRlcyB0aGF0IHNvbWUgc291cmNlIGhhcyBiZWVuIGFkZGVkLCBjaGFuZ2VkLCBvciByZW1vdmVkIGZyb20gdGhlIHNldCBvZiBhbGwgbG9hZGVkIHNvdXJjZXMuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgTG9hZGVkU291cmNlRXZlbnQgZXh0ZW5kcyBFdmVudCB7XG5cdFx0Ly8gZXZlbnQ6ICdsb2FkZWRTb3VyY2UnO1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBUaGUgcmVhc29uIGZvciB0aGUgZXZlbnQuICovXG5cdFx0XHRyZWFzb246ICduZXcnIHwgJ2NoYW5nZWQnIHwgJ3JlbW92ZWQnO1xuXHRcdFx0LyoqIFRoZSBuZXcsIGNoYW5nZWQsIG9yIHJlbW92ZWQgc291cmNlLiAqL1xuXHRcdFx0c291cmNlOiBTb3VyY2U7XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBFdmVudCBtZXNzYWdlIGZvciAncHJvY2VzcycgZXZlbnQgdHlwZS5cblx0XHRUaGUgZXZlbnQgaW5kaWNhdGVzIHRoYXQgdGhlIGRlYnVnZ2VyIGhhcyBiZWd1biBkZWJ1Z2dpbmcgYSBuZXcgcHJvY2Vzcy4gRWl0aGVyIG9uZSB0aGF0IGl0IGhhcyBsYXVuY2hlZCwgb3Igb25lIHRoYXQgaXQgaGFzIGF0dGFjaGVkIHRvLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFByb2Nlc3NFdmVudCBleHRlbmRzIEV2ZW50IHtcblx0XHQvLyBldmVudDogJ3Byb2Nlc3MnO1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBUaGUgbG9naWNhbCBuYW1lIG9mIHRoZSBwcm9jZXNzLiBUaGlzIGlzIHVzdWFsbHkgdGhlIGZ1bGwgcGF0aCB0byBwcm9jZXNzJ3MgZXhlY3V0YWJsZSBmaWxlLiBFeGFtcGxlOiAvaG9tZS9leGFtcGxlL215cHJvai9wcm9ncmFtLmpzLiAqL1xuXHRcdFx0bmFtZTogc3RyaW5nO1xuXHRcdFx0LyoqIFRoZSBzeXN0ZW0gcHJvY2VzcyBpZCBvZiB0aGUgZGVidWdnZWQgcHJvY2Vzcy4gVGhpcyBwcm9wZXJ0eSB3aWxsIGJlIG1pc3NpbmcgZm9yIG5vbi1zeXN0ZW0gcHJvY2Vzc2VzLiAqL1xuXHRcdFx0c3lzdGVtUHJvY2Vzc0lkPzogbnVtYmVyO1xuXHRcdFx0LyoqIElmIHRydWUsIHRoZSBwcm9jZXNzIGlzIHJ1bm5pbmcgb24gdGhlIHNhbWUgY29tcHV0ZXIgYXMgdGhlIGRlYnVnIGFkYXB0ZXIuICovXG5cdFx0XHRpc0xvY2FsUHJvY2Vzcz86IGJvb2xlYW47XG5cdFx0XHQvKiogRGVzY3JpYmVzIGhvdyB0aGUgZGVidWcgZW5naW5lIHN0YXJ0ZWQgZGVidWdnaW5nIHRoaXMgcHJvY2Vzcy5cblx0XHRcdFx0J2xhdW5jaCc6IFByb2Nlc3Mgd2FzIGxhdW5jaGVkIHVuZGVyIHRoZSBkZWJ1Z2dlci5cblx0XHRcdFx0J2F0dGFjaCc6IERlYnVnZ2VyIGF0dGFjaGVkIHRvIGFuIGV4aXN0aW5nIHByb2Nlc3MuXG5cdFx0XHRcdCdhdHRhY2hGb3JTdXNwZW5kZWRMYXVuY2gnOiBBIHByb2plY3QgbGF1bmNoZXIgY29tcG9uZW50IGhhcyBsYXVuY2hlZCBhIG5ldyBwcm9jZXNzIGluIGEgc3VzcGVuZGVkIHN0YXRlIGFuZCB0aGVuIGFza2VkIHRoZSBkZWJ1Z2dlciB0byBhdHRhY2guXG5cdFx0XHQqL1xuXHRcdFx0c3RhcnRNZXRob2Q/OiAnbGF1bmNoJyB8ICdhdHRhY2gnIHwgJ2F0dGFjaEZvclN1c3BlbmRlZExhdW5jaCc7XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBydW5JblRlcm1pbmFsIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ3J1bkluVGVybWluYWwnLlxuXHRcdFdpdGggdGhpcyByZXF1ZXN0IGEgZGVidWcgYWRhcHRlciBjYW4gcnVuIGEgY29tbWFuZCBpbiBhIHRlcm1pbmFsLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFJ1bkluVGVybWluYWxSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3J1bkluVGVybWluYWwnO1xuXHRcdGFyZ3VtZW50czogUnVuSW5UZXJtaW5hbFJlcXVlc3RBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAncnVuSW5UZXJtaW5hbCcgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBSdW5JblRlcm1pbmFsUmVxdWVzdEFyZ3VtZW50cyB7XG5cdFx0LyoqIFdoYXQga2luZCBvZiB0ZXJtaW5hbCB0byBsYXVuY2guICovXG5cdFx0a2luZD86ICdpbnRlZ3JhdGVkJyB8ICdleHRlcm5hbCc7XG5cdFx0LyoqIE9wdGlvbmFsIHRpdGxlIG9mIHRoZSB0ZXJtaW5hbC4gKi9cblx0XHR0aXRsZT86IHN0cmluZztcblx0XHQvKiogV29ya2luZyBkaXJlY3Rvcnkgb2YgdGhlIGNvbW1hbmQuICovXG5cdFx0Y3dkOiBzdHJpbmc7XG5cdFx0LyoqIExpc3Qgb2YgYXJndW1lbnRzLiBUaGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIGNvbW1hbmQgdG8gcnVuLiAqL1xuXHRcdGFyZ3M6IHN0cmluZ1tdO1xuXHRcdC8qKiBFbnZpcm9ubWVudCBrZXktdmFsdWUgcGFpcnMgdGhhdCBhcmUgYWRkZWQgdG8gdGhlIGRlZmF1bHQgZW52aXJvbm1lbnQuICovXG5cdFx0ZW52PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmc7IH07XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gSW5pdGlhbGl6ZSByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFJ1bkluVGVybWluYWxSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogVGhlIHByb2Nlc3MgSUQuICovXG5cdFx0XHRwcm9jZXNzSWQ/OiBudW1iZXI7XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBPbiBlcnJvciB0aGF0IGlzIHdoZW5ldmVyICdzdWNjZXNzJyBpcyBmYWxzZSwgdGhlIGJvZHkgY2FuIHByb3ZpZGUgbW9yZSBkZXRhaWxzLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEVycm9yUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIEFuIG9wdGlvbmFsLCBzdHJ1Y3R1cmVkIGVycm9yIG1lc3NhZ2UuICovXG5cdFx0XHRlcnJvcj86IE1lc3NhZ2U7XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBJbml0aWFsaXplIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ2luaXRpYWxpemUnLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEluaXRpYWxpemVSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ2luaXRpYWxpemUnO1xuXHRcdGFyZ3VtZW50czogSW5pdGlhbGl6ZVJlcXVlc3RBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnaW5pdGlhbGl6ZScgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBJbml0aWFsaXplUmVxdWVzdEFyZ3VtZW50cyB7XG5cdFx0LyoqIFRoZSBJRCBvZiB0aGUgKGZyb250ZW5kKSBjbGllbnQgdXNpbmcgdGhpcyBhZGFwdGVyLiAqL1xuXHRcdGNsaWVudElEPzogc3RyaW5nO1xuXHRcdC8qKiBUaGUgSUQgb2YgdGhlIGRlYnVnIGFkYXB0ZXIuICovXG5cdFx0YWRhcHRlcklEOiBzdHJpbmc7XG5cdFx0LyoqIFRoZSBJU08tNjM5IGxvY2FsZSBvZiB0aGUgKGZyb250ZW5kKSBjbGllbnQgdXNpbmcgdGhpcyBhZGFwdGVyLCBlLmcuIGVuLVVTIG9yIGRlLUNILiAqL1xuXHRcdGxvY2FsZT86IHN0cmluZztcblx0XHQvKiogSWYgdHJ1ZSBhbGwgbGluZSBudW1iZXJzIGFyZSAxLWJhc2VkIChkZWZhdWx0KS4gKi9cblx0XHRsaW5lc1N0YXJ0QXQxPzogYm9vbGVhbjtcblx0XHQvKiogSWYgdHJ1ZSBhbGwgY29sdW1uIG51bWJlcnMgYXJlIDEtYmFzZWQgKGRlZmF1bHQpLiAqL1xuXHRcdGNvbHVtbnNTdGFydEF0MT86IGJvb2xlYW47XG5cdFx0LyoqIERldGVybWluZXMgaW4gd2hhdCBmb3JtYXQgcGF0aHMgYXJlIHNwZWNpZmllZC4gVGhlIGRlZmF1bHQgaXMgJ3BhdGgnLCB3aGljaCBpcyB0aGUgbmF0aXZlIGZvcm1hdC5cblx0XHRcdFZhbHVlczogJ3BhdGgnLCAndXJpJywgZXRjLlxuXHRcdCovXG5cdFx0cGF0aEZvcm1hdD86IHN0cmluZztcblx0XHQvKiogQ2xpZW50IHN1cHBvcnRzIHRoZSBvcHRpb25hbCB0eXBlIGF0dHJpYnV0ZSBmb3IgdmFyaWFibGVzLiAqL1xuXHRcdHN1cHBvcnRzVmFyaWFibGVUeXBlPzogYm9vbGVhbjtcblx0XHQvKiogQ2xpZW50IHN1cHBvcnRzIHRoZSBwYWdpbmcgb2YgdmFyaWFibGVzLiAqL1xuXHRcdHN1cHBvcnRzVmFyaWFibGVQYWdpbmc/OiBib29sZWFuO1xuXHRcdC8qKiBDbGllbnQgc3VwcG9ydHMgdGhlIHJ1bkluVGVybWluYWwgcmVxdWVzdC4gKi9cblx0XHRzdXBwb3J0c1J1bkluVGVybWluYWxSZXF1ZXN0PzogYm9vbGVhbjtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAnaW5pdGlhbGl6ZScgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBJbml0aWFsaXplUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdFx0LyoqIFRoZSBjYXBhYmlsaXRpZXMgb2YgdGhpcyBkZWJ1ZyBhZGFwdGVyLiAqL1xuXHRcdGJvZHk/OiBDYXBhYmlsaXRpZXM7XG5cdH1cblxuXHQvKiogQ29uZmlndXJhdGlvbkRvbmUgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAnY29uZmlndXJhdGlvbkRvbmUnLlxuXHRcdFRoZSBjbGllbnQgb2YgdGhlIGRlYnVnIHByb3RvY29sIG11c3Qgc2VuZCB0aGlzIHJlcXVlc3QgYXQgdGhlIGVuZCBvZiB0aGUgc2VxdWVuY2Ugb2YgY29uZmlndXJhdGlvbiByZXF1ZXN0cyAod2hpY2ggd2FzIHN0YXJ0ZWQgYnkgdGhlIEluaXRpYWxpemVkRXZlbnQpLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIENvbmZpZ3VyYXRpb25Eb25lUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdjb25maWd1cmF0aW9uRG9uZSc7XG5cdFx0YXJndW1lbnRzPzogQ29uZmlndXJhdGlvbkRvbmVBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnY29uZmlndXJhdGlvbkRvbmUnIHJlcXVlc3QuXG5cdFx0VGhlIGNvbmZpZ3VyYXRpb25Eb25lIHJlcXVlc3QgaGFzIG5vIHN0YW5kYXJkaXplZCBhdHRyaWJ1dGVzLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIENvbmZpZ3VyYXRpb25Eb25lQXJndW1lbnRzIHtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAnY29uZmlndXJhdGlvbkRvbmUnIHJlcXVlc3QuIFRoaXMgaXMganVzdCBhbiBhY2tub3dsZWRnZW1lbnQsIHNvIG5vIGJvZHkgZmllbGQgaXMgcmVxdWlyZWQuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgQ29uZmlndXJhdGlvbkRvbmVSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0fVxuXG5cdC8qKiBMYXVuY2ggcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAnbGF1bmNoJy4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBMYXVuY2hSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ2xhdW5jaCc7XG5cdFx0YXJndW1lbnRzOiBMYXVuY2hSZXF1ZXN0QXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ2xhdW5jaCcgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBMYXVuY2hSZXF1ZXN0QXJndW1lbnRzIHtcblx0XHQvKiogSWYgbm9EZWJ1ZyBpcyB0cnVlIHRoZSBsYXVuY2ggcmVxdWVzdCBzaG91bGQgbGF1bmNoIHRoZSBwcm9ncmFtIHdpdGhvdXQgZW5hYmxpbmcgZGVidWdnaW5nLiAqL1xuXHRcdG5vRGVidWc/OiBib29sZWFuO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdsYXVuY2gnIHJlcXVlc3QuIFRoaXMgaXMganVzdCBhbiBhY2tub3dsZWRnZW1lbnQsIHNvIG5vIGJvZHkgZmllbGQgaXMgcmVxdWlyZWQuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgTGF1bmNoUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdH1cblxuXHQvKiogQXR0YWNoIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ2F0dGFjaCcuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgQXR0YWNoUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdhdHRhY2gnO1xuXHRcdGFyZ3VtZW50czogQXR0YWNoUmVxdWVzdEFyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdhdHRhY2gnIHJlcXVlc3QuXG5cdFx0VGhlIGF0dGFjaCByZXF1ZXN0IGhhcyBubyBzdGFuZGFyZGl6ZWQgYXR0cmlidXRlcy5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBBdHRhY2hSZXF1ZXN0QXJndW1lbnRzIHtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAnYXR0YWNoJyByZXF1ZXN0LiBUaGlzIGlzIGp1c3QgYW4gYWNrbm93bGVkZ2VtZW50LCBzbyBubyBib2R5IGZpZWxkIGlzIHJlcXVpcmVkLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEF0dGFjaFJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHR9XG5cblx0LyoqIFJlc3RhcnQgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAncmVzdGFydCcuXG5cdFx0UmVzdGFydHMgYSBkZWJ1ZyBzZXNzaW9uLiBJZiB0aGUgY2FwYWJpbGl0eSAnc3VwcG9ydHNSZXN0YXJ0UmVxdWVzdCcgaXMgbWlzc2luZyBvciBoYXMgdGhlIHZhbHVlIGZhbHNlLFxuXHRcdHRoZSBjbGllbnQgd2lsbCBpbXBsZW1lbnQgJ3Jlc3RhcnQnIGJ5IHRlcm1pbmF0aW5nIHRoZSBkZWJ1ZyBhZGFwdGVyIGZpcnN0IGFuZCB0aGVuIGxhdW5jaGluZyBpdCBhbmV3LlxuXHRcdEEgZGVidWcgYWRhcHRlciBjYW4gb3ZlcnJpZGUgdGhpcyBkZWZhdWx0IGJlaGF2aW91ciBieSBpbXBsZW1lbnRpbmcgYSByZXN0YXJ0IHJlcXVlc3Rcblx0XHRhbmQgc2V0dGluZyB0aGUgY2FwYWJpbGl0eSAnc3VwcG9ydHNSZXN0YXJ0UmVxdWVzdCcgdG8gdHJ1ZS5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBSZXN0YXJ0UmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdyZXN0YXJ0Jztcblx0XHRhcmd1bWVudHM/OiBSZXN0YXJ0QXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ3Jlc3RhcnQnIHJlcXVlc3QuXG5cdFx0VGhlIHJlc3RhcnQgcmVxdWVzdCBoYXMgbm8gc3RhbmRhcmRpemVkIGF0dHJpYnV0ZXMuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgUmVzdGFydEFyZ3VtZW50cyB7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3Jlc3RhcnQnIHJlcXVlc3QuIFRoaXMgaXMganVzdCBhbiBhY2tub3dsZWRnZW1lbnQsIHNvIG5vIGJvZHkgZmllbGQgaXMgcmVxdWlyZWQuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgUmVzdGFydFJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHR9XG5cblx0LyoqIERpc2Nvbm5lY3QgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAnZGlzY29ubmVjdCcuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgRGlzY29ubmVjdFJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnZGlzY29ubmVjdCc7XG5cdFx0YXJndW1lbnRzPzogRGlzY29ubmVjdEFyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdkaXNjb25uZWN0JyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIERpc2Nvbm5lY3RBcmd1bWVudHMge1xuXHRcdC8qKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgZGVidWdnZWUgc2hvdWxkIGJlIHRlcm1pbmF0ZWQgd2hlbiB0aGUgZGVidWdnZXIgaXMgZGlzY29ubmVjdGVkLlxuXHRcdFx0SWYgdW5zcGVjaWZpZWQsIHRoZSBkZWJ1ZyBhZGFwdGVyIGlzIGZyZWUgdG8gZG8gd2hhdGV2ZXIgaXQgdGhpbmtzIGlzIGJlc3QuXG5cdFx0XHRBIGNsaWVudCBjYW4gb25seSByZWx5IG9uIHRoaXMgYXR0cmlidXRlIGJlaW5nIHByb3Blcmx5IGhvbm9yZWQgaWYgYSBkZWJ1ZyBhZGFwdGVyIHJldHVybnMgdHJ1ZSBmb3IgdGhlICdzdXBwb3J0VGVybWluYXRlRGVidWdnZWUnIGNhcGFiaWxpdHkuXG5cdFx0Ki9cblx0XHR0ZXJtaW5hdGVEZWJ1Z2dlZT86IGJvb2xlYW47XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ2Rpc2Nvbm5lY3QnIHJlcXVlc3QuIFRoaXMgaXMganVzdCBhbiBhY2tub3dsZWRnZW1lbnQsIHNvIG5vIGJvZHkgZmllbGQgaXMgcmVxdWlyZWQuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgRGlzY29ubmVjdFJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHR9XG5cblx0LyoqIFNldEJyZWFrcG9pbnRzIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ3NldEJyZWFrcG9pbnRzJy5cblx0XHRTZXRzIG11bHRpcGxlIGJyZWFrcG9pbnRzIGZvciBhIHNpbmdsZSBzb3VyY2UgYW5kIGNsZWFycyBhbGwgcHJldmlvdXMgYnJlYWtwb2ludHMgaW4gdGhhdCBzb3VyY2UuXG5cdFx0VG8gY2xlYXIgYWxsIGJyZWFrcG9pbnQgZm9yIGEgc291cmNlLCBzcGVjaWZ5IGFuIGVtcHR5IGFycmF5LlxuXHRcdFdoZW4gYSBicmVha3BvaW50IGlzIGhpdCwgYSBTdG9wcGVkRXZlbnQgKGV2ZW50IHR5cGUgJ2JyZWFrcG9pbnQnKSBpcyBnZW5lcmF0ZWQuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU2V0QnJlYWtwb2ludHNSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3NldEJyZWFrcG9pbnRzJztcblx0XHRhcmd1bWVudHM6IFNldEJyZWFrcG9pbnRzQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ3NldEJyZWFrcG9pbnRzJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFNldEJyZWFrcG9pbnRzQXJndW1lbnRzIHtcblx0XHQvKiogVGhlIHNvdXJjZSBsb2NhdGlvbiBvZiB0aGUgYnJlYWtwb2ludHM7IGVpdGhlciBzb3VyY2UucGF0aCBvciBzb3VyY2UucmVmZXJlbmNlIG11c3QgYmUgc3BlY2lmaWVkLiAqL1xuXHRcdHNvdXJjZTogU291cmNlO1xuXHRcdC8qKiBUaGUgY29kZSBsb2NhdGlvbnMgb2YgdGhlIGJyZWFrcG9pbnRzLiAqL1xuXHRcdGJyZWFrcG9pbnRzPzogU291cmNlQnJlYWtwb2ludFtdO1xuXHRcdC8qKiBEZXByZWNhdGVkOiBUaGUgY29kZSBsb2NhdGlvbnMgb2YgdGhlIGJyZWFrcG9pbnRzLiAqL1xuXHRcdGxpbmVzPzogbnVtYmVyW107XG5cdFx0LyoqIEEgdmFsdWUgb2YgdHJ1ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgdW5kZXJseWluZyBzb3VyY2UgaGFzIGJlZW4gbW9kaWZpZWQgd2hpY2ggcmVzdWx0cyBpbiBuZXcgYnJlYWtwb2ludCBsb2NhdGlvbnMuICovXG5cdFx0c291cmNlTW9kaWZpZWQ/OiBib29sZWFuO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdzZXRCcmVha3BvaW50cycgcmVxdWVzdC5cblx0XHRSZXR1cm5lZCBpcyBpbmZvcm1hdGlvbiBhYm91dCBlYWNoIGJyZWFrcG9pbnQgY3JlYXRlZCBieSB0aGlzIHJlcXVlc3QuXG5cdFx0VGhpcyBpbmNsdWRlcyB0aGUgYWN0dWFsIGNvZGUgbG9jYXRpb24gYW5kIHdoZXRoZXIgdGhlIGJyZWFrcG9pbnQgY291bGQgYmUgdmVyaWZpZWQuXG5cdFx0VGhlIGJyZWFrcG9pbnRzIHJldHVybmVkIGFyZSBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgZWxlbWVudHMgb2YgdGhlICdicmVha3BvaW50cydcblx0XHQob3IgdGhlIGRlcHJlY2F0ZWQgJ2xpbmVzJykgaW4gdGhlIFNldEJyZWFrcG9pbnRzQXJndW1lbnRzLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFNldEJyZWFrcG9pbnRzUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIEluZm9ybWF0aW9uIGFib3V0IHRoZSBicmVha3BvaW50cy4gVGhlIGFycmF5IGVsZW1lbnRzIGFyZSBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgZWxlbWVudHMgb2YgdGhlICdicmVha3BvaW50cycgKG9yIHRoZSBkZXByZWNhdGVkICdsaW5lcycpIGluIHRoZSBTZXRCcmVha3BvaW50c0FyZ3VtZW50cy4gKi9cblx0XHRcdGJyZWFrcG9pbnRzOiBCcmVha3BvaW50W107XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBTZXRGdW5jdGlvbkJyZWFrcG9pbnRzIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ3NldEZ1bmN0aW9uQnJlYWtwb2ludHMnLlxuXHRcdFNldHMgbXVsdGlwbGUgZnVuY3Rpb24gYnJlYWtwb2ludHMgYW5kIGNsZWFycyBhbGwgcHJldmlvdXMgZnVuY3Rpb24gYnJlYWtwb2ludHMuXG5cdFx0VG8gY2xlYXIgYWxsIGZ1bmN0aW9uIGJyZWFrcG9pbnQsIHNwZWNpZnkgYW4gZW1wdHkgYXJyYXkuXG5cdFx0V2hlbiBhIGZ1bmN0aW9uIGJyZWFrcG9pbnQgaXMgaGl0LCBhIFN0b3BwZWRFdmVudCAoZXZlbnQgdHlwZSAnZnVuY3Rpb24gYnJlYWtwb2ludCcpIGlzIGdlbmVyYXRlZC5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBTZXRGdW5jdGlvbkJyZWFrcG9pbnRzUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdzZXRGdW5jdGlvbkJyZWFrcG9pbnRzJztcblx0XHRhcmd1bWVudHM6IFNldEZ1bmN0aW9uQnJlYWtwb2ludHNBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnc2V0RnVuY3Rpb25CcmVha3BvaW50cycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTZXRGdW5jdGlvbkJyZWFrcG9pbnRzQXJndW1lbnRzIHtcblx0XHQvKiogVGhlIGZ1bmN0aW9uIG5hbWVzIG9mIHRoZSBicmVha3BvaW50cy4gKi9cblx0XHRicmVha3BvaW50czogRnVuY3Rpb25CcmVha3BvaW50W107XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3NldEZ1bmN0aW9uQnJlYWtwb2ludHMnIHJlcXVlc3QuXG5cdFx0UmV0dXJuZWQgaXMgaW5mb3JtYXRpb24gYWJvdXQgZWFjaCBicmVha3BvaW50IGNyZWF0ZWQgYnkgdGhpcyByZXF1ZXN0LlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFNldEZ1bmN0aW9uQnJlYWtwb2ludHNSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogSW5mb3JtYXRpb24gYWJvdXQgdGhlIGJyZWFrcG9pbnRzLiBUaGUgYXJyYXkgZWxlbWVudHMgY29ycmVzcG9uZCB0byB0aGUgZWxlbWVudHMgb2YgdGhlICdicmVha3BvaW50cycgYXJyYXkuICovXG5cdFx0XHRicmVha3BvaW50czogQnJlYWtwb2ludFtdO1xuXHRcdH07XG5cdH1cblxuXHQvKiogU2V0RXhjZXB0aW9uQnJlYWtwb2ludHMgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAnc2V0RXhjZXB0aW9uQnJlYWtwb2ludHMnLlxuXHRcdFRoZSByZXF1ZXN0IGNvbmZpZ3VyZXMgdGhlIGRlYnVnZ2VycyByZXNwb25zZSB0byB0aHJvd24gZXhjZXB0aW9ucy4gSWYgYW4gZXhjZXB0aW9uIGlzIGNvbmZpZ3VyZWQgdG8gYnJlYWssIGEgU3RvcHBlZEV2ZW50IGlzIGZpcmVkIChldmVudCB0eXBlICdleGNlcHRpb24nKS5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBTZXRFeGNlcHRpb25CcmVha3BvaW50c1JlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnc2V0RXhjZXB0aW9uQnJlYWtwb2ludHMnO1xuXHRcdGFyZ3VtZW50czogU2V0RXhjZXB0aW9uQnJlYWtwb2ludHNBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnc2V0RXhjZXB0aW9uQnJlYWtwb2ludHMnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU2V0RXhjZXB0aW9uQnJlYWtwb2ludHNBcmd1bWVudHMge1xuXHRcdC8qKiBJRHMgb2YgY2hlY2tlZCBleGNlcHRpb24gb3B0aW9ucy4gVGhlIHNldCBvZiBJRHMgaXMgcmV0dXJuZWQgdmlhIHRoZSAnZXhjZXB0aW9uQnJlYWtwb2ludEZpbHRlcnMnIGNhcGFiaWxpdHkuICovXG5cdFx0ZmlsdGVyczogc3RyaW5nW107XG5cdFx0LyoqIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3Igc2VsZWN0ZWQgZXhjZXB0aW9ucy4gKi9cblx0XHRleGNlcHRpb25PcHRpb25zPzogRXhjZXB0aW9uT3B0aW9uc1tdO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdzZXRFeGNlcHRpb25CcmVha3BvaW50cycgcmVxdWVzdC4gVGhpcyBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudCwgc28gbm8gYm9keSBmaWVsZCBpcyByZXF1aXJlZC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTZXRFeGNlcHRpb25CcmVha3BvaW50c1Jlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHR9XG5cblx0LyoqIENvbnRpbnVlIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ2NvbnRpbnVlJy5cblx0XHRUaGUgcmVxdWVzdCBzdGFydHMgdGhlIGRlYnVnZ2VlIHRvIHJ1biBhZ2Fpbi5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBDb250aW51ZVJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnY29udGludWUnO1xuXHRcdGFyZ3VtZW50czogQ29udGludWVBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnY29udGludWUnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgQ29udGludWVBcmd1bWVudHMge1xuXHRcdC8qKiBDb250aW51ZSBleGVjdXRpb24gZm9yIHRoZSBzcGVjaWZpZWQgdGhyZWFkIChpZiBwb3NzaWJsZSkuIElmIHRoZSBiYWNrZW5kIGNhbm5vdCBjb250aW51ZSBvbiBhIHNpbmdsZSB0aHJlYWQgYnV0IHdpbGwgY29udGludWUgb24gYWxsIHRocmVhZHMsIGl0IHNob3VsZCBzZXQgdGhlIGFsbFRocmVhZHNDb250aW51ZWQgYXR0cmlidXRlIGluIHRoZSByZXNwb25zZSB0byB0cnVlLiAqL1xuXHRcdHRocmVhZElkOiBudW1iZXI7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ2NvbnRpbnVlJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIENvbnRpbnVlUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIElmIHRydWUsIHRoZSBjb250aW51ZSByZXF1ZXN0IGhhcyBpZ25vcmVkIHRoZSBzcGVjaWZpZWQgdGhyZWFkIGFuZCBjb250aW51ZWQgYWxsIHRocmVhZHMgaW5zdGVhZC4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbWlzc2luZyBhIHZhbHVlIG9mICd0cnVlJyBpcyBhc3N1bWVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiAqL1xuXHRcdFx0YWxsVGhyZWFkc0NvbnRpbnVlZD86IGJvb2xlYW47XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBOZXh0IHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ25leHQnLlxuXHRcdFRoZSByZXF1ZXN0IHN0YXJ0cyB0aGUgZGVidWdnZWUgdG8gcnVuIGFnYWluIGZvciBvbmUgc3RlcC5cblx0XHRUaGUgZGVidWcgYWRhcHRlciBmaXJzdCBzZW5kcyB0aGUgTmV4dFJlc3BvbnNlIGFuZCB0aGVuIGEgU3RvcHBlZEV2ZW50IChldmVudCB0eXBlICdzdGVwJykgYWZ0ZXIgdGhlIHN0ZXAgaGFzIGNvbXBsZXRlZC5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBOZXh0UmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICduZXh0Jztcblx0XHRhcmd1bWVudHM6IE5leHRBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnbmV4dCcgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBOZXh0QXJndW1lbnRzIHtcblx0XHQvKiogRXhlY3V0ZSAnbmV4dCcgZm9yIHRoaXMgdGhyZWFkLiAqL1xuXHRcdHRocmVhZElkOiBudW1iZXI7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ25leHQnIHJlcXVlc3QuIFRoaXMgaXMganVzdCBhbiBhY2tub3dsZWRnZW1lbnQsIHNvIG5vIGJvZHkgZmllbGQgaXMgcmVxdWlyZWQuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgTmV4dFJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHR9XG5cblx0LyoqIFN0ZXBJbiByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdzdGVwSW4nLlxuXHRcdFRoZSByZXF1ZXN0IHN0YXJ0cyB0aGUgZGVidWdnZWUgdG8gc3RlcCBpbnRvIGEgZnVuY3Rpb24vbWV0aG9kIGlmIHBvc3NpYmxlLlxuXHRcdElmIGl0IGNhbm5vdCBzdGVwIGludG8gYSB0YXJnZXQsICdzdGVwSW4nIGJlaGF2ZXMgbGlrZSAnbmV4dCcuXG5cdFx0VGhlIGRlYnVnIGFkYXB0ZXIgZmlyc3Qgc2VuZHMgdGhlIFN0ZXBJblJlc3BvbnNlIGFuZCB0aGVuIGEgU3RvcHBlZEV2ZW50IChldmVudCB0eXBlICdzdGVwJykgYWZ0ZXIgdGhlIHN0ZXAgaGFzIGNvbXBsZXRlZC5cblx0XHRJZiB0aGVyZSBhcmUgbXVsdGlwbGUgZnVuY3Rpb24vbWV0aG9kIGNhbGxzIChvciBvdGhlciB0YXJnZXRzKSBvbiB0aGUgc291cmNlIGxpbmUsXG5cdFx0dGhlIG9wdGlvbmFsIGFyZ3VtZW50ICd0YXJnZXRJZCcgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBpbnRvIHdoaWNoIHRhcmdldCB0aGUgJ3N0ZXBJbicgc2hvdWxkIG9jY3VyLlxuXHRcdFRoZSBsaXN0IG9mIHBvc3NpYmxlIHRhcmdldHMgZm9yIGEgZ2l2ZW4gc291cmNlIGxpbmUgY2FuIGJlIHJldHJpZXZlZCB2aWEgdGhlICdzdGVwSW5UYXJnZXRzJyByZXF1ZXN0LlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFN0ZXBJblJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnc3RlcEluJztcblx0XHRhcmd1bWVudHM6IFN0ZXBJbkFyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdzdGVwSW4nIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU3RlcEluQXJndW1lbnRzIHtcblx0XHQvKiogRXhlY3V0ZSAnc3RlcEluJyBmb3IgdGhpcyB0aHJlYWQuICovXG5cdFx0dGhyZWFkSWQ6IG51bWJlcjtcblx0XHQvKiogT3B0aW9uYWwgaWQgb2YgdGhlIHRhcmdldCB0byBzdGVwIGludG8uICovXG5cdFx0dGFyZ2V0SWQ/OiBudW1iZXI7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3N0ZXBJbicgcmVxdWVzdC4gVGhpcyBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudCwgc28gbm8gYm9keSBmaWVsZCBpcyByZXF1aXJlZC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTdGVwSW5SZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0fVxuXG5cdC8qKiBTdGVwT3V0IHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ3N0ZXBPdXQnLlxuXHRcdFRoZSByZXF1ZXN0IHN0YXJ0cyB0aGUgZGVidWdnZWUgdG8gcnVuIGFnYWluIGZvciBvbmUgc3RlcC5cblx0XHRUaGUgZGVidWcgYWRhcHRlciBmaXJzdCBzZW5kcyB0aGUgU3RlcE91dFJlc3BvbnNlIGFuZCB0aGVuIGEgU3RvcHBlZEV2ZW50IChldmVudCB0eXBlICdzdGVwJykgYWZ0ZXIgdGhlIHN0ZXAgaGFzIGNvbXBsZXRlZC5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBTdGVwT3V0UmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdzdGVwT3V0Jztcblx0XHRhcmd1bWVudHM6IFN0ZXBPdXRBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnc3RlcE91dCcgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTdGVwT3V0QXJndW1lbnRzIHtcblx0XHQvKiogRXhlY3V0ZSAnc3RlcE91dCcgZm9yIHRoaXMgdGhyZWFkLiAqL1xuXHRcdHRocmVhZElkOiBudW1iZXI7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3N0ZXBPdXQnIHJlcXVlc3QuIFRoaXMgaXMganVzdCBhbiBhY2tub3dsZWRnZW1lbnQsIHNvIG5vIGJvZHkgZmllbGQgaXMgcmVxdWlyZWQuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU3RlcE91dFJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHR9XG5cblx0LyoqIFN0ZXBCYWNrIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ3N0ZXBCYWNrJy5cblx0XHRUaGUgcmVxdWVzdCBzdGFydHMgdGhlIGRlYnVnZ2VlIHRvIHJ1biBvbmUgc3RlcCBiYWNrd2FyZHMuXG5cdFx0VGhlIGRlYnVnIGFkYXB0ZXIgZmlyc3Qgc2VuZHMgdGhlIFN0ZXBCYWNrUmVzcG9uc2UgYW5kIHRoZW4gYSBTdG9wcGVkRXZlbnQgKGV2ZW50IHR5cGUgJ3N0ZXAnKSBhZnRlciB0aGUgc3RlcCBoYXMgY29tcGxldGVkLiBDbGllbnRzIHNob3VsZCBvbmx5IGNhbGwgdGhpcyByZXF1ZXN0IGlmIHRoZSBjYXBhYmlsaXR5IHN1cHBvcnRzU3RlcEJhY2sgaXMgdHJ1ZS5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBTdGVwQmFja1JlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnc3RlcEJhY2snO1xuXHRcdGFyZ3VtZW50czogU3RlcEJhY2tBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnc3RlcEJhY2snIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU3RlcEJhY2tBcmd1bWVudHMge1xuXHRcdC8qKiBFeGNldXRlICdzdGVwQmFjaycgZm9yIHRoaXMgdGhyZWFkLiAqL1xuXHRcdHRocmVhZElkOiBudW1iZXI7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3N0ZXBCYWNrJyByZXF1ZXN0LiBUaGlzIGlzIGp1c3QgYW4gYWNrbm93bGVkZ2VtZW50LCBzbyBubyBib2R5IGZpZWxkIGlzIHJlcXVpcmVkLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFN0ZXBCYWNrUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdH1cblxuXHQvKiogUmV2ZXJzZUNvbnRpbnVlIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ3JldmVyc2VDb250aW51ZScuXG5cdFx0VGhlIHJlcXVlc3Qgc3RhcnRzIHRoZSBkZWJ1Z2dlZSB0byBydW4gYmFja3dhcmQuIENsaWVudHMgc2hvdWxkIG9ubHkgY2FsbCB0aGlzIHJlcXVlc3QgaWYgdGhlIGNhcGFiaWxpdHkgc3VwcG9ydHNTdGVwQmFjayBpcyB0cnVlLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFJldmVyc2VDb250aW51ZVJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAncmV2ZXJzZUNvbnRpbnVlJztcblx0XHRhcmd1bWVudHM6IFJldmVyc2VDb250aW51ZUFyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdyZXZlcnNlQ29udGludWUnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgUmV2ZXJzZUNvbnRpbnVlQXJndW1lbnRzIHtcblx0XHQvKiogRXhjZXV0ZSAncmV2ZXJzZUNvbnRpbnVlJyBmb3IgdGhpcyB0aHJlYWQuICovXG5cdFx0dGhyZWFkSWQ6IG51bWJlcjtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAncmV2ZXJzZUNvbnRpbnVlJyByZXF1ZXN0LiBUaGlzIGlzIGp1c3QgYW4gYWNrbm93bGVkZ2VtZW50LCBzbyBubyBib2R5IGZpZWxkIGlzIHJlcXVpcmVkLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFJldmVyc2VDb250aW51ZVJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHR9XG5cblx0LyoqIFJlc3RhcnRGcmFtZSByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdyZXN0YXJ0RnJhbWUnLlxuXHRcdFRoZSByZXF1ZXN0IHJlc3RhcnRzIGV4ZWN1dGlvbiBvZiB0aGUgc3BlY2lmaWVkIHN0YWNrZnJhbWUuXG5cdFx0VGhlIGRlYnVnIGFkYXB0ZXIgZmlyc3Qgc2VuZHMgdGhlIFJlc3RhcnRGcmFtZVJlc3BvbnNlIGFuZCB0aGVuIGEgU3RvcHBlZEV2ZW50IChldmVudCB0eXBlICdyZXN0YXJ0JykgYWZ0ZXIgdGhlIHJlc3RhcnQgaGFzIGNvbXBsZXRlZC5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBSZXN0YXJ0RnJhbWVSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3Jlc3RhcnRGcmFtZSc7XG5cdFx0YXJndW1lbnRzOiBSZXN0YXJ0RnJhbWVBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAncmVzdGFydEZyYW1lJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFJlc3RhcnRGcmFtZUFyZ3VtZW50cyB7XG5cdFx0LyoqIFJlc3RhcnQgdGhpcyBzdGFja2ZyYW1lLiAqL1xuXHRcdGZyYW1lSWQ6IG51bWJlcjtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAncmVzdGFydEZyYW1lJyByZXF1ZXN0LiBUaGlzIGlzIGp1c3QgYW4gYWNrbm93bGVkZ2VtZW50LCBzbyBubyBib2R5IGZpZWxkIGlzIHJlcXVpcmVkLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFJlc3RhcnRGcmFtZVJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHR9XG5cblx0LyoqIEdvdG8gcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAnZ290bycuXG5cdFx0VGhlIHJlcXVlc3Qgc2V0cyB0aGUgbG9jYXRpb24gd2hlcmUgdGhlIGRlYnVnZ2VlIHdpbGwgY29udGludWUgdG8gcnVuLlxuXHRcdFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gc2tpcCB0aGUgZXhlY3V0aW9uIG9mIGNvZGUgb3IgdG8gZXhlY3V0ZWQgY29kZSBhZ2Fpbi5cblx0XHRUaGUgY29kZSBiZXR3ZWVuIHRoZSBjdXJyZW50IGxvY2F0aW9uIGFuZCB0aGUgZ290byB0YXJnZXQgaXMgbm90IGV4ZWN1dGVkIGJ1dCBza2lwcGVkLlxuXHRcdFRoZSBkZWJ1ZyBhZGFwdGVyIGZpcnN0IHNlbmRzIHRoZSBHb3RvUmVzcG9uc2UgYW5kIHRoZW4gYSBTdG9wcGVkRXZlbnQgKGV2ZW50IHR5cGUgJ2dvdG8nKS5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBHb3RvUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdnb3RvJztcblx0XHRhcmd1bWVudHM6IEdvdG9Bcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnZ290bycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBHb3RvQXJndW1lbnRzIHtcblx0XHQvKiogU2V0IHRoZSBnb3RvIHRhcmdldCBmb3IgdGhpcyB0aHJlYWQuICovXG5cdFx0dGhyZWFkSWQ6IG51bWJlcjtcblx0XHQvKiogVGhlIGxvY2F0aW9uIHdoZXJlIHRoZSBkZWJ1Z2dlZSB3aWxsIGNvbnRpbnVlIHRvIHJ1bi4gKi9cblx0XHR0YXJnZXRJZDogbnVtYmVyO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdnb3RvJyByZXF1ZXN0LiBUaGlzIGlzIGp1c3QgYW4gYWNrbm93bGVkZ2VtZW50LCBzbyBubyBib2R5IGZpZWxkIGlzIHJlcXVpcmVkLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEdvdG9SZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0fVxuXG5cdC8qKiBQYXVzZSByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdwYXVzZScuXG5cdFx0VGhlIHJlcXVlc3Qgc3VzcGVuc2VzIHRoZSBkZWJ1Z2dlZS5cblx0XHRUaGUgZGVidWcgYWRhcHRlciBmaXJzdCBzZW5kcyB0aGUgUGF1c2VSZXNwb25zZSBhbmQgdGhlbiBhIFN0b3BwZWRFdmVudCAoZXZlbnQgdHlwZSAncGF1c2UnKSBhZnRlciB0aGUgdGhyZWFkIGhhcyBiZWVuIHBhdXNlZCBzdWNjZXNzZnVsbHkuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgUGF1c2VSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3BhdXNlJztcblx0XHRhcmd1bWVudHM6IFBhdXNlQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ3BhdXNlJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFBhdXNlQXJndW1lbnRzIHtcblx0XHQvKiogUGF1c2UgZXhlY3V0aW9uIGZvciB0aGlzIHRocmVhZC4gKi9cblx0XHR0aHJlYWRJZDogbnVtYmVyO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdwYXVzZScgcmVxdWVzdC4gVGhpcyBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudCwgc28gbm8gYm9keSBmaWVsZCBpcyByZXF1aXJlZC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBQYXVzZVJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHR9XG5cblx0LyoqIFN0YWNrVHJhY2UgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAnc3RhY2tUcmFjZScuIFRoZSByZXF1ZXN0IHJldHVybnMgYSBzdGFja3RyYWNlIGZyb20gdGhlIGN1cnJlbnQgZXhlY3V0aW9uIHN0YXRlLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFN0YWNrVHJhY2VSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3N0YWNrVHJhY2UnO1xuXHRcdGFyZ3VtZW50czogU3RhY2tUcmFjZUFyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdzdGFja1RyYWNlJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFN0YWNrVHJhY2VBcmd1bWVudHMge1xuXHRcdC8qKiBSZXRyaWV2ZSB0aGUgc3RhY2t0cmFjZSBmb3IgdGhpcyB0aHJlYWQuICovXG5cdFx0dGhyZWFkSWQ6IG51bWJlcjtcblx0XHQvKiogVGhlIGluZGV4IG9mIHRoZSBmaXJzdCBmcmFtZSB0byByZXR1cm47IGlmIG9taXR0ZWQgZnJhbWVzIHN0YXJ0IGF0IDAuICovXG5cdFx0c3RhcnRGcmFtZT86IG51bWJlcjtcblx0XHQvKiogVGhlIG1heGltdW0gbnVtYmVyIG9mIGZyYW1lcyB0byByZXR1cm4uIElmIGxldmVscyBpcyBub3Qgc3BlY2lmaWVkIG9yIDAsIGFsbCBmcmFtZXMgYXJlIHJldHVybmVkLiAqL1xuXHRcdGxldmVscz86IG51bWJlcjtcblx0XHQvKiogU3BlY2lmaWVzIGRldGFpbHMgb24gaG93IHRvIGZvcm1hdCB0aGUgc3RhY2sgZnJhbWVzLiAqL1xuXHRcdGZvcm1hdD86IFN0YWNrRnJhbWVGb3JtYXQ7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3N0YWNrVHJhY2UnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU3RhY2tUcmFjZVJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBUaGUgZnJhbWVzIG9mIHRoZSBzdGFja2ZyYW1lLiBJZiB0aGUgYXJyYXkgaGFzIGxlbmd0aCB6ZXJvLCB0aGVyZSBhcmUgbm8gc3RhY2tmcmFtZXMgYXZhaWxhYmxlLlxuXHRcdFx0XHRUaGlzIG1lYW5zIHRoYXQgdGhlcmUgaXMgbm8gbG9jYXRpb24gaW5mb3JtYXRpb24gYXZhaWxhYmxlLlxuXHRcdFx0Ki9cblx0XHRcdHN0YWNrRnJhbWVzOiBTdGFja0ZyYW1lW107XG5cdFx0XHQvKiogVGhlIHRvdGFsIG51bWJlciBvZiBmcmFtZXMgYXZhaWxhYmxlLiAqL1xuXHRcdFx0dG90YWxGcmFtZXM/OiBudW1iZXI7XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBTY29wZXMgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAnc2NvcGVzJy5cblx0XHRUaGUgcmVxdWVzdCByZXR1cm5zIHRoZSB2YXJpYWJsZSBzY29wZXMgZm9yIGEgZ2l2ZW4gc3RhY2tmcmFtZSBJRC5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBTY29wZXNSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3Njb3Blcyc7XG5cdFx0YXJndW1lbnRzOiBTY29wZXNBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnc2NvcGVzJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFNjb3Blc0FyZ3VtZW50cyB7XG5cdFx0LyoqIFJldHJpZXZlIHRoZSBzY29wZXMgZm9yIHRoaXMgc3RhY2tmcmFtZS4gKi9cblx0XHRmcmFtZUlkOiBudW1iZXI7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3Njb3BlcycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBTY29wZXNSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogVGhlIHNjb3BlcyBvZiB0aGUgc3RhY2tmcmFtZS4gSWYgdGhlIGFycmF5IGhhcyBsZW5ndGggemVybywgdGhlcmUgYXJlIG5vIHNjb3BlcyBhdmFpbGFibGUuICovXG5cdFx0XHRzY29wZXM6IFNjb3BlW107XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBWYXJpYWJsZXMgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAndmFyaWFibGVzJy5cblx0XHRSZXRyaWV2ZXMgYWxsIGNoaWxkIHZhcmlhYmxlcyBmb3IgdGhlIGdpdmVuIHZhcmlhYmxlIHJlZmVyZW5jZS5cblx0XHRBbiBvcHRpb25hbCBmaWx0ZXIgY2FuIGJlIHVzZWQgdG8gbGltaXQgdGhlIGZldGNoZWQgY2hpbGRyZW4gdG8gZWl0aGVyIG5hbWVkIG9yIGluZGV4ZWQgY2hpbGRyZW4uXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgVmFyaWFibGVzUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICd2YXJpYWJsZXMnO1xuXHRcdGFyZ3VtZW50czogVmFyaWFibGVzQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ3ZhcmlhYmxlcycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBWYXJpYWJsZXNBcmd1bWVudHMge1xuXHRcdC8qKiBUaGUgVmFyaWFibGUgcmVmZXJlbmNlLiAqL1xuXHRcdHZhcmlhYmxlc1JlZmVyZW5jZTogbnVtYmVyO1xuXHRcdC8qKiBPcHRpb25hbCBmaWx0ZXIgdG8gbGltaXQgdGhlIGNoaWxkIHZhcmlhYmxlcyB0byBlaXRoZXIgbmFtZWQgb3IgaW5kZXhlZC4gSWYgb21taXRlZCwgYm90aCB0eXBlcyBhcmUgZmV0Y2hlZC4gKi9cblx0XHRmaWx0ZXI/OiAnaW5kZXhlZCcgfCAnbmFtZWQnO1xuXHRcdC8qKiBUaGUgaW5kZXggb2YgdGhlIGZpcnN0IHZhcmlhYmxlIHRvIHJldHVybjsgaWYgb21pdHRlZCBjaGlsZHJlbiBzdGFydCBhdCAwLiAqL1xuXHRcdHN0YXJ0PzogbnVtYmVyO1xuXHRcdC8qKiBUaGUgbnVtYmVyIG9mIHZhcmlhYmxlcyB0byByZXR1cm4uIElmIGNvdW50IGlzIG1pc3Npbmcgb3IgMCwgYWxsIHZhcmlhYmxlcyBhcmUgcmV0dXJuZWQuICovXG5cdFx0Y291bnQ/OiBudW1iZXI7XG5cdFx0LyoqIFNwZWNpZmllcyBkZXRhaWxzIG9uIGhvdyB0byBmb3JtYXQgdGhlIFZhcmlhYmxlIHZhbHVlcy4gKi9cblx0XHRmb3JtYXQ/OiBWYWx1ZUZvcm1hdDtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAndmFyaWFibGVzJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFZhcmlhYmxlc1Jlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBBbGwgKG9yIGEgcmFuZ2UpIG9mIHZhcmlhYmxlcyBmb3IgdGhlIGdpdmVuIHZhcmlhYmxlIHJlZmVyZW5jZS4gKi9cblx0XHRcdHZhcmlhYmxlczogVmFyaWFibGVbXTtcblx0XHR9O1xuXHR9XG5cblx0LyoqIHNldFZhcmlhYmxlIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ3NldFZhcmlhYmxlJy5cblx0XHRTZXQgdGhlIHZhcmlhYmxlIHdpdGggdGhlIGdpdmVuIG5hbWUgaW4gdGhlIHZhcmlhYmxlIGNvbnRhaW5lciB0byBhIG5ldyB2YWx1ZS5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBTZXRWYXJpYWJsZVJlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnc2V0VmFyaWFibGUnO1xuXHRcdGFyZ3VtZW50czogU2V0VmFyaWFibGVBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnc2V0VmFyaWFibGUnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgU2V0VmFyaWFibGVBcmd1bWVudHMge1xuXHRcdC8qKiBUaGUgcmVmZXJlbmNlIG9mIHRoZSB2YXJpYWJsZSBjb250YWluZXIuICovXG5cdFx0dmFyaWFibGVzUmVmZXJlbmNlOiBudW1iZXI7XG5cdFx0LyoqIFRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZS4gKi9cblx0XHRuYW1lOiBzdHJpbmc7XG5cdFx0LyoqIFRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUuICovXG5cdFx0dmFsdWU6IHN0cmluZztcblx0XHQvKiogU3BlY2lmaWVzIGRldGFpbHMgb24gaG93IHRvIGZvcm1hdCB0aGUgcmVzcG9uc2UgdmFsdWUuICovXG5cdFx0Zm9ybWF0PzogVmFsdWVGb3JtYXQ7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ3NldFZhcmlhYmxlJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFNldFZhcmlhYmxlUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIFRoZSBuZXcgdmFsdWUgb2YgdGhlIHZhcmlhYmxlLiAqL1xuXHRcdFx0dmFsdWU6IHN0cmluZztcblx0XHRcdC8qKiBUaGUgdHlwZSBvZiB0aGUgbmV3IHZhbHVlLiBUeXBpY2FsbHkgc2hvd24gaW4gdGhlIFVJIHdoZW4gaG92ZXJpbmcgb3ZlciB0aGUgdmFsdWUuICovXG5cdFx0XHR0eXBlPzogc3RyaW5nO1xuXHRcdFx0LyoqIElmIHZhcmlhYmxlc1JlZmVyZW5jZSBpcyA+IDAsIHRoZSBuZXcgdmFsdWUgaXMgc3RydWN0dXJlZCBhbmQgaXRzIGNoaWxkcmVuIGNhbiBiZSByZXRyaWV2ZWQgYnkgcGFzc2luZyB2YXJpYWJsZXNSZWZlcmVuY2UgdG8gdGhlIFZhcmlhYmxlc1JlcXVlc3QuICovXG5cdFx0XHR2YXJpYWJsZXNSZWZlcmVuY2U/OiBudW1iZXI7XG5cdFx0XHQvKiogVGhlIG51bWJlciBvZiBuYW1lZCBjaGlsZCB2YXJpYWJsZXMuXG5cdFx0XHRcdFRoZSBjbGllbnQgY2FuIHVzZSB0aGlzIG9wdGlvbmFsIGluZm9ybWF0aW9uIHRvIHByZXNlbnQgdGhlIHZhcmlhYmxlcyBpbiBhIHBhZ2VkIFVJIGFuZCBmZXRjaCB0aGVtIGluIGNodW5rcy5cblx0XHRcdCovXG5cdFx0XHRuYW1lZFZhcmlhYmxlcz86IG51bWJlcjtcblx0XHRcdC8qKiBUaGUgbnVtYmVyIG9mIGluZGV4ZWQgY2hpbGQgdmFyaWFibGVzLlxuXHRcdFx0XHRUaGUgY2xpZW50IGNhbiB1c2UgdGhpcyBvcHRpb25hbCBpbmZvcm1hdGlvbiB0byBwcmVzZW50IHRoZSB2YXJpYWJsZXMgaW4gYSBwYWdlZCBVSSBhbmQgZmV0Y2ggdGhlbSBpbiBjaHVua3MuXG5cdFx0XHQqL1xuXHRcdFx0aW5kZXhlZFZhcmlhYmxlcz86IG51bWJlcjtcblx0XHR9O1xuXHR9XG5cblx0LyoqIFNvdXJjZSByZXF1ZXN0OyB2YWx1ZSBvZiBjb21tYW5kIGZpZWxkIGlzICdzb3VyY2UnLlxuXHRcdFRoZSByZXF1ZXN0IHJldHJpZXZlcyB0aGUgc291cmNlIGNvZGUgZm9yIGEgZ2l2ZW4gc291cmNlIHJlZmVyZW5jZS5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBTb3VyY2VSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ3NvdXJjZSc7XG5cdFx0YXJndW1lbnRzOiBTb3VyY2VBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnc291cmNlJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFNvdXJjZUFyZ3VtZW50cyB7XG5cdFx0LyoqIFNwZWNpZmllcyB0aGUgc291cmNlIGNvbnRlbnQgdG8gbG9hZC4gRWl0aGVyIHNvdXJjZS5wYXRoIG9yIHNvdXJjZS5zb3VyY2VSZWZlcmVuY2UgbXVzdCBiZSBzcGVjaWZpZWQuICovXG5cdFx0c291cmNlPzogU291cmNlO1xuXHRcdC8qKiBUaGUgcmVmZXJlbmNlIHRvIHRoZSBzb3VyY2UuIFRoaXMgaXMgdGhlIHNhbWUgYXMgc291cmNlLnNvdXJjZVJlZmVyZW5jZS4gVGhpcyBpcyBwcm92aWRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBzaW5jZSBvbGQgYmFja2VuZHMgZG8gbm90IHVuZGVyc3RhbmQgdGhlICdzb3VyY2UnIGF0dHJpYnV0ZS4gKi9cblx0XHRzb3VyY2VSZWZlcmVuY2U6IG51bWJlcjtcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAnc291cmNlJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIFNvdXJjZVJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBDb250ZW50IG9mIHRoZSBzb3VyY2UgcmVmZXJlbmNlLiAqL1xuXHRcdFx0Y29udGVudDogc3RyaW5nO1xuXHRcdFx0LyoqIE9wdGlvbmFsIGNvbnRlbnQgdHlwZSAobWltZSB0eXBlKSBvZiB0aGUgc291cmNlLiAqL1xuXHRcdFx0bWltZVR5cGU/OiBzdHJpbmc7XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBUaHJlYWQgcmVxdWVzdDsgdmFsdWUgb2YgY29tbWFuZCBmaWVsZCBpcyAndGhyZWFkcycuXG5cdFx0VGhlIHJlcXVlc3QgcmV0cmlldmVzIGEgbGlzdCBvZiBhbGwgdGhyZWFkcy5cblx0Ki9cblx0ZXhwb3J0IGludGVyZmFjZSBUaHJlYWRzUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICd0aHJlYWRzJztcblx0fVxuXG5cdC8qKiBSZXNwb25zZSB0byAndGhyZWFkcycgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBUaHJlYWRzUmVzcG9uc2UgZXh0ZW5kcyBSZXNwb25zZSB7XG5cdFx0Ym9keToge1xuXHRcdFx0LyoqIEFsbCB0aHJlYWRzLiAqL1xuXHRcdFx0dGhyZWFkczogVGhyZWFkW107XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBNb2R1bGVzIGNhbiBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgZGVidWcgYWRhcHRlciB3aXRoIHRoZSBNb2R1bGVzUmVxdWVzdCB3aGljaCBjYW4gZWl0aGVyIHJldHVybiBhbGwgbW9kdWxlcyBvciBhIHJhbmdlIG9mIG1vZHVsZXMgdG8gc3VwcG9ydCBwYWdpbmcuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlc1JlcXVlc3QgZXh0ZW5kcyBSZXF1ZXN0IHtcblx0XHQvLyBjb21tYW5kOiAnbW9kdWxlcyc7XG5cdFx0YXJndW1lbnRzOiBNb2R1bGVzQXJndW1lbnRzO1xuXHR9XG5cblx0LyoqIEFyZ3VtZW50cyBmb3IgJ21vZHVsZXMnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgTW9kdWxlc0FyZ3VtZW50cyB7XG5cdFx0LyoqIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgbW9kdWxlIHRvIHJldHVybjsgaWYgb21pdHRlZCBtb2R1bGVzIHN0YXJ0IGF0IDAuICovXG5cdFx0c3RhcnRNb2R1bGU/OiBudW1iZXI7XG5cdFx0LyoqIFRoZSBudW1iZXIgb2YgbW9kdWxlcyB0byByZXR1cm4uIElmIG1vZHVsZUNvdW50IGlzIG5vdCBzcGVjaWZpZWQgb3IgMCwgYWxsIG1vZHVsZXMgYXJlIHJldHVybmVkLiAqL1xuXHRcdG1vZHVsZUNvdW50PzogbnVtYmVyO1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdtb2R1bGVzJyByZXF1ZXN0LiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIE1vZHVsZXNSZXNwb25zZSBleHRlbmRzIFJlc3BvbnNlIHtcblx0XHRib2R5OiB7XG5cdFx0XHQvKiogQWxsIG1vZHVsZXMgb3IgcmFuZ2Ugb2YgbW9kdWxlcy4gKi9cblx0XHRcdG1vZHVsZXM6IE1vZHVsZVtdO1xuXHRcdFx0LyoqIFRoZSB0b3RhbCBudW1iZXIgb2YgbW9kdWxlcyBhdmFpbGFibGUuICovXG5cdFx0XHR0b3RhbE1vZHVsZXM/OiBudW1iZXI7XG5cdFx0fTtcblx0fVxuXG5cdC8qKiBSZXRyaWV2ZXMgdGhlIHNldCBvZiBhbGwgc291cmNlcyBjdXJyZW50bHkgbG9hZGVkIGJ5IHRoZSBkZWJ1Z2dlZCBwcm9jZXNzLiAqL1xuXHRleHBvcnQgaW50ZXJmYWNlIExvYWRlZFNvdXJjZXNSZXF1ZXN0IGV4dGVuZHMgUmVxdWVzdCB7XG5cdFx0Ly8gY29tbWFuZDogJ2xvYWRlZFNvdXJjZXMnO1xuXHRcdGFyZ3VtZW50cz86IExvYWRlZFNvdXJjZXNBcmd1bWVudHM7XG5cdH1cblxuXHQvKiogQXJndW1lbnRzIGZvciAnbG9hZGVkU291cmNlcycgcmVxdWVzdC5cblx0XHRUaGUgJ2xvYWRlZFNvdXJjZXMnIHJlcXVlc3QgaGFzIG5vIHN0YW5kYXJkaXplZCBhcmd1bWVudHMuXG5cdCovXG5cdGV4cG9ydCBpbnRlcmZhY2UgTG9hZGVkU291cmNlc0FyZ3VtZW50cyB7XG5cdH1cblxuXHQvKiogUmVzcG9uc2UgdG8gJ2xvYWRlZFNvdXJjZXMnIHJlcXVlc3QuICovXG5cdGV4cG9ydCBpbnRlcmZhY2UgTG9hZGVkU291cmNlc1Jlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBTZXQgb2YgbG9hZGVkIHNvdXJjZXMuICovXG5cdFx0XHRzb3VyY2VzOiBTb3VyY2VbXTtcblx0XHR9O1xuXHR9XG5cblx0LyoqIEV2YWx1YXRlIHJlcXVlc3Q7IHZhbHVlIG9mIGNvbW1hbmQgZmllbGQgaXMgJ2V2YWx1YXRlJy5cblx0XHRFdmFsdWF0ZXMgdGhlIGdpdmVuIGV4cHJlc3Npb24gaW4gdGhlIGNvbnRleHQgb2YgdGhlIHRvcCBtb3N0IHN0YWNrIGZyYW1lLlxuXHRcdFRoZSBleHByZXNzaW9uIGhhcyBhY2Nlc3MgdG8gYW55IHZhcmlhYmxlcyBhbmQgYXJndW1lbnRzIHRoYXQgYXJlIGluIHNjb3BlLlxuXHQqL1xuXHRleHBvcnQgaW50ZXJmYWNlIEV2YWx1YXRlUmVxdWVzdCBleHRlbmRzIFJlcXVlc3Qge1xuXHRcdC8vIGNvbW1hbmQ6ICdldmFsdWF0ZSc7XG5cdFx0YXJndW1lbnRzOiBFdmFsdWF0ZUFyZ3VtZW50cztcblx0fVxuXG5cdC8qKiBBcmd1bWVudHMgZm9yICdldmFsdWF0ZScgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBFdmFsdWF0ZUFyZ3VtZW50cyB7XG5cdFx0LyoqIFRoZSBleHByZXNzaW9uIHRvIGV2YWx1YXRlLiAqL1xuXHRcdGV4cHJlc3Npb246IHN0cmluZztcblx0XHQvKiogRXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gaW4gdGhlIHNjb3BlIG9mIHRoaXMgc3RhY2sgZnJhbWUuIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBleHByZXNzaW9uIGlzIGV2YWx1YXRlZCBpbiB0aGUgZ2xvYmFsIHNjb3BlLiAqL1xuXHRcdGZyYW1lSWQ/OiBudW1iZXI7XG5cdFx0LyoqIFRoZSBjb250ZXh0IGluIHdoaWNoIHRoZSBldmFsdWF0ZSByZXF1ZXN0IGlzIHJ1bi5cblx0XHRcdFZhbHVlczogXG5cdFx0XHQnd2F0Y2gnOiBldmFsdWF0ZSBpcyBydW4gaW4gYSB3YXRjaC5cblx0XHRcdCdyZXBsJzogZXZhbHVhdGUgaXMgcnVuIGZyb20gUkVQTCBjb25zb2xlLlxuXHRcdFx0J2hvdmVyJzogZXZhbHVhdGUgaXMgcnVuIGZyb20gYSBkYXRhIGhvdmVyLlxuXHRcdFx0ZXRjLlxuXHRcdCovXG5cdFx0Y29udGV4dD86IHN0cmluZztcblx0XHQvKiogU3BlY2lmaWVzIGRldGFpbHMgb24gaG93IHRvIGZvcm1hdCB0aGUgRXZhbHVhdGUgcmVzdWx0LiAqL1xuXHRcdGZvcm1hdD86IFZhbHVlRm9ybWF0O1xuXHR9XG5cblx0LyoqIFJlc3BvbnNlIHRvICdldmFsdWF0ZScgcmVxdWVzdC4gKi9cblx0ZXhwb3J0IGludGVyZmFjZSBFdmFsdWF0ZVJlc3BvbnNlIGV4dGVuZHMgUmVzcG9uc2Uge1xuXHRcdGJvZHk6IHtcblx0XHRcdC8qKiBUaGUgcmVzdWx0IG9mIHRoZSBldmFsdWF0ZSByZXF1ZXN0LiAqL1xuXHRcdFx0cmVzdWx0OiBzdHJpbmc7XG5cdFx0XHQvKiogVGhlIG9wdGlvbmFsIHR5cGUgb2YgdGhlIGV2YWx1YXRlIHJlc3VsdC4gKi9cblx0XHRcdHR5cGU/OiBzdHJpbmc7XG5cdFx0XHQvKiogUHJvcGVydGllcyBvZiBhIGV2YWx1YXRlIHJlc3VsdCB0aGF0IGNhbiBiZSB1c2VkIHRvIGRldGVybWluZSBob3cgdG8gcmVuZGVyIHRoZSByZXN1bHQgaW4gdGhlIFVJLiAqL1xuXHRcdFx0cHJlc2VudGF0aW9uSGludD86IFZhcmlhYmxlUHJlc2VudGF0aW9uSGludDtcblx0XHRcdC8qKiBJZiB2YXJpYWJsZXNSZWZlcmVuY2UgaXMgPiAwLCB0aGUgZXZhbHVhdGUgcmVzdWx0IGlzIHN0cnVjdHVyZWQgYW5kIGl0cyBjaGlsZHJlbiBjYW4gYmUgcmV0cmlldmVkIGJ5IHBhc3NpbmcgdmFyaWFibGVzUmVmZXJlbmNlIHRvIHRoZSBWYXJpYWJsZXNSZXF1ZXN0LiAqL1xuXHRcdFx0dmFyaWFibGVzUmVmZXJlbmNlOiBudW1iZXI7XG5cdFx0XHQvKiogVGhlIG51bWJlciBvZiBuYW1lZCBjaGlsZCB2YXJpYWJsZXMuXG5cdFx0XHRcdFRoZSBjbGllbnQgY2FuIHVzZSB0aGlzIG9wdGlvbmFsIGluZm9ybWF0aW9uIHRvIHByZXNlbnQgdGhlIHZhcmlhYmxlcyBpbiBhIHBhZ2VkIFVJIGFuZCBmZXRjaCB0aGVtIGluIGNodW5rcy5cblx0XHRcdCovXG5cdFx0XHRuYW1lZFZhcmlhYmxlcz86IG51bWJlcjtcblx0XHRcdC8qKiBUaGUgbnVtYmVyIG9mIGluZGV4ZWQgY2hpbGQgdmFyaWFibGVzLlxuXHRcdFx0XHRUaGUgY2xpZW50IGNhbiB1c2UgdGhpcyBvcHRpb25hbCBpbmZvcm1hdGlvbiB0byBwcmVzZW50IHRoZSB2YXJpYWJsZXMgaW4gYSBwYWdlZCBVSSBhbmQgZmV0Y2ggdGhlbSBpbiBjaHVua3MuXG5cdFx0XHQqL1xuXHRcdFx0aW5kZXhlZFZhcmlhYmxlcz86IG51bWJlcjtcblx0XHR9O1xuXHR9XG5cblx0LyoqIFN0ZXBJblRhcmdldHMgcmVx