@heartlandone/vega-angular 2.96.0 → 2.97.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm2020/lib/stencil-generated/components.mjs +71 -71
- package/dist/fesm2015/globalpayments-vega-angular.mjs +70 -70
- package/dist/fesm2015/globalpayments-vega-angular.mjs.map +1 -1
- package/dist/fesm2020/globalpayments-vega-angular.mjs +70 -70
- package/dist/fesm2020/globalpayments-vega-angular.mjs.map +1 -1
- package/dist/lib/stencil-generated/components.d.ts +23 -23
- package/dist/package.json +2 -2
- package/package.json +2 -2
- package/src/lib/stencil-generated/components.ts +47 -47
|
@@ -553,11 +553,11 @@ let VegaCheckbox = class VegaCheckbox {
|
|
|
553
553
|
}
|
|
554
554
|
};
|
|
555
555
|
VegaCheckbox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaCheckbox, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
556
|
-
VegaCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaCheckbox, selector: "vega-checkbox", inputs: { checked: "checked", disabled: "disabled", identifier: "identifier", indeterminate: "indeterminate", isValid: "isValid", required: "required", size: "size", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
556
|
+
VegaCheckbox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaCheckbox, selector: "vega-checkbox", inputs: { checked: "checked", disabled: "disabled", identifier: "identifier", indeterminate: "indeterminate", isValid: "isValid", name: "name", required: "required", size: "size", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
557
557
|
VegaCheckbox = __decorate([
|
|
558
558
|
ProxyCmp({
|
|
559
559
|
defineCustomElementFn: undefined,
|
|
560
|
-
inputs: ['checked', 'disabled', 'identifier', 'indeterminate', 'isValid', 'required', 'size', 'value'],
|
|
560
|
+
inputs: ['checked', 'disabled', 'identifier', 'indeterminate', 'isValid', 'name', 'required', 'size', 'value'],
|
|
561
561
|
methods: ['setValue']
|
|
562
562
|
})
|
|
563
563
|
], VegaCheckbox);
|
|
@@ -568,7 +568,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
568
568
|
selector: 'vega-checkbox',
|
|
569
569
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
570
570
|
template: '<ng-content></ng-content>',
|
|
571
|
-
inputs: ['checked', 'disabled', 'identifier', 'indeterminate', 'isValid', 'required', 'size', 'value']
|
|
571
|
+
inputs: ['checked', 'disabled', 'identifier', 'indeterminate', 'isValid', 'name', 'required', 'size', 'value']
|
|
572
572
|
}]
|
|
573
573
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
574
574
|
let VegaCheckboxGroup = class VegaCheckboxGroup {
|
|
@@ -580,11 +580,11 @@ let VegaCheckboxGroup = class VegaCheckboxGroup {
|
|
|
580
580
|
}
|
|
581
581
|
};
|
|
582
582
|
VegaCheckboxGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaCheckboxGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
583
|
-
VegaCheckboxGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaCheckboxGroup, selector: "vega-checkbox-group", inputs: { autoValidation: "autoValidation", disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", optional: "optional", required: "required", validationRules: "validationRules", value: "value", vegaFlexProp: "vegaFlexProp" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
583
|
+
VegaCheckboxGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaCheckboxGroup, selector: "vega-checkbox-group", inputs: { autoValidation: "autoValidation", disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", name: "name", optional: "optional", required: "required", validationRules: "validationRules", value: "value", vegaFlexProp: "vegaFlexProp" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
584
584
|
VegaCheckboxGroup = __decorate([
|
|
585
585
|
ProxyCmp({
|
|
586
586
|
defineCustomElementFn: undefined,
|
|
587
|
-
inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'optional', 'required', 'validationRules', 'value', 'vegaFlexProp']
|
|
587
|
+
inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'name', 'optional', 'required', 'validationRules', 'value', 'vegaFlexProp']
|
|
588
588
|
})
|
|
589
589
|
], VegaCheckboxGroup);
|
|
590
590
|
export { VegaCheckboxGroup };
|
|
@@ -594,7 +594,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
594
594
|
selector: 'vega-checkbox-group',
|
|
595
595
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
596
596
|
template: '<ng-content></ng-content>',
|
|
597
|
-
inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'optional', 'required', 'validationRules', 'value', 'vegaFlexProp']
|
|
597
|
+
inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'name', 'optional', 'required', 'validationRules', 'value', 'vegaFlexProp']
|
|
598
598
|
}]
|
|
599
599
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
600
600
|
let VegaChip = class VegaChip {
|
|
@@ -659,11 +659,11 @@ let VegaColorPicker = class VegaColorPicker {
|
|
|
659
659
|
}
|
|
660
660
|
};
|
|
661
661
|
VegaColorPicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaColorPicker, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
662
|
-
VegaColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaColorPicker, selector: "vega-color-picker", inputs: { autoValidation: "autoValidation", colors: "colors", columns: "columns", disabled: "disabled", hint: "hint", isInline: "isInline", isValid: "isValid", label: "label", optional: "optional", required: "required", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
662
|
+
VegaColorPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaColorPicker, selector: "vega-color-picker", inputs: { autoValidation: "autoValidation", colors: "colors", columns: "columns", disabled: "disabled", hint: "hint", isInline: "isInline", isValid: "isValid", label: "label", name: "name", optional: "optional", required: "required", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
663
663
|
VegaColorPicker = __decorate([
|
|
664
664
|
ProxyCmp({
|
|
665
665
|
defineCustomElementFn: undefined,
|
|
666
|
-
inputs: ['autoValidation', 'colors', 'columns', 'disabled', 'hint', 'isInline', 'isValid', 'label', 'optional', 'required', 'validationRules', 'value']
|
|
666
|
+
inputs: ['autoValidation', 'colors', 'columns', 'disabled', 'hint', 'isInline', 'isValid', 'label', 'name', 'optional', 'required', 'validationRules', 'value']
|
|
667
667
|
})
|
|
668
668
|
], VegaColorPicker);
|
|
669
669
|
export { VegaColorPicker };
|
|
@@ -673,7 +673,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
673
673
|
selector: 'vega-color-picker',
|
|
674
674
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
675
675
|
template: '<ng-content></ng-content>',
|
|
676
|
-
inputs: ['autoValidation', 'colors', 'columns', 'disabled', 'hint', 'isInline', 'isValid', 'label', 'optional', 'required', 'validationRules', 'value']
|
|
676
|
+
inputs: ['autoValidation', 'colors', 'columns', 'disabled', 'hint', 'isInline', 'isValid', 'label', 'name', 'optional', 'required', 'validationRules', 'value']
|
|
677
677
|
}]
|
|
678
678
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
679
679
|
let VegaColorSwatch = class VegaColorSwatch {
|
|
@@ -711,11 +711,11 @@ let VegaColorSwatchPicker = class VegaColorSwatchPicker {
|
|
|
711
711
|
}
|
|
712
712
|
};
|
|
713
713
|
VegaColorSwatchPicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaColorSwatchPicker, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
714
|
-
VegaColorSwatchPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaColorSwatchPicker, selector: "vega-color-swatch-picker", inputs: { autoValidation: "autoValidation", colors: "colors", disabled: "disabled", inputFormatter: "inputFormatter", inputPlaceholder: "inputPlaceholder", inputPrefixIcon: "inputPrefixIcon", isValid: "isValid", label: "label", required: "required", showClearButton: "showClearButton", showInput: "showInput", swatchGridColumns: "swatchGridColumns", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
714
|
+
VegaColorSwatchPicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaColorSwatchPicker, selector: "vega-color-swatch-picker", inputs: { autoValidation: "autoValidation", colors: "colors", disabled: "disabled", inputFormatter: "inputFormatter", inputPlaceholder: "inputPlaceholder", inputPrefixIcon: "inputPrefixIcon", isValid: "isValid", label: "label", name: "name", required: "required", showClearButton: "showClearButton", showInput: "showInput", swatchGridColumns: "swatchGridColumns", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
715
715
|
VegaColorSwatchPicker = __decorate([
|
|
716
716
|
ProxyCmp({
|
|
717
717
|
defineCustomElementFn: undefined,
|
|
718
|
-
inputs: ['autoValidation', 'colors', 'disabled', 'inputFormatter', 'inputPlaceholder', 'inputPrefixIcon', 'isValid', 'label', 'required', 'showClearButton', 'showInput', 'swatchGridColumns', 'validationRules', 'value']
|
|
718
|
+
inputs: ['autoValidation', 'colors', 'disabled', 'inputFormatter', 'inputPlaceholder', 'inputPrefixIcon', 'isValid', 'label', 'name', 'required', 'showClearButton', 'showInput', 'swatchGridColumns', 'validationRules', 'value']
|
|
719
719
|
})
|
|
720
720
|
], VegaColorSwatchPicker);
|
|
721
721
|
export { VegaColorSwatchPicker };
|
|
@@ -725,7 +725,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
725
725
|
selector: 'vega-color-swatch-picker',
|
|
726
726
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
727
727
|
template: '<ng-content></ng-content>',
|
|
728
|
-
inputs: ['autoValidation', 'colors', 'disabled', 'inputFormatter', 'inputPlaceholder', 'inputPrefixIcon', 'isValid', 'label', 'required', 'showClearButton', 'showInput', 'swatchGridColumns', 'validationRules', 'value']
|
|
728
|
+
inputs: ['autoValidation', 'colors', 'disabled', 'inputFormatter', 'inputPlaceholder', 'inputPrefixIcon', 'isValid', 'label', 'name', 'required', 'showClearButton', 'showInput', 'swatchGridColumns', 'validationRules', 'value']
|
|
729
729
|
}]
|
|
730
730
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
731
731
|
let VegaComboBox = class VegaComboBox {
|
|
@@ -737,11 +737,11 @@ let VegaComboBox = class VegaComboBox {
|
|
|
737
737
|
}
|
|
738
738
|
};
|
|
739
739
|
VegaComboBox.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaComboBox, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
740
|
-
VegaComboBox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaComboBox, selector: "vega-combo-box", inputs: { autoValidation: "autoValidation", containerMaxHeight: "containerMaxHeight", disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", optional: "optional", placeholder: "placeholder", required: "required", size: "size", source: "source", useDefaultFilter: "useDefaultFilter", validationRules: "validationRules", value: "value", vegaDropdownProps: "vegaDropdownProps" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
740
|
+
VegaComboBox.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaComboBox, selector: "vega-combo-box", inputs: { autoValidation: "autoValidation", containerMaxHeight: "containerMaxHeight", disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", name: "name", optional: "optional", placeholder: "placeholder", required: "required", size: "size", source: "source", useDefaultFilter: "useDefaultFilter", validationRules: "validationRules", value: "value", vegaDropdownProps: "vegaDropdownProps" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
741
741
|
VegaComboBox = __decorate([
|
|
742
742
|
ProxyCmp({
|
|
743
743
|
defineCustomElementFn: undefined,
|
|
744
|
-
inputs: ['autoValidation', 'containerMaxHeight', 'disabled', 'hint', 'isValid', 'label', 'optional', 'placeholder', 'required', 'size', 'source', 'useDefaultFilter', 'validationRules', 'value', 'vegaDropdownProps'],
|
|
744
|
+
inputs: ['autoValidation', 'containerMaxHeight', 'disabled', 'hint', 'isValid', 'label', 'name', 'optional', 'placeholder', 'required', 'size', 'source', 'useDefaultFilter', 'validationRules', 'value', 'vegaDropdownProps'],
|
|
745
745
|
methods: ['close', 'open']
|
|
746
746
|
})
|
|
747
747
|
], VegaComboBox);
|
|
@@ -752,7 +752,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
752
752
|
selector: 'vega-combo-box',
|
|
753
753
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
754
754
|
template: '<ng-content></ng-content>',
|
|
755
|
-
inputs: ['autoValidation', 'containerMaxHeight', 'disabled', 'hint', 'isValid', 'label', 'optional', 'placeholder', 'required', 'size', 'source', 'useDefaultFilter', 'validationRules', 'value', 'vegaDropdownProps']
|
|
755
|
+
inputs: ['autoValidation', 'containerMaxHeight', 'disabled', 'hint', 'isValid', 'label', 'name', 'optional', 'placeholder', 'required', 'size', 'source', 'useDefaultFilter', 'validationRules', 'value', 'vegaDropdownProps']
|
|
756
756
|
}]
|
|
757
757
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
758
758
|
let VegaCounterBadge = class VegaCounterBadge {
|
|
@@ -789,11 +789,11 @@ let VegaDatePicker = class VegaDatePicker {
|
|
|
789
789
|
}
|
|
790
790
|
};
|
|
791
791
|
VegaDatePicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaDatePicker, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
792
|
-
VegaDatePicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaDatePicker, selector: "vega-date-picker", inputs: { allowRepick: "allowRepick", autoValidation: "autoValidation", clearButton: "clearButton", disabled: "disabled", dropdownConfig: "dropdownConfig", format: "format", isDateDisabled: "isDateDisabled", isValid: "isValid", label: "label", maxDate: "maxDate", minDate: "minDate", mode: "mode", optional: "optional", placeholder: "placeholder", readOnly: "readOnly", required: "required", showClearIcon: "showClearIcon", showYearMonthDropdowns: "showYearMonthDropdowns", size: "size", timezone: "timezone", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
792
|
+
VegaDatePicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaDatePicker, selector: "vega-date-picker", inputs: { allowRepick: "allowRepick", autoValidation: "autoValidation", clearButton: "clearButton", disabled: "disabled", dropdownConfig: "dropdownConfig", format: "format", isDateDisabled: "isDateDisabled", isValid: "isValid", label: "label", maxDate: "maxDate", minDate: "minDate", mode: "mode", name: "name", optional: "optional", placeholder: "placeholder", readOnly: "readOnly", required: "required", showClearIcon: "showClearIcon", showYearMonthDropdowns: "showYearMonthDropdowns", size: "size", timezone: "timezone", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
793
793
|
VegaDatePicker = __decorate([
|
|
794
794
|
ProxyCmp({
|
|
795
795
|
defineCustomElementFn: undefined,
|
|
796
|
-
inputs: ['allowRepick', 'autoValidation', 'clearButton', 'disabled', 'dropdownConfig', 'format', 'isDateDisabled', 'isValid', 'label', 'maxDate', 'minDate', 'mode', 'optional', 'placeholder', 'readOnly', 'required', 'showClearIcon', 'showYearMonthDropdowns', 'size', 'timezone', 'validationRules', 'value'],
|
|
796
|
+
inputs: ['allowRepick', 'autoValidation', 'clearButton', 'disabled', 'dropdownConfig', 'format', 'isDateDisabled', 'isValid', 'label', 'maxDate', 'minDate', 'mode', 'name', 'optional', 'placeholder', 'readOnly', 'required', 'showClearIcon', 'showYearMonthDropdowns', 'size', 'timezone', 'validationRules', 'value'],
|
|
797
797
|
methods: ['doClose', 'doOpen']
|
|
798
798
|
})
|
|
799
799
|
], VegaDatePicker);
|
|
@@ -804,7 +804,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
804
804
|
selector: 'vega-date-picker',
|
|
805
805
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
806
806
|
template: '<ng-content></ng-content>',
|
|
807
|
-
inputs: ['allowRepick', 'autoValidation', 'clearButton', 'disabled', 'dropdownConfig', 'format', 'isDateDisabled', 'isValid', 'label', 'maxDate', 'minDate', 'mode', 'optional', 'placeholder', 'readOnly', 'required', 'showClearIcon', 'showYearMonthDropdowns', 'size', 'timezone', 'validationRules', 'value']
|
|
807
|
+
inputs: ['allowRepick', 'autoValidation', 'clearButton', 'disabled', 'dropdownConfig', 'format', 'isDateDisabled', 'isValid', 'label', 'maxDate', 'minDate', 'mode', 'name', 'optional', 'placeholder', 'readOnly', 'required', 'showClearIcon', 'showYearMonthDropdowns', 'size', 'timezone', 'validationRules', 'value']
|
|
808
808
|
}]
|
|
809
809
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
810
810
|
let VegaDatePickerCalendar = class VegaDatePickerCalendar {
|
|
@@ -1045,11 +1045,11 @@ let VegaFileUploader = class VegaFileUploader {
|
|
|
1045
1045
|
}
|
|
1046
1046
|
};
|
|
1047
1047
|
VegaFileUploader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaFileUploader, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
1048
|
-
VegaFileUploader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaFileUploader, selector: "vega-file-uploader", inputs: { accept: "accept", autoValidation: "autoValidation", disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", maxCount: "maxCount", optional: "optional", required: "required", validationRules: "validationRules", value: "value", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1048
|
+
VegaFileUploader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaFileUploader, selector: "vega-file-uploader", inputs: { accept: "accept", autoValidation: "autoValidation", disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", maxCount: "maxCount", name: "name", optional: "optional", required: "required", validationRules: "validationRules", value: "value", variant: "variant" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1049
1049
|
VegaFileUploader = __decorate([
|
|
1050
1050
|
ProxyCmp({
|
|
1051
1051
|
defineCustomElementFn: undefined,
|
|
1052
|
-
inputs: ['accept', 'autoValidation', 'disabled', 'hint', 'isValid', 'label', 'maxCount', 'optional', 'required', 'validationRules', 'value', 'variant']
|
|
1052
|
+
inputs: ['accept', 'autoValidation', 'disabled', 'hint', 'isValid', 'label', 'maxCount', 'name', 'optional', 'required', 'validationRules', 'value', 'variant']
|
|
1053
1053
|
})
|
|
1054
1054
|
], VegaFileUploader);
|
|
1055
1055
|
export { VegaFileUploader };
|
|
@@ -1059,7 +1059,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
1059
1059
|
selector: 'vega-file-uploader',
|
|
1060
1060
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1061
1061
|
template: '<ng-content></ng-content>',
|
|
1062
|
-
inputs: ['accept', 'autoValidation', 'disabled', 'hint', 'isValid', 'label', 'maxCount', 'optional', 'required', 'validationRules', 'value', 'variant']
|
|
1062
|
+
inputs: ['accept', 'autoValidation', 'disabled', 'hint', 'isValid', 'label', 'maxCount', 'name', 'optional', 'required', 'validationRules', 'value', 'variant']
|
|
1063
1063
|
}]
|
|
1064
1064
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
1065
1065
|
let VegaFlagIcon = class VegaFlagIcon {
|
|
@@ -1146,11 +1146,11 @@ let VegaForm = class VegaForm {
|
|
|
1146
1146
|
}
|
|
1147
1147
|
};
|
|
1148
1148
|
VegaForm.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaForm, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
1149
|
-
VegaForm.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaForm, selector: "vega-form", inputs: { action: "action", disableBlurValidation: "disableBlurValidation", isTouched: "isTouched", isValid: "isValid", method: "method", useNativeForm: "useNativeForm" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1149
|
+
VegaForm.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaForm, selector: "vega-form", inputs: { action: "action", disableBlurValidation: "disableBlurValidation", isTouched: "isTouched", isValid: "isValid", method: "method", name: "name", useNativeForm: "useNativeForm" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1150
1150
|
VegaForm = __decorate([
|
|
1151
1151
|
ProxyCmp({
|
|
1152
1152
|
defineCustomElementFn: undefined,
|
|
1153
|
-
inputs: ['action', 'disableBlurValidation', 'isTouched', 'isValid', 'method', 'useNativeForm'],
|
|
1153
|
+
inputs: ['action', 'disableBlurValidation', 'isTouched', 'isValid', 'method', 'name', 'useNativeForm'],
|
|
1154
1154
|
methods: ['valid', 'getValue', 'setValue', 'reset', 'setValidationStates']
|
|
1155
1155
|
})
|
|
1156
1156
|
], VegaForm);
|
|
@@ -1161,7 +1161,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
1161
1161
|
selector: 'vega-form',
|
|
1162
1162
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1163
1163
|
template: '<ng-content></ng-content>',
|
|
1164
|
-
inputs: ['action', 'disableBlurValidation', 'isTouched', 'isValid', 'method', 'useNativeForm']
|
|
1164
|
+
inputs: ['action', 'disableBlurValidation', 'isTouched', 'isValid', 'method', 'name', 'useNativeForm']
|
|
1165
1165
|
}]
|
|
1166
1166
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
1167
1167
|
let VegaGrid = class VegaGrid {
|
|
@@ -1246,11 +1246,11 @@ let VegaImageUploader = class VegaImageUploader {
|
|
|
1246
1246
|
}
|
|
1247
1247
|
};
|
|
1248
1248
|
VegaImageUploader.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaImageUploader, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
1249
|
-
VegaImageUploader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaImageUploader, selector: "vega-image-uploader", inputs: { accept: "accept", actionSubTitle: "actionSubTitle", actionTitle: "actionTitle", autoValidation: "autoValidation", disabled: "disabled", height: "height", hint: "hint", isValid: "isValid", label: "label", optional: "optional", required: "required", showPreviewButton: "showPreviewButton", showRemoveButton: "showRemoveButton", showReplaceButton: "showReplaceButton", status: "status", validationRules: "validationRules", value: "value", width: "width" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1249
|
+
VegaImageUploader.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaImageUploader, selector: "vega-image-uploader", inputs: { accept: "accept", actionSubTitle: "actionSubTitle", actionTitle: "actionTitle", autoValidation: "autoValidation", disabled: "disabled", height: "height", hint: "hint", isValid: "isValid", label: "label", name: "name", optional: "optional", required: "required", showPreviewButton: "showPreviewButton", showRemoveButton: "showRemoveButton", showReplaceButton: "showReplaceButton", status: "status", validationRules: "validationRules", value: "value", width: "width" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1250
1250
|
VegaImageUploader = __decorate([
|
|
1251
1251
|
ProxyCmp({
|
|
1252
1252
|
defineCustomElementFn: undefined,
|
|
1253
|
-
inputs: ['accept', 'actionSubTitle', 'actionTitle', 'autoValidation', 'disabled', 'height', 'hint', 'isValid', 'label', 'optional', 'required', 'showPreviewButton', 'showRemoveButton', 'showReplaceButton', 'status', 'validationRules', 'value', 'width'],
|
|
1253
|
+
inputs: ['accept', 'actionSubTitle', 'actionTitle', 'autoValidation', 'disabled', 'height', 'hint', 'isValid', 'label', 'name', 'optional', 'required', 'showPreviewButton', 'showRemoveButton', 'showReplaceButton', 'status', 'validationRules', 'value', 'width'],
|
|
1254
1254
|
methods: ['getContentURL']
|
|
1255
1255
|
})
|
|
1256
1256
|
], VegaImageUploader);
|
|
@@ -1261,7 +1261,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
1261
1261
|
selector: 'vega-image-uploader',
|
|
1262
1262
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1263
1263
|
template: '<ng-content></ng-content>',
|
|
1264
|
-
inputs: ['accept', 'actionSubTitle', 'actionTitle', 'autoValidation', 'disabled', 'height', 'hint', 'isValid', 'label', 'optional', 'required', 'showPreviewButton', 'showRemoveButton', 'showReplaceButton', 'status', 'validationRules', 'value', 'width']
|
|
1264
|
+
inputs: ['accept', 'actionSubTitle', 'actionTitle', 'autoValidation', 'disabled', 'height', 'hint', 'isValid', 'label', 'name', 'optional', 'required', 'showPreviewButton', 'showRemoveButton', 'showReplaceButton', 'status', 'validationRules', 'value', 'width']
|
|
1265
1265
|
}]
|
|
1266
1266
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
1267
1267
|
let VegaInput = class VegaInput {
|
|
@@ -1300,11 +1300,11 @@ let VegaInputCreditCard = class VegaInputCreditCard {
|
|
|
1300
1300
|
}
|
|
1301
1301
|
};
|
|
1302
1302
|
VegaInputCreditCard.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaInputCreditCard, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
1303
|
-
VegaInputCreditCard.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputCreditCard, selector: "vega-input-credit-card", inputs: { autoValidation: "autoValidation", disabled: "disabled", hideCardNumberOnBlur: "hideCardNumberOnBlur", hint: "hint", isValid: "isValid", label: "label", optional: "optional", placeholder: "placeholder", required: "required", size: "size", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1303
|
+
VegaInputCreditCard.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputCreditCard, selector: "vega-input-credit-card", inputs: { autoValidation: "autoValidation", disabled: "disabled", hideCardNumberOnBlur: "hideCardNumberOnBlur", hint: "hint", isValid: "isValid", label: "label", name: "name", optional: "optional", placeholder: "placeholder", required: "required", size: "size", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1304
1304
|
VegaInputCreditCard = __decorate([
|
|
1305
1305
|
ProxyCmp({
|
|
1306
1306
|
defineCustomElementFn: undefined,
|
|
1307
|
-
inputs: ['autoValidation', 'disabled', 'hideCardNumberOnBlur', 'hint', 'isValid', 'label', 'optional', 'placeholder', 'required', 'size', 'validationRules', 'value']
|
|
1307
|
+
inputs: ['autoValidation', 'disabled', 'hideCardNumberOnBlur', 'hint', 'isValid', 'label', 'name', 'optional', 'placeholder', 'required', 'size', 'validationRules', 'value']
|
|
1308
1308
|
})
|
|
1309
1309
|
], VegaInputCreditCard);
|
|
1310
1310
|
export { VegaInputCreditCard };
|
|
@@ -1314,7 +1314,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
1314
1314
|
selector: 'vega-input-credit-card',
|
|
1315
1315
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1316
1316
|
template: '<ng-content></ng-content>',
|
|
1317
|
-
inputs: ['autoValidation', 'disabled', 'hideCardNumberOnBlur', 'hint', 'isValid', 'label', 'optional', 'placeholder', 'required', 'size', 'validationRules', 'value']
|
|
1317
|
+
inputs: ['autoValidation', 'disabled', 'hideCardNumberOnBlur', 'hint', 'isValid', 'label', 'name', 'optional', 'placeholder', 'required', 'size', 'validationRules', 'value']
|
|
1318
1318
|
}]
|
|
1319
1319
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
1320
1320
|
let VegaInputNumeric = class VegaInputNumeric {
|
|
@@ -1326,11 +1326,11 @@ let VegaInputNumeric = class VegaInputNumeric {
|
|
|
1326
1326
|
}
|
|
1327
1327
|
};
|
|
1328
1328
|
VegaInputNumeric.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaInputNumeric, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
1329
|
-
VegaInputNumeric.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputNumeric, selector: "vega-input-numeric", inputs: { autoValidation: "autoValidation", disabled: "disabled", hint: "hint", integerOnly: "integerOnly", isValid: "isValid", label: "label", majorIncrement: "majorIncrement", max: "max", min: "min", minorIncrement: "minorIncrement", optional: "optional", placeholder: "placeholder", prefixIcon: "prefixIcon", prefixText: "prefixText", required: "required", showClearIcon: "showClearIcon", size: "size", suffixText: "suffixText", thousandComma: "thousandComma", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1329
|
+
VegaInputNumeric.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputNumeric, selector: "vega-input-numeric", inputs: { autoValidation: "autoValidation", disabled: "disabled", hint: "hint", integerOnly: "integerOnly", isValid: "isValid", label: "label", majorIncrement: "majorIncrement", max: "max", min: "min", minorIncrement: "minorIncrement", name: "name", optional: "optional", placeholder: "placeholder", prefixIcon: "prefixIcon", prefixText: "prefixText", required: "required", showClearIcon: "showClearIcon", size: "size", suffixText: "suffixText", thousandComma: "thousandComma", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1330
1330
|
VegaInputNumeric = __decorate([
|
|
1331
1331
|
ProxyCmp({
|
|
1332
1332
|
defineCustomElementFn: undefined,
|
|
1333
|
-
inputs: ['autoValidation', 'disabled', 'hint', 'integerOnly', 'isValid', 'label', 'majorIncrement', 'max', 'min', 'minorIncrement', 'optional', 'placeholder', 'prefixIcon', 'prefixText', 'required', 'showClearIcon', 'size', 'suffixText', 'thousandComma', 'validationRules', 'value']
|
|
1333
|
+
inputs: ['autoValidation', 'disabled', 'hint', 'integerOnly', 'isValid', 'label', 'majorIncrement', 'max', 'min', 'minorIncrement', 'name', 'optional', 'placeholder', 'prefixIcon', 'prefixText', 'required', 'showClearIcon', 'size', 'suffixText', 'thousandComma', 'validationRules', 'value']
|
|
1334
1334
|
})
|
|
1335
1335
|
], VegaInputNumeric);
|
|
1336
1336
|
export { VegaInputNumeric };
|
|
@@ -1340,7 +1340,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
1340
1340
|
selector: 'vega-input-numeric',
|
|
1341
1341
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1342
1342
|
template: '<ng-content></ng-content>',
|
|
1343
|
-
inputs: ['autoValidation', 'disabled', 'hint', 'integerOnly', 'isValid', 'label', 'majorIncrement', 'max', 'min', 'minorIncrement', 'optional', 'placeholder', 'prefixIcon', 'prefixText', 'required', 'showClearIcon', 'size', 'suffixText', 'thousandComma', 'validationRules', 'value']
|
|
1343
|
+
inputs: ['autoValidation', 'disabled', 'hint', 'integerOnly', 'isValid', 'label', 'majorIncrement', 'max', 'min', 'minorIncrement', 'name', 'optional', 'placeholder', 'prefixIcon', 'prefixText', 'required', 'showClearIcon', 'size', 'suffixText', 'thousandComma', 'validationRules', 'value']
|
|
1344
1344
|
}]
|
|
1345
1345
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
1346
1346
|
let VegaInputPasscode = class VegaInputPasscode {
|
|
@@ -1352,11 +1352,11 @@ let VegaInputPasscode = class VegaInputPasscode {
|
|
|
1352
1352
|
}
|
|
1353
1353
|
};
|
|
1354
1354
|
VegaInputPasscode.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaInputPasscode, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
1355
|
-
VegaInputPasscode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputPasscode, selector: "vega-input-passcode", inputs: { autoValidation: "autoValidation", disabled: "disabled", hint: "hint", inputType: "inputType", isValid: "isValid", label: "label", length: "length", optional: "optional", required: "required", size: "size", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1355
|
+
VegaInputPasscode.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputPasscode, selector: "vega-input-passcode", inputs: { autoValidation: "autoValidation", disabled: "disabled", hint: "hint", inputType: "inputType", isValid: "isValid", label: "label", length: "length", name: "name", optional: "optional", required: "required", size: "size", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1356
1356
|
VegaInputPasscode = __decorate([
|
|
1357
1357
|
ProxyCmp({
|
|
1358
1358
|
defineCustomElementFn: undefined,
|
|
1359
|
-
inputs: ['autoValidation', 'disabled', 'hint', 'inputType', 'isValid', 'label', 'length', 'optional', 'required', 'size', 'validationRules', 'value']
|
|
1359
|
+
inputs: ['autoValidation', 'disabled', 'hint', 'inputType', 'isValid', 'label', 'length', 'name', 'optional', 'required', 'size', 'validationRules', 'value']
|
|
1360
1360
|
})
|
|
1361
1361
|
], VegaInputPasscode);
|
|
1362
1362
|
export { VegaInputPasscode };
|
|
@@ -1366,7 +1366,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
1366
1366
|
selector: 'vega-input-passcode',
|
|
1367
1367
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1368
1368
|
template: '<ng-content></ng-content>',
|
|
1369
|
-
inputs: ['autoValidation', 'disabled', 'hint', 'inputType', 'isValid', 'label', 'length', 'optional', 'required', 'size', 'validationRules', 'value']
|
|
1369
|
+
inputs: ['autoValidation', 'disabled', 'hint', 'inputType', 'isValid', 'label', 'length', 'name', 'optional', 'required', 'size', 'validationRules', 'value']
|
|
1370
1370
|
}]
|
|
1371
1371
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
1372
1372
|
let VegaInputPhoneNumber = class VegaInputPhoneNumber {
|
|
@@ -1378,11 +1378,11 @@ let VegaInputPhoneNumber = class VegaInputPhoneNumber {
|
|
|
1378
1378
|
}
|
|
1379
1379
|
};
|
|
1380
1380
|
VegaInputPhoneNumber.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaInputPhoneNumber, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
1381
|
-
VegaInputPhoneNumber.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputPhoneNumber, selector: "vega-input-phone-number", inputs: { allowedCountryCodes: "allowedCountryCodes", autoValidation: "autoValidation", countryCode: "countryCode", disabled: "disabled", emptyValueEnabled: "emptyValueEnabled", hint: "hint", isValid: "isValid", label: "label", optional: "optional", placeholder: "placeholder", required: "required", size: "size", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1381
|
+
VegaInputPhoneNumber.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputPhoneNumber, selector: "vega-input-phone-number", inputs: { allowedCountryCodes: "allowedCountryCodes", autoValidation: "autoValidation", countryCode: "countryCode", disabled: "disabled", emptyValueEnabled: "emptyValueEnabled", hint: "hint", isValid: "isValid", label: "label", name: "name", optional: "optional", placeholder: "placeholder", required: "required", size: "size", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1382
1382
|
VegaInputPhoneNumber = __decorate([
|
|
1383
1383
|
ProxyCmp({
|
|
1384
1384
|
defineCustomElementFn: undefined,
|
|
1385
|
-
inputs: ['allowedCountryCodes', 'autoValidation', 'countryCode', 'disabled', 'emptyValueEnabled', 'hint', 'isValid', 'label', 'optional', 'placeholder', 'required', 'size', 'validationRules', 'value']
|
|
1385
|
+
inputs: ['allowedCountryCodes', 'autoValidation', 'countryCode', 'disabled', 'emptyValueEnabled', 'hint', 'isValid', 'label', 'name', 'optional', 'placeholder', 'required', 'size', 'validationRules', 'value']
|
|
1386
1386
|
})
|
|
1387
1387
|
], VegaInputPhoneNumber);
|
|
1388
1388
|
export { VegaInputPhoneNumber };
|
|
@@ -1392,7 +1392,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
1392
1392
|
selector: 'vega-input-phone-number',
|
|
1393
1393
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1394
1394
|
template: '<ng-content></ng-content>',
|
|
1395
|
-
inputs: ['allowedCountryCodes', 'autoValidation', 'countryCode', 'disabled', 'emptyValueEnabled', 'hint', 'isValid', 'label', 'optional', 'placeholder', 'required', 'size', 'validationRules', 'value']
|
|
1395
|
+
inputs: ['allowedCountryCodes', 'autoValidation', 'countryCode', 'disabled', 'emptyValueEnabled', 'hint', 'isValid', 'label', 'name', 'optional', 'placeholder', 'required', 'size', 'validationRules', 'value']
|
|
1396
1396
|
}]
|
|
1397
1397
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
1398
1398
|
let VegaInputRange = class VegaInputRange {
|
|
@@ -1404,11 +1404,11 @@ let VegaInputRange = class VegaInputRange {
|
|
|
1404
1404
|
}
|
|
1405
1405
|
};
|
|
1406
1406
|
VegaInputRange.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaInputRange, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
1407
|
-
VegaInputRange.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputRange, selector: "vega-input-range", inputs: { autoValidation: "autoValidation", disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", max: "max", min: "min", optional: "optional", placeholder: "placeholder", prefixIcon: "prefixIcon", required: "required", showClearIcon: "showClearIcon", size: "size", stack: "stack", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1407
|
+
VegaInputRange.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputRange, selector: "vega-input-range", inputs: { autoValidation: "autoValidation", disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", max: "max", min: "min", name: "name", optional: "optional", placeholder: "placeholder", prefixIcon: "prefixIcon", required: "required", showClearIcon: "showClearIcon", size: "size", stack: "stack", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1408
1408
|
VegaInputRange = __decorate([
|
|
1409
1409
|
ProxyCmp({
|
|
1410
1410
|
defineCustomElementFn: undefined,
|
|
1411
|
-
inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'max', 'min', 'optional', 'placeholder', 'prefixIcon', 'required', 'showClearIcon', 'size', 'stack', 'validationRules', 'value']
|
|
1411
|
+
inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'max', 'min', 'name', 'optional', 'placeholder', 'prefixIcon', 'required', 'showClearIcon', 'size', 'stack', 'validationRules', 'value']
|
|
1412
1412
|
})
|
|
1413
1413
|
], VegaInputRange);
|
|
1414
1414
|
export { VegaInputRange };
|
|
@@ -1418,7 +1418,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
1418
1418
|
selector: 'vega-input-range',
|
|
1419
1419
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1420
1420
|
template: '<ng-content></ng-content>',
|
|
1421
|
-
inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'max', 'min', 'optional', 'placeholder', 'prefixIcon', 'required', 'showClearIcon', 'size', 'stack', 'validationRules', 'value']
|
|
1421
|
+
inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'max', 'min', 'name', 'optional', 'placeholder', 'prefixIcon', 'required', 'showClearIcon', 'size', 'stack', 'validationRules', 'value']
|
|
1422
1422
|
}]
|
|
1423
1423
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
1424
1424
|
let VegaInputSelect = class VegaInputSelect {
|
|
@@ -1430,11 +1430,11 @@ let VegaInputSelect = class VegaInputSelect {
|
|
|
1430
1430
|
}
|
|
1431
1431
|
};
|
|
1432
1432
|
VegaInputSelect.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaInputSelect, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
1433
|
-
VegaInputSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputSelect, selector: "vega-input-select", inputs: { autoValidation: "autoValidation", disabled: "disabled", dropdownItemTooltipProps: "dropdownItemTooltipProps", hint: "hint", isValid: "isValid", label: "label", labelSuffixButtonConfig: "labelSuffixButtonConfig", optional: "optional", placeholder: "placeholder", prefixIcon: "prefixIcon", required: "required", selectType: "selectType", selectedLabel: "selectedLabel", selectedLabelTooltipProps: "selectedLabelTooltipProps", size: "size", source: "source", sourceLazyLoadCallback: "sourceLazyLoadCallback", validationRules: "validationRules", value: "value", vegaDropdownProps: "vegaDropdownProps" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1433
|
+
VegaInputSelect.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaInputSelect, selector: "vega-input-select", inputs: { autoValidation: "autoValidation", disabled: "disabled", dropdownItemTooltipProps: "dropdownItemTooltipProps", hint: "hint", isValid: "isValid", label: "label", labelSuffixButtonConfig: "labelSuffixButtonConfig", name: "name", optional: "optional", placeholder: "placeholder", prefixIcon: "prefixIcon", required: "required", selectType: "selectType", selectedLabel: "selectedLabel", selectedLabelTooltipProps: "selectedLabelTooltipProps", size: "size", source: "source", sourceLazyLoadCallback: "sourceLazyLoadCallback", validationRules: "validationRules", value: "value", vegaDropdownProps: "vegaDropdownProps" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
1434
1434
|
VegaInputSelect = __decorate([
|
|
1435
1435
|
ProxyCmp({
|
|
1436
1436
|
defineCustomElementFn: undefined,
|
|
1437
|
-
inputs: ['autoValidation', 'disabled', 'dropdownItemTooltipProps', 'hint', 'isValid', 'label', 'labelSuffixButtonConfig', 'optional', 'placeholder', 'prefixIcon', 'required', 'selectType', 'selectedLabel', 'selectedLabelTooltipProps', 'size', 'source', 'sourceLazyLoadCallback', 'validationRules', 'value', 'vegaDropdownProps'],
|
|
1437
|
+
inputs: ['autoValidation', 'disabled', 'dropdownItemTooltipProps', 'hint', 'isValid', 'label', 'labelSuffixButtonConfig', 'name', 'optional', 'placeholder', 'prefixIcon', 'required', 'selectType', 'selectedLabel', 'selectedLabelTooltipProps', 'size', 'source', 'sourceLazyLoadCallback', 'validationRules', 'value', 'vegaDropdownProps'],
|
|
1438
1438
|
methods: ['doClose', 'doOpen', 'doChange']
|
|
1439
1439
|
})
|
|
1440
1440
|
], VegaInputSelect);
|
|
@@ -1445,7 +1445,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
1445
1445
|
selector: 'vega-input-select',
|
|
1446
1446
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1447
1447
|
template: '<ng-content></ng-content>',
|
|
1448
|
-
inputs: ['autoValidation', 'disabled', 'dropdownItemTooltipProps', 'hint', 'isValid', 'label', 'labelSuffixButtonConfig', 'optional', 'placeholder', 'prefixIcon', 'required', 'selectType', 'selectedLabel', 'selectedLabelTooltipProps', 'size', 'source', 'sourceLazyLoadCallback', 'validationRules', 'value', 'vegaDropdownProps']
|
|
1448
|
+
inputs: ['autoValidation', 'disabled', 'dropdownItemTooltipProps', 'hint', 'isValid', 'label', 'labelSuffixButtonConfig', 'name', 'optional', 'placeholder', 'prefixIcon', 'required', 'selectType', 'selectedLabel', 'selectedLabelTooltipProps', 'size', 'source', 'sourceLazyLoadCallback', 'validationRules', 'value', 'vegaDropdownProps']
|
|
1449
1449
|
}]
|
|
1450
1450
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
1451
1451
|
let VegaItemToggle = class VegaItemToggle {
|
|
@@ -2047,11 +2047,11 @@ let VegaRichTextEditor = class VegaRichTextEditor {
|
|
|
2047
2047
|
}
|
|
2048
2048
|
};
|
|
2049
2049
|
VegaRichTextEditor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaRichTextEditor, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
2050
|
-
VegaRichTextEditor.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaRichTextEditor, selector: "vega-rich-text-editor", inputs: { allowSourceEdit: "allowSourceEdit", autoValidation: "autoValidation", disabled: "disabled", extensions: "extensions", hint: "hint", isValid: "isValid", label: "label", optional: "optional", placeholder: "placeholder", required: "required", rows: "rows", sourceEditConfig: "sourceEditConfig", textStyleItems: "textStyleItems", toolbarItems: "toolbarItems", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2050
|
+
VegaRichTextEditor.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaRichTextEditor, selector: "vega-rich-text-editor", inputs: { allowSourceEdit: "allowSourceEdit", autoValidation: "autoValidation", disabled: "disabled", extensions: "extensions", hint: "hint", isValid: "isValid", label: "label", name: "name", optional: "optional", placeholder: "placeholder", required: "required", rows: "rows", sourceEditConfig: "sourceEditConfig", textStyleItems: "textStyleItems", toolbarItems: "toolbarItems", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2051
2051
|
VegaRichTextEditor = __decorate([
|
|
2052
2052
|
ProxyCmp({
|
|
2053
2053
|
defineCustomElementFn: undefined,
|
|
2054
|
-
inputs: ['allowSourceEdit', 'autoValidation', 'disabled', 'extensions', 'hint', 'isValid', 'label', 'optional', 'placeholder', 'required', 'rows', 'sourceEditConfig', 'textStyleItems', 'toolbarItems', 'validationRules', 'value']
|
|
2054
|
+
inputs: ['allowSourceEdit', 'autoValidation', 'disabled', 'extensions', 'hint', 'isValid', 'label', 'name', 'optional', 'placeholder', 'required', 'rows', 'sourceEditConfig', 'textStyleItems', 'toolbarItems', 'validationRules', 'value']
|
|
2055
2055
|
})
|
|
2056
2056
|
], VegaRichTextEditor);
|
|
2057
2057
|
export { VegaRichTextEditor };
|
|
@@ -2061,7 +2061,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
2061
2061
|
selector: 'vega-rich-text-editor',
|
|
2062
2062
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2063
2063
|
template: '<ng-content></ng-content>',
|
|
2064
|
-
inputs: ['allowSourceEdit', 'autoValidation', 'disabled', 'extensions', 'hint', 'isValid', 'label', 'optional', 'placeholder', 'required', 'rows', 'sourceEditConfig', 'textStyleItems', 'toolbarItems', 'validationRules', 'value']
|
|
2064
|
+
inputs: ['allowSourceEdit', 'autoValidation', 'disabled', 'extensions', 'hint', 'isValid', 'label', 'name', 'optional', 'placeholder', 'required', 'rows', 'sourceEditConfig', 'textStyleItems', 'toolbarItems', 'validationRules', 'value']
|
|
2065
2065
|
}]
|
|
2066
2066
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
2067
2067
|
let VegaRichTextEditorToolbarButton = class VegaRichTextEditorToolbarButton {
|
|
@@ -2155,7 +2155,7 @@ VegaRichTextLinkEditor = __decorate([
|
|
|
2155
2155
|
ProxyCmp({
|
|
2156
2156
|
defineCustomElementFn: undefined,
|
|
2157
2157
|
inputs: ['record', 'resetStatusAfterHide', 'status', 'target'],
|
|
2158
|
-
methods: ['show']
|
|
2158
|
+
methods: ['show', 'hide']
|
|
2159
2159
|
})
|
|
2160
2160
|
], VegaRichTextLinkEditor);
|
|
2161
2161
|
export { VegaRichTextLinkEditor };
|
|
@@ -2357,11 +2357,11 @@ let VegaSelectionChipGroup = class VegaSelectionChipGroup {
|
|
|
2357
2357
|
}
|
|
2358
2358
|
};
|
|
2359
2359
|
VegaSelectionChipGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaSelectionChipGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
2360
|
-
VegaSelectionChipGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaSelectionChipGroup, selector: "vega-selection-chip-group", inputs: { disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", optional: "optional", required: "required", selectType: "selectType", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2360
|
+
VegaSelectionChipGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaSelectionChipGroup, selector: "vega-selection-chip-group", inputs: { disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", name: "name", optional: "optional", required: "required", selectType: "selectType", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2361
2361
|
VegaSelectionChipGroup = __decorate([
|
|
2362
2362
|
ProxyCmp({
|
|
2363
2363
|
defineCustomElementFn: undefined,
|
|
2364
|
-
inputs: ['disabled', 'hint', 'isValid', 'label', 'optional', 'required', 'selectType', 'validationRules', 'value']
|
|
2364
|
+
inputs: ['disabled', 'hint', 'isValid', 'label', 'name', 'optional', 'required', 'selectType', 'validationRules', 'value']
|
|
2365
2365
|
})
|
|
2366
2366
|
], VegaSelectionChipGroup);
|
|
2367
2367
|
export { VegaSelectionChipGroup };
|
|
@@ -2371,7 +2371,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
2371
2371
|
selector: 'vega-selection-chip-group',
|
|
2372
2372
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2373
2373
|
template: '<ng-content></ng-content>',
|
|
2374
|
-
inputs: ['disabled', 'hint', 'isValid', 'label', 'optional', 'required', 'selectType', 'validationRules', 'value']
|
|
2374
|
+
inputs: ['disabled', 'hint', 'isValid', 'label', 'name', 'optional', 'required', 'selectType', 'validationRules', 'value']
|
|
2375
2375
|
}]
|
|
2376
2376
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
2377
2377
|
let VegaSelectionTile = class VegaSelectionTile {
|
|
@@ -2409,11 +2409,11 @@ let VegaSelectionTileGroup = class VegaSelectionTileGroup {
|
|
|
2409
2409
|
}
|
|
2410
2410
|
};
|
|
2411
2411
|
VegaSelectionTileGroup.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaSelectionTileGroup, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
2412
|
-
VegaSelectionTileGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaSelectionTileGroup, selector: "vega-selection-tile-group", inputs: { disabled: "disabled", distributeEvenly: "distributeEvenly", hint: "hint", isValid: "isValid", label: "label", layout: "layout", optional: "optional", required: "required", selectType: "selectType", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2412
|
+
VegaSelectionTileGroup.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaSelectionTileGroup, selector: "vega-selection-tile-group", inputs: { disabled: "disabled", distributeEvenly: "distributeEvenly", hint: "hint", isValid: "isValid", label: "label", layout: "layout", name: "name", optional: "optional", required: "required", selectType: "selectType", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2413
2413
|
VegaSelectionTileGroup = __decorate([
|
|
2414
2414
|
ProxyCmp({
|
|
2415
2415
|
defineCustomElementFn: undefined,
|
|
2416
|
-
inputs: ['disabled', 'distributeEvenly', 'hint', 'isValid', 'label', 'layout', 'optional', 'required', 'selectType', 'validationRules', 'value']
|
|
2416
|
+
inputs: ['disabled', 'distributeEvenly', 'hint', 'isValid', 'label', 'layout', 'name', 'optional', 'required', 'selectType', 'validationRules', 'value']
|
|
2417
2417
|
})
|
|
2418
2418
|
], VegaSelectionTileGroup);
|
|
2419
2419
|
export { VegaSelectionTileGroup };
|
|
@@ -2423,7 +2423,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
2423
2423
|
selector: 'vega-selection-tile-group',
|
|
2424
2424
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2425
2425
|
template: '<ng-content></ng-content>',
|
|
2426
|
-
inputs: ['disabled', 'distributeEvenly', 'hint', 'isValid', 'label', 'layout', 'optional', 'required', 'selectType', 'validationRules', 'value']
|
|
2426
|
+
inputs: ['disabled', 'distributeEvenly', 'hint', 'isValid', 'label', 'layout', 'name', 'optional', 'required', 'selectType', 'validationRules', 'value']
|
|
2427
2427
|
}]
|
|
2428
2428
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
2429
2429
|
let VegaSidenav = class VegaSidenav {
|
|
@@ -2513,11 +2513,11 @@ let VegaSignatureCapture = class VegaSignatureCapture {
|
|
|
2513
2513
|
}
|
|
2514
2514
|
};
|
|
2515
2515
|
VegaSignatureCapture.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaSignatureCapture, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
2516
|
-
VegaSignatureCapture.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaSignatureCapture, selector: "vega-signature-capture", inputs: { autoValidation: "autoValidation", disabled: "disabled", height: "height", isValid: "isValid", label: "label", mode: "mode", optional: "optional", placeholder: "placeholder", placeholderIcon: "placeholderIcon", required: "required", showClearBtn: "showClearBtn", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2516
|
+
VegaSignatureCapture.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaSignatureCapture, selector: "vega-signature-capture", inputs: { autoValidation: "autoValidation", disabled: "disabled", height: "height", isValid: "isValid", label: "label", mode: "mode", name: "name", optional: "optional", placeholder: "placeholder", placeholderIcon: "placeholderIcon", required: "required", showClearBtn: "showClearBtn", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2517
2517
|
VegaSignatureCapture = __decorate([
|
|
2518
2518
|
ProxyCmp({
|
|
2519
2519
|
defineCustomElementFn: undefined,
|
|
2520
|
-
inputs: ['autoValidation', 'disabled', 'height', 'isValid', 'label', 'mode', 'optional', 'placeholder', 'placeholderIcon', 'required', 'showClearBtn', 'validationRules', 'value'],
|
|
2520
|
+
inputs: ['autoValidation', 'disabled', 'height', 'isValid', 'label', 'mode', 'name', 'optional', 'placeholder', 'placeholderIcon', 'required', 'showClearBtn', 'validationRules', 'value'],
|
|
2521
2521
|
methods: ['clear']
|
|
2522
2522
|
})
|
|
2523
2523
|
], VegaSignatureCapture);
|
|
@@ -2528,7 +2528,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
2528
2528
|
selector: 'vega-signature-capture',
|
|
2529
2529
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2530
2530
|
template: '<ng-content></ng-content>',
|
|
2531
|
-
inputs: ['autoValidation', 'disabled', 'height', 'isValid', 'label', 'mode', 'optional', 'placeholder', 'placeholderIcon', 'required', 'showClearBtn', 'validationRules', 'value']
|
|
2531
|
+
inputs: ['autoValidation', 'disabled', 'height', 'isValid', 'label', 'mode', 'name', 'optional', 'placeholder', 'placeholderIcon', 'required', 'showClearBtn', 'validationRules', 'value']
|
|
2532
2532
|
}]
|
|
2533
2533
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
2534
2534
|
let VegaSkeleton = class VegaSkeleton {
|
|
@@ -2588,11 +2588,11 @@ let VegaStepper = class VegaStepper {
|
|
|
2588
2588
|
}
|
|
2589
2589
|
};
|
|
2590
2590
|
VegaStepper.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaStepper, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
2591
|
-
VegaStepper.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaStepper, selector: "vega-stepper", inputs: { autoValidation: "autoValidation", buttonVariant: "buttonVariant", disabled: "disabled", inputDisabled: "inputDisabled", isValid: "isValid", label: "label", max: "max", min: "min", stepperId: "stepperId", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2591
|
+
VegaStepper.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaStepper, selector: "vega-stepper", inputs: { autoValidation: "autoValidation", buttonVariant: "buttonVariant", disabled: "disabled", inputDisabled: "inputDisabled", isValid: "isValid", label: "label", max: "max", min: "min", name: "name", stepperId: "stepperId", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2592
2592
|
VegaStepper = __decorate([
|
|
2593
2593
|
ProxyCmp({
|
|
2594
2594
|
defineCustomElementFn: undefined,
|
|
2595
|
-
inputs: ['autoValidation', 'buttonVariant', 'disabled', 'inputDisabled', 'isValid', 'label', 'max', 'min', 'stepperId', 'value']
|
|
2595
|
+
inputs: ['autoValidation', 'buttonVariant', 'disabled', 'inputDisabled', 'isValid', 'label', 'max', 'min', 'name', 'stepperId', 'value']
|
|
2596
2596
|
})
|
|
2597
2597
|
], VegaStepper);
|
|
2598
2598
|
export { VegaStepper };
|
|
@@ -2602,7 +2602,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
2602
2602
|
selector: 'vega-stepper',
|
|
2603
2603
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2604
2604
|
template: '<ng-content></ng-content>',
|
|
2605
|
-
inputs: ['autoValidation', 'buttonVariant', 'disabled', 'inputDisabled', 'isValid', 'label', 'max', 'min', 'stepperId', 'value']
|
|
2605
|
+
inputs: ['autoValidation', 'buttonVariant', 'disabled', 'inputDisabled', 'isValid', 'label', 'max', 'min', 'name', 'stepperId', 'value']
|
|
2606
2606
|
}]
|
|
2607
2607
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
2608
2608
|
let VegaTabGroup = class VegaTabGroup {
|
|
@@ -2961,11 +2961,11 @@ let VegaTextarea = class VegaTextarea {
|
|
|
2961
2961
|
}
|
|
2962
2962
|
};
|
|
2963
2963
|
VegaTextarea.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaTextarea, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
2964
|
-
VegaTextarea.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaTextarea, selector: "vega-textarea", inputs: { autoValidation: "autoValidation", disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", labelSuffixButtonConfig: "labelSuffixButtonConfig", maxLength: "maxLength", minLength: "minLength", optional: "optional", placeholder: "placeholder", required: "required", resizable: "resizable", rows: "rows", showCounter: "showCounter", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2964
|
+
VegaTextarea.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaTextarea, selector: "vega-textarea", inputs: { autoValidation: "autoValidation", disabled: "disabled", hint: "hint", isValid: "isValid", label: "label", labelSuffixButtonConfig: "labelSuffixButtonConfig", maxLength: "maxLength", minLength: "minLength", name: "name", optional: "optional", placeholder: "placeholder", required: "required", resizable: "resizable", rows: "rows", showCounter: "showCounter", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2965
2965
|
VegaTextarea = __decorate([
|
|
2966
2966
|
ProxyCmp({
|
|
2967
2967
|
defineCustomElementFn: undefined,
|
|
2968
|
-
inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'labelSuffixButtonConfig', 'maxLength', 'minLength', 'optional', 'placeholder', 'required', 'resizable', 'rows', 'showCounter', 'validationRules', 'value']
|
|
2968
|
+
inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'labelSuffixButtonConfig', 'maxLength', 'minLength', 'name', 'optional', 'placeholder', 'required', 'resizable', 'rows', 'showCounter', 'validationRules', 'value']
|
|
2969
2969
|
})
|
|
2970
2970
|
], VegaTextarea);
|
|
2971
2971
|
export { VegaTextarea };
|
|
@@ -2975,7 +2975,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
2975
2975
|
selector: 'vega-textarea',
|
|
2976
2976
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
2977
2977
|
template: '<ng-content></ng-content>',
|
|
2978
|
-
inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'labelSuffixButtonConfig', 'maxLength', 'minLength', 'optional', 'placeholder', 'required', 'resizable', 'rows', 'showCounter', 'validationRules', 'value']
|
|
2978
|
+
inputs: ['autoValidation', 'disabled', 'hint', 'isValid', 'label', 'labelSuffixButtonConfig', 'maxLength', 'minLength', 'name', 'optional', 'placeholder', 'required', 'resizable', 'rows', 'showCounter', 'validationRules', 'value']
|
|
2979
2979
|
}]
|
|
2980
2980
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
2981
2981
|
let VegaTimePicker = class VegaTimePicker {
|
|
@@ -2987,11 +2987,11 @@ let VegaTimePicker = class VegaTimePicker {
|
|
|
2987
2987
|
}
|
|
2988
2988
|
};
|
|
2989
2989
|
VegaTimePicker.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaTimePicker, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
2990
|
-
VegaTimePicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaTimePicker, selector: "vega-time-picker", inputs: { autoValidation: "autoValidation", disabled: "disabled", increments: "increments", isValid: "isValid", label: "label", mode: "mode", optional: "optional", placeholder: "placeholder", positionRelativeTo: "positionRelativeTo", readOnly: "readOnly", required: "required", showClearIcon: "showClearIcon", size: "size", timeFormat: "timeFormat", validationRules: "validationRules", value: "value", vegaDropdownProps: "vegaDropdownProps" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2990
|
+
VegaTimePicker.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaTimePicker, selector: "vega-time-picker", inputs: { autoValidation: "autoValidation", disabled: "disabled", increments: "increments", isValid: "isValid", label: "label", mode: "mode", name: "name", optional: "optional", placeholder: "placeholder", positionRelativeTo: "positionRelativeTo", readOnly: "readOnly", required: "required", showClearIcon: "showClearIcon", size: "size", timeFormat: "timeFormat", validationRules: "validationRules", value: "value", vegaDropdownProps: "vegaDropdownProps" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
2991
2991
|
VegaTimePicker = __decorate([
|
|
2992
2992
|
ProxyCmp({
|
|
2993
2993
|
defineCustomElementFn: undefined,
|
|
2994
|
-
inputs: ['autoValidation', 'disabled', 'increments', 'isValid', 'label', 'mode', 'optional', 'placeholder', 'positionRelativeTo', 'readOnly', 'required', 'showClearIcon', 'size', 'timeFormat', 'validationRules', 'value', 'vegaDropdownProps']
|
|
2994
|
+
inputs: ['autoValidation', 'disabled', 'increments', 'isValid', 'label', 'mode', 'name', 'optional', 'placeholder', 'positionRelativeTo', 'readOnly', 'required', 'showClearIcon', 'size', 'timeFormat', 'validationRules', 'value', 'vegaDropdownProps']
|
|
2995
2995
|
})
|
|
2996
2996
|
], VegaTimePicker);
|
|
2997
2997
|
export { VegaTimePicker };
|
|
@@ -3001,7 +3001,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
3001
3001
|
selector: 'vega-time-picker',
|
|
3002
3002
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
3003
3003
|
template: '<ng-content></ng-content>',
|
|
3004
|
-
inputs: ['autoValidation', 'disabled', 'increments', 'isValid', 'label', 'mode', 'optional', 'placeholder', 'positionRelativeTo', 'readOnly', 'required', 'showClearIcon', 'size', 'timeFormat', 'validationRules', 'value', 'vegaDropdownProps']
|
|
3004
|
+
inputs: ['autoValidation', 'disabled', 'increments', 'isValid', 'label', 'mode', 'name', 'optional', 'placeholder', 'positionRelativeTo', 'readOnly', 'required', 'showClearIcon', 'size', 'timeFormat', 'validationRules', 'value', 'vegaDropdownProps']
|
|
3005
3005
|
}]
|
|
3006
3006
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
3007
3007
|
let VegaTimePickerDropdown = class VegaTimePickerDropdown {
|
|
@@ -3036,11 +3036,11 @@ let VegaToggleSwitch = class VegaToggleSwitch {
|
|
|
3036
3036
|
}
|
|
3037
3037
|
};
|
|
3038
3038
|
VegaToggleSwitch.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.2.2", ngImport: i0, type: VegaToggleSwitch, deps: [{ token: i0.ChangeDetectorRef }, { token: i0.ElementRef }, { token: i0.NgZone }], target: i0.ɵɵFactoryTarget.Component });
|
|
3039
|
-
VegaToggleSwitch.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaToggleSwitch, selector: "vega-toggle-switch", inputs: { autoValidation: "autoValidation", checked: "checked", disabled: "disabled", isValid: "isValid", label: "label", optional: "optional", required: "required", size: "size", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3039
|
+
VegaToggleSwitch.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.2.2", type: VegaToggleSwitch, selector: "vega-toggle-switch", inputs: { autoValidation: "autoValidation", checked: "checked", disabled: "disabled", isValid: "isValid", label: "label", name: "name", optional: "optional", required: "required", size: "size", validationRules: "validationRules", value: "value" }, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
3040
3040
|
VegaToggleSwitch = __decorate([
|
|
3041
3041
|
ProxyCmp({
|
|
3042
3042
|
defineCustomElementFn: undefined,
|
|
3043
|
-
inputs: ['autoValidation', 'checked', 'disabled', 'isValid', 'label', 'optional', 'required', 'size', 'validationRules', 'value']
|
|
3043
|
+
inputs: ['autoValidation', 'checked', 'disabled', 'isValid', 'label', 'name', 'optional', 'required', 'size', 'validationRules', 'value']
|
|
3044
3044
|
})
|
|
3045
3045
|
], VegaToggleSwitch);
|
|
3046
3046
|
export { VegaToggleSwitch };
|
|
@@ -3050,7 +3050,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.2.2", ngImpor
|
|
|
3050
3050
|
selector: 'vega-toggle-switch',
|
|
3051
3051
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
3052
3052
|
template: '<ng-content></ng-content>',
|
|
3053
|
-
inputs: ['autoValidation', 'checked', 'disabled', 'isValid', 'label', 'optional', 'required', 'size', 'validationRules', 'value']
|
|
3053
|
+
inputs: ['autoValidation', 'checked', 'disabled', 'isValid', 'label', 'name', 'optional', 'required', 'size', 'validationRules', 'value']
|
|
3054
3054
|
}]
|
|
3055
3055
|
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }, { type: i0.ElementRef }, { type: i0.NgZone }]; } });
|
|
3056
3056
|
let VegaTooltip = class VegaTooltip {
|
|
@@ -3253,4 +3253,4 @@ export default [
|
|
|
3253
3253
|
VegaTooltipContentBox,
|
|
3254
3254
|
VegaVirtualScroll,
|
|
3255
3255
|
];
|
|
3256
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc3RlbmNpbC1nZW5lcmF0ZWQvY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsb0JBQW9CO0FBQ3BCLDhDQUE4QztBQUM5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7SUE4QjFELGFBQWEsU0FBYixhQUFhO0lBRXhCLFlBQVksQ0FBb0IsRUFBRSxDQUFhLEVBQVksQ0FBUztRQUFULE1BQUMsR0FBRCxDQUFDLENBQVE7UUFDbEUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1gsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQzFCLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztDQUNGLENBQUE7MEdBUFksYUFBYTs4RkFBYixhQUFhLDBWQUhkLDJCQUEyQjtBQUcxQixhQUFhO0lBVnpCLFFBQVEsQ0FBQztRQUNSLHFCQUFxQixFQUFFLFNBQVM7UUFDaEMsTUFBTSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDO0tBQzlKLENBQUM7R0FPVyxhQUFhLENBT3pCO1NBUFksYUFBYTsyRkFBYixhQUFhO2tCQU56QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxN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QUNkLG1CQUFtQjtJQUNuQixrQkFBa0I7SUFDbEIsK0JBQStCO0lBQy9CLDRCQUE0QjtJQUM1Qix1QkFBdUI7SUFDdkIsc0JBQXNCO0lBQ3RCLGtDQUFrQztJQUNsQywyQkFBMkI7SUFDM0IsZ0NBQWdDO0lBQ2hDLHdCQUF3QjtJQUN4QixnQkFBZ0I7SUFDaEIsa0JBQWtCO0lBQ2xCLGlCQUFpQjtJQUNqQixzQkFBc0I7SUFDdEIsaUJBQWlCO0lBQ2pCLHNCQUFzQjtJQUN0QixXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLGVBQWU7SUFDZixvQkFBb0I7SUFDcEIsWUFBWTtJQUNaLGlCQUFpQjtJQUNqQixXQUFXO0lBQ1gsWUFBWTtJQUNaLGlCQUFpQjtJQUNqQixTQUFTO0lBQ1QsYUFBYTtJQUNiLGFBQWE7SUFDYixrQkFBa0I7SUFDbEIsYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsYUFBYTtJQUNiLGlCQUFpQjtJQUNqQixnQkFBZ0I7SUFDaEIsWUFBWTtJQUNaLFFBQVE7SUFDUixZQUFZO0lBQ1osY0FBYztJQUNkLHNCQUFzQjtJQUN0QixnQkFBZ0I7SUFDaEIsV0FBVztJQUNYLHFCQUFxQjtJQUNyQixpQkFBaUI7Q0FDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlICovXG4vKiBhdXRvLWdlbmVyYXRlZCBhbmd1bGFyIGRpcmVjdGl2ZSBwcm94aWVzICovXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb3h5Q21wLCBwcm94eU91dHB1dHMgfSBmcm9tICcuL2FuZ3VsYXItY29tcG9uZW50LWxpYi91dGlscyc7XG5cbmltcG9ydCB7IENvbXBvbmVudHMgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYSc7XG5cblxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQWNjb3JkaW9uIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQWNjb3JkaW9uIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBleHBhbmQgZXZlbnQgb2YgdGhlIGFjY29yZGlvbi4gQHZlZ2FWZXJzaW9uIDEuMy4wXG4gICAqL1xuICB2ZWdhRXhwYW5kOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGV4cGFuZCBldmVudCBvZiB0aGUgYWNjb3JkaW9uLlxuZXhwYW5kIGlzIGFuIGF0dHJpYnV0ZSwgc28gdGhlIGV2ZW50IG5hbWUgaGVyZSB1c2VzIGFjY29yZGlvbkV4cGFuZCBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGFjY29yZGlvbkV4cGFuZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FjY29yZGlvblRpdGxlJywgJ2RyYXdzQmFja2dyb3VuZCcsICdleHBhbmQnLCAnZXhwYW5kSWNvbkFsaWduJywgJ2dyb3VwSWQnLCAnaWNvblBvc2l0aW9uJywgJ3ByZWZpeEljb24nLCAnc2hvd0V4cGFuZEljb24nLCAndGl0bGVCYWNrZ3JvdW5kQ29sb3InXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtYWNjb3JkaW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhY2NvcmRpb25UaXRsZScsICdkcmF3c0JhY2tncm91bmQnLCAnZXhwYW5kJywgJ2V4cGFuZEljb25BbGlnbicsICdncm91cElkJywgJ2ljb25Qb3NpdGlvbicsICdwcmVmaXhJY29uJywgJ3Nob3dFeHBhbmRJY29uJywgJ3RpdGxlQmFja2dyb3VuZENvbG9yJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUFjY29yZGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FFeHBhbmQnLCAnYWNjb3JkaW9uRXhwYW5kJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYUFwcEZvb3RlckxpbmsgYXMgSVZlZ2FBcHBGb290ZXJWZWdhQXBwRm9vdGVyTGluayB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLWFwcC1mb290ZXIvdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FBcHBGb290ZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FBcHBGb290ZXIge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBhZGRpdGlvbmFsIGxpbmsgaW4gdGhlIGFwcCBmb290ZXIuIEB2ZWdhVmVyc2lvbiAyLjkxLjBcbiAgICovXG4gIHZlZ2FBZGRpdGlvbmFsTGlua0NsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FBcHBGb290ZXJWZWdhQXBwRm9vdGVyTGluaz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBhZGRpdGlvbmFsIGxpbmsgaW4gdGhlIGFwcCBmb290ZXIuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjkxLjBcbiAgICovXG4gIGFkZGl0aW9uYWxMaW5rQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUFwcEZvb3RlclZlZ2FBcHBGb290ZXJMaW5rPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhZGRpdGlvbmFsTGlua3MnLCAnY29udGVudCcsICdkaXNjbGFpbWVyVXJsVGFyZ2V0JywgJ2hpZGVEZWZhdWx0TGlua3MnLCAncHJpdmFjeVBvbGljeUxhYmVsJywgJ3ByaXZhY3lQb2xpY3lVcmwnLCAncHJpdmFjeVBvbGljeVVybElkJywgJ3ByaXZhY3lQb2xpY3lVcmxUYXJnZXQnLCAnc2hvd0Rpc2NsYWltZXInLCAndGVybU9mVXNlTGFiZWwnLCAndGVybU9mVXNlVXJsJywgJ3Rlcm1PZlVzZVVybElkJywgJ3Rlcm1PZlVzZVVybFRhcmdldCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1hcHAtZm9vdGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhZGRpdGlvbmFsTGlua3MnLCAnY29udGVudCcsICdkaXNjbGFpbWVyVXJsVGFyZ2V0JywgJ2hpZGVEZWZhdWx0TGlua3MnLCAncHJpdmFjeVBvbGljeUxhYmVsJywgJ3ByaXZhY3lQb2xpY3lVcmwnLCAncHJpdmFjeVBvbGljeVVybElkJywgJ3ByaXZhY3lQb2xpY3lVcmxUYXJnZXQnLCAnc2hvd0Rpc2NsYWltZXInLCAndGVybU9mVXNlTGFiZWwnLCAndGVybU9mVXNlVXJsJywgJ3Rlcm1PZlVzZVVybElkJywgJ3Rlcm1PZlVzZVVybFRhcmdldCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FBcHBGb290ZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQWRkaXRpb25hbExpbmtDbGljaycsICdhZGRpdGlvbmFsTGlua0NsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FBcHBIZWFkZXJCdXR0b24gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FBcHBIZWFkZXJCdXR0b24ge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIGFuIGFwcCBoZWFkZXIgYnV0dG9uLiBAdmVnYVZlcnNpb24gMS4xMS4wXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiBhbiBhcHAgaGVhZGVyIGJ1dHRvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIGEgZHJvcGRvd24gaXRlbVxuICAgaW4gdGhlIGFwcCBoZWFkZXIuIEB2ZWdhVmVyc2lvbiAxLjIzLjBcbiAgICovXG4gIHZlZ2FEcm9wZG93bkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgYSBkcm9wZG93biBpdGVtXG4gICBpbiB0aGUgYXBwIGhlYWRlci4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBkcm9wZG93bkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgcmVzZXQgZXZlbnQgaW4gdGhlIGRyb3Bkb3duLiBAdmVnYVZlcnNpb24gMi43My4wXG4gICAqL1xuICB2ZWdhUmVzZXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSByZXNldCBldmVudCBpbiB0aGUgZHJvcGRvd24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjczLjBcbiAgICovXG4gIHJlc2V0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgc2VhcmNoIGV2ZW50IGluIHRoZSBkcm9wZG93bixcbiAgIGJ1dCBvbmx5IGlmIGB1c2VEZWZhdWx0RmlsdGVyYCBpcyBzZXQgdG8gYGZhbHNlYC4gQHZlZ2FWZXJzaW9uIDIuODQuMFxuICAgKi9cbiAgdmVnYVNlYXJjaDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHNlYXJjaCBldmVudCBpbiB0aGUgZHJvcGRvd24sXG4gICBidXQgb25seSBpZiBgdXNlRGVmYXVsdEZpbHRlcmAgaXMgc2V0IHRvIGBmYWxzZWAuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjg0LjBcbiAgICovXG4gIGRyb3Bkb3duU2VhcmNoOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdmF0YXInLCAnYXZhdGFyUG9zaXRpb24nLCAnZHJvcGRvd24nLCAnbGFiZWwnLCAnbGFiZWxDb25maWcnLCAnc2VsZWN0ZWQnLCAnc2hvd0JvcmRlcicsICdzaG93TGFiZWwnLCAnc2hvd01lbnVBcnJvd0ljb24nLCAnc2l6ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1hcHAtaGVhZGVyLWJ1dHRvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXZhdGFyJywgJ2F2YXRhclBvc2l0aW9uJywgJ2Ryb3Bkb3duJywgJ2xhYmVsJywgJ2xhYmVsQ29uZmlnJywgJ3NlbGVjdGVkJywgJ3Nob3dCb3JkZXInLCAnc2hvd0xhYmVsJywgJ3Nob3dNZW51QXJyb3dJY29uJywgJ3NpemUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQXBwSGVhZGVyQnV0dG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJywgJ3ZlZ2FEcm9wZG93bkNsaWNrJywgJ2Ryb3Bkb3duQ2xpY2snLCAndmVnYVJlc2V0JywgJ3Jlc2V0JywgJ3ZlZ2FTZWFyY2gnLCAnZHJvcGRvd25TZWFyY2gnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJhY2tkcm9wIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQmFja2Ryb3Age1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBiYWNrZHJvcC4gQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjb2xvcicsICdkdXJhdGlvbicsICd2aXNpYmxlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWJhY2tkcm9wJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjb2xvcicsICdkdXJhdGlvbicsICd2aXNpYmxlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUJhY2tkcm9wIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYUJhbm5lckFjdGlvbkJ1dHRvblR5cGUgYXMgSVZlZ2FCYW5uZXJWZWdhQmFubmVyQWN0aW9uQnV0dG9uVHlwZSB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLWJhbm5lci90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJhbm5lciBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJhbm5lciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgYmFubmVyIGNsb3NlIGV2ZW50LiBAdmVnYVZlcnNpb24gMS4xMy4wXG4gICAqL1xuICB2ZWdhQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBiYW5uZXIgY2xvc2UgZXZlbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjguMFxuICAgKi9cbiAgY2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBiYW5uZXIgYWN0aW9uIGJ1dHRvbiBoYXMgYmVlbiBjbGlja2VkLiBAdmVnYVZlcnNpb24gMi4xOC4wXG4gICAqL1xuICB2ZWdhQWN0aW9uQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUJhbm5lclZlZ2FCYW5uZXJBY3Rpb25CdXR0b25UeXBlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgYmFubmVyIGFjdGlvbiBidXR0b24gaGFzIGJlZW4gY2xpY2tlZC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMTguMFxuICAgKi9cbiAgYWN0aW9uQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUJhbm5lclZlZ2FCYW5uZXJBY3Rpb25CdXR0b25UeXBlPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhY3Rpb25CdXR0b25zJywgJ2Jhbm5lclRpdGxlJywgJ2NvbnRlbnQnLCAnaXNPcGVuJywgJ3Nob3dDbG9zZUJ1dHRvbicsICd0eXBlJ10sXG4gIG1ldGhvZHM6IFsnZG9DbG9zZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1iYW5uZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2FjdGlvbkJ1dHRvbnMnLCAnYmFubmVyVGl0bGUnLCAnY29udGVudCcsICdpc09wZW4nLCAnc2hvd0Nsb3NlQnV0dG9uJywgJ3R5cGUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQmFubmVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsb3NlJywgJ2Nsb3NlJywgJ3ZlZ2FBY3Rpb25CdXR0b25DbGljaycsICdhY3Rpb25CdXR0b25DbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQmFyQ2hhcnQgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FCYXJDaGFydCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ29wdGlvbnMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtYmFyLWNoYXJ0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydvcHRpb25zJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUJhckNoYXJ0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJveCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJveCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FsaWduU2VsZicsICdiYWNrZ3JvdW5kQ29sb3InLCAnYm9yZGVyJywgJ2JvcmRlckNvbG9yJywgJ2JvcmRlclN0eWxlJywgJ2Nvcm5lcnMnLCAnZGlzcGxheScsICdmbGV4JywgJ2ZsZXhCYXNpcycsICdmbGV4R3JvdycsICdmbGV4U2hyaW5rJywgJ2dyaWRBcmVhJywgJ2dyaWRDb2x1bW4nLCAnZ3JpZFJvdycsICdoZWlnaHQnLCAnanVzdGlmeVNlbGYnLCAnbWFyZ2luJywgJ21heEhlaWdodCcsICdtaW5IZWlnaHQnLCAnb3JkZXInLCAncGFkZGluZycsICdyZXNwb25zaXZlQ2xhc3MnLCAnc2hhZG93JywgJ3dpZHRoJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWJveCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYWxpZ25TZWxmJywgJ2JhY2tncm91bmRDb2xvcicsICdib3JkZXInLCAnYm9yZGVyQ29sb3InLCAnYm9yZGVyU3R5bGUnLCAnY29ybmVycycsICdkaXNwbGF5JywgJ2ZsZXgnLCAnZmxleEJhc2lzJywgJ2ZsZXhHcm93JywgJ2ZsZXhTaHJpbmsnLCAnZ3JpZEFyZWEnLCAnZ3JpZENvbHVtbicsICdncmlkUm93JywgJ2hlaWdodCcsICdqdXN0aWZ5U2VsZicsICdtYXJnaW4nLCAnbWF4SGVpZ2h0JywgJ21pbkhlaWdodCcsICdvcmRlcicsICdwYWRkaW5nJywgJ3Jlc3BvbnNpdmVDbGFzcycsICdzaGFkb3cnLCAnd2lkdGgnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQm94IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJyYW5kTG9nbyBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJyYW5kTG9nbyB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ25hbWUnLCAnc2l6ZScsICd0aGVtZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1icmFuZC1sb2dvJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWyduYW1lJywgJ3NpemUnLCAndGhlbWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQnJhbmRMb2dvIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhQnJlYWRjcnVtYkl0ZW1UeXBlIGFzIElWZWdhQnJlYWRjcnVtYlZlZ2FCcmVhZGNydW1iSXRlbVR5cGUgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1icmVhZGNydW1iL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQnJlYWRjcnVtYiBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJyZWFkY3J1bWIge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGJyZWFkY3J1bWIgaXRlbSBoYXMgYmVlbiBjbGlja2VkLiBAdmVnYVZlcnNpb24gMS40MS4wXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUJyZWFkY3J1bWJWZWdhQnJlYWRjcnVtYkl0ZW1UeXBlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgYnJlYWRjcnVtYiBpdGVtIGhhcyBiZWVuIGNsaWNrZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUJyZWFkY3J1bWJWZWdhQnJlYWRjcnVtYkl0ZW1UeXBlPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjb21wYWN0T25Nb2JpbGUnLCAnaXRlbXMnLCAnbGFzdEl0ZW1DbGlja2FibGUnLCAnbWF4SXRlbXMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtYnJlYWRjcnVtYicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY29tcGFjdE9uTW9iaWxlJywgJ2l0ZW1zJywgJ2xhc3RJdGVtQ2xpY2thYmxlJywgJ21heEl0ZW1zJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUJyZWFkY3J1bWIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAnY2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJ1dHRvbiBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJ1dHRvbiB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGJ1dHRvbi4gQHZlZ2FWZXJzaW9uIDEuMC4xMVxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGJ1dHRvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYmxvY2snLCAnZGFuZ2VyJywgJ2Rpc2FibGVkJywgJ2ljb24nLCAnaWNvbkFsaWduJywgJ2xhYmVsJywgJ2xvYWRpbmcnLCAnc2l6ZScsICd0eXBlJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtYnV0dG9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydibG9jaycsICdkYW5nZXInLCAnZGlzYWJsZWQnLCAnaWNvbicsICdpY29uQWxpZ24nLCAnbGFiZWwnLCAnbG9hZGluZycsICdzaXplJywgJ3R5cGUnLCAndmFyaWFudCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FCdXR0b24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAnY2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJ1dHRvbkNpcmNsZSBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJ1dHRvbkNpcmNsZSB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGNpcmN1bGFyIGJ1dHRvbi4gQHZlZ2FWZXJzaW9uIDEuMC4xMVxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGNpcmN1bGFyIGJ1dHRvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnZGFuZ2VyJywgJ2Rpc2FibGVkJywgJ2ljb24nLCAnaWNvbkNvbG9yJywgJ2xhYmVsJywgJ3Nob3dUb29sdGlwJywgJ3NpemUnLCAndG9vbHRpcCcsICd0eXBlJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtYnV0dG9uLWNpcmNsZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnZGFuZ2VyJywgJ2Rpc2FibGVkJywgJ2ljb24nLCAnaWNvbkNvbG9yJywgJ2xhYmVsJywgJ3Nob3dUb29sdGlwJywgJ3NpemUnLCAndG9vbHRpcCcsICd0eXBlJywgJ3ZhcmlhbnQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQnV0dG9uQ2lyY2xlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FCdXR0b25Hcm91cCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJ1dHRvbkdyb3VwIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgYnV0dG9uIGdyb3VwLiBAdmVnYVZlcnNpb24gMi41LjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBidXR0b24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjUuMFxuICAgKi9cbiAgY2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2ljb25BbGlnbicsICdzaXplJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtYnV0dG9uLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdpY29uQWxpZ24nLCAnc2l6ZScsICd2YXJpYW50J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUJ1dHRvbkdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FCdXR0b25Hcm91cEl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FCdXR0b25Hcm91cEl0ZW0ge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdkcm9wZG93blByb3BzJywgJ2Ryb3Bkb3duU291cmNlJywgJ2ljb24nLCAnaWNvbk9ubHknLCAnaXRlbUtleScsICdsYWJlbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1idXR0b24tZ3JvdXAtaXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAnZHJvcGRvd25Qcm9wcycsICdkcm9wZG93blNvdXJjZScsICdpY29uJywgJ2ljb25Pbmx5JywgJ2l0ZW1LZXknLCAnbGFiZWwnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQnV0dG9uR3JvdXBJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJ1dHRvbkxpbmsgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FCdXR0b25MaW5rIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgYnV0dG9uLiBAdmVnYVZlcnNpb24gMS4wLjExXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgYnV0dG9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydkYW5nZXInLCAnZGlzYWJsZWQnLCAnZXZlbnRmdWwnLCAnaWNvbicsICdpY29uQWxpZ24nLCAnaWNvblR5cGUnLCAnbGFiZWwnLCAnbGluaycsICdzaXplJywgJ3RhcmdldCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1idXR0b24tbGluaycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnZGFuZ2VyJywgJ2Rpc2FibGVkJywgJ2V2ZW50ZnVsJywgJ2ljb24nLCAnaWNvbkFsaWduJywgJ2ljb25UeXBlJywgJ2xhYmVsJywgJ2xpbmsnLCAnc2l6ZScsICd0YXJnZXQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQnV0dG9uTGluayB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDbGljaycsICdjbGljayddKTtcbiAgfVxufVxuXG5pbXBvcnQgdHlwZSB7IFZlZ2FDYWxlbmRhckNoYW5nZUV2ZW50VHlwZSBhcyBJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyQ2hhbmdlRXZlbnRUeXBlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtY2FsZW5kYXIvdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBWZWdhQ2FsZW5kYXJFdmVudENsaWNrSW5mbyBhcyBJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyRXZlbnRDbGlja0luZm8gfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1jYWxlbmRhci90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFZlZ2FDYWxlbmRhckV2ZW50RWRpdEluZm8gYXMgSVZlZ2FDYWxlbmRhclZlZ2FDYWxlbmRhckV2ZW50RWRpdEluZm8gfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1jYWxlbmRhci90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFZlZ2FDYWxlbmRhckRhdGVDbGlja0luZm8gYXMgSVZlZ2FDYWxlbmRhclZlZ2FDYWxlbmRhckRhdGVDbGlja0luZm8gfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1jYWxlbmRhci90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNhbGVuZGFyIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ2FsZW5kYXIge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNvbXBvbmVudCB2aWV3IGNvbnRlbnQgY2hhbmdlIGFmdGVyIGEgc3dpdGNoIHBhbmVsIGNsaWNrLiBAdmVnYVZlcnNpb24gMi4xNC4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FDYWxlbmRhclZlZ2FDYWxlbmRhckNoYW5nZUV2ZW50VHlwZT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNvbXBvbmVudCB2aWV3IGNvbnRlbnQgY2hhbmdlIGFmdGVyIGEgc3dpdGNoIHBhbmVsIGNsaWNrLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4xNC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyQ2hhbmdlRXZlbnRUeXBlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgY29tcG9uZW50IGV2ZW50IGl0ZW0gaXMgY2xpY2tlZC4gQHZlZ2FWZXJzaW9uIDIuMTQuMFxuICAgKi9cbiAgdmVnYUV2ZW50Q2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyRXZlbnRDbGlja0luZm8+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBjb21wb25lbnQgZXZlbnQgaXRlbSBpcyBjbGlja2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4xNC4wXG4gICAqL1xuICBldmVudENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FDYWxlbmRhclZlZ2FDYWxlbmRhckV2ZW50Q2xpY2tJbmZvPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgY2FsZW5kYXIgZXZlbnQgZWRpdCBhY3Rpb24gaXMgdHJpZ2dlcmVkIGZyb20gdGhlIGV2ZW50IHByZXZpZXcgcG9wb3Zlci4gQHZlZ2FWZXJzaW9uIDIuODcuMFxuICAgKi9cbiAgdmVnYUV2ZW50RWRpdDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhQ2FsZW5kYXJWZWdhQ2FsZW5kYXJFdmVudEVkaXRJbmZvPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgY2FsZW5kYXIgZXZlbnQgZWRpdCBhY3Rpb24gaXMgdHJpZ2dlcmVkIGZyb20gdGhlIGV2ZW50IHByZXZpZXcgcG9wb3Zlci4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuODcuMFxuICAgKi9cbiAgZXZlbnRFZGl0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FDYWxlbmRhclZlZ2FDYWxlbmRhckV2ZW50RWRpdEluZm8+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBjYWxlbmRhciBkYXRlIGl0ZW0gaGFzIGJlZW4gZG91YmxlLWNsaWNrZWQuIFRoZSBldmVudCB3aWxsIG5vdCBiZSB0cmlnZ2VyZWQgaWYgYGVuYWJsZURhdGFDbGlja2AgaXMgc2V0IHRvIHRydWUgdG8gcHJldmVudCBjb25mbGljdHMuIEB2ZWdhVmVyc2lvbiAyLjE3LjBcbiAgICovXG4gIHZlZ2FEYXRlRGJsQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyRGF0ZUNsaWNrSW5mbz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGNhbGVuZGFyIGRhdGUgaXRlbSBoYXMgYmVlbiBkb3VibGUtY2xpY2tlZC4gVGhlIGV2ZW50IHdpbGwgbm90IGJlIHRyaWdnZXJlZCBpZiBgZW5hYmxlRGF0YUNsaWNrYCBpcyB0cnVlIHRvIHByZXZlbnQgY29uZmxpY3RzLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4xNy4wXG4gICAqL1xuICBkYXRlRGJsQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyRGF0ZUNsaWNrSW5mbz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGNhbGVuZGFyIGRhdGUgaXRlbSBoYXMgYmVlbiBjbGlja2VkLiBUaGUgZXZlbnQgd2lsbCBub3QgYmUgdHJpZ2dlcmVkIGlmIGBlbmFibGVEYXRhQ2xpY2tgIGlzIGZhbHNlLiBAdmVnYVZlcnNpb24gMi42MS4wXG4gICAqL1xuICB2ZWdhRGF0ZUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FDYWxlbmRhclZlZ2FDYWxlbmRhckRhdGVDbGlja0luZm8+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBjYWxlbmRhciBkYXRlIGl0ZW0gaGFzIGJlZW4gY2xpY2tlZC4gVGhlIGV2ZW50IHdpbGwgbm90IGJlIHRyaWdnZXJlZCBpZiBgZW5hYmxlRGF0YUNsaWNrYCBpcyBmYWxzZS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNjEuMFxuICAgKi9cbiAgZGF0ZUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FDYWxlbmRhclZlZ2FDYWxlbmRhckRhdGVDbGlja0luZm8+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBjYWxlbmRhciBtb3JlIGFjdGlvbiBtZW51IGl0ZW0gaGFzIGJlZW4gY2xpY2tlZC4gQHZlZ2FWZXJzaW9uIDIuMjAuMFxuICAgKi9cbiAgdmVnYU1vcmVBY3Rpb25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGNhbGVuZGFyIG1vcmUgYWN0aW9uIG1lbnUgaXRlbSBoYXMgYmVlbiBjbGlja2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yMC4wXG4gICAqL1xuICBtb3JlQWN0aW9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2VuYWJsZURhdGVDbGljaycsICdlbmFibGVkRXZlbnRQcmV2aWV3JywgJ2V2ZW50RWRpdGFibGUnLCAnZXZlbnRzJywgJ2dldEV2ZW50UHJldmlld0FjdGlvbnMnLCAnaXNEYXRlRGlzYWJsZWQnLCAnbW9yZUFjdGlvbkRyb3Bkb3duUHJvcHMnLCAnc2hvd0V2ZW50Q29sb3JCYXInLCAnc2hvd1N3aXRjaFZpZXcnLCAnc2hvd1dlZWtlbmRzJywgJ3RpbWVGb3JtYXQnLCAndGltZXpvbmUnLCAndmlld01vZGUnXSxcbiAgbWV0aG9kczogWydzZXRDdXJyZW50UGVyaW9kJywgJ2dldEN1cnJlbnRQZXJpb2QnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtY2FsZW5kYXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2VuYWJsZURhdGVDbGljaycsICdlbmFibGVkRXZlbnRQcmV2aWV3JywgJ2V2ZW50RWRpdGFibGUnLCAnZXZlbnRzJywgJ2dldEV2ZW50UHJldmlld0FjdGlvbnMnLCAnaXNEYXRlRGlzYWJsZWQnLCAnbW9yZUFjdGlvbkRyb3Bkb3duUHJvcHMnLCAnc2hvd0V2ZW50Q29sb3JCYXInLCAnc2hvd1N3aXRjaFZpZXcnLCAnc2hvd1dlZWtlbmRzJywgJ3RpbWVGb3JtYXQnLCAndGltZXpvbmUnLCAndmlld01vZGUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ2FsZW5kYXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhRXZlbnRDbGljaycsICdldmVudENsaWNrJywgJ3ZlZ2FFdmVudEVkaXQnLCAnZXZlbnRFZGl0JywgJ3ZlZ2FEYXRlRGJsQ2xpY2snLCAnZGF0ZURibENsaWNrJywgJ3ZlZ2FEYXRlQ2xpY2snLCAnZGF0ZUNsaWNrJywgJ3ZlZ2FNb3JlQWN0aW9uQ2xpY2snLCAnbW9yZUFjdGlvbkNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDYWxlbmRhckV2ZW50IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ2FsZW5kYXJFdmVudCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NhbGVuZGFyRXZlbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtY2FsZW5kYXItZXZlbnQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NhbGVuZGFyRXZlbnQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ2FsZW5kYXJFdmVudCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDYWxlbmRhckV2ZW50UHJldmlldyBleHRlbmRzIENvbXBvbmVudHMuVmVnYUNhbGVuZGFyRXZlbnRQcmV2aWV3IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jYWxlbmRhci1ldmVudC1wcmV2aWV3JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYUNhbGVuZGFyRXZlbnRQcmV2aWV3IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNhbGVuZGFyRXZlbnRTbG90IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ2FsZW5kYXJFdmVudFNsb3Qge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydldmVudEtleSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jYWxlbmRhci1ldmVudC1zbG90JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydldmVudEtleSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FDYWxlbmRhckV2ZW50U2xvdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYUNhbGVuZGFyUGVyaW9kVHlwZSBhcyBJVmVnYUNhbGVuZGFyUGVyaW9kU3dpdGNoZXJWZWdhQ2FsZW5kYXJQZXJpb2RUeXBlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtY2FsZW5kYXIvdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDYWxlbmRhclBlcmlvZFN3aXRjaGVyIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ2FsZW5kYXJQZXJpb2RTd2l0Y2hlciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBjYWxlbmRhciBwZXJpb2QgaGFzIGNoYW5nZWQuIEB2ZWdhVmVyc2lvbiAyLjkxLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNhbGVuZGFyUGVyaW9kU3dpdGNoZXJWZWdhQ2FsZW5kYXJQZXJpb2RUeXBlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBjYWxlbmRhciBwZXJpb2QgaGFzIGNoYW5nZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjkxLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhQ2FsZW5kYXJQZXJpb2RTd2l0Y2hlclZlZ2FDYWxlbmRhclBlcmlvZFR5cGU+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ3Nob3dXZWVrZW5kcycsICd0aW1lem9uZScsICd2aWV3TW9kZSddLFxuICBtZXRob2RzOiBbJ3NldEN1cnJlbnRQZXJpb2QnLCAnZ2V0Q3VycmVudFBlcmlvZCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jYWxlbmRhci1wZXJpb2Qtc3dpdGNoZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ3Nob3dXZWVrZW5kcycsICd0aW1lem9uZScsICd2aWV3TW9kZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FDYWxlbmRhclBlcmlvZFN3aXRjaGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNhcmQgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FDYXJkIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYmFja2dyb3VuZENvbG9yJywgJ21hcmdpbicsICdwYWRkaW5nJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtY2FyZCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYmFja2dyb3VuZENvbG9yJywgJ21hcmdpbicsICdwYWRkaW5nJywgJ3ZhcmlhbnQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ2FyZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDYXJvdXNlbCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUNhcm91c2VsIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSB0cmFuc2l0aW9uIG9mIHRoZSBjYXJvdXNlbCB0byBhbm90aGVyIHBhZ2UsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQHZlZ2FWZXJzaW9uIDEuMy4wXG4gICAqL1xuICB2ZWdhUGFnZVVwZGF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PG51bWJlcj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHRyYW5zaXRpb24gb2YgdGhlIGNhcm91c2VsIHRvIGFub3RoZXIgcGFnZSxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIHBhZ2VVcGRhdGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxudW1iZXI+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NhblN3aXBlJywgJ2l0ZW1zUGVyUGFnZScsICdwZXJQYWdlJywgJ3Nob3dTbGlkZXInLCAnc3BhY2luZyddLFxuICBtZXRob2RzOiBbJ25leHRQYWdlJywgJ3ByZXZQYWdlJywgJ2dvVG9QYWdlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWNhcm91c2VsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjYW5Td2lwZScsICdpdGVtc1BlclBhZ2UnLCAncGVyUGFnZScsICdzaG93U2xpZGVyJywgJ3NwYWNpbmcnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ2Fyb3VzZWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhUGFnZVVwZGF0ZScsICdwYWdlVXBkYXRlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDaGVja2JveCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUNoZWNrYm94IHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBjaGVja2JveCxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMS4wLjEwXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nIHwgYm9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIGNoZWNrYm94XG4gICB0cmlnZ2VyZWQgZXhjbHVzaXZlbHkgYnkgdXNlciBpbnRlcmFjdGlvbiAobW91c2UgY2xpY2sgb3Iga2V5Ym9hcmQgYWN0aXZhdGlvbikuXG5cblVubGlrZSBgdmVnYUNoYW5nZWAsIHRoaXMgZXZlbnQgZG9lcyBOT1QgZmlyZSB3aGVuIHRoZSBgY2hlY2tlZGAgb3IgYHZhbHVlYFxuICAgcHJvcCBpcyByZWFzc2lnbmVkIHByb2dyYW1tYXRpY2FsbHkuIFVzZSB0aGlzIGV2ZW50IHdoZW4geW91IHdhbnQgdG8gcmVhY3RcbiAgIG9ubHkgdG8gcmVhbCB1c2VyIGlucHV0IChlLmcuLCBhbmFseXRpY3MsIGRlcml2ZWQgXCJzZWxlY3QgYWxsXCIgc3RhdGUpLiBAcmVtYXJrcyBDYWxsaW5nIGBldmVudC5wcmV2ZW50RGVmYXVsdCgpYCBpcyBhIG5vLW9wIOKAlCBpdCBkb2VzIG5vdCByb2xsXG5iYWNrIGBjaGVja2VkYC9gdmFsdWVgIG5vciBzdXBwcmVzcyB0aGUgcGFpcmVkIGB2ZWdhQ2hhbmdlYCBldmVudC5cbmBjYW5jZWxhYmxlOiB0cnVlYCBpcyByZXRhaW5lZCBvbmx5IGZvciBwYXJpdHkgd2l0aCBgdmVnYUNoYW5nZWAuLEBzZWUge21vZHVsZSA6dmVnYS1jaGVja2JveC11c2VyLWNoYW5nZX0sQHNlZSB7bW9kdWxlIDp2ZWdhLWNoZWNrYm94LXVzZXItY2hhbmdlLWtleWJvYXJkfSxAc2VlIHttb2R1bGUgOnZlZ2EtY2hlY2tib3gtdXNlci1jaGFuZ2Uta2V5Ym9hcmQtZW50ZXJ9LEBzZWUge21vZHVsZSA6dmVnYS1jaGVja2JveC11c2VyLWNoYW5nZS1wcm9ncmFtbWF0aWN9LEBzZWUge21vZHVsZSA6dmVnYS1jaGVja2JveC11c2VyLWNoYW5nZS1jb250YWlubWVudH0sQHZlZ2FWZXJzaW9uIDIuODkuMFxuICAgKi9cbiAgdmVnYVVzZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmcgfCBib29sZWFuPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZSBvZiB0aGUgY2hlY2tib3hcbiAgIHRyaWdnZXJlZCBleGNsdXNpdmVseSBieSB1c2VyIGludGVyYWN0aW9uIChtb3VzZSBjbGljayBvciBrZXlib2FyZCBhY3RpdmF0aW9uKS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuODkuMFxuICAgKi9cbiAgdXNlckNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZyB8IGJvb2xlYW4+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBjaGVja2JveCxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZyB8IGJvb2xlYW4+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NoZWNrZWQnLCAnZGlzYWJsZWQnLCAnaWRlbnRpZmllcicsICdpbmRldGVybWluYXRlJywgJ2lzVmFsaWQnLCAncmVxdWlyZWQnLCAnc2l6ZScsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ3NldFZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWNoZWNrYm94JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjaGVja2VkJywgJ2Rpc2FibGVkJywgJ2lkZW50aWZpZXInLCAnaW5kZXRlcm1pbmF0ZScsICdpc1ZhbGlkJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ2hlY2tib3gge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ3ZlZ2FVc2VyQ2hhbmdlJywgJ3VzZXJDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDaGVja2JveEdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ2hlY2tib3hHcm91cCB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZVxuICBvZiBhbnkgbmVzdGVkIGNoZWNrYm94IHdpdGhpbiB0aGUgY2hlY2tib3ggZ3JvdXAsXG4gIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaFxuICB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMS4wLjEwXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nW10+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBjaGVja2JveCBncm91cFxuICB0cmlnZ2VyZWQgZXhjbHVzaXZlbHkgYnkgdXNlciBpbnRlcmFjdGlvbiAobW91c2UgY2xpY2sgb3Iga2V5Ym9hcmRcbiAgYWN0aXZhdGlvbikgb24gYSBuZXN0ZWQgY2hlY2tib3guXG5cblVubGlrZSBgdmVnYUNoYW5nZWAsIHRoaXMgZXZlbnQgZG9lcyBOT1QgZmlyZSB3aGVuIHRoZSBgdmFsdWVgIHByb3BcbiAgaXMgcmVhc3NpZ25lZCBwcm9ncmFtbWF0aWNhbGx5LiBVc2UgdGhpcyBldmVudCB3aGVuIHlvdSB3YW50IHRvXG4gIHJlYWN0IG9ubHkgdG8gcmVhbCB1c2VyIGlucHV0IChlLmcuLCBhbmFseXRpY3MsIGRlcml2ZWRcbiAgXCJzZWxlY3QgYWxsXCIgc3RhdGUpLiBAcmVtYXJrcyBDYWxsaW5nIGBldmVudC5wcmV2ZW50RGVmYXVsdCgpYCBpcyBhIG5vLW9wIOKAlCBpdCBkb2VzIG5vdCByb2xsXG5iYWNrIGB2YWx1ZWAgbm9yIHN1cHByZXNzIHRoZSBwYWlyZWQgYHZlZ2FDaGFuZ2VgIGV2ZW50LlxuYGNhbmNlbGFibGU6IHRydWVgIGlzIHJldGFpbmVkIG9ubHkgZm9yIHBhcml0eSB3aXRoIGB2ZWdhQ2hhbmdlYC4sQHNlZSB7bW9kdWxlIDp2ZWdhLWNoZWNrYm94LWdyb3VwLXVzZXItY2hhbmdlfSxAc2VlIHttb2R1bGUgOnZlZ2EtY2hlY2tib3gtZ3JvdXAtdXNlci1jaGFuZ2UtcHJvZ3JhbW1hdGljfSxAc2VlIHttb2R1bGUgOnZlZ2EtY2hlY2tib3gtZ3JvdXAtdXNlci1jaGFuZ2Utbm8tZG91YmxlfSxAdmVnYVZlcnNpb24gMi44OS4wXG4gICAqL1xuICB2ZWdhVXNlckNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZVxuICBvZiBhbnkgbmVzdGVkIGNoZWNrYm94IHdpdGhpbiB0aGUgY2hlY2tib3ggZ3JvdXAsXG4gIHRyaWdnZXJlZCBleGNsdXNpdmVseSBieSB1c2VyIGludGVyYWN0aW9uIChtb3VzZSBjbGljayBvciBrZXlib2FyZCBhY3RpdmF0aW9uKS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuODkuMFxuICAgKi9cbiAgdXNlckNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZVxuICBvZiBhbnkgbmVzdGVkIGNoZWNrYm94IHdpdGhpbiB0aGUgY2hlY2tib3ggZ3JvdXAsXG4gIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaFxuICB1c2VyIGludGVyYWN0aW9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZ1tdPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJywgJ3ZlZ2FGbGV4UHJvcCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jaGVja2JveC1ncm91cCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZScsICd2ZWdhRmxleFByb3AnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ2hlY2tib3hHcm91cCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAndmVnYVVzZXJDaGFuZ2UnLCAndXNlckNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNoaXAgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FDaGlwIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgY2xvc2UgYnV0dG9uIG9mIHRoZSBjaGlwLlxuXG5UaGlzIGV2ZW50IGlzIG9ubHkgZGlzcGF0Y2hlZCB3aGVuIHRoZSBgc2hvd0Nsb3NlSWNvbmAgcHJvcGVydHkgaXMgc2V0IHRvIGB0cnVlYC4gQHZlZ2FWZXJzaW9uIDEuMTEuMFxuICAgKi9cbiAgdmVnYUNsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBjbG9zZSBidXR0b24gb2YgdGhlIGNoaXAuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGNoaXAuXG5cblRoaXMgZXZlbnQgaXMgb25seSBkaXNwYXRjaGVkIHdoZW4gdGhlIGBjbGlja2FibGVgIHByb3BlcnR5IGlzIHNldCB0byBgdHJ1ZWAuIEB2ZWdhVmVyc2lvbiAxLjExLjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgY2hpcC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2JnQ29sb3InLCAnY2hpcFR5cGUnLCAnY2xpY2thYmxlJywgJ2ljb24nLCAnaWNvbkFsaWduJywgJ2ljb25Db2xvcicsICdzaG93Q2xvc2VJY29uJywgJ3NpemUnLCAnc3RhdHVzQ29sb3InLCAndGV4dCcsICd0ZXh0Q29sb3InLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jaGlwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydiZ0NvbG9yJywgJ2NoaXBUeXBlJywgJ2NsaWNrYWJsZScsICdpY29uJywgJ2ljb25BbGlnbicsICdpY29uQ29sb3InLCAnc2hvd0Nsb3NlSWNvbicsICdzaXplJywgJ3N0YXR1c0NvbG9yJywgJ3RleHQnLCAndGV4dENvbG9yJywgJ3ZhcmlhbnQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ2hpcCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDbG9zZScsICdjbG9zZScsICd2ZWdhQ2xpY2snLCAnY2xpY2snXSk7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhQ29kZUJsb2NrVmFsdWUgYXMgSVZlZ2FDb2RlQmxvY2tWZWdhQ29kZUJsb2NrVmFsdWUgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1jb2RlLWJsb2NrL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQ29kZUJsb2NrIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ29kZUJsb2NrIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgdmFsdWUgY2hhbmdlLiBAdmVnYVZlcnNpb24gMi41MC4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FDb2RlQmxvY2tWZWdhQ29kZUJsb2NrVmFsdWU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgdmFsdWUgY2hhbmdlLiBAdmVnYVZlcnNpb24gMi41MC4wLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNvZGVCbG9ja1ZlZ2FDb2RlQmxvY2tWYWx1ZT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGRlbGV0aW9uIG9mIHRoZSBjb2RlIGJsb2NrLiBCeSBkZWZhdWx0LCB0aGUgZWxlbWVudCBpcyByZW1vdmVkIGZyb20gdGhlIHBhZ2UsIGJ1dCB0aGlzIGJlaGF2aW9yIGNhbiBiZSBwcmV2ZW50ZWQuIEB2ZWdhVmVyc2lvbiAyLjUwLjBcbiAgICovXG4gIHZlZ2FSZW1vdmU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBkZWxldGlvbiBvZiB0aGUgY29kZSBibG9jay4gQnkgZGVmYXVsdCwgdGhlIGVsZW1lbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBwYWdlLCBidXQgdGhpcyBiZWhhdmlvciBjYW4gYmUgcHJldmVudGVkLiBAdmVnYVZlcnNpb24gMi41MC4wLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlXG4gICAqL1xuICByZW1vdmU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ3JlYWRPbmx5JywgJ3Nob3dDb3B5QnV0dG9uJywgJ3Nob3dMaW5lTnVtYmVyJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsnZG9Gb2N1cyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jb2RlLWJsb2NrJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdyZWFkT25seScsICdzaG93Q29weUJ1dHRvbicsICdzaG93TGluZU51bWJlcicsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FDb2RlQmxvY2sge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhUmVtb3ZlJywgJ3JlbW92ZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQ29sb3JQaWNrZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FDb2xvclBpY2tlciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZSBvZiB0aGUgY29sb3IgcGlja2VyLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAxLjEzLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBjb2xvciBwaWNrZXIsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2NvbG9ycycsICdjb2x1bW5zJywgJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaXNJbmxpbmUnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtY29sb3ItcGlja2VyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdjb2xvcnMnLCAnY29sdW1ucycsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzSW5saW5lJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUNvbG9yUGlja2VyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNvbG9yU3dhdGNoIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ29sb3JTd2F0Y2gge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBzd2F0Y2guIEB2ZWdhVmVyc2lvbiAyLjgyLjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgc3dhdGNoLiBAdmVnYVZlcnNpb24gMi44Mi4wLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2Rpc2FibGVkJywgJ2xhYmVsJywgJ3NlbGVjdGVkJywgJ3NoYXBlJywgJ3NpemUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jb2xvci1zd2F0Y2gnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2Rpc2FibGVkJywgJ2xhYmVsJywgJ3NlbGVjdGVkJywgJ3NoYXBlJywgJ3NpemUnLCAndmFyaWFudCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FDb2xvclN3YXRjaCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDbGljaycsICdjbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQ29sb3JTd2F0Y2hQaWNrZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FDb2xvclN3YXRjaFBpY2tlciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2hhbmdlIG9mIHRoZSBzZWxlY3RlZCBjb2xvciB2YWx1ZS4gQHZlZ2FWZXJzaW9uIDIuODQuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBvZiB0aGUgc2VsZWN0ZWQgY29sb3IgdmFsdWUuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjg0LjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnY29sb3JzJywgJ2Rpc2FibGVkJywgJ2lucHV0Rm9ybWF0dGVyJywgJ2lucHV0UGxhY2Vob2xkZXInLCAnaW5wdXRQcmVmaXhJY29uJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAncmVxdWlyZWQnLCAnc2hvd0NsZWFyQnV0dG9uJywgJ3Nob3dJbnB1dCcsICdzd2F0Y2hHcmlkQ29sdW1ucycsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtY29sb3Itc3dhdGNoLXBpY2tlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnY29sb3JzJywgJ2Rpc2FibGVkJywgJ2lucHV0Rm9ybWF0dGVyJywgJ2lucHV0UGxhY2Vob2xkZXInLCAnaW5wdXRQcmVmaXhJY29uJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAncmVxdWlyZWQnLCAnc2hvd0NsZWFyQnV0dG9uJywgJ3Nob3dJbnB1dCcsICdzd2F0Y2hHcmlkQ29sdW1ucycsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ29sb3JTd2F0Y2hQaWNrZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQ29tYm9Cb3ggZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FDb21ib0JveCB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSBpdGVtcyBvZiB0aGUgY29tYm8gYm94IHZhbHVlLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAxLjExLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmdbXT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgaXRlbXMgb2YgdGhlIGNvbWJvIGJveCB2YWx1ZSxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB3aGVuIHRoZSB1c2VyIGhhcyBjaG9zZW4gdG8gYWRkIGEgbmV3IHZhbHVlXG4gICB0byB0aGUgc291cmNlIGFuZCB2YWx1ZSBvZiB0aGUgY29tYm8gYm94LlxuXG5UaGUgZXZlbnQncyBgZGV0YWlsYCBwcm9wZXJ0eSBjb250YWlucyB0aGUgbmV3IHZhbHVlLlxuXG5UaGUgY29tYm8gYm94IF9kb2VzIG5vdF8gYXV0b21hdGljYWxseSBhZGQgdGhlIG5ldyB2YWx1ZSB0byBpdHMgYHNvdXJjZWAgYW5kIGB2YWx1ZWAuIEB2ZWdhVmVyc2lvbiAxLjE0LjBcbiAgICovXG4gIHZlZ2FDcmVhdGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHdoZW4gdGhlIHVzZXIgaGFzIGNob3NlbiB0byBhZGQgYSBuZXcgdmFsdWVcbiAgIHRvIHRoZSBzb3VyY2UgYW5kIHZhbHVlIG9mIHRoZSBjb21ibyBib3guXG5cblRoZSBldmVudCdzIGBkZXRhaWxgIHByb3BlcnR5IGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUuXG5cblRoZSBjb21ibyBib3ggX2RvZXMgbm90XyBhdXRvbWF0aWNhbGx5IGFkZCB0aGUgbmV3IHZhbHVlIHRvIGl0cyBgc291cmNlYCBhbmQgYHZhbHVlYC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjcmVhdGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSB1c2VyJ3Mgc2VhcmNoIGFjdGlvbiBpbiB0aGUgY29tYm8gYm94LFxuICAgYnV0IG9ubHkgaWYgdGhlIGB1c2VEZWZhdWx0RmlsdGVyYCBwcm9wZXJ0eSBpcyBzZXQgdG8gYGZhbHNlYC4gQHZlZ2FWZXJzaW9uIDEuMjQuMFxuICAgKi9cbiAgdmVnYVNlYXJjaDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHVzZXIncyBzZWFyY2ggYWN0aW9uIGluIHRoZSBjb21ibyBib3gsXG4gICBidXQgb25seSBpZiB0aGUgYHVzZURlZmF1bHRGaWx0ZXJgIHByb3BlcnR5IGlzIHNldCB0byBgZmFsc2VgLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIHNlYXJjaDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBvbmx5IGZpcmVkIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaW4gdGhlIGRyb3Bkb3duIGhhcyBiZWVuIGNsaWNrZWQuXG5cblRoZSBldmVudCdzIGBkZXRhaWxgIHByb3BlcnR5IGlzIGB0cnVlYCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGlzIGNsaWNrZWQgdG8gc2VsZWN0IGFsbCBpdGVtcyxcbiAgIGFuZCBgZmFsc2VgIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaXMgY2xpY2tlZCB0byBjbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXMuIEB2ZWdhVmVyc2lvbiAyLjk1LjBcbiAgICovXG4gIHZlZ2FEcm9wZG93blNlbGVjdEFsbENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBvbmx5IGZpcmVkIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaW4gdGhlIGRyb3Bkb3duIGhhcyBiZWVuIGNsaWNrZWQuXG5cblRoZSBldmVudCdzIGBkZXRhaWxgIHByb3BlcnR5IGlzIGB0cnVlYCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGlzIGNsaWNrZWQgdG8gc2VsZWN0IGFsbCBpdGVtcyxcbiAgIGFuZCBgZmFsc2VgIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaXMgY2xpY2tlZCB0byBjbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXMuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjk1LjBcbiAgICovXG4gIGRyb3Bkb3duU2VsZWN0QWxsQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdjb250YWluZXJNYXhIZWlnaHQnLCAnZGlzYWJsZWQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAnc291cmNlJywgJ3VzZURlZmF1bHRGaWx0ZXInLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJywgJ3ZlZ2FEcm9wZG93blByb3BzJ10sXG4gIG1ldGhvZHM6IFsnY2xvc2UnLCAnb3BlbiddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jb21iby1ib3gnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2NvbnRhaW5lck1heEhlaWdodCcsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncmVxdWlyZWQnLCAnc2l6ZScsICdzb3VyY2UnLCAndXNlRGVmYXVsdEZpbHRlcicsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmVnYURyb3Bkb3duUHJvcHMnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ29tYm9Cb3gge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhQ3JlYXRlJywgJ2NyZWF0ZScsICd2ZWdhU2VhcmNoJywgJ3NlYXJjaCcsICd2ZWdhRHJvcGRvd25TZWxlY3RBbGxDbGljaycsICdkcm9wZG93blNlbGVjdEFsbENsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDb3VudGVyQmFkZ2UgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FDb3VudGVyQmFkZ2Uge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjb2xvcicsICdjb3VudCcsICdkb3QnLCAnb2Zmc2V0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWNvdW50ZXItYmFkZ2UnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2NvdW50JywgJ2RvdCcsICdvZmZzZXQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ291bnRlckJhZGdlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBEYXRlUGlja2VyTW9udGhZZWFyVHlwZXMgYXMgSVZlZ2FEYXRlUGlja2VyRGF0ZVBpY2tlck1vbnRoWWVhclR5cGVzIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtZGF0ZS1waWNrZXIvdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FEYXRlUGlja2VyIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhRGF0ZVBpY2tlciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2hhbmdlIG9mIHRoZSB2YWx1ZSBpbiB0aGUgZGF0ZSBwaWNrZXIsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQHZlZ2FWZXJzaW9uIDEuMy4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nIHwgc3RyaW5nW10+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2Ugb2YgdGhlIHZhbHVlIGluIHRoZSBkYXRlIHBpY2tlcixcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZyB8IHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgbW9udGggYW5kIHllYXIgY2hhbmdlIHdoZW4gdGhlIG5hdmlnYXRpb24gYnV0dG9ucyBhcmUgY2xpY2tlZCBvciB0aGUgbW9udGggYW5kIHllYXIgZHJvcGRvd25zIGFyZSBzZWxlY3RlZCBpbiB0aGUgZGF0ZSBwaWNrZXIsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQHZlZ2FWZXJzaW9uIDIuNjEuMFxuICAgKi9cbiAgdmVnYU1vbnRoWWVhckNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRGF0ZVBpY2tlckRhdGVQaWNrZXJNb250aFllYXJUeXBlcz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIG1vbnRoIGFuZCB5ZWFyIGNoYW5nZSB3aGVuIHRoZSBuYXZpZ2F0aW9uIGJ1dHRvbnMgYXJlIGNsaWNrZWQgb3IgdGhlIG1vbnRoIGFuZCB5ZWFyIGRyb3Bkb3ducyBhcmUgc2VsZWN0ZWQgaW4gdGhlIGRhdGUgcGlja2VyLCBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi42MS4wXG4gICAqL1xuICBtb250aFllYXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYURhdGVQaWNrZXJEYXRlUGlja2VyTW9udGhZZWFyVHlwZXM+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FsbG93UmVwaWNrJywgJ2F1dG9WYWxpZGF0aW9uJywgJ2NsZWFyQnV0dG9uJywgJ2Rpc2FibGVkJywgJ2Ryb3Bkb3duQ29uZmlnJywgJ2Zvcm1hdCcsICdpc0RhdGVEaXNhYmxlZCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ21heERhdGUnLCAnbWluRGF0ZScsICdtb2RlJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Nob3dDbGVhckljb24nLCAnc2hvd1llYXJNb250aERyb3Bkb3ducycsICdzaXplJywgJ3RpbWV6b25lJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddLFxuICBtZXRob2RzOiBbJ2RvQ2xvc2UnLCAnZG9PcGVuJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWRhdGUtcGlja2VyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhbGxvd1JlcGljaycsICdhdXRvVmFsaWRhdGlvbicsICdjbGVhckJ1dHRvbicsICdkaXNhYmxlZCcsICdkcm9wZG93bkNvbmZpZycsICdmb3JtYXQnLCAnaXNEYXRlRGlzYWJsZWQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtYXhEYXRlJywgJ21pbkRhdGUnLCAnbW9kZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaG93Q2xlYXJJY29uJywgJ3Nob3dZZWFyTW9udGhEcm9wZG93bnMnLCAnc2l6ZScsICd0aW1lem9uZScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhRGF0ZVBpY2tlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FNb250aFllYXJDaGFuZ2UnLCAnbW9udGhZZWFyQ2hhbmdlJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgRGF0ZVBpY2tlck1vbnRoWWVhclR5cGVzIGFzIElWZWdhRGF0ZVBpY2tlckNhbGVuZGFyRGF0ZVBpY2tlck1vbnRoWWVhclR5cGVzIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtZGF0ZS1waWNrZXIvdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FEYXRlUGlja2VyQ2FsZW5kYXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FEYXRlUGlja2VyQ2FsZW5kYXIge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBvZiB0aGUgdmFsdWUgaW4gdGhlIGRhdGUgcGlja2VyLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjcyLjBcbiAgICovXG4gIHZlZ2FDbGVhcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZyB8IHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2hhbmdlIG9mIHRoZSB2YWx1ZSBpbiB0aGUgZGF0ZSBwaWNrZXIsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNzIuMFxuICAgKi9cbiAgY2xlYXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmcgfCBzdHJpbmdbXT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIG1vbnRoIGFuZCB5ZWFyIGNoYW5nZSB3aGVuIHRoZSBuYXZpZ2F0aW9uIGJ1dHRvbnMgYXJlIGNsaWNrZWQgb3IgdGhlIG1vbnRoIGFuZCB5ZWFyIGRyb3Bkb3ducyBhcmUgc2VsZWN0ZWQgaW4gdGhlIGRhdGUgcGlja2VyLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjYxLjBcbiAgICovXG4gIHZlZ2FNb250aFllYXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYURhdGVQaWNrZXJDYWxlbmRhckRhdGVQaWNrZXJNb250aFllYXJUeXBlcz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIG1vbnRoIGFuZCB5ZWFyIGNoYW5nZSB3aGVuIHRoZSBuYXZpZ2F0aW9uIGJ1dHRvbnMgYXJlIGNsaWNrZWQgb3IgdGhlIG1vbnRoIGFuZCB5ZWFyIGRyb3Bkb3ducyBhcmUgc2VsZWN0ZWQgaW4gdGhlIGRhdGUgcGlja2VyLCBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi42MS4wXG4gICAqL1xuICBtb250aFllYXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYURhdGVQaWNrZXJDYWxlbmRhckRhdGVQaWNrZXJNb250aFllYXJUeXBlcz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBvZiB0aGUgdmFsdWUgaW4gdGhlIGRhdGUgcGlja2VyLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjcyLjBcbiAgICovXG4gIHZlZ2FTZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmcgfCBzdHJpbmdbXT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBvZiB0aGUgdmFsdWUgaW4gdGhlIGRhdGUgcGlja2VyLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjcyLjBcbiAgICovXG4gIHNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZyB8IHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgdG9kYXkgYnV0dG9uIGlzIGNsaWNrZWQgaW4gdGhlIGRhdGUgcGlja2VyLiBAdmVnYVZlcnNpb24gMi44OC4wXG4gICAqL1xuICB2ZWdhVG9kYXlDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHRvZGF5IGJ1dHRvbiBpcyBjbGlja2VkIGluIHRoZSBkYXRlIHBpY2tlci4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuODguMFxuICAgKi9cbiAgdG9kYXlDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY2xlYXJCdXR0b24nLCAnZGF0ZUluZGljYXRvcicsICdkdWFsTW9udGhzJywgJ2ZpbGxDb250YWluZXInLCAnZm9ybWF0JywgJ2lzRGF0ZURpc2FibGVkJywgJ21heERhdGUnLCAnbWluRGF0ZScsICdtb2RlJywgJ3NlbGVjdGlvbicsICdzaG93WWVhck1vbnRoRHJvcGRvd25zJywgJ3NpemUnLCAnc3RhdGljSGVpZ2h0JywgJ3RpbWV6b25lJywgJ3llYXJNb250aERyb3Bkb3duUHJvcHMnXSxcbiAgbWV0aG9kczogWydyZXNldCcsICd0cmlnZ2VyUmVwaWNrJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWRhdGUtcGlja2VyLWNhbGVuZGFyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjbGVhckJ1dHRvbicsICdkYXRlSW5kaWNhdG9yJywgJ2R1YWxNb250aHMnLCAnZmlsbENvbnRhaW5lcicsICdmb3JtYXQnLCAnaXNEYXRlRGlzYWJsZWQnLCAnbWF4RGF0ZScsICdtaW5EYXRlJywgJ21vZGUnLCAnc2VsZWN0aW9uJywgJ3Nob3dZZWFyTW9udGhEcm9wZG93bnMnLCAnc2l6ZScsICdzdGF0aWNIZWlnaHQnLCAndGltZXpvbmUnLCAneWVhck1vbnRoRHJvcGRvd25Qcm9wcyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FEYXRlUGlja2VyQ2FsZW5kYXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xlYXInLCAnY2xlYXInLCAndmVnYU1vbnRoWWVhckNoYW5nZScsICdtb250aFllYXJDaGFuZ2UnLCAndmVnYVNlbGVjdGlvbkNoYW5nZScsICdzZWxlY3Rpb25DaGFuZ2UnLCAndmVnYVRvZGF5Q2xpY2snLCAndG9kYXlDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhRGlhbG9nIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhRGlhbG9nIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY2FuY2VsQnV0dG9uJywgJ2NvbnRlbnQnLCAnZGlhbG9nVGl0bGUnLCAnaGFuZGxlQ2FuY2VsJywgJ2hhbmRsZU9rJywgJ21vZGFsUHJvcHMnLCAnb2tCdXR0b24nLCAnc2hvd0NhbmNlbCcsICd0eXBlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWRpYWxvZycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY2FuY2VsQnV0dG9uJywgJ2NvbnRlbnQnLCAnZGlhbG9nVGl0bGUnLCAnaGFuZGxlQ2FuY2VsJywgJ2hhbmRsZU9rJywgJ21vZGFsUHJvcHMnLCAnb2tCdXR0b24nLCAnc2hvd0NhbmNlbCcsICd0eXBlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYURpYWxvZyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FEaXZpZGVyIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhRGl2aWRlciB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2RpcmVjdGlvbicsICdtYXJnaW4nLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1kaXZpZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydkaXJlY3Rpb24nLCAnbWFyZ2luJywgJ3ZhcmlhbnQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhRGl2aWRlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYURyb3Bkb3duU2VhcmNoVHJpZ2dlckV2ZW50RGV0YWlsIGFzIElWZWdhRHJvcGRvd25WZWdhRHJvcGRvd25TZWFyY2hUcmlnZ2VyRXZlbnREZXRhaWwgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1kcm9wZG93bi90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYURyb3Bkb3duIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhRHJvcGRvd24ge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGRyb3Bkb3duIGl0ZW0gaGFzIGJlZW4gY2xpY2tlZC5cblxuVGhlIGV2ZW50J3MgYGRldGFpbGAgcHJvcGVydHkgY29udGFpbnMgdGhlIGtleSBvZiB0aGUgY2xpY2tlZCBpdGVtLiBAdmVnYVZlcnNpb24gMS4xMS4wXG4gICAqL1xuICB2ZWdhRHJvcGRvd25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGRyb3Bkb3duIGl0ZW0gaGFzIGJlZW4gY2xpY2tlZC5cblxuVGhlIGV2ZW50J3MgYGRldGFpbGAgcHJvcGVydHkgY29udGFpbnMgdGhlIGtleSBvZiB0aGUgY2xpY2tlZCBpdGVtLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGRyb3Bkb3duQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgb25seSBmaXJlZCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGhhcyBiZWVuIGNsaWNrZWQuXG5cblRoZSBldmVudCdzIGBkZXRhaWxgIHByb3BlcnR5IGlzIGB0cnVlYCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGlzIGNsaWNrZWQgdG8gc2VsZWN0IGFsbCBpdGVtcyxcbiAgIGFuZCBgZmFsc2VgIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaXMgY2xpY2tlZCB0byBjbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXMuIEB2ZWdhVmVyc2lvbiAyLjkzLjBcbiAgICovXG4gIHZlZ2FEcm9wZG93blNlbGVjdEFsbENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBvbmx5IGZpcmVkIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaGFzIGJlZW4gY2xpY2tlZC5cblxuVGhlIGV2ZW50J3MgYGRldGFpbGAgcHJvcGVydHkgaXMgYHRydWVgIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaXMgY2xpY2tlZCB0byBzZWxlY3QgYWxsIGl0ZW1zLFxuICAgYW5kIGBmYWxzZWAgd2hlbiB0aGUgU2VsZWN0IEFsbCBjaGVja2JveCBpcyBjbGlja2VkIHRvIGNsZWFyIGFsbCBzZWxlY3RlZCBpdGVtcy4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuOTMuMFxuICAgKi9cbiAgZHJvcGRvd25TZWxlY3RBbGxDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIGRyb3Bkb3duIGhhcyBiZWVuIGRpc3BsYXllZCxcbiAgIGVpdGhlciBwcm9ncmFtbWF0aWNhbGx5IG9yIHZpYSB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMS4zLjBcbiAgICovXG4gIHZlZ2FTaG93OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBkcm9wZG93biBoYXMgYmVlbiBkaXNwbGF5ZWQsXG4gICBlaXRoZXIgcHJvZ3JhbW1hdGljYWxseSBvciB2aWEgdXNlciBpbnRlcmFjdGlvbi4gVGhlIG5hbWUgaXMgbm90IGBzaG93YCBiZWNhdXNlIGFscmVhZHkgaGFzIGEgbWV0aG9kIGBzaG93YC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBkcm9wZG93blNob3c6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIGRyb3Bkb3duIGhhcyBiZWVuIGRpc21pc3NlZCxcbiAgIGVpdGhlciBwcm9ncmFtbWF0aWNhbGx5IG9yIHZpYSB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMS4zLjBcbiAgICovXG4gIHZlZ2FIaWRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBkcm9wZG93biBoYXMgYmVlbiBkaXNtaXNzZWQsXG4gICBlaXRoZXIgcHJvZ3JhbW1hdGljYWxseSBvciB2aWEgdXNlciBpbnRlcmFjdGlvbi4gVGhlIG5hbWUgaXMgbm90IGBoaWRlYCBiZWNhdXNlIGFscmVhZHkgaGFzIGEgbWV0aG9kIGBoaWRlYC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBkcm9wZG93bkhpZGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBhZGRpdGlvbiBvZiBhIG5ldyB2YWx1ZVxuICAgdG8gdGhlIGRyb3Bkb3duIHNvdXJjZSBsaXN0LlxuXG5UaGUgZXZlbnQncyBgZGV0YWlsYCBwcm9wZXJ0eSBjb250YWlucyB0aGUgbmV3IHZhbHVlLlxuXG5UaGUgZHJvcGRvd24gX2RvZXMgbm90XyBhdXRvbWF0aWNhbGx5IGFkZCB0aGUgbmV3IHZhbHVlIHRvIHRoZSBzb3VyY2UgbGlzdC4gQHZlZ2FWZXJzaW9uIDEuMTQuMFxuICAgKi9cbiAgdmVnYUNyZWF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGFkZGl0aW9uIG9mIGEgbmV3IHZhbHVlXG4gICB0byB0aGUgZHJvcGRvd24gc291cmNlIGxpc3QuXG5cblRoZSBldmVudCdzIGBkZXRhaWxgIHByb3BlcnR5IGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUuXG5cblRoZSBkcm9wZG93biBfZG9lcyBub3RfIGF1dG9tYXRpY2FsbHkgYWRkIHRoZSBuZXcgdmFsdWUgdG8gdGhlIHNvdXJjZSBsaXN0LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNyZWF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHNlYXJjaCBldmVudCBpbiB0aGUgZHJvcGRvd24sXG4gICBidXQgb25seSBpZiBgdXNlRGVmYXVsdEZpbHRlcmAgaXMgc2V0IHRvIGBmYWxzZWAuIEB2ZWdhVmVyc2lvbiAxLjI0LjBcbiAgICovXG4gIHZlZ2FTZWFyY2g6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBzZWFyY2ggZXZlbnQgaW4gdGhlIGRyb3Bkb3duLFxuICAgYnV0IG9ubHkgaWYgYHVzZURlZmF1bHRGaWx0ZXJgIGlzIHNldCB0byBgZmFsc2VgLiBUaGUgbmFtZSBpcyBub3QgYHNlYXJjaGAgYmVjYXVzZSBhbHJlYWR5IGhhcyBhIG1ldGhvZCBgc2VhcmNoYC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBkcm9wZG93blNlYXJjaDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHJlc2V0IGV2ZW50IGluIHRoZSBkcm9wZG93bi4gQHZlZ2FWZXJzaW9uIDIuNDYuMFxuICAgKi9cbiAgdmVnYVJlc2V0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgcmVzZXQgZXZlbnQgaW4gdGhlIGRyb3Bkb3duLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi40Ni4wXG4gICAqL1xuICByZXNldDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHNlYXJjaCBldmVudCB0cmlnZ2VyZWQgd2l0aGluIHRoZSBkcm9wZG93bixcbiAgIGJ1dCBvbmx5IGlmIGB1c2VEZWZhdWx0RmlsdGVyYCBpcyBzZXQgdG8gYGZhbHNlYC5cblVubGlrZSB0aGUgVmVnYXNlYXJjaCBldmVudCwgdGhpcyBldmVudCBpbmNsdWRlcyB0aGUgZGV0YWlscyBvZiB0aGUgdXNlciB3aG8gdHJpZ2dlcmVkIGl0LlxuSXQgY2FuIGJlIHRyaWdnZXJlZCBpbiB0d28gd2F5czogYnkgcHJlc3NpbmcgXCJFbnRlclwiIG9yIHRocm91Z2ggdXNlciBpbnB1dC4gQHZlZ2FWZXJzaW9uIDIuMzAuMFxuICAgKi9cbiAgdmVnYVNlYXJjaFRyaWdnZXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYURyb3Bkb3duVmVnYURyb3Bkb3duU2VhcmNoVHJpZ2dlckV2ZW50RGV0YWlsPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgc2VhcmNoIGV2ZW50IHRyaWdnZXJlZCB3aXRoaW4gdGhlIGRyb3Bkb3duLFxuICAgYnV0IG9ubHkgaWYgYHVzZURlZmF1bHRGaWx0ZXJgIGlzIHNldCB0byBgZmFsc2VgLlxuVW5saWtlIHRoZSBWZWdhc2VhcmNoIGV2ZW50LCB0aGlzIGV2ZW50IGluY2x1ZGVzIHRoZSBkZXRhaWxzIG9mIHRoZSB1c2VyIHdobyB0cmlnZ2VyZWQgaXQuXG5JdCBjYW4gYmUgdHJpZ2dlcmVkIGluIHR3byB3YXlzOiBieSBwcmVzc2luZyBcIkVudGVyXCIgb3IgdGhyb3VnaCB1c2VyIGlucHV0LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4zMC4wXG4gICAqL1xuICBzZWFyY2hUcmlnZ2VyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FEcm9wZG93blZlZ2FEcm9wZG93blNlYXJjaFRyaWdnZXJFdmVudERldGFpbD4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWxpZ25tZW50JywgJ2FsbG93U2VsZWN0QWxsJywgJ2Nhc2VTZW5zaXRpdmUnLCAnZHluYW1pY09wdGlvbicsICdpc0xhenlMb2FkaW5nJywgJ2lzTG9hZGluZycsICdpc1NjcmVlblBvc2l0aW9uJywgJ2l0ZW1EaXNwbGF5UnVsZScsICdpdGVtVG9vbHRpcFByb3BzJywgJ21hdGNoQ29udGFpbmVySGVpZ2h0JywgJ21hdGNoVGFyZ2V0V2lkdGgnLCAnbWF4SGVpZ2h0JywgJ21heFdpZHRoJywgJ21pbldpZHRoJywgJ3BsYWNlbWVudCcsICdwb3NpdGlvblJlbGF0aXZlVG8nLCAncHJlZml4SWNvblNsb3QnLCAncHJlc2VydmVWYWx1ZUlmTm90SW5Tb3VyY2UnLCAncmVzZXR0YWJsZScsICdzZWFyY2hOb1Jlc3VsdHNUZXh0JywgJ3NlYXJjaFRyaWdnZXJCeScsICdzZWFyY2hhYmxlJywgJ3NlbGVjdFR5cGUnLCAnc2VsZWN0ZWRTb3VyY2VLZXknLCAnc2l6ZScsICdzb3VyY2UnLCAndHJhbnNsb2NhdGlvbicsICd0cmlnZ2VyJywgJ3VzZURlZmF1bHRGaWx0ZXInLCAndmlydHVhbGl6YXRpb25UaHJlc2hvbGQnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2hpZGUnLCAnc2VhcmNoJywgJ2NsZWFyU2VsZWN0aW9uJywgJ2dldFNlbGVjdGlvbicsICdzZXRTZWxlY3Rpb24nLCAnc3luY1RlbXBsYXRlRGF0YSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1kcm9wZG93bicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYWxpZ25tZW50JywgJ2FsbG93U2VsZWN0QWxsJywgJ2Nhc2VTZW5zaXRpdmUnLCAnZHluYW1pY09wdGlvbicsICdpc0xhenlMb2FkaW5nJywgJ2lzTG9hZGluZycsICdpc1NjcmVlblBvc2l0aW9uJywgJ2l0ZW1EaXNwbGF5UnVsZScsICdpdGVtVG9vbHRpcFByb3BzJywgJ21hdGNoQ29udGFpbmVySGVpZ2h0JywgJ21hdGNoVGFyZ2V0V2lkdGgnLCAnbWF4SGVpZ2h0JywgJ21heFdpZHRoJywgJ21pbldpZHRoJywgJ3BsYWNlbWVudCcsICdwb3NpdGlvblJlbGF0aXZlVG8nLCAncHJlZml4SWNvblNsb3QnLCAncHJlc2VydmVWYWx1ZUlmTm90SW5Tb3VyY2UnLCAncmVzZXR0YWJsZScsICdzZWFyY2hOb1Jlc3VsdHNUZXh0JywgJ3NlYXJjaFRyaWdnZXJCeScsICdzZWFyY2hhYmxlJywgJ3NlbGVjdFR5cGUnLCAnc2VsZWN0ZWRTb3VyY2VLZXknLCAnc2l6ZScsICdzb3VyY2UnLCAndHJhbnNsb2NhdGlvbicsICd0cmlnZ2VyJywgJ3VzZURlZmF1bHRGaWx0ZXInLCAndmlydHVhbGl6YXRpb25UaHJlc2hvbGQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhRHJvcGRvd24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhRHJvcGRvd25DbGljaycsICdkcm9wZG93bkNsaWNrJywgJ3ZlZ2FEcm9wZG93blNlbGVjdEFsbENsaWNrJywgJ2Ryb3Bkb3duU2VsZWN0QWxsQ2xpY2snLCAndmVnYVNob3cnLCAnZHJvcGRvd25TaG93JywgJ3ZlZ2FIaWRlJywgJ2Ryb3Bkb3duSGlkZScsICd2ZWdhQ3JlYXRlJywgJ2NyZWF0ZScsICd2ZWdhU2VhcmNoJywgJ2Ryb3Bkb3duU2VhcmNoJywgJ3ZlZ2FSZXNldCcsICdyZXNldCcsICd2ZWdhU2VhcmNoVHJpZ2dlcicsICdzZWFyY2hUcmlnZ2VyJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FEcm9wZG93bkNvbnRlbnRCb3ggZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FEcm9wZG93bkNvbnRlbnRCb3gge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWRyb3Bkb3duLWNvbnRlbnQtYm94JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYURyb3Bkb3duQ29udGVudEJveCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FEcm9wZG93bkdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhRHJvcGRvd25Hcm91cCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2RpdmlkZScsICdsYWJlbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1kcm9wZG93bi1ncm91cCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnZGl2aWRlJywgJ2xhYmVsJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYURyb3Bkb3duR3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5pbXBvcnQgdHlwZSB7IFZlZ2FEcm9wZG93bkl0ZW1DbGlja0V2ZW50IGFzIElWZWdhRHJvcGRvd25JdGVtVmVnYURyb3Bkb3duSXRlbUNsaWNrRXZlbnQgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1kcm9wZG93bi92ZWdhLWRyb3Bkb3duLWl0ZW0vdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FEcm9wZG93bkl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FEcm9wZG93bkl0ZW0ge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGRyb3Bkb3duIGl0ZW0gaGFzIGJlZW4gY2xpY2tlZC4gQHZlZ2FWZXJzaW9uIDEuNDcuMFxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FEcm9wZG93bkl0ZW1WZWdhRHJvcGRvd25JdGVtQ2xpY2tFdmVudD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGRyb3Bkb3duIGl0ZW0gaGFzIGJlZW4gY2xpY2tlZC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRHJvcGRvd25JdGVtVmVnYURyb3Bkb3duSXRlbUNsaWNrRXZlbnQ+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NvdW50JywgJ2RhbmdlcicsICdkaXNhYmxlZCcsICdoZWlnaHQnLCAnaXRlbUtleScsICdsYWJlbCcsICdwcmVmaXhJY29uJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWRyb3Bkb3duLWl0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NvdW50JywgJ2RhbmdlcicsICdkaXNhYmxlZCcsICdoZWlnaHQnLCAnaXRlbUtleScsICdsYWJlbCcsICdwcmVmaXhJY29uJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYURyb3Bkb3duSXRlbSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDbGljaycsICdjbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhRmllbGRFcnJvciBleHRlbmRzIENvbXBvbmVudHMuVmVnYUZpZWxkRXJyb3Ige31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydtZXNzYWdlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWZpZWxkLWVycm9yJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydtZXNzYWdlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUZpZWxkRXJyb3Ige1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhRmllbGRMYWJlbCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUZpZWxkTGFiZWwge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgZmllbGQgbGFiZWwgaGFzIGJlZW4gY2xpY2tlZC4gQHZlZ2FWZXJzaW9uIDEuNDMuMFxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBzdWZmaXggYnV0dG9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmllbGQgbGFiZWwgaGFzIGJlZW4gY2xpY2tlZC4gQHZlZ2FWZXJzaW9uIDIuMjUuMFxuICAgKi9cbiAgdmVnYUxhYmVsQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIHN1ZmZpeCBidXR0b24gYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWVsZCBsYWJlbCBoYXMgYmVlbiBjbGlja2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICBsYWJlbEJ1dHRvbkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdpc0ZpZWxkUmVxdWlyZWQnLCAnbGFiZWwnLCAnb3B0aW9uYWwnLCAnc3VmZml4QnV0dG9uQ29uZmlnJywgJ3N1ZmZpeEJ1dHRvblByb3BzJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWZpZWxkLWxhYmVsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdpc0ZpZWxkUmVxdWlyZWQnLCAnbGFiZWwnLCAnb3B0aW9uYWwnLCAnc3VmZml4QnV0dG9uQ29uZmlnJywgJ3N1ZmZpeEJ1dHRvblByb3BzJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUZpZWxkTGFiZWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAndmVnYUxhYmVsQnV0dG9uQ2xpY2snLCAnbGFiZWxCdXR0b25DbGljayddKTtcbiAgfVxufVxuXG5pbXBvcnQgdHlwZSB7IFZlZ2FGaWxlVXBsb2FkZXJGaWxlcyBhcyBJVmVnYUZpbGVVcGxvYWRlclZlZ2FGaWxlVXBsb2FkZXJGaWxlcyB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLWZpbGUtdXBsb2FkZXIvdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBWZWdhRmlsZVVwbG9hZGVyRmlsZSBhcyBJVmVnYUZpbGVVcGxvYWRlclZlZ2FGaWxlVXBsb2FkZXJGaWxlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtZmlsZS11cGxvYWRlci90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUZpbGVVcGxvYWRlciBleHRlbmRzIENvbXBvbmVudHMuVmVnYUZpbGVVcGxvYWRlciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIGNoYW5nZSBpbiB0aGUgZmlsZSBsaXN0LiBAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FGaWxlVXBsb2FkZXJWZWdhRmlsZVVwbG9hZGVyRmlsZXM+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgY2hhbmdlIGluIHRoZSBmaWxlIGxpc3QuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjI1LjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRmlsZVVwbG9hZGVyVmVnYUZpbGVVcGxvYWRlckZpbGVzPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIGZpbGUgc2VsZWN0aW9uIGNoYW5nZS4gQnkgZGVmYXVsdCwgdGhlIGNvbXBvbmVudCB2YWx1ZVxuICBpcyB1cGRhdGVkLCBidXQgdGhpcyBiZWhhdmlvciBjYW4gYmUgcHJldmVudGVkLiBAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICB2ZWdhU2VsZWN0ZWRGaWxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FGaWxlVXBsb2FkZXJWZWdhRmlsZVVwbG9hZGVyRmlsZXM+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgZmlsZSBzZWxlY3Rpb24gY2hhbmdlLiBCeSBkZWZhdWx0LCB0aGUgY29tcG9uZW50IHZhbHVlXG4gIGlzIHVwZGF0ZWQsIGJ1dCB0aGlzIGJlaGF2aW9yIGNhbiBiZSBwcmV2ZW50ZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjI1LjBcbiAgICovXG4gIHNlbGVjdGVkRmlsZUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRmlsZVVwbG9hZGVyVmVnYUZpbGVVcGxvYWRlckZpbGVzPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgc2VsZWN0ZWQgZmlsZSB3aWxsIGJlIHJlbW92ZWQuIEJ5IGRlZmF1bHQsIHRoZSBjb21wb25lbnQgdmFsdWVcbiAgaXMgdXBkYXRlZCwgYnV0IHRoaXMgYmVoYXZpb3IgY2FuIGJlIHByZXZlbnRlZC4gQHZlZ2FWZXJzaW9uIDIuMjUuMFxuICAgKi9cbiAgdmVnYVJlbW92ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRmlsZVVwbG9hZGVyVmVnYUZpbGVVcGxvYWRlckZpbGU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBzZWxlY3RlZCBmaWxlIHdpbGwgYmUgcmVtb3ZlZC4gQnkgZGVmYXVsdCwgdGhlIGNvbXBvbmVudCB2YWx1ZVxuICBpcyB1cGRhdGVkLCBidXQgdGhpcyBiZWhhdmlvciBjYW4gYmUgcHJldmVudGVkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICByZW1vdmU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUZpbGVVcGxvYWRlclZlZ2FGaWxlVXBsb2FkZXJGaWxlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgZmlsZSB3aWxsIGJlIHJlLXVwbG9hZGVkLiBAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICB2ZWdhUmV0cnk6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUZpbGVVcGxvYWRlclZlZ2FGaWxlVXBsb2FkZXJGaWxlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgZmlsZSB3aWxsIGJlIHJlLXVwbG9hZGVkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICByZXRyeTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRmlsZVVwbG9hZGVyVmVnYUZpbGVVcGxvYWRlckZpbGU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBmaWxlIHdpbGwgYmUgb3BlbmVkIGZvciBwcmV2aWV3LiBAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICB2ZWdhUHJldmlldzogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRmlsZVVwbG9hZGVyVmVnYUZpbGVVcGxvYWRlckZpbGU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBmaWxlIHdpbGwgYmUgb3BlbmVkIGZvciBwcmV2aWV3LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICBwcmV2aWV3OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FGaWxlVXBsb2FkZXJWZWdhRmlsZVVwbG9hZGVyRmlsZT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWNjZXB0JywgJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtYXhDb3VudCcsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1maWxlLXVwbG9hZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhY2NlcHQnLCAnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ21heENvdW50JywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZScsICd2YXJpYW50J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUZpbGVVcGxvYWRlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FTZWxlY3RlZEZpbGVDaGFuZ2UnLCAnc2VsZWN0ZWRGaWxlQ2hhbmdlJywgJ3ZlZ2FSZW1vdmUnLCAncmVtb3ZlJywgJ3ZlZ2FSZXRyeScsICdyZXRyeScsICd2ZWdhUHJldmlldycsICdwcmV2aWV3J10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FGbGFnSWNvbiBleHRlbmRzIENvbXBvbmVudHMuVmVnYUZsYWdJY29uIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY291bnRyeScsICdzaXplJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWZsYWctaWNvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY291bnRyeScsICdzaXplJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUZsYWdJY29uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUZsZXggZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FGbGV4IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWxpZ25JdGVtcycsICdicmVha3BvaW50JywgJ2RpcmVjdGlvbicsICdmbGV4JywgJ2ZsZXhCYXNpcycsICdmbGV4R3JvdycsICdmbGV4U2hyaW5rJywgJ2ZsZXhXcmFwJywgJ2dhcCcsICdqdXN0aWZ5Q29udGVudCcsICdtYXJnaW4nLCAndXNlTmF0aXZlRmxleCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1mbGV4JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhbGlnbkl0ZW1zJywgJ2JyZWFrcG9pbnQnLCAnZGlyZWN0aW9uJywgJ2ZsZXgnLCAnZmxleEJhc2lzJywgJ2ZsZXhHcm93JywgJ2ZsZXhTaHJpbmsnLCAnZmxleFdyYXAnLCAnZ2FwJywgJ2p1c3RpZnlDb250ZW50JywgJ21hcmdpbicsICd1c2VOYXRpdmVGbGV4J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUZsZXgge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhRm9udCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUZvbnQge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhcycsICdjb2xvcicsICdkaXNhYmxlUmVzcG9uc2l2ZScsICd0ZXh0QWxpZ24nLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1mb250JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhcycsICdjb2xvcicsICdkaXNhYmxlUmVzcG9uc2l2ZScsICd0ZXh0QWxpZ24nLCAndmFyaWFudCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FGb250IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUZvcm0gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FGb3JtIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2UgaW4gdGhlIHZhbGlkYXRpb24gcmVzdWx0LiBAdmVnYVZlcnNpb24gMS45LjFcbiAgICovXG4gIHZlZ2FWYWxpZGF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2UgaW4gdGhlIHZhbGlkYXRpb24gcmVzdWx0LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIHZhbGlkYXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHN1Ym1pc3Npb24gb2YgdGhlIGZvcm0uIEB2ZWdhVmVyc2lvbiAxLjI0LjBcbiAgICovXG4gIHZlZ2FGb3JtU3VibWl0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dW5rbm93bj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHN1Ym1pc3Npb24gb2YgdGhlIGZvcm0uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgZm9ybVN1Ym1pdDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHVua25vd24+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSByZXNldCBvZiB0aGUgZm9ybS4gQHZlZ2FWZXJzaW9uIDEuMjQuMFxuICAgKi9cbiAgdmVnYUZvcm1SZXNldDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHJlc2V0IG9mIHRoZSBmb3JtLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGZvcm1SZXNldDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWN0aW9uJywgJ2Rpc2FibGVCbHVyVmFsaWRhdGlvbicsICdpc1RvdWNoZWQnLCAnaXNWYWxpZCcsICdtZXRob2QnLCAndXNlTmF0aXZlRm9ybSddLFxuICBtZXRob2RzOiBbJ3ZhbGlkJywgJ2dldFZhbHVlJywgJ3NldFZhbHVlJywgJ3Jlc2V0JywgJ3NldFZhbGlkYXRpb25TdGF0ZXMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtZm9ybScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYWN0aW9uJywgJ2Rpc2FibGVCbHVyVmFsaWRhdGlvbicsICdpc1RvdWNoZWQnLCAnaXNWYWxpZCcsICdtZXRob2QnLCAndXNlTmF0aXZlRm9ybSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FGb3JtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYVZhbGlkYXRlJywgJ3ZhbGlkYXRlJywgJ3ZlZ2FGb3JtU3VibWl0JywgJ2Zvcm1TdWJtaXQnLCAndmVnYUZvcm1SZXNldCcsICdmb3JtUmVzZXQnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUdyaWQgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FHcmlkIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY29sdW1uJywgJ2dhcCcsICdqdXN0aWZ5SXRlbXMnLCAncm93J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWdyaWQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NvbHVtbicsICdnYXAnLCAnanVzdGlmeUl0ZW1zJywgJ3JvdyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FHcmlkIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUhpbnQgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FIaW50IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1oaW50JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYUhpbnQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhSWNvbiBleHRlbmRzIENvbXBvbmVudHMuVmVnYUljb24ge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjb2xvcicsICdpY29uJywgJ3NpemUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtaWNvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY29sb3InLCAnaWNvbicsICdzaXplJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUljb24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5pbXBvcnQgdHlwZSB7IFZlZ2FGaWxlT3B0aW9uYWwgYXMgSVZlZ2FJbWFnZVVwbG9hZGVyVmVnYUZpbGVPcHRpb25hbCB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLWltYWdlLXVwbG9hZGVyL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhSW1hZ2VVcGxvYWRlciBleHRlbmRzIENvbXBvbmVudHMuVmVnYUltYWdlVXBsb2FkZXIge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSB2YWx1ZSBjaGFuZ2UuIEB2ZWdhVmVyc2lvbiAxLjE0LjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUltYWdlVXBsb2FkZXJWZWdhRmlsZU9wdGlvbmFsPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIHZhbHVlIGNoYW5nZS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSByZW1vdmFsIG9mIGEgdmFsdWUuIEB2ZWdhVmVyc2lvbiAxLjE0LjBcbiAgICovXG4gIHZlZ2FSZW1vdmU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSByZW1vdmFsIG9mIGEgdmFsdWUuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgcmVtb3ZlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2FuY2VsbGF0aW9uIG9mIGFuIHVwbG9hZGluZyBldmVudC4gQHZlZ2FWZXJzaW9uIDEuMTQuMFxuICAgKi9cbiAgdmVnYUNhbmNlbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHJlbW92YWwgb2YgYSB2YWx1ZS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjYW5jZWw6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FjY2VwdCcsICdhY3Rpb25TdWJUaXRsZScsICdhY3Rpb25UaXRsZScsICdhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoZWlnaHQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3Nob3dQcmV2aWV3QnV0dG9uJywgJ3Nob3dSZW1vdmVCdXR0b24nLCAnc2hvd1JlcGxhY2VCdXR0b24nLCAnc3RhdHVzJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZScsICd3aWR0aCddLFxuICBtZXRob2RzOiBbJ2dldENvbnRlbnRVUkwnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtaW1hZ2UtdXBsb2FkZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2FjY2VwdCcsICdhY3Rpb25TdWJUaXRsZScsICdhY3Rpb25UaXRsZScsICdhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoZWlnaHQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3Nob3dQcmV2aWV3QnV0dG9uJywgJ3Nob3dSZW1vdmVCdXR0b24nLCAnc2hvd1JlcGxhY2VCdXR0b24nLCAnc3RhdHVzJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZScsICd3aWR0aCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FJbWFnZVVwbG9hZGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnLCAndmVnYVJlbW92ZScsICdyZW1vdmUnLCAndmVnYUNhbmNlbCcsICdjYW5jZWwnXSk7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBEYXRhVHJhbnNmZXJUeXBlIGFzIElWZWdhSW5wdXREYXRhVHJhbnNmZXJUeXBlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtaW5wdXQvdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBWZWdhRHJvcGRvd25Tb3VyY2VJdGVtIGFzIElWZWdhSW5wdXRWZWdhRHJvcGRvd25Tb3VyY2VJdGVtIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtZHJvcGRvd24vdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FJbnB1dCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUlucHV0IHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgY2hhbmdlcy5cblxuVGhlIHRpbWluZyBvZiB0aGlzIGV2ZW50IGRlcGVuZHMgb24gdGhlIGB2YWx1ZVVwZGF0ZVRyaWdnZXJgIHByb3A6XG4tIFdoZW4gYHZhbHVlVXBkYXRlVHJpZ2dlcmAgaXMgYCdpbnB1dCdgIChkZWZhdWx0KSwgZmlyZXMgb24gZXZlcnkga2V5c3Ryb2tlLlxuLSBXaGVuIGB2YWx1ZVVwZGF0ZVRyaWdnZXJgIGlzIGAnY2hhbmdlJ2AsIGZpcmVzIG9uIGJsdXIgb3Igd2hlbiB0aGUgdXNlciBwcmVzc2VzIEVudGVyLlxuXG5BbHNvIGZpcmVzIHdoZW4gdGhlIHVzZXIgY2xpY2tzIHRoZSBjbGVhciBpY29uIG9yIHdoZW4gdGhlIHZhbHVlIGlzXG5wcm9ncmFtbWF0aWNhbGx5IHVwZGF0ZWQuIEBldmVudERldGFpbCBgc3RyaW5nYCDigJQgVGhlIGN1cnJlbnQgaW5wdXQgdmFsdWUgYWZ0ZXIgdGhlIGNoYW5nZS4sQHZlZ2FWZXJzaW9uIDEuMC4xMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogTmF0aXZlLW5hbWVzcGFjZSBhbGlhcyBmb3IgdGhlIGB2ZWdhQ2hhbmdlYCBldmVudC5cblxuRW1pdHRlZCBhdCB0aGUgc2FtZSB0aW1lIGFuZCB1bmRlciB0aGUgc2FtZSBjb25kaXRpb25zIGFzIGB2ZWdhQ2hhbmdlYC5cblVzZSB0aGlzIGV2ZW50IHdoZW4gaW50ZWdyYXRpbmcgd2l0aCBmcmFtZXdvcmtzIHRoYXQgZXhwZWN0IG5hdGl2ZS1zdHlsZVxuZXZlbnQgbmFtZXMgKGUuZy4sIGBAY2hhbmdlYCBpbiBWdWUgb3IgQW5ndWxhcikuIEBldmVudERldGFpbCBgc3RyaW5nYCDigJQgVGhlIGN1cnJlbnQgaW5wdXQgdmFsdWUgYWZ0ZXIgdGhlIGNoYW5nZS4sQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgb24gZXZlcnkgbmF0aXZlIGBpbnB1dGAgZXZlbnQgZnJvbSB0aGUgdW5kZXJseWluZyBgPGlucHV0PmAgZWxlbWVudCxcbnJlZ2FyZGxlc3Mgb2YgdGhlIGB2YWx1ZVVwZGF0ZVRyaWdnZXJgIHNldHRpbmcuXG5cblRoaXMgZXZlbnQgZmlyZXMgb24gZXZlcnkga2V5c3Ryb2tlIGFuZCBwcm92aWRlcyB0aGUgcmF3IGlucHV0IHZhbHVlLlxuVXNlIHRoaXMgZm9yIHJlYWwtdGltZSBtb25pdG9yaW5nIChlLmcuLCBkcml2aW5nIGEgc3VnZ2VzdGlvbnMgZHJvcGRvd24pXG53aGlsZSBrZWVwaW5nIGB2ZWdhQ2hhbmdlYCBzZXQgdG8gYCdjaGFuZ2UnYCB0cmlnZ2VyIGZvciB0aGUgbWFpbiB2YWx1ZSBiaW5kaW5nLiBAZXZlbnREZXRhaWwgYHN0cmluZ2Ag4oCUIFRoZSByYXcgdmFsdWUgZnJvbSB0aGUgbmF0aXZlIGlucHV0IGVsZW1lbnQuLEB2ZWdhVmVyc2lvbiAyLjc1LjBcbiAgICovXG4gIHZlZ2FOYXRpdmVJbnB1dENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogTmF0aXZlLW5hbWVzcGFjZSBhbGlhcyBmb3IgdGhlIGB2ZWdhTmF0aXZlSW5wdXRDaGFuZ2VgIGV2ZW50LlxuXG5FbWl0dGVkIGF0IHRoZSBzYW1lIHRpbWUgYW5kIHVuZGVyIHRoZSBzYW1lIGNvbmRpdGlvbnMgYXNcbmB2ZWdhTmF0aXZlSW5wdXRDaGFuZ2VgLiBVc2UgdGhpcyBldmVudCB3aGVuIGludGVncmF0aW5nIHdpdGggZnJhbWV3b3Jrc1xudGhhdCBleHBlY3QgbmF0aXZlLXN0eWxlIGV2ZW50IG5hbWVzLiBAZXZlbnREZXRhaWwgYHN0cmluZ2Ag4oCUIFRoZSByYXcgdmFsdWUgZnJvbSB0aGUgbmF0aXZlIGlucHV0IGVsZW1lbnQuLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjc1LjBcbiAgICovXG4gIG5hdGl2ZUlucHV0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGlucHV0IGZpZWxkIGxvc2VzIGZvY3VzLlxuXG5UaGlzIGV2ZW50IGZpcmVzIGFmdGVyIHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBgPGlucHV0PmAgZWxlbWVudCdzIGBibHVyYFxuZXZlbnQuIFVzZWZ1bCBmb3IgdHJpZ2dlcmluZyB2YWxpZGF0aW9uLCBzYXZpbmcgc3RhdGUsIG9yIHVwZGF0aW5nIFVJXG53aGVuIHRoZSB1c2VyIG5hdmlnYXRlcyBhd2F5IGZyb20gdGhlIGZpZWxkLiBAZXZlbnREZXRhaWwgYHVuZGVmaW5lZGAg4oCUIE5vIHBheWxvYWQ7IGxpc3RlbiBmb3IgdGhlIGV2ZW50IG9jY3VycmVuY2Ugb25seS4sQHZlZ2FWZXJzaW9uIDEuMy4wXG4gICAqL1xuICB2ZWdhQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHVuZGVmaW5lZD4+O1xuICAvKipcbiAgICogTmF0aXZlLW5hbWVzcGFjZSBhbGlhcyBmb3IgdGhlIGB2ZWdhQmx1cmAgZXZlbnQuXG5cbkVtaXR0ZWQgYXQgdGhlIHNhbWUgdGltZSBhbmQgdW5kZXIgdGhlIHNhbWUgY29uZGl0aW9ucyBhcyBgdmVnYUJsdXJgLlxuVXNlIHRoaXMgZXZlbnQgd2hlbiBpbnRlZ3JhdGluZyB3aXRoIGZyYW1ld29ya3MgdGhhdCBleHBlY3QgbmF0aXZlLXN0eWxlXG5ldmVudCBuYW1lcy4gQGV2ZW50RGV0YWlsIGB1bmRlZmluZWRgIOKAlCBObyBwYXlsb2FkOyBsaXN0ZW4gZm9yIHRoZSBldmVudCBvY2N1cnJlbmNlIG9ubHkuLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgYmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHVuZGVmaW5lZD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBmaWVsZCByZWNlaXZlcyBmb2N1cy5cblxuVGhpcyBldmVudCBmaXJlcyBhZnRlciB0aGUgdW5kZXJseWluZyBuYXRpdmUgYDxpbnB1dD5gIGVsZW1lbnQncyBgZm9jdXNgXG5ldmVudCwgaW5jbHVkaW5nIHdoZW4gZm9jdXMgaXMgc2V0IHByb2dyYW1tYXRpY2FsbHkgdmlhIHRoZSBgZG9Gb2N1cygpYCBtZXRob2QuXG5Vc2VmdWwgZm9yIGhpZ2hsaWdodGluZyB0aGUgZmllbGQsIHNob3dpbmcgY29udGV4dHVhbCBoZWxwLCBvciBvcGVuaW5nXG5hIHN1Z2dlc3Rpb25zIGRyb3Bkb3duLiBAZXZlbnREZXRhaWwgYHVuZGVmaW5lZGAg4oCUIE5vIHBheWxvYWQ7IGxpc3RlbiBmb3IgdGhlIGV2ZW50IG9jY3VycmVuY2Ugb25seS4sQHZlZ2FWZXJzaW9uIDEuMTIuMFxuICAgKi9cbiAgdmVnYUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dW5kZWZpbmVkPj47XG4gIC8qKlxuICAgKiBOYXRpdmUtbmFtZXNwYWNlIGFsaWFzIGZvciB0aGUgYHZlZ2FGb2N1c2AgZXZlbnQuXG5cbkVtaXR0ZWQgYXQgdGhlIHNhbWUgdGltZSBhbmQgdW5kZXIgdGhlIHNhbWUgY29uZGl0aW9ucyBhcyBgdmVnYUZvY3VzYC5cblVzZSB0aGlzIGV2ZW50IHdoZW4gaW50ZWdyYXRpbmcgd2l0aCBmcmFtZXdvcmtzIHRoYXQgZXhwZWN0IG5hdGl2ZS1zdHlsZVxuZXZlbnQgbmFtZXMuIEBldmVudERldGFpbCBgdW5kZWZpbmVkYCDigJQgTm8gcGF5bG9hZDsgbGlzdGVuIGZvciB0aGUgZXZlbnQgb2NjdXJyZW5jZSBvbmx5LixAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dW5kZWZpbmVkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHVzZXIgY2xpY2tzIHRoZSBzdWZmaXggYnV0dG9uIGluIHRoZSBmaWVsZCBsYWJlbC5cblxuVGhpcyBldmVudCBvbmx5IGZpcmVzIHdoZW4gYSBgbGFiZWxTdWZmaXhCdXR0b25Db25maWdgIChvciB0aGUgZGVwcmVjYXRlZFxuYGxhYmVsU3VmZml4QnV0dG9uUHJvcHNgKSBpcyBwcm92aWRlZC4gVXNlIGl0IHRvIGhhbmRsZSBjb250ZXh0dWFsIGFjdGlvbnNcbnN1Y2ggYXMgb3BlbmluZyBhIHRvb2x0aXAsIG5hdmlnYXRpbmcgdG8gYSBoZWxwIHBhZ2UsIG9yIHRyaWdnZXJpbmcgYVxuXCJGb3Jnb3QgcGFzc3dvcmQ/XCIgZmxvdy4gQGV2ZW50RGV0YWlsIGB2b2lkYCDigJQgTm8gcGF5bG9hZC4sQHZlZ2FWZXJzaW9uIDIuMjUuMFxuICAgKi9cbiAgdmVnYUxhYmVsQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIE5hdGl2ZS1uYW1lc3BhY2UgYWxpYXMgZm9yIHRoZSBgdmVnYUxhYmVsQnV0dG9uQ2xpY2tgIGV2ZW50LlxuXG5FbWl0dGVkIGF0IHRoZSBzYW1lIHRpbWUgYW5kIHVuZGVyIHRoZSBzYW1lIGNvbmRpdGlvbnMgYXNcbmB2ZWdhTGFiZWxCdXR0b25DbGlja2AuIFVzZSB0aGlzIGV2ZW50IHdoZW4gaW50ZWdyYXRpbmcgd2l0aCBmcmFtZXdvcmtzXG50aGF0IGV4cGVjdCBuYXRpdmUtc3R5bGUgZXZlbnQgbmFtZXMuIEBldmVudERldGFpbCBgdm9pZGAg4oCUIE5vIHBheWxvYWQuLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjI1LjBcbiAgICovXG4gIGxhYmVsQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciBwYXN0ZXMgY29udGVudCBpbnRvIHRoZSBpbnB1dCBmaWVsZC5cblxuVGhpcyBldmVudCBmaXJlcyByZWdhcmRsZXNzIG9mIHRoZSBgZGlzYWJsZUNvcHlQYXN0ZWAgc2V0dGluZyDigJQgdGhlIHBhc3RlXG5hY3Rpb24gaXMgYmxvY2tlZCB2aXN1YWxseSwgYnV0IHRoZSBldmVudCBzdGlsbCBwcm9wYWdhdGVzIGZvciB0cmFja2luZ1xucHVycG9zZXMuIFVzZSB0aGlzIHRvIGluc3BlY3Qgb3IgdHJhbnNmb3JtIHBhc3RlZCBkYXRhIGJlZm9yZSBpdCBpcyBhcHBsaWVkLiBAZXZlbnREZXRhaWwgYERhdGFUcmFuc2ZlclR5cGVgIOKAlCBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgcGFzdGVkIGRhdGEsXG5pbmNsdWRpbmcgdGhlIE1JTUUgdHlwZSBhbmQgcmF3IHRleHQgY29udGVudCBmcm9tIHRoZSBjbGlwYm9hcmQuLEB2ZWdhVmVyc2lvbiAyLjY2LjBcbiAgICovXG4gIHZlZ2FQYXN0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhSW5wdXREYXRhVHJhbnNmZXJUeXBlPj47XG4gIC8qKlxuICAgKiBOYXRpdmUtbmFtZXNwYWNlIGFsaWFzIGZvciB0aGUgYHZlZ2FQYXN0ZWAgZXZlbnQuXG5cbkVtaXR0ZWQgYXQgdGhlIHNhbWUgdGltZSBhbmQgdW5kZXIgdGhlIHNhbWUgY29uZGl0aW9ucyBhcyBgdmVnYVBhc3RlYC5cblVzZSB0aGlzIGV2ZW50IHdoZW4gaW50ZWdyYXRpbmcgd2l0aCBmcmFtZXdvcmtzIHRoYXQgZXhwZWN0IG5hdGl2ZS1zdHlsZVxuZXZlbnQgbmFtZXMuIEBldmVudERldGFpbCBgRGF0YVRyYW5zZmVyVHlwZWAg4oCUIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBwYXN0ZWQgZGF0YSxcbmluY2x1ZGluZyB0aGUgTUlNRSB0eXBlIGFuZCByYXcgdGV4dCBjb250ZW50IGZyb20gdGhlIGNsaXBib2FyZC4sQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNjYuMFxuICAgKi9cbiAgcGFzdGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUlucHV0RGF0YVRyYW5zZmVyVHlwZT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYW4gaXRlbSBmcm9tIHRoZSBzdWdnZXN0aW9ucyBkcm9wZG93bi5cblxuVGhpcyBldmVudCBvbmx5IGZpcmVzIHdoZW4gdGhlIGBzdWdnZXN0aW9uc0Ryb3Bkb3duU291cmNlYCBwcm9wIGlzIHNldC5cblVzZSBpdCB0byByZXNwb25kIHRvIHRoZSB1c2VyJ3Mgc2VsZWN0aW9uIOKAlCBmb3IgZXhhbXBsZSwgdG8gcG9wdWxhdGVcbnJlbGF0ZWQgZmllbGRzLCBuYXZpZ2F0ZSB0byBhIGRldGFpbCBwYWdlLCBvciB0cmlnZ2VyIGEgc2VhcmNoLiBAZXZlbnREZXRhaWwgYFZlZ2FEcm9wZG93blNvdXJjZUl0ZW1gIOKAlCBUaGUgZnVsbCBkYXRhIG9iamVjdCBvZiB0aGUgc2VsZWN0ZWRcbnN1Z2dlc3Rpb24gaXRlbSwgaW5jbHVkaW5nIGl0cyBgbGFiZWxgLCBgdmFsdWVgLCBhbmQgYW55IGN1c3RvbSBwcm9wZXJ0aWVzLixAdmVnYVZlcnNpb24gMi43NS4wXG4gICAqL1xuICB2ZWdhU3VnZ2VzdGlvbkl0ZW1DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhSW5wdXRWZWdhRHJvcGRvd25Tb3VyY2VJdGVtPj47XG4gIC8qKlxuICAgKiBOYXRpdmUtbmFtZXNwYWNlIGFsaWFzIGZvciB0aGUgYHZlZ2FTdWdnZXN0aW9uSXRlbUNsaWNrYCBldmVudC5cblxuRW1pdHRlZCBhdCB0aGUgc2FtZSB0aW1lIGFuZCB1bmRlciB0aGUgc2FtZSBjb25kaXRpb25zIGFzXG5gdmVnYVN1Z2dlc3Rpb25JdGVtQ2xpY2tgLiBVc2UgdGhpcyBldmVudCB3aGVuIGludGVncmF0aW5nIHdpdGggZnJhbWV3b3Jrc1xudGhhdCBleHBlY3QgbmF0aXZlLXN0eWxlIGV2ZW50IG5hbWVzLiBAZXZlbnREZXRhaWwgYFZlZ2FEcm9wZG93blNvdXJjZUl0ZW1gIOKAlCBUaGUgZnVsbCBkYXRhIG9iamVjdCBvZiB0aGUgc2VsZWN0ZWRcbnN1Z2dlc3Rpb24gaXRlbSwgaW5jbHVkaW5nIGl0cyBgbGFiZWxgLCBgdmFsdWVgLCBhbmQgYW55IGN1c3RvbSBwcm9wZXJ0aWVzLixAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi43NS4wXG4gICAqL1xuICBzdWdnZXN0aW9uSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FJbnB1dFZlZ2FEcm9wZG93blNvdXJjZUl0ZW0+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2F1dG9jb21wbGV0ZScsICdkaXNhYmxlQ29weVBhc3RlJywgJ2Rpc2FibGVkJywgJ2VtYWlsJywgJ2VudGVya2V5aGludCcsICdoaW50JywgJ2lucHV0bW9kZScsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ2xhYmVsU3VmZml4QnV0dG9uQ29uZmlnJywgJ2xhYmVsU3VmZml4QnV0dG9uUHJvcHMnLCAnbWFza0NvbmZpZycsICdtYXgnLCAnbWF4TGVuZ3RoJywgJ21pbicsICdtaW5MZW5ndGgnLCAnbmFtZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdwcmVmaXhJY29uJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Nob3dDbGVhckljb24nLCAnc2l6ZScsICdzdWdnZXN0aW9uc0Ryb3Bkb3duU291cmNlJywgJ3R5cGUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJywgJ3ZhbHVlVXBkYXRlVHJpZ2dlciddLFxuICBtZXRob2RzOiBbJ2RvRm9jdXMnLCAnZG9CbHVyJywgJ3Nob3dTdWdnZXN0aW9uc0Ryb3Bkb3duJywgJ2hpZGVTdWdnZXN0aW9uc0Ryb3Bkb3duJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWlucHV0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdhdXRvY29tcGxldGUnLCAnZGlzYWJsZUNvcHlQYXN0ZScsICdkaXNhYmxlZCcsICdlbWFpbCcsICdlbnRlcmtleWhpbnQnLCAnaGludCcsICdpbnB1dG1vZGUnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdsYWJlbFN1ZmZpeEJ1dHRvbkNvbmZpZycsICdsYWJlbFN1ZmZpeEJ1dHRvblByb3BzJywgJ21hc2tDb25maWcnLCAnbWF4JywgJ21heExlbmd0aCcsICdtaW4nLCAnbWluTGVuZ3RoJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncHJlZml4SWNvbicsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaG93Q2xlYXJJY29uJywgJ3NpemUnLCAnc3VnZ2VzdGlvbnNEcm9wZG93blNvdXJjZScsICd0eXBlJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZScsICd2YWx1ZVVwZGF0ZVRyaWdnZXInXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhSW5wdXQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhTmF0aXZlSW5wdXRDaGFuZ2UnLCAnbmF0aXZlSW5wdXRDaGFuZ2UnLCAndmVnYUJsdXInLCAnYmx1cicsICd2ZWdhRm9jdXMnLCAnZm9jdXMnLCAndmVnYUxhYmVsQnV0dG9uQ2xpY2snLCAnbGFiZWxCdXR0b25DbGljaycsICd2ZWdhUGFzdGUnLCAncGFzdGUnLCAndmVnYVN1Z2dlc3Rpb25JdGVtQ2xpY2snLCAnc3VnZ2VzdGlvbkl0ZW1DbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhSW5wdXRDcmVkaXRDYXJkIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhSW5wdXRDcmVkaXRDYXJkIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgdmFsdWUgY2hhbmdlLiBAdmVnYVZlcnNpb24gMS4yNi4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBIG5hdGl2ZSBjaGFuZ2UgZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSB2YWx1ZSBjaGFuZ2UuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgYmx1ciBldmVudCBvZiB0aGUgY3JlZGl0IGNhcmQgZWxlbWVudC4gQHZlZ2FWZXJzaW9uIDEuMjYuMFxuICAgKi9cbiAgdmVnYUJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmRlZmluZWQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBibHVyIGV2ZW50IG9mIHRoZSBjcmVkaXQgY2FyZCBlbGVtZW50LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmRlZmluZWQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBmb2N1cyBvZiB0aGUgY3JlZGl0IGNhcmQgZWxlbWVudC4gQHZlZ2FWZXJzaW9uIDEuMjYuMFxuICAgKi9cbiAgdmVnYUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dW5kZWZpbmVkPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgZm9jdXMgb2YgdGhlIGNyZWRpdCBjYXJkIGVsZW1lbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgZm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmRlZmluZWQ+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hpZGVDYXJkTnVtYmVyT25CbHVyJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdyZXF1aXJlZCcsICdzaXplJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1pbnB1dC1jcmVkaXQtY2FyZCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGlkZUNhcmROdW1iZXJPbkJsdXInLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUlucHV0Q3JlZGl0Q2FyZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FCbHVyJywgJ2JsdXInLCAndmVnYUZvY3VzJywgJ2ZvY3VzJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FJbnB1dE51bWVyaWMgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FJbnB1dE51bWVyaWMge1xuICAvKipcbiAgICogRmlyZXMgd2hlbmV2ZXIgdGhlIG51bWVyaWMgaW5wdXQncyB2YWx1ZSBjaGFuZ2VzIOKAlCBpbmNsdWRpbmcgdHlwaW5nLFxua2V5Ym9hcmQgaW5jcmVtZW50L2RlY3JlbWVudCwgY2xlYXJpbmcsIGFuZCBwcm9ncmFtbWF0aWMgdXBkYXRlcy5cblxuVGhlIGV2ZW50IGRldGFpbCBjb250YWlucyB0aGUgbmV3IG51bWVyaWMgdmFsdWUgKGBudW1iZXJgKSwgb3IgYE5hTmBcbndoZW4gdGhlIGZpZWxkIGlzIGVtcHR5LiBAZXZlbnREZXRhaWwgbnVtYmVyLEB2ZWdhVmVyc2lvbiAyLjI5LjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxudW1iZXI+PjtcbiAgLyoqXG4gICAqIE5hdGl2ZS1lcXVpdmFsZW50IG1pcnJvciBvZiBgdmVnYUNoYW5nZWAuIEZpcmVzIHdpdGggdGhlIHNhbWUgcGF5bG9hZFxuYW5kIGF0IHRoZSBzYW1lIHRpbWUsIGFsbG93aW5nIGNvbnN1bWVycyB0byBsaXN0ZW4gdXNpbmcgdGhlIHN0YW5kYXJkXG5gY2hhbmdlYCBldmVudCBuYW1lLiBAZXZlbnREZXRhaWwgbnVtYmVyLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjI5LjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PG51bWJlcj4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGludCcsICdpbnRlZ2VyT25seScsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ21ham9ySW5jcmVtZW50JywgJ21heCcsICdtaW4nLCAnbWlub3JJbmNyZW1lbnQnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncHJlZml4SWNvbicsICdwcmVmaXhUZXh0JywgJ3JlcXVpcmVkJywgJ3Nob3dDbGVhckljb24nLCAnc2l6ZScsICdzdWZmaXhUZXh0JywgJ3Rob3VzYW5kQ29tbWEnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWlucHV0LW51bWVyaWMnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaW50ZWdlck9ubHknLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtYWpvckluY3JlbWVudCcsICdtYXgnLCAnbWluJywgJ21pbm9ySW5jcmVtZW50JywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3ByZWZpeEljb24nLCAncHJlZml4VGV4dCcsICdyZXF1aXJlZCcsICdzaG93Q2xlYXJJY29uJywgJ3NpemUnLCAnc3VmZml4VGV4dCcsICd0aG91c2FuZENvbW1hJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FJbnB1dE51bWVyaWMge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhSW5wdXRQYXNzY29kZSBleHRlbmRzIENvbXBvbmVudHMuVmVnYUlucHV0UGFzc2NvZGUge1xuICAvKipcbiAgICogRmlyZXMgd2hlbmV2ZXIgdGhlIHBhc3Njb2RlIHZhbHVlIGNoYW5nZXMg4oCUIGVhY2ggdGltZSBhIGNoYXJhY3RlciBpc1xuZW50ZXJlZCwgZGVsZXRlZCwgb3IgcGFzdGVkIGludG8gYW55IGJveC4gVGhlIGV2ZW50IGRldGFpbCBjb250YWlucyB0aGVcbmNvbmNhdGVuYXRlZCBzdHJpbmcgb2YgYWxsIGJveCB2YWx1ZXMgYXQgdGhlIHRpbWUgb2YgdGhlIGNoYW5nZS4gQGV2ZW50RGV0YWlsIHN0cmluZyxAdmVnYVZlcnNpb24gMi42Ni4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBOYXRpdmUtZXF1aXZhbGVudCBtaXJyb3Igb2YgYHZlZ2FDaGFuZ2VgLiBGaXJlcyB3aXRoIHRoZSBzYW1lIHBheWxvYWRcbmFuZCBhdCB0aGUgc2FtZSB0aW1lLCBhbGxvd2luZyBjb25zdW1lcnMgdG8gbGlzdGVuIHVzaW5nIHRoZSBzdGFuZGFyZFxuYGNoYW5nZWAgZXZlbnQgbmFtZS4gQGV2ZW50RGV0YWlsIHN0cmluZyxAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi42Ni4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gYWxsIHBhc3Njb2RlIGJveGVzIGhhdmUgYmVlbiBmaWxsZWQgKGkuZS4sIHRoZSB2YWx1ZSBsZW5ndGhcbmVxdWFscyB0aGUgY29uZmlndXJlZCBgbGVuZ3RoYCkuIFRoZSBldmVudCBkZXRhaWwgY29udGFpbnMgdGhlIGNvbXBsZXRlXG5wYXNzY29kZSBzdHJpbmcuIFVzZWZ1bCBmb3IgdHJpZ2dlcmluZyBhdXRvLXN1Ym1pdCBvciB2ZXJpZmljYXRpb25cbndvcmtmbG93cy4gQGV2ZW50RGV0YWlsIHN0cmluZyxAdmVnYVZlcnNpb24gMi42Ni4wXG4gICAqL1xuICB2ZWdhQ29tcGxldGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIE5hdGl2ZS1lcXVpdmFsZW50IG1pcnJvciBvZiBgdmVnYUNvbXBsZXRlYC4gRmlyZXMgd2l0aCB0aGUgc2FtZSBwYXlsb2FkXG5hbmQgYXQgdGhlIHNhbWUgdGltZSwgYWxsb3dpbmcgY29uc3VtZXJzIHRvIGxpc3RlbiB1c2luZyB0aGUgc3RhbmRhcmRcbmBjb21wbGV0ZWAgZXZlbnQgbmFtZS4gQGV2ZW50RGV0YWlsIHN0cmluZyxAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi42Ni4wXG4gICAqL1xuICBjb21wbGV0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGludCcsICdpbnB1dFR5cGUnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdsZW5ndGgnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAnc2l6ZScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtaW5wdXQtcGFzc2NvZGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaW5wdXRUeXBlJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbGVuZ3RoJywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUlucHV0UGFzc2NvZGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhQ29tcGxldGUnLCAnY29tcGxldGUnXSk7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhQ291bnRyeVR5cGUgYXMgSVZlZ2FJbnB1dFBob25lTnVtYmVyVmVnYUNvdW50cnlUeXBlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtaW5wdXQtcGhvbmUtbnVtYmVyL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhSW5wdXRQaG9uZU51bWJlciBleHRlbmRzIENvbXBvbmVudHMuVmVnYUlucHV0UGhvbmVOdW1iZXIge1xuICAvKipcbiAgICogRmlyZXMgd2hlbmV2ZXIgdGhlIHBob25lIG51bWJlciB2YWx1ZSBjaGFuZ2VzIOKAlCBpbmNsdWRpbmcgdHlwaW5nLFxucGFzdGluZywgb3IgcHJvZ3JhbW1hdGljIHVwZGF0ZXMuIFRoZSBldmVudCBkZXRhaWwgY29udGFpbnMgdGhlIGZ1bGxcbnBob25lIG51bWJlciBpbiBFLjE2NCBmb3JtYXQgKGUuZy4sIGAnKzE0MTU1NTUyNjcxJ2ApLiBAZXZlbnREZXRhaWwgc3RyaW5nLEB2ZWdhVmVyc2lvbiAyLjE4LjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIE5hdGl2ZS1lcXVpdmFsZW50IG1pcnJvciBvZiBgdmVnYUNoYW5nZWAuIEZpcmVzIHdpdGggdGhlIHNhbWUgcGF5bG9hZFxuYW5kIGF0IHRoZSBzYW1lIHRpbWUsIGFsbG93aW5nIGNvbnN1bWVycyB0byBsaXN0ZW4gdXNpbmcgdGhlIHN0YW5kYXJkXG5gY2hhbmdlYCBldmVudCBuYW1lLiBAZXZlbnREZXRhaWwgc3RyaW5nLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjE4LjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbmV2ZXIgdGhlIHNlbGVjdGVkIGNvdW50cnkgY2hhbmdlcyB2aWEgdGhlIGNvdW50cnkgZHJvcGRvd24uXG5UaGUgZXZlbnQgZGV0YWlsIGNvbnRhaW5zIGEgYFZlZ2FDb3VudHJ5VHlwZWAgb2JqZWN0IHdpdGggdGhlIGNvdW50cnlcbmNvZGUsIGNhbGxpbmcgY29kZSwgYW5kIGRpc3BsYXkgbmFtZSBvZiB0aGUgbmV3bHkgc2VsZWN0ZWQgY291bnRyeS4gQGV2ZW50RGV0YWlsIFZlZ2FDb3VudHJ5VHlwZSxAdmVnYVZlcnNpb24gMi4xOC4wXG4gICAqL1xuICB2ZWdhQ291bnRyeUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhSW5wdXRQaG9uZU51bWJlclZlZ2FDb3VudHJ5VHlwZT4+O1xuICAvKipcbiAgICogTmF0aXZlLWVxdWl2YWxlbnQgbWlycm9yIG9mIGB2ZWdhQ291bnRyeUNoYW5nZWAuIEZpcmVzIHdpdGggdGhlIHNhbWVcbnBheWxvYWQgYW5kIGF0IHRoZSBzYW1lIHRpbWUsIGFsbG93aW5nIGNvbnN1bWVycyB0byBsaXN0ZW4gdXNpbmcgdGhlXG5zdGFuZGFyZCBgY291bnRyeUNoYW5nZWAgZXZlbnQgbmFtZS4gQGV2ZW50RGV0YWlsIFZlZ2FDb3VudHJ5VHlwZSxAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4xOC4wXG4gICAqL1xuICBjb3VudHJ5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FJbnB1dFBob25lTnVtYmVyVmVnYUNvdW50cnlUeXBlPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhbGxvd2VkQ291bnRyeUNvZGVzJywgJ2F1dG9WYWxpZGF0aW9uJywgJ2NvdW50cnlDb2RlJywgJ2Rpc2FibGVkJywgJ2VtcHR5VmFsdWVFbmFibGVkJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdyZXF1aXJlZCcsICdzaXplJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1pbnB1dC1waG9uZS1udW1iZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2FsbG93ZWRDb3VudHJ5Q29kZXMnLCAnYXV0b1ZhbGlkYXRpb24nLCAnY291bnRyeUNvZGUnLCAnZGlzYWJsZWQnLCAnZW1wdHlWYWx1ZUVuYWJsZWQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUlucHV0UGhvbmVOdW1iZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhQ291bnRyeUNoYW5nZScsICdjb3VudHJ5Q2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FJbnB1dFJhbmdlIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhSW5wdXRSYW5nZSB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIHZhbHVlIGNoYW5nZS4gQHZlZ2FWZXJzaW9uIDIuMi4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8W251bWJlciwgbnVtYmVyXT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSB2YWx1ZSBjaGFuZ2UuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjIuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8W251bWJlciwgbnVtYmVyXT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ21heCcsICdtaW4nLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncHJlZml4SWNvbicsICdyZXF1aXJlZCcsICdzaG93Q2xlYXJJY29uJywgJ3NpemUnLCAnc3RhY2snLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWlucHV0LXJhbmdlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbWF4JywgJ21pbicsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdwcmVmaXhJY29uJywgJ3JlcXVpcmVkJywgJ3Nob3dDbGVhckljb24nLCAnc2l6ZScsICdzdGFjaycsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhSW5wdXRSYW5nZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgU2VsZWN0VmFsdWVUeXBlIGFzIElWZWdhSW5wdXRTZWxlY3RTZWxlY3RWYWx1ZVR5cGUgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1pbnB1dC1zZWxlY3QvdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBTZWxlY3RUeXBlIGFzIElWZWdhSW5wdXRTZWxlY3RTZWxlY3RUeXBlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtaW5wdXQtc2VsZWN0L3R5cGVzJztcbmltcG9ydCB0eXBlIHsgVmVnYURyb3Bkb3duU2VhcmNoVHJpZ2dlckV2ZW50RGV0YWlsIGFzIElWZWdhSW5wdXRTZWxlY3RWZWdhRHJvcGRvd25TZWFyY2hUcmlnZ2VyRXZlbnREZXRhaWwgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1kcm9wZG93bi90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUlucHV0U2VsZWN0IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhSW5wdXRTZWxlY3Qge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBvZiB0aGUgc2VsZWN0IHZhbHVlLiBAdmVnYVZlcnNpb24gMS4wLjExXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FJbnB1dFNlbGVjdFNlbGVjdFZhbHVlVHlwZTxJVmVnYUlucHV0U2VsZWN0U2VsZWN0VHlwZT4+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2Ugb2YgdGhlIHNlbGVjdCB2YWx1ZS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUlucHV0U2VsZWN0U2VsZWN0VmFsdWVUeXBlPElWZWdhSW5wdXRTZWxlY3RTZWxlY3RUeXBlPj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHNlYXJjaCBvZiB0aGUgZHJvcGRvd24uIEB2ZWdhVmVyc2lvbiAxLjUwLjBcbiAgICovXG4gIHZlZ2FTZWFyY2g6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBzZWFyY2ggb2YgdGhlIGRyb3Bkb3duLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIHNlYXJjaDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHNlYXJjaCBldmVudCB0cmlnZ2VyZWQgd2l0aGluIHRoZSBkcm9wZG93bixcbiAgIGJ1dCBvbmx5IGlmIGB1c2VEZWZhdWx0RmlsdGVyYCBpcyBzZXQgdG8gYGZhbHNlYC5cblVubGlrZSB0aGUgVmVnYXNlYXJjaCBldmVudCwgdGhpcyBldmVudCBpbmNsdWRlcyB0aGUgZGV0YWlscyBvZiB0aGUgdXNlciB3aG8gdHJpZ2dlcmVkIGl0LlxuSXQgY2FuIGJlIHRyaWdnZXJlZCBpbiB0d28gd2F5czogYnkgcHJlc3NpbmcgXCJFbnRlclwiIG9yIHRocm91Z2ggdXNlciBpbnB1dC4gQHZlZ2FWZXJzaW9uIDIuMzAuMFxuICAgKi9cbiAgdmVnYVNlYXJjaFRyaWdnZXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUlucHV0U2VsZWN0VmVnYURyb3Bkb3duU2VhcmNoVHJpZ2dlckV2ZW50RGV0YWlsPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgc2VhcmNoIGV2ZW50IHRyaWdnZXJlZCB3aXRoaW4gdGhlIGRyb3Bkb3duLFxuVW5saWtlIHRoZSBWZWdhc2VhcmNoIGV2ZW50LCB0aGlzIGV2ZW50IGluY2x1ZGVzIHRoZSBkZXRhaWxzIG9mIHRoZSB1c2VyIHdobyB0cmlnZ2VyZWQgaXQuXG5JdCBjYW4gYmUgdHJpZ2dlcmVkIGluIHR3byB3YXlzOiBieSBwcmVzc2luZyBcIkVudGVyXCIgb3IgdGhyb3VnaCB1c2VyIGlucHV0LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4zMC4wXG4gICAqL1xuICBzZWFyY2hUcmlnZ2VyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FJbnB1dFNlbGVjdFZlZ2FEcm9wZG93blNlYXJjaFRyaWdnZXJFdmVudERldGFpbD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBvbmx5IGZpcmVkIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaW4gdGhlIGRyb3Bkb3duIGhhcyBiZWVuIGNsaWNrZWQuXG5cblRoZSBldmVudCdzIGBkZXRhaWxgIHByb3BlcnR5IGlzIGB0cnVlYCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGlzIGNsaWNrZWQgdG8gc2VsZWN0IGFsbCBpdGVtcyxcbiAgIGFuZCBgZmFsc2VgIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaXMgY2xpY2tlZCB0byBjbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXMuIEB2ZWdhVmVyc2lvbiAyLjk1LjBcbiAgICovXG4gIHZlZ2FEcm9wZG93blNlbGVjdEFsbENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBvbmx5IGZpcmVkIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaW4gdGhlIGRyb3Bkb3duIGhhcyBiZWVuIGNsaWNrZWQuXG5cblRoZSBldmVudCdzIGBkZXRhaWxgIHByb3BlcnR5IGlzIGB0cnVlYCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGlzIGNsaWNrZWQgdG8gc2VsZWN0IGFsbCBpdGVtcyxcbiAgIGFuZCBgZmFsc2VgIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaXMgY2xpY2tlZCB0byBjbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXMuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjk1LjBcbiAgICovXG4gIGRyb3Bkb3duU2VsZWN0QWxsQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBpbnB1dC1zZWxlY3QgaGFzIGJlZW4gb3BlbmVkLFxuICAgZWl0aGVyIHByb2dyYW1tYXRpY2FsbHkgb3IgdmlhIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjMyLjBcbiAgICovXG4gIHZlZ2FTaG93OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBFdmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBpbnB1dC1zZWxlY3QgaGFzIGJlZW4gZGlzbWlzc2VkLFxuICAgZWl0aGVyIHByb2dyYW1tYXRpY2FsbHkgb3IgdmlhIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjMyLjBcbiAgICovXG4gIHZlZ2FIaWRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBzdWZmaXggYnV0dG9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmllbGQgbGFiZWwgaGFzIGJlZW4gY2xpY2tlZC4gQHZlZ2FWZXJzaW9uIDIuNjguMFxuICAgKi9cbiAgdmVnYUxhYmVsQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIHN1ZmZpeCBidXR0b24gYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWVsZCBsYWJlbCBoYXMgYmVlbiBjbGlja2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi42OC4wXG4gICAqL1xuICBsYWJlbEJ1dHRvbkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdkcm9wZG93bkl0ZW1Ub29sdGlwUHJvcHMnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ2xhYmVsU3VmZml4QnV0dG9uQ29uZmlnJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3ByZWZpeEljb24nLCAncmVxdWlyZWQnLCAnc2VsZWN0VHlwZScsICdzZWxlY3RlZExhYmVsJywgJ3NlbGVjdGVkTGFiZWxUb29sdGlwUHJvcHMnLCAnc2l6ZScsICdzb3VyY2UnLCAnc291cmNlTGF6eUxvYWRDYWxsYmFjaycsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmVnYURyb3Bkb3duUHJvcHMnXSxcbiAgbWV0aG9kczogWydkb0Nsb3NlJywgJ2RvT3BlbicsICdkb0NoYW5nZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1pbnB1dC1zZWxlY3QnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2Ryb3Bkb3duSXRlbVRvb2x0aXBQcm9wcycsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbGFiZWxTdWZmaXhCdXR0b25Db25maWcnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncHJlZml4SWNvbicsICdyZXF1aXJlZCcsICdzZWxlY3RUeXBlJywgJ3NlbGVjdGVkTGFiZWwnLCAnc2VsZWN0ZWRMYWJlbFRvb2x0aXBQcm9wcycsICdzaXplJywgJ3NvdXJjZScsICdzb3VyY2VMYXp5TG9hZENhbGxiYWNrJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZScsICd2ZWdhRHJvcGRvd25Qcm9wcyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FJbnB1dFNlbGVjdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FTZWFyY2gnLCAnc2VhcmNoJywgJ3ZlZ2FTZWFyY2hUcmlnZ2VyJywgJ3NlYXJjaFRyaWdnZXInLCAndmVnYURyb3Bkb3duU2VsZWN0QWxsQ2xpY2snLCAnZHJvcGRvd25TZWxlY3RBbGxDbGljaycsICd2ZWdhU2hvdycsICd2ZWdhSGlkZScsICd2ZWdhTGFiZWxCdXR0b25DbGljaycsICdsYWJlbEJ1dHRvbkNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FJdGVtVG9nZ2xlIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhSXRlbVRvZ2dsZSB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhbiBpdGVtIHRvZ2dsZSBldmVudC4gQHZlZ2FWZXJzaW9uIDEuMy4wXG4gICAqL1xuICB2ZWdhVG9nZ2xlU3RhdHVzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYW4gaXRlbSB0b2dnbGUgZXZlbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgdG9nZ2xlU3RhdHVzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnaXNUb2dnbGVkJywgJ2l0ZW1Ub2dnbGVTdGF0dXNNYXAnLCAnc3RhdHVzTWFwJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWl0ZW0tdG9nZ2xlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydpc1RvZ2dsZWQnLCAnaXRlbVRvZ2dsZVN0YXR1c01hcCcsICdzdGF0dXNNYXAnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhSXRlbVRvZ2dsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FUb2dnbGVTdGF0dXMnLCAndG9nZ2xlU3RhdHVzJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FMZWZ0TmF2IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhTGVmdE5hdiB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBsZWZ0LW5hdidzIG9wZW4gc3RhdGUgaGFzIGNoYW5nZWQuIEB2ZWdhVmVyc2lvbiAxLjMxLjBcbiAgICovXG4gIHZlZ2FTdGF0ZVVwZGF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgbGVmdC1uYXYncyBvcGVuIHN0YXRlIGhhcyBjaGFuZ2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIHN0YXRlVXBkYXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvQ29sbGFwc2VHcm91cHMnLCAnYXV0b0NvbGxhcHNlT25PdmVybGF5JywgJ2Zvb3Rub3RlJywgJ2hlYWRlckNvbmZpZycsICdvcGVuJywgJ3Nob3dBc092ZXJsYXknLCAnc291cmNlJ10sXG4gIG1ldGhvZHM6IFsndG9nZ2xlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWxlZnQtbmF2JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvQ29sbGFwc2VHcm91cHMnLCAnYXV0b0NvbGxhcHNlT25PdmVybGF5JywgJ2Zvb3Rub3RlJywgJ2hlYWRlckNvbmZpZycsICdvcGVuJywgJ3Nob3dBc092ZXJsYXknLCAnc291cmNlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUxlZnROYXYge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhU3RhdGVVcGRhdGUnLCAnc3RhdGVVcGRhdGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUxlZnROYXZHcm91cCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUxlZnROYXZHcm91cCB7XG4gIC8qKlxuICAgKiBldmVudCBlbWl0dGVyIHVzZWQgZm9yIG5vdGlmeWluZyBjb25zdW1lcnMgdGhlIGNsaWNrIGV2ZW50ICogQHZlZ2FWZXJzaW9uIDEuNDEuMFxuICAgKi9cbiAgdmVnYUdyb3VwQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgdXNlZCBmb3Igbm90aWZ5aW5nIGNvbnN1bWVycyB0aGUgY2xpY2sgZXZlbnQgQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBncm91cENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydpY29uJywgJ2l0ZW1LZXknLCAnbGFiZWwnLCAnb3BlbkJ5RGVmYXVsdCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1sZWZ0LW5hdi1ncm91cCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnaWNvbicsICdpdGVtS2V5JywgJ2xhYmVsJywgJ29wZW5CeURlZmF1bHQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhTGVmdE5hdkdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUdyb3VwQ2xpY2snLCAnZ3JvdXBDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhTGVmdE5hdkxpbmsgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FMZWZ0TmF2TGluayB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgbGluayBjbGljayBldmVudC4gKiBAdmVnYVZlcnNpb24gMS4zMS4wXG4gICAqL1xuICB2ZWdhTWVudUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgbGluayBjbGljayBldmVudC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBtZW51Q2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NvdW50ZXJCYWRnZScsICdjdXN0b21TZWxlY3Rpb25FbmFibGVkJywgJ2ljb24nLCAnaXRlbUtleScsICdzZWxlY3RlZCcsICd0YXJnZXQnLCAndXJsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWxlZnQtbmF2LWxpbmsnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NvdW50ZXJCYWRnZScsICdjdXN0b21TZWxlY3Rpb25FbmFibGVkJywgJ2ljb24nLCAnaXRlbUtleScsICdzZWxlY3RlZCcsICd0YXJnZXQnLCAndXJsJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUxlZnROYXZMaW5rIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYU1lbnVDbGljaycsICdtZW51Q2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUxlZnROYXZTZWN0aW9uIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhTGVmdE5hdlNlY3Rpb24ge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGFjdGlvbiBjbGljayBldmVudCB3aGVuIHRoZSBhY3Rpb24gbGluayBpcyBub3QgY29uZmlndXJlZC4gQHZlZ2FWZXJzaW9uIDIuMTEuMFxuICAgKi9cbiAgdmVnYUFjdGlvbkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgYWN0aW9uIGNsaWNrIGV2ZW50IHdoZW4gdGhlIGFjdGlvbiBsaW5rIGlzIG5vdCBjb25maWd1cmVkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4xMS4wXG4gICAqL1xuICBhY3Rpb25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnaXRlbUtleScsICdzZWN0aW9uSGVhZGVyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWxlZnQtbmF2LXNlY3Rpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2l0ZW1LZXknLCAnc2VjdGlvbkhlYWRlciddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FMZWZ0TmF2U2VjdGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FBY3Rpb25DbGljaycsICdhY3Rpb25DbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhTGluZUNoYXJ0IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhTGluZUNoYXJ0IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnb3B0aW9ucyddLFxuICBtZXRob2RzOiBbJ3JlUmVuZGVyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWxpbmUtY2hhcnQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ29wdGlvbnMnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhTGluZUNoYXJ0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUxvYWRlcldyYXBwZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FMb2FkZXJXcmFwcGVyIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1sb2FkZXItd3JhcHBlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FMb2FkZXJXcmFwcGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUxvYWRpbmdJbmRpY2F0b3IgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FMb2FkaW5nSW5kaWNhdG9yIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnaGludCcsICdsYWJlbCcsICdtb2RlJywgJ3BlcmNlbnQnLCAnc2hhcGUnLCAnc2l6ZScsICdzdGF0dXMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtbG9hZGluZy1pbmRpY2F0b3InLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2hpbnQnLCAnbGFiZWwnLCAnbW9kZScsICdwZXJjZW50JywgJ3NoYXBlJywgJ3NpemUnLCAnc3RhdHVzJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUxvYWRpbmdJbmRpY2F0b3Ige1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhTW9kYWwgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FNb2RhbCB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgbW9kYWwgY2xvc2UgZXZlbnQuICBJZiBhIG1ldGhvZCBpcyBkZWZpbmVkIGZvciB0aGlzIGV2ZW50LCBpbnZva2luZyBldmVudC5wcmV2ZW50RGVmYXVsdCgpIHByZXZlbnRzIHRoZSBtb2RhbCBmcm9tIGNsb3NpbmcuIEB2ZWdhVmVyc2lvbiAxLjAuMTBcbiAgICovXG4gIHZlZ2FDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIG1vZGFsIGNsb3NlIGV2ZW50LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgbW9kYWwgb3BlbiBldmVudC4gQHZlZ2FWZXJzaW9uIDEuMC4xMFxuICAgKi9cbiAgdmVnYU9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBtb2RhbCBvcGVuIGV2ZW50LiBUaGUgZXZlbnQgbmFtZSBpcyBub3QgYG9wZW5gIGJlY2F1c2UgYWxyZWFkeSBoYXMgYSBwcm9wZXJ0eSBgb3BlbmAgQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBtb2RhbE9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FuaW1hdGlvbicsICdiYWNrZHJvcCcsICdiYWNrZHJvcENvbG9yJywgJ2NvbnRlbnRNYXhIZWlnaHQnLCAnY29ybmVycycsICdoYW5kbGVDbG9zZScsICdoZWlnaHQnLCAnaXNWZXJ0aWNhbGx5Q2VudGVyJywgJ2lzVmVydGljYWxseUNlbnRlcmVkJywgJ21hcmdpbicsICdtb2RhbFRpdGxlJywgJ29wZW4nLCAncGFkZGluZycsICdzaG93Q2xvc2VCdXR0b24nLCAnc2l6ZScsICd3aWR0aCddLFxuICBtZXRob2RzOiBbJ21vZGFsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLW1vZGFsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhbmltYXRpb24nLCAnYmFja2Ryb3AnLCAnYmFja2Ryb3BDb2xvcicsICdjb250ZW50TWF4SGVpZ2h0JywgJ2Nvcm5lcnMnLCAnaGFuZGxlQ2xvc2UnLCAnaGVpZ2h0JywgJ2lzVmVydGljYWxseUNlbnRlcicsICdpc1ZlcnRpY2FsbHlDZW50ZXJlZCcsICdtYXJnaW4nLCAnbW9kYWxUaXRsZScsICdvcGVuJywgJ3BhZGRpbmcnLCAnc2hvd0Nsb3NlQnV0dG9uJywgJ3NpemUnLCAnd2lkdGgnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhTW9kYWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xvc2UnLCAnY2xvc2UnLCAndmVnYU9wZW4nLCAnbW9kYWxPcGVuJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FOYXZDYXJkIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhTmF2Q2FyZCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ21heEhlaWdodCcsICdzb3VyY2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtbmF2LWNhcmQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ21heEhlaWdodCcsICdzb3VyY2UnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhTmF2Q2FyZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FQYWdlTm90aWZpY2F0aW9uIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUGFnZU5vdGlmaWNhdGlvbiB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FjdGlvbkJ1dHRvbnMnLCAnZHVyYXRpb24nLCAnbWVzc2FnZScsICdub3RpZmljYXRpb25UaXRsZScsICdzaG93Q2xvc2VCdXR0b24nLCAndHlwZSddLFxuICBtZXRob2RzOiBbJ2Nsb3NlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXBhZ2Utbm90aWZpY2F0aW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhY3Rpb25CdXR0b25zJywgJ2R1cmF0aW9uJywgJ21lc3NhZ2UnLCAnbm90aWZpY2F0aW9uVGl0bGUnLCAnc2hvd0Nsb3NlQnV0dG9uJywgJ3R5cGUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUGFnZU5vdGlmaWNhdGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FQYWdlTm90aWZpY2F0aW9uTGlzdCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVBhZ2VOb3RpZmljYXRpb25MaXN0IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1wYWdlLW5vdGlmaWNhdGlvbi1saXN0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYVBhZ2VOb3RpZmljYXRpb25MaXN0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVBhZ2luYXRpb24gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FQYWdpbmF0aW9uIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjdXJyZW50IHBhZ2UgY2hhbmdlLiBAdmVnYVZlcnNpb24gMS4zLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxudW1iZXI+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjdXJyZW50IHBhZ2UgY2hhbmdlLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PG51bWJlcj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSBjaGFuZ2UgaW4gdGhlIG51bWJlciBvZlxuICAgZGF0YSBpdGVtcyBkaXNwbGF5ZWQgcGVyIHBhZ2UuIEB2ZWdhVmVyc2lvbiAxLjI1LjBcbiAgICovXG4gIHZlZ2FQYWdlU2l6ZUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PG51bWJlcj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSBjaGFuZ2UgaW4gdGhlIG51bWJlciBvZlxuICAgZGF0YSBpdGVtcyBkaXNwbGF5ZWQgcGVyIHBhZ2UuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgcGFnZVNpemVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxudW1iZXI+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2N1cnJlbnQnLCAnZHJvcGRvd25Qcm9wcycsICdleHRlbnNpb25zJywgJ2xheW91dCcsICdwYWdlU2l6ZScsICdwYWdlU2l6ZVNlbGVjdG9yT3B0aW9ucycsICd0b3RhbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1wYWdpbmF0aW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjdXJyZW50JywgJ2Ryb3Bkb3duUHJvcHMnLCAnZXh0ZW5zaW9ucycsICdsYXlvdXQnLCAncGFnZVNpemUnLCAncGFnZVNpemVTZWxlY3Rvck9wdGlvbnMnLCAndG90YWwnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUGFnaW5hdGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FQYWdlU2l6ZUNoYW5nZScsICdwYWdlU2l6ZUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUGFnaW5hdGlvblBhZ2VTZWxlY3Rvck1vYmlsZSBleHRlbmRzIENvbXBvbmVudHMuVmVnYVBhZ2luYXRpb25QYWdlU2VsZWN0b3JNb2JpbGUge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjdXJyZW50JywgJ3BhZ2VDb3VudCcsICd0b3RhbCcsICd0eXBlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXBhZ2luYXRpb24tcGFnZS1zZWxlY3Rvci1tb2JpbGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2N1cnJlbnQnLCAncGFnZUNvdW50JywgJ3RvdGFsJywgJ3R5cGUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUGFnaW5hdGlvblBhZ2VTZWxlY3Rvck1vYmlsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FQYWdpbmF0aW9uUGFnZVNpemVTZWxlY3Rvck1vYmlsZSBleHRlbmRzIENvbXBvbmVudHMuVmVnYVBhZ2luYXRpb25QYWdlU2l6ZVNlbGVjdG9yTW9iaWxlIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY3VycmVudCcsICdkcm9wZG93blByb3BzJywgJ3BhZ2VTaXplJywgJ3BhZ2VTaXplU2VsZWN0b3JPcHRpb25zJywgJ3RvdGFsJywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcGFnaW5hdGlvbi1wYWdlLXNpemUtc2VsZWN0b3ItbW9iaWxlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjdXJyZW50JywgJ2Ryb3Bkb3duUHJvcHMnLCAncGFnZVNpemUnLCAncGFnZVNpemVTZWxlY3Rvck9wdGlvbnMnLCAndG90YWwnLCAndHlwZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FQYWdpbmF0aW9uUGFnZVNpemVTZWxlY3Rvck1vYmlsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FQaWVDaGFydCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVBpZUNoYXJ0IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnb3B0aW9ucyddLFxuICBtZXRob2RzOiBbJ3JlUmVuZGVyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXBpZS1jaGFydCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnb3B0aW9ucyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FQaWVDaGFydCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FQb3BvdmVyIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUG9wb3ZlciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgcG9wb3ZlciBzaG93IGV2ZW50LiBAdmVnYVZlcnNpb24gMS4yMi4wXG4gICAqL1xuICB2ZWdhUG9wb3ZlclNob3c6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBwb3BvdmVyIHNob3cgZXZlbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgcG9wb3ZlclNob3c6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBwb3BvdmVyIGhpZGUgZXZlbnQuIEB2ZWdhVmVyc2lvbiAxLjIyLjBcbiAgICovXG4gIHZlZ2FQb3BvdmVySGlkZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHBvcG92ZXIgaGlkZSBldmVudC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBwb3BvdmVySGlkZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWxpZ25tZW50JywgJ2lzU2NyZWVuUG9zaXRpb24nLCAncGFkZGluZycsICdwbGFjZW1lbnQnLCAncG9zaXRpb25SZWxhdGl2ZVRvJywgJ3Nob3dBcnJvdycsICdzaXplJywgJ3RyaWdnZXInXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2hpZGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcG9wb3ZlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYWxpZ25tZW50JywgJ2lzU2NyZWVuUG9zaXRpb24nLCAncGFkZGluZycsICdwbGFjZW1lbnQnLCAncG9zaXRpb25SZWxhdGl2ZVRvJywgJ3Nob3dBcnJvdycsICdzaXplJywgJ3RyaWdnZXInXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUG9wb3ZlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FQb3BvdmVyU2hvdycsICdwb3BvdmVyU2hvdycsICd2ZWdhUG9wb3ZlckhpZGUnLCAncG9wb3ZlckhpZGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVBvcG92ZXJDb250ZW50Qm94IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUG9wb3ZlckNvbnRlbnRCb3gge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydwYWRkaW5nJywgJ3Nob3dBcnJvdyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1wb3BvdmVyLWNvbnRlbnQtYm94JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydwYWRkaW5nJywgJ3Nob3dBcnJvdyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FQb3BvdmVyQ29udGVudEJveCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FQcm9ncmVzc1RyYWNrZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FQcm9ncmVzc1RyYWNrZXIge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgY3VycmVudCBzdGVwIGhhcyBjaGFuZ2VkLiBAdmVnYVZlcnNpb24gMS41LjBcbiAgICovXG4gIHZlZ2FDdXJyZW50U3RlcFVwZGF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgY3VycmVudCBzdGVwIGhhcyBjaGFuZ2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGN1cnJlbnRTdGVwVXBkYXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhbGxvd05vQ3VycmVudFN0ZXAnLCAnY2FuQ2xpY2tTdGVwJywgJ2NvbXBsZXRlZFN0ZXBBcnJheScsICdjb21wbGV0ZWRTdGVwcycsICdjdXJyZW50JywgJ2RpcmVjdGlvbicsICdzdGVwcyddLFxuICBtZXRob2RzOiBbJ25leHRTdGVwJywgJ3ByZXZTdGVwJywgJ3NldEN1cnJlbnQnLCAnZ2V0Q3VycmVudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1wcm9ncmVzcy10cmFja2VyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhbGxvd05vQ3VycmVudFN0ZXAnLCAnY2FuQ2xpY2tTdGVwJywgJ2NvbXBsZXRlZFN0ZXBBcnJheScsICdjb21wbGV0ZWRTdGVwcycsICdjdXJyZW50JywgJ2RpcmVjdGlvbicsICdzdGVwcyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FQcm9ncmVzc1RyYWNrZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ3VycmVudFN0ZXBVcGRhdGUnLCAnY3VycmVudFN0ZXBVcGRhdGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVByb2dyZXNzVHJhY2tlclN0ZXAgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FQcm9ncmVzc1RyYWNrZXJTdGVwIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY2xpY2thYmxlJywgJ3N0ZXBLZXknXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcHJvZ3Jlc3MtdHJhY2tlci1zdGVwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjbGlja2FibGUnLCAnc3RlcEtleSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FQcm9ncmVzc1RyYWNrZXJTdGVwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVJhZGlvIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUmFkaW8ge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGZvY3VzIGV2ZW50IG9mIHRoZSByYWRpbyBpbnB1dC4gQHZlZ2FWZXJzaW9uIDEuMC43XG4gICAqL1xuICB2ZWdhRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBmb2N1cyBldmVudCBvZiB0aGUgcmFkaW8gaW5wdXQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgZm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBibHVyIGV2ZW50IG9mIHRoZSByYWRpbyBpbnB1dC4gQHZlZ2FWZXJzaW9uIDEuMC43XG4gICAqL1xuICB2ZWdhQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGJsdXIgZXZlbnQgb2YgdGhlIHJhZGlvIGlucHV0LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2UgaW4gdGhlIGNoZWNrIHN0YXR1c1xuICAgb2YgdGhlIHJhZGlvIGlucHV0LiBAdmVnYVZlcnNpb24gMS4wLjEwXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBpbiB0aGUgY2hlY2sgc3RhdHVzXG4gICBvZiB0aGUgcmFkaW8gaW5wdXQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY2hlY2tlZCcsICdkaXNhYmxlZCcsICduYW1lJywgJ3NpemUnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmFkaW8nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NoZWNrZWQnLCAnZGlzYWJsZWQnLCAnbmFtZScsICdzaXplJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVJhZGlvIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUZvY3VzJywgJ2ZvY3VzJywgJ3ZlZ2FCbHVyJywgJ2JsdXInLCAndmVnYUNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVJhZGlvR3JvdXAgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FSYWRpb0dyb3VwIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2Ugb2YgdGhlXG4gICBjaGVja2VkIHJhZGlvIGJ1dHRvbiBpbiB0aGUgcmFkaW8gZ3JvdXAuIEB2ZWdhVmVyc2lvbiAxLjAuMTBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2Ugb2YgdGhlXG4gICBjaGVja2VkIHJhZGlvIGJ1dHRvbiBpbiB0aGUgcmFkaW8gZ3JvdXAuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmVnYUZsZXhQcm9wJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXJhZGlvLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmVnYUZsZXhQcm9wJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVJhZGlvR3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUmljaFRleHRDb250ZW50IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUmljaFRleHRDb250ZW50IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY29udGVudCcsICdleHRlbnNpb25zJ10sXG4gIG1ldGhvZHM6IFsndmVnYUZvY3VzJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXJpY2gtdGV4dC1jb250ZW50JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjb250ZW50JywgJ2V4dGVuc2lvbnMnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUmljaFRleHRDb250ZW50IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhUlRFQ29udGVudCBhcyBJVmVnYVJpY2hUZXh0RWRpdG9yVmVnYVJURUNvbnRlbnQgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1yaWNoLXRleHQtZWRpdG9yL2R0by9jb250ZW50LXN0YXRlJztcbmltcG9ydCB0eXBlIHsgVmVnYVJpY2hUZXh0RWRpdG9ySW1hZ2UgYXMgSVZlZ2FSaWNoVGV4dEVkaXRvclZlZ2FSaWNoVGV4dEVkaXRvckltYWdlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtcmljaC10ZXh0LWVkaXRvci9pbnRlcmZhY2UnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FSaWNoVGV4dEVkaXRvciBleHRlbmRzIENvbXBvbmVudHMuVmVnYVJpY2hUZXh0RWRpdG9yIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgdmFsdWUgY2hhbmdlLiBAdmVnYVZlcnNpb24gMi4zNC4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FSaWNoVGV4dEVkaXRvclZlZ2FSVEVDb250ZW50Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIHZhbHVlIGNoYW5nZS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMzQuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FSaWNoVGV4dEVkaXRvclZlZ2FSVEVDb250ZW50Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhbiBpbWFnZSBpbnNlcnRpb24gZXZlbnQuIEB2ZWdhVmVyc2lvbiAyLjM0LjBcbiAgICovXG4gIHZlZ2FJbWFnZUluc2VydGVkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FSaWNoVGV4dEVkaXRvclZlZ2FSaWNoVGV4dEVkaXRvckltYWdlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhbiBpbWFnZSBpbnNlcnRpb24gZXZlbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjM0LjBcbiAgICovXG4gIGltYWdlSW5zZXJ0ZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVJpY2hUZXh0RWRpdG9yVmVnYVJpY2hUZXh0RWRpdG9ySW1hZ2U+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgc291cmNlIGNvZGUgY2hhbmdlIGV2ZW50LiBJdCB0cmlnZ2VycyB3aGVuIHRoZSBlZGl0b3IgbG9zZXMgZm9jdXMgaW4gc291cmNlIGVkaXQgbW9kZS4gQHZlZ2FWZXJzaW9uIDIuNzguMFxuICAgKi9cbiAgdmVnYVNvdXJjZUNvZGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgc291cmNlIGNvZGUgY2hhbmdlIGV2ZW50LiBJdCB0cmlnZ2VycyB3aGVuIHRoZSBlZGl0b3IgbG9zZXMgZm9jdXMgaW4gc291cmNlIGVkaXQgbW9kZS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNzguMFxuICAgKi9cbiAgc291cmNlQ29kZUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWxsb3dTb3VyY2VFZGl0JywgJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2V4dGVuc2lvbnMnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3JlcXVpcmVkJywgJ3Jvd3MnLCAnc291cmNlRWRpdENvbmZpZycsICd0ZXh0U3R5bGVJdGVtcycsICd0b29sYmFySXRlbXMnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXJpY2gtdGV4dC1lZGl0b3InLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2FsbG93U291cmNlRWRpdCcsICdhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdleHRlbnNpb25zJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdyZXF1aXJlZCcsICdyb3dzJywgJ3NvdXJjZUVkaXRDb25maWcnLCAndGV4dFN0eWxlSXRlbXMnLCAndG9vbGJhckl0ZW1zJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FSaWNoVGV4dEVkaXRvciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FJbWFnZUluc2VydGVkJywgJ2ltYWdlSW5zZXJ0ZWQnLCAndmVnYVNvdXJjZUNvZGVDaGFuZ2UnLCAnc291cmNlQ29kZUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUmljaFRleHRFZGl0b3JUb29sYmFyQnV0dG9uIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUmljaFRleHRFZGl0b3JUb29sYmFyQnV0dG9uIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgYnV0dG9uLiBAdmVnYVZlcnNpb24gMi4zNC4wXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgYnV0dG9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4zNC4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXJyb3dJY29uJywgJ2Rpc2FibGVkJywgJ2hpZGRlbicsICdpY29uJywgJ2ljb25Db2xvcicsICdzZWxlY3RlZCcsICdzaG93QXJyb3dJY29uJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXJpY2gtdGV4dC1lZGl0b3ItdG9vbGJhci1idXR0b24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2Fycm93SWNvbicsICdkaXNhYmxlZCcsICdoaWRkZW4nLCAnaWNvbicsICdpY29uQ29sb3InLCAnc2VsZWN0ZWQnLCAnc2hvd0Fycm93SWNvbiddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FSaWNoVGV4dEVkaXRvclRvb2xiYXJCdXR0b24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAnY2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVJpY2hUZXh0RmluZFJlcGxhY2VQYW5lbCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVJpY2hUZXh0RmluZFJlcGxhY2VQYW5lbCB7XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gYSBwYW5lbCBpbnB1dCB2YWx1ZSBjaGFuZ2VzLlxuUGF5bG9hZCBpbmNsdWRlcyB0aGUgaW5wdXQgdHlwZSAoYGtleXdvcmRgIG9yIGByZXBsYWNlYCkgYW5kIHZhbHVlLiBAdmVnYVZlcnNpb24gMi45Mi4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyB0eXBlOiAna2V5d29yZCcgfCAncmVwbGFjZSc7IHZhbHVlOiBzdHJpbmcgfT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGEgcGFuZWwgYWN0aW9uIGJ1dHRvbiBpcyBjbGlja2VkLlxuUGF5bG9hZCBpbmNsdWRlcyB0aGUgYWN0aW9uIGtleSBhbmQgb3B0aW9uYWwgZGF0YS4gQHZlZ2FWZXJzaW9uIDIuOTIuMFxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8eyBhY3Rpb246IHN0cmluZzsgZGF0YT86IHVua25vd24gfT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBtZXRob2RzOiBbJ3VwZGF0ZVJlc3VsdCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1yaWNoLXRleHQtZmluZC1yZXBsYWNlLXBhbmVsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYVJpY2hUZXh0RmluZFJlcGxhY2VQYW5lbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAndmVnYUNsaWNrJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYVJpY2hUZXh0SW1hZ2VFZGl0b3JDaGFuZ2VEZXRhaWwgYXMgSVZlZ2FSaWNoVGV4dEltYWdlRWRpdG9yVmVnYVJpY2hUZXh0SW1hZ2VFZGl0b3JDaGFuZ2VEZXRhaWwgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1yaWNoLXRleHQtZWRpdG9yL3ZlZ2EtcmljaC10ZXh0LWltYWdlLWVkaXRvci90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVJpY2hUZXh0SW1hZ2VFZGl0b3IgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FSaWNoVGV4dEltYWdlRWRpdG9yIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNvbnRlbnQgY2hhbmdlLiBAdmVnYVZlcnNpb24gMi4zNC4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FSaWNoVGV4dEltYWdlRWRpdG9yVmVnYVJpY2hUZXh0SW1hZ2VFZGl0b3JDaGFuZ2VEZXRhaWw+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNvbnRlbnQgY2hhbmdlLiBAdmVnYVZlcnNpb24gMi4zNC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVJpY2hUZXh0SW1hZ2VFZGl0b3JWZWdhUmljaFRleHRJbWFnZUVkaXRvckNoYW5nZURldGFpbD4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWx0JywgJ3NpemUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmljaC10ZXh0LWltYWdlLWVkaXRvcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYWx0JywgJ3NpemUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUmljaFRleHRJbWFnZUVkaXRvciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYVJpY2hUZXh0TGlua0VkaXRvckNoYW5nZURldGFpbCBhcyBJVmVnYVJpY2hUZXh0TGlua0VkaXRvclZlZ2FSaWNoVGV4dExpbmtFZGl0b3JDaGFuZ2VEZXRhaWwgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1yaWNoLXRleHQtZWRpdG9yL3ZlZ2EtcmljaC10ZXh0LWxpbmstZWRpdG9yL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUmljaFRleHRMaW5rRWRpdG9yIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUmljaFRleHRMaW5rRWRpdG9yIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNvbnRlbnQgY2hhbmdlLiBAdmVnYVZlcnNpb24gMi4zNC4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FSaWNoVGV4dExpbmtFZGl0b3JWZWdhUmljaFRleHRMaW5rRWRpdG9yQ2hhbmdlRGV0YWlsPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjb250ZW50IGNoYW5nZS4gQHZlZ2FWZXJzaW9uIDIuMzQuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FSaWNoVGV4dExpbmtFZGl0b3JWZWdhUmljaFRleHRMaW5rRWRpdG9yQ2hhbmdlRGV0YWlsPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydyZWNvcmQnLCAncmVzZXRTdGF0dXNBZnRlckhpZGUnLCAnc3RhdHVzJywgJ3RhcmdldCddLFxuICBtZXRob2RzOiBbJ3Nob3cnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmljaC10ZXh0LWxpbmstZWRpdG9yJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydyZWNvcmQnLCAncmVzZXRTdGF0dXNBZnRlckhpZGUnLCAnc3RhdHVzJywgJ3RhcmdldCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FSaWNoVGV4dExpbmtFZGl0b3Ige1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUmljaFRleHRTcGVjaWFsQ2hhcmFjdGVyc1BhbmVsIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUmljaFRleHRTcGVjaWFsQ2hhcmFjdGVyc1BhbmVsIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBhIGNoYXJhY3RlciBjZWxsIGlzIGNsaWNrZWQuIFRoZSBwYXlsb2FkIGlzIHRoZSBVbmljb2RlIGNoYXJhY3RlciBzdHJpbmcuIEB2ZWdhVmVyc2lvbiAyLjg4LjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGEgY2hhcmFjdGVyIGNlbGwgaXMgY2xpY2tlZC4gVGhlIHBheWxvYWQgaXMgdGhlIFVuaWNvZGUgY2hhcmFjdGVyIHN0cmluZy4gQHZlZ2FWZXJzaW9uIDIuODguMFxuICAgKi9cbiAgY2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NhdGVnb3JpZXMnXSxcbiAgbWV0aG9kczogWydyZXNldFBhbmVsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXJpY2gtdGV4dC1zcGVjaWFsLWNoYXJhY3RlcnMtcGFuZWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NhdGVnb3JpZXMnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUmljaFRleHRTcGVjaWFsQ2hhcmFjdGVyc1BhbmVsIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgUlRFVGFibGVQcm9wZXJ0aWVzVHlwZSBhcyBJVmVnYVJpY2hUZXh0VGFibGVQcm9wZXJ0aWVzUlRFVGFibGVQcm9wZXJ0aWVzVHlwZSB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLXJpY2gtdGV4dC1lZGl0b3IvaW50ZXJmYWNlJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUmljaFRleHRUYWJsZVByb3BlcnRpZXMgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FSaWNoVGV4dFRhYmxlUHJvcGVydGllcyB7XG4gIC8qKlxuICAgKiAgQHZlZ2FWZXJzaW9uIDIuNzkuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhUmljaFRleHRUYWJsZVByb3BlcnRpZXNSVEVUYWJsZVByb3BlcnRpZXNUeXBlPj47XG4gIC8qKlxuICAgKiAgQHZlZ2FWZXJzaW9uIDIuNzkuMFxuICAgKi9cbiAgdmVnYUNhbmNlbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhUmljaFRleHRUYWJsZVByb3BlcnRpZXNSVEVUYWJsZVByb3BlcnRpZXNUeXBlPj47XG4gIC8qKlxuICAgKiAgQHZlZ2FWZXJzaW9uIDIuNzkuMFxuICAgKi9cbiAgdmVnYVNhdmU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmtub3duPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjb2xvcnMnLCAnZGVmYXVsdFZhbHVlJywgJ3N0eWxlTWFwJywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmljaC10ZXh0LXRhYmxlLXByb3BlcnRpZXMnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NvbG9ycycsICdkZWZhdWx0VmFsdWUnLCAnc3R5bGVNYXAnLCAndHlwZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FSaWNoVGV4dFRhYmxlUHJvcGVydGllcyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAndmVnYUNhbmNlbCcsICd2ZWdhU2F2ZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUmljaFRleHRUYWJsZVNlbGVjdGlvbldpZGdldCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVJpY2hUZXh0VGFibGVTZWxlY3Rpb25XaWRnZXQge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSBkZWxldGUgYWN0aW9uIG9uIHRoZSB3aWRnZXQuIEB2ZWdhVmVyc2lvbiAyLjc5LjBcbiAgICovXG4gIHZlZ2FSZW1vdmU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZFxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmljaC10ZXh0LXRhYmxlLXNlbGVjdGlvbi13aWRnZXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcbmV4cG9ydCBjbGFzcyBWZWdhUmljaFRleHRUYWJsZVNlbGVjdGlvbldpZGdldCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FSZW1vdmUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVJpY2hUZXh0VGFibGVTZXR0aW5nIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUmljaFRleHRUYWJsZVNldHRpbmcge1xuICAvKipcbiAgICogIEB2ZWdhVmVyc2lvbiAyLjc5LjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEFycmF5PHN0cmluZz4+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2hhc0NhcHRpb24nLCAnc2VsZWN0ZWRDZWxscycsICd0YXJnZXQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmljaC10ZXh0LXRhYmxlLXNldHRpbmcnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2hhc0NhcHRpb24nLCAnc2VsZWN0ZWRDZWxscycsICd0YXJnZXQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUmljaFRleHRUYWJsZVNldHRpbmcge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVNlY3Rpb25UaXRsZSBleHRlbmRzIENvbXBvbmVudHMuVmVnYVNlY3Rpb25UaXRsZSB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2Rlc2NyaXB0aW9uJywgJ2ljb24nLCAnaWNvbkFsaWduJywgJ2ljb25Db2xvcicsICdzaXplJywgJ3RpdGxlVGV4dCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zZWN0aW9uLXRpdGxlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydkZXNjcmlwdGlvbicsICdpY29uJywgJ2ljb25BbGlnbicsICdpY29uQ29sb3InLCAnc2l6ZScsICd0aXRsZVRleHQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhU2VjdGlvblRpdGxlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVNlZ21lbnRDb250cm9sIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhU2VnbWVudENvbnRyb2wge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlc1xuICAgaW4gdGhlIHNlbGVjdGVkIHNlZ21lbnQuIEB2ZWdhVmVyc2lvbiAyLjMuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQSBuYXRpdmUgZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlc1xuICAgaW4gdGhlIHNlbGVjdGVkIHNlZ21lbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjMuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydibG9jaycsICdzZWdtZW50cycsICdzZWxlY3RlZCcsICdzaXplJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2Etc2VnbWVudC1jb250cm9sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydibG9jaycsICdzZWdtZW50cycsICdzZWxlY3RlZCcsICdzaXplJywgJ3ZhcmlhbnQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhU2VnbWVudENvbnRyb2wge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhU2VsZWN0aW9uQ2hpcCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVNlbGVjdGlvbkNoaXAge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGlvbiBjaGlwLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjIyLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBzZWxlY3Rpb24gY2hpcCxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yMi4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2Jsb2NrJywgJ2NoZWNrZWQnLCAnZGlzYWJsZWQnLCAnZGlzYWJsZWRUb29sdGlwJywgJ2xhYmVsJywgJ3NpemUnLCAnc3dhdGNoQ29sb3InLCAndmFsdWUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zZWxlY3Rpb24tY2hpcCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYmxvY2snLCAnY2hlY2tlZCcsICdkaXNhYmxlZCcsICdkaXNhYmxlZFRvb2x0aXAnLCAnbGFiZWwnLCAnc2l6ZScsICdzd2F0Y2hDb2xvcicsICd2YWx1ZScsICd2YXJpYW50J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVNlbGVjdGlvbkNoaXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhU2VsZWN0aW9uQ2hpcEdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhU2VsZWN0aW9uQ2hpcEdyb3VwIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBzZWxlY3Rpb24gY2hpcCBncm91cCxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMi4yMi4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZSBvZiB0aGUgc2VsZWN0aW9uIGNoaXAgZ3JvdXAsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMjIuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAnc2VsZWN0VHlwZScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2Etc2VsZWN0aW9uLWNoaXAtZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICdzZWxlY3RUeXBlJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FTZWxlY3Rpb25DaGlwR3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhU2VsZWN0aW9uVGlsZSBleHRlbmRzIENvbXBvbmVudHMuVmVnYVNlbGVjdGlvblRpbGUge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGlvbiB0aWxlLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjcuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGlvbiB0aWxlLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjcuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjaGVja2VkJywgJ2Rpc2FibGVkJywgJ25vdGUnLCAncHJlZml4SWNvbicsICdzZWxlY3RUeXBlJywgJ3RpdGxlVGV4dCcsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zZWxlY3Rpb24tdGlsZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY2hlY2tlZCcsICdkaXNhYmxlZCcsICdub3RlJywgJ3ByZWZpeEljb24nLCAnc2VsZWN0VHlwZScsICd0aXRsZVRleHQnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhU2VsZWN0aW9uVGlsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FTZWxlY3Rpb25UaWxlR3JvdXAgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FTZWxlY3Rpb25UaWxlR3JvdXAge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGlvbiB0aWxlIGdyb3VwLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjcuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGlvbiB0aWxlIGdyb3VwLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjcuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdkaXN0cmlidXRlRXZlbmx5JywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdsYXlvdXQnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAnc2VsZWN0VHlwZScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2Etc2VsZWN0aW9uLXRpbGUtZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2Rpc3RyaWJ1dGVFdmVubHknLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ2xheW91dCcsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICdzZWxlY3RUeXBlJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FTZWxlY3Rpb25UaWxlR3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhU2lkZW5hdiBleHRlbmRzIENvbXBvbmVudHMuVmVnYVNpZGVuYXYge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNvbXBsZXRpb24gb2YgYSBuYXZpZ2F0aW9uIG1lbnUgc3RhdGUgY2hhbmdlIChvcGVuIG9yIGNsb3NlKS4gQHZlZ2FWZXJzaW9uIDEsIHYyLjI5LjBcbiAgICovXG4gIHZlZ2FTdGF0ZVVwZGF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNvbXBsZXRpb24gb2YgYSBuYXZpZ2F0aW9uIG1lbnUgc3RhdGUgY2hhbmdlIChvcGVuIG9yIGNsb3NlKS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDEsIHYyLjI5LjBcbiAgICovXG4gIHN0YXRlVXBkYXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydmb290bm90ZScsICdoZWFkZXJDb25maWcnLCAnb3BlbkJ5RGVmYXVsdCcsICdzb3VyY2UnXSxcbiAgbWV0aG9kczogWyd0b2dnbGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2Etc2lkZW5hdicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnZm9vdG5vdGUnLCAnaGVhZGVyQ29uZmlnJywgJ29wZW5CeURlZmF1bHQnLCAnc291cmNlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVNpZGVuYXYge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhU3RhdGVVcGRhdGUnLCAnc3RhdGVVcGRhdGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVNpZGVuYXZHcm91cCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVNpZGVuYXZHcm91cCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2ljb24nLCAnbGFiZWwnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2Etc2lkZW5hdi1ncm91cCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnaWNvbicsICdsYWJlbCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FTaWRlbmF2R3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhU2lkZW5hdkxpbmsgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FTaWRlbmF2TGluayB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhYm91dCB0aGUgb2NjdXJyZW5jZSBvZiBhIGNsaWNrIGV2ZW50LiBAdmVnYVZlcnNpb24gMSwgdjIuMjkuMFxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhYm91dCB0aGUgb2NjdXJyZW5jZSBvZiBhIGNsaWNrIGV2ZW50LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMSwgdjIuMjkuMFxuICAgKi9cbiAgY2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2ljb24nLCAnc2VsZWN0ZWQnLCAnc2hvd1NpZGVCYXJPbkNsaWNrTGluaycsICd1cmwnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2Etc2lkZW5hdi1saW5rJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydpY29uJywgJ3NlbGVjdGVkJywgJ3Nob3dTaWRlQmFyT25DbGlja0xpbmsnLCAndXJsJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVNpZGVuYXZMaW5rIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYVNpZ25hdHVyZVZhbHVlIGFzIElWZWdhU2lnbmF0dXJlQ2FwdHVyZVZlZ2FTaWduYXR1cmVWYWx1ZSB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLXNpZ25hdHVyZS1jYXB0dXJlL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhU2lnbmF0dXJlQ2FwdHVyZSBleHRlbmRzIENvbXBvbmVudHMuVmVnYVNpZ25hdHVyZUNhcHR1cmUge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSB2YWx1ZSBjaGFuZ2UuIEB2ZWdhVmVyc2lvbiAyLjE5LjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVNpZ25hdHVyZUNhcHR1cmVWZWdhU2lnbmF0dXJlVmFsdWU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgdmFsdWUgY2hhbmdlLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4xOS4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVNpZ25hdHVyZUNhcHR1cmVWZWdhU2lnbmF0dXJlVmFsdWU+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hlaWdodCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ21vZGUnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncGxhY2Vob2xkZXJJY29uJywgJ3JlcXVpcmVkJywgJ3Nob3dDbGVhckJ0bicsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXSxcbiAgbWV0aG9kczogWydjbGVhciddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zaWduYXR1cmUtY2FwdHVyZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGVpZ2h0JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbW9kZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdwbGFjZWhvbGRlckljb24nLCAncmVxdWlyZWQnLCAnc2hvd0NsZWFyQnRuJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FTaWduYXR1cmVDYXB0dXJlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVNrZWxldG9uIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhU2tlbGV0b24ge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhbmltYXRlZCcsICdjb3JuZXJzJywgJ2hlaWdodCcsICd0eXBlJywgJ3dpZHRoJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXNrZWxldG9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhbmltYXRlZCcsICdjb3JuZXJzJywgJ2hlaWdodCcsICd0eXBlJywgJ3dpZHRoJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVNrZWxldG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVNsb3RDb250YWluZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FTbG90Q29udGFpbmVyIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zbG90LWNvbnRhaW5lcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FTbG90Q29udGFpbmVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVN0ZXBwZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FTdGVwcGVyIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBzdGVwcGVyIGNvbXBvbmVudC4gQHZlZ2FWZXJzaW9uIDEuMC44XG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8bnVtYmVyPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZSBvZiB0aGUgc3RlcHBlciBjb21wb25lbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8bnVtYmVyPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdidXR0b25WYXJpYW50JywgJ2Rpc2FibGVkJywgJ2lucHV0RGlzYWJsZWQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtYXgnLCAnbWluJywgJ3N0ZXBwZXJJZCcsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zdGVwcGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdidXR0b25WYXJpYW50JywgJ2Rpc2FibGVkJywgJ2lucHV0RGlzYWJsZWQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtYXgnLCAnbWluJywgJ3N0ZXBwZXJJZCcsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FTdGVwcGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRhYkdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVGFiR3JvdXAge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIGEgdGFiXG4gICBpbiB0aGUgdGFiIGdyb3VwLiBAdmVnYVZlcnNpb24gMS4xLjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIGEgdGFiXG4gICBpbiB0aGUgdGFiIGdyb3VwLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydnYXAnLCAnb3ZlcmZsb3cnLCAncG9zaXRpb25SZWxhdGl2ZVRvJywgJ3NlbGVjdGVkVGFiRGF0YVRhcmdldCcsICdzaG93Q2xvc2VCdXR0b24nLCAndGFiSXRlbXMnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWItZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2dhcCcsICdvdmVyZmxvdycsICdwb3NpdGlvblJlbGF0aXZlVG8nLCAnc2VsZWN0ZWRUYWJEYXRhVGFyZ2V0JywgJ3Nob3dDbG9zZUJ1dHRvbicsICd0YWJJdGVtcycsICd2YXJpYW50J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRhYkdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUYWJHcm91cFBhbmVsIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVGFiR3JvdXBQYW5lbCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2lzQWN0aXZlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRhYi1ncm91cC1wYW5lbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnaXNBY3RpdmUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFiR3JvdXBQYW5lbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYVRhYmxlQ2hhbmdlUHJvcFR5cGUgYXMgSVZlZ2FUYWJsZVZlZ2FUYWJsZUNoYW5nZVByb3BUeXBlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgVmVnYVRhYmxlUm93Q2xpY2tQcm9wVHlwZSBhcyBJVmVnYVRhYmxlVmVnYVRhYmxlUm93Q2xpY2tQcm9wVHlwZSB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLXRhYmxlL2ludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IFZlZ2FUYWJsZVJvd0V4cGFuZEV2ZW50RGV0YWlsIGFzIElWZWdhVGFibGVWZWdhVGFibGVSb3dFeHBhbmRFdmVudERldGFpbCB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLXRhYmxlL2ludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IFZlZ2FUYWJsZVJvd1NlbGVjdFByb3AgYXMgSVZlZ2FUYWJsZVZlZ2FUYWJsZVJvd1NlbGVjdFByb3AgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS10YWJsZS9pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUgeyBWZWdhVGFibGVTZWxlY3RBbGxQcm9wIGFzIElWZWdhVGFibGVWZWdhVGFibGVTZWxlY3RBbGxQcm9wIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgVmVnYVRhYmxlUm93U2VsZWN0RXZlbnREZXRhaWwgYXMgSVZlZ2FUYWJsZVZlZ2FUYWJsZVJvd1NlbGVjdEV2ZW50RGV0YWlsIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgVmVnYVRhYmxlUm93U2VsZWN0QWxsRXZlbnREZXRhaWwgYXMgSVZlZ2FUYWJsZVZlZ2FUYWJsZVJvd1NlbGVjdEFsbEV2ZW50RGV0YWlsIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgRHJhZ0Ryb3BFdmVudFBheWxvYWQgYXMgSVZlZ2FUYWJsZURyYWdEcm9wRXZlbnRQYXlsb2FkIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhVGFibGUgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZSB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB0YWJsZSBkYXRhLiBAdmVnYVZlcnNpb24gMS4zLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlQ2hhbmdlUHJvcFR5cGU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHRhYmxlIGRhdGEuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZVZlZ2FUYWJsZUNoYW5nZVByb3BUeXBlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgYSByb3dcbiAgIGluIHRoZSB0YWJsZS4gQHZlZ2FWZXJzaW9uIDEuMy4wXG4gICAqL1xuICB2ZWdhUm93Q2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93Q2xpY2tQcm9wVHlwZT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIGEgcm93XG4gICBpbiB0aGUgdGFibGUuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgcm93Q2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93Q2xpY2tQcm9wVHlwZT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGV4cGFuZGVkIGV2ZW50IG9mIGEgcm93XG4gICBpbiB0aGUgdGFibGUuIEB2ZWdhVmVyc2lvbiAyLjI0LjBcbiAgICovXG4gIHZlZ2FSb3dFeHBhbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93RXhwYW5kRXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBleHBhbmRlZCBldmVudCBvZiBhIHJvd1xuICAgaW4gdGhlIHRhYmxlLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yNC4wXG4gICAqL1xuICByb3dFeHBhbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93RXhwYW5kRXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHdoZW4gdGhlIHJvdyBzZWxlY3Rpb24gY2hhbmdlcy4gQHZlZ2FWZXJzaW9uIDEuMTguMFxuICAgKi9cbiAgdmVnYVNlbGVjdENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhVGFibGVWZWdhVGFibGVSb3dTZWxlY3RQcm9wPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB3aGVuIHRoZSBzZWxlY3Rpb24gc3RhdGUgb2YgYWxsIHJvd3MgY2hhbmdlcy4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBzZWxlY3RDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93U2VsZWN0UHJvcD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgc2VsZWN0aW9uIG9mIGNoZWNrYm94ZXMsXG4gICBwYXJ0aWN1bGFybHkgdGhlIFwiU2VsZWN0IEFsbFwiIGNoZWNrYm94IGluIHRoZSB0YWJsZSBoZWFkZXIuIEB2ZWdhVmVyc2lvbiAxLjE4LjBcbiAgICovXG4gIHZlZ2FTZWxlY3RBbGxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlU2VsZWN0QWxsUHJvcD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgc2VsZWN0aW9uIG9mIGNoZWNrYm94ZXMsXG4gICBwYXJ0aWN1bGFybHkgdGhlIFwiU2VsZWN0IEFsbFwiIGNoZWNrYm94IGluIHRoZSB0YWJsZSBoZWFkZXIuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgc2VsZWN0QWxsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZVZlZ2FUYWJsZVNlbGVjdEFsbFByb3A+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGJlZm9yZSB0aGUgc2VsZWN0ZWQgY2hhbmdlIHdoZW4gc2VsZWN0L2Rlc2VsZWN0IG9uZSByb3cgQHZlZ2FWZXJzaW9uIDIuMjMuMFxuICAgKi9cbiAgdmVnYVJvd1NlbGVjdDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhVGFibGVWZWdhVGFibGVSb3dTZWxlY3RFdmVudERldGFpbD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYmVmb3JlIHRoZSBzZWxlY3RlZCBjaGFuZ2Ugd2hlbiBzZWxlY3QvZGVzZWxlY3Qgb25lIHJvdyBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yMy4wXG4gICAqL1xuICByb3dTZWxlY3Q6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93U2VsZWN0RXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGJlZm9yZSB0aGUgc2VsZWN0ZWQgY2hhbmdlIHdoZW4gc2VsZWN0L2Rlc2VsZWN0IGFsbCByb3dzIEB2ZWdhVmVyc2lvbiAyLjIzLjBcbiAgICovXG4gIHZlZ2FSb3dTZWxlY3RBbGw6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93U2VsZWN0QWxsRXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGJlZm9yZSB0aGUgc2VsZWN0ZWQgY2hhbmdlIHdoZW4gc2VsZWN0L2Rlc2VsZWN0IGFsbCByb3dzIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjIzLjBcbiAgICovXG4gIHJvd1NlbGVjdEFsbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhVGFibGVWZWdhVGFibGVSb3dTZWxlY3RBbGxFdmVudERldGFpbD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgd2hlbiBhIHJvdyBpcyBkcmFnIGFuZCBkcm9wLFxuICAgaXQgaW5jbHVkZSBmdWxsIGxpZmVjeWNsZSwgbGlrZSBkcmFnIHN0YXJ0LCBkcmFnLCBkcmFnIGVudGVyLCBkcmFnIGxlYXZlLCBkcmFnIG92ZXIsIGRyb3AgYW5kIGRyYWcgZW5kLiBAdmVnYVZlcnNpb24gMi44NS4wXG4gICAqL1xuICB2ZWdhUm93RHJhZ0Ryb3A6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlRHJhZ0Ryb3BFdmVudFBheWxvYWQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHdoZW4gYSByb3cgaXMgZHJhZyBhbmQgZHJvcCxcbiAgICBpdCBpbmNsdWRlIGZ1bGwgbGlmZWN5Y2xlLCBsaWtlIGRyYWcgc3RhcnQsIGRyYWcsIGRyYWcgZW50ZXIsIGRyYWcgbGVhdmUsIGRyYWcgb3ZlciwgZHJvcCBhbmQgZHJhZyBlbmQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjg1LjBcbiAgICovXG4gIHJvd0RyYWdEcm9wOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZURyYWdEcm9wRXZlbnRQYXlsb2FkPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjb2x1bW5EaXZpZGVyJywgJ2NvbHVtbnMnLCAnZGF0YVNvdXJjZScsICdkZW5zaXR5JywgJ2VtcHR5RGVzY3JpcHRpb24nLCAnZ3JvdXBDb2x1bW5zJywgJ3BhZGRpbmdYJywgJ3BhZ2luYXRpb24nLCAncm93Q2xpY2thYmxlJywgJ3Jvd0RpdmlkZXInLCAncm93RHJhZ2dhYmxlJywgJ3Jvd0V4cGFuZGFibGUnLCAncm93S2V5JywgJ3Jvd1NlbGVjdGlvbicsICdzY3JvbGxDb25maWcnLCAnc2hvd0VkaXRFcnJvcicsICdzaG93SGVhZGVyJywgJ3NvcnRDb25maWcnLCAnc3RyaXBlZCddLFxuICBtZXRob2RzOiBbJ29wZW5FeHBhbmRSb3cnLCAnY2xvc2VFeHBhbmRSb3cnLCAnY2xvc2VBbGxFeHBhbmRSb3cnLCAndG9nZ2xlRXhwYW5kUm93JywgJ2NsZWFyU2VsZWN0aW9uJywgJ2dldFNlbGVjdGlvbicsICdzZXRTZWxlY3Rpb24nLCAnc3RhcnRSb3dFZGl0TW9kZScsICdzdG9wUm93RWRpdE1vZGUnLCAnc3RvcEFsbFJvd0VkaXRNb2RlJywgJ2dldFJvd0RhdGEnLCAnZ2V0Um93c0RhdGEnLCAnZ2V0Rm9ybVJlZicsICdhZGROZXdSb3cnLCAnc2F2ZUVkaXRSb3cnLCAnc2F2ZUFsbEVkaXRSb3dzJywgJ2dldEVkaXRpbmdSb3dzS2V5JywgJ3JlbW92ZVJvdyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWJsZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY29sdW1uRGl2aWRlcicsICdjb2x1bW5zJywgJ2RhdGFTb3VyY2UnLCAnZGVuc2l0eScsICdlbXB0eURlc2NyaXB0aW9uJywgJ2dyb3VwQ29sdW1ucycsICdwYWRkaW5nWCcsICdwYWdpbmF0aW9uJywgJ3Jvd0NsaWNrYWJsZScsICdyb3dEaXZpZGVyJywgJ3Jvd0RyYWdnYWJsZScsICdyb3dFeHBhbmRhYmxlJywgJ3Jvd0tleScsICdyb3dTZWxlY3Rpb24nLCAnc2Nyb2xsQ29uZmlnJywgJ3Nob3dFZGl0RXJyb3InLCAnc2hvd0hlYWRlcicsICdzb3J0Q29uZmlnJywgJ3N0cmlwZWQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhUm93Q2xpY2snLCAncm93Q2xpY2snLCAndmVnYVJvd0V4cGFuZCcsICdyb3dFeHBhbmQnLCAndmVnYVNlbGVjdENoYW5nZScsICdzZWxlY3RDaGFuZ2UnLCAndmVnYVNlbGVjdEFsbENoYW5nZScsICdzZWxlY3RBbGxDaGFuZ2UnLCAndmVnYVJvd1NlbGVjdCcsICdyb3dTZWxlY3QnLCAndmVnYVJvd1NlbGVjdEFsbCcsICdyb3dTZWxlY3RBbGwnLCAndmVnYVJvd0RyYWdEcm9wJywgJ3Jvd0RyYWdEcm9wJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUYWJsZUJvZHkgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZUJvZHkge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRhYmxlLWJvZHknLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGVCb2R5IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRhYmxlQ2VsbCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVRhYmxlQ2VsbCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2JyZWFrcG9pbnQnLCAnY29sU3BhbicsICdlbGxpcHNpc1Nob3dUb29sdGlwJywgJ292ZXJmbG93JywgJ3RleHRBbGlnbicsICd3aWR0aCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWJsZS1jZWxsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydicmVha3BvaW50JywgJ2NvbFNwYW4nLCAnZWxsaXBzaXNTaG93VG9vbHRpcCcsICdvdmVyZmxvdycsICd0ZXh0QWxpZ24nLCAnd2lkdGgnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGVDZWxsIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRhYmxlRXhwYW5kUm93IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVGFibGVFeHBhbmRSb3cge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydyb3dLZXknLCAnc3RyaXBlZCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWJsZS1leHBhbmQtcm93JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydyb3dLZXknLCAnc3RyaXBlZCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FUYWJsZUV4cGFuZFJvdyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUYWJsZUZvb3QgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZUZvb3Qge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRhYmxlLWZvb3QnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGVGb290IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRhYmxlRm9vdENlbGwgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZUZvb3RDZWxsIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYnJlYWtwb2ludCcsICdjb2xTcGFuJywgJ3RleHRBbGlnbicsICd3aWR0aCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWJsZS1mb290LWNlbGwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2JyZWFrcG9pbnQnLCAnY29sU3BhbicsICd0ZXh0QWxpZ24nLCAnd2lkdGgnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGVGb290Q2VsbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUYWJsZUZvb3RSb3cgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZUZvb3RSb3cge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRhYmxlLWZvb3Qtcm93JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRhYmxlRm9vdFJvdyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUYWJsZUhlYWQgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZUhlYWQge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRhYmxlLWhlYWQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGVIZWFkIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhVGFibGVIZWFkQ2VsbENsaWNrRXZlbnQgYXMgSVZlZ2FUYWJsZUhlYWRDZWxsVmVnYVRhYmxlSGVhZENlbGxDbGlja0V2ZW50IH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhVGFibGVIZWFkQ2VsbCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVRhYmxlSGVhZENlbGwge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgaGVhZCBjZWxsIGhhcyBiZWVuIGNsaWNrZWQuIEB2ZWdhVmVyc2lvbiAxLjQ0LjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhVGFibGVIZWFkQ2VsbFZlZ2FUYWJsZUhlYWRDZWxsQ2xpY2tFdmVudD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgaGVhZCBjZWxsIGhhcyBiZWVuIGNsaWNrZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlSGVhZENlbGxWZWdhVGFibGVIZWFkQ2VsbENsaWNrRXZlbnQ+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2JyZWFrcG9pbnQnLCAncGlubmVkJywgJ3NvcnRDb25maWcnLCAnc29ydE9yZGVyJywgJ3NvcnRlcicsICd0ZXh0QWxpZ24nLCAnd2lkdGgnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdGFibGUtaGVhZC1jZWxsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydicmVha3BvaW50JywgJ3Bpbm5lZCcsICdzb3J0Q29uZmlnJywgJ3NvcnRPcmRlcicsICdzb3J0ZXInLCAndGV4dEFsaWduJywgJ3dpZHRoJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRhYmxlSGVhZENlbGwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAnY2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRhYmxlSGVhZFJvdyBleHRlbmRzIENvbXBvbmVudHMuVmVnYVRhYmxlSGVhZFJvdyB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2hpZGVTZWxlY3RBbGwnLCAnc2VsZWN0QWxsRGlzYWJsZWQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdGFibGUtaGVhZC1yb3cnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2hpZGVTZWxlY3RBbGwnLCAnc2VsZWN0QWxsRGlzYWJsZWQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGVIZWFkUm93IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhVGFibGVSb3dDbGlja0V2ZW50IGFzIElWZWdhVGFibGVSb3dWZWdhVGFibGVSb3dDbGlja0V2ZW50IH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgVmVnYVRhYmxlUm93RXhwYW5kRXZlbnQgYXMgSVZlZ2FUYWJsZVJvd1ZlZ2FUYWJsZVJvd0V4cGFuZEV2ZW50IH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhVGFibGVSb3cgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZVJvdyB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSByb3cgaGFzIGJlZW4gY2xpY2tlZC4gQHZlZ2FWZXJzaW9uIDEuNDQuMFxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZVJvd1ZlZ2FUYWJsZVJvd0NsaWNrRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIHJvdyBoYXMgYmVlbiBjbGlja2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZVJvd1ZlZ2FUYWJsZVJvd0NsaWNrRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIGV4cGFuZCBpY29uIGhhcyBiZWVuIGNsaWNrZWQuIEB2ZWdhVmVyc2lvbiAyLjIwLjBcbiAgICovXG4gIHZlZ2FFeHBhbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlUm93VmVnYVRhYmxlUm93RXhwYW5kRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIGV4cGFuZCBpY29uIGhhcyBiZWVuIGNsaWNrZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjIwLjBcbiAgICovXG4gIGV4cGFuZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhVGFibGVSb3dWZWdhVGFibGVSb3dFeHBhbmRFdmVudD4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsncm93RGl2aWRlcicsICdyb3dLZXknLCAnc3RyaXBlZCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWJsZS1yb3cnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ3Jvd0RpdmlkZXInLCAncm93S2V5JywgJ3N0cmlwZWQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGVSb3cge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAnY2xpY2snLCAndmVnYUV4cGFuZCcsICdleHBhbmQnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRleHQgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUZXh0IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnb3ZlcmZsb3cnLCAndGV4dCcsICd0b29sdGlwJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRleHQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ292ZXJmbG93JywgJ3RleHQnLCAndG9vbHRpcCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FUZXh0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRleHRhcmVhIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVGV4dGFyZWEge1xuICAvKipcbiAgICogRmlyZWQgd2hlbmV2ZXIgdGhlIHRleHQgYXJlYSB2YWx1ZSBjaGFuZ2VzLCB3aGV0aGVyIGJ5IHVzZXIgaW5wdXQgb3JcbnByb2dyYW1tYXRpYyB1cGRhdGUgb2YgdGhlIGB2YWx1ZWAgcHJvcGVydHkuIFRoaXMgaXMgdGhlIHByaW1hcnkgZXZlbnRcbmZvciByZWFjdGluZyB0byBjb250ZW50IGNoYW5nZXMgYW5kIGltcGxlbWVudGluZyB0d28td2F5IGJpbmRpbmcuIEBldmVudERldGFpbCBzdHJpbmcg4oCUIFRoZSB1cGRhdGVkIHRleHQgYXJlYSB2YWx1ZS4sQHZlZ2FWZXJzaW9uIDEuMTEuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogTmF0aXZlLW5hbWVzcGFjZSBtaXJyb3Igb2YgYHZlZ2FDaGFuZ2VgLiBGaXJlZCB3aGVuZXZlciB0aGUgdGV4dCBhcmVhXG52YWx1ZSBjaGFuZ2VzLiBQcm92aWRlZCBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIHN0YW5kYXJkIERPTSBldmVudFxubGlzdGVuZXJzLiBAZXZlbnREZXRhaWwgc3RyaW5nIOKAlCBUaGUgdXBkYXRlZCB0ZXh0IGFyZWEgdmFsdWUuLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBGaXJlZCB3aGVuIHRoZSBpbm5lciBgPHRleHRhcmVhPmAgZWxlbWVudCBsb3NlcyBmb2N1cyAoYmx1cikuIFVzZSB0aGlzXG5ldmVudCB0byB0cmlnZ2VyIHZhbGlkYXRpb24gb3Igc2F2ZSBhY3Rpb25zIHdoZW4gdGhlIHVzZXIgbGVhdmVzIHRoZVxudGV4dCBhcmVhLiBAZXZlbnREZXRhaWwgdW5kZWZpbmVkIOKAlCBObyBwYXlsb2FkOyBzaWduYWxzIHRoZSBibHVyIG9jY3VycmVuY2Ugb25seS4sQHZlZ2FWZXJzaW9uIDEuMTEuMFxuICAgKi9cbiAgdmVnYUJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmRlZmluZWQ+PjtcbiAgLyoqXG4gICAqIE5hdGl2ZS1uYW1lc3BhY2UgbWlycm9yIG9mIGB2ZWdhQmx1cmAuIEZpcmVkIHdoZW4gdGhlIGlubmVyIGA8dGV4dGFyZWE+YFxuZWxlbWVudCBsb3NlcyBmb2N1cy4gUHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBzdGFuZGFyZCBET00gZXZlbnRcbmxpc3RlbmVycy4gQGV2ZW50RGV0YWlsIHVuZGVmaW5lZCDigJQgTm8gcGF5bG9hZDsgc2lnbmFscyB0aGUgYmx1ciBvY2N1cnJlbmNlIG9ubHkuLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgYmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHVuZGVmaW5lZD4+O1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgc3VmZml4IGJ1dHRvbiBjb25maWd1cmVkIHZpYSBgbGFiZWxTdWZmaXhCdXR0b25Db25maWdgIGlzXG5jbGlja2VkLiBMaXN0ZW4gZm9yIHRoaXMgZXZlbnQgdG8gaGFuZGxlIGlubGluZSBsYWJlbCBhY3Rpb25zIHN1Y2ggYXNcbm9wZW5pbmcgYSBoZWxwIGRpYWxvZyBvciB0b2dnbGluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiBAZXZlbnREZXRhaWwgdm9pZCxAdmVnYVZlcnNpb24gMi42OC4wXG4gICAqL1xuICB2ZWdhTGFiZWxCdXR0b25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogTmF0aXZlLW5hbWVzcGFjZSBtaXJyb3Igb2YgYHZlZ2FMYWJlbEJ1dHRvbkNsaWNrYC4gRmlyZWQgd2hlbiB0aGUgbGFiZWxcbnN1ZmZpeCBidXR0b24gaXMgY2xpY2tlZC4gUHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBzdGFuZGFyZCBET01cbmV2ZW50IGxpc3RlbmVycy4gQGV2ZW50RGV0YWlsIHZvaWQsQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNjguMFxuICAgKi9cbiAgbGFiZWxCdXR0b25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ2xhYmVsU3VmZml4QnV0dG9uQ29uZmlnJywgJ21heExlbmd0aCcsICdtaW5MZW5ndGgnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncmVxdWlyZWQnLCAncmVzaXphYmxlJywgJ3Jvd3MnLCAnc2hvd0NvdW50ZXInLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRleHRhcmVhJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbGFiZWxTdWZmaXhCdXR0b25Db25maWcnLCAnbWF4TGVuZ3RoJywgJ21pbkxlbmd0aCcsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdyZXF1aXJlZCcsICdyZXNpemFibGUnLCAncm93cycsICdzaG93Q291bnRlcicsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGV4dGFyZWEge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhQmx1cicsICdibHVyJywgJ3ZlZ2FMYWJlbEJ1dHRvbkNsaWNrJywgJ2xhYmVsQnV0dG9uQ2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRpbWVQaWNrZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUaW1lUGlja2VyIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSB0aW1lIHBpY2tlci4gQHZlZ2FWZXJzaW9uIDEuMTIuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZyB8IHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZSBvZiB0aGUgdGltZSBwaWNrZXIuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nIHwgc3RyaW5nW10+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2luY3JlbWVudHMnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtb2RlJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3Bvc2l0aW9uUmVsYXRpdmVUbycsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaG93Q2xlYXJJY29uJywgJ3NpemUnLCAndGltZUZvcm1hdCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmVnYURyb3Bkb3duUHJvcHMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdGltZS1waWNrZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2luY3JlbWVudHMnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtb2RlJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3Bvc2l0aW9uUmVsYXRpdmVUbycsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaG93Q2xlYXJJY29uJywgJ3NpemUnLCAndGltZUZvcm1hdCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmVnYURyb3Bkb3duUHJvcHMnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGltZVBpY2tlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUaW1lUGlja2VyRHJvcGRvd24gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUaW1lUGlja2VyRHJvcGRvd24ge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRpbWUtcGlja2VyLWRyb3Bkb3duJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRpbWVQaWNrZXJEcm9wZG93biB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUb2dnbGVTd2l0Y2ggZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUb2dnbGVTd2l0Y2gge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdG9nZ2xlIHN3aXRjaC4gQHZlZ2FWZXJzaW9uIDEuMy4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdG9nZ2xlIHN3aXRjaC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdjaGVja2VkJywgJ2Rpc2FibGVkJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAnc2l6ZScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdG9nZ2xlLXN3aXRjaCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnY2hlY2tlZCcsICdkaXNhYmxlZCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRvZ2dsZVN3aXRjaCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUb29sdGlwIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVG9vbHRpcCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FsaWdubWVudCcsICdjb250ZW50JywgJ2Rpc2FibGVJbnRlcmFjdGl2ZScsICdtYXhXaWR0aCcsICdtaW5XaWR0aCcsICdwbGFjZW1lbnQnLCAncG9zaXRpb25SZWxhdGl2ZVRvJywgJ3NpemUnLCAndGV4dCcsICd0cmlnZ2VyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRvb2x0aXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2FsaWdubWVudCcsICdjb250ZW50JywgJ2Rpc2FibGVJbnRlcmFjdGl2ZScsICdtYXhXaWR0aCcsICdtaW5XaWR0aCcsICdwbGFjZW1lbnQnLCAncG9zaXRpb25SZWxhdGl2ZVRvJywgJ3NpemUnLCAndGV4dCcsICd0cmlnZ2VyJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRvb2x0aXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhVG9vbHRpcENvbnRlbnRCb3ggZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUb29sdGlwQ29udGVudEJveCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ3RleHQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdG9vbHRpcC1jb250ZW50LWJveCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsndGV4dCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FUb29sdGlwQ29udGVudEJveCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FWaXJ0dWFsU2Nyb2xsIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVmlydHVhbFNjcm9sbCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FwcHJveEl0ZW1IZWlnaHQnLCAnaXNMb2FkaW5nJywgJ3JlbmRlckl0ZW0nLCAnc291cmNlJywgJ3NvdXJjZUl0ZW1JZGVudGlmaWVyJywgJ3ZpZXdwb3J0TWF4SGVpZ2h0JywgJ3ZpcnR1YWxpemF0aW9uVGhyZXNob2xkJ10sXG4gIG1ldGhvZHM6IFsnc2Nyb2xsVG9JbmRleCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS12aXJ0dWFsLXNjcm9sbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXBwcm94SXRlbUhlaWdodCcsICdpc0xvYWRpbmcnLCAncmVuZGVySXRlbScsICdzb3VyY2UnLCAnc291cmNlSXRlbUlkZW50aWZpZXInLCAndmlld3BvcnRNYXhIZWlnaHQnLCAndmlydHVhbGl6YXRpb25UaHJlc2hvbGQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVmlydHVhbFNjcm9sbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IFtcbiAgVmVnYUFjY29yZGlvbixcbiAgVmVnYUFwcEZvb3RlcixcbiAgVmVnYUFwcEhlYWRlckJ1dHRvbixcbiAgVmVnYUJhY2tkcm9wLFxuICBWZWdhQmFubmVyLFxuICBWZWdhQmFyQ2hhcnQsXG4gIFZlZ2FCb3gsXG4gIFZlZ2FCcmFuZExvZ28sXG4gIFZlZ2FCcmVhZGNydW1iLFxuICBWZWdhQnV0dG9uLFxuICBWZWdhQnV0dG9uQ2lyY2xlLFxuICBWZWdhQnV0dG9uR3JvdXAsXG4gIFZlZ2FCdXR0b25Hcm91cEl0ZW0sXG4gIFZlZ2FCdXR0b25MaW5rLFxuICBWZWdhQ2FsZW5kYXIsXG4gIFZlZ2FDYWxlbmRhckV2ZW50LFxuICBWZWdhQ2FsZW5kYXJFdmVudFByZXZpZXcsXG4gIFZlZ2FDYWxlbmRhckV2ZW50U2xvdCxcbiAgVmVnYUNhbGVuZGFyUGVyaW9kU3dpdGNoZXIsXG4gIFZlZ2FDYXJkLFxuICBWZWdhQ2Fyb3VzZWwsXG4gIFZlZ2FDaGVja2JveCxcbiAgVmVnYUNoZWNrYm94R3JvdXAsXG4gIFZlZ2FDaGlwLFxuICBWZWdhQ29kZUJsb2NrLFxuICBWZWdhQ29sb3JQaWNrZXIsXG4gIFZlZ2FDb2xvclN3YXRjaCxcbiAgVmVnYUNvbG9yU3dhdGNoUGlja2VyLFxuICBWZWdhQ29tYm9Cb3gsXG4gIFZlZ2FDb3VudGVyQmFkZ2UsXG4gIFZlZ2FEYXRlUGlja2VyLFxuICBWZWdhRGF0ZVBpY2tlckNhbGVuZGFyLFxuICBWZWdhRGlhbG9nLFxuICBWZWdhRGl2aWRlcixcbiAgVmVnYURyb3Bkb3duLFxuICBWZWdhRHJvcGRvd25Db250ZW50Qm94LFxuICBWZWdhRHJvcGRvd25Hcm91cCxcbiAgVmVnYURyb3Bkb3duSXRlbSxcbiAgVmVnYUZpZWxkRXJyb3IsXG4gIFZlZ2FGaWVsZExhYmVsLFxuICBWZWdhRmlsZVVwbG9hZGVyLFxuICBWZWdhRmxhZ0ljb24sXG4gIFZlZ2FGbGV4LFxuICBWZWdhRm9udCxcbiAgVmVnYUZvcm0sXG4gIFZlZ2FHcmlkLFxuICBWZWdhSGludCxcbiAgVmVnYUljb24sXG4gIFZlZ2FJbWFnZVVwbG9hZGVyLFxuICBWZWdhSW5wdXQsXG4gIFZlZ2FJbnB1dENyZWRpdENhcmQsXG4gIFZlZ2FJbnB1dE51bWVyaWMsXG4gIFZlZ2FJbnB1dFBhc3Njb2RlLFxuICBWZWdhSW5wdXRQaG9uZU51bWJlcixcbiAgVmVnYUlucHV0UmFuZ2UsXG4gIFZlZ2FJbnB1dFNlbGVjdCxcbiAgVmVnYUl0ZW1Ub2dnbGUsXG4gIFZlZ2FMZWZ0TmF2LFxuICBWZWdhTGVmdE5hdkdyb3VwLFxuICBWZWdhTGVmdE5hdkxpbmssXG4gIFZlZ2FMZWZ0TmF2U2VjdGlvbixcbiAgVmVnYUxpbmVDaGFydCxcbiAgVmVnYUxvYWRlcldyYXBwZXIsXG4gIFZlZ2FMb2FkaW5nSW5kaWNhdG9yLFxuICBWZWdhTW9kYWwsXG4gIFZlZ2FOYXZDYXJkLFxuICBWZWdhUGFnZU5vdGlmaWNhdGlvbixcbiAgVmVnYVBhZ2VOb3RpZmljYXRpb25MaXN0LFxuICBWZWdhUGFnaW5hdGlvbixcbiAgVmVnYVBhZ2luYXRpb25QYWdlU2VsZWN0b3JNb2JpbGUsXG4gIFZlZ2FQYWdpbmF0aW9uUGFnZVNpemVTZWxlY3Rvck1vYmlsZSxcbiAgVmVnYVBpZUNoYXJ0LFxuICBWZWdhUG9wb3ZlcixcbiAgVmVnYVBvcG92ZXJDb250ZW50Qm94LFxuICBWZWdhUHJvZ3Jlc3NUcmFja2VyLFxuICBWZWdhUHJvZ3Jlc3NUcmFja2VyU3RlcCxcbiAgVmVnYVJhZGlvLFxuICBWZWdhUmFkaW9Hcm91cCxcbiAgVmVnYVJpY2hUZXh0Q29udGVudCxcbiAgVmVnYVJpY2hUZXh0RWRpdG9yLFxuICBWZWdhUmljaFRleHRFZGl0b3JUb29sYmFyQnV0dG9uLFxuICBWZWdhUmljaFRleHRGaW5kUmVwbGFjZVBhbmVsLFxuICBWZWdhUmljaFRleHRJbWFnZUVkaXRvcixcbiAgVmVnYVJpY2hUZXh0TGlua0VkaXRvcixcbiAgVmVnYVJpY2hUZXh0U3BlY2lhbENoYXJhY3RlcnNQYW5lbCxcbiAgVmVnYVJpY2hUZXh0VGFibGVQcm9wZXJ0aWVzLFxuICBWZWdhUmljaFRleHRUYWJsZVNlbGVjdGlvbldpZGdldCxcbiAgVmVnYVJpY2hUZXh0VGFibGVTZXR0aW5nLFxuICBWZWdhU2VjdGlvblRpdGxlLFxuICBWZWdhU2VnbWVudENvbnRyb2wsXG4gIFZlZ2FTZWxlY3Rpb25DaGlwLFxuICBWZWdhU2VsZWN0aW9uQ2hpcEdyb3VwLFxuICBWZWdhU2VsZWN0aW9uVGlsZSxcbiAgVmVnYVNlbGVjdGlvblRpbGVHcm91cCxcbiAgVmVnYVNpZGVuYXYsXG4gIFZlZ2FTaWRlbmF2R3JvdXAsXG4gIFZlZ2FTaWRlbmF2TGluayxcbiAgVmVnYVNpZ25hdHVyZUNhcHR1cmUsXG4gIFZlZ2FTa2VsZXRvbixcbiAgVmVnYVNsb3RDb250YWluZXIsXG4gIFZlZ2FTdGVwcGVyLFxuICBWZWdhVGFiR3JvdXAsXG4gIFZlZ2FUYWJHcm91cFBhbmVsLFxuICBWZWdhVGFibGUsXG4gIFZlZ2FUYWJsZUJvZHksXG4gIFZlZ2FUYWJsZUNlbGwsXG4gIFZlZ2FUYWJsZUV4cGFuZFJvdyxcbiAgVmVnYVRhYmxlRm9vdCxcbiAgVmVnYVRhYmxlRm9vdENlbGwsXG4gIFZlZ2FUYWJsZUZvb3RSb3csXG4gIFZlZ2FUYWJsZUhlYWQsXG4gIFZlZ2FUYWJsZUhlYWRDZWxsLFxuICBWZWdhVGFibGVIZWFkUm93LFxuICBWZWdhVGFibGVSb3csXG4gIFZlZ2FUZXh0LFxuICBWZWdhVGV4dGFyZWEsXG4gIFZlZ2FUaW1lUGlja2VyLFxuICBWZWdhVGltZVBpY2tlckRyb3Bkb3duLFxuICBWZWdhVG9nZ2xlU3dpdGNoLFxuICBWZWdhVG9vbHRpcCxcbiAgVmVnYVRvb2x0aXBDb250ZW50Qm94LFxuICBWZWdhVmlydHVhbFNjcm9sbCxcbl07Il19
|
|
3256
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9uZW50cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvc3RlbmNpbC1nZW5lcmF0ZWQvY29tcG9uZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsb0JBQW9CO0FBQ3BCLDhDQUE4QztBQUM5QyxPQUFPLEVBQUUsdUJBQXVCLEVBQXFCLFNBQVMsRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFDeEgsT0FBTyxFQUFFLFFBQVEsRUFBRSxZQUFZLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQzs7SUE4QjFELGFBQWEsU0FBYixhQUFhO0lBRXhCLFlBQVksQ0FBb0IsRUFBRSxDQUFhLEVBQVksQ0FBUztRQUFULE1BQUMsR0FBRCxDQUFDLENBQVE7UUFDbEUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1gsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDO1FBQzFCLFlBQVksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLFlBQVksRUFBRSxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDakUsQ0FBQztDQUNGLENBQUE7MEdBUFksYUFBYTs4RkFBYixhQUFhLDBWQUhkLDJCQUEyQjtBQUcxQixhQUFhO0lBVnpCLFFBQVEsQ0FBQztRQUNSLHFCQUFxQixFQUFFLFNBQVM7UUFDaEMsTUFBTSxFQUFFLENBQUMsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLGdCQUFnQixFQUFFLHNCQUFzQixDQUFDO0tBQzlKLENBQUM7R0FPVyxhQUFhLENBT3pCO1NBUFksYUFBYTsyRkFBYixhQUFhO2tCQU56QixTQUFTO21CQUFDO29CQUNULFFBQVEsRUFBRSxnQkFBZ0I7b0JBQzFCLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNO29CQUMvQyxRQUFRLEVBQUUsMkJBQTJCO29CQUNyQyxN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WUFBWTtJQUNaLFFBQVE7SUFDUixZQUFZO0lBQ1osY0FBYztJQUNkLHNCQUFzQjtJQUN0QixnQkFBZ0I7SUFDaEIsV0FBVztJQUNYLHFCQUFxQjtJQUNyQixpQkFBaUI7Q0FDbEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIHRzbGludDpkaXNhYmxlICovXG4vKiBhdXRvLWdlbmVyYXRlZCBhbmd1bGFyIGRpcmVjdGl2ZSBwcm94aWVzICovXG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgRXZlbnRFbWl0dGVyLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFByb3h5Q21wLCBwcm94eU91dHB1dHMgfSBmcm9tICcuL2FuZ3VsYXItY29tcG9uZW50LWxpYi91dGlscyc7XG5cbmltcG9ydCB7IENvbXBvbmVudHMgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYSc7XG5cblxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQWNjb3JkaW9uIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQWNjb3JkaW9uIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBleHBhbmQgZXZlbnQgb2YgdGhlIGFjY29yZGlvbi4gQHZlZ2FWZXJzaW9uIDEuMy4wXG4gICAqL1xuICB2ZWdhRXhwYW5kOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGV4cGFuZCBldmVudCBvZiB0aGUgYWNjb3JkaW9uLlxuZXhwYW5kIGlzIGFuIGF0dHJpYnV0ZSwgc28gdGhlIGV2ZW50IG5hbWUgaGVyZSB1c2VzIGFjY29yZGlvbkV4cGFuZCBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGFjY29yZGlvbkV4cGFuZDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FjY29yZGlvblRpdGxlJywgJ2RyYXdzQmFja2dyb3VuZCcsICdleHBhbmQnLCAnZXhwYW5kSWNvbkFsaWduJywgJ2dyb3VwSWQnLCAnaWNvblBvc2l0aW9uJywgJ3ByZWZpeEljb24nLCAnc2hvd0V4cGFuZEljb24nLCAndGl0bGVCYWNrZ3JvdW5kQ29sb3InXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtYWNjb3JkaW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhY2NvcmRpb25UaXRsZScsICdkcmF3c0JhY2tncm91bmQnLCAnZXhwYW5kJywgJ2V4cGFuZEljb25BbGlnbicsICdncm91cElkJywgJ2ljb25Qb3NpdGlvbicsICdwcmVmaXhJY29uJywgJ3Nob3dFeHBhbmRJY29uJywgJ3RpdGxlQmFja2dyb3VuZENvbG9yJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUFjY29yZGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FFeHBhbmQnLCAnYWNjb3JkaW9uRXhwYW5kJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYUFwcEZvb3RlckxpbmsgYXMgSVZlZ2FBcHBGb290ZXJWZWdhQXBwRm9vdGVyTGluayB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLWFwcC1mb290ZXIvdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FBcHBGb290ZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FBcHBGb290ZXIge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBhZGRpdGlvbmFsIGxpbmsgaW4gdGhlIGFwcCBmb290ZXIuIEB2ZWdhVmVyc2lvbiAyLjkxLjBcbiAgICovXG4gIHZlZ2FBZGRpdGlvbmFsTGlua0NsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FBcHBGb290ZXJWZWdhQXBwRm9vdGVyTGluaz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBhZGRpdGlvbmFsIGxpbmsgaW4gdGhlIGFwcCBmb290ZXIuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjkxLjBcbiAgICovXG4gIGFkZGl0aW9uYWxMaW5rQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUFwcEZvb3RlclZlZ2FBcHBGb290ZXJMaW5rPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhZGRpdGlvbmFsTGlua3MnLCAnY29udGVudCcsICdkaXNjbGFpbWVyVXJsVGFyZ2V0JywgJ2hpZGVEZWZhdWx0TGlua3MnLCAncHJpdmFjeVBvbGljeUxhYmVsJywgJ3ByaXZhY3lQb2xpY3lVcmwnLCAncHJpdmFjeVBvbGljeVVybElkJywgJ3ByaXZhY3lQb2xpY3lVcmxUYXJnZXQnLCAnc2hvd0Rpc2NsYWltZXInLCAndGVybU9mVXNlTGFiZWwnLCAndGVybU9mVXNlVXJsJywgJ3Rlcm1PZlVzZVVybElkJywgJ3Rlcm1PZlVzZVVybFRhcmdldCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1hcHAtZm9vdGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhZGRpdGlvbmFsTGlua3MnLCAnY29udGVudCcsICdkaXNjbGFpbWVyVXJsVGFyZ2V0JywgJ2hpZGVEZWZhdWx0TGlua3MnLCAncHJpdmFjeVBvbGljeUxhYmVsJywgJ3ByaXZhY3lQb2xpY3lVcmwnLCAncHJpdmFjeVBvbGljeVVybElkJywgJ3ByaXZhY3lQb2xpY3lVcmxUYXJnZXQnLCAnc2hvd0Rpc2NsYWltZXInLCAndGVybU9mVXNlTGFiZWwnLCAndGVybU9mVXNlVXJsJywgJ3Rlcm1PZlVzZVVybElkJywgJ3Rlcm1PZlVzZVVybFRhcmdldCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FBcHBGb290ZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQWRkaXRpb25hbExpbmtDbGljaycsICdhZGRpdGlvbmFsTGlua0NsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FBcHBIZWFkZXJCdXR0b24gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FBcHBIZWFkZXJCdXR0b24ge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIGFuIGFwcCBoZWFkZXIgYnV0dG9uLiBAdmVnYVZlcnNpb24gMS4xMS4wXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiBhbiBhcHAgaGVhZGVyIGJ1dHRvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIGEgZHJvcGRvd24gaXRlbVxuICAgaW4gdGhlIGFwcCBoZWFkZXIuIEB2ZWdhVmVyc2lvbiAxLjIzLjBcbiAgICovXG4gIHZlZ2FEcm9wZG93bkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgYSBkcm9wZG93biBpdGVtXG4gICBpbiB0aGUgYXBwIGhlYWRlci4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBkcm9wZG93bkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgcmVzZXQgZXZlbnQgaW4gdGhlIGRyb3Bkb3duLiBAdmVnYVZlcnNpb24gMi43My4wXG4gICAqL1xuICB2ZWdhUmVzZXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSByZXNldCBldmVudCBpbiB0aGUgZHJvcGRvd24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjczLjBcbiAgICovXG4gIHJlc2V0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgc2VhcmNoIGV2ZW50IGluIHRoZSBkcm9wZG93bixcbiAgIGJ1dCBvbmx5IGlmIGB1c2VEZWZhdWx0RmlsdGVyYCBpcyBzZXQgdG8gYGZhbHNlYC4gQHZlZ2FWZXJzaW9uIDIuODQuMFxuICAgKi9cbiAgdmVnYVNlYXJjaDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHNlYXJjaCBldmVudCBpbiB0aGUgZHJvcGRvd24sXG4gICBidXQgb25seSBpZiBgdXNlRGVmYXVsdEZpbHRlcmAgaXMgc2V0IHRvIGBmYWxzZWAuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjg0LjBcbiAgICovXG4gIGRyb3Bkb3duU2VhcmNoOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdmF0YXInLCAnYXZhdGFyUG9zaXRpb24nLCAnZHJvcGRvd24nLCAnbGFiZWwnLCAnbGFiZWxDb25maWcnLCAnc2VsZWN0ZWQnLCAnc2hvd0JvcmRlcicsICdzaG93TGFiZWwnLCAnc2hvd01lbnVBcnJvd0ljb24nLCAnc2l6ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1hcHAtaGVhZGVyLWJ1dHRvbicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXZhdGFyJywgJ2F2YXRhclBvc2l0aW9uJywgJ2Ryb3Bkb3duJywgJ2xhYmVsJywgJ2xhYmVsQ29uZmlnJywgJ3NlbGVjdGVkJywgJ3Nob3dCb3JkZXInLCAnc2hvd0xhYmVsJywgJ3Nob3dNZW51QXJyb3dJY29uJywgJ3NpemUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQXBwSGVhZGVyQnV0dG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJywgJ3ZlZ2FEcm9wZG93bkNsaWNrJywgJ2Ryb3Bkb3duQ2xpY2snLCAndmVnYVJlc2V0JywgJ3Jlc2V0JywgJ3ZlZ2FTZWFyY2gnLCAnZHJvcGRvd25TZWFyY2gnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJhY2tkcm9wIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQmFja2Ryb3Age1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBiYWNrZHJvcC4gQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjb2xvcicsICdkdXJhdGlvbicsICd2aXNpYmxlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWJhY2tkcm9wJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjb2xvcicsICdkdXJhdGlvbicsICd2aXNpYmxlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUJhY2tkcm9wIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYUJhbm5lckFjdGlvbkJ1dHRvblR5cGUgYXMgSVZlZ2FCYW5uZXJWZWdhQmFubmVyQWN0aW9uQnV0dG9uVHlwZSB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLWJhbm5lci90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJhbm5lciBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJhbm5lciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgYmFubmVyIGNsb3NlIGV2ZW50LiBAdmVnYVZlcnNpb24gMS4xMy4wXG4gICAqL1xuICB2ZWdhQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBiYW5uZXIgY2xvc2UgZXZlbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjguMFxuICAgKi9cbiAgY2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBiYW5uZXIgYWN0aW9uIGJ1dHRvbiBoYXMgYmVlbiBjbGlja2VkLiBAdmVnYVZlcnNpb24gMi4xOC4wXG4gICAqL1xuICB2ZWdhQWN0aW9uQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUJhbm5lclZlZ2FCYW5uZXJBY3Rpb25CdXR0b25UeXBlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgYmFubmVyIGFjdGlvbiBidXR0b24gaGFzIGJlZW4gY2xpY2tlZC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMTguMFxuICAgKi9cbiAgYWN0aW9uQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUJhbm5lclZlZ2FCYW5uZXJBY3Rpb25CdXR0b25UeXBlPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhY3Rpb25CdXR0b25zJywgJ2Jhbm5lclRpdGxlJywgJ2NvbnRlbnQnLCAnaXNPcGVuJywgJ3Nob3dDbG9zZUJ1dHRvbicsICd0eXBlJ10sXG4gIG1ldGhvZHM6IFsnZG9DbG9zZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1iYW5uZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2FjdGlvbkJ1dHRvbnMnLCAnYmFubmVyVGl0bGUnLCAnY29udGVudCcsICdpc09wZW4nLCAnc2hvd0Nsb3NlQnV0dG9uJywgJ3R5cGUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQmFubmVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsb3NlJywgJ2Nsb3NlJywgJ3ZlZ2FBY3Rpb25CdXR0b25DbGljaycsICdhY3Rpb25CdXR0b25DbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQmFyQ2hhcnQgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FCYXJDaGFydCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ29wdGlvbnMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtYmFyLWNoYXJ0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydvcHRpb25zJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUJhckNoYXJ0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJveCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJveCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FsaWduU2VsZicsICdiYWNrZ3JvdW5kQ29sb3InLCAnYm9yZGVyJywgJ2JvcmRlckNvbG9yJywgJ2JvcmRlclN0eWxlJywgJ2Nvcm5lcnMnLCAnZGlzcGxheScsICdmbGV4JywgJ2ZsZXhCYXNpcycsICdmbGV4R3JvdycsICdmbGV4U2hyaW5rJywgJ2dyaWRBcmVhJywgJ2dyaWRDb2x1bW4nLCAnZ3JpZFJvdycsICdoZWlnaHQnLCAnanVzdGlmeVNlbGYnLCAnbWFyZ2luJywgJ21heEhlaWdodCcsICdtaW5IZWlnaHQnLCAnb3JkZXInLCAncGFkZGluZycsICdyZXNwb25zaXZlQ2xhc3MnLCAnc2hhZG93JywgJ3dpZHRoJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWJveCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYWxpZ25TZWxmJywgJ2JhY2tncm91bmRDb2xvcicsICdib3JkZXInLCAnYm9yZGVyQ29sb3InLCAnYm9yZGVyU3R5bGUnLCAnY29ybmVycycsICdkaXNwbGF5JywgJ2ZsZXgnLCAnZmxleEJhc2lzJywgJ2ZsZXhHcm93JywgJ2ZsZXhTaHJpbmsnLCAnZ3JpZEFyZWEnLCAnZ3JpZENvbHVtbicsICdncmlkUm93JywgJ2hlaWdodCcsICdqdXN0aWZ5U2VsZicsICdtYXJnaW4nLCAnbWF4SGVpZ2h0JywgJ21pbkhlaWdodCcsICdvcmRlcicsICdwYWRkaW5nJywgJ3Jlc3BvbnNpdmVDbGFzcycsICdzaGFkb3cnLCAnd2lkdGgnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQm94IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJyYW5kTG9nbyBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJyYW5kTG9nbyB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ25hbWUnLCAnc2l6ZScsICd0aGVtZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1icmFuZC1sb2dvJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWyduYW1lJywgJ3NpemUnLCAndGhlbWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQnJhbmRMb2dvIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhQnJlYWRjcnVtYkl0ZW1UeXBlIGFzIElWZWdhQnJlYWRjcnVtYlZlZ2FCcmVhZGNydW1iSXRlbVR5cGUgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1icmVhZGNydW1iL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQnJlYWRjcnVtYiBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJyZWFkY3J1bWIge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGJyZWFkY3J1bWIgaXRlbSBoYXMgYmVlbiBjbGlja2VkLiBAdmVnYVZlcnNpb24gMS40MS4wXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUJyZWFkY3J1bWJWZWdhQnJlYWRjcnVtYkl0ZW1UeXBlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgYnJlYWRjcnVtYiBpdGVtIGhhcyBiZWVuIGNsaWNrZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUJyZWFkY3J1bWJWZWdhQnJlYWRjcnVtYkl0ZW1UeXBlPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjb21wYWN0T25Nb2JpbGUnLCAnaXRlbXMnLCAnbGFzdEl0ZW1DbGlja2FibGUnLCAnbWF4SXRlbXMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtYnJlYWRjcnVtYicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY29tcGFjdE9uTW9iaWxlJywgJ2l0ZW1zJywgJ2xhc3RJdGVtQ2xpY2thYmxlJywgJ21heEl0ZW1zJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUJyZWFkY3J1bWIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAnY2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJ1dHRvbiBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJ1dHRvbiB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGJ1dHRvbi4gQHZlZ2FWZXJzaW9uIDEuMC4xMVxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGJ1dHRvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYmxvY2snLCAnZGFuZ2VyJywgJ2Rpc2FibGVkJywgJ2ljb24nLCAnaWNvbkFsaWduJywgJ2xhYmVsJywgJ2xvYWRpbmcnLCAnc2l6ZScsICd0eXBlJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtYnV0dG9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydibG9jaycsICdkYW5nZXInLCAnZGlzYWJsZWQnLCAnaWNvbicsICdpY29uQWxpZ24nLCAnbGFiZWwnLCAnbG9hZGluZycsICdzaXplJywgJ3R5cGUnLCAndmFyaWFudCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FCdXR0b24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAnY2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJ1dHRvbkNpcmNsZSBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJ1dHRvbkNpcmNsZSB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGNpcmN1bGFyIGJ1dHRvbi4gQHZlZ2FWZXJzaW9uIDEuMC4xMVxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGNpcmN1bGFyIGJ1dHRvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnZGFuZ2VyJywgJ2Rpc2FibGVkJywgJ2ljb24nLCAnaWNvbkNvbG9yJywgJ2xhYmVsJywgJ3Nob3dUb29sdGlwJywgJ3NpemUnLCAndG9vbHRpcCcsICd0eXBlJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtYnV0dG9uLWNpcmNsZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnZGFuZ2VyJywgJ2Rpc2FibGVkJywgJ2ljb24nLCAnaWNvbkNvbG9yJywgJ2xhYmVsJywgJ3Nob3dUb29sdGlwJywgJ3NpemUnLCAndG9vbHRpcCcsICd0eXBlJywgJ3ZhcmlhbnQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQnV0dG9uQ2lyY2xlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FCdXR0b25Hcm91cCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUJ1dHRvbkdyb3VwIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgYnV0dG9uIGdyb3VwLiBAdmVnYVZlcnNpb24gMi41LjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBidXR0b24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjUuMFxuICAgKi9cbiAgY2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2ljb25BbGlnbicsICdzaXplJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtYnV0dG9uLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdpY29uQWxpZ24nLCAnc2l6ZScsICd2YXJpYW50J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUJ1dHRvbkdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FCdXR0b25Hcm91cEl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FCdXR0b25Hcm91cEl0ZW0ge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdkcm9wZG93blByb3BzJywgJ2Ryb3Bkb3duU291cmNlJywgJ2ljb24nLCAnaWNvbk9ubHknLCAnaXRlbUtleScsICdsYWJlbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1idXR0b24tZ3JvdXAtaXRlbScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAnZHJvcGRvd25Qcm9wcycsICdkcm9wZG93blNvdXJjZScsICdpY29uJywgJ2ljb25Pbmx5JywgJ2l0ZW1LZXknLCAnbGFiZWwnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQnV0dG9uR3JvdXBJdGVtIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUJ1dHRvbkxpbmsgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FCdXR0b25MaW5rIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgYnV0dG9uLiBAdmVnYVZlcnNpb24gMS4wLjExXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgYnV0dG9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydkYW5nZXInLCAnZGlzYWJsZWQnLCAnZXZlbnRmdWwnLCAnaWNvbicsICdpY29uQWxpZ24nLCAnaWNvblR5cGUnLCAnbGFiZWwnLCAnbGluaycsICdzaXplJywgJ3RhcmdldCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1idXR0b24tbGluaycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnZGFuZ2VyJywgJ2Rpc2FibGVkJywgJ2V2ZW50ZnVsJywgJ2ljb24nLCAnaWNvbkFsaWduJywgJ2ljb25UeXBlJywgJ2xhYmVsJywgJ2xpbmsnLCAnc2l6ZScsICd0YXJnZXQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQnV0dG9uTGluayB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDbGljaycsICdjbGljayddKTtcbiAgfVxufVxuXG5pbXBvcnQgdHlwZSB7IFZlZ2FDYWxlbmRhckNoYW5nZUV2ZW50VHlwZSBhcyBJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyQ2hhbmdlRXZlbnRUeXBlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtY2FsZW5kYXIvdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBWZWdhQ2FsZW5kYXJFdmVudENsaWNrSW5mbyBhcyBJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyRXZlbnRDbGlja0luZm8gfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1jYWxlbmRhci90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFZlZ2FDYWxlbmRhckV2ZW50RWRpdEluZm8gYXMgSVZlZ2FDYWxlbmRhclZlZ2FDYWxlbmRhckV2ZW50RWRpdEluZm8gfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1jYWxlbmRhci90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFZlZ2FDYWxlbmRhckRhdGVDbGlja0luZm8gYXMgSVZlZ2FDYWxlbmRhclZlZ2FDYWxlbmRhckRhdGVDbGlja0luZm8gfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1jYWxlbmRhci90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNhbGVuZGFyIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ2FsZW5kYXIge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNvbXBvbmVudCB2aWV3IGNvbnRlbnQgY2hhbmdlIGFmdGVyIGEgc3dpdGNoIHBhbmVsIGNsaWNrLiBAdmVnYVZlcnNpb24gMi4xNC4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FDYWxlbmRhclZlZ2FDYWxlbmRhckNoYW5nZUV2ZW50VHlwZT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNvbXBvbmVudCB2aWV3IGNvbnRlbnQgY2hhbmdlIGFmdGVyIGEgc3dpdGNoIHBhbmVsIGNsaWNrLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4xNC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyQ2hhbmdlRXZlbnRUeXBlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgY29tcG9uZW50IGV2ZW50IGl0ZW0gaXMgY2xpY2tlZC4gQHZlZ2FWZXJzaW9uIDIuMTQuMFxuICAgKi9cbiAgdmVnYUV2ZW50Q2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyRXZlbnRDbGlja0luZm8+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBjb21wb25lbnQgZXZlbnQgaXRlbSBpcyBjbGlja2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4xNC4wXG4gICAqL1xuICBldmVudENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FDYWxlbmRhclZlZ2FDYWxlbmRhckV2ZW50Q2xpY2tJbmZvPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgY2FsZW5kYXIgZXZlbnQgZWRpdCBhY3Rpb24gaXMgdHJpZ2dlcmVkIGZyb20gdGhlIGV2ZW50IHByZXZpZXcgcG9wb3Zlci4gQHZlZ2FWZXJzaW9uIDIuODcuMFxuICAgKi9cbiAgdmVnYUV2ZW50RWRpdDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhQ2FsZW5kYXJWZWdhQ2FsZW5kYXJFdmVudEVkaXRJbmZvPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgY2FsZW5kYXIgZXZlbnQgZWRpdCBhY3Rpb24gaXMgdHJpZ2dlcmVkIGZyb20gdGhlIGV2ZW50IHByZXZpZXcgcG9wb3Zlci4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuODcuMFxuICAgKi9cbiAgZXZlbnRFZGl0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FDYWxlbmRhclZlZ2FDYWxlbmRhckV2ZW50RWRpdEluZm8+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBjYWxlbmRhciBkYXRlIGl0ZW0gaGFzIGJlZW4gZG91YmxlLWNsaWNrZWQuIFRoZSBldmVudCB3aWxsIG5vdCBiZSB0cmlnZ2VyZWQgaWYgYGVuYWJsZURhdGFDbGlja2AgaXMgc2V0IHRvIHRydWUgdG8gcHJldmVudCBjb25mbGljdHMuIEB2ZWdhVmVyc2lvbiAyLjE3LjBcbiAgICovXG4gIHZlZ2FEYXRlRGJsQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyRGF0ZUNsaWNrSW5mbz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGNhbGVuZGFyIGRhdGUgaXRlbSBoYXMgYmVlbiBkb3VibGUtY2xpY2tlZC4gVGhlIGV2ZW50IHdpbGwgbm90IGJlIHRyaWdnZXJlZCBpZiBgZW5hYmxlRGF0YUNsaWNrYCBpcyB0cnVlIHRvIHByZXZlbnQgY29uZmxpY3RzLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4xNy4wXG4gICAqL1xuICBkYXRlRGJsQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNhbGVuZGFyVmVnYUNhbGVuZGFyRGF0ZUNsaWNrSW5mbz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGNhbGVuZGFyIGRhdGUgaXRlbSBoYXMgYmVlbiBjbGlja2VkLiBUaGUgZXZlbnQgd2lsbCBub3QgYmUgdHJpZ2dlcmVkIGlmIGBlbmFibGVEYXRhQ2xpY2tgIGlzIGZhbHNlLiBAdmVnYVZlcnNpb24gMi42MS4wXG4gICAqL1xuICB2ZWdhRGF0ZUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FDYWxlbmRhclZlZ2FDYWxlbmRhckRhdGVDbGlja0luZm8+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBjYWxlbmRhciBkYXRlIGl0ZW0gaGFzIGJlZW4gY2xpY2tlZC4gVGhlIGV2ZW50IHdpbGwgbm90IGJlIHRyaWdnZXJlZCBpZiBgZW5hYmxlRGF0YUNsaWNrYCBpcyBmYWxzZS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNjEuMFxuICAgKi9cbiAgZGF0ZUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FDYWxlbmRhclZlZ2FDYWxlbmRhckRhdGVDbGlja0luZm8+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBjYWxlbmRhciBtb3JlIGFjdGlvbiBtZW51IGl0ZW0gaGFzIGJlZW4gY2xpY2tlZC4gQHZlZ2FWZXJzaW9uIDIuMjAuMFxuICAgKi9cbiAgdmVnYU1vcmVBY3Rpb25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGNhbGVuZGFyIG1vcmUgYWN0aW9uIG1lbnUgaXRlbSBoYXMgYmVlbiBjbGlja2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yMC4wXG4gICAqL1xuICBtb3JlQWN0aW9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2VuYWJsZURhdGVDbGljaycsICdlbmFibGVkRXZlbnRQcmV2aWV3JywgJ2V2ZW50RWRpdGFibGUnLCAnZXZlbnRzJywgJ2dldEV2ZW50UHJldmlld0FjdGlvbnMnLCAnaXNEYXRlRGlzYWJsZWQnLCAnbW9yZUFjdGlvbkRyb3Bkb3duUHJvcHMnLCAnc2hvd0V2ZW50Q29sb3JCYXInLCAnc2hvd1N3aXRjaFZpZXcnLCAnc2hvd1dlZWtlbmRzJywgJ3RpbWVGb3JtYXQnLCAndGltZXpvbmUnLCAndmlld01vZGUnXSxcbiAgbWV0aG9kczogWydzZXRDdXJyZW50UGVyaW9kJywgJ2dldEN1cnJlbnRQZXJpb2QnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtY2FsZW5kYXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2VuYWJsZURhdGVDbGljaycsICdlbmFibGVkRXZlbnRQcmV2aWV3JywgJ2V2ZW50RWRpdGFibGUnLCAnZXZlbnRzJywgJ2dldEV2ZW50UHJldmlld0FjdGlvbnMnLCAnaXNEYXRlRGlzYWJsZWQnLCAnbW9yZUFjdGlvbkRyb3Bkb3duUHJvcHMnLCAnc2hvd0V2ZW50Q29sb3JCYXInLCAnc2hvd1N3aXRjaFZpZXcnLCAnc2hvd1dlZWtlbmRzJywgJ3RpbWVGb3JtYXQnLCAndGltZXpvbmUnLCAndmlld01vZGUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ2FsZW5kYXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhRXZlbnRDbGljaycsICdldmVudENsaWNrJywgJ3ZlZ2FFdmVudEVkaXQnLCAnZXZlbnRFZGl0JywgJ3ZlZ2FEYXRlRGJsQ2xpY2snLCAnZGF0ZURibENsaWNrJywgJ3ZlZ2FEYXRlQ2xpY2snLCAnZGF0ZUNsaWNrJywgJ3ZlZ2FNb3JlQWN0aW9uQ2xpY2snLCAnbW9yZUFjdGlvbkNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDYWxlbmRhckV2ZW50IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ2FsZW5kYXJFdmVudCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NhbGVuZGFyRXZlbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtY2FsZW5kYXItZXZlbnQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NhbGVuZGFyRXZlbnQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ2FsZW5kYXJFdmVudCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDYWxlbmRhckV2ZW50UHJldmlldyBleHRlbmRzIENvbXBvbmVudHMuVmVnYUNhbGVuZGFyRXZlbnRQcmV2aWV3IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jYWxlbmRhci1ldmVudC1wcmV2aWV3JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYUNhbGVuZGFyRXZlbnRQcmV2aWV3IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNhbGVuZGFyRXZlbnRTbG90IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ2FsZW5kYXJFdmVudFNsb3Qge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydldmVudEtleSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jYWxlbmRhci1ldmVudC1zbG90JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydldmVudEtleSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FDYWxlbmRhckV2ZW50U2xvdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYUNhbGVuZGFyUGVyaW9kVHlwZSBhcyBJVmVnYUNhbGVuZGFyUGVyaW9kU3dpdGNoZXJWZWdhQ2FsZW5kYXJQZXJpb2RUeXBlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtY2FsZW5kYXIvdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDYWxlbmRhclBlcmlvZFN3aXRjaGVyIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ2FsZW5kYXJQZXJpb2RTd2l0Y2hlciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBjYWxlbmRhciBwZXJpb2QgaGFzIGNoYW5nZWQuIEB2ZWdhVmVyc2lvbiAyLjkxLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNhbGVuZGFyUGVyaW9kU3dpdGNoZXJWZWdhQ2FsZW5kYXJQZXJpb2RUeXBlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBjYWxlbmRhciBwZXJpb2QgaGFzIGNoYW5nZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjkxLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhQ2FsZW5kYXJQZXJpb2RTd2l0Y2hlclZlZ2FDYWxlbmRhclBlcmlvZFR5cGU+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ3Nob3dXZWVrZW5kcycsICd0aW1lem9uZScsICd2aWV3TW9kZSddLFxuICBtZXRob2RzOiBbJ3NldEN1cnJlbnRQZXJpb2QnLCAnZ2V0Q3VycmVudFBlcmlvZCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jYWxlbmRhci1wZXJpb2Qtc3dpdGNoZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ3Nob3dXZWVrZW5kcycsICd0aW1lem9uZScsICd2aWV3TW9kZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FDYWxlbmRhclBlcmlvZFN3aXRjaGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNhcmQgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FDYXJkIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYmFja2dyb3VuZENvbG9yJywgJ21hcmdpbicsICdwYWRkaW5nJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtY2FyZCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYmFja2dyb3VuZENvbG9yJywgJ21hcmdpbicsICdwYWRkaW5nJywgJ3ZhcmlhbnQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ2FyZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDYXJvdXNlbCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUNhcm91c2VsIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSB0cmFuc2l0aW9uIG9mIHRoZSBjYXJvdXNlbCB0byBhbm90aGVyIHBhZ2UsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQHZlZ2FWZXJzaW9uIDEuMy4wXG4gICAqL1xuICB2ZWdhUGFnZVVwZGF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PG51bWJlcj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHRyYW5zaXRpb24gb2YgdGhlIGNhcm91c2VsIHRvIGFub3RoZXIgcGFnZSxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIHBhZ2VVcGRhdGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxudW1iZXI+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NhblN3aXBlJywgJ2l0ZW1zUGVyUGFnZScsICdwZXJQYWdlJywgJ3Nob3dTbGlkZXInLCAnc3BhY2luZyddLFxuICBtZXRob2RzOiBbJ25leHRQYWdlJywgJ3ByZXZQYWdlJywgJ2dvVG9QYWdlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWNhcm91c2VsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjYW5Td2lwZScsICdpdGVtc1BlclBhZ2UnLCAncGVyUGFnZScsICdzaG93U2xpZGVyJywgJ3NwYWNpbmcnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhQ2Fyb3VzZWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhUGFnZVVwZGF0ZScsICdwYWdlVXBkYXRlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDaGVja2JveCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUNoZWNrYm94IHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBjaGVja2JveCxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMS4wLjEwXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nIHwgYm9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIGNoZWNrYm94XG4gICB0cmlnZ2VyZWQgZXhjbHVzaXZlbHkgYnkgdXNlciBpbnRlcmFjdGlvbiAobW91c2UgY2xpY2sgb3Iga2V5Ym9hcmQgYWN0aXZhdGlvbikuXG5cblVubGlrZSBgdmVnYUNoYW5nZWAsIHRoaXMgZXZlbnQgZG9lcyBOT1QgZmlyZSB3aGVuIHRoZSBgY2hlY2tlZGAgb3IgYHZhbHVlYFxuICAgcHJvcCBpcyByZWFzc2lnbmVkIHByb2dyYW1tYXRpY2FsbHkuIFVzZSB0aGlzIGV2ZW50IHdoZW4geW91IHdhbnQgdG8gcmVhY3RcbiAgIG9ubHkgdG8gcmVhbCB1c2VyIGlucHV0IChlLmcuLCBhbmFseXRpY3MsIGRlcml2ZWQgXCJzZWxlY3QgYWxsXCIgc3RhdGUpLiBAcmVtYXJrcyBDYWxsaW5nIGBldmVudC5wcmV2ZW50RGVmYXVsdCgpYCBpcyBhIG5vLW9wIOKAlCBpdCBkb2VzIG5vdCByb2xsXG5iYWNrIGBjaGVja2VkYC9gdmFsdWVgIG5vciBzdXBwcmVzcyB0aGUgcGFpcmVkIGB2ZWdhQ2hhbmdlYCBldmVudC5cbmBjYW5jZWxhYmxlOiB0cnVlYCBpcyByZXRhaW5lZCBvbmx5IGZvciBwYXJpdHkgd2l0aCBgdmVnYUNoYW5nZWAuLEBzZWUge21vZHVsZSA6dmVnYS1jaGVja2JveC11c2VyLWNoYW5nZX0sQHNlZSB7bW9kdWxlIDp2ZWdhLWNoZWNrYm94LXVzZXItY2hhbmdlLWtleWJvYXJkfSxAc2VlIHttb2R1bGUgOnZlZ2EtY2hlY2tib3gtdXNlci1jaGFuZ2Uta2V5Ym9hcmQtZW50ZXJ9LEBzZWUge21vZHVsZSA6dmVnYS1jaGVja2JveC11c2VyLWNoYW5nZS1wcm9ncmFtbWF0aWN9LEBzZWUge21vZHVsZSA6dmVnYS1jaGVja2JveC11c2VyLWNoYW5nZS1jb250YWlubWVudH0sQHZlZ2FWZXJzaW9uIDIuODkuMFxuICAgKi9cbiAgdmVnYVVzZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmcgfCBib29sZWFuPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZSBvZiB0aGUgY2hlY2tib3hcbiAgIHRyaWdnZXJlZCBleGNsdXNpdmVseSBieSB1c2VyIGludGVyYWN0aW9uIChtb3VzZSBjbGljayBvciBrZXlib2FyZCBhY3RpdmF0aW9uKS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuODkuMFxuICAgKi9cbiAgdXNlckNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZyB8IGJvb2xlYW4+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBjaGVja2JveCxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZyB8IGJvb2xlYW4+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NoZWNrZWQnLCAnZGlzYWJsZWQnLCAnaWRlbnRpZmllcicsICdpbmRldGVybWluYXRlJywgJ2lzVmFsaWQnLCAnbmFtZScsICdyZXF1aXJlZCcsICdzaXplJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsnc2V0VmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtY2hlY2tib3gnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NoZWNrZWQnLCAnZGlzYWJsZWQnLCAnaWRlbnRpZmllcicsICdpbmRldGVybWluYXRlJywgJ2lzVmFsaWQnLCAnbmFtZScsICdyZXF1aXJlZCcsICdzaXplJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUNoZWNrYm94IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICd2ZWdhVXNlckNoYW5nZScsICd1c2VyQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQ2hlY2tib3hHcm91cCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUNoZWNrYm94R3JvdXAge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWVcbiAgb2YgYW55IG5lc3RlZCBjaGVja2JveCB3aXRoaW4gdGhlIGNoZWNrYm94IGdyb3VwLFxuICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2hcbiAgdXNlciBpbnRlcmFjdGlvbi4gQHZlZ2FWZXJzaW9uIDEuMC4xMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZSBvZiB0aGUgY2hlY2tib3ggZ3JvdXBcbiAgdHJpZ2dlcmVkIGV4Y2x1c2l2ZWx5IGJ5IHVzZXIgaW50ZXJhY3Rpb24gKG1vdXNlIGNsaWNrIG9yIGtleWJvYXJkXG4gIGFjdGl2YXRpb24pIG9uIGEgbmVzdGVkIGNoZWNrYm94LlxuXG5Vbmxpa2UgYHZlZ2FDaGFuZ2VgLCB0aGlzIGV2ZW50IGRvZXMgTk9UIGZpcmUgd2hlbiB0aGUgYHZhbHVlYCBwcm9wXG4gIGlzIHJlYXNzaWduZWQgcHJvZ3JhbW1hdGljYWxseS4gVXNlIHRoaXMgZXZlbnQgd2hlbiB5b3Ugd2FudCB0b1xuICByZWFjdCBvbmx5IHRvIHJlYWwgdXNlciBpbnB1dCAoZS5nLiwgYW5hbHl0aWNzLCBkZXJpdmVkXG4gIFwic2VsZWN0IGFsbFwiIHN0YXRlKS4gQHJlbWFya3MgQ2FsbGluZyBgZXZlbnQucHJldmVudERlZmF1bHQoKWAgaXMgYSBuby1vcCDigJQgaXQgZG9lcyBub3Qgcm9sbFxuYmFjayBgdmFsdWVgIG5vciBzdXBwcmVzcyB0aGUgcGFpcmVkIGB2ZWdhQ2hhbmdlYCBldmVudC5cbmBjYW5jZWxhYmxlOiB0cnVlYCBpcyByZXRhaW5lZCBvbmx5IGZvciBwYXJpdHkgd2l0aCBgdmVnYUNoYW5nZWAuLEBzZWUge21vZHVsZSA6dmVnYS1jaGVja2JveC1ncm91cC11c2VyLWNoYW5nZX0sQHNlZSB7bW9kdWxlIDp2ZWdhLWNoZWNrYm94LWdyb3VwLXVzZXItY2hhbmdlLXByb2dyYW1tYXRpY30sQHNlZSB7bW9kdWxlIDp2ZWdhLWNoZWNrYm94LWdyb3VwLXVzZXItY2hhbmdlLW5vLWRvdWJsZX0sQHZlZ2FWZXJzaW9uIDIuODkuMFxuICAgKi9cbiAgdmVnYVVzZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmdbXT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWVcbiAgb2YgYW55IG5lc3RlZCBjaGVja2JveCB3aXRoaW4gdGhlIGNoZWNrYm94IGdyb3VwLFxuICB0cmlnZ2VyZWQgZXhjbHVzaXZlbHkgYnkgdXNlciBpbnRlcmFjdGlvbiAobW91c2UgY2xpY2sgb3Iga2V5Ym9hcmQgYWN0aXZhdGlvbikuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjg5LjBcbiAgICovXG4gIHVzZXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmdbXT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWVcbiAgb2YgYW55IG5lc3RlZCBjaGVja2JveCB3aXRoaW4gdGhlIGNoZWNrYm94IGdyb3VwLFxuICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2hcbiAgdXNlciBpbnRlcmFjdGlvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmdbXT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJywgJ3ZlZ2FGbGV4UHJvcCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jaGVja2JveC1ncm91cCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJywgJ3ZlZ2FGbGV4UHJvcCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FDaGVja2JveEdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICd2ZWdhVXNlckNoYW5nZScsICd1c2VyQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQ2hpcCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUNoaXAge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBjbG9zZSBidXR0b24gb2YgdGhlIGNoaXAuXG5cblRoaXMgZXZlbnQgaXMgb25seSBkaXNwYXRjaGVkIHdoZW4gdGhlIGBzaG93Q2xvc2VJY29uYCBwcm9wZXJ0eSBpcyBzZXQgdG8gYHRydWVgLiBAdmVnYVZlcnNpb24gMS4xMS4wXG4gICAqL1xuICB2ZWdhQ2xvc2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx2b2lkPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGNsb3NlIGJ1dHRvbiBvZiB0aGUgY2hpcC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgY2hpcC5cblxuVGhpcyBldmVudCBpcyBvbmx5IGRpc3BhdGNoZWQgd2hlbiB0aGUgYGNsaWNrYWJsZWAgcHJvcGVydHkgaXMgc2V0IHRvIGB0cnVlYC4gQHZlZ2FWZXJzaW9uIDEuMTEuMFxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBjaGlwLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dm9pZD4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYmdDb2xvcicsICdjaGlwVHlwZScsICdjbGlja2FibGUnLCAnaWNvbicsICdpY29uQWxpZ24nLCAnaWNvbkNvbG9yJywgJ3Nob3dDbG9zZUljb24nLCAnc2l6ZScsICdzdGF0dXNDb2xvcicsICd0ZXh0JywgJ3RleHRDb2xvcicsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWNoaXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2JnQ29sb3InLCAnY2hpcFR5cGUnLCAnY2xpY2thYmxlJywgJ2ljb24nLCAnaWNvbkFsaWduJywgJ2ljb25Db2xvcicsICdzaG93Q2xvc2VJY29uJywgJ3NpemUnLCAnc3RhdHVzQ29sb3InLCAndGV4dCcsICd0ZXh0Q29sb3InLCAndmFyaWFudCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FDaGlwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsb3NlJywgJ2Nsb3NlJywgJ3ZlZ2FDbGljaycsICdjbGljayddKTtcbiAgfVxufVxuXG5pbXBvcnQgdHlwZSB7IFZlZ2FDb2RlQmxvY2tWYWx1ZSBhcyBJVmVnYUNvZGVCbG9ja1ZlZ2FDb2RlQmxvY2tWYWx1ZSB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLWNvZGUtYmxvY2svdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDb2RlQmxvY2sgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FDb2RlQmxvY2sge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSB2YWx1ZSBjaGFuZ2UuIEB2ZWdhVmVyc2lvbiAyLjUwLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUNvZGVCbG9ja1ZlZ2FDb2RlQmxvY2tWYWx1ZT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSB2YWx1ZSBjaGFuZ2UuIEB2ZWdhVmVyc2lvbiAyLjUwLjAsQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmVcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhQ29kZUJsb2NrVmVnYUNvZGVCbG9ja1ZhbHVlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgZGVsZXRpb24gb2YgdGhlIGNvZGUgYmxvY2suIEJ5IGRlZmF1bHQsIHRoZSBlbGVtZW50IGlzIHJlbW92ZWQgZnJvbSB0aGUgcGFnZSwgYnV0IHRoaXMgYmVoYXZpb3IgY2FuIGJlIHByZXZlbnRlZC4gQHZlZ2FWZXJzaW9uIDIuNTAuMFxuICAgKi9cbiAgdmVnYVJlbW92ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGRlbGV0aW9uIG9mIHRoZSBjb2RlIGJsb2NrLiBCeSBkZWZhdWx0LCB0aGUgZWxlbWVudCBpcyByZW1vdmVkIGZyb20gdGhlIHBhZ2UsIGJ1dCB0aGlzIGJlaGF2aW9yIGNhbiBiZSBwcmV2ZW50ZWQuIEB2ZWdhVmVyc2lvbiAyLjUwLjAsQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmVcbiAgICovXG4gIHJlbW92ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAncmVhZE9ubHknLCAnc2hvd0NvcHlCdXR0b24nLCAnc2hvd0xpbmVOdW1iZXInLCAndmFsdWUnXSxcbiAgbWV0aG9kczogWydkb0ZvY3VzJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWNvZGUtYmxvY2snLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ3JlYWRPbmx5JywgJ3Nob3dDb3B5QnV0dG9uJywgJ3Nob3dMaW5lTnVtYmVyJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUNvZGVCbG9jayB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FSZW1vdmUnLCAncmVtb3ZlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FDb2xvclBpY2tlciBleHRlbmRzIENvbXBvbmVudHMuVmVnYUNvbG9yUGlja2VyIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBjb2xvciBwaWNrZXIsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQHZlZ2FWZXJzaW9uIDEuMTMuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIGNvbG9yIHBpY2tlcixcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnY29sb3JzJywgJ2NvbHVtbnMnLCAnZGlzYWJsZWQnLCAnaGludCcsICdpc0lubGluZScsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWNvbG9yLXBpY2tlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnY29sb3JzJywgJ2NvbHVtbnMnLCAnZGlzYWJsZWQnLCAnaGludCcsICdpc0lubGluZScsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUNvbG9yUGlja2VyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNvbG9yU3dhdGNoIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ29sb3JTd2F0Y2gge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIHRoZSBzd2F0Y2guIEB2ZWdhVmVyc2lvbiAyLjgyLjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiB0aGUgc3dhdGNoLiBAdmVnYVZlcnNpb24gMi44Mi4wLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHZvaWQ+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2Rpc2FibGVkJywgJ2xhYmVsJywgJ3NlbGVjdGVkJywgJ3NoYXBlJywgJ3NpemUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jb2xvci1zd2F0Y2gnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2Rpc2FibGVkJywgJ2xhYmVsJywgJ3NlbGVjdGVkJywgJ3NoYXBlJywgJ3NpemUnLCAndmFyaWFudCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FDb2xvclN3YXRjaCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDbGljaycsICdjbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhQ29sb3JTd2F0Y2hQaWNrZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FDb2xvclN3YXRjaFBpY2tlciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2hhbmdlIG9mIHRoZSBzZWxlY3RlZCBjb2xvciB2YWx1ZS4gQHZlZ2FWZXJzaW9uIDIuODQuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBvZiB0aGUgc2VsZWN0ZWQgY29sb3IgdmFsdWUuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjg0LjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnY29sb3JzJywgJ2Rpc2FibGVkJywgJ2lucHV0Rm9ybWF0dGVyJywgJ2lucHV0UGxhY2Vob2xkZXInLCAnaW5wdXRQcmVmaXhJY29uJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbmFtZScsICdyZXF1aXJlZCcsICdzaG93Q2xlYXJCdXR0b24nLCAnc2hvd0lucHV0JywgJ3N3YXRjaEdyaWRDb2x1bW5zJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jb2xvci1zd2F0Y2gtcGlja2VyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdjb2xvcnMnLCAnZGlzYWJsZWQnLCAnaW5wdXRGb3JtYXR0ZXInLCAnaW5wdXRQbGFjZWhvbGRlcicsICdpbnB1dFByZWZpeEljb24nLCAnaXNWYWxpZCcsICdsYWJlbCcsICduYW1lJywgJ3JlcXVpcmVkJywgJ3Nob3dDbGVhckJ1dHRvbicsICdzaG93SW5wdXQnLCAnc3dhdGNoR3JpZENvbHVtbnMnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUNvbG9yU3dhdGNoUGlja2VyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNvbWJvQm94IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhQ29tYm9Cb3gge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgaXRlbXMgb2YgdGhlIGNvbWJvIGJveCB2YWx1ZSxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMS4xMS4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nW10+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIGl0ZW1zIG9mIHRoZSBjb21ibyBib3ggdmFsdWUsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmdbXT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgd2hlbiB0aGUgdXNlciBoYXMgY2hvc2VuIHRvIGFkZCBhIG5ldyB2YWx1ZVxuICAgdG8gdGhlIHNvdXJjZSBhbmQgdmFsdWUgb2YgdGhlIGNvbWJvIGJveC5cblxuVGhlIGV2ZW50J3MgYGRldGFpbGAgcHJvcGVydHkgY29udGFpbnMgdGhlIG5ldyB2YWx1ZS5cblxuVGhlIGNvbWJvIGJveCBfZG9lcyBub3RfIGF1dG9tYXRpY2FsbHkgYWRkIHRoZSBuZXcgdmFsdWUgdG8gaXRzIGBzb3VyY2VgIGFuZCBgdmFsdWVgLiBAdmVnYVZlcnNpb24gMS4xNC4wXG4gICAqL1xuICB2ZWdhQ3JlYXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB3aGVuIHRoZSB1c2VyIGhhcyBjaG9zZW4gdG8gYWRkIGEgbmV3IHZhbHVlXG4gICB0byB0aGUgc291cmNlIGFuZCB2YWx1ZSBvZiB0aGUgY29tYm8gYm94LlxuXG5UaGUgZXZlbnQncyBgZGV0YWlsYCBwcm9wZXJ0eSBjb250YWlucyB0aGUgbmV3IHZhbHVlLlxuXG5UaGUgY29tYm8gYm94IF9kb2VzIG5vdF8gYXV0b21hdGljYWxseSBhZGQgdGhlIG5ldyB2YWx1ZSB0byBpdHMgYHNvdXJjZWAgYW5kIGB2YWx1ZWAuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY3JlYXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgdXNlcidzIHNlYXJjaCBhY3Rpb24gaW4gdGhlIGNvbWJvIGJveCxcbiAgIGJ1dCBvbmx5IGlmIHRoZSBgdXNlRGVmYXVsdEZpbHRlcmAgcHJvcGVydHkgaXMgc2V0IHRvIGBmYWxzZWAuIEB2ZWdhVmVyc2lvbiAxLjI0LjBcbiAgICovXG4gIHZlZ2FTZWFyY2g6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSB1c2VyJ3Mgc2VhcmNoIGFjdGlvbiBpbiB0aGUgY29tYm8gYm94LFxuICAgYnV0IG9ubHkgaWYgdGhlIGB1c2VEZWZhdWx0RmlsdGVyYCBwcm9wZXJ0eSBpcyBzZXQgdG8gYGZhbHNlYC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBzZWFyY2g6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgb25seSBmaXJlZCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGluIHRoZSBkcm9wZG93biBoYXMgYmVlbiBjbGlja2VkLlxuXG5UaGUgZXZlbnQncyBgZGV0YWlsYCBwcm9wZXJ0eSBpcyBgdHJ1ZWAgd2hlbiB0aGUgU2VsZWN0IEFsbCBjaGVja2JveCBpcyBjbGlja2VkIHRvIHNlbGVjdCBhbGwgaXRlbXMsXG4gICBhbmQgYGZhbHNlYCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGlzIGNsaWNrZWQgdG8gY2xlYXIgYWxsIHNlbGVjdGVkIGl0ZW1zLiBAdmVnYVZlcnNpb24gMi45NS4wXG4gICAqL1xuICB2ZWdhRHJvcGRvd25TZWxlY3RBbGxDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgb25seSBmaXJlZCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGluIHRoZSBkcm9wZG93biBoYXMgYmVlbiBjbGlja2VkLlxuXG5UaGUgZXZlbnQncyBgZGV0YWlsYCBwcm9wZXJ0eSBpcyBgdHJ1ZWAgd2hlbiB0aGUgU2VsZWN0IEFsbCBjaGVja2JveCBpcyBjbGlja2VkIHRvIHNlbGVjdCBhbGwgaXRlbXMsXG4gICBhbmQgYGZhbHNlYCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGlzIGNsaWNrZWQgdG8gY2xlYXIgYWxsIHNlbGVjdGVkIGl0ZW1zLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi45NS4wXG4gICAqL1xuICBkcm9wZG93blNlbGVjdEFsbENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnY29udGFpbmVyTWF4SGVpZ2h0JywgJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICduYW1lJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAnc291cmNlJywgJ3VzZURlZmF1bHRGaWx0ZXInLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJywgJ3ZlZ2FEcm9wZG93blByb3BzJ10sXG4gIG1ldGhvZHM6IFsnY2xvc2UnLCAnb3BlbiddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1jb21iby1ib3gnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2NvbnRhaW5lck1heEhlaWdodCcsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdyZXF1aXJlZCcsICdzaXplJywgJ3NvdXJjZScsICd1c2VEZWZhdWx0RmlsdGVyJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZScsICd2ZWdhRHJvcGRvd25Qcm9wcyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FDb21ib0JveCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FDcmVhdGUnLCAnY3JlYXRlJywgJ3ZlZ2FTZWFyY2gnLCAnc2VhcmNoJywgJ3ZlZ2FEcm9wZG93blNlbGVjdEFsbENsaWNrJywgJ2Ryb3Bkb3duU2VsZWN0QWxsQ2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUNvdW50ZXJCYWRnZSBleHRlbmRzIENvbXBvbmVudHMuVmVnYUNvdW50ZXJCYWRnZSB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2NvdW50JywgJ2RvdCcsICdvZmZzZXQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtY291bnRlci1iYWRnZScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY29sb3InLCAnY291bnQnLCAnZG90JywgJ29mZnNldCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FDb3VudGVyQmFkZ2Uge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5pbXBvcnQgdHlwZSB7IERhdGVQaWNrZXJNb250aFllYXJUeXBlcyBhcyBJVmVnYURhdGVQaWNrZXJEYXRlUGlja2VyTW9udGhZZWFyVHlwZXMgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1kYXRlLXBpY2tlci90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYURhdGVQaWNrZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FEYXRlUGlja2VyIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2Ugb2YgdGhlIHZhbHVlIGluIHRoZSBkYXRlIHBpY2tlcixcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMS4zLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmcgfCBzdHJpbmdbXT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBvZiB0aGUgdmFsdWUgaW4gdGhlIGRhdGUgcGlja2VyLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nIHwgc3RyaW5nW10+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBtb250aCBhbmQgeWVhciBjaGFuZ2Ugd2hlbiB0aGUgbmF2aWdhdGlvbiBidXR0b25zIGFyZSBjbGlja2VkIG9yIHRoZSBtb250aCBhbmQgeWVhciBkcm9wZG93bnMgYXJlIHNlbGVjdGVkIGluIHRoZSBkYXRlIHBpY2tlcixcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMi42MS4wXG4gICAqL1xuICB2ZWdhTW9udGhZZWFyQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FEYXRlUGlja2VyRGF0ZVBpY2tlck1vbnRoWWVhclR5cGVzPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgbW9udGggYW5kIHllYXIgY2hhbmdlIHdoZW4gdGhlIG5hdmlnYXRpb24gYnV0dG9ucyBhcmUgY2xpY2tlZCBvciB0aGUgbW9udGggYW5kIHllYXIgZHJvcGRvd25zIGFyZSBzZWxlY3RlZCBpbiB0aGUgZGF0ZSBwaWNrZXIsIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjYxLjBcbiAgICovXG4gIG1vbnRoWWVhckNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRGF0ZVBpY2tlckRhdGVQaWNrZXJNb250aFllYXJUeXBlcz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWxsb3dSZXBpY2snLCAnYXV0b1ZhbGlkYXRpb24nLCAnY2xlYXJCdXR0b24nLCAnZGlzYWJsZWQnLCAnZHJvcGRvd25Db25maWcnLCAnZm9ybWF0JywgJ2lzRGF0ZURpc2FibGVkJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbWF4RGF0ZScsICdtaW5EYXRlJywgJ21vZGUnLCAnbmFtZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaG93Q2xlYXJJY29uJywgJ3Nob3dZZWFyTW9udGhEcm9wZG93bnMnLCAnc2l6ZScsICd0aW1lem9uZScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXSxcbiAgbWV0aG9kczogWydkb0Nsb3NlJywgJ2RvT3BlbiddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1kYXRlLXBpY2tlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYWxsb3dSZXBpY2snLCAnYXV0b1ZhbGlkYXRpb24nLCAnY2xlYXJCdXR0b24nLCAnZGlzYWJsZWQnLCAnZHJvcGRvd25Db25maWcnLCAnZm9ybWF0JywgJ2lzRGF0ZURpc2FibGVkJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbWF4RGF0ZScsICdtaW5EYXRlJywgJ21vZGUnLCAnbmFtZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaG93Q2xlYXJJY29uJywgJ3Nob3dZZWFyTW9udGhEcm9wZG93bnMnLCAnc2l6ZScsICd0aW1lem9uZScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhRGF0ZVBpY2tlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FNb250aFllYXJDaGFuZ2UnLCAnbW9udGhZZWFyQ2hhbmdlJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgRGF0ZVBpY2tlck1vbnRoWWVhclR5cGVzIGFzIElWZWdhRGF0ZVBpY2tlckNhbGVuZGFyRGF0ZVBpY2tlck1vbnRoWWVhclR5cGVzIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtZGF0ZS1waWNrZXIvdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FEYXRlUGlja2VyQ2FsZW5kYXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FEYXRlUGlja2VyQ2FsZW5kYXIge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBvZiB0aGUgdmFsdWUgaW4gdGhlIGRhdGUgcGlja2VyLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjcyLjBcbiAgICovXG4gIHZlZ2FDbGVhcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZyB8IHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2hhbmdlIG9mIHRoZSB2YWx1ZSBpbiB0aGUgZGF0ZSBwaWNrZXIsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNzIuMFxuICAgKi9cbiAgY2xlYXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmcgfCBzdHJpbmdbXT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIG1vbnRoIGFuZCB5ZWFyIGNoYW5nZSB3aGVuIHRoZSBuYXZpZ2F0aW9uIGJ1dHRvbnMgYXJlIGNsaWNrZWQgb3IgdGhlIG1vbnRoIGFuZCB5ZWFyIGRyb3Bkb3ducyBhcmUgc2VsZWN0ZWQgaW4gdGhlIGRhdGUgcGlja2VyLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjYxLjBcbiAgICovXG4gIHZlZ2FNb250aFllYXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYURhdGVQaWNrZXJDYWxlbmRhckRhdGVQaWNrZXJNb250aFllYXJUeXBlcz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIG1vbnRoIGFuZCB5ZWFyIGNoYW5nZSB3aGVuIHRoZSBuYXZpZ2F0aW9uIGJ1dHRvbnMgYXJlIGNsaWNrZWQgb3IgdGhlIG1vbnRoIGFuZCB5ZWFyIGRyb3Bkb3ducyBhcmUgc2VsZWN0ZWQgaW4gdGhlIGRhdGUgcGlja2VyLCBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi42MS4wXG4gICAqL1xuICBtb250aFllYXJDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYURhdGVQaWNrZXJDYWxlbmRhckRhdGVQaWNrZXJNb250aFllYXJUeXBlcz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBvZiB0aGUgdmFsdWUgaW4gdGhlIGRhdGUgcGlja2VyLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjcyLjBcbiAgICovXG4gIHZlZ2FTZWxlY3Rpb25DaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmcgfCBzdHJpbmdbXT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBvZiB0aGUgdmFsdWUgaW4gdGhlIGRhdGUgcGlja2VyLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjcyLjBcbiAgICovXG4gIHNlbGVjdGlvbkNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZyB8IHN0cmluZ1tdPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgdG9kYXkgYnV0dG9uIGlzIGNsaWNrZWQgaW4gdGhlIGRhdGUgcGlja2VyLiBAdmVnYVZlcnNpb24gMi44OC4wXG4gICAqL1xuICB2ZWdhVG9kYXlDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHRvZGF5IGJ1dHRvbiBpcyBjbGlja2VkIGluIHRoZSBkYXRlIHBpY2tlci4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuODguMFxuICAgKi9cbiAgdG9kYXlDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY2xlYXJCdXR0b24nLCAnZGF0ZUluZGljYXRvcicsICdkdWFsTW9udGhzJywgJ2ZpbGxDb250YWluZXInLCAnZm9ybWF0JywgJ2lzRGF0ZURpc2FibGVkJywgJ21heERhdGUnLCAnbWluRGF0ZScsICdtb2RlJywgJ3NlbGVjdGlvbicsICdzaG93WWVhck1vbnRoRHJvcGRvd25zJywgJ3NpemUnLCAnc3RhdGljSGVpZ2h0JywgJ3RpbWV6b25lJywgJ3llYXJNb250aERyb3Bkb3duUHJvcHMnXSxcbiAgbWV0aG9kczogWydyZXNldCcsICd0cmlnZ2VyUmVwaWNrJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWRhdGUtcGlja2VyLWNhbGVuZGFyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjbGVhckJ1dHRvbicsICdkYXRlSW5kaWNhdG9yJywgJ2R1YWxNb250aHMnLCAnZmlsbENvbnRhaW5lcicsICdmb3JtYXQnLCAnaXNEYXRlRGlzYWJsZWQnLCAnbWF4RGF0ZScsICdtaW5EYXRlJywgJ21vZGUnLCAnc2VsZWN0aW9uJywgJ3Nob3dZZWFyTW9udGhEcm9wZG93bnMnLCAnc2l6ZScsICdzdGF0aWNIZWlnaHQnLCAndGltZXpvbmUnLCAneWVhck1vbnRoRHJvcGRvd25Qcm9wcyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FEYXRlUGlja2VyQ2FsZW5kYXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xlYXInLCAnY2xlYXInLCAndmVnYU1vbnRoWWVhckNoYW5nZScsICdtb250aFllYXJDaGFuZ2UnLCAndmVnYVNlbGVjdGlvbkNoYW5nZScsICdzZWxlY3Rpb25DaGFuZ2UnLCAndmVnYVRvZGF5Q2xpY2snLCAndG9kYXlDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhRGlhbG9nIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhRGlhbG9nIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY2FuY2VsQnV0dG9uJywgJ2NvbnRlbnQnLCAnZGlhbG9nVGl0bGUnLCAnaGFuZGxlQ2FuY2VsJywgJ2hhbmRsZU9rJywgJ21vZGFsUHJvcHMnLCAnb2tCdXR0b24nLCAnc2hvd0NhbmNlbCcsICd0eXBlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWRpYWxvZycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY2FuY2VsQnV0dG9uJywgJ2NvbnRlbnQnLCAnZGlhbG9nVGl0bGUnLCAnaGFuZGxlQ2FuY2VsJywgJ2hhbmRsZU9rJywgJ21vZGFsUHJvcHMnLCAnb2tCdXR0b24nLCAnc2hvd0NhbmNlbCcsICd0eXBlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYURpYWxvZyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FEaXZpZGVyIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhRGl2aWRlciB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2RpcmVjdGlvbicsICdtYXJnaW4nLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1kaXZpZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydkaXJlY3Rpb24nLCAnbWFyZ2luJywgJ3ZhcmlhbnQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhRGl2aWRlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYURyb3Bkb3duU2VhcmNoVHJpZ2dlckV2ZW50RGV0YWlsIGFzIElWZWdhRHJvcGRvd25WZWdhRHJvcGRvd25TZWFyY2hUcmlnZ2VyRXZlbnREZXRhaWwgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1kcm9wZG93bi90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYURyb3Bkb3duIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhRHJvcGRvd24ge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGRyb3Bkb3duIGl0ZW0gaGFzIGJlZW4gY2xpY2tlZC5cblxuVGhlIGV2ZW50J3MgYGRldGFpbGAgcHJvcGVydHkgY29udGFpbnMgdGhlIGtleSBvZiB0aGUgY2xpY2tlZCBpdGVtLiBAdmVnYVZlcnNpb24gMS4xMS4wXG4gICAqL1xuICB2ZWdhRHJvcGRvd25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCBhIGRyb3Bkb3duIGl0ZW0gaGFzIGJlZW4gY2xpY2tlZC5cblxuVGhlIGV2ZW50J3MgYGRldGFpbGAgcHJvcGVydHkgY29udGFpbnMgdGhlIGtleSBvZiB0aGUgY2xpY2tlZCBpdGVtLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGRyb3Bkb3duQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgb25seSBmaXJlZCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGhhcyBiZWVuIGNsaWNrZWQuXG5cblRoZSBldmVudCdzIGBkZXRhaWxgIHByb3BlcnR5IGlzIGB0cnVlYCB3aGVuIHRoZSBTZWxlY3QgQWxsIGNoZWNrYm94IGlzIGNsaWNrZWQgdG8gc2VsZWN0IGFsbCBpdGVtcyxcbiAgIGFuZCBgZmFsc2VgIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaXMgY2xpY2tlZCB0byBjbGVhciBhbGwgc2VsZWN0ZWQgaXRlbXMuIEB2ZWdhVmVyc2lvbiAyLjkzLjBcbiAgICovXG4gIHZlZ2FEcm9wZG93blNlbGVjdEFsbENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBvbmx5IGZpcmVkIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaGFzIGJlZW4gY2xpY2tlZC5cblxuVGhlIGV2ZW50J3MgYGRldGFpbGAgcHJvcGVydHkgaXMgYHRydWVgIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaXMgY2xpY2tlZCB0byBzZWxlY3QgYWxsIGl0ZW1zLFxuICAgYW5kIGBmYWxzZWAgd2hlbiB0aGUgU2VsZWN0IEFsbCBjaGVja2JveCBpcyBjbGlja2VkIHRvIGNsZWFyIGFsbCBzZWxlY3RlZCBpdGVtcy4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuOTMuMFxuICAgKi9cbiAgZHJvcGRvd25TZWxlY3RBbGxDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIGRyb3Bkb3duIGhhcyBiZWVuIGRpc3BsYXllZCxcbiAgIGVpdGhlciBwcm9ncmFtbWF0aWNhbGx5IG9yIHZpYSB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMS4zLjBcbiAgICovXG4gIHZlZ2FTaG93OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBkcm9wZG93biBoYXMgYmVlbiBkaXNwbGF5ZWQsXG4gICBlaXRoZXIgcHJvZ3JhbW1hdGljYWxseSBvciB2aWEgdXNlciBpbnRlcmFjdGlvbi4gVGhlIG5hbWUgaXMgbm90IGBzaG93YCBiZWNhdXNlIGFscmVhZHkgaGFzIGEgbWV0aG9kIGBzaG93YC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBkcm9wZG93blNob3c6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIGRyb3Bkb3duIGhhcyBiZWVuIGRpc21pc3NlZCxcbiAgIGVpdGhlciBwcm9ncmFtbWF0aWNhbGx5IG9yIHZpYSB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMS4zLjBcbiAgICovXG4gIHZlZ2FIaWRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBkcm9wZG93biBoYXMgYmVlbiBkaXNtaXNzZWQsXG4gICBlaXRoZXIgcHJvZ3JhbW1hdGljYWxseSBvciB2aWEgdXNlciBpbnRlcmFjdGlvbi4gVGhlIG5hbWUgaXMgbm90IGBoaWRlYCBiZWNhdXNlIGFscmVhZHkgaGFzIGEgbWV0aG9kIGBoaWRlYC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBkcm9wZG93bkhpZGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBhZGRpdGlvbiBvZiBhIG5ldyB2YWx1ZVxuICAgdG8gdGhlIGRyb3Bkb3duIHNvdXJjZSBsaXN0LlxuXG5UaGUgZXZlbnQncyBgZGV0YWlsYCBwcm9wZXJ0eSBjb250YWlucyB0aGUgbmV3IHZhbHVlLlxuXG5UaGUgZHJvcGRvd24gX2RvZXMgbm90XyBhdXRvbWF0aWNhbGx5IGFkZCB0aGUgbmV3IHZhbHVlIHRvIHRoZSBzb3VyY2UgbGlzdC4gQHZlZ2FWZXJzaW9uIDEuMTQuMFxuICAgKi9cbiAgdmVnYUNyZWF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGFkZGl0aW9uIG9mIGEgbmV3IHZhbHVlXG4gICB0byB0aGUgZHJvcGRvd24gc291cmNlIGxpc3QuXG5cblRoZSBldmVudCdzIGBkZXRhaWxgIHByb3BlcnR5IGNvbnRhaW5zIHRoZSBuZXcgdmFsdWUuXG5cblRoZSBkcm9wZG93biBfZG9lcyBub3RfIGF1dG9tYXRpY2FsbHkgYWRkIHRoZSBuZXcgdmFsdWUgdG8gdGhlIHNvdXJjZSBsaXN0LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNyZWF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHNlYXJjaCBldmVudCBpbiB0aGUgZHJvcGRvd24sXG4gICBidXQgb25seSBpZiBgdXNlRGVmYXVsdEZpbHRlcmAgaXMgc2V0IHRvIGBmYWxzZWAuIEB2ZWdhVmVyc2lvbiAxLjI0LjBcbiAgICovXG4gIHZlZ2FTZWFyY2g6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBzZWFyY2ggZXZlbnQgaW4gdGhlIGRyb3Bkb3duLFxuICAgYnV0IG9ubHkgaWYgYHVzZURlZmF1bHRGaWx0ZXJgIGlzIHNldCB0byBgZmFsc2VgLiBUaGUgbmFtZSBpcyBub3QgYHNlYXJjaGAgYmVjYXVzZSBhbHJlYWR5IGhhcyBhIG1ldGhvZCBgc2VhcmNoYC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBkcm9wZG93blNlYXJjaDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHJlc2V0IGV2ZW50IGluIHRoZSBkcm9wZG93bi4gQHZlZ2FWZXJzaW9uIDIuNDYuMFxuICAgKi9cbiAgdmVnYVJlc2V0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgcmVzZXQgZXZlbnQgaW4gdGhlIGRyb3Bkb3duLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi40Ni4wXG4gICAqL1xuICByZXNldDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHNlYXJjaCBldmVudCB0cmlnZ2VyZWQgd2l0aGluIHRoZSBkcm9wZG93bixcbiAgIGJ1dCBvbmx5IGlmIGB1c2VEZWZhdWx0RmlsdGVyYCBpcyBzZXQgdG8gYGZhbHNlYC5cblVubGlrZSB0aGUgVmVnYXNlYXJjaCBldmVudCwgdGhpcyBldmVudCBpbmNsdWRlcyB0aGUgZGV0YWlscyBvZiB0aGUgdXNlciB3aG8gdHJpZ2dlcmVkIGl0LlxuSXQgY2FuIGJlIHRyaWdnZXJlZCBpbiB0d28gd2F5czogYnkgcHJlc3NpbmcgXCJFbnRlclwiIG9yIHRocm91Z2ggdXNlciBpbnB1dC4gQHZlZ2FWZXJzaW9uIDIuMzAuMFxuICAgKi9cbiAgdmVnYVNlYXJjaFRyaWdnZXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYURyb3Bkb3duVmVnYURyb3Bkb3duU2VhcmNoVHJpZ2dlckV2ZW50RGV0YWlsPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgc2VhcmNoIGV2ZW50IHRyaWdnZXJlZCB3aXRoaW4gdGhlIGRyb3Bkb3duLFxuICAgYnV0IG9ubHkgaWYgYHVzZURlZmF1bHRGaWx0ZXJgIGlzIHNldCB0byBgZmFsc2VgLlxuVW5saWtlIHRoZSBWZWdhc2VhcmNoIGV2ZW50LCB0aGlzIGV2ZW50IGluY2x1ZGVzIHRoZSBkZXRhaWxzIG9mIHRoZSB1c2VyIHdobyB0cmlnZ2VyZWQgaXQuXG5JdCBjYW4gYmUgdHJpZ2dlcmVkIGluIHR3byB3YXlzOiBieSBwcmVzc2luZyBcIkVudGVyXCIgb3IgdGhyb3VnaCB1c2VyIGlucHV0LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4zMC4wXG4gICAqL1xuICBzZWFyY2hUcmlnZ2VyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FEcm9wZG93blZlZ2FEcm9wZG93blNlYXJjaFRyaWdnZXJFdmVudERldGFpbD4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWxpZ25tZW50JywgJ2FsbG93U2VsZWN0QWxsJywgJ2Nhc2VTZW5zaXRpdmUnLCAnZHluYW1pY09wdGlvbicsICdpc0xhenlMb2FkaW5nJywgJ2lzTG9hZGluZycsICdpc1NjcmVlblBvc2l0aW9uJywgJ2l0ZW1EaXNwbGF5UnVsZScsICdpdGVtVG9vbHRpcFByb3BzJywgJ21hdGNoQ29udGFpbmVySGVpZ2h0JywgJ21hdGNoVGFyZ2V0V2lkdGgnLCAnbWF4SGVpZ2h0JywgJ21heFdpZHRoJywgJ21pbldpZHRoJywgJ3BsYWNlbWVudCcsICdwb3NpdGlvblJlbGF0aXZlVG8nLCAncHJlZml4SWNvblNsb3QnLCAncHJlc2VydmVWYWx1ZUlmTm90SW5Tb3VyY2UnLCAncmVzZXR0YWJsZScsICdzZWFyY2hOb1Jlc3VsdHNUZXh0JywgJ3NlYXJjaFRyaWdnZXJCeScsICdzZWFyY2hhYmxlJywgJ3NlbGVjdFR5cGUnLCAnc2VsZWN0ZWRTb3VyY2VLZXknLCAnc2l6ZScsICdzb3VyY2UnLCAndHJhbnNsb2NhdGlvbicsICd0cmlnZ2VyJywgJ3VzZURlZmF1bHRGaWx0ZXInLCAndmlydHVhbGl6YXRpb25UaHJlc2hvbGQnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2hpZGUnLCAnc2VhcmNoJywgJ2NsZWFyU2VsZWN0aW9uJywgJ2dldFNlbGVjdGlvbicsICdzZXRTZWxlY3Rpb24nLCAnc3luY1RlbXBsYXRlRGF0YSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1kcm9wZG93bicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYWxpZ25tZW50JywgJ2FsbG93U2VsZWN0QWxsJywgJ2Nhc2VTZW5zaXRpdmUnLCAnZHluYW1pY09wdGlvbicsICdpc0xhenlMb2FkaW5nJywgJ2lzTG9hZGluZycsICdpc1NjcmVlblBvc2l0aW9uJywgJ2l0ZW1EaXNwbGF5UnVsZScsICdpdGVtVG9vbHRpcFByb3BzJywgJ21hdGNoQ29udGFpbmVySGVpZ2h0JywgJ21hdGNoVGFyZ2V0V2lkdGgnLCAnbWF4SGVpZ2h0JywgJ21heFdpZHRoJywgJ21pbldpZHRoJywgJ3BsYWNlbWVudCcsICdwb3NpdGlvblJlbGF0aXZlVG8nLCAncHJlZml4SWNvblNsb3QnLCAncHJlc2VydmVWYWx1ZUlmTm90SW5Tb3VyY2UnLCAncmVzZXR0YWJsZScsICdzZWFyY2hOb1Jlc3VsdHNUZXh0JywgJ3NlYXJjaFRyaWdnZXJCeScsICdzZWFyY2hhYmxlJywgJ3NlbGVjdFR5cGUnLCAnc2VsZWN0ZWRTb3VyY2VLZXknLCAnc2l6ZScsICdzb3VyY2UnLCAndHJhbnNsb2NhdGlvbicsICd0cmlnZ2VyJywgJ3VzZURlZmF1bHRGaWx0ZXInLCAndmlydHVhbGl6YXRpb25UaHJlc2hvbGQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhRHJvcGRvd24ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhRHJvcGRvd25DbGljaycsICdkcm9wZG93bkNsaWNrJywgJ3ZlZ2FEcm9wZG93blNlbGVjdEFsbENsaWNrJywgJ2Ryb3Bkb3duU2VsZWN0QWxsQ2xpY2snLCAndmVnYVNob3cnLCAnZHJvcGRvd25TaG93JywgJ3ZlZ2FIaWRlJywgJ2Ryb3Bkb3duSGlkZScsICd2ZWdhQ3JlYXRlJywgJ2NyZWF0ZScsICd2ZWdhU2VhcmNoJywgJ2Ryb3Bkb3duU2VhcmNoJywgJ3ZlZ2FSZXNldCcsICdyZXNldCcsICd2ZWdhU2VhcmNoVHJpZ2dlcicsICdzZWFyY2hUcmlnZ2VyJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FEcm9wZG93bkNvbnRlbnRCb3ggZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FEcm9wZG93bkNvbnRlbnRCb3gge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWRyb3Bkb3duLWNvbnRlbnQtYm94JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYURyb3Bkb3duQ29udGVudEJveCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FEcm9wZG93bkdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhRHJvcGRvd25Hcm91cCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2RpdmlkZScsICdsYWJlbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1kcm9wZG93bi1ncm91cCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnZGl2aWRlJywgJ2xhYmVsJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYURyb3Bkb3duR3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5pbXBvcnQgdHlwZSB7IFZlZ2FEcm9wZG93bkl0ZW1DbGlja0V2ZW50IGFzIElWZWdhRHJvcGRvd25JdGVtVmVnYURyb3Bkb3duSXRlbUNsaWNrRXZlbnQgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1kcm9wZG93bi92ZWdhLWRyb3Bkb3duLWl0ZW0vdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FEcm9wZG93bkl0ZW0gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FEcm9wZG93bkl0ZW0ge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGRyb3Bkb3duIGl0ZW0gaGFzIGJlZW4gY2xpY2tlZC4gQHZlZ2FWZXJzaW9uIDEuNDcuMFxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FEcm9wZG93bkl0ZW1WZWdhRHJvcGRvd25JdGVtQ2xpY2tFdmVudD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGRyb3Bkb3duIGl0ZW0gaGFzIGJlZW4gY2xpY2tlZC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRHJvcGRvd25JdGVtVmVnYURyb3Bkb3duSXRlbUNsaWNrRXZlbnQ+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NvdW50JywgJ2RhbmdlcicsICdkaXNhYmxlZCcsICdoZWlnaHQnLCAnaXRlbUtleScsICdsYWJlbCcsICdwcmVmaXhJY29uJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWRyb3Bkb3duLWl0ZW0nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NvdW50JywgJ2RhbmdlcicsICdkaXNhYmxlZCcsICdoZWlnaHQnLCAnaXRlbUtleScsICdsYWJlbCcsICdwcmVmaXhJY29uJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYURyb3Bkb3duSXRlbSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDbGljaycsICdjbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhRmllbGRFcnJvciBleHRlbmRzIENvbXBvbmVudHMuVmVnYUZpZWxkRXJyb3Ige31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydtZXNzYWdlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWZpZWxkLWVycm9yJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydtZXNzYWdlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUZpZWxkRXJyb3Ige1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhRmllbGRMYWJlbCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUZpZWxkTGFiZWwge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgZmllbGQgbGFiZWwgaGFzIGJlZW4gY2xpY2tlZC4gQHZlZ2FWZXJzaW9uIDEuNDMuMFxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBzdWZmaXggYnV0dG9uIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmllbGQgbGFiZWwgaGFzIGJlZW4gY2xpY2tlZC4gQHZlZ2FWZXJzaW9uIDIuMjUuMFxuICAgKi9cbiAgdmVnYUxhYmVsQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIHN1ZmZpeCBidXR0b24gYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWVsZCBsYWJlbCBoYXMgYmVlbiBjbGlja2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICBsYWJlbEJ1dHRvbkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdpc0ZpZWxkUmVxdWlyZWQnLCAnbGFiZWwnLCAnb3B0aW9uYWwnLCAnc3VmZml4QnV0dG9uQ29uZmlnJywgJ3N1ZmZpeEJ1dHRvblByb3BzJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWZpZWxkLWxhYmVsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdpc0ZpZWxkUmVxdWlyZWQnLCAnbGFiZWwnLCAnb3B0aW9uYWwnLCAnc3VmZml4QnV0dG9uQ29uZmlnJywgJ3N1ZmZpeEJ1dHRvblByb3BzJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUZpZWxkTGFiZWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAndmVnYUxhYmVsQnV0dG9uQ2xpY2snLCAnbGFiZWxCdXR0b25DbGljayddKTtcbiAgfVxufVxuXG5pbXBvcnQgdHlwZSB7IFZlZ2FGaWxlVXBsb2FkZXJGaWxlcyBhcyBJVmVnYUZpbGVVcGxvYWRlclZlZ2FGaWxlVXBsb2FkZXJGaWxlcyB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLWZpbGUtdXBsb2FkZXIvdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBWZWdhRmlsZVVwbG9hZGVyRmlsZSBhcyBJVmVnYUZpbGVVcGxvYWRlclZlZ2FGaWxlVXBsb2FkZXJGaWxlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtZmlsZS11cGxvYWRlci90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUZpbGVVcGxvYWRlciBleHRlbmRzIENvbXBvbmVudHMuVmVnYUZpbGVVcGxvYWRlciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIGNoYW5nZSBpbiB0aGUgZmlsZSBsaXN0LiBAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FGaWxlVXBsb2FkZXJWZWdhRmlsZVVwbG9hZGVyRmlsZXM+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgY2hhbmdlIGluIHRoZSBmaWxlIGxpc3QuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjI1LjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRmlsZVVwbG9hZGVyVmVnYUZpbGVVcGxvYWRlckZpbGVzPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIGZpbGUgc2VsZWN0aW9uIGNoYW5nZS4gQnkgZGVmYXVsdCwgdGhlIGNvbXBvbmVudCB2YWx1ZVxuICBpcyB1cGRhdGVkLCBidXQgdGhpcyBiZWhhdmlvciBjYW4gYmUgcHJldmVudGVkLiBAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICB2ZWdhU2VsZWN0ZWRGaWxlQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FGaWxlVXBsb2FkZXJWZWdhRmlsZVVwbG9hZGVyRmlsZXM+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgZmlsZSBzZWxlY3Rpb24gY2hhbmdlLiBCeSBkZWZhdWx0LCB0aGUgY29tcG9uZW50IHZhbHVlXG4gIGlzIHVwZGF0ZWQsIGJ1dCB0aGlzIGJlaGF2aW9yIGNhbiBiZSBwcmV2ZW50ZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjI1LjBcbiAgICovXG4gIHNlbGVjdGVkRmlsZUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRmlsZVVwbG9hZGVyVmVnYUZpbGVVcGxvYWRlckZpbGVzPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgc2VsZWN0ZWQgZmlsZSB3aWxsIGJlIHJlbW92ZWQuIEJ5IGRlZmF1bHQsIHRoZSBjb21wb25lbnQgdmFsdWVcbiAgaXMgdXBkYXRlZCwgYnV0IHRoaXMgYmVoYXZpb3IgY2FuIGJlIHByZXZlbnRlZC4gQHZlZ2FWZXJzaW9uIDIuMjUuMFxuICAgKi9cbiAgdmVnYVJlbW92ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRmlsZVVwbG9hZGVyVmVnYUZpbGVVcGxvYWRlckZpbGU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBzZWxlY3RlZCBmaWxlIHdpbGwgYmUgcmVtb3ZlZC4gQnkgZGVmYXVsdCwgdGhlIGNvbXBvbmVudCB2YWx1ZVxuICBpcyB1cGRhdGVkLCBidXQgdGhpcyBiZWhhdmlvciBjYW4gYmUgcHJldmVudGVkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICByZW1vdmU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUZpbGVVcGxvYWRlclZlZ2FGaWxlVXBsb2FkZXJGaWxlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgZmlsZSB3aWxsIGJlIHJlLXVwbG9hZGVkLiBAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICB2ZWdhUmV0cnk6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUZpbGVVcGxvYWRlclZlZ2FGaWxlVXBsb2FkZXJGaWxlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IGEgZmlsZSB3aWxsIGJlIHJlLXVwbG9hZGVkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICByZXRyeTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRmlsZVVwbG9hZGVyVmVnYUZpbGVVcGxvYWRlckZpbGU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBmaWxlIHdpbGwgYmUgb3BlbmVkIGZvciBwcmV2aWV3LiBAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICB2ZWdhUHJldmlldzogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhRmlsZVVwbG9hZGVyVmVnYUZpbGVVcGxvYWRlckZpbGU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgYSBmaWxlIHdpbGwgYmUgb3BlbmVkIGZvciBwcmV2aWV3LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yNS4wXG4gICAqL1xuICBwcmV2aWV3OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FGaWxlVXBsb2FkZXJWZWdhRmlsZVVwbG9hZGVyRmlsZT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWNjZXB0JywgJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtYXhDb3VudCcsICduYW1lJywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZScsICd2YXJpYW50J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWZpbGUtdXBsb2FkZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2FjY2VwdCcsICdhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbWF4Q291bnQnLCAnbmFtZScsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmFyaWFudCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FGaWxlVXBsb2FkZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhU2VsZWN0ZWRGaWxlQ2hhbmdlJywgJ3NlbGVjdGVkRmlsZUNoYW5nZScsICd2ZWdhUmVtb3ZlJywgJ3JlbW92ZScsICd2ZWdhUmV0cnknLCAncmV0cnknLCAndmVnYVByZXZpZXcnLCAncHJldmlldyddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhRmxhZ0ljb24gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FGbGFnSWNvbiB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NvdW50cnknLCAnc2l6ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1mbGFnLWljb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NvdW50cnknLCAnc2l6ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FGbGFnSWNvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FGbGV4IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhRmxleCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FsaWduSXRlbXMnLCAnYnJlYWtwb2ludCcsICdkaXJlY3Rpb24nLCAnZmxleCcsICdmbGV4QmFzaXMnLCAnZmxleEdyb3cnLCAnZmxleFNocmluaycsICdmbGV4V3JhcCcsICdnYXAnLCAnanVzdGlmeUNvbnRlbnQnLCAnbWFyZ2luJywgJ3VzZU5hdGl2ZUZsZXgnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtZmxleCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYWxpZ25JdGVtcycsICdicmVha3BvaW50JywgJ2RpcmVjdGlvbicsICdmbGV4JywgJ2ZsZXhCYXNpcycsICdmbGV4R3JvdycsICdmbGV4U2hyaW5rJywgJ2ZsZXhXcmFwJywgJ2dhcCcsICdqdXN0aWZ5Q29udGVudCcsICdtYXJnaW4nLCAndXNlTmF0aXZlRmxleCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FGbGV4IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUZvbnQgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FGb250IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXMnLCAnY29sb3InLCAnZGlzYWJsZVJlc3BvbnNpdmUnLCAndGV4dEFsaWduJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtZm9udCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYXMnLCAnY29sb3InLCAnZGlzYWJsZVJlc3BvbnNpdmUnLCAndGV4dEFsaWduJywgJ3ZhcmlhbnQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhRm9udCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FGb3JtIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhRm9ybSB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2hhbmdlIGluIHRoZSB2YWxpZGF0aW9uIHJlc3VsdC4gQHZlZ2FWZXJzaW9uIDEuOS4xXG4gICAqL1xuICB2ZWdhVmFsaWRhdGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2hhbmdlIGluIHRoZSB2YWxpZGF0aW9uIHJlc3VsdC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICB2YWxpZGF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBzdWJtaXNzaW9uIG9mIHRoZSBmb3JtLiBAdmVnYVZlcnNpb24gMS4yNC4wXG4gICAqL1xuICB2ZWdhRm9ybVN1Ym1pdDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHVua25vd24+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBzdWJtaXNzaW9uIG9mIHRoZSBmb3JtLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGZvcm1TdWJtaXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmtub3duPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgcmVzZXQgb2YgdGhlIGZvcm0uIEB2ZWdhVmVyc2lvbiAxLjI0LjBcbiAgICovXG4gIHZlZ2FGb3JtUmVzZXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSByZXNldCBvZiB0aGUgZm9ybS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBmb3JtUmVzZXQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FjdGlvbicsICdkaXNhYmxlQmx1clZhbGlkYXRpb24nLCAnaXNUb3VjaGVkJywgJ2lzVmFsaWQnLCAnbWV0aG9kJywgJ25hbWUnLCAndXNlTmF0aXZlRm9ybSddLFxuICBtZXRob2RzOiBbJ3ZhbGlkJywgJ2dldFZhbHVlJywgJ3NldFZhbHVlJywgJ3Jlc2V0JywgJ3NldFZhbGlkYXRpb25TdGF0ZXMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtZm9ybScsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYWN0aW9uJywgJ2Rpc2FibGVCbHVyVmFsaWRhdGlvbicsICdpc1RvdWNoZWQnLCAnaXNWYWxpZCcsICdtZXRob2QnLCAnbmFtZScsICd1c2VOYXRpdmVGb3JtJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUZvcm0ge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhVmFsaWRhdGUnLCAndmFsaWRhdGUnLCAndmVnYUZvcm1TdWJtaXQnLCAnZm9ybVN1Ym1pdCcsICd2ZWdhRm9ybVJlc2V0JywgJ2Zvcm1SZXNldCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhR3JpZCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUdyaWQge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjb2x1bW4nLCAnZ2FwJywgJ2p1c3RpZnlJdGVtcycsICdyb3cnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtZ3JpZCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnY29sdW1uJywgJ2dhcCcsICdqdXN0aWZ5SXRlbXMnLCAncm93J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUdyaWQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhSGludCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUhpbnQge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWhpbnQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcbmV4cG9ydCBjbGFzcyBWZWdhSGludCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FJY29uIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhSWNvbiB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NvbG9yJywgJ2ljb24nLCAnc2l6ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1pY29uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjb2xvcicsICdpY29uJywgJ3NpemUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhSWNvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYUZpbGVPcHRpb25hbCBhcyBJVmVnYUltYWdlVXBsb2FkZXJWZWdhRmlsZU9wdGlvbmFsIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtaW1hZ2UtdXBsb2FkZXIvdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FJbWFnZVVwbG9hZGVyIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhSW1hZ2VVcGxvYWRlciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIHZhbHVlIGNoYW5nZS4gQHZlZ2FWZXJzaW9uIDEuMTQuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhSW1hZ2VVcGxvYWRlclZlZ2FGaWxlT3B0aW9uYWw+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgdmFsdWUgY2hhbmdlLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHJlbW92YWwgb2YgYSB2YWx1ZS4gQHZlZ2FWZXJzaW9uIDEuMTQuMFxuICAgKi9cbiAgdmVnYVJlbW92ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHJlbW92YWwgb2YgYSB2YWx1ZS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICByZW1vdmU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjYW5jZWxsYXRpb24gb2YgYW4gdXBsb2FkaW5nIGV2ZW50LiBAdmVnYVZlcnNpb24gMS4xNC4wXG4gICAqL1xuICB2ZWdhQ2FuY2VsOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgcmVtb3ZhbCBvZiBhIHZhbHVlLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNhbmNlbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWNjZXB0JywgJ2FjdGlvblN1YlRpdGxlJywgJ2FjdGlvblRpdGxlJywgJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hlaWdodCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICdzaG93UHJldmlld0J1dHRvbicsICdzaG93UmVtb3ZlQnV0dG9uJywgJ3Nob3dSZXBsYWNlQnV0dG9uJywgJ3N0YXR1cycsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAnd2lkdGgnXSxcbiAgbWV0aG9kczogWydnZXRDb250ZW50VVJMJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWltYWdlLXVwbG9hZGVyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhY2NlcHQnLCAnYWN0aW9uU3ViVGl0bGUnLCAnYWN0aW9uVGl0bGUnLCAnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGVpZ2h0JywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICduYW1lJywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3Nob3dQcmV2aWV3QnV0dG9uJywgJ3Nob3dSZW1vdmVCdXR0b24nLCAnc2hvd1JlcGxhY2VCdXR0b24nLCAnc3RhdHVzJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZScsICd3aWR0aCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FJbWFnZVVwbG9hZGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnLCAndmVnYVJlbW92ZScsICdyZW1vdmUnLCAndmVnYUNhbmNlbCcsICdjYW5jZWwnXSk7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBEYXRhVHJhbnNmZXJUeXBlIGFzIElWZWdhSW5wdXREYXRhVHJhbnNmZXJUeXBlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtaW5wdXQvdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBWZWdhRHJvcGRvd25Tb3VyY2VJdGVtIGFzIElWZWdhSW5wdXRWZWdhRHJvcGRvd25Tb3VyY2VJdGVtIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtZHJvcGRvd24vdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FJbnB1dCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUlucHV0IHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgaW5wdXQgdmFsdWUgY2hhbmdlcy5cblxuVGhlIHRpbWluZyBvZiB0aGlzIGV2ZW50IGRlcGVuZHMgb24gdGhlIGB2YWx1ZVVwZGF0ZVRyaWdnZXJgIHByb3A6XG4tIFdoZW4gYHZhbHVlVXBkYXRlVHJpZ2dlcmAgaXMgYCdpbnB1dCdgIChkZWZhdWx0KSwgZmlyZXMgb24gZXZlcnkga2V5c3Ryb2tlLlxuLSBXaGVuIGB2YWx1ZVVwZGF0ZVRyaWdnZXJgIGlzIGAnY2hhbmdlJ2AsIGZpcmVzIG9uIGJsdXIgb3Igd2hlbiB0aGUgdXNlciBwcmVzc2VzIEVudGVyLlxuXG5BbHNvIGZpcmVzIHdoZW4gdGhlIHVzZXIgY2xpY2tzIHRoZSBjbGVhciBpY29uIG9yIHdoZW4gdGhlIHZhbHVlIGlzXG5wcm9ncmFtbWF0aWNhbGx5IHVwZGF0ZWQuIEBldmVudERldGFpbCBgc3RyaW5nYCDigJQgVGhlIGN1cnJlbnQgaW5wdXQgdmFsdWUgYWZ0ZXIgdGhlIGNoYW5nZS4sQHZlZ2FWZXJzaW9uIDEuMC4xMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogTmF0aXZlLW5hbWVzcGFjZSBhbGlhcyBmb3IgdGhlIGB2ZWdhQ2hhbmdlYCBldmVudC5cblxuRW1pdHRlZCBhdCB0aGUgc2FtZSB0aW1lIGFuZCB1bmRlciB0aGUgc2FtZSBjb25kaXRpb25zIGFzIGB2ZWdhQ2hhbmdlYC5cblVzZSB0aGlzIGV2ZW50IHdoZW4gaW50ZWdyYXRpbmcgd2l0aCBmcmFtZXdvcmtzIHRoYXQgZXhwZWN0IG5hdGl2ZS1zdHlsZVxuZXZlbnQgbmFtZXMgKGUuZy4sIGBAY2hhbmdlYCBpbiBWdWUgb3IgQW5ndWxhcikuIEBldmVudERldGFpbCBgc3RyaW5nYCDigJQgVGhlIGN1cnJlbnQgaW5wdXQgdmFsdWUgYWZ0ZXIgdGhlIGNoYW5nZS4sQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgb24gZXZlcnkgbmF0aXZlIGBpbnB1dGAgZXZlbnQgZnJvbSB0aGUgdW5kZXJseWluZyBgPGlucHV0PmAgZWxlbWVudCxcbnJlZ2FyZGxlc3Mgb2YgdGhlIGB2YWx1ZVVwZGF0ZVRyaWdnZXJgIHNldHRpbmcuXG5cblRoaXMgZXZlbnQgZmlyZXMgb24gZXZlcnkga2V5c3Ryb2tlIGFuZCBwcm92aWRlcyB0aGUgcmF3IGlucHV0IHZhbHVlLlxuVXNlIHRoaXMgZm9yIHJlYWwtdGltZSBtb25pdG9yaW5nIChlLmcuLCBkcml2aW5nIGEgc3VnZ2VzdGlvbnMgZHJvcGRvd24pXG53aGlsZSBrZWVwaW5nIGB2ZWdhQ2hhbmdlYCBzZXQgdG8gYCdjaGFuZ2UnYCB0cmlnZ2VyIGZvciB0aGUgbWFpbiB2YWx1ZSBiaW5kaW5nLiBAZXZlbnREZXRhaWwgYHN0cmluZ2Ag4oCUIFRoZSByYXcgdmFsdWUgZnJvbSB0aGUgbmF0aXZlIGlucHV0IGVsZW1lbnQuLEB2ZWdhVmVyc2lvbiAyLjc1LjBcbiAgICovXG4gIHZlZ2FOYXRpdmVJbnB1dENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogTmF0aXZlLW5hbWVzcGFjZSBhbGlhcyBmb3IgdGhlIGB2ZWdhTmF0aXZlSW5wdXRDaGFuZ2VgIGV2ZW50LlxuXG5FbWl0dGVkIGF0IHRoZSBzYW1lIHRpbWUgYW5kIHVuZGVyIHRoZSBzYW1lIGNvbmRpdGlvbnMgYXNcbmB2ZWdhTmF0aXZlSW5wdXRDaGFuZ2VgLiBVc2UgdGhpcyBldmVudCB3aGVuIGludGVncmF0aW5nIHdpdGggZnJhbWV3b3Jrc1xudGhhdCBleHBlY3QgbmF0aXZlLXN0eWxlIGV2ZW50IG5hbWVzLiBAZXZlbnREZXRhaWwgYHN0cmluZ2Ag4oCUIFRoZSByYXcgdmFsdWUgZnJvbSB0aGUgbmF0aXZlIGlucHV0IGVsZW1lbnQuLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjc1LjBcbiAgICovXG4gIG5hdGl2ZUlucHV0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIGlucHV0IGZpZWxkIGxvc2VzIGZvY3VzLlxuXG5UaGlzIGV2ZW50IGZpcmVzIGFmdGVyIHRoZSB1bmRlcmx5aW5nIG5hdGl2ZSBgPGlucHV0PmAgZWxlbWVudCdzIGBibHVyYFxuZXZlbnQuIFVzZWZ1bCBmb3IgdHJpZ2dlcmluZyB2YWxpZGF0aW9uLCBzYXZpbmcgc3RhdGUsIG9yIHVwZGF0aW5nIFVJXG53aGVuIHRoZSB1c2VyIG5hdmlnYXRlcyBhd2F5IGZyb20gdGhlIGZpZWxkLiBAZXZlbnREZXRhaWwgYHVuZGVmaW5lZGAg4oCUIE5vIHBheWxvYWQ7IGxpc3RlbiBmb3IgdGhlIGV2ZW50IG9jY3VycmVuY2Ugb25seS4sQHZlZ2FWZXJzaW9uIDEuMy4wXG4gICAqL1xuICB2ZWdhQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHVuZGVmaW5lZD4+O1xuICAvKipcbiAgICogTmF0aXZlLW5hbWVzcGFjZSBhbGlhcyBmb3IgdGhlIGB2ZWdhQmx1cmAgZXZlbnQuXG5cbkVtaXR0ZWQgYXQgdGhlIHNhbWUgdGltZSBhbmQgdW5kZXIgdGhlIHNhbWUgY29uZGl0aW9ucyBhcyBgdmVnYUJsdXJgLlxuVXNlIHRoaXMgZXZlbnQgd2hlbiBpbnRlZ3JhdGluZyB3aXRoIGZyYW1ld29ya3MgdGhhdCBleHBlY3QgbmF0aXZlLXN0eWxlXG5ldmVudCBuYW1lcy4gQGV2ZW50RGV0YWlsIGB1bmRlZmluZWRgIOKAlCBObyBwYXlsb2FkOyBsaXN0ZW4gZm9yIHRoZSBldmVudCBvY2N1cnJlbmNlIG9ubHkuLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgYmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHVuZGVmaW5lZD4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSBpbnB1dCBmaWVsZCByZWNlaXZlcyBmb2N1cy5cblxuVGhpcyBldmVudCBmaXJlcyBhZnRlciB0aGUgdW5kZXJseWluZyBuYXRpdmUgYDxpbnB1dD5gIGVsZW1lbnQncyBgZm9jdXNgXG5ldmVudCwgaW5jbHVkaW5nIHdoZW4gZm9jdXMgaXMgc2V0IHByb2dyYW1tYXRpY2FsbHkgdmlhIHRoZSBgZG9Gb2N1cygpYCBtZXRob2QuXG5Vc2VmdWwgZm9yIGhpZ2hsaWdodGluZyB0aGUgZmllbGQsIHNob3dpbmcgY29udGV4dHVhbCBoZWxwLCBvciBvcGVuaW5nXG5hIHN1Z2dlc3Rpb25zIGRyb3Bkb3duLiBAZXZlbnREZXRhaWwgYHVuZGVmaW5lZGAg4oCUIE5vIHBheWxvYWQ7IGxpc3RlbiBmb3IgdGhlIGV2ZW50IG9jY3VycmVuY2Ugb25seS4sQHZlZ2FWZXJzaW9uIDEuMTIuMFxuICAgKi9cbiAgdmVnYUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dW5kZWZpbmVkPj47XG4gIC8qKlxuICAgKiBOYXRpdmUtbmFtZXNwYWNlIGFsaWFzIGZvciB0aGUgYHZlZ2FGb2N1c2AgZXZlbnQuXG5cbkVtaXR0ZWQgYXQgdGhlIHNhbWUgdGltZSBhbmQgdW5kZXIgdGhlIHNhbWUgY29uZGl0aW9ucyBhcyBgdmVnYUZvY3VzYC5cblVzZSB0aGlzIGV2ZW50IHdoZW4gaW50ZWdyYXRpbmcgd2l0aCBmcmFtZXdvcmtzIHRoYXQgZXhwZWN0IG5hdGl2ZS1zdHlsZVxuZXZlbnQgbmFtZXMuIEBldmVudERldGFpbCBgdW5kZWZpbmVkYCDigJQgTm8gcGF5bG9hZDsgbGlzdGVuIGZvciB0aGUgZXZlbnQgb2NjdXJyZW5jZSBvbmx5LixAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dW5kZWZpbmVkPj47XG4gIC8qKlxuICAgKiBFbWl0dGVkIHdoZW4gdGhlIHVzZXIgY2xpY2tzIHRoZSBzdWZmaXggYnV0dG9uIGluIHRoZSBmaWVsZCBsYWJlbC5cblxuVGhpcyBldmVudCBvbmx5IGZpcmVzIHdoZW4gYSBgbGFiZWxTdWZmaXhCdXR0b25Db25maWdgIChvciB0aGUgZGVwcmVjYXRlZFxuYGxhYmVsU3VmZml4QnV0dG9uUHJvcHNgKSBpcyBwcm92aWRlZC4gVXNlIGl0IHRvIGhhbmRsZSBjb250ZXh0dWFsIGFjdGlvbnNcbnN1Y2ggYXMgb3BlbmluZyBhIHRvb2x0aXAsIG5hdmlnYXRpbmcgdG8gYSBoZWxwIHBhZ2UsIG9yIHRyaWdnZXJpbmcgYVxuXCJGb3Jnb3QgcGFzc3dvcmQ/XCIgZmxvdy4gQGV2ZW50RGV0YWlsIGB2b2lkYCDigJQgTm8gcGF5bG9hZC4sQHZlZ2FWZXJzaW9uIDIuMjUuMFxuICAgKi9cbiAgdmVnYUxhYmVsQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIE5hdGl2ZS1uYW1lc3BhY2UgYWxpYXMgZm9yIHRoZSBgdmVnYUxhYmVsQnV0dG9uQ2xpY2tgIGV2ZW50LlxuXG5FbWl0dGVkIGF0IHRoZSBzYW1lIHRpbWUgYW5kIHVuZGVyIHRoZSBzYW1lIGNvbmRpdGlvbnMgYXNcbmB2ZWdhTGFiZWxCdXR0b25DbGlja2AuIFVzZSB0aGlzIGV2ZW50IHdoZW4gaW50ZWdyYXRpbmcgd2l0aCBmcmFtZXdvcmtzXG50aGF0IGV4cGVjdCBuYXRpdmUtc3R5bGUgZXZlbnQgbmFtZXMuIEBldmVudERldGFpbCBgdm9pZGAg4oCUIE5vIHBheWxvYWQuLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjI1LjBcbiAgICovXG4gIGxhYmVsQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiB0aGUgdXNlciBwYXN0ZXMgY29udGVudCBpbnRvIHRoZSBpbnB1dCBmaWVsZC5cblxuVGhpcyBldmVudCBmaXJlcyByZWdhcmRsZXNzIG9mIHRoZSBgZGlzYWJsZUNvcHlQYXN0ZWAgc2V0dGluZyDigJQgdGhlIHBhc3RlXG5hY3Rpb24gaXMgYmxvY2tlZCB2aXN1YWxseSwgYnV0IHRoZSBldmVudCBzdGlsbCBwcm9wYWdhdGVzIGZvciB0cmFja2luZ1xucHVycG9zZXMuIFVzZSB0aGlzIHRvIGluc3BlY3Qgb3IgdHJhbnNmb3JtIHBhc3RlZCBkYXRhIGJlZm9yZSBpdCBpcyBhcHBsaWVkLiBAZXZlbnREZXRhaWwgYERhdGFUcmFuc2ZlclR5cGVgIOKAlCBBbiBvYmplY3QgY29udGFpbmluZyB0aGUgcGFzdGVkIGRhdGEsXG5pbmNsdWRpbmcgdGhlIE1JTUUgdHlwZSBhbmQgcmF3IHRleHQgY29udGVudCBmcm9tIHRoZSBjbGlwYm9hcmQuLEB2ZWdhVmVyc2lvbiAyLjY2LjBcbiAgICovXG4gIHZlZ2FQYXN0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhSW5wdXREYXRhVHJhbnNmZXJUeXBlPj47XG4gIC8qKlxuICAgKiBOYXRpdmUtbmFtZXNwYWNlIGFsaWFzIGZvciB0aGUgYHZlZ2FQYXN0ZWAgZXZlbnQuXG5cbkVtaXR0ZWQgYXQgdGhlIHNhbWUgdGltZSBhbmQgdW5kZXIgdGhlIHNhbWUgY29uZGl0aW9ucyBhcyBgdmVnYVBhc3RlYC5cblVzZSB0aGlzIGV2ZW50IHdoZW4gaW50ZWdyYXRpbmcgd2l0aCBmcmFtZXdvcmtzIHRoYXQgZXhwZWN0IG5hdGl2ZS1zdHlsZVxuZXZlbnQgbmFtZXMuIEBldmVudERldGFpbCBgRGF0YVRyYW5zZmVyVHlwZWAg4oCUIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBwYXN0ZWQgZGF0YSxcbmluY2x1ZGluZyB0aGUgTUlNRSB0eXBlIGFuZCByYXcgdGV4dCBjb250ZW50IGZyb20gdGhlIGNsaXBib2FyZC4sQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNjYuMFxuICAgKi9cbiAgcGFzdGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUlucHV0RGF0YVRyYW5zZmVyVHlwZT4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYW4gaXRlbSBmcm9tIHRoZSBzdWdnZXN0aW9ucyBkcm9wZG93bi5cblxuVGhpcyBldmVudCBvbmx5IGZpcmVzIHdoZW4gdGhlIGBzdWdnZXN0aW9uc0Ryb3Bkb3duU291cmNlYCBwcm9wIGlzIHNldC5cblVzZSBpdCB0byByZXNwb25kIHRvIHRoZSB1c2VyJ3Mgc2VsZWN0aW9uIOKAlCBmb3IgZXhhbXBsZSwgdG8gcG9wdWxhdGVcbnJlbGF0ZWQgZmllbGRzLCBuYXZpZ2F0ZSB0byBhIGRldGFpbCBwYWdlLCBvciB0cmlnZ2VyIGEgc2VhcmNoLiBAZXZlbnREZXRhaWwgYFZlZ2FEcm9wZG93blNvdXJjZUl0ZW1gIOKAlCBUaGUgZnVsbCBkYXRhIG9iamVjdCBvZiB0aGUgc2VsZWN0ZWRcbnN1Z2dlc3Rpb24gaXRlbSwgaW5jbHVkaW5nIGl0cyBgbGFiZWxgLCBgdmFsdWVgLCBhbmQgYW55IGN1c3RvbSBwcm9wZXJ0aWVzLixAdmVnYVZlcnNpb24gMi43NS4wXG4gICAqL1xuICB2ZWdhU3VnZ2VzdGlvbkl0ZW1DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhSW5wdXRWZWdhRHJvcGRvd25Tb3VyY2VJdGVtPj47XG4gIC8qKlxuICAgKiBOYXRpdmUtbmFtZXNwYWNlIGFsaWFzIGZvciB0aGUgYHZlZ2FTdWdnZXN0aW9uSXRlbUNsaWNrYCBldmVudC5cblxuRW1pdHRlZCBhdCB0aGUgc2FtZSB0aW1lIGFuZCB1bmRlciB0aGUgc2FtZSBjb25kaXRpb25zIGFzXG5gdmVnYVN1Z2dlc3Rpb25JdGVtQ2xpY2tgLiBVc2UgdGhpcyBldmVudCB3aGVuIGludGVncmF0aW5nIHdpdGggZnJhbWV3b3Jrc1xudGhhdCBleHBlY3QgbmF0aXZlLXN0eWxlIGV2ZW50IG5hbWVzLiBAZXZlbnREZXRhaWwgYFZlZ2FEcm9wZG93blNvdXJjZUl0ZW1gIOKAlCBUaGUgZnVsbCBkYXRhIG9iamVjdCBvZiB0aGUgc2VsZWN0ZWRcbnN1Z2dlc3Rpb24gaXRlbSwgaW5jbHVkaW5nIGl0cyBgbGFiZWxgLCBgdmFsdWVgLCBhbmQgYW55IGN1c3RvbSBwcm9wZXJ0aWVzLixAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi43NS4wXG4gICAqL1xuICBzdWdnZXN0aW9uSXRlbUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FJbnB1dFZlZ2FEcm9wZG93blNvdXJjZUl0ZW0+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2F1dG9jb21wbGV0ZScsICdkaXNhYmxlQ29weVBhc3RlJywgJ2Rpc2FibGVkJywgJ2VtYWlsJywgJ2VudGVya2V5aGludCcsICdoaW50JywgJ2lucHV0bW9kZScsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ2xhYmVsU3VmZml4QnV0dG9uQ29uZmlnJywgJ2xhYmVsU3VmZml4QnV0dG9uUHJvcHMnLCAnbWFza0NvbmZpZycsICdtYXgnLCAnbWF4TGVuZ3RoJywgJ21pbicsICdtaW5MZW5ndGgnLCAnbmFtZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdwcmVmaXhJY29uJywgJ3JlYWRPbmx5JywgJ3JlcXVpcmVkJywgJ3Nob3dDbGVhckljb24nLCAnc2l6ZScsICdzdWdnZXN0aW9uc0Ryb3Bkb3duU291cmNlJywgJ3R5cGUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJywgJ3ZhbHVlVXBkYXRlVHJpZ2dlciddLFxuICBtZXRob2RzOiBbJ2RvRm9jdXMnLCAnZG9CbHVyJywgJ3Nob3dTdWdnZXN0aW9uc0Ryb3Bkb3duJywgJ2hpZGVTdWdnZXN0aW9uc0Ryb3Bkb3duJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWlucHV0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdhdXRvY29tcGxldGUnLCAnZGlzYWJsZUNvcHlQYXN0ZScsICdkaXNhYmxlZCcsICdlbWFpbCcsICdlbnRlcmtleWhpbnQnLCAnaGludCcsICdpbnB1dG1vZGUnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdsYWJlbFN1ZmZpeEJ1dHRvbkNvbmZpZycsICdsYWJlbFN1ZmZpeEJ1dHRvblByb3BzJywgJ21hc2tDb25maWcnLCAnbWF4JywgJ21heExlbmd0aCcsICdtaW4nLCAnbWluTGVuZ3RoJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncHJlZml4SWNvbicsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaG93Q2xlYXJJY29uJywgJ3NpemUnLCAnc3VnZ2VzdGlvbnNEcm9wZG93blNvdXJjZScsICd0eXBlJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZScsICd2YWx1ZVVwZGF0ZVRyaWdnZXInXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhSW5wdXQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhTmF0aXZlSW5wdXRDaGFuZ2UnLCAnbmF0aXZlSW5wdXRDaGFuZ2UnLCAndmVnYUJsdXInLCAnYmx1cicsICd2ZWdhRm9jdXMnLCAnZm9jdXMnLCAndmVnYUxhYmVsQnV0dG9uQ2xpY2snLCAnbGFiZWxCdXR0b25DbGljaycsICd2ZWdhUGFzdGUnLCAncGFzdGUnLCAndmVnYVN1Z2dlc3Rpb25JdGVtQ2xpY2snLCAnc3VnZ2VzdGlvbkl0ZW1DbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhSW5wdXRDcmVkaXRDYXJkIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhSW5wdXRDcmVkaXRDYXJkIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgdmFsdWUgY2hhbmdlLiBAdmVnYVZlcnNpb24gMS4yNi4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBIG5hdGl2ZSBjaGFuZ2UgZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSB2YWx1ZSBjaGFuZ2UuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgYmx1ciBldmVudCBvZiB0aGUgY3JlZGl0IGNhcmQgZWxlbWVudC4gQHZlZ2FWZXJzaW9uIDEuMjYuMFxuICAgKi9cbiAgdmVnYUJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmRlZmluZWQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBibHVyIGV2ZW50IG9mIHRoZSBjcmVkaXQgY2FyZCBlbGVtZW50LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmRlZmluZWQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBmb2N1cyBvZiB0aGUgY3JlZGl0IGNhcmQgZWxlbWVudC4gQHZlZ2FWZXJzaW9uIDEuMjYuMFxuICAgKi9cbiAgdmVnYUZvY3VzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dW5kZWZpbmVkPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgZm9jdXMgb2YgdGhlIGNyZWRpdCBjYXJkIGVsZW1lbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgZm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmRlZmluZWQ+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hpZGVDYXJkTnVtYmVyT25CbHVyJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICduYW1lJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWlucHV0LWNyZWRpdC1jYXJkJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoaWRlQ2FyZE51bWJlck9uQmx1cicsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdyZXF1aXJlZCcsICdzaXplJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FJbnB1dENyZWRpdENhcmQge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhQmx1cicsICdibHVyJywgJ3ZlZ2FGb2N1cycsICdmb2N1cyddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhSW5wdXROdW1lcmljIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhSW5wdXROdW1lcmljIHtcbiAgLyoqXG4gICAqIEZpcmVzIHdoZW5ldmVyIHRoZSBudW1lcmljIGlucHV0J3MgdmFsdWUgY2hhbmdlcyDigJQgaW5jbHVkaW5nIHR5cGluZyxcbmtleWJvYXJkIGluY3JlbWVudC9kZWNyZW1lbnQsIGNsZWFyaW5nLCBhbmQgcHJvZ3JhbW1hdGljIHVwZGF0ZXMuXG5cblRoZSBldmVudCBkZXRhaWwgY29udGFpbnMgdGhlIG5ldyBudW1lcmljIHZhbHVlIChgbnVtYmVyYCksIG9yIGBOYU5gXG53aGVuIHRoZSBmaWVsZCBpcyBlbXB0eS4gQGV2ZW50RGV0YWlsIG51bWJlcixAdmVnYVZlcnNpb24gMi4yOS4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8bnVtYmVyPj47XG4gIC8qKlxuICAgKiBOYXRpdmUtZXF1aXZhbGVudCBtaXJyb3Igb2YgYHZlZ2FDaGFuZ2VgLiBGaXJlcyB3aXRoIHRoZSBzYW1lIHBheWxvYWRcbmFuZCBhdCB0aGUgc2FtZSB0aW1lLCBhbGxvd2luZyBjb25zdW1lcnMgdG8gbGlzdGVuIHVzaW5nIHRoZSBzdGFuZGFyZFxuYGNoYW5nZWAgZXZlbnQgbmFtZS4gQGV2ZW50RGV0YWlsIG51bWJlcixAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yOS4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxudW1iZXI+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaW50ZWdlck9ubHknLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtYWpvckluY3JlbWVudCcsICdtYXgnLCAnbWluJywgJ21pbm9ySW5jcmVtZW50JywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncHJlZml4SWNvbicsICdwcmVmaXhUZXh0JywgJ3JlcXVpcmVkJywgJ3Nob3dDbGVhckljb24nLCAnc2l6ZScsICdzdWZmaXhUZXh0JywgJ3Rob3VzYW5kQ29tbWEnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWlucHV0LW51bWVyaWMnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaW50ZWdlck9ubHknLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtYWpvckluY3JlbWVudCcsICdtYXgnLCAnbWluJywgJ21pbm9ySW5jcmVtZW50JywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncHJlZml4SWNvbicsICdwcmVmaXhUZXh0JywgJ3JlcXVpcmVkJywgJ3Nob3dDbGVhckljb24nLCAnc2l6ZScsICdzdWZmaXhUZXh0JywgJ3Rob3VzYW5kQ29tbWEnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUlucHV0TnVtZXJpYyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FJbnB1dFBhc3Njb2RlIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhSW5wdXRQYXNzY29kZSB7XG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuZXZlciB0aGUgcGFzc2NvZGUgdmFsdWUgY2hhbmdlcyDigJQgZWFjaCB0aW1lIGEgY2hhcmFjdGVyIGlzXG5lbnRlcmVkLCBkZWxldGVkLCBvciBwYXN0ZWQgaW50byBhbnkgYm94LiBUaGUgZXZlbnQgZGV0YWlsIGNvbnRhaW5zIHRoZVxuY29uY2F0ZW5hdGVkIHN0cmluZyBvZiBhbGwgYm94IHZhbHVlcyBhdCB0aGUgdGltZSBvZiB0aGUgY2hhbmdlLiBAZXZlbnREZXRhaWwgc3RyaW5nLEB2ZWdhVmVyc2lvbiAyLjY2LjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIE5hdGl2ZS1lcXVpdmFsZW50IG1pcnJvciBvZiBgdmVnYUNoYW5nZWAuIEZpcmVzIHdpdGggdGhlIHNhbWUgcGF5bG9hZFxuYW5kIGF0IHRoZSBzYW1lIHRpbWUsIGFsbG93aW5nIGNvbnN1bWVycyB0byBsaXN0ZW4gdXNpbmcgdGhlIHN0YW5kYXJkXG5gY2hhbmdlYCBldmVudCBuYW1lLiBAZXZlbnREZXRhaWwgc3RyaW5nLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjY2LjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbiBhbGwgcGFzc2NvZGUgYm94ZXMgaGF2ZSBiZWVuIGZpbGxlZCAoaS5lLiwgdGhlIHZhbHVlIGxlbmd0aFxuZXF1YWxzIHRoZSBjb25maWd1cmVkIGBsZW5ndGhgKS4gVGhlIGV2ZW50IGRldGFpbCBjb250YWlucyB0aGUgY29tcGxldGVcbnBhc3Njb2RlIHN0cmluZy4gVXNlZnVsIGZvciB0cmlnZ2VyaW5nIGF1dG8tc3VibWl0IG9yIHZlcmlmaWNhdGlvblxud29ya2Zsb3dzLiBAZXZlbnREZXRhaWwgc3RyaW5nLEB2ZWdhVmVyc2lvbiAyLjY2LjBcbiAgICovXG4gIHZlZ2FDb21wbGV0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogTmF0aXZlLWVxdWl2YWxlbnQgbWlycm9yIG9mIGB2ZWdhQ29tcGxldGVgLiBGaXJlcyB3aXRoIHRoZSBzYW1lIHBheWxvYWRcbmFuZCBhdCB0aGUgc2FtZSB0aW1lLCBhbGxvd2luZyBjb25zdW1lcnMgdG8gbGlzdGVuIHVzaW5nIHRoZSBzdGFuZGFyZFxuYGNvbXBsZXRlYCBldmVudCBuYW1lLiBAZXZlbnREZXRhaWwgc3RyaW5nLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjY2LjBcbiAgICovXG4gIGNvbXBsZXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoaW50JywgJ2lucHV0VHlwZScsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ2xlbmd0aCcsICduYW1lJywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWlucHV0LXBhc3Njb2RlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoaW50JywgJ2lucHV0VHlwZScsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ2xlbmd0aCcsICduYW1lJywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUlucHV0UGFzc2NvZGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhQ29tcGxldGUnLCAnY29tcGxldGUnXSk7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhQ291bnRyeVR5cGUgYXMgSVZlZ2FJbnB1dFBob25lTnVtYmVyVmVnYUNvdW50cnlUeXBlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtaW5wdXQtcGhvbmUtbnVtYmVyL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhSW5wdXRQaG9uZU51bWJlciBleHRlbmRzIENvbXBvbmVudHMuVmVnYUlucHV0UGhvbmVOdW1iZXIge1xuICAvKipcbiAgICogRmlyZXMgd2hlbmV2ZXIgdGhlIHBob25lIG51bWJlciB2YWx1ZSBjaGFuZ2VzIOKAlCBpbmNsdWRpbmcgdHlwaW5nLFxucGFzdGluZywgb3IgcHJvZ3JhbW1hdGljIHVwZGF0ZXMuIFRoZSBldmVudCBkZXRhaWwgY29udGFpbnMgdGhlIGZ1bGxcbnBob25lIG51bWJlciBpbiBFLjE2NCBmb3JtYXQgKGUuZy4sIGAnKzE0MTU1NTUyNjcxJ2ApLiBAZXZlbnREZXRhaWwgc3RyaW5nLEB2ZWdhVmVyc2lvbiAyLjE4LjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIE5hdGl2ZS1lcXVpdmFsZW50IG1pcnJvciBvZiBgdmVnYUNoYW5nZWAuIEZpcmVzIHdpdGggdGhlIHNhbWUgcGF5bG9hZFxuYW5kIGF0IHRoZSBzYW1lIHRpbWUsIGFsbG93aW5nIGNvbnN1bWVycyB0byBsaXN0ZW4gdXNpbmcgdGhlIHN0YW5kYXJkXG5gY2hhbmdlYCBldmVudCBuYW1lLiBAZXZlbnREZXRhaWwgc3RyaW5nLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjE4LjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogRmlyZXMgd2hlbmV2ZXIgdGhlIHNlbGVjdGVkIGNvdW50cnkgY2hhbmdlcyB2aWEgdGhlIGNvdW50cnkgZHJvcGRvd24uXG5UaGUgZXZlbnQgZGV0YWlsIGNvbnRhaW5zIGEgYFZlZ2FDb3VudHJ5VHlwZWAgb2JqZWN0IHdpdGggdGhlIGNvdW50cnlcbmNvZGUsIGNhbGxpbmcgY29kZSwgYW5kIGRpc3BsYXkgbmFtZSBvZiB0aGUgbmV3bHkgc2VsZWN0ZWQgY291bnRyeS4gQGV2ZW50RGV0YWlsIFZlZ2FDb3VudHJ5VHlwZSxAdmVnYVZlcnNpb24gMi4xOC4wXG4gICAqL1xuICB2ZWdhQ291bnRyeUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhSW5wdXRQaG9uZU51bWJlclZlZ2FDb3VudHJ5VHlwZT4+O1xuICAvKipcbiAgICogTmF0aXZlLWVxdWl2YWxlbnQgbWlycm9yIG9mIGB2ZWdhQ291bnRyeUNoYW5nZWAuIEZpcmVzIHdpdGggdGhlIHNhbWVcbnBheWxvYWQgYW5kIGF0IHRoZSBzYW1lIHRpbWUsIGFsbG93aW5nIGNvbnN1bWVycyB0byBsaXN0ZW4gdXNpbmcgdGhlXG5zdGFuZGFyZCBgY291bnRyeUNoYW5nZWAgZXZlbnQgbmFtZS4gQGV2ZW50RGV0YWlsIFZlZ2FDb3VudHJ5VHlwZSxAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4xOC4wXG4gICAqL1xuICBjb3VudHJ5Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FJbnB1dFBob25lTnVtYmVyVmVnYUNvdW50cnlUeXBlPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhbGxvd2VkQ291bnRyeUNvZGVzJywgJ2F1dG9WYWxpZGF0aW9uJywgJ2NvdW50cnlDb2RlJywgJ2Rpc2FibGVkJywgJ2VtcHR5VmFsdWVFbmFibGVkJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICduYW1lJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3JlcXVpcmVkJywgJ3NpemUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWlucHV0LXBob25lLW51bWJlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYWxsb3dlZENvdW50cnlDb2RlcycsICdhdXRvVmFsaWRhdGlvbicsICdjb3VudHJ5Q29kZScsICdkaXNhYmxlZCcsICdlbXB0eVZhbHVlRW5hYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdyZXF1aXJlZCcsICdzaXplJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FJbnB1dFBob25lTnVtYmVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnLCAndmVnYUNvdW50cnlDaGFuZ2UnLCAnY291bnRyeUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhSW5wdXRSYW5nZSBleHRlbmRzIENvbXBvbmVudHMuVmVnYUlucHV0UmFuZ2Uge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSB2YWx1ZSBjaGFuZ2UuIEB2ZWdhVmVyc2lvbiAyLjIuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PFtudW1iZXIsIG51bWJlcl0+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgdmFsdWUgY2hhbmdlLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PFtudW1iZXIsIG51bWJlcl0+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncHJlZml4SWNvbicsICdyZXF1aXJlZCcsICdzaG93Q2xlYXJJY29uJywgJ3NpemUnLCAnc3RhY2snLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWlucHV0LXJhbmdlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbWF4JywgJ21pbicsICduYW1lJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3ByZWZpeEljb24nLCAncmVxdWlyZWQnLCAnc2hvd0NsZWFySWNvbicsICdzaXplJywgJ3N0YWNrJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FJbnB1dFJhbmdlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBTZWxlY3RWYWx1ZVR5cGUgYXMgSVZlZ2FJbnB1dFNlbGVjdFNlbGVjdFZhbHVlVHlwZSB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLWlucHV0LXNlbGVjdC90eXBlcyc7XG5pbXBvcnQgdHlwZSB7IFNlbGVjdFR5cGUgYXMgSVZlZ2FJbnB1dFNlbGVjdFNlbGVjdFR5cGUgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1pbnB1dC1zZWxlY3QvdHlwZXMnO1xuaW1wb3J0IHR5cGUgeyBWZWdhRHJvcGRvd25TZWFyY2hUcmlnZ2VyRXZlbnREZXRhaWwgYXMgSVZlZ2FJbnB1dFNlbGVjdFZlZ2FEcm9wZG93blNlYXJjaFRyaWdnZXJFdmVudERldGFpbCB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLWRyb3Bkb3duL3R5cGVzJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhSW5wdXRTZWxlY3QgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FJbnB1dFNlbGVjdCB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2hhbmdlIG9mIHRoZSBzZWxlY3QgdmFsdWUuIEB2ZWdhVmVyc2lvbiAxLjAuMTFcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUlucHV0U2VsZWN0U2VsZWN0VmFsdWVUeXBlPElWZWdhSW5wdXRTZWxlY3RTZWxlY3RUeXBlPj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBvZiB0aGUgc2VsZWN0IHZhbHVlLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhSW5wdXRTZWxlY3RTZWxlY3RWYWx1ZVR5cGU8SVZlZ2FJbnB1dFNlbGVjdFNlbGVjdFR5cGU+Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgc2VhcmNoIG9mIHRoZSBkcm9wZG93bi4gQHZlZ2FWZXJzaW9uIDEuNTAuMFxuICAgKi9cbiAgdmVnYVNlYXJjaDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHNlYXJjaCBvZiB0aGUgZHJvcGRvd24uIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgc2VhcmNoOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgc2VhcmNoIGV2ZW50IHRyaWdnZXJlZCB3aXRoaW4gdGhlIGRyb3Bkb3duLFxuICAgYnV0IG9ubHkgaWYgYHVzZURlZmF1bHRGaWx0ZXJgIGlzIHNldCB0byBgZmFsc2VgLlxuVW5saWtlIHRoZSBWZWdhc2VhcmNoIGV2ZW50LCB0aGlzIGV2ZW50IGluY2x1ZGVzIHRoZSBkZXRhaWxzIG9mIHRoZSB1c2VyIHdobyB0cmlnZ2VyZWQgaXQuXG5JdCBjYW4gYmUgdHJpZ2dlcmVkIGluIHR3byB3YXlzOiBieSBwcmVzc2luZyBcIkVudGVyXCIgb3IgdGhyb3VnaCB1c2VyIGlucHV0LiBAdmVnYVZlcnNpb24gMi4zMC4wXG4gICAqL1xuICB2ZWdhU2VhcmNoVHJpZ2dlcjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhSW5wdXRTZWxlY3RWZWdhRHJvcGRvd25TZWFyY2hUcmlnZ2VyRXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBzZWFyY2ggZXZlbnQgdHJpZ2dlcmVkIHdpdGhpbiB0aGUgZHJvcGRvd24sXG5Vbmxpa2UgdGhlIFZlZ2FzZWFyY2ggZXZlbnQsIHRoaXMgZXZlbnQgaW5jbHVkZXMgdGhlIGRldGFpbHMgb2YgdGhlIHVzZXIgd2hvIHRyaWdnZXJlZCBpdC5cbkl0IGNhbiBiZSB0cmlnZ2VyZWQgaW4gdHdvIHdheXM6IGJ5IHByZXNzaW5nIFwiRW50ZXJcIiBvciB0aHJvdWdoIHVzZXIgaW5wdXQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjMwLjBcbiAgICovXG4gIHNlYXJjaFRyaWdnZXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYUlucHV0U2VsZWN0VmVnYURyb3Bkb3duU2VhcmNoVHJpZ2dlckV2ZW50RGV0YWlsPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG9ubHkgZmlyZWQgd2hlbiB0aGUgU2VsZWN0IEFsbCBjaGVja2JveCBpbiB0aGUgZHJvcGRvd24gaGFzIGJlZW4gY2xpY2tlZC5cblxuVGhlIGV2ZW50J3MgYGRldGFpbGAgcHJvcGVydHkgaXMgYHRydWVgIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaXMgY2xpY2tlZCB0byBzZWxlY3QgYWxsIGl0ZW1zLFxuICAgYW5kIGBmYWxzZWAgd2hlbiB0aGUgU2VsZWN0IEFsbCBjaGVja2JveCBpcyBjbGlja2VkIHRvIGNsZWFyIGFsbCBzZWxlY3RlZCBpdGVtcy4gQHZlZ2FWZXJzaW9uIDIuOTUuMFxuICAgKi9cbiAgdmVnYURyb3Bkb3duU2VsZWN0QWxsQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG9ubHkgZmlyZWQgd2hlbiB0aGUgU2VsZWN0IEFsbCBjaGVja2JveCBpbiB0aGUgZHJvcGRvd24gaGFzIGJlZW4gY2xpY2tlZC5cblxuVGhlIGV2ZW50J3MgYGRldGFpbGAgcHJvcGVydHkgaXMgYHRydWVgIHdoZW4gdGhlIFNlbGVjdCBBbGwgY2hlY2tib3ggaXMgY2xpY2tlZCB0byBzZWxlY3QgYWxsIGl0ZW1zLFxuICAgYW5kIGBmYWxzZWAgd2hlbiB0aGUgU2VsZWN0IEFsbCBjaGVja2JveCBpcyBjbGlja2VkIHRvIGNsZWFyIGFsbCBzZWxlY3RlZCBpdGVtcy4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuOTUuMFxuICAgKi9cbiAgZHJvcGRvd25TZWxlY3RBbGxDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGJvb2xlYW4+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIGlucHV0LXNlbGVjdCBoYXMgYmVlbiBvcGVuZWQsXG4gICBlaXRoZXIgcHJvZ3JhbW1hdGljYWxseSBvciB2aWEgdXNlciBpbnRlcmFjdGlvbi4gQHZlZ2FWZXJzaW9uIDIuMzIuMFxuICAgKi9cbiAgdmVnYVNob3c6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIGlucHV0LXNlbGVjdCBoYXMgYmVlbiBkaXNtaXNzZWQsXG4gICBlaXRoZXIgcHJvZ3JhbW1hdGljYWxseSBvciB2aWEgdXNlciBpbnRlcmFjdGlvbi4gQHZlZ2FWZXJzaW9uIDIuMzIuMFxuICAgKi9cbiAgdmVnYUhpZGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIHN1ZmZpeCBidXR0b24gYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWVsZCBsYWJlbCBoYXMgYmVlbiBjbGlja2VkLiBAdmVnYVZlcnNpb24gMi42OC4wXG4gICAqL1xuICB2ZWdhTGFiZWxCdXR0b25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgc3VmZml4IGJ1dHRvbiBhc3NvY2lhdGVkIHdpdGggdGhlIGZpZWxkIGxhYmVsIGhhcyBiZWVuIGNsaWNrZWQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjY4LjBcbiAgICovXG4gIGxhYmVsQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2Ryb3Bkb3duSXRlbVRvb2x0aXBQcm9wcycsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbGFiZWxTdWZmaXhCdXR0b25Db25maWcnLCAnbmFtZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdwcmVmaXhJY29uJywgJ3JlcXVpcmVkJywgJ3NlbGVjdFR5cGUnLCAnc2VsZWN0ZWRMYWJlbCcsICdzZWxlY3RlZExhYmVsVG9vbHRpcFByb3BzJywgJ3NpemUnLCAnc291cmNlJywgJ3NvdXJjZUxhenlMb2FkQ2FsbGJhY2snLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJywgJ3ZlZ2FEcm9wZG93blByb3BzJ10sXG4gIG1ldGhvZHM6IFsnZG9DbG9zZScsICdkb09wZW4nLCAnZG9DaGFuZ2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtaW5wdXQtc2VsZWN0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdkcm9wZG93bkl0ZW1Ub29sdGlwUHJvcHMnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ2xhYmVsU3VmZml4QnV0dG9uQ29uZmlnJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncHJlZml4SWNvbicsICdyZXF1aXJlZCcsICdzZWxlY3RUeXBlJywgJ3NlbGVjdGVkTGFiZWwnLCAnc2VsZWN0ZWRMYWJlbFRvb2x0aXBQcm9wcycsICdzaXplJywgJ3NvdXJjZScsICdzb3VyY2VMYXp5TG9hZENhbGxiYWNrJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZScsICd2ZWdhRHJvcGRvd25Qcm9wcyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FJbnB1dFNlbGVjdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FTZWFyY2gnLCAnc2VhcmNoJywgJ3ZlZ2FTZWFyY2hUcmlnZ2VyJywgJ3NlYXJjaFRyaWdnZXInLCAndmVnYURyb3Bkb3duU2VsZWN0QWxsQ2xpY2snLCAnZHJvcGRvd25TZWxlY3RBbGxDbGljaycsICd2ZWdhU2hvdycsICd2ZWdhSGlkZScsICd2ZWdhTGFiZWxCdXR0b25DbGljaycsICdsYWJlbEJ1dHRvbkNsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FJdGVtVG9nZ2xlIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhSXRlbVRvZ2dsZSB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhbiBpdGVtIHRvZ2dsZSBldmVudC4gQHZlZ2FWZXJzaW9uIDEuMy4wXG4gICAqL1xuICB2ZWdhVG9nZ2xlU3RhdHVzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYW4gaXRlbSB0b2dnbGUgZXZlbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgdG9nZ2xlU3RhdHVzOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnaXNUb2dnbGVkJywgJ2l0ZW1Ub2dnbGVTdGF0dXNNYXAnLCAnc3RhdHVzTWFwJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWl0ZW0tdG9nZ2xlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydpc1RvZ2dsZWQnLCAnaXRlbVRvZ2dsZVN0YXR1c01hcCcsICdzdGF0dXNNYXAnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhSXRlbVRvZ2dsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FUb2dnbGVTdGF0dXMnLCAndG9nZ2xlU3RhdHVzJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FMZWZ0TmF2IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhTGVmdE5hdiB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBsZWZ0LW5hdidzIG9wZW4gc3RhdGUgaGFzIGNoYW5nZWQuIEB2ZWdhVmVyc2lvbiAxLjMxLjBcbiAgICovXG4gIHZlZ2FTdGF0ZVVwZGF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgbGVmdC1uYXYncyBvcGVuIHN0YXRlIGhhcyBjaGFuZ2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIHN0YXRlVXBkYXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvQ29sbGFwc2VHcm91cHMnLCAnYXV0b0NvbGxhcHNlT25PdmVybGF5JywgJ2Zvb3Rub3RlJywgJ2hlYWRlckNvbmZpZycsICdvcGVuJywgJ3Nob3dBc092ZXJsYXknLCAnc291cmNlJ10sXG4gIG1ldGhvZHM6IFsndG9nZ2xlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWxlZnQtbmF2JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvQ29sbGFwc2VHcm91cHMnLCAnYXV0b0NvbGxhcHNlT25PdmVybGF5JywgJ2Zvb3Rub3RlJywgJ2hlYWRlckNvbmZpZycsICdvcGVuJywgJ3Nob3dBc092ZXJsYXknLCAnc291cmNlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUxlZnROYXYge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhU3RhdGVVcGRhdGUnLCAnc3RhdGVVcGRhdGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUxlZnROYXZHcm91cCBleHRlbmRzIENvbXBvbmVudHMuVmVnYUxlZnROYXZHcm91cCB7XG4gIC8qKlxuICAgKiBldmVudCBlbWl0dGVyIHVzZWQgZm9yIG5vdGlmeWluZyBjb25zdW1lcnMgdGhlIGNsaWNrIGV2ZW50ICogQHZlZ2FWZXJzaW9uIDEuNDEuMFxuICAgKi9cbiAgdmVnYUdyb3VwQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgdXNlZCBmb3Igbm90aWZ5aW5nIGNvbnN1bWVycyB0aGUgY2xpY2sgZXZlbnQgQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBncm91cENsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydpY29uJywgJ2l0ZW1LZXknLCAnbGFiZWwnLCAnb3BlbkJ5RGVmYXVsdCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1sZWZ0LW5hdi1ncm91cCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnaWNvbicsICdpdGVtS2V5JywgJ2xhYmVsJywgJ29wZW5CeURlZmF1bHQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhTGVmdE5hdkdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUdyb3VwQ2xpY2snLCAnZ3JvdXBDbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhTGVmdE5hdkxpbmsgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FMZWZ0TmF2TGluayB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgbGluayBjbGljayBldmVudC4gKiBAdmVnYVZlcnNpb24gMS4zMS4wXG4gICAqL1xuICB2ZWdhTWVudUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgbGluayBjbGljayBldmVudC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBtZW51Q2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NvdW50ZXJCYWRnZScsICdjdXN0b21TZWxlY3Rpb25FbmFibGVkJywgJ2ljb24nLCAnaXRlbUtleScsICdzZWxlY3RlZCcsICd0YXJnZXQnLCAndXJsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWxlZnQtbmF2LWxpbmsnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NvdW50ZXJCYWRnZScsICdjdXN0b21TZWxlY3Rpb25FbmFibGVkJywgJ2ljb24nLCAnaXRlbUtleScsICdzZWxlY3RlZCcsICd0YXJnZXQnLCAndXJsJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUxlZnROYXZMaW5rIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYU1lbnVDbGljaycsICdtZW51Q2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUxlZnROYXZTZWN0aW9uIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhTGVmdE5hdlNlY3Rpb24ge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGFjdGlvbiBjbGljayBldmVudCB3aGVuIHRoZSBhY3Rpb24gbGluayBpcyBub3QgY29uZmlndXJlZC4gQHZlZ2FWZXJzaW9uIDIuMTEuMFxuICAgKi9cbiAgdmVnYUFjdGlvbkNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgYWN0aW9uIGNsaWNrIGV2ZW50IHdoZW4gdGhlIGFjdGlvbiBsaW5rIGlzIG5vdCBjb25maWd1cmVkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4xMS4wXG4gICAqL1xuICBhY3Rpb25DbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnaXRlbUtleScsICdzZWN0aW9uSGVhZGVyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWxlZnQtbmF2LXNlY3Rpb24nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2l0ZW1LZXknLCAnc2VjdGlvbkhlYWRlciddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FMZWZ0TmF2U2VjdGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FBY3Rpb25DbGljaycsICdhY3Rpb25DbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhTGluZUNoYXJ0IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhTGluZUNoYXJ0IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnb3B0aW9ucyddLFxuICBtZXRob2RzOiBbJ3JlUmVuZGVyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLWxpbmUtY2hhcnQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ29wdGlvbnMnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhTGluZUNoYXJ0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUxvYWRlcldyYXBwZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FMb2FkZXJXcmFwcGVyIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1sb2FkZXItd3JhcHBlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FMb2FkZXJXcmFwcGVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYUxvYWRpbmdJbmRpY2F0b3IgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FMb2FkaW5nSW5kaWNhdG9yIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnaGludCcsICdsYWJlbCcsICdtb2RlJywgJ3BlcmNlbnQnLCAnc2hhcGUnLCAnc2l6ZScsICdzdGF0dXMnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtbG9hZGluZy1pbmRpY2F0b3InLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2hpbnQnLCAnbGFiZWwnLCAnbW9kZScsICdwZXJjZW50JywgJ3NoYXBlJywgJ3NpemUnLCAnc3RhdHVzJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYUxvYWRpbmdJbmRpY2F0b3Ige1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhTW9kYWwgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FNb2RhbCB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgbW9kYWwgY2xvc2UgZXZlbnQuICBJZiBhIG1ldGhvZCBpcyBkZWZpbmVkIGZvciB0aGlzIGV2ZW50LCBpbnZva2luZyBldmVudC5wcmV2ZW50RGVmYXVsdCgpIHByZXZlbnRzIHRoZSBtb2RhbCBmcm9tIGNsb3NpbmcuIEB2ZWdhVmVyc2lvbiAxLjAuMTBcbiAgICovXG4gIHZlZ2FDbG9zZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIG1vZGFsIGNsb3NlIGV2ZW50LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNsb3NlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgbW9kYWwgb3BlbiBldmVudC4gQHZlZ2FWZXJzaW9uIDEuMC4xMFxuICAgKi9cbiAgdmVnYU9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBtb2RhbCBvcGVuIGV2ZW50LiBUaGUgZXZlbnQgbmFtZSBpcyBub3QgYG9wZW5gIGJlY2F1c2UgYWxyZWFkeSBoYXMgYSBwcm9wZXJ0eSBgb3BlbmAgQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBtb2RhbE9wZW46IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FuaW1hdGlvbicsICdiYWNrZHJvcCcsICdiYWNrZHJvcENvbG9yJywgJ2NvbnRlbnRNYXhIZWlnaHQnLCAnY29ybmVycycsICdoYW5kbGVDbG9zZScsICdoZWlnaHQnLCAnaXNWZXJ0aWNhbGx5Q2VudGVyJywgJ2lzVmVydGljYWxseUNlbnRlcmVkJywgJ21hcmdpbicsICdtb2RhbFRpdGxlJywgJ29wZW4nLCAncGFkZGluZycsICdzaG93Q2xvc2VCdXR0b24nLCAnc2l6ZScsICd3aWR0aCddLFxuICBtZXRob2RzOiBbJ21vZGFsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLW1vZGFsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhbmltYXRpb24nLCAnYmFja2Ryb3AnLCAnYmFja2Ryb3BDb2xvcicsICdjb250ZW50TWF4SGVpZ2h0JywgJ2Nvcm5lcnMnLCAnaGFuZGxlQ2xvc2UnLCAnaGVpZ2h0JywgJ2lzVmVydGljYWxseUNlbnRlcicsICdpc1ZlcnRpY2FsbHlDZW50ZXJlZCcsICdtYXJnaW4nLCAnbW9kYWxUaXRsZScsICdvcGVuJywgJ3BhZGRpbmcnLCAnc2hvd0Nsb3NlQnV0dG9uJywgJ3NpemUnLCAnd2lkdGgnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhTW9kYWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xvc2UnLCAnY2xvc2UnLCAndmVnYU9wZW4nLCAnbW9kYWxPcGVuJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FOYXZDYXJkIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhTmF2Q2FyZCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ21heEhlaWdodCcsICdzb3VyY2UnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtbmF2LWNhcmQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ21heEhlaWdodCcsICdzb3VyY2UnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhTmF2Q2FyZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FQYWdlTm90aWZpY2F0aW9uIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUGFnZU5vdGlmaWNhdGlvbiB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FjdGlvbkJ1dHRvbnMnLCAnZHVyYXRpb24nLCAnbWVzc2FnZScsICdub3RpZmljYXRpb25UaXRsZScsICdzaG93Q2xvc2VCdXR0b24nLCAndHlwZSddLFxuICBtZXRob2RzOiBbJ2Nsb3NlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXBhZ2Utbm90aWZpY2F0aW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhY3Rpb25CdXR0b25zJywgJ2R1cmF0aW9uJywgJ21lc3NhZ2UnLCAnbm90aWZpY2F0aW9uVGl0bGUnLCAnc2hvd0Nsb3NlQnV0dG9uJywgJ3R5cGUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUGFnZU5vdGlmaWNhdGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FQYWdlTm90aWZpY2F0aW9uTGlzdCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVBhZ2VOb3RpZmljYXRpb25MaXN0IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1wYWdlLW5vdGlmaWNhdGlvbi1saXN0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYVBhZ2VOb3RpZmljYXRpb25MaXN0IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVBhZ2luYXRpb24gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FQYWdpbmF0aW9uIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjdXJyZW50IHBhZ2UgY2hhbmdlLiBAdmVnYVZlcnNpb24gMS4zLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxudW1iZXI+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjdXJyZW50IHBhZ2UgY2hhbmdlLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PG51bWJlcj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSBjaGFuZ2UgaW4gdGhlIG51bWJlciBvZlxuICAgZGF0YSBpdGVtcyBkaXNwbGF5ZWQgcGVyIHBhZ2UuIEB2ZWdhVmVyc2lvbiAxLjI1LjBcbiAgICovXG4gIHZlZ2FQYWdlU2l6ZUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PG51bWJlcj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSBjaGFuZ2UgaW4gdGhlIG51bWJlciBvZlxuICAgZGF0YSBpdGVtcyBkaXNwbGF5ZWQgcGVyIHBhZ2UuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgcGFnZVNpemVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxudW1iZXI+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2N1cnJlbnQnLCAnZHJvcGRvd25Qcm9wcycsICdleHRlbnNpb25zJywgJ2xheW91dCcsICdwYWdlU2l6ZScsICdwYWdlU2l6ZVNlbGVjdG9yT3B0aW9ucycsICd0b3RhbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1wYWdpbmF0aW9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjdXJyZW50JywgJ2Ryb3Bkb3duUHJvcHMnLCAnZXh0ZW5zaW9ucycsICdsYXlvdXQnLCAncGFnZVNpemUnLCAncGFnZVNpemVTZWxlY3Rvck9wdGlvbnMnLCAndG90YWwnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUGFnaW5hdGlvbiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FQYWdlU2l6ZUNoYW5nZScsICdwYWdlU2l6ZUNoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUGFnaW5hdGlvblBhZ2VTZWxlY3Rvck1vYmlsZSBleHRlbmRzIENvbXBvbmVudHMuVmVnYVBhZ2luYXRpb25QYWdlU2VsZWN0b3JNb2JpbGUge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjdXJyZW50JywgJ3BhZ2VDb3VudCcsICd0b3RhbCcsICd0eXBlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXBhZ2luYXRpb24tcGFnZS1zZWxlY3Rvci1tb2JpbGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2N1cnJlbnQnLCAncGFnZUNvdW50JywgJ3RvdGFsJywgJ3R5cGUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUGFnaW5hdGlvblBhZ2VTZWxlY3Rvck1vYmlsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FQYWdpbmF0aW9uUGFnZVNpemVTZWxlY3Rvck1vYmlsZSBleHRlbmRzIENvbXBvbmVudHMuVmVnYVBhZ2luYXRpb25QYWdlU2l6ZVNlbGVjdG9yTW9iaWxlIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY3VycmVudCcsICdkcm9wZG93blByb3BzJywgJ3BhZ2VTaXplJywgJ3BhZ2VTaXplU2VsZWN0b3JPcHRpb25zJywgJ3RvdGFsJywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcGFnaW5hdGlvbi1wYWdlLXNpemUtc2VsZWN0b3ItbW9iaWxlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjdXJyZW50JywgJ2Ryb3Bkb3duUHJvcHMnLCAncGFnZVNpemUnLCAncGFnZVNpemVTZWxlY3Rvck9wdGlvbnMnLCAndG90YWwnLCAndHlwZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FQYWdpbmF0aW9uUGFnZVNpemVTZWxlY3Rvck1vYmlsZSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FQaWVDaGFydCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVBpZUNoYXJ0IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnb3B0aW9ucyddLFxuICBtZXRob2RzOiBbJ3JlUmVuZGVyJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXBpZS1jaGFydCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnb3B0aW9ucyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FQaWVDaGFydCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FQb3BvdmVyIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUG9wb3ZlciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgcG9wb3ZlciBzaG93IGV2ZW50LiBAdmVnYVZlcnNpb24gMS4yMi4wXG4gICAqL1xuICB2ZWdhUG9wb3ZlclNob3c6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBwb3BvdmVyIHNob3cgZXZlbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgcG9wb3ZlclNob3c6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBwb3BvdmVyIGhpZGUgZXZlbnQuIEB2ZWdhVmVyc2lvbiAxLjIyLjBcbiAgICovXG4gIHZlZ2FQb3BvdmVySGlkZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIHBvcG92ZXIgaGlkZSBldmVudC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBwb3BvdmVySGlkZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWxpZ25tZW50JywgJ2lzU2NyZWVuUG9zaXRpb24nLCAncGFkZGluZycsICdwbGFjZW1lbnQnLCAncG9zaXRpb25SZWxhdGl2ZVRvJywgJ3Nob3dBcnJvdycsICdzaXplJywgJ3RyaWdnZXInXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2hpZGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcG9wb3ZlcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYWxpZ25tZW50JywgJ2lzU2NyZWVuUG9zaXRpb24nLCAncGFkZGluZycsICdwbGFjZW1lbnQnLCAncG9zaXRpb25SZWxhdGl2ZVRvJywgJ3Nob3dBcnJvdycsICdzaXplJywgJ3RyaWdnZXInXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUG9wb3ZlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FQb3BvdmVyU2hvdycsICdwb3BvdmVyU2hvdycsICd2ZWdhUG9wb3ZlckhpZGUnLCAncG9wb3ZlckhpZGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVBvcG92ZXJDb250ZW50Qm94IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUG9wb3ZlckNvbnRlbnRCb3gge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydwYWRkaW5nJywgJ3Nob3dBcnJvdyddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1wb3BvdmVyLWNvbnRlbnQtYm94JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydwYWRkaW5nJywgJ3Nob3dBcnJvdyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FQb3BvdmVyQ29udGVudEJveCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FQcm9ncmVzc1RyYWNrZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FQcm9ncmVzc1RyYWNrZXIge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgY3VycmVudCBzdGVwIGhhcyBjaGFuZ2VkLiBAdmVnYVZlcnNpb24gMS41LjBcbiAgICovXG4gIHZlZ2FDdXJyZW50U3RlcFVwZGF0ZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgY3VycmVudCBzdGVwIGhhcyBjaGFuZ2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGN1cnJlbnRTdGVwVXBkYXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhbGxvd05vQ3VycmVudFN0ZXAnLCAnY2FuQ2xpY2tTdGVwJywgJ2NvbXBsZXRlZFN0ZXBBcnJheScsICdjb21wbGV0ZWRTdGVwcycsICdjdXJyZW50JywgJ2RpcmVjdGlvbicsICdzdGVwcyddLFxuICBtZXRob2RzOiBbJ25leHRTdGVwJywgJ3ByZXZTdGVwJywgJ3NldEN1cnJlbnQnLCAnZ2V0Q3VycmVudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1wcm9ncmVzcy10cmFja2VyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhbGxvd05vQ3VycmVudFN0ZXAnLCAnY2FuQ2xpY2tTdGVwJywgJ2NvbXBsZXRlZFN0ZXBBcnJheScsICdjb21wbGV0ZWRTdGVwcycsICdjdXJyZW50JywgJ2RpcmVjdGlvbicsICdzdGVwcyddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FQcm9ncmVzc1RyYWNrZXIge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ3VycmVudFN0ZXBVcGRhdGUnLCAnY3VycmVudFN0ZXBVcGRhdGUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVByb2dyZXNzVHJhY2tlclN0ZXAgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FQcm9ncmVzc1RyYWNrZXJTdGVwIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY2xpY2thYmxlJywgJ3N0ZXBLZXknXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcHJvZ3Jlc3MtdHJhY2tlci1zdGVwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjbGlja2FibGUnLCAnc3RlcEtleSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FQcm9ncmVzc1RyYWNrZXJTdGVwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVJhZGlvIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUmFkaW8ge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGZvY3VzIGV2ZW50IG9mIHRoZSByYWRpbyBpbnB1dC4gQHZlZ2FWZXJzaW9uIDEuMC43XG4gICAqL1xuICB2ZWdhRm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBmb2N1cyBldmVudCBvZiB0aGUgcmFkaW8gaW5wdXQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgZm9jdXM6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBibHVyIGV2ZW50IG9mIHRoZSByYWRpbyBpbnB1dC4gQHZlZ2FWZXJzaW9uIDEuMC43XG4gICAqL1xuICB2ZWdhQmx1cjogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGJsdXIgZXZlbnQgb2YgdGhlIHJhZGlvIGlucHV0LiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2UgaW4gdGhlIGNoZWNrIHN0YXR1c1xuICAgb2YgdGhlIHJhZGlvIGlucHV0LiBAdmVnYVZlcnNpb24gMS4wLjEwXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNoYW5nZSBpbiB0aGUgY2hlY2sgc3RhdHVzXG4gICBvZiB0aGUgcmFkaW8gaW5wdXQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY2hlY2tlZCcsICdkaXNhYmxlZCcsICduYW1lJywgJ3NpemUnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmFkaW8nLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NoZWNrZWQnLCAnZGlzYWJsZWQnLCAnbmFtZScsICdzaXplJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVJhZGlvIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUZvY3VzJywgJ2ZvY3VzJywgJ3ZlZ2FCbHVyJywgJ2JsdXInLCAndmVnYUNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVJhZGlvR3JvdXAgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FSYWRpb0dyb3VwIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2Ugb2YgdGhlXG4gICBjaGVja2VkIHJhZGlvIGJ1dHRvbiBpbiB0aGUgcmFkaW8gZ3JvdXAuIEB2ZWdhVmVyc2lvbiAxLjAuMTBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjaGFuZ2Ugb2YgdGhlXG4gICBjaGVja2VkIHJhZGlvIGJ1dHRvbiBpbiB0aGUgcmFkaW8gZ3JvdXAuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmVnYUZsZXhQcm9wJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXJhZGlvLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmVnYUZsZXhQcm9wJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVJhZGlvR3JvdXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUmljaFRleHRDb250ZW50IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUmljaFRleHRDb250ZW50IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY29udGVudCcsICdleHRlbnNpb25zJ10sXG4gIG1ldGhvZHM6IFsndmVnYUZvY3VzJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXJpY2gtdGV4dC1jb250ZW50JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydjb250ZW50JywgJ2V4dGVuc2lvbnMnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUmljaFRleHRDb250ZW50IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhUlRFQ29udGVudCBhcyBJVmVnYVJpY2hUZXh0RWRpdG9yVmVnYVJURUNvbnRlbnQgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS1yaWNoLXRleHQtZWRpdG9yL2R0by9jb250ZW50LXN0YXRlJztcbmltcG9ydCB0eXBlIHsgVmVnYVJpY2hUZXh0RWRpdG9ySW1hZ2UgYXMgSVZlZ2FSaWNoVGV4dEVkaXRvclZlZ2FSaWNoVGV4dEVkaXRvckltYWdlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtcmljaC10ZXh0LWVkaXRvci9pbnRlcmZhY2UnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FSaWNoVGV4dEVkaXRvciBleHRlbmRzIENvbXBvbmVudHMuVmVnYVJpY2hUZXh0RWRpdG9yIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgdmFsdWUgY2hhbmdlLiBAdmVnYVZlcnNpb24gMi4zNC4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FSaWNoVGV4dEVkaXRvclZlZ2FSVEVDb250ZW50Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIHZhbHVlIGNoYW5nZS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMzQuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FSaWNoVGV4dEVkaXRvclZlZ2FSVEVDb250ZW50Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhbiBpbWFnZSBpbnNlcnRpb24gZXZlbnQuIEB2ZWdhVmVyc2lvbiAyLjM0LjBcbiAgICovXG4gIHZlZ2FJbWFnZUluc2VydGVkOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FSaWNoVGV4dEVkaXRvclZlZ2FSaWNoVGV4dEVkaXRvckltYWdlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhbiBpbWFnZSBpbnNlcnRpb24gZXZlbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjM0LjBcbiAgICovXG4gIGltYWdlSW5zZXJ0ZWQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVJpY2hUZXh0RWRpdG9yVmVnYVJpY2hUZXh0RWRpdG9ySW1hZ2U+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgc291cmNlIGNvZGUgY2hhbmdlIGV2ZW50LiBJdCB0cmlnZ2VycyB3aGVuIHRoZSBlZGl0b3IgbG9zZXMgZm9jdXMgaW4gc291cmNlIGVkaXQgbW9kZS4gQHZlZ2FWZXJzaW9uIDIuNzguMFxuICAgKi9cbiAgdmVnYVNvdXJjZUNvZGVDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGEgc291cmNlIGNvZGUgY2hhbmdlIGV2ZW50LiBJdCB0cmlnZ2VycyB3aGVuIHRoZSBlZGl0b3IgbG9zZXMgZm9jdXMgaW4gc291cmNlIGVkaXQgbW9kZS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuNzguMFxuICAgKi9cbiAgc291cmNlQ29kZUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYWxsb3dTb3VyY2VFZGl0JywgJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2V4dGVuc2lvbnMnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncmVxdWlyZWQnLCAncm93cycsICdzb3VyY2VFZGl0Q29uZmlnJywgJ3RleHRTdHlsZUl0ZW1zJywgJ3Rvb2xiYXJJdGVtcycsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmljaC10ZXh0LWVkaXRvcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYWxsb3dTb3VyY2VFZGl0JywgJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2V4dGVuc2lvbnMnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncmVxdWlyZWQnLCAncm93cycsICdzb3VyY2VFZGl0Q29uZmlnJywgJ3RleHRTdHlsZUl0ZW1zJywgJ3Rvb2xiYXJJdGVtcycsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUmljaFRleHRFZGl0b3Ige1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZScsICd2ZWdhSW1hZ2VJbnNlcnRlZCcsICdpbWFnZUluc2VydGVkJywgJ3ZlZ2FTb3VyY2VDb2RlQ2hhbmdlJywgJ3NvdXJjZUNvZGVDaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVJpY2hUZXh0RWRpdG9yVG9vbGJhckJ1dHRvbiBleHRlbmRzIENvbXBvbmVudHMuVmVnYVJpY2hUZXh0RWRpdG9yVG9vbGJhckJ1dHRvbiB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGJ1dHRvbi4gQHZlZ2FWZXJzaW9uIDIuMzQuMFxuICAgKi9cbiAgdmVnYUNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8YW55Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY2xpY2sgZXZlbnQgb2YgdGhlIGJ1dHRvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMzQuMFxuICAgKi9cbiAgY2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2Fycm93SWNvbicsICdkaXNhYmxlZCcsICdoaWRkZW4nLCAnaWNvbicsICdpY29uQ29sb3InLCAnc2VsZWN0ZWQnLCAnc2hvd0Fycm93SWNvbiddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1yaWNoLXRleHQtZWRpdG9yLXRvb2xiYXItYnV0dG9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhcnJvd0ljb24nLCAnZGlzYWJsZWQnLCAnaGlkZGVuJywgJ2ljb24nLCAnaWNvbkNvbG9yJywgJ3NlbGVjdGVkJywgJ3Nob3dBcnJvd0ljb24nXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUmljaFRleHRFZGl0b3JUb29sYmFyQnV0dG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FSaWNoVGV4dEZpbmRSZXBsYWNlUGFuZWwgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FSaWNoVGV4dEZpbmRSZXBsYWNlUGFuZWwge1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGEgcGFuZWwgaW5wdXQgdmFsdWUgY2hhbmdlcy5cblBheWxvYWQgaW5jbHVkZXMgdGhlIGlucHV0IHR5cGUgKGBrZXl3b3JkYCBvciBgcmVwbGFjZWApIGFuZCB2YWx1ZS4gQHZlZ2FWZXJzaW9uIDIuOTIuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgdHlwZTogJ2tleXdvcmQnIHwgJ3JlcGxhY2UnOyB2YWx1ZTogc3RyaW5nIH0+PjtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBhIHBhbmVsIGFjdGlvbiBidXR0b24gaXMgY2xpY2tlZC5cblBheWxvYWQgaW5jbHVkZXMgdGhlIGFjdGlvbiBrZXkgYW5kIG9wdGlvbmFsIGRhdGEuIEB2ZWdhVmVyc2lvbiAyLjkyLjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHsgYWN0aW9uOiBzdHJpbmc7IGRhdGE/OiB1bmtub3duIH0+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgbWV0aG9kczogWyd1cGRhdGVSZXN1bHQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmljaC10ZXh0LWZpbmQtcmVwbGFjZS1wYW5lbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FSaWNoVGV4dEZpbmRSZXBsYWNlUGFuZWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ3ZlZ2FDbGljayddKTtcbiAgfVxufVxuXG5pbXBvcnQgdHlwZSB7IFZlZ2FSaWNoVGV4dEltYWdlRWRpdG9yQ2hhbmdlRGV0YWlsIGFzIElWZWdhUmljaFRleHRJbWFnZUVkaXRvclZlZ2FSaWNoVGV4dEltYWdlRWRpdG9yQ2hhbmdlRGV0YWlsIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtcmljaC10ZXh0LWVkaXRvci92ZWdhLXJpY2gtdGV4dC1pbWFnZS1lZGl0b3IvdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FSaWNoVGV4dEltYWdlRWRpdG9yIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUmljaFRleHRJbWFnZUVkaXRvciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjb250ZW50IGNoYW5nZS4gQHZlZ2FWZXJzaW9uIDIuMzQuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhUmljaFRleHRJbWFnZUVkaXRvclZlZ2FSaWNoVGV4dEltYWdlRWRpdG9yQ2hhbmdlRGV0YWlsPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjb250ZW50IGNoYW5nZS4gQHZlZ2FWZXJzaW9uIDIuMzQuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FSaWNoVGV4dEltYWdlRWRpdG9yVmVnYVJpY2hUZXh0SW1hZ2VFZGl0b3JDaGFuZ2VEZXRhaWw+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2FsdCcsICdzaXplJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXJpY2gtdGV4dC1pbWFnZS1lZGl0b3InLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2FsdCcsICdzaXplJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVJpY2hUZXh0SW1hZ2VFZGl0b3Ige1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5pbXBvcnQgdHlwZSB7IFZlZ2FSaWNoVGV4dExpbmtFZGl0b3JDaGFuZ2VEZXRhaWwgYXMgSVZlZ2FSaWNoVGV4dExpbmtFZGl0b3JWZWdhUmljaFRleHRMaW5rRWRpdG9yQ2hhbmdlRGV0YWlsIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtcmljaC10ZXh0LWVkaXRvci92ZWdhLXJpY2gtdGV4dC1saW5rLWVkaXRvci90eXBlcyc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVJpY2hUZXh0TGlua0VkaXRvciBleHRlbmRzIENvbXBvbmVudHMuVmVnYVJpY2hUZXh0TGlua0VkaXRvciB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjb250ZW50IGNoYW5nZS4gQHZlZ2FWZXJzaW9uIDIuMzQuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhUmljaFRleHRMaW5rRWRpdG9yVmVnYVJpY2hUZXh0TGlua0VkaXRvckNoYW5nZURldGFpbD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY29udGVudCBjaGFuZ2UuIEB2ZWdhVmVyc2lvbiAyLjM0LjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhUmljaFRleHRMaW5rRWRpdG9yVmVnYVJpY2hUZXh0TGlua0VkaXRvckNoYW5nZURldGFpbD4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsncmVjb3JkJywgJ3Jlc2V0U3RhdHVzQWZ0ZXJIaWRlJywgJ3N0YXR1cycsICd0YXJnZXQnXSxcbiAgbWV0aG9kczogWydzaG93JywgJ2hpZGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmljaC10ZXh0LWxpbmstZWRpdG9yJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydyZWNvcmQnLCAncmVzZXRTdGF0dXNBZnRlckhpZGUnLCAnc3RhdHVzJywgJ3RhcmdldCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FSaWNoVGV4dExpbmtFZGl0b3Ige1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUmljaFRleHRTcGVjaWFsQ2hhcmFjdGVyc1BhbmVsIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUmljaFRleHRTcGVjaWFsQ2hhcmFjdGVyc1BhbmVsIHtcbiAgLyoqXG4gICAqIEVtaXR0ZWQgd2hlbiBhIGNoYXJhY3RlciBjZWxsIGlzIGNsaWNrZWQuIFRoZSBwYXlsb2FkIGlzIHRoZSBVbmljb2RlIGNoYXJhY3RlciBzdHJpbmcuIEB2ZWdhVmVyc2lvbiAyLjg4LjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogRW1pdHRlZCB3aGVuIGEgY2hhcmFjdGVyIGNlbGwgaXMgY2xpY2tlZC4gVGhlIHBheWxvYWQgaXMgdGhlIFVuaWNvZGUgY2hhcmFjdGVyIHN0cmluZy4gQHZlZ2FWZXJzaW9uIDIuODguMFxuICAgKi9cbiAgY2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2NhdGVnb3JpZXMnXSxcbiAgbWV0aG9kczogWydyZXNldFBhbmVsJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXJpY2gtdGV4dC1zcGVjaWFsLWNoYXJhY3RlcnMtcGFuZWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NhdGVnb3JpZXMnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUmljaFRleHRTcGVjaWFsQ2hhcmFjdGVyc1BhbmVsIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJ10pO1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgUlRFVGFibGVQcm9wZXJ0aWVzVHlwZSBhcyBJVmVnYVJpY2hUZXh0VGFibGVQcm9wZXJ0aWVzUlRFVGFibGVQcm9wZXJ0aWVzVHlwZSB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLXJpY2gtdGV4dC1lZGl0b3IvaW50ZXJmYWNlJztcbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUmljaFRleHRUYWJsZVByb3BlcnRpZXMgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FSaWNoVGV4dFRhYmxlUHJvcGVydGllcyB7XG4gIC8qKlxuICAgKiAgQHZlZ2FWZXJzaW9uIDIuNzkuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhUmljaFRleHRUYWJsZVByb3BlcnRpZXNSVEVUYWJsZVByb3BlcnRpZXNUeXBlPj47XG4gIC8qKlxuICAgKiAgQHZlZ2FWZXJzaW9uIDIuNzkuMFxuICAgKi9cbiAgdmVnYUNhbmNlbDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhUmljaFRleHRUYWJsZVByb3BlcnRpZXNSVEVUYWJsZVByb3BlcnRpZXNUeXBlPj47XG4gIC8qKlxuICAgKiAgQHZlZ2FWZXJzaW9uIDIuNzkuMFxuICAgKi9cbiAgdmVnYVNhdmU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmtub3duPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydjb2xvcnMnLCAnZGVmYXVsdFZhbHVlJywgJ3N0eWxlTWFwJywgJ3R5cGUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmljaC10ZXh0LXRhYmxlLXByb3BlcnRpZXMnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NvbG9ycycsICdkZWZhdWx0VmFsdWUnLCAnc3R5bGVNYXAnLCAndHlwZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FSaWNoVGV4dFRhYmxlUHJvcGVydGllcyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAndmVnYUNhbmNlbCcsICd2ZWdhU2F2ZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhUmljaFRleHRUYWJsZVNlbGVjdGlvbldpZGdldCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVJpY2hUZXh0VGFibGVTZWxlY3Rpb25XaWRnZXQge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSBkZWxldGUgYWN0aW9uIG9uIHRoZSB3aWRnZXQuIEB2ZWdhVmVyc2lvbiAyLjc5LjBcbiAgICovXG4gIHZlZ2FSZW1vdmU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZFxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmljaC10ZXh0LXRhYmxlLXNlbGVjdGlvbi13aWRnZXQnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+J1xufSlcbmV4cG9ydCBjbGFzcyBWZWdhUmljaFRleHRUYWJsZVNlbGVjdGlvbldpZGdldCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FSZW1vdmUnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVJpY2hUZXh0VGFibGVTZXR0aW5nIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhUmljaFRleHRUYWJsZVNldHRpbmcge1xuICAvKipcbiAgICogIEB2ZWdhVmVyc2lvbiAyLjc5LjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PEFycmF5PHN0cmluZz4+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2hhc0NhcHRpb24nLCAnc2VsZWN0ZWRDZWxscycsICd0YXJnZXQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtcmljaC10ZXh0LXRhYmxlLXNldHRpbmcnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2hhc0NhcHRpb24nLCAnc2VsZWN0ZWRDZWxscycsICd0YXJnZXQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhUmljaFRleHRUYWJsZVNldHRpbmcge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVNlY3Rpb25UaXRsZSBleHRlbmRzIENvbXBvbmVudHMuVmVnYVNlY3Rpb25UaXRsZSB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2Rlc2NyaXB0aW9uJywgJ2ljb24nLCAnaWNvbkFsaWduJywgJ2ljb25Db2xvcicsICdzaXplJywgJ3RpdGxlVGV4dCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zZWN0aW9uLXRpdGxlJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydkZXNjcmlwdGlvbicsICdpY29uJywgJ2ljb25BbGlnbicsICdpY29uQ29sb3InLCAnc2l6ZScsICd0aXRsZVRleHQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhU2VjdGlvblRpdGxlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVNlZ21lbnRDb250cm9sIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhU2VnbWVudENvbnRyb2wge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlc1xuICAgaW4gdGhlIHNlbGVjdGVkIHNlZ21lbnQuIEB2ZWdhVmVyc2lvbiAyLjMuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogQSBuYXRpdmUgZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlc1xuICAgaW4gdGhlIHNlbGVjdGVkIHNlZ21lbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjMuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydibG9jaycsICdzZWdtZW50cycsICdzZWxlY3RlZCcsICdzaXplJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2Etc2VnbWVudC1jb250cm9sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydibG9jaycsICdzZWdtZW50cycsICdzZWxlY3RlZCcsICdzaXplJywgJ3ZhcmlhbnQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhU2VnbWVudENvbnRyb2wge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhU2VsZWN0aW9uQ2hpcCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVNlbGVjdGlvbkNoaXAge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIHNlbGVjdGlvbiBjaGlwLFxuICAgd2hldGhlciB0cmlnZ2VyZWQgcHJvZ3JhbW1hdGljYWxseSBvciB0aHJvdWdoIHVzZXIgaW50ZXJhY3Rpb24uIEB2ZWdhVmVyc2lvbiAyLjIyLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBzZWxlY3Rpb24gY2hpcCxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yMi4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2Jsb2NrJywgJ2NoZWNrZWQnLCAnZGlzYWJsZWQnLCAnZGlzYWJsZWRUb29sdGlwJywgJ2xhYmVsJywgJ3NpemUnLCAnc3dhdGNoQ29sb3InLCAndmFsdWUnLCAndmFyaWFudCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zZWxlY3Rpb24tY2hpcCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYmxvY2snLCAnY2hlY2tlZCcsICdkaXNhYmxlZCcsICdkaXNhYmxlZFRvb2x0aXAnLCAnbGFiZWwnLCAnc2l6ZScsICdzd2F0Y2hDb2xvcicsICd2YWx1ZScsICd2YXJpYW50J11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVNlbGVjdGlvbkNoaXAge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhU2VsZWN0aW9uQ2hpcEdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhU2VsZWN0aW9uQ2hpcEdyb3VwIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBzZWxlY3Rpb24gY2hpcCBncm91cCxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMi4yMi4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZSBvZiB0aGUgc2VsZWN0aW9uIGNoaXAgZ3JvdXAsXG4gICB3aGV0aGVyIHRyaWdnZXJlZCBwcm9ncmFtbWF0aWNhbGx5IG9yIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMjIuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICdzZWxlY3RUeXBlJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zZWxlY3Rpb24tY2hpcC1ncm91cCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAnc2VsZWN0VHlwZScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhU2VsZWN0aW9uQ2hpcEdyb3VwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVNlbGVjdGlvblRpbGUgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FTZWxlY3Rpb25UaWxlIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBzZWxlY3Rpb24gdGlsZSxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMi43LjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBzZWxlY3Rpb24gdGlsZSxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi43LjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY2hlY2tlZCcsICdkaXNhYmxlZCcsICdub3RlJywgJ3ByZWZpeEljb24nLCAnc2VsZWN0VHlwZScsICd0aXRsZVRleHQnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2Etc2VsZWN0aW9uLXRpbGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NoZWNrZWQnLCAnZGlzYWJsZWQnLCAnbm90ZScsICdwcmVmaXhJY29uJywgJ3NlbGVjdFR5cGUnLCAndGl0bGVUZXh0JywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVNlbGVjdGlvblRpbGUge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhU2VsZWN0aW9uVGlsZUdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhU2VsZWN0aW9uVGlsZUdyb3VwIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBzZWxlY3Rpb24gdGlsZSBncm91cCxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAdmVnYVZlcnNpb24gMi43LjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBzZWxlY3Rpb24gdGlsZSBncm91cCxcbiAgIHdoZXRoZXIgdHJpZ2dlcmVkIHByb2dyYW1tYXRpY2FsbHkgb3IgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi43LjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnZGlzYWJsZWQnLCAnZGlzdHJpYnV0ZUV2ZW5seScsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbGF5b3V0JywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncmVxdWlyZWQnLCAnc2VsZWN0VHlwZScsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2Etc2VsZWN0aW9uLXRpbGUtZ3JvdXAnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2Rpc2FibGVkJywgJ2Rpc3RyaWJ1dGVFdmVubHknLCAnaGludCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ2xheW91dCcsICduYW1lJywgJ29wdGlvbmFsJywgJ3JlcXVpcmVkJywgJ3NlbGVjdFR5cGUnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVNlbGVjdGlvblRpbGVHcm91cCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FTaWRlbmF2IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhU2lkZW5hdiB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY29tcGxldGlvbiBvZiBhIG5hdmlnYXRpb24gbWVudSBzdGF0ZSBjaGFuZ2UgKG9wZW4gb3IgY2xvc2UpLiBAdmVnYVZlcnNpb24gMSwgdjIuMjkuMFxuICAgKi9cbiAgdmVnYVN0YXRlVXBkYXRlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgY29tcGxldGlvbiBvZiBhIG5hdmlnYXRpb24gbWVudSBzdGF0ZSBjaGFuZ2UgKG9wZW4gb3IgY2xvc2UpLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMSwgdjIuMjkuMFxuICAgKi9cbiAgc3RhdGVVcGRhdGU6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2Zvb3Rub3RlJywgJ2hlYWRlckNvbmZpZycsICdvcGVuQnlEZWZhdWx0JywgJ3NvdXJjZSddLFxuICBtZXRob2RzOiBbJ3RvZ2dsZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zaWRlbmF2JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydmb290bm90ZScsICdoZWFkZXJDb25maWcnLCAnb3BlbkJ5RGVmYXVsdCcsICdzb3VyY2UnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhU2lkZW5hdiB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FTdGF0ZVVwZGF0ZScsICdzdGF0ZVVwZGF0ZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhU2lkZW5hdkdyb3VwIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhU2lkZW5hdkdyb3VwIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnaWNvbicsICdsYWJlbCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zaWRlbmF2LWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydpY29uJywgJ2xhYmVsJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVNpZGVuYXZHcm91cCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FTaWRlbmF2TGluayBleHRlbmRzIENvbXBvbmVudHMuVmVnYVNpZGVuYXZMaW5rIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGFib3V0IHRoZSBvY2N1cnJlbmNlIG9mIGEgY2xpY2sgZXZlbnQuIEB2ZWdhVmVyc2lvbiAxLCB2Mi4yOS4wXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGFib3V0IHRoZSBvY2N1cnJlbmNlIG9mIGEgY2xpY2sgZXZlbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAxLCB2Mi4yOS4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PGFueT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnaWNvbicsICdzZWxlY3RlZCcsICdzaG93U2lkZUJhck9uQ2xpY2tMaW5rJywgJ3VybCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zaWRlbmF2LWxpbmsnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2ljb24nLCAnc2VsZWN0ZWQnLCAnc2hvd1NpZGVCYXJPbkNsaWNrTGluaycsICd1cmwnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhU2lkZW5hdkxpbmsge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2xpY2snLCAnY2xpY2snXSk7XG4gIH1cbn1cblxuaW1wb3J0IHR5cGUgeyBWZWdhU2lnbmF0dXJlVmFsdWUgYXMgSVZlZ2FTaWduYXR1cmVDYXB0dXJlVmVnYVNpZ25hdHVyZVZhbHVlIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2Etc2lnbmF0dXJlLWNhcHR1cmUvdHlwZXMnO1xuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FTaWduYXR1cmVDYXB0dXJlIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhU2lnbmF0dXJlQ2FwdHVyZSB7XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBhIHZhbHVlIGNoYW5nZS4gQHZlZ2FWZXJzaW9uIDIuMTkuMFxuICAgKi9cbiAgdmVnYUNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhU2lnbmF0dXJlQ2FwdHVyZVZlZ2FTaWduYXR1cmVWYWx1ZT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgYSB2YWx1ZSBjaGFuZ2UuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjE5LjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhU2lnbmF0dXJlQ2FwdHVyZVZlZ2FTaWduYXR1cmVWYWx1ZT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaGVpZ2h0JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbW9kZScsICduYW1lJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3BsYWNlaG9sZGVySWNvbicsICdyZXF1aXJlZCcsICdzaG93Q2xlYXJCdG4nLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ10sXG4gIG1ldGhvZHM6IFsnY2xlYXInXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2Etc2lnbmF0dXJlLWNhcHR1cmUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hlaWdodCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ21vZGUnLCAnbmFtZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdwbGFjZWhvbGRlckljb24nLCAncmVxdWlyZWQnLCAnc2hvd0NsZWFyQnRuJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FTaWduYXR1cmVDYXB0dXJlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnXSk7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVNrZWxldG9uIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhU2tlbGV0b24ge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhbmltYXRlZCcsICdjb3JuZXJzJywgJ2hlaWdodCcsICd0eXBlJywgJ3dpZHRoJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXNrZWxldG9uJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhbmltYXRlZCcsICdjb3JuZXJzJywgJ2hlaWdodCcsICd0eXBlJywgJ3dpZHRoJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVNrZWxldG9uIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVNsb3RDb250YWluZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FTbG90Q29udGFpbmVyIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS1zbG90LWNvbnRhaW5lcicsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FTbG90Q29udGFpbmVyIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVN0ZXBwZXIgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FTdGVwcGVyIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSBzdGVwcGVyIGNvbXBvbmVudC4gQHZlZ2FWZXJzaW9uIDEuMC44XG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8bnVtYmVyPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB2YWx1ZSBvZiB0aGUgc3RlcHBlciBjb21wb25lbnQuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgY2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8bnVtYmVyPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdidXR0b25WYXJpYW50JywgJ2Rpc2FibGVkJywgJ2lucHV0RGlzYWJsZWQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdtYXgnLCAnbWluJywgJ25hbWUnLCAnc3RlcHBlcklkJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXN0ZXBwZXInLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2J1dHRvblZhcmlhbnQnLCAnZGlzYWJsZWQnLCAnaW5wdXREaXNhYmxlZCcsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ21heCcsICdtaW4nLCAnbmFtZScsICdzdGVwcGVySWQnLCAndmFsdWUnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhU3RlcHBlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUYWJHcm91cCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVRhYkdyb3VwIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiBhIHRhYlxuICAgaW4gdGhlIHRhYiBncm91cC4gQHZlZ2FWZXJzaW9uIDEuMS4wXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiBhIHRhYlxuICAgaW4gdGhlIHRhYiBncm91cC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnZ2FwJywgJ292ZXJmbG93JywgJ3Bvc2l0aW9uUmVsYXRpdmVUbycsICdzZWxlY3RlZFRhYkRhdGFUYXJnZXQnLCAnc2hvd0Nsb3NlQnV0dG9uJywgJ3RhYkl0ZW1zJywgJ3ZhcmlhbnQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdGFiLWdyb3VwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydnYXAnLCAnb3ZlcmZsb3cnLCAncG9zaXRpb25SZWxhdGl2ZVRvJywgJ3NlbGVjdGVkVGFiRGF0YVRhcmdldCcsICdzaG93Q2xvc2VCdXR0b24nLCAndGFiSXRlbXMnLCAndmFyaWFudCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FUYWJHcm91cCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDbGljaycsICdjbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhVGFiR3JvdXBQYW5lbCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVRhYkdyb3VwUGFuZWwge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydpc0FjdGl2ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWItZ3JvdXAtcGFuZWwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2lzQWN0aXZlJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRhYkdyb3VwUGFuZWwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5pbXBvcnQgdHlwZSB7IFZlZ2FUYWJsZUNoYW5nZVByb3BUeXBlIGFzIElWZWdhVGFibGVWZWdhVGFibGVDaGFuZ2VQcm9wVHlwZSB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLXRhYmxlL2ludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IFZlZ2FUYWJsZVJvd0NsaWNrUHJvcFR5cGUgYXMgSVZlZ2FUYWJsZVZlZ2FUYWJsZVJvd0NsaWNrUHJvcFR5cGUgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS10YWJsZS9pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUgeyBWZWdhVGFibGVSb3dFeHBhbmRFdmVudERldGFpbCBhcyBJVmVnYVRhYmxlVmVnYVRhYmxlUm93RXhwYW5kRXZlbnREZXRhaWwgfSBmcm9tICdAZ2xvYmFscGF5bWVudHMvdmVnYS9kaXN0L3R5cGVzL2NvbXBvbmVudHMvdmVnYS10YWJsZS9pbnRlcmZhY2UnO1xuaW1wb3J0IHR5cGUgeyBWZWdhVGFibGVSb3dTZWxlY3RQcm9wIGFzIElWZWdhVGFibGVWZWdhVGFibGVSb3dTZWxlY3RQcm9wIH0gZnJvbSAnQGdsb2JhbHBheW1lbnRzL3ZlZ2EvZGlzdC90eXBlcy9jb21wb25lbnRzL3ZlZ2EtdGFibGUvaW50ZXJmYWNlJztcbmltcG9ydCB0eXBlIHsgVmVnYVRhYmxlU2VsZWN0QWxsUHJvcCBhcyBJVmVnYVRhYmxlVmVnYVRhYmxlU2VsZWN0QWxsUHJvcCB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLXRhYmxlL2ludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IFZlZ2FUYWJsZVJvd1NlbGVjdEV2ZW50RGV0YWlsIGFzIElWZWdhVGFibGVWZWdhVGFibGVSb3dTZWxlY3RFdmVudERldGFpbCB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLXRhYmxlL2ludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IFZlZ2FUYWJsZVJvd1NlbGVjdEFsbEV2ZW50RGV0YWlsIGFzIElWZWdhVGFibGVWZWdhVGFibGVSb3dTZWxlY3RBbGxFdmVudERldGFpbCB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLXRhYmxlL2ludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IERyYWdEcm9wRXZlbnRQYXlsb2FkIGFzIElWZWdhVGFibGVEcmFnRHJvcEV2ZW50UGF5bG9hZCB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLXRhYmxlL2ludGVyZmFjZSc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRhYmxlIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVGFibGUge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdGFibGUgZGF0YS4gQHZlZ2FWZXJzaW9uIDEuMy4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZVZlZ2FUYWJsZUNoYW5nZVByb3BUeXBlPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBjaGFuZ2VzIGluIHRoZSB0YWJsZSBkYXRhLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhVGFibGVWZWdhVGFibGVDaGFuZ2VQcm9wVHlwZT4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhlIGNsaWNrIGV2ZW50IG9mIGEgcm93XG4gICBpbiB0aGUgdGFibGUuIEB2ZWdhVmVyc2lvbiAxLjMuMFxuICAgKi9cbiAgdmVnYVJvd0NsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZVZlZ2FUYWJsZVJvd0NsaWNrUHJvcFR5cGU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBjbGljayBldmVudCBvZiBhIHJvd1xuICAgaW4gdGhlIHRhYmxlLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIHJvd0NsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZVZlZ2FUYWJsZVJvd0NsaWNrUHJvcFR5cGU+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoZSBleHBhbmRlZCBldmVudCBvZiBhIHJvd1xuICAgaW4gdGhlIHRhYmxlLiBAdmVnYVZlcnNpb24gMi4yNC4wXG4gICAqL1xuICB2ZWdhUm93RXhwYW5kOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZVZlZ2FUYWJsZVJvd0V4cGFuZEV2ZW50RGV0YWlsPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGUgZXhwYW5kZWQgZXZlbnQgb2YgYSByb3dcbiAgIGluIHRoZSB0YWJsZS4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMjQuMFxuICAgKi9cbiAgcm93RXhwYW5kOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZVZlZ2FUYWJsZVJvd0V4cGFuZEV2ZW50RGV0YWlsPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB3aGVuIHRoZSByb3cgc2VsZWN0aW9uIGNoYW5nZXMuIEB2ZWdhVmVyc2lvbiAxLjE4LjBcbiAgICovXG4gIHZlZ2FTZWxlY3RDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93U2VsZWN0UHJvcD4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgd2hlbiB0aGUgc2VsZWN0aW9uIHN0YXRlIG9mIGFsbCByb3dzIGNoYW5nZXMuIEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjAuMFxuICAgKi9cbiAgc2VsZWN0Q2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZVZlZ2FUYWJsZVJvd1NlbGVjdFByb3A+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHNlbGVjdGlvbiBvZiBjaGVja2JveGVzLFxuICAgcGFydGljdWxhcmx5IHRoZSBcIlNlbGVjdCBBbGxcIiBjaGVja2JveCBpbiB0aGUgdGFibGUgaGVhZGVyLiBAdmVnYVZlcnNpb24gMS4xOC4wXG4gICAqL1xuICB2ZWdhU2VsZWN0QWxsQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZVZlZ2FUYWJsZVNlbGVjdEFsbFByb3A+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHNlbGVjdGlvbiBvZiBjaGVja2JveGVzLFxuICAgcGFydGljdWxhcmx5IHRoZSBcIlNlbGVjdCBBbGxcIiBjaGVja2JveCBpbiB0aGUgdGFibGUgaGVhZGVyLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIHNlbGVjdEFsbENoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhVGFibGVWZWdhVGFibGVTZWxlY3RBbGxQcm9wPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBiZWZvcmUgdGhlIHNlbGVjdGVkIGNoYW5nZSB3aGVuIHNlbGVjdC9kZXNlbGVjdCBvbmUgcm93IEB2ZWdhVmVyc2lvbiAyLjIzLjBcbiAgICovXG4gIHZlZ2FSb3dTZWxlY3Q6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93U2VsZWN0RXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGJlZm9yZSB0aGUgc2VsZWN0ZWQgY2hhbmdlIHdoZW4gc2VsZWN0L2Rlc2VsZWN0IG9uZSByb3cgQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMjMuMFxuICAgKi9cbiAgcm93U2VsZWN0OiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZVZlZ2FUYWJsZVJvd1NlbGVjdEV2ZW50RGV0YWlsPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBiZWZvcmUgdGhlIHNlbGVjdGVkIGNoYW5nZSB3aGVuIHNlbGVjdC9kZXNlbGVjdCBhbGwgcm93cyBAdmVnYVZlcnNpb24gMi4yMy4wXG4gICAqL1xuICB2ZWdhUm93U2VsZWN0QWxsOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZVZlZ2FUYWJsZVJvd1NlbGVjdEFsbEV2ZW50RGV0YWlsPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyBiZWZvcmUgdGhlIHNlbGVjdGVkIGNoYW5nZSB3aGVuIHNlbGVjdC9kZXNlbGVjdCBhbGwgcm93cyBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yMy4wXG4gICAqL1xuICByb3dTZWxlY3RBbGw6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlVmVnYVRhYmxlUm93U2VsZWN0QWxsRXZlbnREZXRhaWw+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHdoZW4gYSByb3cgaXMgZHJhZyBhbmQgZHJvcCxcbiAgIGl0IGluY2x1ZGUgZnVsbCBsaWZlY3ljbGUsIGxpa2UgZHJhZyBzdGFydCwgZHJhZywgZHJhZyBlbnRlciwgZHJhZyBsZWF2ZSwgZHJhZyBvdmVyLCBkcm9wIGFuZCBkcmFnIGVuZC4gQHZlZ2FWZXJzaW9uIDIuODUuMFxuICAgKi9cbiAgdmVnYVJvd0RyYWdEcm9wOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZURyYWdEcm9wRXZlbnRQYXlsb2FkPj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB3aGVuIGEgcm93IGlzIGRyYWcgYW5kIGRyb3AsXG4gICAgaXQgaW5jbHVkZSBmdWxsIGxpZmVjeWNsZSwgbGlrZSBkcmFnIHN0YXJ0LCBkcmFnLCBkcmFnIGVudGVyLCBkcmFnIGxlYXZlLCBkcmFnIG92ZXIsIGRyb3AgYW5kIGRyYWcgZW5kLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi44NS4wXG4gICAqL1xuICByb3dEcmFnRHJvcDogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhVGFibGVEcmFnRHJvcEV2ZW50UGF5bG9hZD4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnY29sdW1uRGl2aWRlcicsICdjb2x1bW5zJywgJ2RhdGFTb3VyY2UnLCAnZGVuc2l0eScsICdlbXB0eURlc2NyaXB0aW9uJywgJ2dyb3VwQ29sdW1ucycsICdwYWRkaW5nWCcsICdwYWdpbmF0aW9uJywgJ3Jvd0NsaWNrYWJsZScsICdyb3dEaXZpZGVyJywgJ3Jvd0RyYWdnYWJsZScsICdyb3dFeHBhbmRhYmxlJywgJ3Jvd0tleScsICdyb3dTZWxlY3Rpb24nLCAnc2Nyb2xsQ29uZmlnJywgJ3Nob3dFZGl0RXJyb3InLCAnc2hvd0hlYWRlcicsICdzb3J0Q29uZmlnJywgJ3N0cmlwZWQnXSxcbiAgbWV0aG9kczogWydvcGVuRXhwYW5kUm93JywgJ2Nsb3NlRXhwYW5kUm93JywgJ2Nsb3NlQWxsRXhwYW5kUm93JywgJ3RvZ2dsZUV4cGFuZFJvdycsICdjbGVhclNlbGVjdGlvbicsICdnZXRTZWxlY3Rpb24nLCAnc2V0U2VsZWN0aW9uJywgJ3N0YXJ0Um93RWRpdE1vZGUnLCAnc3RvcFJvd0VkaXRNb2RlJywgJ3N0b3BBbGxSb3dFZGl0TW9kZScsICdnZXRSb3dEYXRhJywgJ2dldFJvd3NEYXRhJywgJ2dldEZvcm1SZWYnLCAnYWRkTmV3Um93JywgJ3NhdmVFZGl0Um93JywgJ3NhdmVBbGxFZGl0Um93cycsICdnZXRFZGl0aW5nUm93c0tleScsICdyZW1vdmVSb3cnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdGFibGUnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2NvbHVtbkRpdmlkZXInLCAnY29sdW1ucycsICdkYXRhU291cmNlJywgJ2RlbnNpdHknLCAnZW1wdHlEZXNjcmlwdGlvbicsICdncm91cENvbHVtbnMnLCAncGFkZGluZ1gnLCAncGFnaW5hdGlvbicsICdyb3dDbGlja2FibGUnLCAncm93RGl2aWRlcicsICdyb3dEcmFnZ2FibGUnLCAncm93RXhwYW5kYWJsZScsICdyb3dLZXknLCAncm93U2VsZWN0aW9uJywgJ3Njcm9sbENvbmZpZycsICdzaG93RWRpdEVycm9yJywgJ3Nob3dIZWFkZXInLCAnc29ydENvbmZpZycsICdzdHJpcGVkJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRhYmxlIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNoYW5nZScsICdjaGFuZ2UnLCAndmVnYVJvd0NsaWNrJywgJ3Jvd0NsaWNrJywgJ3ZlZ2FSb3dFeHBhbmQnLCAncm93RXhwYW5kJywgJ3ZlZ2FTZWxlY3RDaGFuZ2UnLCAnc2VsZWN0Q2hhbmdlJywgJ3ZlZ2FTZWxlY3RBbGxDaGFuZ2UnLCAnc2VsZWN0QWxsQ2hhbmdlJywgJ3ZlZ2FSb3dTZWxlY3QnLCAncm93U2VsZWN0JywgJ3ZlZ2FSb3dTZWxlY3RBbGwnLCAncm93U2VsZWN0QWxsJywgJ3ZlZ2FSb3dEcmFnRHJvcCcsICdyb3dEcmFnRHJvcCddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhVGFibGVCb2R5IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVGFibGVCb2R5IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWJsZS1ib2R5JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRhYmxlQm9keSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUYWJsZUNlbGwgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZUNlbGwge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydicmVha3BvaW50JywgJ2NvbFNwYW4nLCAnZWxsaXBzaXNTaG93VG9vbHRpcCcsICdvdmVyZmxvdycsICd0ZXh0QWxpZ24nLCAnd2lkdGgnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdGFibGUtY2VsbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYnJlYWtwb2ludCcsICdjb2xTcGFuJywgJ2VsbGlwc2lzU2hvd1Rvb2x0aXAnLCAnb3ZlcmZsb3cnLCAndGV4dEFsaWduJywgJ3dpZHRoJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRhYmxlQ2VsbCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUYWJsZUV4cGFuZFJvdyBleHRlbmRzIENvbXBvbmVudHMuVmVnYVRhYmxlRXhwYW5kUm93IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsncm93S2V5JywgJ3N0cmlwZWQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdGFibGUtZXhwYW5kLXJvdycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsncm93S2V5JywgJ3N0cmlwZWQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGFibGVFeHBhbmRSb3cge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhVGFibGVGb290IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVGFibGVGb290IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWJsZS1mb290JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRhYmxlRm9vdCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUYWJsZUZvb3RDZWxsIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVGFibGVGb290Q2VsbCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2JyZWFrcG9pbnQnLCAnY29sU3BhbicsICd0ZXh0QWxpZ24nLCAnd2lkdGgnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdGFibGUtZm9vdC1jZWxsJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydicmVha3BvaW50JywgJ2NvbFNwYW4nLCAndGV4dEFsaWduJywgJ3dpZHRoJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRhYmxlRm9vdENlbGwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhVGFibGVGb290Um93IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVGFibGVGb290Um93IHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWJsZS1mb290LXJvdycsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FUYWJsZUZvb3RSb3cge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhVGFibGVIZWFkIGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVGFibGVIZWFkIHt9XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10YWJsZS1oZWFkJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRhYmxlSGVhZCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYVRhYmxlSGVhZENlbGxDbGlja0V2ZW50IGFzIElWZWdhVGFibGVIZWFkQ2VsbFZlZ2FUYWJsZUhlYWRDZWxsQ2xpY2tFdmVudCB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLXRhYmxlL2ludGVyZmFjZSc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRhYmxlSGVhZENlbGwgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZUhlYWRDZWxsIHtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIGhlYWQgY2VsbCBoYXMgYmVlbiBjbGlja2VkLiBAdmVnYVZlcnNpb24gMS40NC4wXG4gICAqL1xuICB2ZWdhQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlSGVhZENlbGxWZWdhVGFibGVIZWFkQ2VsbENsaWNrRXZlbnQ+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIHRoYXQgdGhlIGhlYWQgY2VsbCBoYXMgYmVlbiBjbGlja2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNsaWNrOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZUhlYWRDZWxsVmVnYVRhYmxlSGVhZENlbGxDbGlja0V2ZW50Pj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydicmVha3BvaW50JywgJ3Bpbm5lZCcsICdzb3J0Q29uZmlnJywgJ3NvcnRPcmRlcicsICdzb3J0ZXInLCAndGV4dEFsaWduJywgJ3dpZHRoJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRhYmxlLWhlYWQtY2VsbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICB0ZW1wbGF0ZTogJzxuZy1jb250ZW50PjwvbmctY29udGVudD4nLFxuICBpbnB1dHM6IFsnYnJlYWtwb2ludCcsICdwaW5uZWQnLCAnc29ydENvbmZpZycsICdzb3J0T3JkZXInLCAnc29ydGVyJywgJ3RleHRBbGlnbicsICd3aWR0aCddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FUYWJsZUhlYWRDZWxsIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUYWJsZUhlYWRSb3cgZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUYWJsZUhlYWRSb3cge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydoaWRlU2VsZWN0QWxsJywgJ3NlbGVjdEFsbERpc2FibGVkJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRhYmxlLWhlYWQtcm93JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydoaWRlU2VsZWN0QWxsJywgJ3NlbGVjdEFsbERpc2FibGVkJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRhYmxlSGVhZFJvdyB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cbmltcG9ydCB0eXBlIHsgVmVnYVRhYmxlUm93Q2xpY2tFdmVudCBhcyBJVmVnYVRhYmxlUm93VmVnYVRhYmxlUm93Q2xpY2tFdmVudCB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLXRhYmxlL2ludGVyZmFjZSc7XG5pbXBvcnQgdHlwZSB7IFZlZ2FUYWJsZVJvd0V4cGFuZEV2ZW50IGFzIElWZWdhVGFibGVSb3dWZWdhVGFibGVSb3dFeHBhbmRFdmVudCB9IGZyb20gJ0BnbG9iYWxwYXltZW50cy92ZWdhL2Rpc3QvdHlwZXMvY29tcG9uZW50cy92ZWdhLXRhYmxlL2ludGVyZmFjZSc7XG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRhYmxlUm93IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVGFibGVSb3cge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgdGhhdCB0aGUgcm93IGhhcyBiZWVuIGNsaWNrZWQuIEB2ZWdhVmVyc2lvbiAxLjQ0LjBcbiAgICovXG4gIHZlZ2FDbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhVGFibGVSb3dWZWdhVGFibGVSb3dDbGlja0V2ZW50Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSByb3cgaGFzIGJlZW4gY2xpY2tlZC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjbGljazogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PElWZWdhVGFibGVSb3dWZWdhVGFibGVSb3dDbGlja0V2ZW50Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBleHBhbmQgaWNvbiBoYXMgYmVlbiBjbGlja2VkLiBAdmVnYVZlcnNpb24gMi4yMC4wXG4gICAqL1xuICB2ZWdhRXhwYW5kOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8SVZlZ2FUYWJsZVJvd1ZlZ2FUYWJsZVJvd0V4cGFuZEV2ZW50Pj47XG4gIC8qKlxuICAgKiBBbiBldmVudCBlbWl0dGVyIG5vdGlmeWluZyB0aGF0IHRoZSBleHBhbmQgaWNvbiBoYXMgYmVlbiBjbGlja2VkLiBAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4yMC4wXG4gICAqL1xuICBleHBhbmQ6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxJVmVnYVRhYmxlUm93VmVnYVRhYmxlUm93RXhwYW5kRXZlbnQ+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ3Jvd0RpdmlkZXInLCAncm93S2V5JywgJ3N0cmlwZWQnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdGFibGUtcm93JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydyb3dEaXZpZGVyJywgJ3Jvd0tleScsICdzdHJpcGVkJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRhYmxlUm93IHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gICAgcHJveHlPdXRwdXRzKHRoaXMsIHRoaXMuZWwsIFsndmVnYUNsaWNrJywgJ2NsaWNrJywgJ3ZlZ2FFeHBhbmQnLCAnZXhwYW5kJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUZXh0IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVGV4dCB7fVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ292ZXJmbG93JywgJ3RleHQnLCAndG9vbHRpcCddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10ZXh0JyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydvdmVyZmxvdycsICd0ZXh0JywgJ3Rvb2x0aXAnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGV4dCB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUZXh0YXJlYSBleHRlbmRzIENvbXBvbmVudHMuVmVnYVRleHRhcmVhIHtcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW5ldmVyIHRoZSB0ZXh0IGFyZWEgdmFsdWUgY2hhbmdlcywgd2hldGhlciBieSB1c2VyIGlucHV0IG9yXG5wcm9ncmFtbWF0aWMgdXBkYXRlIG9mIHRoZSBgdmFsdWVgIHByb3BlcnR5LiBUaGlzIGlzIHRoZSBwcmltYXJ5IGV2ZW50XG5mb3IgcmVhY3RpbmcgdG8gY29udGVudCBjaGFuZ2VzIGFuZCBpbXBsZW1lbnRpbmcgdHdvLXdheSBiaW5kaW5nLiBAZXZlbnREZXRhaWwgc3RyaW5nIOKAlCBUaGUgdXBkYXRlZCB0ZXh0IGFyZWEgdmFsdWUuLEB2ZWdhVmVyc2lvbiAxLjExLjBcbiAgICovXG4gIHZlZ2FDaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmc+PjtcbiAgLyoqXG4gICAqIE5hdGl2ZS1uYW1lc3BhY2UgbWlycm9yIG9mIGB2ZWdhQ2hhbmdlYC4gRmlyZWQgd2hlbmV2ZXIgdGhlIHRleHQgYXJlYVxudmFsdWUgY2hhbmdlcy4gUHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBzdGFuZGFyZCBET00gZXZlbnRcbmxpc3RlbmVycy4gQGV2ZW50RGV0YWlsIHN0cmluZyDigJQgVGhlIHVwZGF0ZWQgdGV4dCBhcmVhIHZhbHVlLixAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGNoYW5nZTogRXZlbnRFbWl0dGVyPEN1c3RvbUV2ZW50PHN0cmluZz4+O1xuICAvKipcbiAgICogRmlyZWQgd2hlbiB0aGUgaW5uZXIgYDx0ZXh0YXJlYT5gIGVsZW1lbnQgbG9zZXMgZm9jdXMgKGJsdXIpLiBVc2UgdGhpc1xuZXZlbnQgdG8gdHJpZ2dlciB2YWxpZGF0aW9uIG9yIHNhdmUgYWN0aW9ucyB3aGVuIHRoZSB1c2VyIGxlYXZlcyB0aGVcbnRleHQgYXJlYS4gQGV2ZW50RGV0YWlsIHVuZGVmaW5lZCDigJQgTm8gcGF5bG9hZDsgc2lnbmFscyB0aGUgYmx1ciBvY2N1cnJlbmNlIG9ubHkuLEB2ZWdhVmVyc2lvbiAxLjExLjBcbiAgICovXG4gIHZlZ2FCbHVyOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8dW5kZWZpbmVkPj47XG4gIC8qKlxuICAgKiBOYXRpdmUtbmFtZXNwYWNlIG1pcnJvciBvZiBgdmVnYUJsdXJgLiBGaXJlZCB3aGVuIHRoZSBpbm5lciBgPHRleHRhcmVhPmBcbmVsZW1lbnQgbG9zZXMgZm9jdXMuIFByb3ZpZGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggc3RhbmRhcmQgRE9NIGV2ZW50XG5saXN0ZW5lcnMuIEBldmVudERldGFpbCB1bmRlZmluZWQg4oCUIE5vIHBheWxvYWQ7IHNpZ25hbHMgdGhlIGJsdXIgb2NjdXJyZW5jZSBvbmx5LixAZXZlbnRTZW1hbnRpY3MgbmFtZXNwYWNlOm5hdGl2ZSxAdmVnYVZlcnNpb24gMi4wLjBcbiAgICovXG4gIGJsdXI6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDx1bmRlZmluZWQ+PjtcbiAgLyoqXG4gICAqIEZpcmVkIHdoZW4gdGhlIHN1ZmZpeCBidXR0b24gY29uZmlndXJlZCB2aWEgYGxhYmVsU3VmZml4QnV0dG9uQ29uZmlnYCBpc1xuY2xpY2tlZC4gTGlzdGVuIGZvciB0aGlzIGV2ZW50IHRvIGhhbmRsZSBpbmxpbmUgbGFiZWwgYWN0aW9ucyBzdWNoIGFzXG5vcGVuaW5nIGEgaGVscCBkaWFsb2cgb3IgdG9nZ2xpbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4gQGV2ZW50RGV0YWlsIHZvaWQsQHZlZ2FWZXJzaW9uIDIuNjguMFxuICAgKi9cbiAgdmVnYUxhYmVsQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcbiAgLyoqXG4gICAqIE5hdGl2ZS1uYW1lc3BhY2UgbWlycm9yIG9mIGB2ZWdhTGFiZWxCdXR0b25DbGlja2AuIEZpcmVkIHdoZW4gdGhlIGxhYmVsXG5zdWZmaXggYnV0dG9uIGlzIGNsaWNrZWQuIFByb3ZpZGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggc3RhbmRhcmQgRE9NXG5ldmVudCBsaXN0ZW5lcnMuIEBldmVudERldGFpbCB2b2lkLEBldmVudFNlbWFudGljcyBuYW1lc3BhY2U6bmF0aXZlLEB2ZWdhVmVyc2lvbiAyLjY4LjBcbiAgICovXG4gIGxhYmVsQnV0dG9uQ2xpY2s6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxhbnk+PjtcblxufVxuXG5AUHJveHlDbXAoe1xuICBkZWZpbmVDdXN0b21FbGVtZW50Rm46IHVuZGVmaW5lZCxcbiAgaW5wdXRzOiBbJ2F1dG9WYWxpZGF0aW9uJywgJ2Rpc2FibGVkJywgJ2hpbnQnLCAnaXNWYWxpZCcsICdsYWJlbCcsICdsYWJlbFN1ZmZpeEJ1dHRvbkNvbmZpZycsICdtYXhMZW5ndGgnLCAnbWluTGVuZ3RoJywgJ25hbWUnLCAnb3B0aW9uYWwnLCAncGxhY2Vob2xkZXInLCAncmVxdWlyZWQnLCAncmVzaXphYmxlJywgJ3Jvd3MnLCAnc2hvd0NvdW50ZXInLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRleHRhcmVhJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdoaW50JywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbGFiZWxTdWZmaXhCdXR0b25Db25maWcnLCAnbWF4TGVuZ3RoJywgJ21pbkxlbmd0aCcsICduYW1lJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3JlcXVpcmVkJywgJ3Jlc2l6YWJsZScsICdyb3dzJywgJ3Nob3dDb3VudGVyJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FUZXh0YXJlYSB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJywgJ3ZlZ2FCbHVyJywgJ2JsdXInLCAndmVnYUxhYmVsQnV0dG9uQ2xpY2snLCAnbGFiZWxCdXR0b25DbGljayddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhVGltZVBpY2tlciBleHRlbmRzIENvbXBvbmVudHMuVmVnYVRpbWVQaWNrZXIge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdmFsdWUgb2YgdGhlIHRpbWUgcGlja2VyLiBAdmVnYVZlcnNpb24gMS4xMi4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8c3RyaW5nIHwgc3RyaW5nW10+PjtcbiAgLyoqXG4gICAqIEFuIGV2ZW50IGVtaXR0ZXIgbm90aWZ5aW5nIGNoYW5nZXMgaW4gdGhlIHZhbHVlIG9mIHRoZSB0aW1lIHBpY2tlci4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxzdHJpbmcgfCBzdHJpbmdbXT4+O1xuXG59XG5cbkBQcm94eUNtcCh7XG4gIGRlZmluZUN1c3RvbUVsZW1lbnRGbjogdW5kZWZpbmVkLFxuICBpbnB1dHM6IFsnYXV0b1ZhbGlkYXRpb24nLCAnZGlzYWJsZWQnLCAnaW5jcmVtZW50cycsICdpc1ZhbGlkJywgJ2xhYmVsJywgJ21vZGUnLCAnbmFtZScsICdvcHRpb25hbCcsICdwbGFjZWhvbGRlcicsICdwb3NpdGlvblJlbGF0aXZlVG8nLCAncmVhZE9ubHknLCAncmVxdWlyZWQnLCAnc2hvd0NsZWFySWNvbicsICdzaXplJywgJ3RpbWVGb3JtYXQnLCAndmFsaWRhdGlvblJ1bGVzJywgJ3ZhbHVlJywgJ3ZlZ2FEcm9wZG93blByb3BzJ11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRpbWUtcGlja2VyJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdkaXNhYmxlZCcsICdpbmNyZW1lbnRzJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbW9kZScsICduYW1lJywgJ29wdGlvbmFsJywgJ3BsYWNlaG9sZGVyJywgJ3Bvc2l0aW9uUmVsYXRpdmVUbycsICdyZWFkT25seScsICdyZXF1aXJlZCcsICdzaG93Q2xlYXJJY29uJywgJ3NpemUnLCAndGltZUZvcm1hdCcsICd2YWxpZGF0aW9uUnVsZXMnLCAndmFsdWUnLCAndmVnYURyb3Bkb3duUHJvcHMnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVGltZVBpY2tlciB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICAgIHByb3h5T3V0cHV0cyh0aGlzLCB0aGlzLmVsLCBbJ3ZlZ2FDaGFuZ2UnLCAnY2hhbmdlJ10pO1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUaW1lUGlja2VyRHJvcGRvd24gZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUaW1lUGlja2VyRHJvcGRvd24ge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWRcbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRpbWUtcGlja2VyLWRyb3Bkb3duJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50Pidcbn0pXG5leHBvcnQgY2xhc3MgVmVnYVRpbWVQaWNrZXJEcm9wZG93biB7XG4gIHByb3RlY3RlZCBlbDogSFRNTEVsZW1lbnQ7XG4gIGNvbnN0cnVjdG9yKGM6IENoYW5nZURldGVjdG9yUmVmLCByOiBFbGVtZW50UmVmLCBwcm90ZWN0ZWQgejogTmdab25lKSB7XG4gICAgYy5kZXRhY2goKTtcbiAgICB0aGlzLmVsID0gci5uYXRpdmVFbGVtZW50O1xuICB9XG59XG5cblxuZXhwb3J0IGRlY2xhcmUgaW50ZXJmYWNlIFZlZ2FUb2dnbGVTd2l0Y2ggZXh0ZW5kcyBDb21wb25lbnRzLlZlZ2FUb2dnbGVTd2l0Y2gge1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdG9nZ2xlIHN3aXRjaC4gQHZlZ2FWZXJzaW9uIDEuMy4wXG4gICAqL1xuICB2ZWdhQ2hhbmdlOiBFdmVudEVtaXR0ZXI8Q3VzdG9tRXZlbnQ8Ym9vbGVhbj4+O1xuICAvKipcbiAgICogQW4gZXZlbnQgZW1pdHRlciBub3RpZnlpbmcgY2hhbmdlcyBpbiB0aGUgdG9nZ2xlIHN3aXRjaC4gQGV2ZW50U2VtYW50aWNzIG5hbWVzcGFjZTpuYXRpdmUsQHZlZ2FWZXJzaW9uIDIuMC4wXG4gICAqL1xuICBjaGFuZ2U6IEV2ZW50RW1pdHRlcjxDdXN0b21FdmVudDxib29sZWFuPj47XG5cbn1cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdjaGVja2VkJywgJ2Rpc2FibGVkJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICdzaXplJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10b2dnbGUtc3dpdGNoJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhdXRvVmFsaWRhdGlvbicsICdjaGVja2VkJywgJ2Rpc2FibGVkJywgJ2lzVmFsaWQnLCAnbGFiZWwnLCAnbmFtZScsICdvcHRpb25hbCcsICdyZXF1aXJlZCcsICdzaXplJywgJ3ZhbGlkYXRpb25SdWxlcycsICd2YWx1ZSddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FUb2dnbGVTd2l0Y2gge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgICBwcm94eU91dHB1dHModGhpcywgdGhpcy5lbCwgWyd2ZWdhQ2hhbmdlJywgJ2NoYW5nZSddKTtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhVG9vbHRpcCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVRvb2x0aXAge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhbGlnbm1lbnQnLCAnY29udGVudCcsICdkaXNhYmxlSW50ZXJhY3RpdmUnLCAnbWF4V2lkdGgnLCAnbWluV2lkdGgnLCAncGxhY2VtZW50JywgJ3Bvc2l0aW9uUmVsYXRpdmVUbycsICdzaXplJywgJ3RleHQnLCAndHJpZ2dlciddXG59KVxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmVnYS10b29sdGlwJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHRlbXBsYXRlOiAnPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PicsXG4gIGlucHV0czogWydhbGlnbm1lbnQnLCAnY29udGVudCcsICdkaXNhYmxlSW50ZXJhY3RpdmUnLCAnbWF4V2lkdGgnLCAnbWluV2lkdGgnLCAncGxhY2VtZW50JywgJ3Bvc2l0aW9uUmVsYXRpdmVUbycsICdzaXplJywgJ3RleHQnLCAndHJpZ2dlciddXG59KVxuZXhwb3J0IGNsYXNzIFZlZ2FUb29sdGlwIHtcbiAgcHJvdGVjdGVkIGVsOiBIVE1MRWxlbWVudDtcbiAgY29uc3RydWN0b3IoYzogQ2hhbmdlRGV0ZWN0b3JSZWYsIHI6IEVsZW1lbnRSZWYsIHByb3RlY3RlZCB6OiBOZ1pvbmUpIHtcbiAgICBjLmRldGFjaCgpO1xuICAgIHRoaXMuZWwgPSByLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cbn1cblxuXG5leHBvcnQgZGVjbGFyZSBpbnRlcmZhY2UgVmVnYVRvb2x0aXBDb250ZW50Qm94IGV4dGVuZHMgQ29tcG9uZW50cy5WZWdhVG9vbHRpcENvbnRlbnRCb3gge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWyd0ZXh0J11cbn0pXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2ZWdhLXRvb2x0aXAtY29udGVudC1ib3gnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ3RleHQnXVxufSlcbmV4cG9ydCBjbGFzcyBWZWdhVG9vbHRpcENvbnRlbnRCb3gge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBWZWdhVmlydHVhbFNjcm9sbCBleHRlbmRzIENvbXBvbmVudHMuVmVnYVZpcnR1YWxTY3JvbGwge31cblxuQFByb3h5Q21wKHtcbiAgZGVmaW5lQ3VzdG9tRWxlbWVudEZuOiB1bmRlZmluZWQsXG4gIGlucHV0czogWydhcHByb3hJdGVtSGVpZ2h0JywgJ2lzTG9hZGluZycsICdyZW5kZXJJdGVtJywgJ3NvdXJjZScsICdzb3VyY2VJdGVtSWRlbnRpZmllcicsICd2aWV3cG9ydE1heEhlaWdodCcsICd2aXJ0dWFsaXphdGlvblRocmVzaG9sZCddLFxuICBtZXRob2RzOiBbJ3Njcm9sbFRvSW5kZXgnXVxufSlcbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZlZ2EtdmlydHVhbC1zY3JvbGwnLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgdGVtcGxhdGU6ICc8bmctY29udGVudD48L25nLWNvbnRlbnQ+JyxcbiAgaW5wdXRzOiBbJ2FwcHJveEl0ZW1IZWlnaHQnLCAnaXNMb2FkaW5nJywgJ3JlbmRlckl0ZW0nLCAnc291cmNlJywgJ3NvdXJjZUl0ZW1JZGVudGlmaWVyJywgJ3ZpZXdwb3J0TWF4SGVpZ2h0JywgJ3ZpcnR1YWxpemF0aW9uVGhyZXNob2xkJ11cbn0pXG5leHBvcnQgY2xhc3MgVmVnYVZpcnR1YWxTY3JvbGwge1xuICBwcm90ZWN0ZWQgZWw6IEhUTUxFbGVtZW50O1xuICBjb25zdHJ1Y3RvcihjOiBDaGFuZ2VEZXRlY3RvclJlZiwgcjogRWxlbWVudFJlZiwgcHJvdGVjdGVkIHo6IE5nWm9uZSkge1xuICAgIGMuZGV0YWNoKCk7XG4gICAgdGhpcy5lbCA9IHIubmF0aXZlRWxlbWVudDtcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBbXG4gIFZlZ2FBY2NvcmRpb24sXG4gIFZlZ2FBcHBGb290ZXIsXG4gIFZlZ2FBcHBIZWFkZXJCdXR0b24sXG4gIFZlZ2FCYWNrZHJvcCxcbiAgVmVnYUJhbm5lcixcbiAgVmVnYUJhckNoYXJ0LFxuICBWZWdhQm94LFxuICBWZWdhQnJhbmRMb2dvLFxuICBWZWdhQnJlYWRjcnVtYixcbiAgVmVnYUJ1dHRvbixcbiAgVmVnYUJ1dHRvbkNpcmNsZSxcbiAgVmVnYUJ1dHRvbkdyb3VwLFxuICBWZWdhQnV0dG9uR3JvdXBJdGVtLFxuICBWZWdhQnV0dG9uTGluayxcbiAgVmVnYUNhbGVuZGFyLFxuICBWZWdhQ2FsZW5kYXJFdmVudCxcbiAgVmVnYUNhbGVuZGFyRXZlbnRQcmV2aWV3LFxuICBWZWdhQ2FsZW5kYXJFdmVudFNsb3QsXG4gIFZlZ2FDYWxlbmRhclBlcmlvZFN3aXRjaGVyLFxuICBWZWdhQ2FyZCxcbiAgVmVnYUNhcm91c2VsLFxuICBWZWdhQ2hlY2tib3gsXG4gIFZlZ2FDaGVja2JveEdyb3VwLFxuICBWZWdhQ2hpcCxcbiAgVmVnYUNvZGVCbG9jayxcbiAgVmVnYUNvbG9yUGlja2VyLFxuICBWZWdhQ29sb3JTd2F0Y2gsXG4gIFZlZ2FDb2xvclN3YXRjaFBpY2tlcixcbiAgVmVnYUNvbWJvQm94LFxuICBWZWdhQ291bnRlckJhZGdlLFxuICBWZWdhRGF0ZVBpY2tlcixcbiAgVmVnYURhdGVQaWNrZXJDYWxlbmRhcixcbiAgVmVnYURpYWxvZyxcbiAgVmVnYURpdmlkZXIsXG4gIFZlZ2FEcm9wZG93bixcbiAgVmVnYURyb3Bkb3duQ29udGVudEJveCxcbiAgVmVnYURyb3Bkb3duR3JvdXAsXG4gIFZlZ2FEcm9wZG93bkl0ZW0sXG4gIFZlZ2FGaWVsZEVycm9yLFxuICBWZWdhRmllbGRMYWJlbCxcbiAgVmVnYUZpbGVVcGxvYWRlcixcbiAgVmVnYUZsYWdJY29uLFxuICBWZWdhRmxleCxcbiAgVmVnYUZvbnQsXG4gIFZlZ2FGb3JtLFxuICBWZWdhR3JpZCxcbiAgVmVnYUhpbnQsXG4gIFZlZ2FJY29uLFxuICBWZWdhSW1hZ2VVcGxvYWRlcixcbiAgVmVnYUlucHV0LFxuICBWZWdhSW5wdXRDcmVkaXRDYXJkLFxuICBWZWdhSW5wdXROdW1lcmljLFxuICBWZWdhSW5wdXRQYXNzY29kZSxcbiAgVmVnYUlucHV0UGhvbmVOdW1iZXIsXG4gIFZlZ2FJbnB1dFJhbmdlLFxuICBWZWdhSW5wdXRTZWxlY3QsXG4gIFZlZ2FJdGVtVG9nZ2xlLFxuICBWZWdhTGVmdE5hdixcbiAgVmVnYUxlZnROYXZHcm91cCxcbiAgVmVnYUxlZnROYXZMaW5rLFxuICBWZWdhTGVmdE5hdlNlY3Rpb24sXG4gIFZlZ2FMaW5lQ2hhcnQsXG4gIFZlZ2FMb2FkZXJXcmFwcGVyLFxuICBWZWdhTG9hZGluZ0luZGljYXRvcixcbiAgVmVnYU1vZGFsLFxuICBWZWdhTmF2Q2FyZCxcbiAgVmVnYVBhZ2VOb3RpZmljYXRpb24sXG4gIFZlZ2FQYWdlTm90aWZpY2F0aW9uTGlzdCxcbiAgVmVnYVBhZ2luYXRpb24sXG4gIFZlZ2FQYWdpbmF0aW9uUGFnZVNlbGVjdG9yTW9iaWxlLFxuICBWZWdhUGFnaW5hdGlvblBhZ2VTaXplU2VsZWN0b3JNb2JpbGUsXG4gIFZlZ2FQaWVDaGFydCxcbiAgVmVnYVBvcG92ZXIsXG4gIFZlZ2FQb3BvdmVyQ29udGVudEJveCxcbiAgVmVnYVByb2dyZXNzVHJhY2tlcixcbiAgVmVnYVByb2dyZXNzVHJhY2tlclN0ZXAsXG4gIFZlZ2FSYWRpbyxcbiAgVmVnYVJhZGlvR3JvdXAsXG4gIFZlZ2FSaWNoVGV4dENvbnRlbnQsXG4gIFZlZ2FSaWNoVGV4dEVkaXRvcixcbiAgVmVnYVJpY2hUZXh0RWRpdG9yVG9vbGJhckJ1dHRvbixcbiAgVmVnYVJpY2hUZXh0RmluZFJlcGxhY2VQYW5lbCxcbiAgVmVnYVJpY2hUZXh0SW1hZ2VFZGl0b3IsXG4gIFZlZ2FSaWNoVGV4dExpbmtFZGl0b3IsXG4gIFZlZ2FSaWNoVGV4dFNwZWNpYWxDaGFyYWN0ZXJzUGFuZWwsXG4gIFZlZ2FSaWNoVGV4dFRhYmxlUHJvcGVydGllcyxcbiAgVmVnYVJpY2hUZXh0VGFibGVTZWxlY3Rpb25XaWRnZXQsXG4gIFZlZ2FSaWNoVGV4dFRhYmxlU2V0dGluZyxcbiAgVmVnYVNlY3Rpb25UaXRsZSxcbiAgVmVnYVNlZ21lbnRDb250cm9sLFxuICBWZWdhU2VsZWN0aW9uQ2hpcCxcbiAgVmVnYVNlbGVjdGlvbkNoaXBHcm91cCxcbiAgVmVnYVNlbGVjdGlvblRpbGUsXG4gIFZlZ2FTZWxlY3Rpb25UaWxlR3JvdXAsXG4gIFZlZ2FTaWRlbmF2LFxuICBWZWdhU2lkZW5hdkdyb3VwLFxuICBWZWdhU2lkZW5hdkxpbmssXG4gIFZlZ2FTaWduYXR1cmVDYXB0dXJlLFxuICBWZWdhU2tlbGV0b24sXG4gIFZlZ2FTbG90Q29udGFpbmVyLFxuICBWZWdhU3RlcHBlcixcbiAgVmVnYVRhYkdyb3VwLFxuICBWZWdhVGFiR3JvdXBQYW5lbCxcbiAgVmVnYVRhYmxlLFxuICBWZWdhVGFibGVCb2R5LFxuICBWZWdhVGFibGVDZWxsLFxuICBWZWdhVGFibGVFeHBhbmRSb3csXG4gIFZlZ2FUYWJsZUZvb3QsXG4gIFZlZ2FUYWJsZUZvb3RDZWxsLFxuICBWZWdhVGFibGVGb290Um93LFxuICBWZWdhVGFibGVIZWFkLFxuICBWZWdhVGFibGVIZWFkQ2VsbCxcbiAgVmVnYVRhYmxlSGVhZFJvdyxcbiAgVmVnYVRhYmxlUm93LFxuICBWZWdhVGV4dCxcbiAgVmVnYVRleHRhcmVhLFxuICBWZWdhVGltZVBpY2tlcixcbiAgVmVnYVRpbWVQaWNrZXJEcm9wZG93bixcbiAgVmVnYVRvZ2dsZVN3aXRjaCxcbiAgVmVnYVRvb2x0aXAsXG4gIFZlZ2FUb29sdGlwQ29udGVudEJveCxcbiAgVmVnYVZpcnR1YWxTY3JvbGwsXG5dOyJdfQ==
|