igniteui-angular 17.2.9 → 17.2.10
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/buttonGroup/buttonGroup.component.mjs +3 -6
- package/esm2022/lib/data-operations/filtering-expressions-tree.mjs +3 -3
- package/esm2022/lib/directives/drag-drop/drag-drop.directive.mjs +5 -1
- package/esm2022/lib/directives/for-of/for_of.directive.mjs +3 -3
- package/esm2022/lib/drop-down/drop-down-item.base.mjs +3 -3
- package/esm2022/lib/drop-down/drop-down.base.mjs +2 -2
- package/esm2022/lib/drop-down/drop-down.common.mjs +1 -1
- package/esm2022/lib/drop-down/drop-down.component.mjs +26 -11
- package/esm2022/lib/grids/filtering/excel-style/excel-style-conditional-filter.component.mjs +17 -4
- package/esm2022/lib/grids/filtering/excel-style/excel-style-custom-dialog.component.mjs +14 -9
- package/esm2022/lib/grids/headers/grid-header-group.component.mjs +6 -3
- package/esm2022/lib/grids/headers/grid-header.component.mjs +8 -2
- package/esm2022/lib/grids/toolbar/grid-toolbar-advanced-filtering.component.mjs +27 -3
- package/esm2022/lib/services/excel/excel-strings.mjs +2 -2
- package/fesm2022/igniteui-angular.mjs +103 -38
- package/fesm2022/igniteui-angular.mjs.map +1 -1
- package/lib/core/styles/components/grid/_excel-filtering-component.scss +5 -0
- package/lib/core/styles/components/grid/_excel-filtering-theme.scss +5 -0
- package/lib/core/styles/components/grid-toolbar/_grid-toolbar-component.scss +0 -4
- package/lib/core/styles/components/grid-toolbar/_grid-toolbar-theme.scss +0 -15
- package/lib/drop-down/drop-down-item.base.d.ts +1 -1
- package/lib/drop-down/drop-down.base.d.ts +1 -1
- package/lib/drop-down/drop-down.common.d.ts +1 -1
- package/lib/drop-down/drop-down.component.d.ts +13 -8
- package/lib/grids/filtering/excel-style/excel-style-conditional-filter.component.d.ts +5 -0
- package/lib/grids/headers/grid-header.component.d.ts +1 -0
- package/lib/grids/toolbar/grid-toolbar-advanced-filtering.component.d.ts +12 -1
- package/package.json +1 -1
- package/styles/igniteui-angular-dark.css +1 -1
- package/styles/igniteui-angular.css +1 -1
- package/styles/igniteui-bootstrap-dark.css +1 -1
- package/styles/igniteui-bootstrap-light.css +1 -1
- package/styles/igniteui-dark-green.css +1 -1
- package/styles/igniteui-fluent-dark-excel.css +1 -1
- package/styles/igniteui-fluent-dark-word.css +1 -1
- package/styles/igniteui-fluent-dark.css +1 -1
- package/styles/igniteui-fluent-light-excel.css +1 -1
- package/styles/igniteui-fluent-light-word.css +1 -1
- package/styles/igniteui-fluent-light.css +1 -1
- package/styles/igniteui-indigo-dark.css +1 -1
- package/styles/igniteui-indigo-light.css +1 -1
- package/styles/maps/igniteui-angular-dark.css.map +1 -1
- package/styles/maps/igniteui-angular.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
- package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
- package/styles/maps/igniteui-dark-green.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-dark.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
- package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
- package/styles/maps/igniteui-fluent-light.css.map +1 -1
- package/styles/maps/igniteui-indigo-dark.css.map +1 -1
- package/styles/maps/igniteui-indigo-light.css.map +1 -1
|
@@ -103,7 +103,7 @@ export class IgxGridHeaderComponent {
|
|
|
103
103
|
return this.sortDirection !== SortingDirection.None;
|
|
104
104
|
}
|
|
105
105
|
get filterIconClassName() {
|
|
106
|
-
return this.column.filteringExpressionsTree ? 'igx-excel-filter__icon--filtered' : 'igx-excel-filter__icon';
|
|
106
|
+
return this.column.filteringExpressionsTree || this.isAdvancedFilterApplied() ? 'igx-excel-filter__icon--filtered' : 'igx-excel-filter__icon';
|
|
107
107
|
}
|
|
108
108
|
get selectable() {
|
|
109
109
|
return this.grid.columnSelection !== GridSelectionMode.none &&
|
|
@@ -205,6 +205,12 @@ export class IgxGridHeaderComponent {
|
|
|
205
205
|
const expr = this.grid.sortingExpressions.find((x) => x.fieldName === this.column.field);
|
|
206
206
|
this.sortDirection = expr ? expr.dir : SortingDirection.None;
|
|
207
207
|
}
|
|
208
|
+
isAdvancedFilterApplied() {
|
|
209
|
+
if (!this.grid.advancedFilteringExpressionsTree) {
|
|
210
|
+
return false;
|
|
211
|
+
}
|
|
212
|
+
return !!this.grid.advancedFilteringExpressionsTree.find(this.column.field);
|
|
213
|
+
}
|
|
208
214
|
triggerSort() {
|
|
209
215
|
const groupingExpr = this.grid.groupingExpressions ?
|
|
210
216
|
this.grid.groupingExpressions.find((expr) => expr.fieldName === this.column.field) :
|
|
@@ -286,4 +292,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImpor
|
|
|
286
292
|
type: HostListener,
|
|
287
293
|
args: ['pointerleave']
|
|
288
294
|
}] } });
|
|
289
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL2hlYWRlcnMvZ3JpZC1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL2hlYWRlcnMvZ3JpZC1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBR1QsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFckUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQXdCLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFFN0Q7O0dBRUc7QUFRSCxNQUFNLE9BQU8sc0JBQXNCO0lBb0IvQjs7T0FFRztJQUNILElBQ1csWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUNXLGdC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QUFDLDZCQUE2QjtnQkFNL0IsTUFBTTtzQkFEaEIsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBZ0Z4QixPQUFPO3NCQURiLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWdDMUIsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyxjQUFjO2dCQVNyQixjQUFjO3NCQURwQixZQUFZO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBEb0NoZWNrLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3JpZENvbHVtbkRhdGFUeXBlIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2RhdGEtdXRpbCc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5SZXNpemluZ1NlcnZpY2UgfSBmcm9tICcuLi9yZXNpemluZy9yZXNpemluZy5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbHVtblR5cGUsIEdyaWRUeXBlLCBJR1hfR1JJRF9CQVNFIH0gZnJvbSAnLi4vY29tbW9uL2dyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEdyaWRTZWxlY3Rpb25Nb2RlIH0gZnJvbSAnLi4vY29tbW9uL2VudW1zJztcbmltcG9ydCB7IERpc3BsYXlEZW5zaXR5IH0gZnJvbSAnLi4vLi4vY29yZS9kZW5zaXR5JztcbmltcG9ydCB7IFNvcnRpbmdEaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvc29ydGluZy1zdHJhdGVneSc7XG5pbXBvcnQgeyBTb3J0aW5nSW5kZXhQaXBlIH0gZnJvbSAnLi9waXBlcyc7XG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0LCBOZ0lmLCBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElneEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9pY29uL2ljb24uY29tcG9uZW50JztcblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnaWd4LWdyaWQtaGVhZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2dyaWQtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtJZ3hJY29uQ29tcG9uZW50LCBOZ1RlbXBsYXRlT3V0bGV0LCBOZ0lmLCBOZ0NsYXNzLCBTb3J0aW5nSW5kZXhQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkSGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgRG9DaGVjaywgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbHVtbjogQ29sdW1uVHlwZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRlbnNpdHk6IERpc3BsYXlEZW5zaXR5O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2RlZmF1bHRFU0ZIZWFkZXJJY29uVGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgZGVmYXVsdEVTRkhlYWRlckljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdkZWZhdWx0U29ydEhlYWRlckljb25UZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByb3RlY3RlZCBkZWZhdWx0U29ydEhlYWRlckljb25UZW1wbGF0ZTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGBhcmlhLXNlbGVjdGVkYCBvZiB0aGUgaGVhZGVyLlxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXNlbGVjdGVkJylcbiAgICBwdWJsaWMgZ2V0IGFyaWFTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLnNlbGVjdGVkO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWdyaWQtdGgnKVxuICAgIHB1YmxpYyBnZXQgY29sdW1uR3JvdXBTdHlsZSgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmNvbHVtbi5jb2x1bW5Hcm91cDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZ3JpZC10aC0tY29zeScpXG4gICAgcHVibGljIGdldCBjb3N5U3R5bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlbnNpdHkgPT09ICdjb3N5JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZ3JpZC10aC0tY29tcGFjdCcpXG4gICAgcHVibGljIGdldCBjb21wYWN0U3R5bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlbnNpdHkgPT09ICdjb21wYWN0JztcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFzYycpXG4gICAgcHVibGljIGdldCBzb3J0QXNjZW5kaW5nU3R5bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvcnREaXJlY3Rpb24gPT09IFNvcnRpbmdEaXJlY3Rpb24uQXNjO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZGVzYycpXG4gICAgcHVibGljIGdldCBzb3J0RGVzY2VuZGluZ1N0eWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zb3J0RGlyZWN0aW9uID09PSBTb3J0aW5nRGlyZWN0aW9uLkRlc2M7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZ3JpZC10aC0tbnVtYmVyJylcbiAgICBwdWJsaWMgZ2V0IG51bWJlclN0eWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW4uZGF0YVR5cGUgPT09IEdyaWRDb2x1bW5EYXRhVHlwZS5OdW1iZXI7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZ3JpZC10aC0tc29ydGFibGUnKVxuICAgIHB1YmxpYyBnZXQgc29ydGFibGVTdHlsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLnNvcnRhYmxlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWdyaWQtdGgtLXNlbGVjdGFibGUnKVxuICAgIHB1YmxpYyBnZXQgc2VsZWN0YWJsZVN0eWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RhYmxlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWdyaWQtdGgtLWZpbHRyYWJsZScpXG4gICAgcHVibGljIGdldCBmaWx0ZXJhYmxlU3R5bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbi5maWx0ZXJhYmxlICYmIHRoaXMuZ3JpZC5maWx0ZXJpbmdTZXJ2aWNlLmlzRmlsdGVyUm93VmlzaWJsZTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1ncmlkLXRoLS1zb3J0ZWQnKVxuICAgIHB1YmxpYyBnZXQgc29ydGVkU3R5bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvcnRlZDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1ncmlkLXRoLS1zZWxlY3RlZCcpXG4gICAgcHVibGljIGdldCBzZWxlY3RlZFN0eWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmhlaWdodC5yZW0nKVxuICAgIHB1YmxpYyBnZXQgaGVpZ2h0KCkge1xuICAgICAgICBpZiAoIXRoaXMuZ3JpZC5oYXNDb2x1bW5Hcm91cHMgfHwgdGhpcy5ncmlkLmlzUGl2b3QpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICh0aGlzLmdyaWQubWF4TGV2ZWxIZWFkZXJEZXB0aCArIDEgLSB0aGlzLmNvbHVtbi5sZXZlbCkgKiB0aGlzLmdyaWQuZGVmYXVsdFJvd0hlaWdodCAvIHRoaXMuZ3JpZC5fYmFzZUZvbnRTaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGVzZkljb25UZW1wbGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5leGNlbFN0eWxlSGVhZGVySWNvblRlbXBsYXRlIHx8IHRoaXMuZGVmYXVsdEVTRkhlYWRlckljb25UZW1wbGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBzb3J0SWNvblRlbXBsYXRlKCkge1xuICAgICAgICBpZiAodGhpcy5zb3J0RGlyZWN0aW9uID09PSBTb3J0aW5nRGlyZWN0aW9uLk5vbmUgJiYgdGhpcy5ncmlkLnNvcnRIZWFkZXJJY29uVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdyaWQuc29ydEhlYWRlckljb25UZW1wbGF0ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNvcnREaXJlY3Rpb24gPT09IFNvcnRpbmdEaXJlY3Rpb24uQXNjICYmIHRoaXMuZ3JpZC5zb3J0QXNjZW5kaW5nSGVhZGVySWNvblRlbXBsYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ncmlkLnNvcnRBc2NlbmRpbmdIZWFkZXJJY29uVGVtcGxhdGU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zb3J0RGlyZWN0aW9uID09PSBTb3J0aW5nRGlyZWN0aW9uLkRlc2MgJiYgdGhpcy5ncmlkLnNvcnREZXNjZW5kaW5nSGVhZGVySWNvblRlbXBsYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ncmlkLnNvcnREZXNjZW5kaW5nSGVhZGVySWNvblRlbXBsYXRlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFNvcnRIZWFkZXJJY29uVGVtcGxhdGU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwQXJlYSA9IHRoaXMuZ3JpZC5ncm91cEFyZWEgfHwgdGhpcy5ncmlkLnRyZWVHcm91cEFyZWE7XG4gICAgICAgIGlmIChncm91cEFyZWE/LmV4cHJlc3Npb25zICYmIGdyb3VwQXJlYS5leHByZXNzaW9ucy5sZW5ndGggJiYgZ3JvdXBBcmVhLmV4cHJlc3Npb25zLm1hcChnID0+IGcuZmllbGROYW1lKS5pbmNsdWRlcyh0aGlzLmNvbHVtbi5maWVsZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNvcnRlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc29ydERpcmVjdGlvbiAhPT0gU29ydGluZ0RpcmVjdGlvbi5Ob25lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlsdGVySWNvbkNsYXNzTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLmZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSA/ICdpZ3gtZXhjZWwtZmlsdGVyX19pY29uLS1maWx0ZXJlZCcgOiAnaWd4LWV4Y2VsLWZpbHRlcl9faWNvbic7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzZWxlY3RhYmxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5ncmlkLmNvbHVtblNlbGVjdGlvbiAhPT0gR3JpZFNlbGVjdGlvbk1vZGUubm9uZSAmJlxuICAgICAgICAgICAgdGhpcy5jb2x1bW4uYXBwbHlTZWxlY3RhYmxlQ2xhc3MgJiZcbiAgICAgICAgICAgICF0aGlzLmNvbHVtbi5zZWxlY3RlZCAmJlxuICAgICAgICAgICAgIXRoaXMuZ3JpZC5maWx0ZXJpbmdTZXJ2aWNlLmlzRmlsdGVyUm93VmlzaWJsZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNlbGVjdGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW4uc2VsZWN0ZWRcbiAgICAgICAgICAgICYmICghdGhpcy5ncmlkLmZpbHRlcmluZ1NlcnZpY2UuaXNGaWx0ZXJSb3dWaXNpYmxlIHx8IHRoaXMuZ3JpZC5maWx0ZXJpbmdTZXJ2aWNlLmZpbHRlcmVkQ29sdW1uICE9PSB0aGlzLmNvbHVtbik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCB0aXRsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLnRpdGxlIHx8IHRoaXMuY29sdW1uLmhlYWRlciB8fCB0aGlzLmNvbHVtbi5maWVsZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IG5hdGl2ZUVsZW1lbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBzb3J0RGlyZWN0aW9uID0gU29ydGluZ0RpcmVjdGlvbi5Ob25lO1xuICAgIHByaXZhdGUgX2Rlc3Ryb3kkID0gbmV3IFN1YmplY3Q8Ym9vbGVhbj4oKTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBASW5qZWN0KElHWF9HUklEX0JBU0UpIHB1YmxpYyBncmlkOiBHcmlkVHlwZSxcbiAgICAgICAgcHVibGljIGNvbFJlc2l6aW5nU2VydmljZTogSWd4Q29sdW1uUmVzaXppbmdTZXJ2aWNlLFxuICAgICAgICBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSByZWY6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+XG4gICAgKSB7IH1cblxuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25DbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAoIXRoaXMuY29sUmVzaXppbmdTZXJ2aWNlLmlzQ29sdW1uUmVzaXppbmcpIHtcblxuICAgICAgICAgICAgaWYgKHRoaXMuZ3JpZC5maWx0ZXJpbmdTZXJ2aWNlLmlzRmlsdGVyUm93VmlzaWJsZSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbHVtbi5maWx0ZXJDZWxsVGVtcGxhdGUpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkLmZpbHRlcmluZ1Jvdy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29sdW1uLmZpbHRlcmFibGUgJiYgIXRoaXMuY29sdW1uLmNvbHVtbkdyb3VwICYmXG4gICAgICAgICAgICAgICAgICAgICF0aGlzLmdyaWQuZmlsdGVyaW5nU2VydmljZS5pc0ZpbHRlckNvbXBsZXgodGhpcy5jb2x1bW4uZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5maWx0ZXJpbmdTZXJ2aWNlLmZpbHRlcmVkQ29sdW1uID0gdGhpcy5jb2x1bW47XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmdyaWQuY29sdW1uU2VsZWN0aW9uICE9PSBHcmlkU2VsZWN0aW9uTW9kZS5ub25lICYmIHRoaXMuY29sdW1uLnNlbGVjdGFibGUpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjbGVhclNlbGVjdGlvbiA9IHRoaXMuZ3JpZC5jb2x1bW5TZWxlY3Rpb24gPT09IEdyaWRTZWxlY3Rpb25Nb2RlLnNpbmdsZSB8fCAhZXZlbnQuY3RybEtleTtcbiAgICAgICAgICAgICAgICBjb25zdCByYW5nZVNlbGVjdGlvbiA9IHRoaXMuZ3JpZC5jb2x1bW5TZWxlY3Rpb24gPT09IEdyaWRTZWxlY3Rpb25Nb2RlLm11bHRpcGxlICYmIGV2ZW50LnNoaWZ0S2V5O1xuXG4gICAgICAgICAgICAgICAgaWYgKCF0aGlzLmNvbHVtbi5zZWxlY3RlZCB8fCAodGhpcy5ncmlkLnNlbGVjdGlvblNlcnZpY2UuZ2V0U2VsZWN0ZWRDb2x1bW5zKCkubGVuZ3RoID4gMSAmJiBjbGVhclNlbGVjdGlvbikpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkLnNlbGVjdGlvblNlcnZpY2Uuc2VsZWN0Q29sdW1uKHRoaXMuY29sdW1uLmZpZWxkLCBjbGVhclNlbGVjdGlvbiwgcmFuZ2VTZWxlY3Rpb24sIGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWQuc2VsZWN0aW9uU2VydmljZS5kZXNlbGVjdENvbHVtbih0aGlzLmNvbHVtbi5maWVsZCwgZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmdyaWQudGhlYWRSb3cubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdwb2ludGVyZW50ZXInKVxuICAgIHB1YmxpYyBvblBpbnRlckVudGVyKCkge1xuICAgICAgICB0aGlzLmNvbHVtbi5hcHBseVNlbGVjdGFibGVDbGFzcyA9IHRydWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScpXG4gICAgcHVibGljIG9uUG9pbnRlckxlYXZlKCkge1xuICAgICAgICB0aGlzLmNvbHVtbi5hcHBseVNlbGVjdGFibGVDbGFzcyA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG5nRG9DaGVjaygpIHtcbiAgICAgICAgdGhpcy5nZXRTb3J0RGlyZWN0aW9uKCk7XG4gICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9kZXN0cm95JC5uZXh0KHRydWUpO1xuICAgICAgICB0aGlzLl9kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uUG9pbnRlckRvd25JbmRpY2F0b3IoZXZlbnQpIHtcbiAgICAgICAgLy8gU3RvcCBwcm9wYWdhdGlvbiBvZiBwb2ludGVyIGV2ZW50cyB0byBub3cgYWxsb3cgY29sdW1uIGRyYWdnaW5nIHVzaW5nIHRoZSBoZWFkZXIgaW5kaWNhdG9ycy5cbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgb25GaWx0ZXJpbmdJY29uQ2xpY2soZXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMuZ3JpZC5maWx0ZXJpbmdTZXJ2aWNlLnRvZ2dsZUZpbHRlckRyb3Bkb3duKHRoaXMubmF0aXZlRWxlbWVudCwgdGhpcy5jb2x1bW4pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uU29ydGluZ0ljb25DbGljayhldmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgdGhpcy50cmlnZ2VyU29ydCgpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRTb3J0RGlyZWN0aW9uKCkge1xuICAgICAgICBjb25zdCBleHByID0gdGhpcy5ncmlkLnNvcnRpbmdFeHByZXNzaW9ucy5maW5kKCh4KSA9PiB4LmZpZWxkTmFtZSA9PT0gdGhpcy5jb2x1bW4uZmllbGQpO1xuICAgICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSBleHByID8gZXhwci5kaXIgOiBTb3J0aW5nRGlyZWN0aW9uLk5vbmU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0cmlnZ2VyU29ydCgpIHtcbiAgICAgICAgY29uc3QgZ3JvdXBpbmdFeHByID0gdGhpcy5ncmlkLmdyb3VwaW5nRXhwcmVzc2lvbnMgP1xuICAgICAgICAgICAgdGhpcy5ncmlkLmdyb3VwaW5nRXhwcmVzc2lvbnMuZmluZCgoZXhwcikgPT4gZXhwci5maWVsZE5hbWUgPT09IHRoaXMuY29sdW1uLmZpZWxkKSA6XG4gICAgICAgICAgICB0aGlzLmdyaWQuZ3JvdXBBcmVhPy5leHByZXNzaW9ucyA/IHRoaXMuZ3JpZC5ncm91cEFyZWE/LmV4cHJlc3Npb25zLmZpbmQoKGV4cHIpID0+IGV4cHIuZmllbGROYW1lID09PSB0aGlzLmNvbHVtbi5maWVsZCkgOiBudWxsO1xuICAgICAgICBjb25zdCBzb3J0RGlyID0gZ3JvdXBpbmdFeHByID9cbiAgICAgICAgICAgIHRoaXMuc29ydERpcmVjdGlvbiArIDEgPiBTb3J0aW5nRGlyZWN0aW9uLkRlc2MgPyBTb3J0aW5nRGlyZWN0aW9uLkFzYyA6IFNvcnRpbmdEaXJlY3Rpb24uRGVzY1xuICAgICAgICAgICAgOiB0aGlzLnNvcnREaXJlY3Rpb24gKyAxID4gU29ydGluZ0RpcmVjdGlvbi5EZXNjID8gU29ydGluZ0RpcmVjdGlvbi5Ob25lIDogdGhpcy5zb3J0RGlyZWN0aW9uICsgMTtcbiAgICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gc29ydERpcjtcbiAgICAgICAgdGhpcy5ncmlkLnNvcnQoe1xuICAgICAgICAgICAgZmllbGROYW1lOiB0aGlzLmNvbHVtbi5maWVsZCwgZGlyOiB0aGlzLnNvcnREaXJlY3Rpb24sIGlnbm9yZUNhc2U6IHRoaXMuY29sdW1uLnNvcnRpbmdJZ25vcmVDYXNlLFxuICAgICAgICAgICAgc3RyYXRlZ3k6IHRoaXMuY29sdW1uLnNvcnRTdHJhdGVneVxuICAgICAgICB9KTtcbiAgICB9XG59XG4iLCI8bmctdGVtcGxhdGUgI2RlZmF1bHRDb2x1bW4+XG4gICAgPHNwYW4gW3RpdGxlXT1cInRpdGxlXCI+e3sgY29sdW1uLmhlYWRlciB8fCBjb2x1bW4uZmllbGQgfX08L3NwYW4+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRFU0ZIZWFkZXJJY29uVGVtcGxhdGU+XG4gICAgPGlneC1pY29uPm1vcmVfdmVydDwvaWd4LWljb24+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2RlZmF1bHRTb3J0SGVhZGVySWNvblRlbXBsYXRlPlxuICAgIDxpZ3gtaWNvbj57eyBzb3J0RGlyZWN0aW9uIDwgMiA/ICdhcnJvd191cHdhcmQnIDogJ2Fycm93X2Rvd253YXJkJyB9fTwvaWd4LWljb24+XG48L25nLXRlbXBsYXRlPlxuXG48c3BhbiBjbGFzcz1cImlneC1ncmlkLXRoX190aXRsZVwiPlxuICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjb2x1bW4uaGVhZGVyVGVtcGxhdGUgPyBjb2x1bW4uaGVhZGVyVGVtcGxhdGUgOiBkZWZhdWx0Q29sdW1uOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogY29sdW1uLCBjb2x1bW46IGNvbHVtbn1cIj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvc3Bhbj5cbjxuZy1jb250YWluZXIgKm5nSWY9XCIhY29sdW1uLmNvbHVtbkdyb3VwXCI+XG4gICAgPGRpdiBjbGFzcz1cImlneC1ncmlkLXRoX19pY29uc1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiY29sdW1uLnNvcnRhYmxlICYmICFkaXNhYmxlZFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNvcnQtaWNvblwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS1zb3J0SW5kZXhdPVwiKGdyaWQuc29ydGluZ09wdGlvbnMubW9kZSA9PT0gJ3NpbmdsZScgJiYgZ3JpZC5zb3J0aW5nRXhwcmVzc2lvbnMubGVuZ3RoIDw9MSkgPyBudWxsIDogY29sdW1uLmZpZWxkIHwgc29ydGluZ0luZGV4OmdyaWQuc29ydGluZ0V4cHJlc3Npb25zXCJcbiAgICAgICAgICAgICAgICAocG9pbnRlcmRvd24pPVwib25Qb2ludGVyRG93bkluZGljYXRvcigkZXZlbnQpXCIgKGNsaWNrKT1cIm9uU29ydGluZ0ljb25DbGljaygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNvcnRJY29uVGVtcGxhdGU7IGNvbnRleHQ6IHsgJGltcGxpY2l0OiAgdGhpcyB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJncmlkLmFsbG93RmlsdGVyaW5nICYmIGNvbHVtbi5maWx0ZXJhYmxlICYmIGdyaWQuZmlsdGVyTW9kZSA9PT0gJ2V4Y2VsU3R5bGVGaWx0ZXInXCI+XG4gICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImZpbHRlckljb25DbGFzc05hbWVcIiAocG9pbnRlcmRvd24pPVwib25Qb2ludGVyRG93bkluZGljYXRvcigkZXZlbnQpXCIgKGNsaWNrKT1cIm9uRmlsdGVyaW5nSWNvbkNsaWNrKCRldmVudClcIiA+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImVzZkljb25UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6ICB0aGlzIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbjwvbmctY29udGFpbmVyPlxuIl19
|
|
295
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL2hlYWRlcnMvZ3JpZC1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2dyaWRzL2hlYWRlcnMvZ3JpZC1oZWFkZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBR1QsV0FBVyxFQUNYLFlBQVksRUFDWixNQUFNLEVBQ04sS0FBSyxFQUVMLFdBQVcsRUFDWCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFFckUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUMvQixPQUFPLEVBQXdCLGFBQWEsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQy9FLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXBELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFFN0Q7O0dBRUc7QUFRSCxNQUFNLE9BQU8sc0JBQXNCO0lBb0IvQjs7T0FFRztJQUNILElBQ1csWUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUNXLGdC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O3VCQUFDLFlBQVk7Z0JBTWQsV0FBVztzQkFEckIsV0FBVzt1QkFBQywyQkFBMkI7Z0JBTTdCLGFBQWE7c0JBRHZCLFdBQVc7dUJBQUMsNkJBQTZCO2dCQU0vQixlQUFlO3NCQUR6QixXQUFXO3VCQUFDLCtCQUErQjtnQkFNakMsZUFBZTtzQkFEekIsV0FBVzt1QkFBQyw4QkFBOEI7Z0JBTWhDLFdBQVc7c0JBRHJCLFdBQVc7dUJBQUMsMkJBQTJCO2dCQU03QixhQUFhO3NCQUR2QixXQUFXO3VCQUFDLDZCQUE2QjtnQkFNL0IsTUFBTTtzQkFEaEIsV0FBVzt1QkFBQyxrQkFBa0I7Z0JBZ0Z4QixPQUFPO3NCQURiLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWdDMUIsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyxjQUFjO2dCQVNyQixjQUFjO3NCQURwQixZQUFZO3VCQUFDLGNBQWMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBEb0NoZWNrLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLFxuICAgIEluamVjdCxcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgR3JpZENvbHVtbkRhdGFUeXBlIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2RhdGEtdXRpbCc7XG5pbXBvcnQgeyBJZ3hDb2x1bW5SZXNpemluZ1NlcnZpY2UgfSBmcm9tICcuLi9yZXNpemluZy9yZXNpemluZy5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IENvbHVtblR5cGUsIEdyaWRUeXBlLCBJR1hfR1JJRF9CQVNFIH0gZnJvbSAnLi4vY29tbW9uL2dyaWQuaW50ZXJmYWNlJztcbmltcG9ydCB7IEdyaWRTZWxlY3Rpb25Nb2RlIH0gZnJvbSAnLi4vY29tbW9uL2VudW1zJztcbmltcG9ydCB7IERpc3BsYXlEZW5zaXR5IH0gZnJvbSAnLi4vLi4vY29yZS9kZW5zaXR5JztcbmltcG9ydCB7IFNvcnRpbmdEaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvc29ydGluZy1zdHJhdGVneSc7XG5pbXBvcnQgeyBTb3J0aW5nSW5kZXhQaXBlIH0gZnJvbSAnLi9waXBlcyc7XG5pbXBvcnQgeyBOZ1RlbXBsYXRlT3V0bGV0LCBOZ0lmLCBOZ0NsYXNzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IElneEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9pY29uL2ljb24uY29tcG9uZW50JztcblxuLyoqXG4gKiBAaGlkZGVuXG4gKi9cbkBDb21wb25lbnQoe1xuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICAgIHNlbGVjdG9yOiAnaWd4LWdyaWQtaGVhZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2dyaWQtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtJZ3hJY29uQ29tcG9uZW50LCBOZ1RlbXBsYXRlT3V0bGV0LCBOZ0lmLCBOZ0NsYXNzLCBTb3J0aW5nSW5kZXhQaXBlXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkSGVhZGVyQ29tcG9uZW50IGltcGxlbWVudHMgRG9DaGVjaywgT25EZXN0cm95IHtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGNvbHVtbjogQ29sdW1uVHlwZTtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGRlbnNpdHk6IERpc3BsYXlEZW5zaXR5O1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBWaWV3Q2hpbGQoJ2RlZmF1bHRFU0ZIZWFkZXJJY29uVGVtcGxhdGUnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgZGVmYXVsdEVTRkhlYWRlckljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBAVmlld0NoaWxkKCdkZWZhdWx0U29ydEhlYWRlckljb25UZW1wbGF0ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByb3RlY3RlZCBkZWZhdWx0U29ydEhlYWRlckljb25UZW1wbGF0ZTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGBhcmlhLXNlbGVjdGVkYCBvZiB0aGUgaGVhZGVyLlxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5hcmlhLXNlbGVjdGVkJylcbiAgICBwdWJsaWMgZ2V0IGFyaWFTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLnNlbGVjdGVkO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWdyaWQtdGgnKVxuICAgIHB1YmxpYyBnZXQgY29sdW1uR3JvdXBTdHlsZSgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLmNvbHVtbi5jb2x1bW5Hcm91cDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZ3JpZC10aC0tY29zeScpXG4gICAgcHVibGljIGdldCBjb3N5U3R5bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlbnNpdHkgPT09ICdjb3N5JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZ3JpZC10aC0tY29tcGFjdCcpXG4gICAgcHVibGljIGdldCBjb21wYWN0U3R5bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRlbnNpdHkgPT09ICdjb21wYWN0JztcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmFzYycpXG4gICAgcHVibGljIGdldCBzb3J0QXNjZW5kaW5nU3R5bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvcnREaXJlY3Rpb24gPT09IFNvcnRpbmdEaXJlY3Rpb24uQXNjO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuZGVzYycpXG4gICAgcHVibGljIGdldCBzb3J0RGVzY2VuZGluZ1N0eWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zb3J0RGlyZWN0aW9uID09PSBTb3J0aW5nRGlyZWN0aW9uLkRlc2M7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZ3JpZC10aC0tbnVtYmVyJylcbiAgICBwdWJsaWMgZ2V0IG51bWJlclN0eWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb2x1bW4uZGF0YVR5cGUgPT09IEdyaWRDb2x1bW5EYXRhVHlwZS5OdW1iZXI7XG4gICAgfVxuXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZ3JpZC10aC0tc29ydGFibGUnKVxuICAgIHB1YmxpYyBnZXQgc29ydGFibGVTdHlsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLnNvcnRhYmxlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWdyaWQtdGgtLXNlbGVjdGFibGUnKVxuICAgIHB1YmxpYyBnZXQgc2VsZWN0YWJsZVN0eWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RhYmxlO1xuICAgIH1cblxuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWdyaWQtdGgtLWZpbHRyYWJsZScpXG4gICAgcHVibGljIGdldCBmaWx0ZXJhYmxlU3R5bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbi5maWx0ZXJhYmxlICYmIHRoaXMuZ3JpZC5maWx0ZXJpbmdTZXJ2aWNlLmlzRmlsdGVyUm93VmlzaWJsZTtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1ncmlkLXRoLS1zb3J0ZWQnKVxuICAgIHB1YmxpYyBnZXQgc29ydGVkU3R5bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNvcnRlZDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1ncmlkLXRoLS1zZWxlY3RlZCcpXG4gICAgcHVibGljIGdldCBzZWxlY3RlZFN0eWxlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3RlZDtcbiAgICB9XG5cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLmhlaWdodC5yZW0nKVxuICAgIHB1YmxpYyBnZXQgaGVpZ2h0KCkge1xuICAgICAgICBpZiAoIXRoaXMuZ3JpZC5oYXNDb2x1bW5Hcm91cHMgfHwgdGhpcy5ncmlkLmlzUGl2b3QpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICh0aGlzLmdyaWQubWF4TGV2ZWxIZWFkZXJEZXB0aCArIDEgLSB0aGlzLmNvbHVtbi5sZXZlbCkgKiB0aGlzLmdyaWQuZGVmYXVsdFJvd0hlaWdodCAvIHRoaXMuZ3JpZC5fYmFzZUZvbnRTaXplO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGVzZkljb25UZW1wbGF0ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5leGNlbFN0eWxlSGVhZGVySWNvblRlbXBsYXRlIHx8IHRoaXMuZGVmYXVsdEVTRkhlYWRlckljb25UZW1wbGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBzb3J0SWNvblRlbXBsYXRlKCkge1xuICAgICAgICBpZiAodGhpcy5zb3J0RGlyZWN0aW9uID09PSBTb3J0aW5nRGlyZWN0aW9uLk5vbmUgJiYgdGhpcy5ncmlkLnNvcnRIZWFkZXJJY29uVGVtcGxhdGUpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdyaWQuc29ydEhlYWRlckljb25UZW1wbGF0ZTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNvcnREaXJlY3Rpb24gPT09IFNvcnRpbmdEaXJlY3Rpb24uQXNjICYmIHRoaXMuZ3JpZC5zb3J0QXNjZW5kaW5nSGVhZGVySWNvblRlbXBsYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ncmlkLnNvcnRBc2NlbmRpbmdIZWFkZXJJY29uVGVtcGxhdGU7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5zb3J0RGlyZWN0aW9uID09PSBTb3J0aW5nRGlyZWN0aW9uLkRlc2MgJiYgdGhpcy5ncmlkLnNvcnREZXNjZW5kaW5nSGVhZGVySWNvblRlbXBsYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5ncmlkLnNvcnREZXNjZW5kaW5nSGVhZGVySWNvblRlbXBsYXRlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZGVmYXVsdFNvcnRIZWFkZXJJY29uVGVtcGxhdGU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZGlzYWJsZWQoKSB7XG4gICAgICAgIGNvbnN0IGdyb3VwQXJlYSA9IHRoaXMuZ3JpZC5ncm91cEFyZWEgfHwgdGhpcy5ncmlkLnRyZWVHcm91cEFyZWE7XG4gICAgICAgIGlmIChncm91cEFyZWE/LmV4cHJlc3Npb25zICYmIGdyb3VwQXJlYS5leHByZXNzaW9ucy5sZW5ndGggJiYgZ3JvdXBBcmVhLmV4cHJlc3Npb25zLm1hcChnID0+IGcuZmllbGROYW1lKS5pbmNsdWRlcyh0aGlzLmNvbHVtbi5maWVsZCkpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0IHNvcnRlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuc29ydERpcmVjdGlvbiAhPT0gU29ydGluZ0RpcmVjdGlvbi5Ob25lO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgZmlsdGVySWNvbkNsYXNzTmFtZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLmZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB8fCB0aGlzLmlzQWR2YW5jZWRGaWx0ZXJBcHBsaWVkKCkgPyAnaWd4LWV4Y2VsLWZpbHRlcl9faWNvbi0tZmlsdGVyZWQnIDogJ2lneC1leGNlbC1maWx0ZXJfX2ljb24nO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgc2VsZWN0YWJsZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ3JpZC5jb2x1bW5TZWxlY3Rpb24gIT09IEdyaWRTZWxlY3Rpb25Nb2RlLm5vbmUgJiZcbiAgICAgICAgICAgIHRoaXMuY29sdW1uLmFwcGx5U2VsZWN0YWJsZUNsYXNzICYmXG4gICAgICAgICAgICAhdGhpcy5jb2x1bW4uc2VsZWN0ZWQgJiZcbiAgICAgICAgICAgICF0aGlzLmdyaWQuZmlsdGVyaW5nU2VydmljZS5pc0ZpbHRlclJvd1Zpc2libGU7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBzZWxlY3RlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29sdW1uLnNlbGVjdGVkXG4gICAgICAgICAgICAmJiAoIXRoaXMuZ3JpZC5maWx0ZXJpbmdTZXJ2aWNlLmlzRmlsdGVyUm93VmlzaWJsZSB8fCB0aGlzLmdyaWQuZmlsdGVyaW5nU2VydmljZS5maWx0ZXJlZENvbHVtbiAhPT0gdGhpcy5jb2x1bW4pO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXQgdGl0bGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbHVtbi50aXRsZSB8fCB0aGlzLmNvbHVtbi5oZWFkZXIgfHwgdGhpcy5jb2x1bW4uZmllbGQ7XG4gICAgfVxuXG4gICAgcHVibGljIGdldCBuYXRpdmVFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWYubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc29ydERpcmVjdGlvbiA9IFNvcnRpbmdEaXJlY3Rpb24uTm9uZTtcbiAgICBwcml2YXRlIF9kZXN0cm95JCA9IG5ldyBTdWJqZWN0PGJvb2xlYW4+KCk7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgQEluamVjdChJR1hfR1JJRF9CQVNFKSBwdWJsaWMgZ3JpZDogR3JpZFR5cGUsXG4gICAgICAgIHB1YmxpYyBjb2xSZXNpemluZ1NlcnZpY2U6IElneENvbHVtblJlc2l6aW5nU2VydmljZSxcbiAgICAgICAgcHVibGljIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgcmVmOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PlxuICAgICkgeyB9XG5cbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbFJlc2l6aW5nU2VydmljZS5pc0NvbHVtblJlc2l6aW5nKSB7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLmdyaWQuZmlsdGVyaW5nU2VydmljZS5pc0ZpbHRlclJvd1Zpc2libGUpIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5jb2x1bW4uZmlsdGVyQ2VsbFRlbXBsYXRlKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5maWx0ZXJpbmdSb3cuY2xvc2UoKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmNvbHVtbi5maWx0ZXJhYmxlICYmICF0aGlzLmNvbHVtbi5jb2x1bW5Hcm91cCAmJlxuICAgICAgICAgICAgICAgICAgICAhdGhpcy5ncmlkLmZpbHRlcmluZ1NlcnZpY2UuaXNGaWx0ZXJDb21wbGV4KHRoaXMuY29sdW1uLmZpZWxkKSkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdyaWQuZmlsdGVyaW5nU2VydmljZS5maWx0ZXJlZENvbHVtbiA9IHRoaXMuY29sdW1uO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5ncmlkLmNvbHVtblNlbGVjdGlvbiAhPT0gR3JpZFNlbGVjdGlvbk1vZGUubm9uZSAmJiB0aGlzLmNvbHVtbi5zZWxlY3RhYmxlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xlYXJTZWxlY3Rpb24gPSB0aGlzLmdyaWQuY29sdW1uU2VsZWN0aW9uID09PSBHcmlkU2VsZWN0aW9uTW9kZS5zaW5nbGUgfHwgIWV2ZW50LmN0cmxLZXk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmFuZ2VTZWxlY3Rpb24gPSB0aGlzLmdyaWQuY29sdW1uU2VsZWN0aW9uID09PSBHcmlkU2VsZWN0aW9uTW9kZS5tdWx0aXBsZSAmJiBldmVudC5zaGlmdEtleTtcblxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5jb2x1bW4uc2VsZWN0ZWQgfHwgKHRoaXMuZ3JpZC5zZWxlY3Rpb25TZXJ2aWNlLmdldFNlbGVjdGVkQ29sdW1ucygpLmxlbmd0aCA+IDEgJiYgY2xlYXJTZWxlY3Rpb24pKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ3JpZC5zZWxlY3Rpb25TZXJ2aWNlLnNlbGVjdENvbHVtbih0aGlzLmNvbHVtbi5maWVsZCwgY2xlYXJTZWxlY3Rpb24sIHJhbmdlU2VsZWN0aW9uLCBldmVudCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ncmlkLnNlbGVjdGlvblNlcnZpY2UuZGVzZWxlY3RDb2x1bW4odGhpcy5jb2x1bW4uZmllbGQsIGV2ZW50KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5ncmlkLnRoZWFkUm93Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcigncG9pbnRlcmVudGVyJylcbiAgICBwdWJsaWMgb25QaW50ZXJFbnRlcigpIHtcbiAgICAgICAgdGhpcy5jb2x1bW4uYXBwbHlTZWxlY3RhYmxlQ2xhc3MgPSB0cnVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdwb2ludGVybGVhdmUnKVxuICAgIHB1YmxpYyBvblBvaW50ZXJMZWF2ZSgpIHtcbiAgICAgICAgdGhpcy5jb2x1bW4uYXBwbHlTZWxlY3RhYmxlQ2xhc3MgPSBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ0RvQ2hlY2soKSB7XG4gICAgICAgIHRoaXMuZ2V0U29ydERpcmVjdGlvbigpO1xuICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGVzdHJveSQubmV4dCh0cnVlKTtcbiAgICAgICAgdGhpcy5fZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvblBvaW50ZXJEb3duSW5kaWNhdG9yKGV2ZW50KSB7XG4gICAgICAgIC8vIFN0b3AgcHJvcGFnYXRpb24gb2YgcG9pbnRlciBldmVudHMgdG8gbm93IGFsbG93IGNvbHVtbiBkcmFnZ2luZyB1c2luZyB0aGUgaGVhZGVyIGluZGljYXRvcnMuXG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW4gQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIG9uRmlsdGVyaW5nSWNvbkNsaWNrKGV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB0aGlzLmdyaWQuZmlsdGVyaW5nU2VydmljZS50b2dnbGVGaWx0ZXJEcm9wZG93bih0aGlzLm5hdGl2ZUVsZW1lbnQsIHRoaXMuY29sdW1uKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBvblNvcnRpbmdJY29uQ2xpY2soZXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHRoaXMudHJpZ2dlclNvcnQoKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0U29ydERpcmVjdGlvbigpIHtcbiAgICAgICAgY29uc3QgZXhwciA9IHRoaXMuZ3JpZC5zb3J0aW5nRXhwcmVzc2lvbnMuZmluZCgoeCkgPT4geC5maWVsZE5hbWUgPT09IHRoaXMuY29sdW1uLmZpZWxkKTtcbiAgICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gZXhwciA/IGV4cHIuZGlyIDogU29ydGluZ0RpcmVjdGlvbi5Ob25lO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBpc0FkdmFuY2VkRmlsdGVyQXBwbGllZCgpIHtcbiAgICAgICAgaWYoIXRoaXMuZ3JpZC5hZHZhbmNlZEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAhIXRoaXMuZ3JpZC5hZHZhbmNlZEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZS5maW5kKHRoaXMuY29sdW1uLmZpZWxkKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyaWdnZXJTb3J0KCkge1xuICAgICAgICBjb25zdCBncm91cGluZ0V4cHIgPSB0aGlzLmdyaWQuZ3JvdXBpbmdFeHByZXNzaW9ucyA/XG4gICAgICAgICAgICB0aGlzLmdyaWQuZ3JvdXBpbmdFeHByZXNzaW9ucy5maW5kKChleHByKSA9PiBleHByLmZpZWxkTmFtZSA9PT0gdGhpcy5jb2x1bW4uZmllbGQpIDpcbiAgICAgICAgICAgIHRoaXMuZ3JpZC5ncm91cEFyZWE/LmV4cHJlc3Npb25zID8gdGhpcy5ncmlkLmdyb3VwQXJlYT8uZXhwcmVzc2lvbnMuZmluZCgoZXhwcikgPT4gZXhwci5maWVsZE5hbWUgPT09IHRoaXMuY29sdW1uLmZpZWxkKSA6IG51bGw7XG4gICAgICAgIGNvbnN0IHNvcnREaXIgPSBncm91cGluZ0V4cHIgP1xuICAgICAgICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uICsgMSA+IFNvcnRpbmdEaXJlY3Rpb24uRGVzYyA/IFNvcnRpbmdEaXJlY3Rpb24uQXNjIDogU29ydGluZ0RpcmVjdGlvbi5EZXNjXG4gICAgICAgICAgICA6IHRoaXMuc29ydERpcmVjdGlvbiArIDEgPiBTb3J0aW5nRGlyZWN0aW9uLkRlc2MgPyBTb3J0aW5nRGlyZWN0aW9uLk5vbmUgOiB0aGlzLnNvcnREaXJlY3Rpb24gKyAxO1xuICAgICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSBzb3J0RGlyO1xuICAgICAgICB0aGlzLmdyaWQuc29ydCh7XG4gICAgICAgICAgICBmaWVsZE5hbWU6IHRoaXMuY29sdW1uLmZpZWxkLCBkaXI6IHRoaXMuc29ydERpcmVjdGlvbiwgaWdub3JlQ2FzZTogdGhpcy5jb2x1bW4uc29ydGluZ0lnbm9yZUNhc2UsXG4gICAgICAgICAgICBzdHJhdGVneTogdGhpcy5jb2x1bW4uc29ydFN0cmF0ZWd5XG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjZGVmYXVsdENvbHVtbj5cbiAgICA8c3BhbiBbdGl0bGVdPVwidGl0bGVcIj57eyBjb2x1bW4uaGVhZGVyIHx8IGNvbHVtbi5maWVsZCB9fTwvc3Bhbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdEVTRkhlYWRlckljb25UZW1wbGF0ZT5cbiAgICA8aWd4LWljb24+bW9yZV92ZXJ0PC9pZ3gtaWNvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZGVmYXVsdFNvcnRIZWFkZXJJY29uVGVtcGxhdGU+XG4gICAgPGlneC1pY29uPnt7IHNvcnREaXJlY3Rpb24gPCAyID8gJ2Fycm93X3Vwd2FyZCcgOiAnYXJyb3dfZG93bndhcmQnIH19PC9pZ3gtaWNvbj5cbjwvbmctdGVtcGxhdGU+XG5cbjxzcGFuIGNsYXNzPVwiaWd4LWdyaWQtdGhfX3RpdGxlXCI+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdUZW1wbGF0ZU91dGxldD1cImNvbHVtbi5oZWFkZXJUZW1wbGF0ZSA/IGNvbHVtbi5oZWFkZXJUZW1wbGF0ZSA6IGRlZmF1bHRDb2x1bW47IGNvbnRleHQ6IHsgJGltcGxpY2l0OiBjb2x1bW4sIGNvbHVtbjogY29sdW1ufVwiPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9zcGFuPlxuPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFjb2x1bW4uY29sdW1uR3JvdXBcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaWd4LWdyaWQtdGhfX2ljb25zXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJjb2x1bW4uc29ydGFibGUgJiYgIWRpc2FibGVkXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic29ydC1pY29uXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXNvcnRJbmRleF09XCIoZ3JpZC5zb3J0aW5nT3B0aW9ucy5tb2RlID09PSAnc2luZ2xlJyAmJiBncmlkLnNvcnRpbmdFeHByZXNzaW9ucy5sZW5ndGggPD0xKSA/IG51bGwgOiBjb2x1bW4uZmllbGQgfCBzb3J0aW5nSW5kZXg6Z3JpZC5zb3J0aW5nRXhwcmVzc2lvbnNcIlxuICAgICAgICAgICAgICAgIChwb2ludGVyZG93bik9XCJvblBvaW50ZXJEb3duSW5kaWNhdG9yKCRldmVudClcIiAoY2xpY2spPVwib25Tb3J0aW5nSWNvbkNsaWNrKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic29ydEljb25UZW1wbGF0ZTsgY29udGV4dDogeyAkaW1wbGljaXQ6ICB0aGlzIH1cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImdyaWQuYWxsb3dGaWx0ZXJpbmcgJiYgY29sdW1uLmZpbHRlcmFibGUgJiYgZ3JpZC5maWx0ZXJNb2RlID09PSAnZXhjZWxTdHlsZUZpbHRlcidcIj5cbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZmlsdGVySWNvbkNsYXNzTmFtZVwiIChwb2ludGVyZG93bik9XCJvblBvaW50ZXJEb3duSW5kaWNhdG9yKCRldmVudClcIiAoY2xpY2spPVwib25GaWx0ZXJpbmdJY29uQ2xpY2soJGV2ZW50KVwiID5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZXNmSWNvblRlbXBsYXRlOyBjb250ZXh0OiB7ICRpbXBsaWNpdDogIHRoaXMgfVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvZGl2PlxuPC9uZy1jb250YWluZXI+XG4iXX0=
|
|
@@ -4,6 +4,7 @@ import { IgxIconComponent } from '../../icon/icon.component';
|
|
|
4
4
|
import { NgClass, NgIf } from '@angular/common';
|
|
5
5
|
import { IgxRippleDirective } from '../../directives/ripple/ripple.directive';
|
|
6
6
|
import { IgxButtonDirective } from '../../directives/button/button.directive';
|
|
7
|
+
import { FilteringExpressionsTree } from '../../data-operations/filtering-expressions-tree';
|
|
7
8
|
import * as i0 from "@angular/core";
|
|
8
9
|
import * as i1 from "./token";
|
|
9
10
|
/**
|
|
@@ -28,17 +29,40 @@ export class IgxGridToolbarAdvancedFilteringComponent {
|
|
|
28
29
|
}
|
|
29
30
|
constructor(toolbar) {
|
|
30
31
|
this.toolbar = toolbar;
|
|
32
|
+
this.grid?.advancedFilteringExpressionsTreeChange.subscribe(filteringTree => {
|
|
33
|
+
this.numberOfColumns = this.extractUniqueFieldNamesFromFilterTree(filteringTree).length;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* @hidden
|
|
38
|
+
*/
|
|
39
|
+
ngAfterViewInit() {
|
|
40
|
+
this.numberOfColumns = this.grid?.advancedFilteringExpressionsTree ? this.extractUniqueFieldNamesFromFilterTree(this.grid?.advancedFilteringExpressionsTree).length : 0;
|
|
41
|
+
}
|
|
42
|
+
extractUniqueFieldNamesFromFilterTree(filteringTree) {
|
|
43
|
+
const columnNames = [];
|
|
44
|
+
if (!filteringTree)
|
|
45
|
+
return columnNames;
|
|
46
|
+
filteringTree.filteringOperands.forEach((expr) => {
|
|
47
|
+
if (expr instanceof FilteringExpressionsTree) {
|
|
48
|
+
columnNames.push(...this.extractUniqueFieldNamesFromFilterTree(expr));
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
columnNames.push(expr.fieldName);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
return [...new Set(columnNames)];
|
|
31
55
|
}
|
|
32
56
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxGridToolbarAdvancedFilteringComponent, deps: [{ token: IgxToolbarToken }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
33
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: IgxGridToolbarAdvancedFilteringComponent, isStandalone: true, selector: "igx-grid-toolbar-advanced-filtering", inputs: { overlaySettings: "overlaySettings" }, ngImport: i0, template: "<button igxButton=\"outlined\" type=\"button\" [displayDensity]=\"grid.displayDensity\" name=\"btnAdvancedFiltering\" igxRipple\n [title]=\"grid?.resourceStrings.igx_grid_toolbar_advanced_filtering_button_tooltip\"\n (click)=\"grid.openAdvancedFilteringDialog(overlaySettings)\"\n
|
|
57
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.2.4", type: IgxGridToolbarAdvancedFilteringComponent, isStandalone: true, selector: "igx-grid-toolbar-advanced-filtering", inputs: { overlaySettings: "overlaySettings" }, ngImport: i0, template: "<button igxButton=\"outlined\" type=\"button\" [displayDensity]=\"grid.displayDensity\" name=\"btnAdvancedFiltering\" igxRipple\n [title]=\"grid?.resourceStrings.igx_grid_toolbar_advanced_filtering_button_tooltip\"\n (click)=\"grid.openAdvancedFilteringDialog(overlaySettings)\"\n class=\"igx-grid-toolbar__adv-filter\">\n <igx-icon>filter_list</igx-icon>\n <span #ref>\n <ng-content></ng-content>\n </span>\n <span *ngIf=\"!ref.childNodes.length\">{{ grid?.resourceStrings.igx_grid_toolbar_advanced_filtering_button_label }}</span>\n <span class=\"igx-adv-filter--column-number\" *ngIf=\"grid?.advancedFilteringExpressionsTree\"> ({{ numberOfColumns }}) </span>\n</button>\n", dependencies: [{ kind: "directive", type: IgxButtonDirective, selector: "[igxButton]", inputs: ["selected", "igxButton", "igxLabel"], outputs: ["buttonSelected"] }, { kind: "directive", type: IgxRippleDirective, selector: "[igxRipple]", inputs: ["igxRippleTarget", "igxRipple", "igxRippleDuration", "igxRippleCentered", "igxRippleDisabled"] }, { kind: "component", type: IgxIconComponent, selector: "igx-icon", inputs: ["family", "active", "name"] }, { kind: "directive", type: NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
34
58
|
}
|
|
35
59
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.2.4", ngImport: i0, type: IgxGridToolbarAdvancedFilteringComponent, decorators: [{
|
|
36
60
|
type: Component,
|
|
37
|
-
args: [{ selector: 'igx-grid-toolbar-advanced-filtering', standalone: true, imports: [IgxButtonDirective, IgxRippleDirective, NgClass, IgxIconComponent, NgIf], template: "<button igxButton=\"outlined\" type=\"button\" [displayDensity]=\"grid.displayDensity\" name=\"btnAdvancedFiltering\" igxRipple\n [title]=\"grid?.resourceStrings.igx_grid_toolbar_advanced_filtering_button_tooltip\"\n (click)=\"grid.openAdvancedFilteringDialog(overlaySettings)\"\n
|
|
61
|
+
args: [{ selector: 'igx-grid-toolbar-advanced-filtering', standalone: true, imports: [IgxButtonDirective, IgxRippleDirective, NgClass, IgxIconComponent, NgIf], template: "<button igxButton=\"outlined\" type=\"button\" [displayDensity]=\"grid.displayDensity\" name=\"btnAdvancedFiltering\" igxRipple\n [title]=\"grid?.resourceStrings.igx_grid_toolbar_advanced_filtering_button_tooltip\"\n (click)=\"grid.openAdvancedFilteringDialog(overlaySettings)\"\n class=\"igx-grid-toolbar__adv-filter\">\n <igx-icon>filter_list</igx-icon>\n <span #ref>\n <ng-content></ng-content>\n </span>\n <span *ngIf=\"!ref.childNodes.length\">{{ grid?.resourceStrings.igx_grid_toolbar_advanced_filtering_button_label }}</span>\n <span class=\"igx-adv-filter--column-number\" *ngIf=\"grid?.advancedFilteringExpressionsTree\"> ({{ numberOfColumns }}) </span>\n</button>\n" }]
|
|
38
62
|
}], ctorParameters: () => [{ type: i1.IgxToolbarToken, decorators: [{
|
|
39
63
|
type: Inject,
|
|
40
64
|
args: [IgxToolbarToken]
|
|
41
65
|
}] }], propDecorators: { overlaySettings: [{
|
|
42
66
|
type: Input
|
|
43
67
|
}] } });
|
|
44
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC10b29sYmFyLWFkdmFuY2VkLWZpbHRlcmluZy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvdG9vbGJhci9ncmlkLXRvb2xiYXItYWR2YW5jZWQtZmlsdGVyaW5nLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9ncmlkcy90b29sYmFyL2dyaWQtdG9vbGJhci1hZHZhbmNlZC1maWx0ZXJpbmcuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFpQixTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRTFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDaEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDOUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sMENBQTBDLENBQUM7QUFDOUUsT0FBTyxFQUFFLHdCQUF3QixFQUE2QixNQUFNLGtEQUFrRCxDQUFDOzs7QUFJdkg7Ozs7Ozs7Ozs7OztHQVlHO0FBT0gsTUFBTSxPQUFPLHdDQUF3QztJQUtqRDs7T0FFRztJQUNILElBQVcsSUFBSTtRQUNYLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDN0IsQ0FBQztJQUtELFlBQThDLE9BQXdCO1FBQXhCLFlBQU8sR0FBUCxPQUFPLENBQWlCO1FBQ2xFLElBQUksQ0FBQyxJQUFJLEVBQUUsc0NBQXNDLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxFQUFFO1lBQ3hFLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLHFDQUFxQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUM1RixDQUFDLENBQUMsQ0FBQztJQUNQLENBQUM7SUFFRDs7T0FFRztJQUNJLGVBQWU7UUFDbEIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUMsSUFBSSxFQUFFLGdDQUFnQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMscUNBQXFDLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxnQ0FBZ0MsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVLLENBQUM7SUFFUyxxQ0FBcUMsQ0FBQyxhQUF5QztRQUNyRixNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxDQUFDLGFBQWE7WUFBRSxPQUFPLFdBQVcsQ0FBQztRQUN2QyxhQUFhLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDN0MsSUFBSSxJQUFJLFlBQVksd0JBQXdCLEVBQUU7Z0JBQzFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMscUNBQXFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzthQUN6RTtpQkFBTTtnQkFDSCxXQUFXLENBQUMsSUFBSSxDQUFFLElBQTZCLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDOUQ7UUFDTCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sQ0FBQyxHQUFHLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQzs4R0F2Q1Esd0NBQXdDLGtCQWU1QixlQUFlO2tHQWYzQix3Q0FBd0MsK0lDOUJyRCxvc0JBV0EsNENEaUJjLGtCQUFrQixvSUFBRSxrQkFBa0IsaUtBQVcsZ0JBQWdCLDJGQUFFLElBQUk7OzJGQUV4RSx3Q0FBd0M7a0JBTnBELFNBQVM7K0JBQ0kscUNBQXFDLGNBRW5DLElBQUksV0FDUCxDQUFDLGtCQUFrQixFQUFFLGtCQUFrQixFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLENBQUM7OzBCQWlCcEUsTUFBTTsyQkFBQyxlQUFlO3lDQUY3QixlQUFlO3NCQURyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ29tcG9uZW50LCBJbmplY3QsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hUb29sYmFyVG9rZW4gfSBmcm9tICcuL3Rva2VuJztcbmltcG9ydCB7IE92ZXJsYXlTZXR0aW5ncyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL292ZXJsYXkvdXRpbGl0aWVzJztcbmltcG9ydCB7IElneEljb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IE5nQ2xhc3MsIE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSWd4UmlwcGxlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9yaXBwbGUvcmlwcGxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hCdXR0b25EaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL2J1dHRvbi9idXR0b24uZGlyZWN0aXZlJztcbmltcG9ydCB7IEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSwgSUZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctZXhwcmVzc2lvbnMtdHJlZSc7XG5pbXBvcnQgeyBJRmlsdGVyaW5nRXhwcmVzc2lvbiB9IGZyb20gJy4uLy4uL2RhdGEtb3BlcmF0aW9ucy9maWx0ZXJpbmctZXhwcmVzc2lvbi5pbnRlcmZhY2UnO1xuXG5cbi8qKlxuICogUHJvdmlkZXMgYSBwcmUtY29uZmlndXJlZCBidXR0b24gdG8gb3BlbiB0aGUgYWR2YW5jZWQgZmlsdGVyaW5nIGRpYWxvZyBvZiB0aGUgZ3JpZC5cbiAqXG4gKlxuICogQGlneE1vZHVsZSBJZ3hHcmlkVG9vbGJhck1vZHVsZVxuICogQGlneFBhcmVudCBJZ3hHcmlkVG9vbGJhckNvbXBvbmVudFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8aWd4LWdyaWQtdG9vbGJhci1hZHZhbmNlZC1maWx0ZXJpbmc+PC9pZ3gtZ3JpZC10b29sYmFyLWFkdmFuY2VkLWZpbHRlcmluZz5cbiAqIDxpZ3gtZ3JpZC10b29sYmFyLWFkdmFuY2VkLWZpbHRlcmluZz5DdXN0b20gdGV4dDwvaWd4LWdyaWQtdG9vbGJhci1hZHZhbmNlZC1maWx0ZXJpbmc+XG4gKiBgYGBcbiAqL1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdpZ3gtZ3JpZC10b29sYmFyLWFkdmFuY2VkLWZpbHRlcmluZycsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2dyaWQtdG9vbGJhci1hZHZhbmNlZC1maWx0ZXJpbmcuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW0lneEJ1dHRvbkRpcmVjdGl2ZSwgSWd4UmlwcGxlRGlyZWN0aXZlLCBOZ0NsYXNzLCBJZ3hJY29uQ29tcG9uZW50LCBOZ0lmXVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hHcmlkVG9vbGJhckFkdmFuY2VkRmlsdGVyaW5nQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCB7XG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgbnVtYmVyT2ZDb2x1bW5zOiBudW1iZXI7XG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgZ3JpZCBjb250YWluaW5nIHRoaXMgY29tcG9uZW50LlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZ3JpZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG9vbGJhci5ncmlkO1xuICAgIH1cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIG92ZXJsYXlTZXR0aW5nczogT3ZlcmxheVNldHRpbmdzO1xuXG4gICAgY29uc3RydWN0b3IoIEBJbmplY3QoSWd4VG9vbGJhclRva2VuKSBwcml2YXRlIHRvb2xiYXI6IElneFRvb2xiYXJUb2tlbikge1xuICAgICAgICB0aGlzLmdyaWQ/LmFkdmFuY2VkRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlQ2hhbmdlLnN1YnNjcmliZShmaWx0ZXJpbmdUcmVlID0+IHtcbiAgICAgICAgICAgIHRoaXMubnVtYmVyT2ZDb2x1bW5zID0gdGhpcy5leHRyYWN0VW5pcXVlRmllbGROYW1lc0Zyb21GaWx0ZXJUcmVlKGZpbHRlcmluZ1RyZWUpLmxlbmd0aDtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMubnVtYmVyT2ZDb2x1bW5zID0gdGhpcy5ncmlkPy5hZHZhbmNlZEZpbHRlcmluZ0V4cHJlc3Npb25zVHJlZSA/IHRoaXMuZXh0cmFjdFVuaXF1ZUZpZWxkTmFtZXNGcm9tRmlsdGVyVHJlZSh0aGlzLmdyaWQ/LmFkdmFuY2VkRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKS5sZW5ndGggOiAwO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBleHRyYWN0VW5pcXVlRmllbGROYW1lc0Zyb21GaWx0ZXJUcmVlKGZpbHRlcmluZ1RyZWU/OiBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlKSA6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3QgY29sdW1uTmFtZXMgPSBbXTtcbiAgICAgICAgaWYgKCFmaWx0ZXJpbmdUcmVlKSByZXR1cm4gY29sdW1uTmFtZXM7XG4gICAgICAgIGZpbHRlcmluZ1RyZWUuZmlsdGVyaW5nT3BlcmFuZHMuZm9yRWFjaCgoZXhwcikgPT4ge1xuICAgICAgICAgICAgaWYgKGV4cHIgaW5zdGFuY2VvZiBGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUpIHtcbiAgICAgICAgICAgICAgICBjb2x1bW5OYW1lcy5wdXNoKC4uLnRoaXMuZXh0cmFjdFVuaXF1ZUZpZWxkTmFtZXNGcm9tRmlsdGVyVHJlZShleHByKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbHVtbk5hbWVzLnB1c2goKGV4cHIgYXMgSUZpbHRlcmluZ0V4cHJlc3Npb24pLmZpZWxkTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gWy4uLm5ldyBTZXQoY29sdW1uTmFtZXMpXTtcbiAgICB9XG59XG4iLCI8YnV0dG9uIGlneEJ1dHRvbj1cIm91dGxpbmVkXCIgdHlwZT1cImJ1dHRvblwiIFtkaXNwbGF5RGVuc2l0eV09XCJncmlkLmRpc3BsYXlEZW5zaXR5XCIgbmFtZT1cImJ0bkFkdmFuY2VkRmlsdGVyaW5nXCIgaWd4UmlwcGxlXG4gICAgW3RpdGxlXT1cImdyaWQ/LnJlc291cmNlU3RyaW5ncy5pZ3hfZ3JpZF90b29sYmFyX2FkdmFuY2VkX2ZpbHRlcmluZ19idXR0b25fdG9vbHRpcFwiXG4gICAgKGNsaWNrKT1cImdyaWQub3BlbkFkdmFuY2VkRmlsdGVyaW5nRGlhbG9nKG92ZXJsYXlTZXR0aW5ncylcIlxuICAgIGNsYXNzPVwiaWd4LWdyaWQtdG9vbGJhcl9fYWR2LWZpbHRlclwiPlxuICAgIDxpZ3gtaWNvbj5maWx0ZXJfbGlzdDwvaWd4LWljb24+XG4gICAgPHNwYW4gI3JlZj5cbiAgICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvc3Bhbj5cbiAgICA8c3BhbiAqbmdJZj1cIiFyZWYuY2hpbGROb2Rlcy5sZW5ndGhcIj57eyBncmlkPy5yZXNvdXJjZVN0cmluZ3MuaWd4X2dyaWRfdG9vbGJhcl9hZHZhbmNlZF9maWx0ZXJpbmdfYnV0dG9uX2xhYmVsIH19PC9zcGFuPlxuICAgIDxzcGFuIGNsYXNzPVwiaWd4LWFkdi1maWx0ZXItLWNvbHVtbi1udW1iZXJcIiAqbmdJZj1cImdyaWQ/LmFkdmFuY2VkRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlXCI+ICh7eyBudW1iZXJPZkNvbHVtbnMgfX0pIDwvc3Bhbj5cbjwvYnV0dG9uPlxuIl19
|
|
@@ -17,7 +17,7 @@ export class ExcelStrings {
|
|
|
17
17
|
}
|
|
18
18
|
static getStyles() {
|
|
19
19
|
return ExcelStrings.XML_STRING +
|
|
20
|
-
'<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac x16r2" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" xmlns:x16r2="http://schemas.microsoft.com/office/spreadsheetml/2015/02/main"><numFmts count="5"><numFmt numFmtId="164" formatCode=""$"#,##0.00"/><numFmt numFmtId="165" formatCode="[$£-809]#,##0.00"/><numFmt numFmtId="166" formatCode="[$¥-804]#,##0.00"/><numFmt numFmtId="167" formatCode="#,##0.00\ [$€-1]"/><numFmt numFmtId="168" formatCode="[$¥-411]#,##0.00"/></numFmts><fonts count="2" x14ac:knownFonts="1"><font><sz val="11"/><color theme="1"/><name val="Calibri"/><family val="2"/><scheme val="minor"/></font><font><sz val="11"/><color
|
|
20
|
+
'<styleSheet xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x14ac x16r2" xmlns:x14ac="http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac" xmlns:x16r2="http://schemas.microsoft.com/office/spreadsheetml/2015/02/main"><numFmts count="5"><numFmt numFmtId="164" formatCode=""$"#,##0.00"/><numFmt numFmtId="165" formatCode="[$£-809]#,##0.00"/><numFmt numFmtId="166" formatCode="[$¥-804]#,##0.00"/><numFmt numFmtId="167" formatCode="#,##0.00\ [$€-1]"/><numFmt numFmtId="168" formatCode="[$¥-411]#,##0.00"/></numFmts><fonts count="2" x14ac:knownFonts="1"><font><sz val="11"/><color theme="1"/><name val="Calibri"/><family val="2"/><scheme val="minor"/></font><font><b/><sz val="11"/><color theme="0"/><name val="Calibri"/><family val="2"/><scheme val="minor"/></font></fonts><fills count="3"><fill><patternFill patternType="none"/></fill><fill><patternFill patternType="gray125"/></fill><fill><patternFill patternType="solid"><fgColor theme="4"/><bgColor indexed="64"/></patternFill></fill></fills><borders count="1"><border><left/><right/><top/><bottom/><diagonal/></border></borders><cellStyleXfs count="1"><xf numFmtId="0" fontId="0" fillId="0" borderId="0"/></cellStyleXfs><cellXfs count="13"><xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0"/><xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/><xf numFmtId="14" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/><xf numFmtId="0" fontId="1" fillId="2" borderId="0" xfId="0"/><xf numFmtId="0" fontId="0" fillId="0" borderId="0" xfId="0" applyAlignment="1"><alignment horizontal="center" vertical="center"/></xf><xf numFmtId="164" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/><xf numFmtId="165" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/><xf numFmtId="166" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/><xf numFmtId="167" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/><xf numFmtId="168" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/><xf numFmtId="21" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/><xf numFmtId="22" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/><xf numFmtId="10" fontId="0" fillId="0" borderId="0" xfId="0" applyNumberFormat="1"/></cellXfs><cellStyles count="1"><cellStyle name="Normal" xfId="0" builtinId="0"/></cellStyles><dxfs count="0"/><tableStyles count="0" defaultTableStyle="TableStyleMedium2" defaultPivotStyle="PivotStyleLight16"/><extLst><ext uri="{EB79DEF2-80B8-43e5-95BD-54CBDDF9020C}" xmlns:x14="http://schemas.microsoft.com/office/spreadsheetml/2009/9/main"><x14:slicerStyles defaultSlicerStyle="SlicerStyleLight1"/></ext><ext uri="{9260A510-F301-46a8-8635-F512D64BE5F5}" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"><x15:timelineStyles defaultTimelineStyle="TimeSlicerStyleLight1"/></ext></extLst></styleSheet>';
|
|
21
21
|
}
|
|
22
22
|
static getWorkbook(worksheetName) {
|
|
23
23
|
return ExcelStrings.XML_STRING + `<workbook xmlns="http://schemas.openxmlformats.org/spreadsheetml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="x15" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"><fileVersion appName="xl" lastEdited="6" lowestEdited="6" rupBuild="14420"/><workbookPr filterPrivacy="1" defaultThemeVersion="164011"/><bookViews><workbookView xWindow="0" yWindow="0" windowWidth="22260" windowHeight="12645"/></bookViews><sheets><sheet name="${worksheetName}" sheetId="1" r:id="rId1"/></sheets><calcPr calcId="162913"/><extLst><ext uri="{140A7094-0E35-4892-8432-C4D2E57EDEB5}" xmlns:x15="http://schemas.microsoft.com/office/spreadsheetml/2010/11/main"><x15:workbookPr chartTrackingRefBase="1"/></ext></extLst></workbook>`;
|
|
@@ -91,4 +91,4 @@ ${tableParts}</worksheet>`;
|
|
|
91
91
|
return returnString;
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwtc3RyaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9leGNlbC9leGNlbC1zdHJpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWM7QUFDZCxNQUFNLE9BQU8sWUFBWTtJQUNyQiw2QkFBNkI7YUFDZCxlQUFVLEdBQUcsNENBQTRDLENBQUM7YUFDMUQsK0JBQTBCLEdBQUcsZ0pBQWdKLENBQUM7SUFFdEwsTUFBTSxDQUFDLE9BQU87UUFDakIsT0FBTyxZQUFZLENBQUMsVUFBVSxHQUFHLHFoQkFBcWhCLENBQUM7SUFDM2pCLENBQUM7SUFFTSxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQXFCO1FBQ3RDLE9BQU8sWUFBWSxDQUFDLFVBQVUsR0FBRyxrZ0JBQWtnQixhQUFhLHFOQUFxTixDQUFDO0lBQzF3QixDQUFDO0lBRU0sTUFBTSxDQUFDLE9BQU87UUFDakIsT0FBTyxZQUFZLENBQUMsVUFBVSxHQUFHLDBoQkFBMGhCLENBQUM7SUFDaGtCLENBQUM7SUFFTSxNQUFNLENBQUMsUUFBUTtRQUNsQixPQUFPLFlBQVksQ0FBQyxVQUFVLEdBQUcseWhOQUF5aE4sQ0FBQztJQUMvak4sQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFTO1FBQ25CLE9BQU8sWUFBWSxDQUFDLFVBQVU7WUFDOUIsay9GQUFrL0YsQ0FBQztJQUN2L0YsQ0FBQztJQUVNLE1BQU0sQ0FBQyxXQUFXLENBQUMsYUFBcUI7UUFDM0MsT0FBTyxZQUFZLENBQUMsVUFBVSxHQUFHLHNrQkFBc2tCLGFBQWEsd1FBQXdRLENBQUM7SUFDajRCLENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCO1FBQzFCLE9BQU8sWUFBWSxDQUFDLFVBQVUsR0FBRyw4T0FBOE8sQ0FBQztJQUNwUixDQUFDO0lBRU0sTUFBTSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0I7UUFDMUMs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Ii8qKiBAaGlkZGVuICovXG5leHBvcnQgY2xhc3MgRXhjZWxTdHJpbmdzIHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAgbWF4LWxlbiAqL1xuICAgIHByaXZhdGUgc3RhdGljIFhNTF9TVFJJTkcgPSAnPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIj8+XFxyXFxuJztcbiAgICBwcml2YXRlIHN0YXRpYyBTSEFSRURfU1RSSU5HX1JFTEFUSU9OU0hJUCA9ICc8UmVsYXRpb25zaGlwIElkPVwicklkNFwiIFR5cGU9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3NoYXJlZFN0cmluZ3NcIiBUYXJnZXQ9XCJzaGFyZWRTdHJpbmdzLnhtbFwiIC8+JztcblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UmVscygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gRXhjZWxTdHJpbmdzLlhNTF9TVFJJTkcgKyAnPFJlbGF0aW9uc2hpcHMgeG1sbnM9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHNcIj48UmVsYXRpb25zaGlwIElkPVwicklkM1wiIFR5cGU9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2V4dGVuZGVkLXByb3BlcnRpZXNcIiBUYXJnZXQ9XCJkb2NQcm9wcy9hcHAueG1sXCIvPjxSZWxhdGlvbnNoaXAgSWQ9XCJySWQyXCIgVHlwZT1cImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvcmVsYXRpb25zaGlwcy9tZXRhZGF0YS9jb3JlLXByb3BlcnRpZXNcIiBUYXJnZXQ9XCJkb2NQcm9wcy9jb3JlLnhtbFwiLz48UmVsYXRpb25zaGlwIElkPVwicklkMVwiIFR5cGU9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL29mZmljZURvY3VtZW50XCIgVGFyZ2V0PVwieGwvd29ya2Jvb2sueG1sXCIvPjwvUmVsYXRpb25zaGlwcz4nO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QXBwKHdvcmtzaGVldE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBFeGNlbFN0cmluZ3MuWE1MX1NUUklORyArIGA8UHJvcGVydGllcyB4bWxucz1cImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2V4dGVuZGVkLXByb3BlcnRpZXNcIiB4bWxuczp2dD1cImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2RvY1Byb3BzVlR5cGVzXCI+PEFwcGxpY2F0aW9uPk1pY3Jvc29mdCBFeGNlbDwvQXBwbGljYXRpb24+PERvY1NlY3VyaXR5PjA8L0RvY1NlY3VyaXR5PjxTY2FsZUNyb3A+ZmFsc2U8L1NjYWxlQ3JvcD48SGVhZGluZ1BhaXJzPjx2dDp2ZWN0b3Igc2l6ZT1cIjJcIiBiYXNlVHlwZT1cInZhcmlhbnRcIj48dnQ6dmFyaWFudD48dnQ6bHBzdHI+V29ya3NoZWV0czwvdnQ6bHBzdHI+PC92dDp2YXJpYW50Pjx2dDp2YXJpYW50Pjx2dDppND4xPC92dDppND48L3Z0OnZhcmlhbnQ+PC92dDp2ZWN0b3I+PC9IZWFkaW5nUGFpcnM+PFRpdGxlc09mUGFydHM+PHZ0OnZlY3RvciBzaXplPVwiMVwiIGJhc2VUeXBlPVwibHBzdHJcIj48dnQ6bHBzdHI+JHt3b3Jrc2hlZXROYW1lfTwvdnQ6bHBzdHI+PC92dDp2ZWN0b3I+PC9UaXRsZXNPZlBhcnRzPjxDb21wYW55PjwvQ29tcGFueT48TGlua3NVcFRvRGF0ZT5mYWxzZTwvTGlua3NVcFRvRGF0ZT48U2hhcmVkRG9jPmZhbHNlPC9TaGFyZWREb2M+PEh5cGVybGlua3NDaGFuZ2VkPmZhbHNlPC9IeXBlcmxpbmtzQ2hhbmdlZD48QXBwVmVyc2lvbj4xNi4wMzAwPC9BcHBWZXJzaW9uPjwvUHJvcGVydGllcz5gO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Q29yZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gRXhjZWxTdHJpbmdzLlhNTF9TVFJJTkcgKyAnPGNwOmNvcmVQcm9wZXJ0aWVzIHhtbG5zOmNwPVwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9tZXRhZGF0YS9jb3JlLXByb3BlcnRpZXNcIiB4bWxuczpkYz1cImh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvXCIgeG1sbnM6ZGN0ZXJtcz1cImh0dHA6Ly9wdXJsLm9yZy9kYy90ZXJtcy9cIiB4bWxuczpkY21pdHlwZT1cImh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9cIiB4bWxuczp4c2k9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZVwiPjxkYzpjcmVhdG9yPjwvZGM6Y3JlYXRvcj48Y3A6bGFzdE1vZGlmaWVkQnk+PC9jcDpsYXN0TW9kaWZpZWRCeT48ZGN0ZXJtczpjcmVhdGVkIHhzaTp0eXBlPVwiZGN0ZXJtczpXM0NEVEZcIj4yMDE1LTA2LTA1VDE4OjE3OjIwWjwvZGN0ZXJtczpjcmVhdGVkPjxkY3Rlcm1zOm1vZGlmaWVkIHhzaTp0eXBlPVwiZGN0ZXJtczpXM0NEVEZcIj4yMDE1LTA2LTA1VDE4OjE3OjI2WjwvZGN0ZXJtczptb2RpZmllZD48L2NwOmNvcmVQcm9wZXJ0aWVzPic7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRUaGVtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gRXhjZWxTdHJpbmdzLlhNTF9TVFJJTkcgKyAnPGE6dGhlbWUgeG1sbnM6YT1cImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9kcmF3aW5nbWwvMjAwNi9tYWluXCIgbmFtZT1cIk9mZmljZSBUaGVtZVwiPjxhOnRoZW1lRWxlbWVudHM+PGE6Y2xyU2NoZW1lIG5hbWU9XCJPZmZpY2VcIj48YTpkazE+PGE6c3lzQ2xyIHZhbD1cIndpbmRvd1RleHRcIiBsYXN0Q2xyPVwiMDAwMDAwXCIvPjwvYTpkazE+PGE6bHQxPjxhOnN5c0NsciB2YWw9XCJ3aW5kb3dcIiBsYXN0Q2xyPVwiRkZGRkZGXCIvPjwvYTpsdDE+PGE6ZGsyPjxhOnNyZ2JDbHIgdmFsPVwiNDQ1NDZBXCIvPjwvYTpkazI+PGE6bHQyPjxhOnNyZ2JDbHIgdmFsPVwiRTdFNkU2XCIvPjwvYTpsdDI+PGE6YWNjZW50MT48YTpzcmdiQ2xyIHZhbD1cIjVCOUJENVwiLz48L2E6YWNjZW50MT48YTphY2NlbnQyPjxhOnNyZ2JDbHIgdmFsPVwiRUQ3RDMxXCIvPjwvYTphY2NlbnQyPjxhOmFjY2VudDM+PGE6c3JnYkNsciB2YWw9XCJBNUE1QTVcIi8+PC9hOmFjY2VudDM+PGE6YWNjZW50ND48YTpzcmdiQ2xyIHZhbD1cIkZGQzAwMFwiLz48L2E6YWNjZW50ND48YTphY2NlbnQ1PjxhOnNyZ2JDbHIgdmFsPVwiNDQ3MkM0XCIvPjwvYTphY2NlbnQ1PjxhOmFjY2VudDY+PGE6c3JnYkNsciB2YWw9XCI3MEFENDdcIi8+PC9hOmFjY2VudDY+PGE6aGxpbms+PGE6c3JnYkNsciB2YWw9XCIwNTYzQzFcIi8+PC9hOmhsaW5rPjxhOmZvbEhsaW5rPjxhOnNyZ2JDbHIgdmFsPVwiOTU0RjcyXCIvPjwvYTpmb2xIbGluaz48L2E6Y2xyU2NoZW1lPjxhOmZvbnRTY2hlbWUgbmFtZT1cIk9mZmljZVwiPjxhOm1ham9yRm9udD48YTpsYXRpbiB0eXBlZmFjZT1cIkNhbGlicmkgTGlnaHRcIiBwYW5vc2U9XCIwMjBGMDMwMjAyMDIwNDAzMDIwNFwiLz48YTplYSB0eXBlZmFjZT1cIlwiLz48YTpjcyB0eXBlZmFjZT1cIlwiLz48YTpmb250IHNjcmlwdD1cIkpwYW5cIiB0eXBlZmFjZT1cIua4uOOCtOOCt+ODg+OCryBMaWdodFwiLz48YTpmb250IHNjcmlwdD1cIkhhbmdcIiB0eXBlZmFjZT1cIuunkeydgCDqs6DrlJVcIi8+PGE6Zm9udCBzY3JpcHQ9XCJIYW5zXCIgdHlwZWZhY2U9XCLnrYnnur8gTGlnaHRcIi8+PGE6Zm9udCBzY3JpcHQ9XCJIYW50XCIgdHlwZWZhY2U9XCLmlrDntLDmmI7pq5RcIi8+PGE6Zm9udCBzY3JpcHQ9XCJBcmFiXCIgdHlwZWZhY2U9XCJUaW1lcyBOZXcgUm9tYW5cIi8+PGE6Zm9udCBzY3JpcHQ9XCJIZWJyXCIgdHlwZWZhY2U9XCJUaW1lcyBOZXcgUm9tYW5cIi8+PGE6Zm9udCBzY3JpcHQ9XCJUaGFpXCIgdHlwZWZhY2U9XCJUYWhvbWFcIi8+PGE6Zm9udCBzY3JpcHQ9XCJFdGhpXCIgdHlwZWZhY2U9XCJOeWFsYVwiLz48YTpmb250IHNjcmlwdD1cIkJlbmdcIiB0eXBlZmFjZT1cIlZyaW5kYVwiLz48YTpmb250IHNjcmlwdD1cIkd1anJcIiB0eXBlZmFjZT1cIlNocnV0aVwiLz48YTpmb250IHNjcmlwdD1cIktobXJcIiB0eXBlZmFjZT1cIk1vb2xCb3JhblwiLz48YTpmb250IHNjcmlwdD1cIktuZGFcIiB0eXBlZmFjZT1cIlR1bmdhXCIvPjxhOmZvbnQgc2NyaXB0PVwiR3VydVwiIHR5cGVmYWNlPVwiUmFhdmlcIi8+PGE6Zm9udCBzY3JpcHQ9XCJDYW5zXCIgdHlwZWZhY2U9XCJFdXBoZW1pYVwiLz48YTpmb250IHNjcmlwdD1cIkNoZXJcIiB0eXBlZmFjZT1cIlBsYW50YWdlbmV0IENoZXJva2VlXCIvPjxhOmZvbnQgc2NyaXB0PVwiWWlpaVwiIHR5cGVmYWNlPVwiTWljcm9zb2Z0IFlpIEJhaXRpXCIvPjxhOmZvbnQgc2NyaXB0PVwiVGlidFwiIHR5cGVmYWNlPVwiTWljcm9zb2Z0IEhpbWFsYXlhXCIvPjxhOmZvbnQgc2NyaXB0PVwiVGhhYVwiIHR5cGVmYWNlPVwiTVYgQm9saVwiLz48YTpmb250IHNjcmlwdD1cIkRldmFcIiB0eXBlZmFjZT1cIk1hbmdhbFwiLz48YTpmb250IHNjcmlwdD1cIlRlbHVcIiB0eXBlZmFjZT1cIkdhdXRhbWlcIi8+PGE6Zm9udCBzY3JpcHQ9XCJUYW1sXCIgdHlwZWZhY2U9XCJMYXRoYVwiLz48YTpmb250IHNjcmlwdD1cIlN5cmNcIiB0eXBlZmFjZT1cIkVzdHJhbmdlbG8gRWRlc3NhXCIvPjxhOmZvbnQgc2NyaXB0PVwiT3J5YVwiIHR5cGVmYWNlPVwiS2FsaW5nYVwiLz48YTpmb250IHNjcmlwdD1cIk1seW1cIiB0eXBlZmFjZT1cIkthcnRpa2FcIi8+PGE6Zm9udCBzY3JpcHQ9XCJMYW9vXCIgdHlwZWZhY2U9XCJEb2tDaGFtcGFcIi8+PGE6Zm9udCBzY3JpcHQ9XCJTaW5oXCIgdHlwZWZhY2U9XCJJc2tvb2xhIFBvdGFcIi8+PGE6Zm9udCBzY3JpcHQ9XCJNb25nXCIgdHlwZWZhY2U9XCJNb25nb2xpYW4gQmFpdGlcIi8+PGE6Zm9udCBzY3JpcHQ9XCJWaWV0XCIgdHlwZWZhY2U9XCJUaW1lcyBOZXcgUm9tYW5cIi8+PGE6Zm9udCBzY3JpcHQ9XCJVaWdoXCIgdHlwZWZhY2U9XCJNaWNyb3NvZnQgVWlnaHVyXCIvPjxhOmZvbnQgc2NyaXB0PVwiR2VvclwiIHR5cGVmYWNlPVwiU3lsZmFlblwiLz48L2E6bWFqb3JGb250PjxhOm1pbm9yRm9udD48YTpsYXRpbiB0eXBlZmFjZT1cIkNhbGlicmlcIiBwYW5vc2U9XCIwMjBGMDUwMjAyMDIwNDAzMDIwNFwiLz48YTplYSB0eXBlZmFjZT1cIlwiLz48YTpjcyB0eXBlZmFjZT1cIlwiLz48YTpmb250IHNjcmlwdD1cIkpwYW5cIiB0eXBlZmFjZT1cIua4uOOCtOOCt+ODg+OCr1wiLz48YTpmb250IHNjcmlwdD1cIkhhbmdcIiB0eXBlZmFjZT1cIuunkeydgCDqs6DrlJVcIi8+PGE6Zm9udCBzY3JpcHQ9XCJIYW5zXCIgdHlwZWZhY2U9XCLnrYnnur9cIi8+PGE6Zm9udCBzY3JpcHQ9XCJIYW50XCIgdHlwZWZhY2U9XCLmlrDntLDmmI7pq5RcIi8+PGE6Zm9udCBzY3JpcHQ9XCJBcmFiXCIgdHlwZWZhY2U9XCJBcmlhbFwiLz48YTpmb250IHNjcmlwdD1cIkhlYnJcIiB0eXBlZmFjZT1cIkFyaWFsXCIvPjxhOmZvbnQgc2NyaXB0PVwiVGhhaVwiIHR5cGVmYWNlPVwiVGFob21hXCIvPjxhOmZvbnQgc2NyaXB0PVwiRXRoaVwiIHR5cGVmYWNlPVwiTnlhbGFcIi8+PGE6Zm9udCBzY3JpcHQ9XCJCZW5nXCIgdHlwZWZhY2U9XCJWcmluZGFcIi8+PGE6Zm9udCBzY3JpcHQ9XCJHdWpyXCIgdHlwZWZhY2U9XCJTaHJ1dGlcIi8+PGE6Zm9udCBzY3JpcHQ9XCJLaG1yXCIgdHlwZWZhY2U9XCJEYXVuUGVuaFwiLz48YTpmb250IHNjcmlwdD1cIktuZGFcIiB0eXBlZmFjZT1cIlR1bmdhXCIvPjxhOmZvbnQgc2NyaXB0PVwiR3VydVwiIHR5cGVmYWNlPVwiUmFhdmlcIi8+PGE6Zm9udCBzY3JpcHQ9XCJDYW5zXCIgdHlwZWZhY2U9XCJFdXBoZW1pYVwiLz48YTpmb250IHNjcmlwdD1cIkNoZXJcIiB0eXBlZmFjZT1cIlBsYW50YWdlbmV0IENoZXJva2VlXCIvPjxhOmZvbnQgc2NyaXB0PVwiWWlpaVwiIHR5cGVmYWNlPVwiTWljcm9zb2Z0IFlpIEJhaXRpXCIvPjxhOmZvbnQgc2NyaXB0PVwiVGlidFwiIHR5cGVmYWNlPVwiTWljcm9zb2Z0IEhpbWFsYXlhXCIvPjxhOmZvbnQgc2NyaXB0PVwiVGhhYVwiIHR5cGVmYWNlPVwiTVYgQm9saVwiLz48YTpmb250IHNjcmlwdD1cIkRldmFcIiB0eXBlZmFjZT1cIk1hbmdhbFwiLz48YTpmb250IHNjcmlwdD1cIlRlbHVcIiB0eXBlZmFjZT1cIkdhdXRhbWlcIi8+PGE6Zm9udCBzY3JpcHQ9XCJUYW1sXCIgdHlwZWZhY2U9XCJMYXRoYVwiLz48YTpmb250IHNjcmlwdD1cIlN5cmNcIiB0eXBlZmFjZT1cIkVzdHJhbmdlbG8gRWRlc3NhXCIvPjxhOmZvbnQgc2NyaXB0PVwiT3J5YVwiIHR5cGVmYWNlPVwiS2FsaW5nYVwiLz48YTpmb250IHNjcmlwdD1cIk1seW1cIiB0eXBlZmFjZT1cIkthcnRpa2FcIi8+PGE6Zm9udCBzY3JpcHQ9XCJMYW9vXCIgdHlwZWZhY2U9XCJEb2tDaGFtcGFcIi8+PGE6Zm9udCBzY3JpcHQ9XCJTaW5oXCIgdHlwZWZhY2U9XCJJc2tvb2xhIFBvdGFcIi8+PGE6Zm9udCBzY3JpcHQ9XCJNb25nXCIgdHlwZWZhY2U9XCJNb25nb2xpYW4gQmFpdGlcIi8+PGE6Zm9udCBzY3JpcHQ9XCJWaWV0XCIgdHlwZWZhY2U9XCJBcmlhbFwiLz48YTpmb250IHNjcmlwdD1cIlVpZ2hcIiB0eXBlZmFjZT1cIk1pY3Jvc29mdCBVaWdodXJcIi8+PGE6Zm9udCBzY3JpcHQ9XCJHZW9yXCIgdHlwZWZhY2U9XCJTeWxmYWVuXCIvPjwvYTptaW5vckZvbnQ+PC9hOmZvbnRTY2hlbWU+PGE6Zm10U2NoZW1lIG5hbWU9XCJPZmZpY2VcIj48YTpmaWxsU3R5bGVMc3Q+PGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiLz48L2E6c29saWRGaWxsPjxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT1cIjFcIj48YTpnc0xzdD48YTpncyBwb3M9XCIwXCI+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCI+PGE6bHVtTW9kIHZhbD1cIjExMDAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMTA1MDAwXCIvPjxhOnRpbnQgdmFsPVwiNjcwMDBcIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+PGE6Z3MgcG9zPVwiNTAwMDBcIj48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTpsdW1Nb2QgdmFsPVwiMTA1MDAwXCIvPjxhOnNhdE1vZCB2YWw9XCIxMDMwMDBcIi8+PGE6dGludCB2YWw9XCI3MzAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48YTpncyBwb3M9XCIxMDAwMDBcIj48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTpsdW1Nb2QgdmFsPVwiMTA1MDAwXCIvPjxhOnNhdE1vZCB2YWw9XCIxMDkwMDBcIi8+PGE6dGludCB2YWw9XCI4MTAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48L2E6Z3NMc3Q+PGE6bGluIGFuZz1cIjU0MDAwMDBcIiBzY2FsZWQ9XCIwXCIvPjwvYTpncmFkRmlsbD48YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9XCIxXCI+PGE6Z3NMc3Q+PGE6Z3MgcG9zPVwiMFwiPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiPjxhOnNhdE1vZCB2YWw9XCIxMDMwMDBcIi8+PGE6bHVtTW9kIHZhbD1cIjEwMjAwMFwiLz48YTp0aW50IHZhbD1cIjk0MDAwXCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPjxhOmdzIHBvcz1cIjUwMDAwXCI+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCI+PGE6c2F0TW9kIHZhbD1cIjExMDAwMFwiLz48YTpsdW1Nb2QgdmFsPVwiMTAwMDAwXCIvPjxhOnNoYWRlIHZhbD1cIjEwMDAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48YTpncyBwb3M9XCIxMDAwMDBcIj48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTpsdW1Nb2QgdmFsPVwiOTkwMDBcIi8+PGE6c2F0TW9kIHZhbD1cIjEyMDAwMFwiLz48YTpzaGFkZSB2YWw9XCI3ODAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48L2E6Z3NMc3Q+PGE6bGluIGFuZz1cIjU0MDAwMDBcIiBzY2FsZWQ9XCIwXCIvPjwvYTpncmFkRmlsbD48L2E6ZmlsbFN0eWxlTHN0PjxhOmxuU3R5bGVMc3Q+PGE6bG4gdz1cIjYzNTBcIiBjYXA9XCJmbGF0XCIgY21wZD1cInNuZ1wiIGFsZ249XCJjdHJcIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCIvPjwvYTpzb2xpZEZpbGw+PGE6cHJzdERhc2ggdmFsPVwic29saWRcIi8+PGE6bWl0ZXIgbGltPVwiODAwMDAwXCIvPjwvYTpsbj48YTpsbiB3PVwiMTI3MDBcIiBjYXA9XCJmbGF0XCIgY21wZD1cInNuZ1wiIGFsZ249XCJjdHJcIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCIvPjwvYTpzb2xpZEZpbGw+PGE6cHJzdERhc2ggdmFsPVwic29saWRcIi8+PGE6bWl0ZXIgbGltPVwiODAwMDAwXCIvPjwvYTpsbj48YTpsbiB3PVwiMTkwNTBcIiBjYXA9XCJmbGF0XCIgY21wZD1cInNuZ1wiIGFsZ249XCJjdHJcIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCIvPjwvYTpzb2xpZEZpbGw+PGE6cHJzdERhc2ggdmFsPVwic29saWRcIi8+PGE6bWl0ZXIgbGltPVwiODAwMDAwXCIvPjwvYTpsbj48L2E6bG5TdHlsZUxzdD48YTplZmZlY3RTdHlsZUxzdD48YTplZmZlY3RTdHlsZT48YTplZmZlY3RMc3QvPjwvYTplZmZlY3RTdHlsZT48YTplZmZlY3RTdHlsZT48YTplZmZlY3RMc3QvPjwvYTplZmZlY3RTdHlsZT48YTplZmZlY3RTdHlsZT48YTplZmZlY3RMc3Q+PGE6b3V0ZXJTaGR3IGJsdXJSYWQ9XCI1NzE1MFwiIGRpc3Q9XCIxOTA1MFwiIGRpcj1cIjU0MDAwMDBcIiBhbGduPVwiY3RyXCIgcm90V2l0aFNoYXBlPVwiMFwiPjxhOnNyZ2JDbHIgdmFsPVwiMDAwMDAwXCI+PGE6YWxwaGEgdmFsPVwiNjMwMDBcIi8+PC9hOnNyZ2JDbHI+PC9hOm91dGVyU2hkdz48L2E6ZWZmZWN0THN0PjwvYTplZmZlY3RTdHlsZT48L2E6ZWZmZWN0U3R5bGVMc3Q+PGE6YmdGaWxsU3R5bGVMc3Q+PGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiLz48L2E6c29saWRGaWxsPjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTp0aW50IHZhbD1cIjk1MDAwXCIvPjxhOnNhdE1vZCB2YWw9XCIxNzAwMDBcIi8+PC9hOnNjaGVtZUNscj48L2E6c29saWRGaWxsPjxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT1cIjFcIj48YTpnc0xzdD48YTpncyBwb3M9XCIwXCI+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCI+PGE6dGludCB2YWw9XCI5MzAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMTUwMDAwXCIvPjxhOnNoYWRlIHZhbD1cIjk4MDAwXCIvPjxhOmx1bU1vZCB2YWw9XCIxMDIwMDBcIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+PGE6Z3MgcG9zPVwiNTAwMDBcIj48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTp0aW50IHZhbD1cIjk4MDAwXCIvPjxhOnNhdE1vZCB2YWw9XCIxMzAwMDBcIi8+PGE6c2hhZGUgdmFsPVwiOTAwMDBcIi8+PGE6bHVtTW9kIHZhbD1cIjEwMzAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48YTpncyBwb3M9XCIxMDAwMDBcIj48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTpzaGFkZSB2YWw9XCI2MzAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMTIwMDAwXCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPjwvYTpnc0xzdD48YTpsaW4gYW5nPVwiNTQwMDAwMFwiIHNjYWxlZD1cIjBcIi8+PC9hOmdyYWRGaWxsPjwvYTpiZ0ZpbGxTdHlsZUxzdD48L2E6Zm10U2NoZW1lPjwvYTp0aGVtZUVsZW1lbnRzPjxhOm9iamVjdERlZmF1bHRzLz48YTpleHRyYUNsclNjaGVtZUxzdC8+PGE6ZXh0THN0PjxhOmV4dCB1cmk9XCJ7MDVBNEMyNUMtMDg1RS00MzQwLTg1QTMtQTU1MzFFNTEwREIyfVwiPjx0aG0xNTp0aGVtZUZhbWlseSB4bWxuczp0aG0xNT1cImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3RoZW1lbWwvMjAxMi9tYWluXCIgbmFtZT1cIk9mZmljZSBUaGVtZVwiIGlkPVwiezYyRjkzOUI2LTkzQUYtNERCOC05QzZCLUQ2QzdERkRDNTg5Rn1cIiB2aWQ9XCJ7NEEzQzQ2RTgtNjFDQy00NjAzLUE1ODktNzQyMkE0N0E4RTRBfVwiLz48L2E6ZXh0PjwvYTpleHRMc3Q+PC9hOnRoZW1lPic7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRTdHlsZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIEV4Y2VsU3RyaW5ncy5YTUxfU1RSSU5HICtcbiAgICAgICAgJzxzdHlsZVNoZWV0IHhtbG5zPVwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluXCIgeG1sbnM6bWM9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvbWFya3VwLWNvbXBhdGliaWxpdHkvMjAwNlwiIG1jOklnbm9yYWJsZT1cIngxNGFjIHgxNnIyXCIgeG1sbnM6eDE0YWM9XCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMDkvOS9hY1wiIHhtbG5zOngxNnIyPVwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDE1LzAyL21haW5cIj48bnVtRm10cyBjb3VudD1cIjVcIj48bnVtRm10IG51bUZtdElkPVwiMTY0XCIgZm9ybWF0Q29kZT1cIiZxdW90OyQmcXVvdDsjLCMjMC4wMFwiLz48bnVtRm10IG51bUZtdElkPVwiMTY1XCIgZm9ybWF0Q29kZT1cIlskwqMtODA5XSMsIyMwLjAwXCIvPjxudW1GbXQgbnVtRm10SWQ9XCIxNjZcIiBmb3JtYXRDb2RlPVwiWyTCpS04MDRdIywjIzAuMDBcIi8+PG51bUZtdCBudW1GbXRJZD1cIjE2N1wiIGZvcm1hdENvZGU9XCIjLCMjMC4wMFxcIFsk4oKsLTFdXCIvPjxudW1GbXQgbnVtRm10SWQ9XCIxNjhcIiBmb3JtYXRDb2RlPVwiWyTCpS00MTFdIywjIzAuMDBcIi8+PC9udW1GbXRzPjxmb250cyBjb3VudD1cIjJcIiB4MTRhYzprbm93bkZvbnRzPVwiMVwiPjxmb250PjxzeiB2YWw9XCIxMVwiLz48Y29sb3IgdGhlbWU9XCIxXCIvPjxuYW1lIHZhbD1cIkNhbGlicmlcIi8+PGZhbWlseSB2YWw9XCIyXCIvPjxzY2hlbWUgdmFsPVwibWlub3JcIi8+PC9mb250Pjxmb250PjxzeiB2YWw9XCIxMVwiLz48Y29sb3IgcmdiPVwiRkZCN0I3QjdcIi8+PG5hbWUgdmFsPVwiQ2FsaWJyaVwiLz48ZmFtaWx5IHZhbD1cIjJcIi8+PHNjaGVtZSB2YWw9XCJtaW5vclwiLz48L2ZvbnQ+PC9mb250cz48ZmlsbHMgY291bnQ9XCIzXCI+PGZpbGw+PHBhdHRlcm5GaWxsIHBhdHRlcm5UeXBlPVwibm9uZVwiLz48L2ZpbGw+PGZpbGw+PHBhdHRlcm5GaWxsIHBhdHRlcm5UeXBlPVwiZ3JheTEyNVwiLz48L2ZpbGw+PGZpbGw+PHBhdHRlcm5GaWxsIHBhdHRlcm5UeXBlPVwic29saWRcIj48ZmdDb2xvciByZ2I9XCJGRjBEMTgyMlwiLz48YmdDb2xvciBpbmRleGVkPVwiNjRcIi8+PC9wYXR0ZXJuRmlsbD48L2ZpbGw+PC9maWxscz48Ym9yZGVycyBjb3VudD1cIjFcIj48Ym9yZGVyPjxsZWZ0Lz48cmlnaHQvPjx0b3AvPjxib3R0b20vPjxkaWFnb25hbC8+PC9ib3JkZXI+PC9ib3JkZXJzPjxjZWxsU3R5bGVYZnMgY291bnQ9XCIxXCI+PHhmIG51bUZtdElkPVwiMFwiIGZvbnRJZD1cIjBcIiBmaWxsSWQ9XCIwXCIgYm9yZGVySWQ9XCIwXCIvPjwvY2VsbFN0eWxlWGZzPjxjZWxsWGZzIGNvdW50PVwiMTNcIj48eGYgbnVtRm10SWQ9XCIwXCIgZm9udElkPVwiMFwiIGZpbGxJZD1cIjBcIiBib3JkZXJJZD1cIjBcIiB4ZklkPVwiMFwiLz48eGYgbnVtRm10SWQ9XCIwXCIgZm9udElkPVwiMFwiIGZpbGxJZD1cIjBcIiBib3JkZXJJZD1cIjBcIiB4ZklkPVwiMFwiIGFwcGx5TnVtYmVyRm9ybWF0PVwiMVwiLz48eGYgbnVtRm10SWQ9XCIxNFwiIGZvbnRJZD1cIjBcIiBmaWxsSWQ9XCIwXCIgYm9yZGVySWQ9XCIwXCIgeGZJZD1cIjBcIiBhcHBseU51bWJlckZvcm1hdD1cIjFcIi8+PHhmIG51bUZtdElkPVwiMFwiIGZvbnRJZD1cIjFcIiBmaWxsSWQ9XCIyXCIgYm9yZGVySWQ9XCIwXCIgeGZJZD1cIjBcIi8+PHhmIG51bUZtdElkPVwiMFwiIGZvbnRJZD1cIjBcIiBmaWxsSWQ9XCIwXCIgYm9yZGVySWQ9XCIwXCIgeGZJZD1cIjBcIiBhcHBseUFsaWdubWVudD1cIjFcIj48YWxpZ25tZW50IGhvcml6b250YWw9XCJjZW50ZXJcIiB2ZXJ0aWNhbD1cImNlbnRlclwiLz48L3hmPjx4ZiBudW1GbXRJZD1cIjE2NFwiIGZvbnRJZD1cIjBcIiBmaWxsSWQ9XCIwXCIgYm9yZGVySWQ9XCIwXCIgeGZJZD1cIjBcIiBhcHBseU51bWJlckZvcm1hdD1cIjFcIi8+PHhmIG51bUZtdElkPVwiMTY1XCIgZm9udElkPVwiMFwiIGZpbGxJZD1cIjBcIiBib3JkZXJJZD1cIjBcIiB4ZklkPVwiMFwiIGFwcGx5TnVtYmVyRm9ybWF0PVwiMVwiLz48eGYgbnVtRm10SWQ9XCIxNjZcIiBmb250SWQ9XCIwXCIgZmlsbElkPVwiMFwiIGJvcmRlcklkPVwiMFwiIHhmSWQ9XCIwXCIgYXBwbHlOdW1iZXJGb3JtYXQ9XCIxXCIvPjx4ZiBudW1GbXRJZD1cIjE2N1wiIGZvbnRJZD1cIjBcIiBmaWxsSWQ9XCIwXCIgYm9yZGVySWQ9XCIwXCIgeGZJZD1cIjBcIiBhcHBseU51bWJlckZvcm1hdD1cIjFcIi8+PHhmIG51bUZtdElkPVwiMTY4XCIgZm9udElkPVwiMFwiIGZpbGxJZD1cIjBcIiBib3JkZXJJZD1cIjBcIiB4ZklkPVwiMFwiIGFwcGx5TnVtYmVyRm9ybWF0PVwiMVwiLz48eGYgbnVtRm10SWQ9XCIyMVwiIGZvbnRJZD1cIjBcIiBmaWxsSWQ9XCIwXCIgYm9yZGVySWQ9XCIwXCIgeGZJZD1cIjBcIiBhcHBseU51bWJlckZvcm1hdD1cIjFcIi8+PHhmIG51bUZtdElkPVwiMjJcIiBmb250SWQ9XCIwXCIgZmlsbElkPVwiMFwiIGJvcmRlcklkPVwiMFwiIHhmSWQ9XCIwXCIgYXBwbHlOdW1iZXJGb3JtYXQ9XCIxXCIvPjx4ZiBudW1GbXRJZD1cIjEwXCIgZm9udElkPVwiMFwiIGZpbGxJZD1cIjBcIiBib3JkZXJJZD1cIjBcIiB4ZklkPVwiMFwiIGFwcGx5TnVtYmVyRm9ybWF0PVwiMVwiLz48L2NlbGxYZnM+PGNlbGxTdHlsZXMgY291bnQ9XCIxXCI+PGNlbGxTdHlsZSBuYW1lPVwiTm9ybWFsXCIgeGZJZD1cIjBcIiBidWlsdGluSWQ9XCIwXCIvPjwvY2VsbFN0eWxlcz48ZHhmcyBjb3VudD1cIjBcIi8+PHRhYmxlU3R5bGVzIGNvdW50PVwiMFwiIGRlZmF1bHRUYWJsZVN0eWxlPVwiVGFibGVTdHlsZU1lZGl1bTJcIiBkZWZhdWx0UGl2b3RTdHlsZT1cIlBpdm90U3R5bGVMaWdodDE2XCIvPjxleHRMc3Q+PGV4dCB1cmk9XCJ7RUI3OURFRjItODBCOC00M2U1LTk1QkQtNTRDQkRERjkwMjBDfVwiIHhtbG5zOngxND1cImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAwOS85L21haW5cIj48eDE0OnNsaWNlclN0eWxlcyBkZWZhdWx0U2xpY2VyU3R5bGU9XCJTbGljZXJTdHlsZUxpZ2h0MVwiLz48L2V4dD48ZXh0IHVyaT1cIns5MjYwQTUxMC1GMzAxLTQ2YTgtODYzNS1GNTEyRDY0QkU1RjV9XCIgeG1sbnM6eDE1PVwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDEwLzExL21haW5cIj48eDE1OnRpbWVsaW5lU3R5bGVzIGRlZmF1bHRUaW1lbGluZVN0eWxlPVwiVGltZVNsaWNlclN0eWxlTGlnaHQxXCIvPjwvZXh0PjwvZXh0THN0Pjwvc3R5bGVTaGVldD4nO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0V29ya2Jvb2sod29ya3NoZWV0TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIEV4Y2VsU3RyaW5ncy5YTUxfU1RSSU5HICsgYDx3b3JrYm9vayB4bWxucz1cImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpblwiIHhtbG5zOnI9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzXCIgeG1sbnM6bWM9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvbWFya3VwLWNvbXBhdGliaWxpdHkvMjAwNlwiIG1jOklnbm9yYWJsZT1cIngxNVwiIHhtbG5zOngxNT1cImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAxMC8xMS9tYWluXCI+PGZpbGVWZXJzaW9uIGFwcE5hbWU9XCJ4bFwiIGxhc3RFZGl0ZWQ9XCI2XCIgbG93ZXN0RWRpdGVkPVwiNlwiIHJ1cEJ1aWxkPVwiMTQ0MjBcIi8+PHdvcmtib29rUHIgZmlsdGVyUHJpdmFjeT1cIjFcIiBkZWZhdWx0VGhlbWVWZXJzaW9uPVwiMTY0MDExXCIvPjxib29rVmlld3M+PHdvcmtib29rVmlldyB4V2luZG93PVwiMFwiIHlXaW5kb3c9XCIwXCIgd2luZG93V2lkdGg9XCIyMjI2MFwiIHdpbmRvd0hlaWdodD1cIjEyNjQ1XCIvPjwvYm9va1ZpZXdzPjxzaGVldHM+PHNoZWV0IG5hbWU9XCIke3dvcmtzaGVldE5hbWV9XCIgc2hlZXRJZD1cIjFcIiByOmlkPVwicklkMVwiLz48L3NoZWV0cz48Y2FsY1ByIGNhbGNJZD1cIjE2MjkxM1wiLz48ZXh0THN0PjxleHQgdXJpPVwiezE0MEE3MDk0LTBFMzUtNDg5Mi04NDMyLUM0RDJFNTdFREVCNX1cIiB4bWxuczp4MTU9XCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTAvMTEvbWFpblwiPjx4MTU6d29ya2Jvb2tQciBjaGFydFRyYWNraW5nUmVmQmFzZT1cIjFcIi8+PC9leHQ+PC9leHRMc3Q+PC93b3JrYm9vaz5gO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0V29ya3NoZWV0UmVscygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gRXhjZWxTdHJpbmdzLlhNTF9TVFJJTkcgKyBgPFJlbGF0aW9uc2hpcHMgeG1sbnM9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHNcIj48UmVsYXRpb25zaGlwIElkPVwicklkMVwiIFR5cGU9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3RhYmxlXCIgVGFyZ2V0PVwiLi4vdGFibGVzL3RhYmxlMS54bWxcIi8+PC9SZWxhdGlvbnNoaXBzPmA7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRXb3JrYm9va1JlbHMoaGFzU2hhcmVkU3RyaW5ncyk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXRWYWwgPSBFeGNlbFN0cmluZ3MuWE1MX1NUUklORyArIGA8UmVsYXRpb25zaGlwcyB4bWxucz1cImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvcmVsYXRpb25zaGlwc1wiPjxSZWxhdGlvbnNoaXAgSWQ9XCJySWQzXCIgVHlwZT1cImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvc3R5bGVzXCIgVGFyZ2V0PVwic3R5bGVzLnhtbFwiLz48UmVsYXRpb25zaGlwIElkPVwicklkMlwiIFR5cGU9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3RoZW1lXCIgVGFyZ2V0PVwidGhlbWUvdGhlbWUxLnhtbFwiLz48UmVsYXRpb25zaGlwIElkPVwicklkMVwiIFR5cGU9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldFwiIFRhcmdldD1cIndvcmtzaGVldHMvc2hlZXQxLnhtbFwiLz5gO1xuXG4gICAgICAgIGlmIChoYXNTaGFyZWRTdHJpbmdzKSB7XG4gICAgICAgICAgICByZXRWYWwgKz0gRXhjZWxTdHJpbmdzLlNIQVJFRF9TVFJJTkdfUkVMQVRJT05TSElQO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0VmFsICs9ICc8L1JlbGF0aW9uc2hpcHM+JztcblxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0U2hlZXRYTUwoZGltZW5zaW9uOiBzdHJpbmcsIGZyZWV6ZVBhbmU6IHN0cmluZywgY29sczogc3RyaW5nLCBzaGVldERhdGE6IHN0cmluZywgaGFzVGFibGU6IGJvb2xlYW4sIG91dGxpbmVMZXZlbCA9IDAsIGlzSGllcmFyY2hpY2FsOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgaGFzT3V0bGluZSA9IG91dGxpbmVMZXZlbCA+IDA7XG4gICAgICAgIGNvbnN0IHRhYmxlUGFydHMgPSBoYXNUYWJsZSA/ICc8dGFibGVQYXJ0cyBjb3VudD1cIjFcIj48dGFibGVQYXJ0IHI6aWQ9XCJySWQxXCIvPjwvdGFibGVQYXJ0cz4nIDogJyc7XG4gICAgICAgIGNvbnN0IHNoZWV0T3V0bGluZVByb3AgPSBoYXNPdXRsaW5lID8gJzxzaGVldFByPjxvdXRsaW5lUHIgc3VtbWFyeUJlbG93PVwiMFwiLz48L3NoZWV0UHI+JyA6ICcnO1xuICAgICAgICBjb25zdCBzT3V0bGluZUxldmVsID0gIGhhc091dGxpbmUgPyBgb3V0bGluZUxldmVsUm93PVwiJHtvdXRsaW5lTGV2ZWx9XCJgIDogJyc7XG4gICAgICAgIGNvbnN0IGRpbWVuc2lvbnMgPSBpc0hpZXJhcmNoaWNhbCA/ICcnIDogYDxkaW1lbnNpb24gcmVmPVwiJHtkaW1lbnNpb259XCIvPmA7XG5cbiAgICAgICAgLy8gcmV0dXJuIEV4Y2VsU3RyaW5ncy5YTUxfU1RSSU5HICtcbiAgICAgICAgLy8gICAgICc8d29ya3NoZWV0IHhtbG5zPVwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluXCIgeG1sbnM6cj1cImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHNcIiB4bWxuczptYz1cImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9tYXJrdXAtY29tcGF0aWJpbGl0eS8yMDA2XCIgbWM6SWdub3JhYmxlPVwieDE0YWNcIiB4bWxuczp4MTRhYz1cImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAwOS85L2FjXCI+PGRpbWVuc2lvbiByZWY9XCInICsgZGltZW5zaW9uICsgJ1wiLz48c2hlZXRWaWV3cz48c2hlZXRWaWV3IHRhYlNlbGVjdGVkPVwiMVwiIHdvcmtib29rVmlld0lkPVwiMFwiPicgKyBmcmVlemVQYW5lICsgJzwvc2hlZXRWaWV3Pjwvc2hlZXRWaWV3cz48c2hlZXRGb3JtYXRQciBkZWZhdWx0Um93SGVpZ2h0PVwiMTVcIiB4MTRhYzpkeURlc2NlbnQ9XCIwLjI1XCIvPicgKyBjb2xzICsgc2hlZXREYXRhICsgJzxwYWdlTWFyZ2lucyBsZWZ0PVwiMC43XCIgcmlnaHQ9XCIwLjdcIiB0b3A9XCIwLjc1XCIgYm90dG9tPVwiMC43NVwiIGhlYWRlcj1cIjAuM1wiIGZvb3Rlcj1cIjAuM1wiLz4nICsgdGFibGVQYXJ0cyArICc8L3dvcmtzaGVldD4nO1xuXG4gICAgICAgIHJldHVybiBgJHtFeGNlbFN0cmluZ3MuWE1MX1NUUklOR31cbjx3b3Jrc2hlZXQgeG1sbnM9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvc3ByZWFkc2hlZXRtbC8yMDA2L21haW5cIiB4bWxuczpyPVwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwc1wiIHhtbG5zOm1jPVwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL21hcmt1cC1jb21wYXRpYmlsaXR5LzIwMDZcIiBtYzpJZ25vcmFibGU9XCJ4MTRhY1wiIHhtbG5zOngxNGFjPVwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDA5LzkvYWNcIj5cbiR7c2hlZXRPdXRsaW5lUHJvcH1cbiR7ZGltZW5zaW9uc31cbjxzaGVldFZpZXdzPjxzaGVldFZpZXcgdGFiU2VsZWN0ZWQ9XCIxXCIgd29ya2Jvb2tWaWV3SWQ9XCIwXCI+JHtmcmVlemVQYW5lfTwvc2hlZXRWaWV3Pjwvc2hlZXRWaWV3cz5cbjxzaGVldEZvcm1hdFByIGRlZmF1bHRSb3dIZWlnaHQ9XCIxNVwiICR7c091dGxpbmVMZXZlbH0geDE0YWM6ZHlEZXNjZW50PVwiMC4yNVwiLz5cbiR7Y29sc31cbiR7c2hlZXREYXRhfVxuPHBhZ2VNYXJnaW5zIGxlZnQ9XCIwLjdcIiByaWdodD1cIjAuN1wiIHRvcD1cIjAuNzVcIiBib3R0b209XCIwLjc1XCIgaGVhZGVyPVwiMC4zXCIgZm9vdGVyPVwiMC4zXCIvPlxuJHt0YWJsZVBhcnRzfTwvd29ya3NoZWV0PmA7XG5cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFNoYXJlZFN0cmluZ1hNTChjb3VudDogbnVtYmVyLCB1bmlxdWVDb3VudDogbnVtYmVyLCB0YWJsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIEV4Y2VsU3RyaW5ncy5YTUxfU1RSSU5HICsgJzxzc3QgeG1sbnM9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvc3ByZWFkc2hlZXRtbC8yMDA2L21haW5cIiBjb3VudD1cIicgKyBjb3VudCArICdcIiB1bmlxdWVDb3VudD1cIicgKyB1bmlxdWVDb3VudCArICdcIj4nICsgdGFibGUgKyAnPC9zc3Q+JztcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldENvbnRlbnRUeXBlc1hNTChoYXNTaGFyZWRTdHJpbmdzOiBib29sZWFuLCBoYXNUYWJsZTogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgICAgIGxldCBjb250ZW50VHlwZXMgPSBFeGNlbFN0cmluZ3MuWE1MX1NUUklORyArXG4gICAgICAgIGA8VHlwZXMgeG1sbnM9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L2NvbnRlbnQtdHlwZXNcXFwiPlxuICAgICAgICAgICAgPERlZmF1bHQgRXh0ZW5zaW9uPVwicmVsc1wiIENvbnRlbnRUeXBlPVwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBhY2thZ2UucmVsYXRpb25zaGlwcyt4bWxcIi8+XG4gICAgICAgICAgICA8RGVmYXVsdCBFeHRlbnNpb249XCJ4bWxcIiBDb250ZW50VHlwZT1cImFwcGxpY2F0aW9uL3htbFwiLz5cbiAgICAgICAgICAgIDxPdmVycmlkZSBQYXJ0TmFtZT1cIi94bC93b3JrYm9vay54bWxcIiBDb250ZW50VHlwZT1cImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Lm1haW4reG1sXCIvPlxuICAgICAgICAgICAgPE92ZXJyaWRlIFBhcnROYW1lPVwiL3hsL3dvcmtzaGVldHMvc2hlZXQxLnhtbFwiIENvbnRlbnRUeXBlPVwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwud29ya3NoZWV0K3htbFwiLz5cbiAgICAgICAgICAgIDxPdmVycmlkZSBQYXJ0TmFtZT1cIi94bC90aGVtZS90aGVtZTEueG1sXCIgQ29udGVudFR5cGU9XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQudGhlbWUreG1sXCIvPlxuICAgICAgICAgICAgPE92ZXJyaWRlIFBhcnROYW1lPVwiL3hsL3N0eWxlcy54bWxcIiBDb250ZW50VHlwZT1cImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnN0eWxlcyt4bWxcIi8+XG4gICAgICAgICAgICA8T3ZlcnJpZGUgUGFydE5hbWU9XCIvZG9jUHJvcHMvY29yZS54bWxcIiBDb250ZW50VHlwZT1cImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLmNvcmUtcHJvcGVydGllcyt4bWxcIi8+XG4gICAgICAgICAgICA8T3ZlcnJpZGUgUGFydE5hbWU9XCIvZG9jUHJvcHMvYXBwLnhtbFwiIENvbnRlbnRUeXBlPVwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmV4dGVuZGVkLXByb3BlcnRpZXMreG1sXCIvPmA7XG5cbiAgICAgICAgY29udGVudFR5cGVzICs9IGhhc1NoYXJlZFN0cmluZ3MgP1xuICAgICAgICBgXHQ8T3ZlcnJpZGUgUGFydE5hbWU9XCIveGwvc2hhcmVkU3RyaW5ncy54bWxcIiBDb250ZW50VHlwZT1cImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoYXJlZFN0cmluZ3MreG1sXCIvPmAgOiAnJztcblxuICAgICAgICBjb250ZW50VHlwZXMgKz0gaGFzVGFibGUgP1xuICAgICAgICAgICAgYDxPdmVycmlkZSBQYXJ0TmFtZT1cIi94bC90YWJsZXMvdGFibGUxLnhtbFwiIENvbnRlbnRUeXBlPVwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGFibGUreG1sXCIvPmAgOiAnJztcbiAgICAgICAgY29udGVudFR5cGVzICs9IGA8L1R5cGVzPmA7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRlbnRUeXBlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFRhYmxlc1hNTChhdXRvRmlsdGVyRGltZW5zaW9uOiBzdHJpbmcsIHRhYmxlRGltZW5zaW9uOiBzdHJpbmcsIHRhYmxlQ29sdW1uczogc3RyaW5nLCBzb3J0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7RXhjZWxTdHJpbmdzLlhNTF9TVFJJTkd9PHRhYmxlIHhtbG5zPVwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluXCIgaWQ9XCIxXCIgbmFtZT1cIlRhYmxlMVwiIGRpc3BsYXlOYW1lPVwiVGFibGUxXCIgcmVmPVwiJHt0YWJsZURpbWVuc2lvbn1cIiB0b3RhbHNSb3dTaG93bj1cIjBcIj5cbiAgICA8YXV0b0ZpbHRlciByZWY9XCIke2F1dG9GaWx0ZXJEaW1lbnNpb259XCIvPiR7c29ydH0ke3RhYmxlQ29sdW1uc308dGFibGVTdHlsZUluZm8gbmFtZT1cIlRhYmxlU3R5bGVNZWRpdW0yXCIgc2hvd0ZpcnN0Q29sdW1uPVwiMFwiIHNob3dMYXN0Q29sdW1uPVwiMFwiIHNob3dSb3dTdHJpcGVzPVwiMVwiIHNob3dDb2x1bW5TdHJpcGVzPVwiMFwiLz5cbjwvdGFibGU+YDtcbiAgICB9XG4gICAgLyogZXNsaW50LWVuYWJsZSAgbWF4LWxlbiAqL1xuXG4gICAgcHVibGljIHN0YXRpYyBnZXRFeGNlbENvbHVtbihpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgLy8gUmV0dXJucyB0aGUgZXhjZWwgY29sdW1uIG5hbWUgZm9yIGdpdmVuIDAtYmFzZWQgaW5kZXhcbiAgICAgICAgLy8gRm9yIGV4YW1wbGUgMjcgc2hvdWxkIHJldHVybiBcIkFCXCJcbiAgICAgICAgbGV0IHJldHVyblN0cmluZyA9ICcnO1xuICAgICAgICB3aGlsZSAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgY29uc3QgY2hhciA9IGluZGV4ICUgMjY7XG4gICAgICAgICAgICByZXR1cm5TdHJpbmcgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDY1ICsgY2hhcikgKyByZXR1cm5TdHJpbmc7XG4gICAgICAgICAgICBpbmRleCA9IE1hdGguZmxvb3IoaW5kZXggLyAyNikgLSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXR1cm5TdHJpbmc7XG4gICAgfVxufVxuIl19
|
|
94
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhjZWwtc3RyaW5ncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9zZXJ2aWNlcy9leGNlbC9leGNlbC1zdHJpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWM7QUFDZCxNQUFNLE9BQU8sWUFBWTtJQUNyQiw2QkFBNkI7YUFDZCxlQUFVLEdBQUcsNENBQTRDLENBQUM7YUFDMUQsK0JBQTBCLEdBQUcsZ0pBQWdKLENBQUM7SUFFdEwsTUFBTSxDQUFDLE9BQU87UUFDakIsT0FBTyxZQUFZLENBQUMsVUFBVSxHQUFHLHFoQkFBcWhCLENBQUM7SUFDM2pCLENBQUM7SUFFTSxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQXFCO1FBQ3RDLE9BQU8sWUFBWSxDQUFDLFVBQVUsR0FBRyxrZ0JBQWtnQixhQUFhLHFOQUFxTixDQUFDO0lBQzF3QixDQUFDO0lBRU0sTUFBTSxDQUFDLE9BQU87UUFDakIsT0FBTyxZQUFZLENBQUMsVUFBVSxHQUFHLDBoQkFBMGhCLENBQUM7SUFDaGtCLENBQUM7SUFFTSxNQUFNLENBQUMsUUFBUTtRQUNsQixPQUFPLFlBQVksQ0FBQyxVQUFVLEdBQUcseWhOQUF5aE4sQ0FBQztJQUMvak4sQ0FBQztJQUVNLE1BQU0sQ0FBQyxTQUFTO1FBQ25CLE9BQU8sWUFBWSxDQUFDLFVBQVU7WUFDOUIsNCtGQUE0K0YsQ0FBQztJQUNqL0YsQ0FBQztJQUVNLE1BQU0sQ0FBQyxXQUFXLENBQUMsYUFBcUI7UUFDM0MsT0FBTyxZQUFZLENBQUMsVUFBVSxHQUFHLHNrQkFBc2tCLGFBQWEsd1FBQXdRLENBQUM7SUFDajRCLENBQUM7SUFFTSxNQUFNLENBQUMsZ0JBQWdCO1FBQzFCLE9BQU8sWUFBWSxDQUFDLFVBQVUsR0FBRyw4T0FBOE8sQ0FBQztJQUNwUixDQUFDO0lBRU0sTUFBTSxDQUFDLGVBQWUsQ0FBQyxnQkFBZ0I7UUFDMUMs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Ii8qKiBAaGlkZGVuICovXG5leHBvcnQgY2xhc3MgRXhjZWxTdHJpbmdzIHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSAgbWF4LWxlbiAqL1xuICAgIHByaXZhdGUgc3RhdGljIFhNTF9TVFJJTkcgPSAnPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIj8+XFxyXFxuJztcbiAgICBwcml2YXRlIHN0YXRpYyBTSEFSRURfU1RSSU5HX1JFTEFUSU9OU0hJUCA9ICc8UmVsYXRpb25zaGlwIElkPVwicklkNFwiIFR5cGU9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3NoYXJlZFN0cmluZ3NcIiBUYXJnZXQ9XCJzaGFyZWRTdHJpbmdzLnhtbFwiIC8+JztcblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UmVscygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gRXhjZWxTdHJpbmdzLlhNTF9TVFJJTkcgKyAnPFJlbGF0aW9uc2hpcHMgeG1sbnM9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHNcIj48UmVsYXRpb25zaGlwIElkPVwicklkM1wiIFR5cGU9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL2V4dGVuZGVkLXByb3BlcnRpZXNcIiBUYXJnZXQ9XCJkb2NQcm9wcy9hcHAueG1sXCIvPjxSZWxhdGlvbnNoaXAgSWQ9XCJySWQyXCIgVHlwZT1cImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvcmVsYXRpb25zaGlwcy9tZXRhZGF0YS9jb3JlLXByb3BlcnRpZXNcIiBUYXJnZXQ9XCJkb2NQcm9wcy9jb3JlLnhtbFwiLz48UmVsYXRpb25zaGlwIElkPVwicklkMVwiIFR5cGU9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL29mZmljZURvY3VtZW50XCIgVGFyZ2V0PVwieGwvd29ya2Jvb2sueG1sXCIvPjwvUmVsYXRpb25zaGlwcz4nO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QXBwKHdvcmtzaGVldE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBFeGNlbFN0cmluZ3MuWE1MX1NUUklORyArIGA8UHJvcGVydGllcyB4bWxucz1cImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2V4dGVuZGVkLXByb3BlcnRpZXNcIiB4bWxuczp2dD1cImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L2RvY1Byb3BzVlR5cGVzXCI+PEFwcGxpY2F0aW9uPk1pY3Jvc29mdCBFeGNlbDwvQXBwbGljYXRpb24+PERvY1NlY3VyaXR5PjA8L0RvY1NlY3VyaXR5PjxTY2FsZUNyb3A+ZmFsc2U8L1NjYWxlQ3JvcD48SGVhZGluZ1BhaXJzPjx2dDp2ZWN0b3Igc2l6ZT1cIjJcIiBiYXNlVHlwZT1cInZhcmlhbnRcIj48dnQ6dmFyaWFudD48dnQ6bHBzdHI+V29ya3NoZWV0czwvdnQ6bHBzdHI+PC92dDp2YXJpYW50Pjx2dDp2YXJpYW50Pjx2dDppND4xPC92dDppND48L3Z0OnZhcmlhbnQ+PC92dDp2ZWN0b3I+PC9IZWFkaW5nUGFpcnM+PFRpdGxlc09mUGFydHM+PHZ0OnZlY3RvciBzaXplPVwiMVwiIGJhc2VUeXBlPVwibHBzdHJcIj48dnQ6bHBzdHI+JHt3b3Jrc2hlZXROYW1lfTwvdnQ6bHBzdHI+PC92dDp2ZWN0b3I+PC9UaXRsZXNPZlBhcnRzPjxDb21wYW55PjwvQ29tcGFueT48TGlua3NVcFRvRGF0ZT5mYWxzZTwvTGlua3NVcFRvRGF0ZT48U2hhcmVkRG9jPmZhbHNlPC9TaGFyZWREb2M+PEh5cGVybGlua3NDaGFuZ2VkPmZhbHNlPC9IeXBlcmxpbmtzQ2hhbmdlZD48QXBwVmVyc2lvbj4xNi4wMzAwPC9BcHBWZXJzaW9uPjwvUHJvcGVydGllcz5gO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0Q29yZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gRXhjZWxTdHJpbmdzLlhNTF9TVFJJTkcgKyAnPGNwOmNvcmVQcm9wZXJ0aWVzIHhtbG5zOmNwPVwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3BhY2thZ2UvMjAwNi9tZXRhZGF0YS9jb3JlLXByb3BlcnRpZXNcIiB4bWxuczpkYz1cImh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvXCIgeG1sbnM6ZGN0ZXJtcz1cImh0dHA6Ly9wdXJsLm9yZy9kYy90ZXJtcy9cIiB4bWxuczpkY21pdHlwZT1cImh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9cIiB4bWxuczp4c2k9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZVwiPjxkYzpjcmVhdG9yPjwvZGM6Y3JlYXRvcj48Y3A6bGFzdE1vZGlmaWVkQnk+PC9jcDpsYXN0TW9kaWZpZWRCeT48ZGN0ZXJtczpjcmVhdGVkIHhzaTp0eXBlPVwiZGN0ZXJtczpXM0NEVEZcIj4yMDE1LTA2LTA1VDE4OjE3OjIwWjwvZGN0ZXJtczpjcmVhdGVkPjxkY3Rlcm1zOm1vZGlmaWVkIHhzaTp0eXBlPVwiZGN0ZXJtczpXM0NEVEZcIj4yMDE1LTA2LTA1VDE4OjE3OjI2WjwvZGN0ZXJtczptb2RpZmllZD48L2NwOmNvcmVQcm9wZXJ0aWVzPic7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRUaGVtZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gRXhjZWxTdHJpbmdzLlhNTF9TVFJJTkcgKyAnPGE6dGhlbWUgeG1sbnM6YT1cImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9kcmF3aW5nbWwvMjAwNi9tYWluXCIgbmFtZT1cIk9mZmljZSBUaGVtZVwiPjxhOnRoZW1lRWxlbWVudHM+PGE6Y2xyU2NoZW1lIG5hbWU9XCJPZmZpY2VcIj48YTpkazE+PGE6c3lzQ2xyIHZhbD1cIndpbmRvd1RleHRcIiBsYXN0Q2xyPVwiMDAwMDAwXCIvPjwvYTpkazE+PGE6bHQxPjxhOnN5c0NsciB2YWw9XCJ3aW5kb3dcIiBsYXN0Q2xyPVwiRkZGRkZGXCIvPjwvYTpsdDE+PGE6ZGsyPjxhOnNyZ2JDbHIgdmFsPVwiNDQ1NDZBXCIvPjwvYTpkazI+PGE6bHQyPjxhOnNyZ2JDbHIgdmFsPVwiRTdFNkU2XCIvPjwvYTpsdDI+PGE6YWNjZW50MT48YTpzcmdiQ2xyIHZhbD1cIjVCOUJENVwiLz48L2E6YWNjZW50MT48YTphY2NlbnQyPjxhOnNyZ2JDbHIgdmFsPVwiRUQ3RDMxXCIvPjwvYTphY2NlbnQyPjxhOmFjY2VudDM+PGE6c3JnYkNsciB2YWw9XCJBNUE1QTVcIi8+PC9hOmFjY2VudDM+PGE6YWNjZW50ND48YTpzcmdiQ2xyIHZhbD1cIkZGQzAwMFwiLz48L2E6YWNjZW50ND48YTphY2NlbnQ1PjxhOnNyZ2JDbHIgdmFsPVwiNDQ3MkM0XCIvPjwvYTphY2NlbnQ1PjxhOmFjY2VudDY+PGE6c3JnYkNsciB2YWw9XCI3MEFENDdcIi8+PC9hOmFjY2VudDY+PGE6aGxpbms+PGE6c3JnYkNsciB2YWw9XCIwNTYzQzFcIi8+PC9hOmhsaW5rPjxhOmZvbEhsaW5rPjxhOnNyZ2JDbHIgdmFsPVwiOTU0RjcyXCIvPjwvYTpmb2xIbGluaz48L2E6Y2xyU2NoZW1lPjxhOmZvbnRTY2hlbWUgbmFtZT1cIk9mZmljZVwiPjxhOm1ham9yRm9udD48YTpsYXRpbiB0eXBlZmFjZT1cIkNhbGlicmkgTGlnaHRcIiBwYW5vc2U9XCIwMjBGMDMwMjAyMDIwNDAzMDIwNFwiLz48YTplYSB0eXBlZmFjZT1cIlwiLz48YTpjcyB0eXBlZmFjZT1cIlwiLz48YTpmb250IHNjcmlwdD1cIkpwYW5cIiB0eXBlZmFjZT1cIua4uOOCtOOCt+ODg+OCryBMaWdodFwiLz48YTpmb250IHNjcmlwdD1cIkhhbmdcIiB0eXBlZmFjZT1cIuunkeydgCDqs6DrlJVcIi8+PGE6Zm9udCBzY3JpcHQ9XCJIYW5zXCIgdHlwZWZhY2U9XCLnrYnnur8gTGlnaHRcIi8+PGE6Zm9udCBzY3JpcHQ9XCJIYW50XCIgdHlwZWZhY2U9XCLmlrDntLDmmI7pq5RcIi8+PGE6Zm9udCBzY3JpcHQ9XCJBcmFiXCIgdHlwZWZhY2U9XCJUaW1lcyBOZXcgUm9tYW5cIi8+PGE6Zm9udCBzY3JpcHQ9XCJIZWJyXCIgdHlwZWZhY2U9XCJUaW1lcyBOZXcgUm9tYW5cIi8+PGE6Zm9udCBzY3JpcHQ9XCJUaGFpXCIgdHlwZWZhY2U9XCJUYWhvbWFcIi8+PGE6Zm9udCBzY3JpcHQ9XCJFdGhpXCIgdHlwZWZhY2U9XCJOeWFsYVwiLz48YTpmb250IHNjcmlwdD1cIkJlbmdcIiB0eXBlZmFjZT1cIlZyaW5kYVwiLz48YTpmb250IHNjcmlwdD1cIkd1anJcIiB0eXBlZmFjZT1cIlNocnV0aVwiLz48YTpmb250IHNjcmlwdD1cIktobXJcIiB0eXBlZmFjZT1cIk1vb2xCb3JhblwiLz48YTpmb250IHNjcmlwdD1cIktuZGFcIiB0eXBlZmFjZT1cIlR1bmdhXCIvPjxhOmZvbnQgc2NyaXB0PVwiR3VydVwiIHR5cGVmYWNlPVwiUmFhdmlcIi8+PGE6Zm9udCBzY3JpcHQ9XCJDYW5zXCIgdHlwZWZhY2U9XCJFdXBoZW1pYVwiLz48YTpmb250IHNjcmlwdD1cIkNoZXJcIiB0eXBlZmFjZT1cIlBsYW50YWdlbmV0IENoZXJva2VlXCIvPjxhOmZvbnQgc2NyaXB0PVwiWWlpaVwiIHR5cGVmYWNlPVwiTWljcm9zb2Z0IFlpIEJhaXRpXCIvPjxhOmZvbnQgc2NyaXB0PVwiVGlidFwiIHR5cGVmYWNlPVwiTWljcm9zb2Z0IEhpbWFsYXlhXCIvPjxhOmZvbnQgc2NyaXB0PVwiVGhhYVwiIHR5cGVmYWNlPVwiTVYgQm9saVwiLz48YTpmb250IHNjcmlwdD1cIkRldmFcIiB0eXBlZmFjZT1cIk1hbmdhbFwiLz48YTpmb250IHNjcmlwdD1cIlRlbHVcIiB0eXBlZmFjZT1cIkdhdXRhbWlcIi8+PGE6Zm9udCBzY3JpcHQ9XCJUYW1sXCIgdHlwZWZhY2U9XCJMYXRoYVwiLz48YTpmb250IHNjcmlwdD1cIlN5cmNcIiB0eXBlZmFjZT1cIkVzdHJhbmdlbG8gRWRlc3NhXCIvPjxhOmZvbnQgc2NyaXB0PVwiT3J5YVwiIHR5cGVmYWNlPVwiS2FsaW5nYVwiLz48YTpmb250IHNjcmlwdD1cIk1seW1cIiB0eXBlZmFjZT1cIkthcnRpa2FcIi8+PGE6Zm9udCBzY3JpcHQ9XCJMYW9vXCIgdHlwZWZhY2U9XCJEb2tDaGFtcGFcIi8+PGE6Zm9udCBzY3JpcHQ9XCJTaW5oXCIgdHlwZWZhY2U9XCJJc2tvb2xhIFBvdGFcIi8+PGE6Zm9udCBzY3JpcHQ9XCJNb25nXCIgdHlwZWZhY2U9XCJNb25nb2xpYW4gQmFpdGlcIi8+PGE6Zm9udCBzY3JpcHQ9XCJWaWV0XCIgdHlwZWZhY2U9XCJUaW1lcyBOZXcgUm9tYW5cIi8+PGE6Zm9udCBzY3JpcHQ9XCJVaWdoXCIgdHlwZWZhY2U9XCJNaWNyb3NvZnQgVWlnaHVyXCIvPjxhOmZvbnQgc2NyaXB0PVwiR2VvclwiIHR5cGVmYWNlPVwiU3lsZmFlblwiLz48L2E6bWFqb3JGb250PjxhOm1pbm9yRm9udD48YTpsYXRpbiB0eXBlZmFjZT1cIkNhbGlicmlcIiBwYW5vc2U9XCIwMjBGMDUwMjAyMDIwNDAzMDIwNFwiLz48YTplYSB0eXBlZmFjZT1cIlwiLz48YTpjcyB0eXBlZmFjZT1cIlwiLz48YTpmb250IHNjcmlwdD1cIkpwYW5cIiB0eXBlZmFjZT1cIua4uOOCtOOCt+ODg+OCr1wiLz48YTpmb250IHNjcmlwdD1cIkhhbmdcIiB0eXBlZmFjZT1cIuunkeydgCDqs6DrlJVcIi8+PGE6Zm9udCBzY3JpcHQ9XCJIYW5zXCIgdHlwZWZhY2U9XCLnrYnnur9cIi8+PGE6Zm9udCBzY3JpcHQ9XCJIYW50XCIgdHlwZWZhY2U9XCLmlrDntLDmmI7pq5RcIi8+PGE6Zm9udCBzY3JpcHQ9XCJBcmFiXCIgdHlwZWZhY2U9XCJBcmlhbFwiLz48YTpmb250IHNjcmlwdD1cIkhlYnJcIiB0eXBlZmFjZT1cIkFyaWFsXCIvPjxhOmZvbnQgc2NyaXB0PVwiVGhhaVwiIHR5cGVmYWNlPVwiVGFob21hXCIvPjxhOmZvbnQgc2NyaXB0PVwiRXRoaVwiIHR5cGVmYWNlPVwiTnlhbGFcIi8+PGE6Zm9udCBzY3JpcHQ9XCJCZW5nXCIgdHlwZWZhY2U9XCJWcmluZGFcIi8+PGE6Zm9udCBzY3JpcHQ9XCJHdWpyXCIgdHlwZWZhY2U9XCJTaHJ1dGlcIi8+PGE6Zm9udCBzY3JpcHQ9XCJLaG1yXCIgdHlwZWZhY2U9XCJEYXVuUGVuaFwiLz48YTpmb250IHNjcmlwdD1cIktuZGFcIiB0eXBlZmFjZT1cIlR1bmdhXCIvPjxhOmZvbnQgc2NyaXB0PVwiR3VydVwiIHR5cGVmYWNlPVwiUmFhdmlcIi8+PGE6Zm9udCBzY3JpcHQ9XCJDYW5zXCIgdHlwZWZhY2U9XCJFdXBoZW1pYVwiLz48YTpmb250IHNjcmlwdD1cIkNoZXJcIiB0eXBlZmFjZT1cIlBsYW50YWdlbmV0IENoZXJva2VlXCIvPjxhOmZvbnQgc2NyaXB0PVwiWWlpaVwiIHR5cGVmYWNlPVwiTWljcm9zb2Z0IFlpIEJhaXRpXCIvPjxhOmZvbnQgc2NyaXB0PVwiVGlidFwiIHR5cGVmYWNlPVwiTWljcm9zb2Z0IEhpbWFsYXlhXCIvPjxhOmZvbnQgc2NyaXB0PVwiVGhhYVwiIHR5cGVmYWNlPVwiTVYgQm9saVwiLz48YTpmb250IHNjcmlwdD1cIkRldmFcIiB0eXBlZmFjZT1cIk1hbmdhbFwiLz48YTpmb250IHNjcmlwdD1cIlRlbHVcIiB0eXBlZmFjZT1cIkdhdXRhbWlcIi8+PGE6Zm9udCBzY3JpcHQ9XCJUYW1sXCIgdHlwZWZhY2U9XCJMYXRoYVwiLz48YTpmb250IHNjcmlwdD1cIlN5cmNcIiB0eXBlZmFjZT1cIkVzdHJhbmdlbG8gRWRlc3NhXCIvPjxhOmZvbnQgc2NyaXB0PVwiT3J5YVwiIHR5cGVmYWNlPVwiS2FsaW5nYVwiLz48YTpmb250IHNjcmlwdD1cIk1seW1cIiB0eXBlZmFjZT1cIkthcnRpa2FcIi8+PGE6Zm9udCBzY3JpcHQ9XCJMYW9vXCIgdHlwZWZhY2U9XCJEb2tDaGFtcGFcIi8+PGE6Zm9udCBzY3JpcHQ9XCJTaW5oXCIgdHlwZWZhY2U9XCJJc2tvb2xhIFBvdGFcIi8+PGE6Zm9udCBzY3JpcHQ9XCJNb25nXCIgdHlwZWZhY2U9XCJNb25nb2xpYW4gQmFpdGlcIi8+PGE6Zm9udCBzY3JpcHQ9XCJWaWV0XCIgdHlwZWZhY2U9XCJBcmlhbFwiLz48YTpmb250IHNjcmlwdD1cIlVpZ2hcIiB0eXBlZmFjZT1cIk1pY3Jvc29mdCBVaWdodXJcIi8+PGE6Zm9udCBzY3JpcHQ9XCJHZW9yXCIgdHlwZWZhY2U9XCJTeWxmYWVuXCIvPjwvYTptaW5vckZvbnQ+PC9hOmZvbnRTY2hlbWU+PGE6Zm10U2NoZW1lIG5hbWU9XCJPZmZpY2VcIj48YTpmaWxsU3R5bGVMc3Q+PGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiLz48L2E6c29saWRGaWxsPjxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT1cIjFcIj48YTpnc0xzdD48YTpncyBwb3M9XCIwXCI+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCI+PGE6bHVtTW9kIHZhbD1cIjExMDAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMTA1MDAwXCIvPjxhOnRpbnQgdmFsPVwiNjcwMDBcIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+PGE6Z3MgcG9zPVwiNTAwMDBcIj48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTpsdW1Nb2QgdmFsPVwiMTA1MDAwXCIvPjxhOnNhdE1vZCB2YWw9XCIxMDMwMDBcIi8+PGE6dGludCB2YWw9XCI3MzAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48YTpncyBwb3M9XCIxMDAwMDBcIj48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTpsdW1Nb2QgdmFsPVwiMTA1MDAwXCIvPjxhOnNhdE1vZCB2YWw9XCIxMDkwMDBcIi8+PGE6dGludCB2YWw9XCI4MTAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48L2E6Z3NMc3Q+PGE6bGluIGFuZz1cIjU0MDAwMDBcIiBzY2FsZWQ9XCIwXCIvPjwvYTpncmFkRmlsbD48YTpncmFkRmlsbCByb3RXaXRoU2hhcGU9XCIxXCI+PGE6Z3NMc3Q+PGE6Z3MgcG9zPVwiMFwiPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiPjxhOnNhdE1vZCB2YWw9XCIxMDMwMDBcIi8+PGE6bHVtTW9kIHZhbD1cIjEwMjAwMFwiLz48YTp0aW50IHZhbD1cIjk0MDAwXCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPjxhOmdzIHBvcz1cIjUwMDAwXCI+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCI+PGE6c2F0TW9kIHZhbD1cIjExMDAwMFwiLz48YTpsdW1Nb2QgdmFsPVwiMTAwMDAwXCIvPjxhOnNoYWRlIHZhbD1cIjEwMDAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48YTpncyBwb3M9XCIxMDAwMDBcIj48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTpsdW1Nb2QgdmFsPVwiOTkwMDBcIi8+PGE6c2F0TW9kIHZhbD1cIjEyMDAwMFwiLz48YTpzaGFkZSB2YWw9XCI3ODAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48L2E6Z3NMc3Q+PGE6bGluIGFuZz1cIjU0MDAwMDBcIiBzY2FsZWQ9XCIwXCIvPjwvYTpncmFkRmlsbD48L2E6ZmlsbFN0eWxlTHN0PjxhOmxuU3R5bGVMc3Q+PGE6bG4gdz1cIjYzNTBcIiBjYXA9XCJmbGF0XCIgY21wZD1cInNuZ1wiIGFsZ249XCJjdHJcIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCIvPjwvYTpzb2xpZEZpbGw+PGE6cHJzdERhc2ggdmFsPVwic29saWRcIi8+PGE6bWl0ZXIgbGltPVwiODAwMDAwXCIvPjwvYTpsbj48YTpsbiB3PVwiMTI3MDBcIiBjYXA9XCJmbGF0XCIgY21wZD1cInNuZ1wiIGFsZ249XCJjdHJcIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCIvPjwvYTpzb2xpZEZpbGw+PGE6cHJzdERhc2ggdmFsPVwic29saWRcIi8+PGE6bWl0ZXIgbGltPVwiODAwMDAwXCIvPjwvYTpsbj48YTpsbiB3PVwiMTkwNTBcIiBjYXA9XCJmbGF0XCIgY21wZD1cInNuZ1wiIGFsZ249XCJjdHJcIj48YTpzb2xpZEZpbGw+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCIvPjwvYTpzb2xpZEZpbGw+PGE6cHJzdERhc2ggdmFsPVwic29saWRcIi8+PGE6bWl0ZXIgbGltPVwiODAwMDAwXCIvPjwvYTpsbj48L2E6bG5TdHlsZUxzdD48YTplZmZlY3RTdHlsZUxzdD48YTplZmZlY3RTdHlsZT48YTplZmZlY3RMc3QvPjwvYTplZmZlY3RTdHlsZT48YTplZmZlY3RTdHlsZT48YTplZmZlY3RMc3QvPjwvYTplZmZlY3RTdHlsZT48YTplZmZlY3RTdHlsZT48YTplZmZlY3RMc3Q+PGE6b3V0ZXJTaGR3IGJsdXJSYWQ9XCI1NzE1MFwiIGRpc3Q9XCIxOTA1MFwiIGRpcj1cIjU0MDAwMDBcIiBhbGduPVwiY3RyXCIgcm90V2l0aFNoYXBlPVwiMFwiPjxhOnNyZ2JDbHIgdmFsPVwiMDAwMDAwXCI+PGE6YWxwaGEgdmFsPVwiNjMwMDBcIi8+PC9hOnNyZ2JDbHI+PC9hOm91dGVyU2hkdz48L2E6ZWZmZWN0THN0PjwvYTplZmZlY3RTdHlsZT48L2E6ZWZmZWN0U3R5bGVMc3Q+PGE6YmdGaWxsU3R5bGVMc3Q+PGE6c29saWRGaWxsPjxhOnNjaGVtZUNsciB2YWw9XCJwaENsclwiLz48L2E6c29saWRGaWxsPjxhOnNvbGlkRmlsbD48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTp0aW50IHZhbD1cIjk1MDAwXCIvPjxhOnNhdE1vZCB2YWw9XCIxNzAwMDBcIi8+PC9hOnNjaGVtZUNscj48L2E6c29saWRGaWxsPjxhOmdyYWRGaWxsIHJvdFdpdGhTaGFwZT1cIjFcIj48YTpnc0xzdD48YTpncyBwb3M9XCIwXCI+PGE6c2NoZW1lQ2xyIHZhbD1cInBoQ2xyXCI+PGE6dGludCB2YWw9XCI5MzAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMTUwMDAwXCIvPjxhOnNoYWRlIHZhbD1cIjk4MDAwXCIvPjxhOmx1bU1vZCB2YWw9XCIxMDIwMDBcIi8+PC9hOnNjaGVtZUNscj48L2E6Z3M+PGE6Z3MgcG9zPVwiNTAwMDBcIj48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTp0aW50IHZhbD1cIjk4MDAwXCIvPjxhOnNhdE1vZCB2YWw9XCIxMzAwMDBcIi8+PGE6c2hhZGUgdmFsPVwiOTAwMDBcIi8+PGE6bHVtTW9kIHZhbD1cIjEwMzAwMFwiLz48L2E6c2NoZW1lQ2xyPjwvYTpncz48YTpncyBwb3M9XCIxMDAwMDBcIj48YTpzY2hlbWVDbHIgdmFsPVwicGhDbHJcIj48YTpzaGFkZSB2YWw9XCI2MzAwMFwiLz48YTpzYXRNb2QgdmFsPVwiMTIwMDAwXCIvPjwvYTpzY2hlbWVDbHI+PC9hOmdzPjwvYTpnc0xzdD48YTpsaW4gYW5nPVwiNTQwMDAwMFwiIHNjYWxlZD1cIjBcIi8+PC9hOmdyYWRGaWxsPjwvYTpiZ0ZpbGxTdHlsZUxzdD48L2E6Zm10U2NoZW1lPjwvYTp0aGVtZUVsZW1lbnRzPjxhOm9iamVjdERlZmF1bHRzLz48YTpleHRyYUNsclNjaGVtZUxzdC8+PGE6ZXh0THN0PjxhOmV4dCB1cmk9XCJ7MDVBNEMyNUMtMDg1RS00MzQwLTg1QTMtQTU1MzFFNTEwREIyfVwiPjx0aG0xNTp0aGVtZUZhbWlseSB4bWxuczp0aG0xNT1cImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3RoZW1lbWwvMjAxMi9tYWluXCIgbmFtZT1cIk9mZmljZSBUaGVtZVwiIGlkPVwiezYyRjkzOUI2LTkzQUYtNERCOC05QzZCLUQ2QzdERkRDNTg5Rn1cIiB2aWQ9XCJ7NEEzQzQ2RTgtNjFDQy00NjAzLUE1ODktNzQyMkE0N0E4RTRBfVwiLz48L2E6ZXh0PjwvYTpleHRMc3Q+PC9hOnRoZW1lPic7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRTdHlsZXMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIEV4Y2VsU3RyaW5ncy5YTUxfU1RSSU5HICtcbiAgICAgICAgJzxzdHlsZVNoZWV0IHhtbG5zPVwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluXCIgeG1sbnM6bWM9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvbWFya3VwLWNvbXBhdGliaWxpdHkvMjAwNlwiIG1jOklnbm9yYWJsZT1cIngxNGFjIHgxNnIyXCIgeG1sbnM6eDE0YWM9XCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMDkvOS9hY1wiIHhtbG5zOngxNnIyPVwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDE1LzAyL21haW5cIj48bnVtRm10cyBjb3VudD1cIjVcIj48bnVtRm10IG51bUZtdElkPVwiMTY0XCIgZm9ybWF0Q29kZT1cIiZxdW90OyQmcXVvdDsjLCMjMC4wMFwiLz48bnVtRm10IG51bUZtdElkPVwiMTY1XCIgZm9ybWF0Q29kZT1cIlskwqMtODA5XSMsIyMwLjAwXCIvPjxudW1GbXQgbnVtRm10SWQ9XCIxNjZcIiBmb3JtYXRDb2RlPVwiWyTCpS04MDRdIywjIzAuMDBcIi8+PG51bUZtdCBudW1GbXRJZD1cIjE2N1wiIGZvcm1hdENvZGU9XCIjLCMjMC4wMFxcIFsk4oKsLTFdXCIvPjxudW1GbXQgbnVtRm10SWQ9XCIxNjhcIiBmb3JtYXRDb2RlPVwiWyTCpS00MTFdIywjIzAuMDBcIi8+PC9udW1GbXRzPjxmb250cyBjb3VudD1cIjJcIiB4MTRhYzprbm93bkZvbnRzPVwiMVwiPjxmb250PjxzeiB2YWw9XCIxMVwiLz48Y29sb3IgdGhlbWU9XCIxXCIvPjxuYW1lIHZhbD1cIkNhbGlicmlcIi8+PGZhbWlseSB2YWw9XCIyXCIvPjxzY2hlbWUgdmFsPVwibWlub3JcIi8+PC9mb250Pjxmb250PjxiLz48c3ogdmFsPVwiMTFcIi8+PGNvbG9yIHRoZW1lPVwiMFwiLz48bmFtZSB2YWw9XCJDYWxpYnJpXCIvPjxmYW1pbHkgdmFsPVwiMlwiLz48c2NoZW1lIHZhbD1cIm1pbm9yXCIvPjwvZm9udD48L2ZvbnRzPjxmaWxscyBjb3VudD1cIjNcIj48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9XCJub25lXCIvPjwvZmlsbD48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9XCJncmF5MTI1XCIvPjwvZmlsbD48ZmlsbD48cGF0dGVybkZpbGwgcGF0dGVyblR5cGU9XCJzb2xpZFwiPjxmZ0NvbG9yIHRoZW1lPVwiNFwiLz48YmdDb2xvciBpbmRleGVkPVwiNjRcIi8+PC9wYXR0ZXJuRmlsbD48L2ZpbGw+PC9maWxscz48Ym9yZGVycyBjb3VudD1cIjFcIj48Ym9yZGVyPjxsZWZ0Lz48cmlnaHQvPjx0b3AvPjxib3R0b20vPjxkaWFnb25hbC8+PC9ib3JkZXI+PC9ib3JkZXJzPjxjZWxsU3R5bGVYZnMgY291bnQ9XCIxXCI+PHhmIG51bUZtdElkPVwiMFwiIGZvbnRJZD1cIjBcIiBmaWxsSWQ9XCIwXCIgYm9yZGVySWQ9XCIwXCIvPjwvY2VsbFN0eWxlWGZzPjxjZWxsWGZzIGNvdW50PVwiMTNcIj48eGYgbnVtRm10SWQ9XCIwXCIgZm9udElkPVwiMFwiIGZpbGxJZD1cIjBcIiBib3JkZXJJZD1cIjBcIiB4ZklkPVwiMFwiLz48eGYgbnVtRm10SWQ9XCIwXCIgZm9udElkPVwiMFwiIGZpbGxJZD1cIjBcIiBib3JkZXJJZD1cIjBcIiB4ZklkPVwiMFwiIGFwcGx5TnVtYmVyRm9ybWF0PVwiMVwiLz48eGYgbnVtRm10SWQ9XCIxNFwiIGZvbnRJZD1cIjBcIiBmaWxsSWQ9XCIwXCIgYm9yZGVySWQ9XCIwXCIgeGZJZD1cIjBcIiBhcHBseU51bWJlckZvcm1hdD1cIjFcIi8+PHhmIG51bUZtdElkPVwiMFwiIGZvbnRJZD1cIjFcIiBmaWxsSWQ9XCIyXCIgYm9yZGVySWQ9XCIwXCIgeGZJZD1cIjBcIi8+PHhmIG51bUZtdElkPVwiMFwiIGZvbnRJZD1cIjBcIiBmaWxsSWQ9XCIwXCIgYm9yZGVySWQ9XCIwXCIgeGZJZD1cIjBcIiBhcHBseUFsaWdubWVudD1cIjFcIj48YWxpZ25tZW50IGhvcml6b250YWw9XCJjZW50ZXJcIiB2ZXJ0aWNhbD1cImNlbnRlclwiLz48L3hmPjx4ZiBudW1GbXRJZD1cIjE2NFwiIGZvbnRJZD1cIjBcIiBmaWxsSWQ9XCIwXCIgYm9yZGVySWQ9XCIwXCIgeGZJZD1cIjBcIiBhcHBseU51bWJlckZvcm1hdD1cIjFcIi8+PHhmIG51bUZtdElkPVwiMTY1XCIgZm9udElkPVwiMFwiIGZpbGxJZD1cIjBcIiBib3JkZXJJZD1cIjBcIiB4ZklkPVwiMFwiIGFwcGx5TnVtYmVyRm9ybWF0PVwiMVwiLz48eGYgbnVtRm10SWQ9XCIxNjZcIiBmb250SWQ9XCIwXCIgZmlsbElkPVwiMFwiIGJvcmRlcklkPVwiMFwiIHhmSWQ9XCIwXCIgYXBwbHlOdW1iZXJGb3JtYXQ9XCIxXCIvPjx4ZiBudW1GbXRJZD1cIjE2N1wiIGZvbnRJZD1cIjBcIiBmaWxsSWQ9XCIwXCIgYm9yZGVySWQ9XCIwXCIgeGZJZD1cIjBcIiBhcHBseU51bWJlckZvcm1hdD1cIjFcIi8+PHhmIG51bUZtdElkPVwiMTY4XCIgZm9udElkPVwiMFwiIGZpbGxJZD1cIjBcIiBib3JkZXJJZD1cIjBcIiB4ZklkPVwiMFwiIGFwcGx5TnVtYmVyRm9ybWF0PVwiMVwiLz48eGYgbnVtRm10SWQ9XCIyMVwiIGZvbnRJZD1cIjBcIiBmaWxsSWQ9XCIwXCIgYm9yZGVySWQ9XCIwXCIgeGZJZD1cIjBcIiBhcHBseU51bWJlckZvcm1hdD1cIjFcIi8+PHhmIG51bUZtdElkPVwiMjJcIiBmb250SWQ9XCIwXCIgZmlsbElkPVwiMFwiIGJvcmRlcklkPVwiMFwiIHhmSWQ9XCIwXCIgYXBwbHlOdW1iZXJGb3JtYXQ9XCIxXCIvPjx4ZiBudW1GbXRJZD1cIjEwXCIgZm9udElkPVwiMFwiIGZpbGxJZD1cIjBcIiBib3JkZXJJZD1cIjBcIiB4ZklkPVwiMFwiIGFwcGx5TnVtYmVyRm9ybWF0PVwiMVwiLz48L2NlbGxYZnM+PGNlbGxTdHlsZXMgY291bnQ9XCIxXCI+PGNlbGxTdHlsZSBuYW1lPVwiTm9ybWFsXCIgeGZJZD1cIjBcIiBidWlsdGluSWQ9XCIwXCIvPjwvY2VsbFN0eWxlcz48ZHhmcyBjb3VudD1cIjBcIi8+PHRhYmxlU3R5bGVzIGNvdW50PVwiMFwiIGRlZmF1bHRUYWJsZVN0eWxlPVwiVGFibGVTdHlsZU1lZGl1bTJcIiBkZWZhdWx0UGl2b3RTdHlsZT1cIlBpdm90U3R5bGVMaWdodDE2XCIvPjxleHRMc3Q+PGV4dCB1cmk9XCJ7RUI3OURFRjItODBCOC00M2U1LTk1QkQtNTRDQkRERjkwMjBDfVwiIHhtbG5zOngxND1cImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAwOS85L21haW5cIj48eDE0OnNsaWNlclN0eWxlcyBkZWZhdWx0U2xpY2VyU3R5bGU9XCJTbGljZXJTdHlsZUxpZ2h0MVwiLz48L2V4dD48ZXh0IHVyaT1cIns5MjYwQTUxMC1GMzAxLTQ2YTgtODYzNS1GNTEyRDY0QkU1RjV9XCIgeG1sbnM6eDE1PVwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDEwLzExL21haW5cIj48eDE1OnRpbWVsaW5lU3R5bGVzIGRlZmF1bHRUaW1lbGluZVN0eWxlPVwiVGltZVNsaWNlclN0eWxlTGlnaHQxXCIvPjwvZXh0PjwvZXh0THN0Pjwvc3R5bGVTaGVldD4nO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0V29ya2Jvb2sod29ya3NoZWV0TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIEV4Y2VsU3RyaW5ncy5YTUxfU1RSSU5HICsgYDx3b3JrYm9vayB4bWxucz1cImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9zcHJlYWRzaGVldG1sLzIwMDYvbWFpblwiIHhtbG5zOnI9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzXCIgeG1sbnM6bWM9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvbWFya3VwLWNvbXBhdGliaWxpdHkvMjAwNlwiIG1jOklnbm9yYWJsZT1cIngxNVwiIHhtbG5zOngxNT1cImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAxMC8xMS9tYWluXCI+PGZpbGVWZXJzaW9uIGFwcE5hbWU9XCJ4bFwiIGxhc3RFZGl0ZWQ9XCI2XCIgbG93ZXN0RWRpdGVkPVwiNlwiIHJ1cEJ1aWxkPVwiMTQ0MjBcIi8+PHdvcmtib29rUHIgZmlsdGVyUHJpdmFjeT1cIjFcIiBkZWZhdWx0VGhlbWVWZXJzaW9uPVwiMTY0MDExXCIvPjxib29rVmlld3M+PHdvcmtib29rVmlldyB4V2luZG93PVwiMFwiIHlXaW5kb3c9XCIwXCIgd2luZG93V2lkdGg9XCIyMjI2MFwiIHdpbmRvd0hlaWdodD1cIjEyNjQ1XCIvPjwvYm9va1ZpZXdzPjxzaGVldHM+PHNoZWV0IG5hbWU9XCIke3dvcmtzaGVldE5hbWV9XCIgc2hlZXRJZD1cIjFcIiByOmlkPVwicklkMVwiLz48L3NoZWV0cz48Y2FsY1ByIGNhbGNJZD1cIjE2MjkxM1wiLz48ZXh0THN0PjxleHQgdXJpPVwiezE0MEE3MDk0LTBFMzUtNDg5Mi04NDMyLUM0RDJFNTdFREVCNX1cIiB4bWxuczp4MTU9XCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL29mZmljZS9zcHJlYWRzaGVldG1sLzIwMTAvMTEvbWFpblwiPjx4MTU6d29ya2Jvb2tQciBjaGFydFRyYWNraW5nUmVmQmFzZT1cIjFcIi8+PC9leHQ+PC9leHRMc3Q+PC93b3JrYm9vaz5gO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0V29ya3NoZWV0UmVscygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gRXhjZWxTdHJpbmdzLlhNTF9TVFJJTkcgKyBgPFJlbGF0aW9uc2hpcHMgeG1sbnM9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L3JlbGF0aW9uc2hpcHNcIj48UmVsYXRpb25zaGlwIElkPVwicklkMVwiIFR5cGU9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3RhYmxlXCIgVGFyZ2V0PVwiLi4vdGFibGVzL3RhYmxlMS54bWxcIi8+PC9SZWxhdGlvbnNoaXBzPmA7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRXb3JrYm9va1JlbHMoaGFzU2hhcmVkU3RyaW5ncyk6IHN0cmluZyB7XG4gICAgICAgIGxldCByZXRWYWwgPSBFeGNlbFN0cmluZ3MuWE1MX1NUUklORyArIGA8UmVsYXRpb25zaGlwcyB4bWxucz1cImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9wYWNrYWdlLzIwMDYvcmVsYXRpb25zaGlwc1wiPjxSZWxhdGlvbnNoaXAgSWQ9XCJySWQzXCIgVHlwZT1cImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHMvc3R5bGVzXCIgVGFyZ2V0PVwic3R5bGVzLnhtbFwiLz48UmVsYXRpb25zaGlwIElkPVwicklkMlwiIFR5cGU9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3RoZW1lXCIgVGFyZ2V0PVwidGhlbWUvdGhlbWUxLnhtbFwiLz48UmVsYXRpb25zaGlwIElkPVwicklkMVwiIFR5cGU9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvb2ZmaWNlRG9jdW1lbnQvMjAwNi9yZWxhdGlvbnNoaXBzL3dvcmtzaGVldFwiIFRhcmdldD1cIndvcmtzaGVldHMvc2hlZXQxLnhtbFwiLz5gO1xuXG4gICAgICAgIGlmIChoYXNTaGFyZWRTdHJpbmdzKSB7XG4gICAgICAgICAgICByZXRWYWwgKz0gRXhjZWxTdHJpbmdzLlNIQVJFRF9TVFJJTkdfUkVMQVRJT05TSElQO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0VmFsICs9ICc8L1JlbGF0aW9uc2hpcHM+JztcblxuICAgICAgICByZXR1cm4gcmV0VmFsO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0U2hlZXRYTUwoZGltZW5zaW9uOiBzdHJpbmcsIGZyZWV6ZVBhbmU6IHN0cmluZywgY29sczogc3RyaW5nLCBzaGVldERhdGE6IHN0cmluZywgaGFzVGFibGU6IGJvb2xlYW4sIG91dGxpbmVMZXZlbCA9IDAsIGlzSGllcmFyY2hpY2FsOiBib29sZWFuKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgaGFzT3V0bGluZSA9IG91dGxpbmVMZXZlbCA+IDA7XG4gICAgICAgIGNvbnN0IHRhYmxlUGFydHMgPSBoYXNUYWJsZSA/ICc8dGFibGVQYXJ0cyBjb3VudD1cIjFcIj48dGFibGVQYXJ0IHI6aWQ9XCJySWQxXCIvPjwvdGFibGVQYXJ0cz4nIDogJyc7XG4gICAgICAgIGNvbnN0IHNoZWV0T3V0bGluZVByb3AgPSBoYXNPdXRsaW5lID8gJzxzaGVldFByPjxvdXRsaW5lUHIgc3VtbWFyeUJlbG93PVwiMFwiLz48L3NoZWV0UHI+JyA6ICcnO1xuICAgICAgICBjb25zdCBzT3V0bGluZUxldmVsID0gIGhhc091dGxpbmUgPyBgb3V0bGluZUxldmVsUm93PVwiJHtvdXRsaW5lTGV2ZWx9XCJgIDogJyc7XG4gICAgICAgIGNvbnN0IGRpbWVuc2lvbnMgPSBpc0hpZXJhcmNoaWNhbCA/ICcnIDogYDxkaW1lbnNpb24gcmVmPVwiJHtkaW1lbnNpb259XCIvPmA7XG5cbiAgICAgICAgLy8gcmV0dXJuIEV4Y2VsU3RyaW5ncy5YTUxfU1RSSU5HICtcbiAgICAgICAgLy8gICAgICc8d29ya3NoZWV0IHhtbG5zPVwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluXCIgeG1sbnM6cj1cImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9vZmZpY2VEb2N1bWVudC8yMDA2L3JlbGF0aW9uc2hpcHNcIiB4bWxuczptYz1cImh0dHA6Ly9zY2hlbWFzLm9wZW54bWxmb3JtYXRzLm9yZy9tYXJrdXAtY29tcGF0aWJpbGl0eS8yMDA2XCIgbWM6SWdub3JhYmxlPVwieDE0YWNcIiB4bWxuczp4MTRhYz1cImh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vb2ZmaWNlL3NwcmVhZHNoZWV0bWwvMjAwOS85L2FjXCI+PGRpbWVuc2lvbiByZWY9XCInICsgZGltZW5zaW9uICsgJ1wiLz48c2hlZXRWaWV3cz48c2hlZXRWaWV3IHRhYlNlbGVjdGVkPVwiMVwiIHdvcmtib29rVmlld0lkPVwiMFwiPicgKyBmcmVlemVQYW5lICsgJzwvc2hlZXRWaWV3Pjwvc2hlZXRWaWV3cz48c2hlZXRGb3JtYXRQciBkZWZhdWx0Um93SGVpZ2h0PVwiMTVcIiB4MTRhYzpkeURlc2NlbnQ9XCIwLjI1XCIvPicgKyBjb2xzICsgc2hlZXREYXRhICsgJzxwYWdlTWFyZ2lucyBsZWZ0PVwiMC43XCIgcmlnaHQ9XCIwLjdcIiB0b3A9XCIwLjc1XCIgYm90dG9tPVwiMC43NVwiIGhlYWRlcj1cIjAuM1wiIGZvb3Rlcj1cIjAuM1wiLz4nICsgdGFibGVQYXJ0cyArICc8L3dvcmtzaGVldD4nO1xuXG4gICAgICAgIHJldHVybiBgJHtFeGNlbFN0cmluZ3MuWE1MX1NUUklOR31cbjx3b3Jrc2hlZXQgeG1sbnM9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvc3ByZWFkc2hlZXRtbC8yMDA2L21haW5cIiB4bWxuczpyPVwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL29mZmljZURvY3VtZW50LzIwMDYvcmVsYXRpb25zaGlwc1wiIHhtbG5zOm1jPVwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL21hcmt1cC1jb21wYXRpYmlsaXR5LzIwMDZcIiBtYzpJZ25vcmFibGU9XCJ4MTRhY1wiIHhtbG5zOngxNGFjPVwiaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9vZmZpY2Uvc3ByZWFkc2hlZXRtbC8yMDA5LzkvYWNcIj5cbiR7c2hlZXRPdXRsaW5lUHJvcH1cbiR7ZGltZW5zaW9uc31cbjxzaGVldFZpZXdzPjxzaGVldFZpZXcgdGFiU2VsZWN0ZWQ9XCIxXCIgd29ya2Jvb2tWaWV3SWQ9XCIwXCI+JHtmcmVlemVQYW5lfTwvc2hlZXRWaWV3Pjwvc2hlZXRWaWV3cz5cbjxzaGVldEZvcm1hdFByIGRlZmF1bHRSb3dIZWlnaHQ9XCIxNVwiICR7c091dGxpbmVMZXZlbH0geDE0YWM6ZHlEZXNjZW50PVwiMC4yNVwiLz5cbiR7Y29sc31cbiR7c2hlZXREYXRhfVxuPHBhZ2VNYXJnaW5zIGxlZnQ9XCIwLjdcIiByaWdodD1cIjAuN1wiIHRvcD1cIjAuNzVcIiBib3R0b209XCIwLjc1XCIgaGVhZGVyPVwiMC4zXCIgZm9vdGVyPVwiMC4zXCIvPlxuJHt0YWJsZVBhcnRzfTwvd29ya3NoZWV0PmA7XG5cbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFNoYXJlZFN0cmluZ1hNTChjb3VudDogbnVtYmVyLCB1bmlxdWVDb3VudDogbnVtYmVyLCB0YWJsZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIEV4Y2VsU3RyaW5ncy5YTUxfU1RSSU5HICsgJzxzc3QgeG1sbnM9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvc3ByZWFkc2hlZXRtbC8yMDA2L21haW5cIiBjb3VudD1cIicgKyBjb3VudCArICdcIiB1bmlxdWVDb3VudD1cIicgKyB1bmlxdWVDb3VudCArICdcIj4nICsgdGFibGUgKyAnPC9zc3Q+JztcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldENvbnRlbnRUeXBlc1hNTChoYXNTaGFyZWRTdHJpbmdzOiBib29sZWFuLCBoYXNUYWJsZTogYm9vbGVhbik6IHN0cmluZyB7XG4gICAgICAgIGxldCBjb250ZW50VHlwZXMgPSBFeGNlbFN0cmluZ3MuWE1MX1NUUklORyArXG4gICAgICAgIGA8VHlwZXMgeG1sbnM9XCJodHRwOi8vc2NoZW1hcy5vcGVueG1sZm9ybWF0cy5vcmcvcGFja2FnZS8yMDA2L2NvbnRlbnQtdHlwZXNcXFwiPlxuICAgICAgICAgICAgPERlZmF1bHQgRXh0ZW5zaW9uPVwicmVsc1wiIENvbnRlbnRUeXBlPVwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLXBhY2thZ2UucmVsYXRpb25zaGlwcyt4bWxcIi8+XG4gICAgICAgICAgICA8RGVmYXVsdCBFeHRlbnNpb249XCJ4bWxcIiBDb250ZW50VHlwZT1cImFwcGxpY2F0aW9uL3htbFwiLz5cbiAgICAgICAgICAgIDxPdmVycmlkZSBQYXJ0TmFtZT1cIi94bC93b3JrYm9vay54bWxcIiBDb250ZW50VHlwZT1cImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoZWV0Lm1haW4reG1sXCIvPlxuICAgICAgICAgICAgPE92ZXJyaWRlIFBhcnROYW1lPVwiL3hsL3dvcmtzaGVldHMvc2hlZXQxLnhtbFwiIENvbnRlbnRUeXBlPVwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwud29ya3NoZWV0K3htbFwiLz5cbiAgICAgICAgICAgIDxPdmVycmlkZSBQYXJ0TmFtZT1cIi94bC90aGVtZS90aGVtZTEueG1sXCIgQ29udGVudFR5cGU9XCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQudGhlbWUreG1sXCIvPlxuICAgICAgICAgICAgPE92ZXJyaWRlIFBhcnROYW1lPVwiL3hsL3N0eWxlcy54bWxcIiBDb250ZW50VHlwZT1cImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnN0eWxlcyt4bWxcIi8+XG4gICAgICAgICAgICA8T3ZlcnJpZGUgUGFydE5hbWU9XCIvZG9jUHJvcHMvY29yZS54bWxcIiBDb250ZW50VHlwZT1cImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1wYWNrYWdlLmNvcmUtcHJvcGVydGllcyt4bWxcIi8+XG4gICAgICAgICAgICA8T3ZlcnJpZGUgUGFydE5hbWU9XCIvZG9jUHJvcHMvYXBwLnhtbFwiIENvbnRlbnRUeXBlPVwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LmV4dGVuZGVkLXByb3BlcnRpZXMreG1sXCIvPmA7XG5cbiAgICAgICAgY29udGVudFR5cGVzICs9IGhhc1NoYXJlZFN0cmluZ3MgP1xuICAgICAgICBgXHQ8T3ZlcnJpZGUgUGFydE5hbWU9XCIveGwvc2hhcmVkU3RyaW5ncy54bWxcIiBDb250ZW50VHlwZT1cImFwcGxpY2F0aW9uL3ZuZC5vcGVueG1sZm9ybWF0cy1vZmZpY2Vkb2N1bWVudC5zcHJlYWRzaGVldG1sLnNoYXJlZFN0cmluZ3MreG1sXCIvPmAgOiAnJztcblxuICAgICAgICBjb250ZW50VHlwZXMgKz0gaGFzVGFibGUgP1xuICAgICAgICAgICAgYDxPdmVycmlkZSBQYXJ0TmFtZT1cIi94bC90YWJsZXMvdGFibGUxLnhtbFwiIENvbnRlbnRUeXBlPVwiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwudGFibGUreG1sXCIvPmAgOiAnJztcbiAgICAgICAgY29udGVudFR5cGVzICs9IGA8L1R5cGVzPmA7XG5cbiAgICAgICAgcmV0dXJuIGNvbnRlbnRUeXBlcztcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldFRhYmxlc1hNTChhdXRvRmlsdGVyRGltZW5zaW9uOiBzdHJpbmcsIHRhYmxlRGltZW5zaW9uOiBzdHJpbmcsIHRhYmxlQ29sdW1uczogc3RyaW5nLCBzb3J0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gYCR7RXhjZWxTdHJpbmdzLlhNTF9TVFJJTkd9PHRhYmxlIHhtbG5zPVwiaHR0cDovL3NjaGVtYXMub3BlbnhtbGZvcm1hdHMub3JnL3NwcmVhZHNoZWV0bWwvMjAwNi9tYWluXCIgaWQ9XCIxXCIgbmFtZT1cIlRhYmxlMVwiIGRpc3BsYXlOYW1lPVwiVGFibGUxXCIgcmVmPVwiJHt0YWJsZURpbWVuc2lvbn1cIiB0b3RhbHNSb3dTaG93bj1cIjBcIj5cbiAgICA8YXV0b0ZpbHRlciByZWY9XCIke2F1dG9GaWx0ZXJEaW1lbnNpb259XCIvPiR7c29ydH0ke3RhYmxlQ29sdW1uc308dGFibGVTdHlsZUluZm8gbmFtZT1cIlRhYmxlU3R5bGVNZWRpdW0yXCIgc2hvd0ZpcnN0Q29sdW1uPVwiMFwiIHNob3dMYXN0Q29sdW1uPVwiMFwiIHNob3dSb3dTdHJpcGVzPVwiMVwiIHNob3dDb2x1bW5TdHJpcGVzPVwiMFwiLz5cbjwvdGFibGU+YDtcbiAgICB9XG4gICAgLyogZXNsaW50LWVuYWJsZSAgbWF4LWxlbiAqL1xuXG4gICAgcHVibGljIHN0YXRpYyBnZXRFeGNlbENvbHVtbihpbmRleDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAgICAgLy8gUmV0dXJucyB0aGUgZXhjZWwgY29sdW1uIG5hbWUgZm9yIGdpdmVuIDAtYmFzZWQgaW5kZXhcbiAgICAgICAgLy8gRm9yIGV4YW1wbGUgMjcgc2hvdWxkIHJldHVybiBcIkFCXCJcbiAgICAgICAgbGV0IHJldHVyblN0cmluZyA9ICcnO1xuICAgICAgICB3aGlsZSAoaW5kZXggPj0gMCkge1xuICAgICAgICAgICAgY29uc3QgY2hhciA9IGluZGV4ICUgMjY7XG4gICAgICAgICAgICByZXR1cm5TdHJpbmcgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDY1ICsgY2hhcikgKyByZXR1cm5TdHJpbmc7XG4gICAgICAgICAgICBpbmRleCA9IE1hdGguZmxvb3IoaW5kZXggLyAyNikgLSAxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXR1cm5TdHJpbmc7XG4gICAgfVxufVxuIl19
|