@libs-ui/components-list 0.2.192 → 0.2.193

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.
@@ -5,6 +5,6 @@ import { LibsUiComponentsListRadioComponent } from "../templates/radio/radio.com
5
5
  import { LibsUiComponentsListTagComponent } from "../templates/tag/tag.component";
6
6
  import { LibsUiComponentsListTextComponent } from "../templates/text/text.component";
7
7
  import { IListConfigItem } from './../interfaces/config-item.interface';
8
- export declare const getComponentByType: (typeTemplate: TYPE_TEMPLATE) => typeof LibsUiComponentsListCheckboxComponent | typeof LibsUiComponentsListGroupComponent | typeof LibsUiComponentsListRadioComponent | typeof LibsUiComponentsListTagComponent | typeof LibsUiComponentsListTextComponent;
8
+ export declare const getComponentByType: (typeTemplate: TYPE_TEMPLATE) => typeof LibsUiComponentsListCheckboxComponent | typeof LibsUiComponentsListGroupComponent | typeof LibsUiComponentsListRadioComponent | typeof LibsUiComponentsListTextComponent | typeof LibsUiComponentsListTagComponent;
9
9
  export declare const getFieldKeyByType: (config: IListConfigItem | undefined, fieldKeyDefault: string) => string;
10
10
  export declare const initConfig: (config: IListConfigItem) => void;
