@alfresco/adf-process-services-cloud 8.1.0-15161037462 → 8.1.0-15185666273
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/form/components/form-cloud.component.mjs +3 -3
- package/esm2022/lib/process/start-process/components/start-process-cloud.component.mjs +12 -10
- package/fesm2022/adf-process-services-cloud.mjs +13 -11
- package/fesm2022/adf-process-services-cloud.mjs.map +1 -1
- package/lib/process/start-process/components/start-process-cloud.component.d.ts +2 -2
- package/package.json +4 -4
|
@@ -127,8 +127,8 @@ export class FormCloudComponent extends FormBaseComponent {
|
|
|
127
127
|
this.getFormByTaskId(this.appName, taskId.currentValue, this.appVersion);
|
|
128
128
|
return;
|
|
129
129
|
}
|
|
130
|
-
const data = changes['data'];
|
|
131
|
-
if (data?.
|
|
130
|
+
const data = changes['data']?.currentValue;
|
|
131
|
+
if (data?.length > 0) {
|
|
132
132
|
this.refreshFormData();
|
|
133
133
|
return;
|
|
134
134
|
}
|
|
@@ -413,4 +413,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
413
413
|
type: HostListener,
|
|
414
414
|
args: ['keydown', ['$event']]
|
|
415
415
|
}] } });
|
|
416
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jbG91ZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy9mb3JtLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL2Zvcm0tY2xvdWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFDSCxzQkFBc0IsRUFFdEIsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixTQUFTLEVBR1QsU0FBUyxFQUNULGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLFdBQVcsRUFFWCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDMUIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUdsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLEVBQUUsSUFBSSxjQUFjLEVBQUUsTUFBTSxNQUFN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QUFnQjt3QkFDaEIsVUFBVTt3QkFDVixpQkFBaUI7cUJBQ3BCLGFBQ1UsQ0FBQyx1QkFBdUIsQ0FBQzs7MEJBaUd2QixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGlDQUFpQzt5Q0ExRmpFLE9BQU87c0JBRE4sS0FBSztnQkFLTixVQUFVO3NCQURULEtBQUs7Z0JBS04sTUFBTTtzQkFETCxLQUFLO2dCQUtOLGlCQUFpQjtzQkFEaEIsS0FBSztnQkFLTixNQUFNO3NCQURMLEtBQUs7Z0JBS04sSUFBSTtzQkFESCxLQUFLO2dCQUtOLHlCQUF5QjtzQkFEeEIsS0FBSztnQkFLTixvQkFBb0I7c0JBRG5CLEtBQUs7Z0JBS04seUJBQXlCO3NCQUR4QixLQUFLO2dCQUtOLGtCQUFrQjtzQkFEakIsS0FBSztnQkFLTixTQUFTO3NCQURSLE1BQU07Z0JBS1AsYUFBYTtzQkFEWixNQUFNO2dCQUtQLFVBQVU7c0JBRFQsTUFBTTtnQkFLUCxpQkFBaUI7c0JBRGhCLE1BQU07Z0JBS1Asa0JBQWtCO3NCQURqQixNQUFNO2dCQUtQLGFBQWE7c0JBRFosTUFBTTtnQkFLUCxjQUFjO3NCQURiLE1BQU07Z0JBS1AsOEJBQThCO3NCQUQ3QixNQUFNO2dCQXFEUCxTQUFTO3NCQURSLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IMKpIDIwMDUtMjAyNSBIeWxhbmQgU29mdHdhcmUsIEluYy4gYW5kIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQge1xuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBEZXN0cm95UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5qZWN0LFxuICAgIGluamVjdCxcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgZm9ya0pvaW4sIE9ic2VydmFibGUsIG9mLCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGZpbHRlciwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICAgIENvbmZpcm1EaWFsb2dDb21wb25lbnQsXG4gICAgQ29udGVudExpbmtNb2RlbCxcbiAgICBGb3JtYXRTcGFjZVBpcGUsXG4gICAgRm9ybUJhc2VDb21wb25lbnQsXG4gICAgRm9ybUV2ZW50LFxuICAgIEZvcm1GaWVsZE1vZGVsLFxuICAgIEZvcm1GaWVsZFZhbGlkYXRvcixcbiAgICBGb3JtTW9kZWwsXG4gICAgRm9ybU91dGNvbWVFdmVudCxcbiAgICBGb3JtT3V0Y29tZU1vZGVsLFxuICAgIEZvcm1SZW5kZXJlckNvbXBvbmVudCxcbiAgICBGb3JtU2VydmljZSxcbiAgICBGb3JtVmFsdWVzLFxuICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgVG9vbGJhckRpdmlkZXJDb21wb25lbnQsXG4gICAgVXBsb2FkV2lkZ2V0Q29udGVudExpbmtNb2RlbCxcbiAgICBXaWRnZXRWaXNpYmlsaXR5U2VydmljZVxufSBmcm9tICdAYWxmcmVzY28vYWRmLWNvcmUnO1xuaW1wb3J0IHsgRm9ybUNsb3VkU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Zvcm0tY2xvdWQuc2VydmljZSc7XG5pbXBvcnQgeyBUYXNrVmFyaWFibGVDbG91ZCB9IGZyb20gJy4uL21vZGVscy90YXNrLXZhcmlhYmxlLWNsb3VkLm1vZGVsJztcbmltcG9ydCB7IFRhc2tEZXRhaWxzQ2xvdWRNb2RlbCB9IGZyb20gJy4uLy4uL3Rhc2svbW9kZWxzL3Rhc2stZGV0YWlscy1jbG91ZC5tb2RlbCc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgdjQgYXMgdXVpZEdlbmVyYXRpb24gfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IEZvcm1DbG91ZERpc3BsYXlNb2RlLCBGb3JtQ2xvdWREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mb3JtLWZpZWxkcy5pbnRlcmZhY2VzJztcbmltcG9ydCB7IEZvcm1DbG91ZFNwaW5uZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvc3Bpbm5lci9mb3JtLWNsb3VkLXNwaW5uZXIuc2VydmljZSc7XG5pbXBvcnQgeyBEaXNwbGF5TW9kZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9kaXNwbGF5LW1vZGUuc2VydmljZSc7XG5pbXBvcnQgeyB0YWtlVW50aWxEZXN0cm95ZWQgfSBmcm9tICdAYW5ndWxhci9jb3JlL3J4anMtaW50ZXJvcCc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBNYXRCdXR0b25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9idXR0b24nO1xuaW1wb3J0IHsgTWF0Q2FyZE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NhcmQnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgQTExeU1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9hMTF5JztcbmltcG9ydCB7IE1hdENoZWNrYm94Q2hhbmdlLCBNYXRDaGVja2JveE1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94JztcblxuZXhwb3J0IGNvbnN0IEZPUk1fQ0xPVURfRklFTERfVkFMSURBVE9SU19UT0tFTiA9IG5ldyBJbmplY3Rpb25Ub2tlbjxGb3JtRmllbGRWYWxpZGF0b3JbXT4oJ0ZPUk1fQ0xPVURfRklFTERfVkFMSURBVE9SU19UT0tFTicpO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2FkZi1jbG91ZC1mb3JtJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgICAgIEZvcm1hdFNwYWNlUGlwZSxcbiAgICAgICAgTWF0QnV0dG9uTW9kdWxlLFxuICAgICAgICBNYXRDYXJkTW9kdWxlLFxuICAgICAgICBGb3JtUmVuZGVyZXJDb21wb25lbnQsXG4gICAgICAgIE1hdEljb25Nb2R1bGUsXG4gICAgICAgIFRvb2xiYXJEaXZpZGVyQ29tcG9uZW50LFxuICAgICAgICBUb29sYmFyQ29tcG9uZW50LFxuICAgICAgICBBMTF5TW9kdWxlLFxuICAgICAgICBNYXRDaGVja2JveE1vZHVsZVxuICAgIF0sXG4gICAgcHJvdmlkZXJzOiBbRm9ybUNsb3VkU3Bpbm5lclNlcnZpY2VdLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWNsb3VkLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi9mb3JtLWNsb3VkLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRm9ybUNsb3VkQ29tcG9uZW50IGV4dGVuZHMgRm9ybUJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCB7XG4gICAgLyoqIEFwcCBuYW1lIHRvIGZldGNoIGNvcnJlc3BvbmRpbmcgZm9ybSBhbmQgdmFsdWVzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXBwTmFtZTogc3RyaW5nID0gJyc7XG5cbiAgICAvKiogVGhlIGFwcGxpY2F0aW9uIHZlcnNpb24gdG8gdXNlIHdoZW4gZmV0Y2hpbmcgZGF0YSAqL1xuICAgIEBJbnB1dCgpXG4gICAgYXBwVmVyc2lvbj86IG51bWJlcjtcblxuICAgIC8qKiBUYXNrIGlkIHRvIGZldGNoIGNvcnJlc3BvbmRpbmcgZm9ybSBhbmQgdmFsdWVzLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZm9ybUlkOiBzdHJpbmc7XG5cbiAgICAvKiogUHJvY2Vzc0luc3RhbmNlSWQgaWQgdG8gZmV0Y2ggY29ycmVzcG9uZGluZyBmb3JtIGFuZCB2YWx1ZXMuICovXG4gICAgQElucHV0KClcbiAgICBwcm9jZXNzSW5zdGFuY2VJZDogc3RyaW5nO1xuXG4gICAgLyoqIFRhc2sgaWQgdG8gZmV0Y2ggY29ycmVzcG9uZGluZyBmb3JtIGFuZCB2YWx1ZXMuICovXG4gICAgQElucHV0KClcbiAgICB0YXNrSWQ6IHN0cmluZztcblxuICAgIC8qKiBDdXN0b20gZm9ybSB2YWx1ZXMgbWFwIHRvIGJlIHVzZWQgd2l0aCB0aGUgcmVuZGVyZWQgZm9ybS4gKi9cbiAgICBASW5wdXQoKVxuICAgIGRhdGE6IFRhc2tWYXJpYWJsZUNsb3VkW107XG5cbiAgICAvKiogVGhlIGF2YWlsYWJsZSBkaXNwbGF5IGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgZm9ybSAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGlzcGxheU1vZGVDb25maWd1cmF0aW9uczogRm9ybUNsb3VkRGlzcGxheU1vZGVDb25maWd1cmF0aW9uW107XG5cbiAgICAvKiogVG9nZ2xlIHJlbmRlcmluZyBvZiB0aGUgYE9wZW4gbmV4dCB0YXNrYCBjaGVja2JveC4gKi9cbiAgICBASW5wdXQoKVxuICAgIHNob3dOZXh0VGFza0NoZWNrYm94ID0gZmFsc2U7XG5cbiAgICAvKiogV2hldGhlciB0aGUgYE9wZW4gbmV4dCB0YXNrYCBjaGVja2JveCBpcyBjaGVja2VkIGJ5IGRlZmF1bHQgb3Igbm90LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgaXNOZXh0VGFza0NoZWNrYm94Q2hlY2tlZCA9IGZhbHNlO1xuXG4gICAgLyoqIFRvZ2dsZSByZW5kZXJpbmcgb2YgdGhlIGBDb21wbGV0ZWAgYnV0dG9uLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd0NvbXBsZXRlQnV0dG9uID0gZmFsc2U7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZCB3aXRoIHRoZSBgU2F2ZWAgb3IgY3VzdG9tIG91dGNvbWVzLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZvcm1TYXZlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybU1vZGVsPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgZm9ybSBpcyBzdWJtaXR0ZWQgd2l0aCB0aGUgYENvbXBsZXRlYCBvdXRjb21lLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZvcm1Db21wbGV0ZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1Nb2RlbD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGZvcm0gaXMgbG9hZGVkIG9yIHJlbG9hZGVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZvcm1Mb2FkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1Nb2RlbD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gZm9ybSB2YWx1ZXMgYXJlIHJlZnJlc2hlZCBkdWUgdG8gYSBkYXRhIHByb3BlcnR5IGNoYW5nZS4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBmb3JtRGF0YVJlZnJlc2hlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybU1vZGVsPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBmb3JtIGNvbnRlbnQgaXMgY2xpY2tlZC4gKi9cbiAgICBAT3V0cHV0KClcbiAgICBmb3JtQ29udGVudENsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPENvbnRlbnRMaW5rTW9kZWw+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGEgZGlzcGxheSBtb2RlIGNvbmZpZ3VyYXRpb24gaXMgdHVybmVkIG9uLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGRpc3BsYXlNb2RlT24gPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1DbG91ZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbj4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSBkaXNwbGF5IG1vZGUgY29uZmlndXJhdGlvbiBpcyB0dXJuZWQgb2ZmLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGRpc3BsYXlNb2RlT2ZmID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtQ2xvdWREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBgT3BlbiBuZXh0IHRhc2tgIGNoZWNrYm94IHdhcyB0b2dnbGVkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIG5leHRUYXNrQ2hlY2tib3hDaGVja2VkQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8TWF0Q2hlY2tib3hDaGFuZ2U+KCk7XG5cbiAgICBwcm90ZWN0ZWQgc3Vic2NyaXB0aW9uczogU3Vic2NyaXB0aW9uW10gPSBbXTtcbiAgICBub2RlSWQ6IHN0cmluZztcbiAgICBmb3JtQ2xvdWRSZXByZXNlbnRhdGlvbkpTT046IGFueTtcbiAgICBmaWVsZFZhbGlkYXRvcnM6IEZvcm1GaWVsZFZhbGlkYXRvcltdID0gW107XG5cbiAgICByZWFkb25seSBpZDogc3RyaW5nO1xuICAgIGRpc3BsYXlNb2RlOiBzdHJpbmc7XG4gICAgZGlzcGxheUNvbmZpZ3VyYXRpb246IEZvcm1DbG91ZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbiA9IERpc3BsYXlNb2RlU2VydmljZS5ERUZBVUxUX0RJU1BMQVlfTU9ERV9DT05GSUdVUkFUSU9OU1swXTtcbiAgICBzdHlsZTogc3RyaW5nID0gJyc7XG5cbiAgICBwcm90ZWN0ZWQgZm9ybUNsb3VkU2VydmljZSA9IGluamVjdChGb3JtQ2xvdWRTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgZm9ybVNlcnZpY2UgPSBpbmplY3QoRm9ybVNlcnZpY2UpO1xuICAgIHByb3RlY3RlZCB2aXNpYmlsaXR5U2VydmljZSA9IGluamVjdChXaWRnZXRWaXNpYmlsaXR5U2VydmljZSk7XG4gICAgcHJvdGVjdGVkIGRpYWxvZyA9IGluamVjdChNYXREaWFsb2cpO1xuICAgIHByb3RlY3RlZCBzcGlubmVyU2VydmljZSA9IGluamVjdChGb3JtQ2xvdWRTcGlubmVyU2VydmljZSk7XG4gICAgcHJvdGVjdGVkIGRpc3BsYXlNb2RlU2VydmljZSA9IGluamVjdChEaXNwbGF5TW9kZVNlcnZpY2UpO1xuICAgIHByb3RlY3RlZCBjaGFuZ2VEZXRlY3RvciA9IGluamVjdChDaGFuZ2VEZXRlY3RvclJlZik7XG5cbiAgICBwcml2YXRlIHJlYWRvbmx5IGRlc3Ryb3lSZWYgPSBpbmplY3QoRGVzdHJveVJlZik7XG5cbiAgICBjb25zdHJ1Y3RvcihAT3B0aW9uYWwoKSBASW5qZWN0KEZPUk1fQ0xPVURfRklFTERfVkFMSURBVE9SU19UT0tFTikgaW5qZWN0ZWRGaWVsZFZhbGlkYXRvcnM/OiBGb3JtRmllbGRWYWxpZGF0b3JbXSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmxvYWRJbmplY3RlZEZpZWxkVmFsaWRhdG9ycyhpbmplY3RlZEZpZWxkVmFsaWRhdG9ycyk7XG4gICAgICAgIHRoaXMuc3Bpbm5lclNlcnZpY2UuaW5pdFNwaW5uZXJIYW5kbGluZyh0aGlzLmRlc3Ryb3lSZWYpO1xuXG4gICAgICAgIHRoaXMuaWQgPSB1dWlkR2VuZXJhdGlvbigpO1xuXG4gICAgICAgIHRoaXMuZm9ybVNlcnZpY2UuZm9ybUNvbnRlbnRDbGlja2VkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoY29udGVudCkgPT4ge1xuICAgICAgICAgICAgaWYgKGNvbnRlbnQgaW5zdGFuY2VvZiBVcGxvYWRXaWRnZXRDb250ZW50TGlua01vZGVsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLnNldE5vZGVJZFZhbHVlRm9yVmlld2Vyc0xpbmtlZFRvVXBsb2FkV2lkZ2V0KGNvbnRlbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMub25Gb3JtRGF0YVJlZnJlc2hlZCh0aGlzLmZvcm0pO1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybVNlcnZpY2UuZm9ybURhdGFSZWZyZXNoZWQubmV4dChuZXcgRm9ybUV2ZW50KHRoaXMuZm9ybSkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Db250ZW50Q2xpY2tlZC5lbWl0KGNvbnRlbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLmZvcm1TZXJ2aWNlLnVwZGF0ZUZvcm1WYWx1ZXNSZXF1ZXN0ZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKCh2YWx1ZXNUb1NldElmTm90UHJlc2VudCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5mb3JtLmFkZFZhbHVlc05vdFByZXNlbnQodmFsdWVzVG9TZXRJZk5vdFByZXNlbnQpO1xuICAgICAgICAgICAgdGhpcy5vbkZvcm1EYXRhUmVmcmVzaGVkKHRoaXMuZm9ybSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZm9ybVNlcnZpY2UuZm9ybUZpZWxkVmFsdWVDaGFuZ2VkLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5kaXNhYmxlU2F2ZUJ1dHRvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZVNhdmVCdXR0b24gPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgb25LZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICAgICAgY29uc3QgYXBwTmFtZSA9IGNoYW5nZXNbJ2FwcE5hbWUnXTtcblxuICAgICAgICBpZiAoYXBwTmFtZT8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICBpZiAodGhpcy50YXNrSWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldEZvcm1CeVRhc2tJZChhcHBOYW1lLmN1cnJlbnRWYWx1ZSwgdGhpcy50YXNrSWQsIHRoaXMuYXBwVmVyc2lvbik7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZm9ybUlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRGb3JtQnlJZChhcHBOYW1lLmN1cnJlbnRWYWx1ZSwgdGhpcy5mb3JtSWQsIHRoaXMuYXBwVmVyc2lvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBmb3JtSWQgPSBjaGFuZ2VzWydmb3JtSWQnXTtcbiAgICAgICAgaWYgKGZvcm1JZD8uY3VycmVudFZhbHVlICYmIHRoaXMuYXBwTmFtZSkge1xuICAgICAgICAgICAgdGhpcy5nZXRGb3JtQnlJZCh0aGlzLmFwcE5hbWUsIGZvcm1JZC5jdXJyZW50VmFsdWUsIHRoaXMuYXBwVmVyc2lvbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0YXNrSWQgPSBjaGFuZ2VzWyd0YXNrSWQnXTtcbiAgICAgICAgaWYgKHRhc2tJZD8uY3VycmVudFZhbHVlICYmIHRoaXMuYXBwTmFtZSkge1xuICAgICAgICAgICAgdGhpcy5nZXRGb3JtQnlUYXNrSWQodGhpcy5hcHBOYW1lLCB0YXNrSWQuY3VycmVudFZhbHVlLCB0aGlzLmFwcFZlcnNpb24pO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF0YSA9IGNoYW5nZXNbJ2RhdGEnXTtcbiAgICAgICAgaWYgKGRhdGE/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5yZWZyZXNoRm9ybURhdGEoKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZvcm1SZXByZXNlbnRhdGlvbiA9IGNoYW5nZXNbJ2Zvcm0nXTtcbiAgICAgICAgaWYgKGZvcm1SZXByZXNlbnRhdGlvbj8uY3VycmVudFZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0gPSBmb3JtUmVwcmVzZW50YXRpb24uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgdGhpcy5vbkZvcm1Mb2FkZWQodGhpcy5mb3JtKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBEaXNwbGF5TW9kZVNlcnZpY2UuZGlzcGxheU1vZGUkXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBmaWx0ZXIoKGNoYW5nZSkgPT4gY2hhbmdlLmlkID09PSB0aGlzLmlkKSxcbiAgICAgICAgICAgICAgICB0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLnN1YnNjcmliZSgoZGlzcGxheU1vZGVDaGFuZ2UpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBvbGREaXNwbGF5TW9kZSA9IHRoaXMuZGlzcGxheU1vZGU7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5TW9kZSA9IGRpc3BsYXlNb2RlQ2hhbmdlLmRpc3BsYXlNb2RlO1xuXG4gICAgICAgICAgICAgICAgY29uc3Qgb2xkRGlzcGxheU1vZGVDb25maWd1cmF0aW9uID0gdGhpcy5kaXNwbGF5TW9kZVNlcnZpY2UuZmluZENvbmZpZ3VyYXRpb24ob2xkRGlzcGxheU1vZGUsIHRoaXMuZGlzcGxheU1vZGVDb25maWd1cmF0aW9ucyk7XG4gICAgICAgICAgICAgICAgY29uc3QgbmV3RGlzcGxheU1vZGVDb25maWd1cmF0aW9uID0gdGhpcy5kaXNwbGF5TW9kZVNlcnZpY2UuZmluZENvbmZpZ3VyYXRpb24oXG4gICAgICAgICAgICAgICAgICAgIGRpc3BsYXlNb2RlQ2hhbmdlLmRpc3BsYXlNb2RlLFxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnNcbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgaWYgKG9sZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbj8uZGlzcGxheU1vZGUgIT09IG5ld0Rpc3BsYXlNb2RlQ29uZmlndXJhdGlvbj8uZGlzcGxheU1vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9sZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5TW9kZU9mZi5lbWl0KG9sZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0Rpc3BsYXlNb2RlQ29uZmlndXJhdGlvbikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5TW9kZU9uLmVtaXQobmV3RGlzcGxheU1vZGVDb25maWd1cmF0aW9uKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheUNvbmZpZ3VyYXRpb24gPSBuZXdEaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb247XG4gICAgICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBJbnZva2VkIHdoZW4gdXNlciBjbGlja3MgZm9ybSByZWZyZXNoIGJ1dHRvbi5cbiAgICAgKi9cbiAgICBvblJlZnJlc2hDbGlja2VkKCkge1xuICAgICAgICB0aGlzLmxvYWRGb3JtKCk7XG4gICAgfVxuXG4gICAgbG9hZEZvcm0oKSB7XG4gICAgICAgIGlmICh0aGlzLmFwcE5hbWUgJiYgdGhpcy50YXNrSWQpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybUJ5VGFza0lkKHRoaXMuYXBwTmFtZSwgdGhpcy50YXNrSWQsIHRoaXMuYXBwVmVyc2lvbik7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5hcHBOYW1lICYmIHRoaXMuZm9ybUlkKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZvcm1CeUlkKHRoaXMuYXBwTmFtZSwgdGhpcy5mb3JtSWQsIHRoaXMuYXBwVmVyc2lvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmaW5kUHJvY2Vzc1ZhcmlhYmxlc0J5VGFza0lkKGFwcE5hbWU6IHN0cmluZywgdGFza0lkOiBzdHJpbmcpOiBPYnNlcnZhYmxlPFRhc2tWYXJpYWJsZUNsb3VkW10+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybUNsb3VkU2VydmljZS5nZXRUYXNrKGFwcE5hbWUsIHRhc2tJZCkucGlwZShcbiAgICAgICAgICAgIHN3aXRjaE1hcCgodGFzaykgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQVByb2Nlc3NUYXNrKHRhc2spKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmZvcm1DbG91ZFNlcnZpY2UuZ2V0VGFza1ZhcmlhYmxlcyhhcHBOYW1lLCB0YXNrSWQpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvZihbXSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpc0FQcm9jZXNzVGFzayh0YXNrUmVwcmVzZW50YXRpb246IFRhc2tEZXRhaWxzQ2xvdWRNb2RlbCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGFza1JlcHJlc2VudGF0aW9uLnByb2Nlc3NEZWZpbml0aW9uSWQgJiYgdGFza1JlcHJlc2VudGF0aW9uLnByb2Nlc3NEZWZpbml0aW9uRGVwbG95bWVudElkICE9PSAnbnVsbCc7XG4gICAgfVxuXG4gICAgZ2V0Rm9ybUJ5VGFza0lkKGFwcE5hbWU6IHN0cmluZywgdGFza0lkOiBzdHJpbmcsIHZlcnNpb24/OiBudW1iZXIpOiBQcm9taXNlPEZvcm1Nb2RlbD4ge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2U8Rm9ybU1vZGVsPigocmVzb2x2ZSkgPT4ge1xuICAgICAgICAgICAgZm9ya0pvaW4odGhpcy5mb3JtQ2xvdWRTZXJ2aWNlLmdldFRhc2tGb3JtKGFwcE5hbWUsIHRhc2tJZCwgdmVyc2lvbiksIHRoaXMuZm9ybUNsb3VkU2VydmljZS5nZXRUYXNrVmFyaWFibGVzKGFwcE5hbWUsIHRhc2tJZCkpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgKGRhdGEpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OID0gZGF0YVswXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ2xvdWRSZXByZXNlbnRhdGlvbkpTT04ucHJvY2Vzc1ZhcmlhYmxlcyA9IGRhdGFbMV07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGEgPSBkYXRhWzFdO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWRGb3JtID0gdGhpcy5wYXJzZUZvcm0odGhpcy5mb3JtQ2xvdWRSZXByZXNlbnRhdGlvbkpTT04pO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy52aXNpYmlsaXR5U2VydmljZS5yZWZyZXNoVmlzaWJpbGl0eShwYXJzZWRGb3JtLCB0aGlzLmRhdGEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkRm9ybS52YWxpZGF0ZUZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybSA9IHBhcnNlZEZvcm07XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ubm9kZUlkID0gJy1teS0nO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkZvcm1Mb2FkZWQodGhpcy5mb3JtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodGhpcy5mb3JtKTtcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRGb3JtQnlJZChhcHBOYW1lOiBzdHJpbmcsIGZvcm1JZDogc3RyaW5nLCBhcHBWZXJzaW9uPzogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuZm9ybUNsb3VkU2VydmljZVxuICAgICAgICAgICAgLmdldEZvcm0oYXBwTmFtZSwgZm9ybUlkLCBhcHBWZXJzaW9uKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKChmb3JtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZsYXR0ZW5Gb3JtID0geyAuLi5mb3JtLmZvcm1SZXByZXNlbnRhdGlvbiwgLi4uZm9ybS5mb3JtUmVwcmVzZW50YXRpb24uZm9ybURlZmluaXRpb24gfTtcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGZsYXR0ZW5Gb3JtLmZvcm1EZWZpbml0aW9uO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmxhdHRlbkZvcm07XG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgKGZvcm0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ2xvdWRSZXByZXNlbnRhdGlvbkpTT04gPSBmb3JtO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1DbG91ZFJlcHJlc2VudGF0aW9uSlNPTi5wcm9jZXNzVmFyaWFibGVzID0gdGhpcy5kYXRhIHx8IFtdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJzZWRGb3JtID0gdGhpcy5wYXJzZUZvcm0oZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJpbGl0eVNlcnZpY2UucmVmcmVzaFZpc2liaWxpdHkocGFyc2VkRm9ybSk7XG4gICAgICAgICAgICAgICAgICAgIHBhcnNlZEZvcm0/LnZhbGlkYXRlRm9ybSgpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0gPSBwYXJzZWRGb3JtO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0ubm9kZUlkID0gJy1teS0nO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uRm9ybUxvYWRlZCh0aGlzLmZvcm0pO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgKGVycm9yKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgc2F2ZVRhc2tGb3JtKCkge1xuICAgICAgICBpZiAodGhpcy5mb3JtICYmIHRoaXMuYXBwTmFtZSAmJiB0aGlzLnRhc2tJZCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtQ2xvdWRTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLnNhdmVUYXNrRm9ybSh0aGlzLmFwcE5hbWUsIHRoaXMudGFza0lkLCB0aGlzLnByb2Nlc3NJbnN0YW5jZUlkLCBgJHt0aGlzLmZvcm0uaWR9YCwgdGhpcy5mb3JtLnZhbHVlcylcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFza1NhdmVkKHRoaXMuZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIChlcnJvcikgPT4gdGhpcy5vblRhc2tTYXZlZEVycm9yKGVycm9yKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlNb2RlU2VydmljZS5vblNhdmVUYXNrKHRoaXMuaWQsIHRoaXMuZGlzcGxheU1vZGUsIHRoaXMuZGlzcGxheU1vZGVDb25maWd1cmF0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBjb21wbGV0ZVRhc2tGb3JtKG91dGNvbWU/OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybT8uY29uZmlybU1lc3NhZ2U/LnNob3cgPT09IHRydWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGRpYWxvZ1JlZiA9IHRoaXMuZGlhbG9nLm9wZW4oQ29uZmlybURpYWxvZ0NvbXBvbmVudCwge1xuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogdGhpcy5mb3JtLmNvbmZpcm1NZXNzYWdlLm1lc3NhZ2VcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIG1pbldpZHRoOiAnNDUwcHgnXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgZGlhbG9nUmVmLmFmdGVyQ2xvc2VkKCkuc3Vic2NyaWJlKChyZXN1bHQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY29tcGxldGVGb3JtKG91dGNvbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jb21wbGV0ZUZvcm0ob3V0Y29tZSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kaXNwbGF5TW9kZVNlcnZpY2Uub25Db21wbGV0ZVRhc2sodGhpcy5pZCwgdGhpcy5kaXNwbGF5TW9kZSwgdGhpcy5kaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbXBsZXRlRm9ybShvdXRjb21lPzogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmZvcm0gJiYgdGhpcy5hcHBOYW1lICYmIHRoaXMudGFza0lkKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm1DbG91ZFNlcnZpY2VcbiAgICAgICAgICAgICAgICAuY29tcGxldGVUYXNrRm9ybSh0aGlzLmFwcE5hbWUsIHRoaXMudGFza0lkLCB0aGlzLnByb2Nlc3NJbnN0YW5jZUlkLCBgJHt0aGlzLmZvcm0uaWR9YCwgdGhpcy5mb3JtLnZhbHVlcywgb3V0Y29tZSwgdGhpcy5hcHBWZXJzaW9uKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25UYXNrQ29tcGxldGVkKHRoaXMuZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIChlcnJvcikgPT4gdGhpcy5vblRhc2tDb21wbGV0ZWRFcnJvcihlcnJvcilcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcGFyc2VGb3JtKGZvcm1DbG91ZFJlcHJlc2VudGF0aW9uSlNPTj86IGFueSk6IEZvcm1Nb2RlbCB8IG51bGwge1xuICAgICAgICBpZiAoZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtVmFsdWVzOiBGb3JtVmFsdWVzID0ge307XG4gICAgICAgICAgICAodGhpcy5kYXRhIHx8IFtdKS5mb3JFYWNoKCh2YXJpYWJsZSkgPT4ge1xuICAgICAgICAgICAgICAgIGZvcm1WYWx1ZXNbdmFyaWFibGUubmFtZV0gPSB2YXJpYWJsZS52YWx1ZTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBjb25zdCBmb3JtID0gbmV3IEZvcm1Nb2RlbChmb3JtQ2xvdWRSZXByZXNlbnRhdGlvbkpTT04sIGZvcm1WYWx1ZXMsIHRoaXMucmVhZE9ubHksIHRoaXMuZm9ybVNlcnZpY2UsIHVuZGVmaW5lZCwgdGhpcy5maWVsZFZhbGlkYXRvcnMpO1xuICAgICAgICAgICAgaWYgKCFmb3JtKSB7XG4gICAgICAgICAgICAgICAgZm9ybS5vdXRjb21lcyA9IHRoaXMuZ2V0Rm9ybURlZmluaXRpb25PdXRjb21lcyhmb3JtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmb3JtO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGN1c3RvbSBzZXQgb2Ygb3V0Y29tZXMgZm9yIGEgRm9ybSBEZWZpbml0aW9uLlxuICAgICAqXG4gICAgICogQHBhcmFtIGZvcm0gRm9ybSBkZWZpbml0aW9uIG1vZGVsLlxuICAgICAqIEByZXR1cm5zIGxpc3Qgb2YgZm9ybSBvdXRjb21lc1xuICAgICAqL1xuICAgIGdldEZvcm1EZWZpbml0aW9uT3V0Y29tZXMoZm9ybTogRm9ybU1vZGVsKTogRm9ybU91dGNvbWVNb2RlbFtdIHtcbiAgICAgICAgcmV0dXJuIFtuZXcgRm9ybU91dGNvbWVNb2RlbChmb3JtLCB7IGlkOiAnJHNhdmUnLCBuYW1lOiBGb3JtT3V0Y29tZU1vZGVsLlNBVkVfQUNUSU9OLCBpc1N5c3RlbTogdHJ1ZSB9KV07XG4gICAgfVxuXG4gICAgY2hlY2tWaXNpYmlsaXR5KGZpZWxkOiBGb3JtRmllbGRNb2RlbCkge1xuICAgICAgICBpZiAoZmllbGQ/LmZvcm0pIHtcbiAgICAgICAgICAgIHRoaXMudmlzaWJpbGl0eVNlcnZpY2UucmVmcmVzaFZpc2liaWxpdHkoZmllbGQuZm9ybSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlZnJlc2hGb3JtRGF0YSgpIHtcbiAgICAgICAgdGhpcy5mb3JtID0gdGhpcy5wYXJzZUZvcm0odGhpcy5mb3JtQ2xvdWRSZXByZXNlbnRhdGlvbkpTT04pO1xuICAgICAgICBpZiAodGhpcy5mb3JtKSB7XG4gICAgICAgICAgICB0aGlzLm9uRm9ybUxvYWRlZCh0aGlzLmZvcm0pO1xuICAgICAgICAgICAgdGhpcy5vbkZvcm1EYXRhUmVmcmVzaGVkKHRoaXMuZm9ybSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Gb3JtTG9hZGVkKGZvcm06IEZvcm1Nb2RlbCkge1xuICAgICAgICBpZiAoZm9ybSkge1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zID0gdGhpcy5kaXNwbGF5TW9kZVNlcnZpY2UuZ2V0RGlzcGxheU1vZGVDb25maWd1cmF0aW9ucyh0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5TW9kZSA9IHRoaXMuZGlzcGxheU1vZGVTZXJ2aWNlLnN3aXRjaFRvRGlzcGxheU1vZGUoXG4gICAgICAgICAgICAgICAgdGhpcy5pZCxcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uanNvbi5kaXNwbGF5TW9kZSxcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlNb2RlLFxuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGVDb25maWd1cmF0aW9uc1xuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5kaXNwbGF5Q29uZmlndXJhdGlvbiA9IHRoaXMuZGlzcGxheU1vZGVTZXJ2aWNlLmZpbmRDb25maWd1cmF0aW9uKHRoaXMuZGlzcGxheU1vZGUsIHRoaXMuZGlzcGxheU1vZGVDb25maWd1cmF0aW9ucyk7XG5cbiAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGVPbi5lbWl0KHRoaXMuZGlzcGxheUNvbmZpZ3VyYXRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIHRoaXMuZm9ybUxvYWRlZC5lbWl0KGZvcm0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkZvcm1EYXRhUmVmcmVzaGVkKGZvcm06IEZvcm1Nb2RlbCkge1xuICAgICAgICB0aGlzLmZvcm1EYXRhUmVmcmVzaGVkLmVtaXQoZm9ybSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uVGFza1NhdmVkKGZvcm06IEZvcm1Nb2RlbCkge1xuICAgICAgICB0aGlzLmZvcm1TYXZlZC5lbWl0KGZvcm0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblRhc2tTYXZlZEVycm9yKGVycm9yOiBhbnkpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uVGFza0NvbXBsZXRlZChmb3JtOiBGb3JtTW9kZWwpIHtcbiAgICAgICAgdGhpcy5mb3JtQ29tcGxldGVkLmVtaXQoZm9ybSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uVGFza0NvbXBsZXRlZEVycm9yKGVycm9yOiBhbnkpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRXhlY3V0ZU91dGNvbWUob3V0Y29tZTogRm9ybU91dGNvbWVNb2RlbCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBhcmdzID0gbmV3IEZvcm1PdXRjb21lRXZlbnQob3V0Y29tZSk7XG5cbiAgICAgICAgaWYgKGFyZ3MuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5leGVjdXRlT3V0Y29tZS5lbWl0KGFyZ3MpO1xuICAgICAgICByZXR1cm4gIWFyZ3MuZGVmYXVsdFByZXZlbnRlZDtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgc3RvcmVGb3JtQXNNZXRhZGF0YSgpIHt9XG5cbiAgICBzd2l0Y2hUb0Rpc3BsYXlNb2RlKG5ld0Rpc3BsYXlNb2RlPzogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuZGlzcGxheU1vZGVTZXJ2aWNlLnN3aXRjaFRvRGlzcGxheU1vZGUodGhpcy5pZCwgRm9ybUNsb3VkRGlzcGxheU1vZGVbbmV3RGlzcGxheU1vZGVdLCB0aGlzLmRpc3BsYXlNb2RlLCB0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnMpO1xuICAgIH1cblxuICAgIGZpbmREaXNwbGF5Q29uZmlndXJhdGlvbihkaXNwbGF5TW9kZT86IHN0cmluZyk6IEZvcm1DbG91ZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRpc3BsYXlNb2RlU2VydmljZS5maW5kQ29uZmlndXJhdGlvbihGb3JtQ2xvdWREaXNwbGF5TW9kZVtkaXNwbGF5TW9kZV0sIHRoaXMuZGlzcGxheU1vZGVDb25maWd1cmF0aW9ucyk7XG4gICAgfVxuXG4gICAgbG9hZEluamVjdGVkRmllbGRWYWxpZGF0b3JzKGluamVjdGVkRmllbGRWYWxpZGF0b3JzOiBGb3JtRmllbGRWYWxpZGF0b3JbXSk6IHZvaWQge1xuICAgICAgICBpZiAoaW5qZWN0ZWRGaWVsZFZhbGlkYXRvcnMgJiYgaW5qZWN0ZWRGaWVsZFZhbGlkYXRvcnM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5maWVsZFZhbGlkYXRvcnMgPSBbLi4udGhpcy5maWVsZFZhbGlkYXRvcnMsIC4uLmluamVjdGVkRmllbGRWYWxpZGF0b3JzXTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG9uTmV4dFRhc2tDaGVja2JveENoZWNrZWRDaGFuZ2VkKGV2ZW50OiBNYXRDaGVja2JveENoYW5nZSkge1xuICAgICAgICB0aGlzLm5leHRUYXNrQ2hlY2tib3hDaGVja2VkQ2hhbmdlZC5lbWl0KGV2ZW50KTtcbiAgICB9XG59XG4iLCI8ZGl2ICpuZ0lmPVwiIWhhc0Zvcm0oKVwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltlbXB0eS1mb3JtXVwiIC8+XG48L2Rpdj5cblxuPGRpdlxuICAgICpuZ0lmPVwiaGFzRm9ybSgpXCJcbiAgICBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLWNvbnRhaW5lciBhZGYtY2xvdWQtZm9ybS17eyBkaXNwbGF5Q29uZmlndXJhdGlvbj8ub3B0aW9ucz8uZnVsbHNjcmVlbiA/ICdmdWxsc2NyZWVuJyA6ICdpbmxpbmUnIH19LWNvbnRhaW5lclwiXG4gICAgW3N0eWxlXT1cImZvcm1TdHlsZVwiXG4+XG4gICAgPGRpdiBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLWNvbnRlbnRcIiBbY2RrVHJhcEZvY3VzXT1cImRpc3BsYXlDb25maWd1cmF0aW9uPy5vcHRpb25zPy50cmFwRm9jdXNcIiBjZGtUcmFwRm9jdXNBdXRvQ2FwdHVyZT5cbiAgICAgICAgPGFkZi10b29sYmFyIGNsYXNzPVwiYWRmLWNsb3VkLWZvcm0tdG9vbGJhclwiICpuZ0lmPVwiZGlzcGxheUNvbmZpZ3VyYXRpb24/Lm9wdGlvbnM/LmRpc3BsYXlUb29sYmFyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYWRmLWNsb3VkLWZvcm1fX2Zvcm0tdGl0bGVcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZi1jbG91ZC1mb3JtX19kaXNwbGF5LW5hbWVcIiBbdGl0bGVdPVwiZm9ybS50YXNrTmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBmb3JtLnRhc2tOYW1lIH19XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZm9ybS50YXNrTmFtZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge3sgJ0ZPUk0uRk9STV9SRU5ERVJFUi5OQU1FTEVTU19UQVNLJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPGFkZi10b29sYmFyLWRpdmlkZXIgKm5nSWY9XCJkaXNwbGF5Q29uZmlndXJhdGlvbj8ub3B0aW9ucz8uZGlzcGxheUNsb3NlQnV0dG9uXCIgLz5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAqbmdJZj1cImRpc3BsYXlDb25maWd1cmF0aW9uPy5vcHRpb25zPy5kaXNwbGF5Q2xvc2VCdXR0b25cIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYWRmLWNsb3VkLWZvcm0tY2xvc2UtYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBkYXRhLWF1dG9tYXRpb24taWQ9XCJhZGYtdG9vbGJhci1yaWdodC1iYWNrXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFDVElPTlMuQ0xPU0UnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2FkZi1jbG91ZC1mb3JtLWNsb3NlLWJ1dHRvbidcIlxuICAgICAgICAgICAgICAgIFt0aXRsZV09XCInQURGX1ZJRVdFUi5BQ1RJT05TLkNMT1NFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgbWF0LWljb24tYnV0dG9uXG4gICAgICAgICAgICAgICAgdGl0bGU9XCJ7eyAnQURGX1ZJRVdFUi5BQ1RJT05TLkNMT1NFJyB8IHRyYW5zbGF0ZSB9fVwiXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cInN3aXRjaFRvRGlzcGxheU1vZGUoKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2FkZi10b29sYmFyPlxuXG4gICAgICAgIDxtYXQtY2FyZFxuICAgICAgICAgICAgYXBwZWFyYW5jZT1cIm91dGxpbmVkXCJcbiAgICAgICAgICAgIGNsYXNzPVwiYWRmLWNsb3VkLWZvcm0tY29udGVudC1jYXJkXCJcbiAgICAgICAgICAgIFtjbGFzcy5hZGYtY2xvdWQtZm9ybS1jb250ZW50LWNhcmQtZnVsbHNjcmVlbl09XCJkaXNwbGF5TW9kZSA9PT0gJ2Z1bGxTY3JlZW4nXCJcbiAgICAgICAgPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLWNvbnRlbnQtY2FyZC1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQtaGVhZGVyICpuZ0lmPVwic2hvd1RpdGxlIHx8IHNob3dSZWZyZXNoQnV0dG9uIHx8IHNob3dWYWxpZGF0aW9uSWNvblwiPlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aDQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dWYWxpZGF0aW9uSWNvblwiIGNsYXNzPVwiYWRmLWZvcm0tdmFsaWRhdGlvbi1idXR0b25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGkgaWQ9XCJhZGYtdmFsaWQtZm9ybS1pY29uXCIgY2xhc3M9XCJtYXRlcmlhbC1pY29uc1wiICpuZ0lmPVwiZm9ybS5pc1ZhbGlkOyBlbHNlIG5vX3ZhbGlkX2Zvcm1cIj5jaGVja19jaXJjbGU8L2k+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9fdmFsaWRfZm9ybT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGlkPVwiYWRmLWludmFsaWQtZm9ybS1pY29uXCIgY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBhZGYtaW52YWxpZC1jb2xvclwiPmVycm9yPC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhZGlzcGxheUNvbmZpZ3VyYXRpb24/Lm9wdGlvbnM/LmZ1bGxzY3JlZW4gJiYgZmluZERpc3BsYXlDb25maWd1cmF0aW9uKCdmdWxsU2NyZWVuJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLWZ1bGxzY3JlZW4tYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInN3aXRjaFRvRGlzcGxheU1vZGUoJ2Z1bGxTY3JlZW4nKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLWF1dG9tYXRpb24taWRdPVwiJ2FkZi1jbG91ZC1mb3JtLWZ1bGxzY3JlZW4tYnV0dG9uJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5mdWxsc2NyZWVuPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAqbmdJZj1cInNob3dSZWZyZXNoQnV0dG9uXCIgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS1yZWxvYWQtYnV0dG9uXCIgW3RpdGxlXT1cIidBREZfVklFV0VSLkFDVElPTlMuRlVMTFNDUkVFTicgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uUmVmcmVzaENsaWNrZWQoKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5GVUxMU0NSRUVOJyB8IHRyYW5zbGF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uPnJlZnJlc2g8L21hdC1pY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImlzVGl0bGVFbmFibGVkKClcIiBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLXRpdGxlXCIgW3RpdGxlXT1cImZvcm0udGFza05hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+e3sgZm9ybS50YXNrTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZvcm0udGFza05hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdGT1JNLkZPUk1fUkVOREVSRVIuTkFNRUxFU1NfVEFTSycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9oND5cbiAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImFkZi1mb3JtLWNvbnRhaW5lci1jYXJkLWNvbnRlbnRcIj5cbiAgICAgICAgICAgICAgICAgICAgPGFkZi1mb3JtLXJlbmRlcmVyIFtmb3JtRGVmaW5pdGlvbl09XCJmb3JtXCIgW3JlYWRPbmx5XT1cInJlYWRPbmx5XCIgLz5cbiAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxtYXQtY2FyZC1hY3Rpb25zICpuZ0lmPVwiZm9ybS5oYXNPdXRjb21lcygpXCIgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS1jb250ZW50LWNhcmQtYWN0aW9uc1wiIGFsaWduPVwiZW5kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJhZGYtZm9ybS1vcGVuLW5leHQtdGFza1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzaG93TmV4dFRhc2tDaGVja2JveCAmJiBzaG93Q29tcGxldGVCdXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjaGVja2VkXT1cImlzTmV4dFRhc2tDaGVja2JveENoZWNrZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25OZXh0VGFza0NoZWNrYm94Q2hlY2tlZENoYW5nZWQoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7ICdBREZfQ0xPVURfVEFTS19GT1JNLk9QRU5fTkVYVF9UQVNLLkxBQkVMJyB8IHRyYW5zbGF0ZSB9fTwvbWF0LWNoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFkZi1jYXJkLWFjdGlvbnMtc3BhY2VyXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiYWRmLWNsb3VkLWZvcm0tY3VzdG9tLW91dGNvbWVzXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG91dGNvbWUgb2YgZm9ybS5vdXRjb21lc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJvdXRjb21lLmlzVmlzaWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCInYWRmLWZvcm0tJyArIG91dGNvbWUubmFtZSB8IGZvcm1hdFNwYWNlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbG9yXT1cImdldENvbG9yRm9yT3V0Y29tZShvdXRjb21lLm5hbWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0LWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzT3V0Y29tZUJ1dHRvbkVuYWJsZWQob3V0Y29tZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MuYWRmLWZvcm0taGlkZS1idXR0b25dPVwiIWlzT3V0Y29tZUJ1dHRvblZpc2libGUob3V0Y29tZSwgZm9ybS5yZWFkT25seSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLWN1c3RvbS1vdXRjb21lLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk91dGNvbWVDbGlja2VkKG91dGNvbWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7IG91dGNvbWUubmFtZSB8IHRyYW5zbGF0ZSB8IHVwcGVyY2FzZSB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtYWN0aW9ucz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L21hdC1jYXJkPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|
|
416
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1jbG91ZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWIvcHJvY2Vzcy1zZXJ2aWNlcy1jbG91ZC9zcmMvbGliL2Zvcm0vY29tcG9uZW50cy9mb3JtLWNsb3VkLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYi9wcm9jZXNzLXNlcnZpY2VzLWNsb3VkL3NyYy9saWIvZm9ybS9jb21wb25lbnRzL2Zvcm0tY2xvdWQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBRUgsT0FBTyxFQUNILGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsVUFBVSxFQUNWLFlBQVksRUFDWixZQUFZLEVBQ1osTUFBTSxFQUNOLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBRVQsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBYyxFQUFFLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzlELE9BQU8sRUFBRSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFDSCxzQkFBc0IsRUFFdEIsZUFBZSxFQUNmLGlCQUFpQixFQUNqQixTQUFTLEVBR1QsU0FBUyxFQUNULGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIscUJBQXFCLEVBQ3JCLFdBQVcsRUFFWCxnQkFBZ0IsRUFDaEIsdUJBQXVCLEVBQ3ZCLDRCQUE0QixFQUM1Qix1QkFBdUIsRUFDMUIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUdsRSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDckQsT0FBTyxFQUFFLEVBQUUsSUFBSSxjQUFjLEVBQUUsTUFBTSxNQUFN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QUNiLHVCQUF1Qjt3QkFDdkIsZ0JBQWdCO3dCQUNoQixVQUFVO3dCQUNWLGlCQUFpQjtxQkFDcEIsYUFDVSxDQUFDLHVCQUF1QixDQUFDOzswQkFpR3ZCLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsaUNBQWlDO3lDQTFGakUsT0FBTztzQkFETixLQUFLO2dCQUtOLFVBQVU7c0JBRFQsS0FBSztnQkFLTixNQUFNO3NCQURMLEtBQUs7Z0JBS04saUJBQWlCO3NCQURoQixLQUFLO2dCQUtOLE1BQU07c0JBREwsS0FBSztnQkFLTixJQUFJO3NCQURILEtBQUs7Z0JBS04seUJBQXlCO3NCQUR4QixLQUFLO2dCQUtOLG9CQUFvQjtzQkFEbkIsS0FBSztnQkFLTix5QkFBeUI7c0JBRHhCLEtBQUs7Z0JBS04sa0JBQWtCO3NCQURqQixLQUFLO2dCQUtOLFNBQVM7c0JBRFIsTUFBTTtnQkFLUCxhQUFhO3NCQURaLE1BQU07Z0JBS1AsVUFBVTtzQkFEVCxNQUFNO2dCQUtQLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFLUCxrQkFBa0I7c0JBRGpCLE1BQU07Z0JBS1AsYUFBYTtzQkFEWixNQUFNO2dCQUtQLGNBQWM7c0JBRGIsTUFBTTtnQkFLUCw4QkFBOEI7c0JBRDdCLE1BQU07Z0JBcURQLFNBQVM7c0JBRFIsWUFBWTt1QkFBQyxTQUFTLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgwqkgMjAwNS0yMDI1IEh5bGFuZCBTb2Z0d2FyZSwgSW5jLiBhbmQgaXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCB7XG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIERlc3Ryb3lSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbmplY3QsXG4gICAgaW5qZWN0LFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIElucHV0LFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXNcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBmb3JrSm9pbiwgT2JzZXJ2YWJsZSwgb2YsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgZmlsdGVyLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gICAgQ29uZmlybURpYWxvZ0NvbXBvbmVudCxcbiAgICBDb250ZW50TGlua01vZGVsLFxuICAgIEZvcm1hdFNwYWNlUGlwZSxcbiAgICBGb3JtQmFzZUNvbXBvbmVudCxcbiAgICBGb3JtRXZlbnQsXG4gICAgRm9ybUZpZWxkTW9kZWwsXG4gICAgRm9ybUZpZWxkVmFsaWRhdG9yLFxuICAgIEZvcm1Nb2RlbCxcbiAgICBGb3JtT3V0Y29tZUV2ZW50LFxuICAgIEZvcm1PdXRjb21lTW9kZWwsXG4gICAgRm9ybVJlbmRlcmVyQ29tcG9uZW50LFxuICAgIEZvcm1TZXJ2aWNlLFxuICAgIEZvcm1WYWx1ZXMsXG4gICAgVG9vbGJhckNvbXBvbmVudCxcbiAgICBUb29sYmFyRGl2aWRlckNvbXBvbmVudCxcbiAgICBVcGxvYWRXaWRnZXRDb250ZW50TGlua01vZGVsLFxuICAgIFdpZGdldFZpc2liaWxpdHlTZXJ2aWNlXG59IGZyb20gJ0BhbGZyZXNjby9hZGYtY29yZSc7XG5pbXBvcnQgeyBGb3JtQ2xvdWRTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvZm9ybS1jbG91ZC5zZXJ2aWNlJztcbmltcG9ydCB7IFRhc2tWYXJpYWJsZUNsb3VkIH0gZnJvbSAnLi4vbW9kZWxzL3Rhc2stdmFyaWFibGUtY2xvdWQubW9kZWwnO1xuaW1wb3J0IHsgVGFza0RldGFpbHNDbG91ZE1vZGVsIH0gZnJvbSAnLi4vLi4vdGFzay9tb2RlbHMvdGFzay1kZXRhaWxzLWNsb3VkLm1vZGVsJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyB2NCBhcyB1dWlkR2VuZXJhdGlvbiB9IGZyb20gJ3V1aWQnO1xuaW1wb3J0IHsgRm9ybUNsb3VkRGlzcGxheU1vZGUsIEZvcm1DbG91ZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbiB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2Zvcm0tZmllbGRzLmludGVyZmFjZXMnO1xuaW1wb3J0IHsgRm9ybUNsb3VkU3Bpbm5lclNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9zcGlubmVyL2Zvcm0tY2xvdWQtc3Bpbm5lci5zZXJ2aWNlJztcbmltcG9ydCB7IERpc3BsYXlNb2RlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2Rpc3BsYXktbW9kZS5zZXJ2aWNlJztcbmltcG9ydCB7IHRha2VVbnRpbERlc3Ryb3llZCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUvcnhqcy1pbnRlcm9wJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XG5pbXBvcnQgeyBNYXRDYXJkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2FyZCc7XG5pbXBvcnQgeyBNYXRJY29uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvaWNvbic7XG5pbXBvcnQgeyBBMTF5TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2ExMXknO1xuaW1wb3J0IHsgTWF0Q2hlY2tib3hDaGFuZ2UsIE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xuXG5leHBvcnQgY29uc3QgRk9STV9DTE9VRF9GSUVMRF9WQUxJREFUT1JTX1RPS0VOID0gbmV3IEluamVjdGlvblRva2VuPEZvcm1GaWVsZFZhbGlkYXRvcltdPignRk9STV9DTE9VRF9GSUVMRF9WQUxJREFUT1JTX1RPS0VOJyk7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnYWRmLWNsb3VkLWZvcm0nLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIFRyYW5zbGF0ZU1vZHVsZSxcbiAgICAgICAgRm9ybWF0U3BhY2VQaXBlLFxuICAgICAgICBNYXRCdXR0b25Nb2R1bGUsXG4gICAgICAgIE1hdENhcmRNb2R1bGUsXG4gICAgICAgIEZvcm1SZW5kZXJlckNvbXBvbmVudCxcbiAgICAgICAgTWF0SWNvbk1vZHVsZSxcbiAgICAgICAgVG9vbGJhckRpdmlkZXJDb21wb25lbnQsXG4gICAgICAgIFRvb2xiYXJDb21wb25lbnQsXG4gICAgICAgIEExMXlNb2R1bGUsXG4gICAgICAgIE1hdENoZWNrYm94TW9kdWxlXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtGb3JtQ2xvdWRTcGlubmVyU2VydmljZV0sXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tY2xvdWQuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0eWxlVXJsczogWycuL2Zvcm0tY2xvdWQuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBGb3JtQ2xvdWRDb21wb25lbnQgZXh0ZW5kcyBGb3JtQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0IHtcbiAgICAvKiogQXBwIG5hbWUgdG8gZmV0Y2ggY29ycmVzcG9uZGluZyBmb3JtIGFuZCB2YWx1ZXMuICovXG4gICAgQElucHV0KClcbiAgICBhcHBOYW1lOiBzdHJpbmcgPSAnJztcblxuICAgIC8qKiBUaGUgYXBwbGljYXRpb24gdmVyc2lvbiB0byB1c2Ugd2hlbiBmZXRjaGluZyBkYXRhICovXG4gICAgQElucHV0KClcbiAgICBhcHBWZXJzaW9uPzogbnVtYmVyO1xuXG4gICAgLyoqIFRhc2sgaWQgdG8gZmV0Y2ggY29ycmVzcG9uZGluZyBmb3JtIGFuZCB2YWx1ZXMuICovXG4gICAgQElucHV0KClcbiAgICBmb3JtSWQ6IHN0cmluZztcblxuICAgIC8qKiBQcm9jZXNzSW5zdGFuY2VJZCBpZCB0byBmZXRjaCBjb3JyZXNwb25kaW5nIGZvcm0gYW5kIHZhbHVlcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHByb2Nlc3NJbnN0YW5jZUlkOiBzdHJpbmc7XG5cbiAgICAvKiogVGFzayBpZCB0byBmZXRjaCBjb3JyZXNwb25kaW5nIGZvcm0gYW5kIHZhbHVlcy4gKi9cbiAgICBASW5wdXQoKVxuICAgIHRhc2tJZDogc3RyaW5nO1xuXG4gICAgLyoqIEN1c3RvbSBmb3JtIHZhbHVlcyBtYXAgdG8gYmUgdXNlZCB3aXRoIHRoZSByZW5kZXJlZCBmb3JtLiAqL1xuICAgIEBJbnB1dCgpXG4gICAgZGF0YTogVGFza1ZhcmlhYmxlQ2xvdWRbXTtcblxuICAgIC8qKiBUaGUgYXZhaWxhYmxlIGRpc3BsYXkgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBmb3JtICovXG4gICAgQElucHV0KClcbiAgICBkaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zOiBGb3JtQ2xvdWREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25bXTtcblxuICAgIC8qKiBUb2dnbGUgcmVuZGVyaW5nIG9mIHRoZSBgT3BlbiBuZXh0IHRhc2tgIGNoZWNrYm94LiAqL1xuICAgIEBJbnB1dCgpXG4gICAgc2hvd05leHRUYXNrQ2hlY2tib3ggPSBmYWxzZTtcblxuICAgIC8qKiBXaGV0aGVyIHRoZSBgT3BlbiBuZXh0IHRhc2tgIGNoZWNrYm94IGlzIGNoZWNrZWQgYnkgZGVmYXVsdCBvciBub3QuICovXG4gICAgQElucHV0KClcbiAgICBpc05leHRUYXNrQ2hlY2tib3hDaGVja2VkID0gZmFsc2U7XG5cbiAgICAvKiogVG9nZ2xlIHJlbmRlcmluZyBvZiB0aGUgYENvbXBsZXRlYCBidXR0b24uICovXG4gICAgQElucHV0KClcbiAgICBzaG93Q29tcGxldGVCdXR0b24gPSBmYWxzZTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGZvcm0gaXMgc3VibWl0dGVkIHdpdGggdGhlIGBTYXZlYCBvciBjdXN0b20gb3V0Y29tZXMuICovXG4gICAgQE91dHB1dCgpXG4gICAgZm9ybVNhdmVkID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtTW9kZWw+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIHRoZSBmb3JtIGlzIHN1Ym1pdHRlZCB3aXRoIHRoZSBgQ29tcGxldGVgIG91dGNvbWUuICovXG4gICAgQE91dHB1dCgpXG4gICAgZm9ybUNvbXBsZXRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybU1vZGVsPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiB0aGUgZm9ybSBpcyBsb2FkZWQgb3IgcmVsb2FkZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgZm9ybUxvYWRlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybU1vZGVsPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBmb3JtIHZhbHVlcyBhcmUgcmVmcmVzaGVkIGR1ZSB0byBhIGRhdGEgcHJvcGVydHkgY2hhbmdlLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZvcm1EYXRhUmVmcmVzaGVkID0gbmV3IEV2ZW50RW1pdHRlcjxGb3JtTW9kZWw+KCk7XG5cbiAgICAvKiogRW1pdHRlZCB3aGVuIGZvcm0gY29udGVudCBpcyBjbGlja2VkLiAqL1xuICAgIEBPdXRwdXQoKVxuICAgIGZvcm1Db250ZW50Q2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8Q29udGVudExpbmtNb2RlbD4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gYSBkaXNwbGF5IG1vZGUgY29uZmlndXJhdGlvbiBpcyB0dXJuZWQgb24uICovXG4gICAgQE91dHB1dCgpXG4gICAgZGlzcGxheU1vZGVPbiA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9ybUNsb3VkRGlzcGxheU1vZGVDb25maWd1cmF0aW9uPigpO1xuXG4gICAgLyoqIEVtaXR0ZWQgd2hlbiBhIGRpc3BsYXkgbW9kZSBjb25maWd1cmF0aW9uIGlzIHR1cm5lZCBvZmYuICovXG4gICAgQE91dHB1dCgpXG4gICAgZGlzcGxheU1vZGVPZmYgPSBuZXcgRXZlbnRFbWl0dGVyPEZvcm1DbG91ZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbj4oKTtcblxuICAgIC8qKiBFbWl0dGVkIHdoZW4gdGhlIGBPcGVuIG5leHQgdGFza2AgY2hlY2tib3ggd2FzIHRvZ2dsZWQuICovXG4gICAgQE91dHB1dCgpXG4gICAgbmV4dFRhc2tDaGVja2JveENoZWNrZWRDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxNYXRDaGVja2JveENoYW5nZT4oKTtcblxuICAgIHByb3RlY3RlZCBzdWJzY3JpcHRpb25zOiBTdWJzY3JpcHRpb25bXSA9IFtdO1xuICAgIG5vZGVJZDogc3RyaW5nO1xuICAgIGZvcm1DbG91ZFJlcHJlc2VudGF0aW9uSlNPTjogYW55O1xuICAgIGZpZWxkVmFsaWRhdG9yczogRm9ybUZpZWxkVmFsaWRhdG9yW10gPSBbXTtcblxuICAgIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gICAgZGlzcGxheU1vZGU6IHN0cmluZztcbiAgICBkaXNwbGF5Q29uZmlndXJhdGlvbjogRm9ybUNsb3VkRGlzcGxheU1vZGVDb25maWd1cmF0aW9uID0gRGlzcGxheU1vZGVTZXJ2aWNlLkRFRkFVTFRfRElTUExBWV9NT0RFX0NPTkZJR1VSQVRJT05TWzBdO1xuICAgIHN0eWxlOiBzdHJpbmcgPSAnJztcblxuICAgIHByb3RlY3RlZCBmb3JtQ2xvdWRTZXJ2aWNlID0gaW5qZWN0KEZvcm1DbG91ZFNlcnZpY2UpO1xuICAgIHByb3RlY3RlZCBmb3JtU2VydmljZSA9IGluamVjdChGb3JtU2VydmljZSk7XG4gICAgcHJvdGVjdGVkIHZpc2liaWxpdHlTZXJ2aWNlID0gaW5qZWN0KFdpZGdldFZpc2liaWxpdHlTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgZGlhbG9nID0gaW5qZWN0KE1hdERpYWxvZyk7XG4gICAgcHJvdGVjdGVkIHNwaW5uZXJTZXJ2aWNlID0gaW5qZWN0KEZvcm1DbG91ZFNwaW5uZXJTZXJ2aWNlKTtcbiAgICBwcm90ZWN0ZWQgZGlzcGxheU1vZGVTZXJ2aWNlID0gaW5qZWN0KERpc3BsYXlNb2RlU2VydmljZSk7XG4gICAgcHJvdGVjdGVkIGNoYW5nZURldGVjdG9yID0gaW5qZWN0KENoYW5nZURldGVjdG9yUmVmKTtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveVJlZiA9IGluamVjdChEZXN0cm95UmVmKTtcblxuICAgIGNvbnN0cnVjdG9yKEBPcHRpb25hbCgpIEBJbmplY3QoRk9STV9DTE9VRF9GSUVMRF9WQUxJREFUT1JTX1RPS0VOKSBpbmplY3RlZEZpZWxkVmFsaWRhdG9ycz86IEZvcm1GaWVsZFZhbGlkYXRvcltdKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubG9hZEluamVjdGVkRmllbGRWYWxpZGF0b3JzKGluamVjdGVkRmllbGRWYWxpZGF0b3JzKTtcbiAgICAgICAgdGhpcy5zcGlubmVyU2VydmljZS5pbml0U3Bpbm5lckhhbmRsaW5nKHRoaXMuZGVzdHJveVJlZik7XG5cbiAgICAgICAgdGhpcy5pZCA9IHV1aWRHZW5lcmF0aW9uKCk7XG5cbiAgICAgICAgdGhpcy5mb3JtU2VydmljZS5mb3JtQ29udGVudENsaWNrZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKChjb250ZW50KSA9PiB7XG4gICAgICAgICAgICBpZiAoY29udGVudCBpbnN0YW5jZW9mIFVwbG9hZFdpZGdldENvbnRlbnRMaW5rTW9kZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm0uc2V0Tm9kZUlkVmFsdWVGb3JWaWV3ZXJzTGlua2VkVG9VcGxvYWRXaWRnZXQoY29udGVudCk7XG4gICAgICAgICAgICAgICAgdGhpcy5vbkZvcm1EYXRhUmVmcmVzaGVkKHRoaXMuZm9ybSk7XG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtU2VydmljZS5mb3JtRGF0YVJlZnJlc2hlZC5uZXh0KG5ldyBGb3JtRXZlbnQodGhpcy5mb3JtKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNvbnRlbnRDbGlja2VkLmVtaXQoY29udGVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHRoaXMuZm9ybVNlcnZpY2UudXBkYXRlRm9ybVZhbHVlc1JlcXVlc3RlZC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCgpKS5zdWJzY3JpYmUoKHZhbHVlc1RvU2V0SWZOb3RQcmVzZW50KSA9PiB7XG4gICAgICAgICAgICB0aGlzLmZvcm0uYWRkVmFsdWVzTm90UHJlc2VudCh2YWx1ZXNUb1NldElmTm90UHJlc2VudCk7XG4gICAgICAgICAgICB0aGlzLm9uRm9ybURhdGFSZWZyZXNoZWQodGhpcy5mb3JtKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5mb3JtU2VydmljZS5mb3JtRmllbGRWYWx1ZUNoYW5nZWQucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQoKSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRpc2FibGVTYXZlQnV0dG9uKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5kaXNhYmxlU2F2ZUJ1dHRvbiA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcbiAgICBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcykge1xuICAgICAgICBjb25zdCBhcHBOYW1lID0gY2hhbmdlc1snYXBwTmFtZSddO1xuXG4gICAgICAgIGlmIChhcHBOYW1lPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnRhc2tJZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0Rm9ybUJ5VGFza0lkKGFwcE5hbWUuY3VycmVudFZhbHVlLCB0aGlzLnRhc2tJZCwgdGhpcy5hcHBWZXJzaW9uKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5mb3JtSWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmdldEZvcm1CeUlkKGFwcE5hbWUuY3VycmVudFZhbHVlLCB0aGlzLmZvcm1JZCwgdGhpcy5hcHBWZXJzaW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZvcm1JZCA9IGNoYW5nZXNbJ2Zvcm1JZCddO1xuICAgICAgICBpZiAoZm9ybUlkPy5jdXJyZW50VmFsdWUgJiYgdGhpcy5hcHBOYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZvcm1CeUlkKHRoaXMuYXBwTmFtZSwgZm9ybUlkLmN1cnJlbnRWYWx1ZSwgdGhpcy5hcHBWZXJzaW9uKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRhc2tJZCA9IGNoYW5nZXNbJ3Rhc2tJZCddO1xuICAgICAgICBpZiAodGFza0lkPy5jdXJyZW50VmFsdWUgJiYgdGhpcy5hcHBOYW1lKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZvcm1CeVRhc2tJZCh0aGlzLmFwcE5hbWUsIHRhc2tJZC5jdXJyZW50VmFsdWUsIHRoaXMuYXBwVmVyc2lvbik7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXRhID0gY2hhbmdlc1snZGF0YSddPy5jdXJyZW50VmFsdWU7XG4gICAgICAgIGlmIChkYXRhPy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hGb3JtRGF0YSgpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZm9ybVJlcHJlc2VudGF0aW9uID0gY2hhbmdlc1snZm9ybSddO1xuXG4gICAgICAgIGlmIChmb3JtUmVwcmVzZW50YXRpb24/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5mb3JtID0gZm9ybVJlcHJlc2VudGF0aW9uLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMub25Gb3JtTG9hZGVkKHRoaXMuZm9ybSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgRGlzcGxheU1vZGVTZXJ2aWNlLmRpc3BsYXlNb2RlJFxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgZmlsdGVyKChjaGFuZ2UpID0+IGNoYW5nZS5pZCA9PT0gdGhpcy5pZCksXG4gICAgICAgICAgICAgICAgdGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZilcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRpc3BsYXlNb2RlQ2hhbmdlKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2xkRGlzcGxheU1vZGUgPSB0aGlzLmRpc3BsYXlNb2RlO1xuICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGUgPSBkaXNwbGF5TW9kZUNoYW5nZS5kaXNwbGF5TW9kZTtcblxuICAgICAgICAgICAgICAgIGNvbnN0IG9sZERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbiA9IHRoaXMuZGlzcGxheU1vZGVTZXJ2aWNlLmZpbmRDb25maWd1cmF0aW9uKG9sZERpc3BsYXlNb2RlLCB0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IG5ld0Rpc3BsYXlNb2RlQ29uZmlndXJhdGlvbiA9IHRoaXMuZGlzcGxheU1vZGVTZXJ2aWNlLmZpbmRDb25maWd1cmF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5TW9kZUNoYW5nZS5kaXNwbGF5TW9kZSxcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zXG4gICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgIGlmIChvbGREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24/LmRpc3BsYXlNb2RlICE9PSBuZXdEaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24/LmRpc3BsYXlNb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChvbGREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGVPZmYuZW1pdChvbGREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdEaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGVPbi5lbWl0KG5ld0Rpc3BsYXlNb2RlQ29uZmlndXJhdGlvbik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlDb25maWd1cmF0aW9uID0gbmV3RGlzcGxheU1vZGVDb25maWd1cmF0aW9uO1xuICAgICAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHVzZXIgY2xpY2tzIGZvcm0gcmVmcmVzaCBidXR0b24uXG4gICAgICovXG4gICAgb25SZWZyZXNoQ2xpY2tlZCgpIHtcbiAgICAgICAgdGhpcy5sb2FkRm9ybSgpO1xuICAgIH1cblxuICAgIGxvYWRGb3JtKCkge1xuICAgICAgICBpZiAodGhpcy5hcHBOYW1lICYmIHRoaXMudGFza0lkKSB7XG4gICAgICAgICAgICB0aGlzLmdldEZvcm1CeVRhc2tJZCh0aGlzLmFwcE5hbWUsIHRoaXMudGFza0lkLCB0aGlzLmFwcFZlcnNpb24pO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuYXBwTmFtZSAmJiB0aGlzLmZvcm1JZCkge1xuICAgICAgICAgICAgdGhpcy5nZXRGb3JtQnlJZCh0aGlzLmFwcE5hbWUsIHRoaXMuZm9ybUlkLCB0aGlzLmFwcFZlcnNpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZmluZFByb2Nlc3NWYXJpYWJsZXNCeVRhc2tJZChhcHBOYW1lOiBzdHJpbmcsIHRhc2tJZDogc3RyaW5nKTogT2JzZXJ2YWJsZTxUYXNrVmFyaWFibGVDbG91ZFtdPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm1DbG91ZFNlcnZpY2UuZ2V0VGFzayhhcHBOYW1lLCB0YXNrSWQpLnBpcGUoXG4gICAgICAgICAgICBzd2l0Y2hNYXAoKHRhc2spID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0FQcm9jZXNzVGFzayh0YXNrKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5mb3JtQ2xvdWRTZXJ2aWNlLmdldFRhc2tWYXJpYWJsZXMoYXBwTmFtZSwgdGFza0lkKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb2YoW10pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaXNBUHJvY2Vzc1Rhc2sodGFza1JlcHJlc2VudGF0aW9uOiBUYXNrRGV0YWlsc0Nsb3VkTW9kZWwpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRhc2tSZXByZXNlbnRhdGlvbi5wcm9jZXNzRGVmaW5pdGlvbklkICYmIHRhc2tSZXByZXNlbnRhdGlvbi5wcm9jZXNzRGVmaW5pdGlvbkRlcGxveW1lbnRJZCAhPT0gJ251bGwnO1xuICAgIH1cblxuICAgIGdldEZvcm1CeVRhc2tJZChhcHBOYW1lOiBzdHJpbmcsIHRhc2tJZDogc3RyaW5nLCB2ZXJzaW9uPzogbnVtYmVyKTogUHJvbWlzZTxGb3JtTW9kZWw+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPEZvcm1Nb2RlbD4oKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIGZvcmtKb2luKHRoaXMuZm9ybUNsb3VkU2VydmljZS5nZXRUYXNrRm9ybShhcHBOYW1lLCB0YXNrSWQsIHZlcnNpb24pLCB0aGlzLmZvcm1DbG91ZFNlcnZpY2UuZ2V0VGFza1ZhcmlhYmxlcyhhcHBOYW1lLCB0YXNrSWQpKVxuICAgICAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpKVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoXG4gICAgICAgICAgICAgICAgICAgIChkYXRhKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm1DbG91ZFJlcHJlc2VudGF0aW9uSlNPTiA9IGRhdGFbMF07XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OLnByb2Nlc3NWYXJpYWJsZXMgPSBkYXRhWzFdO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhID0gZGF0YVsxXTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkRm9ybSA9IHRoaXMucGFyc2VGb3JtKHRoaXMuZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudmlzaWJpbGl0eVNlcnZpY2UucmVmcmVzaFZpc2liaWxpdHkocGFyc2VkRm9ybSwgdGhpcy5kYXRhKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZEZvcm0udmFsaWRhdGVGb3JtKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmZvcm0gPSBwYXJzZWRGb3JtO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLm5vZGVJZCA9ICctbXktJztcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Gb3JtTG9hZGVkKHRoaXMuZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKHRoaXMuZm9ybSk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVFcnJvcihlcnJvcik7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgZ2V0Rm9ybUJ5SWQoYXBwTmFtZTogc3RyaW5nLCBmb3JtSWQ6IHN0cmluZywgYXBwVmVyc2lvbj86IG51bWJlcikge1xuICAgICAgICB0aGlzLmZvcm1DbG91ZFNlcnZpY2VcbiAgICAgICAgICAgIC5nZXRGb3JtKGFwcE5hbWUsIGZvcm1JZCwgYXBwVmVyc2lvbilcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcCgoZm9ybSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBmbGF0dGVuRm9ybSA9IHsgLi4uZm9ybS5mb3JtUmVwcmVzZW50YXRpb24sIC4uLmZvcm0uZm9ybVJlcHJlc2VudGF0aW9uLmZvcm1EZWZpbml0aW9uIH07XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBmbGF0dGVuRm9ybS5mb3JtRGVmaW5pdGlvbjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZsYXR0ZW5Gb3JtO1xuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgIHRha2VVbnRpbERlc3Ryb3llZCh0aGlzLmRlc3Ryb3lSZWYpXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgIChmb3JtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OID0gZm9ybTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtQ2xvdWRSZXByZXNlbnRhdGlvbkpTT04ucHJvY2Vzc1ZhcmlhYmxlcyA9IHRoaXMuZGF0YSB8fCBbXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFyc2VkRm9ybSA9IHRoaXMucGFyc2VGb3JtKGZvcm0pO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnZpc2liaWxpdHlTZXJ2aWNlLnJlZnJlc2hWaXNpYmlsaXR5KHBhcnNlZEZvcm0pO1xuICAgICAgICAgICAgICAgICAgICBwYXJzZWRGb3JtPy52YWxpZGF0ZUZvcm0oKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtID0gcGFyc2VkRm9ybTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5mb3JtLm5vZGVJZCA9ICctbXktJztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkZvcm1Mb2FkZWQodGhpcy5mb3JtKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZUVycm9yKGVycm9yKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgIH1cblxuICAgIHNhdmVUYXNrRm9ybSgpIHtcbiAgICAgICAgaWYgKHRoaXMuZm9ybSAmJiB0aGlzLmFwcE5hbWUgJiYgdGhpcy50YXNrSWQpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybUNsb3VkU2VydmljZVxuICAgICAgICAgICAgICAgIC5zYXZlVGFza0Zvcm0odGhpcy5hcHBOYW1lLCB0aGlzLnRhc2tJZCwgdGhpcy5wcm9jZXNzSW5zdGFuY2VJZCwgYCR7dGhpcy5mb3JtLmlkfWAsIHRoaXMuZm9ybS52YWx1ZXMpXG4gICAgICAgICAgICAgICAgLnBpcGUodGFrZVVudGlsRGVzdHJveWVkKHRoaXMuZGVzdHJveVJlZikpXG4gICAgICAgICAgICAgICAgLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vblRhc2tTYXZlZCh0aGlzLmZvcm0pO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHRoaXMub25UYXNrU2F2ZWRFcnJvcihlcnJvcilcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5kaXNwbGF5TW9kZVNlcnZpY2Uub25TYXZlVGFzayh0aGlzLmlkLCB0aGlzLmRpc3BsYXlNb2RlLCB0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnMpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY29tcGxldGVUYXNrRm9ybShvdXRjb21lPzogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmZvcm0/LmNvbmZpcm1NZXNzYWdlPy5zaG93ID09PSB0cnVlKSB7XG4gICAgICAgICAgICBjb25zdCBkaWFsb2dSZWYgPSB0aGlzLmRpYWxvZy5vcGVuKENvbmZpcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IHRoaXMuZm9ybS5jb25maXJtTWVzc2FnZS5tZXNzYWdlXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBtaW5XaWR0aDogJzQ1MHB4J1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGRpYWxvZ1JlZi5hZnRlckNsb3NlZCgpLnN1YnNjcmliZSgocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbXBsZXRlRm9ybShvdXRjb21lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY29tcGxldGVGb3JtKG91dGNvbWUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGlzcGxheU1vZGVTZXJ2aWNlLm9uQ29tcGxldGVUYXNrKHRoaXMuaWQsIHRoaXMuZGlzcGxheU1vZGUsIHRoaXMuZGlzcGxheU1vZGVDb25maWd1cmF0aW9ucyk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjb21wbGV0ZUZvcm0ob3V0Y29tZT86IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5mb3JtICYmIHRoaXMuYXBwTmFtZSAmJiB0aGlzLnRhc2tJZCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtQ2xvdWRTZXJ2aWNlXG4gICAgICAgICAgICAgICAgLmNvbXBsZXRlVGFza0Zvcm0odGhpcy5hcHBOYW1lLCB0aGlzLnRhc2tJZCwgdGhpcy5wcm9jZXNzSW5zdGFuY2VJZCwgYCR7dGhpcy5mb3JtLmlkfWAsIHRoaXMuZm9ybS52YWx1ZXMsIG91dGNvbWUsIHRoaXMuYXBwVmVyc2lvbilcbiAgICAgICAgICAgICAgICAucGlwZSh0YWtlVW50aWxEZXN0cm95ZWQodGhpcy5kZXN0cm95UmVmKSlcbiAgICAgICAgICAgICAgICAuc3Vic2NyaWJlKFxuICAgICAgICAgICAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uVGFza0NvbXBsZXRlZCh0aGlzLmZvcm0pO1xuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAoZXJyb3IpID0+IHRoaXMub25UYXNrQ29tcGxldGVkRXJyb3IoZXJyb3IpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHBhcnNlRm9ybShmb3JtQ2xvdWRSZXByZXNlbnRhdGlvbkpTT04/OiBhbnkpOiBGb3JtTW9kZWwgfCBudWxsIHtcbiAgICAgICAgaWYgKGZvcm1DbG91ZFJlcHJlc2VudGF0aW9uSlNPTikge1xuICAgICAgICAgICAgY29uc3QgZm9ybVZhbHVlczogRm9ybVZhbHVlcyA9IHt9O1xuICAgICAgICAgICAgKHRoaXMuZGF0YSB8fCBbXSkuZm9yRWFjaCgodmFyaWFibGUpID0+IHtcbiAgICAgICAgICAgICAgICBmb3JtVmFsdWVzW3ZhcmlhYmxlLm5hbWVdID0gdmFyaWFibGUudmFsdWU7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgZm9ybSA9IG5ldyBGb3JtTW9kZWwoZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OLCBmb3JtVmFsdWVzLCB0aGlzLnJlYWRPbmx5LCB0aGlzLmZvcm1TZXJ2aWNlLCB1bmRlZmluZWQsIHRoaXMuZmllbGRWYWxpZGF0b3JzKTtcbiAgICAgICAgICAgIGlmICghZm9ybSkge1xuICAgICAgICAgICAgICAgIGZvcm0ub3V0Y29tZXMgPSB0aGlzLmdldEZvcm1EZWZpbml0aW9uT3V0Y29tZXMoZm9ybSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZm9ybTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldCBjdXN0b20gc2V0IG9mIG91dGNvbWVzIGZvciBhIEZvcm0gRGVmaW5pdGlvbi5cbiAgICAgKlxuICAgICAqIEBwYXJhbSBmb3JtIEZvcm0gZGVmaW5pdGlvbiBtb2RlbC5cbiAgICAgKiBAcmV0dXJucyBsaXN0IG9mIGZvcm0gb3V0Y29tZXNcbiAgICAgKi9cbiAgICBnZXRGb3JtRGVmaW5pdGlvbk91dGNvbWVzKGZvcm06IEZvcm1Nb2RlbCk6IEZvcm1PdXRjb21lTW9kZWxbXSB7XG4gICAgICAgIHJldHVybiBbbmV3IEZvcm1PdXRjb21lTW9kZWwoZm9ybSwgeyBpZDogJyRzYXZlJywgbmFtZTogRm9ybU91dGNvbWVNb2RlbC5TQVZFX0FDVElPTiwgaXNTeXN0ZW06IHRydWUgfSldO1xuICAgIH1cblxuICAgIGNoZWNrVmlzaWJpbGl0eShmaWVsZDogRm9ybUZpZWxkTW9kZWwpIHtcbiAgICAgICAgaWYgKGZpZWxkPy5mb3JtKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2liaWxpdHlTZXJ2aWNlLnJlZnJlc2hWaXNpYmlsaXR5KGZpZWxkLmZvcm0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZWZyZXNoRm9ybURhdGEoKSB7XG4gICAgICAgIHRoaXMuZm9ybSA9IHRoaXMucGFyc2VGb3JtKHRoaXMuZm9ybUNsb3VkUmVwcmVzZW50YXRpb25KU09OKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybSkge1xuICAgICAgICAgICAgdGhpcy5vbkZvcm1Mb2FkZWQodGhpcy5mb3JtKTtcbiAgICAgICAgICAgIHRoaXMub25Gb3JtRGF0YVJlZnJlc2hlZCh0aGlzLmZvcm0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIG9uRm9ybUxvYWRlZChmb3JtOiBGb3JtTW9kZWwpIHtcbiAgICAgICAgaWYgKGZvcm0pIHtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGVDb25maWd1cmF0aW9ucyA9IHRoaXMuZGlzcGxheU1vZGVTZXJ2aWNlLmdldERpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnModGhpcy5kaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zKTtcbiAgICAgICAgICAgIHRoaXMuZGlzcGxheU1vZGUgPSB0aGlzLmRpc3BsYXlNb2RlU2VydmljZS5zd2l0Y2hUb0Rpc3BsYXlNb2RlKFxuICAgICAgICAgICAgICAgIHRoaXMuaWQsXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtLmpzb24uZGlzcGxheU1vZGUsXG4gICAgICAgICAgICAgICAgdGhpcy5kaXNwbGF5TW9kZSxcbiAgICAgICAgICAgICAgICB0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnNcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuZGlzcGxheUNvbmZpZ3VyYXRpb24gPSB0aGlzLmRpc3BsYXlNb2RlU2VydmljZS5maW5kQ29uZmlndXJhdGlvbih0aGlzLmRpc3BsYXlNb2RlLCB0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnMpO1xuXG4gICAgICAgICAgICB0aGlzLmRpc3BsYXlNb2RlT24uZW1pdCh0aGlzLmRpc3BsYXlDb25maWd1cmF0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB0aGlzLmZvcm1Mb2FkZWQuZW1pdChmb3JtKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25Gb3JtRGF0YVJlZnJlc2hlZChmb3JtOiBGb3JtTW9kZWwpIHtcbiAgICAgICAgdGhpcy5mb3JtRGF0YVJlZnJlc2hlZC5lbWl0KGZvcm0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblRhc2tTYXZlZChmb3JtOiBGb3JtTW9kZWwpIHtcbiAgICAgICAgdGhpcy5mb3JtU2F2ZWQuZW1pdChmb3JtKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25UYXNrU2F2ZWRFcnJvcihlcnJvcjogYW55KSB7XG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblRhc2tDb21wbGV0ZWQoZm9ybTogRm9ybU1vZGVsKSB7XG4gICAgICAgIHRoaXMuZm9ybUNvbXBsZXRlZC5lbWl0KGZvcm0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblRhc2tDb21wbGV0ZWRFcnJvcihlcnJvcjogYW55KSB7XG4gICAgICAgIHRoaXMuaGFuZGxlRXJyb3IoZXJyb3IpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvbkV4ZWN1dGVPdXRjb21lKG91dGNvbWU6IEZvcm1PdXRjb21lTW9kZWwpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgYXJncyA9IG5ldyBGb3JtT3V0Y29tZUV2ZW50KG91dGNvbWUpO1xuXG4gICAgICAgIGlmIChhcmdzLmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZXhlY3V0ZU91dGNvbWUuZW1pdChhcmdzKTtcbiAgICAgICAgcmV0dXJuICFhcmdzLmRlZmF1bHRQcmV2ZW50ZWQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIHN0b3JlRm9ybUFzTWV0YWRhdGEoKSB7fVxuXG4gICAgc3dpdGNoVG9EaXNwbGF5TW9kZShuZXdEaXNwbGF5TW9kZT86IHN0cmluZykge1xuICAgICAgICB0aGlzLmRpc3BsYXlNb2RlU2VydmljZS5zd2l0Y2hUb0Rpc3BsYXlNb2RlKHRoaXMuaWQsIEZvcm1DbG91ZERpc3BsYXlNb2RlW25ld0Rpc3BsYXlNb2RlXSwgdGhpcy5kaXNwbGF5TW9kZSwgdGhpcy5kaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb25zKTtcbiAgICB9XG5cbiAgICBmaW5kRGlzcGxheUNvbmZpZ3VyYXRpb24oZGlzcGxheU1vZGU/OiBzdHJpbmcpOiBGb3JtQ2xvdWREaXNwbGF5TW9kZUNvbmZpZ3VyYXRpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5kaXNwbGF5TW9kZVNlcnZpY2UuZmluZENvbmZpZ3VyYXRpb24oRm9ybUNsb3VkRGlzcGxheU1vZGVbZGlzcGxheU1vZGVdLCB0aGlzLmRpc3BsYXlNb2RlQ29uZmlndXJhdGlvbnMpO1xuICAgIH1cblxuICAgIGxvYWRJbmplY3RlZEZpZWxkVmFsaWRhdG9ycyhpbmplY3RlZEZpZWxkVmFsaWRhdG9yczogRm9ybUZpZWxkVmFsaWRhdG9yW10pOiB2b2lkIHtcbiAgICAgICAgaWYgKGluamVjdGVkRmllbGRWYWxpZGF0b3JzICYmIGluamVjdGVkRmllbGRWYWxpZGF0b3JzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZmllbGRWYWxpZGF0b3JzID0gWy4uLnRoaXMuZmllbGRWYWxpZGF0b3JzLCAuLi5pbmplY3RlZEZpZWxkVmFsaWRhdG9yc107XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbk5leHRUYXNrQ2hlY2tib3hDaGVja2VkQ2hhbmdlZChldmVudDogTWF0Q2hlY2tib3hDaGFuZ2UpIHtcbiAgICAgICAgdGhpcy5uZXh0VGFza0NoZWNrYm94Q2hlY2tlZENoYW5nZWQuZW1pdChldmVudCk7XG4gICAgfVxufVxuIiwiPGRpdiAqbmdJZj1cIiFoYXNGb3JtKClcIj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZW1wdHktZm9ybV1cIiAvPlxuPC9kaXY+XG5cbjxkaXZcbiAgICAqbmdJZj1cImhhc0Zvcm0oKVwiXG4gICAgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS1jb250YWluZXIgYWRmLWNsb3VkLWZvcm0te3sgZGlzcGxheUNvbmZpZ3VyYXRpb24/Lm9wdGlvbnM/LmZ1bGxzY3JlZW4gPyAnZnVsbHNjcmVlbicgOiAnaW5saW5lJyB9fS1jb250YWluZXJcIlxuICAgIFtzdHlsZV09XCJmb3JtU3R5bGVcIlxuPlxuICAgIDxkaXYgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS1jb250ZW50XCIgW2Nka1RyYXBGb2N1c109XCJkaXNwbGF5Q29uZmlndXJhdGlvbj8ub3B0aW9ucz8udHJhcEZvY3VzXCIgY2RrVHJhcEZvY3VzQXV0b0NhcHR1cmU+XG4gICAgICAgIDxhZGYtdG9vbGJhciBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLXRvb2xiYXJcIiAqbmdJZj1cImRpc3BsYXlDb25maWd1cmF0aW9uPy5vcHRpb25zPy5kaXNwbGF5VG9vbGJhclwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImFkZi1jbG91ZC1mb3JtX19mb3JtLXRpdGxlXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhZGYtY2xvdWQtZm9ybV9fZGlzcGxheS1uYW1lXCIgW3RpdGxlXT1cImZvcm0udGFza05hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgZm9ybS50YXNrTmFtZSB9fVxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZvcm0udGFza05hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt7ICdGT1JNLkZPUk1fUkVOREVSRVIuTkFNRUxFU1NfVEFTSycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxhZGYtdG9vbGJhci1kaXZpZGVyICpuZ0lmPVwiZGlzcGxheUNvbmZpZ3VyYXRpb24/Lm9wdGlvbnM/LmRpc3BsYXlDbG9zZUJ1dHRvblwiIC8+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgKm5nSWY9XCJkaXNwbGF5Q29uZmlndXJhdGlvbj8ub3B0aW9ucz8uZGlzcGxheUNsb3NlQnV0dG9uXCJcbiAgICAgICAgICAgICAgICBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLWNsb3NlLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgZGF0YS1hdXRvbWF0aW9uLWlkPVwiYWRmLXRvb2xiYXItcmlnaHQtYmFja1wiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInQURGX1ZJRVdFUi5BQ1RJT05TLkNMT1NFJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidhZGYtY2xvdWQtZm9ybS1jbG9zZS1idXR0b24nXCJcbiAgICAgICAgICAgICAgICBbdGl0bGVdPVwiJ0FERl9WSUVXRVIuQUNUSU9OUy5DTE9TRScgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgIG1hdC1pY29uLWJ1dHRvblxuICAgICAgICAgICAgICAgIHRpdGxlPVwie3sgJ0FERl9WSUVXRVIuQUNUSU9OUy5DTE9TRScgfCB0cmFuc2xhdGUgfX1cIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJzd2l0Y2hUb0Rpc3BsYXlNb2RlKClcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5jbG9zZTwvbWF0LWljb24+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgPC9hZGYtdG9vbGJhcj5cblxuICAgICAgICA8bWF0LWNhcmRcbiAgICAgICAgICAgIGFwcGVhcmFuY2U9XCJvdXRsaW5lZFwiXG4gICAgICAgICAgICBjbGFzcz1cImFkZi1jbG91ZC1mb3JtLWNvbnRlbnQtY2FyZFwiXG4gICAgICAgICAgICBbY2xhc3MuYWRmLWNsb3VkLWZvcm0tY29udGVudC1jYXJkLWZ1bGxzY3JlZW5dPVwiZGlzcGxheU1vZGUgPT09ICdmdWxsU2NyZWVuJ1wiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS1jb250ZW50LWNhcmQtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkLWhlYWRlciAqbmdJZj1cInNob3dUaXRsZSB8fCBzaG93UmVmcmVzaEJ1dHRvbiB8fCBzaG93VmFsaWRhdGlvbkljb25cIj5cbiAgICAgICAgICAgICAgICAgICAgPG1hdC1jYXJkLXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGg0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93VmFsaWRhdGlvbkljb25cIiBjbGFzcz1cImFkZi1mb3JtLXZhbGlkYXRpb24tYnV0dG9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpIGlkPVwiYWRmLXZhbGlkLWZvcm0taWNvblwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnNcIiAqbmdJZj1cImZvcm0uaXNWYWxpZDsgZWxzZSBub192YWxpZF9mb3JtXCI+Y2hlY2tfY2lyY2xlPC9pPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI25vX3ZhbGlkX2Zvcm0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aSBpZD1cImFkZi1pbnZhbGlkLWZvcm0taWNvblwiIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgYWRmLWludmFsaWQtY29sb3JcIj5lcnJvcjwvaT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWRpc3BsYXlDb25maWd1cmF0aW9uPy5vcHRpb25zPy5mdWxsc2NyZWVuICYmIGZpbmREaXNwbGF5Q29uZmlndXJhdGlvbignZnVsbFNjcmVlbicpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS1mdWxsc2NyZWVuLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXQtaWNvbi1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJzd2l0Y2hUb0Rpc3BsYXlNb2RlKCdmdWxsU2NyZWVuJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1hdXRvbWF0aW9uLWlkXT1cIidhZGYtY2xvdWQtZm9ybS1mdWxsc2NyZWVuLWJ1dHRvbidcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24+ZnVsbHNjcmVlbjwvbWF0LWljb24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzaG93UmVmcmVzaEJ1dHRvblwiIGNsYXNzPVwiYWRmLWNsb3VkLWZvcm0tcmVsb2FkLWJ1dHRvblwiIFt0aXRsZV09XCInQURGX1ZJRVdFUi5BQ1RJT05TLkZVTExTQ1JFRU4nIHwgdHJhbnNsYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJvblJlZnJlc2hDbGlja2VkKClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidBREZfVklFV0VSLkFDVElPTlMuRlVMTFNDUkVFTicgfCB0cmFuc2xhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5yZWZyZXNoPC9tYXQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJpc1RpdGxlRW5hYmxlZCgpXCIgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS10aXRsZVwiIFt0aXRsZV09XCJmb3JtLnRhc2tOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPnt7IGZvcm0udGFza05hbWUgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFmb3JtLnRhc2tOYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyAnRk9STS5GT1JNX1JFTkRFUkVSLk5BTUVMRVNTX1RBU0snIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvaDQ+XG4gICAgICAgICAgICAgICAgICAgIDwvbWF0LWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPG1hdC1jYXJkLWNvbnRlbnQgY2xhc3M9XCJhZGYtZm9ybS1jb250YWluZXItY2FyZC1jb250ZW50XCI+XG4gICAgICAgICAgICAgICAgICAgIDxhZGYtZm9ybS1yZW5kZXJlciBbZm9ybURlZmluaXRpb25dPVwiZm9ybVwiIFtyZWFkT25seV09XCJyZWFkT25seVwiIC8+XG4gICAgICAgICAgICAgICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICAgICAgICAgICAgICAgICAgICA8bWF0LWNhcmQtYWN0aW9ucyAqbmdJZj1cImZvcm0uaGFzT3V0Y29tZXMoKVwiIGNsYXNzPVwiYWRmLWNsb3VkLWZvcm0tY29udGVudC1jYXJkLWFjdGlvbnNcIiBhbGlnbj1cImVuZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkPVwiYWRmLWZvcm0tb3Blbi1uZXh0LXRhc2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwic2hvd05leHRUYXNrQ2hlY2tib3ggJiYgc2hvd0NvbXBsZXRlQnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc05leHRUYXNrQ2hlY2tib3hDaGVja2VkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uTmV4dFRhc2tDaGVja2JveENoZWNrZWRDaGFuZ2VkKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID57eyAnQURGX0NMT1VEX1RBU0tfRk9STS5PUEVOX05FWFRfVEFTSy5MQUJFTCcgfCB0cmFuc2xhdGUgfX08L21hdC1jaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJhZGYtY2FyZC1hY3Rpb25zLXNwYWNlclwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImFkZi1jbG91ZC1mb3JtLWN1c3RvbS1vdXRjb21lc1wiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBvdXRjb21lIG9mIGZvcm0ub3V0Y29tZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwib3V0Y29tZS5pc1Zpc2libGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2FkZi1mb3JtLScgKyBvdXRjb21lLm5hbWUgfCBmb3JtYXRTcGFjZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xvcl09XCJnZXRDb2xvckZvck91dGNvbWUob3V0Y29tZS5uYW1lKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hdC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc091dGNvbWVCdXR0b25FbmFibGVkKG91dGNvbWUpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmFkZi1mb3JtLWhpZGUtYnV0dG9uXT1cIiFpc091dGNvbWVCdXR0b25WaXNpYmxlKG91dGNvbWUsIGZvcm0ucmVhZE9ubHkpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhZGYtY2xvdWQtZm9ybS1jdXN0b20tb3V0Y29tZS1idXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25PdXRjb21lQ2xpY2tlZChvdXRjb21lKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBvdXRjb21lLm5hbWUgfCB0cmFuc2xhdGUgfCB1cHBlcmNhc2UgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICA8L21hdC1jYXJkLWFjdGlvbnM+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9tYXQtY2FyZD5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuIl19
|