keevo-components 1.8.341 → 1.8.342

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.
@@ -37,6 +37,20 @@ export class KvOrgchartComponent {
37
37
  .data(this.dataSource)
38
38
  .nodeWidth(() => this.config.cardWidht)
39
39
  .nodeHeight(() => this.config.cardHeight)
40
+ .compact(false)
41
+ .buttonContent(({ node, state }) => {
42
+ return `<div style="color:#FFFFFF; border-radius:100%;font-size:5px;margin:auto auto;background-color:#64748B;">
43
+ <span>
44
+ ${node.children && node.children.length > 0
45
+ ? `<i class="material-symbols-outlined">
46
+ keyboard_arrow_up
47
+ </i>`
48
+ : `<i class="material-symbols-outlined">
49
+ keyboard_arrow_down
50
+ </i>`}
51
+ </span>
52
+ </div>`;
53
+ })
40
54
  .nodeUpdate(function (d) {
41
55
  })
42
56
  .linkUpdate((node, index, nodes) => {
@@ -64,21 +78,18 @@ export class KvOrgchartComponent {
64
78
  })
65
79
  .defaultFont('Roboto')
66
80
  .render();
81
+ this.chart.expandAll();
67
82
  }
68
83
  stringToTemplateLiteral(string) {
69
84
  const convertedTemplate = string.replace(/\{\{([^}]*)\}\}/g, '${$1}');
70
85
  return '`' + convertedTemplate + '`';
71
86
  }
