@po-ui/ng-components 17.26.3 → 17.26.4

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.
Files changed (26) hide show
  1. package/esm2022/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.mjs +1 -1
  2. package/esm2022/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-fields/po-dynamic-form-fields.component.mjs +5 -5
  3. package/esm2022/lib/components/po-field/po-switch/po-switch.component.mjs +18 -4
  4. package/esm2022/lib/components/po-table/po-table-base.component.mjs +31 -3
  5. package/esm2022/lib/components/po-table/po-table-detail/po-table-detail.component.mjs +43 -37
  6. package/esm2022/lib/components/po-table/po-table-list-manager/po-table-list-manager.component.mjs +5 -5
  7. package/esm2022/lib/components/po-table/po-table.component.mjs +8 -8
  8. package/fesm2022/po-ui-ng-components.mjs +102 -53
  9. package/fesm2022/po-ui-ng-components.mjs.map +1 -1
  10. package/lib/components/po-dynamic/po-dynamic-form/po-dynamic-form-field.interface.d.ts +2 -0
  11. package/lib/components/po-field/po-switch/po-switch.component.d.ts +13 -1
  12. package/lib/components/po-table/po-table-base.component.d.ts +2 -1
  13. package/lib/components/po-table/po-table-detail/po-table-detail.component.d.ts +6 -1
  14. package/package.json +4 -4
  15. package/po-ui-ng-components-17.26.4.tgz +0 -0
  16. package/schematics/ng-add/index.js +1 -1
  17. package/schematics/ng-update/v14/index.js +1 -1
  18. package/schematics/ng-update/v15/index.js +1 -1
  19. package/schematics/ng-update/v16/index.js +1 -1
  20. package/schematics/ng-update/v17/index.js +1 -1
  21. package/schematics/ng-update/v2/index.js +1 -1
  22. package/schematics/ng-update/v3/index.js +1 -1
  23. package/schematics/ng-update/v4/index.js +1 -1
  24. package/schematics/ng-update/v5/index.js +1 -1
  25. package/schematics/ng-update/v6/index.js +1 -1
  26. package/po-ui-ng-components-17.26.3.tgz +0 -0