@@ -104,7 +104,7 @@ export class LibsUiComponentsListComponent {
104
104
  effect(() => {
105
105
  const keysDisableItem = this.keysDisableItem();
106
106
  untracked(() => {
107
- if (!isEmpty(keysDisableItem)) {
107
+ if (!isNil(keysDisableItem)) {
108
108
  this.componentRef?.setInput('keysDisableItem', keysDisableItem);
109
109
  }
110
110
  });
@@ -112,7 +112,7 @@ export class LibsUiComponentsListComponent {
112
112
  effect(() => {
113
113
  const keysHiddenItem = this.keysHiddenItem();
114
114
  untracked(() => {
115
- if (!isEmpty(keysHiddenItem)) {
115
+ if (!isNil(keysHiddenItem)) {
116
116
  this.componentRef?.setInput('keysHiddenItem', keysHiddenItem);
117
117
  this.onSetHiddenItemByKey.next(keysHiddenItem);
118
118
  }
@@ -121,7 +121,7 @@ export class LibsUiComponentsListComponent {
121
121
  effect(() => {
122
122
  const disable = this.disable();
123
123
  untracked(() => {
124
- if (!isEmpty(disable)) {
124
+ if (!isNil(disable)) {
125
125
  this.componentRef?.setInput('disable', disable);
126
126
  }
127
127
  });
@@ -129,7 +129,7 @@ export class LibsUiComponentsListComponent {
129
129
  effect(() => {
130
130
  const keySelected = this.keySelected();
131
131
  untracked(() => {
132
- if (!isEmpty(keySelected)) {
132
+ if (!isNil(keySelected)) {
133
133
  this.componentRef?.setInput('keySelected', keySelected);
134
134
  }
135
135
  });
@@ -142,7 +142,7 @@ export class LibsUiComponentsListComponent {
142
142
  }
143
143
  oldMultiKeySelected = multiKeySelected;
144
144
  untracked(() => {
145
- if (!isEmpty(multiKeySelected)) {
145
+ if (!isNil(multiKeySelected)) {
146
146
  this.componentRef?.setInput('multiKeySelected', multiKeySelected);
147
147
  if (this.configData()?.type === 'group') {
148
148
  this.onUpdateMultiKeySelectedGroup.next();
@@ -369,4 +369,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
369
369
  LibsUiComponentsButtonsButtonComponent
370
370
  ], template: "<div #listViewContainer\n class=\"flex flex-col\"\n [class.w-full]=\"!maxItemShow\"\n [class.h-full]=\"!maxItemShow\">\n @if (labelConfig(); as labelConfig) {\n <libs_ui-components-label [classInclude]=\"labelConfig.classInclude\"\n [labelLeft]=\"labelConfig.labelLeft\"\n [labelLeftClass]=\"labelConfig.labelLeftClass\"\n [required]=\"labelConfig.required \"\n [description]=\"labelConfig.description\"\n [descriptionClass]=\"labelConfig.descriptionClass\"\n [labelRight]=\"labelConfig.labelRight\"\n [labelRightClass]=\"labelConfig.labelRightClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [buttonsLeft]=\"labelConfig.buttonsLeft\"\n [buttonsRight]=\"labelConfig.buttonsRight\"\n [disableButtonsLeft]=\"labelConfig.disableButtonsLeft || disable()\"\n [disableButtonsRight]=\"labelConfig.disableButtonsRight || disable()\"\n [hasToggle]=\"labelConfig.hasToggle\"\n [toggleActive]=\"labelConfig.toggleActive\"\n [toggleDisable]=\"labelConfig.toggleDisable || loading() || disable()\"\n [popover]=\"labelConfig.popover\"\n [iconPopoverClass]=\"labelConfig.iconPopoverClass\"\n [onlyShowCount]=\"labelConfig.onlyShowCount\"\n [limitLength]=\"labelConfig.limitLength\"\n [buttonsDescription]=\"labelConfig.buttonsDescription\"\n [disableButtonsDescription]=\"labelConfig.disableButtonsDescription || disable()\"\n [buttonsDescriptionContainerClass]=\"labelConfig.buttonsDescriptionContainerClass\"\n [count]=\"labelConfig.count\" />\n }\n\n @if (!showValidateBottom()) {\n <ng-container *ngTemplateOutlet=\"templateValidate\" />\n }\n @if (!hiddenInputSearch()) {\n <libs_ui-components-inputs-search [searchConfig]=\"searchConfig()\"\n [class.px-[12px]]=\"searchPadding()\"\n [class]=\"searchConfig().classCoverInputSearch\"\n [disable]=\" disable() || loading() || false\"\n (outSearch)=\"handlerSearch($event)\"\n (outFunctionsControl)=\"handlerFunctionControlInputSearch($event)\" />\n }\n @if (config()?.configDescriptionGroup?.(); as description) {\n <div [class]=\"description?.classInclude\">\n <libs_ui-components-popover [config]=\"description?.tooltipDescription()\">\n <div [class]=\"description?.classTextDescriptionInclude\">{{ description.textDescription }}</div>\n </libs_ui-components-popover>\n </div>\n }\n @if (!hiddenInputSearch() && hasDivider() && (!config()?.ignoreShowDataWhenNotSearch || keySearchStore())) {\n <div class=\"libs-ui-border-top-general {{ dividerClassInclude() ? dividerClassInclude():'' }}\"\n [class.libs-ui-divider-default]=\"!!searchPadding() && !dividerClassInclude()\">\n </div>\n }\n <div class=\"flex flex-col {{ (config()?.ignoreShowDataWhenNotSearch && keySearchStore() && !config()?.ignoreFixHeightShowDataWhenNotSearch) ? 'h-[353px]' : 'h-full' }}\">\n <div #contentContainer\n class=\"w-full h-full {{ backgroundListCustom() }}\"\n [class.libs-ui-disable]=\"disable() && disableLabel()\"\n [class.pointer-events-none]=\"disable() && disableLabel()\">\n </div>\n\n @for (buttonOther of buttonsOther(); track $index) {\n <div class=\"bg-[#ffffff]\"\n [class.rounded-b-[4px]]=\"$last && !hasButtonUnSelectOption()\">\n <libs_ui-components-buttons-button [type]=\"buttonOther.type || 'button-link-primary'\"\n [label]=\"buttonOther.label || ' '\"\n [classIconLeft]=\"(buttonOther.classIconLeft || '')+' flex mr-[8px] text-[16px]'\"\n classInclude=\"w-full libs-ui-border-top-general text-left rounded-0 {{ buttonOther.classInclude ? buttonOther.classInclude:'' }}\"\n classLabel=\"libs-ui-font-h5r whitespace-normal\"\n [disable]=\"buttonOther.disable || disable() || loading() || false\"\n (outClick)=\"handlerClickButtonOther(buttonOther)\" />\n </div>\n }\n @if (hasButtonUnSelectOption()) {\n <div class=\"bg-[#ffffff] rounded-b-[4px]\">\n <libs_ui-components-buttons-button label=\"i18n_unselect_option\"\n type=\"button-link-danger-high\"\n classIconLeft=\"flex mr-[8px] libs-ui-icon-close\"\n classInclude=\"w-100 libs-ui-border-top-general text-left rounded-0\"\n classLabel=\"libs-ui-font-h5r whitespace-normal\"\n [disable]=\"disableButtonUnSelectOption() || disable() || loading() || false\"\n (outClick)=\"handlerRemoveKeySelected()\" />\n </div>\n }\n </div>\n @if (showValidateBottom()) {\n <ng-container *ngTemplateOutlet=\"templateValidate\" />\n }\n</div>\n\n<ng-template #templateValidate>\n @if (isErrorRequired()) {\n <div [class.mb-[8px]]=\"!showValidateBottom()\"\n [class.mt-[8px]]=\"showValidateBottom()\">\n <span class=\"text-[#ee2d41] libs-ui-font-h7\"\n [innerHtml]=\"(validRequired()?.message || ERROR_MESSAGE_EMPTY_VALID)| translate:validRequired()?.interpolateParams\">\n </span>\n </div>\n }\n</ng-template>\n", styles: [":host{background-color:#fff}:host ::ng-deep .libs-ui-list-view-highlight-text-search{background-color:#ffdb80;border-radius:2px;display:inline-block;overflow:unset}.libs-ui-divider-default{width:calc(100% - 24px);margin:12px auto 0}\n"] }]
371
371
  }], ctorParameters: () => [] });
372
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBZ0IsTUFBTSxFQUF5QixNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxFQUFlLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDck0sT0FBTyxFQUFXLHNDQUFzQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFckcsT0FBTyxFQUFzQixxQ0FBcUMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTlHLE9BQU8sRUFBVSw4QkFBOEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25GLE9BQU8sRUFBYyxnQ0FBZ0MsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTNGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUseUJBQXlCLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBb0J2RSxNQUFNLE9BQU8sNkJBQTZCO0lBQ3hDLG1CQUFtQjtJQUNBLHlCQUF5QixHQUFHLHlCQUF5QixDQUFDO0lBQy9ELDJCQUEyQixHQUFHLE1BQU0sQ0FBVSxJQUFJLENBQUMsQ0FBQztJQUNwRCxlQUFlLEdBQUcsTUFBTSxDQUFVLEtBQUssQ0FBQyxDQUFDO0lBQ3pDLE9BQU8sR0FBRyxNQUFNLENBQVUsS0FBSyxDQUFDLENBQUM7SUFDakMsY0FBYyxHQUFHLE1BQU0sQ0FBcUIsU0FBUyxDQUFDLENBQUM7SUFFekQsU0FBUyxHQUFrQixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ3pDLFFBQVEsR0FBZ0MsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUN0RCxTQUFTLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7SUFDekMsb0JBQW9CLEdBQTRCLElBQUksT0FBTyxFQUFFLENBQUM7SUFDOUQsNkJBQTZCLEdBQWtCLElBQUksT0FBTyxFQUFFLENBQUM7SUFDN0QsYUFBYSxHQUE0QixJQUFJLE9BQU8sRUFBRSxDQUFDO0lBQ3ZELFlBQVksR0FBZ0MsSUFBSSxPQUFPLEVBQUUsQ0FBQztJQUMxRCxhQUFhLENBQWE7SUFFMUIsWUFBWSxDQUFnRTtJQUM1RSxVQUFVLEdBQUcsTUFBTSxDQUFrQjtRQUMzQyxJQUFJLEVBQUUsTUFBTTtRQUNaLGtCQUFrQixFQUFFLE1BQU0sQ0FBQztZQUN6QixRQUFRLEVBQUUsSUFBSTtZQUNkLFFBQVEsRUFBRSxDQUFDLElBQVMsRUFBRSxFQUFFO2dCQUN0QixPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQztZQUNqQyxDQUFDO1NBQ0YsQ0FBQztLQUNILENBQUMsQ0FBQztJQUNLLHFCQUFxQixHQUFHLE1BQU0sQ0FBaUIsRUFBRSxDQUFDLENBQUM7SUFDbkQsMEJBQTBCLEdBQUcsTUFBTSxDQUF5QyxTQUFTLENBQUMsQ0FBQztJQUUvRixnQkFBZ0I7SUFDUCxpQkFBaUIsR0FBRyxLQUFLLENBQStCLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZHLG9CQUFvQixHQUFHLEtBQUssRUFBVSxDQUFDO0lBQ3ZDLFNBQVMsR0FBRyxLQUFLLEVBQVUsQ0FBQztJQUM1QixlQUFlLEdBQUcsS0FBSyxFQUFXLENBQUM7SUFDbkMsTUFBTSxHQUFHLEtBQUssQ0FBMkQsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLEVBQUUsU0FBUyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsSixzQ0FBc0MsR0FBRyxLQUFLLENBQVUsS0FBSyxDQUFDLENBQUM7SUFFL0QsY0FBYyxHQUFHLEtBQUssRUFBVyxDQUFDO0lBQ2xDLE9BQU8sR0FBRyxLQUFLLEVBQVcsQ0FBQztJQUMzQixZQUFZLEdBQUcsS0FBSyxFQUFXLENBQUM7SUFDaEMsV0FBVyxHQUFHLEtBQUssRUFBVSxDQUFDO0lBQzlCLFlBQVksR0FBRyxLQUFLLENBQXFELEVBQUUsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ2xILGFBQWEsR0FBRyxLQUFLLEVBQVcsQ0FBQztJQUNqQyxtQkFBbUIsR0FBRyxLQUFLLEVBQVUsQ0FBQztJQUN0QyxVQUFVLEdBQUcsS0FBSyxDQUFVLElBQUksQ0FBQyxDQUFDO0lBQ2xDLFlBQVksR0FBRyxLQUFLLENBQTZCLFNBQVMsQ0FBQyxDQUFDO0lBQzVELHVCQUF1QixHQUFHLEtBQUssRUFBVyxDQUFDO0lBQzNDLFlBQVksR0FBRyxLQUFLLEVBQVcsQ0FBQztJQUNoQyxvQkFBb0IsR0FBRyxLQUFLLENBQTZCLGNBQWMsRUFBRSxFQUFFLFNBQVMsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssSUFBSSxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQzFILFdBQVcsR0FBRyxLQUFLLEVBQVUsQ0FBQztJQUM5QixXQUFXLEdBQUcsS0FBSyxFQUFXLENBQUM7SUFDL0IsZ0JBQWdCLEdBQUcsS0FBSyxDQUE2QixTQUFTLENBQUMsQ0FBQyxDQUFBLDZCQUE2QjtJQUM3RixlQUFlLEdBQUcsS0FBSyxDQUE2QixTQUFTLENBQUMsQ0FBQyxDQUFDLDZGQUE2RjtJQUM3SixjQUFjLEdBQUcsS0FBSyxDQUE2QixTQUFTLENBQUMsQ0FBQyxDQUFDLDZGQUE2RjtJQUM1SixnQkFBZ0IsR0FBRyxLQUFLLEVBQVcsQ0FBQztJQUNwQyx5Q0FBeUMsR0FBRyxLQUFLLEVBQVcsQ0FBQztJQUM3RCwyQkFBMkIsR0FBRyxLQUFLLENBQWlDLFNBQVMsQ0FBQyxDQUFDO0lBQy9FLGFBQWEsR0FBRyxLQUFLLENBQTZCLFNBQVMsQ0FBQyxDQUFDO0lBQzdELGtCQUFrQixHQUFHLEtBQUssRUFBVyxDQUFDO0lBQ3RDLE1BQU0sR0FBRyxLQUFLLEVBQVUsQ0FBQztJQUN6QixlQUFlLEdBQUcsS0FBSyxDQUF1RCxTQUFTLENBQUMsQ0FBQztJQUN6Rix1QkFBdUIsR0FBRyxLQUFLLENBQTZDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZGLGdDQUFnQyxHQUFHLEtBQUssRUFBVyxDQUFDO0lBQ3BELCtDQUErQyxHQUFHLEtBQUssRUFBVyxDQUFDLENBQUMsbUVBQW1FO0lBRWhKLGlCQUFpQjtJQUNSLFlBQVksR0FBRyxNQUFNLEVBQWdDLENBQUMsQ0FBQywwQkFBMEI7SUFDakYsaUJBQWlCLEdBQUcsTUFBTSxFQUFxQyxDQUFDLENBQUMsd0NBQXdDO0lBQ3pHLG1CQUFtQixHQUFHLE1BQU0sRUFBa0IsQ0FBQyxDQUFDLHdDQUF3QztJQUN4RixtQkFBbUIsR0FBRyxNQUFNLEVBQVcsQ0FBQztJQUN4QyxXQUFXLEdBQUcsTUFBTSxFQUFzQixDQUFDO0lBQzNDLGFBQWEsR0FBRyxNQUFNLEVBQWMsQ0FBQztJQUNyQyxZQUFZLEdBQUcsTUFBTSxFQUFVLENBQUM7SUFDaEMsVUFBVSxHQUFHLE1BQU0sRUFBVyxDQUFDO0lBQy9CLG1CQUFtQixHQUFHLE1BQU0sRUFBNkIsQ0FBQztJQUMxRCw2QkFBNkIsR0FBRyxNQUFNLEVBQWMsQ0FBQztJQUNyRCxvQkFBb0IsR0FBRyxNQUFNLEVBQTJDLENBQUM7SUFFbEYsZ0JBQWdCO0lBQ04sa0JBQWtCLEdBQUcsU0FBUyxDQUFhLG1CQUFtQixDQUFDLENBQUM7SUFDaEUsaUJBQWlCLEdBQUcsU0FBUyxDQUFhLGtCQUFrQixDQUFDLENBQUM7SUFFeEUsaUJBQWlCO0lBQ1QsdUJBQXVCLEdBQUcsTUFBTSxDQUFDLDZCQUE2QixDQUFDLENBQUM7SUFFeEU7UUFDRSxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDL0IsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBRS9CLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2IsSUFBSSxJQUFJLENBQUMsY0FBYyxFQUFFLEtBQUssSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7b0JBQy9DLE9BQU87Z0JBQ1QsQ0FBQztnQkFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDNUIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDL0MsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDYixJQUFJLENBQUMsT0FBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFLENBQUM7b0JBQzlCLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLGlCQUFpQixFQUFFLGVBQWUsQ0FBQyxDQUFDO2dCQUNsRSxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILE1BQU0sQ0FBQyxHQUFHLEVBQUU7WUFDVixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDN0MsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDYixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUM7b0JBQzdCLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxDQUFDO29CQUM5RCxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLGNBQWdDLENBQUMsQ0FBQztnQkFDbkUsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQy9CLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO29CQUN0QixJQUFJLENBQUMsWUFBWSxFQUFFLFFBQVEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ2xELENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNiLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztvQkFDMUIsSUFBSSxDQUFDLFlBQVksRUFBRSxRQUFRLENBQUMsYUFBYSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUMxRCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksbUJBQW1CLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDbEQsTUFBTSxDQUFDLEdBQUcsRUFBRTtZQUNWLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDakQsSUFBSSxPQUFPLENBQUMsbUJBQW1CLEVBQUUsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO2dCQUNuRCxPQUFPO1lBQ1QsQ0FBQztZQUNELG1CQUFtQixHQUFHLGdCQUFnQixDQUFDO1lBQ3ZDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7b0JBQy9CLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxDQUFDLGtCQUFrQixFQUFFLGdCQUFnQixDQUFDLENBQUM7b0JBQ2xFLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksS0FBSyxPQUFPLEVBQUUsQ0FBQzt3QkFDeEMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLElBQUksRUFBRSxDQUFDO29CQUM1QyxDQUFDO2dCQUNILENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRUgsTUFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDO1lBQzVCLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDMUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNoQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUMxRCxlQUFlLEVBQUUsS0FBSyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxhQUFhLENBQUMscUJBQXFCLEVBQUU7WUFDN0YsV0FBVyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUMxRCxVQUFVLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ3pELENBQUMsQ0FBQztRQUVILE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM3QixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFBO1FBQy9DLENBQUM7UUFDRCxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFDOUIsTUFBTSxTQUFTLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTdELElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXBGLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDdEQsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxpQkFBaUIsRUFBRSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1FBQ3hHLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDOUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1FBRXhELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3RELElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLHNCQUFzQixFQUFFLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsd0NBQXdDLEVBQUUsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLENBQUMsQ0FBQztRQUNwSCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxrQ0FBa0MsRUFBRSxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGlEQUFpRCxFQUFFLElBQUksQ0FBQywrQ0FBK0MsRUFBRSxDQUFDLENBQUM7UUFDdEksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsNkJBQTZCLEVBQUUsSUFBSSxDQUFDLDJCQUEyQixFQUFFLENBQUMsQ0FBQztRQUM5RixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsYUFBYSxFQUFFLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzlELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLENBQUM7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDNUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDbEUsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsK0JBQStCLEVBQUUsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDaEcsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUNoRSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDcEQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUM7UUFDcEUsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQztRQUN6RSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyx5QkFBeUIsRUFBRSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxDQUFDO1FBQ3RGLElBQUksU0FBUyxHQUFHLEVBQUUsQ0FBQztRQUVuQixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUU1QyxRQUFRLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUU5QixJQUFJLElBQUksQ0FBQyx5Q0FBeUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsRUFBRSxDQUFDO2dCQUNyRixPQUFPO1lBQ1QsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRSxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUNuRSxTQUFTLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxJQUFJLEVBQUUsQ0FBQztnQkFDeEMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUM7WUFDN0MsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDckMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM3QixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7UUFDSCxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFFBQWlCLEVBQUUsRUFBRTtZQUNuRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNsQyxDQUFDLENBQUMsQ0FBQztRQUNILFFBQVEsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBZ0IsRUFBRSxFQUFFO1lBQ2pELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsUUFBUSxDQUFDLG9CQUFvQixDQUFDLFNBQVMsQ0FBQyxDQUFDLEtBQThDLEVBQUUsRUFBRTtZQUN6RixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLGtCQUFrQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsRUFBRSxrQkFBa0IsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUM7WUFDNUcsUUFBUSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsRUFBRTtnQkFDaEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM3QixJQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsa0JBQWtCLElBQUksTUFBTSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsVUFBVSxFQUFFLENBQUM7b0JBQ25GLE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLFFBQVEsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7b0JBQ3JELE1BQU0sQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLFVBQVUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2dCQUN0RCxDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsUUFBUSxDQUFDLDZCQUE2QixDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQWdCLEVBQUUsRUFBRTtZQUNwRSxJQUFJLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hELENBQUMsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksQ0FBQztRQUVyQyxJQUFJLElBQUksS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO1lBQ3hDLE9BQU87UUFDVCxDQUFDO1FBQ0QsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUMxQyxJQUFJLENBQUMsMkJBQTJCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVDLElBQUksSUFBSSxLQUFLLE9BQU8sRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMscUJBQXFCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM1QyxDQUFDO1lBQ0QsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQyxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZUFBZTtJQUNMLGFBQWEsQ0FBQyxTQUFpQjtRQUN2QyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUNuQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBRVMsS0FBSyxDQUFDLHdCQUF3QjtRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3ZCLE9BQU87UUFDVCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDbEMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUN2QyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLDJCQUEyQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUUzQyxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsRUFBRSxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLElBQUksRUFBRSxDQUFDO1FBQzVDLENBQUM7UUFDRCxNQUFNLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUM1QixDQUFDO0lBRVMsdUJBQXVCLENBQUMsTUFBZTtRQUMvQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFUyxpQ0FBaUMsQ0FBQyxLQUFpQztRQUMzRSxJQUFJLENBQUMsMEJBQTBCLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTyxLQUFLLENBQUMsWUFBWTtRQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsUUFBUSxFQUFFLENBQUM7WUFDbEYsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFFaEMsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO1FBQ0QsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksQ0FBQztRQUNqQyxJQUFJLE1BQU0sR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFFckUsSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDckIsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELElBQUksSUFBSSxLQUFLLE1BQU0sSUFBSSxJQUFJLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDeEMsTUFBTSxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDNUQsQ0FBQztRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFbEMsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVPLEtBQUssQ0FBQyxPQUFPO1FBQ25CLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDWixPQUFPO1FBQ1QsQ0FBQztRQUNELElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRTVCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDYixJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7WUFDOUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUN4QixDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7SUFFTyxXQUFXLENBQUMsV0FBNEI7UUFDOUMsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ2pCLE9BQU8sRUFBUyxDQUFDO1FBQ25CLENBQUM7UUFDRCxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsZUFBZSxFQUFFLEVBQUUsRUFBRSxZQUFZLENBQUM7UUFDbkUsTUFBTSx3Q0FBd0MsR0FBRyxXQUFXLENBQUMsc0JBQXNCLEVBQUUsRUFBRSxFQUFFLGdDQUFnQyxFQUFFLEVBQUUsRUFBRSxZQUFZLENBQUM7UUFFNUksSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixXQUFXLENBQUMsZUFBZSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDNUMsT0FBTyxPQUFPLENBQUMsWUFBWSxDQUFDO2dCQUU1QixPQUFPLE9BQU8sQ0FBQztZQUNqQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLHdDQUF3QyxFQUFFLENBQUM7WUFDN0MsV0FBVyxDQUFDLHNCQUFzQixFQUFFLEVBQUUsRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3pGLE9BQU8sT0FBTyxDQUFDLFlBQVksQ0FBQztnQkFFNUIsT0FBTyxPQUFPLENBQUM7WUFDakIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxNQUFNLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBb0IsQ0FBQztRQUV6RCxJQUFJLFlBQVksSUFBSSxNQUFNLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDM0MsTUFBTSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ3RDLE9BQU8sQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO2dCQUVwQyxPQUFPLE9BQU8sQ0FBQztZQUNqQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLHdDQUF3QyxJQUFJLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQzlFLE1BQU0sQ0FBQyxzQkFBc0IsRUFBRSxFQUFFLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNwRixPQUFPLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQztnQkFFcEMsT0FBTyxPQUFPLENBQUM7WUFDakIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUN6QixJQUFJLENBQUMsb0JBQW9CLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDckMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzlDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM1QixDQUFDO3dHQXJZVSw2QkFBNkI7NEZBQTdCLDZCQUE2QiwrMUxDbkMxQyxzNUpBb0dBLG9TRHhFSSxnQkFBZ0IsbUpBQUUsZUFBZSw0RkFDakMsOEJBQThCLDRxQkFDOUIscUNBQXFDLG9WQUNyQyxnQ0FBZ0MscWVBQ2hDLHNDQUFzQzs7NEZBRzdCLDZCQUE2QjtrQkFmekMsU0FBUzsrQkFFRSx5QkFBeUIsY0FHdkIsSUFBSSxtQkFDQyx1QkFBdUIsQ0FBQyxNQUFNLFdBQ3RDO3dCQUNQLGdCQUFnQixFQUFFLGVBQWU7d0JBQ2pDLDhCQUE4Qjt3QkFDOUIscUNBQXFDO3dCQUNyQyxnQ0FBZ0M7d0JBQ2hDLHNDQUFzQztxQkFDdkMiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBDb21wb25lbnRSZWYsIGVmZmVjdCwgRWZmZWN0UmVmLCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgb3V0cHV0LCBzaWduYWwsIFRlbXBsYXRlUmVmLCB1bnRyYWNrZWQsIHZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJQnV0dG9uLCBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uXCI7XG5pbXBvcnQgeyBJSW5wdXRGdW5jdGlvbkNvbnRyb2xFdmVudCB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLWlucHV0cy1pbnB1dFwiO1xuaW1wb3J0IHsgSUlucHV0U2VhcmNoQ29uZmlnLCBMaWJzVWlDb21wb25lbnRzSW5wdXRzU2VhcmNoQ29tcG9uZW50IH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtaW5wdXRzLXNlYXJjaFwiO1xuaW1wb3J0IHsgSVZhbGlkUmVxdWlyZWQgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1pbnB1dHMtdmFsaWRcIjtcbmltcG9ydCB7IElMYWJlbCwgTGlic1VpQ29tcG9uZW50c0xhYmVsQ29tcG9uZW50IH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtbGFiZWxcIjtcbmltcG9ydCB7IElGbGFnTW91c2UsIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtcG9wb3ZlclwiO1xuaW1wb3J0IHsgSVBhZ2luZywgVFlQRV9URU1QTEFURV9SRUYgfSBmcm9tIFwiQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlc1wiO1xuaW1wb3J0IHsgTGlic1VpRHluYW1pY0NvbXBvbmVudFNlcnZpY2UgfSBmcm9tIFwiQGxpYnMtdWkvc2VydmljZXMtZHluYW1pYy1jb21wb25lbnRcIjtcbmltcG9ydCB7IGNsb25lRGVlcCwgRVJST1JfTUVTU0FHRV9FTVBUWV9WQUxJRCwgaXNFbXB0eSwgaXNFcXVhbCwgaXNOaWwgfSBmcm9tIFwiQGxpYnMtdWkvdXRpbHNcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwsIHRpbWVyIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IGdldENvbXBvbmVudEJ5VHlwZSwgaW5pdENvbmZpZyB9IGZyb20gXCIuL2RlZmluZXMvbGlzdC5kZWZpbmVcIjtcbmltcG9ydCB7IElEYXRhVXBkYXRlVG9TdG9yZSwgSUxpc3RDb25maWdJdGVtLCBJTGlzdEZ1bmN0aW9uQ29udHJvbEV2ZW50IH0gZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgSUxpc3REYXRhRW1pdEtleSwgSUxpc3REYXRhRW1pdE11bHRpS2V5IH0gZnJvbSBcIi4vaW50ZXJmYWNlcy9kYXRhLWVtaXQuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzTGlzdFRlbXBsYXRlc0NvbXBvbmVudEFic3RyYWN0IH0gZnJvbSBcIi4vdGVtcGxhdGVzL3RlbXBsYXRlcy5jb21wb25lbnQuYWJzdHJhY3RcIjtcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LCBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTGlic1VpQ29tcG9uZW50c0xhYmVsQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNJbnB1dHNTZWFyY2hDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c0J1dHRvbnNCdXR0b25Db21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLy8gI3JlZ2lvbiBQUk9QRVJUWVxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgRVJST1JfTUVTU0FHRV9FTVBUWV9WQUxJRCA9IEVSUk9SX01FU1NBR0VfRU1QVFlfVkFMSUQ7XG4gIHByb3RlY3RlZCBkaXNhYmxlQnV0dG9uVW5TZWxlY3RPcHRpb24gPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG4gIHByb3RlY3RlZCBpc0Vycm9yUmVxdWlyZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQgbG9hZGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBrZXlTZWFyY2hTdG9yZSA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgcHJpdmF0ZSBvbkRlc3Ryb3k6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIG9uU2VhcmNoOiBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIG9uUmVmcmVzaDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgb25TZXRIaWRkZW5JdGVtQnlLZXk6IFN1YmplY3Q8QXJyYXk8dW5rbm93bj4+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBvblVwZGF0ZU11bHRpS2V5U2VsZWN0ZWRHcm91cDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgb25SZW1vdmVJdGVtczogU3ViamVjdDxBcnJheTx1bmtub3duPj4gPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIG9uVXBkYXRlRGF0YTogU3ViamVjdDxJRGF0YVVwZGF0ZVRvU3RvcmU+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBjbGVhblVwRWZmZWN0ITogRWZmZWN0UmVmO1xuXG4gIHByaXZhdGUgY29tcG9uZW50UmVmPzogQ29tcG9uZW50UmVmPExpYnNVaUNvbXBvbmVudHNMaXN0VGVtcGxhdGVzQ29tcG9uZW50QWJzdHJhY3Q+O1xuICBwcml2YXRlIGNvbmZpZ0RhdGEgPSBzaWduYWw8SUxpc3RDb25maWdJdGVtPih7XG4gICAgdHlwZTogJ3RleHQnLFxuICAgIGNvbmZpZ1RlbXBsYXRlVGV4dDogc2lnbmFsKHtcbiAgICAgIGZpZWxkS2V5OiAnaWQnLFxuICAgICAgZ2V0VmFsdWU6IChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0ubGFiZWwgfHwgaXRlbS5uYW1lO1xuICAgICAgfVxuICAgIH0pXG4gIH0pO1xuICBwcml2YXRlIGdyb3VwTXVsdGlLZXlTZWxlY3RlZCA9IHNpZ25hbDxBcnJheTx1bmtub3duPj4oW10pO1xuICBwcml2YXRlIGZ1bmN0aW9uQ29udHJvbElucHV0U2VhcmNoID0gc2lnbmFsPElJbnB1dEZ1bmN0aW9uQ29udHJvbEV2ZW50IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8vICNyZWdpb24gSU5QVVRcbiAgcmVhZG9ubHkgaGlkZGVuSW5wdXRTZWFyY2ggPSBpbnB1dDxib29sZWFuLCBib29sZWFuIHwgdW5kZWZpbmVkPihmYWxzZSwgeyB0cmFuc2Zvcm06IHZhbHVlID0+IHZhbHVlID8/IGZhbHNlIH0pO1xuICByZWFkb25seSBkcm9wZG93blRhYktleUFjdGl2ZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkga2V5U2VhcmNoID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBwYWRkaW5nTGVmdEl0ZW0gPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBjb25maWcgPSBpbnB1dDxJTGlzdENvbmZpZ0l0ZW0gfCB1bmRlZmluZWQsIElMaXN0Q29uZmlnSXRlbSB8IHVuZGVmaW5lZD4odGhpcy5jb25maWdEYXRhKCksIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IHRoaXMuY29uZmlnRGF0YSgpIH0pO1xuICByZWFkb25seSBhdXRvU2VsZWN0ZWRGaXJzdEl0ZW1DYWxsT3V0c2lkZUJlZm9yZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSBpc1NlYXJjaE9ubGluZSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGRpc2FibGUgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBkaXNhYmxlTGFiZWwgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBsYWJlbENvbmZpZyA9IGlucHV0PElMYWJlbD4oKTtcbiAgcmVhZG9ubHkgc2VhcmNoQ29uZmlnID0gaW5wdXQ8SUlucHV0U2VhcmNoQ29uZmlnLCBJSW5wdXRTZWFyY2hDb25maWcgfCB1bmRlZmluZWQ+KHt9LCB7IHRyYW5zZm9ybTogdmFsdWUgPT4gdmFsdWUgfHwge30gfSk7XG4gIHJlYWRvbmx5IHNlYXJjaFBhZGRpbmcgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBkaXZpZGVyQ2xhc3NJbmNsdWRlID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBoYXNEaXZpZGVyID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IGJ1dHRvbnNPdGhlciA9IGlucHV0PEFycmF5PElCdXR0b24+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBoYXNCdXR0b25VblNlbGVjdE9wdGlvbiA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGNsaWNrRXhhY3RseSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGJhY2tncm91bmRMaXN0Q3VzdG9tID0gaW5wdXQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+KCdiZy1bI2ZmZmZmZl0nLCB7IHRyYW5zZm9ybTogdmFsdWUgPT4gdmFsdWUgPz8gJ2JnLVsjZmZmZmZmXScgfSk7XG4gIHJlYWRvbmx5IG1heEl0ZW1TaG93ID0gaW5wdXQ8bnVtYmVyPigpO1xuICByZWFkb25seSBrZXlTZWxlY3RlZCA9IGlucHV0PHVua25vd24+KCk7XG4gIHJlYWRvbmx5IG11bHRpS2V5U2VsZWN0ZWQgPSBpbnB1dDxBcnJheTx1bmtub3duPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTsvLyBsxrB1IMO9IGtoaSBz4butIGThu6VuZyBsaXN0dmlld1xuICByZWFkb25seSBrZXlzRGlzYWJsZUl0ZW0gPSBpbnB1dDxBcnJheTx1bmtub3duPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTsgLy8ga2jDtG5nIGTDuW5nIGdpw6EgdHLhu4sgbsOgeSBr4bq/dCBo4bujcCB24bubaSB0ZW1wbGF0ZSBjaGVja2JveCBjw7MgY29uZmlnIGNo4bupYSBjb25maWdDaGVja2JveENoZWNrQWxsXG4gIHJlYWRvbmx5IGtleXNIaWRkZW5JdGVtID0gaW5wdXQ8QXJyYXk8dW5rbm93bj4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7IC8vIGtow7RuZyBkw7luZyBnacOhIHRy4buLIG7DoHkga+G6v3QgaOG7o3AgduG7m2kgdGVtcGxhdGUgY2hlY2tib3ggY8OzIGNvbmZpZyBjaOG7qWEgY29uZmlnQ2hlY2tib3hDaGVja0FsbFxuICByZWFkb25seSBmb2N1c0lucHV0U2VhcmNoID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgc2tpcEZvY3VzSW5wdXRXaGVuS2V5U2VhcmNoU3RvcmVVbmRlZmluZWQgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBmdW5jdGlvbkdldEl0ZW1zQXV0b0FkZExpc3QgPSBpbnB1dDwoKCkgPT4gQXJyYXk8YW55PikgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHZhbGlkUmVxdWlyZWQgPSBpbnB1dDxJVmFsaWRSZXF1aXJlZCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2hvd1ZhbGlkYXRlQm90dG9tID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgekluZGV4ID0gaW5wdXQ8bnVtYmVyPigpO1xuICByZWFkb25seSBsb2FkaW5nSWNvblNpemUgPSBpbnB1dDwnbGFyZ2UnIHwgJ21lZGl1bScgfCAnc21hbGwnIHwgJ3NtYWxsZXInIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSB0ZW1wbGF0ZVJlZlNlYXJjaE5vRGF0YSA9IGlucHV0PFRlbXBsYXRlUmVmPFRZUEVfVEVNUExBVEVfUkVGPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgcmVzZXRLZXlXaGVuU2VsZWN0QWxsS2V5RHJvcGRvd24gPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBpZ25vcmVDbGFzc0Rpc2FibGVEZWZhdWx0V2hlblVzZUtleXNEaXNhYmxlSXRlbSA9IGlucHV0PGJvb2xlYW4+KCk7IC8vIGLhu48gY2jhur8gxJHhu5kgZGlzYWJsZSBpdGVtIHRyw6puIGh0bWwgxJHhu4MgZGlzYWJsZSB04burbmcgcGjhuqduIHRyb25nIHJvd3NcblxuICAvLyAjcmVnaW9uIE9VVFBVVFxuICByZWFkb25seSBvdXRTZWxlY3RLZXkgPSBvdXRwdXQ8SUxpc3REYXRhRW1pdEtleSB8IHVuZGVmaW5lZD4oKTsgLy8gc+G7rSBk4bulbmcgY2hvIHR5cGUgY2jhu41uIDFcbiAgcmVhZG9ubHkgb3V0U2VsZWN0TXVsdGlLZXkgPSBvdXRwdXQ8SUxpc3REYXRhRW1pdE11bHRpS2V5IHwgdW5kZWZpbmVkPigpOyAvLyBz4butIGThu6VuZyBjaG8gdHlwZSBjaG8gcGjDqXAgY2jhu41uIG5oaeG7gXUuXG4gIHJlYWRvbmx5IG91dFVuU2VsZWN0TXVsdGlLZXkgPSBvdXRwdXQ8QXJyYXk8dW5rbm93bj4+KCk7IC8vIHPhu60gZOG7pW5nIGNobyB0eXBlIGNobyBwaMOpcCBjaOG7jW4gbmhp4buBdS5cbiAgcmVhZG9ubHkgb3V0Q2xpY2tCdXR0b25PdGhlciA9IG91dHB1dDxJQnV0dG9uPigpO1xuICByZWFkb25seSBvdXRGaWVsZEtleSA9IG91dHB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IG91dENoYW5nZVZpZXcgPSBvdXRwdXQ8QXJyYXk8YW55Pj4oKTtcbiAgcmVhZG9ubHkgb3V0S2V5U2VhcmNoID0gb3V0cHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgb3V0TG9hZGluZyA9IG91dHB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBvdXRGdW5jdGlvbnNDb250cm9sID0gb3V0cHV0PElMaXN0RnVuY3Rpb25Db250cm9sRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IG91dENoYW5nU3RhZ2VGbGFnTW91c2VQb3BvdmVyID0gb3V0cHV0PElGbGFnTW91c2U+KCk7XG4gIHJlYWRvbmx5IG91dExvYWRJdGVtc0NvbXBsZXRlID0gb3V0cHV0PHsgaXRlbXM6IEFycmF5PGFueT4sIHBhZ2luZz86IElQYWdpbmcgfT4oKTtcblxuICAvKiBWSUVXIENISUxEICovXG4gIHByb3RlY3RlZCBsaXN0Vmlld0VsZW1lbnRSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2xpc3RWaWV3Q29udGFpbmVyJyk7XG4gIHByb3RlY3RlZCBjb250ZW50RWxlbWVudFJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPignY29udGVudENvbnRhaW5lcicpO1xuXG4gIC8vICNyZWdpb24gSU5KRUNUXG4gIHByaXZhdGUgZHluYW1pY0NvbXBvbmVudFNlcnZpY2UgPSBpbmplY3QoTGlic1VpRHluYW1pY0NvbXBvbmVudFNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY2xlYW5VcEVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMua2V5U2VhcmNoKCk7XG5cbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmtleVNlYXJjaFN0b3JlKCkgPT09IHRoaXMua2V5U2VhcmNoKCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5rZXlTZWFyY2hTdG9yZS5zZXQodmFsdWUpO1xuICAgICAgICB0aGlzLm9uU2VhcmNoLm5leHQodmFsdWUpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3Qga2V5c0Rpc2FibGVJdGVtID0gdGhpcy5rZXlzRGlzYWJsZUl0ZW0oKTtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGlmICghaXNFbXB0eShrZXlzRGlzYWJsZUl0ZW0pKSB7XG4gICAgICAgICAgdGhpcy5jb21wb25lbnRSZWY/LnNldElucHV0KCdrZXlzRGlzYWJsZUl0ZW0nLCBrZXlzRGlzYWJsZUl0ZW0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBrZXlzSGlkZGVuSXRlbSA9IHRoaXMua2V5c0hpZGRlbkl0ZW0oKTtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGlmICghaXNFbXB0eShrZXlzSGlkZGVuSXRlbSkpIHtcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZj8uc2V0SW5wdXQoJ2tleXNIaWRkZW5JdGVtJywga2V5c0hpZGRlbkl0ZW0pO1xuICAgICAgICAgIHRoaXMub25TZXRIaWRkZW5JdGVtQnlLZXkubmV4dChrZXlzSGlkZGVuSXRlbSBhcyBBcnJheTx1bmtub3duPik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGRpc2FibGUgPSB0aGlzLmRpc2FibGUoKTtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGlmICghaXNFbXB0eShkaXNhYmxlKSkge1xuICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmPy5zZXRJbnB1dCgnZGlzYWJsZScsIGRpc2FibGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBrZXlTZWxlY3RlZCA9IHRoaXMua2V5U2VsZWN0ZWQoKTtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGlmICghaXNFbXB0eShrZXlTZWxlY3RlZCkpIHtcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZj8uc2V0SW5wdXQoJ2tleVNlbGVjdGVkJywga2V5U2VsZWN0ZWQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGxldCBvbGRNdWx0aUtleVNlbGVjdGVkID0gdGhpcy5tdWx0aUtleVNlbGVjdGVkKCk7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IG11bHRpS2V5U2VsZWN0ZWQgPSB0aGlzLm11bHRpS2V5U2VsZWN0ZWQoKTtcbiAgICAgIGlmIChpc0VxdWFsKG9sZE11bHRpS2V5U2VsZWN0ZWQsIG11bHRpS2V5U2VsZWN0ZWQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIG9sZE11bHRpS2V5U2VsZWN0ZWQgPSBtdWx0aUtleVNlbGVjdGVkO1xuICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgaWYgKCFpc0VtcHR5KG11bHRpS2V5U2VsZWN0ZWQpKSB7XG4gICAgICAgICAgdGhpcy5jb21wb25lbnRSZWY/LnNldElucHV0KCdtdWx0aUtleVNlbGVjdGVkJywgbXVsdGlLZXlTZWxlY3RlZCk7XG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlnRGF0YSgpPy50eXBlID09PSAnZ3JvdXAnKSB7XG4gICAgICAgICAgICB0aGlzLm9uVXBkYXRlTXVsdGlLZXlTZWxlY3RlZEdyb3VwLm5leHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZWZmZWN0KHRoaXMucmVmcmVzaC5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMub3V0RnVuY3Rpb25zQ29udHJvbC5lbWl0KHtcbiAgICAgIGNoZWNrSXNWYWxpZDogdGhpcy5jaGVja0lzVmFsaWQuYmluZCh0aGlzKSxcbiAgICAgIHJlZnJlc2g6IHRoaXMucmVmcmVzaC5iaW5kKHRoaXMpLFxuICAgICAgcmVzZXRLZXlTZWxlY3RlZDogdGhpcy5oYW5kbGVyUmVtb3ZlS2V5U2VsZWN0ZWQuYmluZCh0aGlzKSxcbiAgICAgIGdldFJlY3RMaXN0VmlldzogYXN5bmMgKCkgPT4gdGhpcy5saXN0Vmlld0VsZW1lbnRSZWYoKT8ubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbiAgICAgIHJlbW92ZUl0ZW1zOiBhc3luYyAoa2V5cykgPT4gdGhpcy5vblJlbW92ZUl0ZW1zLm5leHQoa2V5cyksXG4gICAgICB1cGRhdGVEYXRhOiBhc3luYyAoZGF0YSkgPT4gdGhpcy5vblVwZGF0ZURhdGEubmV4dChkYXRhKVxuICAgIH0pO1xuXG4gICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWcoKTtcbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuc2V0KHRoaXMuY2xvbmVDb25maWcoY29uZmlnKSlcbiAgICB9XG4gICAgaW5pdENvbmZpZyh0aGlzLmNvbmZpZ0RhdGEoKSk7XG4gICAgY29uc3QgY29tcENsYXNzID0gZ2V0Q29tcG9uZW50QnlUeXBlKHRoaXMuY29uZmlnRGF0YSgpLnR5cGUpO1xuXG4gICAgdGhpcy5jb21wb25lbnRSZWYgPSB0aGlzLmR5bmFtaWNDb21wb25lbnRTZXJ2aWNlLnJlc29sdmVDb21wb25lbnRGYWN0b3J5KGNvbXBDbGFzcyk7XG5cbiAgICB0aW1lcigwKS5waXBlKHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICB0aGlzLmR5bmFtaWNDb21wb25lbnRTZXJ2aWNlLmFkZFRvRWxlbWVudCh0aGlzLmNvbXBvbmVudFJlZiwgdGhpcy5jb250ZW50RWxlbWVudFJlZigpPy5uYXRpdmVFbGVtZW50KTtcbiAgICB9KTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnb25TZXRIaWRkZW5JdGVtQnlLZXknLCB0aGlzLm9uU2V0SGlkZGVuSXRlbUJ5S2V5KTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnY29uZmlnJywgdGhpcy5jb25maWdEYXRhKCkpO1xuXG4gICAgaWYgKHRoaXMuc2VhcmNoQ29uZmlnKCkpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdzZWFyY2hDb25maWcnLCB0aGlzLnNlYXJjaENvbmZpZygpKTtcbiAgICB9XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ29uU2VhcmNoJywgdGhpcy5vblNlYXJjaCk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ29uUmVmcmVzaCcsIHRoaXMub25SZWZyZXNoKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnb25VcGRhdGVEYXRhJywgdGhpcy5vblVwZGF0ZURhdGEpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdrZXlTZWFyY2gnLCB0aGlzLmtleVNlYXJjaFN0b3JlKCkgPz8gJycpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdkcm9wZG93blRhYktleUFjdGl2ZScsIHRoaXMuZHJvcGRvd25UYWJLZXlBY3RpdmUoKSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2NsaWNrRXhhY3RseScsIHRoaXMuY2xpY2tFeGFjdGx5KCkgfHwgZmFsc2UpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdkaXNhYmxlJywgdGhpcy5kaXNhYmxlKCkpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdhdXRvU2VsZWN0ZWRGaXJzdEl0ZW1DYWxsT3V0c2lkZUJlZm9yZScsIHRoaXMuYXV0b1NlbGVjdGVkRmlyc3RJdGVtQ2FsbE91dHNpZGVCZWZvcmUoKSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ3BhZGRpbmdMZWZ0SXRlbScsIHRoaXMucGFkZGluZ0xlZnRJdGVtKCkpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdyZXNldEtleVdoZW5TZWxlY3RBbGxLZXlEcm9wZG93bicsIHRoaXMucmVzZXRLZXlXaGVuU2VsZWN0QWxsS2V5RHJvcGRvd24oKSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2lnbm9yZUNsYXNzRGlzYWJsZURlZmF1bHRXaGVuVXNlS2V5c0Rpc2FibGVJdGVtJywgdGhpcy5pZ25vcmVDbGFzc0Rpc2FibGVEZWZhdWx0V2hlblVzZUtleXNEaXNhYmxlSXRlbSgpKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnZnVuY3Rpb25HZXRJdGVtc0F1dG9BZGRMaXN0JywgdGhpcy5mdW5jdGlvbkdldEl0ZW1zQXV0b0FkZExpc3QoKSk7XG4gICAgaWYgKHRoaXMubWF4SXRlbVNob3coKSkge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ21heEl0ZW1TaG93JywgdGhpcy5tYXhJdGVtU2hvdygpKTtcbiAgICB9XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2tleVNlbGVjdGVkJywgdGhpcy5rZXlTZWxlY3RlZCgpKTtcbiAgICBpZiAodGhpcy5tdWx0aUtleVNlbGVjdGVkKCkpIHtcbiAgICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdtdWx0aUtleVNlbGVjdGVkJywgdGhpcy5tdWx0aUtleVNlbGVjdGVkKCkpO1xuICAgIH1cbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgna2V5c0Rpc2FibGVJdGVtJywgdGhpcy5rZXlzRGlzYWJsZUl0ZW0oKSB8fCBbXSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2tleXNIaWRkZW5JdGVtJywgdGhpcy5rZXlzSGlkZGVuSXRlbSgpIHx8IFtdKTtcbiAgICBpZiAoIWlzTmlsKHRoaXMua2V5U2VsZWN0ZWQoKSkgfHwgdGhpcy5tdWx0aUtleVNlbGVjdGVkKCk/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9uVW5TZWxlY3RPcHRpb24uc2V0KGZhbHNlKTtcbiAgICB9XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ29uVXBkYXRlTXVsdGlLZXlTZWxlY3RlZEdyb3VwJywgdGhpcy5vblVwZGF0ZU11bHRpS2V5U2VsZWN0ZWRHcm91cCk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ29uUmVtb3ZlSXRlbXMnLCB0aGlzLm9uUmVtb3ZlSXRlbXMpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCd6SW5kZXgnLCB0aGlzLnpJbmRleCgpKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnaXNTZWFyY2hPbmxpbmUnLCB0aGlzLmlzU2VhcmNoT25saW5lKCkpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdkaXNhYmxlTGFiZWwnLCB0aGlzLmRpc2FibGVMYWJlbCgpIHx8IGZhbHNlKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnbG9hZGluZ0ljb25TaXplJywgdGhpcy5sb2FkaW5nSWNvblNpemUoKSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ3RlbXBsYXRlUmVmU2VhcmNoTm9EYXRhJywgdGhpcy50ZW1wbGF0ZVJlZlNlYXJjaE5vRGF0YSgpKTtcbiAgICBsZXQga2V5U2VhcmNoID0gJyc7XG5cbiAgICBjb25zdCBpbnN0YW5jZSA9IHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlO1xuXG4gICAgaW5zdGFuY2Uub3V0Q2hhbmdlVmlldy5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICB0aGlzLm91dENoYW5nZVZpZXcuZW1pdChkYXRhKTtcblxuICAgICAgaWYgKHRoaXMuc2tpcEZvY3VzSW5wdXRXaGVuS2V5U2VhcmNoU3RvcmVVbmRlZmluZWQoKSAmJiBpc05pbCh0aGlzLmtleVNlYXJjaFN0b3JlKCkpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmZvY3VzSW5wdXRTZWFyY2goKSAmJiB0aGlzLmtleVNlYXJjaFN0b3JlKCkgIT09IGtleVNlYXJjaCkge1xuICAgICAgICBrZXlTZWFyY2ggPSB0aGlzLmtleVNlYXJjaFN0b3JlKCkgfHwgJyc7XG4gICAgICAgIHRoaXMuZnVuY3Rpb25Db250cm9sSW5wdXRTZWFyY2goKT8uZm9jdXMoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBpbnN0YW5jZS5vdXRTZWxlY3RLZXkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9uVW5TZWxlY3RPcHRpb24uc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMub3V0U2VsZWN0S2V5LmVtaXQoZGF0YSk7XG4gICAgICB0aGlzLmNoZWNrSXNWYWxpZCgpO1xuICAgIH0pO1xuICAgIGluc3RhbmNlLm91dEZpZWxkS2V5LnN1YnNjcmliZSgoZmllbGRLZXk/OiBzdHJpbmcpID0+IHtcbiAgICAgIHRoaXMub3V0RmllbGRLZXkuZW1pdChmaWVsZEtleSk7XG4gICAgfSk7XG4gICAgaW5zdGFuY2Uub3V0TG9hZGluZy5zdWJzY3JpYmUoKGxvYWRpbmc6IGJvb2xlYW4pID0+IHtcbiAgICAgIHRoaXMubG9hZGluZy5zZXQobG9hZGluZyk7XG4gICAgICB0aGlzLm91dExvYWRpbmcuZW1pdChsb2FkaW5nKTtcbiAgICB9KTtcbiAgICBpbnN0YW5jZS5vdXRMb2FkSXRlbXNDb21wbGV0ZS5zdWJzY3JpYmUoKGV2ZW50OiB7IGl0ZW1zOiBBcnJheTxhbnk+LCBwYWdpbmc/OiBJUGFnaW5nIH0pID0+IHtcbiAgICAgIHRoaXMub3V0TG9hZEl0ZW1zQ29tcGxldGUuZW1pdChldmVudCk7XG4gICAgfSk7XG4gICAgaWYgKHRoaXMuY29uZmlnKCkgJiYgdGhpcy5jb25maWcoKT8uY29uZmlnVGVtcGxhdGVUZXh0ICYmIHRoaXMuY29uZmlnKCk/LmNvbmZpZ1RlbXBsYXRlVGV4dD8uKCk/LmFjdGlvblNvcnQpIHtcbiAgICAgIGluc3RhbmNlLm91dFNvcnRTaW5nbGVTZWxlY3Quc3Vic2NyaWJlKGl0ZW1Tb3J0ID0+IHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gdGhpcy5jb25maWcoKTtcbiAgICAgICAgaWYgKGNvbmZpZyAmJiBjb25maWcuY29uZmlnVGVtcGxhdGVUZXh0ICYmIGNvbmZpZy5jb25maWdUZW1wbGF0ZVRleHQoKT8uYWN0aW9uU29ydCkge1xuICAgICAgICAgIGNvbmZpZy5jb25maWdUZW1wbGF0ZVRleHQoKT8uaXRlbVNvcnQ/LnNldChpdGVtU29ydCk7XG4gICAgICAgICAgY29uZmlnLmNvbmZpZ1RlbXBsYXRlVGV4dCgpPy5hY3Rpb25Tb3J0Py4oaXRlbVNvcnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gICAgaW5zdGFuY2Uub3V0Q2hhbmdTdGFnZUZsYWdNb3VzZVBvcG92ZXIuc3Vic2NyaWJlKChmbGFnOiBJRmxhZ01vdXNlKSA9PiB7XG4gICAgICB0aGlzLm91dENoYW5nU3RhZ2VGbGFnTW91c2VQb3BvdmVyLmVtaXQoZmxhZyk7XG4gICAgfSk7XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuY29uZmlnRGF0YSgpPy50eXBlO1xuXG4gICAgaWYgKHR5cGUgPT09ICd0ZXh0JyB8fCB0eXBlID09PSAncmFkaW8nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGluc3RhbmNlLm91dFNlbGVjdE11bHRpS2V5LnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIHRoaXMuZGlzYWJsZUJ1dHRvblVuU2VsZWN0T3B0aW9uLnNldChmYWxzZSk7XG4gICAgICBpZiAodHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgICB0aGlzLmdyb3VwTXVsdGlLZXlTZWxlY3RlZC5zZXQoZGF0YS5rZXlzKTtcbiAgICAgIH1cbiAgICAgIHRoaXMub3V0U2VsZWN0TXVsdGlLZXkuZW1pdChkYXRhKTtcbiAgICAgIHRoaXMuY2hlY2tJc1ZhbGlkKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKiBGVU5DVElPTlMgKi9cbiAgcHJvdGVjdGVkIGhhbmRsZXJTZWFyY2goa2V5U2VhcmNoOiBzdHJpbmcpIHtcbiAgICB0aGlzLmtleVNlYXJjaFN0b3JlLnNldChrZXlTZWFyY2gpO1xuICAgIHRoaXMub25TZWFyY2gubmV4dChrZXlTZWFyY2gpO1xuICAgIHRoaXMub3V0S2V5U2VhcmNoLmVtaXQoa2V5U2VhcmNoKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBhc3luYyBoYW5kbGVyUmVtb3ZlS2V5U2VsZWN0ZWQoKSB7XG4gICAgaWYgKCF0aGlzLmNvbXBvbmVudFJlZikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLm91dFNlbGVjdEtleS5lbWl0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5vdXRTZWxlY3RNdWx0aUtleS5lbWl0KHVuZGVmaW5lZCk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2tleVNlbGVjdGVkJywgJycpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdtdWx0aUtleVNlbGVjdGVkJywgdW5kZWZpbmVkKTtcbiAgICB0aGlzLmRpc2FibGVCdXR0b25VblNlbGVjdE9wdGlvbi5zZXQodHJ1ZSk7XG5cbiAgICBpZiAodGhpcy5jb25maWdEYXRhKCk/LnR5cGUgPT09ICdncm91cCcpIHtcbiAgICAgIHRoaXMub25VcGRhdGVNdWx0aUtleVNlbGVjdGVkR3JvdXAubmV4dCgpO1xuICAgIH1cbiAgICBhd2FpdCB0aGlzLmNoZWNrSXNWYWxpZCgpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGhhbmRsZXJDbGlja0J1dHRvbk90aGVyKGJ1dHRvbjogSUJ1dHRvbikge1xuICAgIHRoaXMub3V0Q2xpY2tCdXR0b25PdGhlci5lbWl0KGJ1dHRvbik7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckZ1bmN0aW9uQ29udHJvbElucHV0U2VhcmNoKGV2ZW50OiBJSW5wdXRGdW5jdGlvbkNvbnRyb2xFdmVudCkge1xuICAgIHRoaXMuZnVuY3Rpb25Db250cm9sSW5wdXRTZWFyY2guc2V0KGV2ZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY2hlY2tJc1ZhbGlkKCkge1xuICAgIGlmICghdGhpcy52YWxpZFJlcXVpcmVkKCkgfHwgIXRoaXMuY29uZmlnKCk/LnR5cGUgfHwgIXRoaXMuY29tcG9uZW50UmVmPy5pbnN0YW5jZSkge1xuICAgICAgdGhpcy5pc0Vycm9yUmVxdWlyZWQuc2V0KGZhbHNlKTtcblxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmNvbmZpZygpPy50eXBlO1xuICAgIGxldCBoYXNLZXkgPSAhaXNFbXB0eSh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5tdWx0aUtleVNlbGVjdGVkKCkpO1xuXG4gICAgaWYgKHR5cGUgPT09ICdncm91cCcpIHtcbiAgICAgIGhhc0tleSA9ICFpc0VtcHR5KHRoaXMuZ3JvdXBNdWx0aUtleVNlbGVjdGVkKCkpO1xuICAgIH1cbiAgICBpZiAodHlwZSA9PT0gJ3RleHQnIHx8IHR5cGUgPT09ICdyYWRpbycpIHtcbiAgICAgIGhhc0tleSA9ICFpc05pbCh0aGlzLmNvbXBvbmVudFJlZi5pbnN0YW5jZS5rZXlTZWxlY3RlZCgpKTtcbiAgICB9XG4gICAgdGhpcy5pc0Vycm9yUmVxdWlyZWQuc2V0KCFoYXNLZXkpO1xuXG4gICAgcmV0dXJuIGhhc0tleTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgcmVmcmVzaCgpIHtcbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZygpO1xuICAgIGlmICghY29uZmlnKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuZHJvcGRvd25UYWJLZXlBY3RpdmUoKTtcblxuICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICB0aGlzLmNvbmZpZ0RhdGEuc2V0KHRoaXMuY2xvbmVDb25maWcoY29uZmlnKSk7XG4gICAgICB0aGlzLm9uUmVmcmVzaC5uZXh0KCk7XG4gICAgfSlcbiAgfVxuXG4gIHByaXZhdGUgY2xvbmVDb25maWcoY29uZmlnSW5wdXQ6IElMaXN0Q29uZmlnSXRlbSk6IElMaXN0Q29uZmlnSXRlbSB7XG4gICAgaWYgKCFjb25maWdJbnB1dCkge1xuICAgICAgcmV0dXJuIHt9IGFzIGFueTtcbiAgICB9XG4gICAgY29uc3Qgc2VydmljZU90aGVyID0gY29uZmlnSW5wdXQuaHR0cFJlcXVlc3REYXRhPy4oKT8uc2VydmljZU90aGVyO1xuICAgIGNvbnN0IHNlcnZpY2VPdGhlclJlcXVlc3RBbGxJZFNlbGVjdE9yVW5TZWxlY3QgPSBjb25maWdJbnB1dC5jb25maWdUZW1wbGF0ZUNoZWNrYm94Py4oKT8uaHR0cFJlcXVlc3RBbGxJZFNlbGVjdE9yVW5TZWxlY3Q/LigpPy5zZXJ2aWNlT3RoZXI7XG5cbiAgICBpZiAoc2VydmljZU90aGVyKSB7XG4gICAgICBjb25maWdJbnB1dC5odHRwUmVxdWVzdERhdGE/LnVwZGF0ZShjdXJyZW50ID0+IHtcbiAgICAgICAgZGVsZXRlIGN1cnJlbnQuc2VydmljZU90aGVyO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHNlcnZpY2VPdGhlclJlcXVlc3RBbGxJZFNlbGVjdE9yVW5TZWxlY3QpIHtcbiAgICAgIGNvbmZpZ0lucHV0LmNvbmZpZ1RlbXBsYXRlQ2hlY2tib3g/LigpPy5odHRwUmVxdWVzdEFsbElkU2VsZWN0T3JVblNlbGVjdD8udXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBkZWxldGUgY3VycmVudC5zZXJ2aWNlT3RoZXI7XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgY29uZmlnID0gY2xvbmVEZWVwKGNvbmZpZ0lucHV0KSBhcyBJTGlzdENvbmZpZ0l0ZW07XG5cbiAgICBpZiAoc2VydmljZU90aGVyICYmIGNvbmZpZy5odHRwUmVxdWVzdERhdGEpIHtcbiAgICAgIGNvbmZpZy5odHRwUmVxdWVzdERhdGEudXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBjdXJyZW50LnNlcnZpY2VPdGhlciA9IHNlcnZpY2VPdGhlcjtcblxuICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChzZXJ2aWNlT3RoZXJSZXF1ZXN0QWxsSWRTZWxlY3RPclVuU2VsZWN0ICYmIGNvbmZpZy5jb25maWdUZW1wbGF0ZUNoZWNrYm94KSB7XG4gICAgICBjb25maWcuY29uZmlnVGVtcGxhdGVDaGVja2JveD8uKCk/Lmh0dHBSZXF1ZXN0QWxsSWRTZWxlY3RPclVuU2VsZWN0Py51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGN1cnJlbnQuc2VydmljZU90aGVyID0gc2VydmljZU90aGVyO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuY2xlYW5VcEVmZmVjdC5kZXN0cm95KCk7XG4gICAgdGhpcy5vdXRMb2FkaW5nLmVtaXQoZmFsc2UpO1xuICAgIHRoaXMuZHluYW1pY0NvbXBvbmVudFNlcnZpY2UucmVtb3ZlKHRoaXMuY29tcG9uZW50UmVmKTtcbiAgICB0aGlzLm9uUmVmcmVzaC5jb21wbGV0ZSgpO1xuICAgIHRoaXMub25TZWFyY2guY29tcGxldGUoKTtcbiAgICB0aGlzLm9uU2V0SGlkZGVuSXRlbUJ5S2V5LmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vblVwZGF0ZU11bHRpS2V5U2VsZWN0ZWRHcm91cC5jb21wbGV0ZSgpO1xuICAgIHRoaXMub25EZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLm9uRGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG59IiwiPGRpdiAjbGlzdFZpZXdDb250YWluZXJcbiAgY2xhc3M9XCJmbGV4IGZsZXgtY29sXCJcbiAgW2NsYXNzLnctZnVsbF09XCIhbWF4SXRlbVNob3dcIlxuICBbY2xhc3MuaC1mdWxsXT1cIiFtYXhJdGVtU2hvd1wiPlxuICBAaWYgKGxhYmVsQ29uZmlnKCk7IGFzIGxhYmVsQ29uZmlnKSB7XG4gICAgPGxpYnNfdWktY29tcG9uZW50cy1sYWJlbCBbY2xhc3NJbmNsdWRlXT1cImxhYmVsQ29uZmlnLmNsYXNzSW5jbHVkZVwiXG4gICAgICBbbGFiZWxMZWZ0XT1cImxhYmVsQ29uZmlnLmxhYmVsTGVmdFwiXG4gICAgICBbbGFiZWxMZWZ0Q2xhc3NdPVwibGFiZWxDb25maWcubGFiZWxMZWZ0Q2xhc3NcIlxuICAgICAgW3JlcXVpcmVkXT1cImxhYmVsQ29uZmlnLnJlcXVpcmVkIFwiXG4gICAgICBbZGVzY3JpcHRpb25dPVwibGFiZWxDb25maWcuZGVzY3JpcHRpb25cIlxuICAgICAgW2Rlc2NyaXB0aW9uQ2xhc3NdPVwibGFiZWxDb25maWcuZGVzY3JpcHRpb25DbGFzc1wiXG4gICAgICBbbGFiZWxSaWdodF09XCJsYWJlbENvbmZpZy5sYWJlbFJpZ2h0XCJcbiAgICAgIFtsYWJlbFJpZ2h0Q2xhc3NdPVwibGFiZWxDb25maWcubGFiZWxSaWdodENsYXNzXCJcbiAgICAgIFtvbmx5U2hvd0NvdW50XT1cImxhYmVsQ29uZmlnLm9ubHlTaG93Q291bnRcIlxuICAgICAgW2J1dHRvbnNMZWZ0XT1cImxhYmVsQ29uZmlnLmJ1dHRvbnNMZWZ0XCJcbiAgICAgIFtidXR0b25zUmlnaHRdPVwibGFiZWxDb25maWcuYnV0dG9uc1JpZ2h0XCJcbiAgICAgIFtkaXNhYmxlQnV0dG9uc0xlZnRdPVwibGFiZWxDb25maWcuZGlzYWJsZUJ1dHRvbnNMZWZ0IHx8IGRpc2FibGUoKVwiXG4gICAgICBbZGlzYWJsZUJ1dHRvbnNSaWdodF09XCJsYWJlbENvbmZpZy5kaXNhYmxlQnV0dG9uc1JpZ2h0IHx8IGRpc2FibGUoKVwiXG4gICAgICBbaGFzVG9nZ2xlXT1cImxhYmVsQ29uZmlnLmhhc1RvZ2dsZVwiXG4gICAgICBbdG9nZ2xlQWN0aXZlXT1cImxhYmVsQ29uZmlnLnRvZ2dsZUFjdGl2ZVwiXG4gICAgICBbdG9nZ2xlRGlzYWJsZV09XCJsYWJlbENvbmZpZy50b2dnbGVEaXNhYmxlIHx8IGxvYWRpbmcoKSB8fCBkaXNhYmxlKClcIlxuICAgICAgW3BvcG92ZXJdPVwibGFiZWxDb25maWcucG9wb3ZlclwiXG4gICAgICBbaWNvblBvcG92ZXJDbGFzc109XCJsYWJlbENvbmZpZy5pY29uUG9wb3ZlckNsYXNzXCJcbiAgICAgIFtvbmx5U2hvd0NvdW50XT1cImxhYmVsQ29uZmlnLm9ubHlTaG93Q291bnRcIlxuICAgICAgW2xpbWl0TGVuZ3RoXT1cImxhYmVsQ29uZmlnLmxpbWl0TGVuZ3RoXCJcbiAgICAgIFtidXR0b25zRGVzY3JpcHRpb25dPVwibGFiZWxDb25maWcuYnV0dG9uc0Rlc2NyaXB0aW9uXCJcbiAgICAgIFtkaXNhYmxlQnV0dG9uc0Rlc2NyaXB0aW9uXT1cImxhYmVsQ29uZmlnLmRpc2FibGVCdXR0b25zRGVzY3JpcHRpb24gfHwgZGlzYWJsZSgpXCJcbiAgICAgIFtidXR0b25zRGVzY3JpcHRpb25Db250YWluZXJDbGFzc109XCJsYWJlbENvbmZpZy5idXR0b25zRGVzY3JpcHRpb25Db250YWluZXJDbGFzc1wiXG4gICAgICBbY291bnRdPVwibGFiZWxDb25maWcuY291bnRcIiAvPlxuICB9XG5cbiAgQGlmICghc2hvd1ZhbGlkYXRlQm90dG9tKCkpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVWYWxpZGF0ZVwiIC8+XG4gIH1cbiAgQGlmICghaGlkZGVuSW5wdXRTZWFyY2goKSkge1xuICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtaW5wdXRzLXNlYXJjaCBbc2VhcmNoQ29uZmlnXT1cInNlYXJjaENvbmZpZygpXCJcbiAgICAgIFtjbGFzcy5weC1bMTJweF1dPVwic2VhcmNoUGFkZGluZygpXCJcbiAgICAgIFtjbGFzc109XCJzZWFyY2hDb25maWcoKS5jbGFzc0NvdmVySW5wdXRTZWFyY2hcIlxuICAgICAgW2Rpc2FibGVdPVwiIGRpc2FibGUoKSB8fCBsb2FkaW5nKCkgfHwgZmFsc2VcIlxuICAgICAgKG91dFNlYXJjaCk9XCJoYW5kbGVyU2VhcmNoKCRldmVudClcIlxuICAgICAgKG91dEZ1bmN0aW9uc0NvbnRyb2wpPVwiaGFuZGxlckZ1bmN0aW9uQ29udHJvbElucHV0U2VhcmNoKCRldmVudClcIiAvPlxuICB9XG4gIEBpZiAoY29uZmlnKCk/LmNvbmZpZ0Rlc2NyaXB0aW9uR3JvdXA/LigpOyBhcyBkZXNjcmlwdGlvbikge1xuICAgIDxkaXYgW2NsYXNzXT1cImRlc2NyaXB0aW9uPy5jbGFzc0luY2x1ZGVcIj5cbiAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtcG9wb3ZlciBbY29uZmlnXT1cImRlc2NyaXB0aW9uPy50b29sdGlwRGVzY3JpcHRpb24oKVwiPlxuICAgICAgICA8ZGl2IFtjbGFzc109XCJkZXNjcmlwdGlvbj8uY2xhc3NUZXh0RGVzY3JpcHRpb25JbmNsdWRlXCI+e3sgZGVzY3JpcHRpb24udGV4dERlc2NyaXB0aW9uIH19PC9kaXY+XG4gICAgICA8L2xpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyPlxuICAgIDwvZGl2PlxuICB9XG4gIEBpZiAoIWhpZGRlbklucHV0U2VhcmNoKCkgJiYgaGFzRGl2aWRlcigpICYmICghY29uZmlnKCk/Lmlnbm9yZVNob3dEYXRhV2hlbk5vdFNlYXJjaCB8fCBrZXlTZWFyY2hTdG9yZSgpKSkge1xuICAgIDxkaXYgY2xhc3M9XCJsaWJzLXVpLWJvcmRlci10b3AtZ2VuZXJhbCB7eyBkaXZpZGVyQ2xhc3NJbmNsdWRlKCkgPyBkaXZpZGVyQ2xhc3NJbmNsdWRlKCk6JycgfX1cIlxuICAgICAgW2NsYXNzLmxpYnMtdWktZGl2aWRlci1kZWZhdWx0XT1cIiEhc2VhcmNoUGFkZGluZygpICYmICFkaXZpZGVyQ2xhc3NJbmNsdWRlKClcIj5cbiAgICA8L2Rpdj5cbiAgfVxuICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbCB7eyAoY29uZmlnKCk/Lmlnbm9yZVNob3dEYXRhV2hlbk5vdFNlYXJjaCAmJiBrZXlTZWFyY2hTdG9yZSgpICYmICFjb25maWcoKT8uaWdub3JlRml4SGVpZ2h0U2hvd0RhdGFXaGVuTm90U2VhcmNoKSA/ICdoLVszNTNweF0nIDogJ2gtZnVsbCcgfX1cIj5cbiAgICA8ZGl2ICNjb250ZW50Q29udGFpbmVyXG4gICAgICBjbGFzcz1cInctZnVsbCBoLWZ1bGwge3sgYmFja2dyb3VuZExpc3RDdXN0b20oKSB9fVwiXG4gICAgICBbY2xhc3MubGlicy11aS1kaXNhYmxlXT1cImRpc2FibGUoKSAmJiBkaXNhYmxlTGFiZWwoKVwiXG4gICAgICBbY2xhc3MucG9pbnRlci1ldmVudHMtbm9uZV09XCJkaXNhYmxlKCkgJiYgZGlzYWJsZUxhYmVsKClcIj5cbiAgICA8L2Rpdj5cblxuICAgIEBmb3IgKGJ1dHRvbk90aGVyIG9mIGJ1dHRvbnNPdGhlcigpOyB0cmFjayAkaW5kZXgpIHtcbiAgICAgIDxkaXYgY2xhc3M9XCJiZy1bI2ZmZmZmZl1cIlxuICAgICAgICBbY2xhc3Mucm91bmRlZC1iLVs0cHhdXT1cIiRsYXN0ICYmICFoYXNCdXR0b25VblNlbGVjdE9wdGlvbigpXCI+XG4gICAgICAgIDxsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1idXR0b24gW3R5cGVdPVwiYnV0dG9uT3RoZXIudHlwZSB8fCAnYnV0dG9uLWxpbmstcHJpbWFyeSdcIlxuICAgICAgICAgIFtsYWJlbF09XCJidXR0b25PdGhlci5sYWJlbCB8fCAnICdcIlxuICAgICAgICAgIFtjbGFzc0ljb25MZWZ0XT1cIihidXR0b25PdGhlci5jbGFzc0ljb25MZWZ0IHx8ICcnKSsnIGZsZXggbXItWzhweF0gdGV4dC1bMTZweF0nXCJcbiAgICAgICAgICBjbGFzc0luY2x1ZGU9XCJ3LWZ1bGwgbGlicy11aS1ib3JkZXItdG9wLWdlbmVyYWwgdGV4dC1sZWZ0IHJvdW5kZWQtMCB7eyBidXR0b25PdGhlci5jbGFzc0luY2x1ZGUgPyBidXR0b25PdGhlci5jbGFzc0luY2x1ZGU6JycgfX1cIlxuICAgICAgICAgIGNsYXNzTGFiZWw9XCJsaWJzLXVpLWZvbnQtaDVyIHdoaXRlc3BhY2Utbm9ybWFsXCJcbiAgICAgICAgICBbZGlzYWJsZV09XCJidXR0b25PdGhlci5kaXNhYmxlIHx8IGRpc2FibGUoKSB8fCBsb2FkaW5nKCkgfHwgZmFsc2VcIlxuICAgICAgICAgIChvdXRDbGljayk9XCJoYW5kbGVyQ2xpY2tCdXR0b25PdGhlcihidXR0b25PdGhlcilcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICAgIEBpZiAoaGFzQnV0dG9uVW5TZWxlY3RPcHRpb24oKSkge1xuICAgICAgPGRpdiBjbGFzcz1cImJnLVsjZmZmZmZmXSByb3VuZGVkLWItWzRweF1cIj5cbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbiBsYWJlbD1cImkxOG5fdW5zZWxlY3Rfb3B0aW9uXCJcbiAgICAgICAgICB0eXBlPVwiYnV0dG9uLWxpbmstZGFuZ2VyLWhpZ2hcIlxuICAgICAgICAgIGNsYXNzSWNvbkxlZnQ9XCJmbGV4IG1yLVs4cHhdIGxpYnMtdWktaWNvbi1jbG9zZVwiXG4gICAgICAgICAgY2xhc3NJbmNsdWRlPVwidy0xMDAgbGlicy11aS1ib3JkZXItdG9wLWdlbmVyYWwgdGV4dC1sZWZ0IHJvdW5kZWQtMFwiXG4gICAgICAgICAgY2xhc3NMYWJlbD1cImxpYnMtdWktZm9udC1oNXIgd2hpdGVzcGFjZS1ub3JtYWxcIlxuICAgICAgICAgIFtkaXNhYmxlXT1cImRpc2FibGVCdXR0b25VblNlbGVjdE9wdGlvbigpIHx8IGRpc2FibGUoKSB8fCBsb2FkaW5nKCkgfHwgZmFsc2VcIlxuICAgICAgICAgIChvdXRDbGljayk9XCJoYW5kbGVyUmVtb3ZlS2V5U2VsZWN0ZWQoKVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gIDwvZGl2PlxuICBAaWYgKHNob3dWYWxpZGF0ZUJvdHRvbSgpKSB7XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInRlbXBsYXRlVmFsaWRhdGVcIiAvPlxuICB9XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICN0ZW1wbGF0ZVZhbGlkYXRlPlxuICBAaWYgKGlzRXJyb3JSZXF1aXJlZCgpKSB7XG4gICAgPGRpdiBbY2xhc3MubWItWzhweF1dPVwiIXNob3dWYWxpZGF0ZUJvdHRvbSgpXCJcbiAgICAgIFtjbGFzcy5tdC1bOHB4XV09XCJzaG93VmFsaWRhdGVCb3R0b20oKVwiPlxuICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LVsjZWUyZDQxXSBsaWJzLXVpLWZvbnQtaDdcIlxuICAgICAgICBbaW5uZXJIdG1sXT1cIih2YWxpZFJlcXVpcmVkKCk/Lm1lc3NhZ2UgfHwgRVJST1JfTUVTU0FHRV9FTVBUWV9WQUxJRCl8IHRyYW5zbGF0ZTp2YWxpZFJlcXVpcmVkKCk/LmludGVycG9sYXRlUGFyYW1zXCI+XG4gICAgICA8L3NwYW4+XG4gICAgPC9kaXY+XG4gIH1cbjwvbmctdGVtcGxhdGU+XG4iXX0=
372
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvbGlzdC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvbGlzdC9zcmMvbGlzdC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSx1REFBdUQ7QUFDdkQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDbkQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBZ0IsTUFBTSxFQUF5QixNQUFNLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQUUsTUFBTSxFQUFlLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDck0sT0FBTyxFQUFXLHNDQUFzQyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFckcsT0FBTyxFQUFzQixxQ0FBcUMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRTlHLE9BQU8sRUFBVSw4QkFBOEIsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ25GLE9BQU8sRUFBYyxnQ0FBZ0MsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRTNGLE9BQU8sRUFBRSw2QkFBNkIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxTQUFTLEVBQUUseUJBQXlCLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLE9BQU8sRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxVQUFVLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQzs7O0FBb0J2RSxNQUFNLE9BQU8sNkJBQTZCO0lB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b3VyY2VzQ29udGVudCI6WyJcbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IE5nVGVtcGxhdGVPdXRsZXQgfSBmcm9tIFwiQGFuZ3VsYXIvY29tbW9uXCI7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBDb21wb25lbnRSZWYsIGVmZmVjdCwgRWZmZWN0UmVmLCBFbGVtZW50UmVmLCBpbmplY3QsIGlucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgb3V0cHV0LCBzaWduYWwsIFRlbXBsYXRlUmVmLCB1bnRyYWNrZWQsIHZpZXdDaGlsZCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBJQnV0dG9uLCBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uXCI7XG5pbXBvcnQgeyBJSW5wdXRGdW5jdGlvbkNvbnRyb2xFdmVudCB9IGZyb20gXCJAbGlicy11aS9jb21wb25lbnRzLWlucHV0cy1pbnB1dFwiO1xuaW1wb3J0IHsgSUlucHV0U2VhcmNoQ29uZmlnLCBMaWJzVWlDb21wb25lbnRzSW5wdXRzU2VhcmNoQ29tcG9uZW50IH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtaW5wdXRzLXNlYXJjaFwiO1xuaW1wb3J0IHsgSVZhbGlkUmVxdWlyZWQgfSBmcm9tIFwiQGxpYnMtdWkvY29tcG9uZW50cy1pbnB1dHMtdmFsaWRcIjtcbmltcG9ydCB7IElMYWJlbCwgTGlic1VpQ29tcG9uZW50c0xhYmVsQ29tcG9uZW50IH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtbGFiZWxcIjtcbmltcG9ydCB7IElGbGFnTW91c2UsIExpYnNVaUNvbXBvbmVudHNQb3BvdmVyQ29tcG9uZW50IH0gZnJvbSBcIkBsaWJzLXVpL2NvbXBvbmVudHMtcG9wb3ZlclwiO1xuaW1wb3J0IHsgSVBhZ2luZywgVFlQRV9URU1QTEFURV9SRUYgfSBmcm9tIFwiQGxpYnMtdWkvaW50ZXJmYWNlcy10eXBlc1wiO1xuaW1wb3J0IHsgTGlic1VpRHluYW1pY0NvbXBvbmVudFNlcnZpY2UgfSBmcm9tIFwiQGxpYnMtdWkvc2VydmljZXMtZHluYW1pYy1jb21wb25lbnRcIjtcbmltcG9ydCB7IGNsb25lRGVlcCwgRVJST1JfTUVTU0FHRV9FTVBUWV9WQUxJRCwgaXNFbXB0eSwgaXNFcXVhbCwgaXNOaWwgfSBmcm9tIFwiQGxpYnMtdWkvdXRpbHNcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gXCJAbmd4LXRyYW5zbGF0ZS9jb3JlXCI7XG5pbXBvcnQgeyBTdWJqZWN0LCB0YWtlVW50aWwsIHRpbWVyIH0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7IGdldENvbXBvbmVudEJ5VHlwZSwgaW5pdENvbmZpZyB9IGZyb20gXCIuL2RlZmluZXMvbGlzdC5kZWZpbmVcIjtcbmltcG9ydCB7IElEYXRhVXBkYXRlVG9TdG9yZSwgSUxpc3RDb25maWdJdGVtLCBJTGlzdEZ1bmN0aW9uQ29udHJvbEV2ZW50IH0gZnJvbSBcIi4vaW50ZXJmYWNlc1wiO1xuaW1wb3J0IHsgSUxpc3REYXRhRW1pdEtleSwgSUxpc3REYXRhRW1pdE11bHRpS2V5IH0gZnJvbSBcIi4vaW50ZXJmYWNlcy9kYXRhLWVtaXQuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzTGlzdFRlbXBsYXRlc0NvbXBvbmVudEFic3RyYWN0IH0gZnJvbSBcIi4vdGVtcGxhdGVzL3RlbXBsYXRlcy5jb21wb25lbnQuYWJzdHJhY3RcIjtcblxuQENvbXBvbmVudCh7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYW5ndWxhci1lc2xpbnQvY29tcG9uZW50LXNlbGVjdG9yXG4gIHNlbGVjdG9yOiAnbGlic191aS1jb21wb25lbnRzLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3QuY29tcG9uZW50LnNjc3MnXSxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGltcG9ydHM6IFtcbiAgICBOZ1RlbXBsYXRlT3V0bGV0LCBUcmFuc2xhdGVNb2R1bGUsXG4gICAgTGlic1VpQ29tcG9uZW50c0xhYmVsQ29tcG9uZW50LFxuICAgIExpYnNVaUNvbXBvbmVudHNJbnB1dHNTZWFyY2hDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJDb21wb25lbnQsXG4gICAgTGlic1VpQ29tcG9uZW50c0J1dHRvbnNCdXR0b25Db21wb25lbnRcbiAgXVxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzTGlzdENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95IHtcbiAgLy8gI3JlZ2lvbiBQUk9QRVJUWVxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgRVJST1JfTUVTU0FHRV9FTVBUWV9WQUxJRCA9IEVSUk9SX01FU1NBR0VfRU1QVFlfVkFMSUQ7XG4gIHByb3RlY3RlZCBkaXNhYmxlQnV0dG9uVW5TZWxlY3RPcHRpb24gPSBzaWduYWw8Ym9vbGVhbj4odHJ1ZSk7XG4gIHByb3RlY3RlZCBpc0Vycm9yUmVxdWlyZWQgPSBzaWduYWw8Ym9vbGVhbj4oZmFsc2UpO1xuICBwcm90ZWN0ZWQgbG9hZGluZyA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG4gIHByb3RlY3RlZCBrZXlTZWFyY2hTdG9yZSA9IHNpZ25hbDxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgcHJpdmF0ZSBvbkRlc3Ryb3k6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIG9uU2VhcmNoOiBTdWJqZWN0PHN0cmluZyB8IHVuZGVmaW5lZD4gPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIG9uUmVmcmVzaDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgb25TZXRIaWRkZW5JdGVtQnlLZXk6IFN1YmplY3Q8QXJyYXk8dW5rbm93bj4+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBvblVwZGF0ZU11bHRpS2V5U2VsZWN0ZWRHcm91cDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0KCk7XG4gIHByaXZhdGUgb25SZW1vdmVJdGVtczogU3ViamVjdDxBcnJheTx1bmtub3duPj4gPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIG9uVXBkYXRlRGF0YTogU3ViamVjdDxJRGF0YVVwZGF0ZVRvU3RvcmU+ID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBjbGVhblVwRWZmZWN0ITogRWZmZWN0UmVmO1xuXG4gIHByaXZhdGUgY29tcG9uZW50UmVmPzogQ29tcG9uZW50UmVmPExpYnNVaUNvbXBvbmVudHNMaXN0VGVtcGxhdGVzQ29tcG9uZW50QWJzdHJhY3Q+O1xuICBwcml2YXRlIGNvbmZpZ0RhdGEgPSBzaWduYWw8SUxpc3RDb25maWdJdGVtPih7XG4gICAgdHlwZTogJ3RleHQnLFxuICAgIGNvbmZpZ1RlbXBsYXRlVGV4dDogc2lnbmFsKHtcbiAgICAgIGZpZWxkS2V5OiAnaWQnLFxuICAgICAgZ2V0VmFsdWU6IChpdGVtOiBhbnkpID0+IHtcbiAgICAgICAgcmV0dXJuIGl0ZW0ubGFiZWwgfHwgaXRlbS5uYW1lO1xuICAgICAgfVxuICAgIH0pXG4gIH0pO1xuICBwcml2YXRlIGdyb3VwTXVsdGlLZXlTZWxlY3RlZCA9IHNpZ25hbDxBcnJheTx1bmtub3duPj4oW10pO1xuICBwcml2YXRlIGZ1bmN0aW9uQ29udHJvbElucHV0U2VhcmNoID0gc2lnbmFsPElJbnB1dEZ1bmN0aW9uQ29udHJvbEV2ZW50IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG4gIC8vICNyZWdpb24gSU5QVVRcbiAgcmVhZG9ubHkgaGlkZGVuSW5wdXRTZWFyY2ggPSBpbnB1dDxib29sZWFuLCBib29sZWFuIHwgdW5kZWZpbmVkPihmYWxzZSwgeyB0cmFuc2Zvcm06IHZhbHVlID0+IHZhbHVlID8/IGZhbHNlIH0pO1xuICByZWFkb25seSBkcm9wZG93blRhYktleUFjdGl2ZSA9IGlucHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkga2V5U2VhcmNoID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBwYWRkaW5nTGVmdEl0ZW0gPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBjb25maWcgPSBpbnB1dDxJTGlzdENvbmZpZ0l0ZW0gfCB1bmRlZmluZWQsIElMaXN0Q29uZmlnSXRlbSB8IHVuZGVmaW5lZD4odGhpcy5jb25maWdEYXRhKCksIHsgdHJhbnNmb3JtOiAodmFsdWUpID0+IHZhbHVlID8/IHRoaXMuY29uZmlnRGF0YSgpIH0pO1xuICByZWFkb25seSBhdXRvU2VsZWN0ZWRGaXJzdEl0ZW1DYWxsT3V0c2lkZUJlZm9yZSA9IGlucHV0PGJvb2xlYW4+KGZhbHNlKTtcblxuICByZWFkb25seSBpc1NlYXJjaE9ubGluZSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGRpc2FibGUgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBkaXNhYmxlTGFiZWwgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBsYWJlbENvbmZpZyA9IGlucHV0PElMYWJlbD4oKTtcbiAgcmVhZG9ubHkgc2VhcmNoQ29uZmlnID0gaW5wdXQ8SUlucHV0U2VhcmNoQ29uZmlnLCBJSW5wdXRTZWFyY2hDb25maWcgfCB1bmRlZmluZWQ+KHt9LCB7IHRyYW5zZm9ybTogdmFsdWUgPT4gdmFsdWUgfHwge30gfSk7XG4gIHJlYWRvbmx5IHNlYXJjaFBhZGRpbmcgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBkaXZpZGVyQ2xhc3NJbmNsdWRlID0gaW5wdXQ8c3RyaW5nPigpO1xuICByZWFkb25seSBoYXNEaXZpZGVyID0gaW5wdXQ8Ym9vbGVhbj4odHJ1ZSk7XG4gIHJlYWRvbmx5IGJ1dHRvbnNPdGhlciA9IGlucHV0PEFycmF5PElCdXR0b24+IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSBoYXNCdXR0b25VblNlbGVjdE9wdGlvbiA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGNsaWNrRXhhY3RseSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGJhY2tncm91bmRMaXN0Q3VzdG9tID0gaW5wdXQ8c3RyaW5nLCBzdHJpbmcgfCB1bmRlZmluZWQ+KCdiZy1bI2ZmZmZmZl0nLCB7IHRyYW5zZm9ybTogdmFsdWUgPT4gdmFsdWUgPz8gJ2JnLVsjZmZmZmZmXScgfSk7XG4gIHJlYWRvbmx5IG1heEl0ZW1TaG93ID0gaW5wdXQ8bnVtYmVyPigpO1xuICByZWFkb25seSBrZXlTZWxlY3RlZCA9IGlucHV0PHVua25vd24+KCk7XG4gIHJlYWRvbmx5IG11bHRpS2V5U2VsZWN0ZWQgPSBpbnB1dDxBcnJheTx1bmtub3duPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTsvLyBsxrB1IMO9IGtoaSBz4butIGThu6VuZyBsaXN0dmlld1xuICByZWFkb25seSBrZXlzRGlzYWJsZUl0ZW0gPSBpbnB1dDxBcnJheTx1bmtub3duPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTsgLy8ga2jDtG5nIGTDuW5nIGdpw6EgdHLhu4sgbsOgeSBr4bq/dCBo4bujcCB24bubaSB0ZW1wbGF0ZSBjaGVja2JveCBjw7MgY29uZmlnIGNo4bupYSBjb25maWdDaGVja2JveENoZWNrQWxsXG4gIHJlYWRvbmx5IGtleXNIaWRkZW5JdGVtID0gaW5wdXQ8QXJyYXk8dW5rbm93bj4gfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7IC8vIGtow7RuZyBkw7luZyBnacOhIHRy4buLIG7DoHkga+G6v3QgaOG7o3AgduG7m2kgdGVtcGxhdGUgY2hlY2tib3ggY8OzIGNvbmZpZyBjaOG7qWEgY29uZmlnQ2hlY2tib3hDaGVja0FsbFxuICByZWFkb25seSBmb2N1c0lucHV0U2VhcmNoID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgc2tpcEZvY3VzSW5wdXRXaGVuS2V5U2VhcmNoU3RvcmVVbmRlZmluZWQgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBmdW5jdGlvbkdldEl0ZW1zQXV0b0FkZExpc3QgPSBpbnB1dDwoKCkgPT4gQXJyYXk8YW55PikgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG4gIHJlYWRvbmx5IHZhbGlkUmVxdWlyZWQgPSBpbnB1dDxJVmFsaWRSZXF1aXJlZCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgc2hvd1ZhbGlkYXRlQm90dG9tID0gaW5wdXQ8Ym9vbGVhbj4oKTtcbiAgcmVhZG9ubHkgekluZGV4ID0gaW5wdXQ8bnVtYmVyPigpO1xuICByZWFkb25seSBsb2FkaW5nSWNvblNpemUgPSBpbnB1dDwnbGFyZ2UnIHwgJ21lZGl1bScgfCAnc21hbGwnIHwgJ3NtYWxsZXInIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuICByZWFkb25seSB0ZW1wbGF0ZVJlZlNlYXJjaE5vRGF0YSA9IGlucHV0PFRlbXBsYXRlUmVmPFRZUEVfVEVNUExBVEVfUkVGPiB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcbiAgcmVhZG9ubHkgcmVzZXRLZXlXaGVuU2VsZWN0QWxsS2V5RHJvcGRvd24gPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBpZ25vcmVDbGFzc0Rpc2FibGVEZWZhdWx0V2hlblVzZUtleXNEaXNhYmxlSXRlbSA9IGlucHV0PGJvb2xlYW4+KCk7IC8vIGLhu48gY2jhur8gxJHhu5kgZGlzYWJsZSBpdGVtIHRyw6puIGh0bWwgxJHhu4MgZGlzYWJsZSB04burbmcgcGjhuqduIHRyb25nIHJvd3NcblxuICAvLyAjcmVnaW9uIE9VVFBVVFxuICByZWFkb25seSBvdXRTZWxlY3RLZXkgPSBvdXRwdXQ8SUxpc3REYXRhRW1pdEtleSB8IHVuZGVmaW5lZD4oKTsgLy8gc+G7rSBk4bulbmcgY2hvIHR5cGUgY2jhu41uIDFcbiAgcmVhZG9ubHkgb3V0U2VsZWN0TXVsdGlLZXkgPSBvdXRwdXQ8SUxpc3REYXRhRW1pdE11bHRpS2V5IHwgdW5kZWZpbmVkPigpOyAvLyBz4butIGThu6VuZyBjaG8gdHlwZSBjaG8gcGjDqXAgY2jhu41uIG5oaeG7gXUuXG4gIHJlYWRvbmx5IG91dFVuU2VsZWN0TXVsdGlLZXkgPSBvdXRwdXQ8QXJyYXk8dW5rbm93bj4+KCk7IC8vIHPhu60gZOG7pW5nIGNobyB0eXBlIGNobyBwaMOpcCBjaOG7jW4gbmhp4buBdS5cbiAgcmVhZG9ubHkgb3V0Q2xpY2tCdXR0b25PdGhlciA9IG91dHB1dDxJQnV0dG9uPigpO1xuICByZWFkb25seSBvdXRGaWVsZEtleSA9IG91dHB1dDxzdHJpbmcgfCB1bmRlZmluZWQ+KCk7XG4gIHJlYWRvbmx5IG91dENoYW5nZVZpZXcgPSBvdXRwdXQ8QXJyYXk8YW55Pj4oKTtcbiAgcmVhZG9ubHkgb3V0S2V5U2VhcmNoID0gb3V0cHV0PHN0cmluZz4oKTtcbiAgcmVhZG9ubHkgb3V0TG9hZGluZyA9IG91dHB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBvdXRGdW5jdGlvbnNDb250cm9sID0gb3V0cHV0PElMaXN0RnVuY3Rpb25Db250cm9sRXZlbnQ+KCk7XG4gIHJlYWRvbmx5IG91dENoYW5nU3RhZ2VGbGFnTW91c2VQb3BvdmVyID0gb3V0cHV0PElGbGFnTW91c2U+KCk7XG4gIHJlYWRvbmx5IG91dExvYWRJdGVtc0NvbXBsZXRlID0gb3V0cHV0PHsgaXRlbXM6IEFycmF5PGFueT4sIHBhZ2luZz86IElQYWdpbmcgfT4oKTtcblxuICAvKiBWSUVXIENISUxEICovXG4gIHByb3RlY3RlZCBsaXN0Vmlld0VsZW1lbnRSZWYgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2xpc3RWaWV3Q29udGFpbmVyJyk7XG4gIHByb3RlY3RlZCBjb250ZW50RWxlbWVudFJlZiA9IHZpZXdDaGlsZDxFbGVtZW50UmVmPignY29udGVudENvbnRhaW5lcicpO1xuXG4gIC8vICNyZWdpb24gSU5KRUNUXG4gIHByaXZhdGUgZHluYW1pY0NvbXBvbmVudFNlcnZpY2UgPSBpbmplY3QoTGlic1VpRHluYW1pY0NvbXBvbmVudFNlcnZpY2UpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuY2xlYW5VcEVmZmVjdCA9IGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMua2V5U2VhcmNoKCk7XG5cbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLmtleVNlYXJjaFN0b3JlKCkgPT09IHRoaXMua2V5U2VhcmNoKCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5rZXlTZWFyY2hTdG9yZS5zZXQodmFsdWUpO1xuICAgICAgICB0aGlzLm9uU2VhcmNoLm5leHQodmFsdWUpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3Qga2V5c0Rpc2FibGVJdGVtID0gdGhpcy5rZXlzRGlzYWJsZUl0ZW0oKTtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGlmICghaXNOaWwoa2V5c0Rpc2FibGVJdGVtKSkge1xuICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmPy5zZXRJbnB1dCgna2V5c0Rpc2FibGVJdGVtJywga2V5c0Rpc2FibGVJdGVtKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3Qga2V5c0hpZGRlbkl0ZW0gPSB0aGlzLmtleXNIaWRkZW5JdGVtKCk7XG4gICAgICB1bnRyYWNrZWQoKCkgPT4ge1xuICAgICAgICBpZiAoIWlzTmlsKGtleXNIaWRkZW5JdGVtKSkge1xuICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmPy5zZXRJbnB1dCgna2V5c0hpZGRlbkl0ZW0nLCBrZXlzSGlkZGVuSXRlbSk7XG4gICAgICAgICAgdGhpcy5vblNldEhpZGRlbkl0ZW1CeUtleS5uZXh0KGtleXNIaWRkZW5JdGVtIGFzIEFycmF5PHVua25vd24+KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBlZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgZGlzYWJsZSA9IHRoaXMuZGlzYWJsZSgpO1xuICAgICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgICAgaWYgKCFpc05pbChkaXNhYmxlKSkge1xuICAgICAgICAgIHRoaXMuY29tcG9uZW50UmVmPy5zZXRJbnB1dCgnZGlzYWJsZScsIGRpc2FibGUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBrZXlTZWxlY3RlZCA9IHRoaXMua2V5U2VsZWN0ZWQoKTtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGlmICghaXNOaWwoa2V5U2VsZWN0ZWQpKSB7XG4gICAgICAgICAgdGhpcy5jb21wb25lbnRSZWY/LnNldElucHV0KCdrZXlTZWxlY3RlZCcsIGtleVNlbGVjdGVkKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBsZXQgb2xkTXVsdGlLZXlTZWxlY3RlZCA9IHRoaXMubXVsdGlLZXlTZWxlY3RlZCgpO1xuICAgIGVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBtdWx0aUtleVNlbGVjdGVkID0gdGhpcy5tdWx0aUtleVNlbGVjdGVkKCk7XG4gICAgICBpZiAoaXNFcXVhbChvbGRNdWx0aUtleVNlbGVjdGVkLCBtdWx0aUtleVNlbGVjdGVkKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBvbGRNdWx0aUtleVNlbGVjdGVkID0gbXVsdGlLZXlTZWxlY3RlZDtcbiAgICAgIHVudHJhY2tlZCgoKSA9PiB7XG4gICAgICAgIGlmICghaXNOaWwobXVsdGlLZXlTZWxlY3RlZCkpIHtcbiAgICAgICAgICB0aGlzLmNvbXBvbmVudFJlZj8uc2V0SW5wdXQoJ211bHRpS2V5U2VsZWN0ZWQnLCBtdWx0aUtleVNlbGVjdGVkKTtcbiAgICAgICAgICBpZiAodGhpcy5jb25maWdEYXRhKCk/LnR5cGUgPT09ICdncm91cCcpIHtcbiAgICAgICAgICAgIHRoaXMub25VcGRhdGVNdWx0aUtleVNlbGVjdGVkR3JvdXAubmV4dCgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBlZmZlY3QodGhpcy5yZWZyZXNoLmJpbmQodGhpcykpO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5vdXRGdW5jdGlvbnNDb250cm9sLmVtaXQoe1xuICAgICAgY2hlY2tJc1ZhbGlkOiB0aGlzLmNoZWNrSXNWYWxpZC5iaW5kKHRoaXMpLFxuICAgICAgcmVmcmVzaDogdGhpcy5yZWZyZXNoLmJpbmQodGhpcyksXG4gICAgICByZXNldEtleVNlbGVjdGVkOiB0aGlzLmhhbmRsZXJSZW1vdmVLZXlTZWxlY3RlZC5iaW5kKHRoaXMpLFxuICAgICAgZ2V0UmVjdExpc3RWaWV3OiBhc3luYyAoKSA9PiB0aGlzLmxpc3RWaWV3RWxlbWVudFJlZigpPy5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLFxuICAgICAgcmVtb3ZlSXRlbXM6IGFzeW5jIChrZXlzKSA9PiB0aGlzLm9uUmVtb3ZlSXRlbXMubmV4dChrZXlzKSxcbiAgICAgIHVwZGF0ZURhdGE6IGFzeW5jIChkYXRhKSA9PiB0aGlzLm9uVXBkYXRlRGF0YS5uZXh0KGRhdGEpXG4gICAgfSk7XG5cbiAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZygpO1xuICAgIGlmIChjb25maWcpIHtcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5zZXQodGhpcy5jbG9uZUNvbmZpZyhjb25maWcpKVxuICAgIH1cbiAgICBpbml0Q29uZmlnKHRoaXMuY29uZmlnRGF0YSgpKTtcbiAgICBjb25zdCBjb21wQ2xhc3MgPSBnZXRDb21wb25lbnRCeVR5cGUodGhpcy5jb25maWdEYXRhKCkudHlwZSk7XG5cbiAgICB0aGlzLmNvbXBvbmVudFJlZiA9IHRoaXMuZHluYW1pY0NvbXBvbmVudFNlcnZpY2UucmVzb2x2ZUNvbXBvbmVudEZhY3RvcnkoY29tcENsYXNzKTtcblxuICAgIHRpbWVyKDApLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuZHluYW1pY0NvbXBvbmVudFNlcnZpY2UuYWRkVG9FbGVtZW50KHRoaXMuY29tcG9uZW50UmVmLCB0aGlzLmNvbnRlbnRFbGVtZW50UmVmKCk/Lm5hdGl2ZUVsZW1lbnQpO1xuICAgIH0pO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdvblNldEhpZGRlbkl0ZW1CeUtleScsIHRoaXMub25TZXRIaWRkZW5JdGVtQnlLZXkpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdjb25maWcnLCB0aGlzLmNvbmZpZ0RhdGEoKSk7XG5cbiAgICBpZiAodGhpcy5zZWFyY2hDb25maWcoKSkge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ3NlYXJjaENvbmZpZycsIHRoaXMuc2VhcmNoQ29uZmlnKCkpO1xuICAgIH1cbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnb25TZWFyY2gnLCB0aGlzLm9uU2VhcmNoKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnb25SZWZyZXNoJywgdGhpcy5vblJlZnJlc2gpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdvblVwZGF0ZURhdGEnLCB0aGlzLm9uVXBkYXRlRGF0YSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2tleVNlYXJjaCcsIHRoaXMua2V5U2VhcmNoU3RvcmUoKSA/PyAnJyk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2Ryb3Bkb3duVGFiS2V5QWN0aXZlJywgdGhpcy5kcm9wZG93blRhYktleUFjdGl2ZSgpKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnY2xpY2tFeGFjdGx5JywgdGhpcy5jbGlja0V4YWN0bHkoKSB8fCBmYWxzZSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2Rpc2FibGUnLCB0aGlzLmRpc2FibGUoKSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2F1dG9TZWxlY3RlZEZpcnN0SXRlbUNhbGxPdXRzaWRlQmVmb3JlJywgdGhpcy5hdXRvU2VsZWN0ZWRGaXJzdEl0ZW1DYWxsT3V0c2lkZUJlZm9yZSgpKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgncGFkZGluZ0xlZnRJdGVtJywgdGhpcy5wYWRkaW5nTGVmdEl0ZW0oKSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ3Jlc2V0S2V5V2hlblNlbGVjdEFsbEtleURyb3Bkb3duJywgdGhpcy5yZXNldEtleVdoZW5TZWxlY3RBbGxLZXlEcm9wZG93bigpKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnaWdub3JlQ2xhc3NEaXNhYmxlRGVmYXVsdFdoZW5Vc2VLZXlzRGlzYWJsZUl0ZW0nLCB0aGlzLmlnbm9yZUNsYXNzRGlzYWJsZURlZmF1bHRXaGVuVXNlS2V5c0Rpc2FibGVJdGVtKCkpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdmdW5jdGlvbkdldEl0ZW1zQXV0b0FkZExpc3QnLCB0aGlzLmZ1bmN0aW9uR2V0SXRlbXNBdXRvQWRkTGlzdCgpKTtcbiAgICBpZiAodGhpcy5tYXhJdGVtU2hvdygpKSB7XG4gICAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnbWF4SXRlbVNob3cnLCB0aGlzLm1heEl0ZW1TaG93KCkpO1xuICAgIH1cbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgna2V5U2VsZWN0ZWQnLCB0aGlzLmtleVNlbGVjdGVkKCkpO1xuICAgIGlmICh0aGlzLm11bHRpS2V5U2VsZWN0ZWQoKSkge1xuICAgICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ211bHRpS2V5U2VsZWN0ZWQnLCB0aGlzLm11bHRpS2V5U2VsZWN0ZWQoKSk7XG4gICAgfVxuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdrZXlzRGlzYWJsZUl0ZW0nLCB0aGlzLmtleXNEaXNhYmxlSXRlbSgpIHx8IFtdKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgna2V5c0hpZGRlbkl0ZW0nLCB0aGlzLmtleXNIaWRkZW5JdGVtKCkgfHwgW10pO1xuICAgIGlmICghaXNOaWwodGhpcy5rZXlTZWxlY3RlZCgpKSB8fCB0aGlzLm11bHRpS2V5U2VsZWN0ZWQoKT8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmRpc2FibGVCdXR0b25VblNlbGVjdE9wdGlvbi5zZXQoZmFsc2UpO1xuICAgIH1cbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnb25VcGRhdGVNdWx0aUtleVNlbGVjdGVkR3JvdXAnLCB0aGlzLm9uVXBkYXRlTXVsdGlLZXlTZWxlY3RlZEdyb3VwKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgnb25SZW1vdmVJdGVtcycsIHRoaXMub25SZW1vdmVJdGVtcyk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ3pJbmRleCcsIHRoaXMuekluZGV4KCkpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdpc1NlYXJjaE9ubGluZScsIHRoaXMuaXNTZWFyY2hPbmxpbmUoKSk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ2Rpc2FibGVMYWJlbCcsIHRoaXMuZGlzYWJsZUxhYmVsKCkgfHwgZmFsc2UpO1xuICAgIHRoaXMuY29tcG9uZW50UmVmLnNldElucHV0KCdsb2FkaW5nSWNvblNpemUnLCB0aGlzLmxvYWRpbmdJY29uU2l6ZSgpKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgndGVtcGxhdGVSZWZTZWFyY2hOb0RhdGEnLCB0aGlzLnRlbXBsYXRlUmVmU2VhcmNoTm9EYXRhKCkpO1xuICAgIGxldCBrZXlTZWFyY2ggPSAnJztcblxuICAgIGNvbnN0IGluc3RhbmNlID0gdGhpcy5jb21wb25lbnRSZWYuaW5zdGFuY2U7XG5cbiAgICBpbnN0YW5jZS5vdXRDaGFuZ2VWaWV3LnN1YnNjcmliZShkYXRhID0+IHtcbiAgICAgIHRoaXMub3V0Q2hhbmdlVmlldy5lbWl0KGRhdGEpO1xuXG4gICAgICBpZiAodGhpcy5za2lwRm9jdXNJbnB1dFdoZW5LZXlTZWFyY2hTdG9yZVVuZGVmaW5lZCgpICYmIGlzTmlsKHRoaXMua2V5U2VhcmNoU3RvcmUoKSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuZm9jdXNJbnB1dFNlYXJjaCgpICYmIHRoaXMua2V5U2VhcmNoU3RvcmUoKSAhPT0ga2V5U2VhcmNoKSB7XG4gICAgICAgIGtleVNlYXJjaCA9IHRoaXMua2V5U2VhcmNoU3RvcmUoKSB8fCAnJztcbiAgICAgICAgdGhpcy5mdW5jdGlvbkNvbnRyb2xJbnB1dFNlYXJjaCgpPy5mb2N1cygpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGluc3RhbmNlLm91dFNlbGVjdEtleS5zdWJzY3JpYmUoZGF0YSA9PiB7XG4gICAgICB0aGlzLmRpc2FibGVCdXR0b25VblNlbGVjdE9wdGlvbi5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5vdXRTZWxlY3RLZXkuZW1pdChkYXRhKTtcbiAgICAgIHRoaXMuY2hlY2tJc1ZhbGlkKCk7XG4gICAgfSk7XG4gICAgaW5zdGFuY2Uub3V0RmllbGRLZXkuc3Vic2NyaWJlKChmaWVsZEtleT86IHN0cmluZykgPT4ge1xuICAgICAgdGhpcy5vdXRGaWVsZEtleS5lbWl0KGZpZWxkS2V5KTtcbiAgICB9KTtcbiAgICBpbnN0YW5jZS5vdXRMb2FkaW5nLnN1YnNjcmliZSgobG9hZGluZzogYm9vbGVhbikgPT4ge1xuICAgICAgdGhpcy5sb2FkaW5nLnNldChsb2FkaW5nKTtcbiAgICAgIHRoaXMub3V0TG9hZGluZy5lbWl0KGxvYWRpbmcpO1xuICAgIH0pO1xuICAgIGluc3RhbmNlLm91dExvYWRJdGVtc0NvbXBsZXRlLnN1YnNjcmliZSgoZXZlbnQ6IHsgaXRlbXM6IEFycmF5PGFueT4sIHBhZ2luZz86IElQYWdpbmcgfSkgPT4ge1xuICAgICAgdGhpcy5vdXRMb2FkSXRlbXNDb21wbGV0ZS5lbWl0KGV2ZW50KTtcbiAgICB9KTtcbiAgICBpZiAodGhpcy5jb25maWcoKSAmJiB0aGlzLmNvbmZpZygpPy5jb25maWdUZW1wbGF0ZVRleHQgJiYgdGhpcy5jb25maWcoKT8uY29uZmlnVGVtcGxhdGVUZXh0Py4oKT8uYWN0aW9uU29ydCkge1xuICAgICAgaW5zdGFuY2Uub3V0U29ydFNpbmdsZVNlbGVjdC5zdWJzY3JpYmUoaXRlbVNvcnQgPT4ge1xuICAgICAgICBjb25zdCBjb25maWcgPSB0aGlzLmNvbmZpZygpO1xuICAgICAgICBpZiAoY29uZmlnICYmIGNvbmZpZy5jb25maWdUZW1wbGF0ZVRleHQgJiYgY29uZmlnLmNvbmZpZ1RlbXBsYXRlVGV4dCgpPy5hY3Rpb25Tb3J0KSB7XG4gICAgICAgICAgY29uZmlnLmNvbmZpZ1RlbXBsYXRlVGV4dCgpPy5pdGVtU29ydD8uc2V0KGl0ZW1Tb3J0KTtcbiAgICAgICAgICBjb25maWcuY29uZmlnVGVtcGxhdGVUZXh0KCk/LmFjdGlvblNvcnQ/LihpdGVtU29ydCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgICBpbnN0YW5jZS5vdXRDaGFuZ1N0YWdlRmxhZ01vdXNlUG9wb3Zlci5zdWJzY3JpYmUoKGZsYWc6IElGbGFnTW91c2UpID0+IHtcbiAgICAgIHRoaXMub3V0Q2hhbmdTdGFnZUZsYWdNb3VzZVBvcG92ZXIuZW1pdChmbGFnKTtcbiAgICB9KTtcbiAgICBjb25zdCB0eXBlID0gdGhpcy5jb25maWdEYXRhKCk/LnR5cGU7XG5cbiAgICBpZiAodHlwZSA9PT0gJ3RleHQnIHx8IHR5cGUgPT09ICdyYWRpbycpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaW5zdGFuY2Uub3V0U2VsZWN0TXVsdGlLZXkuc3Vic2NyaWJlKGRhdGEgPT4ge1xuICAgICAgdGhpcy5kaXNhYmxlQnV0dG9uVW5TZWxlY3RPcHRpb24uc2V0KGZhbHNlKTtcbiAgICAgIGlmICh0eXBlID09PSAnZ3JvdXAnKSB7XG4gICAgICAgIHRoaXMuZ3JvdXBNdWx0aUtleVNlbGVjdGVkLnNldChkYXRhLmtleXMpO1xuICAgICAgfVxuICAgICAgdGhpcy5vdXRTZWxlY3RNdWx0aUtleS5lbWl0KGRhdGEpO1xuICAgICAgdGhpcy5jaGVja0lzVmFsaWQoKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlclNlYXJjaChrZXlTZWFyY2g6IHN0cmluZykge1xuICAgIHRoaXMua2V5U2VhcmNoU3RvcmUuc2V0KGtleVNlYXJjaCk7XG4gICAgdGhpcy5vblNlYXJjaC5uZXh0KGtleVNlYXJjaCk7XG4gICAgdGhpcy5vdXRLZXlTZWFyY2guZW1pdChrZXlTZWFyY2gpO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZXJSZW1vdmVLZXlTZWxlY3RlZCgpIHtcbiAgICBpZiAoIXRoaXMuY29tcG9uZW50UmVmKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMub3V0U2VsZWN0S2V5LmVtaXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLm91dFNlbGVjdE11bHRpS2V5LmVtaXQodW5kZWZpbmVkKTtcbiAgICB0aGlzLmNvbXBvbmVudFJlZi5zZXRJbnB1dCgna2V5U2VsZWN0ZWQnLCAnJyk7XG4gICAgdGhpcy5jb21wb25lbnRSZWYuc2V0SW5wdXQoJ211bHRpS2V5U2VsZWN0ZWQnLCB1bmRlZmluZWQpO1xuICAgIHRoaXMuZGlzYWJsZUJ1dHRvblVuU2VsZWN0T3B0aW9uLnNldCh0cnVlKTtcblxuICAgIGlmICh0aGlzLmNvbmZpZ0RhdGEoKT8udHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgdGhpcy5vblVwZGF0ZU11bHRpS2V5U2VsZWN0ZWRHcm91cC5uZXh0KCk7XG4gICAgfVxuICAgIGF3YWl0IHRoaXMuY2hlY2tJc1ZhbGlkKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgaGFuZGxlckNsaWNrQnV0dG9uT3RoZXIoYnV0dG9uOiBJQnV0dG9uKSB7XG4gICAgdGhpcy5vdXRDbGlja0J1dHRvbk90aGVyLmVtaXQoYnV0dG9uKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBoYW5kbGVyRnVuY3Rpb25Db250cm9sSW5wdXRTZWFyY2goZXZlbnQ6IElJbnB1dEZ1bmN0aW9uQ29udHJvbEV2ZW50KSB7XG4gICAgdGhpcy5mdW5jdGlvbkNvbnRyb2xJbnB1dFNlYXJjaC5zZXQoZXZlbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjaGVja0lzVmFsaWQoKSB7XG4gICAgaWYgKCF0aGlzLnZhbGlkUmVxdWlyZWQoKSB8fCAhdGhpcy5jb25maWcoKT8udHlwZSB8fCAhdGhpcy5jb21wb25lbnRSZWY/Lmluc3RhbmNlKSB7XG4gICAgICB0aGlzLmlzRXJyb3JSZXF1aXJlZC5zZXQoZmFsc2UpO1xuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgdHlwZSA9IHRoaXMuY29uZmlnKCk/LnR5cGU7XG4gICAgbGV0IGhhc0tleSA9ICFpc0VtcHR5KHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLm11bHRpS2V5U2VsZWN0ZWQoKSk7XG5cbiAgICBpZiAodHlwZSA9PT0gJ2dyb3VwJykge1xuICAgICAgaGFzS2V5ID0gIWlzRW1wdHkodGhpcy5ncm91cE11bHRpS2V5U2VsZWN0ZWQoKSk7XG4gICAgfVxuICAgIGlmICh0eXBlID09PSAndGV4dCcgfHwgdHlwZSA9PT0gJ3JhZGlvJykge1xuICAgICAgaGFzS2V5ID0gIWlzTmlsKHRoaXMuY29tcG9uZW50UmVmLmluc3RhbmNlLmtleVNlbGVjdGVkKCkpO1xuICAgIH1cbiAgICB0aGlzLmlzRXJyb3JSZXF1aXJlZC5zZXQoIWhhc0tleSk7XG5cbiAgICByZXR1cm4gaGFzS2V5O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyByZWZyZXNoKCkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHRoaXMuY29uZmlnKCk7XG4gICAgaWYgKCFjb25maWcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5kcm9wZG93blRhYktleUFjdGl2ZSgpO1xuXG4gICAgdW50cmFja2VkKCgpID0+IHtcbiAgICAgIHRoaXMuY29uZmlnRGF0YS5zZXQodGhpcy5jbG9uZUNvbmZpZyhjb25maWcpKTtcbiAgICAgIHRoaXMub25SZWZyZXNoLm5leHQoKTtcbiAgICB9KVxuICB9XG5cbiAgcHJpdmF0ZSBjbG9uZUNvbmZpZyhjb25maWdJbnB1dDogSUxpc3RDb25maWdJdGVtKTogSUxpc3RDb25maWdJdGVtIHtcbiAgICBpZiAoIWNvbmZpZ0lucHV0KSB7XG4gICAgICByZXR1cm4ge30gYXMgYW55O1xuICAgIH1cbiAgICBjb25zdCBzZXJ2aWNlT3RoZXIgPSBjb25maWdJbnB1dC5odHRwUmVxdWVzdERhdGE/LigpPy5zZXJ2aWNlT3RoZXI7XG4gICAgY29uc3Qgc2VydmljZU90aGVyUmVxdWVzdEFsbElkU2VsZWN0T3JVblNlbGVjdCA9IGNvbmZpZ0lucHV0LmNvbmZpZ1RlbXBsYXRlQ2hlY2tib3g/LigpPy5odHRwUmVxdWVzdEFsbElkU2VsZWN0T3JVblNlbGVjdD8uKCk/LnNlcnZpY2VPdGhlcjtcblxuICAgIGlmIChzZXJ2aWNlT3RoZXIpIHtcbiAgICAgIGNvbmZpZ0lucHV0Lmh0dHBSZXF1ZXN0RGF0YT8udXBkYXRlKGN1cnJlbnQgPT4ge1xuICAgICAgICBkZWxldGUgY3VycmVudC5zZXJ2aWNlT3RoZXI7XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoc2VydmljZU90aGVyUmVxdWVzdEFsbElkU2VsZWN0T3JVblNlbGVjdCkge1xuICAgICAgY29uZmlnSW5wdXQuY29uZmlnVGVtcGxhdGVDaGVja2JveD8uKCk/Lmh0dHBSZXF1ZXN0QWxsSWRTZWxlY3RPclVuU2VsZWN0Py51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGRlbGV0ZSBjdXJyZW50LnNlcnZpY2VPdGhlcjtcblxuICAgICAgICByZXR1cm4gY3VycmVudDtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBjb25maWcgPSBjbG9uZURlZXAoY29uZmlnSW5wdXQpIGFzIElMaXN0Q29uZmlnSXRlbTtcblxuICAgIGlmIChzZXJ2aWNlT3RoZXIgJiYgY29uZmlnLmh0dHBSZXF1ZXN0RGF0YSkge1xuICAgICAgY29uZmlnLmh0dHBSZXF1ZXN0RGF0YS51cGRhdGUoY3VycmVudCA9PiB7XG4gICAgICAgIGN1cnJlbnQuc2VydmljZU90aGVyID0gc2VydmljZU90aGVyO1xuXG4gICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHNlcnZpY2VPdGhlclJlcXVlc3RBbGxJZFNlbGVjdE9yVW5TZWxlY3QgJiYgY29uZmlnLmNvbmZpZ1RlbXBsYXRlQ2hlY2tib3gpIHtcbiAgICAgIGNvbmZpZy5jb25maWdUZW1wbGF0ZUNoZWNrYm94Py4oKT8uaHR0cFJlcXVlc3RBbGxJZFNlbGVjdE9yVW5TZWxlY3Q/LnVwZGF0ZShjdXJyZW50ID0+IHtcbiAgICAgICAgY3VycmVudC5zZXJ2aWNlT3RoZXIgPSBzZXJ2aWNlT3RoZXI7XG5cbiAgICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5jbGVhblVwRWZmZWN0LmRlc3Ryb3koKTtcbiAgICB0aGlzLm91dExvYWRpbmcuZW1pdChmYWxzZSk7XG4gICAgdGhpcy5keW5hbWljQ29tcG9uZW50U2VydmljZS5yZW1vdmUodGhpcy5jb21wb25lbnRSZWYpO1xuICAgIHRoaXMub25SZWZyZXNoLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vblNlYXJjaC5jb21wbGV0ZSgpO1xuICAgIHRoaXMub25TZXRIaWRkZW5JdGVtQnlLZXkuY29tcGxldGUoKTtcbiAgICB0aGlzLm9uVXBkYXRlTXVsdGlLZXlTZWxlY3RlZEdyb3VwLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5vbkRlc3Ryb3kubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95LmNvbXBsZXRlKCk7XG4gIH1cbn0iLCI8ZGl2ICNsaXN0Vmlld0NvbnRhaW5lclxuICBjbGFzcz1cImZsZXggZmxleC1jb2xcIlxuICBbY2xhc3Mudy1mdWxsXT1cIiFtYXhJdGVtU2hvd1wiXG4gIFtjbGFzcy5oLWZ1bGxdPVwiIW1heEl0ZW1TaG93XCI+XG4gIEBpZiAobGFiZWxDb25maWcoKTsgYXMgbGFiZWxDb25maWcpIHtcbiAgICA8bGlic191aS1jb21wb25lbnRzLWxhYmVsIFtjbGFzc0luY2x1ZGVdPVwibGFiZWxDb25maWcuY2xhc3NJbmNsdWRlXCJcbiAgICAgIFtsYWJlbExlZnRdPVwibGFiZWxDb25maWcubGFiZWxMZWZ0XCJcbiAgICAgIFtsYWJlbExlZnRDbGFzc109XCJsYWJlbENvbmZpZy5sYWJlbExlZnRDbGFzc1wiXG4gICAgICBbcmVxdWlyZWRdPVwibGFiZWxDb25maWcucmVxdWlyZWQgXCJcbiAgICAgIFtkZXNjcmlwdGlvbl09XCJsYWJlbENvbmZpZy5kZXNjcmlwdGlvblwiXG4gICAgICBbZGVzY3JpcHRpb25DbGFzc109XCJsYWJlbENvbmZpZy5kZXNjcmlwdGlvbkNsYXNzXCJcbiAgICAgIFtsYWJlbFJpZ2h0XT1cImxhYmVsQ29uZmlnLmxhYmVsUmlnaHRcIlxuICAgICAgW2xhYmVsUmlnaHRDbGFzc109XCJsYWJlbENvbmZpZy5sYWJlbFJpZ2h0Q2xhc3NcIlxuICAgICAgW29ubHlTaG93Q291bnRdPVwibGFiZWxDb25maWcub25seVNob3dDb3VudFwiXG4gICAgICBbYnV0dG9uc0xlZnRdPVwibGFiZWxDb25maWcuYnV0dG9uc0xlZnRcIlxuICAgICAgW2J1dHRvbnNSaWdodF09XCJsYWJlbENvbmZpZy5idXR0b25zUmlnaHRcIlxuICAgICAgW2Rpc2FibGVCdXR0b25zTGVmdF09XCJsYWJlbENvbmZpZy5kaXNhYmxlQnV0dG9uc0xlZnQgfHwgZGlzYWJsZSgpXCJcbiAgICAgIFtkaXNhYmxlQnV0dG9uc1JpZ2h0XT1cImxhYmVsQ29uZmlnLmRpc2FibGVCdXR0b25zUmlnaHQgfHwgZGlzYWJsZSgpXCJcbiAgICAgIFtoYXNUb2dnbGVdPVwibGFiZWxDb25maWcuaGFzVG9nZ2xlXCJcbiAgICAgIFt0b2dnbGVBY3RpdmVdPVwibGFiZWxDb25maWcudG9nZ2xlQWN0aXZlXCJcbiAgICAgIFt0b2dnbGVEaXNhYmxlXT1cImxhYmVsQ29uZmlnLnRvZ2dsZURpc2FibGUgfHwgbG9hZGluZygpIHx8IGRpc2FibGUoKVwiXG4gICAgICBbcG9wb3Zlcl09XCJsYWJlbENvbmZpZy5wb3BvdmVyXCJcbiAgICAgIFtpY29uUG9wb3ZlckNsYXNzXT1cImxhYmVsQ29uZmlnLmljb25Qb3BvdmVyQ2xhc3NcIlxuICAgICAgW29ubHlTaG93Q291bnRdPVwibGFiZWxDb25maWcub25seVNob3dDb3VudFwiXG4gICAgICBbbGltaXRMZW5ndGhdPVwibGFiZWxDb25maWcubGltaXRMZW5ndGhcIlxuICAgICAgW2J1dHRvbnNEZXNjcmlwdGlvbl09XCJsYWJlbENvbmZpZy5idXR0b25zRGVzY3JpcHRpb25cIlxuICAgICAgW2Rpc2FibGVCdXR0b25zRGVzY3JpcHRpb25dPVwibGFiZWxDb25maWcuZGlzYWJsZUJ1dHRvbnNEZXNjcmlwdGlvbiB8fCBkaXNhYmxlKClcIlxuICAgICAgW2J1dHRvbnNEZXNjcmlwdGlvbkNvbnRhaW5lckNsYXNzXT1cImxhYmVsQ29uZmlnLmJ1dHRvbnNEZXNjcmlwdGlvbkNvbnRhaW5lckNsYXNzXCJcbiAgICAgIFtjb3VudF09XCJsYWJlbENvbmZpZy5jb3VudFwiIC8+XG4gIH1cblxuICBAaWYgKCFzaG93VmFsaWRhdGVCb3R0b20oKSkge1xuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ0ZW1wbGF0ZVZhbGlkYXRlXCIgLz5cbiAgfVxuICBAaWYgKCFoaWRkZW5JbnB1dFNlYXJjaCgpKSB7XG4gICAgPGxpYnNfdWktY29tcG9uZW50cy1pbnB1dHMtc2VhcmNoIFtzZWFyY2hDb25maWddPVwic2VhcmNoQ29uZmlnKClcIlxuICAgICAgW2NsYXNzLnB4LVsxMnB4XV09XCJzZWFyY2hQYWRkaW5nKClcIlxuICAgICAgW2NsYXNzXT1cInNlYXJjaENvbmZpZygpLmNsYXNzQ292ZXJJbnB1dFNlYXJjaFwiXG4gICAgICBbZGlzYWJsZV09XCIgZGlzYWJsZSgpIHx8IGxvYWRpbmcoKSB8fCBmYWxzZVwiXG4gICAgICAob3V0U2VhcmNoKT1cImhhbmRsZXJTZWFyY2goJGV2ZW50KVwiXG4gICAgICAob3V0RnVuY3Rpb25zQ29udHJvbCk9XCJoYW5kbGVyRnVuY3Rpb25Db250cm9sSW5wdXRTZWFyY2goJGV2ZW50KVwiIC8+XG4gIH1cbiAgQGlmIChjb25maWcoKT8uY29uZmlnRGVzY3JpcHRpb25Hcm91cD8uKCk7IGFzIGRlc2NyaXB0aW9uKSB7XG4gICAgPGRpdiBbY2xhc3NdPVwiZGVzY3JpcHRpb24/LmNsYXNzSW5jbHVkZVwiPlxuICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyIFtjb25maWddPVwiZGVzY3JpcHRpb24/LnRvb2x0aXBEZXNjcmlwdGlvbigpXCI+XG4gICAgICAgIDxkaXYgW2NsYXNzXT1cImRlc2NyaXB0aW9uPy5jbGFzc1RleHREZXNjcmlwdGlvbkluY2x1ZGVcIj57eyBkZXNjcmlwdGlvbi50ZXh0RGVzY3JpcHRpb24gfX08L2Rpdj5cbiAgICAgIDwvbGlic191aS1jb21wb25lbnRzLXBvcG92ZXI+XG4gICAgPC9kaXY+XG4gIH1cbiAgQGlmICghaGlkZGVuSW5wdXRTZWFyY2goKSAmJiBoYXNEaXZpZGVyKCkgJiYgKCFjb25maWcoKT8uaWdub3JlU2hvd0RhdGFXaGVuTm90U2VhcmNoIHx8IGtleVNlYXJjaFN0b3JlKCkpKSB7XG4gICAgPGRpdiBjbGFzcz1cImxpYnMtdWktYm9yZGVyLXRvcC1nZW5lcmFsIHt7IGRpdmlkZXJDbGFzc0luY2x1ZGUoKSA/IGRpdmlkZXJDbGFzc0luY2x1ZGUoKTonJyB9fVwiXG4gICAgICBbY2xhc3MubGlicy11aS1kaXZpZGVyLWRlZmF1bHRdPVwiISFzZWFyY2hQYWRkaW5nKCkgJiYgIWRpdmlkZXJDbGFzc0luY2x1ZGUoKVwiPlxuICAgIDwvZGl2PlxuICB9XG4gIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sIHt7IChjb25maWcoKT8uaWdub3JlU2hvd0RhdGFXaGVuTm90U2VhcmNoICYmIGtleVNlYXJjaFN0b3JlKCkgJiYgIWNvbmZpZygpPy5pZ25vcmVGaXhIZWlnaHRTaG93RGF0YVdoZW5Ob3RTZWFyY2gpID8gJ2gtWzM1M3B4XScgOiAnaC1mdWxsJyB9fVwiPlxuICAgIDxkaXYgI2NvbnRlbnRDb250YWluZXJcbiAgICAgIGNsYXNzPVwidy1mdWxsIGgtZnVsbCB7eyBiYWNrZ3JvdW5kTGlzdEN1c3RvbSgpIH19XCJcbiAgICAgIFtjbGFzcy5saWJzLXVpLWRpc2FibGVdPVwiZGlzYWJsZSgpICYmIGRpc2FibGVMYWJlbCgpXCJcbiAgICAgIFtjbGFzcy5wb2ludGVyLWV2ZW50cy1ub25lXT1cImRpc2FibGUoKSAmJiBkaXNhYmxlTGFiZWwoKVwiPlxuICAgIDwvZGl2PlxuXG4gICAgQGZvciAoYnV0dG9uT3RoZXIgb2YgYnV0dG9uc090aGVyKCk7IHRyYWNrICRpbmRleCkge1xuICAgICAgPGRpdiBjbGFzcz1cImJnLVsjZmZmZmZmXVwiXG4gICAgICAgIFtjbGFzcy5yb3VuZGVkLWItWzRweF1dPVwiJGxhc3QgJiYgIWhhc0J1dHRvblVuU2VsZWN0T3B0aW9uKClcIj5cbiAgICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1idXR0b25zLWJ1dHRvbiBbdHlwZV09XCJidXR0b25PdGhlci50eXBlIHx8ICdidXR0b24tbGluay1wcmltYXJ5J1wiXG4gICAgICAgICAgW2xhYmVsXT1cImJ1dHRvbk90aGVyLmxhYmVsIHx8ICcgJ1wiXG4gICAgICAgICAgW2NsYXNzSWNvbkxlZnRdPVwiKGJ1dHRvbk90aGVyLmNsYXNzSWNvbkxlZnQgfHwgJycpKycgZmxleCBtci1bOHB4XSB0ZXh0LVsxNnB4XSdcIlxuICAgICAgICAgIGNsYXNzSW5jbHVkZT1cInctZnVsbCBsaWJzLXVpLWJvcmRlci10b3AtZ2VuZXJhbCB0ZXh0LWxlZnQgcm91bmRlZC0wIHt7IGJ1dHRvbk90aGVyLmNsYXNzSW5jbHVkZSA/IGJ1dHRvbk90aGVyLmNsYXNzSW5jbHVkZTonJyB9fVwiXG4gICAgICAgICAgY2xhc3NMYWJlbD1cImxpYnMtdWktZm9udC1oNXIgd2hpdGVzcGFjZS1ub3JtYWxcIlxuICAgICAgICAgIFtkaXNhYmxlXT1cImJ1dHRvbk90aGVyLmRpc2FibGUgfHwgZGlzYWJsZSgpIHx8IGxvYWRpbmcoKSB8fCBmYWxzZVwiXG4gICAgICAgICAgKG91dENsaWNrKT1cImhhbmRsZXJDbGlja0J1dHRvbk90aGVyKGJ1dHRvbk90aGVyKVwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICB9XG4gICAgQGlmIChoYXNCdXR0b25VblNlbGVjdE9wdGlvbigpKSB7XG4gICAgICA8ZGl2IGNsYXNzPVwiYmctWyNmZmZmZmZdIHJvdW5kZWQtYi1bNHB4XVwiPlxuICAgICAgICA8bGlic191aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uIGxhYmVsPVwiaTE4bl91bnNlbGVjdF9vcHRpb25cIlxuICAgICAgICAgIHR5cGU9XCJidXR0b24tbGluay1kYW5nZXItaGlnaFwiXG4gICAgICAgICAgY2xhc3NJY29uTGVmdD1cImZsZXggbXItWzhweF0gbGlicy11aS1pY29uLWNsb3NlXCJcbiAgICAgICAgICBjbGFzc0luY2x1ZGU9XCJ3LTEwMCBsaWJzLXVpLWJvcmRlci10b3AtZ2VuZXJhbCB0ZXh0LWxlZnQgcm91bmRlZC0wXCJcbiAgICAgICAgICBjbGFzc0xhYmVsPVwibGlicy11aS1mb250LWg1ciB3aGl0ZXNwYWNlLW5vcm1hbFwiXG4gICAgICAgICAgW2Rpc2FibGVdPVwiZGlzYWJsZUJ1dHRvblVuU2VsZWN0T3B0aW9uKCkgfHwgZGlzYWJsZSgpIHx8IGxvYWRpbmcoKSB8fCBmYWxzZVwiXG4gICAgICAgICAgKG91dENsaWNrKT1cImhhbmRsZXJSZW1vdmVLZXlTZWxlY3RlZCgpXCIgLz5cbiAgICAgIDwvZGl2PlxuICAgIH1cbiAgPC9kaXY+XG4gIEBpZiAoc2hvd1ZhbGlkYXRlQm90dG9tKCkpIHtcbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidGVtcGxhdGVWYWxpZGF0ZVwiIC8+XG4gIH1cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI3RlbXBsYXRlVmFsaWRhdGU+XG4gIEBpZiAoaXNFcnJvclJlcXVpcmVkKCkpIHtcbiAgICA8ZGl2IFtjbGFzcy5tYi1bOHB4XV09XCIhc2hvd1ZhbGlkYXRlQm90dG9tKClcIlxuICAgICAgW2NsYXNzLm10LVs4cHhdXT1cInNob3dWYWxpZGF0ZUJvdHRvbSgpXCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInRleHQtWyNlZTJkNDFdIGxpYnMtdWktZm9udC1oN1wiXG4gICAgICAgIFtpbm5lckh0bWxdPVwiKHZhbGlkUmVxdWlyZWQoKT8ubWVzc2FnZSB8fCBFUlJPUl9NRVNTQUdFX0VNUFRZX1ZBTElEKXwgdHJhbnNsYXRlOnZhbGlkUmVxdWlyZWQoKT8uaW50ZXJwb2xhdGVQYXJhbXNcIj5cbiAgICAgIDwvc3Bhbj5cbiAgICA8L2Rpdj5cbiAgfVxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -2390,7 +2390,7 @@ class LibsUiComponentsListComponent {
2390
2390
  effect(() => {
2391
2391
  const keysDisableItem = this.keysDisableItem();
2392
2392
  untracked(() => {
2393
- if (!isEmpty(keysDisableItem)) {
2393
+ if (!isNil(keysDisableItem)) {
2394
2394
  this.componentRef?.setInput('keysDisableItem', keysDisableItem);
2395
2395
  }
2396
2396
  });
@@ -2398,7 +2398,7 @@ class LibsUiComponentsListComponent {
2398
2398
  effect(() => {
2399
2399
  const keysHiddenItem = this.keysHiddenItem();
2400
2400
  untracked(() => {
2401
- if (!isEmpty(keysHiddenItem)) {
2401
+ if (!isNil(keysHiddenItem)) {
2402
2402
  this.componentRef?.setInput('keysHiddenItem', keysHiddenItem);
2403
2403
  this.onSetHiddenItemByKey.next(keysHiddenItem);
2404
2404
  }
@@ -2407,7 +2407,7 @@ class LibsUiComponentsListComponent {
2407
2407
  effect(() => {
2408
2408
  const disable = this.disable();
2409
2409
  untracked(() => {
2410
- if (!isEmpty(disable)) {
2410
+ if (!isNil(disable)) {
2411
2411
  this.componentRef?.setInput('disable', disable);
2412
2412
  }
2413
2413
  });
@@ -2415,7 +2415,7 @@ class LibsUiComponentsListComponent {
2415
2415
  effect(() => {
2416
2416
  const keySelected = this.keySelected();
2417
2417
  untracked(() => {
2418
- if (!isEmpty(keySelected)) {
2418
+ if (!isNil(keySelected)) {
2419
2419
  this.componentRef?.setInput('keySelected', keySelected);
2420
2420
  }
2421
2421
  });
@@ -2428,7 +2428,7 @@ class LibsUiComponentsListComponent {
2428
2428
  }
2429
2429
  oldMultiKeySelected = multiKeySelected;
2430
2430
  untracked(() => {
2431
- if (!isEmpty(multiKeySelected)) {
2431
+ if (!isNil(multiKeySelected)) {
2432
2432
  this.componentRef?.setInput('multiKeySelected', multiKeySelected);
2433
2433
  if (this.configData()?.type === 'group') {
2434
2434
  this.onUpdateMultiKeySelectedGroup.next();