@gravitee/ui-policy-studio-angular 7.8.0 → 7.9.1-policy-studio-step-5-2d586ea
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/components/filter-pipe/gio-flter-connectors-by-mode.pipe.mjs +40 -0
- package/esm2020/lib/components/flow-details/gio-ps-flow-details.component.mjs +5 -4
- package/esm2020/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.component.mjs +3 -3
- package/esm2020/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.mjs +40 -8
- package/esm2020/lib/components/flow-details-phase-policy/gio-ps-flow-details-phase-policy.component.mjs +15 -5
- package/esm2020/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog-result.model.mjs +17 -0
- package/esm2020/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.component.mjs +60 -0
- package/esm2020/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.component.mjs +3 -3
- package/esm2020/lib/components/flows-menu/gio-ps-flows-menu.component.mjs +28 -3
- package/esm2020/lib/gio-policy-studio.component.mjs +17 -8
- package/esm2020/lib/gio-policy-studio.module.mjs +20 -3
- package/esm2020/lib/models/ConnectorsInfo.mjs +1 -1
- package/esm2020/lib/models/SaveOutput.mjs +1 -1
- package/esm2020/testing/lib/components/flow-details-phase/gio-ps-flow-details-phase.harness.mjs +62 -0
- package/esm2020/testing/lib/components/flow-details-phase-policy/gio-ps-flow-details-phase-policy.harness.mjs +33 -0
- package/esm2020/testing/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.harness.mjs +60 -0
- package/esm2020/testing/lib/components/flows-menu/gio-ps-flows-menu.harness.mjs +4 -1
- package/esm2020/testing/lib/gio-policy-studio.harness.mjs +42 -1
- package/esm2020/testing/lib/models/ConnectorsInfo.fixture.mjs +152 -0
- package/esm2020/testing/lib/models/ConnectorsInfo.mjs +1 -1
- package/esm2020/testing/lib/models/SaveOutput.mjs +1 -1
- package/esm2020/testing/lib/models/flow/FlowExecution.fixture.mjs +43 -0
- package/esm2020/testing/lib/models/flow/Step.fixture.mjs +70 -0
- package/esm2020/testing/lib/models/flow/index-testing.mjs +3 -1
- package/esm2020/testing/lib/models/index-testing.mjs +2 -1
- package/fesm2015/gravitee-ui-policy-studio-angular-testing.mjs +385 -3
- package/fesm2015/gravitee-ui-policy-studio-angular-testing.mjs.map +1 -1
- package/fesm2015/gravitee-ui-policy-studio-angular.mjs +225 -61
- package/fesm2015/gravitee-ui-policy-studio-angular.mjs.map +1 -1
- package/fesm2020/gravitee-ui-policy-studio-angular-testing.mjs +453 -3
- package/fesm2020/gravitee-ui-policy-studio-angular-testing.mjs.map +1 -1
- package/fesm2020/gravitee-ui-policy-studio-angular.mjs +224 -58
- package/fesm2020/gravitee-ui-policy-studio-angular.mjs.map +1 -1
- package/lib/components/filter-pipe/gio-flter-connectors-by-mode.pipe.d.ts +8 -0
- package/lib/components/flow-details/gio-ps-flow-details.component.d.ts +3 -3
- package/lib/components/flow-details-info-bar/gio-ps-flow-details-info-bar.component.d.ts +2 -2
- package/lib/components/flow-details-phase/gio-ps-flow-details-phase.component.d.ts +20 -5
- package/lib/components/flow-details-phase-policy/gio-ps-flow-details-phase-policy.component.d.ts +4 -1
- package/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog-result.model.d.ts +2 -0
- package/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.component.d.ts +17 -0
- package/lib/components/flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.component.d.ts +3 -2
- package/lib/components/flows-menu/gio-ps-flows-menu.component.d.ts +6 -3
- package/lib/gio-policy-studio.component.d.ts +7 -5
- package/lib/gio-policy-studio.module.d.ts +20 -16
- package/lib/models/ConnectorsInfo.d.ts +4 -1
- package/lib/models/SaveOutput.d.ts +2 -1
- package/package.json +1 -1
- package/testing/lib/components/flow-details-phase/gio-ps-flow-details-phase.harness.d.ts +20 -0
- package/testing/lib/components/flow-details-phase-policy/gio-ps-flow-details-phase-policy.harness.d.ts +13 -0
- package/testing/lib/components/flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.harness.d.ts +13 -0
- package/testing/lib/components/flows-menu/gio-ps-flows-menu.harness.d.ts +1 -0
- package/testing/lib/gio-policy-studio.harness.d.ts +31 -1
- package/testing/lib/models/ConnectorsInfo.d.ts +4 -1
- package/testing/lib/models/ConnectorsInfo.fixture.d.ts +10 -0
- package/testing/lib/models/SaveOutput.d.ts +2 -1
- package/testing/lib/models/flow/FlowExecution.fixture.d.ts +3 -0
- package/testing/lib/models/flow/Step.fixture.d.ts +4 -0
- package/testing/lib/models/flow/index-testing.d.ts +2 -0
- package/testing/lib/models/index-testing.d.ts +1 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (C) 2015 The Gravitee team (http://gravitee.io)
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this file except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*/
|
|
16
|
+
import { Component, Inject } from '@angular/core';
|
|
17
|
+
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
|
|
18
|
+
import { FormControl, FormGroup } from '@angular/forms';
|
|
19
|
+
import { cloneDeep } from 'lodash';
|
|
20
|
+
import * as i0 from "@angular/core";
|
|
21
|
+
import * as i1 from "@angular/material/dialog";
|
|
22
|
+
import * as i2 from "@angular/material/button";
|
|
23
|
+
import * as i3 from "@angular/material/icon";
|
|
24
|
+
import * as i4 from "@gravitee/ui-particles-angular";
|
|
25
|
+
import * as i5 from "@angular/material/form-field";
|
|
26
|
+
import * as i6 from "@angular/material/select";
|
|
27
|
+
import * as i7 from "@angular/material/core";
|
|
28
|
+
import * as i8 from "@angular/material/slide-toggle";
|
|
29
|
+
import * as i9 from "@angular/common";
|
|
30
|
+
import * as i10 from "@angular/forms";
|
|
31
|
+
export class GioPolicyStudioFlowExecutionFormDialogComponent {
|
|
32
|
+
constructor(dialogRef, flowDialogData) {
|
|
33
|
+
this.dialogRef = dialogRef;
|
|
34
|
+
this.existingFlowExecution = cloneDeep(flowDialogData?.flowExecution);
|
|
35
|
+
this.flowExecutionFormGroup = new FormGroup({
|
|
36
|
+
mode: new FormControl(flowDialogData?.flowExecution?.mode ?? 'DEFAULT'),
|
|
37
|
+
matchRequired: new FormControl(flowDialogData?.flowExecution?.matchRequired ?? false),
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
onSubmit() {
|
|
41
|
+
const flowExecutionToSave = {
|
|
42
|
+
...this.existingFlowExecution,
|
|
43
|
+
mode: this.flowExecutionFormGroup?.get('mode')?.value,
|
|
44
|
+
matchRequired: this.flowExecutionFormGroup?.get('matchRequired')?.value,
|
|
45
|
+
};
|
|
46
|
+
this.dialogRef.close({
|
|
47
|
+
...flowExecutionToSave,
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
GioPolicyStudioFlowExecutionFormDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowExecutionFormDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
52
|
+
GioPolicyStudioFlowExecutionFormDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioFlowExecutionFormDialogComponent, selector: "gio-ps-flow-execution-form-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"title\">\n Flow execution\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"false\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowExecutionFormGroup\" class=\"content\" [formGroup]=\"flowExecutionFormGroup\">\n <div class=\"content__row\">\n <gio-banner-info>\n By default, flow selection is based on the operators defined in your flows, either when it \u201Cmatches with\u201D or \u201Cstarts with\u201D a path. You\n can choose the \"Best match\" option to select a flow from the closest path.\n </gio-banner-info>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Default flow mode</mat-label>\n <mat-select formControlName=\"mode\">\n <mat-option value=\"BEST_MATCH\">Best Match</mat-option>\n <mat-option value=\"DEFAULT\">Default</mat-option>\n </mat-select>\n <mat-hint>Change how the flow selection is made</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <gio-form-slide-toggle>\n <gio-form-label>Fail on flow mismatch</gio-form-label>\n Respond with an error when requests don\u2019t match any defined flow\n <mat-slide-toggle gioFormSlideToggle formControlName=\"matchRequired\"></mat-slide-toggle>\n </gio-form-slide-toggle>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"false\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onSubmit()\">Save</button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.content__row{display:flex;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.GioBannerInfoComponent, selector: "gio-banner-info" }, { type: i5.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i6.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i7.MatOption, selector: "mat-option", exportAs: ["matOption"] }, { type: i4.GioFormSlideToggleComponent, selector: "gio-form-slide-toggle", inputs: ["appearance"] }, { type: i4.GioFormLabelComponent, selector: "gio-form-label" }, { type: i8.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex", "name", "id", "labelPosition", "aria-label", "aria-labelledby", "aria-describedby", "required", "checked"], outputs: ["change", "toggleChange"], exportAs: ["matSlideToggle"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i9.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i10.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i10.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i5.MatLabel, selector: "mat-label" }, { type: i10.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i10.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i5.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i4.GioFormSlideToggleDirective, selector: "[gioFormSlideToggle]" }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowExecutionFormDialogComponent, decorators: [{
|
|
54
|
+
type: Component,
|
|
55
|
+
args: [{ selector: 'gio-ps-flow-execution-form-dialog', template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"title\">\n Flow execution\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"false\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowExecutionFormGroup\" class=\"content\" [formGroup]=\"flowExecutionFormGroup\">\n <div class=\"content__row\">\n <gio-banner-info>\n By default, flow selection is based on the operators defined in your flows, either when it \u201Cmatches with\u201D or \u201Cstarts with\u201D a path. You\n can choose the \"Best match\" option to select a flow from the closest path.\n </gio-banner-info>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Default flow mode</mat-label>\n <mat-select formControlName=\"mode\">\n <mat-option value=\"BEST_MATCH\">Best Match</mat-option>\n <mat-option value=\"DEFAULT\">Default</mat-option>\n </mat-select>\n <mat-hint>Change how the flow selection is made</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <gio-form-slide-toggle>\n <gio-form-label>Fail on flow mismatch</gio-form-label>\n Respond with an error when requests don\u2019t match any defined flow\n <mat-slide-toggle gioFormSlideToggle formControlName=\"matchRequired\"></mat-slide-toggle>\n </gio-form-slide-toggle>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"false\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onSubmit()\">Save</button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.content__row{display:flex;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"] }]
|
|
56
|
+
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
57
|
+
type: Inject,
|
|
58
|
+
args: [MAT_DIALOG_DATA]
|
|
59
|
+
}] }]; } });
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctZXhlY3V0aW9uLWZvcm0tZGlhbG9nLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1leGVjdXRpb24tZm9ybS1kaWFsb2cvZ2lvLXBzLWZsb3ctZXhlY3V0aW9uLWZvcm0tZGlhbG9nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvdy1leGVjdXRpb24tZm9ybS1kaWFsb2cvZ2lvLXBzLWZsb3ctZXhlY3V0aW9uLWZvcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxRQUFRLENBQUM7Ozs7Ozs7Ozs7OztBQWVuQyxNQUFNLE9BQU8sK0NBQStDO0lBSzFELFlBQ1MsU0FBc0gsRUFDcEcsY0FBMEQ7UUFENUUsY0FBUyxHQUFULFNBQVMsQ0FBNkc7UUFHN0gsSUFBSSxDQUFDLHFCQUFxQixHQUFHLFNBQVMsQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFdEUsSUFBSSxDQUFDLHNCQUFzQixHQUFHLElBQUksU0FBUyxDQUFDO1lBQzFDLElBQUksRUFBRSxJQUFJLFdBQVcsQ0FBQyxjQUFjLEVBQUUsYUFBYSxFQUFFLElBQUksSUFBSSxTQUFTLENBQUM7WUFDdkUsYUFBYSxFQUFFLElBQUksV0FBVyxDQUFDLGNBQWMsRUFBRSxhQUFhLEVBQUUsYUFBYSxJQUFJLEtBQUssQ0FBQztTQUN0RixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sUUFBUTtRQUNiLE1BQU0sbUJBQW1CLEdBQWtCO1lBQ3pDLEdBQUcsSUFBSSxDQUFDLHFCQUFxQjtZQUM3QixJQUFJLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxLQUFLO1lBQ3JELGFBQWEsRUFBRSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsR0FBRyxDQUFDLGVBQWUsQ0FBQyxFQUFFLEtBQUs7U0FDeEUsQ0FBQztRQUVGLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO1lBQ25CLEdBQUcsbUJBQW1CO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7OzZJQTNCVSwrQ0FBK0MsOENBT2hELGVBQWU7aUlBUGQsK0NBQStDLHlFQ2pDNUQsZzJFQXdEQTs0RkR2QmEsK0NBQStDO2tCQUwzRCxTQUFTOytCQUNFLG1DQUFtQzs7MEJBVzFDLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IEZsb3dFeGVjdXRpb24gfSBmcm9tICcuLi8uLi9tb2RlbHMnO1xuXG5pbXBvcnQgeyBHaW9Qb2xpY3lTdHVkaW9GbG93RXhlY3V0aW9uRm9ybURpYWxvZ1Jlc3VsdCB9IGZyb20gJy4vZ2lvLXBzLWZsb3ctZXhlY3V0aW9uLWZvcm0tZGlhbG9nLXJlc3VsdC5tb2RlbCc7XG5cbmV4cG9ydCB0eXBlIEdpb1BvbGljeVN0dWRpb0Zsb3dFeGVjdXRpb25Gb3JtRGlhbG9nRGF0YSA9IHtcbiAgZmxvd0V4ZWN1dGlvbj86IEZsb3dFeGVjdXRpb247XG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdnaW8tcHMtZmxvdy1leGVjdXRpb24tZm9ybS1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBzLWZsb3ctZXhlY3V0aW9uLWZvcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2lvLXBzLWZsb3ctZXhlY3V0aW9uLWZvcm0tZGlhbG9nLmNvbXBvbmVudC5zY3NzJ10sXG59KVxuZXhwb3J0IGNsYXNzIEdpb1BvbGljeVN0dWRpb0Zsb3dFeGVjdXRpb25Gb3JtRGlhbG9nQ29tcG9uZW50IHtcbiAgcHVibGljIGZsb3dFeGVjdXRpb25Gb3JtR3JvdXA/OiBGb3JtR3JvdXA7XG5cbiAgcHVibGljIGV4aXN0aW5nRmxvd0V4ZWN1dGlvbj86IEZsb3dFeGVjdXRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHVibGljIGRpYWxvZ1JlZjogTWF0RGlhbG9nUmVmPEdpb1BvbGljeVN0dWRpb0Zsb3dFeGVjdXRpb25Gb3JtRGlhbG9nQ29tcG9uZW50LCBHaW9Qb2xpY3lTdHVkaW9GbG93RXhlY3V0aW9uRm9ybURpYWxvZ1Jlc3VsdD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIGZsb3dEaWFsb2dEYXRhOiBHaW9Qb2xpY3lTdHVkaW9GbG93RXhlY3V0aW9uRm9ybURpYWxvZ0RhdGEsXG4gICkge1xuICAgIHRoaXMuZXhpc3RpbmdGbG93RXhlY3V0aW9uID0gY2xvbmVEZWVwKGZsb3dEaWFsb2dEYXRhPy5mbG93RXhlY3V0aW9uKTtcblxuICAgIHRoaXMuZmxvd0V4ZWN1dGlvbkZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgbW9kZTogbmV3IEZvcm1Db250cm9sKGZsb3dEaWFsb2dEYXRhPy5mbG93RXhlY3V0aW9uPy5tb2RlID8/ICdERUZBVUxUJyksXG4gICAgICBtYXRjaFJlcXVpcmVkOiBuZXcgRm9ybUNvbnRyb2woZmxvd0RpYWxvZ0RhdGE/LmZsb3dFeGVjdXRpb24/Lm1hdGNoUmVxdWlyZWQgPz8gZmFsc2UpLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uU3VibWl0KCk6IHZvaWQge1xuICAgIGNvbnN0IGZsb3dFeGVjdXRpb25Ub1NhdmU6IEZsb3dFeGVjdXRpb24gPSB7XG4gICAgICAuLi50aGlzLmV4aXN0aW5nRmxvd0V4ZWN1dGlvbixcbiAgICAgIG1vZGU6IHRoaXMuZmxvd0V4ZWN1dGlvbkZvcm1Hcm91cD8uZ2V0KCdtb2RlJyk/LnZhbHVlLFxuICAgICAgbWF0Y2hSZXF1aXJlZDogdGhpcy5mbG93RXhlY3V0aW9uRm9ybUdyb3VwPy5nZXQoJ21hdGNoUmVxdWlyZWQnKT8udmFsdWUsXG4gICAgfTtcblxuICAgIHRoaXMuZGlhbG9nUmVmLmNsb3NlKHtcbiAgICAgIC4uLmZsb3dFeGVjdXRpb25Ub1NhdmUsXG4gICAgfSk7XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAxNSBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuPGgyIG1hdC1kaWFsb2ctdGl0bGUgY2xhc3M9XCJ0aXRsZVwiPlxuICBGbG93IGV4ZWN1dGlvblxuXG4gIDxidXR0b24gY2xhc3M9XCJ0aXRsZV9fY2xvc2VCdG5cIiBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIkNsb3NlIGRpYWxvZ1wiIFttYXQtZGlhbG9nLWNsb3NlXT1cImZhbHNlXCI+XG4gICAgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86Y2FuY2VsXCI+PC9tYXQtaWNvbj5cbiAgPC9idXR0b24+XG48L2gyPlxuXG48bWF0LWRpYWxvZy1jb250ZW50ICpuZ0lmPVwiZmxvd0V4ZWN1dGlvbkZvcm1Hcm91cFwiIGNsYXNzPVwiY29udGVudFwiIFtmb3JtR3JvdXBdPVwiZmxvd0V4ZWN1dGlvbkZvcm1Hcm91cFwiPlxuICA8ZGl2IGNsYXNzPVwiY29udGVudF9fcm93XCI+XG4gICAgPGdpby1iYW5uZXItaW5mbz5cbiAgICAgIEJ5IGRlZmF1bHQsIGZsb3cgc2VsZWN0aW9uIGlzIGJhc2VkIG9uIHRoZSBvcGVyYXRvcnMgZGVmaW5lZCBpbiB5b3VyIGZsb3dzLCBlaXRoZXIgd2hlbiBpdCDigJxtYXRjaGVzIHdpdGjigJ0gb3Ig4oCcc3RhcnRzIHdpdGjigJ0gYSBwYXRoLiBZb3VcbiAgICAgIGNhbiBjaG9vc2UgdGhlIFwiQmVzdCBtYXRjaFwiIG9wdGlvbiB0byBzZWxlY3QgYSBmbG93IGZyb20gdGhlIGNsb3Nlc3QgcGF0aC5cbiAgICA8L2dpby1iYW5uZXItaW5mbz5cbiAgPC9kaXY+XG4gIDxkaXYgY2xhc3M9XCJjb250ZW50X19yb3dcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsPkRlZmF1bHQgZmxvdyBtb2RlPC9tYXQtbGFiZWw+XG4gICAgICA8bWF0LXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJtb2RlXCI+XG4gICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiQkVTVF9NQVRDSFwiPkJlc3QgTWF0Y2g8L21hdC1vcHRpb24+XG4gICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiREVGQVVMVFwiPkRlZmF1bHQ8L21hdC1vcHRpb24+XG4gICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICA8bWF0LWhpbnQ+Q2hhbmdlIGhvdyB0aGUgZmxvdyBzZWxlY3Rpb24gaXMgbWFkZTwvbWF0LWhpbnQ+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImNvbnRlbnRfX3Jvd1wiPlxuICAgIDxnaW8tZm9ybS1zbGlkZS10b2dnbGU+XG4gICAgICA8Z2lvLWZvcm0tbGFiZWw+RmFpbCBvbiBmbG93IG1pc21hdGNoPC9naW8tZm9ybS1sYWJlbD5cbiAgICAgIFJlc3BvbmQgd2l0aCBhbiBlcnJvciB3aGVuIHJlcXVlc3RzIGRvbuKAmXQgbWF0Y2ggYW55IGRlZmluZWQgZmxvd1xuICAgICAgPG1hdC1zbGlkZS10b2dnbGUgZ2lvRm9ybVNsaWRlVG9nZ2xlIGZvcm1Db250cm9sTmFtZT1cIm1hdGNoUmVxdWlyZWRcIj48L21hdC1zbGlkZS10b2dnbGU+XG4gICAgPC9naW8tZm9ybS1zbGlkZS10b2dnbGU+XG4gIDwvZGl2PlxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnMgY2xhc3M9XCJhY3Rpb25zXCI+XG4gIDxidXR0b24gY2xhc3M9XCJhY3Rpb25zX19jYW5jZWxCdG5cIiBtYXQtZmxhdC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwiZmFsc2VcIj5DYW5jZWw8L2J1dHRvbj5cbiAgPGJ1dHRvbiBjbGFzcz1cImFjdGlvbnNfX3NhdmVCdG5cIiBjb2xvcj1cInByaW1hcnlcIiBtYXQtc3Ryb2tlZC1idXR0b24gcm9sZT1cImRpYWxvZ1wiIChjbGljayk9XCJvblN1Ym1pdCgpXCI+U2F2ZTwvYnV0dG9uPlxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4iXX0=
|
|
@@ -79,12 +79,12 @@ export class GioPolicyStudioFlowMessageFormDialogComponent {
|
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
GioPolicyStudioFlowMessageFormDialogComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowMessageFormDialogComponent, deps: [{ token: i1.MatDialogRef }, { token: MAT_DIALOG_DATA }], target: i0.ɵɵFactoryTarget.Component });
|
|
82
|
-
GioPolicyStudioFlowMessageFormDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioFlowMessageFormDialogComponent, selector: "gio-ps-flow-message-form-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"title\">\n {{ mode === 'create' ? 'Create a new flow' : 'Edit flow' }}\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"false\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowFormGroup\" class=\"content\" [formGroup]=\"flowFormGroup\">\n <p>Flows allow you to apply different policies per event phases. For example you can reroute calls based on the URL specified.</p>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Flow name</mat-label>\n <input matInput formControlName=\"name\" cdkFocusInitial />\n <mat-hint>Names will be automatically generated with channel and operation if left blank</mat-hint>\n </mat-form-field>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Operator</mat-label>\n <mat-select formControlName=\"channelOperator\">\n <mat-option value=\"EQUALS\">Equals</mat-option>\n <mat-option value=\"STARTS_WITH\">Starts with</mat-option>\n </mat-select>\n <mat-hint>Channel operator</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Channel</mat-label>\n <input matInput formControlName=\"channel\" />\n <mat-hint>Publish or Subscribe channel. This is the path of your request.</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Entrypoints</mat-label>\n <mat-select multiple formControlName=\"entrypoints\">\n <mat-option *ngFor=\"let entrypoint of entrypoints\" [value]=\"entrypoint\">{{ entrypoint }}</mat-option>\n </mat-select>\n <mat-hint>Entrypoints where your flow will be executed</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Entrypoints supported operations</mat-label>\n <mat-select multiple formControlName=\"operations\">\n <mat-option value=\"PUBLISH\">Publish</mat-option>\n <mat-option value=\"SUBSCRIBE\">Subscribe</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>Condition to execute the flow, supports Expression Language</mat-hint>\n </mat-form-field>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"false\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onSubmit()\">\n {{ mode === 'create' ? 'Create' : 'Save' }}\n </button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.content__row{display:flex;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.MatLabel, selector: "mat-label" }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
|
|
82
|
+
GioPolicyStudioFlowMessageFormDialogComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioFlowMessageFormDialogComponent, selector: "gio-ps-flow-message-form-dialog", ngImport: i0, template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"title\">\n {{ mode === 'create' ? 'Create a new flow' : 'Edit flow' }}\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"false\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowFormGroup\" class=\"content\" [formGroup]=\"flowFormGroup\">\n <p>Flows allow you to apply different policies per event phases. For example you can reroute calls based on the URL specified.</p>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Flow name</mat-label>\n <input matInput formControlName=\"name\" cdkFocusInitial />\n <mat-hint>Names will be automatically generated with channel and operation if left blank</mat-hint>\n </mat-form-field>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Operator</mat-label>\n <mat-select formControlName=\"channelOperator\">\n <mat-option value=\"EQUALS\">Equals</mat-option>\n <mat-option value=\"STARTS_WITH\">Starts with</mat-option>\n </mat-select>\n <mat-hint>Channel operator</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Channel</mat-label>\n <input matInput formControlName=\"channel\" />\n <mat-hint>Publish or Subscribe channel. This is the path of your request.</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Entrypoints</mat-label>\n <mat-select multiple formControlName=\"entrypoints\">\n <mat-option *ngFor=\"let entrypoint of entrypoints\" [value]=\"entrypoint.type\">{{ entrypoint.name }}</mat-option>\n </mat-select>\n <mat-hint>Entrypoints where your flow will be executed</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Entrypoints supported operations</mat-label>\n <mat-select multiple formControlName=\"operations\">\n <mat-option value=\"PUBLISH\">Publish</mat-option>\n <mat-option value=\"SUBSCRIBE\">Subscribe</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>Condition to execute the flow, supports Expression Language</mat-hint>\n </mat-form-field>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"false\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onSubmit()\">\n {{ mode === 'create' ? 'Create' : 'Save' }}\n </button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.content__row{display:flex;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"], components: [{ type: i2.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { type: i3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i4.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { type: i5.MatSelect, selector: "mat-select", inputs: ["disabled", "disableRipple", "tabIndex"], exportAs: ["matSelect"] }, { type: i6.MatOption, selector: "mat-option", exportAs: ["matOption"] }], directives: [{ type: i1.MatDialogTitle, selector: "[mat-dialog-title], [matDialogTitle]", inputs: ["id"], exportAs: ["matDialogTitle"] }, { type: i1.MatDialogClose, selector: "[mat-dialog-close], [matDialogClose]", inputs: ["aria-label", "type", "mat-dialog-close", "matDialogClose"], exportAs: ["matDialogClose"] }, { type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatDialogContent, selector: "[mat-dialog-content], mat-dialog-content, [matDialogContent]" }, { type: i8.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { type: i8.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { type: i4.MatLabel, selector: "mat-label" }, { type: i9.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { type: i8.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { type: i4.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i1.MatDialogActions, selector: "[mat-dialog-actions], mat-dialog-actions, [matDialogActions]" }] });
|
|
83
83
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowMessageFormDialogComponent, decorators: [{
|
|
84
84
|
type: Component,
|
|
85
|
-
args: [{ selector: 'gio-ps-flow-message-form-dialog', template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"title\">\n {{ mode === 'create' ? 'Create a new flow' : 'Edit flow' }}\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"false\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowFormGroup\" class=\"content\" [formGroup]=\"flowFormGroup\">\n <p>Flows allow you to apply different policies per event phases. For example you can reroute calls based on the URL specified.</p>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Flow name</mat-label>\n <input matInput formControlName=\"name\" cdkFocusInitial />\n <mat-hint>Names will be automatically generated with channel and operation if left blank</mat-hint>\n </mat-form-field>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Operator</mat-label>\n <mat-select formControlName=\"channelOperator\">\n <mat-option value=\"EQUALS\">Equals</mat-option>\n <mat-option value=\"STARTS_WITH\">Starts with</mat-option>\n </mat-select>\n <mat-hint>Channel operator</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Channel</mat-label>\n <input matInput formControlName=\"channel\" />\n <mat-hint>Publish or Subscribe channel. This is the path of your request.</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Entrypoints</mat-label>\n <mat-select multiple formControlName=\"entrypoints\">\n <mat-option *ngFor=\"let entrypoint of entrypoints\" [value]=\"entrypoint\">{{ entrypoint }}</mat-option>\n </mat-select>\n <mat-hint>Entrypoints where your flow will be executed</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Entrypoints supported operations</mat-label>\n <mat-select multiple formControlName=\"operations\">\n <mat-option value=\"PUBLISH\">Publish</mat-option>\n <mat-option value=\"SUBSCRIBE\">Subscribe</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>Condition to execute the flow, supports Expression Language</mat-hint>\n </mat-form-field>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"false\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onSubmit()\">\n {{ mode === 'create' ? 'Create' : 'Save' }}\n </button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.content__row{display:flex;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"] }]
|
|
85
|
+
args: [{ selector: 'gio-ps-flow-message-form-dialog', template: "<!--\n\n Copyright (C) 2015 The Gravitee team (http://gravitee.io)\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n<h2 mat-dialog-title class=\"title\">\n {{ mode === 'create' ? 'Create a new flow' : 'Edit flow' }}\n\n <button class=\"title__closeBtn\" mat-icon-button aria-label=\"Close dialog\" [mat-dialog-close]=\"false\">\n <mat-icon svgIcon=\"gio:cancel\"></mat-icon>\n </button>\n</h2>\n\n<mat-dialog-content *ngIf=\"flowFormGroup\" class=\"content\" [formGroup]=\"flowFormGroup\">\n <p>Flows allow you to apply different policies per event phases. For example you can reroute calls based on the URL specified.</p>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Flow name</mat-label>\n <input matInput formControlName=\"name\" cdkFocusInitial />\n <mat-hint>Names will be automatically generated with channel and operation if left blank</mat-hint>\n </mat-form-field>\n </div>\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Operator</mat-label>\n <mat-select formControlName=\"channelOperator\">\n <mat-option value=\"EQUALS\">Equals</mat-option>\n <mat-option value=\"STARTS_WITH\">Starts with</mat-option>\n </mat-select>\n <mat-hint>Channel operator</mat-hint>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Channel</mat-label>\n <input matInput formControlName=\"channel\" />\n <mat-hint>Publish or Subscribe channel. This is the path of your request.</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Entrypoints</mat-label>\n <mat-select multiple formControlName=\"entrypoints\">\n <mat-option *ngFor=\"let entrypoint of entrypoints\" [value]=\"entrypoint.type\">{{ entrypoint.name }}</mat-option>\n </mat-select>\n <mat-hint>Entrypoints where your flow will be executed</mat-hint>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Entrypoints supported operations</mat-label>\n <mat-select multiple formControlName=\"operations\">\n <mat-option value=\"PUBLISH\">Publish</mat-option>\n <mat-option value=\"SUBSCRIBE\">Subscribe</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <div class=\"content__row\">\n <mat-form-field>\n <mat-label>Condition</mat-label>\n <input matInput formControlName=\"condition\" />\n <mat-hint>Condition to execute the flow, supports Expression Language</mat-hint>\n </mat-form-field>\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"actions\">\n <button class=\"actions__cancelBtn\" mat-flat-button [mat-dialog-close]=\"false\">Cancel</button>\n <button class=\"actions__saveBtn\" color=\"primary\" mat-stroked-button role=\"dialog\" (click)=\"onSubmit()\">\n {{ mode === 'create' ? 'Create' : 'Save' }}\n </button>\n</mat-dialog-actions>\n", styles: [".title__closeBtn{top:-20px;right:-20px;float:right}.content__row{display:flex;gap:16px}.content__row mat-form-field{flex:1 1 auto}\n"] }]
|
|
86
86
|
}], ctorParameters: function () { return [{ type: i1.MatDialogRef }, { type: undefined, decorators: [{
|
|
87
87
|
type: Inject,
|
|
88
88
|
args: [MAT_DIALOG_DATA]
|
|
89
89
|
}] }]; } });
|
|
90
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctbWVzc2FnZS1mb3JtLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3ctZm9ybS1kaWFsb2cvZmxvdy1tZXNzYWdlLWZvcm0tZGlhbG9nL2dpby1wcy1mbG93LW1lc3NhZ2UtZm9ybS1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9mbG93LWZvcm0tZGlhbG9nL2Zsb3ctbWVzc2FnZS1mb3JtLWRpYWxvZy9naW8tcHMtZmxvdy1tZXNzYWdlLWZvcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDOzs7Ozs7Ozs7OztBQWdCN0MsTUFBTSxPQUFPLDZDQUE2QztJQU94RCxZQUNTLFNBQTJHLEVBQ3pGLGNBQXdEO1FBRDFFLGNBQVMsR0FBVCxTQUFTLENBQWtHO1FBUDdHLGdCQUFXLEdBQWEsRUFBRSxDQUFDO1FBSTNCLFNBQUksR0FBc0IsUUFBUSxDQUFDO1FBTXhDLElBQUksQ0FBQyxXQUFXLEdBQUcsY0FBYyxFQUFFLFdBQVcsSUFBSSxFQUFFLENBQUM7UUFFckQsSUFBSSxDQUFDLFlBQVksR0FBRyxTQUFTLENB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RkRyRGEsNkNBQTZDO2tCQUx6RCxTQUFTOytCQUNFLGlDQUFpQzs7MEJBYXhDLE1BQU07MkJBQUMsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIEluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTWF0RGlhbG9nUmVmLCBNQVRfRElBTE9HX0RBVEEgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGNsb25lRGVlcCwgdW5pcXVlSWQgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBGbG93Vk0gfSBmcm9tICcuLi8uLi8uLi9naW8tcG9saWN5LXN0dWRpby5tb2RlbCc7XG5pbXBvcnQgeyBDaGFubmVsU2VsZWN0b3IsIENvbmRpdGlvblNlbGVjdG9yIH0gZnJvbSAnLi4vLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7IEdpb1BvbGljeVN0dWRpb0Zsb3dGb3JtRGlhbG9nUmVzdWx0IH0gZnJvbSAnLi4vZ2lvLXBzLWZsb3ctZm9ybS1kaWFsb2ctcmVzdWx0Lm1vZGVsJztcblxuZXhwb3J0IHR5cGUgR2lvUG9saWN5U3R1ZGlvRmxvd01lc3NhZ2VGb3JtRGlhbG9nRGF0YSA9IHtcbiAgZmxvdz86IEZsb3dWTTtcbiAgZW50cnlwb2ludHM/OiBzdHJpbmdbXTtcbn07XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dpby1wcy1mbG93LW1lc3NhZ2UtZm9ybS1kaWFsb2cnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBzLWZsb3ctbWVzc2FnZS1mb3JtLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2dpby1wcy1mbG93LW1lc3NhZ2UtZm9ybS1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2lvUG9saWN5U3R1ZGlvRmxvd01lc3NhZ2VGb3JtRGlhbG9nQ29tcG9uZW50IHtcbiAgcHVibGljIGVudHJ5cG9pbnRzOiBzdHJpbmdbXSA9IFtdO1xuICBwdWJsaWMgZmxvd0Zvcm1Hcm91cD86IEZvcm1Hcm91cDtcblxuICBwdWJsaWMgZXhpc3RpbmdGbG93PzogRmxvd1ZNO1xuICBwdWJsaWMgbW9kZTogJ2NyZWF0ZScgfCAnZWRpdCcgPSAnY3JlYXRlJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8R2lvUG9saWN5U3R1ZGlvRmxvd01lc3NhZ2VGb3JtRGlhbG9nQ29tcG9uZW50LCBHaW9Qb2xpY3lTdHVkaW9GbG93Rm9ybURpYWxvZ1Jlc3VsdD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIGZsb3dEaWFsb2dEYXRhOiBHaW9Qb2xpY3lTdHVkaW9GbG93TWVzc2FnZUZvcm1EaWFsb2dEYXRhLFxuICApIHtcbiAgICB0aGlzLmVudHJ5cG9pbnRzID0gZmxvd0RpYWxvZ0RhdGE/LmVudHJ5cG9pbnRzID8/IFtdO1xuXG4gICAgdGhpcy5leGlzdGluZ0Zsb3cgPSBjbG9uZURlZXAoZmxvd0RpYWxvZ0RhdGE/LmZsb3cpO1xuICAgIHRoaXMubW9kZSA9IHRoaXMuZXhpc3RpbmdGbG93ID8gJ2VkaXQnIDogJ2NyZWF0ZSc7XG5cbiAgICBjb25zdCBjaGFubmVsU2VsZWN0b3IgPSBmbG93RGlhbG9nRGF0YT8uZmxvdz8uc2VsZWN0b3JzPy5maW5kKHMgPT4gcy50eXBlID09PSAnQ0hBTk5FTCcpIGFzIENoYW5uZWxTZWxlY3RvcjtcbiAgICBjb25zdCBjb25kaXRpb25TZWxlY3RvciA9IGZsb3dEaWFsb2dEYXRhPy5mbG93Py5zZWxlY3RvcnM/LmZpbmQocyA9PiBzLnR5cGUgPT09ICdDT05ESVRJT04nKSBhcyBDb25kaXRpb25TZWxlY3RvcjtcblxuICAgIHRoaXMuZmxvd0Zvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sKGZsb3dEaWFsb2dEYXRhPy5mbG93Py5uYW1lID8/ICcnKSxcbiAgICAgIGNoYW5uZWxPcGVyYXRvcjogbmV3IEZvcm1Db250cm9sKGNoYW5uZWxTZWxlY3Rvcj8uY2hhbm5lbE9wZXJhdG9yID8/ICdFUVVBTFMnKSxcbiAgICAgIGNoYW5uZWw6IG5ldyBGb3JtQ29udHJvbChjaGFubmVsU2VsZWN0b3I/LmNoYW5uZWwgPz8gJycpLFxuICAgICAgb3BlcmF0aW9uczogbmV3IEZvcm1Db250cm9sKGNoYW5uZWxTZWxlY3Rvcj8ub3BlcmF0aW9ucyA/PyBbXSksXG4gICAgICBlbnRyeXBvaW50czogbmV3IEZvcm1Db250cm9sKGNoYW5uZWxTZWxlY3Rvcj8uZW50cnlwb2ludHMgPz8gW10pLFxuICAgICAgY29uZGl0aW9uOiBuZXcgRm9ybUNvbnRyb2woY29uZGl0aW9uU2VsZWN0b3I/LmNvbmRpdGlvbiA/PyAnJyksXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25TdWJtaXQoKTogdm9pZCB7XG4gICAgY29uc3QgY2hhbm5lbFNlbGVjdG9yVG9TYXZlOiBDaGFubmVsU2VsZWN0b3IgPSB7XG4gICAgICB0eXBlOiAnQ0hBTk5FTCcsXG4gICAgICBjaGFubmVsOiB0aGlzLmZsb3dGb3JtR3JvdXA/LmdldCgnY2hhbm5lbCcpPy52YWx1ZSxcbiAgICAgIGNoYW5uZWxPcGVyYXRvcjogdGhpcy5mbG93Rm9ybUdyb3VwPy5nZXQoJ2NoYW5uZWxPcGVyYXRvcicpPy52YWx1ZSxcbiAgICAgIG9wZXJhdGlvbnM6IHRoaXMuZmxvd0Zvcm1Hcm91cD8uZ2V0KCdvcGVyYXRpb25zJyk/LnZhbHVlLFxuICAgICAgZW50cnlwb2ludHM6IHRoaXMuZmxvd0Zvcm1Hcm91cD8uZ2V0KCdlbnRyeXBvaW50cycpPy52YWx1ZSxcbiAgICB9O1xuXG4gICAgY29uc3QgY29uZGl0aW9uVmFsdWU6IHN0cmluZyA9IHRoaXMuZmxvd0Zvcm1Hcm91cD8uZ2V0KCdjb25kaXRpb24nKT8udmFsdWU7XG4gICAgY29uc3QgY29uZGl0aW9uU2VsZWN0b3JUb1NhdmU6IENvbmRpdGlvblNlbGVjdG9yIHwgdW5kZWZpbmVkID0gY29uZGl0aW9uVmFsdWVcbiAgICAgID8ge1xuICAgICAgICAgIHR5cGU6ICdDT05ESVRJT04nLFxuICAgICAgICAgIGNvbmRpdGlvbjogY29uZGl0aW9uVmFsdWUsXG4gICAgICAgIH1cbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgZmxvd1RvU2F2ZTogRmxvd1ZNID0ge1xuICAgICAgLy8gTmV3IGlkIGZvciBuZXcgZmxvd1xuICAgICAgX2lkOiB1bmlxdWVJZCgnZmxvd18nKSxcbiAgICAgIC8vIElmIGV4aXN0aW5nIGZsb3csIGtlZXAgcm9vdCBwcm9wc1xuICAgICAgLi4udGhpcy5leGlzdGluZ0Zsb3csXG4gICAgICAvLyBNYXJrIGFzIGNoYW5nZWRcbiAgICAgIF9oYXNDaGFuZ2VkOiB0cnVlLFxuICAgICAgLy8gQWRkIGNoYW5nZXNcbiAgICAgIG5hbWU6IHRoaXMuZmxvd0Zvcm1Hcm91cD8uZ2V0KCduYW1lJyk/LnZhbHVlLFxuICAgICAgc2VsZWN0b3JzOiBjb25kaXRpb25TZWxlY3RvclRvU2F2ZSA/IFtjaGFubmVsU2VsZWN0b3JUb1NhdmUsIGNvbmRpdGlvblNlbGVjdG9yVG9TYXZlXSA6IFtjaGFubmVsU2VsZWN0b3JUb1NhdmVdLFxuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICB9O1xuXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgLi4uZmxvd1RvU2F2ZSxcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuXG4gICAgQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuLS0+XG48aDIgbWF0LWRpYWxvZy10aXRsZSBjbGFzcz1cInRpdGxlXCI+XG4gIHt7IG1vZGUgPT09ICdjcmVhdGUnID8gJ0NyZWF0ZSBhIG5ldyBmbG93JyA6ICdFZGl0IGZsb3cnIH19XG5cbiAgPGJ1dHRvbiBjbGFzcz1cInRpdGxlX19jbG9zZUJ0blwiIG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiQ2xvc2UgZGlhbG9nXCIgW21hdC1kaWFsb2ctY2xvc2VdPVwiZmFsc2VcIj5cbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzpjYW5jZWxcIj48L21hdC1pY29uPlxuICA8L2J1dHRvbj5cbjwvaDI+XG5cbjxtYXQtZGlhbG9nLWNvbnRlbnQgKm5nSWY9XCJmbG93Rm9ybUdyb3VwXCIgY2xhc3M9XCJjb250ZW50XCIgW2Zvcm1Hcm91cF09XCJmbG93Rm9ybUdyb3VwXCI+XG4gIDxwPkZsb3dzIGFsbG93IHlvdSB0byBhcHBseSBkaWZmZXJlbnQgcG9saWNpZXMgcGVyIGV2ZW50IHBoYXNlcy4gRm9yIGV4YW1wbGUgeW91IGNhbiByZXJvdXRlIGNhbGxzIGJhc2VkIG9uIHRoZSBVUkwgc3BlY2lmaWVkLjwvcD5cblxuICA8ZGl2IGNsYXNzPVwiY29udGVudF9fcm93XCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1sYWJlbD5GbG93IG5hbWU8L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgY2RrRm9jdXNJbml0aWFsIC8+XG4gICAgICA8bWF0LWhpbnQ+TmFtZXMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCB3aXRoIGNoYW5uZWwgYW5kIG9wZXJhdGlvbiBpZiBsZWZ0IGJsYW5rPC9tYXQtaGludD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbnRlbnRfX3Jvd1wiPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtbGFiZWw+T3BlcmF0b3I8L21hdC1sYWJlbD5cbiAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImNoYW5uZWxPcGVyYXRvclwiPlxuICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIkVRVUFMU1wiPkVxdWFsczwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJTVEFSVFNfV0lUSFwiPlN0YXJ0cyB3aXRoPC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPG1hdC1oaW50PkNoYW5uZWwgb3BlcmF0b3I8L21hdC1oaW50PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsPkNoYW5uZWw8L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJjaGFubmVsXCIgLz5cbiAgICAgIDxtYXQtaGludD5QdWJsaXNoIG9yIFN1YnNjcmliZSBjaGFubmVsLiBUaGlzIGlzIHRoZSBwYXRoIG9mIHlvdXIgcmVxdWVzdC48L21hdC1oaW50PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjb250ZW50X19yb3dcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsPkVudHJ5cG9pbnRzPC9tYXQtbGFiZWw+XG4gICAgICA8bWF0LXNlbGVjdCBtdWx0aXBsZSBmb3JtQ29udHJvbE5hbWU9XCJlbnRyeXBvaW50c1wiPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZW50cnlwb2ludCBvZiBlbnRyeXBvaW50c1wiIFt2YWx1ZV09XCJlbnRyeXBvaW50XCI+e3sgZW50cnlwb2ludCB9fTwvbWF0LW9wdGlvbj5cbiAgICAgIDwvbWF0LXNlbGVjdD5cbiAgICAgIDxtYXQtaGludD5FbnRyeXBvaW50cyB3aGVyZSB5b3VyIGZsb3cgd2lsbCBiZSBleGVjdXRlZDwvbWF0LWhpbnQ+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImNvbnRlbnRfX3Jvd1wiPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtbGFiZWw+RW50cnlwb2ludHMgc3VwcG9ydGVkIG9wZXJhdGlvbnM8L21hdC1sYWJlbD5cbiAgICAgIDxtYXQtc2VsZWN0IG11bHRpcGxlIGZvcm1Db250cm9sTmFtZT1cIm9wZXJhdGlvbnNcIj5cbiAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJQVUJMSVNIXCI+UHVibGlzaDwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJTVUJTQ1JJQkVcIj5TdWJzY3JpYmU8L21hdC1vcHRpb24+XG4gICAgICA8L21hdC1zZWxlY3Q+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImNvbnRlbnRfX3Jvd1wiPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtbGFiZWw+Q29uZGl0aW9uPC9tYXQtbGFiZWw+XG4gICAgICA8aW5wdXQgbWF0SW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiY29uZGl0aW9uXCIgLz5cbiAgICAgIDxtYXQtaGludD5Db25kaXRpb24gdG8gZXhlY3V0ZSB0aGUgZmxvdywgc3VwcG9ydHMgRXhwcmVzc2lvbiBMYW5ndWFnZTwvbWF0LWhpbnQ+XG4gICAgPC9tYXQtZm9ybS1maWVsZD5cbiAgPC9kaXY+XG48L21hdC1kaWFsb2ctY29udGVudD5cblxuPG1hdC1kaWFsb2ctYWN0aW9ucyBjbGFzcz1cImFjdGlvbnNcIj5cbiAgPGJ1dHRvbiBjbGFzcz1cImFjdGlvbnNfX2NhbmNlbEJ0blwiIG1hdC1mbGF0LWJ1dHRvbiBbbWF0LWRpYWxvZy1jbG9zZV09XCJmYWxzZVwiPkNhbmNlbDwvYnV0dG9uPlxuICA8YnV0dG9uIGNsYXNzPVwiYWN0aW9uc19fc2F2ZUJ0blwiIGNvbG9yPVwicHJpbWFyeVwiIG1hdC1zdHJva2VkLWJ1dHRvbiByb2xlPVwiZGlhbG9nXCIgKGNsaWNrKT1cIm9uU3VibWl0KClcIj5cbiAgICB7eyBtb2RlID09PSAnY3JlYXRlJyA/ICdDcmVhdGUnIDogJ1NhdmUnIH19XG4gIDwvYnV0dG9uPlxuPC9tYXQtZGlhbG9nLWFjdGlvbnM+XG4iXX0=
|
|
90
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3ctbWVzc2FnZS1mb3JtLWRpYWxvZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy91aS1wb2xpY3ktc3R1ZGlvLWFuZ3VsYXIvc3JjL2xpYi9jb21wb25lbnRzL2Zsb3ctZm9ybS1kaWFsb2cvZmxvdy1tZXNzYWdlLWZvcm0tZGlhbG9nL2dpby1wcy1mbG93LW1lc3NhZ2UtZm9ybS1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9mbG93LWZvcm0tZGlhbG9nL2Zsb3ctbWVzc2FnZS1mb3JtLWRpYWxvZy9naW8tcHMtZmxvdy1tZXNzYWdlLWZvcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFnQixlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN6RSxPQUFPLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3hELE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sUUFBUSxDQUFDOzs7Ozs7Ozs7OztBQWdCN0MsTUFBTSxPQUFPLDZDQUE2QztJQU94RCxZQUNTLFNBQTJHLEVBQ3pGLGNBQXdEO1FBRDFFLGNBQVMsR0FBVCxTQUFTLENBQWtHO1FBUDdHLGdCQUFXLEdBQW9CLEVBQUUsQ0FBQztRQUlsQyxTQUFJLEdBQXNCLFFBQVEsQ0FBQztRQU14QyxJQUFJLENBQUMsV0FBVyxHQUFHLGNBQWMsRUFBRSxXQUFXLElBQUksRUFBRSxDQUFDO1FBRXJELElBQUksQ0FBQyxZQUFZLEdBQUcsU0FBUyxD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NEZEckRhLDZDQUE2QztrQkFMekQsU0FBUzsrQkFDRSxpQ0FBaUM7OzBCQWF4QyxNQUFNOzJCQUFDLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgQ29tcG9uZW50LCBJbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZGlhbG9nJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjbG9uZURlZXAsIHVuaXF1ZUlkIH0gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgRmxvd1ZNIH0gZnJvbSAnLi4vLi4vLi4vZ2lvLXBvbGljeS1zdHVkaW8ubW9kZWwnO1xuaW1wb3J0IHsgQ2hhbm5lbFNlbGVjdG9yLCBDb25kaXRpb25TZWxlY3RvciwgQ29ubmVjdG9ySW5mbyB9IGZyb20gJy4uLy4uLy4uL21vZGVscyc7XG5pbXBvcnQgeyBHaW9Qb2xpY3lTdHVkaW9GbG93Rm9ybURpYWxvZ1Jlc3VsdCB9IGZyb20gJy4uL2dpby1wcy1mbG93LWZvcm0tZGlhbG9nLXJlc3VsdC5tb2RlbCc7XG5cbmV4cG9ydCB0eXBlIEdpb1BvbGljeVN0dWRpb0Zsb3dNZXNzYWdlRm9ybURpYWxvZ0RhdGEgPSB7XG4gIGZsb3c/OiBGbG93Vk07XG4gIGVudHJ5cG9pbnRzPzogQ29ubmVjdG9ySW5mb1tdO1xufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ2lvLXBzLWZsb3ctbWVzc2FnZS1mb3JtLWRpYWxvZycsXG4gIHRlbXBsYXRlVXJsOiAnLi9naW8tcHMtZmxvdy1tZXNzYWdlLWZvcm0tZGlhbG9nLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2lvLXBzLWZsb3ctbWVzc2FnZS1mb3JtLWRpYWxvZy5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9Qb2xpY3lTdHVkaW9GbG93TWVzc2FnZUZvcm1EaWFsb2dDb21wb25lbnQge1xuICBwdWJsaWMgZW50cnlwb2ludHM6IENvbm5lY3RvckluZm9bXSA9IFtdO1xuICBwdWJsaWMgZmxvd0Zvcm1Hcm91cD86IEZvcm1Hcm91cDtcblxuICBwdWJsaWMgZXhpc3RpbmdGbG93PzogRmxvd1ZNO1xuICBwdWJsaWMgbW9kZTogJ2NyZWF0ZScgfCAnZWRpdCcgPSAnY3JlYXRlJztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgZGlhbG9nUmVmOiBNYXREaWFsb2dSZWY8R2lvUG9saWN5U3R1ZGlvRmxvd01lc3NhZ2VGb3JtRGlhbG9nQ29tcG9uZW50LCBHaW9Qb2xpY3lTdHVkaW9GbG93Rm9ybURpYWxvZ1Jlc3VsdD4sXG4gICAgQEluamVjdChNQVRfRElBTE9HX0RBVEEpIGZsb3dEaWFsb2dEYXRhOiBHaW9Qb2xpY3lTdHVkaW9GbG93TWVzc2FnZUZvcm1EaWFsb2dEYXRhLFxuICApIHtcbiAgICB0aGlzLmVudHJ5cG9pbnRzID0gZmxvd0RpYWxvZ0RhdGE/LmVudHJ5cG9pbnRzID8/IFtdO1xuXG4gICAgdGhpcy5leGlzdGluZ0Zsb3cgPSBjbG9uZURlZXAoZmxvd0RpYWxvZ0RhdGE/LmZsb3cpO1xuICAgIHRoaXMubW9kZSA9IHRoaXMuZXhpc3RpbmdGbG93ID8gJ2VkaXQnIDogJ2NyZWF0ZSc7XG5cbiAgICBjb25zdCBjaGFubmVsU2VsZWN0b3IgPSBmbG93RGlhbG9nRGF0YT8uZmxvdz8uc2VsZWN0b3JzPy5maW5kKHMgPT4gcy50eXBlID09PSAnQ0hBTk5FTCcpIGFzIENoYW5uZWxTZWxlY3RvcjtcbiAgICBjb25zdCBjb25kaXRpb25TZWxlY3RvciA9IGZsb3dEaWFsb2dEYXRhPy5mbG93Py5zZWxlY3RvcnM/LmZpbmQocyA9PiBzLnR5cGUgPT09ICdDT05ESVRJT04nKSBhcyBDb25kaXRpb25TZWxlY3RvcjtcblxuICAgIHRoaXMuZmxvd0Zvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgICAgbmFtZTogbmV3IEZvcm1Db250cm9sKGZsb3dEaWFsb2dEYXRhPy5mbG93Py5uYW1lID8/ICcnKSxcbiAgICAgIGNoYW5uZWxPcGVyYXRvcjogbmV3IEZvcm1Db250cm9sKGNoYW5uZWxTZWxlY3Rvcj8uY2hhbm5lbE9wZXJhdG9yID8/ICdFUVVBTFMnKSxcbiAgICAgIGNoYW5uZWw6IG5ldyBGb3JtQ29udHJvbChjaGFubmVsU2VsZWN0b3I/LmNoYW5uZWwgPz8gJycpLFxuICAgICAgb3BlcmF0aW9uczogbmV3IEZvcm1Db250cm9sKGNoYW5uZWxTZWxlY3Rvcj8ub3BlcmF0aW9ucyA/PyBbXSksXG4gICAgICBlbnRyeXBvaW50czogbmV3IEZvcm1Db250cm9sKGNoYW5uZWxTZWxlY3Rvcj8uZW50cnlwb2ludHMgPz8gW10pLFxuICAgICAgY29uZGl0aW9uOiBuZXcgRm9ybUNvbnRyb2woY29uZGl0aW9uU2VsZWN0b3I/LmNvbmRpdGlvbiA/PyAnJyksXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25TdWJtaXQoKTogdm9pZCB7XG4gICAgY29uc3QgY2hhbm5lbFNlbGVjdG9yVG9TYXZlOiBDaGFubmVsU2VsZWN0b3IgPSB7XG4gICAgICB0eXBlOiAnQ0hBTk5FTCcsXG4gICAgICBjaGFubmVsOiB0aGlzLmZsb3dGb3JtR3JvdXA/LmdldCgnY2hhbm5lbCcpPy52YWx1ZSxcbiAgICAgIGNoYW5uZWxPcGVyYXRvcjogdGhpcy5mbG93Rm9ybUdyb3VwPy5nZXQoJ2NoYW5uZWxPcGVyYXRvcicpPy52YWx1ZSxcbiAgICAgIG9wZXJhdGlvbnM6IHRoaXMuZmxvd0Zvcm1Hcm91cD8uZ2V0KCdvcGVyYXRpb25zJyk/LnZhbHVlLFxuICAgICAgZW50cnlwb2ludHM6IHRoaXMuZmxvd0Zvcm1Hcm91cD8uZ2V0KCdlbnRyeXBvaW50cycpPy52YWx1ZSxcbiAgICB9O1xuXG4gICAgY29uc3QgY29uZGl0aW9uVmFsdWU6IHN0cmluZyA9IHRoaXMuZmxvd0Zvcm1Hcm91cD8uZ2V0KCdjb25kaXRpb24nKT8udmFsdWU7XG4gICAgY29uc3QgY29uZGl0aW9uU2VsZWN0b3JUb1NhdmU6IENvbmRpdGlvblNlbGVjdG9yIHwgdW5kZWZpbmVkID0gY29uZGl0aW9uVmFsdWVcbiAgICAgID8ge1xuICAgICAgICAgIHR5cGU6ICdDT05ESVRJT04nLFxuICAgICAgICAgIGNvbmRpdGlvbjogY29uZGl0aW9uVmFsdWUsXG4gICAgICAgIH1cbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgZmxvd1RvU2F2ZTogRmxvd1ZNID0ge1xuICAgICAgLy8gTmV3IGlkIGZvciBuZXcgZmxvd1xuICAgICAgX2lkOiB1bmlxdWVJZCgnZmxvd18nKSxcbiAgICAgIC8vIElmIGV4aXN0aW5nIGZsb3csIGtlZXAgcm9vdCBwcm9wc1xuICAgICAgLi4udGhpcy5leGlzdGluZ0Zsb3csXG4gICAgICAvLyBNYXJrIGFzIGNoYW5nZWRcbiAgICAgIF9oYXNDaGFuZ2VkOiB0cnVlLFxuICAgICAgLy8gQWRkIGNoYW5nZXNcbiAgICAgIG5hbWU6IHRoaXMuZmxvd0Zvcm1Hcm91cD8uZ2V0KCduYW1lJyk/LnZhbHVlLFxuICAgICAgc2VsZWN0b3JzOiBjb25kaXRpb25TZWxlY3RvclRvU2F2ZSA/IFtjaGFubmVsU2VsZWN0b3JUb1NhdmUsIGNvbmRpdGlvblNlbGVjdG9yVG9TYXZlXSA6IFtjaGFubmVsU2VsZWN0b3JUb1NhdmVdLFxuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICB9O1xuXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2Uoe1xuICAgICAgLi4uZmxvd1RvU2F2ZSxcbiAgICB9KTtcbiAgfVxufVxuIiwiPCEtLVxuXG4gICAgQ29weXJpZ2h0IChDKSAyMDE1IFRoZSBHcmF2aXRlZSB0ZWFtIChodHRwOi8vZ3Jhdml0ZWUuaW8pXG5cbiAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcblxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cblxuLS0+XG48aDIgbWF0LWRpYWxvZy10aXRsZSBjbGFzcz1cInRpdGxlXCI+XG4gIHt7IG1vZGUgPT09ICdjcmVhdGUnID8gJ0NyZWF0ZSBhIG5ldyBmbG93JyA6ICdFZGl0IGZsb3cnIH19XG5cbiAgPGJ1dHRvbiBjbGFzcz1cInRpdGxlX19jbG9zZUJ0blwiIG1hdC1pY29uLWJ1dHRvbiBhcmlhLWxhYmVsPVwiQ2xvc2UgZGlhbG9nXCIgW21hdC1kaWFsb2ctY2xvc2VdPVwiZmFsc2VcIj5cbiAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzpjYW5jZWxcIj48L21hdC1pY29uPlxuICA8L2J1dHRvbj5cbjwvaDI+XG5cbjxtYXQtZGlhbG9nLWNvbnRlbnQgKm5nSWY9XCJmbG93Rm9ybUdyb3VwXCIgY2xhc3M9XCJjb250ZW50XCIgW2Zvcm1Hcm91cF09XCJmbG93Rm9ybUdyb3VwXCI+XG4gIDxwPkZsb3dzIGFsbG93IHlvdSB0byBhcHBseSBkaWZmZXJlbnQgcG9saWNpZXMgcGVyIGV2ZW50IHBoYXNlcy4gRm9yIGV4YW1wbGUgeW91IGNhbiByZXJvdXRlIGNhbGxzIGJhc2VkIG9uIHRoZSBVUkwgc3BlY2lmaWVkLjwvcD5cblxuICA8ZGl2IGNsYXNzPVwiY29udGVudF9fcm93XCI+XG4gICAgPG1hdC1mb3JtLWZpZWxkPlxuICAgICAgPG1hdC1sYWJlbD5GbG93IG5hbWU8L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJuYW1lXCIgY2RrRm9jdXNJbml0aWFsIC8+XG4gICAgICA8bWF0LWhpbnQ+TmFtZXMgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCB3aXRoIGNoYW5uZWwgYW5kIG9wZXJhdGlvbiBpZiBsZWZ0IGJsYW5rPC9tYXQtaGludD5cbiAgICA8L21hdC1mb3JtLWZpZWxkPlxuICA8L2Rpdj5cbiAgPGRpdiBjbGFzcz1cImNvbnRlbnRfX3Jvd1wiPlxuICAgIDxtYXQtZm9ybS1maWVsZD5cbiAgICAgIDxtYXQtbGFiZWw+T3BlcmF0b3I8L21hdC1sYWJlbD5cbiAgICAgIDxtYXQtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImNoYW5uZWxPcGVyYXRvclwiPlxuICAgICAgICA8bWF0LW9wdGlvbiB2YWx1ZT1cIkVRVUFMU1wiPkVxdWFsczwvbWF0LW9wdGlvbj5cbiAgICAgICAgPG1hdC1vcHRpb24gdmFsdWU9XCJTVEFSVFNfV0lUSFwiPlN0YXJ0cyB3aXRoPC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgICAgPG1hdC1oaW50PkNoYW5uZWwgb3BlcmF0b3I8L21hdC1oaW50PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsPkNoYW5uZWw8L21hdC1sYWJlbD5cbiAgICAgIDxpbnB1dCBtYXRJbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJjaGFubmVsXCIgLz5cbiAgICAgIDxtYXQtaGludD5QdWJsaXNoIG9yIFN1YnNjcmliZSBjaGFubmVsLiBUaGlzIGlzIHRoZSBwYXRoIG9mIHlvdXIgcmVxdWVzdC48L21hdC1oaW50PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjb250ZW50X19yb3dcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsPkVudHJ5cG9pbnRzPC9tYXQtbGFiZWw+XG4gICAgICA8bWF0LXNlbGVjdCBtdWx0aXBsZSBmb3JtQ29udHJvbE5hbWU9XCJlbnRyeXBvaW50c1wiPlxuICAgICAgICA8bWF0LW9wdGlvbiAqbmdGb3I9XCJsZXQgZW50cnlwb2ludCBvZiBlbnRyeXBvaW50c1wiIFt2YWx1ZV09XCJlbnRyeXBvaW50LnR5cGVcIj57eyBlbnRyeXBvaW50Lm5hbWUgfX08L21hdC1vcHRpb24+XG4gICAgICA8L21hdC1zZWxlY3Q+XG4gICAgICA8bWF0LWhpbnQ+RW50cnlwb2ludHMgd2hlcmUgeW91ciBmbG93IHdpbGwgYmUgZXhlY3V0ZWQ8L21hdC1oaW50PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjb250ZW50X19yb3dcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsPkVudHJ5cG9pbnRzIHN1cHBvcnRlZCBvcGVyYXRpb25zPC9tYXQtbGFiZWw+XG4gICAgICA8bWF0LXNlbGVjdCBtdWx0aXBsZSBmb3JtQ29udHJvbE5hbWU9XCJvcGVyYXRpb25zXCI+XG4gICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiUFVCTElTSFwiPlB1Ymxpc2g8L21hdC1vcHRpb24+XG4gICAgICAgIDxtYXQtb3B0aW9uIHZhbHVlPVwiU1VCU0NSSUJFXCI+U3Vic2NyaWJlPC9tYXQtb3B0aW9uPlxuICAgICAgPC9tYXQtc2VsZWN0PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJjb250ZW50X19yb3dcIj5cbiAgICA8bWF0LWZvcm0tZmllbGQ+XG4gICAgICA8bWF0LWxhYmVsPkNvbmRpdGlvbjwvbWF0LWxhYmVsPlxuICAgICAgPGlucHV0IG1hdElucHV0IGZvcm1Db250cm9sTmFtZT1cImNvbmRpdGlvblwiIC8+XG4gICAgICA8bWF0LWhpbnQ+Q29uZGl0aW9uIHRvIGV4ZWN1dGUgdGhlIGZsb3csIHN1cHBvcnRzIEV4cHJlc3Npb24gTGFuZ3VhZ2U8L21hdC1oaW50PlxuICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gIDwvZGl2PlxuPC9tYXQtZGlhbG9nLWNvbnRlbnQ+XG5cbjxtYXQtZGlhbG9nLWFjdGlvbnMgY2xhc3M9XCJhY3Rpb25zXCI+XG4gIDxidXR0b24gY2xhc3M9XCJhY3Rpb25zX19jYW5jZWxCdG5cIiBtYXQtZmxhdC1idXR0b24gW21hdC1kaWFsb2ctY2xvc2VdPVwiZmFsc2VcIj5DYW5jZWw8L2J1dHRvbj5cbiAgPGJ1dHRvbiBjbGFzcz1cImFjdGlvbnNfX3NhdmVCdG5cIiBjb2xvcj1cInByaW1hcnlcIiBtYXQtc3Ryb2tlZC1idXR0b24gcm9sZT1cImRpYWxvZ1wiIChjbGljayk9XCJvblN1Ym1pdCgpXCI+XG4gICAge3sgbW9kZSA9PT0gJ2NyZWF0ZScgPyAnQ3JlYXRlJyA6ICdTYXZlJyB9fVxuICA8L2J1dHRvbj5cbjwvbWF0LWRpYWxvZy1hY3Rpb25zPlxuIl19
|
|
@@ -18,6 +18,7 @@ import { tap } from 'rxjs/operators';
|
|
|
18
18
|
import { cloneDeep } from 'lodash';
|
|
19
19
|
import { GioPolicyStudioFlowMessageFormDialogComponent, } from '../flow-form-dialog/flow-message-form-dialog/gio-ps-flow-message-form-dialog.component';
|
|
20
20
|
import { GioPolicyStudioFlowProxyFormDialogComponent, } from '../flow-form-dialog/flow-proxy-form-dialog/gio-ps-flow-proxy-form-dialog.component';
|
|
21
|
+
import { GioPolicyStudioFlowExecutionFormDialogComponent, } from '../flow-execution-form-dialog/gio-ps-flow-execution-form-dialog.component';
|
|
21
22
|
import * as i0 from "@angular/core";
|
|
22
23
|
import * as i1 from "@angular/material/dialog";
|
|
23
24
|
import * as i2 from "@angular/material/icon";
|
|
@@ -32,6 +33,7 @@ export class GioPolicyStudioFlowsMenuComponent {
|
|
|
32
33
|
this.entrypoints = [];
|
|
33
34
|
this.selectedFlowChange = new EventEmitter();
|
|
34
35
|
this.flowsGroupsChange = new EventEmitter();
|
|
36
|
+
this.flowExecutionChange = new EventEmitter();
|
|
35
37
|
this.flowsGroupsVMSelected = [];
|
|
36
38
|
}
|
|
37
39
|
ngOnChanges(changes) {
|
|
@@ -133,14 +135,35 @@ export class GioPolicyStudioFlowsMenuComponent {
|
|
|
133
135
|
}))
|
|
134
136
|
.subscribe();
|
|
135
137
|
}
|
|
138
|
+
onConfigureExecution(flowExecution) {
|
|
139
|
+
const dialogResult = this.matDialog
|
|
140
|
+
.open(GioPolicyStudioFlowExecutionFormDialogComponent, {
|
|
141
|
+
data: {
|
|
142
|
+
flowExecution,
|
|
143
|
+
},
|
|
144
|
+
role: 'alertdialog',
|
|
145
|
+
id: 'gioPsFlowExecutionFormDialog',
|
|
146
|
+
})
|
|
147
|
+
.afterClosed();
|
|
148
|
+
dialogResult
|
|
149
|
+
.pipe(tap(edited => {
|
|
150
|
+
if (!edited) {
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
this.flowExecutionChange.emit(edited);
|
|
154
|
+
}))
|
|
155
|
+
.subscribe();
|
|
156
|
+
}
|
|
136
157
|
}
|
|
137
158
|
GioPolicyStudioFlowsMenuComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowsMenuComponent, deps: [{ token: i1.MatDialog }], target: i0.ɵɵFactoryTarget.Component });
|
|
138
|
-
GioPolicyStudioFlowsMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioFlowsMenuComponent, selector: "gio-ps-flows-menu", inputs: { apiType: "apiType", flowsGroups: "flowsGroups", selectedFlow: "selectedFlow", entrypoints: "entrypoints" }, outputs: { selectedFlowChange: "selectedFlowChange", flowsGroupsChange: "flowsGroupsChange" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"header\">\n <div class=\"header__label\">\n Flows <mat-icon svgIcon=\"gio:info\" matTooltip=\"Flows allow you to apply different policies on your API event phases\"></mat-icon>\n </div>\n <div class=\"header__configBtn\">\n <button mat-stroked-button mat-icon-button
|
|
159
|
+
GioPolicyStudioFlowsMenuComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "13.3.12", type: GioPolicyStudioFlowsMenuComponent, selector: "gio-ps-flows-menu", inputs: { apiType: "apiType", flowExecution: "flowExecution", flowsGroups: "flowsGroups", selectedFlow: "selectedFlow", entrypoints: "entrypoints" }, outputs: { selectedFlowChange: "selectedFlowChange", flowsGroupsChange: "flowsGroupsChange", flowExecutionChange: "flowExecutionChange" }, usesOnChanges: true, ngImport: i0, template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"header\">\n <div class=\"header__label\">\n Flows <mat-icon svgIcon=\"gio:info\" matTooltip=\"Flows allow you to apply different policies on your API event phases\"></mat-icon>\n </div>\n <div class=\"header__configBtn\">\n <button class=\"header__configBtn_edit\" mat-stroked-button mat-icon-button (click)=\"onConfigureExecution(flowExecution)\">\n <mat-icon svgIcon=\"gio:settings\"></mat-icon>\n </button>\n </div>\n</div>\n\n<div class=\"list\">\n <div *ngFor=\"let flowsGroup of flowsGroupsVMSelected\" class=\"list__flowsGroup\">\n <div class=\"list__flowsGroup__header\">\n <div class=\"list__flowsGroup__header__label\">\n <mat-icon *ngIf=\"flowsGroup._icon\" [svgIcon]=\"flowsGroup._icon\"></mat-icon>\n <span>{{ flowsGroup.name }}</span>\n </div>\n <div class=\"list__flowsGroup__header__addBtn\">\n <button mat-icon-button (click)=\"onAddFlow(flowsGroup)\"><mat-icon svgIcon=\"gio:plus\" matTooltip=\"New flow\"></mat-icon></button>\n </div>\n </div>\n\n <div\n *ngFor=\"let flow of flowsGroup.flows\"\n class=\"list__flowsGroup__flow\"\n [class.selected]=\"flow.selected\"\n (click)=\"selectFlow(flowsGroup._id, flow._id)\"\n (mouseout)=\"flow.mouseOver = false\"\n (mouseover)=\"flow.mouseOver = true\"\n >\n <div *ngIf=\"flow.name\" class=\"list__flowsGroup__flow__name\" [attr.title]=\"flow.name\">\n {{ flow.name }}\n </div>\n <div class=\"list__flowsGroup__flow__infos\">\n <div class=\"list__flowsGroup__flow__infos__badges\">\n <span *ngFor=\"let badge of flow.badges\" class=\"list__flowsGroup__flow__infos__badges__badge\" [ngClass]=\"badge.class\">{{\n badge.label\n }}</span>\n </div>\n <div class=\"list__flowsGroup__flow__infos__pathOrChannelLabel\">{{ flow.pathOrChannelLabel }}</div>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;max-height:100%;flex-direction:column;padding-top:16px}.header{display:flex;align-items:center;padding:0 16px;margin-bottom:16px}.header__label{font:600 16px/24px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;display:flex;flex:1 1 auto;align-items:center;margin-bottom:0;gap:8px}.header__configBtn{margin-left:8px}.list{padding:0 16px;overflow-y:overlay}.list__flowsGroup{display:flex;flex-direction:column;padding-bottom:8px;gap:8px}.list__flowsGroup__header{display:flex;align-items:center;padding:8px 8px 8px 10px;border-radius:8px;background-color:#cdc5f7}.list__flowsGroup__header__label{font:600 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;display:flex;flex:1 1 auto;align-items:center;gap:8px}.list__flowsGroup__header__label>mat-icon{width:22px;height:22px;flex:0 0 auto}.list__flowsGroup__header__label>span{display:-webkit-box;overflow:hidden;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-line-clamp:2}.list__flowsGroup__header__addBtn{margin-left:8px}.list__flowsGroup__flow{display:flex;height:68px;flex-direction:column;justify-content:center;padding:7px;border:1px solid #d3d5dc;border-radius:8px;gap:8px}.list__flowsGroup__flow:hover,.list__flowsGroup__flow.selected{padding:6px;border:2px solid #876fec;cursor:pointer}.list__flowsGroup__flow__name{overflow:hidden;padding-left:4px;text-overflow:ellipsis;white-space:nowrap}.list__flowsGroup__flow__infos{display:flex;align-items:center}.list__flowsGroup__flow__infos__badges{flex:0 0 auto}.list__flowsGroup__flow__infos__badges__badge{width:auto}.list__flowsGroup__flow__infos__pathOrChannelLabel{flex:1 1 auto}\n"], components: [{ type: i2.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { type: i3.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }], directives: [{ type: i4.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { type: i5.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { type: i5.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i5.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
139
160
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImport: i0, type: GioPolicyStudioFlowsMenuComponent, decorators: [{
|
|
140
161
|
type: Component,
|
|
141
|
-
args: [{ selector: 'gio-ps-flows-menu', template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"header\">\n <div class=\"header__label\">\n Flows <mat-icon svgIcon=\"gio:info\" matTooltip=\"Flows allow you to apply different policies on your API event phases\"></mat-icon>\n </div>\n <div class=\"header__configBtn\">\n <button mat-stroked-button mat-icon-button
|
|
162
|
+
args: [{ selector: 'gio-ps-flows-menu', template: "<!--\n\n Copyright (C) 2023 The Gravitee team (http://gravitee.io)\n \n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n \n http://www.apache.org/licenses/LICENSE-2.0\n \n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n-->\n\n<div class=\"header\">\n <div class=\"header__label\">\n Flows <mat-icon svgIcon=\"gio:info\" matTooltip=\"Flows allow you to apply different policies on your API event phases\"></mat-icon>\n </div>\n <div class=\"header__configBtn\">\n <button class=\"header__configBtn_edit\" mat-stroked-button mat-icon-button (click)=\"onConfigureExecution(flowExecution)\">\n <mat-icon svgIcon=\"gio:settings\"></mat-icon>\n </button>\n </div>\n</div>\n\n<div class=\"list\">\n <div *ngFor=\"let flowsGroup of flowsGroupsVMSelected\" class=\"list__flowsGroup\">\n <div class=\"list__flowsGroup__header\">\n <div class=\"list__flowsGroup__header__label\">\n <mat-icon *ngIf=\"flowsGroup._icon\" [svgIcon]=\"flowsGroup._icon\"></mat-icon>\n <span>{{ flowsGroup.name }}</span>\n </div>\n <div class=\"list__flowsGroup__header__addBtn\">\n <button mat-icon-button (click)=\"onAddFlow(flowsGroup)\"><mat-icon svgIcon=\"gio:plus\" matTooltip=\"New flow\"></mat-icon></button>\n </div>\n </div>\n\n <div\n *ngFor=\"let flow of flowsGroup.flows\"\n class=\"list__flowsGroup__flow\"\n [class.selected]=\"flow.selected\"\n (click)=\"selectFlow(flowsGroup._id, flow._id)\"\n (mouseout)=\"flow.mouseOver = false\"\n (mouseover)=\"flow.mouseOver = true\"\n >\n <div *ngIf=\"flow.name\" class=\"list__flowsGroup__flow__name\" [attr.title]=\"flow.name\">\n {{ flow.name }}\n </div>\n <div class=\"list__flowsGroup__flow__infos\">\n <div class=\"list__flowsGroup__flow__infos__badges\">\n <span *ngFor=\"let badge of flow.badges\" class=\"list__flowsGroup__flow__infos__badges__badge\" [ngClass]=\"badge.class\">{{\n badge.label\n }}</span>\n </div>\n <div class=\"list__flowsGroup__flow__infos__pathOrChannelLabel\">{{ flow.pathOrChannelLabel }}</div>\n </div>\n </div>\n </div>\n</div>\n", styles: [":host{display:flex;max-height:100%;flex-direction:column;padding-top:16px}.header{display:flex;align-items:center;padding:0 16px;margin-bottom:16px}.header__label{font:600 16px/24px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;display:flex;flex:1 1 auto;align-items:center;margin-bottom:0;gap:8px}.header__configBtn{margin-left:8px}.list{padding:0 16px;overflow-y:overlay}.list__flowsGroup{display:flex;flex-direction:column;padding-bottom:8px;gap:8px}.list__flowsGroup__header{display:flex;align-items:center;padding:8px 8px 8px 10px;border-radius:8px;background-color:#cdc5f7}.list__flowsGroup__header__label{font:600 14px/20px Golos UI,Roboto,Helvetica Neue,sans-serif;letter-spacing:.4px;display:flex;flex:1 1 auto;align-items:center;gap:8px}.list__flowsGroup__header__label>mat-icon{width:22px;height:22px;flex:0 0 auto}.list__flowsGroup__header__label>span{display:-webkit-box;overflow:hidden;flex:1 1 auto;-webkit-box-orient:vertical;-webkit-line-clamp:2}.list__flowsGroup__header__addBtn{margin-left:8px}.list__flowsGroup__flow{display:flex;height:68px;flex-direction:column;justify-content:center;padding:7px;border:1px solid #d3d5dc;border-radius:8px;gap:8px}.list__flowsGroup__flow:hover,.list__flowsGroup__flow.selected{padding:6px;border:2px solid #876fec;cursor:pointer}.list__flowsGroup__flow__name{overflow:hidden;padding-left:4px;text-overflow:ellipsis;white-space:nowrap}.list__flowsGroup__flow__infos{display:flex;align-items:center}.list__flowsGroup__flow__infos__badges{flex:0 0 auto}.list__flowsGroup__flow__infos__badges__badge{width:auto}.list__flowsGroup__flow__infos__pathOrChannelLabel{flex:1 1 auto}\n"] }]
|
|
142
163
|
}], ctorParameters: function () { return [{ type: i1.MatDialog }]; }, propDecorators: { apiType: [{
|
|
143
164
|
type: Input
|
|
165
|
+
}], flowExecution: [{
|
|
166
|
+
type: Input
|
|
144
167
|
}], flowsGroups: [{
|
|
145
168
|
type: Input
|
|
146
169
|
}], selectedFlow: [{
|
|
@@ -151,5 +174,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.12", ngImpo
|
|
|
151
174
|
type: Output
|
|
152
175
|
}], flowsGroupsChange: [{
|
|
153
176
|
type: Output
|
|
177
|
+
}], flowExecutionChange: [{
|
|
178
|
+
type: Output
|
|
154
179
|
}] } });
|
|
155
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3dzLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9mbG93cy1tZW51L2dpby1wcy1mbG93cy1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvd3MtbWVudS9naW8tcHMtZmxvd3MtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRWpHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRW5DLE9BQU8sRUFDTCw2Q0FBNkMsR0FFOUMsTUFBTSx3RkFBd0YsQ0FBQztBQUdoRyxPQUFPLEVBQ0wsMkNBQTJDLEdBRTVDLE1BQU0sb0ZBQW9GLENBQUM7Ozs7Ozs7QUFzQjVGLE1BQU0sT0FBTyxpQ0FBaUM7SUFxQjVDLFlBQTZCLFNBQW9CO1FBQXBCLGNBQVMsR0FBVCxTQUFTLENBQVc7UUFoQjFDLGdCQUFXLEdBQWtCLEVBQUUsQ0FBQztRQUdoQyxpQkFBWSxHQUFZLFNBQVMsQ0FBQztRQUdsQyxnQkFBVyxHQUFhLEVBQUUsQ0FBQztRQUczQix1QkFBa0IsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBR2hELHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFpQixDQUFDO1FBRXRELDBCQUFxQixHQUFzQixFQUFFLENBQUM7SUFFRCxDQUFDO0lBRTlDLFdBQVcsQ0FBQyxPQUFz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O3NCQUR2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAoQykgMjAyMiBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25DaGFuZ2VzLCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1hdERpYWxvZyB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQge1xuICBHaW9Qb2xpY3lTdHVkaW9GbG93TWVzc2FnZUZvcm1EaWFsb2dDb21wb25lbnQsXG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dNZXNzYWdlRm9ybURpYWxvZ0RhdGEsXG59IGZyb20gJy4uL2Zsb3ctZm9ybS1kaWFsb2cvZmxvdy1tZXNzYWdlLWZvcm0tZGlhbG9nL2dpby1wcy1mbG93LW1lc3NhZ2UtZm9ybS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEZsb3dHcm91cFZNLCBGbG93Vk0gfSBmcm9tICcuLi8uLi9naW8tcG9saWN5LXN0dWRpby5tb2RlbCc7XG5pbXBvcnQgeyBBcGlUeXBlLCBDaGFubmVsU2VsZWN0b3IsIEh0dHBTZWxlY3RvciwgT3BlcmF0aW9uIH0gZnJvbSAnLi4vLi4vbW9kZWxzJztcbmltcG9ydCB7XG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dDb21wb25lbnQsXG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dQcm94eUZvcm1EaWFsb2dEYXRhLFxufSBmcm9tICcuLi9mbG93LWZvcm0tZGlhbG9nL2Zsb3ctcHJveHktZm9ybS1kaWFsb2cvZ2lvLXBzLWZsb3ctcHJveHktZm9ybS1kaWFsb2cuY29tcG9uZW50JztcbmltcG9ydCB7IEdpb1BvbGljeVN0dWRpb0Zsb3dGb3JtRGlhbG9nUmVzdWx0IH0gZnJvbSAnLi4vZmxvdy1mb3JtLWRpYWxvZy9naW8tcHMtZmxvdy1mb3JtLWRpYWxvZy1yZXN1bHQubW9kZWwnO1xuXG5pbnRlcmZhY2UgRmxvd0dyb3VwTWVudVZNIGV4dGVuZHMgRmxvd0dyb3VwVk0ge1xuICBmbG93czogRmxvd01lbnVWTVtdO1xufVxuXG5pbnRlcmZhY2UgRmxvd01lbnVWTSBleHRlbmRzIEZsb3dWTSB7XG4gIHNlbGVjdGVkOiBib29sZWFuO1xuICBtb3VzZU92ZXI6IGJvb2xlYW47XG4gIGJhZGdlczoge1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgY2xhc3M6IHN0cmluZztcbiAgfVtdO1xuICBwYXRoT3JDaGFubmVsTGFiZWw6IHN0cmluZztcbn1cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnZ2lvLXBzLWZsb3dzLW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJy4vZ2lvLXBzLWZsb3dzLW1lbnUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9naW8tcHMtZmxvd3MtbWVudS5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBHaW9Qb2xpY3lTdHVkaW9GbG93c01lbnVDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXBpVHlwZSE6IEFwaVR5cGU7XG5cbiAgQElucHV0KClcbiAgcHVibGljIGZsb3dzR3JvdXBzOiBGbG93R3JvdXBWTVtdID0gW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIHNlbGVjdGVkRmxvdz86IEZsb3dWTSA9IHVuZGVmaW5lZDtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZW50cnlwb2ludHM6IHN0cmluZ1tdID0gW107XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZEZsb3dDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEZsb3dWTT4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGZsb3dzR3JvdXBzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGbG93R3JvdXBWTVtdPigpO1xuXG4gIHB1YmxpYyBmbG93c0dyb3Vwc1ZNU2VsZWN0ZWQ6IEZsb3dHcm91cE1lbnVWTVtdID0gW107XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBtYXREaWFsb2c6IE1hdERpYWxvZykge31cblxuICBwdWJsaWMgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmZsb3dzR3JvdXBzIHx8IGNoYW5nZXMuc2VsZWN0ZWRGbG93KSB7XG4gICAgICB0aGlzLmZsb3dzR3JvdXBzVk1TZWxlY3RlZCA9IGNsb25lRGVlcCh0aGlzLmZsb3dzR3JvdXBzKS5tYXAoZmxvd0dyb3VwID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5mbG93R3JvdXAsXG4gICAgICAgICAgZmxvd3M6IGZsb3dHcm91cC5mbG93cy5tYXAoZmxvdyA9PiB7XG4gICAgICAgICAgICBjb25zdCBiYWRnZXM6IEZsb3dNZW51Vk1bJ2JhZGdlcyddID0gW107XG4gICAgICAgICAgICBsZXQgcGF0aE9yQ2hhbm5lbExhYmVsID0gJyc7XG4gICAgICAgICAgICBjb25zdCBjaGFubmVsU2VsZWN0b3IgPSBmbG93LnNlbGVjdG9ycz8uZmluZChzID0+IHMudHlwZSA9PT0gJ0NIQU5ORUwnKSBhcyBDaGFubmVsU2VsZWN0b3I7XG4gICAgICAgICAgICBpZiAoY2hhbm5lbFNlbGVjdG9yKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG9wZXJhdGlvblRvQmFkZ2U6IFJlY29yZDxPcGVyYXRpb24sIHN0cmluZz4gPSB7XG4gICAgICAgICAgICAgICAgUFVCTElTSDogJ1BVQicsXG4gICAgICAgICAgICAgICAgU1VCU0NSSUJFOiAnU1VCJyxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgY29uc3Qgb3BlcmF0aW9uQmFkZ2VzID0gKGNoYW5uZWxTZWxlY3Rvci5vcGVyYXRpb25zID8/IFtdKVxuICAgICAgICAgICAgICAgIC5tYXAob3BlcmF0aW9uID0+ICh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogb3BlcmF0aW9uVG9CYWRnZVtvcGVyYXRpb25dLFxuICAgICAgICAgICAgICAgICAgY2xhc3M6ICdnaW8tYmFkZ2UtbmV1dHJhbCcsXG4gICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICAgICAgLnNvcnQoKGEsIGIpID0+IGEubGFiZWwubG9jYWxlQ29tcGFyZShiLmxhYmVsKSk7XG4gICAgICAgICAgICAgIG9wZXJhdGlvbkJhZGdlcyAmJiBiYWRnZXMucHVzaCguLi5vcGVyYXRpb25CYWRnZXMpO1xuICAgICAgICAgICAgICBwYXRoT3JDaGFubmVsTGFiZWwgPSBgJHtjaGFubmVsU2VsZWN0b3IuY2hhbm5lbH0ke2NoYW5uZWxTZWxlY3Rvci5jaGFubmVsT3BlcmF0b3IgPT09ICdTVEFSVFNfV0lUSCcgPyAnKionIDogJyd9YDtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgaHR0cFNlbGVjdG9yID0gZmxvdy5zZWxlY3RvcnM/LmZpbmQocyA9PiBzLnR5cGUgPT09ICdIVFRQJykgYXMgSHR0cFNlbGVjdG9yO1xuICAgICAgICAgICAgaWYgKGh0dHBTZWxlY3Rvcikge1xuICAgICAgICAgICAgICAvLyBLZWVwIG9ubHkgMiBmaXJzdCBodHRwIG1ldGhvZHMgYW5kIGFkZCArWCBiYWRnZSBpZiB0aGVyZSBhcmUgbW9yZVxuICAgICAgICAgICAgICBjb25zdCBodHRwTWV0aG9kc1RvS2VlcCA9IGh0dHBTZWxlY3Rvci5tZXRob2RzPy5zbGljZSgwLCAyKTtcbiAgICAgICAgICAgICAgY29uc3QgaHR0cE1ldGhvZHNMZW5ndGggPSBodHRwU2VsZWN0b3IubWV0aG9kcz8ubGVuZ3RoO1xuICAgICAgICAgICAgICBodHRwTWV0aG9kc1RvS2VlcCAmJlxuICAgICAgICAgICAgICAgIGJhZGdlcy5wdXNoKC4uLmh0dHBNZXRob2RzVG9LZWVwLm1hcChtZXRob2QgPT4gKHsgbGFiZWw6IG1ldGhvZCwgY2xhc3M6IGBnaW8tbWV0aG9kLWJhZGdlLSR7bWV0aG9kLnRvTG93ZXJDYXNlKCl9YCB9KSkpO1xuICAgICAgICAgICAgICBpZiAoaHR0cE1ldGhvZHNMZW5ndGggJiYgaHR0cE1ldGhvZHNMZW5ndGggPiAyKSB7XG4gICAgICAgICAgICAgICAgYmFkZ2VzPy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBgKyR7aHR0cE1ldGhvZHNMZW5ndGggLSAyfWAsXG4gICAgICAgICAgICAgICAgICBjbGFzczogJ2dpby1iYWRnZS1uZXV0cmFsJyxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoaHR0cE1ldGhvZHNMZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBiYWRnZXM/LnB1c2goe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6ICdBTEwnLFxuICAgICAgICAgICAgICAgICAgY2xhc3M6ICdnaW8tYmFkZ2UtbmV1dHJhbCcsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBwYXRoT3JDaGFubmVsTGFiZWwgPSBgJHtodHRwU2VsZWN0b3IucGF0aH0ke2h0dHBTZWxlY3Rvci5wYXRoT3BlcmF0b3IgPT09ICdTVEFSVFNfV0lUSCcgPyAnLyoqJyA6ICcnfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmZsb3csXG4gICAgICAgICAgICAgIHNlbGVjdGVkOiB0aGlzLnNlbGVjdGVkRmxvdz8uX2lkID09PSBmbG93Ll9pZCxcbiAgICAgICAgICAgICAgbW91c2VPdmVyOiBmYWxzZSxcbiAgICAgICAgICAgICAgYmFkZ2VzLFxuICAgICAgICAgICAgICBwYXRoT3JDaGFubmVsTGFiZWwsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHNlbGVjdEZsb3coZ3JvdXBJZDogc3RyaW5nLCBmbG93SWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGZsb3cgPSB0aGlzLmZsb3dzR3JvdXBzLmZpbmQoZmcgPT4gZmcuX2lkID09PSBncm91cElkKT8uZmxvd3MuZmluZChmID0+IGYuX2lkID09PSBmbG93SWQpO1xuICAgIGlmIChmbG93KSB7XG4gICAgICB0aGlzLnNlbGVjdGVkRmxvd0NoYW5nZS5lbWl0KGZsb3cpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkFkZEZsb3coZmxvd0dyb3VwOiBGbG93R3JvdXBWTSk6IHZvaWQge1xuICAgIGNvbnN0IGRpYWxvZ1Jlc3VsdCA9XG4gICAgICB0aGlzLmFwaVR5cGUgPT09ICdNRVNTQUdFJ1xuICAgICAgICA/IHRoaXMubWF0RGlhbG9nXG4gICAgICAgICAgICAub3BlbjxcbiAgICAgICAgICAgICAgR2lvUG9saWN5U3R1ZGlvRmxvd01lc3NhZ2VGb3JtRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICAgICAgICBHaW9Qb2xpY3lTdHVkaW9GbG93TWVzc2FnZUZvcm1EaWFsb2dEYXRhLFxuICAgICAgICAgICAgICBHaW9Qb2xpY3lTdHVkaW9GbG93Rm9ybURpYWxvZ1Jlc3VsdFxuICAgICAgICAgICAgPihHaW9Qb2xpY3lTdHVkaW9GbG93TWVzc2FnZUZvcm1EaWFsb2dDb21wb25lbnQsIHtcbiAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgIGZsb3c6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICBlbnRyeXBvaW50czogdGhpcy5lbnRyeXBvaW50cyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgcm9sZTogJ2FsZXJ0ZGlhbG9nJyxcbiAgICAgICAgICAgICAgaWQ6ICdnaW9Qc0Zsb3dGb3JtRGlhbG9nJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuYWZ0ZXJDbG9zZWQoKVxuICAgICAgICA6IHRoaXMubWF0RGlhbG9nXG4gICAgICAgICAgICAub3BlbjxHaW9Qb2xpY3lTdHVkaW9GbG93UHJveHlGb3JtRGlhbG9nQ29tcG9uZW50LCBHaW9Qb2xpY3lTdHVkaW9GbG93UHJveHlGb3JtRGlhbG9nRGF0YSwgR2lvUG9saWN5U3R1ZGlvRmxvd0Zvcm1EaWFsb2dSZXN1bHQ+KFxuICAgICAgICAgICAgICBHaW9Qb2xpY3lTdHVkaW9GbG93UHJveHlGb3JtRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICAgICAgZmxvdzogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgcm9sZTogJ2FsZXJ0ZGlhbG9nJyxcbiAgICAgICAgICAgICAgICBpZDogJ2dpb1BzRmxvd0Zvcm1EaWFsb2cnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKCk7XG5cbiAgICBkaWFsb2dSZXN1bHRcbiAgICAgIC5waXBlKFxuICAgICAgICB0YXAoY3JlYXRlZE9yRWRpdGVkID0+IHtcbiAgICAgICAgICBpZiAoIWNyZWF0ZWRPckVkaXRlZCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBlZGl0ZWRGbG93c0dyb3VwcyA9IGNsb25lRGVlcCh0aGlzLmZsb3dzR3JvdXBzKTtcblxuICAgICAgICAgIGNvbnN0IGZsb3dzR3JvdXBUb0VkaXQgPSBlZGl0ZWRGbG93c0dyb3Vwcy5maW5kKGZnID0+IGZnLl9pZCA9PT0gZmxvd0dyb3VwLl9pZCk7XG4gICAgICAgICAgaWYgKCFmbG93c0dyb3VwVG9FZGl0KSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZsb3cgZ3JvdXAgJHtmbG93R3JvdXAuX2lkfSBub3QgZm91bmRgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZmxvd3NHcm91cFRvRWRpdC5mbG93cy5wdXNoKGNyZWF0ZWRPckVkaXRlZCk7XG5cbiAgICAgICAgICB0aGlzLmZsb3dzR3JvdXBzQ2hhbmdlLmVtaXQoZWRpdGVkRmxvd3NHcm91cHMpO1xuICAgICAgICAgIHRoaXMuc2VsZWN0ZWRGbG93Q2hhbmdlLmVtaXQoY3JlYXRlZE9yRWRpdGVkKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAyMyBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICAgIFxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgIFxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuXG48ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJoZWFkZXJfX2xhYmVsXCI+XG4gICAgRmxvd3MgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86aW5mb1wiIG1hdFRvb2x0aXA9XCJGbG93cyBhbGxvdyB5b3UgdG8gYXBwbHkgZGlmZmVyZW50IHBvbGljaWVzIG9uIHlvdXIgQVBJIGV2ZW50IHBoYXNlc1wiPjwvbWF0LWljb24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyX19jb25maWdCdG5cIj5cbiAgICA8YnV0dG9uIG1hdC1zdHJva2VkLWJ1dHRvbiBtYXQtaWNvbi1idXR0b24+PG1hdC1pY29uIHN2Z0ljb249XCJnaW86c2V0dGluZ3NcIj48L21hdC1pY29uPjwvYnV0dG9uPlxuICA8L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwibGlzdFwiPlxuICA8ZGl2ICpuZ0Zvcj1cImxldCBmbG93c0dyb3VwIG9mIGZsb3dzR3JvdXBzVk1TZWxlY3RlZFwiIGNsYXNzPVwibGlzdF9fZmxvd3NHcm91cFwiPlxuICAgIDxkaXYgY2xhc3M9XCJsaXN0X19mbG93c0dyb3VwX19oZWFkZXJcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsaXN0X19mbG93c0dyb3VwX19oZWFkZXJfX2xhYmVsXCI+XG4gICAgICAgIDxtYXQtaWNvbiAqbmdJZj1cImZsb3dzR3JvdXAuX2ljb25cIiBbc3ZnSWNvbl09XCJmbG93c0dyb3VwLl9pY29uXCI+PC9tYXQtaWNvbj5cbiAgICAgICAgPHNwYW4+e3sgZmxvd3NHcm91cC5uYW1lIH19PC9zcGFuPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibGlzdF9fZmxvd3NHcm91cF9faGVhZGVyX19hZGRCdG5cIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uQWRkRmxvdyhmbG93c0dyb3VwKVwiPjxtYXQtaWNvbiBzdmdJY29uPVwiZ2lvOnBsdXNcIiBtYXRUb29sdGlwPVwiTmV3IGZsb3dcIj48L21hdC1pY29uPjwvYnV0dG9uPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2XG4gICAgICAqbmdGb3I9XCJsZXQgZmxvdyBvZiBmbG93c0dyb3VwLmZsb3dzXCJcbiAgICAgIGNsYXNzPVwibGlzdF9fZmxvd3NHcm91cF9fZmxvd1wiXG4gICAgICBbY2xhc3Muc2VsZWN0ZWRdPVwiZmxvdy5zZWxlY3RlZFwiXG4gICAgICAoY2xpY2spPVwic2VsZWN0RmxvdyhmbG93c0dyb3VwLl9pZCwgZmxvdy5faWQpXCJcbiAgICAgIChtb3VzZW91dCk9XCJmbG93Lm1vdXNlT3ZlciA9IGZhbHNlXCJcbiAgICAgIChtb3VzZW92ZXIpPVwiZmxvdy5tb3VzZU92ZXIgPSB0cnVlXCJcbiAgICA+XG4gICAgICA8ZGl2ICpuZ0lmPVwiZmxvdy5uYW1lXCIgY2xhc3M9XCJsaXN0X19mbG93c0dyb3VwX19mbG93X19uYW1lXCIgW2F0dHIudGl0bGVdPVwiZmxvdy5uYW1lXCI+XG4gICAgICAgIHt7IGZsb3cubmFtZSB9fVxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwibGlzdF9fZmxvd3NHcm91cF9fZmxvd19faW5mb3NcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxpc3RfX2Zsb3dzR3JvdXBfX2Zsb3dfX2luZm9zX19iYWRnZXNcIj5cbiAgICAgICAgICA8c3BhbiAqbmdGb3I9XCJsZXQgYmFkZ2Ugb2YgZmxvdy5iYWRnZXNcIiBjbGFzcz1cImxpc3RfX2Zsb3dzR3JvdXBfX2Zsb3dfX2luZm9zX19iYWRnZXNfX2JhZGdlXCIgW25nQ2xhc3NdPVwiYmFkZ2UuY2xhc3NcIj57e1xuICAgICAgICAgICAgYmFkZ2UubGFiZWxcbiAgICAgICAgICB9fTwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJsaXN0X19mbG93c0dyb3VwX19mbG93X19pbmZvc19fcGF0aE9yQ2hhbm5lbExhYmVsXCI+e3sgZmxvdy5wYXRoT3JDaGFubmVsTGFiZWwgfX08L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L2Rpdj5cbjwvZGl2PlxuIl19
|
|
180
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2lvLXBzLWZsb3dzLW1lbnUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdWktcG9saWN5LXN0dWRpby1hbmd1bGFyL3NyYy9saWIvY29tcG9uZW50cy9mbG93cy1tZW51L2dpby1wcy1mbG93cy1tZW51LmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpLXBvbGljeS1zdHVkaW8tYW5ndWxhci9zcmMvbGliL2NvbXBvbmVudHMvZmxvd3MtbWVudS9naW8tcHMtZmxvd3MtbWVudS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7R0FjRztBQUNILE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRWpHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBRW5DLE9BQU8sRUFDTCw2Q0FBNkMsR0FFOUMsTUFBTSx3RkFBd0YsQ0FBQztBQUdoRyxPQUFPLEVBQ0wsMkNBQTJDLEdBRTVDLE1BQU0sb0ZBQW9GLENBQUM7QUFFNUYsT0FBTyxFQUNMLCtDQUErQyxHQUVoRCxNQUFNLDJFQUEyRSxDQUFDOzs7Ozs7O0FBc0JuRixNQUFNLE9BQU8saUNBQWlDO0lBMkI1QyxZQUE2QixTQUFvQjtRQUFwQixjQUFTLEdBQVQsU0FBUyxDQUFXO1FBbkIxQyxnQkFBVyxHQUFrQixFQUFFLENBQUM7UUFHaEMsaUJBQVksR0FBWSxTQUFTLENBQUM7UUFHbEMsZ0JBQVcsR0FBb0IsRUFBRSxDQUFDO1FBR2xDLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFHaEQsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQWlCLENBQUM7UUFHdEQsd0JBQW1C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QUksRUFBRSxhQUFhO1lBQ25CLEVBQUUsRUFBRSw4QkFBOEI7U0FDbkMsQ0FBQzthQUNELFdBQVcsRUFBRSxDQUFDO1FBRWpCLFlBQVk7YUFDVCxJQUFJLENBQ0gsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQ1gsSUFBSSxDQUFDLE1BQU0sRUFBRTtnQkFDWCxPQUFPO2FBQ1I7WUFDRCxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3hDLENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxFQUFFLENBQUM7SUFDakIsQ0FBQzs7K0hBNUtVLGlDQUFpQzttSEFBakMsaUNBQWlDLCtXQ3hEOUMsMmpGQStEQTs0RkRQYSxpQ0FBaUM7a0JBTDdDLFNBQVM7K0JBQ0UsbUJBQW1CO2dHQU10QixPQUFPO3NCQURiLEtBQUs7Z0JBSUMsYUFBYTtzQkFEbkIsS0FBSztnQkFJQyxXQUFXO3NCQURqQixLQUFLO2dCQUlDLFlBQVk7c0JBRGxCLEtBQUs7Z0JBSUMsV0FBVztzQkFEakIsS0FBSztnQkFJQyxrQkFBa0I7c0JBRHhCLE1BQU07Z0JBSUEsaUJBQWlCO3NCQUR2QixNQUFNO2dCQUlBLG1CQUFtQjtzQkFEekIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgKEMpIDIwMjIgVGhlIEdyYXZpdGVlIHRlYW0gKGh0dHA6Ly9ncmF2aXRlZS5pbylcbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uQ2hhbmdlcywgT3V0cHV0LCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNYXREaWFsb2cgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2cnO1xuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHtcbiAgR2lvUG9saWN5U3R1ZGlvRmxvd01lc3NhZ2VGb3JtRGlhbG9nQ29tcG9uZW50LFxuICBHaW9Qb2xpY3lTdHVkaW9GbG93TWVzc2FnZUZvcm1EaWFsb2dEYXRhLFxufSBmcm9tICcuLi9mbG93LWZvcm0tZGlhbG9nL2Zsb3ctbWVzc2FnZS1mb3JtLWRpYWxvZy9naW8tcHMtZmxvdy1tZXNzYWdlLWZvcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGbG93R3JvdXBWTSwgRmxvd1ZNIH0gZnJvbSAnLi4vLi4vZ2lvLXBvbGljeS1zdHVkaW8ubW9kZWwnO1xuaW1wb3J0IHsgQXBpVHlwZSwgQ2hhbm5lbFNlbGVjdG9yLCBDb25uZWN0b3JJbmZvLCBGbG93RXhlY3V0aW9uLCBIdHRwU2VsZWN0b3IsIE9wZXJhdGlvbiB9IGZyb20gJy4uLy4uL21vZGVscyc7XG5pbXBvcnQge1xuICBHaW9Qb2xpY3lTdHVkaW9GbG93UHJveHlGb3JtRGlhbG9nQ29tcG9uZW50LFxuICBHaW9Qb2xpY3lTdHVkaW9GbG93UHJveHlGb3JtRGlhbG9nRGF0YSxcbn0gZnJvbSAnLi4vZmxvdy1mb3JtLWRpYWxvZy9mbG93LXByb3h5LWZvcm0tZGlhbG9nL2dpby1wcy1mbG93LXByb3h5LWZvcm0tZGlhbG9nLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBHaW9Qb2xpY3lTdHVkaW9GbG93Rm9ybURpYWxvZ1Jlc3VsdCB9IGZyb20gJy4uL2Zsb3ctZm9ybS1kaWFsb2cvZ2lvLXBzLWZsb3ctZm9ybS1kaWFsb2ctcmVzdWx0Lm1vZGVsJztcbmltcG9ydCB7XG4gIEdpb1BvbGljeVN0dWRpb0Zsb3dFeGVjdXRpb25Gb3JtRGlhbG9nQ29tcG9uZW50LFxuICBHaW9Qb2xpY3lTdHVkaW9GbG93RXhlY3V0aW9uRm9ybURpYWxvZ0RhdGEsXG59IGZyb20gJy4uL2Zsb3ctZXhlY3V0aW9uLWZvcm0tZGlhbG9nL2dpby1wcy1mbG93LWV4ZWN1dGlvbi1mb3JtLWRpYWxvZy5jb21wb25lbnQnO1xuaW1wb3J0IHsgR2lvUG9saWN5U3R1ZGlvRmxvd0V4ZWN1dGlvbkZvcm1EaWFsb2dSZXN1bHQgfSBmcm9tICcuLi9mbG93LWV4ZWN1dGlvbi1mb3JtLWRpYWxvZy9naW8tcHMtZmxvdy1leGVjdXRpb24tZm9ybS1kaWFsb2ctcmVzdWx0Lm1vZGVsJztcblxuaW50ZXJmYWNlIEZsb3dHcm91cE1lbnVWTSBleHRlbmRzIEZsb3dHcm91cFZNIHtcbiAgZmxvd3M6IEZsb3dNZW51Vk1bXTtcbn1cblxuaW50ZXJmYWNlIEZsb3dNZW51Vk0gZXh0ZW5kcyBGbG93Vk0ge1xuICBzZWxlY3RlZDogYm9vbGVhbjtcbiAgbW91c2VPdmVyOiBib29sZWFuO1xuICBiYWRnZXM6IHtcbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIGNsYXNzOiBzdHJpbmc7XG4gIH1bXTtcbiAgcGF0aE9yQ2hhbm5lbExhYmVsOiBzdHJpbmc7XG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2dpby1wcy1mbG93cy1tZW51JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2dpby1wcy1mbG93cy1tZW51LmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vZ2lvLXBzLWZsb3dzLW1lbnUuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgR2lvUG9saWN5U3R1ZGlvRmxvd3NNZW51Q29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgQElucHV0KClcbiAgcHVibGljIGFwaVR5cGUhOiBBcGlUeXBlO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBmbG93RXhlY3V0aW9uITogRmxvd0V4ZWN1dGlvbjtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgZmxvd3NHcm91cHM6IEZsb3dHcm91cFZNW10gPSBbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMgc2VsZWN0ZWRGbG93PzogRmxvd1ZNID0gdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbnRyeXBvaW50czogQ29ubmVjdG9ySW5mb1tdID0gW107XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzZWxlY3RlZEZsb3dDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEZsb3dWTT4oKTtcblxuICBAT3V0cHV0KClcbiAgcHVibGljIGZsb3dzR3JvdXBzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxGbG93R3JvdXBWTVtdPigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgZmxvd0V4ZWN1dGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8Rmxvd0V4ZWN1dGlvbj4oKTtcblxuICBwdWJsaWMgZmxvd3NHcm91cHNWTVNlbGVjdGVkOiBGbG93R3JvdXBNZW51Vk1bXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgbWF0RGlhbG9nOiBNYXREaWFsb2cpIHt9XG5cbiAgcHVibGljIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5mbG93c0dyb3VwcyB8fCBjaGFuZ2VzLnNlbGVjdGVkRmxvdykge1xuICAgICAgdGhpcy5mbG93c0dyb3Vwc1ZNU2VsZWN0ZWQgPSBjbG9uZURlZXAodGhpcy5mbG93c0dyb3VwcykubWFwKGZsb3dHcm91cCA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uZmxvd0dyb3VwLFxuICAgICAgICAgIGZsb3dzOiBmbG93R3JvdXAuZmxvd3MubWFwKGZsb3cgPT4ge1xuICAgICAgICAgICAgY29uc3QgYmFkZ2VzOiBGbG93TWVudVZNWydiYWRnZXMnXSA9IFtdO1xuICAgICAgICAgICAgbGV0IHBhdGhPckNoYW5uZWxMYWJlbCA9ICcnO1xuICAgICAgICAgICAgY29uc3QgY2hhbm5lbFNlbGVjdG9yID0gZmxvdy5zZWxlY3RvcnM/LmZpbmQocyA9PiBzLnR5cGUgPT09ICdDSEFOTkVMJykgYXMgQ2hhbm5lbFNlbGVjdG9yO1xuICAgICAgICAgICAgaWYgKGNoYW5uZWxTZWxlY3Rvcikge1xuICAgICAgICAgICAgICBjb25zdCBvcGVyYXRpb25Ub0JhZGdlOiBSZWNvcmQ8T3BlcmF0aW9uLCBzdHJpbmc+ID0ge1xuICAgICAgICAgICAgICAgIFBVQkxJU0g6ICdQVUInLFxuICAgICAgICAgICAgICAgIFNVQlNDUklCRTogJ1NVQicsXG4gICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgIGNvbnN0IG9wZXJhdGlvbkJhZGdlcyA9IChjaGFubmVsU2VsZWN0b3Iub3BlcmF0aW9ucyA/PyBbXSlcbiAgICAgICAgICAgICAgICAubWFwKG9wZXJhdGlvbiA9PiAoe1xuICAgICAgICAgICAgICAgICAgbGFiZWw6IG9wZXJhdGlvblRvQmFkZ2Vbb3BlcmF0aW9uXSxcbiAgICAgICAgICAgICAgICAgIGNsYXNzOiAnZ2lvLWJhZGdlLW5ldXRyYWwnLFxuICAgICAgICAgICAgICAgIH0pKVxuICAgICAgICAgICAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmxhYmVsLmxvY2FsZUNvbXBhcmUoYi5sYWJlbCkpO1xuICAgICAgICAgICAgICBvcGVyYXRpb25CYWRnZXMgJiYgYmFkZ2VzLnB1c2goLi4ub3BlcmF0aW9uQmFkZ2VzKTtcbiAgICAgICAgICAgICAgcGF0aE9yQ2hhbm5lbExhYmVsID0gYCR7Y2hhbm5lbFNlbGVjdG9yLmNoYW5uZWx9JHtjaGFubmVsU2VsZWN0b3IuY2hhbm5lbE9wZXJhdG9yID09PSAnU1RBUlRTX1dJVEgnID8gJyoqJyA6ICcnfWA7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGh0dHBTZWxlY3RvciA9IGZsb3cuc2VsZWN0b3JzPy5maW5kKHMgPT4gcy50eXBlID09PSAnSFRUUCcpIGFzIEh0dHBTZWxlY3RvcjtcbiAgICAgICAgICAgIGlmIChodHRwU2VsZWN0b3IpIHtcbiAgICAgICAgICAgICAgLy8gS2VlcCBvbmx5IDIgZmlyc3QgaHR0cCBtZXRob2RzIGFuZCBhZGQgK1ggYmFkZ2UgaWYgdGhlcmUgYXJlIG1vcmVcbiAgICAgICAgICAgICAgY29uc3QgaHR0cE1ldGhvZHNUb0tlZXAgPSBodHRwU2VsZWN0b3IubWV0aG9kcz8uc2xpY2UoMCwgMik7XG4gICAgICAgICAgICAgIGNvbnN0IGh0dHBNZXRob2RzTGVuZ3RoID0gaHR0cFNlbGVjdG9yLm1ldGhvZHM/Lmxlbmd0aDtcbiAgICAgICAgICAgICAgaHR0cE1ldGhvZHNUb0tlZXAgJiZcbiAgICAgICAgICAgICAgICBiYWRnZXMucHVzaCguLi5odHRwTWV0aG9kc1RvS2VlcC5tYXAobWV0aG9kID0+ICh7IGxhYmVsOiBtZXRob2QsIGNsYXNzOiBgZ2lvLW1ldGhvZC1iYWRnZS0ke21ldGhvZC50b0xvd2VyQ2FzZSgpfWAgfSkpKTtcbiAgICAgICAgICAgICAgaWYgKGh0dHBNZXRob2RzTGVuZ3RoICYmIGh0dHBNZXRob2RzTGVuZ3RoID4gMikge1xuICAgICAgICAgICAgICAgIGJhZGdlcz8ucHVzaCh7XG4gICAgICAgICAgICAgICAgICBsYWJlbDogYCske2h0dHBNZXRob2RzTGVuZ3RoIC0gMn1gLFxuICAgICAgICAgICAgICAgICAgY2xhc3M6ICdnaW8tYmFkZ2UtbmV1dHJhbCcsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgaWYgKGh0dHBNZXRob2RzTGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgYmFkZ2VzPy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnQUxMJyxcbiAgICAgICAgICAgICAgICAgIGNsYXNzOiAnZ2lvLWJhZGdlLW5ldXRyYWwnLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcGF0aE9yQ2hhbm5lbExhYmVsID0gYCR7aHR0cFNlbGVjdG9yLnBhdGh9JHtodHRwU2VsZWN0b3IucGF0aE9wZXJhdG9yID09PSAnU1RBUlRTX1dJVEgnID8gJy8qKicgOiAnJ31gO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5mbG93LFxuICAgICAgICAgICAgICBzZWxlY3RlZDogdGhpcy5zZWxlY3RlZEZsb3c/Ll9pZCA9PT0gZmxvdy5faWQsXG4gICAgICAgICAgICAgIG1vdXNlT3ZlcjogZmFsc2UsXG4gICAgICAgICAgICAgIGJhZGdlcyxcbiAgICAgICAgICAgICAgcGF0aE9yQ2hhbm5lbExhYmVsLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RGbG93KGdyb3VwSWQ6IHN0cmluZywgZmxvd0lkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBmbG93ID0gdGhpcy5mbG93c0dyb3Vwcy5maW5kKGZnID0+IGZnLl9pZCA9PT0gZ3JvdXBJZCk/LmZsb3dzLmZpbmQoZiA9PiBmLl9pZCA9PT0gZmxvd0lkKTtcbiAgICBpZiAoZmxvdykge1xuICAgICAgdGhpcy5zZWxlY3RlZEZsb3dDaGFuZ2UuZW1pdChmbG93KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25BZGRGbG93KGZsb3dHcm91cDogRmxvd0dyb3VwVk0pOiB2b2lkIHtcbiAgICBjb25zdCBkaWFsb2dSZXN1bHQgPVxuICAgICAgdGhpcy5hcGlUeXBlID09PSAnTUVTU0FHRSdcbiAgICAgICAgPyB0aGlzLm1hdERpYWxvZ1xuICAgICAgICAgICAgLm9wZW48XG4gICAgICAgICAgICAgIEdpb1BvbGljeVN0dWRpb0Zsb3dNZXNzYWdlRm9ybURpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgICAgICAgR2lvUG9saWN5U3R1ZGlvRmxvd01lc3NhZ2VGb3JtRGlhbG9nRGF0YSxcbiAgICAgICAgICAgICAgR2lvUG9saWN5U3R1ZGlvRmxvd0Zvcm1EaWFsb2dSZXN1bHRcbiAgICAgICAgICAgID4oR2lvUG9saWN5U3R1ZGlvRmxvd01lc3NhZ2VGb3JtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBmbG93OiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgZW50cnlwb2ludHM6IHRoaXMuZW50cnlwb2ludHMsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHJvbGU6ICdhbGVydGRpYWxvZycsXG4gICAgICAgICAgICAgIGlkOiAnZ2lvUHNGbG93Rm9ybURpYWxvZycsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmFmdGVyQ2xvc2VkKClcbiAgICAgICAgOiB0aGlzLm1hdERpYWxvZ1xuICAgICAgICAgICAgLm9wZW48R2lvUG9saWN5U3R1ZGlvRmxvd1Byb3h5Rm9ybURpYWxvZ0NvbXBvbmVudCwgR2lvUG9saWN5U3R1ZGlvRmxvd1Byb3h5Rm9ybURpYWxvZ0RhdGEsIEdpb1BvbGljeVN0dWRpb0Zsb3dGb3JtRGlhbG9nUmVzdWx0PihcbiAgICAgICAgICAgICAgR2lvUG9saWN5U3R1ZGlvRmxvd1Byb3h5Rm9ybURpYWxvZ0NvbXBvbmVudCxcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgIGZsb3c6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIHJvbGU6ICdhbGVydGRpYWxvZycsXG4gICAgICAgICAgICAgICAgaWQ6ICdnaW9Qc0Zsb3dGb3JtRGlhbG9nJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5hZnRlckNsb3NlZCgpO1xuXG4gICAgZGlhbG9nUmVzdWx0XG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKGNyZWF0ZWRPckVkaXRlZCA9PiB7XG4gICAgICAgICAgaWYgKCFjcmVhdGVkT3JFZGl0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZWRpdGVkRmxvd3NHcm91cHMgPSBjbG9uZURlZXAodGhpcy5mbG93c0dyb3Vwcyk7XG5cbiAgICAgICAgICBjb25zdCBmbG93c0dyb3VwVG9FZGl0ID0gZWRpdGVkRmxvd3NHcm91cHMuZmluZChmZyA9PiBmZy5faWQgPT09IGZsb3dHcm91cC5faWQpO1xuICAgICAgICAgIGlmICghZmxvd3NHcm91cFRvRWRpdCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGbG93IGdyb3VwICR7Zmxvd0dyb3VwLl9pZH0gbm90IGZvdW5kYCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGZsb3dzR3JvdXBUb0VkaXQuZmxvd3MucHVzaChjcmVhdGVkT3JFZGl0ZWQpO1xuXG4gICAgICAgICAgdGhpcy5mbG93c0dyb3Vwc0NoYW5nZS5lbWl0KGVkaXRlZEZsb3dzR3JvdXBzKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkRmxvd0NoYW5nZS5lbWl0KGNyZWF0ZWRPckVkaXRlZCk7XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSgpO1xuICB9XG5cbiAgcHVibGljIG9uQ29uZmlndXJlRXhlY3V0aW9uKGZsb3dFeGVjdXRpb246IEZsb3dFeGVjdXRpb24pOiB2b2lkIHtcbiAgICBjb25zdCBkaWFsb2dSZXN1bHQgPSB0aGlzLm1hdERpYWxvZ1xuICAgICAgLm9wZW48XG4gICAgICAgIEdpb1BvbGljeVN0dWRpb0Zsb3dFeGVjdXRpb25Gb3JtRGlhbG9nQ29tcG9uZW50LFxuICAgICAgICBHaW9Qb2xpY3lTdHVkaW9GbG93RXhlY3V0aW9uRm9ybURpYWxvZ0RhdGEsXG4gICAgICAgIEdpb1BvbGljeVN0dWRpb0Zsb3dFeGVjdXRpb25Gb3JtRGlhbG9nUmVzdWx0XG4gICAgICA+KEdpb1BvbGljeVN0dWRpb0Zsb3dFeGVjdXRpb25Gb3JtRGlhbG9nQ29tcG9uZW50LCB7XG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBmbG93RXhlY3V0aW9uLFxuICAgICAgICB9LFxuICAgICAgICByb2xlOiAnYWxlcnRkaWFsb2cnLFxuICAgICAgICBpZDogJ2dpb1BzRmxvd0V4ZWN1dGlvbkZvcm1EaWFsb2cnLFxuICAgICAgfSlcbiAgICAgIC5hZnRlckNsb3NlZCgpO1xuXG4gICAgZGlhbG9nUmVzdWx0XG4gICAgICAucGlwZShcbiAgICAgICAgdGFwKGVkaXRlZCA9PiB7XG4gICAgICAgICAgaWYgKCFlZGl0ZWQpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5mbG93RXhlY3V0aW9uQ2hhbmdlLmVtaXQoZWRpdGVkKTtcbiAgICAgICAgfSksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKCk7XG4gIH1cbn1cbiIsIjwhLS1cblxuICAgIENvcHlyaWdodCAoQykgMjAyMyBUaGUgR3Jhdml0ZWUgdGVhbSAoaHR0cDovL2dyYXZpdGVlLmlvKVxuICAgIFxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICAgIFxuICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gICAgXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG5cbi0tPlxuXG48ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gIDxkaXYgY2xhc3M9XCJoZWFkZXJfX2xhYmVsXCI+XG4gICAgRmxvd3MgPG1hdC1pY29uIHN2Z0ljb249XCJnaW86aW5mb1wiIG1hdFRvb2x0aXA9XCJGbG93cyBhbGxvdyB5b3UgdG8gYXBwbHkgZGlmZmVyZW50IHBvbGljaWVzIG9uIHlvdXIgQVBJIGV2ZW50IHBoYXNlc1wiPjwvbWF0LWljb24+XG4gIDwvZGl2PlxuICA8ZGl2IGNsYXNzPVwiaGVhZGVyX19jb25maWdCdG5cIj5cbiAgICA8YnV0dG9uIGNsYXNzPVwiaGVhZGVyX19jb25maWdCdG5fZWRpdFwiIG1hdC1zdHJva2VkLWJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cIm9uQ29uZmlndXJlRXhlY3V0aW9uKGZsb3dFeGVjdXRpb24pXCI+XG4gICAgICA8bWF0LWljb24gc3ZnSWNvbj1cImdpbzpzZXR0aW5nc1wiPjwvbWF0LWljb24+XG4gICAgPC9idXR0b24+XG4gIDwvZGl2PlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJsaXN0XCI+XG4gIDxkaXYgKm5nRm9yPVwibGV0IGZsb3dzR3JvdXAgb2YgZmxvd3NHcm91cHNWTVNlbGVjdGVkXCIgY2xhc3M9XCJsaXN0X19mbG93c0dyb3VwXCI+XG4gICAgPGRpdiBjbGFzcz1cImxpc3RfX2Zsb3dzR3JvdXBfX2hlYWRlclwiPlxuICAgICAgPGRpdiBjbGFzcz1cImxpc3RfX2Zsb3dzR3JvdXBfX2hlYWRlcl9fbGFiZWxcIj5cbiAgICAgICAgPG1hdC1pY29uICpuZ0lmPVwiZmxvd3NHcm91cC5faWNvblwiIFtzdmdJY29uXT1cImZsb3dzR3JvdXAuX2ljb25cIj48L21hdC1pY29uPlxuICAgICAgICA8c3Bhbj57eyBmbG93c0dyb3VwLm5hbWUgfX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsaXN0X19mbG93c0dyb3VwX19oZWFkZXJfX2FkZEJ0blwiPlxuICAgICAgICA8YnV0dG9uIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwib25BZGRGbG93KGZsb3dzR3JvdXApXCI+PG1hdC1pY29uIHN2Z0ljb249XCJnaW86cGx1c1wiIG1hdFRvb2x0aXA9XCJOZXcgZmxvd1wiPjwvbWF0LWljb24+PC9idXR0b24+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxkaXZcbiAgICAgICpuZ0Zvcj1cImxldCBmbG93IG9mIGZsb3dzR3JvdXAuZmxvd3NcIlxuICAgICAgY2xhc3M9XCJsaXN0X19mbG93c0dyb3VwX19mbG93XCJcbiAgICAgIFtjbGFzcy5zZWxlY3RlZF09XCJmbG93LnNlbGVjdGVkXCJcbiAgICAgIChjbGljayk9XCJzZWxlY3RGbG93KGZsb3dzR3JvdXAuX2lkLCBmbG93Ll9pZClcIlxuICAgICAgKG1vdXNlb3V0KT1cImZsb3cubW91c2VPdmVyID0gZmFsc2VcIlxuICAgICAgKG1vdXNlb3Zlcik9XCJmbG93Lm1vdXNlT3ZlciA9IHRydWVcIlxuICAgID5cbiAgICAgIDxkaXYgKm5nSWY9XCJmbG93Lm5hbWVcIiBjbGFzcz1cImxpc3RfX2Zsb3dzR3JvdXBfX2Zsb3dfX25hbWVcIiBbYXR0ci50aXRsZV09XCJmbG93Lm5hbWVcIj5cbiAgICAgICAge3sgZmxvdy5uYW1lIH19XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3M9XCJsaXN0X19mbG93c0dyb3VwX19mbG93X19pbmZvc1wiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwibGlzdF9fZmxvd3NHcm91cF9fZmxvd19faW5mb3NfX2JhZGdlc1wiPlxuICAgICAgICAgIDxzcGFuICpuZ0Zvcj1cImxldCBiYWRnZSBvZiBmbG93LmJhZGdlc1wiIGNsYXNzPVwibGlzdF9fZmxvd3NHcm91cF9fZmxvd19faW5mb3NfX2JhZGdlc19fYmFkZ2VcIiBbbmdDbGFzc109XCJiYWRnZS5jbGFzc1wiPnt7XG4gICAgICAgICAgICBiYWRnZS5sYWJlbFxuICAgICAgICAgIH19PC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImxpc3RfX2Zsb3dzR3JvdXBfX2Zsb3dfX2luZm9zX19wYXRoT3JDaGFubmVsTGFiZWxcIj57eyBmbG93LnBhdGhPckNoYW5uZWxMYWJlbCB9fTwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
|