@@ -125,6 +125,17 @@ export class PoSwitchComponent extends PoFieldModel {
125
125
  get formatModel() {
126
126
  return this._formatModel;
127
127
  }
128
+ /**
129
+ * @optional
130
+ *
131
+ * @description
132
+ *
133
+ * Indica se o status do `model` será escondido visualmente ao lado do switch.
134
+ *
135
+ * > Por padrão será atribuído `false`.
136
+ * @default `false`
137
+ */
138
+ hideLabelStatus = false;
128
139
  /**
129
140
  * @optional
130
141
  *
@@ -246,7 +257,7 @@ export class PoSwitchComponent extends PoFieldModel {
246
257
  } if (rf & 2) {
247
258
  let _t;
248
259
  i0.ɵɵqueryRefresh(_t = i0.ɵɵloadQuery()) && (ctx.switchContainer = _t.first);
249
- } }, inputs: { value: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-value", "value", convertToBoolean], formatModel: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-format-model", "formatModel", convertToBoolean], labelPosition: [i0.ɵɵInputFlags.None, "p-label-position", "labelPosition"], labelOff: [i0.ɵɵInputFlags.None, "p-label-off", "labelOff"], labelOn: [i0.ɵɵInputFlags.None, "p-label-on", "labelOn"] }, features: [i0.ɵɵProvidersFeature([
260
+ } }, inputs: { value: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-value", "value", convertToBoolean], formatModel: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-format-model", "formatModel", convertToBoolean], hideLabelStatus: [i0.ɵɵInputFlags.HasDecoratorInputTransform, "p-hide-label-status", "hideLabelStatus", convertToBoolean], labelPosition: [i0.ɵɵInputFlags.None, "p-label-position", "labelPosition"], labelOff: [i0.ɵɵInputFlags.None, "p-label-off", "labelOff"], labelOn: [i0.ɵɵInputFlags.None, "p-label-on", "labelOn"] }, features: [i0.ɵɵProvidersFeature([
250
261
  {
251
262
  provide: NG_VALUE_ACCESSOR,
252
263
  useExisting: forwardRef(() => PoSwitchComponent),
@@ -276,7 +287,7 @@ export class PoSwitchComponent extends PoFieldModel {
276
287
  i0.ɵɵadvance();
277
288
  i0.ɵɵproperty("ngIf", ctx.value === true);
278
289
  i0.ɵɵadvance();
279
- i0.ɵɵproperty("ngIf", ctx.label);
290
+ i0.ɵɵproperty("ngIf", !ctx.hideLabelStatus);
280
291
  i0.ɵɵadvance();
281
292
  i0.ɵɵproperty("p-help", ctx.help)("p-disabled", ctx.disabled);
282
293
  } }, dependencies: [i1.NgIf, i2.PoFieldContainerBottomComponent, i3.PoFieldContainerComponent, i4.PoLabelComponent, i5.PoIconComponent], encapsulation: 2, changeDetection: 0 });
@@ -289,7 +300,7 @@ export class PoSwitchComponent extends PoFieldModel {
289
300
  useExisting: forwardRef(() => PoSwitchComponent),
290
301
  multi: true
291
302
  }
292
- ], template: "<po-field-container [p-disabled]=\"disabled\" [p-id]=\"id\" [p-label]=\"label\">\n <div class=\"po-field-container-content\" [attr.name]=\"name\">\n <div class=\"po-switch\" [attr.data-label-position]=\"getLabelPosition()\">\n <div\n #switchContainer\n class=\"po-switch-container\"\n role=\"switch\"\n [attr.aria-checked]=\"value\"\n [attr.aria-disabled]=\"disabled\"\n [id]=\"id\"\n [tabindex]=\"disabled ? -1 : 0\"\n (blur)=\"onBlur()\"\n (click)=\"eventClick()\"\n (keydown)=\"onKeyDown($event)\"\n >\n <div class=\"po-switch-track\">\n <div class=\"po-switch-toggle\" [attr.aria-label]=\"value === true ? labelOn : labelOff\">\n <po-icon *ngIf=\"value === true\" class=\"po-switch-icon\" p-icon=\"ICON_OK\"></po-icon>\n </div>\n </div>\n </div>\n\n <po-label\n *ngIf=\"label\"\n class=\"po-switch-label\"\n [p-disabled]=\"disabled\"\n [p-label]=\"value === true ? labelOn : labelOff\"\n (click)=\"eventClick()\"\n >\n </po-label>\n </div>\n </div>\n\n <po-field-container-bottom [p-help]=\"help\" [p-disabled]=\"disabled\"></po-field-container-bottom>\n</po-field-container>\n" }]
303
+ ], template: "<po-field-container [p-disabled]=\"disabled\" [p-id]=\"id\" [p-label]=\"label\">\n <div class=\"po-field-container-content\" [attr.name]=\"name\">\n <div class=\"po-switch\" [attr.data-label-position]=\"getLabelPosition()\">\n <div\n #switchContainer\n class=\"po-switch-container\"\n role=\"switch\"\n [attr.aria-checked]=\"value\"\n [attr.aria-disabled]=\"disabled\"\n [id]=\"id\"\n [tabindex]=\"disabled ? -1 : 0\"\n (blur)=\"onBlur()\"\n (click)=\"eventClick()\"\n (keydown)=\"onKeyDown($event)\"\n >\n <div class=\"po-switch-track\">\n <div class=\"po-switch-toggle\" [attr.aria-label]=\"value === true ? labelOn : labelOff\">\n <po-icon *ngIf=\"value === true\" class=\"po-switch-icon\" p-icon=\"ICON_OK\"></po-icon>\n </div>\n </div>\n </div>\n\n <po-label\n *ngIf=\"!hideLabelStatus\"\n class=\"po-switch-label\"\n [p-disabled]=\"disabled\"\n [p-label]=\"value === true ? labelOn : labelOff\"\n (click)=\"eventClick()\"\n >\n </po-label>\n </div>\n </div>\n\n <po-field-container-bottom [p-help]=\"help\" [p-disabled]=\"disabled\"></po-field-container-bottom>\n</po-field-container>\n" }]
293
304
  }], () => [{ type: i0.ChangeDetectorRef }], { switchContainer: [{
294
305
  type: ViewChild,
295
306
  args: ['switchContainer', { static: true }]
@@ -299,6 +310,9 @@ export class PoSwitchComponent extends PoFieldModel {
299
310
  }], formatModel: [{
300
311
  type: Input,
301
312
  args: [{ alias: 'p-format-model', transform: convertToBoolean }]
313
+ }], hideLabelStatus: [{
314
+ type: Input,
315
+ args: [{ alias: 'p-hide-label-status', transform: convertToBoolean }]
302
316
  }], labelPosition: [{
303
317
  type: Input,
304
318
  args: ['p-label-position']
@@ -310,4 +324,4 @@ export class PoSwitchComponent extends PoFieldModel {
310
324
  args: ['p-label-on']
311
325
  }] }); })();
312
326
  (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PoSwitchComponent, { className: "PoSwitchComponent", filePath: "lib/components/po-field/po-switch/po-switch.component.ts", lineNumber: 105 }); })();
313
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc3dpdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1zd2l0Y2gvcG8tc3dpdGNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1zd2l0Y2gvcG8tc3dpdGNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFVBQVUsRUFDVixLQUFLLEVBQ0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7SUNFNUQsOEJBQWtGOzs7O0lBS3hGLG9DQU1DO0lBREMscUtBQVMsZUFBQSxtQkFBWSxDQUFBLElBQUM7SUFFeEIsaUJBQVc7OztJQUpULDRDQUF1QixxRUFBQTs7QURSL0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEVHO0FBYUgsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFlBQWlCO0lBNEVsQztJQTNFNEIsZUFBZSxDQUFhO0lBRTVFLEVBQUUsR0FBRyxhQUFhLElBQUksRUFBRSxHQUFHLENBQUM7SUFFNUIsb0NBQW9D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OztZQWxDRCx5Q0FBdUIsZ0JBQUEsc0JBQUE7WUFDRCxjQUFrQjtZQUFsQixnQ0FBa0I7WUFDakMsY0FBK0M7WUFBL0MsNkRBQStDO1lBT2xFLGNBQVM7WUFBVCwyQkFBUyxtQ0FBQTtZQUZULHlDQUEyQiwrQkFBQTtZQVNLLGVBQXVEO1lBQXZELDZFQUF1RDtZQUN6RSxjQUFvQjtZQUFwQix5Q0FBb0I7WUFNakMsY0FBVztZQUFYLGdDQUFXO1lBVVMsY0FBZTtZQUFmLGlDQUFlLDRCQUFBOzs7aUZEdUUvQixpQkFBaUI7Y0FaN0IsU0FBUzsyQkFDRSxXQUFXLG1CQUVKLHVCQUF1QixDQUFDLE1BQU0sYUFDcEM7b0JBQ1Q7d0JBQ0UsT0FBTyxFQUFFLGlCQUFpQjt3QkFDMUIsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLEVBQUUsa0JBQWtCLENBQUM7d0JBQ2hELEtBQUssRUFBRSxJQUFJO3FCQUNaO2lCQUNGO2tEQUcrQyxlQUFlO2tCQUE5RCxTQUFTO21CQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtZQUtZLEtBQUs7a0JBQTlELEtBQUs7bUJBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQW1CcEQsV0FBVztrQkFEZCxLQUFLO21CQUFDLEVBQUUsS0FBSyxFQUFFLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtZQWtCaEMsYUFBYTtrQkFBM0MsS0FBSzttQkFBQyxrQkFBa0I7WUFhQyxRQUFRO2tCQUFqQyxLQUFLO21CQUFDLGFBQWE7WUFhSyxPQUFPO2tCQUEvQixLQUFLO21CQUFDLFlBQVk7O2tGQXBFUixpQkFBaUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgZm9yd2FyZFJlZixcbiAgSW5wdXQsXG4gIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuXG5pbXBvcnQgeyBjb252ZXJ0VG9Cb29sZWFuLCB1dWlkIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXRpbCc7XG5cbmltcG9ydCB7IFBvRmllbGRNb2RlbCB9IGZyb20gJy4uL3BvLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IFBvS2V5Q29kZUVudW0gfSBmcm9tICcuLy4uLy4uLy4uL2VudW1zL3BvLWtleS1jb2RlLmVudW0nO1xuaW1wb3J0IHsgUG9Td2l0Y2hMYWJlbFBvc2l0aW9uIH0gZnJvbSAnLi9wby1zd2l0Y2gtbGFiZWwtcG9zaXRpb24uZW51bSc7XG5cbi8qKlxuICogQGRvY3NFeHRlbmRzIFBvRmllbGRNb2RlbFxuICpcbiAqIEBkZXNjcmlwdGlvblxuICpcbiAqIE8gY29tcG9uZW50ZSBgcG8tc3dpdGNoYCDDqSB1bSBbY2hlY2tib3hdKC9kb2N1bWVudGF0aW9uL3BvLWNoZWNrYm94LWdyb3VwKSBtYWlzIGludHVpdGl2bywgcG9pcyBmYXogYW5hbG9naWEgYSB1bSBpbnRlcnJ1cHRvci5cbiAqIERldmUgc2VyIHVzYWRvIHF1YW5kbyBkZXNlamEtc2UgdHJhbnNtaXRpciBhIGlkZWlhIGRlIGxpZ2FyIC8gZGVzbGlnYXIgdW1hIGZ1bmNpb25hbGlkYWRlIGVzcGVjw61maWNhLlxuICpcbiAqIFBvZGUtc2UgbGlnYXIgb3UgZGVzbGlnYXIgbyBzd2l0Y2ggdXRpbGl6YW5kbyBhIHRlY2xhIGRlIGVzcGHDp28gb3UgbyBjbGlxdWUgZG8gbW91c2UuXG4gKlxuICogTyB0ZXh0byBleGliaWRvIHBvZGUgc2VyIGFsdGVyYWRvIGRlIGFjb3JkbyBjb20gbyB2YWxvciBzZXRhZG8gYXVtZW50YW5kbyBhcyBwb3NzaWJpbGlkYWRlcyBkZSB1c28gZG8gY29tcG9uZW50ZSxcbiAqIHBvcnRhbnRvLCByZWNvbWVuZGEtc2UgaW5mb3JtYXIgdGV4dG9zIHF1ZSBjb250ZXh0dWFsaXplbSBzZXUgdXNvIHBhcmEgcXVlIGZhY2lsaXRlIGEgY29tcHJlZW5zw6NvIGRvIHVzdcOhcmlvLlxuICpcbiAqID4gTyBjb21wb25lbnRlIG7Do28gYWx0ZXJhIG8gdmFsb3IgaW5jaWFsIGluZm9ybWFkbyBubyAqbW9kZWwqLCBwb3J0YW50byBpbmRpY2Etc2UgaW5pY2lhbGl6YS1sbyBjYXNvIHRlciBuZWNlc3NpZGFkZS5cbiAqXG4gKiAjIyMjIEJvYXMgcHLDoXRpY2FzXG4gKlxuICogLSBFdml0ZSBgbGFiZWxzYCBleHRlbnNvcyBxdWUgcXVlYnJhbSBvIGxheW91dCBkbyBgcG8tc3dpdGNoYCwgdXNlIGBsYWJlbHNgIGRpcmV0b3MsIGN1cnRvcyBlIGludHVpdGl2b3MuXG4gKlxuICogIyMjIyBBY2Vzc2liaWxpZGFkZSB0cmF0YWRhIG5vIGNvbXBvbmVudGVcbiAqXG4gKiBBbGd1bWFzIGRpcmV0cml6ZXMgZGUgYWNlc3NpYmlsaWRhZGUgasOhIHPDo28gdHJhdGFkYXMgbm8gY29tcG9uZW50ZSwgaW50ZXJuYW1lbnRlLCBlIG7Do28gcG9kZW0gc2VyIGFsdGVyYWRhcyBwZWxvIHByb3ByaWV0w6FyaW8gZG8gY29udGXDumRvLiBTw6NvIGVsYXM6XG4gKlxuICogLSBRdWFuZG8gZW0gZm9jbywgbyBzd2l0Y2ggw6kgYXRpdmFkbyB1c2FuZG8gYSB0ZWNsYSBkZSBFc3Bhw6dvLiBbVzNDIFdBSS1BUklBIDMuNSBTd2l0Y2ggLSBLZXlib2FyZCBJbnRlcmFjdGlvbl0oaHR0cHM6Ly93d3cudzMub3JnL1dBSS9BUklBL2FwZy9wYXR0ZXJucy9zd2l0Y2gvI2tleWJvYXJkLWludGVyYWN0aW9uLTE5KVxuICogLSBBIMOhcmVhIGRvIGZvY28gcHJlY2lzYXIgdGVyIHVtYSBlc3Blc3N1cmEgZGUgcGVsbyBtZW5vcyAyIHBpeGVscyBDU1MgZSBvIGZvY28gbsOjbyBwb2RlIGZpY2FyIGVzY29uZGlkbyBwb3Igb3V0cm9zIGVsZW1lbnRvcyBkYSB0ZWxhLiBbV0NBRyAyLjQuMTI6IEZvY3VzIEFwcGVhcmFuY2VdKGh0dHBzOi8vd3d3LnczLm9yZy9XQUkvV0NBRzIyL1VuZGVyc3RhbmRpbmcvZm9jdXMtYXBwZWFyYW5jZS1lbmhhbmNlZClcbiAqXG4gKiAjIyMjIFRva2VucyBjdXN0b21pesOhdmVpc1xuICpcbiAqIMOJIHBvc3PDrXZlbCBhbHRlcmFyIG8gZXN0aWxvIGRvIGNvbXBvbmVudGUgdXNhbmRvIG9zIHNlZ3VpbnRlcyB0b2tlbnMgKENTUyk6XG4gKlxuICogPiBQYXJhIG1haW9yZXMgaW5mb3JtYcOnw7VlcywgYWNlc3NlIG8gZ3VpYSBbUGVyc29uYWxpemFuZG8gbyBUZW1hIFBhZHLDo28gY29tIFRva2VucyBDU1NdKGh0dHBzOi8vcG8tdWkuaW8vZ3VpZGVzL3RoZW1lLWN1c3RvbWl6YXRpb24pLlxuICpcbiAqIHwgUHJvcHJpZWRhZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBEZXNjcmnDp8OjbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgVmFsb3IgUGFkcsOjbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXxcbiAqIHwgKipVbmNoZWNrZWQqKiAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItdW5jaGVja2VkYCAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIG5vIGVzdGFkbyBkZXNtYXJjYWRvICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWxpZ2h0LTAwKWAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tYm9yZGVyLWNvbG9yYCAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgZGEgYm9yZGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWRhcmstNzApYCAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tdHJhY2stdW5jaGVja2VkYCAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIGRhIGZhaXhhIG5vIGVzdGFkbyBkZXNtYXJjYWRvICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWxpZ2h0LTIwKWAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipDaGVja2VkKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItY2hlY2tlZGAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIG5vIGVzdGFkbyBzZWxlY2lvbmFkbyAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1hY3Rpb24tZGVmYXVsdClgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tdHJhY2stY2hlY2tlZGAgICAgICAgICAgICAgICAgICAgICAgfCBDb3IgZGEgZmFpeGEgbm8gZXN0YWRvIHNlbGVjaW9uYWRvICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1icmFuZC0wMS1saWdodClgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipIb3ZlcioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItdW5jaGVja2VkLWhvdmVyYCAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIG5vIGVzdGFkbyBob3ZlciBkZXNtYXJjYWRvICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1hY3Rpb24tcHJlc3NlZClgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItY2hlY2tlZC1ob3ZlcmAgICAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIG5vIGVzdGFkbyBob3ZlciBtYXJjYWRvICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1hY3Rpb24tcHJlc3NlZClgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipGb2N1c2VkKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tb3V0bGluZS1jb2xvci1mb2N1c2VkYCAgICAgICAgICAgICAgfCBDb3IgZG8gb3V0bGluZSBkbyBlc3RhZG8gZGUgZm9jdXMgICAgICAgICAgICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1hY3Rpb24tZm9jdXMpYCAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgKipEaXNhYmxlZCoqICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItdW5jaGVja2VkLWRpc2FibGVkYCAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIGRvIGRpc2FibGVkIG5vIGVzdGFkbyBkZXNtYXJjYWRvICAgICAgICB8IGB2YXIoLS1jb2xvci1uZXV0cmFsLWxpZ2h0LTIwKWAgICAgICAgICAgICAgICAgIHxcbiAqIHwgYC0tY29sb3ItY2hlY2tlZC1kaXNhYmxlZGAgICAgICAgICAgICAgfCBDb3IgcHJpbmNpcGFsIGRvIGRpc2FibGVkIG5vIGVzdGFkbyBtYXJjYWRvICAgICAgICAgICB8IGB2YXIoLS1jb2xvci1hY3Rpb24tZGlzYWJsZWQpYCAgICAgICAgICAgICAgICAgIHxcbiAqXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tc3dpdGNoLWJhc2ljXCIgdGl0bGU9XCJQTyBTd2l0Y2ggQmFzaWNcIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zd2l0Y2gtYmFzaWMvc2FtcGxlLXBvLXN3aXRjaC1iYXNpYy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc3dpdGNoLWJhc2ljL3NhbXBsZS1wby1zd2l0Y2gtYmFzaWMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tc3dpdGNoLWxhYnNcIiB0aXRsZT1cIlBPIFN3aXRjaCBMYWJzXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc3dpdGNoLWxhYnMvc2FtcGxlLXBvLXN3aXRjaC1sYWJzLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zd2l0Y2gtbGFicy9zYW1wbGUtcG8tc3dpdGNoLWxhYnMuY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zd2l0Y2gtbGFicy9zYW1wbGUtcG8tc3dpdGNoLWxhYnMuY29tcG9uZW50LmUyZS1zcGVjLnRzXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zd2l0Y2gtbGFicy9zYW1wbGUtcG8tc3dpdGNoLWxhYnMuY29tcG9uZW50LnBvLnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqXG4gKiA8ZXhhbXBsZSBuYW1lPVwicG8tc3dpdGNoLW9yZGVyXCIgdGl0bGU9XCJQTyBTd2l0Y2ggLSBPcmRlciBTdW1tYXJ5XCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc3dpdGNoLW9yZGVyL3NhbXBsZS1wby1zd2l0Y2gtb3JkZXIuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXN3aXRjaC1vcmRlci9zYW1wbGUtcG8tc3dpdGNoLW9yZGVyLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXN3aXRjaC1vcmRlci1yZWFjdGl2ZS1mb3JtXCIgdGl0bGU9XCJQTyBTd2l0Y2ggLSBPcmRlciBTdW1tYXJ5IFJlYWN0aXZlIEZvcm1cIj5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zd2l0Y2gtb3JkZXItcmVhY3RpdmUtZm9ybS9zYW1wbGUtcG8tc3dpdGNoLW9yZGVyLXJlYWN0aXZlLWZvcm0uY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXN3aXRjaC1vcmRlci1yZWFjdGl2ZS1mb3JtL3NhbXBsZS1wby1zd2l0Y2gtb3JkZXItcmVhY3RpdmUtZm9ybS5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdwby1zd2l0Y2gnLFxuICB0ZW1wbGF0ZVVybDogJy4vcG8tc3dpdGNoLmNvbXBvbmVudC5odG1sJyxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW1xuICAgIHtcbiAgICAgIHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLFxuICAgICAgdXNlRXhpc3Rpbmc6IGZvcndhcmRSZWYoKCkgPT4gUG9Td2l0Y2hDb21wb25lbnQpLFxuICAgICAgbXVsdGk6IHRydWVcbiAgICB9XG4gIF1cbn0pXG5leHBvcnQgY2xhc3MgUG9Td2l0Y2hDb21wb25lbnQgZXh0ZW5kcyBQb0ZpZWxkTW9kZWw8YW55PiB7XG4gIEBWaWV3Q2hpbGQoJ3N3aXRjaENvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pIHN3aXRjaENvbnRhaW5lcjogRWxlbWVudFJlZjtcblxuICBpZCA9IGBwby1zd2l0Y2hbJHt1dWlkKCl9XWA7XG5cbiAgLy8gUGFyw6JtZXRybyBpbnRlcm5vLCBuw6NvIGRvY3VtZW50YXJcbiAgQElucHV0KHsgYWxpYXM6ICdwLXZhbHVlJywgdHJhbnNmb3JtOiBjb252ZXJ0VG9Cb29sZWFuIH0pIHZhbHVlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHJpdmF0ZSBfbGFiZWxPZmY6IHN0cmluZyA9ICdmYWxzZSc7XG4gIHByaXZhdGUgX2xhYmVsT246IHN0cmluZyA9ICd0cnVlJztcbiAgcHJpdmF0ZSBfbGFiZWxQb3NpdGlvbjogUG9Td2l0Y2hMYWJlbFBvc2l0aW9uID0gUG9Td2l0Y2hMYWJlbFBvc2l0aW9uLlJpZ2h0O1xuICBwcml2YXRlIF9mb3JtYXRNb2RlbDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBzZSBvIGBtb2RlbGAgcmVjZWJlcsOhIG8gdmFsb3IgZm9ybWF0YWRvIHBlbGFzIHByb3ByaWVkYWRlcyBgcC1sYWJlbC1vbmAgZSBgcC1sYWJlbC1vZmZgIG91XG4gICAqIGFwZW5hcyBvIHZhbG9yIHB1cm8gKHNlbSBmb3JtYXRhw6fDo28pLlxuICAgKlxuICAgKiA+IFBvciBwYWRyw6NvIHNlcsOhIGF0cmlidcOtZG8gYGZhbHNlYC5cbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KHsgYWxpYXM6ICdwLWZvcm1hdC1tb2RlbCcsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KVxuICBzZXQgZm9ybWF0TW9kZWwoZm9ybWF0OiBib29sZWFuKSB7XG4gICAgdGhpcy5fZm9ybWF0TW9kZWwgPSBmb3JtYXQgfHwgZmFsc2U7XG4gIH1cblxuICBnZXQgZm9ybWF0TW9kZWwoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2Zvcm1hdE1vZGVsO1xuICB9XG5cbiAgLyoqXG4gICAqIEBvcHRpb25hbFxuICAgKlxuICAgKiBAZGVzY3JpcHRpb25cbiAgICpcbiAgICogUG9zacOnw6NvIGRlIGV4aWJpw6fDo28gZG8gcsOzdHVsbyBxdWUgZmljYSBhbyBsYWRvIGRvIHN3aXRjaC5cbiAgICpcbiAgICogPiBQb3IgcGFkcsOjbyBleGliZSDDoCBkaXJlaXRhLlxuICAgKi9cbiAgQElucHV0KCdwLWxhYmVsLXBvc2l0aW9uJykgc2V0IGxhYmVsUG9zaXRpb24ocG9zaXRpb246IFBvU3dpdGNoTGFiZWxQb3NpdGlvbikge1xuICAgIHRoaXMuX2xhYmVsUG9zaXRpb24gPSBwb3NpdGlvbiBpbiBQb1N3aXRjaExhYmVsUG9zaXRpb24gPyBwYXJzZUludCg8YW55PnBvc2l0aW9uLCAxMCkgOiBQb1N3aXRjaExhYmVsUG9zaXRpb24uUmlnaHQ7XG4gIH1cblxuICBnZXQgbGFiZWxQb3NpdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy5fbGFiZWxQb3NpdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUZXh0byBleGliaWRvIHF1YW5kbyBvIHZhbG9yIGRvIGNvbXBvbmVudGUgZm9yIGBmYWxzZWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCgncC1sYWJlbC1vZmYnKSBzZXQgbGFiZWxPZmYobGFiZWw6IHN0cmluZykge1xuICAgIHRoaXMuX2xhYmVsT2ZmID0gbGFiZWwgfHwgJ2ZhbHNlJztcbiAgfVxuXG4gIGdldCBsYWJlbE9mZigpIHtcbiAgICByZXR1cm4gdGhpcy5fbGFiZWxPZmY7XG4gIH1cblxuICAvKipcbiAgICogVGV4dG8gZXhpYmlkbyBxdWFuZG8gbyB2YWxvciBkbyBjb21wb25lbnRlIGZvciBgdHJ1ZWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IGB0cnVlYFxuICAgKi9cbiAgQElucHV0KCdwLWxhYmVsLW9uJykgc2V0IGxhYmVsT24obGFiZWw6IHN0cmluZykge1xuICAgIHRoaXMuX2xhYmVsT24gPSBsYWJlbCB8fCAndHJ1ZSc7XG4gIH1cblxuICBnZXQgbGFiZWxPbigpIHtcbiAgICByZXR1cm4gdGhpcy5fbGFiZWxPbjtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGdW7Dp8OjbyBxdWUgYXRyaWJ1aSBmb2NvIGFvIGNvbXBvbmVudGUuXG4gICAqXG4gICAqIFBhcmEgdXRpbGl6w6EtbGEgw6kgbmVjZXNzw6FyaW8gdGVyIGEgaW5zdMOibmNpYSBkbyBjb21wb25lbnRlIG5vIERPTSwgcG9kZW5kbyBzZXIgdXRpbGl6YWRvIG8gVmlld0NoaWxkIGRhIHNlZ3VpbnRlIGZvcm1hOlxuICAgKlxuICAgKiBgYGBcbiAgICogaW1wb3J0IHsgUG9Td2l0Y2hDb21wb25lbnQgfSBmcm9tICdAcG8tdWkvbmctY29tcG9uZW50cyc7XG4gICAqXG4gICAqIC4uLlxuICAgKlxuICAgKiBAVmlld0NoaWxkKFBvU3dpdGNoQ29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KSBzd2l0Y2g6IFBvU3dpdGNoQ29tcG9uZW50O1xuICAgKlxuICAgKiBmb2N1c1N3aXRjaCgpIHtcbiAgICogICB0aGlzLnN3aXRjaC5mb2N1cygpO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgZm9jdXMoKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLnN3aXRjaENvbnRhaW5lci5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgb25CbHVyKCkge1xuICAgIHRoaXMub25Ub3VjaGVkPy4oKTtcbiAgfVxuXG4gIGdldExhYmVsUG9zaXRpb24oKSB7XG4gICAgc3dpdGNoICh0aGlzLmxhYmVsUG9zaXRpb24pIHtcbiAgICAgIGNhc2UgUG9Td2l0Y2hMYWJlbFBvc2l0aW9uLkxlZnQ6XG4gICAgICAgIHJldHVybiAnbGVmdCc7XG4gICAgICBjYXNlIFBvU3dpdGNoTGFiZWxQb3NpdGlvbi5SaWdodDpcbiAgICAgICAgcmV0dXJuICdyaWdodCc7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3JpZ2h0JztcbiAgICB9XG4gIH1cblxuICBvbktleURvd24oZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQud2hpY2ggPT09IFBvS2V5Q29kZUVudW0uc3BhY2UgfHwgZXZlbnQua2V5Q29kZSA9PT0gUG9LZXlDb2RlRW51bS5zcGFjZSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHRoaXMuZXZlbnRDbGljaygpO1xuICAgIH1cbiAgfVxuXG4gIGNoYW5nZVZhbHVlKHZhbHVlOiBhbnkpIHtcbiAgICBpZiAodGhpcy52YWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZTtcbiAgICAgIGlmICh0aGlzLmZvcm1hdE1vZGVsKSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlKSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVNb2RlbCh0aGlzLmxhYmVsT24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudXBkYXRlTW9kZWwodGhpcy5sYWJlbE9mZik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudXBkYXRlTW9kZWwodmFsdWUpO1xuICAgICAgfVxuICAgICAgdGhpcy5lbWl0Q2hhbmdlKHRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIGV2ZW50Q2xpY2soKSB7XG4gICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICB0aGlzLmNoYW5nZVZhbHVlKCF0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBvbldyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmICh2YWx1ZSAhPT0gdGhpcy52YWx1ZSkge1xuICAgICAgaWYgKHRoaXMuZm9ybWF0TW9kZWwgJiYgISF2YWx1ZSkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gdGhpcy5sYWJlbE9uLnRvTG93ZXJDYXNlKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhbHVlID0gISF2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG59XG4iLCI8cG8tZmllbGQtY29udGFpbmVyIFtwLWRpc2FibGVkXT1cImRpc2FibGVkXCIgW3AtaWRdPVwiaWRcIiBbcC1sYWJlbF09XCJsYWJlbFwiPlxuICA8ZGl2IGNsYXNzPVwicG8tZmllbGQtY29udGFpbmVyLWNvbnRlbnRcIiBbYXR0ci5uYW1lXT1cIm5hbWVcIj5cbiAgICA8ZGl2IGNsYXNzPVwicG8tc3dpdGNoXCIgW2F0dHIuZGF0YS1sYWJlbC1wb3NpdGlvbl09XCJnZXRMYWJlbFBvc2l0aW9uKClcIj5cbiAgICAgIDxkaXZcbiAgICAgICAgI3N3aXRjaENvbnRhaW5lclxuICAgICAgICBjbGFzcz1cInBvLXN3aXRjaC1jb250YWluZXJcIlxuICAgICAgICByb2xlPVwic3dpdGNoXCJcbiAgICAgICAgW2F0dHIuYXJpYS1jaGVja2VkXT1cInZhbHVlXCJcbiAgICAgICAgW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgIFtpZF09XCJpZFwiXG4gICAgICAgIFt0YWJpbmRleF09XCJkaXNhYmxlZCA/IC0xIDogMFwiXG4gICAgICAgIChibHVyKT1cIm9uQmx1cigpXCJcbiAgICAgICAgKGNsaWNrKT1cImV2ZW50Q2xpY2soKVwiXG4gICAgICAgIChrZXlkb3duKT1cIm9uS2V5RG93bigkZXZlbnQpXCJcbiAgICAgID5cbiAgICAgICAgPGRpdiBjbGFzcz1cInBvLXN3aXRjaC10cmFja1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJwby1zd2l0Y2gtdG9nZ2xlXCIgW2F0dHIuYXJpYS1sYWJlbF09XCJ2YWx1ZSA9PT0gdHJ1ZSA/IGxhYmVsT24gOiBsYWJlbE9mZlwiPlxuICAgICAgICAgICAgPHBvLWljb24gKm5nSWY9XCJ2YWx1ZSA9PT0gdHJ1ZVwiIGNsYXNzPVwicG8tc3dpdGNoLWljb25cIiBwLWljb249XCJJQ09OX09LXCI+PC9wby1pY29uPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8cG8tbGFiZWxcbiAgICAgICAgKm5nSWY9XCJsYWJlbFwiXG4gICAgICAgIGNsYXNzPVwicG8tc3dpdGNoLWxhYmVsXCJcbiAgICAgICAgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIlxuICAgICAgICBbcC1sYWJlbF09XCJ2YWx1ZSA9PT0gdHJ1ZSA/IGxhYmVsT24gOiBsYWJlbE9mZlwiXG4gICAgICAgIChjbGljayk9XCJldmVudENsaWNrKClcIlxuICAgICAgPlxuICAgICAgPC9wby1sYWJlbD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPHBvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20gW3AtaGVscF09XCJoZWxwXCIgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIj48L3BvLWZpZWxkLWNvbnRhaW5lci1ib3R0b20+XG48L3BvLWZpZWxkLWNvbnRhaW5lcj5cbiJdfQ==
327
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicG8tc3dpdGNoLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1zd2l0Y2gvcG8tc3dpdGNoLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3VpL3NyYy9saWIvY29tcG9uZW50cy9wby1maWVsZC9wby1zd2l0Y2gvcG8tc3dpdGNoLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCx1QkFBdUIsRUFFdkIsU0FBUyxFQUVULFVBQVUsRUFDVixLQUFLLEVBQ0wsU0FBUyxFQUNWLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRW5ELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUU3RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDOzs7Ozs7Ozs7SUNFNUQsOEJBQWtGOzs7O0lBS3hGLG9DQU1DO0lBREMscUtBQVMsZUFBQSxtQkFBWSxDQUFBLElBQUM7SUFFeEIsaUJBQVc7OztJQUpULDRDQUF1QixxRUFBQTs7QURSL0I7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMEVHO0FBYUgsTUFBTSxPQUFPLGlCQUFrQixTQUFRLFlBQWlCO0lBd0ZsQztJQXZGNEIsZUFBZSxDQUFhO0lBRTVFLEVBQUUsR0FBRyxhQUFhLElBQUksRUFBRSxHQUFHLENBQUM7SUFFNUIsb0NBQW9DO0lBQ3NCLEtBQUssR0FBWSxLQUFLLENBQUM7SUFFekUsU0FBUyxHQUFXLE9BQU8sQ0FBQztJQUM1QixRQUFRLEdBQVcsTUFBTSxDQUFDO0lBQzFCLGNBQWMsR0FBMEIscUJBQXFCLENBQUMsS0FBSyxDQUFDO0lBQ3BFLFlBQVksR0FBWSxLQUFLLENBQUM7SUFFdEM7Ozs7Ozs7Ozs7T0FVRztJQUNILElBQ0ksV0FBVyxDQUFDLE1BQWU7UUFDN0IsSUFBSSxDQUFDLFlBQVksR0FBRyxNQUFNLElBQUksS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNtRSxlQUFlLEdBQVksS0FBSyxDQUFDO0lBRXZHOzs7Ozs7OztPQVFHO0lBQ0gsSUFBK0IsYUFBYSxDQUFDLFFBQStCO1FBQzFFLElBQUksQ0FBQyxjQUFjLEdBQUcsUUFBUSxJQUFJLHFCQUFxQixDQUFDLENBQUMsQ0FBQyxRQUFRLENBQU0sUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUM7SUFDdEgsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILElBQTBCLFFBQVEsQ0FBQyxLQUFhO1FBQzlDLElBQUksQ0FBQyxTQUFTLEdBQUcsS0FBSyxJQUFJLE9BQU8sQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ3hCLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsSUFBeUIsT0FBTyxDQUFDLEtBQWE7UUFDNUMsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLElBQUksTUFBTSxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVELFlBQW9CLGNBQWlDO1FBQ25ELEtBQUssRUFBRSxDQUFDO1FBRFUsbUJBQWMsR0FBZCxjQUFjLENBQW1CO0lBRXJELENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7OztPQWdCRztJQUNILEtBQUs7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsZUFBZSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztTQUM1QztJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUM7SUFDckIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLFFBQVEsSUFBSSxDQUFDLGFBQWEsRUFBRTtZQUMxQixLQUFLLHFCQUFxQixDQUFDLElBQUk7Z0JBQzdCLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLEtBQUsscUJBQXFCLENBQUMsS0FBSztnQkFDOUIsT0FBTyxPQUFPLENBQUM7WUFDakI7Z0JBQ0UsT0FBTyxPQUFPLENBQUM7U0FDbEI7SUFDSCxDQUFDO0lBRUQsU0FBUyxDQUFDLEtBQUs7UUFDYixJQUFJLEtBQUssQ0FBQyxLQUFLLEtBQUssYUFBYSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsT0FBTyxLQUFLLGFBQWEsQ0FBQyxLQUFLLEVBQUU7WUFDaEYsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztTQUNuQjtJQUNILENBQUM7SUFFRCxXQUFXLENBQUMsS0FBVTtRQUNwQixJQUFJLElBQUksQ0FBQyxLQUFLLEtBQUssS0FBSyxFQUFFO1lBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBQ25CLElBQUksSUFBSSxDQUFDLFdBQVcsRUFBRTtnQkFDcEIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO29CQUNkLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO2lCQUNoQztxQkFBTTtvQkFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztpQkFDakM7YUFDRjtpQkFBTTtnQkFDTCxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3pCO1lBQ0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDN0I7SUFDSCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDL0I7SUFDSCxDQUFDO0lBRUQsWUFBWSxDQUFDLEtBQVU7UUFDckIsSUFBSSxLQUFLLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRTtZQUN4QixJQUFJLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLEtBQUssRUFBRTtnQkFDL0IsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQzthQUNqRTtpQkFBTTtnQkFDTCxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUM7YUFDdEI7WUFDRCxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQzsyRUF4S1UsaUJBQWlCOzZEQUFqQixpQkFBaUI7Ozs7OytGQU1VLGdCQUFnQiw4RkFrQlQsZ0JBQWdCLDJHQW1CWCxnQkFBZ0IseU9BbkR2RDtnQkFDVDtvQkFDRSxPQUFPLEVBQUUsaUJBQWlCO29CQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDLGlCQUFpQixDQUFDO29CQUNoRCxLQUFLLEVBQUUsSUFBSTtpQkFDWjthQUNGO1lDdEdILDZDQUEwRSxhQUFBLGFBQUEsZ0JBQUE7WUFXbEUseUZBQVEsWUFBUSxJQUFDLDhFQUNSLGdCQUFZLElBREosd0ZBRU4scUJBQWlCLElBRlg7WUFJakIsOEJBQTZCLGFBQUE7WUFFekIsMEVBQWtGO1lBQ3BGLGlCQUFNLEVBQUEsRUFBQTtZQUlWLDRFQU9XO1lBQ2IsaUJBQU0sRUFBQTtZQUdSLCtDQUErRjtZQUNqRyxpQkFBcUI7O1lBbENELHlDQUF1QixnQkFBQSxzQkFBQTtZQUNELGNBQWtCO1lBQWxCLGdDQUFrQjtZQUNqQyxjQUErQztZQUEvQyw2REFBK0M7WUFPbEUsY0FBUztZQUFULDJCQUFTLG1DQUFBO1lBRlQseUNBQTJCLCtCQUFBO1lBU0ssZUFBdUQ7WUFBdkQsNkVBQXVEO1lBQ3pFLGNBQW9CO1lBQXBCLHlDQUFvQjtZQU1qQyxjQUFzQjtZQUF0QiwyQ0FBc0I7WUFVRixjQUFlO1lBQWYsaUNBQWUsNEJBQUE7OztpRkR1RS9CLGlCQUFpQjtjQVo3QixTQUFTOzJCQUNFLFdBQVcsbUJBRUosdUJBQXVCLENBQUMsTUFBTSxhQUNwQztvQkFDVDt3QkFDRSxPQUFPLEVBQUUsaUJBQWlCO3dCQUMxQixXQUFXLEVBQUUsVUFBVSxDQUFDLEdBQUcsRUFBRSxrQkFBa0IsQ0FBQzt3QkFDaEQsS0FBSyxFQUFFLElBQUk7cUJBQ1o7aUJBQ0Y7a0RBRytDLGVBQWU7a0JBQTlELFNBQVM7bUJBQUMsaUJBQWlCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO1lBS1ksS0FBSztrQkFBOUQsS0FBSzttQkFBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBbUJwRCxXQUFXO2tCQURkLEtBQUs7bUJBQUMsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBbUJPLGVBQWU7a0JBQXBGLEtBQUs7bUJBQUMsRUFBRSxLQUFLLEVBQUUscUJBQXFCLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO1lBV3JDLGFBQWE7a0JBQTNDLEtBQUs7bUJBQUMsa0JBQWtCO1lBYUMsUUFBUTtrQkFBakMsS0FBSzttQkFBQyxhQUFhO1lBYUssT0FBTztrQkFBL0IsS0FBSzttQkFBQyxZQUFZOztrRkFoRlIsaUJBQWlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIGZvcndhcmRSZWYsXG4gIElucHV0LFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHsgY29udmVydFRvQm9vbGVhbiwgdXVpZCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3V0aWwnO1xuXG5pbXBvcnQgeyBQb0ZpZWxkTW9kZWwgfSBmcm9tICcuLi9wby1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBQb0tleUNvZGVFbnVtIH0gZnJvbSAnLi8uLi8uLi8uLi9lbnVtcy9wby1rZXktY29kZS5lbnVtJztcbmltcG9ydCB7IFBvU3dpdGNoTGFiZWxQb3NpdGlvbiB9IGZyb20gJy4vcG8tc3dpdGNoLWxhYmVsLXBvc2l0aW9uLmVudW0nO1xuXG4vKipcbiAqIEBkb2NzRXh0ZW5kcyBQb0ZpZWxkTW9kZWxcbiAqXG4gKiBAZGVzY3JpcHRpb25cbiAqXG4gKiBPIGNvbXBvbmVudGUgYHBvLXN3aXRjaGAgw6kgdW0gW2NoZWNrYm94XSgvZG9jdW1lbnRhdGlvbi9wby1jaGVja2JveC1ncm91cCkgbWFpcyBpbnR1aXRpdm8sIHBvaXMgZmF6IGFuYWxvZ2lhIGEgdW0gaW50ZXJydXB0b3IuXG4gKiBEZXZlIHNlciB1c2FkbyBxdWFuZG8gZGVzZWphLXNlIHRyYW5zbWl0aXIgYSBpZGVpYSBkZSBsaWdhciAvIGRlc2xpZ2FyIHVtYSBmdW5jaW9uYWxpZGFkZSBlc3BlY8OtZmljYS5cbiAqXG4gKiBQb2RlLXNlIGxpZ2FyIG91IGRlc2xpZ2FyIG8gc3dpdGNoIHV0aWxpemFuZG8gYSB0ZWNsYSBkZSBlc3Bhw6dvIG91IG8gY2xpcXVlIGRvIG1vdXNlLlxuICpcbiAqIE8gdGV4dG8gZXhpYmlkbyBwb2RlIHNlciBhbHRlcmFkbyBkZSBhY29yZG8gY29tIG8gdmFsb3Igc2V0YWRvIGF1bWVudGFuZG8gYXMgcG9zc2liaWxpZGFkZXMgZGUgdXNvIGRvIGNvbXBvbmVudGUsXG4gKiBwb3J0YW50bywgcmVjb21lbmRhLXNlIGluZm9ybWFyIHRleHRvcyBxdWUgY29udGV4dHVhbGl6ZW0gc2V1IHVzbyBwYXJhIHF1ZSBmYWNpbGl0ZSBhIGNvbXByZWVuc8OjbyBkbyB1c3XDoXJpby5cbiAqXG4gKiA+IE8gY29tcG9uZW50ZSBuw6NvIGFsdGVyYSBvIHZhbG9yIGluY2lhbCBpbmZvcm1hZG8gbm8gKm1vZGVsKiwgcG9ydGFudG8gaW5kaWNhLXNlIGluaWNpYWxpemEtbG8gY2FzbyB0ZXIgbmVjZXNzaWRhZGUuXG4gKlxuICogIyMjIyBCb2FzIHByw6F0aWNhc1xuICpcbiAqIC0gRXZpdGUgYGxhYmVsc2AgZXh0ZW5zb3MgcXVlIHF1ZWJyYW0gbyBsYXlvdXQgZG8gYHBvLXN3aXRjaGAsIHVzZSBgbGFiZWxzYCBkaXJldG9zLCBjdXJ0b3MgZSBpbnR1aXRpdm9zLlxuICpcbiAqICMjIyMgQWNlc3NpYmlsaWRhZGUgdHJhdGFkYSBubyBjb21wb25lbnRlXG4gKlxuICogQWxndW1hcyBkaXJldHJpemVzIGRlIGFjZXNzaWJpbGlkYWRlIGrDoSBzw6NvIHRyYXRhZGFzIG5vIGNvbXBvbmVudGUsIGludGVybmFtZW50ZSwgZSBuw6NvIHBvZGVtIHNlciBhbHRlcmFkYXMgcGVsbyBwcm9wcmlldMOhcmlvIGRvIGNvbnRlw7pkby4gU8OjbyBlbGFzOlxuICpcbiAqIC0gUXVhbmRvIGVtIGZvY28sIG8gc3dpdGNoIMOpIGF0aXZhZG8gdXNhbmRvIGEgdGVjbGEgZGUgRXNwYcOnby4gW1czQyBXQUktQVJJQSAzLjUgU3dpdGNoIC0gS2V5Ym9hcmQgSW50ZXJhY3Rpb25dKGh0dHBzOi8vd3d3LnczLm9yZy9XQUkvQVJJQS9hcGcvcGF0dGVybnMvc3dpdGNoLyNrZXlib2FyZC1pbnRlcmFjdGlvbi0xOSlcbiAqIC0gQSDDoXJlYSBkbyBmb2NvIHByZWNpc2FyIHRlciB1bWEgZXNwZXNzdXJhIGRlIHBlbG8gbWVub3MgMiBwaXhlbHMgQ1NTIGUgbyBmb2NvIG7Do28gcG9kZSBmaWNhciBlc2NvbmRpZG8gcG9yIG91dHJvcyBlbGVtZW50b3MgZGEgdGVsYS4gW1dDQUcgMi40LjEyOiBGb2N1cyBBcHBlYXJhbmNlXShodHRwczovL3d3dy53My5vcmcvV0FJL1dDQUcyMi9VbmRlcnN0YW5kaW5nL2ZvY3VzLWFwcGVhcmFuY2UtZW5oYW5jZWQpXG4gKlxuICogIyMjIyBUb2tlbnMgY3VzdG9taXrDoXZlaXNcbiAqXG4gKiDDiSBwb3Nzw612ZWwgYWx0ZXJhciBvIGVzdGlsbyBkbyBjb21wb25lbnRlIHVzYW5kbyBvcyBzZWd1aW50ZXMgdG9rZW5zIChDU1MpOlxuICpcbiAqID4gUGFyYSBtYWlvcmVzIGluZm9ybWHDp8O1ZXMsIGFjZXNzZSBvIGd1aWEgW1BlcnNvbmFsaXphbmRvIG8gVGVtYSBQYWRyw6NvIGNvbSBUb2tlbnMgQ1NTXShodHRwczovL3BvLXVpLmlvL2d1aWRlcy90aGVtZS1jdXN0b21pemF0aW9uKS5cbiAqXG4gKiB8IFByb3ByaWVkYWRlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3Jpw6fDo28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFZhbG9yIFBhZHLDo28gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18XG4gKiB8ICoqVW5jaGVja2VkKiogICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWNvbG9yLXVuY2hlY2tlZGAgICAgICAgICAgICAgICAgICAgIHwgQ29yIHByaW5jaXBhbCBubyBlc3RhZG8gZGVzbWFyY2FkbyAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1saWdodC0wMClgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWJvcmRlci1jb2xvcmAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29yIGRhIGJvcmRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1kYXJrLTcwKWAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLXRyYWNrLXVuY2hlY2tlZGAgICAgICAgICAgICAgICAgICAgIHwgQ29yIHByaW5jaXBhbCBkYSBmYWl4YSBubyBlc3RhZG8gZGVzbWFyY2FkbyAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1saWdodC0yMClgICAgICAgICAgICAgICAgICB8XG4gKiB8ICoqQ2hlY2tlZCoqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWNvbG9yLWNoZWNrZWRgICAgICAgICAgICAgICAgICAgICAgIHwgQ29yIHByaW5jaXBhbCBubyBlc3RhZG8gc2VsZWNpb25hZG8gICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItYWN0aW9uLWRlZmF1bHQpYCAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLXRyYWNrLWNoZWNrZWRgICAgICAgICAgICAgICAgICAgICAgIHwgQ29yIGRhIGZhaXhhIG5vIGVzdGFkbyBzZWxlY2lvbmFkbyAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItYnJhbmQtMDEtbGlnaHQpYCAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICoqSG92ZXIqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWNvbG9yLXVuY2hlY2tlZC1ob3ZlcmAgICAgICAgICAgICAgIHwgQ29yIHByaW5jaXBhbCBubyBlc3RhZG8gaG92ZXIgZGVzbWFyY2FkbyAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItYWN0aW9uLXByZXNzZWQpYCAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWNvbG9yLWNoZWNrZWQtaG92ZXJgICAgICAgICAgICAgICAgIHwgQ29yIHByaW5jaXBhbCBubyBlc3RhZG8gaG92ZXIgbWFyY2FkbyAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItYWN0aW9uLXByZXNzZWQpYCAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICoqRm9jdXNlZCoqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLW91dGxpbmUtY29sb3ItZm9jdXNlZGAgICAgICAgICAgICAgIHwgQ29yIGRvIG91dGxpbmUgZG8gZXN0YWRvIGRlIGZvY3VzICAgICAgICAgICAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItYWN0aW9uLWZvY3VzKWAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8ICoqRGlzYWJsZWQqKiAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWNvbG9yLXVuY2hlY2tlZC1kaXNhYmxlZGAgICAgICAgICAgIHwgQ29yIHByaW5jaXBhbCBkbyBkaXNhYmxlZCBubyBlc3RhZG8gZGVzbWFyY2FkbyAgICAgICAgfCBgdmFyKC0tY29sb3ItbmV1dHJhbC1saWdodC0yMClgICAgICAgICAgICAgICAgICB8XG4gKiB8IGAtLWNvbG9yLWNoZWNrZWQtZGlzYWJsZWRgICAgICAgICAgICAgIHwgQ29yIHByaW5jaXBhbCBkbyBkaXNhYmxlZCBubyBlc3RhZG8gbWFyY2FkbyAgICAgICAgICAgfCBgdmFyKC0tY29sb3ItYWN0aW9uLWRpc2FibGVkKWAgICAgICAgICAgICAgICAgICB8XG4gKlxuICpcbiAqIEBleGFtcGxlXG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXN3aXRjaC1iYXNpY1wiIHRpdGxlPVwiUE8gU3dpdGNoIEJhc2ljXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc3dpdGNoLWJhc2ljL3NhbXBsZS1wby1zd2l0Y2gtYmFzaWMuY29tcG9uZW50Lmh0bWxcIj4gPC9maWxlPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXN3aXRjaC1iYXNpYy9zYW1wbGUtcG8tc3dpdGNoLWJhc2ljLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXN3aXRjaC1sYWJzXCIgdGl0bGU9XCJQTyBTd2l0Y2ggTGFic1wiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXN3aXRjaC1sYWJzL3NhbXBsZS1wby1zd2l0Y2gtbGFicy5jb21wb25lbnQuaHRtbFwiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc3dpdGNoLWxhYnMvc2FtcGxlLXBvLXN3aXRjaC1sYWJzLmNvbXBvbmVudC50c1wiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc3dpdGNoLWxhYnMvc2FtcGxlLXBvLXN3aXRjaC1sYWJzLmNvbXBvbmVudC5lMmUtc3BlYy50c1wiPiA8L2ZpbGU+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc3dpdGNoLWxhYnMvc2FtcGxlLXBvLXN3aXRjaC1sYWJzLmNvbXBvbmVudC5wby50c1wiPiA8L2ZpbGU+XG4gKiA8L2V4YW1wbGU+XG4gKlxuICogPGV4YW1wbGUgbmFtZT1cInBvLXN3aXRjaC1vcmRlclwiIHRpdGxlPVwiUE8gU3dpdGNoIC0gT3JkZXIgU3VtbWFyeVwiPlxuICogICA8ZmlsZSBuYW1lPVwic2FtcGxlLXBvLXN3aXRjaC1vcmRlci9zYW1wbGUtcG8tc3dpdGNoLW9yZGVyLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zd2l0Y2gtb3JkZXIvc2FtcGxlLXBvLXN3aXRjaC1vcmRlci5jb21wb25lbnQudHNcIj4gPC9maWxlPlxuICogPC9leGFtcGxlPlxuICpcbiAqIDxleGFtcGxlIG5hbWU9XCJwby1zd2l0Y2gtb3JkZXItcmVhY3RpdmUtZm9ybVwiIHRpdGxlPVwiUE8gU3dpdGNoIC0gT3JkZXIgU3VtbWFyeSBSZWFjdGl2ZSBGb3JtXCI+XG4gKiAgIDxmaWxlIG5hbWU9XCJzYW1wbGUtcG8tc3dpdGNoLW9yZGVyLXJlYWN0aXZlLWZvcm0vc2FtcGxlLXBvLXN3aXRjaC1vcmRlci1yZWFjdGl2ZS1mb3JtLmNvbXBvbmVudC5odG1sXCI+IDwvZmlsZT5cbiAqICAgPGZpbGUgbmFtZT1cInNhbXBsZS1wby1zd2l0Y2gtb3JkZXItcmVhY3RpdmUtZm9ybS9zYW1wbGUtcG8tc3dpdGNoLW9yZGVyLXJlYWN0aXZlLWZvcm0uY29tcG9uZW50LnRzXCI+IDwvZmlsZT5cbiAqIDwvZXhhbXBsZT5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAncG8tc3dpdGNoJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3BvLXN3aXRjaC5jb21wb25lbnQuaHRtbCcsXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxuICBwcm92aWRlcnM6IFtcbiAgICB7XG4gICAgICBwcm92aWRlOiBOR19WQUxVRV9BQ0NFU1NPUixcbiAgICAgIHVzZUV4aXN0aW5nOiBmb3J3YXJkUmVmKCgpID0+IFBvU3dpdGNoQ29tcG9uZW50KSxcbiAgICAgIG11bHRpOiB0cnVlXG4gICAgfVxuICBdXG59KVxuZXhwb3J0IGNsYXNzIFBvU3dpdGNoQ29tcG9uZW50IGV4dGVuZHMgUG9GaWVsZE1vZGVsPGFueT4ge1xuICBAVmlld0NoaWxkKCdzd2l0Y2hDb250YWluZXInLCB7IHN0YXRpYzogdHJ1ZSB9KSBzd2l0Y2hDb250YWluZXI6IEVsZW1lbnRSZWY7XG5cbiAgaWQgPSBgcG8tc3dpdGNoWyR7dXVpZCgpfV1gO1xuXG4gIC8vIFBhcsOibWV0cm8gaW50ZXJubywgbsOjbyBkb2N1bWVudGFyXG4gIEBJbnB1dCh7IGFsaWFzOiAncC12YWx1ZScsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSB2YWx1ZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIHByaXZhdGUgX2xhYmVsT2ZmOiBzdHJpbmcgPSAnZmFsc2UnO1xuICBwcml2YXRlIF9sYWJlbE9uOiBzdHJpbmcgPSAndHJ1ZSc7XG4gIHByaXZhdGUgX2xhYmVsUG9zaXRpb246IFBvU3dpdGNoTGFiZWxQb3NpdGlvbiA9IFBvU3dpdGNoTGFiZWxQb3NpdGlvbi5SaWdodDtcbiAgcHJpdmF0ZSBfZm9ybWF0TW9kZWw6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBJbmRpY2Egc2UgbyBgbW9kZWxgIHJlY2ViZXLDoSBvIHZhbG9yIGZvcm1hdGFkbyBwZWxhcyBwcm9wcmllZGFkZXMgYHAtbGFiZWwtb25gIGUgYHAtbGFiZWwtb2ZmYCBvdVxuICAgKiBhcGVuYXMgbyB2YWxvciBwdXJvIChzZW0gZm9ybWF0YcOnw6NvKS5cbiAgICpcbiAgICogPiBQb3IgcGFkcsOjbyBzZXLDoSBhdHJpYnXDrWRvIGBmYWxzZWAuXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1mb3JtYXQtbW9kZWwnLCB0cmFuc2Zvcm06IGNvbnZlcnRUb0Jvb2xlYW4gfSlcbiAgc2V0IGZvcm1hdE1vZGVsKGZvcm1hdDogYm9vbGVhbikge1xuICAgIHRoaXMuX2Zvcm1hdE1vZGVsID0gZm9ybWF0IHx8IGZhbHNlO1xuICB9XG5cbiAgZ2V0IGZvcm1hdE1vZGVsKCkge1xuICAgIHJldHVybiB0aGlzLl9mb3JtYXRNb2RlbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBAb3B0aW9uYWxcbiAgICpcbiAgICogQGRlc2NyaXB0aW9uXG4gICAqXG4gICAqIEluZGljYSBzZSBvIHN0YXR1cyBkbyBgbW9kZWxgIHNlcsOhIGVzY29uZGlkbyB2aXN1YWxtZW50ZSBhbyBsYWRvIGRvIHN3aXRjaC5cbiAgICpcbiAgICogPiBQb3IgcGFkcsOjbyBzZXLDoSBhdHJpYnXDrWRvIGBmYWxzZWAuXG4gICAqIEBkZWZhdWx0IGBmYWxzZWBcbiAgICovXG4gIEBJbnB1dCh7IGFsaWFzOiAncC1oaWRlLWxhYmVsLXN0YXR1cycsIHRyYW5zZm9ybTogY29udmVydFRvQm9vbGVhbiB9KSBoaWRlTGFiZWxTdGF0dXM6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogQG9wdGlvbmFsXG4gICAqXG4gICAqIEBkZXNjcmlwdGlvblxuICAgKlxuICAgKiBQb3Npw6fDo28gZGUgZXhpYmnDp8OjbyBkbyByw7N0dWxvIHF1ZSBmaWNhIGFvIGxhZG8gZG8gc3dpdGNoLlxuICAgKlxuICAgKiA+IFBvciBwYWRyw6NvIGV4aWJlIMOgIGRpcmVpdGEuXG4gICAqL1xuICBASW5wdXQoJ3AtbGFiZWwtcG9zaXRpb24nKSBzZXQgbGFiZWxQb3NpdGlvbihwb3NpdGlvbjogUG9Td2l0Y2hMYWJlbFBvc2l0aW9uKSB7XG4gICAgdGhpcy5fbGFiZWxQb3NpdGlvbiA9IHBvc2l0aW9uIGluIFBvU3dpdGNoTGFiZWxQb3NpdGlvbiA/IHBhcnNlSW50KDxhbnk+cG9zaXRpb24sIDEwKSA6IFBvU3dpdGNoTGFiZWxQb3NpdGlvbi5SaWdodDtcbiAgfVxuXG4gIGdldCBsYWJlbFBvc2l0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9sYWJlbFBvc2l0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIFRleHRvIGV4aWJpZG8gcXVhbmRvIG8gdmFsb3IgZG8gY29tcG9uZW50ZSBmb3IgYGZhbHNlYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYGZhbHNlYFxuICAgKi9cbiAgQElucHV0KCdwLWxhYmVsLW9mZicpIHNldCBsYWJlbE9mZihsYWJlbDogc3RyaW5nKSB7XG4gICAgdGhpcy5fbGFiZWxPZmYgPSBsYWJlbCB8fCAnZmFsc2UnO1xuICB9XG5cbiAgZ2V0IGxhYmVsT2ZmKCkge1xuICAgIHJldHVybiB0aGlzLl9sYWJlbE9mZjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUZXh0byBleGliaWRvIHF1YW5kbyBvIHZhbG9yIGRvIGNvbXBvbmVudGUgZm9yIGB0cnVlYC5cbiAgICpcbiAgICogQGRlZmF1bHQgYHRydWVgXG4gICAqL1xuICBASW5wdXQoJ3AtbGFiZWwtb24nKSBzZXQgbGFiZWxPbihsYWJlbDogc3RyaW5nKSB7XG4gICAgdGhpcy5fbGFiZWxPbiA9IGxhYmVsIHx8ICd0cnVlJztcbiAgfVxuXG4gIGdldCBsYWJlbE9uKCkge1xuICAgIHJldHVybiB0aGlzLl9sYWJlbE9uO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZ1bsOnw6NvIHF1ZSBhdHJpYnVpIGZvY28gYW8gY29tcG9uZW50ZS5cbiAgICpcbiAgICogUGFyYSB1dGlsaXrDoS1sYSDDqSBuZWNlc3PDoXJpbyB0ZXIgYSBpbnN0w6JuY2lhIGRvIGNvbXBvbmVudGUgbm8gRE9NLCBwb2RlbmRvIHNlciB1dGlsaXphZG8gbyBWaWV3Q2hpbGQgZGEgc2VndWludGUgZm9ybWE6XG4gICAqXG4gICAqIGBgYFxuICAgKiBpbXBvcnQgeyBQb1N3aXRjaENvbXBvbmVudCB9IGZyb20gJ0Bwby11aS9uZy1jb21wb25lbnRzJztcbiAgICpcbiAgICogLi4uXG4gICAqXG4gICAqIEBWaWV3Q2hpbGQoUG9Td2l0Y2hDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pIHN3aXRjaDogUG9Td2l0Y2hDb21wb25lbnQ7XG4gICAqXG4gICAqIGZvY3VzU3dpdGNoKCkge1xuICAgKiAgIHRoaXMuc3dpdGNoLmZvY3VzKCk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBmb2N1cygpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuc3dpdGNoQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICBvbkJsdXIoKSB7XG4gICAgdGhpcy5vblRvdWNoZWQ/LigpO1xuICB9XG5cbiAgZ2V0TGFiZWxQb3NpdGlvbigpIHtcbiAgICBzd2l0Y2ggKHRoaXMubGFiZWxQb3NpdGlvbikge1xuICAgICAgY2FzZSBQb1N3aXRjaExhYmVsUG9zaXRpb24uTGVmdDpcbiAgICAgICAgcmV0dXJuICdsZWZ0JztcbiAgICAgIGNhc2UgUG9Td2l0Y2hMYWJlbFBvc2l0aW9uLlJpZ2h0OlxuICAgICAgICByZXR1cm4gJ3JpZ2h0JztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAncmlnaHQnO1xuICAgIH1cbiAgfVxuXG4gIG9uS2V5RG93bihldmVudCkge1xuICAgIGlmIChldmVudC53aGljaCA9PT0gUG9LZXlDb2RlRW51bS5zcGFjZSB8fCBldmVudC5rZXlDb2RlID09PSBQb0tleUNvZGVFbnVtLnNwYWNlKSB7XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgdGhpcy5ldmVudENsaWNrKCk7XG4gICAgfVxuICB9XG5cbiAgY2hhbmdlVmFsdWUodmFsdWU6IGFueSkge1xuICAgIGlmICh0aGlzLnZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgICAgaWYgKHRoaXMuZm9ybWF0TW9kZWwpIHtcbiAgICAgICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgICAgICB0aGlzLnVwZGF0ZU1vZGVsKHRoaXMubGFiZWxPbik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVNb2RlbCh0aGlzLmxhYmVsT2ZmKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy51cGRhdGVNb2RlbCh2YWx1ZSk7XG4gICAgICB9XG4gICAgICB0aGlzLmVtaXRDaGFuZ2UodGhpcy52YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgZXZlbnRDbGljaygpIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuY2hhbmdlVmFsdWUoIXRoaXMudmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIG9uV3JpdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLnZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5mb3JtYXRNb2RlbCAmJiAhIXZhbHVlKSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSB0aGlzLmxhYmVsT24udG9Mb3dlckNhc2UoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSAhIXZhbHVlO1xuICAgICAgfVxuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxwby1maWVsZC1jb250YWluZXIgW3AtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbcC1pZF09XCJpZFwiIFtwLWxhYmVsXT1cImxhYmVsXCI+XG4gIDxkaXYgY2xhc3M9XCJwby1maWVsZC1jb250YWluZXItY29udGVudFwiIFthdHRyLm5hbWVdPVwibmFtZVwiPlxuICAgIDxkaXYgY2xhc3M9XCJwby1zd2l0Y2hcIiBbYXR0ci5kYXRhLWxhYmVsLXBvc2l0aW9uXT1cImdldExhYmVsUG9zaXRpb24oKVwiPlxuICAgICAgPGRpdlxuICAgICAgICAjc3dpdGNoQ29udGFpbmVyXG4gICAgICAgIGNsYXNzPVwicG8tc3dpdGNoLWNvbnRhaW5lclwiXG4gICAgICAgIHJvbGU9XCJzd2l0Y2hcIlxuICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwidmFsdWVcIlxuICAgICAgICBbYXR0ci5hcmlhLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW2lkXT1cImlkXCJcbiAgICAgICAgW3RhYmluZGV4XT1cImRpc2FibGVkID8gLTEgOiAwXCJcbiAgICAgICAgKGJsdXIpPVwib25CbHVyKClcIlxuICAgICAgICAoY2xpY2spPVwiZXZlbnRDbGljaygpXCJcbiAgICAgICAgKGtleWRvd24pPVwib25LZXlEb3duKCRldmVudClcIlxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzPVwicG8tc3dpdGNoLXRyYWNrXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInBvLXN3aXRjaC10b2dnbGVcIiBbYXR0ci5hcmlhLWxhYmVsXT1cInZhbHVlID09PSB0cnVlID8gbGFiZWxPbiA6IGxhYmVsT2ZmXCI+XG4gICAgICAgICAgICA8cG8taWNvbiAqbmdJZj1cInZhbHVlID09PSB0cnVlXCIgY2xhc3M9XCJwby1zd2l0Y2gtaWNvblwiIHAtaWNvbj1cIklDT05fT0tcIj48L3BvLWljb24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxwby1sYWJlbFxuICAgICAgICAqbmdJZj1cIiFoaWRlTGFiZWxTdGF0dXNcIlxuICAgICAgICBjbGFzcz1cInBvLXN3aXRjaC1sYWJlbFwiXG4gICAgICAgIFtwLWRpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgW3AtbGFiZWxdPVwidmFsdWUgPT09IHRydWUgPyBsYWJlbE9uIDogbGFiZWxPZmZcIlxuICAgICAgICAoY2xpY2spPVwiZXZlbnRDbGljaygpXCJcbiAgICAgID5cbiAgICAgIDwvcG8tbGFiZWw+XG4gICAgPC9kaXY+XG4gIDwvZGl2PlxuXG4gIDxwby1maWVsZC1jb250YWluZXItYm90dG9tIFtwLWhlbHBdPVwiaGVscFwiIFtwLWRpc2FibGVkXT1cImRpc2FibGVkXCI+PC9wby1maWVsZC1jb250YWluZXItYm90dG9tPlxuPC9wby1maWVsZC1jb250YWluZXI+XG4iXX0=