ngx-bimplus-components 0.0.152 → 0.0.154
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/esm2022/lib/components/bimplus-connection-designer/bimplus-connection-designer.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-connection-designer-results/bimplus-connection-designer-results.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-object-navigator/bimplus-object-navigator.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-object-navigator/criteria-select-object-properties/criteria-select-object-properties.component.mjs +3 -3
- package/esm2022/lib/components/bimplus-tool-hub/bimplus-tool-hub.component.mjs +9 -8
- package/fesm2022/ngx-bimplus-components.mjs +16 -15
- package/fesm2022/ngx-bimplus-components.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -213,11 +213,11 @@ export class CriteriaSelectObjectPropertiesComponent extends BimplusLocalizedWid
|
|
|
213
213
|
});
|
|
214
214
|
}
|
|
215
215
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CriteriaSelectObjectPropertiesComponent, deps: [{ token: i1.TranslateService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
216
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: CriteriaSelectObjectPropertiesComponent, isStandalone: true, selector: "lib-criteria-select-object-properties", inputs: { api: "api", rootObjectId: "rootObjectId", revision: "revision", filterCriteria: "filterCriteria" }, outputs: { filterCriteriaChange: "filterCriteriaChange" }, usesInheritance: true, ngImport: i0, template: "<!-- Object structure-->\r\n<lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\"> {{\"_Object structure\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n @if(objectStructure){\r\n <lib-bimplus-object-structure\r\n [objectStructure]=\"objectStructure\"\r\n (nodeSelected)=\"handleObjectStructureNodeSelected($event)\"\r\n >\r\n </lib-bimplus-object-structure> \r\n }\r\n</lib-expansion-panel>\r\n<!-- End Object structure-->\r\n\r\n<!-- Complex properties-->\r\n@if(complexProperties){ \r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\"> {{\"_Object multiproperties tree\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n <lib-bimplus-object-complex-properties\r\n [complexProperties]=\"complexProperties\"\r\n (nodeSelected)=\"handleComplexPropertyNodeSelected($event)\"\r\n >\r\n </lib-bimplus-object-complex-properties> \r\n </lib-expansion-panel>\r\n}\r\n<!-- End Complex properties-->\r\n\r\n<!-- Properties list-->\r\n@if(objectAttributeGroups.length > 0){ \r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\"> {{\"_Object properties\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n\r\n @for (attribGroup of objectAttributeGroups; track attribGroup) {\r\n <lib-expansion-panel [expanded]=\"attribGroup.expanded\">\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-group-header\"> {{attribGroup.name}}</span>\r\n </lib-expansion-panel-header>\r\n <div>\r\n @for (attrib of attribGroup.attributes; track attrib) {\r\n <div class=\"criteria-select-object-properties-attrib-row\">\r\n <div class=\"criteria-select-object-properties-attrib-row-content\">\r\n <div class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\">\r\n <label class=\"criteria-select-object-properties-attrib-row-cell-label\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"attrib.checked\"\r\n [disabled]=\"filterCriteria.length === MaxFilterCriteria && !attrib.checked\"\r\n (click)=\"toggleAttribute(attrib)\"\r\n (keypress)=\"toggleAttribute(attrib)\"\r\n >\r\n <span></span>\r\n </label>\r\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">{{attrib.name}}</div>\r\n </div>\r\n <div class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\">\r\n <label class=\"criteria-select-object-properties-attrib-row-cell-label\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"attrib.valueChecked\"\r\n [disabled]=\"filterCriteria.length === MaxFilterCriteria && !attrib.checked\"\r\n (click)=\"toggleAttributeValue(attrib)\"\r\n (keypress)=\"toggleAttributeValue(attrib)\"\r\n >\r\n <span></span>\r\n </label>\r\n @if(attrib.value){\r\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">{{attrib.value}}</div>\r\n }@else {\r\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">...</div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </lib-expansion-panel> \r\n }\r\n </lib-expansion-panel>\r\n}\r\n<!-- End Properties list-->", styles: [".criteria-select-object-properties-header{font-weight:700;text-transform:uppercase;font-size:1.4rem}.criteria-select-object-properties-group-header{line-height:2.4rem}.criteria-select-object-properties-attrib-row{display:flex;width:calc(100% - 2rem);flex-direction:row;flex-wrap:nowrap;overflow:hidden;padding-left:2rem}.criteria-select-object-properties-attrib-row:hover{background-color:var(--object-navigator-criteria-select-object-properties-attribute-row-background-color-hovered)}.criteria-select-object-properties-attrib-row-content{display:inline-flex;width:100%}.criteria-select-object-properties-attrib-row-cell{flex-basis:50%;display:flex;overflow:hidden;text-overflow:ellipsis}.criteria-select-object-properties-attrib-row-cell-label{display:inline-flex}.criteria-select-object-properties-attrib-row-cell-text{overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}.criteria-select-checkbox input{display:none}.criteria-select-checkbox input:checked+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%230066CC\"/>%0D%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0D%0A</svg>%0D%0A')}.criteria-select-checkbox input:checked+span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23005BB6\"/>%0D%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0D%0A</svg>%0D%0A')}.criteria-select-checkbox input:checked:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23D3D3D3\"/>%0D%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0D%0A</svg>%0D%0A')}.criteria-select-checkbox input:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%23D3D3D3\"/>%0D%0A</svg>%0D%0A')}.criteria-select-checkbox span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%238D8D8D\"/>%0D%0A</svg>%0D%0A');width:1.8rem;height:1.8rem;margin-top:.1rem;vertical-align:middle;border:0;background-color:transparent;background-position:-.3rem center;background-size:100% 100%;background-repeat:no-repeat}.criteria-select-checkbox span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"%23F5F5F5\" stroke=\"%238D8D8D\"/>%0D%0A</svg>%0D%0A')}\n"], dependencies: [{ kind: "component", type: ExpansionPanelHeaderComponent, selector: "lib-expansion-panel-header" }, { kind: "component", type: ExpansionPanelComponent, selector: "lib-expansion-panel", inputs: ["expanded"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: BimplusObjectStructureComponent, selector: "lib-bimplus-object-structure", inputs: ["objectStructure"], outputs: ["nodeSelected"] }, { kind: "component", type: BimplusObjectComplexPropertiesComponent, selector: "lib-bimplus-object-complex-properties", inputs: ["complexProperties"], outputs: ["nodeSelected"] }] }); }
|
|
216
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.12", type: CriteriaSelectObjectPropertiesComponent, isStandalone: true, selector: "lib-criteria-select-object-properties", inputs: { api: "api", rootObjectId: "rootObjectId", revision: "revision", filterCriteria: "filterCriteria" }, outputs: { filterCriteriaChange: "filterCriteriaChange" }, usesInheritance: true, ngImport: i0, template: "<!-- Object structure-->\r\n<lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\"> {{\"_Object structure\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n @if(objectStructure){\r\n <lib-bimplus-object-structure\r\n [objectStructure]=\"objectStructure\"\r\n (nodeSelected)=\"handleObjectStructureNodeSelected($event)\"\r\n >\r\n </lib-bimplus-object-structure> \r\n }\r\n</lib-expansion-panel>\r\n<!-- End Object structure-->\r\n\r\n<!-- Complex properties-->\r\n@if(complexProperties){ \r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\"> {{\"_Object multiproperties tree\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n <lib-bimplus-object-complex-properties\r\n [complexProperties]=\"complexProperties\"\r\n (nodeSelected)=\"handleComplexPropertyNodeSelected($event)\"\r\n >\r\n </lib-bimplus-object-complex-properties> \r\n </lib-expansion-panel>\r\n}\r\n<!-- End Complex properties-->\r\n\r\n<!-- Properties list-->\r\n@if(objectAttributeGroups.length > 0){ \r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\"> {{\"_Object properties\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n\r\n @for (attribGroup of objectAttributeGroups; track attribGroup) {\r\n <lib-expansion-panel [expanded]=\"attribGroup.expanded\">\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-group-header\"> {{attribGroup.name}}</span>\r\n </lib-expansion-panel-header>\r\n <div>\r\n @for (attrib of attribGroup.attributes; track attrib) {\r\n <div class=\"criteria-select-object-properties-attrib-row\">\r\n <div class=\"criteria-select-object-properties-attrib-row-content\">\r\n <div class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\">\r\n <label class=\"criteria-select-object-properties-attrib-row-cell-label\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"attrib.checked\"\r\n [disabled]=\"filterCriteria.length === MaxFilterCriteria && !attrib.checked\"\r\n (click)=\"toggleAttribute(attrib)\"\r\n (keypress)=\"toggleAttribute(attrib)\"\r\n >\r\n <span></span>\r\n </label>\r\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">{{attrib.name}}</div>\r\n </div>\r\n <div class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\">\r\n <label class=\"criteria-select-object-properties-attrib-row-cell-label\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"attrib.valueChecked\"\r\n [disabled]=\"filterCriteria.length === MaxFilterCriteria && !attrib.checked\"\r\n (click)=\"toggleAttributeValue(attrib)\"\r\n (keypress)=\"toggleAttributeValue(attrib)\"\r\n >\r\n <span></span>\r\n </label>\r\n @if(attrib.value){\r\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">{{attrib.value}}</div>\r\n }@else {\r\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">...</div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </lib-expansion-panel> \r\n }\r\n </lib-expansion-panel>\r\n}\r\n<!-- End Properties list-->", styles: [".criteria-select-object-properties-header{font-weight:700;text-transform:uppercase;font-size:1.4rem}.criteria-select-object-properties-group-header{line-height:2.4rem}.criteria-select-object-properties-attrib-row{display:flex;width:calc(100% - 2rem);flex-direction:row;flex-wrap:nowrap;overflow:hidden;padding-left:2rem}.criteria-select-object-properties-attrib-row:hover{background-color:var(--object-navigator-criteria-select-object-properties-attribute-row-background-color-hovered)}.criteria-select-object-properties-attrib-row-content{display:inline-flex;width:100%}.criteria-select-object-properties-attrib-row-cell{flex-basis:50%;display:flex;overflow:hidden;text-overflow:ellipsis}.criteria-select-object-properties-attrib-row-cell-label{display:inline-flex}.criteria-select-object-properties-attrib-row-cell-text{overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}.criteria-select-checkbox input{display:none}.criteria-select-checkbox input:checked+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%230066CC\"/>%0D%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0D%0A</svg>%0D%0A')}.criteria-select-checkbox input:checked+span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23005BB6\"/>%0D%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0D%0A</svg>%0D%0A')}.criteria-select-checkbox input:checked:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23D3D3D3\"/>%0D%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0D%0A</svg>%0D%0A')}.criteria-select-checkbox input:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%23D3D3D3\"/>%0D%0A</svg>%0D%0A')}.criteria-select-checkbox span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%238D8D8D\"/>%0D%0A</svg>%0D%0A');width:1.8rem;height:1.8rem;margin-top:.1rem;vertical-align:middle;border:0;background-color:transparent;background-position:-.3rem center;background-size:100% 100%;background-repeat:no-repeat}.criteria-select-checkbox span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"%23F5F5F5\" stroke=\"%238D8D8D\"/>%0D%0A</svg>%0D%0A')}lib-bimplus-object-structure{--flat-tree-container-background-color-enabled: transparent}\n"], dependencies: [{ kind: "component", type: ExpansionPanelHeaderComponent, selector: "lib-expansion-panel-header" }, { kind: "component", type: ExpansionPanelComponent, selector: "lib-expansion-panel", inputs: ["expanded"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: BimplusObjectStructureComponent, selector: "lib-bimplus-object-structure", inputs: ["objectStructure"], outputs: ["nodeSelected"] }, { kind: "component", type: BimplusObjectComplexPropertiesComponent, selector: "lib-bimplus-object-complex-properties", inputs: ["complexProperties"], outputs: ["nodeSelected"] }] }); }
|
|
217
217
|
}
|
|
218
218
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: CriteriaSelectObjectPropertiesComponent, decorators: [{
|
|
219
219
|
type: Component,
|
|
220
|
-
args: [{ selector: 'lib-criteria-select-object-properties', standalone: true, imports: [ExpansionPanelHeaderComponent, ExpansionPanelComponent, TranslateModule, BimplusObjectStructureComponent, BimplusObjectComplexPropertiesComponent], template: "<!-- Object structure-->\r\n<lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\"> {{\"_Object structure\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n @if(objectStructure){\r\n <lib-bimplus-object-structure\r\n [objectStructure]=\"objectStructure\"\r\n (nodeSelected)=\"handleObjectStructureNodeSelected($event)\"\r\n >\r\n </lib-bimplus-object-structure> \r\n }\r\n</lib-expansion-panel>\r\n<!-- End Object structure-->\r\n\r\n<!-- Complex properties-->\r\n@if(complexProperties){ \r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\"> {{\"_Object multiproperties tree\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n <lib-bimplus-object-complex-properties\r\n [complexProperties]=\"complexProperties\"\r\n (nodeSelected)=\"handleComplexPropertyNodeSelected($event)\"\r\n >\r\n </lib-bimplus-object-complex-properties> \r\n </lib-expansion-panel>\r\n}\r\n<!-- End Complex properties-->\r\n\r\n<!-- Properties list-->\r\n@if(objectAttributeGroups.length > 0){ \r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\"> {{\"_Object properties\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n\r\n @for (attribGroup of objectAttributeGroups; track attribGroup) {\r\n <lib-expansion-panel [expanded]=\"attribGroup.expanded\">\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-group-header\"> {{attribGroup.name}}</span>\r\n </lib-expansion-panel-header>\r\n <div>\r\n @for (attrib of attribGroup.attributes; track attrib) {\r\n <div class=\"criteria-select-object-properties-attrib-row\">\r\n <div class=\"criteria-select-object-properties-attrib-row-content\">\r\n <div class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\">\r\n <label class=\"criteria-select-object-properties-attrib-row-cell-label\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"attrib.checked\"\r\n [disabled]=\"filterCriteria.length === MaxFilterCriteria && !attrib.checked\"\r\n (click)=\"toggleAttribute(attrib)\"\r\n (keypress)=\"toggleAttribute(attrib)\"\r\n >\r\n <span></span>\r\n </label>\r\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">{{attrib.name}}</div>\r\n </div>\r\n <div class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\">\r\n <label class=\"criteria-select-object-properties-attrib-row-cell-label\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"attrib.valueChecked\"\r\n [disabled]=\"filterCriteria.length === MaxFilterCriteria && !attrib.checked\"\r\n (click)=\"toggleAttributeValue(attrib)\"\r\n (keypress)=\"toggleAttributeValue(attrib)\"\r\n >\r\n <span></span>\r\n </label>\r\n @if(attrib.value){\r\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">{{attrib.value}}</div>\r\n }@else {\r\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">...</div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </lib-expansion-panel> \r\n }\r\n </lib-expansion-panel>\r\n}\r\n<!-- End Properties list-->", styles: [".criteria-select-object-properties-header{font-weight:700;text-transform:uppercase;font-size:1.4rem}.criteria-select-object-properties-group-header{line-height:2.4rem}.criteria-select-object-properties-attrib-row{display:flex;width:calc(100% - 2rem);flex-direction:row;flex-wrap:nowrap;overflow:hidden;padding-left:2rem}.criteria-select-object-properties-attrib-row:hover{background-color:var(--object-navigator-criteria-select-object-properties-attribute-row-background-color-hovered)}.criteria-select-object-properties-attrib-row-content{display:inline-flex;width:100%}.criteria-select-object-properties-attrib-row-cell{flex-basis:50%;display:flex;overflow:hidden;text-overflow:ellipsis}.criteria-select-object-properties-attrib-row-cell-label{display:inline-flex}.criteria-select-object-properties-attrib-row-cell-text{overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}.criteria-select-checkbox input{display:none}.criteria-select-checkbox input:checked+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%230066CC\"/>%0D%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0D%0A</svg>%0D%0A')}.criteria-select-checkbox input:checked+span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23005BB6\"/>%0D%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0D%0A</svg>%0D%0A')}.criteria-select-checkbox input:checked:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23D3D3D3\"/>%0D%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0D%0A</svg>%0D%0A')}.criteria-select-checkbox input:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%23D3D3D3\"/>%0D%0A</svg>%0D%0A')}.criteria-select-checkbox span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%238D8D8D\"/>%0D%0A</svg>%0D%0A');width:1.8rem;height:1.8rem;margin-top:.1rem;vertical-align:middle;border:0;background-color:transparent;background-position:-.3rem center;background-size:100% 100%;background-repeat:no-repeat}.criteria-select-checkbox span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"%23F5F5F5\" stroke=\"%238D8D8D\"/>%0D%0A</svg>%0D%0A')}\n"] }]
|
|
220
|
+
args: [{ selector: 'lib-criteria-select-object-properties', standalone: true, imports: [ExpansionPanelHeaderComponent, ExpansionPanelComponent, TranslateModule, BimplusObjectStructureComponent, BimplusObjectComplexPropertiesComponent], template: "<!-- Object structure-->\r\n<lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\"> {{\"_Object structure\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n @if(objectStructure){\r\n <lib-bimplus-object-structure\r\n [objectStructure]=\"objectStructure\"\r\n (nodeSelected)=\"handleObjectStructureNodeSelected($event)\"\r\n >\r\n </lib-bimplus-object-structure> \r\n }\r\n</lib-expansion-panel>\r\n<!-- End Object structure-->\r\n\r\n<!-- Complex properties-->\r\n@if(complexProperties){ \r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\"> {{\"_Object multiproperties tree\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n <lib-bimplus-object-complex-properties\r\n [complexProperties]=\"complexProperties\"\r\n (nodeSelected)=\"handleComplexPropertyNodeSelected($event)\"\r\n >\r\n </lib-bimplus-object-complex-properties> \r\n </lib-expansion-panel>\r\n}\r\n<!-- End Complex properties-->\r\n\r\n<!-- Properties list-->\r\n@if(objectAttributeGroups.length > 0){ \r\n <lib-expansion-panel>\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-header\"> {{\"_Object properties\" | translate}}</span>\r\n </lib-expansion-panel-header>\r\n\r\n @for (attribGroup of objectAttributeGroups; track attribGroup) {\r\n <lib-expansion-panel [expanded]=\"attribGroup.expanded\">\r\n <lib-expansion-panel-header>\r\n <span class=\"criteria-select-object-properties-group-header\"> {{attribGroup.name}}</span>\r\n </lib-expansion-panel-header>\r\n <div>\r\n @for (attrib of attribGroup.attributes; track attrib) {\r\n <div class=\"criteria-select-object-properties-attrib-row\">\r\n <div class=\"criteria-select-object-properties-attrib-row-content\">\r\n <div class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\">\r\n <label class=\"criteria-select-object-properties-attrib-row-cell-label\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"attrib.checked\"\r\n [disabled]=\"filterCriteria.length === MaxFilterCriteria && !attrib.checked\"\r\n (click)=\"toggleAttribute(attrib)\"\r\n (keypress)=\"toggleAttribute(attrib)\"\r\n >\r\n <span></span>\r\n </label>\r\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">{{attrib.name}}</div>\r\n </div>\r\n <div class=\"criteria-select-object-properties-attrib-row-cell criteria-select-checkbox\">\r\n <label class=\"criteria-select-object-properties-attrib-row-cell-label\">\r\n <input\r\n type=\"checkbox\"\r\n [checked]=\"attrib.valueChecked\"\r\n [disabled]=\"filterCriteria.length === MaxFilterCriteria && !attrib.checked\"\r\n (click)=\"toggleAttributeValue(attrib)\"\r\n (keypress)=\"toggleAttributeValue(attrib)\"\r\n >\r\n <span></span>\r\n </label>\r\n @if(attrib.value){\r\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">{{attrib.value}}</div>\r\n }@else {\r\n <div class=\"criteria-select-object-properties-attrib-row-cell-text\">...</div>\r\n }\r\n </div>\r\n </div>\r\n </div>\r\n }\r\n </div>\r\n </lib-expansion-panel> \r\n }\r\n </lib-expansion-panel>\r\n}\r\n<!-- End Properties list-->", styles: [".criteria-select-object-properties-header{font-weight:700;text-transform:uppercase;font-size:1.4rem}.criteria-select-object-properties-group-header{line-height:2.4rem}.criteria-select-object-properties-attrib-row{display:flex;width:calc(100% - 2rem);flex-direction:row;flex-wrap:nowrap;overflow:hidden;padding-left:2rem}.criteria-select-object-properties-attrib-row:hover{background-color:var(--object-navigator-criteria-select-object-properties-attribute-row-background-color-hovered)}.criteria-select-object-properties-attrib-row-content{display:inline-flex;width:100%}.criteria-select-object-properties-attrib-row-cell{flex-basis:50%;display:flex;overflow:hidden;text-overflow:ellipsis}.criteria-select-object-properties-attrib-row-cell-label{display:inline-flex}.criteria-select-object-properties-attrib-row-cell-text{overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}.criteria-select-checkbox input{display:none}.criteria-select-checkbox input:checked+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%230066CC\"/>%0D%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0D%0A</svg>%0D%0A')}.criteria-select-checkbox input:checked+span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23005BB6\"/>%0D%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0D%0A</svg>%0D%0A')}.criteria-select-checkbox input:checked:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3\" y=\"3\" width=\"12\" height=\"12\" fill=\"%23D3D3D3\"/>%0D%0A<path d=\"M13.0226 7.41421L11.6855 6L8.3428 9.5356L6.33707 7.41416L5 8.82837L8.34269 12.3639L13.0226 7.41421Z\" fill=\"white\"/>%0D%0A</svg>%0D%0A')}.criteria-select-checkbox input:disabled+span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%23D3D3D3\"/>%0D%0A</svg>%0D%0A')}.criteria-select-checkbox span{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"white\" stroke=\"%238D8D8D\"/>%0D%0A</svg>%0D%0A');width:1.8rem;height:1.8rem;margin-top:.1rem;vertical-align:middle;border:0;background-color:transparent;background-position:-.3rem center;background-size:100% 100%;background-repeat:no-repeat}.criteria-select-checkbox span:hover{background-image:url('data:image/svg+xml,<svg width=\"18\" height=\"18\" viewBox=\"0 0 18 18\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">%0D%0A<rect x=\"3.5\" y=\"3.5\" width=\"11\" height=\"11\" fill=\"%23F5F5F5\" stroke=\"%238D8D8D\"/>%0D%0A</svg>%0D%0A')}lib-bimplus-object-structure{--flat-tree-container-background-color-enabled: transparent}\n"] }]
|
|
221
221
|
}], ctorParameters: () => [{ type: i1.TranslateService }], propDecorators: { api: [{
|
|
222
222
|
type: Input
|
|
223
223
|
}], rootObjectId: [{
|
|
@@ -229,4 +229,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
|
229
229
|
}], filterCriteriaChange: [{
|
|
230
230
|
type: Output
|
|
231
231
|
}] } });
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMvY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMvY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFDcEgsT0FBTyxFQUFFLGVBQWUsRUFBb0IsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUM5RyxPQUFPLEVBQW1CLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0YsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFDcEgsT0FBTyxFQUFFLHVDQUF1QyxFQUFF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QUEwQixDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUN2RixDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7K0dBdFFVLHVDQUF1QzttR0FBdkMsdUNBQXVDLGlTQ3JCcEQseTNIQW9GMkIsZ3lHRG5FZCw2QkFBNkIsdUVBQUUsdUJBQXVCLHFGQUFFLGVBQWUsNEZBQUUsK0JBQStCLGlJQUFFLHVDQUF1Qzs7NEZBSWpKLHVDQUF1QztrQkFQbkQsU0FBUzsrQkFDRSx1Q0FBdUMsY0FDckMsSUFBSSxXQUNQLENBQUUsNkJBQTZCLEVBQUUsdUJBQXVCLEVBQUUsZUFBZSxFQUFFLCtCQUErQixFQUFFLHVDQUF1QyxDQUFDO3FGQTZCN0osR0FBRztzQkFERixLQUFLO2dCQUlGLFlBQVk7c0JBRGYsS0FBSztnQkFhTixRQUFRO3NCQURQLEtBQUs7Z0JBY0YsY0FBYztzQkFEakIsS0FBSztnQkFNSSxvQkFBb0I7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIFdlYlNkayBmcm9tICdiaW1wbHVzLXdlYnNkayc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBCaW1wbHVzTG9jYWxpemVkV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmltcGx1cy1sb2NhbGl6ZWQtd2lkZ2V0L2JpbXBsdXMtbG9jYWxpemVkLXdpZGdldC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgRXhwYW5zaW9uUGFuZWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEV4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZXhwYW5zaW9uLXBhbmVsLWhlYWRlci9leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbHRlckNyaXRlcml1bSwgTWF4RmlsdGVyQ3JpdGVyaWEgfSBmcm9tICcuLi9iaW1wbHVzLW9iamVjdC1uYXZpZ2F0b3IuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQmltcGx1c09iamVjdFN0cnVjdHVyZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2JpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZS9iaW1wbHVzLW9iamVjdC1zdHJ1Y3R1cmUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmltcGx1c09iamVjdENvbXBsZXhQcm9wZXJ0aWVzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzL2JpbXBsdXMtb2JqZWN0LWNvbXBsZXgtcHJvcGVydGllcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBPYmplY3RTdHJ1Y3R1cmVOb2RlLCBPYmplY3RTdHJ1Y3R1cmVOb2RlQnVpbGRlciB9IGZyb20gJy4uLy4uL2JpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZS9iaW1wbHVzLW9iamVjdC1zdHJ1Y3R1cmUuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQ29tcGxleFByb3BlcnRpZXNOb2RlLCBDb21wbGV4UHJvcGVydGllc05vZGVCdWlsZGVyIH0gZnJvbSAnLi4vLi4vYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzL2JpbXBsdXMtb2JqZWN0LWNvbXBsZXgtcHJvcGVydGllcy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBPYmplY3RBdHRyaWJ1dGUsIE9iamVjdEF0dHJpYnV0ZUdyb3VwIH0gZnJvbSAnLi9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMuaW50ZXJmYWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbIEV4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50LCBFeHBhbnNpb25QYW5lbENvbXBvbmVudCwgVHJhbnNsYXRlTW9kdWxlLCBCaW1wbHVzT2JqZWN0U3RydWN0dXJlQ29tcG9uZW50LCBCaW1wbHVzT2JqZWN0Q29tcGxleFByb3BlcnRpZXNDb21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMuY29tcG9uZW50Lmxlc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDcml0ZXJpYVNlbGVjdE9iamVjdFByb3BlcnRpZXNDb21wb25lbnQgZXh0ZW5kcyBCaW1wbHVzTG9jYWxpemVkV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IodHJhbnNsYXRlU2VydmljZTogIFRyYW5zbGF0ZVNlcnZpY2Upe1xyXG4gICAgc3VwZXIodHJhbnNsYXRlU2VydmljZSkgIFxyXG4gIH1cclxuICBcclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuX2N1cnJlbnRQcm9wZXJ0aWVzT2JqZWN0SWQkLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChpZCkgPT4ge1xyXG4gICAgICAgIGlmKGlkKXtcclxuICAgICAgICAgIHRoaXMuX2NyZWF0ZU9iamVjdFByb3BlcnRpZXMoaWQsIHRoaXMucmV2aXNpb24pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9jdXJyZW50T2JqZWN0SWQkLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChpZCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX2N1cnJlbnRQcm9wZXJ0aWVzT2JqZWN0SWQkLm5leHQoaWQpO1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZUNvbXBsZXhQcm9wZXJ0aWVzdHJ1Y3R1cmUoaWQsIHRoaXMucmV2aXNpb24pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGFwaSA6IFdlYlNkay5BcGkgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgcm9vdE9iamVjdElkKGlkIDogc3RyaW5nKXtcclxuICAgIHRoaXMuX2N1cnJlbnRPYmplY3RJZCQubmV4dChpZCk7XHJcbiAgICB0aGlzLl9jcmVhdGVPYmplY3RTdHJ1Y3R1cmUoaWQsIHRoaXMucmV2aXNpb24pO1xyXG4gICAgXHJcbiAgICB0aGlzLl9yb290T2JqZWN0SWQgPSBpZDtcclxuICB9XHJcblxyXG4gIGdldCByb290T2JqZWN0SWQoKSA6IHN0cmluZ3tcclxuICAgIHJldHVybiB0aGlzLl9yb290T2JqZWN0SWQ7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHJldmlzaW9uIDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIFxyXG4gIHByaXZhdGUgX2N1cnJlbnRPYmplY3RJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gKFwiXCIpO1xyXG5cclxuICBwcml2YXRlIF9jdXJyZW50UHJvcGVydGllc09iamVjdElkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiAoXCJcIik7XHJcblxyXG4gIG9iamVjdEF0dHJpYnV0ZUdyb3VwcyA6IE9iamVjdEF0dHJpYnV0ZUdyb3VwW10gPSBbXTtcclxuXHJcbiAgTWF4RmlsdGVyQ3JpdGVyaWEgPSBNYXhGaWx0ZXJDcml0ZXJpYTsgLy8gRm9yIGV4cG9zdXJlIHRvIHRlbXBsYXRlXHJcblxyXG4gIHByaXZhdGUgX3Jvb3RPYmplY3RJZCA6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGZpbHRlckNyaXRlcmlhKGNyaXRlcmlhIDogRmlsdGVyQ3JpdGVyaXVtW10pe1xyXG4gICAgdGhpcy5fZmlsdGVyQ3JpdGVyaWEgPSBjcml0ZXJpYTtcclxuICAgIHRoaXMuX3N5bmNBdHRyaWJ1dGVTdGF0ZXNGcm9tQ3JpdGVyaWEoKTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBmaWx0ZXJDcml0ZXJpYUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdGVyQ3JpdGVyaXVtW10+KCk7XHJcblxyXG4gIGdldCBmaWx0ZXJDcml0ZXJpYSgpe1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckNyaXRlcmlhO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZmlsdGVyQ3JpdGVyaWEgOiBGaWx0ZXJDcml0ZXJpdW1bXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIF9vYmplY3RTdHJ1Y3R1cmUgOiBPYmplY3RTdHJ1Y3R1cmVOb2RlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICBnZXQgb2JqZWN0U3RydWN0dXJlKCk6IE9iamVjdFN0cnVjdHVyZU5vZGUgfCBudWxse1xyXG4gICAgcmV0dXJuIHRoaXMuX29iamVjdFN0cnVjdHVyZVxyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIF9jb21wbGV4UHJvcGVydGllcyA6IENvbXBsZXhQcm9wZXJ0aWVzTm9kZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgZ2V0IGNvbXBsZXhQcm9wZXJ0aWVzKCkgOiBDb21wbGV4UHJvcGVydGllc05vZGUgfCBudWxse1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbXBsZXhQcm9wZXJ0aWVzO1xyXG4gICB9XHJcblxyXG4gIHRvZ2dsZUF0dHJpYnV0ZShhdHRyaWIgOiBPYmplY3RBdHRyaWJ1dGUpe1xyXG4gICAgYXR0cmliLmNoZWNrZWQgPSAhYXR0cmliLmNoZWNrZWQ7XHJcbiAgICBpZihhdHRyaWIuY2hlY2tlZCA9PT0gZmFsc2Upe1xyXG4gICAgICBhdHRyaWIudmFsdWVDaGVja2VkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oYW5kbGVGaWx0ZXJDcml0ZXJpdW1BdHRyaWJ1dGVTdGF0ZUNoYW5nZShhdHRyaWIpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQXR0cmlidXRlVmFsdWUoYXR0cmliIDogT2JqZWN0QXR0cmlidXRlKXtcclxuICAgIGF0dHJpYi52YWx1ZUNoZWNrZWQgPSAhYXR0cmliLnZhbHVlQ2hlY2tlZDtcclxuICAgIGF0dHJpYi5jaGVja2VkID0gYXR0cmliLnZhbHVlQ2hlY2tlZDtcclxuXHJcbiAgICB0aGlzLmhhbmRsZUZpbHRlckNyaXRlcml1bUF0dHJpYnV0ZVN0YXRlQ2hhbmdlKGF0dHJpYik7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVGaWx0ZXJDcml0ZXJpdW1BdHRyaWJ1dGVTdGF0ZUNoYW5nZShhdHRyaWIgOiBPYmplY3RBdHRyaWJ1dGUpe1xyXG4gICAgXHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZmlsdGVyQ3JpdGVyaWEuZmluZEluZGV4KHg9PnguaWQgPT09IGF0dHJpYi5pZCk7XHJcbiAgICBpZihpbmRleD49MCl7XHJcbiAgICAgIGlmKGF0dHJpYi5jaGVja2VkID09PSBmYWxzZSB8fCBhdHRyaWIudmFsdWVDaGVja2VkID09PSBmYWxzZSl7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJDcml0ZXJpYS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWFDaGFuZ2UuZW1pdCh0aGlzLmZpbHRlckNyaXRlcmlhKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLmZpbHRlckNyaXRlcmlhLmxlbmd0aCA8IE1heEZpbHRlckNyaXRlcmlhKXtcclxuXHJcbiAgICAgICAgbGV0IHN1YnN0cmluZyA9IGBbSV1bJHthdHRyaWIuaWR9XS5WYWx1ZWA7XHJcblxyXG4gICAgICAgIGlmKGF0dHJpYi52YWx1ZUNoZWNrZWQpe1xyXG4gICAgICAgICAgc3Vic3RyaW5nICs9IGBbRl1bMF09JHthdHRyaWIudmFsdWV9YDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWEucHVzaCh7XHJcbiAgICAgICAgICBuYW1lIDogYXR0cmliLm5hbWUsXHJcbiAgICAgICAgICB2YWx1ZSA6IGF0dHJpYi52YWx1ZUNoZWNrZWQgPyBhdHRyaWIudmFsdWUgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICBpZCA6IGF0dHJpYi5pZCxcclxuICAgICAgICAgIHN1YlN0cmluZyA6IHN1YnN0cmluZ1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmZpbHRlckNyaXRlcmlhQ2hhbmdlLmVtaXQodGhpcy5maWx0ZXJDcml0ZXJpYSk7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZU9iamVjdFN0cnVjdHVyZU5vZGVTZWxlY3RlZChub2RlIDogT2JqZWN0U3RydWN0dXJlTm9kZSl7XHJcbiAgICB0aGlzLl9jdXJyZW50T2JqZWN0SWQkLm5leHQobm9kZS5pZCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDb21wbGV4UHJvcGVydHlOb2RlU2VsZWN0ZWQobm9kZSA6IENvbXBsZXhQcm9wZXJ0aWVzTm9kZSl7XHJcbiAgICB0aGlzLl9jdXJyZW50UHJvcGVydGllc09iamVjdElkJC5uZXh0KG5vZGUuaWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlT2JqZWN0UHJvcGVydGllcyhvYmplY3RJZCA6IHN0cmluZywgcmV2aXNpb24gOiBudW1iZXIgfCB1bmRlZmluZWQpe1xyXG4gICAgdGhpcy5fbG9hZE9iamVjdFByb3BlcnRpZXMob2JqZWN0SWQsIHJldmlzaW9uKT8uc3Vic2NyaWJlKHtcclxuICAgICAgICBcclxuICAgICAgICAvLyBwcm9wZXJ0aWVzIHJlc3BvbnNlIGlzIGJhZGx5IHN0cnVjdHVyZWQsIG5lYXJseSBpbXBvc3NpYmxlIHRvIGNyZWF0ZSBjbGFzcyBzdHJ1Y3R1cmUgZnJvbSBpdC4gVGhlcmVmb3JlIHVzaW5nIHNob3J0Y3V0XHJcbiAgICAgICAgLy8gYW55IGZvciBqc29uIHJlc3BvbnNlXHJcblxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSAgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIG5leHQ6IChwcm9wZXJ0aWVzRGF0YSA6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vYmplY3RBdHRyaWJ1dGVHcm91cHMgPSB0aGlzLl9jcmVhdGVBdHRyaWJ1dGVHcm91cHNGcm9tUmVzcG9uc2UocHJvcGVydGllc0RhdGEpO1xyXG4gICAgICAgICAgdGhpcy5fc3luY0F0dHJpYnV0ZVN0YXRlc0Zyb21Dcml0ZXJpYSgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+e1xyXG4gICAgICAgICAgdGhpcy5vYmplY3RBdHRyaWJ1dGVHcm91cHMgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIClcclxuXHJcbiAgfVxyXG5cclxuICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgcHJpdmF0ZSBfY3JlYXRlQXR0cmlidXRlR3JvdXBzRnJvbVJlc3BvbnNlKHByb3BlcnRpZXNEYXRhIDogYW55KXtcclxuXHJcbiAgICBjb25zdCBncm91cHMgOiBBcnJheTxPYmplY3RBdHRyaWJ1dGVHcm91cD4gPSBbXTtcclxuICAgIGxldCBsb2NhbGl6ZWRBdHRyaWJHcm91cHMgPSBudWxsO1xyXG4gICAgaWYocHJvcGVydGllc0RhdGEubG9jYWxpemVkQXR0cmlidXRlR3JvdXBzKXtcclxuICAgICAgbG9jYWxpemVkQXR0cmliR3JvdXBzID0gcHJvcGVydGllc0RhdGEubG9jYWxpemVkQXR0cmlidXRlR3JvdXBzO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghcHJvcGVydGllc0RhdGEuYXR0cmlidXRlcyl7XHJcbiAgICAgIHJldHVybiBncm91cHM7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYXR0cmliR3JvdXBzID0gcHJvcGVydGllc0RhdGEuYXR0cmlidXRlcztcclxuICAgIGZvcihjb25zdCBbZ3JvdXBOYW1lLCBhdHRyaWJzT2JqZWN0XSBvZiBPYmplY3QuZW50cmllcyhhdHRyaWJHcm91cHMpKXtcclxuICAgICAgXHJcbiAgICAgIGNvbnN0IG5ld0dyb3VwIDogT2JqZWN0QXR0cmlidXRlR3JvdXAgPSB7XHJcbiAgICAgICAgbmFtZSA6IGdyb3VwTmFtZSxcclxuICAgICAgICBleHBhbmRlZCA6IGZhbHNlLFxyXG4gICAgICAgIGF0dHJpYnV0ZXMgOiBbXVxyXG4gICAgICB9O1xyXG4gICAgICBcclxuICAgICAgaWYobG9jYWxpemVkQXR0cmliR3JvdXBzPy5bZ3JvdXBOYW1lXSl7XHJcbiAgICAgICAgbmV3R3JvdXAubmFtZSA9IGxvY2FsaXplZEF0dHJpYkdyb3Vwc1tncm91cE5hbWVdOyBcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYoIWF0dHJpYnNPYmplY3Qpe1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IoY29uc3QgYXR0cmliIG9mIE9iamVjdC52YWx1ZXMoYXR0cmlic09iamVjdCkpe1xyXG5cclxuICAgICAgICBjb25zdCBuZXdBdHRyaWIgOiBPYmplY3RBdHRyaWJ1dGUgPSB7XHJcbiAgICAgICAgICBpZCA6IGF0dHJpYi5pZCxcclxuICAgICAgICAgIG5hbWUgOiBhdHRyaWIubmFtZSxcclxuICAgICAgICAgIGRlc2NyaXB0aW9uIDogYXR0cmliLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgdmFsdWUgOiBhdHRyaWIudmFsdWUsXHJcbiAgICAgICAgICBjaGVja2VkOiBmYWxzZSxcclxuICAgICAgICAgIHZhbHVlQ2hlY2tlZCA6IGZhbHNlLFxyXG4gICAgICAgICAgZ3JvdXAgOiBhdHRyaWIuZ3JvdXBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG5ld0dyb3VwLmF0dHJpYnV0ZXMucHVzaChuZXdBdHRyaWIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBncm91cHMucHVzaChuZXdHcm91cCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHJldHVybiBncm91cHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zeW5jQXR0cmlidXRlU3RhdGVzRnJvbUNyaXRlcmlhKCl7XHJcbiAgICB0aGlzLm9iamVjdEF0dHJpYnV0ZUdyb3Vwcy5mb3JFYWNoKGdyb3VwPT57XHJcbiAgICAgIGdyb3VwLmF0dHJpYnV0ZXMuZm9yRWFjaChhdHRyaWI9PntcclxuICAgICAgICBjb25zdCBjcml0ZXJpYSA9IHRoaXMuX2ZpbHRlckNyaXRlcmlhLmZpbmQoeD0+eC5pZCA9PSBhdHRyaWIuaWQpXHJcbiAgICAgICAgaWYoY3JpdGVyaWEpe1xyXG4gICAgICAgICAgYXR0cmliLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgICAgYXR0cmliLnZhbHVlQ2hlY2tlZCA9IGNyaXRlcmlhLnZhbHVlICE9PSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICBhdHRyaWIuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgYXR0cmliLnZhbHVlQ2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2FkT2JqZWN0UHJvcGVydGllcyhvYmplY3RJZCA6IHN0cmluZywgcmV2aXNpb24gOiBudW1iZXIgfCB1bmRlZmluZWQpe1xyXG4gICAgaWYoIXRoaXMuYXBpKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmcm9tKHRoaXMuYXBpLm9iamVjdHMuZ2V0KG9iamVjdElkLCByZXZpc2lvbiwgXCI4XCIsIHVuZGVmaW5lZCwgZmFsc2UsIHVuZGVmaW5lZCApKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvYWRPYmplY3RTdHJ1Y3R1cmUob2JqZWN0SWQgOiBzdHJpbmcsIHJldmlzaW9uIDogbnVtYmVyIHwgdW5kZWZpbmVkKXtcclxuICAgIGlmKCF0aGlzLmFwaSl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmFwaS5vYmplY3RzLmdldFRvcG9sb2d5KG9iamVjdElkLCByZXZpc2lvbiwgZmFsc2UsIGZhbHNlLCB1bmRlZmluZWQpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvYWRPYmplY3RDb21wbGV4UHJvcGVydGllc1N0cnVjdHVyZShvYmplY3RJZCA6IHN0cmluZywgcmV2aXNpb24gOiBudW1iZXIgfCB1bmRlZmluZWQpe1xyXG4gICAgaWYoIXRoaXMuYXBpKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmcm9tKHRoaXMuYXBpLm9iamVjdHMuZ2V0Q29tcGxleFByb3BlcnRpZXNUb3BvbG9neShvYmplY3RJZCwgcmV2aXNpb24pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZUNvbXBsZXhQcm9wZXJ0aWVzdHJ1Y3R1cmUob2JqZWN0SWQgOiBzdHJpbmcsIHJldmlzaW9uIDogbnVtYmVyIHwgdW5kZWZpbmVkKXtcclxuICAgIHRoaXMuX2xvYWRPYmplY3RDb21wbGV4UHJvcGVydGllc1N0cnVjdHVyZShvYmplY3RJZCwgcmV2aXNpb24pPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0IDooc3RydWN0dXJlRGF0YSk9PntcclxuICAgICAgICBpZihzdHJ1Y3R1cmVEYXRhKXtcclxuICAgICAgICAgIGNvbnN0IGNvbXBsZXhQcm9wcyA9IENvbXBsZXhQcm9wZXJ0aWVzTm9kZUJ1aWxkZXIuY3JlYXRlRnJvbVJlc3BvbnNlKHN0cnVjdHVyZURhdGEpO1xyXG4gICAgICAgICAgaWYoY29tcGxleFByb3BzPy5jaGlsZHJlbj8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgdGhpcy5fY29tcGxleFByb3BlcnRpZXMgPSBjb21wbGV4UHJvcHM7XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5fY29tcGxleFByb3BlcnRpZXMgPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gICAgXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVPYmplY3RTdHJ1Y3R1cmUob2JqZWN0SWQgOiBzdHJpbmcsIHJldmlzaW9uIDogbnVtYmVyIHwgdW5kZWZpbmVkKXtcclxuICAgIHRoaXMuX2xvYWRPYmplY3RTdHJ1Y3R1cmUob2JqZWN0SWQsIHJldmlzaW9uKT8uc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dCA6KHN0cnVjdHVyZURhdGEpPT57XHJcbiAgICAgICAgaWYoc3RydWN0dXJlRGF0YSl7XHJcbiAgICAgICAgICB0aGlzLl9vYmplY3RTdHJ1Y3R1cmUgPSBPYmplY3RTdHJ1Y3R1cmVOb2RlQnVpbGRlci5jcmVhdGVGcm9tUmVzcG9uc2Uoc3RydWN0dXJlRGF0YSk7XHJcbiAgICAgICAgfSAgICBcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuXHJcbn1cclxuIiwiPCEtLSBPYmplY3Qgc3RydWN0dXJlLS0+XHJcbjxsaWItZXhwYW5zaW9uLXBhbmVsPlxyXG4gIDxsaWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWhlYWRlclwiPiB7e1wiX09iamVjdCBzdHJ1Y3R1cmVcIiB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gIDwvbGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgQGlmKG9iamVjdFN0cnVjdHVyZSl7XHJcbiAgICA8bGliLWJpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZVxyXG4gICAgICBbb2JqZWN0U3RydWN0dXJlXT1cIm9iamVjdFN0cnVjdHVyZVwiXHJcbiAgICAgIChub2RlU2VsZWN0ZWQpPVwiaGFuZGxlT2JqZWN0U3RydWN0dXJlTm9kZVNlbGVjdGVkKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgPC9saWItYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlPiAgXHJcbiAgfVxyXG48L2xpYi1leHBhbnNpb24tcGFuZWw+XHJcbjwhLS0gRW5kIE9iamVjdCBzdHJ1Y3R1cmUtLT5cclxuXHJcbjwhLS0gQ29tcGxleCBwcm9wZXJ0aWVzLS0+XHJcbkBpZihjb21wbGV4UHJvcGVydGllcyl7ICBcclxuICA8bGliLWV4cGFuc2lvbi1wYW5lbD5cclxuICAgIDxsaWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJjcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMtaGVhZGVyXCI+IHt7XCJfT2JqZWN0IG11bHRpcHJvcGVydGllcyB0cmVlXCIgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgIDwvbGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgIDxsaWItYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzXHJcbiAgICAgICAgW2NvbXBsZXhQcm9wZXJ0aWVzXT1cImNvbXBsZXhQcm9wZXJ0aWVzXCJcclxuICAgICAgICAobm9kZVNlbGVjdGVkKT1cImhhbmRsZUNvbXBsZXhQcm9wZXJ0eU5vZGVTZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgICAgPlxyXG4gICAgICA8L2xpYi1iaW1wbHVzLW9iamVjdC1jb21wbGV4LXByb3BlcnRpZXM+ICBcclxuICA8L2xpYi1leHBhbnNpb24tcGFuZWw+XHJcbn1cclxuPCEtLSBFbmQgQ29tcGxleCBwcm9wZXJ0aWVzLS0+XHJcblxyXG48IS0tIFByb3BlcnRpZXMgbGlzdC0tPlxyXG5AaWYob2JqZWN0QXR0cmlidXRlR3JvdXBzLmxlbmd0aCA+IDApeyAgXHJcbiAgPGxpYi1leHBhbnNpb24tcGFuZWw+XHJcbiAgICA8bGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWhlYWRlclwiPiB7e1wiX09iamVjdCBwcm9wZXJ0aWVzXCIgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgIDwvbGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblxyXG4gICAgQGZvciAoYXR0cmliR3JvdXAgb2Ygb2JqZWN0QXR0cmlidXRlR3JvdXBzOyB0cmFjayBhdHRyaWJHcm91cCkge1xyXG4gICAgICA8bGliLWV4cGFuc2lvbi1wYW5lbCBbZXhwYW5kZWRdPVwiYXR0cmliR3JvdXAuZXhwYW5kZWRcIj5cclxuICAgICAgICA8bGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1ncm91cC1oZWFkZXJcIj4ge3thdHRyaWJHcm91cC5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgPC9saWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgQGZvciAoYXR0cmliIG9mIGF0dHJpYkdyb3VwLmF0dHJpYnV0ZXM7IHRyYWNrIGF0dHJpYikge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWF0dHJpYi1yb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWF0dHJpYi1yb3ctY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93LWNlbGwgY3JpdGVyaWEtc2VsZWN0LWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93LWNlbGwtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhdHRyaWIuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmlsdGVyQ3JpdGVyaWEubGVuZ3RoID09PSBNYXhGaWx0ZXJDcml0ZXJpYSAmJiAhYXR0cmliLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUF0dHJpYnV0ZShhdHRyaWIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJ0b2dnbGVBdHRyaWJ1dGUoYXR0cmliKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93LWNlbGwtdGV4dFwiPnt7YXR0cmliLm5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93LWNlbGwgY3JpdGVyaWEtc2VsZWN0LWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93LWNlbGwtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhdHRyaWIudmFsdWVDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWx0ZXJDcml0ZXJpYS5sZW5ndGggPT09IE1heEZpbHRlckNyaXRlcmlhICYmICFhdHRyaWIuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQXR0cmlidXRlVmFsdWUoYXR0cmliKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwidG9nZ2xlQXR0cmlidXRlVmFsdWUoYXR0cmliKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgQGlmKGF0dHJpYi52YWx1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93LWNlbGwtdGV4dFwiPnt7YXR0cmliLnZhbHVlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgfUBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWF0dHJpYi1yb3ctY2VsbC10ZXh0XCI+Li4uPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8L2xpYi1leHBhbnNpb24tcGFuZWw+ICAgIFxyXG4gICAgfVxyXG4gIDwvbGliLWV4cGFuc2lvbi1wYW5lbD5cclxufVxyXG48IS0tIEVuZCBQcm9wZXJ0aWVzIGxpc3QtLT4iXX0=
|
|
232
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMvY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC1iaW1wbHVzLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2JpbXBsdXMtb2JqZWN0LW5hdmlnYXRvci9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMvY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFL0UsT0FBTyxFQUFFLGVBQWUsRUFBRSxJQUFJLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDN0MsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFDcEgsT0FBTyxFQUFFLGVBQWUsRUFBb0IsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUMxRixPQUFPLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSwrREFBK0QsQ0FBQztBQUM5RyxPQUFPLEVBQW1CLGlCQUFpQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDM0YsT0FBTyxFQUFFLCtCQUErQixFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFDcEgsT0FBTyxFQUFFLHVDQUF1QyxFQUFF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QUEwQixDQUFDLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUN2RixDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUMsQ0FBQTtJQUNKLENBQUM7K0dBdFFVLHVDQUF1QzttR0FBdkMsdUNBQXVDLGlTQ3JCcEQseTNIQW9GMkIseTNHRG5FZCw2QkFBNkIsdUVBQUUsdUJBQXVCLHFGQUFFLGVBQWUsNEZBQUUsK0JBQStCLGlJQUFFLHVDQUF1Qzs7NEZBSWpKLHVDQUF1QztrQkFQbkQsU0FBUzsrQkFDRSx1Q0FBdUMsY0FDckMsSUFBSSxXQUNQLENBQUUsNkJBQTZCLEVBQUUsdUJBQXVCLEVBQUUsZUFBZSxFQUFFLCtCQUErQixFQUFFLHVDQUF1QyxDQUFDO3FGQTZCN0osR0FBRztzQkFERixLQUFLO2dCQUlGLFlBQVk7c0JBRGYsS0FBSztnQkFhTixRQUFRO3NCQURQLEtBQUs7Z0JBY0YsY0FBYztzQkFEakIsS0FBSztnQkFNSSxvQkFBb0I7c0JBQTdCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCAqIGFzIFdlYlNkayBmcm9tICdiaW1wbHVzLXdlYnNkayc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgZnJvbSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBCaW1wbHVzTG9jYWxpemVkV2lkZ2V0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmltcGx1cy1sb2NhbGl6ZWQtd2lkZ2V0L2JpbXBsdXMtbG9jYWxpemVkLXdpZGdldC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUsIFRyYW5zbGF0ZVNlcnZpY2UgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcclxuaW1wb3J0IHsgRXhwYW5zaW9uUGFuZWxDb21wb25lbnQgfSBmcm9tICcuLi8uLi9leHBhbnNpb24tcGFuZWwvZXhwYW5zaW9uLXBhbmVsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEV4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vZXhwYW5zaW9uLXBhbmVsLWhlYWRlci9leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IEZpbHRlckNyaXRlcml1bSwgTWF4RmlsdGVyQ3JpdGVyaWEgfSBmcm9tICcuLi9iaW1wbHVzLW9iamVjdC1uYXZpZ2F0b3IuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQmltcGx1c09iamVjdFN0cnVjdHVyZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2JpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZS9iaW1wbHVzLW9iamVjdC1zdHJ1Y3R1cmUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQmltcGx1c09iamVjdENvbXBsZXhQcm9wZXJ0aWVzQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzL2JpbXBsdXMtb2JqZWN0LWNvbXBsZXgtcHJvcGVydGllcy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBPYmplY3RTdHJ1Y3R1cmVOb2RlLCBPYmplY3RTdHJ1Y3R1cmVOb2RlQnVpbGRlciB9IGZyb20gJy4uLy4uL2JpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZS9iaW1wbHVzLW9iamVjdC1zdHJ1Y3R1cmUuaW50ZXJmYWNlJztcclxuaW1wb3J0IHsgQ29tcGxleFByb3BlcnRpZXNOb2RlLCBDb21wbGV4UHJvcGVydGllc05vZGVCdWlsZGVyIH0gZnJvbSAnLi4vLi4vYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzL2JpbXBsdXMtb2JqZWN0LWNvbXBsZXgtcHJvcGVydGllcy5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBPYmplY3RBdHRyaWJ1dGUsIE9iamVjdEF0dHJpYnV0ZUdyb3VwIH0gZnJvbSAnLi9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMuaW50ZXJmYWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLWNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcycsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbIEV4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50LCBFeHBhbnNpb25QYW5lbENvbXBvbmVudCwgVHJhbnNsYXRlTW9kdWxlLCBCaW1wbHVzT2JqZWN0U3RydWN0dXJlQ29tcG9uZW50LCBCaW1wbHVzT2JqZWN0Q29tcGxleFByb3BlcnRpZXNDb21wb25lbnRdLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9jcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMuY29tcG9uZW50Lmxlc3MnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDcml0ZXJpYVNlbGVjdE9iamVjdFByb3BlcnRpZXNDb21wb25lbnQgZXh0ZW5kcyBCaW1wbHVzTG9jYWxpemVkV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcclxuXHJcbiAgY29uc3RydWN0b3IodHJhbnNsYXRlU2VydmljZTogIFRyYW5zbGF0ZVNlcnZpY2Upe1xyXG4gICAgc3VwZXIodHJhbnNsYXRlU2VydmljZSkgIFxyXG4gIH1cclxuICBcclxuICBuZ09uSW5pdCgpIHtcclxuICAgIHRoaXMuX2N1cnJlbnRQcm9wZXJ0aWVzT2JqZWN0SWQkLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChpZCkgPT4ge1xyXG4gICAgICAgIGlmKGlkKXtcclxuICAgICAgICAgIHRoaXMuX2NyZWF0ZU9iamVjdFByb3BlcnRpZXMoaWQsIHRoaXMucmV2aXNpb24pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICB0aGlzLl9jdXJyZW50T2JqZWN0SWQkLnN1YnNjcmliZSh7XHJcbiAgICAgIG5leHQ6IChpZCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX2N1cnJlbnRQcm9wZXJ0aWVzT2JqZWN0SWQkLm5leHQoaWQpO1xyXG4gICAgICAgIHRoaXMuX2NyZWF0ZUNvbXBsZXhQcm9wZXJ0aWVzdHJ1Y3R1cmUoaWQsIHRoaXMucmV2aXNpb24pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIGFwaSA6IFdlYlNkay5BcGkgfCBudWxsID0gbnVsbDtcclxuXHJcbiAgQElucHV0KClcclxuICBzZXQgcm9vdE9iamVjdElkKGlkIDogc3RyaW5nKXtcclxuICAgIHRoaXMuX2N1cnJlbnRPYmplY3RJZCQubmV4dChpZCk7XHJcbiAgICB0aGlzLl9jcmVhdGVPYmplY3RTdHJ1Y3R1cmUoaWQsIHRoaXMucmV2aXNpb24pO1xyXG4gICAgXHJcbiAgICB0aGlzLl9yb290T2JqZWN0SWQgPSBpZDtcclxuICB9XHJcblxyXG4gIGdldCByb290T2JqZWN0SWQoKSA6IHN0cmluZ3tcclxuICAgIHJldHVybiB0aGlzLl9yb290T2JqZWN0SWQ7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHJldmlzaW9uIDogbnVtYmVyIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkO1xyXG4gIFxyXG4gIHByaXZhdGUgX2N1cnJlbnRPYmplY3RJZCQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PHN0cmluZz4gKFwiXCIpO1xyXG5cclxuICBwcml2YXRlIF9jdXJyZW50UHJvcGVydGllc09iamVjdElkJCA9IG5ldyBCZWhhdmlvclN1YmplY3Q8c3RyaW5nPiAoXCJcIik7XHJcblxyXG4gIG9iamVjdEF0dHJpYnV0ZUdyb3VwcyA6IE9iamVjdEF0dHJpYnV0ZUdyb3VwW10gPSBbXTtcclxuXHJcbiAgTWF4RmlsdGVyQ3JpdGVyaWEgPSBNYXhGaWx0ZXJDcml0ZXJpYTsgLy8gRm9yIGV4cG9zdXJlIHRvIHRlbXBsYXRlXHJcblxyXG4gIHByaXZhdGUgX3Jvb3RPYmplY3RJZCA6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgc2V0IGZpbHRlckNyaXRlcmlhKGNyaXRlcmlhIDogRmlsdGVyQ3JpdGVyaXVtW10pe1xyXG4gICAgdGhpcy5fZmlsdGVyQ3JpdGVyaWEgPSBjcml0ZXJpYTtcclxuICAgIHRoaXMuX3N5bmNBdHRyaWJ1dGVTdGF0ZXNGcm9tQ3JpdGVyaWEoKTtcclxuICB9XHJcblxyXG4gIEBPdXRwdXQoKSBmaWx0ZXJDcml0ZXJpYUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmlsdGVyQ3JpdGVyaXVtW10+KCk7XHJcblxyXG4gIGdldCBmaWx0ZXJDcml0ZXJpYSgpe1xyXG4gICAgcmV0dXJuIHRoaXMuX2ZpbHRlckNyaXRlcmlhO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZmlsdGVyQ3JpdGVyaWEgOiBGaWx0ZXJDcml0ZXJpdW1bXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIF9vYmplY3RTdHJ1Y3R1cmUgOiBPYmplY3RTdHJ1Y3R1cmVOb2RlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gICBnZXQgb2JqZWN0U3RydWN0dXJlKCk6IE9iamVjdFN0cnVjdHVyZU5vZGUgfCBudWxse1xyXG4gICAgcmV0dXJuIHRoaXMuX29iamVjdFN0cnVjdHVyZVxyXG4gICB9XHJcblxyXG4gICBwcml2YXRlIF9jb21wbGV4UHJvcGVydGllcyA6IENvbXBsZXhQcm9wZXJ0aWVzTm9kZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICAgZ2V0IGNvbXBsZXhQcm9wZXJ0aWVzKCkgOiBDb21wbGV4UHJvcGVydGllc05vZGUgfCBudWxse1xyXG4gICAgcmV0dXJuIHRoaXMuX2NvbXBsZXhQcm9wZXJ0aWVzO1xyXG4gICB9XHJcblxyXG4gIHRvZ2dsZUF0dHJpYnV0ZShhdHRyaWIgOiBPYmplY3RBdHRyaWJ1dGUpe1xyXG4gICAgYXR0cmliLmNoZWNrZWQgPSAhYXR0cmliLmNoZWNrZWQ7XHJcbiAgICBpZihhdHRyaWIuY2hlY2tlZCA9PT0gZmFsc2Upe1xyXG4gICAgICBhdHRyaWIudmFsdWVDaGVja2VkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5oYW5kbGVGaWx0ZXJDcml0ZXJpdW1BdHRyaWJ1dGVTdGF0ZUNoYW5nZShhdHRyaWIpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQXR0cmlidXRlVmFsdWUoYXR0cmliIDogT2JqZWN0QXR0cmlidXRlKXtcclxuICAgIGF0dHJpYi52YWx1ZUNoZWNrZWQgPSAhYXR0cmliLnZhbHVlQ2hlY2tlZDtcclxuICAgIGF0dHJpYi5jaGVja2VkID0gYXR0cmliLnZhbHVlQ2hlY2tlZDtcclxuXHJcbiAgICB0aGlzLmhhbmRsZUZpbHRlckNyaXRlcml1bUF0dHJpYnV0ZVN0YXRlQ2hhbmdlKGF0dHJpYik7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVGaWx0ZXJDcml0ZXJpdW1BdHRyaWJ1dGVTdGF0ZUNoYW5nZShhdHRyaWIgOiBPYmplY3RBdHRyaWJ1dGUpe1xyXG4gICAgXHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuZmlsdGVyQ3JpdGVyaWEuZmluZEluZGV4KHg9PnguaWQgPT09IGF0dHJpYi5pZCk7XHJcbiAgICBpZihpbmRleD49MCl7XHJcbiAgICAgIGlmKGF0dHJpYi5jaGVja2VkID09PSBmYWxzZSB8fCBhdHRyaWIudmFsdWVDaGVja2VkID09PSBmYWxzZSl7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJDcml0ZXJpYS5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWFDaGFuZ2UuZW1pdCh0aGlzLmZpbHRlckNyaXRlcmlhKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZih0aGlzLmZpbHRlckNyaXRlcmlhLmxlbmd0aCA8IE1heEZpbHRlckNyaXRlcmlhKXtcclxuXHJcbiAgICAgICAgbGV0IHN1YnN0cmluZyA9IGBbSV1bJHthdHRyaWIuaWR9XS5WYWx1ZWA7XHJcblxyXG4gICAgICAgIGlmKGF0dHJpYi52YWx1ZUNoZWNrZWQpe1xyXG4gICAgICAgICAgc3Vic3RyaW5nICs9IGBbRl1bMF09JHthdHRyaWIudmFsdWV9YDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmlsdGVyQ3JpdGVyaWEucHVzaCh7XHJcbiAgICAgICAgICBuYW1lIDogYXR0cmliLm5hbWUsXHJcbiAgICAgICAgICB2YWx1ZSA6IGF0dHJpYi52YWx1ZUNoZWNrZWQgPyBhdHRyaWIudmFsdWUgOiB1bmRlZmluZWQsXHJcbiAgICAgICAgICBpZCA6IGF0dHJpYi5pZCxcclxuICAgICAgICAgIHN1YlN0cmluZyA6IHN1YnN0cmluZ1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLmZpbHRlckNyaXRlcmlhQ2hhbmdlLmVtaXQodGhpcy5maWx0ZXJDcml0ZXJpYSk7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZU9iamVjdFN0cnVjdHVyZU5vZGVTZWxlY3RlZChub2RlIDogT2JqZWN0U3RydWN0dXJlTm9kZSl7XHJcbiAgICB0aGlzLl9jdXJyZW50T2JqZWN0SWQkLm5leHQobm9kZS5pZCk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDb21wbGV4UHJvcGVydHlOb2RlU2VsZWN0ZWQobm9kZSA6IENvbXBsZXhQcm9wZXJ0aWVzTm9kZSl7XHJcbiAgICB0aGlzLl9jdXJyZW50UHJvcGVydGllc09iamVjdElkJC5uZXh0KG5vZGUuaWQpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY3JlYXRlT2JqZWN0UHJvcGVydGllcyhvYmplY3RJZCA6IHN0cmluZywgcmV2aXNpb24gOiBudW1iZXIgfCB1bmRlZmluZWQpe1xyXG4gICAgdGhpcy5fbG9hZE9iamVjdFByb3BlcnRpZXMob2JqZWN0SWQsIHJldmlzaW9uKT8uc3Vic2NyaWJlKHtcclxuICAgICAgICBcclxuICAgICAgICAvLyBwcm9wZXJ0aWVzIHJlc3BvbnNlIGlzIGJhZGx5IHN0cnVjdHVyZWQsIG5lYXJseSBpbXBvc3NpYmxlIHRvIGNyZWF0ZSBjbGFzcyBzdHJ1Y3R1cmUgZnJvbSBpdC4gVGhlcmVmb3JlIHVzaW5nIHNob3J0Y3V0XHJcbiAgICAgICAgLy8gYW55IGZvciBqc29uIHJlc3BvbnNlXHJcblxyXG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSAgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxyXG4gICAgICAgIG5leHQ6IChwcm9wZXJ0aWVzRGF0YSA6IGFueSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5vYmplY3RBdHRyaWJ1dGVHcm91cHMgPSB0aGlzLl9jcmVhdGVBdHRyaWJ1dGVHcm91cHNGcm9tUmVzcG9uc2UocHJvcGVydGllc0RhdGEpO1xyXG4gICAgICAgICAgdGhpcy5fc3luY0F0dHJpYnV0ZVN0YXRlc0Zyb21Dcml0ZXJpYSgpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6ICgpID0+e1xyXG4gICAgICAgICAgdGhpcy5vYmplY3RBdHRyaWJ1dGVHcm91cHMgPSBbXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIClcclxuXHJcbiAgfVxyXG5cclxuICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lICBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XHJcbiAgcHJpdmF0ZSBfY3JlYXRlQXR0cmlidXRlR3JvdXBzRnJvbVJlc3BvbnNlKHByb3BlcnRpZXNEYXRhIDogYW55KXtcclxuXHJcbiAgICBjb25zdCBncm91cHMgOiBBcnJheTxPYmplY3RBdHRyaWJ1dGVHcm91cD4gPSBbXTtcclxuICAgIGxldCBsb2NhbGl6ZWRBdHRyaWJHcm91cHMgPSBudWxsO1xyXG4gICAgaWYocHJvcGVydGllc0RhdGEubG9jYWxpemVkQXR0cmlidXRlR3JvdXBzKXtcclxuICAgICAgbG9jYWxpemVkQXR0cmliR3JvdXBzID0gcHJvcGVydGllc0RhdGEubG9jYWxpemVkQXR0cmlidXRlR3JvdXBzO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghcHJvcGVydGllc0RhdGEuYXR0cmlidXRlcyl7XHJcbiAgICAgIHJldHVybiBncm91cHM7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgYXR0cmliR3JvdXBzID0gcHJvcGVydGllc0RhdGEuYXR0cmlidXRlcztcclxuICAgIGZvcihjb25zdCBbZ3JvdXBOYW1lLCBhdHRyaWJzT2JqZWN0XSBvZiBPYmplY3QuZW50cmllcyhhdHRyaWJHcm91cHMpKXtcclxuICAgICAgXHJcbiAgICAgIGNvbnN0IG5ld0dyb3VwIDogT2JqZWN0QXR0cmlidXRlR3JvdXAgPSB7XHJcbiAgICAgICAgbmFtZSA6IGdyb3VwTmFtZSxcclxuICAgICAgICBleHBhbmRlZCA6IGZhbHNlLFxyXG4gICAgICAgIGF0dHJpYnV0ZXMgOiBbXVxyXG4gICAgICB9O1xyXG4gICAgICBcclxuICAgICAgaWYobG9jYWxpemVkQXR0cmliR3JvdXBzPy5bZ3JvdXBOYW1lXSl7XHJcbiAgICAgICAgbmV3R3JvdXAubmFtZSA9IGxvY2FsaXplZEF0dHJpYkdyb3Vwc1tncm91cE5hbWVdOyBcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYoIWF0dHJpYnNPYmplY3Qpe1xyXG4gICAgICAgIGNvbnRpbnVlO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBmb3IoY29uc3QgYXR0cmliIG9mIE9iamVjdC52YWx1ZXMoYXR0cmlic09iamVjdCkpe1xyXG5cclxuICAgICAgICBjb25zdCBuZXdBdHRyaWIgOiBPYmplY3RBdHRyaWJ1dGUgPSB7XHJcbiAgICAgICAgICBpZCA6IGF0dHJpYi5pZCxcclxuICAgICAgICAgIG5hbWUgOiBhdHRyaWIubmFtZSxcclxuICAgICAgICAgIGRlc2NyaXB0aW9uIDogYXR0cmliLmRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgdmFsdWUgOiBhdHRyaWIudmFsdWUsXHJcbiAgICAgICAgICBjaGVja2VkOiBmYWxzZSxcclxuICAgICAgICAgIHZhbHVlQ2hlY2tlZCA6IGZhbHNlLFxyXG4gICAgICAgICAgZ3JvdXAgOiBhdHRyaWIuZ3JvdXBcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIG5ld0dyb3VwLmF0dHJpYnV0ZXMucHVzaChuZXdBdHRyaWIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBncm91cHMucHVzaChuZXdHcm91cCk7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIHJldHVybiBncm91cHM7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zeW5jQXR0cmlidXRlU3RhdGVzRnJvbUNyaXRlcmlhKCl7XHJcbiAgICB0aGlzLm9iamVjdEF0dHJpYnV0ZUdyb3Vwcy5mb3JFYWNoKGdyb3VwPT57XHJcbiAgICAgIGdyb3VwLmF0dHJpYnV0ZXMuZm9yRWFjaChhdHRyaWI9PntcclxuICAgICAgICBjb25zdCBjcml0ZXJpYSA9IHRoaXMuX2ZpbHRlckNyaXRlcmlhLmZpbmQoeD0+eC5pZCA9PSBhdHRyaWIuaWQpXHJcbiAgICAgICAgaWYoY3JpdGVyaWEpe1xyXG4gICAgICAgICAgYXR0cmliLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgICAgYXR0cmliLnZhbHVlQ2hlY2tlZCA9IGNyaXRlcmlhLnZhbHVlICE9PSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICBhdHRyaWIuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgYXR0cmliLnZhbHVlQ2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9sb2FkT2JqZWN0UHJvcGVydGllcyhvYmplY3RJZCA6IHN0cmluZywgcmV2aXNpb24gOiBudW1iZXIgfCB1bmRlZmluZWQpe1xyXG4gICAgaWYoIXRoaXMuYXBpKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmcm9tKHRoaXMuYXBpLm9iamVjdHMuZ2V0KG9iamVjdElkLCByZXZpc2lvbiwgXCI4XCIsIHVuZGVmaW5lZCwgZmFsc2UsIHVuZGVmaW5lZCApKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvYWRPYmplY3RTdHJ1Y3R1cmUob2JqZWN0SWQgOiBzdHJpbmcsIHJldmlzaW9uIDogbnVtYmVyIHwgdW5kZWZpbmVkKXtcclxuICAgIGlmKCF0aGlzLmFwaSl7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gZnJvbSh0aGlzLmFwaS5vYmplY3RzLmdldFRvcG9sb2d5KG9iamVjdElkLCByZXZpc2lvbiwgZmFsc2UsIGZhbHNlLCB1bmRlZmluZWQpKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2xvYWRPYmplY3RDb21wbGV4UHJvcGVydGllc1N0cnVjdHVyZShvYmplY3RJZCA6IHN0cmluZywgcmV2aXNpb24gOiBudW1iZXIgfCB1bmRlZmluZWQpe1xyXG4gICAgaWYoIXRoaXMuYXBpKXtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmcm9tKHRoaXMuYXBpLm9iamVjdHMuZ2V0Q29tcGxleFByb3BlcnRpZXNUb3BvbG9neShvYmplY3RJZCwgcmV2aXNpb24pKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NyZWF0ZUNvbXBsZXhQcm9wZXJ0aWVzdHJ1Y3R1cmUob2JqZWN0SWQgOiBzdHJpbmcsIHJldmlzaW9uIDogbnVtYmVyIHwgdW5kZWZpbmVkKXtcclxuICAgIHRoaXMuX2xvYWRPYmplY3RDb21wbGV4UHJvcGVydGllc1N0cnVjdHVyZShvYmplY3RJZCwgcmV2aXNpb24pPy5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0IDooc3RydWN0dXJlRGF0YSk9PntcclxuICAgICAgICBpZihzdHJ1Y3R1cmVEYXRhKXtcclxuICAgICAgICAgIGNvbnN0IGNvbXBsZXhQcm9wcyA9IENvbXBsZXhQcm9wZXJ0aWVzTm9kZUJ1aWxkZXIuY3JlYXRlRnJvbVJlc3BvbnNlKHN0cnVjdHVyZURhdGEpO1xyXG4gICAgICAgICAgaWYoY29tcGxleFByb3BzPy5jaGlsZHJlbj8ubGVuZ3RoKXtcclxuICAgICAgICAgICAgdGhpcy5fY29tcGxleFByb3BlcnRpZXMgPSBjb21wbGV4UHJvcHM7XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5fY29tcGxleFByb3BlcnRpZXMgPSBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gICAgXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9jcmVhdGVPYmplY3RTdHJ1Y3R1cmUob2JqZWN0SWQgOiBzdHJpbmcsIHJldmlzaW9uIDogbnVtYmVyIHwgdW5kZWZpbmVkKXtcclxuICAgIHRoaXMuX2xvYWRPYmplY3RTdHJ1Y3R1cmUob2JqZWN0SWQsIHJldmlzaW9uKT8uc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dCA6KHN0cnVjdHVyZURhdGEpPT57XHJcbiAgICAgICAgaWYoc3RydWN0dXJlRGF0YSl7XHJcbiAgICAgICAgICB0aGlzLl9vYmplY3RTdHJ1Y3R1cmUgPSBPYmplY3RTdHJ1Y3R1cmVOb2RlQnVpbGRlci5jcmVhdGVGcm9tUmVzcG9uc2Uoc3RydWN0dXJlRGF0YSk7XHJcbiAgICAgICAgfSAgICBcclxuICAgICAgfVxyXG4gICAgfSlcclxuICB9XHJcblxyXG5cclxuXHJcbn1cclxuIiwiPCEtLSBPYmplY3Qgc3RydWN0dXJlLS0+XHJcbjxsaWItZXhwYW5zaW9uLXBhbmVsPlxyXG4gIDxsaWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgIDxzcGFuIGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWhlYWRlclwiPiB7e1wiX09iamVjdCBzdHJ1Y3R1cmVcIiB8IHRyYW5zbGF0ZX19PC9zcGFuPlxyXG4gIDwvbGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgQGlmKG9iamVjdFN0cnVjdHVyZSl7XHJcbiAgICA8bGliLWJpbXBsdXMtb2JqZWN0LXN0cnVjdHVyZVxyXG4gICAgICBbb2JqZWN0U3RydWN0dXJlXT1cIm9iamVjdFN0cnVjdHVyZVwiXHJcbiAgICAgIChub2RlU2VsZWN0ZWQpPVwiaGFuZGxlT2JqZWN0U3RydWN0dXJlTm9kZVNlbGVjdGVkKCRldmVudClcIlxyXG4gICAgPlxyXG4gICAgPC9saWItYmltcGx1cy1vYmplY3Qtc3RydWN0dXJlPiAgXHJcbiAgfVxyXG48L2xpYi1leHBhbnNpb24tcGFuZWw+XHJcbjwhLS0gRW5kIE9iamVjdCBzdHJ1Y3R1cmUtLT5cclxuXHJcbjwhLS0gQ29tcGxleCBwcm9wZXJ0aWVzLS0+XHJcbkBpZihjb21wbGV4UHJvcGVydGllcyl7ICBcclxuICA8bGliLWV4cGFuc2lvbi1wYW5lbD5cclxuICAgIDxsaWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJjcml0ZXJpYS1zZWxlY3Qtb2JqZWN0LXByb3BlcnRpZXMtaGVhZGVyXCI+IHt7XCJfT2JqZWN0IG11bHRpcHJvcGVydGllcyB0cmVlXCIgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgIDwvbGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgIDxsaWItYmltcGx1cy1vYmplY3QtY29tcGxleC1wcm9wZXJ0aWVzXHJcbiAgICAgICAgW2NvbXBsZXhQcm9wZXJ0aWVzXT1cImNvbXBsZXhQcm9wZXJ0aWVzXCJcclxuICAgICAgICAobm9kZVNlbGVjdGVkKT1cImhhbmRsZUNvbXBsZXhQcm9wZXJ0eU5vZGVTZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgICAgPlxyXG4gICAgICA8L2xpYi1iaW1wbHVzLW9iamVjdC1jb21wbGV4LXByb3BlcnRpZXM+ICBcclxuICA8L2xpYi1leHBhbnNpb24tcGFuZWw+XHJcbn1cclxuPCEtLSBFbmQgQ29tcGxleCBwcm9wZXJ0aWVzLS0+XHJcblxyXG48IS0tIFByb3BlcnRpZXMgbGlzdC0tPlxyXG5AaWYob2JqZWN0QXR0cmlidXRlR3JvdXBzLmxlbmd0aCA+IDApeyAgXHJcbiAgPGxpYi1leHBhbnNpb24tcGFuZWw+XHJcbiAgICA8bGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWhlYWRlclwiPiB7e1wiX09iamVjdCBwcm9wZXJ0aWVzXCIgfCB0cmFuc2xhdGV9fTwvc3Bhbj5cclxuICAgIDwvbGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcblxyXG4gICAgQGZvciAoYXR0cmliR3JvdXAgb2Ygb2JqZWN0QXR0cmlidXRlR3JvdXBzOyB0cmFjayBhdHRyaWJHcm91cCkge1xyXG4gICAgICA8bGliLWV4cGFuc2lvbi1wYW5lbCBbZXhwYW5kZWRdPVwiYXR0cmliR3JvdXAuZXhwYW5kZWRcIj5cclxuICAgICAgICA8bGliLWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1ncm91cC1oZWFkZXJcIj4ge3thdHRyaWJHcm91cC5uYW1lfX08L3NwYW4+XHJcbiAgICAgICAgPC9saWItZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cclxuICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgQGZvciAoYXR0cmliIG9mIGF0dHJpYkdyb3VwLmF0dHJpYnV0ZXM7IHRyYWNrIGF0dHJpYikge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWF0dHJpYi1yb3dcIj5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWF0dHJpYi1yb3ctY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93LWNlbGwgY3JpdGVyaWEtc2VsZWN0LWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93LWNlbGwtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhdHRyaWIuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZmlsdGVyQ3JpdGVyaWEubGVuZ3RoID09PSBNYXhGaWx0ZXJDcml0ZXJpYSAmJiAhYXR0cmliLmNoZWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cInRvZ2dsZUF0dHJpYnV0ZShhdHRyaWIpXCJcclxuICAgICAgICAgICAgICAgICAgICAgIChrZXlwcmVzcyk9XCJ0b2dnbGVBdHRyaWJ1dGUoYXR0cmliKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93LWNlbGwtdGV4dFwiPnt7YXR0cmliLm5hbWV9fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93LWNlbGwgY3JpdGVyaWEtc2VsZWN0LWNoZWNrYm94XCI+XHJcbiAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93LWNlbGwtbGFiZWxcIj5cclxuICAgICAgICAgICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJhdHRyaWIudmFsdWVDaGVja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJmaWx0ZXJDcml0ZXJpYS5sZW5ndGggPT09IE1heEZpbHRlckNyaXRlcmlhICYmICFhdHRyaWIuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlQXR0cmlidXRlVmFsdWUoYXR0cmliKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAoa2V5cHJlc3MpPVwidG9nZ2xlQXR0cmlidXRlVmFsdWUoYXR0cmliKVwiXHJcbiAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuPjwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cclxuICAgICAgICAgICAgICAgICAgQGlmKGF0dHJpYi52YWx1ZSl7XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNyaXRlcmlhLXNlbGVjdC1vYmplY3QtcHJvcGVydGllcy1hdHRyaWItcm93LWNlbGwtdGV4dFwiPnt7YXR0cmliLnZhbHVlfX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgfUBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3JpdGVyaWEtc2VsZWN0LW9iamVjdC1wcm9wZXJ0aWVzLWF0dHJpYi1yb3ctY2VsbC10ZXh0XCI+Li4uPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8L2xpYi1leHBhbnNpb24tcGFuZWw+ICAgIFxyXG4gICAgfVxyXG4gIDwvbGliLWV4cGFuc2lvbi1wYW5lbD5cclxufVxyXG48IS0tIEVuZCBQcm9wZXJ0aWVzIGxpc3QtLT4iXX0=
|
|
@@ -192,10 +192,10 @@ function createDefaultItems() {
|
|
|
192
192
|
{
|
|
193
193
|
buttonId: 'cmButToggleProjection',
|
|
194
194
|
type: 'button',
|
|
195
|
-
iconClass: 'ui-icon-
|
|
196
|
-
text: '
|
|
197
|
-
tooltip: '
|
|
198
|
-
tooltipDisabled: '
|
|
195
|
+
iconClass: 'ui-icon-orthographic-camera-projection',
|
|
196
|
+
text: '_Orthographic_projection_center_menu_tooltip',
|
|
197
|
+
tooltip: '_Orthographic_projection_center_menu_tooltip',
|
|
198
|
+
tooltipDisabled: '_Orthographic_projection_center_menu_tooltip',
|
|
199
199
|
actionClick: 'centerMenuToggleProjection',
|
|
200
200
|
},
|
|
201
201
|
]
|
|
@@ -394,9 +394,10 @@ export class BimplusToolHubComponent extends BimplusLocalizedWidgetComponent {
|
|
|
394
394
|
return;
|
|
395
395
|
}
|
|
396
396
|
this.isPerspectiveProjection = !this.isPerspectiveProjection;
|
|
397
|
-
item.iconClass = this.isPerspectiveProjection ? 'ui-icon-
|
|
398
|
-
item.
|
|
399
|
-
item.
|
|
397
|
+
item.iconClass = this.isPerspectiveProjection ? 'ui-icon-orthographic-camera-projection' : 'ui-icon-perspective-camera-projection';
|
|
398
|
+
item.text = this.isPerspectiveProjection ? '_Orthographic_projection_center_menu_tooltip' : '_Perspective_projection_center_menu_tooltip';
|
|
399
|
+
item.tooltip = this.isPerspectiveProjection ? '_Orthographic_projection_center_menu_tooltip' : '_Perspective_projection_center_menu_tooltip';
|
|
400
|
+
item.tooltipDisabled = this.isPerspectiveProjection ? '_Orthographic_projection_center_menu_tooltip' : '_Perspective_projection_center_menu_tooltip';
|
|
400
401
|
}
|
|
401
402
|
closeActiveSubItemsView() {
|
|
402
403
|
if (this._activeSubItemsView) {
|
|
@@ -496,4 +497,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
|
|
|
496
497
|
}], subItemClicked: [{
|
|
497
498
|
type: Output
|
|
498
499
|
}] } });
|
|
499
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy10b29sLWh1Yi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYmltcGx1cy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9iaW1wbHVzLXRvb2wtaHViL2JpbXBsdXMtdG9vbC1odWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy10b29sLWh1Yi9iaW1wbHVzLXRvb2wtaHViLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFzQyxNQUFNLGVBQWUsQ0FBQztBQUNoSixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQTtBQUNsSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFBOzs7Ozs7QUFJekUsZ0RBQWdEO0FBRWhELFNBQVMsMkJBQTJCO0lBQ2xDLE1BQU0sUUFBUSxHQUEwQjtRQUN0QyxpQkFBaUIsRUFBRSxFQUFFO1FBQ3JCLGVBQWUsRUFBRSxHQUFHO1FBQ3BCLGNBQWMsRUFBRSxJQUFJO1FBQ3BCLFNBQVMsRUFBRSxLQUFLO1FBQ2hCLGFBQWEsRUFBRSxDQUFDLEtBQUssRUFBRSxJQUFJLENBQUM7UUFDNUIsYUFBYSxFQUFFLElBQUk7UUFDbkIsWUFBWSxFQUFFLEVBQUU7UUFDaEIsY0FBYyxFQUFFLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQztRQUN4QixhQUFhLEVBQUUsR0FBRztRQUNsQixjQUFjLEVBQUUsRUFBRTtRQUNsQixrQkFBa0IsRUFBRSxFQUFFO1FBQ3RCLGdCQUFnQixFQUFFLEdBQUc7S0FDdEIsQ0FBQTtJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUM7QUFFRCxzQ0FBc0M7QUFDdEMsNkRBQTZEO0FBQzdELCtDQUErQztBQUMvQyw4QkFBOEI7QUFDOUIsNkJBQTZCO0FBQzdCLDBCQUEwQjtBQUMxQix3QkFBd0I7QUFDeEIscUNBQXFDO0FBQ3JDLDRCQUE0QjtBQUM1Qix5QkFBeUI7QUFDekIsbUNBQW1DO0FBQ25DLDJCQUEyQjtBQUMzQiwyQkFBMkI7QUFDM0IsK0JBQStCO0FBQy9CLDZCQUE2QjtBQUM3QixNQUFNO0FBQ04scUJBQXFCO0FBQ3JCLElBQUk7QUFFSixTQUFTLGtCQUFrQjtJQUN6QixNQUFNLEtBQUssR0FBdUI7UUFDaEMscUVBQXFFO1FBQ3JFO1lBQ0UsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQixTQUFTLEVBQUUscUJBQXFCO1lBQ2hDLElBQUksRUFBRSxtQ0FBbUM7WUFDekMsT0FBTyxFQUFFLG1DQUFtQztZQUM1QyxlQUFlLEVBQUUsbUNBQW1DO1NBQ3JEO1FBRUQsMEVBQTBFO1FBQzFFO1lBQ0UsUUFBUSxFQUFFLHNCQUFzQjtZQUNoQyxTQUFTLEVBQUUsMkJBQTJCO1lBQ3RDLElBQUksRUFBRSx3Q0FBd0M7WUFDOUMsT0FBTyxFQUFFLHdDQUF3QztZQUNqRCxlQUFlLEVBQUUsd0NBQXdDO1NBQzFEO1FBRUQsZ0VBQWdFO1FBQ2hFO1lBQ0UsUUFBUSxFQUFFLGFBQWE7WUFDdkIsU0FBUyxFQUFFLGdCQUFnQjtZQUMzQixJQUFJLEVBQUUsOEJBQThCO1lBQ3BDLE9BQU8sRUFBRSw4QkFBOEI7WUFDdkMsZUFBZSxFQUFFLDhCQUE4QjtTQUNoRDtRQUVELGlFQUFpRTtRQUNqRTtZQUNFLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLFNBQVMsRUFBRSxpQkFBaUI7WUFDNUIsSUFBSSxFQUFFLGlDQUFpQztZQUN2QyxPQUFPLEVBQUUsaUNBQWlDO1lBQzFDLGVBQWUsRUFBRSxpQ0FBaUM7U0FDbkQ7UUFFRCw4REFBOEQ7UUFDOUQ7WUFDRSxRQUFRLEVBQUUsb0JBQW9CO1lBQzlCLFNBQVMsRUFBRSxvQkFBb0I7WUFDL0IsSUFBSSxFQUFFLG1DQUFtQztZQUN6QyxPQUFPLEVBQUUsbUNBQW1DO1lBQzVDLGVBQWUsRUFBRSxtQ0FBbUM7U0FDckQ7UUFFRCxpRUFBaUU7UUFDakU7WUFDRSxRQUFRLEVBQUUsYUFBYTtZQUN2QixTQUFTLEVBQUUsb0JBQW9CO1lBQy9CLElBQUksRUFBRSxzQ0FBc0M7WUFDNUMsT0FBTyxFQUFFLHNDQUFzQztZQUMvQyxlQUFlLEVBQUUsc0NBQXNDO1NBQ3hEO1FBRUQsd0VBQXdFO1FBQ3hFO1lBQ0UsUUFBUSxFQUFFLG9CQUFvQjtZQUM5QixTQUFTLEVBQUUsd0JBQXdCO1lBQ25DLElBQUksRUFBRSxxQ0FBcUM7WUFDM0MsT0FBTyxFQUFFLHFDQUFxQztZQUM5QyxlQUFlLEVBQUUscUNBQXFDO1NBQ3ZEO1FBRUQsK0RBQStEO1FBQy9EO1lBQ0UsUUFBUSxFQUFFLGlCQUFpQjtZQUMzQixTQUFTLEVBQUUsb0JBQW9CO1lBQy9CLElBQUksRUFBRSxzQ0FBc0M7WUFDNUMsT0FBTyxFQUFFLHNDQUFzQztZQUMvQyxlQUFlLEVBQUUsc0NBQXNDO1NBQ3hEO1FBRUQsK0RBQStEO1FBQy9EO1lBQ0UsUUFBUSxFQUFFLHVCQUF1QjtZQUNqQyxTQUFTLEVBQUUsMkJBQTJCO1lBQ3RDLElBQUksRUFBRSx3Q0FBd0M7WUFDOUMsT0FBTyxFQUFFLHdDQUF3QztZQUNqRCxlQUFlLEVBQUUsd0NBQXdDO1NBQzFEO1FBRUQsK0RBQStEO1FBQy9EO1lBQ0UsU0FBUyxFQUFFLG1CQUFtQjtZQUM5QixRQUFRLEVBQUUsZUFBZTtZQUN6QixJQUFJLEVBQUUscUNBQXFDO1lBQzNDLE9BQU8sRUFBRSxxQ0FBcUM7WUFDOUMsZUFBZSxFQUFFLHFDQUFxQztTQUN2RDtRQUVELDhEQUE4RDtRQUM5RDtZQUNFLFFBQVEsRUFBRSxjQUFjO1lBQ3hCLFNBQVMsRUFBRSxrQkFBa0I7WUFDN0IsSUFBSSxFQUFFLGtDQUFrQztZQUN4QyxPQUFPLEVBQUUsa0NBQWtDO1lBQzNDLGVBQWUsRUFBRSxrQ0FBa0M7WUFDbkQsU0FBUyxFQUFFLGtCQUFrQjtZQUM3QixRQUFRLEVBQUU7Z0JBQ1Isb0VBQW9FO2dCQUNwRTtvQkFDRSxRQUFRLEVBQUUsZ0JBQWdCO29CQUMxQixJQUFJLEVBQUUsUUFBUTtvQkFDZCxTQUFTLEVBQUUsb0JBQW9CO29CQUMvQixJQUFJLEVBQUUsaUNBQWlDO29CQUN2QyxPQUFPLEVBQUUsaUNBQWlDO29CQUMxQyxlQUFlLEVBQUUsaUNBQWlDO29CQUNsRCxXQUFXLEVBQUUsMEJBQTBCO2lCQUN4QztnQkFDRCxrRUFBa0U7Z0JBQ2xFO29CQUNFLFFBQVEsRUFBRSxjQUFjO29CQUN4QixJQUFJLEVBQUUsUUFBUTtvQkFDZCxTQUFTLEVBQUUsa0JBQWtCO29CQUM3QixJQUFJLEVBQUUsK0JBQStCO29CQUNyQyxPQUFPLEVBQUUsK0JBQStCO29CQUN4QyxlQUFlLEVBQUUsK0JBQStCO29CQUNoRCxXQUFXLEVBQUUsd0JBQXdCO2lCQUN0QztnQkFDRCxtRUFBbUU7Z0JBQ25FO29CQUNFLFFBQVEsRUFBRSxlQUFlO29CQUN6QixJQUFJLEVBQUUsUUFBUTtvQkFDZCxTQUFTLEVBQUUsbUJBQW1CO29CQUM5QixJQUFJLEVBQUUsZ0NBQWdDO29CQUN0QyxPQUFPLEVBQUUsZ0NBQWdDO29CQUN6QyxlQUFlLEVBQUUsZ0NBQWdDO29CQUNqRCxXQUFXLEVBQUUseUJBQXlCO2lCQUN2QztnQkFDRCwwRUFBMEU7Z0JBQzFFO29CQUNFLFFBQVEsRUFBRSxzQkFBc0I7b0JBQ2hDLElBQUksRUFBRSxRQUFRO29CQUNkLFNBQVMsRUFBRSwwQkFBMEI7b0JBQ3JDLElBQUksRUFBRSx1Q0FBdUM7b0JBQzdDLE9BQU8sRUFBRSx1Q0FBdUM7b0JBQ2hELGVBQWUsRUFBRSx1Q0FBdUM7b0JBQ3hELFdBQVcsRUFBRSxnQ0FBZ0M7aUJBQzlDO2dCQUNELG1FQUFtRTtnQkFDbkU7b0JBQ0UsUUFBUSxFQUFFLDRCQUE0QjtvQkFDdEMsSUFBSSxFQUFFLFdBQVc7b0JBQ2pCLFNBQVMsRUFBRSx1REFBdUQ7b0JBQ2xFLElBQUksRUFBRSxFQUFFO29CQUNSLE9BQU8sRUFBRSxFQUFFO29CQUNYLGVBQWUsRUFBRSxFQUFFO29CQUNuQixXQUFXLEVBQUUsRUFBRTtpQkFDaEI7Z0JBQ0QsMEVBQTBFO2dCQUMxRTtvQkFDRSxRQUFRLEVBQUUsdUJBQXVCO29CQUNqQyxJQUFJLEVBQUUsUUFBUTtvQkFDZCxTQUFTLEVBQUUsdUNBQXVDO29CQUNsRCxJQUFJLEVBQUUsNkNBQTZDO29CQUNuRCxPQUFPLEVBQUUsNkNBQTZDO29CQUN0RCxlQUFlLEVBQUUsNkNBQTZDO29CQUM5RCxXQUFXLEVBQUUsNEJBQTRCO2lCQUMxQzthQUNGO1NBQ0Y7S0FDRixDQUFBO0lBRUQsc0ZBQXNGO0lBQ3RGLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFBLENBQUMsQ0FBQyxDQUFDLENBQUE7SUFFcEUsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDO0FBRUQsTUFBTSxxQkFBcUIsR0FBRyxHQUFHLENBQUM7QUFDbEMsTUFBTSxvQkFBb0IsR0FBSSxHQUFHLENBQUM7QUFnQmxDLE1BQU0sT0FBTyx1QkFBd0IsU0FBUSwrQkFBK0I7SUFDMUUsWUFBWSxnQkFBa0MsRUFDMUIsb0JBQTBDLEVBQzFDLHFCQUEyQyxFQUMzQyxPQUFtQjtRQUNyQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUhOLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBc0I7UUFDMUMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFzQjtRQUMzQyxZQUFPLEdBQVAsT0FBTyxDQUFZO1FBbUdDLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFDNUIsY0FBUyxHQUFZLEtBQUssQ0FBQztRQUMzQixhQUFRLEdBQVksSUFBSSxDQUFDO1FBQ3ZELGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN6QyxtQkFBYyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFdEQsc0VBQXNFO1FBQ3RFLGlFQUFpRTtRQUV6RCxnQkFBVyxHQUFHLG1CQUFtQixDQUFDO1FBQ2xDLGlCQUFZLEdBQXdCLElBQUksQ0FBQyxDQUFFLHFCQUFxQjtRQWlLeEUsNEJBQTRCO1FBRTVCLHlCQUF5QjtRQUNqQixpQkFBWSxHQUFZLEtBQUssQ0FBQztRQUM5QixnQkFBVyxHQUE2QixLQUFLLEVBQXFCLENBQUM7UUFDbkUsV0FBTSxHQUF1QixLQUFLLEVBQWUsQ0FBQztRQUNsRCx3QkFBbUIsR0FBdUIsSUFBSSxDQUFDO1FBQy9DLG9CQUFlLEdBQWlDLElBQUksQ0FBQztRQUNyRCw2QkFBd0IsR0FBRyxJQUFJLENBQUMsQ0FBQywyREFBMkQ7UUFPNUYscUJBQWdCLEdBQWtCLEtBQUssRUFBVSxDQUFDO1FBMVJ4RCxJQUFJLENBQUMsS0FBSyxHQUFHLGtCQUFrQixFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLGVBQWUsR0FBRywyQkFBMkIsRUFBRSxDQUFDO1FBQ3JELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLDZCQUE2QixFQUFFLENBQUM7UUFDbkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0NBQWdDLEVBQUUsQ0FBQztRQUM3RCxJQUFJLENBQUMsY0FBYyxHQUFHLFlBQVksQ0FBQyxxQkFBcUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDL0UsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFlBQVksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDM0YsSUFBSSxDQUFDLHNCQUFzQixHQUFHLFlBQVksQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFFakcsQ0FBQztJQUVELHdCQUF3QjtJQUV4QixJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQWEsVUFBVSxDQUFDLEtBQStCO1FBQ3JELElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxhQUFhLENBQUMsVUFBb0M7UUFDaEQsS0FBSyxNQUFNLFNBQVMsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUNuQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLEtBQUssU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVFLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ1QsSUFBSSxTQUFTLENBQUMsTUFBTSxJQUFJLFNBQVMsRUFBRSxDQUFDO29CQUNsQyxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUM7Z0JBQ2pDLENBQUM7Z0JBQ0QsSUFBSSxTQUFTLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7Z0JBQ3JDLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFHRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUNELElBQWEsS0FBSyxDQUFDLEtBQXlCO1FBQzFDLElBQUksQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDO1FBRXBCLE1BQU0sYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekUsTUFBTSxTQUFTLEdBQUcsUUFBUSxFQUFFLGVBQWUsRUFBRSxLQUFLLENBQUM7UUFDbkQsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNkLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUM3RCxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsS0FBSyxhQUFhLEVBQUUsQ0FBQztnQkFDMUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7WUFDbEUsQ0FBQztRQUNILENBQUM7UUFFRCwwREFBMEQ7UUFDMUQsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQUksY0FBYztRQUNoQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksV0FBVztRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztJQUMzQixDQUFDO0lBQ0QsSUFDSSxXQUFXLENBQUMsS0FBYztRQUM1QixJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSx1QkFBdUI7UUFDekIsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUM7SUFDdkMsQ0FBQztJQUNELElBQ0ksdUJBQXVCLENBQUMsS0FBYztRQUN4QyxJQUFJLENBQUMsd0JBQXdCLEdBQUcsS0FBSyxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFJLEtBQUs7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDckIsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQzdCLENBQUM7SUFFRCxJQUFJLG1CQUFtQjtRQUNyQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxxQkFBcUI7UUFDdkIsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQztJQWNELFFBQVE7UUFDTixJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUMsSUFBSSxDQUFDLFdBQVcsRUFBQyxvQkFBb0IsRUFBQyxJQUFJLEVBQUMscUJBQXFCLEVBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUM3SSxJQUFJLENBQUMsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQzNELE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzNFLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQzdELENBQUMsQ0FBQyxDQUFDO0lBRUwsQ0FBQztJQUVELGVBQWU7UUFDZCxtRUFBbUU7UUFDbkUsOEJBQThCO1FBQzdCLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixDQUFDLGNBQWMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUU7WUFDOUUsSUFBSSxDQUFDLDZCQUE2QixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDJCQUEyQjtJQUUzQix5QkFBeUI7SUFDbEIsYUFBYTtRQUNsQixPQUFPLFlBQVksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFTSxvQkFBb0I7UUFDekIsT0FBTyxZQUFZLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFTSx3QkFBd0I7UUFDN0IsT0FBTyxZQUFZLENBQUMsd0JBQXdCLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTSwyQkFBMkI7UUFDaEMsT0FBTyxZQUFZLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ3RFLENBQUM7SUFFTSxVQUFVO1FBQ2YsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGVBQWUsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlFLFVBQVUsQ0FBQyxHQUFFLEVBQUU7WUFDYixJQUFJLENBQUMsb0JBQW9CLENBQUMsYUFBYSxDQUFDLG1CQUFtQixFQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBQyxTQUFTLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsQ0FBQztRQUNuRyxDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxFQUFVO1FBQzVCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxnQkFBZ0IsQ0FBQyxNQUFjO1FBQzdCLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQztZQUM1QixPQUFPO1FBQ1QsQ0FBQztRQUVELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFFRCxtQkFBbUIsQ0FBQyxNQUFjO1FBQ2hDLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDMUIsT0FBTztRQUNULENBQUM7UUFFRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDLENBQUM7UUFDbkUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ1YsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNqQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsdUJBQXVCLENBQUMsUUFBZ0I7UUFDdEMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzNCLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFFM0IsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7SUFDaEMsQ0FBQztJQUVELGtCQUFrQixDQUFDLFFBQWdCO1FBQ2pDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDN0MsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1lBQ2hDLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUN2QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxJQUFJLENBQUM7WUFDaEMsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDOUIsQ0FBQztJQUNILENBQUM7SUFFRCxzQkFBc0IsQ0FBQyxRQUFnQjtRQUNyQyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzFCLE9BQU87UUFDVCxDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNWLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLHVCQUF1QixHQUFHLENBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDO1FBRTdELElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDLENBQUMsd0NBQXdDLENBQUM7UUFDbkksSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQyxDQUFDLDZDQUE2QyxDQUFDLENBQUMsQ0FBQyw4Q0FBOEMsQ0FBQztRQUM3SSxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsNkNBQTZDLENBQUMsQ0FBQyxDQUFDLDhDQUE4QyxDQUFDO0lBQ3ZKLENBQUM7SUFFRCx1QkFBdUI7UUFDckIsSUFBSSxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQztZQUN4QyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLENBQUM7UUFDRCxJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksQ0FBQztJQUM5QixDQUFDO0lBRUQsZUFBZSxDQUFDLE9BQWUsRUFBRSxPQUFnQjtRQUMvQyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JELE1BQU0saUJBQWlCLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztRQUV2RCxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUMzQixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsSUFBSSxLQUFLLEdBQUcsQ0FBQyxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEMsQ0FBQztRQUVELElBQUksaUJBQWlCLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFFaEUsb0hBQW9IO1lBQ3BILFdBQVcsQ0FBQyxHQUFHLEVBQUU7Z0JBQ2YsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO29CQUN2QyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztnQkFDakMsQ0FBQztZQUNILENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNYLENBQUM7SUFDSCxDQUFDO0lBRU8sV0FBVztRQUNqQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLHlCQUF5QixDQUFBLENBQUMsQ0FBQSxpQkFBaUIsQ0FBQztJQUN4RSxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQXVCO1FBQ2pDLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN6QixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDekIsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsRUFBQyxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUMsU0FBUyxFQUFDLE9BQU8sRUFBQyxPQUFPLENBQUMsQ0FBQTtJQUMzRyxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBa0JELDRCQUE0QjtJQUU1QiwwQkFBMEI7SUFDbEIsNkJBQTZCO1FBQ25DLE9BQU8sWUFBWSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDaEosQ0FBQztJQUVPLGdDQUFnQztRQUN0QyxPQUFPLFlBQVksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxjQUFjLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNoSSxDQUFDO0lBRU8sNkJBQTZCLENBQUMsVUFBOEI7UUFDbEUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBQyxVQUFVLEVBQUMsQ0FBQyxFQUFDLENBQUMsRUFBQyxJQUFJLENBQUMsQ0FBQztJQUNuRyxDQUFDO0lBRU8scUJBQXFCO1FBQzNCLEtBQUksTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssRUFBQyxDQUFDO1lBQzVCLElBQUcsSUFBSSxDQUFDLE1BQU0sS0FBSyxJQUFJO2dCQUNyQixPQUFPLElBQUksQ0FBQztRQUNoQixDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU8sc0JBQXNCO1FBQzVCLElBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLEVBQUMsQ0FBQztZQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN2QixDQUFDO2FBQUksQ0FBQztZQUNKLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLENBQUM7SUFDSCxDQUFDOytHQWhVVSx1QkFBdUI7bUdBQXZCLHVCQUF1Qix3SkFzRWQsZ0JBQWdCLG1GQVFoQixnQkFBZ0IsNENBeUJoQixnQkFBZ0IseUNBQ2hCLGdCQUFnQixzQ0FDaEIsZ0JBQWdCLDJGQTlHekIsQ0FBQyxnQkFBZ0IsQ0FBQyxpREMxTy9CLDBxSkE0SEEsdSsvQ0R3R0ksZUFBZSwyRkFDZixZQUFZLDhWQUNaLG9CQUFvQix1R0FDcEIsdUJBQXVCLDJHQUN2QixrQkFBa0I7OzRGQU9ULHVCQUF1QjtrQkFmbkMsU0FBUzsrQkFDRSxzQkFBc0IsY0FDcEIsSUFBSSxXQUNQO3dCQUNQLGVBQWU7d0JBQ2YsWUFBWTt3QkFDWixvQkFBb0I7d0JBQ3BCLHVCQUF1Qjt3QkFDdkIsa0JBQWtCO3FCQUNuQixhQUNVLENBQUMsZ0JBQWdCLENBQUMsaUJBR2QsaUJBQWlCLENBQUMsU0FBUztxTEF3QjdCLFVBQVU7c0JBQXRCLEtBQUs7Z0JBeUJPLEtBQUs7c0JBQWpCLEtBQUs7Z0JBd0JGLFdBQVc7c0JBRGQsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFTbEMsdUJBQXVCO3NCQUQxQixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQXlCRSxVQUFVO3NCQUFqRCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQUNFLFNBQVM7c0JBQWhELEtBQUs7dUJBQUMsRUFBRSxTQUFTLEVBQUUsZ0JBQWdCLEVBQUU7Z0JBQ0UsUUFBUTtzQkFBL0MsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFDNUIsV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQsIFZpZXdFbmNhcHN1bGF0aW9uLCBib29sZWFuQXR0cmlidXRlLCBFbGVtZW50UmVmLCBPbkluaXQsIEFmdGVyVmlld0luaXQgIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEJpbXBsdXNMb2NhbGl6ZWRXaWRnZXRDb21wb25lbnQgfSBmcm9tIFwiLi8uLi9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQvYmltcGx1cy1sb2NhbGl6ZWQtd2lkZ2V0LmNvbXBvbmVudFwiXHJcbmltcG9ydCB7IFRyYW5zbGF0ZVNlcnZpY2UsIFRyYW5zbGF0ZU1vZHVsZSB9IGZyb20gJ0BuZ3gtdHJhbnNsYXRlL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgU1ZHR2VuZXJhdG9yIH0gZnJvbSAnLi9zdmdHZW5lcmF0b3InO1xyXG5pbXBvcnQgeyBUb29sSHViSXRlbUNvbXBvbmVudCB9IGZyb20gJy4vdG9vbC1odWItaXRlbS90b29sLWh1Yi1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFRvb2xIdWJTdWJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi90b29sLWh1Yi1zdWItaXRlbS90b29sLWh1Yi1zdWItaXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBEcmFnZ2FibGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2RyYWdnYWJsZS5kaXJlY3RpdmUnXHJcbmltcG9ydCB7IFRvb2xIdWJJdGVtLCBUb29sSHViU3ViSXRlbSwgVG9vbEh1YlZpc3VhbFNldHRpbmdzLCBUb29sSHViSXRlbVVuaXRzLCBUb29sSHViSXRlbVN0YXRlcyB9IGZyb20gJy4vYmltcGx1cy10b29sLWh1Yi5pbnRlcmZhY2UnO1xyXG5pbXBvcnQgeyBMYXlvdXRNYW5hZ2VyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2xheW91dC1tYW5hZ2VyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBSZXNpemVPYnNlcnZlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9yZXNpemUtb2JzZXJ2ZXIuc2VydmljZSc7XHJcbi8vaW1wb3J0IHsgZmlyZUV2ZW50IH0gZnJvbSAnLi4vLi4vdXRpbHMvdXRpbHMnO1xyXG5cclxuZnVuY3Rpb24gY3JlYXRlRGVmYXVsdFZpc3VhbFNldHRpbmdzKCk6IFRvb2xIdWJWaXN1YWxTZXR0aW5ncyB7XHJcbiAgY29uc3Qgc2V0dGluZ3M6IFRvb2xIdWJWaXN1YWxTZXR0aW5ncyA9IHtcclxuICAgIHN1Yk1lbnVTdGFydEFuZ2xlOiA0MCxcclxuICAgIHN1Yk1lbnVFbmRBbmdsZTogMTQwLFxyXG4gICAgc3ZnUmFkaXVzSW5uZXI6IDUuNzUsXHJcbiAgICBzdmdSYWRpdXM6IDEwLjI1LFxyXG4gICAgc3ViTWVudUNlbnRlcjogWzE3LjI1LCAxNy41XSxcclxuICAgIHN1Yk1lbnVSYWRpdXM6IDE1LjUsXHJcbiAgICBzdWJNZW51V2lkdGg6IDUyLFxyXG4gICAgZGVhZFpvbmVDZW50ZXI6IFsxNywgMThdLFxyXG4gICAgZGVhZFpvbmVXaWR0aDogMTQwLFxyXG4gICAgZGVhZFpvbmVSYWRpdXM6IDIyLFxyXG4gICAgZGVhZFpvbmVTdGFydEFuZ2xlOiAzNSxcclxuICAgIGRlYWRab25lRW5kQW5nbGU6IDE0NVxyXG4gIH1cclxuICByZXR1cm4gc2V0dGluZ3M7XHJcbn1cclxuXHJcbi8vIFVzZSB3aGVuIGltcGxlbWVudGluZyBlbWJlZGRlZCBtb2RlXHJcbi8vIGZ1bmN0aW9uIGNyZWF0ZUVtYmVkZGVkU2V0dGluZ3MoKSA6IFRvb2xIdWJWaXN1YWxTZXR0aW5nc3tcclxuLy8gICBjb25zdCBzZXR0aW5ncyA6IFRvb2xIdWJWaXN1YWxTZXR0aW5ncyA9IHtcclxuLy8gICAgIHN1Yk1lbnVTdGFydEFuZ2xlIDogNDAsXHJcbi8vICAgICBzdWJNZW51RW5kQW5nbGUgOiAxNDAsXHJcbi8vICAgICBzdmdSYWRpdXNJbm5lciA6IDQsXHJcbi8vICAgICBzdmdSYWRpdXMgOiA3LjI1LFxyXG4vLyAgICAgc3ViTWVudUNlbnRlciA6IFsxNy4yNSwgMTcuM10sXHJcbi8vICAgICBzdWJNZW51UmFkaXVzIDogMTYuMixcclxuLy8gICAgIHN1Yk1lbnVXaWR0aCA6IDYyLFxyXG4vLyAgICAgZGVhZFpvbmVDZW50ZXIgOiBbMTYuNSwgMTZdLFxyXG4vLyAgICAgZGVhZFpvbmVXaWR0aCA6IDEyMCxcclxuLy8gICAgIGRlYWRab25lUmFkaXVzIDogMTgsXHJcbi8vICAgICBkZWFkWm9uZVN0YXJ0QW5nbGUgOiAzNSxcclxuLy8gICAgIGRlYWRab25lRW5kQW5nbGUgOiAxNDVcclxuLy8gICB9XHJcbi8vICAgcmV0dXJuIHNldHRpbmdzO1xyXG4vLyB9XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVEZWZhdWx0SXRlbXMoKTogQXJyYXk8VG9vbEh1Ykl0ZW0+IHtcclxuICBjb25zdCBpdGVtczogQXJyYXk8VG9vbEh1Ykl0ZW0+ID0gW1xyXG4gICAgLy8tLS0gY3JlYXRlIHRhc2sgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICB7XHJcbiAgICAgIGJ1dHRvbklkOiAnY21CdXRDcmVhdGVUYXNrJyxcclxuICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1jcmVhdGUtdGFzaycsXHJcbiAgICAgIHRleHQ6ICdfQ3JlYXRlX2lzc3VlX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwOiAnX0NyZWF0ZV9pc3N1ZV9jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgdG9vbHRpcERpc2FibGVkOiAnX0NyZWF0ZV9pc3N1ZV9jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgIH0sXHJcblxyXG4gICAgLy8tLS0gcXVhbnRpdHkgdGFrZW9mZiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIHtcclxuICAgICAgYnV0dG9uSWQ6ICdjbUJ1dFF1YW50aXR5VGFrZU9mZicsXHJcbiAgICAgIGljb25DbGFzczogJ3VpLWljb24tcXVhbnRpdHktdGFrZS1vZmYnLFxyXG4gICAgICB0ZXh0OiAnX1F1YW50aXR5X3Rha2VfT2ZmX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwOiAnX1F1YW50aXR5X3Rha2VfT2ZmX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwRGlzYWJsZWQ6ICdfUXVhbnRpdHlfdGFrZV9PZmZfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICB9LFxyXG5cclxuICAgIC8vLS0tIG1hcmt1cCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIHtcclxuICAgICAgYnV0dG9uSWQ6ICdjbUJ1dE1hcmt1cCcsXHJcbiAgICAgIGljb25DbGFzczogJ3VpLWljb24tbWFya3VwJyxcclxuICAgICAgdGV4dDogJ19NYXJrdXBzX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwOiAnX01hcmt1cHNfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19NYXJrdXBzX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgfSxcclxuXHJcbiAgICAvLy0tLSBzZWN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAge1xyXG4gICAgICBidXR0b25JZDogJ2NtQnV0U2VjdGlvbicsXHJcbiAgICAgIGljb25DbGFzczogJ3VpLWljb24tc2VjdGlvbicsXHJcbiAgICAgIHRleHQ6ICdfU2VjdGlvbmluZ19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgdG9vbHRpcDogJ19TZWN0aW9uaW5nX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwRGlzYWJsZWQ6ICdfU2VjdGlvbmluZ19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgIH0sXHJcblxyXG4gICAgLy8tLS0gaGlkZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIHtcclxuICAgICAgYnV0dG9uSWQ6ICdjbUJ1dE9ialRyYW5zcE1lbnUnLFxyXG4gICAgICBpY29uQ2xhc3M6ICd1aS1pY29uLW9iai10cmFuc3AnLFxyXG4gICAgICB0ZXh0OiAnX0hpZGVfb2JqZWN0c19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgdG9vbHRpcDogJ19IaWRlX29iamVjdHNfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19IaWRlX29iamVjdHNfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICB9LFxyXG5cclxuICAgIC8vLS0tIGlzb2xhdGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICB7XHJcbiAgICAgIGJ1dHRvbklkOiAnY21CdXRPYmpTZWwnLFxyXG4gICAgICBpY29uQ2xhc3M6ICd1aS1pY29uLW9iai1zZWxlY3QnLFxyXG4gICAgICB0ZXh0OiAnX0lzb2xhdGVfb2JqZWN0c19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgdG9vbHRpcDogJ19Jc29sYXRlX29iamVjdHNfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19Jc29sYXRlX29iamVjdHNfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICB9LFxyXG5cclxuICAgIC8vLS0tIG5hdmlnYXRpb24gbWFwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAge1xyXG4gICAgICBidXR0b25JZDogJ2NtQnV0TmF2aWdhdGlvbk1hcCcsXHJcbiAgICAgIGljb25DbGFzczogJ3VpLWljb24tbmF2aWdhdGlvbi1tYXAnLFxyXG4gICAgICB0ZXh0OiAnX05hdmlnYXRpb25fbmFwX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwOiAnX05hdmlnYXRpb25fbmFwX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwRGlzYWJsZWQ6ICdfTmF2aWdhdGlvbl9uYXBfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICB9LFxyXG5cclxuICAgIC8vLS0tIGZ1bGxzY3JlZW4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAge1xyXG4gICAgICBidXR0b25JZDogJ2NtQnV0RnVsbFNjcmVlbicsXHJcbiAgICAgIGljb25DbGFzczogJ3VpLWljb24tZnVsbHNjcmVlbicsXHJcbiAgICAgIHRleHQ6ICdfRnVsbHNjcmVlbl9ub2RlX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwOiAnX0Z1bGxzY3JlZW5fbm9kZV9jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgdG9vbHRpcERpc2FibGVkOiAnX0Z1bGxzY3JlZW5fbm9kZV9jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgIH0sXHJcblxyXG4gICAgLy8tLS0gcHJvamVjdCBuYXZpZ2F0b3IgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICB7XHJcbiAgICAgIGJ1dHRvbklkOiAnY21CdXRQcm9qZWN0TmF2aWdhdG9yJyxcclxuICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1wcm9qZWN0LW5hdmlnYXRvcicsXHJcbiAgICAgIHRleHQ6ICdfUHJvamVjdF9uYXZpZ2F0b3JfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXA6ICdfUHJvamVjdF9uYXZpZ2F0b3JfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19Qcm9qZWN0X25hdmlnYXRvcl9jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgIH0sXHJcblxyXG4gICAgLy8tLS0gcmVzZXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICB7XHJcbiAgICAgIGljb25DbGFzczogJ3VpLWljb24tb2JqLXJlc2V0JyxcclxuICAgICAgYnV0dG9uSWQ6ICdjbUJ1dFJlc2V0T2JqJyxcclxuICAgICAgdGV4dDogJ19SZXNldF92aWV3cG9ydF9jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgdG9vbHRpcDogJ19SZXNldF92aWV3cG9ydF9jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgdG9vbHRpcERpc2FibGVkOiAnX1Jlc2V0X3ZpZXdwb3J0X2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgfSxcclxuXHJcbiAgICAvLy0tLSB2aWV3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAge1xyXG4gICAgICBidXR0b25JZDogJ2NtQnV0UmVzZXRWcCcsXHJcbiAgICAgIGljb25DbGFzczogJ3VpLWljb24tcmVzZXQtdnAnLFxyXG4gICAgICB0ZXh0OiAnX1NlbGVjdF92aWV3X2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwOiAnX1NlbGVjdF92aWV3X2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwRGlzYWJsZWQ6ICdfU2VsZWN0X3ZpZXdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHN1Yk1lbnVJZDogJ2NtYi12aWV3LXN1Ym1lbnUnLFxyXG4gICAgICBzdWJJdGVtczogW1xyXG4gICAgICAgIC8vLS0tIEZyb250IFZpZXcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgYnV0dG9uSWQ6ICdjbUJ1dEZyb250VmlldycsXHJcbiAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcclxuICAgICAgICAgIGljb25DbGFzczogJ3VpLWljb24tZnJvbnQtdmlldycsXHJcbiAgICAgICAgICB0ZXh0OiAnX0Zyb250X3ZpZXdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgICAgICB0b29sdGlwOiAnX0Zyb250X3ZpZXdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgICAgICB0b29sdGlwRGlzYWJsZWQ6ICdfRnJvbnRfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIGFjdGlvbkNsaWNrOiAnY2VudGVyTWVudUZyb250Vmlld0NsaWNrJyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vLS0tIFRvcCBWaWV3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGJ1dHRvbklkOiAnY21CdXRUb3BWaWV3JyxcclxuICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxyXG4gICAgICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi10b3AtdmlldycsXHJcbiAgICAgICAgICB0ZXh0OiAnX1RvcF92aWV3X2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICAgICAgdG9vbHRpcDogJ19Ub3Bfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19Ub3Bfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIGFjdGlvbkNsaWNrOiAnY2VudGVyTWVudVRvcFZpZXdDbGljaycsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLy0tLSBTaWRlIFZpZXcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgYnV0dG9uSWQ6ICdjbUJ1dFNpZGVWaWV3JyxcclxuICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxyXG4gICAgICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1zaWRlLXZpZXcnLFxyXG4gICAgICAgICAgdGV4dDogJ19TaWRlX3ZpZXdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgICAgICB0b29sdGlwOiAnX1NpZGVfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19TaWRlX3ZpZXdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgICAgICBhY3Rpb25DbGljazogJ2NlbnRlck1lbnVTaWRlVmlld0NsaWNrJyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vLS0tIFBlcnNwZWN0aXZlIFZpZXcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgYnV0dG9uSWQ6ICdjbUJ1dFBlcnNwZWN0aXZlVmlldycsXHJcbiAgICAgICAgICB0eXBlOiAnYnV0dG9uJyxcclxuICAgICAgICAgIGljb25DbGFzczogJ3VpLWljb24tcGVyc3BlY3RpdmUtdmlldycsXHJcbiAgICAgICAgICB0ZXh0OiAnX1BlcnNwZWN0aXZlX3ZpZXdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgICAgICB0b29sdGlwOiAnX1BlcnNwZWN0aXZlX3ZpZXdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgICAgICB0b29sdGlwRGlzYWJsZWQ6ICdfUGVyc3BlY3RpdmVfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIGFjdGlvbkNsaWNrOiAnY2VudGVyTWVudVBlcnNwZWN0aXZlVmlld0NsaWNrJyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vLS0tIFNlcGFyYXRvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgICB7XHJcbiAgICAgICAgICBidXR0b25JZDogJ3Rvb2xodWJTdWJtZW51U2VwYXJhdG9ySWQxJyxcclxuICAgICAgICAgIHR5cGU6ICdzZXBhcmF0b3InLFxyXG4gICAgICAgICAgaWNvbkNsYXNzOiAnY2VudGVyLXN1Yi1tZW51LWJ1dHRvbi1pY29uIHRvb2xodWItc3VibWVudS1zZXBhcmF0b3InLFxyXG4gICAgICAgICAgdGV4dDogJycsXHJcbiAgICAgICAgICB0b29sdGlwOiAnJyxcclxuICAgICAgICAgIHRvb2x0aXBEaXNhYmxlZDogJycsXHJcbiAgICAgICAgICBhY3Rpb25DbGljazogJycsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAvLy0tLSBUb2dnbGUgYnV0dG9uIHBlcnNwZWN0aXZlL29ydGhvZ29uYWwgcHJvamVjdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGJ1dHRvbklkOiAnY21CdXRUb2dnbGVQcm9qZWN0aW9uJyxcclxuICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxyXG4gICAgICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1wZXJzcGVjdGl2ZS1jYW1lcmEtcHJvamVjdGlvbicsXHJcbiAgICAgICAgICB0ZXh0OiAnX1BlcnNwZWN0aXZlX3Byb2plY3Rpb25fY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgICAgICB0b29sdGlwOiAnX1BlcnNwZWN0aXZlX3Byb2plY3Rpb25fY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgICAgICB0b29sdGlwRGlzYWJsZWQ6ICdfUGVyc3BlY3RpdmVfcHJvamVjdGlvbl9jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIGFjdGlvbkNsaWNrOiAnY2VudGVyTWVudVRvZ2dsZVByb2plY3Rpb24nLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF1cclxuICAgIH1cclxuICBdXHJcblxyXG4gIC8vIFNldCBhbGwgdG9vbCBodWIgaXRlbXMgc3RhdGVzIHRvIGluYWN0aXZlIGFuZCBkaXNhYmxlZC4gSG9zdCBBcHAgbXVzdCBkZWZpbmUgc3RhdGVzXHJcbiAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHsgaXRlbS5hY3RpdmUgPSBmYWxzZTsgaXRlbS5kaXNhYmxlZCA9IHRydWUgfSlcclxuXHJcbiAgcmV0dXJuIGl0ZW1zO1xyXG59XHJcblxyXG5jb25zdCBERUZBVUxUX1BPU0lUSU9OX0xFRlQgPSAzNTA7XHJcbmNvbnN0IERFRkFVTFRfUE9TSVRJT05fVE9QICA9IDY3MDtcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYmltcGx1cy10b29sLWh1YicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBUb29sSHViSXRlbUNvbXBvbmVudCxcclxuICAgIFRvb2xIdWJTdWJJdGVtQ29tcG9uZW50LFxyXG4gICAgRHJhZ2dhYmxlRGlyZWN0aXZlXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtUcmFuc2xhdGVTZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmltcGx1cy10b29sLWh1Yi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2JpbXBsdXMtdG9vbC1odWIuY29tcG9uZW50Lmxlc3MnLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLlNoYWRvd0RvbVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmltcGx1c1Rvb2xIdWJDb21wb25lbnQgZXh0ZW5kcyBCaW1wbHVzTG9jYWxpemVkV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LEFmdGVyVmlld0luaXQge1xyXG4gIGNvbnN0cnVjdG9yKHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBsYXlvdXRNYW5hZ2VyU2VydmljZTogTGF5b3V0TWFuYWdlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZXNpemVPYnNlcnZlclNlcnZpY2U6UmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZikge1xyXG4gICAgc3VwZXIodHJhbnNsYXRlU2VydmljZSk7XHJcbiAgICAgICAgICAgXHJcbiAgICB0aGlzLml0ZW1zID0gY3JlYXRlRGVmYXVsdEl0ZW1zKCk7XHJcbiAgICB0aGlzLl92aXN1YWxTZXR0aW5ncyA9IGNyZWF0ZURlZmF1bHRWaXN1YWxTZXR0aW5ncygpO1xyXG4gICAgdGhpcy5fdW5pdHMgPSB0aGlzLmNhbGN1bGF0ZUN1cnJlbnRNZW51SXRlbVVuaXRzKCk7XHJcbiAgICB0aGlzLl9zdWJNZW51VW5pdHMgPSB0aGlzLmNhbGN1bGF0ZUN1cnJlbnRTdWJNZW51SXRlbVVuaXRzKCk7XHJcbiAgICB0aGlzLl9hbm51bGFyU2VjdG9yID0gU1ZHR2VuZXJhdG9yLmdlbmVyYXRlQW5udWxhclNlY3Rvcih0aGlzLl92aXN1YWxTZXR0aW5ncyk7XHJcbiAgICB0aGlzLl9hbm51bGFyU2VjdG9yQm9yZGVyID0gU1ZHR2VuZXJhdG9yLmdlbmVyYXRlQW5udWxhclNlY3RvckJvcmRlcih0aGlzLl92aXN1YWxTZXR0aW5ncyk7XHJcbiAgICB0aGlzLl9kZWFkWm9uZUFubnVsYXJTZWN0b3IgPSBTVkdHZW5lcmF0b3IuZ2VuZXJhdGVEZWFkWm9uZUFubnVsYXJTZWN0b3IodGhpcy5fdmlzdWFsU2V0dGluZ3MpO1xyXG5cclxuICB9XHJcblxyXG4gIC8vICNyZWdpb24gcHVibGljIGZpZWxkc1xyXG4gIFxyXG4gIGdldCBpdGVtU3RhdGVzKCk6IEFycmF5PFRvb2xIdWJJdGVtU3RhdGVzPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXRlbVN0YXRlcztcclxuICB9XHJcbiAgQElucHV0KCkgc2V0IGl0ZW1TdGF0ZXModmFsdWU6IEFycmF5PFRvb2xIdWJJdGVtU3RhdGVzPikge1xyXG4gICAgdGhpcy5faXRlbVN0YXRlcyA9IHZhbHVlO1xyXG4gICAgdGhpcy5zZXRJdGVtU3RhdGVzKHRoaXMuX2l0ZW1TdGF0ZXMpO1xyXG4gIH1cclxuXHJcbiAgc2V0SXRlbVN0YXRlcyhpdGVtU3RhdGVzOiBBcnJheTxUb29sSHViSXRlbVN0YXRlcz4pIHtcclxuICAgIGZvciAoY29uc3QgaXRlbVN0YXRlIG9mIGl0ZW1TdGF0ZXMpIHtcclxuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuX2l0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLmJ1dHRvbklkID09PSBpdGVtU3RhdGUuYnV0dG9uSWQpO1xyXG4gICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgIGlmIChpdGVtU3RhdGUuYWN0aXZlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgaXRlbS5hY3RpdmUgPSBpdGVtU3RhdGUuYWN0aXZlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbVN0YXRlLmRpc2FibGVkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGl0ZW0uZGlzYWJsZWQgPSBpdGVtU3RhdGUuZGlzYWJsZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fdXBkYXRlQWN0aXZhdGlvblN0YXRlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0IGl0ZW1zKCk6IEFycmF5PFRvb2xIdWJJdGVtPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHNldCBpdGVtcyh2YWx1ZTogQXJyYXk8VG9vbEh1Ykl0ZW0+KSB7XHJcbiAgICB0aGlzLl9pdGVtcyA9IHZhbHVlO1xyXG5cclxuICAgIGNvbnN0IGJ1dHRvbnNMZW5ndGggPSAodGhpcy5faXRlbXM/Lmxlbmd0aCkgPiAwID8gdGhpcy5faXRlbXMubGVuZ3RoIDogMTtcclxuICAgIGNvbnN0IHJvb3RTdHlsZSA9IGRvY3VtZW50Py5kb2N1bWVudEVsZW1lbnQ/LnN0eWxlO1xyXG4gICAgaWYgKHJvb3RTdHlsZSkge1xyXG4gICAgICBjb25zdCBtZW51SXRlbXMgPSByb290U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShcIi0tbWVudS1pdGVtc1wiKTtcclxuICAgICAgaWYgKHBhcnNlSW50KG1lbnVJdGVtcykgIT09IGJ1dHRvbnNMZW5ndGgpIHtcclxuICAgICAgICByb290U3R5bGUuc2V0UHJvcGVydHkoXCItLW1lbnUtaXRlbXNcIiwgYnV0dG9uc0xlbmd0aC50b1N0cmluZygpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFRyYW5zZmVyIGRpc2FibGVkIHN0YXRlcywgd2hpY2ggY2FuIGRlZmluZWQgYnkgaG9zdCBhcHBcclxuICAgIHRoaXMuc2V0SXRlbVN0YXRlcyh0aGlzLl9pdGVtU3RhdGVzKTtcclxuICB9XHJcblxyXG4gIGdldCBhY3RpdmVTdWJJdGVtcygpOiBBcnJheTxUb29sSHViU3ViSXRlbT4gfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl9hY3RpdmVTdWJJdGVtcztcclxuICB9XHJcblxyXG4gIGdldCBpc0NvbGxhcHNlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc0NvbGxhcHNlZDtcclxuICB9XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXHJcbiAgc2V0IGlzQ29sbGFwc2VkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pc0NvbGxhcHNlZCA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzUGVyc3BlY3RpdmVQcm9qZWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzUGVyc3BlY3RpdmVQcm9qZWN0aW9uO1xyXG4gIH1cclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcclxuICBzZXQgaXNQZXJzcGVjdGl2ZVByb2plY3Rpb24odmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2lzUGVyc3BlY3RpdmVQcm9qZWN0aW9uID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgdW5pdHMoKTogVG9vbEh1Ykl0ZW1Vbml0cyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdW5pdHM7XHJcbiAgfVxyXG5cclxuICBnZXQgc3ViTWVudVVuaXRzKCk6IFRvb2xIdWJJdGVtVW5pdHMge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N1Yk1lbnVVbml0cztcclxuICB9XHJcblxyXG4gIGdldCBhbm51bGFyU2VjdG9yKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fYW5udWxhclNlY3RvcjtcclxuICB9XHJcblxyXG4gIGdldCBhbm51bGFyU2VjdG9yQm9yZGVyKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fYW5udWxhclNlY3RvckJvcmRlcjtcclxuICB9XHJcblxyXG4gIGdldCBkZWFkWm9uZUFubnVsYXJTZWN0b3IoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWFkWm9uZUFubnVsYXJTZWN0b3I7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNFbWJlZGRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0ZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNBY3RpdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBPdXRwdXQoKSBpdGVtQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBzdWJJdGVtQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIFxyXG4gIC8vIERlZmluZSBldmVudCBoYW5kbGVyIGZvciByZXVzaW5nIGRyYWdnYWJsZSBhbHNvIGZyb20gcmVzaXplIHBhcmVudCBcclxuICAvL0BPdXRwdXQoKSByZXNpemVkcmFnZ2luZyA9IG5ldyBFdmVudEVtaXR0ZXI8W251bWJlcixudW1iZXJdPigpO1xyXG5cclxuICBwcml2YXRlIGNvbXBvbmVudElkID0gJ2NlbnRlci1tZW51LWZwLWlkJztcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7ICAvLyBJbml0aWFsaXplIHRvIG51bGxcclxuXHJcbiAgbmdPbkluaXQoKTp2b2lkeyAgIFxyXG4gICAgdGhpcy5sYXlvdXRNYW5hZ2VyU2VydmljZS5yZWdpc3Rlck9iamVjdCh0aGlzLmVsZW1lbnQsdGhpcy5jb21wb25lbnRJZCwnI2NlbnRlci1tZW51LWZwLWlkJyx0cnVlLERFRkFVTFRfUE9TSVRJT05fTEVGVCxERUZBVUxUX1BPU0lUSU9OX1RPUCk7XHJcbiAgICB0aGlzLmxheW91dE1hbmFnZXJTZXJ2aWNlLnJlZ2lzdGVyZWRJdGVtcyQuc3Vic2NyaWJlKGl0ZW1zID0+IHtcclxuICAgICAgY29uc3QgbGF5b3V0TWFuYWdlckl0ZW0gPSBpdGVtcy5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gdGhpcy5jb21wb25lbnRJZCk7XHJcbiAgICAgIHRoaXMuaXNDb2xsYXBzZWQgPSBCb29sZWFuKGxheW91dE1hbmFnZXJJdGVtPy5pc0NvbGxhcHNlZCk7ICAgICAgXHJcbiAgICB9KTtcclxuICAgIFxyXG4gIH1cclxuICBcclxuICBuZ0FmdGVyVmlld0luaXQoKTp2b2lke1xyXG4gICAvLyBpZiB0aGUgY29tcG9uZW50IHdhbnRzIHRvIGJlIHJlZ2lzdGVyZWQgaW4gbGF5b3V0IG1hbmFnZXIgc3lzdGVtXHJcbiAgIC8vIFN1YnNjcmliZSB0byB0aGUgb2JzZXJ2YWJsZVxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS5wYXJlbnRBcHBSZWN0JC5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICB0aGlzLmhhbmRsZVBhcmVudEFwcFJlY3RTaXplQ2hhbmdlKHZhbHVlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBcclxuICAvLyAjZW5kcmVnaW9uIHB1YmxpYyBmaWVsZHNcclxuIFxyXG4gIC8vICNyZWdpb24gcHVibGljIG1ldGhvZHNcclxuICBwdWJsaWMgZ2V0U1ZHVmlld0JveCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFNWR0dlbmVyYXRvci5nZXRTVkdWaWV3Qm94KHRoaXMuX3VuaXRzKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTVkdDZW50ZXJNZW51UGF0aCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFNWR0dlbmVyYXRvci5nZXRTVkdDZW50ZXJNZW51UGF0aCh0aGlzLl91bml0cyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U1ZHQ2VudGVyTWVudUl0ZW1QYXRoKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gU1ZHR2VuZXJhdG9yLmdldFNWR0NlbnRlck1lbnVJdGVtUGF0aCh0aGlzLl91bml0cyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U1ZHQ2VudGVyU3ViTWVudUl0ZW1QYXRoKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gU1ZHR2VuZXJhdG9yLmdldFNWR0NlbnRlclN1Yk1lbnVJdGVtUGF0aCh0aGlzLl9zdWJNZW51VW5pdHMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvZ2dsZU1lbnUoKSB7XHJcbiAgICB0aGlzLmxheW91dE1hbmFnZXJTZXJ2aWNlLnVwZGF0ZUNvbGxhcHNlZCghdGhpcy5pc0NvbGxhcHNlZCx0aGlzLmNvbXBvbmVudElkKTtcclxuICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgdGhpcy5sYXlvdXRNYW5hZ2VyU2VydmljZS5jaGVja1Bvc2l0aW9uKCdjZW50ZXItbWVudS1mcC1pZCcsdGhpcy5nZXRTZWxlY3RvcigpLHVuZGVmaW5lZCwwLDAsdHJ1ZSk7ICAgICAgXHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBmaW5kVG9vbEh1Ykl0ZW1CeUlkKGlkOiBzdHJpbmcpOiBUb29sSHViSXRlbSB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5faXRlbXMuZmluZCh4ID0+IHguYnV0dG9uSWQgPT09IGlkKTtcclxuICB9XHJcblxyXG4gIGNsaWNrVG9vbEh1Ykl0ZW0oYWN0aW9uOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZpbmRUb29sSHViSXRlbUJ5SWQoYWN0aW9uKTtcclxuICAgIGlmICghaXRlbSB8fCBpdGVtPy5kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pdGVtQ2xpY2tlZC5lbWl0KGFjdGlvbik7XHJcbiAgfVxyXG5cclxuICBjbGlja1Rvb2xIdWJTdWJJdGVtKGFjdGlvbjogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRoaXMuX2FjdGl2ZVN1Ykl0ZW1zKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpdGVtID0gdGhpcy5fYWN0aXZlU3ViSXRlbXMuZmluZCh4ID0+IHguYnV0dG9uSWQgPT09IGFjdGlvbik7XHJcbiAgICBpZiAoIWl0ZW0pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3ViSXRlbUNsaWNrZWQuZW1pdChhY3Rpb24pO1xyXG4gICAgdGhpcy5jbG9zZUFjdGl2ZVN1Ykl0ZW1zVmlldygpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlVG9vbEh1Ykl0ZW1BY3RpdmUoYnV0dG9uSWQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZmluZFRvb2xIdWJJdGVtQnlJZChidXR0b25JZCk7XHJcbiAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaXRlbS5hY3RpdmUgPSAhaXRlbS5hY3RpdmU7XHJcblxyXG4gICAgdGhpcy5fdXBkYXRlQWN0aXZhdGlvblN0YXRlKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVTdWJJdGVtc1ZpZXcoYnV0dG9uSWQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZmluZFRvb2xIdWJJdGVtQnlJZChidXR0b25JZCk7XHJcbiAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kaXNhYmxlZCB8fCAhaXRlbS5zdWJJdGVtcykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaXRlbS5hY3RpdmUgPSAhaXRlbS5hY3RpdmU7XHJcbiAgICBpZiAoaXRlbS5hY3RpdmUpIHtcclxuICAgICAgdGhpcy5fYWN0aXZlU3ViSXRlbXNWaWV3ID0gaXRlbTtcclxuICAgICAgdGhpcy5fYWN0aXZlU3ViSXRlbXMgPSBpdGVtLnN1Ykl0ZW1zO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fYWN0aXZlU3ViSXRlbXNWaWV3ID0gbnVsbDtcclxuICAgICAgdGhpcy5fYWN0aXZlU3ViSXRlbXMgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQ2FtZXJhUHJvamVjdGlvbihidXR0b25JZDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRoaXMuX2FjdGl2ZVN1Ykl0ZW1zKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpdGVtID0gdGhpcy5fYWN0aXZlU3ViSXRlbXMuZmluZCh4ID0+IHguYnV0dG9uSWQgPT09IGJ1dHRvbklkKTtcclxuICAgIGlmICghaXRlbSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc1BlcnNwZWN0aXZlUHJvamVjdGlvbiA9ICF0aGlzLmlzUGVyc3BlY3RpdmVQcm9qZWN0aW9uO1xyXG5cclxuICAgIGl0ZW0uaWNvbkNsYXNzID0gdGhpcy5pc1BlcnNwZWN0aXZlUHJvamVjdGlvbiA/ICd1aS1pY29uLXBlcnNwZWN0aXZlLWNhbWVyYS1wcm9qZWN0aW9uJyA6ICd1aS1pY29uLW9ydGhvZ3JhcGhpYy1jYW1lcmEtcHJvamVjdGlvbic7XHJcbiAgICBpdGVtLnRvb2x0aXAgPSB0aGlzLmlzUGVyc3BlY3RpdmVQcm9qZWN0aW9uID8gJ19QZXJzcGVjdGl2ZV9wcm9qZWN0aW9uX2NlbnRlcl9tZW51X3Rvb2x0aXAnIDogJ19PcnRob2dyYXBoaWNfcHJvamVjdGlvbl9jZW50ZXJfbWVudV90b29sdGlwJztcclxuICAgIGl0ZW0udG9vbHRpcERpc2FibGVkID0gdGhpcy5pc1BlcnNwZWN0aXZlUHJvamVjdGlvbiA/ICdfUGVyc3BlY3RpdmVfcHJvamVjdGlvbl9jZW50ZXJfbWVudV90b29sdGlwJyA6ICdfT3J0aG9ncmFwaGljX3Byb2plY3Rpb25fY2VudGVyX21lbnVfdG9vbHRpcCc7XHJcbiAgfVxyXG5cclxuICBjbG9zZUFjdGl2ZVN1Ykl0ZW1zVmlldygpIHtcclxuICAgIGlmICh0aGlzLl9hY3RpdmVTdWJJdGVtc1ZpZXcpIHtcclxuICAgICAgdGhpcy5fYWN0aXZlU3ViSXRlbXNWaWV3LmFjdGl2ZSA9IGZhbHNlO1xyXG4gICAgICB0aGlzLl9hY3RpdmVTdWJJdGVtc1ZpZXcgPSBudWxsO1xyXG4gICAgfVxyXG4gICAgdGhpcy5fYWN0aXZlU3ViSXRlbXMgPSBudWxsO1xyXG4gIH1cclxuXHJcbiAgc2V0SG92ZXJlZFN0YXRlKGVsZW1lbnQ6IHN0cmluZywgaG92ZXJlZDogYm9vbGVhbikge1xyXG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl9ob3ZlcmVkRWxlbWVudHMuaW5kZXhPZihlbGVtZW50KTtcclxuICAgIGNvbnN0IHN0b3JlZENvdW50SG92ZXJkID0gdGhpcy5faG92ZXJlZEVsZW1lbnRzLmxlbmd0aDtcclxuXHJcbiAgICBpZiAoaW5kZXggPj0gMCAmJiAhaG92ZXJlZCkge1xyXG4gICAgICB0aGlzLl9ob3ZlcmVkRWxlbWVudHMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaW5kZXggPCAwICYmIGhvdmVyZWQpIHtcclxuICAgICAgdGhpcy5faG92ZXJlZEVsZW1lbnRzLnB1c2goZWxlbWVudCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHN0b3JlZENvdW50SG92ZXJkID4gMCAmJiB0aGlzLl9ob3ZlcmVkRWxlbWVudHMubGVuZ3RoID09PSAwKSB7XHJcblxyXG4gICAgICAvLyBJZiBob3ZlcmVkIGVsZW1lbnRzIGNvdW50IHJlYWNoZXMgemVybywgY2hlY2sgYWdhaW4gYSBiaXQgZGVsYXllZC4gSWYgbm90aGluZyBob3ZlcmVkIGF0IHRoYXQgdGltZSwgY2xvc2Ugc3VibWVudVxyXG4gICAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2hvdmVyZWRFbGVtZW50cy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgIHRoaXMuY2xvc2VBY3RpdmVTdWJJdGVtc1ZpZXcoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIDEwMDApO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRTZWxlY3RvcigpOnN0cmluZ3tcclxuICAgIHJldHVybiB0aGlzLmlzQ29sbGFwc2VkID8gJyNjZW50ZXItbWVudS1jb250cm9sbGVyJzonLmNlbnRlci1tZW51LWZwJztcclxuICB9XHJcblxyXG4gIGRyYWdFbGVtZW50KGV2ZW50OiBbbnVtYmVyLCBudW1iZXJdKTogdm9pZCB7XHJcbiAgICBjb25zdCBkZWx0YVgxID0gZXZlbnRbMF07XHJcbiAgICBjb25zdCBkZWx0YVkxID0gZXZlbnRbMV07ICAgICAgICBcclxuICAgIHRoaXMubGF5b3V0TWFuYWdlclNlcnZpY2UuY2hlY2tQb3NpdGlvbignY2VudGVyLW1lbnUtZnAtaWQnLHRoaXMuZ2V0U2VsZWN0b3IoKSx1bmRlZmluZWQsZGVsdGFYMSxkZWx0YVkxKSAgICBcclxuICB9XHJcblxyXG4gIG9uRHJhZ0VuZCgpe1xyXG4gICAgdGhpcy5sYXlvdXRNYW5hZ2VyU2VydmljZS5oYW5kbGVEcmFnRW5kKCdjZW50ZXItbWVudS1mcC1pZCcpO1xyXG4gIH1cclxuXHJcbiAgLy8gI2VuZHJlZ2lvbiBwdWJsaWMgbWV0aG9kc1xyXG5cclxuICAvLyAjcmVnaW9uIHByaXZhdGUgZmllbGRzXHJcbiAgcHJpdmF0ZSBfaXNDb2xsYXBzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9pdGVtU3RhdGVzOiBBcnJheTxUb29sSHViSXRlbVN0YXRlcz4gPSBBcnJheTxUb29sSHViSXRlbVN0YXRlcz4oKTtcclxuICBwcml2YXRlIF9pdGVtczogQXJyYXk8VG9vbEh1Ykl0ZW0+ID0gQXJyYXk8VG9vbEh1Ykl0ZW0+KCk7XHJcbiAgcHJpdmF0ZSBfYWN0aXZlU3ViSXRlbXNWaWV3OiBUb29sSHViSXRlbSB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX2FjdGl2ZVN1Ykl0ZW1zOiBBcnJheTxUb29sSHViU3ViSXRlbT4gfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIF9pc1BlcnNwZWN0aXZlUHJvamVjdGlvbiA9IHRydWU7IC8vIGZsYWcgYWJvdXQgcGVyc3BlY3RpdmUgb3Igb3J0aG9ncmFwaGljIGNhbWVyYSBwcm9qZWN0aW9uXHJcbiAgcHJpdmF0ZSBfdmlzdWFsU2V0dGluZ3M6IFRvb2xIdWJWaXN1YWxTZXR0aW5ncztcclxuICBwcml2YXRlIF91bml0czogVG9vbEh1Ykl0ZW1Vbml0cztcclxuICBwcml2YXRlIF9zdWJNZW51VW5pdHM6IFRvb2xIdWJJdGVtVW5pdHM7XHJcbiAgcHJpdmF0ZSBfYW5udWxhclNlY3Rvcjogc3RyaW5nO1xyXG4gIHByaXZhdGUgX2FubnVsYXJTZWN0b3JCb3JkZXI6IHN0cmluZztcclxuICBwcml2YXRlIF9kZWFkWm9uZUFubnVsYXJTZWN0b3I6IHN0cmluZztcclxuICBwcml2YXRlIF9ob3ZlcmVkRWxlbWVudHM6IEFycmF5PHN0cmluZz4gPSBBcnJheTxzdHJpbmc+KCk7XHJcbiAgLy8gI2VuZHJlZ2lvbiBwcml2YXRlIGZpZWxkc1xyXG5cclxuICAvLyAjcmVnaW9uIHByaXZhdGUgbWV0aG9kc1xyXG4gIHByaXZhdGUgY2FsY3VsYXRlQ3VycmVudE1lbnVJdGVtVW5pdHMoKTogVG9vbEh1Ykl0ZW1Vbml0cyB7XHJcbiAgICByZXR1cm4gU1ZHR2VuZXJhdG9yLmRyYXdNZW51SXRlbVN2Zyh0aGlzLl92aXN1YWxTZXR0aW5ncy5zdmdSYWRpdXMsIHRoaXMuX3Zpc3VhbFNldHRpbmdzLnN2Z1JhZGl1c0lubmVyLCB0aGlzLl9pdGVtcy5sZW5ndGgsIHRoaXMuaXNFbWJlZGRlZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhbGN1bGF0ZUN1cnJlbnRTdWJNZW51SXRlbVVuaXRzKCk6IFRvb2xIdWJJdGVtVW5pdHMge1xyXG4gICAgcmV0dXJuIFNWR0dlbmVyYXRvci5kcmF3TWVudUl0ZW1TdmcodGhpcy5fdmlzdWFsU2V0dGluZ3Muc3ZnUmFkaXVzLCB0aGlzLl92aXN1YWxTZXR0aW5ncy5zdmdSYWRpdXNJbm5lciwgMjAsIHRoaXMuaXNFbWJlZGRlZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVBhcmVudEFwcFJlY3RTaXplQ2hhbmdlKHBhcmVudFJlY3Q6RE9NUmVjdCB8IHVuZGVmaW5lZCk6dm9pZHtcclxuICAgIHRoaXMubGF5b3V0TWFuYWdlclNlcnZpY2UuY2hlY2tQb3NpdGlvbih0aGlzLmNvbXBvbmVudElkLHRoaXMuZ2V0U2VsZWN0b3IoKSxwYXJlbnRSZWN0LDAsMCx0cnVlKTsgICAgXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9vbmVPck1vcmVJdGVtc0FjdGl2ZSgpe1xyXG4gICAgZm9yKGNvbnN0IGl0ZW0gb2YgdGhpcy5pdGVtcyl7XHJcbiAgICAgIGlmKGl0ZW0uYWN0aXZlID09PSB0cnVlKVxyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3VwZGF0ZUFjdGl2YXRpb25TdGF0ZSgpe1xyXG4gICAgaWYodGhpcy5fb25lT3JNb3JlSXRlbXNBY3RpdmUoKSl7XHJcbiAgICAgIHRoaXMuaXNBY3RpdmUgPSB0cnVlO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgLy8gI3JlZ2lvbiBwcml2YXRlIG1ldGhvZHNcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiY2VudGVyLW1lbnVcIj5cclxuICA8ZGl2XHJcbiAgICBjbGFzcz1cImNlbnRlci1tZW51LWZwXCJcclxuICAgIGlkPVwiY2VudGVyLW1lbnUtZnAtaWRcIlxyXG4gICAgW25nQ2xhc3NdPVwiYWN0aXZlU3ViSXRlbXMgPyAnc3VibWVudS1hY3RpdmUnIDogJydcIlxyXG4gID5cclxuICAgIDxkaXZcclxuICAgICAgbGliRHJhZ2dhYmxlXHJcbiAgICAgIGlkPVwiY2VudGVyLW1lbnUtY29udHJvbGxlclwiXHJcbiAgICAgIGNsYXNzPVwiY2VudGVyLW1lbnUtY29udHJvbGxlciBkcmFnZ2VyXCJcclxuICAgICAgZGF0YS10ZXN0PVwidG9vbGh1Yl9jb250cm9sbGVyXCJcclxuICAgICAgW25nQ2xhc3NdPVwie1xyXG4gICAgICAgIG9wZW5lZDogIWlzQ29sbGFwc2VkLFxyXG4gICAgICAgIGFjdGl2ZTogaXNBY3RpdmVcclxuICAgICAgfVwiXHJcbiAgICAgIFt0aXRsZV09XCJcclxuICAgICAgICBpc0NvbGxhcHNlZFxyXG4gICAgICAgICAgPyAoJ19TaG93X3Rvb2xodWJfdG9vbHRpcCcgfCB0cmFuc2xhdGUpXHJcbiAgICAgICAgICA6ICgnX01pbmltaXplX3Rvb2xodWJfdG9vbHRpcCcgfCB0cmFuc2xhdGUpXHJcbiAgICAgIFwiXHJcbiAgICAgIChjbGlja2VkKT1cInRvZ2dsZU1lbnUoKVwiXHJcbiAgICAgIChkcmFnZ2luZyk9XCJkcmFnRWxlbWVudCgkZXZlbnQpXCJcclxuICAgICAgKGRyYWdFbmQpID1cIm9uRHJhZ0VuZCgpXCJcclxuICAgID48L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJjZW50ZXItbWVudS1jaXJjbGUtYm9yZGVyLWlubmVyXCJcclxuICAgICAgW25nQ2xhc3NdPVwiaXNDb2xsYXBzZWQgPyAnaGlkZGVuJyA6ICcnXCJcclxuICAgID48L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJjZW50ZXItbWVudS1jaXJjbGUtYm9yZGVyLW91dGVyXCJcclxuICAgICAgW25nQ2xhc3NdPVwiaXNDb2xsYXBzZWQgPyAnaGlkZGVuJyA6ICcnXCJcclxuICAgICAgKG1vdXNlbGVhdmUpPVwic2V0SG92ZXJlZFN0YXRlKCdtZW51Q2lyY2xlQm9yZGVyT3V0ZXInLCBmYWxzZSlcIlxyXG4gICAgICAobW91c2VlbnRlcik9XCJzZXRIb3ZlcmVkU3RhdGUoJ21lbnVDaXJjbGVCb3JkZXJPdXRlcicsIHRydWUpXCJcclxuICAgID48L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgbGliRHJhZ2dhYmxlXHJcbiAgICAgIGNsYXNzPVwiY2VudGVyLW1lbnUtY2lyY2xlXCJcclxuICAgICAgW25nQ2xhc3NdPVwiaXNDb2xsYXBzZWQgPyAnaGlkZGVuJyA6ICcnXCJcclxuICAgICAgKG1vdXNlbGVhdmUpPVwic2V0SG92ZXJlZFN0YXRlKCdtZW51Q2lyY2xlJywgZmFsc2UpXCJcclxuICAgICAgKG1vdXNlZW50ZXIpPVwic2V0SG92ZXJlZFN0YXRlKCdtZW51Q2lyY2xlJywgdHJ1ZSlcIlxyXG4gICAgICAoZHJhZ2dpbmcpPVwiZHJhZ0VsZW1lbnQoJGV2ZW50KVwiXHJcbiAgICA+XHJcbiAgICAgIDxsaWItdG9vbC1odWItaXRlbVxyXG4gICAgICAgIGxpYkRyYWdnYWJsZVxyXG4gICAgICAgICpuZ0Zvcj1cImxldCBpdGVtIG9mIGl0ZW1zXCJcclxuICAgICAgICBbYXR0ci5kYXRhLXRlc3RdPVwiJ3Rvb2xodWJfaXRlbV8nICsgaXRlbS5idXR0b25JZFwiXHJcbiAgICAgICAgW3RpdGxlXT1cIml0ZW0udG9vbHRpcCB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgW2l0ZW1dPVwiaXRlbVwiXHJcbiAgICAgICAgW2FjdGl2ZV09XCIhIWl0ZW0uYWN0aXZlXCJcclxuICAgICAgICBbaXNFbmFibGVkXT1cIiFpdGVtLmRpc2FibGVkXCJcclxuICAgICAgICAoY2xpY2tlZCk9XCJjbGlja1Rvb2xIdWJJdGVtKGl0ZW0uYnV0dG9uSWQpXCJcclxuICAgICAgPjwvbGliLXRvb2wtaHViLWl0ZW0+XHJcblxyXG4gICAgICA8c3ZnXHJcbiAgICAgICAgY2xhc3M9XCJjZW50ZXJtZW51LWJ1dHRvbi1zdmdcIlxyXG4gICAgICAgIFthdHRyLnZpZXdCb3hdPVwiZ2V0U1ZHVmlld0JveCgpXCJcclxuICAgICAgICBmaWxsPVwibm9uZVwiXHJcbiAgICAgID5cclxuICAgICAgICA8Y2xpcFBhdGggaWQ9XCJzdmdDZW50ZXJNZW51XCIgY2xpcFBhdGhVbml0cz1cIm9iamVjdEJvdW5kaW5nQm94XCI+XHJcbiAgICAgICAgICA8cGF0aCBbYXR0ci5kXT1cImdldFNWR0NlbnRlck1lbnVQYXRoKClcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgPGNsaXBQYXRoIGlkPVwic3ZnQ2VudGVyTWVudUl0ZW1cIiBjbGlwUGF0aFVuaXRzPVwib2JqZWN0Qm91bmRpbmdCb3hcIj5cclxuICAgICAgICAgIDxwYXRoIFthdHRyLmRdPVwiZ2V0U1ZHQ2VudGVyTWVudUl0ZW1QYXRoKClcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgPGNsaXBQYXRoIGlkPVwic3ZnQ2VudGVyU3ViTWVudUl0ZW1cIiBjbGlwUGF0aFVuaXRzPVwib2JqZWN0Qm91bmRpbmdCb3hcIj5cclxuICAgICAgICAgIDxwYXRoIFthdHRyLmRdPVwiZ2V0U1ZHQ2VudGVyU3ViTWVudUl0ZW1QYXRoKClcIiBmaWxsPVwid2hpdGVcIiAvPlxyXG4gICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgPGNsaXBQYXRoIGlkPVwic3ZnQ2VudGVyTWVudVN1Yk1lbnVcIiBjbGlwUGF0aFVuaXRzPVwib2JqZWN0Qm91bmRpbmdCb3hcIj5cclxuICAgICAgICAgIDxwYXRoIFthdHRyLmRdPVwiYW5udWxhclNlY3RvclwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgIDxjbGlwUGF0aFxyXG4gICAgICAgICAgaWQ9XCJzdmdDZW50ZXJNZW51U3ViTWVudUJvcmRlclwiXHJcbiAgICAgICAgICBjbGlwUGF0aFVuaXRzPVwib2JqZWN0Qm91bmRpbmdCb3hcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxwYXRoIFthdHRyLmRdPVwiYW5udWxhclNlY3RvckJvcmRlclwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICAgIDxjbGlwUGF0aFxyXG4gICAgICAgICAgaWQ9XCJzdmdDZW50ZXJNZW51U3ViTWVudURlYWRab25lXCJcclxuICAgICAgICAgIGNsaXBQYXRoVW5pdHM9XCJvYmplY3RCb3VuZGluZ0JveFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHBhdGggW2F0dHIuZF09XCJkZWFkWm9uZUFubnVsYXJTZWN0b3JcIiBmaWxsPVwibm9uZVwiIC8+XHJcbiAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgPC9zdmc+XHJcbiAgICA8L2Rpdj5cclxuXHJcbiAgICBAaWYgKGFjdGl2ZVN1Ykl0ZW1zKSB7XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiY2VudGVyLW1lbnUtc3ViLW1lbnUtYm9yZGVyXCJcclxuICAgICAgW25nQ2xhc3NdPVwiaXNDb2xsYXBzZWQgPyAnaGlkZGVuJyA6ICcnXCJcclxuICAgICAgKG1vdXNlbGVhdmUpPVwic2V0SG92ZXJlZFN0YXRlKCdzdWJtZW51Qm9yZGVyJywgZmFsc2UpXCJcclxuICAgICAgKG1vdXNlZW50ZXIpPVwic2V0SG92ZXJlZFN0YXRlKCdzdWJtZW51Qm9yZGVyJywgdHJ1ZSlcIlxyXG4gICAgPjwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImNlbnRlci1tZW51LXN1Yi1tZW51XCJcclxuICAgICAgW25nQ2xhc3NdPVwiaXNDb2xsYXBzZWQgPyAnaGlkZGVuJyA6ICcnXCJcclxuICAgICAgKG1vdXNlbGVhdmUpPVwic2V0SG92ZXJlZFN0YXRlKCdzdWJtZW51JywgZmFsc2UpXCJcclxuICAgICAgKG1vdXNlZW50ZXIpPVwic2V0SG92ZXJlZFN0YXRlKCdzdWJtZW51JywgdHJ1ZSlcIlxyXG4gICAgPlxyXG4gICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBpdGVtIG9mIGFjdGl2ZVN1Ykl0ZW1zXCI+XHJcbiAgICAgICAgPGxpYi10b29sLWh1Yi1zdWItaXRlbVxyXG4gICAgICAgICAgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdidXR0b24nXCJcclxuICAgICAgICAgIFthdHRyLmRhdGEtdGVzdF09XCIndG9vbGh1Yl9zdWJpdGVtXycgKyBpdGVtLmJ1dHRvbklkXCJcclxuICAgICAgICAgIFt0aXRsZV09XCJpdGVtLnRvb2x0aXAgfCB0cmFuc2xhdGVcIlxyXG4gICAgICAgICAgW2l0ZW1dPVwiaXRlbVwiXHJcbiAgICAgICAgICAoY2xpY2spPVwiY2xpY2tUb29sSHViU3ViSXRlbShpdGVtLmJ1dHRvbklkKVwiXHJcbiAgICAgICAgICAoa2V5cHJlc3MpPVwiY2xpY2tUb29sSHViU3ViSXRlbShpdGVtLmJ1dHRvbklkKVwiXHJcbiAgICAgICAgPjwvbGliLXRvb2wtaHViLXN1Yi1pdGVtPlxyXG4gICAgICAgIDwhLS0gdGhpcyBpdGVtIGlzIGFkZGVkIGFzIDZ0aCBidXQgaXMgbW92ZWQgYmFjayBpbiBsZXNzIGZpbGUgdG8gNXRoIHBvc2l0aW9uIC0tPlxyXG4gICAgICAgIDxsaWItdG9vbC1odWItc3ViLWl0ZW1cclxuICAgICAgICAgICpuZ0lmPVwiaXRlbS50eXBlID09PSAnc2VwYXJhdG9yJ1wiXHJcbiAgICAgICAgICBbYXR0ci5kYXRhLXRlc3RdPVwiJ3Rvb2xodWJfc3ViaXRlbV8nICsgaXRlbS5idXR0b25JZFwiXHJcbiAgICAgICAgICBbaXRlbV09XCJpdGVtXCJcclxuICAgICAgICA+PC9saWItdG9vbC1odWItc3ViLWl0ZW0+XHJcbiAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiY2VudGVyLW1lbnUtc3ViLW1lbnUtZGVhZC16b25lXCJcclxuICAgICAgW25nQ2xhc3NdPVwiaXNDb2xsYXBzZWQgPyAnaGlkZGVuJyA6ICcnXCJcclxuICAgICAgKG1vdXNlbGVhdmUpPVwic2V0SG92ZXJlZFN0YXRlKCdkZWFkWm9uZScsIGZhbHNlKVwiXHJcbiAgICAgIChtb3VzZWVudGVyKT1cInNldEhvdmVyZWRTdGF0ZSgnZGVhZFpvbmUnLCB0cnVlKVwiXHJcbiAgICA+PC9kaXY+XHJcbiAgICB9XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
500
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmltcGx1cy10b29sLWh1Yi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtYmltcGx1cy1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9iaW1wbHVzLXRvb2wtaHViL2JpbXBsdXMtdG9vbC1odWIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LWJpbXBsdXMtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYmltcGx1cy10b29sLWh1Yi9iaW1wbHVzLXRvb2wtaHViLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFzQyxNQUFNLGVBQWUsQ0FBQztBQUNoSixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxrRUFBa0UsQ0FBQTtBQUNsSCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQy9FLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQzFGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFBOzs7Ozs7QUFJekUsZ0RBQWdEO0FBRWhELFNBQVMsMkJBQTJCO0lBQ2xDLE1BQU0sUUFBUSxHQUEwQjtRQUN0QyxpQkFBaUIsRUFBRSxFQUFFO1FBQ3JCLGVBQWUsRUFBRSxHQUFHO1FBQ3BCLGNBQWMsRUFBRSxJQUFJO1FBQ3BCLFNBQVMsRUFBRSxLQUFL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LCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xyXG5pbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE91dHB1dCwgVmlld0VuY2Fwc3VsYXRpb24sIGJvb2xlYW5BdHRyaWJ1dGUsIEVsZW1lbnRSZWYsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCAgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQmltcGx1c0xvY2FsaXplZFdpZGdldENvbXBvbmVudCB9IGZyb20gXCIuLy4uL2JpbXBsdXMtbG9jYWxpemVkLXdpZGdldC9iaW1wbHVzLWxvY2FsaXplZC13aWRnZXQuY29tcG9uZW50XCJcclxuaW1wb3J0IHsgVHJhbnNsYXRlU2VydmljZSwgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBTVkdHZW5lcmF0b3IgfSBmcm9tICcuL3N2Z0dlbmVyYXRvcic7XHJcbmltcG9ydCB7IFRvb2xIdWJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi90b29sLWh1Yi1pdGVtL3Rvb2wtaHViLWl0ZW0uY29tcG9uZW50JztcclxuaW1wb3J0IHsgVG9vbEh1YlN1Ykl0ZW1Db21wb25lbnQgfSBmcm9tICcuL3Rvb2wtaHViLXN1Yi1pdGVtL3Rvb2wtaHViLXN1Yi1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IERyYWdnYWJsZURpcmVjdGl2ZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvZHJhZ2dhYmxlLmRpcmVjdGl2ZSdcclxuaW1wb3J0IHsgVG9vbEh1Ykl0ZW0sIFRvb2xIdWJTdWJJdGVtLCBUb29sSHViVmlzdWFsU2V0dGluZ3MsIFRvb2xIdWJJdGVtVW5pdHMsIFRvb2xIdWJJdGVtU3RhdGVzIH0gZnJvbSAnLi9iaW1wbHVzLXRvb2wtaHViLmludGVyZmFjZSc7XHJcbmltcG9ydCB7IExheW91dE1hbmFnZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbGF5b3V0LW1hbmFnZXIuc2VydmljZSc7XHJcbmltcG9ydCB7IFJlc2l6ZU9ic2VydmVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3Jlc2l6ZS1vYnNlcnZlci5zZXJ2aWNlJztcclxuLy9pbXBvcnQgeyBmaXJlRXZlbnQgfSBmcm9tICcuLi8uLi91dGlscy91dGlscyc7XHJcblxyXG5mdW5jdGlvbiBjcmVhdGVEZWZhdWx0VmlzdWFsU2V0dGluZ3MoKTogVG9vbEh1YlZpc3VhbFNldHRpbmdzIHtcclxuICBjb25zdCBzZXR0aW5nczogVG9vbEh1YlZpc3VhbFNldHRpbmdzID0ge1xyXG4gICAgc3ViTWVudVN0YXJ0QW5nbGU6IDQwLFxyXG4gICAgc3ViTWVudUVuZEFuZ2xlOiAxNDAsXHJcbiAgICBzdmdSYWRpdXNJbm5lcjogNS43NSxcclxuICAgIHN2Z1JhZGl1czogMTAuMjUsXHJcbiAgICBzdWJNZW51Q2VudGVyOiBbMTcuMjUsIDE3LjVdLFxyXG4gICAgc3ViTWVudVJhZGl1czogMTUuNSxcclxuICAgIHN1Yk1lbnVXaWR0aDogNTIsXHJcbiAgICBkZWFkWm9uZUNlbnRlcjogWzE3LCAxOF0sXHJcbiAgICBkZWFkWm9uZVdpZHRoOiAxNDAsXHJcbiAgICBkZWFkWm9uZVJhZGl1czogMjIsXHJcbiAgICBkZWFkWm9uZVN0YXJ0QW5nbGU6IDM1LFxyXG4gICAgZGVhZFpvbmVFbmRBbmdsZTogMTQ1XHJcbiAgfVxyXG4gIHJldHVybiBzZXR0aW5ncztcclxufVxyXG5cclxuLy8gVXNlIHdoZW4gaW1wbGVtZW50aW5nIGVtYmVkZGVkIG1vZGVcclxuLy8gZnVuY3Rpb24gY3JlYXRlRW1iZWRkZWRTZXR0aW5ncygpIDogVG9vbEh1YlZpc3VhbFNldHRpbmdze1xyXG4vLyAgIGNvbnN0IHNldHRpbmdzIDogVG9vbEh1YlZpc3VhbFNldHRpbmdzID0ge1xyXG4vLyAgICAgc3ViTWVudVN0YXJ0QW5nbGUgOiA0MCxcclxuLy8gICAgIHN1Yk1lbnVFbmRBbmdsZSA6IDE0MCxcclxuLy8gICAgIHN2Z1JhZGl1c0lubmVyIDogNCxcclxuLy8gICAgIHN2Z1JhZGl1cyA6IDcuMjUsXHJcbi8vICAgICBzdWJNZW51Q2VudGVyIDogWzE3LjI1LCAxNy4zXSxcclxuLy8gICAgIHN1Yk1lbnVSYWRpdXMgOiAxNi4yLFxyXG4vLyAgICAgc3ViTWVudVdpZHRoIDogNjIsXHJcbi8vICAgICBkZWFkWm9uZUNlbnRlciA6IFsxNi41LCAxNl0sXHJcbi8vICAgICBkZWFkWm9uZVdpZHRoIDogMTIwLFxyXG4vLyAgICAgZGVhZFpvbmVSYWRpdXMgOiAxOCxcclxuLy8gICAgIGRlYWRab25lU3RhcnRBbmdsZSA6IDM1LFxyXG4vLyAgICAgZGVhZFpvbmVFbmRBbmdsZSA6IDE0NVxyXG4vLyAgIH1cclxuLy8gICByZXR1cm4gc2V0dGluZ3M7XHJcbi8vIH1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRJdGVtcygpOiBBcnJheTxUb29sSHViSXRlbT4ge1xyXG4gIGNvbnN0IGl0ZW1zOiBBcnJheTxUb29sSHViSXRlbT4gPSBbXHJcbiAgICAvLy0tLSBjcmVhdGUgdGFzayAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIHtcclxuICAgICAgYnV0dG9uSWQ6ICdjbUJ1dENyZWF0ZVRhc2snLFxyXG4gICAgICBpY29uQ2xhc3M6ICd1aS1pY29uLWNyZWF0ZS10YXNrJyxcclxuICAgICAgdGV4dDogJ19DcmVhdGVfaXNzdWVfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXA6ICdfQ3JlYXRlX2lzc3VlX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwRGlzYWJsZWQ6ICdfQ3JlYXRlX2lzc3VlX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgfSxcclxuXHJcbiAgICAvLy0tLSBxdWFudGl0eSB0YWtlb2ZmIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAge1xyXG4gICAgICBidXR0b25JZDogJ2NtQnV0UXVhbnRpdHlUYWtlT2ZmJyxcclxuICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1xdWFudGl0eS10YWtlLW9mZicsXHJcbiAgICAgIHRleHQ6ICdfUXVhbnRpdHlfdGFrZV9PZmZfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXA6ICdfUXVhbnRpdHlfdGFrZV9PZmZfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19RdWFudGl0eV90YWtlX09mZl9jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgIH0sXHJcblxyXG4gICAgLy8tLS0gbWFya3VwIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAge1xyXG4gICAgICBidXR0b25JZDogJ2NtQnV0TWFya3VwJyxcclxuICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1tYXJrdXAnLFxyXG4gICAgICB0ZXh0OiAnX01hcmt1cHNfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXA6ICdfTWFya3Vwc19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgdG9vbHRpcERpc2FibGVkOiAnX01hcmt1cHNfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICB9LFxyXG5cclxuICAgIC8vLS0tIHNlY3Rpb24gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICB7XHJcbiAgICAgIGJ1dHRvbklkOiAnY21CdXRTZWN0aW9uJyxcclxuICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1zZWN0aW9uJyxcclxuICAgICAgdGV4dDogJ19TZWN0aW9uaW5nX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwOiAnX1NlY3Rpb25pbmdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19TZWN0aW9uaW5nX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgfSxcclxuXHJcbiAgICAvLy0tLSBoaWRlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAge1xyXG4gICAgICBidXR0b25JZDogJ2NtQnV0T2JqVHJhbnNwTWVudScsXHJcbiAgICAgIGljb25DbGFzczogJ3VpLWljb24tb2JqLXRyYW5zcCcsXHJcbiAgICAgIHRleHQ6ICdfSGlkZV9vYmplY3RzX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwOiAnX0hpZGVfb2JqZWN0c19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgdG9vbHRpcERpc2FibGVkOiAnX0hpZGVfb2JqZWN0c19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgIH0sXHJcblxyXG4gICAgLy8tLS0gaXNvbGF0ZSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIHtcclxuICAgICAgYnV0dG9uSWQ6ICdjbUJ1dE9ialNlbCcsXHJcbiAgICAgIGljb25DbGFzczogJ3VpLWljb24tb2JqLXNlbGVjdCcsXHJcbiAgICAgIHRleHQ6ICdfSXNvbGF0ZV9vYmplY3RzX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwOiAnX0lzb2xhdGVfb2JqZWN0c19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgdG9vbHRpcERpc2FibGVkOiAnX0lzb2xhdGVfb2JqZWN0c19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgIH0sXHJcblxyXG4gICAgLy8tLS0gbmF2aWdhdGlvbiBtYXAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICB7XHJcbiAgICAgIGJ1dHRvbklkOiAnY21CdXROYXZpZ2F0aW9uTWFwJyxcclxuICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1uYXZpZ2F0aW9uLW1hcCcsXHJcbiAgICAgIHRleHQ6ICdfTmF2aWdhdGlvbl9uYXBfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXA6ICdfTmF2aWdhdGlvbl9uYXBfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19OYXZpZ2F0aW9uX25hcF9jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgIH0sXHJcblxyXG4gICAgLy8tLS0gZnVsbHNjcmVlbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICB7XHJcbiAgICAgIGJ1dHRvbklkOiAnY21CdXRGdWxsU2NyZWVuJyxcclxuICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1mdWxsc2NyZWVuJyxcclxuICAgICAgdGV4dDogJ19GdWxsc2NyZWVuX25vZGVfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXA6ICdfRnVsbHNjcmVlbl9ub2RlX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwRGlzYWJsZWQ6ICdfRnVsbHNjcmVlbl9ub2RlX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgfSxcclxuXHJcbiAgICAvLy0tLSBwcm9qZWN0IG5hdmlnYXRvciAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIHtcclxuICAgICAgYnV0dG9uSWQ6ICdjbUJ1dFByb2plY3ROYXZpZ2F0b3InLFxyXG4gICAgICBpY29uQ2xhc3M6ICd1aS1pY29uLXByb2plY3QtbmF2aWdhdG9yJyxcclxuICAgICAgdGV4dDogJ19Qcm9qZWN0X25hdmlnYXRvcl9jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgdG9vbHRpcDogJ19Qcm9qZWN0X25hdmlnYXRvcl9jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgdG9vbHRpcERpc2FibGVkOiAnX1Byb2plY3RfbmF2aWdhdG9yX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgfSxcclxuXHJcbiAgICAvLy0tLSByZXNldCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgIHtcclxuICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1vYmotcmVzZXQnLFxyXG4gICAgICBidXR0b25JZDogJ2NtQnV0UmVzZXRPYmonLFxyXG4gICAgICB0ZXh0OiAnX1Jlc2V0X3ZpZXdwb3J0X2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwOiAnX1Jlc2V0X3ZpZXdwb3J0X2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICB0b29sdGlwRGlzYWJsZWQ6ICdfUmVzZXRfdmlld3BvcnRfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICB9LFxyXG5cclxuICAgIC8vLS0tIHZpZXcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICB7XHJcbiAgICAgIGJ1dHRvbklkOiAnY21CdXRSZXNldFZwJyxcclxuICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1yZXNldC12cCcsXHJcbiAgICAgIHRleHQ6ICdfU2VsZWN0X3ZpZXdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXA6ICdfU2VsZWN0X3ZpZXdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19TZWxlY3Rfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgc3ViTWVudUlkOiAnY21iLXZpZXctc3VibWVudScsXHJcbiAgICAgIHN1Ykl0ZW1zOiBbXHJcbiAgICAgICAgLy8tLS0gRnJvbnQgVmlldyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgICB7XHJcbiAgICAgICAgICBidXR0b25JZDogJ2NtQnV0RnJvbnRWaWV3JyxcclxuICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxyXG4gICAgICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1mcm9udC12aWV3JyxcclxuICAgICAgICAgIHRleHQ6ICdfRnJvbnRfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIHRvb2x0aXA6ICdfRnJvbnRfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19Gcm9udF92aWV3X2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICAgICAgYWN0aW9uQ2xpY2s6ICdjZW50ZXJNZW51RnJvbnRWaWV3Q2xpY2snLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8tLS0gVG9wIFZpZXcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgYnV0dG9uSWQ6ICdjbUJ1dFRvcFZpZXcnLFxyXG4gICAgICAgICAgdHlwZTogJ2J1dHRvbicsXHJcbiAgICAgICAgICBpY29uQ2xhc3M6ICd1aS1pY29uLXRvcC12aWV3JyxcclxuICAgICAgICAgIHRleHQ6ICdfVG9wX3ZpZXdfY2VudGVyX21lbnVfdG9vbHRpcCcsXHJcbiAgICAgICAgICB0b29sdGlwOiAnX1RvcF92aWV3X2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICAgICAgdG9vbHRpcERpc2FibGVkOiAnX1RvcF92aWV3X2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICAgICAgYWN0aW9uQ2xpY2s6ICdjZW50ZXJNZW51VG9wVmlld0NsaWNrJyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vLS0tIFNpZGUgVmlldyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgICB7XHJcbiAgICAgICAgICBidXR0b25JZDogJ2NtQnV0U2lkZVZpZXcnLFxyXG4gICAgICAgICAgdHlwZTogJ2J1dHRvbicsXHJcbiAgICAgICAgICBpY29uQ2xhc3M6ICd1aS1pY29uLXNpZGUtdmlldycsXHJcbiAgICAgICAgICB0ZXh0OiAnX1NpZGVfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIHRvb2x0aXA6ICdfU2lkZV92aWV3X2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICAgICAgdG9vbHRpcERpc2FibGVkOiAnX1NpZGVfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIGFjdGlvbkNsaWNrOiAnY2VudGVyTWVudVNpZGVWaWV3Q2xpY2snLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8tLS0gUGVyc3BlY3RpdmUgVmlldyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cclxuICAgICAgICB7XHJcbiAgICAgICAgICBidXR0b25JZDogJ2NtQnV0UGVyc3BlY3RpdmVWaWV3JyxcclxuICAgICAgICAgIHR5cGU6ICdidXR0b24nLFxyXG4gICAgICAgICAgaWNvbkNsYXNzOiAndWktaWNvbi1wZXJzcGVjdGl2ZS12aWV3JyxcclxuICAgICAgICAgIHRleHQ6ICdfUGVyc3BlY3RpdmVfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIHRvb2x0aXA6ICdfUGVyc3BlY3RpdmVfdmlld19jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19QZXJzcGVjdGl2ZV92aWV3X2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICAgICAgYWN0aW9uQ2xpY2s6ICdjZW50ZXJNZW51UGVyc3BlY3RpdmVWaWV3Q2xpY2snLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgLy8tLS0gU2VwYXJhdG9yIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGJ1dHRvbklkOiAndG9vbGh1YlN1Ym1lbnVTZXBhcmF0b3JJZDEnLFxyXG4gICAgICAgICAgdHlwZTogJ3NlcGFyYXRvcicsXHJcbiAgICAgICAgICBpY29uQ2xhc3M6ICdjZW50ZXItc3ViLW1lbnUtYnV0dG9uLWljb24gdG9vbGh1Yi1zdWJtZW51LXNlcGFyYXRvcicsXHJcbiAgICAgICAgICB0ZXh0OiAnJyxcclxuICAgICAgICAgIHRvb2x0aXA6ICcnLFxyXG4gICAgICAgICAgdG9vbHRpcERpc2FibGVkOiAnJyxcclxuICAgICAgICAgIGFjdGlvbkNsaWNrOiAnJyxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC8vLS0tIFRvZ2dsZSBidXR0b24gcGVyc3BlY3RpdmUvb3J0aG9nb25hbCBwcm9qZWN0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgYnV0dG9uSWQ6ICdjbUJ1dFRvZ2dsZVByb2plY3Rpb24nLFxyXG4gICAgICAgICAgdHlwZTogJ2J1dHRvbicsXHJcbiAgICAgICAgICBpY29uQ2xhc3M6ICd1aS1pY29uLW9ydGhvZ3JhcGhpYy1jYW1lcmEtcHJvamVjdGlvbicsXHJcbiAgICAgICAgICB0ZXh0OiAnX09ydGhvZ3JhcGhpY19wcm9qZWN0aW9uX2NlbnRlcl9tZW51X3Rvb2x0aXAnLFxyXG4gICAgICAgICAgdG9vbHRpcDogJ19PcnRob2dyYXBoaWNfcHJvamVjdGlvbl9jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIHRvb2x0aXBEaXNhYmxlZDogJ19PcnRob2dyYXBoaWNfcHJvamVjdGlvbl9jZW50ZXJfbWVudV90b29sdGlwJyxcclxuICAgICAgICAgIGFjdGlvbkNsaWNrOiAnY2VudGVyTWVudVRvZ2dsZVByb2plY3Rpb24nLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF1cclxuICAgIH1cclxuICBdXHJcblxyXG4gIC8vIFNldCBhbGwgdG9vbCBodWIgaXRlbXMgc3RhdGVzIHRvIGluYWN0aXZlIGFuZCBkaXNhYmxlZC4gSG9zdCBBcHAgbXVzdCBkZWZpbmUgc3RhdGVzXHJcbiAgaXRlbXMuZm9yRWFjaChpdGVtID0+IHsgaXRlbS5hY3RpdmUgPSBmYWxzZTsgaXRlbS5kaXNhYmxlZCA9IHRydWUgfSlcclxuXHJcbiAgcmV0dXJuIGl0ZW1zO1xyXG59XHJcblxyXG5jb25zdCBERUZBVUxUX1BPU0lUSU9OX0xFRlQgPSAzNTA7XHJcbmNvbnN0IERFRkFVTFRfUE9TSVRJT05fVE9QICA9IDY3MDtcclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdsaWItYmltcGx1cy10b29sLWh1YicsXHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbXHJcbiAgICBUcmFuc2xhdGVNb2R1bGUsXHJcbiAgICBDb21tb25Nb2R1bGUsXHJcbiAgICBUb29sSHViSXRlbUNvbXBvbmVudCxcclxuICAgIFRvb2xIdWJTdWJJdGVtQ29tcG9uZW50LFxyXG4gICAgRHJhZ2dhYmxlRGlyZWN0aXZlXHJcbiAgXSxcclxuICBwcm92aWRlcnM6IFtUcmFuc2xhdGVTZXJ2aWNlXSxcclxuICB0ZW1wbGF0ZVVybDogJy4vYmltcGx1cy10b29sLWh1Yi5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmw6ICcuL2JpbXBsdXMtdG9vbC1odWIuY29tcG9uZW50Lmxlc3MnLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLlNoYWRvd0RvbVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQmltcGx1c1Rvb2xIdWJDb21wb25lbnQgZXh0ZW5kcyBCaW1wbHVzTG9jYWxpemVkV2lkZ2V0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LEFmdGVyVmlld0luaXQge1xyXG4gIGNvbnN0cnVjdG9yKHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZVNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSBsYXlvdXRNYW5hZ2VyU2VydmljZTogTGF5b3V0TWFuYWdlclNlcnZpY2UsXHJcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZXNpemVPYnNlcnZlclNlcnZpY2U6UmVzaXplT2JzZXJ2ZXJTZXJ2aWNlLFxyXG4gICAgICAgICAgICAgIHByaXZhdGUgZWxlbWVudDogRWxlbWVudFJlZikge1xyXG4gICAgc3VwZXIodHJhbnNsYXRlU2VydmljZSk7XHJcbiAgICAgICAgICAgXHJcbiAgICB0aGlzLml0ZW1zID0gY3JlYXRlRGVmYXVsdEl0ZW1zKCk7XHJcbiAgICB0aGlzLl92aXN1YWxTZXR0aW5ncyA9IGNyZWF0ZURlZmF1bHRWaXN1YWxTZXR0aW5ncygpO1xyXG4gICAgdGhpcy5fdW5pdHMgPSB0aGlzLmNhbGN1bGF0ZUN1cnJlbnRNZW51SXRlbVVuaXRzKCk7XHJcbiAgICB0aGlzLl9zdWJNZW51VW5pdHMgPSB0aGlzLmNhbGN1bGF0ZUN1cnJlbnRTdWJNZW51SXRlbVVuaXRzKCk7XHJcbiAgICB0aGlzLl9hbm51bGFyU2VjdG9yID0gU1ZHR2VuZXJhdG9yLmdlbmVyYXRlQW5udWxhclNlY3Rvcih0aGlzLl92aXN1YWxTZXR0aW5ncyk7XHJcbiAgICB0aGlzLl9hbm51bGFyU2VjdG9yQm9yZGVyID0gU1ZHR2VuZXJhdG9yLmdlbmVyYXRlQW5udWxhclNlY3RvckJvcmRlcih0aGlzLl92aXN1YWxTZXR0aW5ncyk7XHJcbiAgICB0aGlzLl9kZWFkWm9uZUFubnVsYXJTZWN0b3IgPSBTVkdHZW5lcmF0b3IuZ2VuZXJhdGVEZWFkWm9uZUFubnVsYXJTZWN0b3IodGhpcy5fdmlzdWFsU2V0dGluZ3MpO1xyXG5cclxuICB9XHJcblxyXG4gIC8vICNyZWdpb24gcHVibGljIGZpZWxkc1xyXG4gIFxyXG4gIGdldCBpdGVtU3RhdGVzKCk6IEFycmF5PFRvb2xIdWJJdGVtU3RhdGVzPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXRlbVN0YXRlcztcclxuICB9XHJcbiAgQElucHV0KCkgc2V0IGl0ZW1TdGF0ZXModmFsdWU6IEFycmF5PFRvb2xIdWJJdGVtU3RhdGVzPikge1xyXG4gICAgdGhpcy5faXRlbVN0YXRlcyA9IHZhbHVlO1xyXG4gICAgdGhpcy5zZXRJdGVtU3RhdGVzKHRoaXMuX2l0ZW1TdGF0ZXMpO1xyXG4gIH1cclxuXHJcbiAgc2V0SXRlbVN0YXRlcyhpdGVtU3RhdGVzOiBBcnJheTxUb29sSHViSXRlbVN0YXRlcz4pIHtcclxuICAgIGZvciAoY29uc3QgaXRlbVN0YXRlIG9mIGl0ZW1TdGF0ZXMpIHtcclxuICAgICAgY29uc3QgaXRlbSA9IHRoaXMuX2l0ZW1zLmZpbmQoaXRlbSA9PiBpdGVtLmJ1dHRvbklkID09PSBpdGVtU3RhdGUuYnV0dG9uSWQpO1xyXG4gICAgICBpZiAoaXRlbSkge1xyXG4gICAgICAgIGlmIChpdGVtU3RhdGUuYWN0aXZlICE9IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgaXRlbS5hY3RpdmUgPSBpdGVtU3RhdGUuYWN0aXZlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbVN0YXRlLmRpc2FibGVkICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgICAgIGl0ZW0uZGlzYWJsZWQgPSBpdGVtU3RhdGUuZGlzYWJsZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fdXBkYXRlQWN0aXZhdGlvblN0YXRlKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0IGl0ZW1zKCk6IEFycmF5PFRvb2xIdWJJdGVtPiB7XHJcbiAgICByZXR1cm4gdGhpcy5faXRlbXM7XHJcbiAgfVxyXG4gIEBJbnB1dCgpIHNldCBpdGVtcyh2YWx1ZTogQXJyYXk8VG9vbEh1Ykl0ZW0+KSB7XHJcbiAgICB0aGlzLl9pdGVtcyA9IHZhbHVlO1xyXG5cclxuICAgIGNvbnN0IGJ1dHRvbnNMZW5ndGggPSAodGhpcy5faXRlbXM/Lmxlbmd0aCkgPiAwID8gdGhpcy5faXRlbXMubGVuZ3RoIDogMTtcclxuICAgIGNvbnN0IHJvb3RTdHlsZSA9IGRvY3VtZW50Py5kb2N1bWVudEVsZW1lbnQ/LnN0eWxlO1xyXG4gICAgaWYgKHJvb3RTdHlsZSkge1xyXG4gICAgICBjb25zdCBtZW51SXRlbXMgPSByb290U3R5bGUuZ2V0UHJvcGVydHlWYWx1ZShcIi0tbWVudS1pdGVtc1wiKTtcclxuICAgICAgaWYgKHBhcnNlSW50KG1lbnVJdGVtcykgIT09IGJ1dHRvbnNMZW5ndGgpIHtcclxuICAgICAgICByb290U3R5bGUuc2V0UHJvcGVydHkoXCItLW1lbnUtaXRlbXNcIiwgYnV0dG9uc0xlbmd0aC50b1N0cmluZygpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8vIFRyYW5zZmVyIGRpc2FibGVkIHN0YXRlcywgd2hpY2ggY2FuIGRlZmluZWQgYnkgaG9zdCBhcHBcclxuICAgIHRoaXMuc2V0SXRlbVN0YXRlcyh0aGlzLl9pdGVtU3RhdGVzKTtcclxuICB9XHJcblxyXG4gIGdldCBhY3RpdmVTdWJJdGVtcygpOiBBcnJheTxUb29sSHViU3ViSXRlbT4gfCBudWxsIHtcclxuICAgIHJldHVybiB0aGlzLl9hY3RpdmVTdWJJdGVtcztcclxuICB9XHJcblxyXG4gIGdldCBpc0NvbGxhcHNlZCgpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9pc0NvbGxhcHNlZDtcclxuICB9XHJcbiAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXHJcbiAgc2V0IGlzQ29sbGFwc2VkKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLl9pc0NvbGxhcHNlZCA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgZ2V0IGlzUGVyc3BlY3RpdmVQcm9qZWN0aW9uKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuX2lzUGVyc3BlY3RpdmVQcm9qZWN0aW9uO1xyXG4gIH1cclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcclxuICBzZXQgaXNQZXJzcGVjdGl2ZVByb2plY3Rpb24odmFsdWU6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuX2lzUGVyc3BlY3RpdmVQcm9qZWN0aW9uID0gdmFsdWU7XHJcbiAgfVxyXG5cclxuICBnZXQgdW5pdHMoKTogVG9vbEh1Ykl0ZW1Vbml0cyB7XHJcbiAgICByZXR1cm4gdGhpcy5fdW5pdHM7XHJcbiAgfVxyXG5cclxuICBnZXQgc3ViTWVudVVuaXRzKCk6IFRvb2xIdWJJdGVtVW5pdHMge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N1Yk1lbnVVbml0cztcclxuICB9XHJcblxyXG4gIGdldCBhbm51bGFyU2VjdG9yKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fYW5udWxhclNlY3RvcjtcclxuICB9XHJcblxyXG4gIGdldCBhbm51bGFyU2VjdG9yQm9yZGVyKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fYW5udWxhclNlY3RvckJvcmRlcjtcclxuICB9XHJcblxyXG4gIGdldCBkZWFkWm9uZUFubnVsYXJTZWN0b3IoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLl9kZWFkWm9uZUFubnVsYXJTZWN0b3I7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNFbWJlZGRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KSBpc0ZvY3VzZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSkgaXNBY3RpdmU6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBPdXRwdXQoKSBpdGVtQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBzdWJJdGVtQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIFxyXG4gIC8vIERlZmluZSBldmVudCBoYW5kbGVyIGZvciByZXVzaW5nIGRyYWdnYWJsZSBhbHNvIGZyb20gcmVzaXplIHBhcmVudCBcclxuICAvL0BPdXRwdXQoKSByZXNpemVkcmFnZ2luZyA9IG5ldyBFdmVudEVtaXR0ZXI8W251bWJlcixudW1iZXJdPigpO1xyXG5cclxuICBwcml2YXRlIGNvbXBvbmVudElkID0gJ2NlbnRlci1tZW51LWZwLWlkJztcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbjogU3Vic2NyaXB0aW9uIHwgbnVsbCA9IG51bGw7ICAvLyBJbml0aWFsaXplIHRvIG51bGxcclxuXHJcbiAgbmdPbkluaXQoKTp2b2lkeyAgIFxyXG4gICAgdGhpcy5sYXlvdXRNYW5hZ2VyU2VydmljZS5yZWdpc3Rlck9iamVjdCh0aGlzLmVsZW1lbnQsdGhpcy5jb21wb25lbnRJZCwnI2NlbnRlci1tZW51LWZwLWlkJyx0cnVlLERFRkFVTFRfUE9TSVRJT05fTEVGVCxERUZBVUxUX1BPU0lUSU9OX1RPUCk7XHJcbiAgICB0aGlzLmxheW91dE1hbmFnZXJTZXJ2aWNlLnJlZ2lzdGVyZWRJdGVtcyQuc3Vic2NyaWJlKGl0ZW1zID0+IHtcclxuICAgICAgY29uc3QgbGF5b3V0TWFuYWdlckl0ZW0gPSBpdGVtcy5maW5kKGl0ZW0gPT4gaXRlbS5pZCA9PT0gdGhpcy5jb21wb25lbnRJZCk7XHJcbiAgICAgIHRoaXMuaXNDb2xsYXBzZWQgPSBCb29sZWFuKGxheW91dE1hbmFnZXJJdGVtPy5pc0NvbGxhcHNlZCk7ICAgICAgXHJcbiAgICB9KTtcclxuICAgIFxyXG4gIH1cclxuICBcclxuICBuZ0FmdGVyVmlld0luaXQoKTp2b2lke1xyXG4gICAvLyBpZiB0aGUgY29tcG9uZW50IHdhbnRzIHRvIGJlIHJlZ2lzdGVyZWQgaW4gbGF5b3V0IG1hbmFnZXIgc3lzdGVtXHJcbiAgIC8vIFN1YnNjcmliZSB0byB0aGUgb2JzZXJ2YWJsZVxyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24gPSB0aGlzLnJlc2l6ZU9ic2VydmVyU2VydmljZS5wYXJlbnRBcHBSZWN0JC5zdWJzY3JpYmUodmFsdWUgPT4ge1xyXG4gICAgICB0aGlzLmhhbmRsZVBhcmVudEFwcFJlY3RTaXplQ2hhbmdlKHZhbHVlKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBcclxuICAvLyAjZW5kcmVnaW9uIHB1YmxpYyBmaWVsZHNcclxuIFxyXG4gIC8vICNyZWdpb24gcHVibGljIG1ldGhvZHNcclxuICBwdWJsaWMgZ2V0U1ZHVmlld0JveCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFNWR0dlbmVyYXRvci5nZXRTVkdWaWV3Qm94KHRoaXMuX3VuaXRzKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRTVkdDZW50ZXJNZW51UGF0aCgpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIFNWR0dlbmVyYXRvci5nZXRTVkdDZW50ZXJNZW51UGF0aCh0aGlzLl91bml0cyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U1ZHQ2VudGVyTWVudUl0ZW1QYXRoKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gU1ZHR2VuZXJhdG9yLmdldFNWR0NlbnRlck1lbnVJdGVtUGF0aCh0aGlzLl91bml0cyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0U1ZHQ2VudGVyU3ViTWVudUl0ZW1QYXRoKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gU1ZHR2VuZXJhdG9yLmdldFNWR0NlbnRlclN1Yk1lbnVJdGVtUGF0aCh0aGlzLl9zdWJNZW51VW5pdHMpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHRvZ2dsZU1lbnUoKSB7XHJcbiAgICB0aGlzLmxheW91dE1hbmFnZXJTZXJ2aWNlLnVwZGF0ZUNvbGxhcHNlZCghdGhpcy5pc0NvbGxhcHNlZCx0aGlzLmNvbXBvbmVudElkKTtcclxuICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgdGhpcy5sYXlvdXRNYW5hZ2VyU2VydmljZS5jaGVja1Bvc2l0aW9uKCdjZW50ZXItbWVudS1mcC1pZCcsdGhpcy5nZXRTZWxlY3RvcigpLHVuZGVmaW5lZCwwLDAsdHJ1ZSk7ICAgICAgXHJcbiAgICAgIH0pXHJcbiAgfVxyXG5cclxuICBmaW5kVG9vbEh1Ykl0ZW1CeUlkKGlkOiBzdHJpbmcpOiBUb29sSHViSXRlbSB8IHVuZGVmaW5lZCB7XHJcbiAgICByZXR1cm4gdGhpcy5faXRlbXMuZmluZCh4ID0+IHguYnV0dG9uSWQgPT09IGlkKTtcclxuICB9XHJcblxyXG4gIGNsaWNrVG9vbEh1Ykl0ZW0oYWN0aW9uOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZpbmRUb29sSHViSXRlbUJ5SWQoYWN0aW9uKTtcclxuICAgIGlmICghaXRlbSB8fCBpdGVtPy5kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pdGVtQ2xpY2tlZC5lbWl0KGFjdGlvbik7XHJcbiAgfVxyXG5cclxuICBjbGlja1Rvb2xIdWJTdWJJdGVtKGFjdGlvbjogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRoaXMuX2FjdGl2ZVN1Ykl0ZW1zKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpdGVtID0gdGhpcy5fYWN0aXZlU3ViSXRlbXMuZmluZCh4ID0+IHguYnV0dG9uSWQgPT09IGFjdGlvbik7XHJcbiAgICBpZiAoIWl0ZW0pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3ViSXRlbUNsaWNrZWQuZW1pdChhY3Rpb24pO1xyXG4gICAgdGhpcy5jbG9zZUFjdGl2ZVN1Ykl0ZW1zVmlldygpO1xyXG4gIH1cclxuXHJcbiAgdG9nZ2xlVG9vbEh1Ykl0ZW1BY3RpdmUoYnV0dG9uSWQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZmluZFRvb2xIdWJJdGVtQnlJZChidXR0b25JZCk7XHJcbiAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kaXNhYmxlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaXRlbS5hY3RpdmUgPSAhaXRlbS5hY3RpdmU7XHJcblxyXG4gICAgdGhpcy5fdXBkYXRlQWN0aXZhdGlvblN0YXRlKCk7XHJcbiAgfVxyXG5cclxuICB0b2dnbGVTdWJJdGVtc1ZpZXcoYnV0dG9uSWQ6IHN0cmluZykge1xyXG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZmluZFRvb2xIdWJJdGVtQnlJZChidXR0b25JZCk7XHJcbiAgICBpZiAoIWl0ZW0gfHwgaXRlbS5kaXNhYmxlZCB8fCAhaXRlbS5zdWJJdGVtcykge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaXRlbS5hY3RpdmUgPSAhaXRlbS5hY3RpdmU7XHJcbiAgICBpZiAoaXRlbS5hY3RpdmUpIHtcclxuICAgICAgdGhpcy5fYWN0aXZlU3ViSXRlbXNWaWV3ID0gaXRlbTtcclxuICAgICAgdGhpcy5fYWN0aXZlU3ViSXRlbXMgPSBpdGVtLnN1Ykl0ZW1zO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5fYWN0aXZlU3ViSXRlbXNWaWV3ID0gbnVsbDtcclxuICAgICAgdGhpcy5fYWN0aXZlU3ViSXRlbXMgPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdG9nZ2xlQ2FtZXJhUHJvamVjdGlvbihidXR0b25JZDogc3RyaW5nKSB7XHJcbiAgICBpZiAoIXRoaXMuX2FjdGl2ZVN1Ykl0ZW1zKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBpdGVtID0gdGhpcy5fYWN0aXZlU3ViSXRlbXMuZmluZCh4ID0+IHguYnV0dG9uSWQgPT09IGJ1dHRvbklkKTtcclxuICAgIGlmICghaXRlbSkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5pc1BlcnNwZWN0aXZlUHJvamVjdGlvbiA9ICF0aGlzLmlzUGVyc3BlY3RpdmVQcm9qZWN0aW9uO1xyXG5cclxuICAgIGl0ZW0uaWNvbkNsYXNzID0gdGhpcy5pc1BlcnNwZWN0aXZlUHJvamVjdGlvbiA/ICd1aS1pY29uLW9ydGhvZ3JhcGhpYy1jYW1lcmEtcHJvamVjdGlvbicgOiAndWktaWNvbi1wZXJzcGVjdGl2ZS1jYW1lcmEtcHJvamVjdGlvbic7XHJcbiAgICBpdGVtLnRleHQgPSB0aGlzLmlzUGVyc3BlY3RpdmVQcm9qZWN0aW9uID8gJ19PcnRob2dyYXBoaWNfcHJvamVjdGlvbl9jZW50ZXJfbWVudV90b29sdGlwJyA6ICdfUGVyc3BlY3RpdmVfcHJvamVjdGlvbl9jZW50ZXJfbWVudV90b29sdGlwJztcclxuICAgIGl0ZW0udG9vbHRpcCA9IHRoaXMuaXNQZXJzcGVjdGl2ZVByb2plY3Rpb24gPyAnX09ydGhvZ3JhcGhpY19wcm9qZWN0aW9uX2NlbnRlcl9tZW51X3Rvb2x0aXAnIDogJ19QZXJzcGVjdGl2ZV9wcm9qZWN0aW9uX2NlbnRlcl9tZW51X3Rvb2x0aXAnO1xyXG4gICAgaXRlbS50b29sdGlwRGlzYWJsZWQgPSB0aGlzLmlzUGVyc3BlY3RpdmVQcm9qZWN0aW9uID8gJ19PcnRob2dyYXBoaWNfcHJvamVjdGlvbl9jZW50ZXJfbWVudV90b29sdGlwJyA6ICdfUGVyc3BlY3RpdmVfcHJvamVjdGlvbl9jZW50ZXJfbWVudV90b29sdGlwJztcclxuICB9XHJcblxyXG4gIGNsb3NlQWN0aXZlU3ViSXRlbXNWaWV3KCkge1xyXG4gICAgaWYgKHRoaXMuX2FjdGl2ZVN1Ykl0ZW1zVmlldykge1xyXG4gICAgICB0aGlzLl9hY3RpdmVTdWJJdGVtc1ZpZXcuYWN0aXZlID0gZmFsc2U7XHJcbiAgICAgIHRoaXMuX2FjdGl2ZVN1Ykl0ZW1zVmlldyA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9hY3RpdmVTdWJJdGVtcyA9IG51bGw7XHJcbiAgfVxyXG5cclxuICBzZXRIb3ZlcmVkU3RhdGUoZWxlbWVudDogc3RyaW5nLCBob3ZlcmVkOiBib29sZWFuKSB7XHJcbiAgICBjb25zdCBpbmRleCA9IHRoaXMuX2hvdmVyZWRFbGVtZW50cy5pbmRleE9mKGVsZW1lbnQpO1xyXG4gICAgY29uc3Qgc3RvcmVkQ291bnRIb3ZlcmQgPSB0aGlzLl9ob3ZlcmVkRWxlbWVudHMubGVuZ3RoO1xyXG5cclxuICAgIGlmIChpbmRleCA+PSAwICYmICFob3ZlcmVkKSB7XHJcbiAgICAgIHRoaXMuX2hvdmVyZWRFbGVtZW50cy5zcGxpY2UoaW5kZXgsIDEpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpbmRleCA8IDAgJiYgaG92ZXJlZCkge1xyXG4gICAgICB0aGlzLl9ob3ZlcmVkRWxlbWVudHMucHVzaChlbGVtZW50KTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoc3RvcmVkQ291bnRIb3ZlcmQgPiAwICYmIHRoaXMuX2hvdmVyZWRFbGVtZW50cy5sZW5ndGggPT09IDApIHtcclxuXHJcbiAgICAgIC8vIElmIGhvdmVyZWQgZWxlbWVudHMgY291bnQgcmVhY2hlcyB6ZXJvLCBjaGVjayBhZ2FpbiBhIGJpdCBkZWxheWVkLiBJZiBub3RoaW5nIGhvdmVyZWQgYXQgdGhhdCB0aW1lLCBjbG9zZSBzdWJtZW51XHJcbiAgICAgIHNldEludGVydmFsKCgpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5faG92ZXJlZEVsZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgdGhpcy5jbG9zZUFjdGl2ZVN1Ykl0ZW1zVmlldygpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSwgMTAwMCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNlbGVjdG9yKCk6c3RyaW5ne1xyXG4gICAgcmV0dXJuIHRoaXMuaXNDb2xsYXBzZWQgPyAnI2NlbnRlci1tZW51LWNvbnRyb2xsZXInOicuY2VudGVyLW1lbnUtZnAnO1xyXG4gIH1cclxuXHJcbiAgZHJhZ0VsZW1lbnQoZXZlbnQ6IFtudW1iZXIsIG51bWJlcl0pOiB2b2lkIHtcclxuICAgIGNvbnN0IGRlbHRhWDEgPSBldmVudFswXTtcclxuICAgIGNvbnN0IGRlbHRhWTEgPSBldmVudFsxXTsgICAgICAgIFxyXG4gICAgdGhpcy5sYXlvdXRNYW5hZ2VyU2VydmljZS5jaGVja1Bvc2l0aW9uKCdjZW50ZXItbWVudS1mcC1pZCcsdGhpcy5nZXRTZWxlY3RvcigpLHVuZGVmaW5lZCxkZWx0YVgxLGRlbHRhWTEpICAgIFxyXG4gIH1cclxuXHJcbiAgb25EcmFnRW5kKCl7XHJcbiAgICB0aGlzLmxheW91dE1hbmFnZXJTZXJ2aWNlLmhhbmRsZURyYWdFbmQoJ2NlbnRlci1tZW51LWZwLWlkJyk7XHJcbiAgfVxyXG5cclxuICAvLyAjZW5kcmVnaW9uIHB1YmxpYyBtZXRob2RzXHJcblxyXG4gIC8vICNyZWdpb24gcHJpdmF0ZSBmaWVsZHNcclxuICBwcml2YXRlIF9pc0NvbGxhcHNlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIHByaXZhdGUgX2l0ZW1TdGF0ZXM6IEFycmF5PFRvb2xIdWJJdGVtU3RhdGVzPiA9IEFycmF5PFRvb2xIdWJJdGVtU3RhdGVzPigpO1xyXG4gIHByaXZhdGUgX2l0ZW1zOiBBcnJheTxUb29sSHViSXRlbT4gPSBBcnJheTxUb29sSHViSXRlbT4oKTtcclxuICBwcml2YXRlIF9hY3RpdmVTdWJJdGVtc1ZpZXc6IFRvb2xIdWJJdGVtIHwgbnVsbCA9IG51bGw7XHJcbiAgcHJpdmF0ZSBfYWN0aXZlU3ViSXRlbXM6IEFycmF5PFRvb2xIdWJTdWJJdGVtPiB8IG51bGwgPSBudWxsO1xyXG4gIHByaXZhdGUgX2lzUGVyc3BlY3RpdmVQcm9qZWN0aW9uID0gdHJ1ZTsgLy8gZmxhZyBhYm91dCBwZXJzcGVjdGl2ZSBvciBvcnRob2dyYXBoaWMgY2FtZXJhIHByb2plY3Rpb25cclxuICBwcml2YXRlIF92aXN1YWxTZXR0aW5nczogVG9vbEh1YlZpc3VhbFNldHRpbmdzO1xyXG4gIHByaXZhdGUgX3VuaXRzOiBUb29sSHViSXRlbVVuaXRzO1xyXG4gIHByaXZhdGUgX3N1Yk1lbnVVbml0czogVG9vbEh1Ykl0ZW1Vbml0cztcclxuICBwcml2YXRlIF9hbm51bGFyU2VjdG9yOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBfYW5udWxhclNlY3RvckJvcmRlcjogc3RyaW5nO1xyXG4gIHByaXZhdGUgX2RlYWRab25lQW5udWxhclNlY3Rvcjogc3RyaW5nO1xyXG4gIHByaXZhdGUgX2hvdmVyZWRFbGVtZW50czogQXJyYXk8c3RyaW5nPiA9IEFycmF5PHN0cmluZz4oKTtcclxuICAvLyAjZW5kcmVnaW9uIHByaXZhdGUgZmllbGRzXHJcblxyXG4gIC8vICNyZWdpb24gcHJpdmF0ZSBtZXRob2RzXHJcbiAgcHJpdmF0ZSBjYWxjdWxhdGVDdXJyZW50TWVudUl0ZW1Vbml0cygpOiBUb29sSHViSXRlbVVuaXRzIHtcclxuICAgIHJldHVybiBTVkdHZW5lcmF0b3IuZHJhd01lbnVJdGVtU3ZnKHRoaXMuX3Zpc3VhbFNldHRpbmdzLnN2Z1JhZGl1cywgdGhpcy5fdmlzdWFsU2V0dGluZ3Muc3ZnUmFkaXVzSW5uZXIsIHRoaXMuX2l0ZW1zLmxlbmd0aCwgdGhpcy5pc0VtYmVkZGVkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2FsY3VsYXRlQ3VycmVudFN1Yk1lbnVJdGVtVW5pdHMoKTogVG9vbEh1Ykl0ZW1Vbml0cyB7XHJcbiAgICByZXR1cm4gU1ZHR2VuZXJhdG9yLmRyYXdNZW51SXRlbVN2Zyh0aGlzLl92aXN1YWxTZXR0aW5ncy5zdmdSYWRpdXMsIHRoaXMuX3Zpc3VhbFNldHRpbmdzLnN2Z1JhZGl1c0lubmVyLCAyMCwgdGhpcy5pc0VtYmVkZGVkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlUGFyZW50QXBwUmVjdFNpemVDaGFuZ2UocGFyZW50UmVjdDpET01SZWN0IHwgdW5kZWZpbmVkKTp2b2lke1xyXG4gICAgdGhpcy5sYXlvdXRNYW5hZ2VyU2VydmljZS5jaGVja1Bvc2l0aW9uKHRoaXMuY29tcG9uZW50SWQsdGhpcy5nZXRTZWxlY3RvcigpLHBhcmVudFJlY3QsMCwwLHRydWUpOyAgICBcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX29uZU9yTW9yZUl0ZW1zQWN0aXZlKCl7XHJcbiAgICBmb3IoY29uc3QgaXRlbSBvZiB0aGlzLml0ZW1zKXtcclxuICAgICAgaWYoaXRlbS5hY3RpdmUgPT09IHRydWUpXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfdXBkYXRlQWN0aXZhdGlvblN0YXRlKCl7XHJcbiAgICBpZih0aGlzLl9vbmVPck1vcmVJdGVtc0FjdGl2ZSgpKXtcclxuICAgICAgdGhpcy5pc0FjdGl2ZSA9IHRydWU7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgdGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyAjcmVnaW9uIHByaXZhdGUgbWV0aG9kc1xyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJjZW50ZXItbWVudVwiPlxyXG4gIDxkaXZcclxuICAgIGNsYXNzPVwiY2VudGVyLW1lbnUtZnBcIlxyXG4gICAgaWQ9XCJjZW50ZXItbWVudS1mcC1pZFwiXHJcbiAgICBbbmdDbGFzc109XCJhY3RpdmVTdWJJdGVtcyA/ICdzdWJtZW51LWFjdGl2ZScgOiAnJ1wiXHJcbiAgPlxyXG4gICAgPGRpdlxyXG4gICAgICBsaWJEcmFnZ2FibGVcclxuICAgICAgaWQ9XCJjZW50ZXItbWVudS1jb250cm9sbGVyXCJcclxuICAgICAgY2xhc3M9XCJjZW50ZXItbWVudS1jb250cm9sbGVyIGRyYWdnZXJcIlxyXG4gICAgICBkYXRhLXRlc3Q9XCJ0b29saHViX2NvbnRyb2xsZXJcIlxyXG4gICAgICBbbmdDbGFzc109XCJ7XHJcbiAgICAgICAgb3BlbmVkOiAhaXNDb2xsYXBzZWQsXHJcbiAgICAgICAgYWN0aXZlOiBpc0FjdGl2ZVxyXG4gICAgICB9XCJcclxuICAgICAgW3RpdGxlXT1cIlxyXG4gICAgICAgIGlzQ29sbGFwc2VkXHJcbiAgICAgICAgICA/ICgnX1Nob3dfdG9vbGh1Yl90b29sdGlwJyB8IHRyYW5zbGF0ZSlcclxuICAgICAgICAgIDogKCdfTWluaW1pemVfdG9vbGh1Yl90b29sdGlwJyB8IHRyYW5zbGF0ZSlcclxuICAgICAgXCJcclxuICAgICAgKGNsaWNrZWQpPVwidG9nZ2xlTWVudSgpXCJcclxuICAgICAgKGRyYWdnaW5nKT1cImRyYWdFbGVtZW50KCRldmVudClcIlxyXG4gICAgICAoZHJhZ0VuZCkgPVwib25EcmFnRW5kKClcIlxyXG4gICAgPjwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImNlbnRlci1tZW51LWNpcmNsZS1ib3JkZXItaW5uZXJcIlxyXG4gICAgICBbbmdDbGFzc109XCJpc0NvbGxhcHNlZCA/ICdoaWRkZW4nIDogJydcIlxyXG4gICAgPjwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzcz1cImNlbnRlci1tZW51LWNpcmNsZS1ib3JkZXItb3V0ZXJcIlxyXG4gICAgICBbbmdDbGFzc109XCJpc0NvbGxhcHNlZCA/ICdoaWRkZW4nIDogJydcIlxyXG4gICAgICAobW91c2VsZWF2ZSk9XCJzZXRIb3ZlcmVkU3RhdGUoJ21lbnVDaXJjbGVCb3JkZXJPdXRlcicsIGZhbHNlKVwiXHJcbiAgICAgIChtb3VzZWVudGVyKT1cInNldEhvdmVyZWRTdGF0ZSgnbWVudUNpcmNsZUJvcmRlck91dGVyJywgdHJ1ZSlcIlxyXG4gICAgPjwvZGl2PlxyXG4gICAgPGRpdlxyXG4gICAgICBsaWJEcmFnZ2FibGVcclxuICAgICAgY2xhc3M9XCJjZW50ZXItbWVudS1jaXJjbGVcIlxyXG4gICAgICBbbmdDbGFzc109XCJpc0NvbGxhcHNlZCA/ICdoaWRkZW4nIDogJydcIlxyXG4gICAgICAobW91c2VsZWF2ZSk9XCJzZXRIb3ZlcmVkU3RhdGUoJ21lbnVDaXJjbGUnLCBmYWxzZSlcIlxyXG4gICAgICAobW91c2VlbnRlcik9XCJzZXRIb3ZlcmVkU3RhdGUoJ21lbnVDaXJjbGUnLCB0cnVlKVwiXHJcbiAgICAgIChkcmFnZ2luZyk9XCJkcmFnRWxlbWVudCgkZXZlbnQpXCJcclxuICAgID5cclxuICAgICAgPGxpYi10b29sLWh1Yi1pdGVtXHJcbiAgICAgICAgbGliRHJhZ2dhYmxlXHJcbiAgICAgICAgKm5nRm9yPVwibGV0IGl0ZW0gb2YgaXRlbXNcIlxyXG4gICAgICAgIFthdHRyLmRhdGEtdGVzdF09XCIndG9vbGh1Yl9pdGVtXycgKyBpdGVtLmJ1dHRvbklkXCJcclxuICAgICAgICBbdGl0bGVdPVwiaXRlbS50b29sdGlwIHwgdHJhbnNsYXRlXCJcclxuICAgICAgICBbaXRlbV09XCJpdGVtXCJcclxuICAgICAgICBbYWN0aXZlXT1cIiEhaXRlbS5hY3RpdmVcIlxyXG4gICAgICAgIFtpc0VuYWJsZWRdPVwiIWl0ZW0uZGlzYWJsZWRcIlxyXG4gICAgICAgIChjbGlja2VkKT1cImNsaWNrVG9vbEh1Ykl0ZW0oaXRlbS5idXR0b25JZClcIlxyXG4gICAgICA+PC9saWItdG9vbC1odWItaXRlbT5cclxuXHJcbiAgICAgIDxzdmdcclxuICAgICAgICBjbGFzcz1cImNlbnRlcm1lbnUtYnV0dG9uLXN2Z1wiXHJcbiAgICAgICAgW2F0dHIudmlld0JveF09XCJnZXRTVkdWaWV3Qm94KClcIlxyXG4gICAgICAgIGZpbGw9XCJub25lXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxjbGlwUGF0aCBpZD1cInN2Z0NlbnRlck1lbnVcIiBjbGlwUGF0aFVuaXRzPVwib2JqZWN0Qm91bmRpbmdCb3hcIj5cclxuICAgICAgICAgIDxwYXRoIFthdHRyLmRdPVwiZ2V0U1ZHQ2VudGVyTWVudVBhdGgoKVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICA8Y2xpcFBhdGggaWQ9XCJzdmdDZW50ZXJNZW51SXRlbVwiIGNsaXBQYXRoVW5pdHM9XCJvYmplY3RCb3VuZGluZ0JveFwiPlxyXG4gICAgICAgICAgPHBhdGggW2F0dHIuZF09XCJnZXRTVkdDZW50ZXJNZW51SXRlbVBhdGgoKVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICA8Y2xpcFBhdGggaWQ9XCJzdmdDZW50ZXJTdWJNZW51SXRlbVwiIGNsaXBQYXRoVW5pdHM9XCJvYmplY3RCb3VuZGluZ0JveFwiPlxyXG4gICAgICAgICAgPHBhdGggW2F0dHIuZF09XCJnZXRTVkdDZW50ZXJTdWJNZW51SXRlbVBhdGgoKVwiIGZpbGw9XCJ3aGl0ZVwiIC8+XHJcbiAgICAgICAgPC9jbGlwUGF0aD5cclxuICAgICAgICA8Y2xpcFBhdGggaWQ9XCJzdmdDZW50ZXJNZW51U3ViTWVudVwiIGNsaXBQYXRoVW5pdHM9XCJvYmplY3RCb3VuZGluZ0JveFwiPlxyXG4gICAgICAgICAgPHBhdGggW2F0dHIuZF09XCJhbm51bGFyU2VjdG9yXCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgPGNsaXBQYXRoXHJcbiAgICAgICAgICBpZD1cInN2Z0NlbnRlck1lbnVTdWJNZW51Qm9yZGVyXCJcclxuICAgICAgICAgIGNsaXBQYXRoVW5pdHM9XCJvYmplY3RCb3VuZGluZ0JveFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHBhdGggW2F0dHIuZF09XCJhbm51bGFyU2VjdG9yQm9yZGVyXCIgZmlsbD1cIm5vbmVcIiAvPlxyXG4gICAgICAgIDwvY2xpcFBhdGg+XHJcbiAgICAgICAgPGNsaXBQYXRoXHJcbiAgICAgICAgICBpZD1cInN2Z0NlbnRlck1lbnVTdWJNZW51RGVhZFpvbmVcIlxyXG4gICAgICAgICAgY2xpcFBhdGhVbml0cz1cIm9iamVjdEJvdW5kaW5nQm94XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8cGF0aCBbYXR0ci5kXT1cImRlYWRab25lQW5udWxhclNlY3RvclwiIGZpbGw9XCJub25lXCIgLz5cclxuICAgICAgICA8L2NsaXBQYXRoPlxyXG4gICAgICA8L3N2Zz5cclxuICAgIDwvZGl2PlxyXG5cclxuICAgIEBpZiAoYWN0aXZlU3ViSXRlbXMpIHtcclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJjZW50ZXItbWVudS1zdWItbWVudS1ib3JkZXJcIlxyXG4gICAgICBbbmdDbGFzc109XCJpc0NvbGxhcHNlZCA/ICdoaWRkZW4nIDogJydcIlxyXG4gICAgICAobW91c2VsZWF2ZSk9XCJzZXRIb3ZlcmVkU3RhdGUoJ3N1Ym1lbnVCb3JkZXInLCBmYWxzZSlcIlxyXG4gICAgICAobW91c2VlbnRlcik9XCJzZXRIb3ZlcmVkU3RhdGUoJ3N1Ym1lbnVCb3JkZXInLCB0cnVlKVwiXHJcbiAgICA+PC9kaXY+XHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzPVwiY2VudGVyLW1lbnUtc3ViLW1lbnVcIlxyXG4gICAgICBbbmdDbGFzc109XCJpc0NvbGxhcHNlZCA/ICdoaWRkZW4nIDogJydcIlxyXG4gICAgICAobW91c2VsZWF2ZSk9XCJzZXRIb3ZlcmVkU3RhdGUoJ3N1Ym1lbnUnLCBmYWxzZSlcIlxyXG4gICAgICAobW91c2VlbnRlcik9XCJzZXRIb3ZlcmVkU3RhdGUoJ3N1Ym1lbnUnLCB0cnVlKVwiXHJcbiAgICA+XHJcbiAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGl0ZW0gb2YgYWN0aXZlU3ViSXRlbXNcIj5cclxuICAgICAgICA8bGliLXRvb2wtaHViLXN1Yi1pdGVtXHJcbiAgICAgICAgICAqbmdJZj1cIml0ZW0udHlwZSA9PT0gJ2J1dHRvbidcIlxyXG4gICAgICAgICAgW2F0dHIuZGF0YS10ZXN0XT1cIid0b29saHViX3N1Yml0ZW1fJyArIGl0ZW0uYnV0dG9uSWRcIlxyXG4gICAgICAgICAgW3RpdGxlXT1cIml0ZW0udG9vbHRpcCB8IHRyYW5zbGF0ZVwiXHJcbiAgICAgICAgICBbaXRlbV09XCJpdGVtXCJcclxuICAgICAgICAgIChjbGljayk9XCJjbGlja1Rvb2xIdWJTdWJJdGVtKGl0ZW0uYnV0dG9uSWQpXCJcclxuICAgICAgICAgIChrZXlwcmVzcyk9XCJjbGlja1Rvb2xIdWJTdWJJdGVtKGl0ZW0uYnV0dG9uSWQpXCJcclxuICAgICAgICA+PC9saWItdG9vbC1odWItc3ViLWl0ZW0+XHJcbiAgICAgICAgPCEtLSB0aGlzIGl0ZW0gaXMgYWRkZWQgYXMgNnRoIGJ1dCBpcyBtb3ZlZCBiYWNrIGluIGxlc3MgZmlsZSB0byA1dGggcG9zaXRpb24gLS0+XHJcbiAgICAgICAgPGxpYi10b29sLWh1Yi1zdWItaXRlbVxyXG4gICAgICAgICAgKm5nSWY9XCJpdGVtLnR5cGUgPT09ICdzZXBhcmF0b3InXCJcclxuICAgICAgICAgIFthdHRyLmRhdGEtdGVzdF09XCIndG9vbGh1Yl9zdWJpdGVtXycgKyBpdGVtLmJ1dHRvbklkXCJcclxuICAgICAgICAgIFtpdGVtXT1cIml0ZW1cIlxyXG4gICAgICAgID48L2xpYi10b29sLWh1Yi1zdWItaXRlbT5cclxuICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXZcclxuICAgICAgY2xhc3M9XCJjZW50ZXItbWVudS1zdWItbWVudS1kZWFkLXpvbmVcIlxyXG4gICAgICBbbmdDbGFzc109XCJpc0NvbGxhcHNlZCA/ICdoaWRkZW4nIDogJydcIlxyXG4gICAgICAobW91c2VsZWF2ZSk9XCJzZXRIb3ZlcmVkU3RhdGUoJ2RlYWRab25lJywgZmFsc2UpXCJcclxuICAgICAgKG1vdXNlZW50ZXIpPVwic2V0SG92ZXJlZFN0YXRlKCdkZWFkWm9uZScsIHRydWUpXCJcclxuICAgID48L2Rpdj5cclxuICAgIH1cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
|