72
- compactSwap() {
73
- this.compact = !this.compact;
74
- this.chart.compact(this.compact).render();
75
- }
76
87
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvOrgchartComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
77
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvOrgchartComponent, selector: "kv-orgchart", inputs: { dataSource: "dataSource", config: "config", template: "template", nodeTemplate: "nodeTemplate", generateTemplate: "generateTemplate", templateFuncion: "templateFuncion", corDeFundo: "corDeFundo" }, viewQueries: [{ propertyName: "chartContainer", first: true, predicate: ["chartContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #chartContainer id=\"chartContainer\" [ngClass]=\"{'backGround': true}\">\r\n\r\n\r\n <div class=\"div-botoes w-full flex gap-1\" >\r\n\r\n\r\n <span *ngIf=\"!mostraMenu\" class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"mostraMenu = !mostraMenu\" pTooltip=\"Expandir menu\">menu</span>\r\n\r\n\r\n\r\n <span *ngIf=\"mostraMenu\" class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"mostraMenu = !mostraMenu\" pTooltip=\"Recolher menu\">menu_open</span>\r\n\r\n <div *ngIf=\"mostraMenu\">\r\n <span class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"chart.zoomIn()\" pTooltip=\"Zoom +\">zoom_in</span>\r\n <span class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"chart.zoomOut()\" pTooltip=\"Zoom -\">zoom_out</span>\r\n\r\n <span class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"chart.collapseAll()\" pTooltip=\"Expandir\">expand_less</span>\r\n\r\n <span class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"chart.expandAll()\" pTooltip=\"Recolher\">expand_more</span>\r\n\r\n\r\n <!-- <span class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"compactSwap()\" pTooltip=\"Compactar\">cached</span> -->\r\n\r\n <span class=\"material-icons surface-300 shadow-4 p-1 m-2 border-circle cursor-pointer\"\r\n (click)=\"chart.fit().render()\" pTooltip=\"Centralizar\">\r\n filter_center_focus\r\n </span>\r\n\r\n <span class=\"material-icons surface-300 shadow-4 p-1 m-2 border-circle cursor-pointer\"\r\n (click)=\"chart.fullscreen('#chartContainer')\" pTooltip=\"Tela cheia\" >\r\n fullscreen\r\n </span>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n\r\n<link\r\n rel=\"stylesheet\"\r\n href=\"https://fonts.googleapis.com/icon?family=Material+Icons\"\r\n/>\r\n\r\n<link\r\n rel=\"stylesheet\"\r\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0\"\r\n/>\r\n", styles: ["#chartContainer{height:100%;overflow:hidden}:host ::ng-deep #chartContainer svg.svg-chart-container{height:100%!important;position:relative;width:100%;top:-56px;z-index:0;background-color:#fff}.div-botoes{z-index:1;width:100%;position:relative}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] }); }
88
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.8", type: KvOrgchartComponent, selector: "kv-orgchart", inputs: { dataSource: "dataSource", config: "config", template: "template", nodeTemplate: "nodeTemplate", generateTemplate: "generateTemplate", templateFuncion: "templateFuncion", corDeFundo: "corDeFundo" }, viewQueries: [{ propertyName: "chartContainer", first: true, predicate: ["chartContainer"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div #chartContainer id=\"chartContainer\" [ngClass]=\"{'backGround': true}\">\r\n\r\n\r\n <div class=\"div-botoes w-full flex gap-1\" >\r\n\r\n\r\n <span *ngIf=\"!mostraMenu\" class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"mostraMenu = !mostraMenu\" pTooltip=\"Expandir menu\">menu</span>\r\n\r\n\r\n\r\n <span *ngIf=\"mostraMenu\" class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"mostraMenu = !mostraMenu\" pTooltip=\"Recolher menu\">menu_open</span>\r\n\r\n <div *ngIf=\"mostraMenu\">\r\n <span class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"chart.zoomIn()\" pTooltip=\"Zoom +\">zoom_in</span>\r\n <span class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"chart.zoomOut()\" pTooltip=\"Zoom -\">zoom_out</span>\r\n\r\n <span class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"chart.collapseAll()\" pTooltip=\"Recolher\">expand_less</span>\r\n\r\n <span class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"chart.expandAll()\" pTooltip=\"Expandir\">expand_more</span>\r\n\r\n\r\n <!-- <span class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"compactSwap()\" pTooltip=\"Compactar\">cached</span> -->\r\n\r\n <span class=\"material-icons surface-300 shadow-4 p-1 m-2 border-circle cursor-pointer\"\r\n (click)=\"chart.fit().render()\" pTooltip=\"Centralizar\">\r\n filter_center_focus\r\n </span>\r\n\r\n <span class=\"material-icons surface-300 shadow-4 p-1 m-2 border-circle cursor-pointer\"\r\n (click)=\"chart.fullscreen('#chartContainer')\" pTooltip=\"Tela cheia\" >\r\n fullscreen\r\n </span>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n\r\n<link\r\n rel=\"stylesheet\"\r\n href=\"https://fonts.googleapis.com/icon?family=Material+Icons\"\r\n/>\r\n\r\n<link\r\n rel=\"stylesheet\"\r\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0\"\r\n/>\r\n", styles: ["#chartContainer{height:100%;overflow:hidden}:host ::ng-deep #chartContainer svg.svg-chart-container{height:100%!important;position:relative;width:100%;top:-56px;z-index:0;background-color:#fff}.div-botoes{z-index:1;width:100%;position:relative}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] }); }
78
89
  }
79
90
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvOrgchartComponent, decorators: [{
80
91
  type: Component,
81
- args: [{ selector: 'kv-orgchart', template: "<div #chartContainer id=\"chartContainer\" [ngClass]=\"{'backGround': true}\">\r\n\r\n\r\n <div class=\"div-botoes w-full flex gap-1\" >\r\n\r\n\r\n <span *ngIf=\"!mostraMenu\" class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"mostraMenu = !mostraMenu\" pTooltip=\"Expandir menu\">menu</span>\r\n\r\n\r\n\r\n <span *ngIf=\"mostraMenu\" class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"mostraMenu = !mostraMenu\" pTooltip=\"Recolher menu\">menu_open</span>\r\n\r\n <div *ngIf=\"mostraMenu\">\r\n <span class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"chart.zoomIn()\" pTooltip=\"Zoom +\">zoom_in</span>\r\n <span class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"chart.zoomOut()\" pTooltip=\"Zoom -\">zoom_out</span>\r\n\r\n <span class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"chart.collapseAll()\" pTooltip=\"Expandir\">expand_less</span>\r\n\r\n <span class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"chart.expandAll()\" pTooltip=\"Recolher\">expand_more</span>\r\n\r\n\r\n <!-- <span class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"compactSwap()\" pTooltip=\"Compactar\">cached</span> -->\r\n\r\n <span class=\"material-icons surface-300 shadow-4 p-1 m-2 border-circle cursor-pointer\"\r\n (click)=\"chart.fit().render()\" pTooltip=\"Centralizar\">\r\n filter_center_focus\r\n </span>\r\n\r\n <span class=\"material-icons surface-300 shadow-4 p-1 m-2 border-circle cursor-pointer\"\r\n (click)=\"chart.fullscreen('#chartContainer')\" pTooltip=\"Tela cheia\" >\r\n fullscreen\r\n </span>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n\r\n<link\r\n rel=\"stylesheet\"\r\n href=\"https://fonts.googleapis.com/icon?family=Material+Icons\"\r\n/>\r\n\r\n<link\r\n rel=\"stylesheet\"\r\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0\"\r\n/>\r\n", styles: ["#chartContainer{height:100%;overflow:hidden}:host ::ng-deep #chartContainer svg.svg-chart-container{height:100%!important;position:relative;width:100%;top:-56px;z-index:0;background-color:#fff}.div-botoes{z-index:1;width:100%;position:relative}\n"] }]
92
+ args: [{ selector: 'kv-orgchart', template: "<div #chartContainer id=\"chartContainer\" [ngClass]=\"{'backGround': true}\">\r\n\r\n\r\n <div class=\"div-botoes w-full flex gap-1\" >\r\n\r\n\r\n <span *ngIf=\"!mostraMenu\" class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"mostraMenu = !mostraMenu\" pTooltip=\"Expandir menu\">menu</span>\r\n\r\n\r\n\r\n <span *ngIf=\"mostraMenu\" class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"mostraMenu = !mostraMenu\" pTooltip=\"Recolher menu\">menu_open</span>\r\n\r\n <div *ngIf=\"mostraMenu\">\r\n <span class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"chart.zoomIn()\" pTooltip=\"Zoom +\">zoom_in</span>\r\n <span class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"chart.zoomOut()\" pTooltip=\"Zoom -\">zoom_out</span>\r\n\r\n <span class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"chart.collapseAll()\" pTooltip=\"Recolher\">expand_less</span>\r\n\r\n <span class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"chart.expandAll()\" pTooltip=\"Expandir\">expand_more</span>\r\n\r\n\r\n <!-- <span class=\"surface-300 shadow-4 p-1 m-2 border-circle material-icons cursor-pointer\"\r\n (click)=\"compactSwap()\" pTooltip=\"Compactar\">cached</span> -->\r\n\r\n <span class=\"material-icons surface-300 shadow-4 p-1 m-2 border-circle cursor-pointer\"\r\n (click)=\"chart.fit().render()\" pTooltip=\"Centralizar\">\r\n filter_center_focus\r\n </span>\r\n\r\n <span class=\"material-icons surface-300 shadow-4 p-1 m-2 border-circle cursor-pointer\"\r\n (click)=\"chart.fullscreen('#chartContainer')\" pTooltip=\"Tela cheia\" >\r\n fullscreen\r\n </span>\r\n\r\n </div>\r\n\r\n\r\n </div>\r\n\r\n\r\n</div>\r\n\r\n\r\n<link\r\n rel=\"stylesheet\"\r\n href=\"https://fonts.googleapis.com/icon?family=Material+Icons\"\r\n/>\r\n\r\n<link\r\n rel=\"stylesheet\"\r\n href=\"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@48,400,0,0\"\r\n/>\r\n", styles: ["#chartContainer{height:100%;overflow:hidden}:host ::ng-deep #chartContainer svg.svg-chart-container{height:100%!important;position:relative;width:100%;top:-56px;z-index:0;background-color:#fff}.div-botoes{z-index:1;width:100%;position:relative}\n"] }]
82
93
  }], ctorParameters: () => [{ type: i0.Renderer2 }], propDecorators: { chartContainer: [{
83
94
  type: ViewChild,
84
95
  args: ['chartContainer']
@@ -97,4 +108,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
97
108
  }], corDeFundo: [{
98
109
  type: Input
99
110
  }] } });
100
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3Ytb3JnY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3Ytb3JnY2hhcnQva3Ytb3JnY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3Ytb3JnY2hhcnQva3Ytb3JnY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBSUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7Ozs7QUFVekIsTUFBTSxPQUFPLG1CQUFtQjtJQWlCOUIsWUFBb0IsUUFBbUI7UUFBbkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQVI5QixxQkFBZ0IsR0FBYSxDQUFDLElBQVMsRUFBRSxJQUFTLEVBQUUsS0FBWSxFQUFFLEtBQWEsRUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQy9GLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBRWpDLGVBQVUsR0FBVyxLQUFLLENBQUM7UUFFcEMsWUFBTyxHQUFZLElBQUksQ0FBQztRQUN4QixlQUFVLEdBQVksS0FBSyxDQUFDO0lBRWUsQ0FBQztJQUU1QyxRQUFRO0lBQ1IsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUM5QixDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxD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LENBQUMsTUFBTSxFQUFFLENBQUM7SUFDNUMsQ0FBQzs4R0F2RlUsbUJBQW1CO2tHQUFuQixtQkFBbUIsMFlDckJoQywwc0VBMERBOzsyRkRyQ2EsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGFBQWE7OEVBS00sY0FBYztzQkFBMUMsU0FBUzt1QkFBQyxnQkFBZ0I7Z0JBR2xCLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFFRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgRWxlbWVudFJlZixcclxuICBJbnB1dCxcclxuICBPbkluaXQsXHJcbiAgUmVuZGVyZXIyLFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmltcG9ydCB7IE9yZ0NoYXJ0IH0gZnJvbSAnZDMtb3JnLWNoYXJ0JztcclxuaW1wb3J0ICogYXMgZDMgZnJvbSAnZDMnO1xyXG5cclxuaW1wb3J0IE9yZ0NoYXJ0Q29uZmlnIGZyb20gJy4uLy4uL2FwaS9jb21wb25lbnRzL2NoYXJ0L29yY2hhcnQuY29uZmlnJztcclxuaW1wb3J0IE9yZ0NoYXJ0SXRlbSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy9jaGFydC9vcmNoYXJ0Lml0ZW0nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdrdi1vcmdjaGFydCcsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2t2LW9yZ2NoYXJ0LmNvbXBvbmVudC5odG1sJyxcclxuICBzdHlsZVVybHM6IFsnLi9rdi1vcmdjaGFydC5jb21wb25lbnQuc2NzcycsXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEt2T3JnY2hhcnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xyXG4gIEBWaWV3Q2hpbGQoJ2NoYXJ0Q29udGFpbmVyJykgY2hhcnRDb250YWluZXIhOiBFbGVtZW50UmVmO1xyXG4gIGNoYXJ0ITogYW55O1xyXG5cclxuICBASW5wdXQoKSBkYXRhU291cmNlITogT3JnQ2hhcnRJdGVtW107XHJcbiAgQElucHV0KCkgY29uZmlnITogT3JnQ2hhcnRDb25maWc7XHJcbiAgQElucHV0KCkgdGVtcGxhdGUhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgbm9kZVRlbXBsYXRlITogVGVtcGxhdGVSZWY8YW55PjtcclxuXHJcbiAgQElucHV0KCkgZ2VuZXJhdGVUZW1wbGF0ZTogRnVuY3Rpb24gPSAoZGF0YTogYW55LCBub2RlOiBhbnksIG5vZGVzOiBhbnlbXSwgaW5kZXg6IG51bWJlcik6IHN0cmluZyA9PiAnJztcclxuICBASW5wdXQoKSB0ZW1wbGF0ZUZ1bmNpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KCkgY29yRGVGdW5kbzogc3RyaW5nID0gJ3JlZCc7XHJcblxyXG4gIGNvbXBhY3Q6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIG1vc3RyYU1lbnU6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyKSB7IH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKSB7XHJcbiAgICBpZiAoIXRoaXMuY2hhcnQpIHtcclxuICAgICAgdGhpcy5jaGFydCA9IG5ldyBPcmdDaGFydCgpO1xyXG4gICAgfVxyXG4gICAgdGhpcy51cGRhdGVDaGFydCgpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkNoYW5nZXMoKSB7XHJcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0KCk7XHJcbiAgfVxyXG5cclxuICB1cGRhdGVDaGFydCgpIHtcclxuICAgIGlmICghdGhpcy5kYXRhU291cmNlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5jaGFydCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY2hhcnRDb250YWluZXIgPSB0aGlzLmNoYXJ0Q29udGFpbmVyLm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB0aGlzLmNoYXJ0XHJcbiAgICAgIC5jb250YWluZXIoY2hhcnRDb250YWluZXIpXHJcbiAgICAgIC5kYXRhKHRoaXMuZGF0YVNvdXJjZSlcclxuICAgICAgLm5vZGVXaWR0aCgoKSA9PiB0aGlzLmNvbmZpZy5jYXJkV2lkaHQpXHJcbiAgICAgIC5ub2RlSGVpZ2h0KCgpID0+IHRoaXMuY29uZmlnLmNhcmRIZWlnaHQpXHJcbiAgICAgIC5ub2RlVXBkYXRlKGZ1bmN0aW9uIChkOiBhbnkpIHtcclxuICAgICAgfSlcclxuICAgICAgLmxpbmtVcGRhdGUoKG5vZGU6IGFueSwgaW5kZXg6IGFueSwgbm9kZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGQzLnNlbGVjdChub2Rlc1tpbmRleF0pXHJcbiAgICAgICAgICAuYXR0cignc3Ryb2tlLXdpZHRoJywgdGhpcy5jb25maWcuY29uZWN0aW9uV2lkdGggfHwgJzJweCcpXHJcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZScsIHRoaXMuY29uZmlnLmNvbm5lY3Rpb25Db2xvciB8fCAnI2Q2ZDZkNicpLnN0eWxlKCdiYWNrZ3JvdW5kQ29sb3InLCAncmVkJylcclxuICAgICAgfSlcclxuICAgICAgLm5vZGVDb250ZW50KChkOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMudGVtcGxhdGVGdW5jaW9uKSB7XHJcbiAgICAgICAgICBpZiAoZC5kYXRhLnRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGpzVGVtcGxhdGUgPSB0aGlzLnN0cmluZ1RvVGVtcGxhdGVMaXRlcmFsKGQuZGF0YS50ZW1wbGF0ZSk7XHJcbiAgICAgICAgICAgIHZhciB0ZW1wbGF0ZUNvbnZlcnRlciA9IG5ldyBGdW5jdGlvbignZGF0YScsICdyZXR1cm4nICsganNUZW1wbGF0ZSk7XHJcbiAgICAgICAgICAgIHZhciB4ID0gdGVtcGxhdGVDb252ZXJ0ZXIoZC5kYXRhLmRhdGEpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QganNUZW1wbGF0ZSA9IHRoaXMuc3RyaW5nVG9UZW1wbGF0ZUxpdGVyYWwodGhpcy5jb25maWcudGVtcGxhdGVJdGVtKTtcclxuICAgICAgICAgICAgdmFyIHRlbXBsYXRlQ29udmVydGVyID0gbmV3IEZ1bmN0aW9uKCdkYXRhJywgJ3JldHVybicgKyBqc1RlbXBsYXRlKTtcclxuICAgICAgICAgICAgdmFyIHggPSB0ZW1wbGF0ZUNvbnZlcnRlcihkLmRhdGEuZGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHZhciB4ID0gdGhpcy5nZW5lcmF0ZVRlbXBsYXRlKGQpXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4geDtcclxuICAgICAgfSlcclxuICAgICAgLmRlZmF1bHRGb250KCdSb2JvdG8nKVxyXG4gICAgICAucmVuZGVyKClcclxuICB9XHJcblxyXG4gIHN0cmluZ1RvVGVtcGxhdGVMaXRlcmFsKHN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGNvbnZlcnRlZFRlbXBsYXRlID0gc3RyaW5nLnJlcGxhY2UoXHJcbiAgICAgIC9cXHtcXHsoW159XSopXFx9XFx9L2csXHJcbiAgICAgICckeyQxfSdcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuICdgJyArIGNvbnZlcnRlZFRlbXBsYXRlICsgJ2AnO1xyXG4gIH1cclxuXHJcbiAgY29tcGFjdFN3YXAoKSB7XHJcbiAgICB0aGlzLmNvbXBhY3QgPSAhdGhpcy5jb21wYWN0O1xyXG4gICAgdGhpcy5jaGFydC5jb21wYWN0KHRoaXMuY29tcGFjdCkucmVuZGVyKCk7XHJcbiAgfVxyXG59IiwiPGRpdiAjY2hhcnRDb250YWluZXIgaWQ9XCJjaGFydENvbnRhaW5lclwiIFtuZ0NsYXNzXT1cInsnYmFja0dyb3VuZCc6IHRydWV9XCI+XHJcblxyXG5cclxuICA8ZGl2IGNsYXNzPVwiZGl2LWJvdG9lcyB3LWZ1bGwgZmxleCBnYXAtMVwiID5cclxuXHJcblxyXG4gICAgPHNwYW4gKm5nSWY9XCIhbW9zdHJhTWVudVwiIGNsYXNzPVwic3VyZmFjZS0zMDAgc2hhZG93LTQgcC0xIG0tMiBib3JkZXItY2lyY2xlIG1hdGVyaWFsLWljb25zIGN1cnNvci1wb2ludGVyXCJcclxuICAgIChjbGljayk9XCJtb3N0cmFNZW51ID0gIW1vc3RyYU1lbnVcIiBwVG9vbHRpcD1cIkV4cGFuZGlyIG1lbnVcIj5tZW51PC9zcGFuPlxyXG5cclxuXHJcblxyXG4gICAgPHNwYW4gKm5nSWY9XCJtb3N0cmFNZW51XCIgY2xhc3M9XCJzdXJmYWNlLTMwMCBzaGFkb3ctNCBwLTEgbS0yIGJvcmRlci1jaXJjbGUgbWF0ZXJpYWwtaWNvbnMgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgKGNsaWNrKT1cIm1vc3RyYU1lbnUgPSAhbW9zdHJhTWVudVwiIHBUb29sdGlwPVwiUmVjb2xoZXIgbWVudVwiPm1lbnVfb3Blbjwvc3Bhbj5cclxuXHJcbiAgICA8ZGl2ICpuZ0lmPVwibW9zdHJhTWVudVwiPlxyXG4gICAgICA8c3BhbiBjbGFzcz1cInN1cmZhY2UtMzAwIHNoYWRvdy00IHAtMSBtLTIgYm9yZGVyLWNpcmNsZSBtYXRlcmlhbC1pY29ucyBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgIChjbGljayk9XCJjaGFydC56b29tSW4oKVwiIHBUb29sdGlwPVwiWm9vbSArXCI+em9vbV9pbjwvc3Bhbj5cclxuICAgIDxzcGFuIGNsYXNzPVwic3VyZmFjZS0zMDAgc2hhZG93LTQgcC0xIG0tMiBib3JkZXItY2lyY2xlIG1hdGVyaWFsLWljb25zIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgKGNsaWNrKT1cImNoYXJ0Lnpvb21PdXQoKVwiIHBUb29sdGlwPVwiWm9vbSAtXCI+em9vbV9vdXQ8L3NwYW4+XHJcblxyXG4gICAgPHNwYW4gY2xhc3M9XCJzdXJmYWNlLTMwMCBzaGFkb3ctNCBwLTEgbS0yIGJvcmRlci1jaXJjbGUgbWF0ZXJpYWwtaWNvbnMgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAoY2xpY2spPVwiY2hhcnQuY29sbGFwc2VBbGwoKVwiIHBUb29sdGlwPVwiRXhwYW5kaXJcIj5leHBhbmRfbGVzczwvc3Bhbj5cclxuXHJcbiAgICA8c3BhbiBjbGFzcz1cInN1cmZhY2UtMzAwIHNoYWRvdy00IHAtMSBtLTIgYm9yZGVyLWNpcmNsZSBtYXRlcmlhbC1pY29ucyBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgIChjbGljayk9XCJjaGFydC5leHBhbmRBbGwoKVwiIHBUb29sdGlwPVwiUmVjb2xoZXJcIj5leHBhbmRfbW9yZTwvc3Bhbj5cclxuXHJcblxyXG4gICAgPCEtLSA8c3BhbiBjbGFzcz1cInN1cmZhY2UtMzAwIHNoYWRvdy00IHAtMSBtLTIgYm9yZGVyLWNpcmNsZSBtYXRlcmlhbC1pY29ucyBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgIChjbGljayk9XCJjb21wYWN0U3dhcCgpXCIgcFRvb2x0aXA9XCJDb21wYWN0YXJcIj5jYWNoZWQ8L3NwYW4+IC0tPlxyXG5cclxuICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgc3VyZmFjZS0zMDAgc2hhZG93LTQgcC0xIG0tMiBib3JkZXItY2lyY2xlIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgKGNsaWNrKT1cImNoYXJ0LmZpdCgpLnJlbmRlcigpXCIgcFRvb2x0aXA9XCJDZW50cmFsaXphclwiPlxyXG4gICAgICBmaWx0ZXJfY2VudGVyX2ZvY3VzXHJcbiAgICA8L3NwYW4+XHJcblxyXG4gICAgPHNwYW4gY2xhc3M9XCJtYXRlcmlhbC1pY29ucyBzdXJmYWNlLTMwMCBzaGFkb3ctNCBwLTEgbS0yIGJvcmRlci1jaXJjbGUgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAoY2xpY2spPVwiY2hhcnQuZnVsbHNjcmVlbignI2NoYXJ0Q29udGFpbmVyJylcIiBwVG9vbHRpcD1cIlRlbGEgY2hlaWFcIiA+XHJcbiAgICAgIGZ1bGxzY3JlZW5cclxuICAgIDwvc3Bhbj5cclxuXHJcbiAgICA8L2Rpdj5cclxuXHJcblxyXG4gIDwvZGl2PlxyXG5cclxuXHJcbjwvZGl2PlxyXG5cclxuXHJcbjxsaW5rXHJcbiAgcmVsPVwic3R5bGVzaGVldFwiXHJcbiAgaHJlZj1cImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vaWNvbj9mYW1pbHk9TWF0ZXJpYWwrSWNvbnNcIlxyXG4vPlxyXG5cclxuPGxpbmtcclxuICByZWw9XCJzdHlsZXNoZWV0XCJcclxuICBocmVmPVwiaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT1NYXRlcmlhbCtTeW1ib2xzK091dGxpbmVkOm9wc3osd2dodCxGSUxMLEdSQURANDgsNDAwLDAsMFwiXHJcbi8+XHJcbiJdfQ==
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3Ytb3JnY2hhcnQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3Ytb3JnY2hhcnQva3Ytb3JnY2hhcnQuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3Ytb3JnY2hhcnQva3Ytb3JnY2hhcnQuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNMLFNBQVMsRUFFVCxLQUFLLEVBSUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDeEMsT0FBTyxLQUFLLEVBQUUsTUFBTSxJQUFJLENBQUM7Ozs7QUFVekIsTUFBTSxPQUFPLG1CQUFtQjtJQWlCOUIsWUFBb0IsUUFBbUI7UUFBbkIsYUFBUSxHQUFSLFFBQVEsQ0FBVztRQVI5QixxQkFBZ0IsR0FBYSxDQUFDLElBQVMsRUFBRSxJQUFTLEVBQUUsS0FBWSxFQUFFLEtBQWEsRUFBVSxFQUFFLENBQUMsRUFBRSxDQUFDO1FBQy9GLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBRWpDLGVBQVUsR0FBVyxLQUFLLENBQUM7UUFFcEMsWUFBTyxHQUFZLElBQUksQ0FBQztRQUN4QixlQUFVLEdBQVksS0FBSyxDQUFDO0lBRWUsQ0FBQztJQUU1QyxRQUFRO0lBQ1IsQ0FBQztJQUVELGVBQWU7UUFDYixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztRQUM5QixDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxD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QUFDO0lBRUQsdUJBQXVCLENBQUMsTUFBYztRQUNwQyxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQ3RDLGtCQUFrQixFQUNsQixPQUFPLENBQ1IsQ0FBQztRQUVGLE9BQU8sR0FBRyxHQUFHLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztJQUN2QyxDQUFDOzhHQXBHVSxtQkFBbUI7a0dBQW5CLG1CQUFtQiwwWUNyQmhDLDBzRUEwREE7OzJGRHJDYSxtQkFBbUI7a0JBTC9CLFNBQVM7K0JBQ0UsYUFBYTs4RUFLTSxjQUFjO3NCQUExQyxTQUFTO3VCQUFDLGdCQUFnQjtnQkFHbEIsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUVHLFVBQVU7c0JBQWxCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBFbGVtZW50UmVmLFxyXG4gIElucHV0LFxyXG4gIE9uSW5pdCxcclxuICBSZW5kZXJlcjIsXHJcbiAgVGVtcGxhdGVSZWYsXHJcbiAgVmlld0NoaWxkLFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuaW1wb3J0IHsgT3JnQ2hhcnQgfSBmcm9tICdkMy1vcmctY2hhcnQnO1xyXG5pbXBvcnQgKiBhcyBkMyBmcm9tICdkMyc7XHJcblxyXG5pbXBvcnQgT3JnQ2hhcnRDb25maWcgZnJvbSAnLi4vLi4vYXBpL2NvbXBvbmVudHMvY2hhcnQvb3JjaGFydC5jb25maWcnO1xyXG5pbXBvcnQgT3JnQ2hhcnRJdGVtIGZyb20gJy4uLy4uL2FwaS9jb21wb25lbnRzL2NoYXJ0L29yY2hhcnQuaXRlbSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2t2LW9yZ2NoYXJ0JyxcclxuICB0ZW1wbGF0ZVVybDogJy4va3Ytb3JnY2hhcnQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2t2LW9yZ2NoYXJ0LmNvbXBvbmVudC5zY3NzJyxdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZPcmdjaGFydENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnY2hhcnRDb250YWluZXInKSBjaGFydENvbnRhaW5lciE6IEVsZW1lbnRSZWY7XHJcbiAgY2hhcnQhOiBhbnk7XHJcblxyXG4gIEBJbnB1dCgpIGRhdGFTb3VyY2UhOiBPcmdDaGFydEl0ZW1bXTtcclxuICBASW5wdXQoKSBjb25maWchOiBPcmdDaGFydENvbmZpZztcclxuICBASW5wdXQoKSB0ZW1wbGF0ZSE6IHN0cmluZztcclxuICBASW5wdXQoKSBub2RlVGVtcGxhdGUhOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG5cclxuICBASW5wdXQoKSBnZW5lcmF0ZVRlbXBsYXRlOiBGdW5jdGlvbiA9IChkYXRhOiBhbnksIG5vZGU6IGFueSwgbm9kZXM6IGFueVtdLCBpbmRleDogbnVtYmVyKTogc3RyaW5nID0+ICcnO1xyXG4gIEBJbnB1dCgpIHRlbXBsYXRlRnVuY2lvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBjb3JEZUZ1bmRvOiBzdHJpbmcgPSAncmVkJztcclxuXHJcbiAgY29tcGFjdDogYm9vbGVhbiA9IHRydWU7XHJcbiAgbW9zdHJhTWVudTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlbmRlcmVyOiBSZW5kZXJlcjIpIHsgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICB9XHJcblxyXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIGlmICghdGhpcy5jaGFydCkge1xyXG4gICAgICB0aGlzLmNoYXJ0ID0gbmV3IE9yZ0NoYXJ0KCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnVwZGF0ZUNoYXJ0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcygpIHtcclxuICAgIHRoaXMudXBkYXRlQ2hhcnQoKTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZUNoYXJ0KCkge1xyXG4gICAgaWYgKCF0aGlzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLmNoYXJ0KSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjaGFydENvbnRhaW5lciA9IHRoaXMuY2hhcnRDb250YWluZXIubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMuY2hhcnRcclxuICAgICAgLmNvbnRhaW5lcihjaGFydENvbnRhaW5lcilcclxuICAgICAgLmRhdGEodGhpcy5kYXRhU291cmNlKVxyXG4gICAgICAubm9kZVdpZHRoKCgpID0+IHRoaXMuY29uZmlnLmNhcmRXaWRodClcclxuICAgICAgLm5vZGVIZWlnaHQoKCkgPT4gdGhpcy5jb25maWcuY2FyZEhlaWdodClcclxuICAgICAgLmNvbXBhY3QoZmFsc2UpXHJcbiAgICAgIC5idXR0b25Db250ZW50KCh7IG5vZGUsIHN0YXRlIH06IHsgbm9kZTogYW55LCBzdGF0ZTogYW55IH0pID0+IHtcclxuICAgICAgICByZXR1cm4gYDxkaXYgc3R5bGU9XCJjb2xvcjojRkZGRkZGOyBib3JkZXItcmFkaXVzOjEwMCU7Zm9udC1zaXplOjVweDttYXJnaW46YXV0byBhdXRvO2JhY2tncm91bmQtY29sb3I6IzY0NzQ4QjtcIj4gXHJcbiAgICAgICAgICAgIDxzcGFuPlxyXG4gICAgICAgICAgICAke1xyXG4gICAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwXHJcbiAgICAgICAgICAgICAgICA/IGA8aSBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWRcIj5cclxua2V5Ym9hcmRfYXJyb3dfdXBcclxuPC9pPmBcclxuICAgICAgICAgICAgICAgIDogYDxpIGNsYXNzPVwibWF0ZXJpYWwtc3ltYm9scy1vdXRsaW5lZFwiPlxyXG5rZXlib2FyZF9hcnJvd19kb3duXHJcbjwvaT5gXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+YDtcclxuICAgIH0pXHJcbiAgICAgIC5ub2RlVXBkYXRlKGZ1bmN0aW9uIChkOiBhbnkpIHtcclxuICAgICAgfSlcclxuICAgICAgLmxpbmtVcGRhdGUoKG5vZGU6IGFueSwgaW5kZXg6IGFueSwgbm9kZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGQzLnNlbGVjdChub2Rlc1tpbmRleF0pXHJcbiAgICAgICAgICAuYXR0cignc3Ryb2tlLXdpZHRoJywgdGhpcy5jb25maWcuY29uZWN0aW9uV2lkdGggfHwgJzJweCcpXHJcbiAgICAgICAgICAuc3R5bGUoJ3N0cm9rZScsIHRoaXMuY29uZmlnLmNvbm5lY3Rpb25Db2xvciB8fCAnI2Q2ZDZkNicpLnN0eWxlKCdiYWNrZ3JvdW5kQ29sb3InLCAncmVkJylcclxuICAgICAgfSlcclxuICAgICAgLm5vZGVDb250ZW50KChkOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoIXRoaXMudGVtcGxhdGVGdW5jaW9uKSB7XHJcbiAgICAgICAgICBpZiAoZC5kYXRhLnRlbXBsYXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGpzVGVtcGxhdGUgPSB0aGlzLnN0cmluZ1RvVGVtcGxhdGVMaXRlcmFsKGQuZGF0YS50ZW1wbGF0ZSk7XHJcbiAgICAgICAgICAgIHZhciB0ZW1wbGF0ZUNvbnZlcnRlciA9IG5ldyBGdW5jdGlvbignZGF0YScsICdyZXR1cm4nICsganNUZW1wbGF0ZSk7XHJcbiAgICAgICAgICAgIHZhciB4ID0gdGVtcGxhdGVDb252ZXJ0ZXIoZC5kYXRhLmRhdGEpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29uc3QganNUZW1wbGF0ZSA9IHRoaXMuc3RyaW5nVG9UZW1wbGF0ZUxpdGVyYWwodGhpcy5jb25maWcudGVtcGxhdGVJdGVtKTtcclxuICAgICAgICAgICAgdmFyIHRlbXBsYXRlQ29udmVydGVyID0gbmV3IEZ1bmN0aW9uKCdkYXRhJywgJ3JldHVybicgKyBqc1RlbXBsYXRlKTtcclxuICAgICAgICAgICAgdmFyIHggPSB0ZW1wbGF0ZUNvbnZlcnRlcihkLmRhdGEuZGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHZhciB4ID0gdGhpcy5nZW5lcmF0ZVRlbXBsYXRlKGQpXHJcblxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4geDtcclxuICAgICAgfSlcclxuICAgICAgLmRlZmF1bHRGb250KCdSb2JvdG8nKVxyXG4gICAgICAucmVuZGVyKClcclxuICAgICAgdGhpcy5jaGFydC5leHBhbmRBbGwoKVxyXG5cclxuICB9XHJcblxyXG4gIHN0cmluZ1RvVGVtcGxhdGVMaXRlcmFsKHN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGNvbnZlcnRlZFRlbXBsYXRlID0gc3RyaW5nLnJlcGxhY2UoXHJcbiAgICAgIC9cXHtcXHsoW159XSopXFx9XFx9L2csXHJcbiAgICAgICckeyQxfSdcclxuICAgICk7XHJcblxyXG4gICAgcmV0dXJuICdgJyArIGNvbnZlcnRlZFRlbXBsYXRlICsgJ2AnO1xyXG4gIH1cclxufSIsIjxkaXYgI2NoYXJ0Q29udGFpbmVyIGlkPVwiY2hhcnRDb250YWluZXJcIiBbbmdDbGFzc109XCJ7J2JhY2tHcm91bmQnOiB0cnVlfVwiPlxyXG5cclxuXHJcbiAgPGRpdiBjbGFzcz1cImRpdi1ib3RvZXMgdy1mdWxsIGZsZXggZ2FwLTFcIiA+XHJcblxyXG5cclxuICAgIDxzcGFuICpuZ0lmPVwiIW1vc3RyYU1lbnVcIiBjbGFzcz1cInN1cmZhY2UtMzAwIHNoYWRvdy00IHAtMSBtLTIgYm9yZGVyLWNpcmNsZSBtYXRlcmlhbC1pY29ucyBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAoY2xpY2spPVwibW9zdHJhTWVudSA9ICFtb3N0cmFNZW51XCIgcFRvb2x0aXA9XCJFeHBhbmRpciBtZW51XCI+bWVudTwvc3Bhbj5cclxuXHJcblxyXG5cclxuICAgIDxzcGFuICpuZ0lmPVwibW9zdHJhTWVudVwiIGNsYXNzPVwic3VyZmFjZS0zMDAgc2hhZG93LTQgcC0xIG0tMiBib3JkZXItY2lyY2xlIG1hdGVyaWFsLWljb25zIGN1cnNvci1wb2ludGVyXCJcclxuICAgIChjbGljayk9XCJtb3N0cmFNZW51ID0gIW1vc3RyYU1lbnVcIiBwVG9vbHRpcD1cIlJlY29saGVyIG1lbnVcIj5tZW51X29wZW48L3NwYW4+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cIm1vc3RyYU1lbnVcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJzdXJmYWNlLTMwMCBzaGFkb3ctNCBwLTEgbS0yIGJvcmRlci1jaXJjbGUgbWF0ZXJpYWwtaWNvbnMgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAoY2xpY2spPVwiY2hhcnQuem9vbUluKClcIiBwVG9vbHRpcD1cIlpvb20gK1wiPnpvb21faW48L3NwYW4+XHJcbiAgICA8c3BhbiBjbGFzcz1cInN1cmZhY2UtMzAwIHNoYWRvdy00IHAtMSBtLTIgYm9yZGVyLWNpcmNsZSBtYXRlcmlhbC1pY29ucyBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgIChjbGljayk9XCJjaGFydC56b29tT3V0KClcIiBwVG9vbHRpcD1cIlpvb20gLVwiPnpvb21fb3V0PC9zcGFuPlxyXG5cclxuICAgIDxzcGFuIGNsYXNzPVwic3VyZmFjZS0zMDAgc2hhZG93LTQgcC0xIG0tMiBib3JkZXItY2lyY2xlIG1hdGVyaWFsLWljb25zIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgKGNsaWNrKT1cImNoYXJ0LmNvbGxhcHNlQWxsKClcIiBwVG9vbHRpcD1cIlJlY29saGVyXCI+ZXhwYW5kX2xlc3M8L3NwYW4+XHJcblxyXG4gICAgPHNwYW4gY2xhc3M9XCJzdXJmYWNlLTMwMCBzaGFkb3ctNCBwLTEgbS0yIGJvcmRlci1jaXJjbGUgbWF0ZXJpYWwtaWNvbnMgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAoY2xpY2spPVwiY2hhcnQuZXhwYW5kQWxsKClcIiBwVG9vbHRpcD1cIkV4cGFuZGlyXCI+ZXhwYW5kX21vcmU8L3NwYW4+XHJcblxyXG5cclxuICAgIDwhLS0gPHNwYW4gY2xhc3M9XCJzdXJmYWNlLTMwMCBzaGFkb3ctNCBwLTEgbS0yIGJvcmRlci1jaXJjbGUgbWF0ZXJpYWwtaWNvbnMgY3Vyc29yLXBvaW50ZXJcIlxyXG4gICAgICAoY2xpY2spPVwiY29tcGFjdFN3YXAoKVwiIHBUb29sdGlwPVwiQ29tcGFjdGFyXCI+Y2FjaGVkPC9zcGFuPiAtLT5cclxuXHJcbiAgICA8c3BhbiBjbGFzcz1cIm1hdGVyaWFsLWljb25zIHN1cmZhY2UtMzAwIHNoYWRvdy00IHAtMSBtLTIgYm9yZGVyLWNpcmNsZSBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgIChjbGljayk9XCJjaGFydC5maXQoKS5yZW5kZXIoKVwiIHBUb29sdGlwPVwiQ2VudHJhbGl6YXJcIj5cclxuICAgICAgZmlsdGVyX2NlbnRlcl9mb2N1c1xyXG4gICAgPC9zcGFuPlxyXG5cclxuICAgIDxzcGFuIGNsYXNzPVwibWF0ZXJpYWwtaWNvbnMgc3VyZmFjZS0zMDAgc2hhZG93LTQgcC0xIG0tMiBib3JkZXItY2lyY2xlIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgKGNsaWNrKT1cImNoYXJ0LmZ1bGxzY3JlZW4oJyNjaGFydENvbnRhaW5lcicpXCIgcFRvb2x0aXA9XCJUZWxhIGNoZWlhXCIgPlxyXG4gICAgICBmdWxsc2NyZWVuXHJcbiAgICA8L3NwYW4+XHJcblxyXG4gICAgPC9kaXY+XHJcblxyXG5cclxuICA8L2Rpdj5cclxuXHJcblxyXG48L2Rpdj5cclxuXHJcblxyXG48bGlua1xyXG4gIHJlbD1cInN0eWxlc2hlZXRcIlxyXG4gIGhyZWY9XCJodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2ljb24/ZmFtaWx5PU1hdGVyaWFsK0ljb25zXCJcclxuLz5cclxuXHJcbjxsaW5rXHJcbiAgcmVsPVwic3R5bGVzaGVldFwiXHJcbiAgaHJlZj1cImh0dHBzOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzMj9mYW1pbHk9TWF0ZXJpYWwrU3ltYm9scytPdXRsaW5lZDpvcHN6LHdnaHQsRklMTCxHUkFEQDQ4LDQwMCwwLDBcIlxyXG4vPlxyXG4iXX0=