@messaia/cdk 17.1.0-rc27 → 17.1.0-rc28
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.
|
@@ -198,8 +198,8 @@ export class VdGenericFormComponent {
|
|
|
198
198
|
}
|
|
199
199
|
/* Get filed rows */
|
|
200
200
|
let fieldRows = this.fieldGroups?.filter(x => x.name?.trim() == this.groupName?.trim() &&
|
|
201
|
-
!x.hidden &&
|
|
202
|
-
|
|
201
|
+
!x.hidden /* &&
|
|
202
|
+
(!x.hide || !x.hide(this.formValue, this.formGroup, this.context))*/)[0]?.groups;
|
|
203
203
|
if (fieldRows) {
|
|
204
204
|
this.fieldRows = fieldRows.map(a => { return [...a.map(y => { return { ...y }; })]; });
|
|
205
205
|
}
|
|
@@ -442,4 +442,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
442
442
|
type: ContentChildren,
|
|
443
443
|
args: [VdGenericFormCustomFieldDirective]
|
|
444
444
|
}] } });
|
|
445
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvZ2VuZXJpYy1mb3JtL2dlbmVyaWMtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL2dlbmVyaWMtZm9ybS9nZW5lcmljLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLFlBQVksRUFBaUIsV0FBVyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoTCxPQUFPLEVBQWUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXBFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQzVHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHOUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdEY7O0dBRUc7QUFFSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsU0FBUztJQUM1QyxZQUFZLFdBQTZCLEVBQUUsZ0JB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QUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7MEhBdlhRLHNCQUFzQjs4R0FBdEIsc0JBQXNCLDJYQXFGakIsaUJBQWlCLCtFQU1qQixlQUFlLCtFQU1mLGVBQWUsaUZBTWYsaUJBQWlCLDZQQXVCZCxpQ0FBaUMsNkJDMUx0RCxvbjBCQTBRTTs7MkZEOU1PLHNCQUFzQjtrQkFMbEMsU0FBUzsrQkFDSSxpQkFBaUI7OEJBU3BCLFNBQVM7c0JBRGYsS0FBSztnQkFZQyxTQUFTO3NCQURmLEtBQUs7Z0JBT0MsY0FBYztzQkFEcEIsS0FBSztnQkFPQyxXQUFXO3NCQURqQixLQUFLO2dCQU9DLFNBQVM7c0JBRGYsS0FBSztnQkFPQyxTQUFTO3NCQURmLEtBQUs7Z0JBUUMsT0FBTztzQkFEYixLQUFLO2dCQU9DLFVBQVU7c0JBRGhCLEtBQUs7Z0JBT0MsUUFBUTtzQkFEZCxLQUFLO2dCQU9DLGtCQUFrQjtzQkFEeEIsS0FBSztnQkFzQkMsY0FBYztzQkFEcEIsWUFBWTt1QkFBQyxpQkFBaUI7Z0JBT3hCLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsZUFBZTtnQkFPdEIsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxlQUFlO2dCQU90QixjQUFjO3NCQURwQixZQUFZO3VCQUFDLGlCQUFpQjtnQkFZeEIsTUFBTTtzQkFEWixZQUFZO3VCQUFDLFFBQVE7Z0JBT2YsWUFBWTtzQkFEbEIsWUFBWTt1QkFBQyxjQUFjO2dCQU9yQixxQkFBcUI7c0JBRDNCLGVBQWU7dUJBQUMsaUNBQWlDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ09NTUEsIEVOVEVSIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2tleWNvZGVzJztcclxuaW1wb3J0IHsgQ2RrUG9ydGFsIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3BvcnRhbCc7XHJcbmltcG9ydCB7IENvbXBvbmVudCwgQ29udGVudENoaWxkLCBDb250ZW50Q2hpbGRyZW4sIERpcmVjdGl2ZSwgSW5wdXQsIE9uSW5pdCwgUXVlcnlMaXN0LCBTaW1wbGVDaGFuZ2UsIFNpbXBsZUNoYW5nZXMsIFRlbXBsYXRlUmVmLCBUeXBlLCBWaWV3Q29udGFpbmVyUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIFZhbGlkYXRvcnMgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9hdXRvY29tcGxldGUnO1xyXG5pbXBvcnQgeyBNYXRDaGlwSW5wdXRFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoaXBzJztcclxuaW1wb3J0IHsgTWF0Q2FsZW5kYXIsIE1hdERhdGVwaWNrZXIgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kYXRlcGlja2VyJztcclxuaW1wb3J0IHsgVmRHZW5lcmljRm9ybUN1c3RvbUZpZWxkRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy92ZC1nZW5lcmljLWZvcm0tY3VzdG9tLWZpZWxkLmRpcmVjdGl2ZSc7XHJcbmltcG9ydCB7IEZvcm1GaWVsZFR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcy9mb3JtLWZpZWxkLXR5cGUnO1xyXG5pbXBvcnQgeyBnZXRGb3JtRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL2Z1bmN0aW9ucy9mdW5jdGlvbnMnO1xyXG5pbXBvcnQgeyBGb3JtRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLWRlZmluaXRpb24nO1xyXG5pbXBvcnQgeyBGb3JtRmllbGREZWZpbml0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzL2Zvcm0tZmllbGQtZGVmaW5pdGlvbic7XHJcbmltcG9ydCB7IEZvcm1GaWVsZEdyb3VwRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLWZpZWxkLWdyb3VwLWRlZmluaXRpb24nO1xyXG5pbXBvcnQgeyBEYXRlUGlja2VySGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vZGF0ZXBpY2tlci9kYXRlcGlja2VyLWhlYWRlci5jb21wb25lbnQnO1xyXG5cclxuLyoqXHJcbiAqIFZkRWRpdG9yRGlyZWN0aXZlIGNsYXNzXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbdmQtZWRpdG9yXW5nLXRlbXBsYXRlJyB9KVxyXG5leHBvcnQgY2xhc3MgVmRFZGl0b3JEaXJlY3RpdmUgZXh0ZW5kcyBDZGtQb3J0YWwge1xyXG4gICAgY29uc3RydWN0b3IodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcclxuICAgICAgICBzdXBlcih0ZW1wbGF0ZVJlZiwgdmlld0NvbnRhaW5lclJlZik7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBWZENvZGVEaXJlY3RpdmUgY2xhc3NcclxuICovXHJcbkBEaXJlY3RpdmUoeyBzZWxlY3RvcjogJ1t2ZC1jb2RlXW5nLXRlbXBsYXRlJyB9KVxyXG5leHBvcnQgY2xhc3MgVmRDb2RlRGlyZWN0aXZlIGV4dGVuZHMgQ2RrUG9ydGFsIHtcclxuICAgIGNvbnN0cnVjdG9yKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcbiAgICAgICAgc3VwZXIodGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogVmRGaWxlRGlyZWN0aXZlIGNsYXNzXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbdmQtZmlsZV1uZy10ZW1wbGF0ZScgfSlcclxuZXhwb3J0IGNsYXNzIFZkRmlsZURpcmVjdGl2ZSBleHRlbmRzIENka1BvcnRhbCB7XHJcbiAgICBjb25zdHJ1Y3Rvcih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Piwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gICAgICAgIHN1cGVyKHRlbXBsYXRlUmVmLCB2aWV3Q29udGFpbmVyUmVmKTtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFZkQ3VzdG9tRGlyZWN0aXZlIGNsYXNzXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbdmQtY3VzdG9tXW5nLXRlbXBsYXRlJyB9KVxyXG5leHBvcnQgY2xhc3MgVmRDdXN0b21EaXJlY3RpdmUgZXh0ZW5kcyBDZGtQb3J0YWwge1xyXG4gICAgY29uc3RydWN0b3IodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcclxuICAgICAgICBzdXBlcih0ZW1wbGF0ZVJlZiwgdmlld0NvbnRhaW5lclJlZik7XHJcbiAgICB9XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICd2ZC1nZW5lcmljLWZvcm0nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dlbmVyaWMtZm9ybS5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi9nZW5lcmljLWZvcm0uY29tcG9uZW50LnNjc3MnXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVmRHZW5lcmljRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgICAvKipcclxuICAgICAqIGZvcm06IEZvcm1Hcm91cFxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGZvcm1Hcm91cD86IEZvcm1Hcm91cDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZvcm0gcmF3IHZhbHVlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgZm9ybVZhbHVlKCk6IGFueSB7IHJldHVybiB0aGlzLmZvcm1Hcm91cD8uZ2V0UmF3VmFsdWUoKTsgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogY2xhc3NUeXBlOiBUeXBlPGFueT5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjbGFzc1R5cGU/OiBUeXBlPGFueT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBmb3JtRGVmaW5pdGlvbjogRm9ybURlZmluaXRpb25cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBmb3JtRGVmaW5pdGlvbj86IEZvcm1EZWZpbml0aW9uO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZmllbGRHcm91cHM6IEZvcm1GaWVsZEdyb3VwW11cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBmaWVsZEdyb3Vwcz86IEZvcm1GaWVsZEdyb3VwRGVmaW5pdGlvbltdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogR3JvdXAgbmFtZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGdyb3VwTmFtZT86IHN0cmluZztcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpZWxkIHNldCBuYW1lXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZmllbGRTZXRzPzogc3RyaW5nW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBjb250ZXh0OiBhbnlcclxuICAgICAqIFRoZSBjdXJyZW50IGNvbnRleHRcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBjb250ZXh0OiBhbnk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBkZWJ1Z1ZhbHVlOiBib29sZWFuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZGVidWdWYWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogcmVhZG9ubHk6IGJvb2xlYW5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyByZWFkb25seT86IGJvb2xlYW47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBzZXBhcmF0b3JLZXlzQ29kZXM6IG51bWJlcltdXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXSA9IFtFTlRFUiwgQ09NTUFdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZmllbGRSb3dzOiBGb3JtRmllbGREZWZpbml0aW9uW11bXVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZmllbGRSb3dzPzogRm9ybUZpZWxkRGVmaW5pdGlvbltdW107XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBmaWVsZHM6IEZvcm1GaWVsZERlZmluaXRpb25bXVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZmllbGRzPzogRm9ybUZpZWxkRGVmaW5pdGlvbltdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRm9ybUZpZWxkVHlwZTogdHlwZW9mIEZvcm1GaWVsZFR5cGVcclxuICAgICAqL1xyXG4gICAgcHVibGljIEZvcm1GaWVsZFR5cGU6IHR5cGVvZiBGb3JtRmllbGRUeXBlID0gRm9ybUZpZWxkVHlwZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEVkaXRvciB0ZW1wbGF0ZVxyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkKFZkRWRpdG9yRGlyZWN0aXZlKVxyXG4gICAgcHVibGljIGVkaXRvclRlbXBsYXRlPzogVmRFZGl0b3JEaXJlY3RpdmU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDb2RlIHRlbXBsYXRlXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGQoVmRDb2RlRGlyZWN0aXZlKVxyXG4gICAgcHVibGljIGNvZGVUZW1wbGF0ZT86IFZkQ29kZURpcmVjdGl2ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbGUgdGVtcGxhdGVcclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChWZEZpbGVEaXJlY3RpdmUpXHJcbiAgICBwdWJsaWMgZmlsZVRlbXBsYXRlPzogVmRGaWxlRGlyZWN0aXZlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ3VzdG9tIHRlbXBsYXRlXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGQoVmRDdXN0b21EaXJlY3RpdmUpXHJcbiAgICBwdWJsaWMgY3VzdG9tVGVtcGxhdGU/OiBWZEN1c3RvbURpcmVjdGl2ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEN1c3RvbWVyIGRhdGUgaGVhZGVyXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBkYXRlUGlja2VySGVhZGVyQ29tcG9uZW50ID0gRGF0ZVBpY2tlckhlYWRlckNvbXBvbmVudDtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbXBsYXRlIHJlZiBmb3IgY3VzdG9tIGZpZWxkcyBvbiB0aGUgYm90dG9tXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGQoJ2JvdHRvbScpXHJcbiAgICBwdWJsaWMgYm90dG9tPzogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFRlbXBsYXRlIHJlZiBmb3IgY3VzdG9tIGZpZWxkc1xyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkKCdjdXN0b21GaWVsZHMnKVxyXG4gICAgcHVibGljIGN1c3RvbUZpZWxkcz86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZW1wbGF0ZSByZWYgZm9yIGN1c3RvbSBmaWVsZHMgb24gdGhlIGJvdHRvbVxyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkcmVuKFZkR2VuZXJpY0Zvcm1DdXN0b21GaWVsZERpcmVjdGl2ZSlcclxuICAgIHB1YmxpYyBjdXN0b21GaWVsZHNUZW1wbGF0ZXM/OiBRdWVyeUxpc3Q8VmRHZW5lcmljRm9ybUN1c3RvbUZpZWxkRGlyZWN0aXZlPjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZpbHRlcmQgb3B0aW9ucyBmb3IgYXV0b2NvbXBsZXRlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhdXRvY29tcGxldGVGaWx0ZXJlZE9wdGlvbnM6IGFueSA9IHt9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQSBjYWxsYmFjayBtZXRob2QgdGhhdCBpcyBpbnZva2VkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZVxyXG4gICAgICogZGVmYXVsdCBjaGFuZ2UgZGV0ZWN0b3IgaGFzIGNoZWNrZWQgdGhlIGRpcmVjdGl2ZSdzXHJcbiAgICAgKiBkYXRhLWJvdW5kIHByb3BlcnRpZXMgZm9yIHRoZSBmaXJzdCB0aW1lLFxyXG4gICAgICogYW5kIGJlZm9yZSBhbnkgb2YgdGhlIHZpZXcgb3IgY29udGVudCBjaGlsZHJlbiBoYXZlIGJlZW4gY2hlY2tlZC5cclxuICAgICAqIEl0IGlzIGludm9rZWQgb25seSBvbmNlIHdoZW4gdGhlIGRpcmVjdGl2ZSBpcyBpbnN0YW50aWF0ZWQuXHJcbiAgICAgKi9cclxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgICAgIC8qIEJ1aWxkIHRoZSBmb3JtIGZpZWxkcyAqL1xyXG4gICAgICAgIGlmICh0aGlzLmNsYXNzVHlwZSAvKiYmICF0aGlzLmZpZWxkR3JvdXBzKi8pIHtcclxuICAgICAgICAgICAgdGhpcy5idWlsZEZpZWxkcygpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogR2V0IGZpbGVkIHJvd3MgKi9cclxuICAgICAgICBsZXQgZmllbGRSb3dzID0gdGhpcy5maWVsZEdyb3Vwcz8uZmlsdGVyKHggPT5cclxuICAgICAgICAgICAgeC5uYW1lPy50cmltKCkgPT0gdGhpcy5ncm91cE5hbWU/LnRyaW0oKSAmJlxyXG4gICAgICAgICAgICAheC5oaWRkZW4gJiZcclxuICAgICAgICAgICAgKCF4LmhpZGUgfHwgIXguaGlkZSh0aGlzLmZvcm1WYWx1ZSwgdGhpcy5mb3JtR3JvdXAsIHRoaXMuY29udGV4dCkpXHJcbiAgICAgICAgKVswXT8uZ3JvdXBzO1xyXG5cclxuICAgICAgICBpZiAoZmllbGRSb3dzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmllbGRSb3dzID0gZmllbGRSb3dzLm1hcChhID0+IHsgcmV0dXJuIFsuLi5hLm1hcCh5ID0+IHsgcmV0dXJuIHsgLi4ueSB9IH0pXSB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIEZpbHRlciBieSBmaWVsZCBzZXQgKi9cclxuICAgICAgICBpZiAodGhpcy5maWVsZFNldHMgJiYgdGhpcy5maWVsZFJvd3MpIHtcclxuICAgICAgICAgICAgdGhpcy5maWVsZFJvd3MgPSB0aGlzLmZpZWxkUm93cy5tYXAoeCA9PiB4ID0geC5maWx0ZXIoeSA9PiB5LmZpZWxkU2V0cz8uc29tZSh6ID0+IHRoaXMuZmllbGRTZXRzPy5zb21lKGEgPT4gYT8udHJpbSgpPy50b0xvd2VyQ2FzZSgpID09IHo/LnRyaW0oKT8udG9Mb3dlckNhc2UoKSkpKSkuZmlsdGVyKHggPT4geC5sZW5ndGgpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogR2V0IGFsbCBmaWVsZHMgKi9cclxuICAgICAgICBsZXQgZmllbGRzID0gdGhpcy5maWVsZFJvd3M/LnJlZHVjZSgoYSwgYikgPT4gYS5jb25jYXQoYiksIFtdKTtcclxuICAgICAgICBpZiAoZmllbGRzKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmllbGRzID0gZmllbGRzLm1hcChhID0+IHsgcmV0dXJuIHsgLi4uYSB9IH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogU3Vic2NyaWUgdG8gY2hhbmdlIGV2ZW50ICovXHJcbiAgICAgICAgZmllbGRzPy5maWx0ZXIoeSA9PiB5LnR5cGUgIT0gRm9ybUZpZWxkVHlwZS5GaWxlICYmIHkuY2hhbmdlKT8uZm9yRWFjaCh4ID0+IHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXA/LmdldCh4Lm5hbWUgPz8gJycpPy52YWx1ZUNoYW5nZXM/LnN1YnNjcmliZSh5ID0+IHghLmNoYW5nZSAmJiB4IS5jaGFuZ2UoeSwgdGhpcy5mb3JtR3JvdXA/LnZhbHVlLCB0aGlzLmZvcm1Hcm91cCwgdGhpcy5jb250ZXh0KSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGxldCB1cGRhdGVGb3JtRmllbGQgPSAob3JnRmllbGQ6IEZvcm1GaWVsZERlZmluaXRpb24sIHg6IEZvcm1GaWVsZERlZmluaXRpb24pID0+IHtcclxuICAgICAgICAgICAgLyogR2V0IHRoZSB0eXBlIGFuZCB0aGUgbGFiZWwgb2YgdGhlIGZpZWxkICovXHJcbiAgICAgICAgICAgIGxldCB0eXBlID0gb3JnRmllbGQ/LnR5cGU7XHJcbiAgICAgICAgICAgIGxldCBsYWJlbCA9IG9yZ0ZpZWxkPy5sYWJlbDtcclxuICAgICAgICAgICAgbGV0IG9wdGlvbnMgPSBvcmdGaWVsZD8ub3B0aW9ucztcclxuXHJcbiAgICAgICAgICAgIC8qIFJlbmRlciB0aGUgZmllbGQgdHlwZSAqL1xyXG4gICAgICAgICAgICB4LnR5cGUgPSAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpID8gdHlwZSh0aGlzLmZvcm1WYWx1ZSwgdGhpcy5mb3JtR3JvdXAsIHRoaXMuY29udGV4dCkgOiB4LnR5cGU7XHJcblxyXG4gICAgICAgICAgICAvKiBSZW5kZXIgdGhlIGZpZWxkIGxhYmVsICovXHJcbiAgICAgICAgICAgIHgubGFiZWwgPSAodHlwZW9mIGxhYmVsID09PSAnZnVuY3Rpb24nKSA/IGxhYmVsKHRoaXMuZm9ybVZhbHVlLCB0aGlzLmZvcm1Hcm91cCwgdGhpcy5jb250ZXh0KSA6IHgubGFiZWw7XHJcblxyXG4gICAgICAgICAgICAvKiBSZW5kZXIgdGhlIGZpZWxkIG9wdGlvbnMgKi9cclxuICAgICAgICAgICAgeC5vcHRpb25zID0gKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSA/IG9wdGlvbnModGhpcy5mb3JtVmFsdWUsIHRoaXMuZm9ybUdyb3VwLCB0aGlzLmNvbnRleHQpIDogeC5vcHRpb25zO1xyXG5cclxuICAgICAgICAgICAgLyogR2V0IHRoZSBmb3JtIGNvbnRyb2wgKi9cclxuICAgICAgICAgICAgbGV0IGZvcm1Db250cm9sOiBGb3JtQ29udHJvbDxhbnk+ID0gPEZvcm1Db250cm9sPGFueT4+dGhpcy5mb3JtR3JvdXA/LmdldCh4Lm5hbWUgPz8gJycpO1xyXG5cclxuICAgICAgICAgICAgLyogQ2hlY2sgaWYgdGhlIGZpZWxkIGlzIHJlcXVpcmVkICovXHJcbiAgICAgICAgICAgIGxldCByZXF1aXJlZDogYm9vbGVhbiB8IGFueSA9ICh0eXBlb2YgeC5yZXF1aXJlZCA9PT0gJ2Z1bmN0aW9uJykgPyB4LnJlcXVpcmVkKHRoaXMuZm9ybVZhbHVlLCB0aGlzLmZvcm1Hcm91cCwgdGhpcy5jb250ZXh0KSA6IHgucmVxdWlyZWQ7XHJcbiAgICAgICAgICAgIGlmIChmb3JtQ29udHJvbCAmJiByZXF1aXJlZCAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAocmVxdWlyZWQgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbC5hZGRWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbC5yZW1vdmVWYWxpZGF0b3JzKFZhbGlkYXRvcnMucmVxdWlyZWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBVcGRhdGUgc29tZSB2YWx1ZXMgKGxhYmVsLCB0eXBlLCAuLi4pICovXHJcbiAgICAgICAgZmllbGRzPy5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgICAgICB2YXIgb3JnRmllbGQgPSB0aGlzLmZpZWxkcz8uZmlsdGVyKHkgPT4geS5uYW1lID09IHgubmFtZSlbMF07XHJcbiAgICAgICAgICAgIGlmIChvcmdGaWVsZCkge1xyXG4gICAgICAgICAgICAgICAgdXBkYXRlRm9ybUZpZWxkKG9yZ0ZpZWxkLCB4KTtcclxuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwPy52YWx1ZUNoYW5nZXM/LnN1YnNjcmliZSh5ID0+IHVwZGF0ZUZvcm1GaWVsZChvcmdGaWVsZCEsIHgpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxlcyBhdXRvY29tcGxldGUgZXZlbnRcclxuICAgICAqIEBwYXJhbSBmaWVsZCBcclxuICAgICAqIEBwYXJhbSBldmVudCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGZpbHRlckF1dG9jb21wbGV0ZShmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgZXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChmaWVsZC5uYW1lKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlRmlsdGVyZWRPcHRpb25zW2ZpZWxkLm5hbWVdID0gKDx7IGlkOiBhbnksIG5hbWU6IHN0cmluZyB9W10+ZmllbGQub3B0aW9ucylcclxuICAgICAgICAgICAgICAgID8uZmlsdGVyKG9wdGlvbiA9PiBvcHRpb24ubmFtZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGV2ZW50LnZhbHVlPy50b1N0cmluZygpPy50b0xvd2VyQ2FzZSgpKSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBhIGNoaXAgd2hlbiBhIGF1dG9jb21wbGV0ZSB2YWx1ZSBpcyBzZWxlY3RlZFxyXG4gICAgICogQHBhcmFtIGZpZWxkIFxyXG4gICAgICogQHBhcmFtIGV2ZW50IFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXV0b2NvbXBsZXRlVmFsdWVTZWxlY3RlZChmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgZXZlbnQ6IE1hdEF1dG9jb21wbGV0ZVNlbGVjdGVkRXZlbnQsIGNoaXBJbnB1dEV2ZW50OiBhbnkpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLl9hZGRDaGlwKGZpZWxkLCBldmVudC5vcHRpb24udmlld1ZhbHVlKTtcclxuICAgICAgICBjaGlwSW5wdXRFdmVudC52YWx1ZSA9ICcnO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBhIGNoaXBcclxuICAgICAqIEBwYXJhbSBmaWVsZCBcclxuICAgICAqIEBwYXJhbSBldmVudCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkZENoaXAoZmllbGQ6IEZvcm1GaWVsZERlZmluaXRpb24sIGV2ZW50OiBNYXRDaGlwSW5wdXRFdmVudCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2FkZENoaXAoZmllbGQsIGV2ZW50LnZhbHVlKTtcclxuICAgICAgICBldmVudC5jaGlwSW5wdXQhLmNsZWFyKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBSZW1vdmVzIGEgY2hpcFxyXG4gICAgICogQHBhcmFtIGZpZWxkIFxyXG4gICAgICogQHBhcmFtIGNoaXAgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyByZW1vdmVDaGlwKGZpZWxkOiBGb3JtRmllbGREZWZpbml0aW9uLCBjaGlwOiBhbnkpOiB2b2lkIHtcclxuICAgICAgICAvKiBHZXQgdGhlIGZvcm0gY29udHJvbCB1c2luZyB0aGUgZmllbGQgbmFtZSAqL1xyXG4gICAgICAgIGxldCBjb250cm9sID0gdGhpcy5mb3JtR3JvdXA/LmNvbnRyb2xzW2ZpZWxkLm5hbWUgPz8gJyddO1xyXG5cclxuICAgICAgICAvKiBHZXQgdGhlIGluZGV4IG9mIHRoZSBjaGlwICovXHJcbiAgICAgICAgY29uc3QgaW5kZXggPSBjb250cm9sPy52YWx1ZS5pbmRleE9mKGNoaXApO1xyXG4gICAgICAgIGlmIChjb250cm9sICYmIGluZGV4ID49IDApIHtcclxuICAgICAgICAgICAgY29udHJvbC52YWx1ZS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgICAgICBjb250cm9sLnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXA/Lm1hcmtBc0RpcnR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwPy51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQWRkcyBhIGNoaXBcclxuICAgICAqIEBwYXJhbSBmaWVsZCBcclxuICAgICAqIEBwYXJhbSB2YWx1ZSBcclxuICAgICAqL1xyXG4gICAgcHJpdmF0ZSBfYWRkQ2hpcChmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgICAgIC8qIEdldCB0aGUgZm9ybSBjb250cm9sIHVzaW5nIHRoZSBmaWVsZCBuYW1lICovXHJcbiAgICAgICAgbGV0IGNvbnRyb2wgPSB0aGlzLmZvcm1Hcm91cD8uY29udHJvbHNbZmllbGQubmFtZSA/PyAnJ107XHJcblxyXG4gICAgICAgIC8qIEdldCB0aGUgdmFsdWUgb2YgdGhlIGNoaXAgKi9cclxuICAgICAgICB2YWx1ZSA9ICh2YWx1ZSB8fCAnJykudHJpbSgpO1xyXG4gICAgICAgIGlmIChjb250cm9sICYmIHZhbHVlKSB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAoZmllbGQuaW5wdXRUeXBlKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdudW1iZXInOlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBudW1iZXIgPSBwYXJzZUludCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG51bWJlcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnZhbHVlLnB1c2gobnVtYmVyKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICAgICAgY2FzZSAnZmxvYXQnOlxyXG4gICAgICAgICAgICAgICAgICAgIGxldCBmbG9hdCA9IHBhcnNlRmxvYXQodmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChmbG9hdCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sLnZhbHVlLnB1c2goZmxvYXQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnRyb2wudmFsdWUucHVzaCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cD8ubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXA/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIYW5kbGVzIGRhdGUgcGlja2VyIG9wZW5lZCBldmVudFxyXG4gICAgICogQHBhcmFtIGRhdGVQaWNrZXIgXHJcbiAgICAgKiBAcGFyYW0gZmllbGQgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBoYW5kbGVEYXRlUGlja2VyT3BlbmVkKGRhdGVQaWNrZXI6IE1hdERhdGVwaWNrZXI8YW55PiwgZmllbGQ6IEZvcm1GaWVsZERlZmluaXRpb24pOiB2b2lkIHtcclxuICAgICAgICBpZiAoZmllbGQ/LmRhdGVQaWNrZXJPcGVuZWQpIHtcclxuICAgICAgICAgICAgZmllbGQuZGF0ZVBpY2tlck9wZW5lZChkYXRlUGlja2VyLCB0aGlzLmZvcm1Hcm91cD8udmFsdWUsIHRoaXMuZm9ybUdyb3VwLCB0aGlzLmNvbnRleHQpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhhbmRsZXMgZGF0ZSBmaWx0ZXIgZXZlbnRcclxuICAgICAqIEBwYXJhbSBkYXRlUGlja2VyIFxyXG4gICAgICogQHBhcmFtIGZpZWxkIFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgaGFuZGxlRGF0ZVBpY2tlckZpbHRlckFzeW5jKGRhdGVQaWNrZXI6IE1hdERhdGVwaWNrZXI8YW55PiwgZmllbGQ6IEZvcm1GaWVsZERlZmluaXRpb24sIGRhdGU6IERhdGUgfCBhbnkpOiB2b2lkIHtcclxuICAgICAgICBpZiAoZmllbGQ/LmRhdGVGaWx0ZXJBc3luYykge1xyXG4gICAgICAgICAgICAvKiBEaXNhYmxlcyBhbGwgZGF0ZXMgKi9cclxuICAgICAgICAgICAgZGF0ZVBpY2tlci5kYXRlcGlja2VySW5wdXQuZGF0ZUZpbHRlciA9IChkOiBEYXRlKSA9PiBmYWxzZTtcclxuICAgICAgICAgICAgZGF0ZVBpY2tlci5uZ09uQ2hhbmdlcyg8U2ltcGxlQ2hhbmdlcz57ICdkYXRlRmlsdGVyJzogbmV3IFNpbXBsZUNoYW5nZShcIlwiLCBcIlwiLCBmYWxzZSkgfSk7XHJcblxyXG4gICAgICAgICAgICAvKiBWYWxpZGF0ZSBkYXRlIGFzeW5jbHkuICovXHJcbiAgICAgICAgICAgIGZpZWxkLmRhdGVGaWx0ZXJBc3luYyhkYXRlLCB0aGlzLmZvcm1Hcm91cD8udmFsdWUsIHRoaXMuZm9ybUdyb3VwLCB0aGlzLmNvbnRleHQpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgICAgIGRhdGVQaWNrZXIuZGF0ZXBpY2tlcklucHV0LmRhdGVGaWx0ZXIgPSAoZDogRGF0ZSkgPT4gZCAmJiB4KGQpO1xyXG4gICAgICAgICAgICAgICAgZGF0ZVBpY2tlci5uZ09uQ2hhbmdlcyg8U2ltcGxlQ2hhbmdlcz57ICdkYXRlRmlsdGVyJzogbmV3IFNpbXBsZUNoYW5nZShcIlwiLCBcIlwiLCBmYWxzZSkgfSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhhbmRsZXMgY2FsZW5kYXIgZmlsdGVyIGV2ZW50XHJcbiAgICAgKiBAcGFyYW0gY2FsZW5kYXIgXHJcbiAgICAgKiBAcGFyYW0gZmllbGQgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBoYW5kbGVDYWxlbmRhckZpbHRlckFzeW5jKGNhbGVuZGFyOiBNYXRDYWxlbmRhcjxhbnk+LCBmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgZGF0ZTogRGF0ZSB8IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChmaWVsZD8uZGF0ZUZpbHRlckFzeW5jKSB7XHJcbiAgICAgICAgICAgIC8qIERpc2FibGVzIGFsbCBkYXRlcyAqL1xyXG4gICAgICAgICAgICBjYWxlbmRhci5kYXRlRmlsdGVyID0gKGQ6IERhdGUpID0+IGZhbHNlO1xyXG4gICAgICAgICAgICBjYWxlbmRhci5uZ09uQ2hhbmdlcyg8U2ltcGxlQ2hhbmdlcz57ICdkYXRlRmlsdGVyJzogbmV3IFNpbXBsZUNoYW5nZShcIlwiLCBcIlwiLCBmYWxzZSkgfSk7XHJcblxyXG4gICAgICAgICAgICAvKiBWYWxpZGF0ZSBkYXRlIGFzeW5jbHkuICovXHJcbiAgICAgICAgICAgIHZhciBzdWJzY3JpcHRpb24gPSBmaWVsZC5kYXRlRmlsdGVyQXN5bmMoZGF0ZSwgdGhpcy5mb3JtR3JvdXA/LnZhbHVlLCB0aGlzLmZvcm1Hcm91cCwgdGhpcy5jb250ZXh0KS5zdWJzY3JpYmUoeCA9PiB7XHJcbiAgICAgICAgICAgICAgICBjYWxlbmRhci5kYXRlRmlsdGVyID0gKGQ6IERhdGUpID0+IGQgJiYgeChkKTtcclxuICAgICAgICAgICAgICAgIGNhbGVuZGFyLm5nT25DaGFuZ2VzKDxTaW1wbGVDaGFuZ2VzPnsgJ2RhdGVGaWx0ZXInOiBuZXcgU2ltcGxlQ2hhbmdlKFwiXCIsIFwiXCIsIGZhbHNlKSB9KTtcclxuICAgICAgICAgICAgICAgIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBCdWlsZHMgdGhlIGZvcm0gZmllbGRzXHJcbiAgICAgKi9cclxuICAgIHByb3RlY3RlZCBidWlsZEZpZWxkcygpOiB2b2lkIHtcclxuICAgICAgICAvKiBDaGVjayBpZiBjbGFzc1R5cGUgaXMgbm90IGRlZmluZWQgKi9cclxuICAgICAgICBpZiAoIXRoaXMuY2xhc3NUeXBlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBjbGFzc1R5cGUuIFBsZWFzZSBlbnN1cmUgY2xhc3NUeXBlIGlzIGRlZmluZWQsIG5vdCBudWxsLCBhbmQgaXMgYSBjb25zdHJ1Y3RvciBmdW5jdGlvbi4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIEdldCBmb3JtIGRlZmluaXRpb24gKi9cclxuICAgICAgICB0aGlzLmZvcm1EZWZpbml0aW9uID0gZ2V0Rm9ybURlZmluaXRpb24obmV3IHRoaXMuY2xhc3NUeXBlKCkpO1xyXG5cclxuICAgICAgICAvKiBDcmVhdGUgdGhlIGZyb20gZmllbGRzIHVzaW5nIHRoZSBlbnRpdHkgdHlwZSAqL1xyXG4gICAgICAgIHRoaXMuZmllbGRHcm91cHMgPSB0aGlzLmZvcm1EZWZpbml0aW9uPy5maWVsZEdyb3Vwcz8uZmlsdGVyKHggPT4gIXguaGlkZGVuKT8ubWFwKGEgPT4geyByZXR1cm4geyAuLi5hIH0gfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBMb2cgdG8gY29uc29sZVxyXG4gICAgICogQHBhcmFtIG1lc3NhZ2UgXHJcbiAgICAgKiBAcGFyYW0gb3B0aW9uYWxQYXJhbXMgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBsb2cobWVzc2FnZTogYW55LCAuLi5vcHRpb25hbFBhcmFtczogYW55W10pIHtcclxuICAgICAgICBjb25zb2xlLmxvZyhtZXNzYWdlLCBvcHRpb25hbFBhcmFtcyk7XHJcbiAgICB9XHJcbn0iLCI8ZGl2ICpuZ0lmPVwiZm9ybUdyb3VwICYmIGZpZWxkUm93c1wiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XHJcbiAgICA8IS0tICNyZWdpb24gRmllbGRzIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGRzIG9mIGZpZWxkUm93czsgbGV0IGkgPSBpbmRleFwiPlxyXG4gICAgICAgIDxkaXYgbGF5b3V0LWd0LXNtPVwicm93XCIgbGF5b3V0PVwiY29sdW1uXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGZpZWxkIG9mIGZpZWxkc1wiIFtuZ1N3aXRjaF09XCJmaWVsZC50eXBlXCI+XHJcbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWZpZWxkLmhpZGRlbiAmJiAhKGZpZWxkLmhpZGUgJiYgZmllbGQuaGlkZShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkLndyYXBwZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFRleHQgaW5wdXQgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5UZXh0XCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3R5cGVdPVwiZmllbGQuaW5wdXRUeXBlXCIgW21pbmxlbmd0aF09XCJmaWVsZC5taW5MZW5ndGh8fG51bGxcIiBbbWF4bGVuZ3RoXT1cImZpZWxkLm1heExlbmd0aHx8bnVsbFwiIFttaW5dPVwiZmllbGQubWluXCIgW21heF09XCJmaWVsZC5tYXhcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWUhXCIgW3JlYWRvbmx5XT1cIihyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKSk/P2ZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWZmaXhCdXR0b24gb2YgZmllbGQuc3VmZml4QnV0dG9uc1wiIG1hdFN1ZmZpeD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhc3VmZml4QnV0dG9uLmhpZGUgfHwgIXN1ZmZpeEJ1dHRvbi5oaWRlKGZvcm1WYWx1ZSwgY29udGV4dClcIiAoY2xpY2spPVwic3VmZml4QnV0dG9uLmV2ZW50ICYmIHN1ZmZpeEJ1dHRvbi5ldmVudChmb3JtVmFsdWUsIGNvbnRleHQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBmb250U2V0PVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPnt7c3VmZml4QnV0dG9uLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgJGFueSgkYW55KGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lIV0pKVsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gVGV4dGFyZWEgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5UZXh0QXJlYVwiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIG1hdElucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZSFcIiByb3dzPVwiZmllbGQucm93c3x8MlwiIFtyZWFkb25seV09XCIocmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSkpPz9mYWxzZVwiPjwvdGV4dGFyZWE+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWZmaXhCdXR0b24gb2YgZmllbGQuc3VmZml4QnV0dG9uc1wiIG1hdFN1ZmZpeD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhc3VmZml4QnV0dG9uLmhpZGUgfHwgIXN1ZmZpeEJ1dHRvbi5oaWRlKGZvcm1WYWx1ZSwgY29udGV4dClcIiAoY2xpY2spPVwic3VmZml4QnV0dG9uLmV2ZW50ICYmIHN1ZmZpeEJ1dHRvbi5ldmVudChmb3JtVmFsdWUsIGNvbnRleHQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBmb250U2V0PVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPnt7c3VmZml4QnV0dG9uLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgJGFueShmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZSFdKVsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gRW51bSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkVudW1cIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBbY2xhc3NdPVwiZmllbGQuY3NzQ2xhc3NcIiBsYXlvdXQtbWFyZ2luPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZC1zZWxlY3QgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lIVwiIFtlbnVtXT1cImZpZWxkLmVudW1UeXBlXCIgW2VudW1GaWx0ZXJdPVwiZmllbGQuZW51bUZpbHRlciB8IGZ1bmM6Zm9ybVZhbHVlOmZvcm1Hcm91cDpjb250ZXh0XCIgW2tleV09XCJmaWVsZC5vcHRpb25WYWx1ZVwiIFt0ZXh0XT1cImZpZWxkLm9wdGlvblRleHRcIiBbZGVmYXVsdE9wdGlvbl09XCJmaWVsZC5kZWZhdWx0T3B0aW9uPz90cnVlXCIgW211bHRpcGxlXT1cImZpZWxkLm11bHRpcGxlXCIgW3JlYWRvbmx5XT1cIihyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKSk/P2ZhbHNlXCIgW3RyaWdnZXJDc3NDbGFzc109XCJmaWVsZC50cmlnZ2VyQ3NzQ2xhc3NcIiBbdHJpZ2dlck1vZGVdPVwiZmllbGQudHJpZ2dlck1vZGVcIiBsYXlvdXQ9XCJyb3dcIiBmbGV4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB2ZC1zZWxlY3QtdHJpZ2dlciBsZXQtdHJpZ2dlcj1cInRyaWdnZXJcIiAqbmdJZj1cImZpZWxkLnRyaWdnZXJUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImZpZWxkLnRyaWdnZXJUZW1wbGF0ZSh0cmlnZ2VyLCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dClcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtc2VsZWN0LW9wdGlvbiBsZXQtb3B0aW9uPVwib3B0aW9uXCIgKm5nSWY9XCJmaWVsZC5vcHRpb25UZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbb3V0ZXJIVE1MXT1cImZpZWxkLm9wdGlvblRlbXBsYXRlKG9wdGlvbiwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZkLXNlbGVjdD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1ZmZpeEJ1dHRvbiBvZiBmaWVsZC5zdWZmaXhCdXR0b25zXCIgbWF0U3VmZml4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIiFzdWZmaXhCdXR0b24uaGlkZSB8fCAhc3VmZml4QnV0dG9uLmhpZGUoZm9ybVZhbHVlLCBjb250ZXh0KVwiIChjbGljayk9XCJzdWZmaXhCdXR0b24uZXZlbnQgJiYgc3VmZml4QnV0dG9uLmV2ZW50KGZvcm1WYWx1ZSwgY29udGV4dClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGZvbnRTZXQ9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+e3tzdWZmaXhCdXR0b24uaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiAkYW55KGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lIV0pWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBWZFNlbGVjdCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLlZkU2VsZWN0XCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmQtc2VsZWN0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZSFcIiBbZW5kcG9pbnRdPVwiZmllbGQuZW5kcG9pbnQ/PycnIHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBbcGFyYW1zXT1cImZpZWxkLnBhcmFtcz8/e30gfCBmdW5jOmZvcm1WYWx1ZTpmb3JtR3JvdXA6Y29udGV4dFwiIFtwcm9qZWN0aW9uXT1cImZpZWxkLnByb2plY3Rpb25cIiBbbWFwcGVyXT1cImZpZWxkLm1hcHBlclwiIFtjb21wYXJlV2l0aF09XCJmaWVsZC5jb21wYXJlV2l0aFwiIFtsb2FkRGF0YV09XCJmaWVsZC5mZXRjaENvbmRpdGlvbiB8IGZ1bmM6Zm9ybVZhbHVlOmZvcm1Hcm91cDpjb250ZXh0XCIgW2tleV09XCJmaWVsZC5vcHRpb25WYWx1ZVwiIFt0ZXh0XT1cImZpZWxkLm9wdGlvblRleHRcIiBbZGVmYXVsdE9wdGlvbl09XCJmaWVsZC5kZWZhdWx0T3B0aW9uPz90cnVlXCIgW211bHRpcGxlXT1cImZpZWxkLm11bHRpcGxlXCIgW3NlbGVjdEZpcnN0XT1cImZpZWxkLnNlbGVjdEZpcnN0XCIgW3JlYWRvbmx5XT1cIihyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKSk/P2ZhbHNlXCIgW3RyaWdnZXJDc3NDbGFzc109XCJmaWVsZC50cmlnZ2VyQ3NzQ2xhc3NcIiBbdHJpZ2dlck1vZGVdPVwiZmllbGQudHJpZ2dlck1vZGVcIiAoaXRlbVNlbGVjdGVkKT1cImZpZWxkLml0ZW1TZWxlY3QgJiYgZmllbGQuaXRlbVNlbGVjdCgkZXZlbnQsIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KTtcIiAoaXRlbUNoYW5nZSk9XCJmaWVsZC5pdGVtQ2hhbmdlICYmIGZpZWxkLml0ZW1DaGFuZ2UoJGV2ZW50LCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCk7XCIgbGF5b3V0PVwicm93XCIgZmxleD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtc2VsZWN0LXRyaWdnZXIgbGV0LXRyaWdnZXI9XCJ0cmlnZ2VyXCIgKm5nSWY9XCJmaWVsZC50cmlnZ2VyVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJmaWVsZC50cmlnZ2VyVGVtcGxhdGUodHJpZ2dlciwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHZkLXNlbGVjdC10cmlnZ2VyIGxldC10cmlnZ2VyPVwidHJpZ2dlclwiICpuZ0lmPVwiZmllbGQudHJpZ2dlck1hcHBlciAmJiBmaWVsZC5tdWx0aXBsZSAmJiBmaWVsZC50cmlnZ2VyTW9kZSA9PSAnY2hpcCdcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nRm9yPVwibGV0IGl0ZW0gb2YgdHJpZ2dlclwiIGNsYXNzPVwibWF0LW1kYy1jaGlwIG1hdC1tZGMtc3RhbmRhcmQtY2hpcCBtYXQtcHJpbWFyeSBtYXQtbWRjLWNoaXAtc2VsZWN0ZWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZmllbGQudHJpZ2dlck1hcHBlcihpdGVtLCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dClcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB2ZC1zZWxlY3Qtb3B0aW9uIGxldC1vcHRpb249XCJvcHRpb25cIiAqbmdJZj1cImZpZWxkLm9wdGlvblRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtvdXRlckhUTUxdPVwiZmllbGQub3B0aW9uVGVtcGxhdGUob3B0aW9uLCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dClcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3VmZml4QnV0dG9uIG9mIGZpZWxkLnN1ZmZpeEJ1dHRvbnNcIiBtYXRTdWZmaXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiIXN1ZmZpeEJ1dHRvbi5oaWRlIHx8ICFzdWZmaXhCdXR0b24uaGlkZShmb3JtVmFsdWUsIGNvbnRleHQpXCIgKGNsaWNrKT1cInN1ZmZpeEJ1dHRvbi5ldmVudCAmJiBzdWZmaXhCdXR0b24uZXZlbnQoZm9ybVZhbHVlLCBjb250ZXh0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gZm9udFNldD1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj57e3N1ZmZpeEJ1dHRvbi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mICRhbnkoZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWUhXSlbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFZkTGlzdCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLlZkTGlzdFwiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiIGZsb2F0TGFiZWw9XCJhbHdheXNcIiBjbGFzcz1cImZvcm0tZmllbGQtdHlwZS1saXN0XCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmQtbGlzdCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWUhXCIgW2VuZHBvaW50XT1cImZpZWxkLmVuZHBvaW50Pz8nJyB8IGZ1bmM6Zm9ybVZhbHVlOmZvcm1Hcm91cDpjb250ZXh0XCIgW3BhcmFtc109XCJmaWVsZC5wYXJhbXMgPz97fSB8IGZ1bmM6Zm9ybVZhbHVlOmZvcm1Hcm91cDpjb250ZXh0XCIgW3Byb2plY3Rpb25dPVwiZmllbGQucHJvamVjdGlvblwiIFttYXBwZXJdPVwiZmllbGQubWFwcGVyXCIgW2NvbXBhcmVXaXRoXT1cImZpZWxkLmNvbXBhcmVXaXRoXCIgW2xvYWREYXRhXT1cImZpZWxkLmZldGNoQ29uZGl0aW9uIHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBba2V5XT1cImZpZWxkLm9wdGlvblZhbHVlXCIgW3RleHRdPVwiZmllbGQub3B0aW9uVGV4dFwiIFttdWx0aXBsZV09XCJmaWVsZC5tdWx0aXBsZVwiIFtyZWFkb25seV09XCIocmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSkpPz9mYWxzZVwiIChpdGVtU2VsZWN0ZWQpPVwiZmllbGQuaXRlbVNlbGVjdCAmJiBmaWVsZC5pdGVtU2VsZWN0KCRldmVudCwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpO1wiIChpdGVtQ2hhbmdlKT1cImZpZWxkLml0ZW1DaGFuZ2UgJiYgZmllbGQuaXRlbUNoYW5nZSgkZXZlbnQsIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KTtcIiBbc3R5bGUubWF4LXdpZHRoXT1cImZpZWxkLm1heFdpZHRoXCIgW3N0eWxlLm1heC1oZWlnaHRdPVwiZmllbGQubWF4SGVpZ2h0XCIgZmxleD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtbGlzdC1vcHRpb24gbGV0LW9wdGlvbj1cIm9wdGlvblwiICpuZ0lmPVwiZmllbGQub3B0aW9uVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW291dGVySFRNTF09XCJmaWVsZC5vcHRpb25UZW1wbGF0ZShvcHRpb24sIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92ZC1saXN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiAkYW55KGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lIV0pWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBDaGlwcyAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkNoaXBzXCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoaXAtZ3JpZCAjY2hpcExpc3QgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lIVwiIFtkaXNhYmxlQ29udHJvbF09XCIocmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSkpPz9mYWxzZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hpcC1yb3cgKm5nRm9yPVwibGV0IGNoaXAgb2YgJGFueShmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZSFdKT8udmFsdWVcIiAocmVtb3ZlZCk9XCJyZW1vdmVDaGlwKGZpZWxkLCBjaGlwKVwiIGNvbG9yPVwicHJpbWFyeVwiIHNlbGVjdGFibGU9XCJ0cnVlXCIgc2VsZWN0ZWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPnt7Y2hpcH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIG1hdENoaXBSZW1vdmU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gZm9udFNldD1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5jYW5jZWw8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGlwLXJvdz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW3BsYWNlaG9sZGVyXT1cIiRhbnkoZmllbGQubGFiZWwpXCIgI2NoaXBJbnB1dCBbbWF0Q2hpcElucHV0Rm9yXT1cImNoaXBMaXN0XCIgW21hdENoaXBJbnB1dFNlcGFyYXRvcktleUNvZGVzXT1cInNlcGFyYXRvcktleXNDb2Rlc1wiIFttYXRBdXRvY29tcGxldGVdPVwiY2hpcEF1dG9jb21wbGV0ZVwiIChpbnB1dCk9XCJmaWx0ZXJBdXRvY29tcGxldGUoZmllbGQsIGNoaXBJbnB1dClcIiAobWF0Q2hpcElucHV0VG9rZW5FbmQpPVwiYWRkQ2hpcChmaWVsZCwgJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtY2hpcC1ncmlkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1hdXRvY29tcGxldGUgYXV0b0FjdGl2ZUZpcnN0T3B0aW9uICNjaGlwQXV0b2NvbXBsZXRlPVwibWF0QXV0b2NvbXBsZXRlXCIgW2NsYXNzXT1cImZpZWxkLmF1dG9jb21wbGV0ZUNzc0NsYXNzXCIgKG9wdGlvblNlbGVjdGVkKT1cImF1dG9jb21wbGV0ZVZhbHVlU2VsZWN0ZWQoZmllbGQsICRldmVudCwgY2hpcElucHV0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgYXV0b2NvbXBsZXRlRmlsdGVyZWRPcHRpb25zW2ZpZWxkLm5hbWUhXVwiIFt2YWx1ZV09XCJvcHRpb24uaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvcHRpb24ubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3VmZml4QnV0dG9uIG9mIGZpZWxkLnN1ZmZpeEJ1dHRvbnNcIiBtYXRTdWZmaXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiIXN1ZmZpeEJ1dHRvbi5oaWRlIHx8ICFzdWZmaXhCdXR0b24uaGlkZShmb3JtVmFsdWUsIGNvbnRleHQpXCIgKGNsaWNrKT1cInN1ZmZpeEJ1dHRvbi5ldmVudCAmJiBzdWZmaXhCdXR0b24uZXZlbnQoZm9ybVZhbHVlLCBjb250ZXh0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gZm9udFNldD1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj57e3N1ZmZpeEJ1dHRvbi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mICRhbnkoZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWUhXSlbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFZkQ2hpcHMgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5WZENoaXBzXCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dmQtY2hpcHMgI3ZkQ2hpcCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWUhXCIgW2VuZHBvaW50XT1cImZpZWxkLmVuZHBvaW50Pz8nJyB8IGZ1bmM6Zm9ybVZhbHVlOmZvcm1Hcm91cDpjb250ZXh0XCIgW3BhcmFtc109XCJmaWVsZC5wYXJhbXMgfHwge30gfCBmdW5jOmZvcm1WYWx1ZTpmb3JtR3JvdXA6Y29udGV4dFwiIFtzZWFyY2hGaWVsZF09XCJmaWVsZC5zZWFyY2hGaWVsZFwiIFtjbGFzc1R5cGVdPVwiZmllbGQuY2xhc3NUeXBlXCIgW3Byb2plY3Rpb25dPVwiZmllbGQucHJvamVjdGlvblwiIFtrZXldPVwiZmllbGQub3B0aW9uVmFsdWVcIiBbcmVhZG9ubHldPVwiKHJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpKT8/ZmFsc2VcIiBbcmVtb3ZhYmxlXT1cIiFmaWVsZC5jbGVhclwiIFtjb250ZXh0XT1cImNvbnRleHRcIiBbc3VmZml4QnV0dG9uc109XCJmaWVsZC5zdWZmaXhCdXR0b25zXCIgW2F1dG9jb21wbGV0ZUNzc0NsYXNzXT1cImZpZWxkLmF1dG9jb21wbGV0ZUNzc0NsYXNzXCIgKGluaXRTZWxlY3QpPVwiZmllbGQuaXRlbVNlbGVjdCAmJiBmaWVsZC5pdGVtU2VsZWN0KCRldmVudCwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpO1wiIChzZWxlY3RlZCk9XCJmaWVsZC5pdGVtQ2hhbmdlICYmIGZpZWxkLml0ZW1DaGFuZ2UoJGV2ZW50LCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCk7XCIgKGNsZWFyZWQpPVwiZmllbGQuY2xlYXIgJiYgZmllbGQuY2xlYXIoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpO1wiIFtjdXN0b21WYWx1ZV09XCJmaWVsZC5jdXN0b21WYWx1ZVwiIGxheW91dD1cInJvd1wiIGZsZXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHZkLWNoaXAgbGV0LWNoaXA9XCJjaGlwXCIgKm5nSWY9XCJmaWVsZC5jaGlwVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbb3V0ZXJIVE1MXT1cImZpZWxkLmNoaXBUZW1wbGF0ZShjaGlwLCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dClcIj48L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB2ZC1hdXRvY29tcGxldGUtb3B0aW9uIGxldC1vcHRpb249XCJvcHRpb25cIiAqbmdJZj1cImZpZWxkLmF1dG9jb21wbGV0ZVRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgW291dGVySFRNTF09XCJmaWVsZC5hdXRvY29tcGxldGVUZW1wbGF0ZShvcHRpb24sIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZkLWNoaXBzPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cInZkQ2hpcC5lbXB0eVJlc3VsdFwiIGNsYXNzPVwidGMtcmVkLTQwMFwiIGkxOG49XCJAQG5vUmVzdWx0c0ZvdW5kXCI+Tm8gcmVzdWx0cyB3ZXJlIGZvdW5kLjwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgJGFueShmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZSFdKVsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gU2VsZWN0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuU2VsZWN0XCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LXNlbGVjdCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWUhXCIgW211bHRpcGxlXT1cImZpZWxkLm11bHRpcGxlXCIgW2Rpc2FibGVDb250cm9sXT1cIihyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKSk/P2ZhbHNlXCIgZmxleD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mICRhbnkoZmllbGQub3B0aW9ucylcIiBbdmFsdWVdPVwib3B0aW9uLmlkXCI+e3tvcHRpb24ubmFtZX19PC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3VmZml4QnV0dG9uIG9mIGZpZWxkLnN1ZmZpeEJ1dHRvbnNcIiBtYXRTdWZmaXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiIXN1ZmZpeEJ1dHRvbi5oaWRlIHx8ICFzdWZmaXhCdXR0b24uaGlkZShmb3JtVmFsdWUsIGNvbnRleHQpXCIgKGNsaWNrKT1cInN1ZmZpeEJ1dHRvbi5ldmVudCAmJiBzdWZmaXhCdXR0b24uZXZlbnQoZm9ybVZhbHVlLCBjb250ZXh0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gZm9udFNldD1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj57e3N1ZmZpeEJ1dHRvbi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mICRhbnkoZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWUhXSlbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIEF1dG9jb21wbGV0ZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkF1dG9jb21wbGV0ZVwiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgbWF0SW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lIVwiIFttaW5dPVwiZmllbGQubWluXCIgW21heF09XCJmaWVsZC5tYXhcIiBbbWF0QXV0b2NvbXBsZXRlXT1cImF1dG9cIiAjYXV0b2NvbXBsZXRlSW5wdXQgKGlucHV0KT1cImZpbHRlckF1dG9jb21wbGV0ZShmaWVsZCwgYXV0b2NvbXBsZXRlSW5wdXQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgW3JlYWRvbmx5XT1cIihyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKSk/P2ZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWF1dG9jb21wbGV0ZSBhdXRvQWN0aXZlRmlyc3RPcHRpb24gI2F1dG89XCJtYXRBdXRvY29tcGxldGVcIiBbY2xhc3NdPVwiZmllbGQuYXV0b2NvbXBsZXRlQ3NzQ2xhc3NcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGF1dG9jb21wbGV0ZUZpbHRlcmVkT3B0aW9uc1tmaWVsZC5uYW1lIV1cIiBbdmFsdWVdPVwib3B0aW9uLmlkXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7b3B0aW9uLm5hbWV9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LW9wdGlvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWF1dG9jb21wbGV0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1ZmZpeEJ1dHRvbiBvZiBmaWVsZC5zdWZmaXhCdXR0b25zXCIgbWF0U3VmZml4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIiFzdWZmaXhCdXR0b24uaGlkZSB8fCAhc3VmZml4QnV0dG9uLmhpZGUoZm9ybVZhbHVlLCBjb250ZXh0KVwiIChjbGljayk9XCJzdWZmaXhCdXR0b24uZXZlbnQgJiYgc3VmZml4QnV0dG9uLmV2ZW50KGZvcm1WYWx1ZSwgY29udGV4dClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGZvbnRTZXQ9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+e3tzdWZmaXhCdXR0b24uaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiAkYW55KGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lIV0pWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBEYXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuRGF0ZVwiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IG1hdElucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZSFcIiBbbWluXT1cImZpZWxkLm1pblwiIFttYXhdPVwiZmllbGQubWF4XCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgW21hdERhdGVwaWNrZXJdPVwiZGF0ZVBpY2tlclwiIFttYXREYXRlcGlja2VyRmlsdGVyXT1cImZpZWxkLmRhdGVGaWx0ZXJcIiBbcmVhZG9ubHldPVwicmVhZG9ubHkgfHwgZmllbGQuZm9yY2VTZWxlY3QgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSlcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZGF0ZXBpY2tlci10b2dnbGUgbWF0U3VmZml4IFtmb3JdPVwiZGF0ZVBpY2tlclwiPjwvbWF0LWRhdGVwaWNrZXItdG9nZ2xlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyICNkYXRlUGlja2VyIFtkaXNhYmxlZF09XCIocmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSkpPz9mYWxzZVwiIChtb250aFNlbGVjdGVkKT1cImhhbmRsZURhdGVQaWNrZXJGaWx0ZXJBc3luYyhkYXRlUGlja2VyLCBmaWVsZCwgJGV2ZW50IClcIiAob3BlbmVkKT1cImhhbmRsZURhdGVQaWNrZXJPcGVuZWQoZGF0ZVBpY2tlciwgZmllbGQpXCIgW2NhbGVuZGFySGVhZGVyQ29tcG9uZW50XT1cImRhdGVQaWNrZXJIZWFkZXJDb21wb25lbnRcIj48L21hdC1kYXRlcGlja2VyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiAkYW55KGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lIV0pWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBDYWxlbmRhciAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkNhbGVuZGFyXCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgZmxvYXRMYWJlbD1cImFsd2F5c1wiIGNsYXNzPVwiZm9ybS1maWVsZC10eXBlLWNhbGVuZGFyXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgaW5wdXQ9XCJoaWRkZW5cIiBoaWRkZW4gbWF0SW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lIVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jYWxlbmRhciAjY2FsZW5kYXIgW3NlbGVjdGVkXT1cImZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSEpPy52YWx1ZVwiIChzZWxlY3RlZENoYW5nZSk9XCJmb3JtR3JvdXAuZ2V0KGZpZWxkLm5hbWUhKT8uc2V0VmFsdWUoJGV2ZW50KTtcIiAobW9udGhTZWxlY3RlZCk9XCJoYW5kbGVDYWxlbmRhckZpbHRlckFzeW5jKGNhbGVuZGFyLCBmaWVsZCwgJGV2ZW50IClcIiBbaGVhZGVyQ29tcG9uZW50XT1cImRhdGVQaWNrZXJIZWFkZXJDb21wb25lbnRcIiBzdHlsZT1cIndpZHRoOiAxMDAlO1wiPjwvbWF0LWNhbGVuZGFyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mICRhbnkoZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWUhXSlbJ2Vycm9yTWVzc2FnZXMnXVwiIGxheW91dC1tYXJnaW4+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBDaGVja2JveCAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkNoZWNrYm94XCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgY2xhc3M9XCJtYXQtY2hlY2tib3gtd3JhcFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNoZWNrYm94IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZSFcIiBbZGlzYWJsZUNvbnRyb2xdPVwiKHJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpKT8/ZmFsc2VcIj57e2ZpZWxkLmxhYmVsfX08L21hdC1jaGVja2JveD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mICRhbnkoZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWUhXSlbJ2Vycm9yTWVzc2FnZXMnXVwiIGxheW91dC1tYXJnaW4+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIEVkaXRvciAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkVkaXRvclwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJlZGl0b3JUZW1wbGF0ZT8udGVtcGxhdGVSZWYhXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiZWRpdG9yVGVtcGxhdGU/LnRlbXBsYXRlUmVmIVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgZm9ybUdyb3VwOiBmb3JtR3JvdXAgfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gQ29kZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkNvZGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiY29kZVRlbXBsYXRlPy50ZW1wbGF0ZVJlZiFcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjb2RlVGVtcGxhdGU/LnRlbXBsYXRlUmVmIVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgZm9ybUdyb3VwOiBmb3JtR3JvdXAgfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gRmlsZSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkZpbGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB2ZC1maWxlLWlucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZSFcIiAoc2VsZWN0KT1cImZpZWxkLmNoYW5nZSAmJiBmaWVsZC5jaGFuZ2UoZmllbGQsICRldmVudCwgZm9ybUdyb3VwLCBjb250ZXh0KVwiIFthY2NlcHRdPVwiZmllbGQuZmlsZUV4dGVuc2lvbnNcIiBbZGlzYWJsZUNvbnRyb2xdPVwiKHJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpKT8/ZmFsc2VcIiBmbGV4PjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIEN1c3RvbSAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLkN1c3RvbVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJjdXN0b21UZW1wbGF0ZT8udGVtcGxhdGVSZWYhXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tVGVtcGxhdGU/LnRlbXBsYXRlUmVmIVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7IGZpZWxkOiBmaWVsZCwgZm9ybUdyb3VwOiBmb3JtR3JvdXAgfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFRlbXBsYXRlIGZvciBjdXN0b20gZmllbGRzIC0tPlxyXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjdXN0b21GaWVsZCBvZiBjdXN0b21GaWVsZHNUZW1wbGF0ZXNcIj5cclxuICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImN1c3RvbUZpZWxkPy50ZW1wbGF0ZVJlZiAmJiBjdXN0b21GaWVsZC5yb3cgPT0gZmllbGRzWzBdPy5yb3cgJiYgY3VzdG9tRmllbGQuaW5saW5lXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tRmllbGQ/LnRlbXBsYXRlUmVmIVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Zm9ybUdyb3VwOiBmb3JtR3JvdXB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgPCEtLSAjcmVnaW9uIFRlbXBsYXRlIGZvciBjdXN0b20gZmllbGRzIC0tPlxyXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjdXN0b21GaWVsZHNcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21GaWVsZHNcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2Zvcm1Hcm91cDogZm9ybUdyb3VwLCByb3c6IGZpZWxkc1swXS5yb3d9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgY3VzdG9tRmllbGQgb2YgY3VzdG9tRmllbGRzVGVtcGxhdGVzXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImN1c3RvbUZpZWxkPy50ZW1wbGF0ZVJlZiAmJiBjdXN0b21GaWVsZC5yb3cgPT0gKChmaWVsZHNbMF0/LnJvdz8/MCkrMSkgJiYgIWN1c3RvbUZpZWxkLmlubGluZVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUZpZWxkPy50ZW1wbGF0ZVJlZiFcIiBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwie2Zvcm1Hcm91cDogZm9ybUdyb3VwfVwiPjwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG4gICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgPCEtLSAjcmVnaW9uIEZvcm0gYm90dG9tIC0tPlxyXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJvdHRvbVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImJvdHRvbVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Zm9ybUdyb3VwOiBmb3JtR3JvdXB9XCI+PC9uZy1jb250YWluZXI+XHJcbiAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgPCEtLSAjcmVnaW9uIFRlbXBsYXRlIGZvciBzdWZmaXggYnV0dG9ucyAtLT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjc3VmZml4QnV0dG9ucyBsZXQtZmllbGQ+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3VmZml4QnV0dG9uIG9mIGZpZWxkLnN1ZmZpeEJ1dHRvbnNcIiBtYXRTdWZmaXg+XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIiFzdWZmaXhCdXR0b24uaGlkZSB8fCAhc3VmZml4QnV0dG9uLmhpZGUoZm9ybVZhbHVlLCBjb250ZXh0KVwiIChjbGljayk9XCJzdWZmaXhCdXR0b24uZXZlbnQgJiYgc3VmZml4QnV0dG9uLmV2ZW50KGZvcm1WYWx1ZSwgY29udGV4dClcIj5cclxuICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBmb250U2V0PVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPnt7c3VmZml4QnV0dG9uLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICA8IS0tICNyZWdpb24gRGVidWcgdmFsdWUgLS0+XHJcbiAgICA8Y29kZSAqbmdJZj1cImRlYnVnVmFsdWVcIj5cclxuICAgICAgICA8cHJlPnt7Zm9ybVZhbHVlIHwganNvbn19PC9wcmU+XHJcbiAgICA8L2NvZGU+XHJcbiAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcbjwvZGl2PiJdfQ==
|
|
445
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2VuZXJpYy1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nkay9zcmMvbGliL2Zvcm1zL2NvbXBvbmVudHMvZ2VuZXJpYy1mb3JtL2dlbmVyaWMtZm9ybS5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jZGsvc3JjL2xpYi9mb3Jtcy9jb21wb25lbnRzL2dlbmVyaWMtZm9ybS9nZW5lcmljLWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNyRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsU0FBUyxFQUFFLFlBQVksRUFBaUIsV0FBVyxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNoTCxPQUFPLEVBQWUsU0FBUyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXBFLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLHlEQUF5RCxDQUFDO0FBQzVHLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUM1RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sOEJBQThCLENBQUM7QUFHOUQsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sMkNBQTJDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFdEY7O0dBRUc7QUFFSCxNQUFNLE9BQU8saUJBQWtCLFNBQVEsU0FBUztJQUM1QyxZQUFZLFdBQTZCLEVBQUUsZ0JB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QUFpQiw2UEF1QmQsaUNBQWlDLDZCQzFMdEQsb24wQkEwUU07OzJGRDlNTyxzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0ksaUJBQWlCOzhCQVNwQixTQUFTO3NCQURmLEtBQUs7Z0JBWUMsU0FBUztzQkFEZixLQUFLO2dCQU9DLGNBQWM7c0JBRHBCLEtBQUs7Z0JBT0MsV0FBVztzQkFEakIsS0FBSztnQkFPQyxTQUFTO3NCQURmLEtBQUs7Z0JBT0MsU0FBUztzQkFEZixLQUFLO2dCQVFDLE9BQU87c0JBRGIsS0FBSztnQkFPQyxVQUFVO3NCQURoQixLQUFLO2dCQU9DLFFBQVE7c0JBRGQsS0FBSztnQkFPQyxrQkFBa0I7c0JBRHhCLEtBQUs7Z0JBc0JDLGNBQWM7c0JBRHBCLFlBQVk7dUJBQUMsaUJBQWlCO2dCQU94QixZQUFZO3NCQURsQixZQUFZO3VCQUFDLGVBQWU7Z0JBT3RCLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsZUFBZTtnQkFPdEIsY0FBYztzQkFEcEIsWUFBWTt1QkFBQyxpQkFBaUI7Z0JBWXhCLE1BQU07c0JBRFosWUFBWTt1QkFBQyxRQUFRO2dCQU9mLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMsY0FBYztnQkFPckIscUJBQXFCO3NCQUQzQixlQUFlO3VCQUFDLGlDQUFpQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENPTU1BLCBFTlRFUiB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9rZXljb2Rlcyc7XHJcbmltcG9ydCB7IENka1BvcnRhbCB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9wb3J0YWwnO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIENvbnRlbnRDaGlsZCwgQ29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIElucHV0LCBPbkluaXQsIFF1ZXJ5TGlzdCwgU2ltcGxlQ2hhbmdlLCBTaW1wbGVDaGFuZ2VzLCBUZW1wbGF0ZVJlZiwgVHlwZSwgVmlld0NvbnRhaW5lclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBNYXRBdXRvY29tcGxldGVTZWxlY3RlZEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYXV0b2NvbXBsZXRlJztcclxuaW1wb3J0IHsgTWF0Q2hpcElucHV0RXZlbnQgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9jaGlwcyc7XHJcbmltcG9ydCB7IE1hdENhbGVuZGFyLCBNYXREYXRlcGlja2VyIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGF0ZXBpY2tlcic7XHJcbmltcG9ydCB7IFZkR2VuZXJpY0Zvcm1DdXN0b21GaWVsZERpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvdmQtZ2VuZXJpYy1mb3JtLWN1c3RvbS1maWVsZC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRUeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMvZm9ybS1maWVsZC10eXBlJztcclxuaW1wb3J0IHsgZ2V0Rm9ybURlZmluaXRpb24gfSBmcm9tICcuLi8uLi9mdW5jdGlvbnMvZnVuY3Rpb25zJztcclxuaW1wb3J0IHsgRm9ybURlZmluaXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS1kZWZpbml0aW9uJztcclxuaW1wb3J0IHsgRm9ybUZpZWxkRGVmaW5pdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscy9mb3JtLWZpZWxkLWRlZmluaXRpb24nO1xyXG5pbXBvcnQgeyBGb3JtRmllbGRHcm91cERlZmluaXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMvZm9ybS1maWVsZC1ncm91cC1kZWZpbml0aW9uJztcclxuaW1wb3J0IHsgRGF0ZVBpY2tlckhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4uL2RhdGVwaWNrZXIvZGF0ZXBpY2tlci1oZWFkZXIuY29tcG9uZW50JztcclxuXHJcbi8qKlxyXG4gKiBWZEVkaXRvckRpcmVjdGl2ZSBjbGFzc1xyXG4gKi9cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3ZkLWVkaXRvcl1uZy10ZW1wbGF0ZScgfSlcclxuZXhwb3J0IGNsYXNzIFZkRWRpdG9yRGlyZWN0aXZlIGV4dGVuZHMgQ2RrUG9ydGFsIHtcclxuICAgIGNvbnN0cnVjdG9yKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcbiAgICAgICAgc3VwZXIodGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgfVxyXG59XHJcblxyXG4vKipcclxuICogVmRDb2RlRGlyZWN0aXZlIGNsYXNzXHJcbiAqL1xyXG5ARGlyZWN0aXZlKHsgc2VsZWN0b3I6ICdbdmQtY29kZV1uZy10ZW1wbGF0ZScgfSlcclxuZXhwb3J0IGNsYXNzIFZkQ29kZURpcmVjdGl2ZSBleHRlbmRzIENka1BvcnRhbCB7XHJcbiAgICBjb25zdHJ1Y3Rvcih0ZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55Piwgdmlld0NvbnRhaW5lclJlZjogVmlld0NvbnRhaW5lclJlZikge1xyXG4gICAgICAgIHN1cGVyKHRlbXBsYXRlUmVmLCB2aWV3Q29udGFpbmVyUmVmKTtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIFZkRmlsZURpcmVjdGl2ZSBjbGFzc1xyXG4gKi9cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3ZkLWZpbGVdbmctdGVtcGxhdGUnIH0pXHJcbmV4cG9ydCBjbGFzcyBWZEZpbGVEaXJlY3RpdmUgZXh0ZW5kcyBDZGtQb3J0YWwge1xyXG4gICAgY29uc3RydWN0b3IodGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT4sIHZpZXdDb250YWluZXJSZWY6IFZpZXdDb250YWluZXJSZWYpIHtcclxuICAgICAgICBzdXBlcih0ZW1wbGF0ZVJlZiwgdmlld0NvbnRhaW5lclJlZik7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBWZEN1c3RvbURpcmVjdGl2ZSBjbGFzc1xyXG4gKi9cclxuQERpcmVjdGl2ZSh7IHNlbGVjdG9yOiAnW3ZkLWN1c3RvbV1uZy10ZW1wbGF0ZScgfSlcclxuZXhwb3J0IGNsYXNzIFZkQ3VzdG9tRGlyZWN0aXZlIGV4dGVuZHMgQ2RrUG9ydGFsIHtcclxuICAgIGNvbnN0cnVjdG9yKHRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+LCB2aWV3Q29udGFpbmVyUmVmOiBWaWV3Q29udGFpbmVyUmVmKSB7XHJcbiAgICAgICAgc3VwZXIodGVtcGxhdGVSZWYsIHZpZXdDb250YWluZXJSZWYpO1xyXG4gICAgfVxyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAndmQtZ2VuZXJpYy1mb3JtJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi9nZW5lcmljLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgc3R5bGVVcmxzOiBbJy4vZ2VuZXJpYy1mb3JtLmNvbXBvbmVudC5zY3NzJ11cclxufSlcclxuZXhwb3J0IGNsYXNzIFZkR2VuZXJpY0Zvcm1Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gICAgLyoqXHJcbiAgICAgKiBmb3JtOiBGb3JtR3JvdXBcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBmb3JtR3JvdXA/OiBGb3JtR3JvdXA7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGb3JtIHJhdyB2YWx1ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0IGZvcm1WYWx1ZSgpOiBhbnkgeyByZXR1cm4gdGhpcy5mb3JtR3JvdXA/LmdldFJhd1ZhbHVlKCk7IH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIGNsYXNzVHlwZTogVHlwZTxhbnk+XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY2xhc3NUeXBlPzogVHlwZTxhbnk+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZm9ybURlZmluaXRpb246IEZvcm1EZWZpbml0aW9uXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZm9ybURlZmluaXRpb24/OiBGb3JtRGVmaW5pdGlvbjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGZpZWxkR3JvdXBzOiBGb3JtRmllbGRHcm91cFtdXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZmllbGRHcm91cHM/OiBGb3JtRmllbGRHcm91cERlZmluaXRpb25bXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdyb3VwIG5hbWVcclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBncm91cE5hbWU/OiBzdHJpbmc7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWVsZCBzZXQgbmFtZVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGZpZWxkU2V0cz86IHN0cmluZ1tdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogY29udGV4dDogYW55XHJcbiAgICAgKiBUaGUgY3VycmVudCBjb250ZXh0XHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgY29udGV4dDogYW55O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZGVidWdWYWx1ZTogYm9vbGVhblxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIGRlYnVnVmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIHJlYWRvbmx5OiBib29sZWFuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgcmVhZG9ubHk/OiBib29sZWFuO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogc2VwYXJhdG9yS2V5c0NvZGVzOiBudW1iZXJbXVxyXG4gICAgICovXHJcbiAgICBASW5wdXQoKVxyXG4gICAgcHVibGljIHNlcGFyYXRvcktleXNDb2RlczogbnVtYmVyW10gPSBbRU5URVIsIENPTU1BXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIGZpZWxkUm93czogRm9ybUZpZWxkRGVmaW5pdGlvbltdW11cclxuICAgICAqL1xyXG4gICAgcHVibGljIGZpZWxkUm93cz86IEZvcm1GaWVsZERlZmluaXRpb25bXVtdO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogZmllbGRzOiBGb3JtRmllbGREZWZpbml0aW9uW11cclxuICAgICAqL1xyXG4gICAgcHVibGljIGZpZWxkcz86IEZvcm1GaWVsZERlZmluaXRpb25bXTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEZvcm1GaWVsZFR5cGU6IHR5cGVvZiBGb3JtRmllbGRUeXBlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBGb3JtRmllbGRUeXBlOiB0eXBlb2YgRm9ybUZpZWxkVHlwZSA9IEZvcm1GaWVsZFR5cGU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFZGl0b3IgdGVtcGxhdGVcclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZChWZEVkaXRvckRpcmVjdGl2ZSlcclxuICAgIHB1YmxpYyBlZGl0b3JUZW1wbGF0ZT86IFZkRWRpdG9yRGlyZWN0aXZlO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29kZSB0ZW1wbGF0ZVxyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkKFZkQ29kZURpcmVjdGl2ZSlcclxuICAgIHB1YmxpYyBjb2RlVGVtcGxhdGU/OiBWZENvZGVEaXJlY3RpdmU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWxlIHRlbXBsYXRlXHJcbiAgICAgKi9cclxuICAgIEBDb250ZW50Q2hpbGQoVmRGaWxlRGlyZWN0aXZlKVxyXG4gICAgcHVibGljIGZpbGVUZW1wbGF0ZT86IFZkRmlsZURpcmVjdGl2ZTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEN1c3RvbSB0ZW1wbGF0ZVxyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkKFZkQ3VzdG9tRGlyZWN0aXZlKVxyXG4gICAgcHVibGljIGN1c3RvbVRlbXBsYXRlPzogVmRDdXN0b21EaXJlY3RpdmU7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBDdXN0b21lciBkYXRlIGhlYWRlclxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZGF0ZVBpY2tlckhlYWRlckNvbXBvbmVudCA9IERhdGVQaWNrZXJIZWFkZXJDb21wb25lbnQ7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZW1wbGF0ZSByZWYgZm9yIGN1c3RvbSBmaWVsZHMgb24gdGhlIGJvdHRvbVxyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkKCdib3R0b20nKVxyXG4gICAgcHVibGljIGJvdHRvbT86IFRlbXBsYXRlUmVmPGFueT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBUZW1wbGF0ZSByZWYgZm9yIGN1c3RvbSBmaWVsZHNcclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZCgnY3VzdG9tRmllbGRzJylcclxuICAgIHB1YmxpYyBjdXN0b21GaWVsZHM/OiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogVGVtcGxhdGUgcmVmIGZvciBjdXN0b20gZmllbGRzIG9uIHRoZSBib3R0b21cclxuICAgICAqL1xyXG4gICAgQENvbnRlbnRDaGlsZHJlbihWZEdlbmVyaWNGb3JtQ3VzdG9tRmllbGREaXJlY3RpdmUpXHJcbiAgICBwdWJsaWMgY3VzdG9tRmllbGRzVGVtcGxhdGVzPzogUXVlcnlMaXN0PFZkR2VuZXJpY0Zvcm1DdXN0b21GaWVsZERpcmVjdGl2ZT47XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBGaWx0ZXJkIG9wdGlvbnMgZm9yIGF1dG9jb21wbGV0ZVxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYXV0b2NvbXBsZXRlRmlsdGVyZWRPcHRpb25zOiBhbnkgPSB7fTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEEgY2FsbGJhY2sgbWV0aG9kIHRoYXQgaXMgaW52b2tlZCBpbW1lZGlhdGVseSBhZnRlciB0aGVcclxuICAgICAqIGRlZmF1bHQgY2hhbmdlIGRldGVjdG9yIGhhcyBjaGVja2VkIHRoZSBkaXJlY3RpdmUnc1xyXG4gICAgICogZGF0YS1ib3VuZCBwcm9wZXJ0aWVzIGZvciB0aGUgZmlyc3QgdGltZSxcclxuICAgICAqIGFuZCBiZWZvcmUgYW55IG9mIHRoZSB2aWV3IG9yIGNvbnRlbnQgY2hpbGRyZW4gaGF2ZSBiZWVuIGNoZWNrZWQuXHJcbiAgICAgKiBJdCBpcyBpbnZva2VkIG9ubHkgb25jZSB3aGVuIHRoZSBkaXJlY3RpdmUgaXMgaW5zdGFudGlhdGVkLlxyXG4gICAgICovXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICAvKiBCdWlsZCB0aGUgZm9ybSBmaWVsZHMgKi9cclxuICAgICAgICBpZiAodGhpcy5jbGFzc1R5cGUgLyomJiAhdGhpcy5maWVsZEdyb3VwcyovKSB7XHJcbiAgICAgICAgICAgIHRoaXMuYnVpbGRGaWVsZHMoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIEdldCBmaWxlZCByb3dzICovXHJcbiAgICAgICAgbGV0IGZpZWxkUm93cyA9IHRoaXMuZmllbGRHcm91cHM/LmZpbHRlcih4ID0+XHJcbiAgICAgICAgICAgIHgubmFtZT8udHJpbSgpID09IHRoaXMuZ3JvdXBOYW1lPy50cmltKCkgJiZcclxuICAgICAgICAgICAgIXguaGlkZGVuLyogJiZcclxuICAgICAgICAgICAgKCF4LmhpZGUgfHwgIXguaGlkZSh0aGlzLmZvcm1WYWx1ZSwgdGhpcy5mb3JtR3JvdXAsIHRoaXMuY29udGV4dCkpKi9cclxuICAgICAgICApWzBdPy5ncm91cHM7XHJcblxyXG4gICAgICAgIGlmIChmaWVsZFJvd3MpIHtcclxuICAgICAgICAgICAgdGhpcy5maWVsZFJvd3MgPSBmaWVsZFJvd3MubWFwKGEgPT4geyByZXR1cm4gWy4uLmEubWFwKHkgPT4geyByZXR1cm4geyAuLi55IH0gfSldIH0pO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogRmlsdGVyIGJ5IGZpZWxkIHNldCAqL1xyXG4gICAgICAgIGlmICh0aGlzLmZpZWxkU2V0cyAmJiB0aGlzLmZpZWxkUm93cykge1xyXG4gICAgICAgICAgICB0aGlzLmZpZWxkUm93cyA9IHRoaXMuZmllbGRSb3dzLm1hcCh4ID0+IHggPSB4LmZpbHRlcih5ID0+IHkuZmllbGRTZXRzPy5zb21lKHogPT4gdGhpcy5maWVsZFNldHM/LnNvbWUoYSA9PiBhPy50cmltKCk/LnRvTG93ZXJDYXNlKCkgPT0gej8udHJpbSgpPy50b0xvd2VyQ2FzZSgpKSkpKS5maWx0ZXIoeCA9PiB4Lmxlbmd0aCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBHZXQgYWxsIGZpZWxkcyAqL1xyXG4gICAgICAgIGxldCBmaWVsZHMgPSB0aGlzLmZpZWxkUm93cz8ucmVkdWNlKChhLCBiKSA9PiBhLmNvbmNhdChiKSwgW10pO1xyXG4gICAgICAgIGlmIChmaWVsZHMpIHtcclxuICAgICAgICAgICAgdGhpcy5maWVsZHMgPSBmaWVsZHMubWFwKGEgPT4geyByZXR1cm4geyAuLi5hIH0gfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvKiBTdWJzY3JpZSB0byBjaGFuZ2UgZXZlbnQgKi9cclxuICAgICAgICBmaWVsZHM/LmZpbHRlcih5ID0+IHkudHlwZSAhPSBGb3JtRmllbGRUeXBlLkZpbGUgJiYgeS5jaGFuZ2UpPy5mb3JFYWNoKHggPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cD8uZ2V0KHgubmFtZSA/PyAnJyk/LnZhbHVlQ2hhbmdlcz8uc3Vic2NyaWJlKHkgPT4geCEuY2hhbmdlICYmIHghLmNoYW5nZSh5LCB0aGlzLmZvcm1Hcm91cD8udmFsdWUsIHRoaXMuZm9ybUdyb3VwLCB0aGlzLmNvbnRleHQpKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgbGV0IHVwZGF0ZUZvcm1GaWVsZCA9IChvcmdGaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgeDogRm9ybUZpZWxkRGVmaW5pdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAvKiBHZXQgdGhlIHR5cGUgYW5kIHRoZSBsYWJlbCBvZiB0aGUgZmllbGQgKi9cclxuICAgICAgICAgICAgbGV0IHR5cGUgPSBvcmdGaWVsZD8udHlwZTtcclxuICAgICAgICAgICAgbGV0IGxhYmVsID0gb3JnRmllbGQ/LmxhYmVsO1xyXG4gICAgICAgICAgICBsZXQgb3B0aW9ucyA9IG9yZ0ZpZWxkPy5vcHRpb25zO1xyXG5cclxuICAgICAgICAgICAgLyogUmVuZGVyIHRoZSBmaWVsZCB0eXBlICovXHJcbiAgICAgICAgICAgIHgudHlwZSA9ICh0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykgPyB0eXBlKHRoaXMuZm9ybVZhbHVlLCB0aGlzLmZvcm1Hcm91cCwgdGhpcy5jb250ZXh0KSA6IHgudHlwZTtcclxuXHJcbiAgICAgICAgICAgIC8qIFJlbmRlciB0aGUgZmllbGQgbGFiZWwgKi9cclxuICAgICAgICAgICAgeC5sYWJlbCA9ICh0eXBlb2YgbGFiZWwgPT09ICdmdW5jdGlvbicpID8gbGFiZWwodGhpcy5mb3JtVmFsdWUsIHRoaXMuZm9ybUdyb3VwLCB0aGlzLmNvbnRleHQpIDogeC5sYWJlbDtcclxuXHJcbiAgICAgICAgICAgIC8qIFJlbmRlciB0aGUgZmllbGQgb3B0aW9ucyAqL1xyXG4gICAgICAgICAgICB4Lm9wdGlvbnMgPSAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpID8gb3B0aW9ucyh0aGlzLmZvcm1WYWx1ZSwgdGhpcy5mb3JtR3JvdXAsIHRoaXMuY29udGV4dCkgOiB4Lm9wdGlvbnM7XHJcblxyXG4gICAgICAgICAgICAvKiBHZXQgdGhlIGZvcm0gY29udHJvbCAqL1xyXG4gICAgICAgICAgICBsZXQgZm9ybUNvbnRyb2w6IEZvcm1Db250cm9sPGFueT4gPSA8Rm9ybUNvbnRyb2w8YW55Pj50aGlzLmZvcm1Hcm91cD8uZ2V0KHgubmFtZSA/PyAnJyk7XHJcblxyXG4gICAgICAgICAgICAvKiBDaGVjayBpZiB0aGUgZmllbGQgaXMgcmVxdWlyZWQgKi9cclxuICAgICAgICAgICAgbGV0IHJlcXVpcmVkOiBib29sZWFuIHwgYW55ID0gKHR5cGVvZiB4LnJlcXVpcmVkID09PSAnZnVuY3Rpb24nKSA/IHgucmVxdWlyZWQodGhpcy5mb3JtVmFsdWUsIHRoaXMuZm9ybUdyb3VwLCB0aGlzLmNvbnRleHQpIDogeC5yZXF1aXJlZDtcclxuICAgICAgICAgICAgaWYgKGZvcm1Db250cm9sICYmIHJlcXVpcmVkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sLmFkZFZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sLnJlbW92ZVZhbGlkYXRvcnMoVmFsaWRhdG9ycy5yZXF1aXJlZCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8qIFVwZGF0ZSBzb21lIHZhbHVlcyAobGFiZWwsIHR5cGUsIC4uLikgKi9cclxuICAgICAgICBmaWVsZHM/LmZvckVhY2goeCA9PiB7XHJcbiAgICAgICAgICAgIHZhciBvcmdGaWVsZCA9IHRoaXMuZmllbGRzPy5maWx0ZXIoeSA9PiB5Lm5hbWUgPT0geC5uYW1lKVswXTtcclxuICAgICAgICAgICAgaWYgKG9yZ0ZpZWxkKSB7XHJcbiAgICAgICAgICAgICAgICB1cGRhdGVGb3JtRmllbGQob3JnRmllbGQsIHgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXA/LnZhbHVlQ2hhbmdlcz8uc3Vic2NyaWJlKHkgPT4gdXBkYXRlRm9ybUZpZWxkKG9yZ0ZpZWxkISwgeCkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBIYW5kbGVzIGF1dG9jb21wbGV0ZSBldmVudFxyXG4gICAgICogQHBhcmFtIGZpZWxkIFxyXG4gICAgICogQHBhcmFtIGV2ZW50IFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZmlsdGVyQXV0b2NvbXBsZXRlKGZpZWxkOiBGb3JtRmllbGREZWZpbml0aW9uLCBldmVudDogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGZpZWxkLm5hbWUpIHtcclxuICAgICAgICAgICAgdGhpcy5hdXRvY29tcGxldGVGaWx0ZXJlZE9wdGlvbnNbZmllbGQubmFtZV0gPSAoPHsgaWQ6IGFueSwgbmFtZTogc3RyaW5nIH1bXT5maWVsZC5vcHRpb25zKVxyXG4gICAgICAgICAgICAgICAgPy5maWx0ZXIob3B0aW9uID0+IG9wdGlvbi5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoZXZlbnQudmFsdWU/LnRvU3RyaW5nKCk/LnRvTG93ZXJDYXNlKCkpKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgY2hpcCB3aGVuIGEgYXV0b2NvbXBsZXRlIHZhbHVlIGlzIHNlbGVjdGVkXHJcbiAgICAgKiBAcGFyYW0gZmllbGQgXHJcbiAgICAgKiBAcGFyYW0gZXZlbnQgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBhdXRvY29tcGxldGVWYWx1ZVNlbGVjdGVkKGZpZWxkOiBGb3JtRmllbGREZWZpbml0aW9uLCBldmVudDogTWF0QXV0b2NvbXBsZXRlU2VsZWN0ZWRFdmVudCwgY2hpcElucHV0RXZlbnQ6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuX2FkZENoaXAoZmllbGQsIGV2ZW50Lm9wdGlvbi52aWV3VmFsdWUpO1xyXG4gICAgICAgIGNoaXBJbnB1dEV2ZW50LnZhbHVlID0gJyc7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgY2hpcFxyXG4gICAgICogQHBhcmFtIGZpZWxkIFxyXG4gICAgICogQHBhcmFtIGV2ZW50IFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgYWRkQ2hpcChmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgZXZlbnQ6IE1hdENoaXBJbnB1dEV2ZW50KTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5fYWRkQ2hpcChmaWVsZCwgZXZlbnQudmFsdWUpO1xyXG4gICAgICAgIGV2ZW50LmNoaXBJbnB1dCEuY2xlYXIoKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIFJlbW92ZXMgYSBjaGlwXHJcbiAgICAgKiBAcGFyYW0gZmllbGQgXHJcbiAgICAgKiBAcGFyYW0gY2hpcCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIHJlbW92ZUNoaXAoZmllbGQ6IEZvcm1GaWVsZERlZmluaXRpb24sIGNoaXA6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIC8qIEdldCB0aGUgZm9ybSBjb250cm9sIHVzaW5nIHRoZSBmaWVsZCBuYW1lICovXHJcbiAgICAgICAgbGV0IGNvbnRyb2wgPSB0aGlzLmZvcm1Hcm91cD8uY29udHJvbHNbZmllbGQubmFtZSA/PyAnJ107XHJcblxyXG4gICAgICAgIC8qIEdldCB0aGUgaW5kZXggb2YgdGhlIGNoaXAgKi9cclxuICAgICAgICBjb25zdCBpbmRleCA9IGNvbnRyb2w/LnZhbHVlLmluZGV4T2YoY2hpcCk7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wgJiYgaW5kZXggPj0gMCkge1xyXG4gICAgICAgICAgICBjb250cm9sLnZhbHVlLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICAgIGNvbnRyb2wudXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cD8ubWFya0FzRGlydHkoKTtcclxuICAgICAgICAgICAgdGhpcy5mb3JtR3JvdXA/LnVwZGF0ZVZhbHVlQW5kVmFsaWRpdHkoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBZGRzIGEgY2hpcFxyXG4gICAgICogQHBhcmFtIGZpZWxkIFxyXG4gICAgICogQHBhcmFtIHZhbHVlIFxyXG4gICAgICovXHJcbiAgICBwcml2YXRlIF9hZGRDaGlwKGZpZWxkOiBGb3JtRmllbGREZWZpbml0aW9uLCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICAgICAgLyogR2V0IHRoZSBmb3JtIGNvbnRyb2wgdXNpbmcgdGhlIGZpZWxkIG5hbWUgKi9cclxuICAgICAgICBsZXQgY29udHJvbCA9IHRoaXMuZm9ybUdyb3VwPy5jb250cm9sc1tmaWVsZC5uYW1lID8/ICcnXTtcclxuXHJcbiAgICAgICAgLyogR2V0IHRoZSB2YWx1ZSBvZiB0aGUgY2hpcCAqL1xyXG4gICAgICAgIHZhbHVlID0gKHZhbHVlIHx8ICcnKS50cmltKCk7XHJcbiAgICAgICAgaWYgKGNvbnRyb2wgJiYgdmFsdWUpIHtcclxuICAgICAgICAgICAgc3dpdGNoIChmaWVsZC5pbnB1dFR5cGUpIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IG51bWJlciA9IHBhcnNlSW50KHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAobnVtYmVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wudmFsdWUucHVzaChudW1iZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgICAgICBjYXNlICdmbG9hdCc6XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZsb2F0ID0gcGFyc2VGbG9hdCh2YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZsb2F0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRyb2wudmFsdWUucHVzaChmbG9hdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgY29udHJvbC52YWx1ZS5wdXNoKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29udHJvbC51cGRhdGVWYWx1ZUFuZFZhbGlkaXR5KCk7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwPy5tYXJrQXNEaXJ0eSgpO1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1Hcm91cD8udXBkYXRlVmFsdWVBbmRWYWxpZGl0eSgpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEhhbmRsZXMgZGF0ZSBwaWNrZXIgb3BlbmVkIGV2ZW50XHJcbiAgICAgKiBAcGFyYW0gZGF0ZVBpY2tlciBcclxuICAgICAqIEBwYXJhbSBmaWVsZCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGhhbmRsZURhdGVQaWNrZXJPcGVuZWQoZGF0ZVBpY2tlcjogTWF0RGF0ZXBpY2tlcjxhbnk+LCBmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbik6IHZvaWQge1xyXG4gICAgICAgIGlmIChmaWVsZD8uZGF0ZVBpY2tlck9wZW5lZCkge1xyXG4gICAgICAgICAgICBmaWVsZC5kYXRlUGlja2VyT3BlbmVkKGRhdGVQaWNrZXIsIHRoaXMuZm9ybUdyb3VwPy52YWx1ZSwgdGhpcy5mb3JtR3JvdXAsIHRoaXMuY29udGV4dCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxlcyBkYXRlIGZpbHRlciBldmVudFxyXG4gICAgICogQHBhcmFtIGRhdGVQaWNrZXIgXHJcbiAgICAgKiBAcGFyYW0gZmllbGQgXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBoYW5kbGVEYXRlUGlja2VyRmlsdGVyQXN5bmMoZGF0ZVBpY2tlcjogTWF0RGF0ZXBpY2tlcjxhbnk+LCBmaWVsZDogRm9ybUZpZWxkRGVmaW5pdGlvbiwgZGF0ZTogRGF0ZSB8IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChmaWVsZD8uZGF0ZUZpbHRlckFzeW5jKSB7XHJcbiAgICAgICAgICAgIC8qIERpc2FibGVzIGFsbCBkYXRlcyAqL1xyXG4gICAgICAgICAgICBkYXRlUGlja2VyLmRhdGVwaWNrZXJJbnB1dC5kYXRlRmlsdGVyID0gKGQ6IERhdGUpID0+IGZhbHNlO1xyXG4gICAgICAgICAgICBkYXRlUGlja2VyLm5nT25DaGFuZ2VzKDxTaW1wbGVDaGFuZ2VzPnsgJ2RhdGVGaWx0ZXInOiBuZXcgU2ltcGxlQ2hhbmdlKFwiXCIsIFwiXCIsIGZhbHNlKSB9KTtcclxuXHJcbiAgICAgICAgICAgIC8qIFZhbGlkYXRlIGRhdGUgYXN5bmNseS4gKi9cclxuICAgICAgICAgICAgZmllbGQuZGF0ZUZpbHRlckFzeW5jKGRhdGUsIHRoaXMuZm9ybUdyb3VwPy52YWx1ZSwgdGhpcy5mb3JtR3JvdXAsIHRoaXMuY29udGV4dCkuc3Vic2NyaWJlKHggPT4ge1xyXG4gICAgICAgICAgICAgICAgZGF0ZVBpY2tlci5kYXRlcGlja2VySW5wdXQuZGF0ZUZpbHRlciA9IChkOiBEYXRlKSA9PiBkICYmIHgoZCk7XHJcbiAgICAgICAgICAgICAgICBkYXRlUGlja2VyLm5nT25DaGFuZ2VzKDxTaW1wbGVDaGFuZ2VzPnsgJ2RhdGVGaWx0ZXInOiBuZXcgU2ltcGxlQ2hhbmdlKFwiXCIsIFwiXCIsIGZhbHNlKSB9KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogSGFuZGxlcyBjYWxlbmRhciBmaWx0ZXIgZXZlbnRcclxuICAgICAqIEBwYXJhbSBjYWxlbmRhciBcclxuICAgICAqIEBwYXJhbSBmaWVsZCBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGhhbmRsZUNhbGVuZGFyRmlsdGVyQXN5bmMoY2FsZW5kYXI6IE1hdENhbGVuZGFyPGFueT4sIGZpZWxkOiBGb3JtRmllbGREZWZpbml0aW9uLCBkYXRlOiBEYXRlIHwgYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGZpZWxkPy5kYXRlRmlsdGVyQXN5bmMpIHtcclxuICAgICAgICAgICAgLyogRGlzYWJsZXMgYWxsIGRhdGVzICovXHJcbiAgICAgICAgICAgIGNhbGVuZGFyLmRhdGVGaWx0ZXIgPSAoZDogRGF0ZSkgPT4gZmFsc2U7XHJcbiAgICAgICAgICAgIGNhbGVuZGFyLm5nT25DaGFuZ2VzKDxTaW1wbGVDaGFuZ2VzPnsgJ2RhdGVGaWx0ZXInOiBuZXcgU2ltcGxlQ2hhbmdlKFwiXCIsIFwiXCIsIGZhbHNlKSB9KTtcclxuXHJcbiAgICAgICAgICAgIC8qIFZhbGlkYXRlIGRhdGUgYXN5bmNseS4gKi9cclxuICAgICAgICAgICAgdmFyIHN1YnNjcmlwdGlvbiA9IGZpZWxkLmRhdGVGaWx0ZXJBc3luYyhkYXRlLCB0aGlzLmZvcm1Hcm91cD8udmFsdWUsIHRoaXMuZm9ybUdyb3VwLCB0aGlzLmNvbnRleHQpLnN1YnNjcmliZSh4ID0+IHtcclxuICAgICAgICAgICAgICAgIGNhbGVuZGFyLmRhdGVGaWx0ZXIgPSAoZDogRGF0ZSkgPT4gZCAmJiB4KGQpO1xyXG4gICAgICAgICAgICAgICAgY2FsZW5kYXIubmdPbkNoYW5nZXMoPFNpbXBsZUNoYW5nZXM+eyAnZGF0ZUZpbHRlcic6IG5ldyBTaW1wbGVDaGFuZ2UoXCJcIiwgXCJcIiwgZmFsc2UpIH0pO1xyXG4gICAgICAgICAgICAgICAgc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEJ1aWxkcyB0aGUgZm9ybSBmaWVsZHNcclxuICAgICAqL1xyXG4gICAgcHJvdGVjdGVkIGJ1aWxkRmllbGRzKCk6IHZvaWQge1xyXG4gICAgICAgIC8qIENoZWNrIGlmIGNsYXNzVHlwZSBpcyBub3QgZGVmaW5lZCAqL1xyXG4gICAgICAgIGlmICghdGhpcy5jbGFzc1R5cGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNsYXNzVHlwZS4gUGxlYXNlIGVuc3VyZSBjbGFzc1R5cGUgaXMgZGVmaW5lZCwgbm90IG51bGwsIGFuZCBpcyBhIGNvbnN0cnVjdG9yIGZ1bmN0aW9uLicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLyogR2V0IGZvcm0gZGVmaW5pdGlvbiAqL1xyXG4gICAgICAgIHRoaXMuZm9ybURlZmluaXRpb24gPSBnZXRGb3JtRGVmaW5pdGlvbihuZXcgdGhpcy5jbGFzc1R5cGUoKSk7XHJcblxyXG4gICAgICAgIC8qIENyZWF0ZSB0aGUgZnJvbSBmaWVsZHMgdXNpbmcgdGhlIGVudGl0eSB0eXBlICovXHJcbiAgICAgICAgdGhpcy5maWVsZEdyb3VwcyA9IHRoaXMuZm9ybURlZmluaXRpb24/LmZpZWxkR3JvdXBzPy5maWx0ZXIoeCA9PiAheC5oaWRkZW4pPy5tYXAoYSA9PiB7IHJldHVybiB7IC4uLmEgfSB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIExvZyB0byBjb25zb2xlXHJcbiAgICAgKiBAcGFyYW0gbWVzc2FnZSBcclxuICAgICAqIEBwYXJhbSBvcHRpb25hbFBhcmFtcyBcclxuICAgICAqL1xyXG4gICAgcHVibGljIGxvZyhtZXNzYWdlOiBhbnksIC4uLm9wdGlvbmFsUGFyYW1zOiBhbnlbXSkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UsIG9wdGlvbmFsUGFyYW1zKTtcclxuICAgIH1cclxufSIsIjxkaXYgKm5nSWY9XCJmb3JtR3JvdXAgJiYgZmllbGRSb3dzXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIj5cclxuICAgIDwhLS0gI3JlZ2lvbiBGaWVsZHMgLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBmaWVsZHMgb2YgZmllbGRSb3dzOyBsZXQgaSA9IGluZGV4XCI+XHJcbiAgICAgICAgPGRpdiBsYXlvdXQtZ3Qtc209XCJyb3dcIiBsYXlvdXQ9XCJjb2x1bW5cIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZmllbGQgb2YgZmllbGRzXCIgW25nU3dpdGNoXT1cImZpZWxkLnR5cGVcIj5cclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhZmllbGQuaGlkZGVuICYmICEoZmllbGQuaGlkZSAmJiBmaWVsZC5oaWRlKGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSlcIj5cclxuICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiZmllbGQud3JhcHBlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gVGV4dCBpbnB1dCAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLlRleHRcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBbY2xhc3NdPVwiZmllbGQuY3NzQ2xhc3NcIiBsYXlvdXQtbWFyZ2luPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbdHlwZV09XCJmaWVsZC5pbnB1dFR5cGVcIiBbbWlubGVuZ3RoXT1cImZpZWxkLm1pbkxlbmd0aHx8bnVsbFwiIFttYXhsZW5ndGhdPVwiZmllbGQubWF4TGVuZ3RofHxudWxsXCIgW21pbl09XCJmaWVsZC5taW5cIiBbbWF4XT1cImZpZWxkLm1heFwiIG1hdElucHV0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZSFcIiBbcmVhZG9ubHldPVwiKHJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpKT8/ZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1ZmZpeEJ1dHRvbiBvZiBmaWVsZC5zdWZmaXhCdXR0b25zXCIgbWF0U3VmZml4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIiFzdWZmaXhCdXR0b24uaGlkZSB8fCAhc3VmZml4QnV0dG9uLmhpZGUoZm9ybVZhbHVlLCBjb250ZXh0KVwiIChjbGljayk9XCJzdWZmaXhCdXR0b24uZXZlbnQgJiYgc3VmZml4QnV0dG9uLmV2ZW50KGZvcm1WYWx1ZSwgY29udGV4dClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGZvbnRTZXQ9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+e3tzdWZmaXhCdXR0b24uaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiAkYW55KCRhbnkoZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWUhXSkpWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBUZXh0YXJlYSAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLlRleHRBcmVhXCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGV4dGFyZWEgbWF0SW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lIVwiIHJvd3M9XCJmaWVsZC5yb3dzfHwyXCIgW3JlYWRvbmx5XT1cIihyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKSk/P2ZhbHNlXCI+PC90ZXh0YXJlYT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IHN1ZmZpeEJ1dHRvbiBvZiBmaWVsZC5zdWZmaXhCdXR0b25zXCIgbWF0U3VmZml4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAqbmdJZj1cIiFzdWZmaXhCdXR0b24uaGlkZSB8fCAhc3VmZml4QnV0dG9uLmhpZGUoZm9ybVZhbHVlLCBjb250ZXh0KVwiIChjbGljayk9XCJzdWZmaXhCdXR0b24uZXZlbnQgJiYgc3VmZml4QnV0dG9uLmV2ZW50KGZvcm1WYWx1ZSwgY29udGV4dClcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1pY29uIGZvbnRTZXQ9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+e3tzdWZmaXhCdXR0b24uaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwiZmllbGQuaGludFwiPnt7ZmllbGQuaGludH19PC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiAkYW55KGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lIV0pWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBFbnVtIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuRW51bVwiIFthdHRyLmZsZXhdPVwiZmllbGQuZmxleHx8MFwiIFtjbGFzc109XCJmaWVsZC5jc3NDbGFzc1wiIGxheW91dC1tYXJnaW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWxhYmVsPnt7ZmllbGQubGFiZWx9fTwvbWF0LWxhYmVsPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHZkLXNlbGVjdCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWUhXCIgW2VudW1dPVwiZmllbGQuZW51bVR5cGVcIiBbZW51bUZpbHRlcl09XCJmaWVsZC5lbnVtRmlsdGVyIHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBba2V5XT1cImZpZWxkLm9wdGlvblZhbHVlXCIgW3RleHRdPVwiZmllbGQub3B0aW9uVGV4dFwiIFtkZWZhdWx0T3B0aW9uXT1cImZpZWxkLmRlZmF1bHRPcHRpb24/P3RydWVcIiBbbXVsdGlwbGVdPVwiZmllbGQubXVsdGlwbGVcIiBbcmVhZG9ubHldPVwiKHJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpKT8/ZmFsc2VcIiBbdHJpZ2dlckNzc0NsYXNzXT1cImZpZWxkLnRyaWdnZXJDc3NDbGFzc1wiIFt0cmlnZ2VyTW9kZV09XCJmaWVsZC50cmlnZ2VyTW9kZVwiIGxheW91dD1cInJvd1wiIGZsZXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHZkLXNlbGVjdC10cmlnZ2VyIGxldC10cmlnZ2VyPVwidHJpZ2dlclwiICpuZ0lmPVwiZmllbGQudHJpZ2dlclRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtpbm5lckhUTUxdPVwiZmllbGQudHJpZ2dlclRlbXBsYXRlKHRyaWdnZXIsIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB2ZC1zZWxlY3Qtb3B0aW9uIGxldC1vcHRpb249XCJvcHRpb25cIiAqbmdJZj1cImZpZWxkLm9wdGlvblRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIFtvdXRlckhUTUxdPVwiZmllbGQub3B0aW9uVGVtcGxhdGUob3B0aW9uLCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dClcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmQtc2VsZWN0PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3VmZml4QnV0dG9uIG9mIGZpZWxkLnN1ZmZpeEJ1dHRvbnNcIiBtYXRTdWZmaXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiIXN1ZmZpeEJ1dHRvbi5oaWRlIHx8ICFzdWZmaXhCdXR0b24uaGlkZShmb3JtVmFsdWUsIGNvbnRleHQpXCIgKGNsaWNrKT1cInN1ZmZpeEJ1dHRvbi5ldmVudCAmJiBzdWZmaXhCdXR0b24uZXZlbnQoZm9ybVZhbHVlLCBjb250ZXh0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gZm9udFNldD1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj57e3N1ZmZpeEJ1dHRvbi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mICRhbnkoZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWUhXSlbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIFZkU2VsZWN0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuVmRTZWxlY3RcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBbY2xhc3NdPVwiZmllbGQuY3NzQ2xhc3NcIiBsYXlvdXQtbWFyZ2luPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZC1zZWxlY3QgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lIVwiIFtlbmRwb2ludF09XCJmaWVsZC5lbmRwb2ludD8/JycgfCBmdW5jOmZvcm1WYWx1ZTpmb3JtR3JvdXA6Y29udGV4dFwiIFtwYXJhbXNdPVwiZmllbGQucGFyYW1zPz97fSB8IGZ1bmM6Zm9ybVZhbHVlOmZvcm1Hcm91cDpjb250ZXh0XCIgW3Byb2plY3Rpb25dPVwiZmllbGQucHJvamVjdGlvblwiIFttYXBwZXJdPVwiZmllbGQubWFwcGVyXCIgW2NvbXBhcmVXaXRoXT1cImZpZWxkLmNvbXBhcmVXaXRoXCIgW2xvYWREYXRhXT1cImZpZWxkLmZldGNoQ29uZGl0aW9uIHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBba2V5XT1cImZpZWxkLm9wdGlvblZhbHVlXCIgW3RleHRdPVwiZmllbGQub3B0aW9uVGV4dFwiIFtkZWZhdWx0T3B0aW9uXT1cImZpZWxkLmRlZmF1bHRPcHRpb24/P3RydWVcIiBbbXVsdGlwbGVdPVwiZmllbGQubXVsdGlwbGVcIiBbc2VsZWN0Rmlyc3RdPVwiZmllbGQuc2VsZWN0Rmlyc3RcIiBbcmVhZG9ubHldPVwiKHJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpKT8/ZmFsc2VcIiBbdHJpZ2dlckNzc0NsYXNzXT1cImZpZWxkLnRyaWdnZXJDc3NDbGFzc1wiIFt0cmlnZ2VyTW9kZV09XCJmaWVsZC50cmlnZ2VyTW9kZVwiIChpdGVtU2VsZWN0ZWQpPVwiZmllbGQuaXRlbVNlbGVjdCAmJiBmaWVsZC5pdGVtU2VsZWN0KCRldmVudCwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpO1wiIChpdGVtQ2hhbmdlKT1cImZpZWxkLml0ZW1DaGFuZ2UgJiYgZmllbGQuaXRlbUNoYW5nZSgkZXZlbnQsIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KTtcIiBsYXlvdXQ9XCJyb3dcIiBmbGV4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB2ZC1zZWxlY3QtdHJpZ2dlciBsZXQtdHJpZ2dlcj1cInRyaWdnZXJcIiAqbmdJZj1cImZpZWxkLnRyaWdnZXJUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbaW5uZXJIVE1MXT1cImZpZWxkLnRyaWdnZXJUZW1wbGF0ZSh0cmlnZ2VyLCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dClcIj48L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtc2VsZWN0LXRyaWdnZXIgbGV0LXRyaWdnZXI9XCJ0cmlnZ2VyXCIgKm5nSWY9XCJmaWVsZC50cmlnZ2VyTWFwcGVyICYmIGZpZWxkLm11bHRpcGxlICYmIGZpZWxkLnRyaWdnZXJNb2RlID09ICdjaGlwJ1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgaXRlbSBvZiB0cmlnZ2VyXCIgY2xhc3M9XCJtYXQtbWRjLWNoaXAgbWF0LW1kYy1zdGFuZGFyZC1jaGlwIG1hdC1wcmltYXJ5IG1hdC1tZGMtY2hpcC1zZWxlY3RlZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2lubmVySFRNTF09XCJmaWVsZC50cmlnZ2VyTWFwcGVyKGl0ZW0sIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHZkLXNlbGVjdC1vcHRpb24gbGV0LW9wdGlvbj1cIm9wdGlvblwiICpuZ0lmPVwiZmllbGQub3B0aW9uVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW291dGVySFRNTF09XCJmaWVsZC5vcHRpb25UZW1wbGF0ZShvcHRpb24sIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KVwiPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC92ZC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWZmaXhCdXR0b24gb2YgZmllbGQuc3VmZml4QnV0dG9uc1wiIG1hdFN1ZmZpeD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhc3VmZml4QnV0dG9uLmhpZGUgfHwgIXN1ZmZpeEJ1dHRvbi5oaWRlKGZvcm1WYWx1ZSwgY29udGV4dClcIiAoY2xpY2spPVwic3VmZml4QnV0dG9uLmV2ZW50ICYmIHN1ZmZpeEJ1dHRvbi5ldmVudChmb3JtVmFsdWUsIGNvbnRleHQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBmb250U2V0PVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPnt7c3VmZml4QnV0dG9uLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgJGFueShmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZSFdKVsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gVmRMaXN0IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuVmRMaXN0XCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgZmxvYXRMYWJlbD1cImFsd2F5c1wiIGNsYXNzPVwiZm9ybS1maWVsZC10eXBlLWxpc3RcIiBsYXlvdXQtbWFyZ2luPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZC1saXN0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZSFcIiBbZW5kcG9pbnRdPVwiZmllbGQuZW5kcG9pbnQ/PycnIHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBbcGFyYW1zXT1cImZpZWxkLnBhcmFtcyA/P3t9IHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBbcHJvamVjdGlvbl09XCJmaWVsZC5wcm9qZWN0aW9uXCIgW21hcHBlcl09XCJmaWVsZC5tYXBwZXJcIiBbY29tcGFyZVdpdGhdPVwiZmllbGQuY29tcGFyZVdpdGhcIiBbbG9hZERhdGFdPVwiZmllbGQuZmV0Y2hDb25kaXRpb24gfCBmdW5jOmZvcm1WYWx1ZTpmb3JtR3JvdXA6Y29udGV4dFwiIFtrZXldPVwiZmllbGQub3B0aW9uVmFsdWVcIiBbdGV4dF09XCJmaWVsZC5vcHRpb25UZXh0XCIgW211bHRpcGxlXT1cImZpZWxkLm11bHRpcGxlXCIgW3JlYWRvbmx5XT1cIihyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKSk/P2ZhbHNlXCIgKGl0ZW1TZWxlY3RlZCk9XCJmaWVsZC5pdGVtU2VsZWN0ICYmIGZpZWxkLml0ZW1TZWxlY3QoJGV2ZW50LCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCk7XCIgKGl0ZW1DaGFuZ2UpPVwiZmllbGQuaXRlbUNoYW5nZSAmJiBmaWVsZC5pdGVtQ2hhbmdlKCRldmVudCwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpO1wiIFtzdHlsZS5tYXgtd2lkdGhdPVwiZmllbGQubWF4V2lkdGhcIiBbc3R5bGUubWF4LWhlaWdodF09XCJmaWVsZC5tYXhIZWlnaHRcIiBmbGV4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSB2ZC1saXN0LW9wdGlvbiBsZXQtb3B0aW9uPVwib3B0aW9uXCIgKm5nSWY9XCJmaWVsZC5vcHRpb25UZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBbb3V0ZXJIVE1MXT1cImZpZWxkLm9wdGlvblRlbXBsYXRlKG9wdGlvbiwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpXCI+PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3ZkLWxpc3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mICRhbnkoZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWUhXSlbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIENoaXBzIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuQ2hpcHNcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBbY2xhc3NdPVwiZmllbGQuY3NzQ2xhc3NcIiBsYXlvdXQtbWFyZ2luPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hpcC1ncmlkICNjaGlwTGlzdCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWUhXCIgW2Rpc2FibGVDb250cm9sXT1cIihyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKSk/P2ZhbHNlXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1jaGlwLXJvdyAqbmdGb3I9XCJsZXQgY2hpcCBvZiAkYW55KGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lIV0pPy52YWx1ZVwiIChyZW1vdmVkKT1cInJlbW92ZUNoaXAoZmllbGQsIGNoaXApXCIgY29sb3I9XCJwcmltYXJ5XCIgc2VsZWN0YWJsZT1cInRydWVcIiBzZWxlY3RlZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+e3tjaGlwfX08L3NwYW4+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gbWF0Q2hpcFJlbW92ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBmb250U2V0PVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPmNhbmNlbDwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWNoaXAtcm93PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbcGxhY2Vob2xkZXJdPVwiJGFueShmaWVsZC5sYWJlbClcIiAjY2hpcElucHV0IFttYXRDaGlwSW5wdXRGb3JdPVwiY2hpcExpc3RcIiBbbWF0Q2hpcElucHV0U2VwYXJhdG9yS2V5Q29kZXNdPVwic2VwYXJhdG9yS2V5c0NvZGVzXCIgW21hdEF1dG9jb21wbGV0ZV09XCJjaGlwQXV0b2NvbXBsZXRlXCIgKGlucHV0KT1cImZpbHRlckF1dG9jb21wbGV0ZShmaWVsZCwgY2hpcElucHV0KVwiIChtYXRDaGlwSW5wdXRUb2tlbkVuZCk9XCJhZGRDaGlwKGZpZWxkLCAkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1jaGlwLWdyaWQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWF1dG9jb21wbGV0ZSBhdXRvQWN0aXZlRmlyc3RPcHRpb24gI2NoaXBBdXRvY29tcGxldGU9XCJtYXRBdXRvY29tcGxldGVcIiBbY2xhc3NdPVwiZmllbGQuYXV0b2NvbXBsZXRlQ3NzQ2xhc3NcIiAob3B0aW9uU2VsZWN0ZWQpPVwiYXV0b2NvbXBsZXRlVmFsdWVTZWxlY3RlZChmaWVsZCwgJGV2ZW50LCBjaGlwSW5wdXQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1vcHRpb24gKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBhdXRvY29tcGxldGVGaWx0ZXJlZE9wdGlvbnNbZmllbGQubmFtZSFdXCIgW3ZhbHVlXT1cIm9wdGlvbi5pZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e29wdGlvbi5uYW1lfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1hdXRvY29tcGxldGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWZmaXhCdXR0b24gb2YgZmllbGQuc3VmZml4QnV0dG9uc1wiIG1hdFN1ZmZpeD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhc3VmZml4QnV0dG9uLmhpZGUgfHwgIXN1ZmZpeEJ1dHRvbi5oaWRlKGZvcm1WYWx1ZSwgY29udGV4dClcIiAoY2xpY2spPVwic3VmZml4QnV0dG9uLmV2ZW50ICYmIHN1ZmZpeEJ1dHRvbi5ldmVudChmb3JtVmFsdWUsIGNvbnRleHQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBmb250U2V0PVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPnt7c3VmZml4QnV0dG9uLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgJGFueShmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZSFdKVsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gVmRDaGlwcyAtLT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1mb3JtLWZpZWxkICpuZ1N3aXRjaENhc2U9XCJGb3JtRmllbGRUeXBlLlZkQ2hpcHNcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBbY2xhc3NdPVwiZmllbGQuY3NzQ2xhc3NcIiBsYXlvdXQtbWFyZ2luPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2ZC1jaGlwcyAjdmRDaGlwIFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZSFcIiBbZW5kcG9pbnRdPVwiZmllbGQuZW5kcG9pbnQ/PycnIHwgZnVuYzpmb3JtVmFsdWU6Zm9ybUdyb3VwOmNvbnRleHRcIiBbcGFyYW1zXT1cImZpZWxkLnBhcmFtcyB8fCB7fSB8IGZ1bmM6Zm9ybVZhbHVlOmZvcm1Hcm91cDpjb250ZXh0XCIgW3NlYXJjaEZpZWxkXT1cImZpZWxkLnNlYXJjaEZpZWxkXCIgW2NsYXNzVHlwZV09XCJmaWVsZC5jbGFzc1R5cGVcIiBbcHJvamVjdGlvbl09XCJmaWVsZC5wcm9qZWN0aW9uXCIgW2tleV09XCJmaWVsZC5vcHRpb25WYWx1ZVwiIFtyZWFkb25seV09XCIocmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSkpPz9mYWxzZVwiIFtyZW1vdmFibGVdPVwiIWZpZWxkLmNsZWFyXCIgW2NvbnRleHRdPVwiY29udGV4dFwiIFtzdWZmaXhCdXR0b25zXT1cImZpZWxkLnN1ZmZpeEJ1dHRvbnNcIiBbYXV0b2NvbXBsZXRlQ3NzQ2xhc3NdPVwiZmllbGQuYXV0b2NvbXBsZXRlQ3NzQ2xhc3NcIiAoaW5pdFNlbGVjdCk9XCJmaWVsZC5pdGVtU2VsZWN0ICYmIGZpZWxkLml0ZW1TZWxlY3QoJGV2ZW50LCBmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCk7XCIgKHNlbGVjdGVkKT1cImZpZWxkLml0ZW1DaGFuZ2UgJiYgZmllbGQuaXRlbUNoYW5nZSgkZXZlbnQsIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KTtcIiAoY2xlYXJlZCk9XCJmaWVsZC5jbGVhciAmJiBmaWVsZC5jbGVhcihmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCk7XCIgW2N1c3RvbVZhbHVlXT1cImZpZWxkLmN1c3RvbVZhbHVlXCIgbGF5b3V0PVwicm93XCIgZmxleD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgdmQtY2hpcCBsZXQtY2hpcD1cImNoaXBcIiAqbmdJZj1cImZpZWxkLmNoaXBUZW1wbGF0ZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IFtvdXRlckhUTUxdPVwiZmllbGQuY2hpcFRlbXBsYXRlKGNoaXAsIGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlIHZkLWF1dG9jb21wbGV0ZS1vcHRpb24gbGV0LW9wdGlvbj1cIm9wdGlvblwiICpuZ0lmPVwiZmllbGQuYXV0b2NvbXBsZXRlVGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBbb3V0ZXJIVE1MXT1cImZpZWxkLmF1dG9jb21wbGV0ZVRlbXBsYXRlKG9wdGlvbiwgZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpXCI+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdmQtY2hpcHM+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1oaW50ICpuZ0lmPVwidmRDaGlwLmVtcHR5UmVzdWx0XCIgY2xhc3M9XCJ0Yy1yZWQtNDAwXCIgaTE4bj1cIkBAbm9SZXN1bHRzRm91bmRcIj5ObyByZXN1bHRzIHdlcmUgZm91bmQuPC9tYXQtaGludD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZXJyb3IgKm5nRm9yPVwibGV0IGVycm9yTWVzc2FnZSBvZiAkYW55KGZvcm1Hcm91cC5jb250cm9sc1tmaWVsZC5uYW1lIV0pWydlcnJvck1lc3NhZ2VzJ11cIj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBTZWxlY3QgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5TZWxlY3RcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBbY2xhc3NdPVwiZmllbGQuY3NzQ2xhc3NcIiBsYXlvdXQtbWFyZ2luPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtc2VsZWN0IFtmb3JtQ29udHJvbE5hbWVdPVwiZmllbGQubmFtZSFcIiBbbXVsdGlwbGVdPVwiZmllbGQubXVsdGlwbGVcIiBbZGlzYWJsZUNvbnRyb2xdPVwiKHJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpKT8/ZmFsc2VcIiBmbGV4PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgJGFueShmaWVsZC5vcHRpb25zKVwiIFt2YWx1ZV09XCJvcHRpb24uaWRcIj57e29wdGlvbi5uYW1lfX08L21hdC1vcHRpb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1zZWxlY3Q+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWZmaXhCdXR0b24gb2YgZmllbGQuc3VmZml4QnV0dG9uc1wiIG1hdFN1ZmZpeD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gKm5nSWY9XCIhc3VmZml4QnV0dG9uLmhpZGUgfHwgIXN1ZmZpeEJ1dHRvbi5oaWRlKGZvcm1WYWx1ZSwgY29udGV4dClcIiAoY2xpY2spPVwic3VmZml4QnV0dG9uLmV2ZW50ICYmIHN1ZmZpeEJ1dHRvbi5ldmVudChmb3JtVmFsdWUsIGNvbnRleHQpXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbiBmb250U2V0PVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPnt7c3VmZml4QnV0dG9uLmljb259fTwvbWF0LWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtaGludCAqbmdJZj1cImZpZWxkLmhpbnRcIj57e2ZpZWxkLmhpbnR9fTwvbWF0LWhpbnQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgJGFueShmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZSFdKVsnZXJyb3JNZXNzYWdlcyddXCI+e3tlcnJvck1lc3NhZ2V9fTwvbWF0LWVycm9yPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gQXV0b2NvbXBsZXRlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuQXV0b2NvbXBsZXRlXCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWUhXCIgW21pbl09XCJmaWVsZC5taW5cIiBbbWF4XT1cImZpZWxkLm1heFwiIFttYXRBdXRvY29tcGxldGVdPVwiYXV0b1wiICNhdXRvY29tcGxldGVJbnB1dCAoaW5wdXQpPVwiZmlsdGVyQXV0b2NvbXBsZXRlKGZpZWxkLCBhdXRvY29tcGxldGVJbnB1dClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBbcmVhZG9ubHldPVwiKHJlYWRvbmx5IHx8IChmaWVsZC5yZWFkb25seSAmJiBmaWVsZC5yZWFkb25seShmb3JtVmFsdWUsIGZvcm1Hcm91cCwgY29udGV4dCkpKT8/ZmFsc2VcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtYXV0b2NvbXBsZXRlIGF1dG9BY3RpdmVGaXJzdE9wdGlvbiAjYXV0bz1cIm1hdEF1dG9jb21wbGV0ZVwiIFtjbGFzc109XCJmaWVsZC5hdXRvY29tcGxldGVDc3NDbGFzc1wiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtb3B0aW9uICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgYXV0b2NvbXBsZXRlRmlsdGVyZWRPcHRpb25zW2ZpZWxkLm5hbWUhXVwiIFt2YWx1ZV09XCJvcHRpb24uaWRcIj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tvcHRpb24ubmFtZX19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtb3B0aW9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtYXV0b2NvbXBsZXRlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgc3VmZml4QnV0dG9uIG9mIGZpZWxkLnN1ZmZpeEJ1dHRvbnNcIiBtYXRTdWZmaXg+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiIXN1ZmZpeEJ1dHRvbi5oaWRlIHx8ICFzdWZmaXhCdXR0b24uaGlkZShmb3JtVmFsdWUsIGNvbnRleHQpXCIgKGNsaWNrKT1cInN1ZmZpeEJ1dHRvbi5ldmVudCAmJiBzdWZmaXhCdXR0b24uZXZlbnQoZm9ybVZhbHVlLCBjb250ZXh0KVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWljb24gZm9udFNldD1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj57e3N1ZmZpeEJ1dHRvbi5pY29ufX08L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mICRhbnkoZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWUhXSlbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIERhdGUgLS0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCAqbmdTd2l0Y2hDYXNlPVwiRm9ybUZpZWxkVHlwZS5EYXRlXCIgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgbWF0SW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lIVwiIFttaW5dPVwiZmllbGQubWluXCIgW21heF09XCJmaWVsZC5tYXhcIiBhdXRvY29tcGxldGU9XCJvZmZcIiBbbWF0RGF0ZXBpY2tlcl09XCJkYXRlUGlja2VyXCIgW21hdERhdGVwaWNrZXJGaWx0ZXJdPVwiZmllbGQuZGF0ZUZpbHRlclwiIFtyZWFkb25seV09XCJyZWFkb25seSB8fCBmaWVsZC5mb3JjZVNlbGVjdCB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1kYXRlcGlja2VyLXRvZ2dsZSBtYXRTdWZmaXggW2Zvcl09XCJkYXRlUGlja2VyXCI+PC9tYXQtZGF0ZXBpY2tlci10b2dnbGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWRhdGVwaWNrZXIgI2RhdGVQaWNrZXIgW2Rpc2FibGVkXT1cIihyZWFkb25seSB8fCAoZmllbGQucmVhZG9ubHkgJiYgZmllbGQucmVhZG9ubHkoZm9ybVZhbHVlLCBmb3JtR3JvdXAsIGNvbnRleHQpKSk/P2ZhbHNlXCIgKG1vbnRoU2VsZWN0ZWQpPVwiaGFuZGxlRGF0ZVBpY2tlckZpbHRlckFzeW5jKGRhdGVQaWNrZXIsIGZpZWxkLCAkZXZlbnQgKVwiIChvcGVuZWQpPVwiaGFuZGxlRGF0ZVBpY2tlck9wZW5lZChkYXRlUGlja2VyLCBmaWVsZClcIiBbY2FsZW5kYXJIZWFkZXJDb21wb25lbnRdPVwiZGF0ZVBpY2tlckhlYWRlckNvbXBvbmVudFwiPjwvbWF0LWRhdGVwaWNrZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWhpbnQgKm5nSWY9XCJmaWVsZC5oaW50XCI+e3tmaWVsZC5oaW50fX08L21hdC1oaW50PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1lcnJvciAqbmdGb3I9XCJsZXQgZXJyb3JNZXNzYWdlIG9mICRhbnkoZm9ybUdyb3VwLmNvbnRyb2xzW2ZpZWxkLm5hbWUhXSlbJ2Vycm9yTWVzc2FnZXMnXVwiPnt7ZXJyb3JNZXNzYWdlfX08L21hdC1lcnJvcj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIENhbGVuZGFyIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuQ2FsZW5kYXJcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBbY2xhc3NdPVwiZmllbGQuY3NzQ2xhc3NcIiBmbG9hdExhYmVsPVwiYWx3YXlzXCIgY2xhc3M9XCJmb3JtLWZpZWxkLXR5cGUtY2FsZW5kYXJcIiBsYXlvdXQtbWFyZ2luPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1hdC1sYWJlbD57e2ZpZWxkLmxhYmVsfX08L21hdC1sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBpbnB1dD1cImhpZGRlblwiIGhpZGRlbiBtYXRJbnB1dCBbZm9ybUNvbnRyb2xOYW1lXT1cImZpZWxkLm5hbWUhXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWNhbGVuZGFyICNjYWxlbmRhciBbc2VsZWN0ZWRdPVwiZm9ybUdyb3VwLmdldChmaWVsZC5uYW1lISk/LnZhbHVlXCIgKHNlbGVjdGVkQ2hhbmdlKT1cImZvcm1Hcm91cC5nZXQoZmllbGQubmFtZSEpPy5zZXRWYWx1ZSgkZXZlbnQpO1wiIChtb250aFNlbGVjdGVkKT1cImhhbmRsZUNhbGVuZGFyRmlsdGVyQXN5bmMoY2FsZW5kYXIsIGZpZWxkLCAkZXZlbnQgKVwiIFtoZWFkZXJDb21wb25lbnRdPVwiZGF0ZVBpY2tlckhlYWRlckNvbXBvbmVudFwiIHN0eWxlPVwid2lkdGg6IDEwMCU7XCI+PC9tYXQtY2FsZW5kYXI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgJGFueShmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZSFdKVsnZXJyb3JNZXNzYWdlcyddXCIgbGF5b3V0LW1hcmdpbj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuXHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjcmVnaW9uIENoZWNrYm94IC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuQ2hlY2tib3hcIiBbYXR0ci5mbGV4XT1cImZpZWxkLmZsZXh8fDBcIiBjbGFzcz1cIm1hdC1jaGVja2JveC13cmFwXCIgW2NsYXNzXT1cImZpZWxkLmNzc0NsYXNzXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lIVwiIFtkaXNhYmxlQ29udHJvbF09XCIocmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSkpPz9mYWxzZVwiPnt7ZmllbGQubGFiZWx9fTwvbWF0LWNoZWNrYm94PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWVycm9yICpuZ0Zvcj1cImxldCBlcnJvck1lc3NhZ2Ugb2YgJGFueShmb3JtR3JvdXAuY29udHJvbHNbZmllbGQubmFtZSFdKVsnZXJyb3JNZXNzYWdlcyddXCIgbGF5b3V0LW1hcmdpbj57e2Vycm9yTWVzc2FnZX19PC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gRWRpdG9yIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuRWRpdG9yXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImVkaXRvclRlbXBsYXRlPy50ZW1wbGF0ZVJlZiFcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJlZGl0b3JUZW1wbGF0ZT8udGVtcGxhdGVSZWYhXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBmb3JtR3JvdXA6IGZvcm1Hcm91cCB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBDb2RlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuQ29kZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgKm5nSWY9XCJjb2RlVGVtcGxhdGU/LnRlbXBsYXRlUmVmIVwiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImNvZGVUZW1wbGF0ZT8udGVtcGxhdGVSZWYhXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBmb3JtR3JvdXA6IGZvcm1Hcm91cCB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIDwhLS0gI3JlZ2lvbiBGaWxlIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuRmlsZVwiPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgW2F0dHIuZmxleF09XCJmaWVsZC5mbGV4fHwwXCIgbGF5b3V0LW1hcmdpbj5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtYXQtbGFiZWw+e3tmaWVsZC5sYWJlbH19PC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHZkLWZpbGUtaW5wdXQgW2Zvcm1Db250cm9sTmFtZV09XCJmaWVsZC5uYW1lIVwiIChzZWxlY3QpPVwiZmllbGQuY2hhbmdlICYmIGZpZWxkLmNoYW5nZShmaWVsZCwgJGV2ZW50LCBmb3JtR3JvdXAsIGNvbnRleHQpXCIgW2FjY2VwdF09XCJmaWVsZC5maWxlRXh0ZW5zaW9uc1wiIFtkaXNhYmxlQ29udHJvbF09XCIocmVhZG9ubHkgfHwgKGZpZWxkLnJlYWRvbmx5ICYmIGZpZWxkLnJlYWRvbmx5KGZvcm1WYWx1ZSwgZm9ybUdyb3VwLCBjb250ZXh0KSkpPz9mYWxzZVwiIGZsZXg+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tICNyZWdpb24gQ3VzdG9tIC0tPlxyXG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIkZvcm1GaWVsZFR5cGUuQ3VzdG9tXCI+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSAqbmdJZj1cImN1c3RvbVRlbXBsYXRlPy50ZW1wbGF0ZVJlZiFcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21UZW1wbGF0ZT8udGVtcGxhdGVSZWYhXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgZmllbGQ6IGZpZWxkLCBmb3JtR3JvdXA6IGZvcm1Hcm91cCB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcblxyXG4gICAgICAgICAgICA8IS0tICNyZWdpb24gVGVtcGxhdGUgZm9yIGN1c3RvbSBmaWVsZHMgLS0+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGN1c3RvbUZpZWxkIG9mIGN1c3RvbUZpZWxkc1RlbXBsYXRlc1wiPlxyXG4gICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiY3VzdG9tRmllbGQ/LnRlbXBsYXRlUmVmICYmIGN1c3RvbUZpZWxkLnJvdyA9PSBmaWVsZHNbMF0/LnJvdyAmJiBjdXN0b21GaWVsZC5pbmxpbmVcIiBbbmdUZW1wbGF0ZU91dGxldF09XCJjdXN0b21GaWVsZD8udGVtcGxhdGVSZWYhXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntmb3JtR3JvdXA6IGZvcm1Hcm91cH1cIj48L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8IS0tICNyZWdpb24gVGVtcGxhdGUgZm9yIGN1c3RvbSBmaWVsZHMgLS0+XHJcbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImN1c3RvbUZpZWxkc1wiIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImN1c3RvbUZpZWxkc1wiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Zm9ybUdyb3VwOiBmb3JtR3JvdXAsIHJvdzogZmllbGRzWzBdLnJvd31cIj48L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBjdXN0b21GaWVsZCBvZiBjdXN0b21GaWVsZHNUZW1wbGF0ZXNcIj5cclxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICpuZ0lmPVwiY3VzdG9tRmllbGQ/LnRlbXBsYXRlUmVmICYmIGN1c3RvbUZpZWxkLnJvdyA9PSAoKGZpZWxkc1swXT8ucm93Pz8wKSsxKSAmJiAhY3VzdG9tRmllbGQuaW5saW5lXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiY3VzdG9tRmllbGQ/LnRlbXBsYXRlUmVmIVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7Zm9ybUdyb3VwOiBmb3JtR3JvdXB9XCI+PC9uZy10ZW1wbGF0ZT5cclxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICA8IS0tICNlbmRyZWdpb24gLS0+XHJcbiAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICA8IS0tICNyZWdpb24gRm9ybSBib3R0b20gLS0+XHJcbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYm90dG9tXCIgW25nVGVtcGxhdGVPdXRsZXRdPVwiYm90dG9tXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cIntmb3JtR3JvdXA6IGZvcm1Hcm91cH1cIj48L25nLWNvbnRhaW5lcj5cclxuICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuXHJcbiAgICA8IS0tICNyZWdpb24gVGVtcGxhdGUgZm9yIHN1ZmZpeCBidXR0b25zIC0tPlxyXG4gICAgPG5nLXRlbXBsYXRlICNzdWZmaXhCdXR0b25zIGxldC1maWVsZD5cclxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBzdWZmaXhCdXR0b24gb2YgZmllbGQuc3VmZml4QnV0dG9uc1wiIG1hdFN1ZmZpeD5cclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uICpuZ0lmPVwiIXN1ZmZpeEJ1dHRvbi5oaWRlIHx8ICFzdWZmaXhCdXR0b24uaGlkZShmb3JtVmFsdWUsIGNvbnRleHQpXCIgKGNsaWNrKT1cInN1ZmZpeEJ1dHRvbi5ldmVudCAmJiBzdWZmaXhCdXR0b24uZXZlbnQoZm9ybVZhbHVlLCBjb250ZXh0KVwiPlxyXG4gICAgICAgICAgICAgICAgPG1hdC1pY29uIGZvbnRTZXQ9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkXCI+e3tzdWZmaXhCdXR0b24uaWNvbn19PC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPCEtLSAjZW5kcmVnaW9uIC0tPlxyXG5cclxuICAgIDwhLS0gI3JlZ2lvbiBEZWJ1ZyB2YWx1ZSAtLT5cclxuICAgIDxjb2RlICpuZ0lmPVwiZGVidWdWYWx1ZVwiPlxyXG4gICAgICAgIDxwcmU+e3tmb3JtVmFsdWUgfCBqc29ufX08L3ByZT5cclxuICAgIDwvY29kZT5cclxuICAgIDwhLS0gI2VuZHJlZ2lvbiAtLT5cclxuPC9kaXY+Il19
|
package/fesm2022/messaia-cdk.mjs
CHANGED
|
@@ -23053,8 +23053,8 @@ class VdGenericFormComponent {
|
|
|
23053
23053
|
}
|
|
23054
23054
|
/* Get filed rows */
|
|
23055
23055
|
let fieldRows = this.fieldGroups?.filter(x => x.name?.trim() == this.groupName?.trim() &&
|
|
23056
|
-
!x.hidden &&
|
|
23057
|
-
|
|
23056
|
+
!x.hidden /* &&
|
|
23057
|
+
(!x.hide || !x.hide(this.formValue, this.formGroup, this.context))*/)[0]?.groups;
|
|
23058
23058
|
if (fieldRows) {
|
|
23059
23059
|
this.fieldRows = fieldRows.map(a => { return [...a.map(y => { return { ...y }; })]; });
|
|
23060
23060
|
}
|