igniteui-angular 18.1.7 → 18.1.9

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 (45) hide show
  1. package/esm2022/lib/combo/combo.common.mjs +2 -10
  2. package/esm2022/lib/core/i18n/grid-resources.mjs +2 -1
  3. package/esm2022/lib/grids/grid/grid.component.mjs +6 -5
  4. package/esm2022/lib/grids/hierarchical-grid/hierarchical-grid.component.mjs +6 -5
  5. package/esm2022/lib/grids/pivot-grid/pivot-grid-dimensions.mjs +2 -2
  6. package/esm2022/lib/grids/pivot-grid/pivot-grid-navigation.service.mjs +2 -2
  7. package/esm2022/lib/grids/pivot-grid/pivot-grid.interface.mjs +1 -1
  8. package/esm2022/lib/grids/state-base.directive.mjs +10 -4
  9. package/esm2022/lib/grids/tree-grid/tree-grid.component.mjs +6 -5
  10. package/esm2022/lib/services/excel/excel-files.mjs +26 -5
  11. package/esm2022/lib/simple-combo/simple-combo.component.mjs +16 -8
  12. package/fesm2022/igniteui-angular.mjs +88 -58
  13. package/fesm2022/igniteui-angular.mjs.map +1 -1
  14. package/lib/core/i18n/grid-resources.d.ts +1 -0
  15. package/lib/core/styles/components/button/_button-theme.scss +4 -4
  16. package/lib/core/styles/components/input/_input-group-theme.scss +10 -10
  17. package/lib/core/styles/components/progress/_progress-theme.scss +1 -1
  18. package/lib/simple-combo/simple-combo.component.d.ts +4 -3
  19. package/package.json +1 -1
  20. package/styles/igniteui-angular-dark.css +1 -1
  21. package/styles/igniteui-angular.css +1 -1
  22. package/styles/igniteui-bootstrap-dark.css +1 -1
  23. package/styles/igniteui-bootstrap-light.css +1 -1
  24. package/styles/igniteui-dark-green.css +1 -1
  25. package/styles/igniteui-fluent-dark-excel.css +1 -1
  26. package/styles/igniteui-fluent-dark-word.css +1 -1
  27. package/styles/igniteui-fluent-dark.css +1 -1
  28. package/styles/igniteui-fluent-light-excel.css +1 -1
  29. package/styles/igniteui-fluent-light-word.css +1 -1
  30. package/styles/igniteui-fluent-light.css +1 -1
  31. package/styles/igniteui-indigo-dark.css +1 -1
  32. package/styles/igniteui-indigo-light.css +1 -1
  33. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  34. package/styles/maps/igniteui-angular.css.map +1 -1
  35. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  36. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  37. package/styles/maps/igniteui-dark-green.css.map +1 -1
  38. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  39. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  40. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  41. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  42. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  43. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  44. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  45. package/styles/maps/igniteui-indigo-light.css.map +1 -1
@@ -1004,15 +1004,7 @@ export class IgxComboBaseDirective {
1004
1004
  }
1005
1005
  manageRequiredAsterisk() {
1006
1006
  if (this.ngControl) {
1007
- if (this.ngControl.control.validator) {
1008
- // Run the validation with empty object to check if required is enabled.
1009
- const error = this.ngControl.control.validator({});
1010
- this.inputGroup.isRequired = error && error.required;
1011
- }
1012
- else {
1013
- // P.M. 18 May 2022: IgxCombo's asterisk not removed when removing required validator dynamically in reactive form #11543
1014
- this.inputGroup.isRequired = false;
1015
- }
1007
+ this.inputGroup.isRequired = this.required;
1016
1008
  }
1017
1009
  }
1018
1010
  /** Contains key-value pairs of the selected valueKeys and their resp. displayKeys */
@@ -1202,4 +1194,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
1202
1194
  }], filteringOptions: [{
1203
1195
  type: Input
1204
1196
  }] } });
1205
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm8uY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NvbWJvL2NvbWJvLmNvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUgsZ0JBQWdCLEVBRWhCLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLE1BQU0sRUFDTixjQUFjLEVBRWQsS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXlDLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUE4QixVQUFVLEVBQW1ELEdBQUcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3SCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN2RSxPQUFPLEVBQWUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFxQixvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoSyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQW1CLE1BQU0sd0JBQXdCLENBQUM7QUFHdkcsT0FBTyxFQUNILHdCQUF3QixFQUFFLDBCQUEwQixFQUFFLHNCQUFzQixFQUM1RSx1QkFBdUIsRUFBRSx1QkFBdUIsRUFBRSwyQkFBMkIsRUFBRSxxQkFBcUIsRUFBRSwyQkFBMkIsRUFDcEksTUFBTSxvQkFBb0IsQ0FBQztBQUU1QixPQUFPLEVBQUUsc0JBQXNCLEVBQXlCLE1BQU0sOEJBQThCLENBQUM7QUFDN0YsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbkUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM3QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sV0FBVyxDQUFDOzs7OztBQUVwQyxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxhQUFhLENBQUEsSUFBSSxjQUFjLENBQWUsd0JBQXdCLENBQUMsQ0FBQztBQWdDM0csSUFBSSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0FBRWhCOzs7O0dBSUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQyxDQUFDLDhCQUE4QjtBQUUzRCx3QkFBd0I7QUFDeEIsTUFBTSxXQUFXLEdBQUc7SUFDaEIsR0FBRyxFQUFFLEVBQUU7SUFDUCxHQUFHLEVBQUUsRUFBRTtJQUNQLEdBQUcsRUFBRSxFQUFFO0NBQ1YsQ0FBQztBQXFCRixNQUFNLE9BQWdCLHFCQUFxQjtJQXFDdkM7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gsSUFFVyxFQUFFO1FBQ1QsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUFXLEVBQUUsQ0FBQyxLQUFhO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNULE9BQU87UUFDWCxDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7UUFDakIsSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUNaLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDMUIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO1FBQ3RDLENBQUM7SUFDTCxDQUFDO0lBbUNEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILElBQ1csY0FBYztRQUNyQixJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDdEUsT0FBTyxJQUFJLENBQUMsVUFBVSxHQUFHLGdCQUFnQixDQUFDO1FBQzlDLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQVcsY0FBYyxDQUFDLEdBQVc7UUFDakMsSUFBSSxDQUFDLGVBQWUsR0FBRyxHQUFHLENBQUM7SUFDL0IsQ0FBQztJQUVELGNBQWM7SUFDZCxJQUFXLG1CQUFtQjtRQUMxQixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOzs7T0FHRztJQUNILElBQVcsU0FBUztRQUNoQixPQUFPLElBQUksQ0FBQyxjQUFjLEVBQUUsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQztJQUM1RSxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7OztPQVlHO0lBQ0gsSUFDVyxVQUFVO1FBQ2pCLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUM5RCxPQUFPLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkMsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBVyxVQUFVLENBQUMsR0FBVztRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztJQUMzQixDQUFDO0lBa0NEOzs7Ozs7O09BT0c7SUFDSCxJQUNXLElBQUk7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUM7SUFDdEIsQ0FBQztJQUNELElBQVcsSUFBSSxDQUFDLEdBQWlCO1FBQzdCLDRDQUE0QztRQUM1Qyx5REFBeUQ7UUFDekQsb0VBQW9FO1FBQ3BFLHdEQUF3RDtRQUN4RCx3REFBd0Q7UUFDeEQsb0ZBQW9GO1FBQ3BGLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQy9ELENBQUM7SUFrQkQsSUFDVyxVQUFVLENBQUMsR0FBVztRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsQ0FBQztJQUMzQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSCxJQUFXLFVBQVU7UUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQy9ELENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFDVyxRQUFRLENBQUMsR0FBVztRQUMzQixJQUFJLENBQUMsU0FBUyxHQUFHLEdBQUcsQ0FBQztJQUN6QixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILElBQVcsUUFBUTtRQUNmLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNILElBQ1cscUJBQXFCO1FBQzVCLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDO0lBQ3ZDLENBQUM7SUFDRCxJQUFXLHFCQUFxQixDQUFDLEdBQXFCO1FBQ2xELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxHQUFHLENBQUM7SUFDdEMsQ0FBQztJQW1DRDs7Ozs7O09BTUc7SUFDSCxJQUNXLElBQUk7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLGVBQWUsSUFBSSxLQUFLLENBQUM7SUFDdkQsQ0FBQztJQUVELElBQVcsSUFBSSxDQUFDLEdBQXNCO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsR0FBRyxDQUFDO0lBQ3JCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQ1csZUFBZTtRQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztJQUNqQyxDQUFDO0lBQ0QsSUFBVyxlQUFlLENBQUMsS0FBNEI7UUFDbkQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBZ1NELHdCQUF3QjtJQUN4QixJQUFXLFdBQVc7UUFDbEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzdCLENBQUM7SUFDRCxJQUFXLFdBQVcsQ0FBQyxHQUFXO1FBQzlCLElBQUksQ0FBQyxXQUFXLEdBQUcsR0FBRyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO0lBQzVCLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsSUFBVyxRQUFRO1FBQ2YsT0FBTyxJQUFJLENBQUMsY0FBYyxHQUFHLENBQUM7WUFDMUIsSUFBSSxDQUFDLFFBQVE7WUFDYixJQUFJLENBQUMsUUFBUSxzQ0FBc0IsQ0FBQztJQUM1QyxDQUFDO0lBRUQsd0JBQXdCO0lBQ3hCLElBQVcsUUFBUTtRQUNmLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ2xCLHlDQUF5QjtRQUM3QixDQUFDO1FBQ0QsNkNBQTJCO0lBQy9CLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFBVyxLQUFLO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFBVyxLQUFLLENBQUMsS0FBb0I7UUFDakMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDcEIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFBVyxLQUFLO1FBQ1osT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3ZCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFBVyxZQUFZO1FBQ25CLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILElBQVcsbUJBQW1CO1FBQzFCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7SUFDOUIsQ0FBQztJQUNEOzs7Ozs7O09BT0c7SUFDSCxJQUFXLG1CQUFtQixDQUFDLEtBQWtCO1FBQzdDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsSUFBVyxTQUFTO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxJQUFXLGNBQWM7UUFDckIsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQztJQUN2QyxDQUFDO0lBQ0Q7Ozs7Ozs7T0FPRztJQUNILElBQVcsY0FBYyxDQUFDLEtBQWE7UUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDO0lBQ3hDLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsSUFBVyxRQUFRO1FBQ2YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQy9CLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxzQ0FBc0IsRUFBRSxDQUFDO1lBQ3ZDLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUNoQyxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbEMsQ0FBQztJQVdEOzs7Ozs7Ozs7Ozs7T0FZRztJQUVILElBQ1csZ0JBQWdCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixJQUFJLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztJQUNuRSxDQUFDO0lBQ0QsSUFBVyxnQkFBZ0IsQ0FBQyxLQUE2QjtRQUNyRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsS0FBSyxDQUFDO0lBQ25DLENBQUM7SUErQkQsWUFDYyxVQUFzQixFQUN0QixHQUFzQixFQUN0QixnQkFBd0MsRUFDeEMsUUFBNEIsRUFDYixRQUFrQixFQUNTLGVBQWtDLEVBQ2hFLFNBQW1CLEVBQ0ssWUFBNkI7UUFQakUsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN0QixRQUFHLEdBQUgsR0FBRyxDQUFtQjtRQUN0QixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQXdCO1FBQ3hDLGFBQVEsR0FBUixRQUFRLENBQW9CO1FBQ2IsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQUNTLG9CQUFlLEdBQWYsZUFBZSxDQUFtQjtRQUNoRSxjQUFTLEdBQVQsU0FBUyxDQUFVO1FBQ0ssaUJBQVksR0FBWixZQUFZLENBQWlCO1FBbjJCL0U7Ozs7Ozs7Ozs7OztXQVlHO1FBRUksdUJBQWtCLEdBQUcsS0FBSyxDQUFDO1FBRWxDOzs7Ozs7Ozs7Ozs7Ozs7V0FlRztRQUVJLG9CQUFlLEdBQW9CLElBQUksQ0FBQztRQXdEL0M7Ozs7Ozs7Ozs7OztXQVlHO1FBRUksc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBdUhqQzs7Ozs7Ozs7Ozs7O1dBWUc7UUFFSSxhQUFRLEdBQVcsSUFBSSxDQUFDO1FBNEYvQix3QkFBd0I7UUFFakIsYUFBUSxHQUFHLFdBQVcsQ0FBQyxDQUFDLG9EQUFvRDtRQUVuRjs7Ozs7V0FLRztRQUVJLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFnQ3hCOzs7Ozs7V0FNRztRQUVJLFlBQU8sR0FBRyxJQUFJLFlBQVksRUFBbUMsQ0FBQztRQUVyRTs7Ozs7O1dBTUc7UUFFSSxXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQWtCLENBQUM7UUFFbkQ7Ozs7OztXQU1HO1FBRUksWUFBTyxHQUFHLElBQUksWUFBWSxFQUFtQyxDQUFDO1FBRXJFOzs7Ozs7V0FNRztRQUVJLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBa0IsQ0FBQztRQUVuRDs7Ozs7O1dBTUc7UUFFSSxhQUFRLEdBQUcsSUFBSSxZQUFZLEVBQTJCLENBQUM7UUFFOUQ7Ozs7OztXQU1HO1FBRUksc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQThCLENBQUM7UUFFMUU7Ozs7OztXQU1HO1FBRUksZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBZSxDQUFDO1FBRXJEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQW9CRztRQUVJLGlCQUFZLEdBQXFCLElBQUksQ0FBQztRQUU3Qzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQW1CRztRQUVJLG1CQUFjLEdBQXFCLElBQUksQ0FBQztRQUUvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQW1CRztRQUVJLG1CQUFjLEdBQXFCLElBQUksQ0FBQztRQUUvQzs7Ozs7Ozs7Ozs7Ozs7Ozs7V0FpQkc7UUFFSSx1QkFBa0IsR0FBcUIsSUFBSSxDQUFDO1FBRW5EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBbUJHO1FBRUksb0JBQWUsR0FBcUIsSUFBSSxDQUFDO1FBRWhEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBbUJHO1FBRUksa0JBQWEsR0FBcUIsSUFBSSxDQUFDO1FBRTlDOzs7Ozs7Ozs7Ozs7Ozs7OztXQWlCRztRQUVJLHVCQUFrQixHQUFxQixJQUFJLENBQUM7UUFFbkQ7Ozs7Ozs7Ozs7Ozs7Ozs7O1dBaUJHO1FBRUksc0JBQWlCLEdBQXFCLElBQUksQ0FBQztRQWFsRCx3QkFBd0I7UUFFakIsZ0JBQVcsR0FBaUMsSUFBSSxDQUFDO1FBVTlDLHNCQUFpQixHQUFlLElBQUksQ0FBQztRQTRKL0Msd0JBQXdCO1FBQ2pCLG9CQUFlLEdBQUcsSUFBSSxDQUFDO1FBQzlCLHdCQUF3QjtRQUNqQixnQkFBVyxHQUFHLEVBQUUsQ0FBQztRQUN4Qix3QkFBd0I7UUFDakIseUJBQW9CLEdBQUcsT0FBTyxDQUFDO1FBQ3RDLHdCQUF3QjtRQUNqQixxQkFBZ0IsR0FBRyxFQUFFLENBQUM7UUF1Qm5CLFVBQUssR0FBRyxFQUFFLENBQUM7UUFDWCxXQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ1osa0JBQWEsR0FBRyxFQUFFLENBQUM7UUFDbkIsY0FBUyxHQUFHLEVBQUUsQ0FBQztRQUNmLGlCQUFZLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLGtCQUFhLEdBQUcsRUFBRSxDQUFDO1FBRW5CLHFCQUFnQixHQUFHLEVBQUUsQ0FBQztRQUN0QixxQkFBZ0IsR0FBRyx5QkFBeUIsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1FBQ3JFLFdBQU0sR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDO1FBQy9CLGNBQVMsR0FBYyxJQUFJLENBQUM7UUFDNUIsYUFBUSxHQUFHLElBQUksT0FBTyxFQUFRLENBQUM7UUFDL0IsdUJBQWtCLEdBQWUsSUFBSSxDQUFDO1FBQ3RDLHNCQUFpQixHQUFxQixJQUFJLENBQUM7UUFDM0Msb0JBQWUsR0FBRyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUd4QyxRQUFHLEdBQVcsYUFBYSxPQUFPLEVBQUUsRUFBRSxDQUFDO1FBQ3ZDLFVBQUssR0FBRyxJQUFJLENBQUM7UUFDYixjQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ2YsZ0JBQVcsR0FBRyxJQUFJLENBQUM7UUFDbkIsb0JBQWUsR0FBRyxJQUFJLENBQUM7UUFFdkIsMkJBQXNCLEdBQXFCLGdCQUFnQixDQUFDLEdBQUcsQ0FBQztRQUVoRSw2QkFBd0IsR0FBMkIsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQXlTNUYsb0JBQWUsR0FBRyxHQUFHLEVBQUU7WUFDN0IsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDNUQsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztvQkFDdkUsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQztnQkFDcEYsQ0FBQztxQkFBTSxDQUFDO29CQUNKLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUM7Z0JBQ3RGLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osZ0ZBQWdGO2dCQUNoRixJQUFJLENBQUMsS0FBSyxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUM7WUFDdkMsQ0FBQztZQUNELElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ2xDLENBQUMsQ0FBQztRQTRCUSxjQUFTLEdBQUcsQ0FBQyxPQUFZLEVBQVcsRUFBRTtZQUM1QyxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDbkUsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQztZQUMvRCxPQUFPLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDdkYsQ0FBQyxDQUFDO0lBdlVFLENBQUM7SUFFRSxrQkFBa0I7UUFDckIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQywwQkFBMEIsQ0FBZ0IsQ0FBQztRQUVySCxJQUFJLENBQUMsZ0JBQWdCLEdBQUc7WUFDcEIsTUFBTSxFQUFFLGFBQWE7WUFDckIsY0FBYyxFQUFFLElBQUksc0JBQXNCLEVBQUU7WUFDNUMsZ0JBQWdCLEVBQUUsSUFBSSxvQkFBb0IsRUFBRTtZQUM1QyxLQUFLLEVBQUUsS0FBSztZQUNaLG1CQUFtQixFQUFFLElBQUk7WUFDekIsdUJBQXVCLEVBQUUsQ0FBQyxhQUFhLENBQUM7U0FDM0MsQ0FBQztJQUNOLENBQUM7SUFFRCx3QkFBd0I7SUFDakIscUJBQXFCO1FBQ3hCLElBQUksSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1FBQzdDLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDL0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztRQUM3QyxDQUFDO0lBQ0wsQ0FBQztJQUVELHdCQUF3QjtJQUNqQixRQUFRO1FBRVgsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBWSxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEUsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsWUFBWSxFQUFFLGtCQUFrQixDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsYUFBYSxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztRQUM1RixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDcEcsQ0FBQztJQUVELHdCQUF3QjtJQUNqQixlQUFlO1FBQ2xCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNqQixJQUFJLENBQUMsU0FBUyxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDNUYsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDOUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFjLEVBQUUsRUFBRTtZQUNsRixNQUFNLFNBQVMsR0FBZ0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7WUFDckUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRUQsd0JBQXdCO0lBQ2pCLFdBQVc7UUFDZCxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLE1BQU07UUFDVCxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBQ0QsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2RixJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN0QyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2xCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQy9CLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLElBQUk7UUFDUCxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBQ0QsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2RixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLEtBQUs7UUFDUixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFRDs7T0FFRztJQUNJLFlBQVk7UUFDZixJQUFJLENBQUMsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFBVyxTQUFTO1FBQ2hCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM3RCxPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxjQUFjLENBQUMsSUFBUztRQUMzQixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFFRCx3QkFBd0I7SUFDeEIsSUFBVyxVQUFVO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUM7SUFDdkUsQ0FBQztJQUVELHdCQUF3QjtJQUNqQixtQkFBbUI7UUFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNwQixPQUFPO1FBQ1gsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1lBQ2hDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQ2pDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLElBQUksQ0FBQyxXQUFXO1NBQ3RDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7UUFDckIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDaEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLENBQUM7UUFDRCx1RkFBdUY7UUFDdkYsTUFBTSxhQUFhLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNyQyxNQUFNLGFBQWEsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNoRCxNQUFNLElBQUksR0FBNEI7WUFDbEMsYUFBYSxFQUFFLFNBQVMsRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSztTQUN0RSxDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDekIsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDZCxPQUFPO1FBQ1gsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMvQixvQkFBb0I7UUFDcEIsSUFBSSxDQUFDLElBQUksR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxTQUFTLENBQUMsQ0FBQztZQUMvRCxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9ELElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLEVBQUUsYUFBYSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsd0JBQXdCO0lBQ2pCLGtCQUFrQjtRQUNyQix5R0FBeUc7UUFDekcsT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLEVBQUUsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDO0lBQzNELENBQUM7SUFFRCx3QkFBd0I7SUFDakIsaUJBQWlCLENBQUMsS0FBVztRQUNoQyxJQUFJLEtBQUssS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUN0QixNQUFNLElBQUksR0FBK0I7Z0JBQ3JDLFVBQVUsRUFBRSxPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLO2dCQUNsRSxLQUFLLEVBQUUsSUFBSTtnQkFDWCxNQUFNLEVBQUUsS0FBSzthQUNoQixDQUFDO1lBQ0YsSUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNsQyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDZCxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztZQUM1QixDQUFDO1FBQ0wsQ0FBQztRQUNELElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxhQUFhLENBQUMsQ0FBa0M7UUFDbkQsTUFBTSxJQUFJLEdBQW9DLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ2hHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUMzQixDQUFDO0lBRUQsd0JBQXdCO0lBQ2pCLGFBQWEsQ0FBQyxDQUFrQztRQUNuRCxNQUFNLElBQUksR0FBb0MsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDaEcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsQ0FBQyxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ1gsT0FBTztRQUNYLENBQUM7UUFDRCxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUN0QixJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLFVBQVUsRUFBRSxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDM0MsQ0FBQztJQUNMLENBQUM7SUFFRCx3QkFBd0I7SUFDakIsWUFBWTtRQUNmLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELHdCQUF3QjtJQUNqQixhQUFhLENBQUMsS0FBb0I7UUFDckMsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsR0FBRyxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ2hELEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztZQUN2QixLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDeEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2pCLENBQUM7SUFDTCxDQUFDO0lBRUQsd0JBQXdCO0lBQ2pCLGdCQUFnQixDQUFDLEVBQU87UUFDM0IsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsd0JBQXdCO0lBQ2pCLGlCQUFpQixDQUFDLEVBQU87UUFDNUIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQztJQUNqQyxDQUFDO0lBRUQsd0JBQXdCO0lBQ2pCLGdCQUFnQixDQUFDLFVBQW1CO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQy9CLENBQUM7SUFFRCx3QkFBd0I7SUFDakIsT0FBTyxDQUFDLEtBQVk7UUFDdkIsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNsQixDQUFDO0lBQ0wsQ0FBQztJQUVELHdCQUF3QjtJQUNqQixNQUFNO1FBQ1QsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDMUIsSUFBSSxJQUFJLENBQUMsU0FBUyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7Z0JBQzNDLElBQUksQ0FBQyxLQUFLLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQztZQUN2QyxDQUFDO2lCQUFNLENBQUM7Z0JBQ0osSUFBSSxDQUFDLEtBQUssR0FBRyxhQUFhLENBQUMsT0FBTyxDQUFDO1lBQ3ZDLENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQztJQUVELHdCQUF3QjtJQUNqQixtQkFBbUI7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDaEUsQ0FBQztJQUVELHdCQUF3QjtJQUNqQixtQkFBbUI7UUFDdEIsSUFBSSxDQUFDLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO0lBQzlILENBQUM7SUFnQkQsSUFBWSxnQkFBZ0I7UUFDeEIsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RSxDQUFDO0lBRUQsSUFBWSxhQUFhO1FBQ3JCLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsdUZBQXVGO0lBQzdFLGtCQUFrQixDQUFDLElBQVc7UUFDcEMsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3hELE9BQU8sSUFBSSxDQUFDO1FBQ2hCLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDbEIsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBRXpFLE9BQU8sSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBQ2hFLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVTLFVBQVU7UUFDaEIsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3pELElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixJQUFJLENBQUMsU0FBUyxDQUFDO0lBQ2hFLENBQUM7SUFRUyxzQkFBc0I7UUFDNUIsSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztnQkFDbkMsd0VBQXdFO2dCQUN4RSxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBcUIsQ0FBQyxDQUFDO2dCQUN0RSxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxLQUFLLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUN6RCxDQUFDO2lCQUFNLENBQUM7Z0JBQ0oseUhBQXlIO2dCQUN6SCxJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUM7WUFDdkMsQ0FBQztRQUNMLENBQUM7SUFDTCxDQUFDO0lBRUQscUZBQXFGO0lBQzNFLHFCQUFxQixDQUFDLEdBQVUsRUFBRSxHQUFHLEdBQUcsSUFBSTtRQUNsRCxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ04sTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pELEtBQUssTUFBTSxLQUFLLElBQUksU0FBUyxFQUFFLENBQUM7Z0JBQzVCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN6RSxDQUFDO1FBQ0wsQ0FBQzthQUFNLENBQUM7WUFDSixLQUFLLE1BQU0sS0FBSyxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUN0QixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUN4QyxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNPLG9CQUFvQixDQUFDLEdBQVU7UUFDckMsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMvRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNqQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQztTQUN4QyxDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFUyxrQkFBa0IsQ0FBQyxZQUFtQixFQUFFLFlBQW1CO1FBQ2pFLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDdkIsNkNBQTZDO1lBQzdDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDaEQsT0FBTyxFQUFFLENBQUM7UUFDZCxDQUFDO1FBQ0QsTUFBTSxZQUFZLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDM0UsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDekUsSUFBSSxDQUFDLHFCQUFxQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxZQUFZLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDaEQsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM1RixDQUFDO0lBRUQsSUFBYyxRQUFRO1FBQ2xCLElBQUksSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUMvRSx3RUFBd0U7WUFDeEUsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQXFCLENBQUMsQ0FBQztZQUN0RSxPQUFPLEtBQUssSUFBSSxLQUFLLENBQUMsUUFBUSxDQUFDO1FBQ25DLENBQUM7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDOzhHQXp1Q2lCLHFCQUFxQixxSkFrMkIzQixRQUFRLGFBQ0ksb0JBQW9CLHFFQUVwQixjQUFjO2tHQXIyQnBCLHFCQUFxQiw2RUFlbkIsZ0JBQWdCLCtIQXlGaEIsZ0JBQWdCLGdXQTRPaEIsZ0JBQWdCLG1jQTRIdEIscUJBQXFCLDJCQUFVLFdBQVcsOERBdUIxQyx1QkFBdUIsMkJBQVUsV0FBVyw4REF1QjVDLHVCQUF1QiwyQkFBVSxXQUFXLGtFQXFCNUMsMkJBQTJCLDJCQUFVLFdBQVcsK0RBdUJoRCx3QkFBd0IsMkJBQVUsV0FBVyw2REF1QjdDLHNCQUFzQiwyQkFBVSxXQUFXLGtFQXFCM0MsMkJBQTJCLDJCQUFVLFdBQVcsaUVBcUJoRCwwQkFBMEIsMkJBQVUsV0FBVyx5RUFJOUIsaUJBQWlCLDZFQThCL0Isa0JBQWtCLDhEQUdsQixrQkFBa0IscUlBOUJGLHNCQUFzQixpSEFJdEIsaUJBQWlCLGlMQVF2QyxpQkFBaUIsd0ZBR2pCLGlCQUFpQiwyQkFBVSxpQkFBaUIsa1BBTXZCLFdBQVcsbUhBR2IsV0FBVzs7MkZBMW9CdkIscUJBQXFCO2tCQUQxQyxTQUFTOzswQkFtMkJELE1BQU07MkJBQUMsUUFBUTs7MEJBQ2YsUUFBUTs7MEJBQUksTUFBTTsyQkFBQyxvQkFBb0I7OzBCQUN2QyxRQUFROzswQkFDUixRQUFROzswQkFBSSxNQUFNOzJCQUFDLGNBQWM7eUNBcjFCL0Isa0JBQWtCO3NCQUR4QixLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQW9CL0IsZUFBZTtzQkFEckIsS0FBSztnQkFrQkssRUFBRTtzQkFGWixXQUFXO3VCQUFDLFNBQVM7O3NCQUNyQixLQUFLO2dCQXNDQyxLQUFLO3NCQUZYLFdBQVc7dUJBQUMsYUFBYTs7c0JBQ3pCLEtBQUs7Z0JBaUJDLGlCQUFpQjtzQkFEdkIsS0FBSzt1QkFBQyxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRTtnQkFpQjNCLGNBQWM7c0JBRHhCLEtBQUs7Z0JBdUNLLFVBQVU7c0JBRHBCLEtBQUs7Z0JBMEJDLFVBQVU7c0JBRGhCLEtBQUs7Z0JBaUJDLFdBQVc7c0JBRGpCLEtBQUs7Z0JBWUssSUFBSTtzQkFEZCxLQUFLO2dCQTRCQyxRQUFRO3NCQURkLEtBQUs7Z0JBSUssVUFBVTtzQkFEcEIsS0FBSztnQkFtQ0ssUUFBUTtzQkFEbEIsS0FBSztnQkE2QksscUJBQXFCO3NCQUQvQixLQUFLO2dCQWlCQyxjQUFjO3NCQURwQixLQUFLO2dCQVVDLGNBQWM7c0JBRHBCLEtBQUs7Z0JBS0MsUUFBUTtzQkFEZCxXQUFXO3VCQUFDLGlCQUFpQjtnQkFVdkIsUUFBUTtzQkFEZCxLQUFLO3VCQUFDLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFO2dCQVczQixJQUFJO3NCQURkLEtBQUs7Z0JBZ0JLLGVBQWU7c0JBRHpCLEtBQUs7Z0JBZ0JDLE9BQU87c0JBRGIsTUFBTTtnQkFXQSxNQUFNO3NCQURaLE1BQU07Z0JBV0EsT0FBTztzQkFEYixNQUFNO2dCQVdBLE1BQU07c0JBRFosTUFBTTtnQkFXQSxRQUFRO3NCQURkLE1BQU07Z0JBV0EsaUJBQWlCO3NCQUR2QixNQUFNO2dCQVdBLFdBQVc7c0JBRGpCLE1BQU07Z0JBeUJBLFlBQVk7c0JBRGxCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQXdCbkQsY0FBYztzQkFEcEIsWUFBWTt1QkFBQyx1QkFBdUIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBd0JyRCxjQUFjO3NCQURwQixZQUFZO3VCQUFDLHVCQUF1QixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFzQnJELGtCQUFrQjtzQkFEeEIsWUFBWTt1QkFBQywyQkFBMkIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBd0J6RCxlQUFlO3NCQURyQixZQUFZO3VCQUFDLHdCQUF3QixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkF3QnRELGFBQWE7c0JBRG5CLFlBQVk7dUJBQUMsc0JBQXNCLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO2dCQXNCcEQsa0JBQWtCO3NCQUR4QixZQUFZO3VCQUFDLDJCQUEyQixFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRTtnQkFzQnpELGlCQUFpQjtzQkFEdkIsWUFBWTt1QkFBQywwQkFBMEIsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7Z0JBSWEsS0FBSztzQkFBaEYsWUFBWTt1QkFBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSTVELFVBQVU7c0JBRGhCLFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBS2hFLFVBQVU7c0JBRGhCLFNBQVM7dUJBQUMsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLGlCQUFpQixFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSzNELFdBQVc7c0JBRGpCLFNBQVM7dUJBQUMsYUFBYTtnQkFLakIsc0JBQXNCO3NCQUQ1QixTQUFTO3VCQUFDLGlCQUFpQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJcEMsT0FBTztzQkFEaEIsU0FBUzt1QkFBQyxpQkFBaUIsRUFBRSxFQUFFLElBQUksRUFBRSxpQkFBaUIsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUk3RCxpQkFBaUI7c0JBRDFCLFNBQVM7dUJBQUMsdUJBQXVCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUkxQyxpQkFBaUI7c0JBRDFCLFNBQVM7dUJBQUMsV0FBVyxFQUFFLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUlqRCxlQUFlO3NCQUR4QixTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJL0MsUUFBUTtzQkFEakIsZUFBZTt1QkFBQyxrQkFBa0IsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUU7Z0JBSWhELFFBQVE7c0JBRGpCLGVBQWU7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQXlLL0MsZ0JBQWdCO3NCQUQxQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQWZ0ZXJWaWV3SW5pdCxcbiAgICBib29sZWFuQXR0cmlidXRlLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRGlyZWN0aXZlLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIGZvcndhcmRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSW5qZWN0LFxuICAgIEluamVjdGlvblRva2VuLFxuICAgIEluamVjdG9yLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPbkluaXQsXG4gICAgT3B0aW9uYWwsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBBYnN0cmFjdENvbnRyb2wsIENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOZ0NvbnRyb2wgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBjYXNlU2Vuc2l0aXZlIH0gZnJvbSAnQGlnbml0ZXVpL21hdGVyaWFsLWljb25zLWV4dGVuZGVkJztcbmltcG9ydCB7IG5vb3AsIFN1YmplY3QgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IElneFNlbGVjdGlvbkFQSVNlcnZpY2UgfSBmcm9tICcuLi9jb3JlL3NlbGVjdGlvbic7XG5pbXBvcnQgeyBDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncywgY2xvbmVBcnJheSwgSUJhc2VDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncywgSUJhc2VFdmVudEFyZ3MsIHJlbSB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgU29ydGluZ0RpcmVjdGlvbiB9IGZyb20gJy4uL2RhdGEtb3BlcmF0aW9ucy9zb3J0aW5nLXN0cmF0ZWd5JztcbmltcG9ydCB7IElGb3JPZlN0YXRlLCBJZ3hGb3JPZkRpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvZm9yLW9mL2Zvcl9vZi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4SWNvblNlcnZpY2UgfSBmcm9tICcuLi9pY29uL2ljb24uc2VydmljZSc7XG5pbXBvcnQgeyBJZ3hJbnB1dEdyb3VwVHlwZSwgSUdYX0lOUFVUX0dST1VQX1RZUEUgfSBmcm9tICcuLi9pbnB1dC1ncm91cC9pbnB1dEdyb3VwVHlwZSc7XG5pbXBvcnQgeyBJZ3hJbnB1dERpcmVjdGl2ZSwgSWd4SW5wdXRHcm91cENvbXBvbmVudCwgSWd4SW5wdXRTdGF0ZSwgSWd4TGFiZWxEaXJlY3RpdmUsIElneFByZWZpeERpcmVjdGl2ZSwgSWd4U3VmZml4RGlyZWN0aXZlIH0gZnJvbSAnLi4vaW5wdXQtZ3JvdXAvcHVibGljX2FwaSc7XG5pbXBvcnQgeyBBYnNvbHV0ZVNjcm9sbFN0cmF0ZWd5LCBBdXRvUG9zaXRpb25TdHJhdGVneSwgT3ZlcmxheVNldHRpbmdzIH0gZnJvbSAnLi4vc2VydmljZXMvcHVibGljX2FwaSc7XG5pbXBvcnQgeyBJZ3hDb21ib0Ryb3BEb3duQ29tcG9uZW50IH0gZnJvbSAnLi9jb21iby1kcm9wZG93bi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4Q29tYm9BUElTZXJ2aWNlIH0gZnJvbSAnLi9jb21iby5hcGknO1xuaW1wb3J0IHtcbiAgICBJZ3hDb21ib0FkZEl0ZW1EaXJlY3RpdmUsIElneENvbWJvQ2xlYXJJY29uRGlyZWN0aXZlLCBJZ3hDb21ib0VtcHR5RGlyZWN0aXZlLFxuICAgIElneENvbWJvRm9vdGVyRGlyZWN0aXZlLCBJZ3hDb21ib0hlYWRlckRpcmVjdGl2ZSwgSWd4Q29tYm9IZWFkZXJJdGVtRGlyZWN0aXZlLCBJZ3hDb21ib0l0ZW1EaXJlY3RpdmUsIElneENvbWJvVG9nZ2xlSWNvbkRpcmVjdGl2ZVxufSBmcm9tICcuL2NvbWJvLmRpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgSUNvbWJvSXRlbUFkZGl0aW9uRXZlbnQsIElDb21ib1NlYXJjaElucHV0RXZlbnRBcmdzIH0gZnJvbSAnLi9wdWJsaWNfYXBpJztcbmltcG9ydCB7IENvbWJvUmVzb3VyY2VTdHJpbmdzRU4sIElDb21ib1Jlc291cmNlU3RyaW5ncyB9IGZyb20gJy4uL2NvcmUvaTE4bi9jb21iby1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgZ2V0Q3VycmVudFJlc291cmNlU3RyaW5ncyB9IGZyb20gJy4uL2NvcmUvaTE4bi9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgU2l6ZSB9IGZyb20gJy4uL2dyaWRzL2NvbW1vbi9lbnVtcyc7XG5pbXBvcnQgeyBpc0VxdWFsIH0gZnJvbSAnbG9kYXNoLWVzJztcblxuZXhwb3J0IGNvbnN0IElHWF9DT01CT19DT01QT05FTlQgPSAvKkBfX1BVUkVfXyovbmV3IEluamVjdGlvblRva2VuPElneENvbWJvQmFzZT4oJ0lneENvbWJvQ29tcG9uZW50VG9rZW4nKTtcblxuLyoqIEBoaWRkZW4gQGludGVybmFsIFRPRE86IEV2YWx1YXRlICovXG5leHBvcnQgaW50ZXJmYWNlIElneENvbWJvQmFzZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBkYXRhOiBhbnlbXSB8IG51bGw7XG4gICAgdmFsdWVLZXk6IHN0cmluZztcbiAgICBncm91cEtleTogc3RyaW5nO1xuICAgIGlzUmVtb3RlOiBib29sZWFuO1xuICAgIGZpbHRlcmVkRGF0YTogYW55W10gfCBudWxsO1xuICAgIHRvdGFsSXRlbUNvdW50OiBudW1iZXI7XG4gICAgaXRlbXNNYXhIZWlnaHQ6IG51bWJlcjtcbiAgICBpdGVtSGVpZ2h0OiBudW1iZXI7XG4gICAgc2VhcmNoVmFsdWU6IHN0cmluZztcbiAgICBzZWFyY2hJbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgICBjb21ib0lucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xuICAgIG9wZW5lZDogRXZlbnRFbWl0dGVyPElCYXNlRXZlbnRBcmdzPjtcbiAgICBvcGVuaW5nOiBFdmVudEVtaXR0ZXI8Q2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3M+O1xuICAgIGNsb3Npbmc6IEV2ZW50RW1pdHRlcjxDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncz47XG4gICAgY2xvc2VkOiBFdmVudEVtaXR0ZXI8SUJhc2VFdmVudEFyZ3M+O1xuICAgIGZvY3VzU2VhcmNoSW5wdXQob3BlbmluZz86IGJvb2xlYW4pOiB2b2lkO1xuICAgIHRyaWdnZXJDaGVjaygpOiB2b2lkO1xuICAgIGFkZEl0ZW1Ub0NvbGxlY3Rpb24oKTogdm9pZDtcbiAgICBpc0FkZEJ1dHRvblZpc2libGUoKTogYm9vbGVhbjtcbiAgICBoYW5kbGVJbnB1dENoYW5nZShldmVudD86IHN0cmluZyk6IHZvaWQ7XG4gICAgaXNJdGVtU2VsZWN0ZWQoaXRlbUlEOiBhbnkpOiBib29sZWFuO1xuICAgIHNlbGVjdChpdGVtOiBhbnkpOiB2b2lkO1xuICAgIHNlbGVjdChpdGVtSURzOiBhbnlbXSwgY2xlYXJTZWxlY3Rpb24/OiBib29sZWFuLCBldmVudD86IEV2ZW50KTogdm9pZDtcbiAgICBkZXNlbGVjdCguLi5hcmdzOiBbXSB8IFtpdGVtSURzOiBhbnlbXSwgZXZlbnQ/OiBFdmVudF0pOiB2b2lkO1xuICAgIHNldEFjdGl2ZURlc2NlbmRhbnQoKTogdm9pZDtcbn1cblxubGV0IE5FWFRfSUQgPSAwO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqIFRoZSBkZWZhdWx0IG51bWJlciBvZiBpdGVtcyB0aGF0IHNob3VsZCBiZSBpbiB0aGUgY29tYm8nc1xuICogZHJvcC1kb3duIGxpc3QgaWYgbm8gYFtpdGVtc01heEhlaWdodF1gIGlzIHNwZWNpZmllZFxuICovXG5jb25zdCBpdGVtc0luQ29udGFpbmVyID0gMTA7IC8vIFRPRE86IG1ha2UgcHJpdmF0ZSByZWFkb25seVxuXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbmNvbnN0IEl0ZW1IZWlnaHRzID0ge1xuICAgIFwiM1wiOiA0MCxcbiAgICBcIjJcIjogMzIsXG4gICAgXCIxXCI6IDI4XG59O1xuXG4vKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBjb25zdCBlbnVtIERhdGFUeXBlcyB7XG4gICAgRU1QVFkgPSAnZW1wdHknLFxuICAgIFBSSU1JVElWRSA9ICdwcmltaXRpdmUnLFxuICAgIENPTVBMRVggPSAnY29tcGxleCcsXG4gICAgUFJJTUFSWUtFWSA9ICd2YWx1ZUtleSdcbn1cblxuLyoqIFRoZSBmaWx0ZXJpbmcgY3JpdGVyaWEgdG8gYmUgYXBwbGllZCBvbiBkYXRhIHNlYXJjaCAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ29tYm9GaWx0ZXJpbmdPcHRpb25zIHtcbiAgICAvKiogRGVmaW5lcyBmaWx0ZXJpbmcgY2FzZS1zZW5zaXRpdml0eSAqL1xuICAgIGNhc2VTZW5zaXRpdmU/OiBib29sZWFuO1xuICAgIC8qKiBEZWZpbmVzIHdoZXRoZXIgZmlsdGVyaW5nIGlzIGFsbG93ZWQgKi9cbiAgICBmaWx0ZXJhYmxlOiBib29sZWFuO1xuICAgIC8qKiBEZWZpbmVzIG9wdGlvbmFsIGtleSB0byBmaWx0ZXIgYWdhaW5zdCBjb21wbGV4IGxpc3QgaXRlbXMuIERlZmF1bHQgdG8gZGlzcGxheUtleSBpZiBwcm92aWRlZC4qL1xuICAgIGZpbHRlcmluZ0tleT86IHN0cmluZztcbn1cblxuQERpcmVjdGl2ZSgpXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgSWd4Q29tYm9CYXNlRGlyZWN0aXZlIGltcGxlbWVudHMgSWd4Q29tYm9CYXNlLCBBZnRlclZpZXdDaGVja2VkLCBPbkluaXQsXG4gICAgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJDb250ZW50Q2hlY2tlZCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB3aGV0aGVyIHRoZSBjYXNlU2Vuc2l0aXZlIGljb24gc2hvdWxkIGJlIHNob3duIGluIHRoZSBzZWFyY2ggaW5wdXRcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgbXlDb21ib1Nob3dTZWFyY2hDYXNlSWNvbiA9IHRoaXMuY29tYm8uc2hvd1NlYXJjaENhc2VJY29uO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8aWd4LWNvbWJvIFtzaG93U2VhcmNoQ2FzZUljb25dPSd0cnVlJz48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgc2hvd1NlYXJjaENhc2VJY29uID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBTZXQgY3VzdG9tIG92ZXJsYXkgc2V0dGluZ3MgdGhhdCBjb250cm9sIGhvdyB0aGUgY29tYm8ncyBsaXN0IG9mIGl0ZW1zIGlzIGRpc3BsYXllZC5cbiAgICAgKiBTZXQ6XG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY29tYm8gW292ZXJsYXlTZXR0aW5nc109XCJjdXN0b21PdmVybGF5U2V0dGluZ3NcIj48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgY29uc3QgY3VzdG9tU2V0dGluZ3MgPSB7IHBvc2l0aW9uU3RyYXRlZ3k6IHsgc2V0dGluZ3M6IHsgdGFyZ2V0OiBteVRhcmdldCB9IH0gfTtcbiAgICAgKiAgY29tYm8ub3ZlcmxheVNldHRpbmdzID0gY3VzdG9tU2V0dGluZ3M7XG4gICAgICogYGBgXG4gICAgICogR2V0IGFueSBjdXN0b20gb3ZlcmxheSBzZXR0aW5ncyB1c2VkIGJ5IHRoZSBjb21ibzpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IGNvbWJvT3ZlcmxheVNldHRpbmdzOiBPdmVybGF5U2V0dGluZ3MgPSBteUNvbWJvLm92ZXJsYXlTZXR0aW5ncztcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBvdmVybGF5U2V0dGluZ3M6IE92ZXJsYXlTZXR0aW5ncyA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL2dldHMgY29tYm8gaWQuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IGlkID0gdGhpcy5jb21iby5pZDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlneC1jb21ibyBbaWRdPSdjb21ibzEnPjwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5pZCcpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGlkKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbiA9IHRoaXMuc2VsZWN0aW9uU2VydmljZS5nZXQodGhpcy5faWQpO1xuICAgICAgICB0aGlzLl9pZCA9IHZhbHVlO1xuICAgICAgICBpZiAoc2VsZWN0aW9uKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2V0KHRoaXMuX2lkLCBzZWxlY3Rpb24pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmRyb3Bkb3duPy5vcGVuKSB7XG4gICAgICAgICAgICB0aGlzLmRyb3Bkb3duLmNsb3NlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuaW5wdXRHcm91cD8uaXNGb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0R3JvdXAuZWxlbWVudC5uYXRpdmVFbGVtZW50LmJsdXIoKTtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRHcm91cC5pc0ZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHN0eWxlIHdpZHRoIG9mIHRoZSBlbGVtZW50XG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IG15Q29tYm9XaWR0aCA9IHRoaXMuY29tYm8ud2lkdGg7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpZ3gtY29tYm8gW3dpZHRoXT0nMjUwcHgnPjwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnc3R5bGUud2lkdGgnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHdpZHRoOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBDb250cm9scyB3aGV0aGVyIGN1c3RvbSB2YWx1ZXMgY2FuIGJlIGFkZGVkIHRvIHRoZSBjb2xsZWN0aW9uXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IGNvbWJvQWxsb3dzQ3VzdG9tVmFsdWVzID0gdGhpcy5jb21iby5hbGxvd0N1c3RvbVZhbHVlcztcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlneC1jb21ibyBbYWxsb3dDdXN0b21WYWx1ZXNdPSd0cnVlJz48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgYWxsb3dDdXN0b21WYWx1ZXMgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyZXMgdGhlIGRyb3AgZG93biBsaXN0IGhlaWdodFxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBteUNvbWJvSXRlbXNNYXhIZWlnaHQgPSB0aGlzLmNvbWJvLml0ZW1zTWF4SGVpZ2h0O1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8aWd4LWNvbWJvIFtpdGVtc01heEhlaWdodF09JzMyMCc+PC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGl0ZW1zTWF4SGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLl9pdGVtc01heEhlaWdodCA9PT0gbnVsbCB8fCB0aGlzLl9pdGVtc01heEhlaWdodCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtSGVpZ2h0ICogaXRlbXNJbkNvbnRhaW5lcjtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5faXRlbXNNYXhIZWlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBpdGVtc01heEhlaWdodCh2YWw6IG51bWJlcikge1xuICAgICAgICB0aGlzLl9pdGVtc01heEhlaWdodCA9IHZhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyBnZXQgaXRlbXNNYXhIZWlnaHRJblJlbSgpIHtcbiAgICAgICAgcmV0dXJuIHJlbSh0aGlzLml0ZW1zTWF4SGVpZ2h0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGdldCBjb21ib1NpemUoKTogU2l6ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbXB1dGVkU3R5bGVzPy5nZXRQcm9wZXJ0eVZhbHVlKCctLWlnLXNpemUnKSB8fCBTaXplLkxhcmdlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyZXMgdGhlIGRyb3AgZG93biBsaXN0IGl0ZW0gaGVpZ2h0XG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IG15Q29tYm9JdGVtSGVpZ2h0ID0gdGhpcy5jb21iby5pdGVtSGVpZ2h0O1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8aWd4LWNvbWJvIFtpdGVtSGVpZ2h0XT0nMzInPjwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBpdGVtSGVpZ2h0KCk6IG51bWJlciB7XG4gICAgICAgIGlmICh0aGlzLl9pdGVtSGVpZ2h0ID09PSBudWxsIHx8IHRoaXMuX2l0ZW1IZWlnaHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIEl0ZW1IZWlnaHRzW3RoaXMuY29tYm9TaXplXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5faXRlbUhlaWdodDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IGl0ZW1IZWlnaHQodmFsOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5faXRlbUhlaWdodCA9IHZhbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25maWd1cmVzIHRoZSBkcm9wIGRvd24gbGlzdCB3aWR0aFxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBteUNvbWJvSXRlbXNXaWR0aCA9IHRoaXMuY29tYm8uaXRlbXNXaWR0aDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlneC1jb21ibyBbaXRlbXNXaWR0aF0gPSAnXCIxODBweFwiJz48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpdGVtc1dpZHRoOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBEZWZpbmVzIHRoZSBwbGFjZWhvbGRlciB2YWx1ZSBmb3IgdGhlIGNvbWJvIHZhbHVlIGZpZWxkXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IG15Q29tYm9QbGFjZWhvbGRlciA9IHRoaXMuY29tYm8ucGxhY2Vob2xkZXI7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpZ3gtY29tYm8gW3BsYWNlaG9sZGVyXT0nbmV3UGxhY2VIb2xkZXInPjwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHBsYWNlaG9sZGVyOiBzdHJpbmc7XG5cbiAgICAvKipcbiAgICAgKiBDb21ibyBkYXRhIHNvdXJjZS5cbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlneC1jb21ibyBbZGF0YV09J2l0ZW1zJz48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgZGF0YSgpOiBhbnlbXSB8IG51bGwge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgICB9XG4gICAgcHVibGljIHNldCBkYXRhKHZhbDogYW55W10gfCBudWxsKSB7XG4gICAgICAgIC8vIGlneEZvciBkaXJlY3RpdmUgaWdub3JlcyB1bmRlZmluZWQgdmFsdWVzXG4gICAgICAgIC8vIGlmIHRoZSBjb21ibyB1c2VzIHNpbXBsZSBkYXRhIGFuZCBmaWx0ZXJpbmcgaXMgYXBwbGllZFxuICAgICAgICAvLyBhbiBlcnJvciB3aWxsIG9jY3VyIGR1ZSB0byB0aGUgbWlzbWF0Y2ggb2YgdGhlIGxlbmd0aCBvZiB0aGUgZGF0YVxuICAgICAgICAvLyB0aGlzIGNhbiBvY2N1ciBkdXJpbmcgZmlsdGVyaW5nIGZvciB0aGUgaWd4LWNvbWJvIGFuZFxuICAgICAgICAvLyBkdXJpbmcgZmlsdGVyaW5nICYgc2VsZWN0aW9uIGZvciB0aGUgaWd4LXNpbXBsZS1jb21ib1xuICAgICAgICAvLyBzaW5jZSB0aGUgc2ltcGxlIGNvbWJvJ3MgaW5wdXQgaXMgYm90aCBhIGNvbnRhaW5lciBmb3IgdGhlIHNlbGVjdGlvbiBhbmQgYSBmaWx0ZXJcbiAgICAgICAgdGhpcy5fZGF0YSA9ICh2YWwpID8gdmFsLmZpbHRlcih4ID0+IHggIT09IHVuZGVmaW5lZCkgOiBbXTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBEZXRlcm1pbmVzIHdoaWNoIGNvbHVtbiBpbiB0aGUgZGF0YSBzb3VyY2UgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHZhbHVlLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBteUNvbWJvVmFsdWVLZXkgPSB0aGlzLmNvbWJvLnZhbHVlS2V5O1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8aWd4LWNvbWJvIFt2YWx1ZUtleV09J215S2V5Jz48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB2YWx1ZUtleTogc3RyaW5nID0gbnVsbDtcblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBkaXNwbGF5S2V5KHZhbDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2Rpc3BsYXlLZXkgPSB2YWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyB3aGljaCBjb2x1bW4gaW4gdGhlIGRhdGEgc291cmNlIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSBkaXNwbGF5IHZhbHVlLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBteUNvbWJvRGlzcGxheUtleSA9IHRoaXMuY29tYm8uZGlzcGxheUtleTtcbiAgICAgKlxuICAgICAqIC8vIHNldFxuICAgICAqIHRoaXMuY29tYm8uZGlzcGxheUtleSA9ICd2YWwnO1xuICAgICAqXG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpZ3gtY29tYm8gW2Rpc3BsYXlLZXldPSdteURpc3BsYXlLZXknPjwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZGlzcGxheUtleSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc3BsYXlLZXkgPyB0aGlzLl9kaXNwbGF5S2V5IDogdGhpcy52YWx1ZUtleTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaXRlbSBwcm9wZXJ0eSBieSB3aGljaCBpdGVtcyBzaG91bGQgYmUgZ3JvdXBlZCBpbnNpZGUgdGhlIGl0ZW1zIGxpc3QuIE5vdCB1c2FibGUgaWYgZGF0YSBpcyBub3Qgb2YgdHlwZSBPYmplY3RbXS5cbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlneC1jb21ibyBbZ3JvdXBLZXldPSduZXdHcm91cEtleSc+PC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IGdyb3VwS2V5KHZhbDogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX2dyb3VwS2V5ID0gdmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSBpdGVtIHByb3BlcnR5IGJ5IHdoaWNoIGl0ZW1zIHNob3VsZCBiZSBncm91cGVkIGluc2lkZSB0aGUgaXRlbXMgbGlzdC4gTm90IHVzYWJsZSBpZiBkYXRhIGlzIG5vdCBvZiB0eXBlIE9iamVjdFtdLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBjdXJyZW50R3JvdXBLZXkgPSB0aGlzLmNvbWJvLmdyb3VwS2V5O1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZ3JvdXBLZXkoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dyb3VwS2V5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgZ3JvdXBzIHNvcnRpbmcgb3JkZXIuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNvbWJvIFtncm91cFNvcnRpbmdEaXJlY3Rpb25dPVwiZ3JvdXBTb3J0aW5nRGlyZWN0aW9uXCI+PC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIHB1YmxpYyBncm91cFNvcnRpbmdEaXJlY3Rpb24gPSBTb3J0aW5nRGlyZWN0aW9uLkFzYztcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgZ3JvdXBTb3J0aW5nRGlyZWN0aW9uKCk6IFNvcnRpbmdEaXJlY3Rpb24ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ3JvdXBTb3J0aW5nRGlyZWN0aW9uO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGdyb3VwU29ydGluZ0RpcmVjdGlvbih2YWw6IFNvcnRpbmdEaXJlY3Rpb24pIHtcbiAgICAgICAgdGhpcy5fZ3JvdXBTb3J0aW5nRGlyZWN0aW9uID0gdmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMvU2V0cyB0aGUgY3VzdG9tIGZpbHRlcmluZyBmdW5jdGlvbiBvZiB0aGUgY29tYm8uXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1jb21iICNjb21ibyBbZGF0YV09XCJsb2NhbERhdGFcIiBbZmlsdGVyRnVuY3Rpb25dPVwiZmlsdGVyRnVuY3Rpb25cIj48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmaWx0ZXJGdW5jdGlvbjogKGNvbGxlY3Rpb246IGFueVtdLCBzZWFyY2hWYWx1ZTogYW55LCBmaWx0ZXJpbmdPcHRpb25zOiBJQ29tYm9GaWx0ZXJpbmdPcHRpb25zKSA9PiBhbnlbXTtcblxuICAgIC8qKlxuICAgICAqIFNldHMgYXJpYS1sYWJlbGxlZGJ5IGF0dHJpYnV0ZSB2YWx1ZS5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jb21ibyBbYXJpYUxhYmVsbGVkQnldPVwiJ2xhYmVsMSdcIj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBhcmlhTGFiZWxsZWRCeTogc3RyaW5nO1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtY29tYm8nKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtY29tYm8nOyAvLyBJbmRlcGVuZGVudCBvZiBkaXNwbGF5IGRlbnNpdHkgZm9yIHRoZSB0aW1lIGJlaW5nXG5cbiAgICAvKipcbiAgICAgKiBEaXNhYmxlcyB0aGUgY29tYm8uIFRoZSBkZWZhdWx0IGlzIGBmYWxzZWAuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY29tYm8gW2Rpc2FibGVkXT1cIid0cnVlJ1wiPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdmlzdWFsIGNvbWJvIHR5cGUuXG4gICAgICogVGhlIGFsbG93ZWQgdmFsdWVzIGFyZSBgbGluZWAsIGBib3hgLCBgYm9yZGVyYCBhbmQgYHNlYXJjaGAuIFRoZSBkZWZhdWx0IGlzIGBib3hgLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNvbWJvIFt0eXBlXT1cIidsaW5lJ1wiPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCB0eXBlKCk6IElneElucHV0R3JvdXBUeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGUgfHwgdGhpcy5faW5wdXRHcm91cFR5cGUgfHwgJ2JveCc7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCB0eXBlKHZhbDogSWd4SW5wdXRHcm91cFR5cGUpIHtcbiAgICAgICAgdGhpcy5fdHlwZSA9IHZhbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL1NldHMgdGhlIHJlc291cmNlIHN0cmluZ3MuXG4gICAgICpcbiAgICAgKiBAcmVtYXJrc1xuICAgICAqIEJ5IGRlZmF1bHQgaXQgdXNlcyBFTiByZXNvdXJjZXMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHJlc291cmNlU3RyaW5ncygpOiBJQ29tYm9SZXNvdXJjZVN0cmluZ3Mge1xuICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VTdHJpbmdzO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IHJlc291cmNlU3RyaW5ncyh2YWx1ZTogSUNvbWJvUmVzb3VyY2VTdHJpbmdzKSB7XG4gICAgICAgIHRoaXMuX3Jlc291cmNlU3RyaW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX3Jlc291cmNlU3RyaW5ncywgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgYmVmb3JlIHRoZSBkcm9wZG93biBpcyBvcGVuZWRcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNvbWJvIG9wZW5pbmc9J2hhbmRsZU9wZW5pbmcoJGV2ZW50KSc+PC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9wZW5pbmcgPSBuZXcgRXZlbnRFbWl0dGVyPElCYXNlQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIGFmdGVyIHRoZSBkcm9wZG93biBpcyBvcGVuZWRcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNvbWJvIChvcGVuZWQpPSdoYW5kbGVPcGVuZWQoJGV2ZW50KSc+PC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIG9wZW5lZCA9IG5ldyBFdmVudEVtaXR0ZXI8SUJhc2VFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIGJlZm9yZSB0aGUgZHJvcGRvd24gaXMgY2xvc2VkXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jb21ibyAoY2xvc2luZyk9J2hhbmRsZUNsb3NpbmcoJGV2ZW50KSc+PC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNsb3NpbmcgPSBuZXcgRXZlbnRFbWl0dGVyPElCYXNlQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIGFmdGVyIHRoZSBkcm9wZG93biBpcyBjbG9zZWRcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNvbWJvIChjbG9zZWQpPSdoYW5kbGVDbG9zZWQoJGV2ZW50KSc+PC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGNsb3NlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SUJhc2VFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gYW4gaXRlbSBpcyBiZWluZyBhZGRlZCB0byB0aGUgZGF0YSBjb2xsZWN0aW9uXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jb21ibyAoYWRkaXRpb24pPSdoYW5kbGVBZGRpdGlvbkV2ZW50KCRldmVudCknPjwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBhZGRpdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8SUNvbWJvSXRlbUFkZGl0aW9uRXZlbnQ+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIHZhbHVlIG9mIHRoZSBzZWFyY2ggaW5wdXQgY2hhbmdlcyAoZS5nLiB0eXBpbmcsIHBhc3RpbmcsIGNsZWFyLCBldGMuKVxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY29tYm8gKHNlYXJjaElucHV0VXBkYXRlKT0naGFuZGxlU2VhcmNoSW5wdXRFdmVudCgkZXZlbnQpJz48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VhcmNoSW5wdXRVcGRhdGUgPSBuZXcgRXZlbnRFbWl0dGVyPElDb21ib1NlYXJjaElucHV0RXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIG5ldyBjaHVuayBvZiBkYXRhIGlzIGxvYWRlZCBmcm9tIHRoZSB2aXJ0dWFsaXphdGlvblxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY29tYm8gKGRhdGFQcmVMb2FkKT0naGFuZGxlRGF0YVByZWxvYWRFdmVudCgkZXZlbnQpJz48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgZGF0YVByZUxvYWQgPSBuZXcgRXZlbnRFbWl0dGVyPElGb3JPZlN0YXRlPigpO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGN1c3RvbSB0ZW1wbGF0ZSwgaWYgYW55LCB0aGF0IHNob3VsZCBiZSB1c2VkIHdoZW4gcmVuZGVyaW5nIElURU1TIGluIHRoZSBjb21ibyBsaXN0XG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gU2V0IGluIHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBteUN1c3RvbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+ID0gbXlDb21wb25lbnQuY3VzdG9tVGVtcGxhdGU7XG4gICAgICogbXlDb21wb25lbnQuY29tYm8uaXRlbVRlbXBsYXRlID0gbXlDdXN0b21UZW1wbGF0ZTtcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLSBTZXQgaW4gbWFya3VwIC0tPlxuICAgICAqICA8aWd4LWNvbWJvICNjb21ibz5cbiAgICAgKiAgICAgIC4uLlxuICAgICAqICAgICAgPG5nLXRlbXBsYXRlIGlneENvbWJvSXRlbSBsZXQtaXRlbSBsZXQta2V5PVwidmFsdWVLZXlcIj5cbiAgICAgKiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWl0ZW1cIj5cbiAgICAgKiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1pdGVtX19uYW1lXCI+e3sgaXRlbVtrZXldIH19PC9kaXY+XG4gICAgICogICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20taXRlbV9fY29zdFwiPnt7IGl0ZW0uY29zdCB9fTwvZGl2PlxuICAgICAqICAgICAgICAgIDwvZGl2PlxuICAgICAqICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgKiAgPC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hDb21ib0l0ZW1EaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgICBwdWJsaWMgaXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+ID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjdXN0b20gdGVtcGxhdGUsIGlmIGFueSwgdGhhdCBzaG91bGQgYmUgdXNlZCB3aGVuIHJlbmRlcmluZyB0aGUgSEVBREVSIGZvciB0aGUgY29tYm8gaXRlbXMgbGlzdFxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIFNldCBpbiB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgbXlDdXN0b21UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiA9IG15Q29tcG9uZW50LmN1c3RvbVRlbXBsYXRlO1xuICAgICAqIG15Q29tcG9uZW50LmNvbWJvLmhlYWRlclRlbXBsYXRlID0gbXlDdXN0b21UZW1wbGF0ZTtcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLSBTZXQgaW4gbWFya3VwIC0tPlxuICAgICAqICA8aWd4LWNvbWJvICNjb21ibz5cbiAgICAgKiAgICAgIC4uLlxuICAgICAqICAgICAgPG5nLXRlbXBsYXRlIGlneENvbWJvSGVhZGVyPlxuICAgICAqICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21ib19faGVhZGVyXCI+XG4gICAgICogICAgICAgICAgICAgIFRoaXMgaXMgYSBjdXN0b20gaGVhZGVyXG4gICAgICogICAgICAgICAgPC9kaXY+XG4gICAgICogICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAqICA8L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKElneENvbWJvSGVhZGVyRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gICAgcHVibGljIGhlYWRlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+ID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjdXN0b20gdGVtcGxhdGUsIGlmIGFueSwgdGhhdCBzaG91bGQgYmUgdXNlZCB3aGVuIHJlbmRlcmluZyB0aGUgRk9PVEVSIGZvciB0aGUgY29tYm8gaXRlbXMgbGlzdFxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIFNldCBpbiB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgbXlDdXN0b21UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiA9IG15Q29tcG9uZW50LmN1c3RvbVRlbXBsYXRlO1xuICAgICAqIG15Q29tcG9uZW50LmNvbWJvLmZvb3RlclRlbXBsYXRlID0gbXlDdXN0b21UZW1wbGF0ZTtcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLSBTZXQgaW4gbWFya3VwIC0tPlxuICAgICAqICA8aWd4LWNvbWJvICNjb21ibz5cbiAgICAgKiAgICAgIC4uLlxuICAgICAqICAgICAgPG5nLXRlbXBsYXRlIGlneENvbWJvRm9vdGVyPlxuICAgICAqICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb21ib19fZm9vdGVyXCI+XG4gICAgICogICAgICAgICAgICAgIFRoaXMgaXMgYSBjdXN0b20gZm9vdGVyXG4gICAgICogICAgICAgICAgPC9kaXY+XG4gICAgICogICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAqICA8L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKElneENvbWJvRm9vdGVyRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gICAgcHVibGljIGZvb3RlclRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+ID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjdXN0b20gdGVtcGxhdGUsIGlmIGFueSwgdGhhdCBzaG91bGQgYmUgdXNlZCB3aGVuIHJlbmRlcmluZyBIRUFERVIgSVRFTVMgZm9yIGdyb3VwcyBpbiB0aGUgY29tYm8gbGlzdFxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIFNldCBpbiB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgbXlDdXN0b21UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiA9IG15Q29tcG9uZW50LmN1c3RvbVRlbXBsYXRlO1xuICAgICAqIG15Q29tcG9uZW50LmNvbWJvLmhlYWRlckl0ZW1UZW1wbGF0ZSA9IG15Q3VzdG9tVGVtcGxhdGU7XG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS0gU2V0IGluIG1hcmt1cCAtLT5cbiAgICAgKiAgPGlneC1jb21ibyAjY29tYm8+XG4gICAgICogICAgICAuLi5cbiAgICAgKiAgICAgIDxuZy10ZW1wbGF0ZSBpZ3hDb21ib0hlYWRlckl0ZW0gbGV0LWl0ZW0gbGV0LWtleT1cImdyb3VwS2V5XCI+XG4gICAgICogICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1pdGVtLS1ncm91cFwiPkdyb3VwIGhlYWRlciBmb3Ige3sgaXRlbVtrZXldIH19PC9kaXY+XG4gICAgICogICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAqICA8L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKElneENvbWJvSGVhZGVySXRlbURpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICAgIHB1YmxpYyBoZWFkZXJJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGN1c3RvbSB0ZW1wbGF0ZSwgaWYgYW55LCB0aGF0IHNob3VsZCBiZSB1c2VkIHdoZW4gcmVuZGVyaW5nIHRoZSBBREQgQlVUVE9OIGluIHRoZSBjb21ibyBkcm9wIGRvd25cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBTZXQgaW4gdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IG15Q3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gPSBteUNvbXBvbmVudC5jdXN0b21UZW1wbGF0ZTtcbiAgICAgKiBteUNvbXBvbmVudC5jb21iby5hZGRJdGVtVGVtcGxhdGUgPSBteUN1c3RvbVRlbXBsYXRlO1xuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tIFNldCBpbiBtYXJrdXAgLS0+XG4gICAgICogIDxpZ3gtY29tYm8gI2NvbWJvPlxuICAgICAqICAgICAgLi4uXG4gICAgICogICAgICA8bmctdGVtcGxhdGUgaWd4Q29tYm9BZGRJdGVtPlxuICAgICAqICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGlneEJ1dHRvbj1cImNvbnRhaW5lZFwiIGNsYXNzPVwiY29tYm9fX2FkZC1idXR0b25cIj5cbiAgICAgKiAgICAgICAgICAgICAgQ2xpY2sgdG8gYWRkIGl0ZW1cbiAgICAgKiAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgKiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICogIDwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoSWd4Q29tYm9BZGRJdGVtRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gICAgcHVibGljIGFkZEl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY3VzdG9tIHRlbXBsYXRlLCBpZiBhbnksIHRoYXQgc2hvdWxkIGJlIHVzZWQgd2hlbiByZW5kZXJpbmcgdGhlIEFERCBCVVRUT04gaW4gdGhlIGNvbWJvIGRyb3AgZG93blxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIFNldCBpbiB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgbXlDdXN0b21UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiA9IG15Q29tcG9uZW50LmN1c3RvbVRlbXBsYXRlO1xuICAgICAqIG15Q29tcG9uZW50LmNvbWJvLmVtcHR5VGVtcGxhdGUgPSBteUN1c3RvbVRlbXBsYXRlO1xuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tIFNldCBpbiBtYXJrdXAgLS0+XG4gICAgICogIDxpZ3gtY29tYm8gI2NvbWJvPlxuICAgICAqICAgICAgLi4uXG4gICAgICogICAgICA8bmctdGVtcGxhdGUgaWd4Q29tYm9FbXB0eT5cbiAgICAgKiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tYm8tLWVtcHR5XCI+XG4gICAgICogICAgICAgICAgICAgIFRoZXJlIGFyZSBubyBpdGVtcyB0byBkaXNwbGF5XG4gICAgICogICAgICAgICAgPC9kaXY+XG4gICAgICogICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAqICA8L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKElneENvbWJvRW1wdHlEaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgICBwdWJsaWMgZW1wdHlUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY3VzdG9tIHRlbXBsYXRlLCBpZiBhbnksIHRoYXQgc2hvdWxkIGJlIHVzZWQgd2hlbiByZW5kZXJpbmcgdGhlIGNvbWJvIFRPR0dMRShvcGVuL2Nsb3NlKSBidXR0b25cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBTZXQgaW4gdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IG15Q3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gPSBteUNvbXBvbmVudC5jdXN0b21UZW1wbGF0ZTtcbiAgICAgKiBteUNvbXBvbmVudC5jb21iby50b2dnbGVJY29uVGVtcGxhdGUgPSBteUN1c3RvbVRlbXBsYXRlO1xuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tIFNldCBpbiBtYXJrdXAgLS0+XG4gICAgICogIDxpZ3gtY29tYm8gI2NvbWJvPlxuICAgICAqICAgICAgLi4uXG4gICAgICogICAgICA8bmctdGVtcGxhdGUgaWd4Q29tYm9Ub2dnbGVJY29uIGxldC1jb2xsYXBzZWQ+XG4gICAgICogICAgICAgICAgPGlneC1pY29uPnt7IGNvbGxhcHNlZCA/ICdyZW1vdmVfY2lyY2xlJyA6ICdyZW1vdmVfY2lyY2xlX291dGxpbmUnfX08L2lneC1pY29uPlxuICAgICAqICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgKiAgPC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hDb21ib1RvZ2dsZUljb25EaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgICBwdWJsaWMgdG9nZ2xlSWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+ID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjdXN0b20gdGVtcGxhdGUsIGlmIGFueSwgdGhhdCBzaG91bGQgYmUgdXNlZCB3aGVuIHJlbmRlcmluZyB0aGUgY29tYm8gQ0xFQVIgYnV0dG9uXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gU2V0IGluIHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBteUN1c3RvbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+ID0gbXlDb21wb25lbnQuY3VzdG9tVGVtcGxhdGU7XG4gICAgICogbXlDb21wb25lbnQuY29tYm8uY2xlYXJJY29uVGVtcGxhdGUgPSBteUN1c3RvbVRlbXBsYXRlO1xuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tIFNldCBpbiBtYXJrdXAgLS0+XG4gICAgICogIDxpZ3gtY29tYm8gI2NvbWJvPlxuICAgICAqICAgICAgLi4uXG4gICAgICogICAgICA8bmctdGVtcGxhdGUgaWd4Q29tYm9DbGVhckljb24+XG4gICAgICogICAgICAgICAgPGlneC1pY29uPmNsZWFyPC9pZ3gtaWNvbj5cbiAgICAgKiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICogIDwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoSWd4Q29tYm9DbGVhckljb25EaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgICBwdWJsaWMgY2xlYXJJY29uVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQENvbnRlbnRDaGlsZChmb3J3YXJkUmVmKCgpID0+IElneExhYmVsRGlyZWN0aXZlKSwgeyBzdGF0aWM6IHRydWUgfSkgcHVibGljIGxhYmVsOiBJZ3hMYWJlbERpcmVjdGl2ZTtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBWaWV3Q2hpbGQoJ2lucHV0R3JvdXAnLCB7IHJlYWQ6IElneElucHV0R3JvdXBDb21wb25lbnQsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBpbnB1dEdyb3VwOiBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50O1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQFZpZXdDaGlsZCgnY29tYm9JbnB1dCcsIHsgcmVhZDogSWd4SW5wdXREaXJlY3RpdmUsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyBjb21ib0lucHV0OiBJZ3hJbnB1dERpcmVjdGl2ZTtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0JylcbiAgICBwdWJsaWMgc2VhcmNoSW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4gPSBudWxsO1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQFZpZXdDaGlsZChJZ3hGb3JPZkRpcmVjdGl2ZSwgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwdWJsaWMgdmlydHVhbFNjcm9sbENvbnRhaW5lcjogSWd4Rm9yT2ZEaXJlY3RpdmU8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoSWd4Rm9yT2ZEaXJlY3RpdmUsIHsgcmVhZDogSWd4Rm9yT2ZEaXJlY3RpdmUsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByb3RlY3RlZCB2aXJ0RGlyOiBJZ3hGb3JPZkRpcmVjdGl2ZTxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgnZHJvcGRvd25JdGVtQ29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgZHJvcGRvd25Db250YWluZXI6IEVsZW1lbnRSZWYgPSBudWxsO1xuXG4gICAgQFZpZXdDaGlsZCgncHJpbWl0aXZlJywgeyByZWFkOiBUZW1wbGF0ZVJlZiwgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJvdGVjdGVkIHByaW1pdGl2ZVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQFZpZXdDaGlsZCgnY29tcGxleCcsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByb3RlY3RlZCBjb21wbGV4VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKElneFByZWZpeERpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHByb3RlY3RlZCBwcmVmaXhlczogUXVlcnlMaXN0PElneFByZWZpeERpcmVjdGl2ZT47XG5cbiAgICBAQ29udGVudENoaWxkcmVuKElneFN1ZmZpeERpcmVjdGl2ZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHByb3RlY3RlZCBzdWZmaXhlczogUXVlcnlMaXN0PElneFN1ZmZpeERpcmVjdGl2ZT47XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IHNlYXJjaFZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zZWFyY2hWYWx1ZTtcbiAgICB9XG4gICAgcHVibGljIHNldCBzZWFyY2hWYWx1ZSh2YWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLmZpbHRlclZhbHVlID0gdmFsO1xuICAgICAgICB0aGlzLl9zZWFyY2hWYWx1ZSA9IHZhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IGlzUmVtb3RlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50b3RhbEl0ZW1Db3VudCA+IDAgJiZcbiAgICAgICAgICAgIHRoaXMudmFsdWVLZXkgJiZcbiAgICAgICAgICAgIHRoaXMuZGF0YVR5cGUgPT09IERhdGFUeXBlcy5DT01QTEVYO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBnZXQgZGF0YVR5cGUoKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheUtleSkge1xuICAgICAgICAgICAgcmV0dXJuIERhdGFUeXBlcy5DT01QTEVYO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBEYXRhVHlwZXMuUFJJTUlUSVZFO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgaWYgY29udHJvbCBpcyB2YWxpZCwgd2hlbiB1c2VkIGluIGEgZm9ybVxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCB2YWxpZCA9IHRoaXMuY29tYm8udmFsaWQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCB2YWxpZCgpOiBJZ3hJbnB1dFN0YXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbGlkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgaWYgY29udHJvbCBpcyB2YWxpZCwgd2hlbiB1c2VkIGluIGEgZm9ybVxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIHNldFxuICAgICAqIHRoaXMuY29tYm8udmFsaWQgPSBJZ3hJbnB1dFN0YXRlLklOVkFMSUQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldCB2YWxpZCh2YWxpZDogSWd4SW5wdXRTdGF0ZSkge1xuICAgICAgICB0aGlzLl92YWxpZCA9IHZhbGlkO1xuICAgICAgICB0aGlzLmNvbWJvSW5wdXQudmFsaWQgPSB2YWxpZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgdmFsdWUgb2YgdGhlIGNvbWJvXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IGNvbWJvVmFsdWUgPSB0aGlzLmNvbWJvLnZhbHVlO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdmFsdWUoKTogYW55W10ge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIHRleHQgZGlzcGxheWVkIGluIHRoZSBjb21ibyBpbnB1dFxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBjb21ib0Rpc3BsYXlWYWx1ZSA9IHRoaXMuY29tYm8uZGlzcGxheVZhbHVlO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgZGlzcGxheVZhbHVlKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5VmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgdmlydHVhbGl6ZWQgZGF0YS4gSXQgY29udGFpbnMgYHN0YXJ0SW5kZXhgIGFuZCBgY2h1bmtTaXplYFxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBzdGF0ZSA9IHRoaXMuY29tYm8udmlydHVhbGl6YXRpb25TdGF0ZTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHZpcnR1YWxpemF0aW9uU3RhdGUoKTogSUZvck9mU3RhdGUge1xuICAgICAgICByZXR1cm4gdGhpcy52aXJ0RGlyLnN0YXRlO1xuICAgIH1cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSB2aXJ0dWFsaXplZCBkYXRhLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIHNldFxuICAgICAqIHRoaXMuY29tYm8udmlydHVhbGl6YXRpb25TdGF0ZShzdGF0ZSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldCB2aXJ0dWFsaXphdGlvblN0YXRlKHN0YXRlOiBJRm9yT2ZTdGF0ZSkge1xuICAgICAgICB0aGlzLnZpcnREaXIuc3RhdGUgPSBzdGF0ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGRyb3AgZG93biBzdGF0ZS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgc3RhdGUgPSB0aGlzLmNvbWJvLmNvbGxhcHNlZDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGNvbGxhcHNlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZHJvcGRvd24uY29sbGFwc2VkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgdG90YWwgY291bnQgb2YgdGhlIHZpcnR1YWwgZGF0YSBpdGVtcywgd2hlbiB1c2luZyByZW1vdGUgc2VydmljZS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgY291bnQgPSB0aGlzLmNvbWJvLnRvdGFsSXRlbUNvdW50O1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdG90YWxJdGVtQ291bnQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlydERpci50b3RhbEl0ZW1Db3VudDtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyB0b3RhbCBjb3VudCBvZiB0aGUgdmlydHVhbCBkYXRhIGl0ZW1zLCB3aGVuIHVzaW5nIHJlbW90ZSBzZXJ2aWNlLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIHNldFxuICAgICAqIHRoaXMuY29tYm8udG90YWxJdGVtQ291bnQocmVtb3RlU2VydmljZS5jb3VudCk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldCB0b3RhbEl0ZW1Db3VudChjb3VudDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMudmlydERpci50b3RhbEl0ZW1Db3VudCA9IGNvdW50O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBnZXQgdGVtcGxhdGUoKTogVGVtcGxhdGVSZWY8YW55PiB7XG4gICAgICAgIHRoaXMuX2RhdGFUeXBlID0gdGhpcy5kYXRhVHlwZTtcbiAgICAgICAgaWYgKHRoaXMuaXRlbVRlbXBsYXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pdGVtVGVtcGxhdGU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMuX2RhdGFUeXBlID09PSBEYXRhVHlwZXMuQ09NUExFWCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY29tcGxleFRlbXBsYXRlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLnByaW1pdGl2ZVRlbXBsYXRlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBjdXN0b21WYWx1ZUZsYWcgPSB0cnVlO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBmaWx0ZXJWYWx1ZSA9ICcnO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBkZWZhdWx0RmFsbGJhY2tHcm91cCA9ICdPdGhlcic7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGFjdGl2ZURlc2NlbmRhbnQgPSAnJztcblxuICAgIC8qKlxuICAgICAqIENvbmZpZ3VyZXMgdGhlIHdheSBjb21ibyBpdGVtcyB3aWxsIGJlIGZpbHRlcmVkLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBteUZpbHRlcmluZ09wdGlvbnMgPSB0aGlzLmNvbWJvLmZpbHRlcmluZ09wdGlvbnM7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpZ3gtY29tYm8gW2ZpbHRlcmluZ09wdGlvbnNdPSdteUZpbHRlcmluZ09wdGlvbnMnPjwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGZpbHRlcmluZ09wdGlvbnMoKTogSUNvbWJvRmlsdGVyaW5nT3B0aW9ucyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9maWx0ZXJpbmdPcHRpb25zIHx8IHRoaXMuX2RlZmF1bHRGaWx0ZXJpbmdPcHRpb25zO1xuICAgIH1cbiAgICBwdWJsaWMgc2V0IGZpbHRlcmluZ09wdGlvbnModmFsdWU6IElDb21ib0ZpbHRlcmluZ09wdGlvbnMpIHtcbiAgICAgICAgdGhpcy5fZmlsdGVyaW5nT3B0aW9ucyA9IHZhbHVlO1xuICAgIH1cbiAgICBwcm90ZWN0ZWQgX2RhdGEgPSBbXTtcbiAgICBwcm90ZWN0ZWQgX3ZhbHVlID0gW107XG4gICAgcHJvdGVjdGVkIF9kaXNwbGF5VmFsdWUgPSAnJztcbiAgICBwcm90ZWN0ZWQgX2dyb3VwS2V5ID0gJyc7XG4gICAgcHJvdGVjdGVkIF9zZWFyY2hWYWx1ZSA9ICcnO1xuICAgIHByb3RlY3RlZCBfZmlsdGVyZWREYXRhID0gW107XG4gICAgcHJvdGVjdGVkIF9kaXNwbGF5S2V5OiBzdHJpbmc7XG4gICAgcHJvdGVjdGVkIF9yZW1vdGVTZWxlY3Rpb24gPSB7fTtcbiAgICBwcm90ZWN0ZWQgX3Jlc291cmNlU3RyaW5ncyA9IGdldEN1cnJlbnRSZXNvdXJjZVN0cmluZ3MoQ29tYm9SZXNvdXJjZVN0cmluZ3NFTik7XG4gICAgcHJvdGVjdGVkIF92YWxpZCA9IElneElucHV0U3RhdGUuSU5JVElBTDtcbiAgICBwcm90ZWN0ZWQgbmdDb250cm9sOiBOZ0NvbnRyb2wgPSBudWxsO1xuICAgIHByb3RlY3RlZCBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG4gICAgcHJvdGVjdGVkIF9vblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XG4gICAgcHJvdGVjdGVkIF9vbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcbiAgICBwcm90ZWN0ZWQgY29tcGFyZUNvbGxhdG9yID0gbmV3IEludGwuQ29sbGF0b3IoKTtcbiAgICBwcm90ZWN0ZWQgY29tcHV0ZWRTdHlsZXM7XG5cbiAgICBwcml2YXRlIF9pZDogc3RyaW5nID0gYGlneC1jb21iby0ke05FWFRfSUQrK31gO1xuICAgIHByaXZhdGUgX3R5cGUgPSBudWxsO1xuICAgIHByaXZhdGUgX2RhdGFUeXBlID0gJyc7XG4gICAgcHJpdmF0ZSBfaXRlbUhlaWdodCA9IG51bGw7XG4gICAgcHJpdmF0ZSBfaXRlbXNNYXhIZWlnaHQgPSBudWxsO1xuICAgIHByaXZhdGUgX292ZXJsYXlTZXR0aW5nczogT3ZlcmxheVNldHRpbmdzO1xuICAgIHByaXZhdGUgX2dyb3VwU29ydGluZ0RpcmVjdGlvbjogU29ydGluZ0RpcmVjdGlvbiA9IFNvcnRpbmdEaXJlY3Rpb24uQXNjO1xuICAgIHByaXZhdGUgX2ZpbHRlcmluZ09wdGlvbnM6IElDb21ib0ZpbHRlcmluZ09wdGlvbnM7XG4gICAgcHJpdmF0ZSBfZGVmYXVsdEZpbHRlcmluZ09wdGlvbnM6IElDb21ib0ZpbHRlcmluZ09wdGlvbnMgPSB7IGNhc2VTZW5zaXRpdmU6IGZhbHNlLCBmaWx0ZXJhYmxlOiB0cnVlIH07XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgZHJvcGRvd246IElneENvbWJvRHJvcERvd25Db21wb25lbnQ7XG4gICAgcHVibGljIGFic3RyYWN0IHNlbGVjdGlvbkNoYW5naW5nOiBFdmVudEVtaXR0ZXI8YW55PjtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICAgICAgcHJvdGVjdGVkIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByb3RlY3RlZCBzZWxlY3Rpb25TZXJ2aWNlOiBJZ3hTZWxlY3Rpb25BUElTZXJ2aWNlLFxuICAgICAgICBwcm90ZWN0ZWQgY29tYm9BUEk6IElneENvbWJvQVBJU2VydmljZSxcbiAgICAgICAgQEluamVjdChET0NVTUVOVCkgcHVibGljIGRvY3VtZW50OiBEb2N1bWVudCxcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChJR1hfSU5QVVRfR1JPVVBfVFlQRSkgcHJvdGVjdGVkIF9pbnB1dEdyb3VwVHlwZTogSWd4SW5wdXRHcm91cFR5cGUsXG4gICAgICAgIEBPcHRpb25hbCgpIHByb3RlY3RlZCBfaW5qZWN0b3I6IEluamVjdG9yLFxuICAgICAgICBAT3B0aW9uYWwoKSBASW5qZWN0KElneEljb25TZXJ2aWNlKSBwcm90ZWN0ZWQgX2ljb25TZXJ2aWNlPzogSWd4SWNvblNlcnZpY2UsXG4gICAgKSB7IH1cblxuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0NoZWNrZWQoKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldEVsZW1lbnQgPSB0aGlzLmlucHV0R3JvdXAuZWxlbWVudC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5pZ3gtaW5wdXQtZ3JvdXBfX2J1bmRsZScpIGFzIEhUTUxFbGVtZW50O1xuXG4gICAgICAgIHRoaXMuX292ZXJsYXlTZXR0aW5ncyA9IHtcbiAgICAgICAgICAgIHRhcmdldDogdGFyZ2V0RWxlbWVudCxcbiAgICAgICAgICAgIHNjcm9sbFN0cmF0ZWd5OiBuZXcgQWJzb2x1dGVTY3JvbGxTdHJhdGVneSgpLFxuICAgICAgICAgICAgcG9zaXRpb25TdHJhdGVneTogbmV3IEF1dG9Qb3NpdGlvblN0cmF0ZWd5KCksXG4gICAgICAgICAgICBtb2RhbDogZmFsc2UsXG4gICAgICAgICAgICBjbG9zZU9uT3V0c2lkZUNsaWNrOiB0cnVlLFxuICAgICAgICAgICAgZXhjbHVkZUZyb21PdXRzaWRlQ2xpY2s6IFt0YXJnZXRFbGVtZW50XVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBuZ0FmdGVyQ29udGVudENoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlucHV0R3JvdXAgJiYgdGhpcy5wcmVmaXhlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dEdyb3VwLnByZWZpeGVzID0gdGhpcy5wcmVmaXhlcztcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmlucHV0R3JvdXAgJiYgdGhpcy5zdWZmaXhlcz8ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dEdyb3VwLnN1ZmZpeGVzID0gdGhpcy5zdWZmaXhlcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBuZ09uSW5pdCgpIHtcblxuICAgICAgICB0aGlzLm5nQ29udHJvbCA9IHRoaXMuX2luamVjdG9yLmdldDxOZ0NvbnRyb2w+KE5nQ29udHJvbCwgbnVsbCk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5zZXQodGhpcy5pZCwgbmV3IFNldCgpKTtcbiAgICAgICAgdGhpcy5faWNvblNlcnZpY2U/LmFkZFN2Z0ljb25Gcm9tVGV4dChjYXNlU2Vuc2l0aXZlLm5hbWUsIGNhc2VTZW5zaXRpdmUudmFsdWUsICdpbXgtaWNvbnMnKTtcbiAgICAgICAgdGhpcy5jb21wdXRlZFN0eWxlcyA9IHRoaXMuZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5maWx0ZXJlZERhdGEgPSBbLi4udGhpcy5kYXRhXTtcbiAgICAgICAgaWYgKHRoaXMubmdDb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLm5nQ29udHJvbC5zdGF0dXNDaGFuZ2VzLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUodGhpcy5vblN0YXR1c0NoYW5nZWQpO1xuICAgICAgICAgICAgdGhpcy5tYW5hZ2VSZXF1aXJlZEFzdGVyaXNrKCk7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy52aXJ0RGlyLmNodW5rUHJlbG9hZC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKChlOiBJRm9yT2ZTdGF0ZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZXZlbnRBcmdzOiBJRm9yT2ZTdGF0ZSA9IE9iamVjdC5hc3NpZ24oe30sIGUsIHsgb3duZXI6IHRoaXMgfSk7XG4gICAgICAgICAgICB0aGlzLmRhdGFQcmVMb2FkLmVtaXQoZXZlbnRBcmdzKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgICAgICB0aGlzLmNvbWJvQVBJLmNsZWFyKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uU2VydmljZS5kZWxldGUodGhpcy5pZCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBtZXRob2QgdGhhdCBvcGVucy9jbG9zZXMgdGhlIGNvbWJvLlxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjb21iby50b2dnbGUoKVwiPlRvZ2dsZSBDb21ibzwvYnV0dG9uPlxuICAgICAqIDxpZ3gtY29tYm8gI2NvbWJvPjwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyB0b2dnbGUoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlZCAmJiB0aGlzLl9kaXNwbGF5VmFsdWUubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlclZhbHVlID0gJyc7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3ZlcmxheVNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fb3ZlcmxheVNldHRpbmdzLCB0aGlzLm92ZXJsYXlTZXR0aW5ncyk7XG4gICAgICAgIHRoaXMuZHJvcGRvd24udG9nZ2xlKG92ZXJsYXlTZXR0aW5ncyk7XG4gICAgICAgIGlmICghdGhpcy5jb2xsYXBzZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0QWN0aXZlRGVzY2VuZGFudCgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQSBtZXRob2QgdGhhdCBvcGVucyB0aGUgY29tYm8uXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNvbWJvLm9wZW4oKVwiPk9wZW4gQ29tYm88L2J1dHRvbj5cbiAgICAgKiA8aWd4LWNvbWJvICNjb21ibz48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgb3BlbigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuY29sbGFwc2VkICYmIHRoaXMuX2Rpc3BsYXlWYWx1ZS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyVmFsdWUgPSAnJztcbiAgICAgICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvdmVybGF5U2V0dGluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9vdmVybGF5U2V0dGluZ3MsIHRoaXMub3ZlcmxheVNldHRpbmdzKTtcbiAgICAgICAgdGhpcy5kcm9wZG93bi5vcGVuKG92ZXJsYXlTZXR0aW5ncyk7XG4gICAgICAgIHRoaXMuc2V0QWN0aXZlRGVzY2VuZGFudCgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgbWV0aG9kIHRoYXQgY2xvc2VzIHRoZSBjb21iby5cbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY29tYm8uY2xvc2UoKVwiPkNsb3NlIENvbWJvPC9idXR0b24+XG4gICAgICogPGlneC1jb21ibyAjY29tYm8+PC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGNsb3NlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmRyb3Bkb3duLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVHJpZ2dlcnMgY2hhbmdlIGRldGVjdGlvbiBvbiB0aGUgY29tYm8gdmlld1xuICAgICAqL1xuICAgIHB1YmxpYyB0cmlnZ2VyQ2hlY2soKSB7XG4gICAgICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXQgY3VycmVudCBzZWxlY3Rpb24gc3RhdGVcbiAgICAgKlxuICAgICAqIEByZXR1cm5zIEFycmF5IG9mIHNlbGVjdGVkIGl0ZW1zXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBteVNlbGVjdGlvbiA9IHRoaXMuY29tYm8uc2VsZWN0aW9uO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgc2VsZWN0aW9uKCk6IGFueVtdIHtcbiAgICAgICAgY29uc3QgaXRlbXMgPSBBcnJheS5mcm9tKHRoaXMuc2VsZWN0aW9uU2VydmljZS5nZXQodGhpcy5pZCkpO1xuICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0S2V5c1RvSXRlbXMoaXRlbXMpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgaWYgdGhlIHNwZWNpZmllZCBpdGVtSUQgaXMgc2VsZWN0ZWRcbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNJdGVtU2VsZWN0ZWQoaXRlbTogYW55KTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGlvblNlcnZpY2UuaXNfaXRlbV9zZWxlY3RlZCh0aGlzLmlkLCBpdGVtKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IHRvZ2dsZUljb24oKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZHJvcGRvd24uY29sbGFwc2VkID8gJ2lucHV0X2V4cGFuZCcgOiAnaW5wdXRfY29sbGFwc2UnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBhZGRJdGVtVG9Db2xsZWN0aW9uKCkge1xuICAgICAgICBpZiAoIXRoaXMuc2VhcmNoVmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBhZGRlZEl0ZW0gPSB0aGlzLmRpc3BsYXlLZXkgPyB7XG4gICAgICAgICAgICBbdGhpcy52YWx1ZUtleV06IHRoaXMuc2VhcmNoVmFsdWUsXG4gICAgICAgICAgICBbdGhpcy5kaXNwbGF5S2V5XTogdGhpcy5zZWFyY2hWYWx1ZVxuICAgICAgICB9IDogdGhpcy5zZWFyY2hWYWx1ZTtcbiAgICAgICAgaWYgKHRoaXMuZ3JvdXBLZXkpIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24oYWRkZWRJdGVtLCB7IFt0aGlzLmdyb3VwS2V5XTogdGhpcy5kZWZhdWx0RmFsbGJhY2tHcm91cCB9KTtcbiAgICAgICAgfVxuICAgICAgICAvLyBleHBvc2Ugc2hhbGxvdyBjb3B5IGluc3RlYWQgb2YgdGhpcy5kYXRhIGluIGV2ZW50IGFyZ3Mgc28gdGhpcy5kYXRhIGNhbid0IGJlIG11dGF0ZWRcbiAgICAgICAgY29uc3Qgb2xkQ29sbGVjdGlvbiA9IFsuLi50aGlzLmRhdGFdO1xuICAgICAgICBjb25zdCBuZXdDb2xsZWN0aW9uID0gWy4uLnRoaXMuZGF0YSwgYWRkZWRJdGVtXTtcbiAgICAgICAgY29uc3QgYXJnczogSUNvbWJvSXRlbUFkZGl0aW9uRXZlbnQgPSB7XG4gICAgICAgICAgICBvbGRDb2xsZWN0aW9uLCBhZGRlZEl0ZW0sIG5ld0NvbGxlY3Rpb24sIG93bmVyOiB0aGlzLCBjYW5jZWw6IGZhbHNlXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuYWRkaXRpb24uZW1pdChhcmdzKTtcbiAgICAgICAgaWYgKGFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5kYXRhLnB1c2goYXJncy5hZGRlZEl0ZW0pO1xuICAgICAgICAvLyB0cmlnZ2VyIHJlLXJlbmRlclxuICAgICAgICB0aGlzLmRhdGEgPSBjbG9uZUFycmF5KHRoaXMuZGF0YSk7XG4gICAgICAgIHRoaXMuc2VsZWN0KHRoaXMudmFsdWVLZXkgIT09IG51bGwgJiYgdGhpcy52YWx1ZUtleSAhPT0gdW5kZWZpbmVkID9cbiAgICAgICAgICAgIFthcmdzLmFkZGVkSXRlbVt0aGlzLnZhbHVlS2V5XV0gOiBbYXJncy5hZGRlZEl0ZW1dLCBmYWxzZSk7XG4gICAgICAgIHRoaXMuY3VzdG9tVmFsdWVGbGFnID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXQ/Lm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5kcm9wZG93bi5mb2N1c2VkSXRlbSA9IG51bGw7XG4gICAgICAgIHRoaXMudmlydERpci5zY3JvbGxUbygwKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaXNBZGRCdXR0b25WaXNpYmxlKCk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBUaGlzIHNob3VsZCBhbHdheXMgcmV0dXJuIGEgYm9vbGVhbiB2YWx1ZS4gSWYgdGhpcy5zZWFyY2hWYWx1ZSB3YXMgJycsIGl0IHJldHVybnMgJycgaW5zdGVhZCBvZiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoVmFsdWUgIT09ICcnICYmIHRoaXMuY3VzdG9tVmFsdWVGbGFnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBoYW5kbGVJbnB1dENoYW5nZShldmVudD86IGFueSkge1xuICAgICAgICBpZiAoZXZlbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc3QgYXJnczogSUNvbWJvU2VhcmNoSW5wdXRFdmVudEFyZ3MgPSB7XG4gICAgICAgICAgICAgICAgc2VhcmNoVGV4dDogdHlwZW9mIGV2ZW50ID09PSAnc3RyaW5nJyA/IGV2ZW50IDogZXZlbnQudGFyZ2V0LnZhbHVlLFxuICAgICAgICAgICAgICAgIG93bmVyOiB0aGlzLFxuICAgICAgICAgICAgICAgIGNhbmNlbDogZmFsc2VcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLnNlYXJjaElucHV0VXBkYXRlLmVtaXQoYXJncyk7XG4gICAgICAgICAgICBpZiAoYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZpbHRlclZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLmNoZWNrTWF0Y2goKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFdmVudCBoYW5kbGVyc1xuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBoYW5kbGVPcGVuaW5nKGU6IElCYXNlQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MpIHtcbiAgICAgICAgY29uc3QgYXJnczogSUJhc2VDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncyA9IHsgb3duZXI6IHRoaXMsIGV2ZW50OiBlLmV2ZW50LCBjYW5jZWw6IGUuY2FuY2VsIH07XG4gICAgICAgIHRoaXMub3BlbmluZy5lbWl0KGFyZ3MpO1xuICAgICAgICBlLmNhbmNlbCA9IGFyZ3MuY2FuY2VsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBoYW5kbGVDbG9zaW5nKGU6IElCYXNlQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MpIHtcbiAgICAgICAgY29uc3QgYXJnczogSUJhc2VDYW5jZWxhYmxlQnJvd3NlckV2ZW50QXJncyA9IHsgb3duZXI6IHRoaXMsIGV2ZW50OiBlLmV2ZW50LCBjYW5jZWw6IGUuY2FuY2VsIH07XG4gICAgICAgIHRoaXMuY2xvc2luZy5lbWl0KGFyZ3MpO1xuICAgICAgICBlLmNhbmNlbCA9IGFyZ3MuY2FuY2VsO1xuICAgICAgICBpZiAoZS5jYW5jZWwpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnNlYXJjaFZhbHVlID0gJyc7XG4gICAgICAgIGlmICghZS5ldmVudCkge1xuICAgICAgICAgICAgdGhpcy5jb21ib0lucHV0Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaGFuZGxlQ2xvc2VkKCkge1xuICAgICAgICB0aGlzLmNsb3NlZC5lbWl0KHsgb3duZXI6IHRoaXMgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGhhbmRsZUtleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93VXAnIHx8IGV2ZW50LmtleSA9PT0gJ1VwJykge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgdGhpcy5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIHJlZ2lzdGVyT25DaGFuZ2UoZm46IGFueSk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrID0gZm47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIHJlZ2lzdGVyT25Ub3VjaGVkKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgc2V0RGlzYWJsZWRTdGF0ZShpc0Rpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZGlzYWJsZWQgPSBpc0Rpc2FibGVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBvbkNsaWNrKGV2ZW50OiBFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgaWYgKCF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICB0aGlzLnRvZ2dsZSgpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG9uQmx1cigpIHtcbiAgICAgICAgaWYgKHRoaXMuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICB0aGlzLl9vblRvdWNoZWRDYWxsYmFjaygpO1xuICAgICAgICAgICAgaWYgKHRoaXMubmdDb250cm9sICYmIHRoaXMubmdDb250cm9sLmludmFsaWQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkID0gSWd4SW5wdXRTdGF0ZS5JTlZBTElEO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkID0gSWd4SW5wdXRTdGF0ZS5JTklUSUFMO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIHNldEFjdGl2ZURlc2NlbmRhbnQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYWN0aXZlRGVzY2VuZGFudCA9IHRoaXMuZHJvcGRvd24uZm9jdXNlZEl0ZW0/LmlkIHx8ICcnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyB0b2dnbGVDYXNlU2Vuc2l0aXZlKCkge1xuICAgICAgICB0aGlzLmZpbHRlcmluZ09wdGlvbnMgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLmZpbHRlcmluZ09wdGlvbnMsIHsgY2FzZVNlbnNpdGl2ZTogIXRoaXMuZmlsdGVyaW5nT3B0aW9ucy5jYXNlU2Vuc2l0aXZlIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBvblN0YXR1c0NoYW5nZWQgPSAoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCAmJiB0aGlzLmlzVG91Y2hlZE9yRGlydHkgJiYgIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmhhc1ZhbGlkYXRvcnMgJiYgKCF0aGlzLmNvbGxhcHNlZCB8fCB0aGlzLmlucHV0R3JvdXAuaXNGb2N1c2VkKSkge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsaWQgPSB0aGlzLm5nQ29udHJvbC52YWxpZCA/IElneElucHV0U3RhdGUuVkFMSUQgOiBJZ3hJbnB1dFN0YXRlLklOVkFMSUQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHRoaXMudmFsaWQgPSB0aGlzLm5nQ29udHJvbC52YWxpZCA/IElneElucHV0U3RhdGUuSU5JVElBTCA6IElneElucHV0U3RhdGUuSU5WQUxJRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEIuUC4gMTggTWF5IDIwMjE6IElneERhdGVQaWNrZXIgZG9lcyBub3QgcmVzZXQgaXRzIHN0YXRlIHVwb24gcmVzZXRGb3JtICM5NTI2XG4gICAgICAgICAgICB0aGlzLnZhbGlkID0gSWd4SW5wdXRTdGF0ZS5JTklUSUFMO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubWFuYWdlUmVxdWlyZWRBc3RlcmlzaygpO1xuICAgIH07XG5cbiAgICBwcml2YXRlIGdldCBpc1RvdWNoZWRPckRpcnR5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKHRoaXMubmdDb250cm9sLmNvbnRyb2wudG91Y2hlZCB8fCB0aGlzLm5nQ29udHJvbC5jb250cm9sLmRpcnR5KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBoYXNWYWxpZGF0b3JzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gKCEhdGhpcy5uZ0NvbnRyb2wuY29udHJvbC52YWxpZGF0b3IgfHwgISF0aGlzLm5nQ29udHJvbC5jb250cm9sLmFzeW5jVmFsaWRhdG9yKTtcbiAgICB9XG5cbiAgICAvKiogaWYgdGhlcmUgaXMgYSB2YWx1ZUtleSAtIG1hcCB0aGUga2V5cyB0byBkYXRhIGl0ZW1zLCBlbHNlIC0ganVzdCByZXR1cm4gdGhlIGtleXMgKi9cbiAgICBwcm90ZWN0ZWQgY29udmVydEtleXNUb0l0ZW1zKGtleXM6IGFueVtdKSB7XG4gICAgICAgIGlmICh0aGlzLnZhbHVlS2V5ID09PSBudWxsIHx8IHRoaXMudmFsdWVLZXkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIGtleXM7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ga2V5cy5tYXAoa2V5ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmRhdGEuZmluZChlbnRyeSA9PiBpc0VxdWFsKGVudHJ5W3RoaXMudmFsdWVLZXldLCBrZXkpKTtcblxuICAgICAgICAgICAgcmV0dXJuIGl0ZW0gIT09IHVuZGVmaW5lZCA/IGl0ZW0gOiB7IFt0aGlzLnZhbHVlS2V5XToga2V5IH07XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjaGVja01hdGNoKCk6IHZvaWQge1xuICAgICAgICBjb25zdCBpdGVtTWF0Y2ggPSB0aGlzLmZpbHRlcmVkRGF0YS5zb21lKHRoaXMuZmluZE1hdGNoKTtcbiAgICAgICAgdGhpcy5jdXN0b21WYWx1ZUZsYWcgPSB0aGlzLmFsbG93Q3VzdG9tVmFsdWVzICYmICFpdGVtTWF0Y2g7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGZpbmRNYXRjaCA9IChlbGVtZW50OiBhbnkpOiBib29sZWFuID0+IHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLmRpc3BsYXlLZXkgPyBlbGVtZW50W3RoaXMuZGlzcGxheUtleV0gOiBlbGVtZW50O1xuICAgICAgICBjb25zdCBzZWFyY2hWYWx1ZSA9IHRoaXMuc2VhcmNoVmFsdWUgfHwgdGhpcy5jb21ib0lucHV0Py52YWx1ZTtcbiAgICAgICAgcmV0dXJuIHZhbHVlPy50b1N0cmluZygpLnRyaW0oKS50b0xvd2VyQ2FzZSgpID09PSBzZWFyY2hWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICB9O1xuXG4gICAgcHJvdGVjdGVkIG1hbmFnZVJlcXVpcmVkQXN0ZXJpc2soKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgaWYgKHRoaXMubmdDb250cm9sLmNvbnRyb2wudmFsaWRhdG9yKSB7XG4gICAgICAgICAgICAgICAgLy8gUnVuIHRoZSB2YWxpZGF0aW9uIHdpdGggZW1wdHkgb2JqZWN0IHRvIGNoZWNrIGlmIHJlcXVpcmVkIGlzIGVuYWJsZWQuXG4gICAgICAgICAgICAgICAgY29uc3QgZXJyb3IgPSB0aGlzLm5nQ29udHJvbC5jb250cm9sLnZhbGlkYXRvcih7fSBhcyBBYnN0cmFjdENvbnRyb2wpO1xuICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRHcm91cC5pc1JlcXVpcmVkID0gZXJyb3IgJiYgZXJyb3IucmVxdWlyZWQ7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIFAuTS4gMTggTWF5IDIwMjI6IElneENvbWJvJ3MgYXN0ZXJpc2sgbm90IHJlbW92ZWQgd2hlbiByZW1vdmluZyByZXF1aXJlZCB2YWxpZGF0b3IgZHluYW1pY2FsbHkgaW4gcmVhY3RpdmUgZm9ybSAjMTE1NDNcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0R3JvdXAuaXNSZXF1aXJlZCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIENvbnRhaW5zIGtleS12YWx1ZSBwYWlycyBvZiB0aGUgc2VsZWN0ZWQgdmFsdWVLZXlzIGFuZCB0aGVpciByZXNwLiBkaXNwbGF5S2V5cyAqL1xuICAgIHByb3RlY3RlZCByZWdpc3RlclJlbW90ZUVudHJpZXMoaWRzOiBhbnlbXSwgYWRkID0gdHJ1ZSkge1xuICAgICAgICBpZiAoYWRkKSB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLmdldFZhbHVlRGlzcGxheVBhaXJzKGlkcyk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIHNlbGVjdGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuX3JlbW90ZVNlbGVjdGlvbltlbnRyeVt0aGlzLnZhbHVlS2V5XV0gPSBlbnRyeVt0aGlzLmRpc3BsYXlLZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBpZHMpIHtcbiAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fcmVtb3RlU2VsZWN0aW9uW2VudHJ5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEZvciBgaWQ6IGFueVtdYCByZXR1cm5zIGEgbWFwcGVkIGB7IFtjb21iby52YWx1ZUtleV06IGFueSwgW2NvbWJvLmRpc3BsYXlLZXldOiBhbnkgfVtdYFxuICAgICAqL1xuICAgIHByb3RlY3RlZCBnZXRWYWx1ZURpc3BsYXlQYWlycyhpZHM6IGFueVtdKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRhdGEuZmlsdGVyKGVudHJ5ID0+IGlkcy5pbmRleE9mKGVudHJ5W3RoaXMudmFsdWVLZXldKSA+IC0xKS5tYXAoZSA9PiAoe1xuICAgICAgICAgICAgW3RoaXMudmFsdWVLZXldOiBlW3RoaXMudmFsdWVLZXldLFxuICAgICAgICAgICAgW3RoaXMuZGlzcGxheUtleV06IGVbdGhpcy5kaXNwbGF5S2V5XVxuICAgICAgICB9KSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldFJlbW90ZVNlbGVjdGlvbihuZXdTZWxlY3Rpb246IGFueVtdLCBvbGRTZWxlY3Rpb246IGFueVtdKTogc3RyaW5nIHtcbiAgICAgICAgaWYgKCFuZXdTZWxlY3Rpb24ubGVuZ3RoKSB7XG4gICAgICAgICAgICAvLyBJZiBuZXcgc2VsZWN0aW9uIGlzIGVtcHR5LCBjbGVhciBhbGwgaXRlbXNcbiAgICAgICAgICAgIHRoaXMucmVnaXN0ZXJSZW1vdGVFbnRyaWVzKG9sZFNlbGVjdGlvbiwgZmFsc2UpO1xuICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHJlbW92ZWRJdGVtcyA9IG9sZFNlbGVjdGlvbi5maWx0ZXIoZSA9PiBuZXdTZWxlY3Rpb24uaW5kZXhPZihlKSA8IDApO1xuICAgICAgICBjb25zdCBhZGRlZEl0ZW1zID0gbmV3U2VsZWN0aW9uLmZpbHRlcihlID0+IG9sZFNlbGVjdGlvbi5pbmRleE9mKGUpIDwgMCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJSZW1vdGVFbnRyaWVzKGFkZGVkSXRlbXMpO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyUmVtb3RlRW50cmllcyhyZW1vdmVkSXRlbXMsIGZhbHNlKTtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuX3JlbW90ZVNlbGVjdGlvbikubWFwKGUgPT4gdGhpcy5fcmVtb3RlU2VsZWN0aW9uW2VdKS5qb2luKCcsICcpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXQgcmVxdWlyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCAmJiB0aGlzLm5nQ29udHJvbC5jb250cm9sICYmIHRoaXMubmdDb250cm9sLmNvbnRyb2wudmFsaWRhdG9yKSB7XG4gICAgICAgICAgICAvLyBSdW4gdGhlIHZhbGlkYXRpb24gd2l0aCBlbXB0eSBvYmplY3QgdG8gY2hlY2sgaWYgcmVxdWlyZWQgaXMgZW5hYmxlZC5cbiAgICAgICAgICAgIGNvbnN0IGVycm9yID0gdGhpcy5uZ0NvbnRyb2wuY29udHJvbC52YWxpZGF0b3Ioe30gYXMgQWJzdHJhY3RDb250cm9sKTtcbiAgICAgICAgICAgIHJldHVybiBlcnJvciAmJiBlcnJvci5yZXF1aXJlZDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgZ2V0IGZpbHRlcmVkRGF0YSgpOiBhbnlbXSB8IG51bGw7XG4gICAgcHVibGljIGFic3RyYWN0IHNldCBmaWx0ZXJlZERhdGEodmFsOiBhbnlbXSB8IG51bGwpO1xuXG4gICAgcHVibGljIGFic3RyYWN0IGhhbmRsZU9wZW5lZCgpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBvbkFycm93RG93bihldmVudDogRXZlbnQpO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBmb2N1c1NlYXJjaElucHV0KG9wZW5pbmc/OiBib29sZWFuKTtcblxuICAgIHB1YmxpYyBhYnN0cmFjdCBzZWxlY3QobmV3SXRlbTogYW55KTogdm9pZDtcbiAgICBwdWJsaWMgYWJzdHJhY3Qgc2VsZWN0KG5ld0l0ZW1zOiBBcnJheTxhbnk+IHwgYW55LCBjbGVhckN1cnJlbnRTZWxlY3Rpb24/OiBib29sZWFuLCBldmVudD86IEV2ZW50KTogdm9pZDtcblxuICAgIHB1YmxpYyBhYnN0cmFjdCBkZXNlbGVjdCguLi5hcmdzOiBbXSB8IFtpdGVtczogQXJyYXk8YW55PiwgZXZlbnQ/OiBFdmVudF0pOiB2b2lkO1xuXG4gICAgcHVibGljIGFic3RyYWN0IHdyaXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQ7XG5cbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3Qgc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbjogU2V0PGFueT4sIGV2ZW50PzogRXZlbnQpOiB2b2lkO1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBjcmVhdGVEaXNwbGF5VGV4dChuZXdTZWxlY3Rpb246IGFueVtdLCBvbGRTZWxlY3Rpb246IGFueVtdKTtcbn1cbiJdfQ==
1197
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tYm8uY29tbW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2NvbWJvL2NvbWJvLmNvbW1vbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUgsZ0JBQWdCLEVBRWhCLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUVULFlBQVksRUFDWixVQUFVLEVBQ1YsV0FBVyxFQUNYLE1BQU0sRUFDTixjQUFjLEVBRWQsS0FBSyxFQUdMLFFBQVEsRUFDUixNQUFNLEVBRU4sV0FBVyxFQUNYLFNBQVMsRUFDWixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXlDLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNsRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUNyQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFM0MsT0FBTyxFQUE4QixVQUFVLEVBQW1ELEdBQUcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM3SCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN2RSxPQUFPLEVBQWUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN2RixPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDdEQsT0FBTyxFQUFxQixvQkFBb0IsRUFBRSxNQUFNLCtCQUErQixDQUFDO0FBQ3hGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxzQkFBc0IsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsa0JBQWtCLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNoSyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsb0JBQW9CLEVBQW1CLE1BQU0sd0JB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QUFDLHVCQUF1QixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJMUMsaUJBQWlCO3NCQUQxQixTQUFTO3VCQUFDLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFJakQsZUFBZTtzQkFEeEIsU0FBUzt1QkFBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBSS9DLFFBQVE7c0JBRGpCLGVBQWU7dUJBQUMsa0JBQWtCLEVBQUUsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFO2dCQUloRCxRQUFRO3NCQURqQixlQUFlO3VCQUFDLGtCQUFrQixFQUFFLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRTtnQkF5Sy9DLGdCQUFnQjtzQkFEMUIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgYm9vbGVhbkF0dHJpYnV0ZSxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIERpcmVjdGl2ZSxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBmb3J3YXJkUmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEluamVjdCxcbiAgICBJbmplY3Rpb25Ub2tlbixcbiAgICBJbmplY3RvcixcbiAgICBJbnB1dCxcbiAgICBPbkRlc3Ryb3ksXG4gICAgT25Jbml0LFxuICAgIE9wdGlvbmFsLFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgVGVtcGxhdGVSZWYsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWJzdHJhY3RDb250cm9sLCBDb250cm9sVmFsdWVBY2Nlc3NvciwgTmdDb250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgY2FzZVNlbnNpdGl2ZSB9IGZyb20gJ0BpZ25pdGV1aS9tYXRlcmlhbC1pY29ucy1leHRlbmRlZCc7XG5pbXBvcnQgeyBub29wLCBTdWJqZWN0IH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBJZ3hTZWxlY3Rpb25BUElTZXJ2aWNlIH0gZnJvbSAnLi4vY29yZS9zZWxlY3Rpb24nO1xuaW1wb3J0IHsgQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MsIGNsb25lQXJyYXksIElCYXNlQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MsIElCYXNlRXZlbnRBcmdzLCByZW0gfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IFNvcnRpbmdEaXJlY3Rpb24gfSBmcm9tICcuLi9kYXRhLW9wZXJhdGlvbnMvc29ydGluZy1zdHJhdGVneSc7XG5pbXBvcnQgeyBJRm9yT2ZTdGF0ZSwgSWd4Rm9yT2ZEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL2Zvci1vZi9mb3Jfb2YuZGlyZWN0aXZlJztcbmltcG9ydCB7IElneEljb25TZXJ2aWNlIH0gZnJvbSAnLi4vaWNvbi9pY29uLnNlcnZpY2UnO1xuaW1wb3J0IHsgSWd4SW5wdXRHcm91cFR5cGUsIElHWF9JTlBVVF9HUk9VUF9UWVBFIH0gZnJvbSAnLi4vaW5wdXQtZ3JvdXAvaW5wdXRHcm91cFR5cGUnO1xuaW1wb3J0IHsgSWd4SW5wdXREaXJlY3RpdmUsIElneElucHV0R3JvdXBDb21wb25lbnQsIElneElucHV0U3RhdGUsIElneExhYmVsRGlyZWN0aXZlLCBJZ3hQcmVmaXhEaXJlY3RpdmUsIElneFN1ZmZpeERpcmVjdGl2ZSB9IGZyb20gJy4uL2lucHV0LWdyb3VwL3B1YmxpY19hcGknO1xuaW1wb3J0IHsgQWJzb2x1dGVTY3JvbGxTdHJhdGVneSwgQXV0b1Bvc2l0aW9uU3RyYXRlZ3ksIE92ZXJsYXlTZXR0aW5ncyB9IGZyb20gJy4uL3NlcnZpY2VzL3B1YmxpY19hcGknO1xuaW1wb3J0IHsgSWd4Q29tYm9Ecm9wRG93bkNvbXBvbmVudCB9IGZyb20gJy4vY29tYm8tZHJvcGRvd24uY29tcG9uZW50JztcbmltcG9ydCB7IElneENvbWJvQVBJU2VydmljZSB9IGZyb20gJy4vY29tYm8uYXBpJztcbmltcG9ydCB7XG4gICAgSWd4Q29tYm9BZGRJdGVtRGlyZWN0aXZlLCBJZ3hDb21ib0NsZWFySWNvbkRpcmVjdGl2ZSwgSWd4Q29tYm9FbXB0eURpcmVjdGl2ZSxcbiAgICBJZ3hDb21ib0Zvb3RlckRpcmVjdGl2ZSwgSWd4Q29tYm9IZWFkZXJEaXJlY3RpdmUsIElneENvbWJvSGVhZGVySXRlbURpcmVjdGl2ZSwgSWd4Q29tYm9JdGVtRGlyZWN0aXZlLCBJZ3hDb21ib1RvZ2dsZUljb25EaXJlY3RpdmVcbn0gZnJvbSAnLi9jb21iby5kaXJlY3RpdmVzJztcbmltcG9ydCB7IElDb21ib0l0ZW1BZGRpdGlvbkV2ZW50LCBJQ29tYm9TZWFyY2hJbnB1dEV2ZW50QXJncyB9IGZyb20gJy4vcHVibGljX2FwaSc7XG5pbXBvcnQgeyBDb21ib1Jlc291cmNlU3RyaW5nc0VOLCBJQ29tYm9SZXNvdXJjZVN0cmluZ3MgfSBmcm9tICcuLi9jb3JlL2kxOG4vY29tYm8tcmVzb3VyY2VzJztcbmltcG9ydCB7IGdldEN1cnJlbnRSZXNvdXJjZVN0cmluZ3MgfSBmcm9tICcuLi9jb3JlL2kxOG4vcmVzb3VyY2VzJztcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFNpemUgfSBmcm9tICcuLi9ncmlkcy9jb21tb24vZW51bXMnO1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ2xvZGFzaC1lcyc7XG5cbmV4cG9ydCBjb25zdCBJR1hfQ09NQk9fQ09NUE9ORU5UID0gLypAX19QVVJFX18qL25ldyBJbmplY3Rpb25Ub2tlbjxJZ3hDb21ib0Jhc2U+KCdJZ3hDb21ib0NvbXBvbmVudFRva2VuJyk7XG5cbi8qKiBAaGlkZGVuIEBpbnRlcm5hbCBUT0RPOiBFdmFsdWF0ZSAqL1xuZXhwb3J0IGludGVyZmFjZSBJZ3hDb21ib0Jhc2Uge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgZGF0YTogYW55W10gfCBudWxsO1xuICAgIHZhbHVlS2V5OiBzdHJpbmc7XG4gICAgZ3JvdXBLZXk6IHN0cmluZztcbiAgICBpc1JlbW90ZTogYm9vbGVhbjtcbiAgICBmaWx0ZXJlZERhdGE6IGFueVtdIHwgbnVsbDtcbiAgICB0b3RhbEl0ZW1Db3VudDogbnVtYmVyO1xuICAgIGl0ZW1zTWF4SGVpZ2h0OiBudW1iZXI7XG4gICAgaXRlbUhlaWdodDogbnVtYmVyO1xuICAgIHNlYXJjaFZhbHVlOiBzdHJpbmc7XG4gICAgc2VhcmNoSW5wdXQ6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD47XG4gICAgY29tYm9JbnB1dDogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PjtcbiAgICBvcGVuZWQ6IEV2ZW50RW1pdHRlcjxJQmFzZUV2ZW50QXJncz47XG4gICAgb3BlbmluZzogRXZlbnRFbWl0dGVyPENhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzPjtcbiAgICBjbG9zaW5nOiBFdmVudEVtaXR0ZXI8Q2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3M+O1xuICAgIGNsb3NlZDogRXZlbnRFbWl0dGVyPElCYXNlRXZlbnRBcmdzPjtcbiAgICBmb2N1c1NlYXJjaElucHV0KG9wZW5pbmc/OiBib29sZWFuKTogdm9pZDtcbiAgICB0cmlnZ2VyQ2hlY2soKTogdm9pZDtcbiAgICBhZGRJdGVtVG9Db2xsZWN0aW9uKCk6IHZvaWQ7XG4gICAgaXNBZGRCdXR0b25WaXNpYmxlKCk6IGJvb2xlYW47XG4gICAgaGFuZGxlSW5wdXRDaGFuZ2UoZXZlbnQ/OiBzdHJpbmcpOiB2b2lkO1xuICAgIGlzSXRlbVNlbGVjdGVkKGl0ZW1JRDogYW55KTogYm9vbGVhbjtcbiAgICBzZWxlY3QoaXRlbTogYW55KTogdm9pZDtcbiAgICBzZWxlY3QoaXRlbUlEczogYW55W10sIGNsZWFyU2VsZWN0aW9uPzogYm9vbGVhbiwgZXZlbnQ/OiBFdmVudCk6IHZvaWQ7XG4gICAgZGVzZWxlY3QoLi4uYXJnczogW10gfCBbaXRlbUlEczogYW55W10sIGV2ZW50PzogRXZlbnRdKTogdm9pZDtcbiAgICBzZXRBY3RpdmVEZXNjZW5kYW50KCk6IHZvaWQ7XG59XG5cbmxldCBORVhUX0lEID0gMDtcblxuLyoqXG4gKiBAaGlkZGVuXG4gKiBUaGUgZGVmYXVsdCBudW1iZXIgb2YgaXRlbXMgdGhhdCBzaG91bGQgYmUgaW4gdGhlIGNvbWJvJ3NcbiAqIGRyb3AtZG93biBsaXN0IGlmIG5vIGBbaXRlbXNNYXhIZWlnaHRdYCBpcyBzcGVjaWZpZWRcbiAqL1xuY29uc3QgaXRlbXNJbkNvbnRhaW5lciA9IDEwOyAvLyBUT0RPOiBtYWtlIHByaXZhdGUgcmVhZG9ubHlcblxuLyoqIEBoaWRkZW4gQGludGVybmFsICovXG5jb25zdCBJdGVtSGVpZ2h0cyA9IHtcbiAgICBcIjNcIjogNDAsXG4gICAgXCIyXCI6IDMyLFxuICAgIFwiMVwiOiAyOFxufTtcblxuLyoqIEBoaWRkZW4gQGludGVybmFsICovXG5leHBvcnQgY29uc3QgZW51bSBEYXRhVHlwZXMge1xuICAgIEVNUFRZID0gJ2VtcHR5JyxcbiAgICBQUklNSVRJVkUgPSAncHJpbWl0aXZlJyxcbiAgICBDT01QTEVYID0gJ2NvbXBsZXgnLFxuICAgIFBSSU1BUllLRVkgPSAndmFsdWVLZXknXG59XG5cbi8qKiBUaGUgZmlsdGVyaW5nIGNyaXRlcmlhIHRvIGJlIGFwcGxpZWQgb24gZGF0YSBzZWFyY2ggKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUNvbWJvRmlsdGVyaW5nT3B0aW9ucyB7XG4gICAgLyoqIERlZmluZXMgZmlsdGVyaW5nIGNhc2Utc2Vuc2l0aXZpdHkgKi9cbiAgICBjYXNlU2Vuc2l0aXZlPzogYm9vbGVhbjtcbiAgICAvKiogRGVmaW5lcyB3aGV0aGVyIGZpbHRlcmluZyBpcyBhbGxvd2VkICovXG4gICAgZmlsdGVyYWJsZTogYm9vbGVhbjtcbiAgICAvKiogRGVmaW5lcyBvcHRpb25hbCBrZXkgdG8gZmlsdGVyIGFnYWluc3QgY29tcGxleCBsaXN0IGl0ZW1zLiBEZWZhdWx0IHRvIGRpc3BsYXlLZXkgaWYgcHJvdmlkZWQuKi9cbiAgICBmaWx0ZXJpbmdLZXk/OiBzdHJpbmc7XG59XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIElneENvbWJvQmFzZURpcmVjdGl2ZSBpbXBsZW1lbnRzIElneENvbWJvQmFzZSwgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25Jbml0LFxuICAgIEFmdGVyVmlld0luaXQsIEFmdGVyQ29udGVudENoZWNrZWQsIE9uRGVzdHJveSwgQ29udHJvbFZhbHVlQWNjZXNzb3Ige1xuICAgIC8qKlxuICAgICAqIERlZmluZXMgd2hldGhlciB0aGUgY2FzZVNlbnNpdGl2ZSBpY29uIHNob3VsZCBiZSBzaG93biBpbiB0aGUgc2VhcmNoIGlucHV0XG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IG15Q29tYm9TaG93U2VhcmNoQ2FzZUljb24gPSB0aGlzLmNvbWJvLnNob3dTZWFyY2hDYXNlSWNvbjtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlneC1jb21ibyBbc2hvd1NlYXJjaENhc2VJY29uXT0ndHJ1ZSc+PC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIHNob3dTZWFyY2hDYXNlSWNvbiA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogU2V0IGN1c3RvbSBvdmVybGF5IHNldHRpbmdzIHRoYXQgY29udHJvbCBob3cgdGhlIGNvbWJvJ3MgbGlzdCBvZiBpdGVtcyBpcyBkaXNwbGF5ZWQuXG4gICAgICogU2V0OlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNvbWJvIFtvdmVybGF5U2V0dGluZ3NdPVwiY3VzdG9tT3ZlcmxheVNldHRpbmdzXCI+PC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IGN1c3RvbVNldHRpbmdzID0geyBwb3NpdGlvblN0cmF0ZWd5OiB7IHNldHRpbmdzOiB7IHRhcmdldDogbXlUYXJnZXQgfSB9IH07XG4gICAgICogIGNvbWJvLm92ZXJsYXlTZXR0aW5ncyA9IGN1c3RvbVNldHRpbmdzO1xuICAgICAqIGBgYFxuICAgICAqIEdldCBhbnkgY3VzdG9tIG92ZXJsYXkgc2V0dGluZ3MgdXNlZCBieSB0aGUgY29tYm86XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBjb25zdCBjb21ib092ZXJsYXlTZXR0aW5nczogT3ZlcmxheVNldHRpbmdzID0gbXlDb21iby5vdmVybGF5U2V0dGluZ3M7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgb3ZlcmxheVNldHRpbmdzOiBPdmVybGF5U2V0dGluZ3MgPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9nZXRzIGNvbWJvIGlkLlxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBpZCA9IHRoaXMuY29tYm8uaWQ7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpZ3gtY29tYm8gW2lkXT0nY29tYm8xJz48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuaWQnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBpZCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5faWQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBpZCh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZ2V0KHRoaXMuX2lkKTtcbiAgICAgICAgdGhpcy5faWQgPSB2YWx1ZTtcbiAgICAgICAgaWYgKHNlbGVjdGlvbikge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLnNldCh0aGlzLl9pZCwgc2VsZWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodGhpcy5kcm9wZG93bj8ub3Blbikge1xuICAgICAgICAgICAgdGhpcy5kcm9wZG93bi5jbG9zZSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLmlucHV0R3JvdXA/LmlzRm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dEdyb3VwLmVsZW1lbnQubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICAgICAgICB0aGlzLmlucHV0R3JvdXAuaXNGb2N1c2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBzdHlsZSB3aWR0aCBvZiB0aGUgZWxlbWVudFxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBteUNvbWJvV2lkdGggPSB0aGlzLmNvbWJvLndpZHRoO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8aWd4LWNvbWJvIFt3aWR0aF09JzI1MHB4Jz48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ3N0eWxlLndpZHRoJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyB3aWR0aDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQ29udHJvbHMgd2hldGhlciBjdXN0b20gdmFsdWVzIGNhbiBiZSBhZGRlZCB0byB0aGUgY29sbGVjdGlvblxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBjb21ib0FsbG93c0N1c3RvbVZhbHVlcyA9IHRoaXMuY29tYm8uYWxsb3dDdXN0b21WYWx1ZXM7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpZ3gtY29tYm8gW2FsbG93Q3VzdG9tVmFsdWVzXT0ndHJ1ZSc+PC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KHsgdHJhbnNmb3JtOiBib29sZWFuQXR0cmlidXRlIH0pXG4gICAgcHVibGljIGFsbG93Q3VzdG9tVmFsdWVzID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBDb25maWd1cmVzIHRoZSBkcm9wIGRvd24gbGlzdCBoZWlnaHRcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgbXlDb21ib0l0ZW1zTWF4SGVpZ2h0ID0gdGhpcy5jb21iby5pdGVtc01heEhlaWdodDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlneC1jb21ibyBbaXRlbXNNYXhIZWlnaHRdPSczMjAnPjwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBpdGVtc01heEhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5faXRlbXNNYXhIZWlnaHQgPT09IG51bGwgfHwgdGhpcy5faXRlbXNNYXhIZWlnaHQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbUhlaWdodCAqIGl0ZW1zSW5Db250YWluZXI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1zTWF4SGVpZ2h0O1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgaXRlbXNNYXhIZWlnaHQodmFsOiBudW1iZXIpIHtcbiAgICAgICAgdGhpcy5faXRlbXNNYXhIZWlnaHQgPSB2YWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgZ2V0IGl0ZW1zTWF4SGVpZ2h0SW5SZW0oKSB7XG4gICAgICAgIHJldHVybiByZW0odGhpcy5pdGVtc01heEhlaWdodCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY29tYm9TaXplKCk6IFNpemUge1xuICAgICAgICByZXR1cm4gdGhpcy5jb21wdXRlZFN0eWxlcz8uZ2V0UHJvcGVydHlWYWx1ZSgnLS1pZy1zaXplJykgfHwgU2l6ZS5MYXJnZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBDb25maWd1cmVzIHRoZSBkcm9wIGRvd24gbGlzdCBpdGVtIGhlaWdodFxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBteUNvbWJvSXRlbUhlaWdodCA9IHRoaXMuY29tYm8uaXRlbUhlaWdodDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlneC1jb21ibyBbaXRlbUhlaWdodF09JzMyJz48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgaXRlbUhlaWdodCgpOiBudW1iZXIge1xuICAgICAgICBpZiAodGhpcy5faXRlbUhlaWdodCA9PT0gbnVsbCB8fCB0aGlzLl9pdGVtSGVpZ2h0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBJdGVtSGVpZ2h0c1t0aGlzLmNvbWJvU2l6ZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuX2l0ZW1IZWlnaHQ7XG4gICAgfVxuXG4gICAgcHVibGljIHNldCBpdGVtSGVpZ2h0KHZhbDogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX2l0ZW1IZWlnaHQgPSB2YWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQ29uZmlndXJlcyB0aGUgZHJvcCBkb3duIGxpc3Qgd2lkdGhcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgbXlDb21ib0l0ZW1zV2lkdGggPSB0aGlzLmNvbWJvLml0ZW1zV2lkdGg7XG4gICAgICogYGBgXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpZ3gtY29tYm8gW2l0ZW1zV2lkdGhdID0gJ1wiMTgwcHhcIic+PC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaXRlbXNXaWR0aDogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogRGVmaW5lcyB0aGUgcGxhY2Vob2xkZXIgdmFsdWUgZm9yIHRoZSBjb21ibyB2YWx1ZSBmaWVsZFxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBteUNvbWJvUGxhY2Vob2xkZXIgPSB0aGlzLmNvbWJvLnBsYWNlaG9sZGVyO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8aWd4LWNvbWJvIFtwbGFjZWhvbGRlcl09J25ld1BsYWNlSG9sZGVyJz48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwbGFjZWhvbGRlcjogc3RyaW5nO1xuXG4gICAgLyoqXG4gICAgICogQ29tYm8gZGF0YSBzb3VyY2UuXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpZ3gtY29tYm8gW2RhdGFdPSdpdGVtcyc+PC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGRhdGEoKTogYW55W10gfCBudWxsIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RhdGE7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgZGF0YSh2YWw6IGFueVtdIHwgbnVsbCkge1xuICAgICAgICAvLyBpZ3hGb3IgZGlyZWN0aXZlIGlnbm9yZXMgdW5kZWZpbmVkIHZhbHVlc1xuICAgICAgICAvLyBpZiB0aGUgY29tYm8gdXNlcyBzaW1wbGUgZGF0YSBhbmQgZmlsdGVyaW5nIGlzIGFwcGxpZWRcbiAgICAgICAgLy8gYW4gZXJyb3Igd2lsbCBvY2N1ciBkdWUgdG8gdGhlIG1pc21hdGNoIG9mIHRoZSBsZW5ndGggb2YgdGhlIGRhdGFcbiAgICAgICAgLy8gdGhpcyBjYW4gb2NjdXIgZHVyaW5nIGZpbHRlcmluZyBmb3IgdGhlIGlneC1jb21ibyBhbmRcbiAgICAgICAgLy8gZHVyaW5nIGZpbHRlcmluZyAmIHNlbGVjdGlvbiBmb3IgdGhlIGlneC1zaW1wbGUtY29tYm9cbiAgICAgICAgLy8gc2luY2UgdGhlIHNpbXBsZSBjb21ibydzIGlucHV0IGlzIGJvdGggYSBjb250YWluZXIgZm9yIHRoZSBzZWxlY3Rpb24gYW5kIGEgZmlsdGVyXG4gICAgICAgIHRoaXMuX2RhdGEgPSAodmFsKSA/IHZhbC5maWx0ZXIoeCA9PiB4ICE9PSB1bmRlZmluZWQpIDogW107XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRGV0ZXJtaW5lcyB3aGljaCBjb2x1bW4gaW4gdGhlIGRhdGEgc291cmNlIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB2YWx1ZS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgbXlDb21ib1ZhbHVlS2V5ID0gdGhpcy5jb21iby52YWx1ZUtleTtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tc2V0LS0+XG4gICAgICogPGlneC1jb21ibyBbdmFsdWVLZXldPSdteUtleSc+PC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgdmFsdWVLZXk6IHN0cmluZyA9IG51bGw7XG5cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgZGlzcGxheUtleSh2YWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9kaXNwbGF5S2V5ID0gdmFsO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERldGVybWluZXMgd2hpY2ggY29sdW1uIGluIHRoZSBkYXRhIHNvdXJjZSBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgZGlzcGxheSB2YWx1ZS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgbXlDb21ib0Rpc3BsYXlLZXkgPSB0aGlzLmNvbWJvLmRpc3BsYXlLZXk7XG4gICAgICpcbiAgICAgKiAvLyBzZXRcbiAgICAgKiB0aGlzLmNvbWJvLmRpc3BsYXlLZXkgPSAndmFsJztcbiAgICAgKlxuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8aWd4LWNvbWJvIFtkaXNwbGF5S2V5XT0nbXlEaXNwbGF5S2V5Jz48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGRpc3BsYXlLZXkoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNwbGF5S2V5ID8gdGhpcy5fZGlzcGxheUtleSA6IHRoaXMudmFsdWVLZXk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIGl0ZW0gcHJvcGVydHkgYnkgd2hpY2ggaXRlbXMgc2hvdWxkIGJlIGdyb3VwZWQgaW5zaWRlIHRoZSBpdGVtcyBsaXN0LiBOb3QgdXNhYmxlIGlmIGRhdGEgaXMgbm90IG9mIHR5cGUgT2JqZWN0W10uXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLXNldC0tPlxuICAgICAqIDxpZ3gtY29tYm8gW2dyb3VwS2V5XT0nbmV3R3JvdXBLZXknPjwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCBncm91cEtleSh2YWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLl9ncm91cEtleSA9IHZhbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUaGUgaXRlbSBwcm9wZXJ0eSBieSB3aGljaCBpdGVtcyBzaG91bGQgYmUgZ3JvdXBlZCBpbnNpZGUgdGhlIGl0ZW1zIGxpc3QuIE5vdCB1c2FibGUgaWYgZGF0YSBpcyBub3Qgb2YgdHlwZSBPYmplY3RbXS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgY3VycmVudEdyb3VwS2V5ID0gdGhpcy5jb21iby5ncm91cEtleTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGdyb3VwS2V5KCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9ncm91cEtleTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGdyb3VwcyBzb3J0aW5nIG9yZGVyLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jb21ibyBbZ3JvdXBTb3J0aW5nRGlyZWN0aW9uXT1cImdyb3VwU29ydGluZ0RpcmVjdGlvblwiPjwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBwdWJsaWMgZ3JvdXBTb3J0aW5nRGlyZWN0aW9uID0gU29ydGluZ0RpcmVjdGlvbi5Bc2M7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGdyb3VwU29ydGluZ0RpcmVjdGlvbigpOiBTb3J0aW5nRGlyZWN0aW9uIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2dyb3VwU29ydGluZ0RpcmVjdGlvbjtcbiAgICB9XG4gICAgcHVibGljIHNldCBncm91cFNvcnRpbmdEaXJlY3Rpb24odmFsOiBTb3J0aW5nRGlyZWN0aW9uKSB7XG4gICAgICAgIHRoaXMuX2dyb3VwU29ydGluZ0RpcmVjdGlvbiA9IHZhbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL1NldHMgdGhlIGN1c3RvbSBmaWx0ZXJpbmcgZnVuY3Rpb24gb2YgdGhlIGNvbWJvLlxuICAgICAqXG4gICAgICogQGV4YW1wbGVcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtY29tYiAjY29tYm8gW2RhdGFdPVwibG9jYWxEYXRhXCIgW2ZpbHRlckZ1bmN0aW9uXT1cImZpbHRlckZ1bmN0aW9uXCI+PC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZmlsdGVyRnVuY3Rpb246IChjb2xsZWN0aW9uOiBhbnlbXSwgc2VhcmNoVmFsdWU6IGFueSwgZmlsdGVyaW5nT3B0aW9uczogSUNvbWJvRmlsdGVyaW5nT3B0aW9ucykgPT4gYW55W107XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGFyaWEtbGFiZWxsZWRieSBhdHRyaWJ1dGUgdmFsdWUuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY29tYm8gW2FyaWFMYWJlbGxlZEJ5XT1cIidsYWJlbDEnXCI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgYXJpYUxhYmVsbGVkQnk6IHN0cmluZztcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWNvbWJvJylcbiAgICBwdWJsaWMgY3NzQ2xhc3MgPSAnaWd4LWNvbWJvJzsgLy8gSW5kZXBlbmRlbnQgb2YgZGlzcGxheSBkZW5zaXR5IGZvciB0aGUgdGltZSBiZWluZ1xuXG4gICAgLyoqXG4gICAgICogRGlzYWJsZXMgdGhlIGNvbWJvLiBUaGUgZGVmYXVsdCBpcyBgZmFsc2VgLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNvbWJvIFtkaXNhYmxlZF09XCIndHJ1ZSdcIj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIHZpc3VhbCBjb21ibyB0eXBlLlxuICAgICAqIFRoZSBhbGxvd2VkIHZhbHVlcyBhcmUgYGxpbmVgLCBgYm94YCwgYGJvcmRlcmAgYW5kIGBzZWFyY2hgLiBUaGUgZGVmYXVsdCBpcyBgYm94YC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jb21ibyBbdHlwZV09XCInbGluZSdcIj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgdHlwZSgpOiBJZ3hJbnB1dEdyb3VwVHlwZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90eXBlIHx8IHRoaXMuX2lucHV0R3JvdXBUeXBlIHx8ICdib3gnO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgdHlwZSh2YWw6IElneElucHV0R3JvdXBUeXBlKSB7XG4gICAgICAgIHRoaXMuX3R5cGUgPSB2YWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cy9TZXRzIHRoZSByZXNvdXJjZSBzdHJpbmdzLlxuICAgICAqXG4gICAgICogQHJlbWFya3NcbiAgICAgKiBCeSBkZWZhdWx0IGl0IHVzZXMgRU4gcmVzb3VyY2VzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCByZXNvdXJjZVN0cmluZ3MoKTogSUNvbWJvUmVzb3VyY2VTdHJpbmdzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlU3RyaW5ncztcbiAgICB9XG4gICAgcHVibGljIHNldCByZXNvdXJjZVN0cmluZ3ModmFsdWU6IElDb21ib1Jlc291cmNlU3RyaW5ncykge1xuICAgICAgICB0aGlzLl9yZXNvdXJjZVN0cmluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9yZXNvdXJjZVN0cmluZ3MsIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIGJlZm9yZSB0aGUgZHJvcGRvd24gaXMgb3BlbmVkXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jb21ibyBvcGVuaW5nPSdoYW5kbGVPcGVuaW5nKCRldmVudCknPjwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvcGVuaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCBhZnRlciB0aGUgZHJvcGRvd24gaXMgb3BlbmVkXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jb21ibyAob3BlbmVkKT0naGFuZGxlT3BlbmVkKCRldmVudCknPjwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBvcGVuZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElCYXNlRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCBiZWZvcmUgdGhlIGRyb3Bkb3duIGlzIGNsb3NlZFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY29tYm8gKGNsb3NpbmcpPSdoYW5kbGVDbG9zaW5nKCRldmVudCknPjwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbG9zaW5nID0gbmV3IEV2ZW50RW1pdHRlcjxJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCBhZnRlciB0aGUgZHJvcGRvd24gaXMgY2xvc2VkXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1jb21ibyAoY2xvc2VkKT0naGFuZGxlQ2xvc2VkKCRldmVudCknPjwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBjbG9zZWQgPSBuZXcgRXZlbnRFbWl0dGVyPElCYXNlRXZlbnRBcmdzPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIGFuIGl0ZW0gaXMgYmVpbmcgYWRkZWQgdG8gdGhlIGRhdGEgY29sbGVjdGlvblxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtY29tYm8gKGFkZGl0aW9uKT0naGFuZGxlQWRkaXRpb25FdmVudCgkZXZlbnQpJz48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgYWRkaXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyPElDb21ib0l0ZW1BZGRpdGlvbkV2ZW50PigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHRoZSB2YWx1ZSBvZiB0aGUgc2VhcmNoIGlucHV0IGNoYW5nZXMgKGUuZy4gdHlwaW5nLCBwYXN0aW5nLCBjbGVhciwgZXRjLilcbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNvbWJvIChzZWFyY2hJbnB1dFVwZGF0ZSk9J2hhbmRsZVNlYXJjaElucHV0RXZlbnQoJGV2ZW50KSc+PC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNlYXJjaElucHV0VXBkYXRlID0gbmV3IEV2ZW50RW1pdHRlcjxJQ29tYm9TZWFyY2hJbnB1dEV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgd2hlbiBuZXcgY2h1bmsgb2YgZGF0YSBpcyBsb2FkZWQgZnJvbSB0aGUgdmlydHVhbGl6YXRpb25cbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWNvbWJvIChkYXRhUHJlTG9hZCk9J2hhbmRsZURhdGFQcmVsb2FkRXZlbnQoJGV2ZW50KSc+PC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIGRhdGFQcmVMb2FkID0gbmV3IEV2ZW50RW1pdHRlcjxJRm9yT2ZTdGF0ZT4oKTtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjdXN0b20gdGVtcGxhdGUsIGlmIGFueSwgdGhhdCBzaG91bGQgYmUgdXNlZCB3aGVuIHJlbmRlcmluZyBJVEVNUyBpbiB0aGUgY29tYm8gbGlzdFxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIFNldCBpbiB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgbXlDdXN0b21UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiA9IG15Q29tcG9uZW50LmN1c3RvbVRlbXBsYXRlO1xuICAgICAqIG15Q29tcG9uZW50LmNvbWJvLml0ZW1UZW1wbGF0ZSA9IG15Q3VzdG9tVGVtcGxhdGU7XG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS0gU2V0IGluIG1hcmt1cCAtLT5cbiAgICAgKiAgPGlneC1jb21ibyAjY29tYm8+XG4gICAgICogICAgICAuLi5cbiAgICAgKiAgICAgIDxuZy10ZW1wbGF0ZSBpZ3hDb21ib0l0ZW0gbGV0LWl0ZW0gbGV0LWtleT1cInZhbHVlS2V5XCI+XG4gICAgICogICAgICAgICAgPGRpdiBjbGFzcz1cImN1c3RvbS1pdGVtXCI+XG4gICAgICogICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20taXRlbV9fbmFtZVwiPnt7IGl0ZW1ba2V5XSB9fTwvZGl2PlxuICAgICAqICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY3VzdG9tLWl0ZW1fX2Nvc3RcIj57eyBpdGVtLmNvc3QgfX08L2Rpdj5cbiAgICAgKiAgICAgICAgICA8L2Rpdj5cbiAgICAgKiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICogIDwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoSWd4Q29tYm9JdGVtRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gICAgcHVibGljIGl0ZW1UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY3VzdG9tIHRlbXBsYXRlLCBpZiBhbnksIHRoYXQgc2hvdWxkIGJlIHVzZWQgd2hlbiByZW5kZXJpbmcgdGhlIEhFQURFUiBmb3IgdGhlIGNvbWJvIGl0ZW1zIGxpc3RcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBTZXQgaW4gdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IG15Q3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gPSBteUNvbXBvbmVudC5jdXN0b21UZW1wbGF0ZTtcbiAgICAgKiBteUNvbXBvbmVudC5jb21iby5oZWFkZXJUZW1wbGF0ZSA9IG15Q3VzdG9tVGVtcGxhdGU7XG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS0gU2V0IGluIG1hcmt1cCAtLT5cbiAgICAgKiAgPGlneC1jb21ibyAjY29tYm8+XG4gICAgICogICAgICAuLi5cbiAgICAgKiAgICAgIDxuZy10ZW1wbGF0ZSBpZ3hDb21ib0hlYWRlcj5cbiAgICAgKiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tYm9fX2hlYWRlclwiPlxuICAgICAqICAgICAgICAgICAgICBUaGlzIGlzIGEgY3VzdG9tIGhlYWRlclxuICAgICAqICAgICAgICAgIDwvZGl2PlxuICAgICAqICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgKiAgPC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hDb21ib0hlYWRlckRpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICAgIHB1YmxpYyBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY3VzdG9tIHRlbXBsYXRlLCBpZiBhbnksIHRoYXQgc2hvdWxkIGJlIHVzZWQgd2hlbiByZW5kZXJpbmcgdGhlIEZPT1RFUiBmb3IgdGhlIGNvbWJvIGl0ZW1zIGxpc3RcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBTZXQgaW4gdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IG15Q3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gPSBteUNvbXBvbmVudC5jdXN0b21UZW1wbGF0ZTtcbiAgICAgKiBteUNvbXBvbmVudC5jb21iby5mb290ZXJUZW1wbGF0ZSA9IG15Q3VzdG9tVGVtcGxhdGU7XG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS0gU2V0IGluIG1hcmt1cCAtLT5cbiAgICAgKiAgPGlneC1jb21ibyAjY29tYm8+XG4gICAgICogICAgICAuLi5cbiAgICAgKiAgICAgIDxuZy10ZW1wbGF0ZSBpZ3hDb21ib0Zvb3Rlcj5cbiAgICAgKiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tYm9fX2Zvb3RlclwiPlxuICAgICAqICAgICAgICAgICAgICBUaGlzIGlzIGEgY3VzdG9tIGZvb3RlclxuICAgICAqICAgICAgICAgIDwvZGl2PlxuICAgICAqICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgKiAgPC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hDb21ib0Zvb3RlckRpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICAgIHB1YmxpYyBmb290ZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY3VzdG9tIHRlbXBsYXRlLCBpZiBhbnksIHRoYXQgc2hvdWxkIGJlIHVzZWQgd2hlbiByZW5kZXJpbmcgSEVBREVSIElURU1TIGZvciBncm91cHMgaW4gdGhlIGNvbWJvIGxpc3RcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBTZXQgaW4gdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IG15Q3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gPSBteUNvbXBvbmVudC5jdXN0b21UZW1wbGF0ZTtcbiAgICAgKiBteUNvbXBvbmVudC5jb21iby5oZWFkZXJJdGVtVGVtcGxhdGUgPSBteUN1c3RvbVRlbXBsYXRlO1xuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8IS0tIFNldCBpbiBtYXJrdXAgLS0+XG4gICAgICogIDxpZ3gtY29tYm8gI2NvbWJvPlxuICAgICAqICAgICAgLi4uXG4gICAgICogICAgICA8bmctdGVtcGxhdGUgaWd4Q29tYm9IZWFkZXJJdGVtIGxldC1pdGVtIGxldC1rZXk9XCJncm91cEtleVwiPlxuICAgICAqICAgICAgICAgIDxkaXYgY2xhc3M9XCJjdXN0b20taXRlbS0tZ3JvdXBcIj5Hcm91cCBoZWFkZXIgZm9yIHt7IGl0ZW1ba2V5XSB9fTwvZGl2PlxuICAgICAqICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgKiAgPC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hDb21ib0hlYWRlckl0ZW1EaXJlY3RpdmUsIHsgcmVhZDogVGVtcGxhdGVSZWYgfSlcbiAgICBwdWJsaWMgaGVhZGVySXRlbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+ID0gbnVsbDtcblxuICAgIC8qKlxuICAgICAqIFRoZSBjdXN0b20gdGVtcGxhdGUsIGlmIGFueSwgdGhhdCBzaG91bGQgYmUgdXNlZCB3aGVuIHJlbmRlcmluZyB0aGUgQUREIEJVVFRPTiBpbiB0aGUgY29tYm8gZHJvcCBkb3duXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gU2V0IGluIHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBteUN1c3RvbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+ID0gbXlDb21wb25lbnQuY3VzdG9tVGVtcGxhdGU7XG4gICAgICogbXlDb21wb25lbnQuY29tYm8uYWRkSXRlbVRlbXBsYXRlID0gbXlDdXN0b21UZW1wbGF0ZTtcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLSBTZXQgaW4gbWFya3VwIC0tPlxuICAgICAqICA8aWd4LWNvbWJvICNjb21ibz5cbiAgICAgKiAgICAgIC4uLlxuICAgICAqICAgICAgPG5nLXRlbXBsYXRlIGlneENvbWJvQWRkSXRlbT5cbiAgICAgKiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBpZ3hCdXR0b249XCJjb250YWluZWRcIiBjbGFzcz1cImNvbWJvX19hZGQtYnV0dG9uXCI+XG4gICAgICogICAgICAgICAgICAgIENsaWNrIHRvIGFkZCBpdGVtXG4gICAgICogICAgICAgICAgPC9idXR0b24+XG4gICAgICogICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAqICA8L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKElneENvbWJvQWRkSXRlbURpcmVjdGl2ZSwgeyByZWFkOiBUZW1wbGF0ZVJlZiB9KVxuICAgIHB1YmxpYyBhZGRJdGVtVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGN1c3RvbSB0ZW1wbGF0ZSwgaWYgYW55LCB0aGF0IHNob3VsZCBiZSB1c2VkIHdoZW4gcmVuZGVyaW5nIHRoZSBBREQgQlVUVE9OIGluIHRoZSBjb21ibyBkcm9wIGRvd25cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBTZXQgaW4gdHlwZXNjcmlwdFxuICAgICAqIGNvbnN0IG15Q3VzdG9tVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gPSBteUNvbXBvbmVudC5jdXN0b21UZW1wbGF0ZTtcbiAgICAgKiBteUNvbXBvbmVudC5jb21iby5lbXB0eVRlbXBsYXRlID0gbXlDdXN0b21UZW1wbGF0ZTtcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLSBTZXQgaW4gbWFya3VwIC0tPlxuICAgICAqICA8aWd4LWNvbWJvICNjb21ibz5cbiAgICAgKiAgICAgIC4uLlxuICAgICAqICAgICAgPG5nLXRlbXBsYXRlIGlneENvbWJvRW1wdHk+XG4gICAgICogICAgICAgICAgPGRpdiBjbGFzcz1cImNvbWJvLS1lbXB0eVwiPlxuICAgICAqICAgICAgICAgICAgICBUaGVyZSBhcmUgbm8gaXRlbXMgdG8gZGlzcGxheVxuICAgICAqICAgICAgICAgIDwvZGl2PlxuICAgICAqICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgKiAgPC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hDb21ib0VtcHR5RGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gICAgcHVibGljIGVtcHR5VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT4gPSBudWxsO1xuXG4gICAgLyoqXG4gICAgICogVGhlIGN1c3RvbSB0ZW1wbGF0ZSwgaWYgYW55LCB0aGF0IHNob3VsZCBiZSB1c2VkIHdoZW4gcmVuZGVyaW5nIHRoZSBjb21ibyBUT0dHTEUob3Blbi9jbG9zZSkgYnV0dG9uXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gU2V0IGluIHR5cGVzY3JpcHRcbiAgICAgKiBjb25zdCBteUN1c3RvbVRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+ID0gbXlDb21wb25lbnQuY3VzdG9tVGVtcGxhdGU7XG4gICAgICogbXlDb21wb25lbnQuY29tYm8udG9nZ2xlSWNvblRlbXBsYXRlID0gbXlDdXN0b21UZW1wbGF0ZTtcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLSBTZXQgaW4gbWFya3VwIC0tPlxuICAgICAqICA8aWd4LWNvbWJvICNjb21ibz5cbiAgICAgKiAgICAgIC4uLlxuICAgICAqICAgICAgPG5nLXRlbXBsYXRlIGlneENvbWJvVG9nZ2xlSWNvbiBsZXQtY29sbGFwc2VkPlxuICAgICAqICAgICAgICAgIDxpZ3gtaWNvbj57eyBjb2xsYXBzZWQgPyAncmVtb3ZlX2NpcmNsZScgOiAncmVtb3ZlX2NpcmNsZV9vdXRsaW5lJ319PC9pZ3gtaWNvbj5cbiAgICAgKiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICogIDwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoSWd4Q29tYm9Ub2dnbGVJY29uRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gICAgcHVibGljIHRvZ2dsZUljb25UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiA9IG51bGw7XG5cbiAgICAvKipcbiAgICAgKiBUaGUgY3VzdG9tIHRlbXBsYXRlLCBpZiBhbnksIHRoYXQgc2hvdWxkIGJlIHVzZWQgd2hlbiByZW5kZXJpbmcgdGhlIGNvbWJvIENMRUFSIGJ1dHRvblxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIFNldCBpbiB0eXBlc2NyaXB0XG4gICAgICogY29uc3QgbXlDdXN0b21UZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PiA9IG15Q29tcG9uZW50LmN1c3RvbVRlbXBsYXRlO1xuICAgICAqIG15Q29tcG9uZW50LmNvbWJvLmNsZWFySWNvblRlbXBsYXRlID0gbXlDdXN0b21UZW1wbGF0ZTtcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogPCEtLSBTZXQgaW4gbWFya3VwIC0tPlxuICAgICAqICA8aWd4LWNvbWJvICNjb21ibz5cbiAgICAgKiAgICAgIC4uLlxuICAgICAqICAgICAgPG5nLXRlbXBsYXRlIGlneENvbWJvQ2xlYXJJY29uPlxuICAgICAqICAgICAgICAgIDxpZ3gtaWNvbj5jbGVhcjwvaWd4LWljb24+XG4gICAgICogICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAqICA8L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAQ29udGVudENoaWxkKElneENvbWJvQ2xlYXJJY29uRGlyZWN0aXZlLCB7IHJlYWQ6IFRlbXBsYXRlUmVmIH0pXG4gICAgcHVibGljIGNsZWFySWNvblRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+ID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBDb250ZW50Q2hpbGQoZm9yd2FyZFJlZigoKSA9PiBJZ3hMYWJlbERpcmVjdGl2ZSksIHsgc3RhdGljOiB0cnVlIH0pIHB1YmxpYyBsYWJlbDogSWd4TGFiZWxEaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBAVmlld0NoaWxkKCdpbnB1dEdyb3VwJywgeyByZWFkOiBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50LCBzdGF0aWM6IHRydWUgfSlcbiAgICBwdWJsaWMgaW5wdXRHcm91cDogSWd4SW5wdXRHcm91cENvbXBvbmVudDtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBWaWV3Q2hpbGQoJ2NvbWJvSW5wdXQnLCB7IHJlYWQ6IElneElucHV0RGlyZWN0aXZlLCBzdGF0aWM6IHRydWUgfSlcbiAgICBwdWJsaWMgY29tYm9JbnB1dDogSWd4SW5wdXREaXJlY3RpdmU7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBAVmlld0NoaWxkKCdzZWFyY2hJbnB1dCcpXG4gICAgcHVibGljIHNlYXJjaElucHV0OiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+ID0gbnVsbDtcblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBWaWV3Q2hpbGQoSWd4Rm9yT2ZEaXJlY3RpdmUsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHVibGljIHZpcnR1YWxTY3JvbGxDb250YWluZXI6IElneEZvck9mRGlyZWN0aXZlPGFueT47XG5cbiAgICBAVmlld0NoaWxkKElneEZvck9mRGlyZWN0aXZlLCB7IHJlYWQ6IElneEZvck9mRGlyZWN0aXZlLCBzdGF0aWM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgdmlydERpcjogSWd4Rm9yT2ZEaXJlY3RpdmU8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoJ2Ryb3Bkb3duSXRlbUNvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJvdGVjdGVkIGRyb3Bkb3duQ29udGFpbmVyOiBFbGVtZW50UmVmID0gbnVsbDtcblxuICAgIEBWaWV3Q2hpbGQoJ3ByaW1pdGl2ZScsIHsgcmVhZDogVGVtcGxhdGVSZWYsIHN0YXRpYzogdHJ1ZSB9KVxuICAgIHByb3RlY3RlZCBwcmltaXRpdmVUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICAgIEBWaWV3Q2hpbGQoJ2NvbXBsZXgnLCB7IHJlYWQ6IFRlbXBsYXRlUmVmLCBzdGF0aWM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgY29tcGxleFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihJZ3hQcmVmaXhEaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgcHJlZml4ZXM6IFF1ZXJ5TGlzdDxJZ3hQcmVmaXhEaXJlY3RpdmU+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihJZ3hTdWZmaXhEaXJlY3RpdmUsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgc3VmZml4ZXM6IFF1ZXJ5TGlzdDxJZ3hTdWZmaXhEaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGdldCBzZWFyY2hWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VhcmNoVmFsdWU7XG4gICAgfVxuICAgIHB1YmxpYyBzZXQgc2VhcmNoVmFsdWUodmFsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJWYWx1ZSA9IHZhbDtcbiAgICAgICAgdGhpcy5fc2VhcmNoVmFsdWUgPSB2YWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGdldCBpc1JlbW90ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudG90YWxJdGVtQ291bnQgPiAwICYmXG4gICAgICAgICAgICB0aGlzLnZhbHVlS2V5ICYmXG4gICAgICAgICAgICB0aGlzLmRhdGFUeXBlID09PSBEYXRhVHlwZXMuQ09NUExFWDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IGRhdGFUeXBlKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmRpc3BsYXlLZXkpIHtcbiAgICAgICAgICAgIHJldHVybiBEYXRhVHlwZXMuQ09NUExFWDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gRGF0YVR5cGVzLlBSSU1JVElWRTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGlmIGNvbnRyb2wgaXMgdmFsaWQsIHdoZW4gdXNlZCBpbiBhIGZvcm1cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgdmFsaWQgPSB0aGlzLmNvbWJvLnZhbGlkO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgdmFsaWQoKTogSWd4SW5wdXRTdGF0ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl92YWxpZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIGlmIGNvbnRyb2wgaXMgdmFsaWQsIHdoZW4gdXNlZCBpbiBhIGZvcm1cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBzZXRcbiAgICAgKiB0aGlzLmNvbWJvLnZhbGlkID0gSWd4SW5wdXRTdGF0ZS5JTlZBTElEO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgdmFsaWQodmFsaWQ6IElneElucHV0U3RhdGUpIHtcbiAgICAgICAgdGhpcy5fdmFsaWQgPSB2YWxpZDtcbiAgICAgICAgdGhpcy5jb21ib0lucHV0LnZhbGlkID0gdmFsaWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogVGhlIHZhbHVlIG9mIHRoZSBjb21ib1xuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIC8vIGdldFxuICAgICAqIGxldCBjb21ib1ZhbHVlID0gdGhpcy5jb21iby52YWx1ZTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHZhbHVlKCk6IGFueVtdIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRoZSB0ZXh0IGRpc3BsYXllZCBpbiB0aGUgY29tYm8gaW5wdXRcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgY29tYm9EaXNwbGF5VmFsdWUgPSB0aGlzLmNvbWJvLmRpc3BsYXlWYWx1ZTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGRpc3BsYXlWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzcGxheVZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIERlZmluZXMgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHZpcnR1YWxpemVkIGRhdGEuIEl0IGNvbnRhaW5zIGBzdGFydEluZGV4YCBhbmQgYGNodW5rU2l6ZWBcbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgc3RhdGUgPSB0aGlzLmNvbWJvLnZpcnR1YWxpemF0aW9uU3RhdGU7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCB2aXJ0dWFsaXphdGlvblN0YXRlKCk6IElGb3JPZlN0YXRlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudmlydERpci5zdGF0ZTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgdmlydHVhbGl6ZWQgZGF0YS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBzZXRcbiAgICAgKiB0aGlzLmNvbWJvLnZpcnR1YWxpemF0aW9uU3RhdGUoc3RhdGUpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgdmlydHVhbGl6YXRpb25TdGF0ZShzdGF0ZTogSUZvck9mU3RhdGUpIHtcbiAgICAgICAgdGhpcy52aXJ0RGlyLnN0YXRlID0gc3RhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBkcm9wIGRvd24gc3RhdGUuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogbGV0IHN0YXRlID0gdGhpcy5jb21iby5jb2xsYXBzZWQ7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBjb2xsYXBzZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmRyb3Bkb3duLmNvbGxhcHNlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRvdGFsIGNvdW50IG9mIHRoZSB2aXJ0dWFsIGRhdGEgaXRlbXMsIHdoZW4gdXNpbmcgcmVtb3RlIHNlcnZpY2UuXG4gICAgICpcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogLy8gZ2V0XG4gICAgICogbGV0IGNvdW50ID0gdGhpcy5jb21iby50b3RhbEl0ZW1Db3VudDtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHRvdGFsSXRlbUNvdW50KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLnZpcnREaXIudG90YWxJdGVtQ291bnQ7XG4gICAgfVxuICAgIC8qKlxuICAgICAqIFNldHMgdG90YWwgY291bnQgb2YgdGhlIHZpcnR1YWwgZGF0YSBpdGVtcywgd2hlbiB1c2luZyByZW1vdGUgc2VydmljZS5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBzZXRcbiAgICAgKiB0aGlzLmNvbWJvLnRvdGFsSXRlbUNvdW50KHJlbW90ZVNlcnZpY2UuY291bnQpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXQgdG90YWxJdGVtQ291bnQoY291bnQ6IG51bWJlcikge1xuICAgICAgICB0aGlzLnZpcnREaXIudG90YWxJdGVtQ291bnQgPSBjb3VudDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IHRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgICAgICB0aGlzLl9kYXRhVHlwZSA9IHRoaXMuZGF0YVR5cGU7XG4gICAgICAgIGlmICh0aGlzLml0ZW1UZW1wbGF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuaXRlbVRlbXBsYXRlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLl9kYXRhVHlwZSA9PT0gRGF0YVR5cGVzLkNPTVBMRVgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNvbXBsZXhUZW1wbGF0ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5wcmltaXRpdmVUZW1wbGF0ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgY3VzdG9tVmFsdWVGbGFnID0gdHJ1ZTtcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZmlsdGVyVmFsdWUgPSAnJztcbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZGVmYXVsdEZhbGxiYWNrR3JvdXAgPSAnT3RoZXInO1xuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBhY3RpdmVEZXNjZW5kYW50ID0gJyc7XG5cbiAgICAvKipcbiAgICAgKiBDb25maWd1cmVzIHRoZSB3YXkgY29tYm8gaXRlbXMgd2lsbCBiZSBmaWx0ZXJlZC5cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAvLyBnZXRcbiAgICAgKiBsZXQgbXlGaWx0ZXJpbmdPcHRpb25zID0gdGhpcy5jb21iby5maWx0ZXJpbmdPcHRpb25zO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDwhLS1zZXQtLT5cbiAgICAgKiA8aWd4LWNvbWJvIFtmaWx0ZXJpbmdPcHRpb25zXT0nbXlGaWx0ZXJpbmdPcHRpb25zJz48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cblxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGdldCBmaWx0ZXJpbmdPcHRpb25zKCk6IElDb21ib0ZpbHRlcmluZ09wdGlvbnMge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsdGVyaW5nT3B0aW9ucyB8fCB0aGlzLl9kZWZhdWx0RmlsdGVyaW5nT3B0aW9ucztcbiAgICB9XG4gICAgcHVibGljIHNldCBmaWx0ZXJpbmdPcHRpb25zKHZhbHVlOiBJQ29tYm9GaWx0ZXJpbmdPcHRpb25zKSB7XG4gICAgICAgIHRoaXMuX2ZpbHRlcmluZ09wdGlvbnMgPSB2YWx1ZTtcbiAgICB9XG4gICAgcHJvdGVjdGVkIF9kYXRhID0gW107XG4gICAgcHJvdGVjdGVkIF92YWx1ZSA9IFtdO1xuICAgIHByb3RlY3RlZCBfZGlzcGxheVZhbHVlID0gJyc7XG4gICAgcHJvdGVjdGVkIF9ncm91cEtleSA9ICcnO1xuICAgIHByb3RlY3RlZCBfc2VhcmNoVmFsdWUgPSAnJztcbiAgICBwcm90ZWN0ZWQgX2ZpbHRlcmVkRGF0YSA9IFtdO1xuICAgIHByb3RlY3RlZCBfZGlzcGxheUtleTogc3RyaW5nO1xuICAgIHByb3RlY3RlZCBfcmVtb3RlU2VsZWN0aW9uID0ge307XG4gICAgcHJvdGVjdGVkIF9yZXNvdXJjZVN0cmluZ3MgPSBnZXRDdXJyZW50UmVzb3VyY2VTdHJpbmdzKENvbWJvUmVzb3VyY2VTdHJpbmdzRU4pO1xuICAgIHByb3RlY3RlZCBfdmFsaWQgPSBJZ3hJbnB1dFN0YXRlLklOSVRJQUw7XG4gICAgcHJvdGVjdGVkIG5nQ29udHJvbDogTmdDb250cm9sID0gbnVsbDtcbiAgICBwcm90ZWN0ZWQgZGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICAgIHByb3RlY3RlZCBfb25Ub3VjaGVkQ2FsbGJhY2s6ICgpID0+IHZvaWQgPSBub29wO1xuICAgIHByb3RlY3RlZCBfb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9IG5vb3A7XG4gICAgcHJvdGVjdGVkIGNvbXBhcmVDb2xsYXRvciA9IG5ldyBJbnRsLkNvbGxhdG9yKCk7XG4gICAgcHJvdGVjdGVkIGNvbXB1dGVkU3R5bGVzO1xuXG4gICAgcHJpdmF0ZSBfaWQ6IHN0cmluZyA9IGBpZ3gtY29tYm8tJHtORVhUX0lEKyt9YDtcbiAgICBwcml2YXRlIF90eXBlID0gbnVsbDtcbiAgICBwcml2YXRlIF9kYXRhVHlwZSA9ICcnO1xuICAgIHByaXZhdGUgX2l0ZW1IZWlnaHQgPSBudWxsO1xuICAgIHByaXZhdGUgX2l0ZW1zTWF4SGVpZ2h0ID0gbnVsbDtcbiAgICBwcml2YXRlIF9vdmVybGF5U2V0dGluZ3M6IE92ZXJsYXlTZXR0aW5ncztcbiAgICBwcml2YXRlIF9ncm91cFNvcnRpbmdEaXJlY3Rpb246IFNvcnRpbmdEaXJlY3Rpb24gPSBTb3J0aW5nRGlyZWN0aW9uLkFzYztcbiAgICBwcml2YXRlIF9maWx0ZXJpbmdPcHRpb25zOiBJQ29tYm9GaWx0ZXJpbmdPcHRpb25zO1xuICAgIHByaXZhdGUgX2RlZmF1bHRGaWx0ZXJpbmdPcHRpb25zOiBJQ29tYm9GaWx0ZXJpbmdPcHRpb25zID0geyBjYXNlU2Vuc2l0aXZlOiBmYWxzZSwgZmlsdGVyYWJsZTogdHJ1ZSB9O1xuXG4gICAgcHVibGljIGFic3RyYWN0IGRyb3Bkb3duOiBJZ3hDb21ib0Ryb3BEb3duQ29tcG9uZW50O1xuICAgIHB1YmxpYyBhYnN0cmFjdCBzZWxlY3Rpb25DaGFuZ2luZzogRXZlbnRFbWl0dGVyPGFueT47XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgICAgIHByb3RlY3RlZCBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICBwcm90ZWN0ZWQgc2VsZWN0aW9uU2VydmljZTogSWd4U2VsZWN0aW9uQVBJU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIGNvbWJvQVBJOiBJZ3hDb21ib0FQSVNlcnZpY2UsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpIHB1YmxpYyBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoSUdYX0lOUFVUX0dST1VQX1RZUEUpIHByb3RlY3RlZCBfaW5wdXRHcm91cFR5cGU6IElneElucHV0R3JvdXBUeXBlLFxuICAgICAgICBAT3B0aW9uYWwoKSBwcm90ZWN0ZWQgX2luamVjdG9yOiBJbmplY3RvcixcbiAgICAgICAgQE9wdGlvbmFsKCkgQEluamVjdChJZ3hJY29uU2VydmljZSkgcHJvdGVjdGVkIF9pY29uU2VydmljZT86IElneEljb25TZXJ2aWNlLFxuICAgICkgeyB9XG5cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gdGhpcy5pbnB1dEdyb3VwLmVsZW1lbnQubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcuaWd4LWlucHV0LWdyb3VwX19idW5kbGUnKSBhcyBIVE1MRWxlbWVudDtcblxuICAgICAgICB0aGlzLl9vdmVybGF5U2V0dGluZ3MgPSB7XG4gICAgICAgICAgICB0YXJnZXQ6IHRhcmdldEVsZW1lbnQsXG4gICAgICAgICAgICBzY3JvbGxTdHJhdGVneTogbmV3IEFic29sdXRlU2Nyb2xsU3RyYXRlZ3koKSxcbiAgICAgICAgICAgIHBvc2l0aW9uU3RyYXRlZ3k6IG5ldyBBdXRvUG9zaXRpb25TdHJhdGVneSgpLFxuICAgICAgICAgICAgbW9kYWw6IGZhbHNlLFxuICAgICAgICAgICAgY2xvc2VPbk91dHNpZGVDbGljazogdHJ1ZSxcbiAgICAgICAgICAgIGV4Y2x1ZGVGcm9tT3V0c2lkZUNsaWNrOiBbdGFyZ2V0RWxlbWVudF1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgbmdBZnRlckNvbnRlbnRDaGVja2VkKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pbnB1dEdyb3VwICYmIHRoaXMucHJlZml4ZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRHcm91cC5wcmVmaXhlcyA9IHRoaXMucHJlZml4ZXM7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pbnB1dEdyb3VwICYmIHRoaXMuc3VmZml4ZXM/Lmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRHcm91cC5zdWZmaXhlcyA9IHRoaXMuc3VmZml4ZXM7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKSB7XG5cbiAgICAgICAgdGhpcy5uZ0NvbnRyb2wgPSB0aGlzLl9pbmplY3Rvci5nZXQ8TmdDb250cm9sPihOZ0NvbnRyb2wsIG51bGwpO1xuICAgICAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2Uuc2V0KHRoaXMuaWQsIG5ldyBTZXQoKSk7XG4gICAgICAgIHRoaXMuX2ljb25TZXJ2aWNlPy5hZGRTdmdJY29uRnJvbVRleHQoY2FzZVNlbnNpdGl2ZS5uYW1lLCBjYXNlU2Vuc2l0aXZlLnZhbHVlLCAnaW14LWljb25zJyk7XG4gICAgICAgIHRoaXMuY29tcHV0ZWRTdHlsZXMgPSB0aGlzLmRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUodGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZmlsdGVyZWREYXRhID0gWy4uLnRoaXMuZGF0YV07XG4gICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCkge1xuICAgICAgICAgICAgdGhpcy5uZ0NvbnRyb2wuc3RhdHVzQ2hhbmdlcy5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHRoaXMub25TdGF0dXNDaGFuZ2VkKTtcbiAgICAgICAgICAgIHRoaXMubWFuYWdlUmVxdWlyZWRBc3RlcmlzaygpO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMudmlydERpci5jaHVua1ByZWxvYWQucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSgoZTogSUZvck9mU3RhdGUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50QXJnczogSUZvck9mU3RhdGUgPSBPYmplY3QuYXNzaWduKHt9LCBlLCB7IG93bmVyOiB0aGlzIH0pO1xuICAgICAgICAgICAgdGhpcy5kYXRhUHJlTG9hZC5lbWl0KGV2ZW50QXJncyk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5uZXh0KCk7XG4gICAgICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgICAgICAgdGhpcy5jb21ib0FQSS5jbGVhcigpO1xuICAgICAgICB0aGlzLnNlbGVjdGlvblNlcnZpY2UuZGVsZXRlKHRoaXMuaWQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgbWV0aG9kIHRoYXQgb3BlbnMvY2xvc2VzIHRoZSBjb21iby5cbiAgICAgKlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiAoY2xpY2spPVwiY29tYm8udG9nZ2xlKClcIj5Ub2dnbGUgQ29tYm88L2J1dHRvbj5cbiAgICAgKiA8aWd4LWNvbWJvICNjb21ibz48L2lneC1jb21ibz5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgdG9nZ2xlKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5jb2xsYXBzZWQgJiYgdGhpcy5fZGlzcGxheVZhbHVlLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJWYWx1ZSA9ICcnO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG92ZXJsYXlTZXR0aW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX292ZXJsYXlTZXR0aW5ncywgdGhpcy5vdmVybGF5U2V0dGluZ3MpO1xuICAgICAgICB0aGlzLmRyb3Bkb3duLnRvZ2dsZShvdmVybGF5U2V0dGluZ3MpO1xuICAgICAgICBpZiAoIXRoaXMuY29sbGFwc2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNldEFjdGl2ZURlc2NlbmRhbnQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEEgbWV0aG9kIHRoYXQgb3BlbnMgdGhlIGNvbWJvLlxuICAgICAqXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJjb21iby5vcGVuKClcIj5PcGVuIENvbWJvPC9idXR0b24+XG4gICAgICogPGlneC1jb21ibyAjY29tYm8+PC9pZ3gtY29tYm8+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIG9wZW4oKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlZCAmJiB0aGlzLl9kaXNwbGF5VmFsdWUubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlclZhbHVlID0gJyc7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgb3ZlcmxheVNldHRpbmdzID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5fb3ZlcmxheVNldHRpbmdzLCB0aGlzLm92ZXJsYXlTZXR0aW5ncyk7XG4gICAgICAgIHRoaXMuZHJvcGRvd24ub3BlbihvdmVybGF5U2V0dGluZ3MpO1xuICAgICAgICB0aGlzLnNldEFjdGl2ZURlc2NlbmRhbnQoKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBBIG1ldGhvZCB0aGF0IGNsb3NlcyB0aGUgY29tYm8uXG4gICAgICpcbiAgICAgKiBgYGBodG1sXG4gICAgICogPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cImNvbWJvLmNsb3NlKClcIj5DbG9zZSBDb21ibzwvYnV0dG9uPlxuICAgICAqIDxpZ3gtY29tYm8gI2NvbWJvPjwvaWd4LWNvbWJvPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBjbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5kcm9wZG93bi5jbG9zZSgpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRyaWdnZXJzIGNoYW5nZSBkZXRlY3Rpb24gb24gdGhlIGNvbWJvIHZpZXdcbiAgICAgKi9cbiAgICBwdWJsaWMgdHJpZ2dlckNoZWNrKCkge1xuICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0IGN1cnJlbnQgc2VsZWN0aW9uIHN0YXRlXG4gICAgICpcbiAgICAgKiBAcmV0dXJucyBBcnJheSBvZiBzZWxlY3RlZCBpdGVtc1xuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgbXlTZWxlY3Rpb24gPSB0aGlzLmNvbWJvLnNlbGVjdGlvbjtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHNlbGVjdGlvbigpOiBhbnlbXSB7XG4gICAgICAgIGNvbnN0IGl0ZW1zID0gQXJyYXkuZnJvbSh0aGlzLnNlbGVjdGlvblNlcnZpY2UuZ2V0KHRoaXMuaWQpKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydEtleXNUb0l0ZW1zKGl0ZW1zKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGlmIHRoZSBzcGVjaWZpZWQgaXRlbUlEIGlzIHNlbGVjdGVkXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgcHVibGljIGlzSXRlbVNlbGVjdGVkKGl0ZW06IGFueSk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rpb25TZXJ2aWNlLmlzX2l0ZW1fc2VsZWN0ZWQodGhpcy5pZCwgaXRlbSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGdldCB0b2dnbGVJY29uKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmRyb3Bkb3duLmNvbGxhcHNlZCA/ICdpbnB1dF9leHBhbmQnIDogJ2lucHV0X2NvbGxhcHNlJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgYWRkSXRlbVRvQ29sbGVjdGlvbigpIHtcbiAgICAgICAgaWYgKCF0aGlzLnNlYXJjaFZhbHVlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgYWRkZWRJdGVtID0gdGhpcy5kaXNwbGF5S2V5ID8ge1xuICAgICAgICAgICAgW3RoaXMudmFsdWVLZXldOiB0aGlzLnNlYXJjaFZhbHVlLFxuICAgICAgICAgICAgW3RoaXMuZGlzcGxheUtleV06IHRoaXMuc2VhcmNoVmFsdWVcbiAgICAgICAgfSA6IHRoaXMuc2VhcmNoVmFsdWU7XG4gICAgICAgIGlmICh0aGlzLmdyb3VwS2V5KSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKGFkZGVkSXRlbSwgeyBbdGhpcy5ncm91cEtleV06IHRoaXMuZGVmYXVsdEZhbGxiYWNrR3JvdXAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gZXhwb3NlIHNoYWxsb3cgY29weSBpbnN0ZWFkIG9mIHRoaXMuZGF0YSBpbiBldmVudCBhcmdzIHNvIHRoaXMuZGF0YSBjYW4ndCBiZSBtdXRhdGVkXG4gICAgICAgIGNvbnN0IG9sZENvbGxlY3Rpb24gPSBbLi4udGhpcy5kYXRhXTtcbiAgICAgICAgY29uc3QgbmV3Q29sbGVjdGlvbiA9IFsuLi50aGlzLmRhdGEsIGFkZGVkSXRlbV07XG4gICAgICAgIGNvbnN0IGFyZ3M6IElDb21ib0l0ZW1BZGRpdGlvbkV2ZW50ID0ge1xuICAgICAgICAgICAgb2xkQ29sbGVjdGlvbiwgYWRkZWRJdGVtLCBuZXdDb2xsZWN0aW9uLCBvd25lcjogdGhpcywgY2FuY2VsOiBmYWxzZVxuICAgICAgICB9O1xuICAgICAgICB0aGlzLmFkZGl0aW9uLmVtaXQoYXJncyk7XG4gICAgICAgIGlmIChhcmdzLmNhbmNlbCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZGF0YS5wdXNoKGFyZ3MuYWRkZWRJdGVtKTtcbiAgICAgICAgLy8gdHJpZ2dlciByZS1yZW5kZXJcbiAgICAgICAgdGhpcy5kYXRhID0gY2xvbmVBcnJheSh0aGlzLmRhdGEpO1xuICAgICAgICB0aGlzLnNlbGVjdCh0aGlzLnZhbHVlS2V5ICE9PSBudWxsICYmIHRoaXMudmFsdWVLZXkgIT09IHVuZGVmaW5lZCA/XG4gICAgICAgICAgICBbYXJncy5hZGRlZEl0ZW1bdGhpcy52YWx1ZUtleV1dIDogW2FyZ3MuYWRkZWRJdGVtXSwgZmFsc2UpO1xuICAgICAgICB0aGlzLmN1c3RvbVZhbHVlRmxhZyA9IGZhbHNlO1xuICAgICAgICB0aGlzLnNlYXJjaElucHV0Py5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICAgIHRoaXMuZHJvcGRvd24uZm9jdXNlZEl0ZW0gPSBudWxsO1xuICAgICAgICB0aGlzLnZpcnREaXIuc2Nyb2xsVG8oMCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGlzQWRkQnV0dG9uVmlzaWJsZSgpOiBib29sZWFuIHtcbiAgICAgICAgLy8gVGhpcyBzaG91bGQgYWx3YXlzIHJldHVybiBhIGJvb2xlYW4gdmFsdWUuIElmIHRoaXMuc2VhcmNoVmFsdWUgd2FzICcnLCBpdCByZXR1cm5zICcnIGluc3RlYWQgb2YgZmFsc2U7XG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaFZhbHVlICE9PSAnJyAmJiB0aGlzLmN1c3RvbVZhbHVlRmxhZztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaGFuZGxlSW5wdXRDaGFuZ2UoZXZlbnQ/OiBhbnkpIHtcbiAgICAgICAgaWYgKGV2ZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGFyZ3M6IElDb21ib1NlYXJjaElucHV0RXZlbnRBcmdzID0ge1xuICAgICAgICAgICAgICAgIHNlYXJjaFRleHQ6IHR5cGVvZiBldmVudCA9PT0gJ3N0cmluZycgPyBldmVudCA6IGV2ZW50LnRhcmdldC52YWx1ZSxcbiAgICAgICAgICAgICAgICBvd25lcjogdGhpcyxcbiAgICAgICAgICAgICAgICBjYW5jZWw6IGZhbHNlXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dFVwZGF0ZS5lbWl0KGFyZ3MpO1xuICAgICAgICAgICAgaWYgKGFyZ3MuY2FuY2VsKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5maWx0ZXJWYWx1ZSA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5jaGVja01hdGNoKCk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogRXZlbnQgaGFuZGxlcnNcbiAgICAgKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgaGFuZGxlT3BlbmluZyhlOiBJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzKSB7XG4gICAgICAgIGNvbnN0IGFyZ3M6IElCYXNlQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MgPSB7IG93bmVyOiB0aGlzLCBldmVudDogZS5ldmVudCwgY2FuY2VsOiBlLmNhbmNlbCB9O1xuICAgICAgICB0aGlzLm9wZW5pbmcuZW1pdChhcmdzKTtcbiAgICAgICAgZS5jYW5jZWwgPSBhcmdzLmNhbmNlbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaGFuZGxlQ2xvc2luZyhlOiBJQmFzZUNhbmNlbGFibGVCcm93c2VyRXZlbnRBcmdzKSB7XG4gICAgICAgIGNvbnN0IGFyZ3M6IElCYXNlQ2FuY2VsYWJsZUJyb3dzZXJFdmVudEFyZ3MgPSB7IG93bmVyOiB0aGlzLCBldmVudDogZS5ldmVudCwgY2FuY2VsOiBlLmNhbmNlbCB9O1xuICAgICAgICB0aGlzLmNsb3NpbmcuZW1pdChhcmdzKTtcbiAgICAgICAgZS5jYW5jZWwgPSBhcmdzLmNhbmNlbDtcbiAgICAgICAgaWYgKGUuY2FuY2VsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWFyY2hWYWx1ZSA9ICcnO1xuICAgICAgICBpZiAoIWUuZXZlbnQpIHtcbiAgICAgICAgICAgIHRoaXMuY29tYm9JbnB1dD8ubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGhhbmRsZUNsb3NlZCgpIHtcbiAgICAgICAgdGhpcy5jbG9zZWQuZW1pdCh7IG93bmVyOiB0aGlzIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBoYW5kbGVLZXlEb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJyB8fCBldmVudC5rZXkgPT09ICdVcCcpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25DaGFuZ2VDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrID0gZm47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIHNldERpc2FibGVkU3RhdGUoaXNEaXNhYmxlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgb25DbGljayhldmVudDogRXZlbnQpIHtcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBvbkJsdXIoKSB7XG4gICAgICAgIGlmICh0aGlzLmNvbGxhcHNlZCkge1xuICAgICAgICAgICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2soKTtcbiAgICAgICAgICAgIGlmICh0aGlzLm5nQ29udHJvbCAmJiB0aGlzLm5nQ29udHJvbC5pbnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZCA9IElneElucHV0U3RhdGUuSU5WQUxJRDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy52YWxpZCA9IElneElucHV0U3RhdGUuSU5JVElBTDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBzZXRBY3RpdmVEZXNjZW5kYW50KCk6IHZvaWQge1xuICAgICAgICB0aGlzLmFjdGl2ZURlc2NlbmRhbnQgPSB0aGlzLmRyb3Bkb3duLmZvY3VzZWRJdGVtPy5pZCB8fCAnJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgdG9nZ2xlQ2FzZVNlbnNpdGl2ZSgpIHtcbiAgICAgICAgdGhpcy5maWx0ZXJpbmdPcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5maWx0ZXJpbmdPcHRpb25zLCB7IGNhc2VTZW5zaXRpdmU6ICF0aGlzLmZpbHRlcmluZ09wdGlvbnMuY2FzZVNlbnNpdGl2ZSB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgb25TdGF0dXNDaGFuZ2VkID0gKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5pc1RvdWNoZWRPckRpcnR5ICYmICF0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5oYXNWYWxpZGF0b3JzICYmICghdGhpcy5jb2xsYXBzZWQgfHwgdGhpcy5pbnB1dEdyb3VwLmlzRm9jdXNlZCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkID0gdGhpcy5uZ0NvbnRyb2wudmFsaWQgPyBJZ3hJbnB1dFN0YXRlLlZBTElEIDogSWd4SW5wdXRTdGF0ZS5JTlZBTElEO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLnZhbGlkID0gdGhpcy5uZ0NvbnRyb2wudmFsaWQgPyBJZ3hJbnB1dFN0YXRlLklOSVRJQUwgOiBJZ3hJbnB1dFN0YXRlLklOVkFMSUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBCLlAuIDE4IE1heSAyMDIxOiBJZ3hEYXRlUGlja2VyIGRvZXMgbm90IHJlc2V0IGl0cyBzdGF0ZSB1cG9uIHJlc2V0Rm9ybSAjOTUyNlxuICAgICAgICAgICAgdGhpcy52YWxpZCA9IElneElucHV0U3RhdGUuSU5JVElBTDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLm1hbmFnZVJlcXVpcmVkQXN0ZXJpc2soKTtcbiAgICB9O1xuXG4gICAgcHJpdmF0ZSBnZXQgaXNUb3VjaGVkT3JEaXJ0eSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICh0aGlzLm5nQ29udHJvbC5jb250cm9sLnRvdWNoZWQgfHwgdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5kaXJ0eSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXQgaGFzVmFsaWRhdG9ycygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuICghIXRoaXMubmdDb250cm9sLmNvbnRyb2wudmFsaWRhdG9yIHx8ICEhdGhpcy5uZ0NvbnRyb2wuY29udHJvbC5hc3luY1ZhbGlkYXRvcik7XG4gICAgfVxuXG4gICAgLyoqIGlmIHRoZXJlIGlzIGEgdmFsdWVLZXkgLSBtYXAgdGhlIGtleXMgdG8gZGF0YSBpdGVtcywgZWxzZSAtIGp1c3QgcmV0dXJuIHRoZSBrZXlzICovXG4gICAgcHJvdGVjdGVkIGNvbnZlcnRLZXlzVG9JdGVtcyhrZXlzOiBhbnlbXSkge1xuICAgICAgICBpZiAodGhpcy52YWx1ZUtleSA9PT0gbnVsbCB8fCB0aGlzLnZhbHVlS2V5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBrZXlzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGtleXMubWFwKGtleSA9PiB7XG4gICAgICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5kYXRhLmZpbmQoZW50cnkgPT4gaXNFcXVhbChlbnRyeVt0aGlzLnZhbHVlS2V5XSwga2V5KSk7XG5cbiAgICAgICAgICAgIHJldHVybiBpdGVtICE9PSB1bmRlZmluZWQgPyBpdGVtIDogeyBbdGhpcy52YWx1ZUtleV06IGtleSB9O1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY2hlY2tNYXRjaCgpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgaXRlbU1hdGNoID0gdGhpcy5maWx0ZXJlZERhdGEuc29tZSh0aGlzLmZpbmRNYXRjaCk7XG4gICAgICAgIHRoaXMuY3VzdG9tVmFsdWVGbGFnID0gdGhpcy5hbGxvd0N1c3RvbVZhbHVlcyAmJiAhaXRlbU1hdGNoO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBmaW5kTWF0Y2ggPSAoZWxlbWVudDogYW55KTogYm9vbGVhbiA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5kaXNwbGF5S2V5ID8gZWxlbWVudFt0aGlzLmRpc3BsYXlLZXldIDogZWxlbWVudDtcbiAgICAgICAgY29uc3Qgc2VhcmNoVmFsdWUgPSB0aGlzLnNlYXJjaFZhbHVlIHx8IHRoaXMuY29tYm9JbnB1dD8udmFsdWU7XG4gICAgICAgIHJldHVybiB2YWx1ZT8udG9TdHJpbmcoKS50cmltKCkudG9Mb3dlckNhc2UoKSA9PT0gc2VhcmNoVmFsdWUudHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgfTtcblxuICAgIHByb3RlY3RlZCBtYW5hZ2VSZXF1aXJlZEFzdGVyaXNrKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRHcm91cC5pc1JlcXVpcmVkID0gdGhpcy5yZXF1aXJlZDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBDb250YWlucyBrZXktdmFsdWUgcGFpcnMgb2YgdGhlIHNlbGVjdGVkIHZhbHVlS2V5cyBhbmQgdGhlaXIgcmVzcC4gZGlzcGxheUtleXMgKi9cbiAgICBwcm90ZWN0ZWQgcmVnaXN0ZXJSZW1vdGVFbnRyaWVzKGlkczogYW55W10sIGFkZCA9IHRydWUpIHtcbiAgICAgICAgaWYgKGFkZCkge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uID0gdGhpcy5nZXRWYWx1ZURpc3BsYXlQYWlycyhpZHMpO1xuICAgICAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBzZWxlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdGVTZWxlY3Rpb25bZW50cnlbdGhpcy52YWx1ZUtleV1dID0gZW50cnlbdGhpcy5kaXNwbGF5S2V5XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgZW50cnkgb2YgaWRzKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX3JlbW90ZVNlbGVjdGlvbltlbnRyeV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBGb3IgYGlkOiBhbnlbXWAgcmV0dXJucyBhIG1hcHBlZCBgeyBbY29tYm8udmFsdWVLZXldOiBhbnksIFtjb21iby5kaXNwbGF5S2V5XTogYW55IH1bXWBcbiAgICAgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0VmFsdWVEaXNwbGF5UGFpcnMoaWRzOiBhbnlbXSkge1xuICAgICAgICByZXR1cm4gdGhpcy5kYXRhLmZpbHRlcihlbnRyeSA9PiBpZHMuaW5kZXhPZihlbnRyeVt0aGlzLnZhbHVlS2V5XSkgPiAtMSkubWFwKGUgPT4gKHtcbiAgICAgICAgICAgIFt0aGlzLnZhbHVlS2V5XTogZVt0aGlzLnZhbHVlS2V5XSxcbiAgICAgICAgICAgIFt0aGlzLmRpc3BsYXlLZXldOiBlW3RoaXMuZGlzcGxheUtleV1cbiAgICAgICAgfSkpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRSZW1vdGVTZWxlY3Rpb24obmV3U2VsZWN0aW9uOiBhbnlbXSwgb2xkU2VsZWN0aW9uOiBhbnlbXSk6IHN0cmluZyB7XG4gICAgICAgIGlmICghbmV3U2VsZWN0aW9uLmxlbmd0aCkge1xuICAgICAgICAgICAgLy8gSWYgbmV3IHNlbGVjdGlvbiBpcyBlbXB0eSwgY2xlYXIgYWxsIGl0ZW1zXG4gICAgICAgICAgICB0aGlzLnJlZ2lzdGVyUmVtb3RlRW50cmllcyhvbGRTZWxlY3Rpb24sIGZhbHNlKTtcbiAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICAgICBjb25zdCByZW1vdmVkSXRlbXMgPSBvbGRTZWxlY3Rpb24uZmlsdGVyKGUgPT4gbmV3U2VsZWN0aW9uLmluZGV4T2YoZSkgPCAwKTtcbiAgICAgICAgY29uc3QgYWRkZWRJdGVtcyA9IG5ld1NlbGVjdGlvbi5maWx0ZXIoZSA9PiBvbGRTZWxlY3Rpb24uaW5kZXhPZihlKSA8IDApO1xuICAgICAgICB0aGlzLnJlZ2lzdGVyUmVtb3RlRW50cmllcyhhZGRlZEl0ZW1zKTtcbiAgICAgICAgdGhpcy5yZWdpc3RlclJlbW90ZUVudHJpZXMocmVtb3ZlZEl0ZW1zLCBmYWxzZSk7XG4gICAgICAgIHJldHVybiBPYmplY3Qua2V5cyh0aGlzLl9yZW1vdGVTZWxlY3Rpb24pLm1hcChlID0+IHRoaXMuX3JlbW90ZVNlbGVjdGlvbltlXSkuam9pbignLCAnKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0IHJlcXVpcmVkKCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5uZ0NvbnRyb2wgJiYgdGhpcy5uZ0NvbnRyb2wuY29udHJvbCAmJiB0aGlzLm5nQ29udHJvbC5jb250cm9sLnZhbGlkYXRvcikge1xuICAgICAgICAgICAgLy8gUnVuIHRoZSB2YWxpZGF0aW9uIHdpdGggZW1wdHkgb2JqZWN0IHRvIGNoZWNrIGlmIHJlcXVpcmVkIGlzIGVuYWJsZWQuXG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IHRoaXMubmdDb250cm9sLmNvbnRyb2wudmFsaWRhdG9yKHt9IGFzIEFic3RyYWN0Q29udHJvbCk7XG4gICAgICAgICAgICByZXR1cm4gZXJyb3IgJiYgZXJyb3IucmVxdWlyZWQ7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGFic3RyYWN0IGdldCBmaWx0ZXJlZERhdGEoKTogYW55W10gfCBudWxsO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBzZXQgZmlsdGVyZWREYXRhKHZhbDogYW55W10gfCBudWxsKTtcblxuICAgIHB1YmxpYyBhYnN0cmFjdCBoYW5kbGVPcGVuZWQoKTtcbiAgICBwdWJsaWMgYWJzdHJhY3Qgb25BcnJvd0Rvd24oZXZlbnQ6IEV2ZW50KTtcbiAgICBwdWJsaWMgYWJzdHJhY3QgZm9jdXNTZWFyY2hJbnB1dChvcGVuaW5nPzogYm9vbGVhbik7XG5cbiAgICBwdWJsaWMgYWJzdHJhY3Qgc2VsZWN0KG5ld0l0ZW06IGFueSk6IHZvaWQ7XG4gICAgcHVibGljIGFic3RyYWN0IHNlbGVjdChuZXdJdGVtczogQXJyYXk8YW55PiB8IGFueSwgY2xlYXJDdXJyZW50U2VsZWN0aW9uPzogYm9vbGVhbiwgZXZlbnQ/OiBFdmVudCk6IHZvaWQ7XG5cbiAgICBwdWJsaWMgYWJzdHJhY3QgZGVzZWxlY3QoLi4uYXJnczogW10gfCBbaXRlbXM6IEFycmF5PGFueT4sIGV2ZW50PzogRXZlbnRdKTogdm9pZDtcblxuICAgIHB1YmxpYyBhYnN0cmFjdCB3cml0ZVZhbHVlKHZhbHVlOiBhbnkpOiB2b2lkO1xuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb246IFNldDxhbnk+LCBldmVudD86IEV2ZW50KTogdm9pZDtcbiAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgY3JlYXRlRGlzcGxheVRleHQobmV3U2VsZWN0aW9uOiBhbnlbXSwgb2xkU2VsZWN0aW9uOiBhbnlbXSk7XG59XG4iXX0=
@@ -110,6 +110,7 @@ export const GridResourceStringsEN = {
110
110
  igx_grid_pinning_uncheck_all_label: 'Unpin All',
111
111
  igx_grid_row_edit_btn_done: 'Done',
112
112
  igx_grid_row_edit_btn_cancel: 'Cancel',
113
+ igx_grid_row_edit_text: 'You have {0} changes in this row and {1} hidden columns',
113
114
  igx_grid_toolbar_actions_filter_prompt: 'Filter columns list ...',
114
115
  igx_grid_toolbar_pinning_button_tooltip: 'Open column pinning dropdown',
115
116
  igx_grid_toolbar_hiding_button_tooltip: 'Open column hiding dropdown',
@@ -164,4 +165,4 @@ export const GridResourceStringsEN = {
164
165
  igx_grid_email_validation_error: 'A valid email address should be entered',
165
166
  igx_grid_pattern_validation_error: 'Entry does not match the required pattern'
166
167
  };
167
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1yZXNvdXJjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY29yZS9pMThuL2dyaWQtcmVzb3VyY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXVLQSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBeUI7SUFDdkQsNEJBQTRCLEVBQUUsZ0VBQWdFO0lBQzlGLG1DQUFtQyxFQUFFLGlFQUFpRTtJQUN0RyxxQ0FBcUMsRUFBRSxtRUFBbUU7SUFDMUcsa0NBQWtDLEVBQUUsbUJBQW1CO0lBQ3ZELDBCQUEwQixFQUFFLG1CQUFtQjtJQUMvQyxlQUFlLEVBQUUsUUFBUTtJQUN6Qix5QkFBeUIsRUFBRSxPQUFPO0lBQ2xDLHlCQUF5QixFQUFFLE9BQU87SUFDbEMsK0JBQStCLEVBQUUsa0JBQWtCO0lBQ25ELHVDQUF1QyxFQUFFLEtBQUs7SUFDOUMsb0NBQW9DLEVBQUUsY0FBYztJQUNwRCxvQ0FBb0MsRUFBRSxjQUFjO0lBQ3BELDRCQUE0QixFQUFFLEtBQUs7SUFDbkMsMkJBQTJCLEVBQUUsSUFBSTtJQUNqQyx1QkFBdUIsRUFBRSxnQkFBZ0I7SUFDekMsd0JBQXdCLEVBQUUsVUFBVTtJQUNwQyw4QkFBOEIsRUFBRSxrQkFBa0I7SUFDbEQsMEJBQTBCLEVBQUUsYUFBYTtJQUN6Qyx3QkFBd0IsRUFBRSxXQUFXO0lBQ3JDLHNCQUFzQixFQUFFLFFBQVE7SUFDaEMsNEJBQTRCLEVBQUUsZ0JBQWdCO0lBQzlDLHFCQUFxQixFQUFFLE9BQU87SUFDOUIsd0JBQXdCLEVBQUUsV0FBVztJQUNyQyxvQkFBb0IsRUFBRSxNQUFNO0lBQzVCLHVCQUF1QixFQUFFLFVBQVU7SUFDbkMsc0JBQXNCLEVBQUUsUUFBUTtJQUNoQyxxQkFBcUIsRUFBRSxPQUFPO0lBQzlCLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsc0JBQXNCLEVBQUUsUUFBUTtJQUNoQyx5QkFB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QUUsMEJBQTBCO0lBQ2pFLHFDQUFxQyxFQUFFLDBCQUEwQjtJQUNqRSxvQ0FBb0MsRUFBRSx5QkFBeUI7SUFDL0QsNEJBQTRCLEVBQUUseUJBQXlCO0lBQ3ZELCtCQUErQixFQUFFLDRCQUE0QjtJQUM3RCwrQkFBK0IsRUFBRSw0QkFBNEI7SUFDN0QsOEJBQThCLEVBQUUsMkJBQTJCO0lBQzNELDRCQUE0QixFQUFFLDBDQUEwQztJQUN4RSwrQkFBK0IsRUFBRSxTQUFTO0lBQzFDLDRCQUE0QixFQUFFLE1BQU07SUFDcEMsK0JBQStCLEVBQUUsU0FBUztJQUMxQyw4QkFBOEIsRUFBRSxRQUFRO0lBQ3hDLG1DQUFtQyxFQUFFLGlCQUFpQjtJQUN0RCxrQ0FBa0MsRUFBRSx3QkFBd0I7SUFDNUQsNkJBQTZCLEVBQUUsMkNBQTJDO0lBQzFFLDZCQUE2QixFQUFFLDRDQUE0QztJQUMzRSxvQ0FBb0MsRUFBRSxnREFBZ0Q7SUFDdEYsb0NBQW9DLEVBQUUsb0RBQW9EO0lBQzFGLCtCQUErQixFQUFFLHlDQUF5QztJQUMxRSxpQ0FBaUMsRUFBRSwyQ0FBMkM7Q0FDakYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgSUdyaWRSZXNvdXJjZVN0cmluZ3Mge1xuICAgIGlneF9ncmlkX2dyb3VwQnlBcmVhX21lc3NhZ2U/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZ3JvdXBCeUFyZWFfc2VsZWN0X21lc3NhZ2U/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZ3JvdXBCeUFyZWFfZGVzZWxlY3RfbWVzc2FnZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9lbXB0eUZpbHRlcmVkR3JpZF9tZXNzYWdlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2VtcHR5R3JpZF9tZXNzYWdlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfcm93X2Nsb3NlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9yb3dfcmVzZXQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX3Jvd19wbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfcm93X2Jvb2xlYW5fcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX3Jvd19kYXRlX3BsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9yb3dfdGltZV9wbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfb3BlcmF0b3JfYW5kPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2NvbXBsZXhfZmlsdGVyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9vcGVyYXRvcl9vcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfY29udGFpbnM/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2RvZXNOb3RDb250YWluPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9zdGFydHNXaXRoPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9lbmRzV2l0aD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZXF1YWxzPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9kb2VzTm90RXF1YWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2VtcHR5Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9ub3RFbXB0eT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbnVsbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbm90TnVsbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfYmVmb3JlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9hZnRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfYXQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX25vdF9hdD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfYXRfYmVmb3JlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9hdF9hZnRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfdG9kYXk/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX3llc3RlcmRheT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfdGhpc01vbnRoPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9sYXN0TW9udGg/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX25leHRNb250aD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfdGhpc1llYXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2xhc3RZZWFyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9uZXh0WWVhcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZ3JlYXRlclRoYW4/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2xlc3NUaGFuPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9ncmVhdGVyVGhhbk9yRXF1YWxUbz86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbGVzc1RoYW5PckVxdWFsVG8/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX3RydWU/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2ZhbHNlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9hbGw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2NvbmRpdGlvbl9wbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9zdW1tYXJ5X2NvdW50Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3N1bW1hcnlfbWluPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3N1bW1hcnlfbWF4Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3N1bW1hcnlfc3VtPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3N1bW1hcnlfYXZlcmFnZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9zdW1tYXJ5X2VhcmxpZXN0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3N1bW1hcnlfbGF0ZXN0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9tb3ZpbmdfbGVmdD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfbW92aW5nX2xlZnRfc2hvcnQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX21vdmluZ19yaWdodD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfbW92aW5nX3JpZ2h0X3Nob3J0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9tb3ZpbmdfaGVhZGVyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9zb3J0aW5nX2FzYz86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfc29ydGluZ19hc2Nfc2hvcnQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX3NvcnRpbmdfZGVzYz86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfc29ydGluZ19kZXNjX3Nob3J0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9zb3J0aW5nX2hlYWRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfY2xlYXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfY3VzdG9tX2RpYWxvZ19hZGQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfY3VzdG9tX2RpYWxvZ19jbGVhcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9jdXN0b21fZGlhbG9nX2hlYWRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9jYW5jZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfYXBwbHk/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfc2VhcmNoX3BsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX3NlbGVjdF9hbGw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfc2VsZWN0X2FsbF9zZWFyY2hfcmVzdWx0cz86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9hZGRfdG9fZmlsdGVyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2JsYW5rcz86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9oaWRlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX3Nob3c/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfcGluPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX3VucGluPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX3NlbGVjdD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9kZXNlbGVjdD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF90ZXh0X2ZpbHRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9udW1iZXJfZmlsdGVyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2RhdGVfZmlsdGVyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2Jvb2xlYW5fZmlsdGVyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2N1cnJlbmN5X2ZpbHRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9jdXN0b21fZmlsdGVyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX25vX21hdGNoZXM/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfbWF0Y2hlc19jb3VudD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfdGl0bGU/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2FuZF9ncm91cD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfb3JfZ3JvdXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2VuZF9ncm91cD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfY3JlYXRlX2FuZF9ncm91cD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfY3JlYXRlX29yX2dyb3VwPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9hbmRfbGFiZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX29yX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9hZGRfY29uZGl0aW9uPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl91bmdyb3VwPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9kZWxldGU/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2RlbGV0ZV9maWx0ZXJzPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9pbml0aWFsX3RleHQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2NvbHVtbl9wbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfdmFsdWVfcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGlubmVkX3Jvd19pbmRpY2F0b3I/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfaGlkaW5nX2NoZWNrX2FsbF9sYWJlbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9oaWRpbmdfdW5jaGVja19hbGxfbGFiZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGlubmluZ19jaGVja19hbGxfbGFiZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGlubmluZ191bmNoZWNrX2FsbF9sYWJlbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9yb3dfZWRpdF9idG5fZG9uZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9yb3dfZWRpdF9idG5fY2FuY2VsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Rvb2xiYXJfYWN0aW9uc19maWx0ZXJfcHJvbXB0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Rvb2xiYXJfcGlubmluZ19idXR0b25fdG9vbHRpcD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF90b29sYmFyX2hpZGluZ19idXR0b25fdG9vbHRpcD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF90b29sYmFyX3Bpbm5pbmdfdGl0bGU/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfdG9vbGJhcl9oaWRpbmdfdGl0bGU/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfdG9vbGJhcl9hZHZhbmNlZF9maWx0ZXJpbmdfYnV0dG9uX3Rvb2x0aXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfdG9vbGJhcl9hZHZhbmNlZF9maWx0ZXJpbmdfYnV0dG9uX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Rvb2xiYXJfZXhwb3J0ZXJfYnV0dG9uX3Rvb2x0aXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfdG9vbGJhcl9leHBvcnRlcl9idXR0b25fbGFiZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfdG9vbGJhcl9leHBvcnRlcl9leGNlbF9lbnRyeV90ZXh0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Rvb2xiYXJfZXhwb3J0ZXJfY3N2X2VudHJ5X3RleHQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfc25hY2tiYXJfYWRkcm93X2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3NuYWNrYmFyX2FkZHJvd19hY3Rpb250ZXh0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FjdGlvbnNfZWRpdF9sYWJlbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hY3Rpb25zX2FkZF9sYWJlbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZGRfcm93X2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FjdGlvbnNfYWRkX2NoaWxkX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FjdGlvbnNfZGVsZXRlX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FjdGlvbnNfcGluX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FjdGlvbnNfdW5waW5fbGFiZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWN0aW9uc19qdW1wVXBfbGFiZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWN0aW9uc19qdW1wRG93bl9sYWJlbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9kYXRlX2RpbWVuc2lvbl90b3RhbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfY291bnQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX21pbj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfbWF4Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X2FnZ3JlZ2F0ZV9zdW0/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX2F2Zz86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfZGF0ZV9sYXRlc3Q/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX2RhdGVfZWFybGllc3Q/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX3RpbWVfbGF0ZXN0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X2FnZ3JlZ2F0ZV90aW1lX2VhcmxpZXN0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X2VtcHR5X3Jvd19kcm9wX2FyZWE/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfZW1wdHlfY29sdW1uX2Ryb3BfYXJlYT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9lbXB0eV9maWx0ZXJfZHJvcF9hcmVhPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X2VtcHR5X3ZhbHVlX2Ryb3BfYXJlYT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9yb3dfZHJvcF9jaGlwPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X2NvbHVtbl9kcm9wX2NoaXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfZmlsdGVyX2Ryb3BfY2hpcD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF92YWx1ZV9kcm9wX2NoaXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfZW1wdHlfbWVzc2FnZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9zZWxlY3Rvcl9maWx0ZXJzPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X3NlbGVjdG9yX3Jvd3M/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3JfY29sdW1ucz86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9zZWxlY3Rvcl92YWx1ZXM/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3JfcGFuZWxfZW1wdHk/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcmVxdWlyZWRfdmFsaWRhdGlvbl9lcnJvcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9taW5fdmFsaWRhdGlvbl9lcnJvcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9tYXhfdmFsaWRhdGlvbl9lcnJvcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9taW5fbGVuZ3RoX3ZhbGlkYXRpb25fZXJyb3I/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfbWF4X2xlbmd0aF92YWxpZGF0aW9uX2Vycm9yPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2VtYWlsX3ZhbGlkYXRpb25fZXJyb3I/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGF0dGVybl92YWxpZGF0aW9uX2Vycm9yPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgR3JpZFJlc291cmNlU3RyaW5nc0VOOiBJR3JpZFJlc291cmNlU3RyaW5ncyA9IHtcbiAgICBpZ3hfZ3JpZF9ncm91cEJ5QXJlYV9tZXNzYWdlOiAnRHJhZyBhIGNvbHVtbiBoZWFkZXIgYW5kIGRyb3AgaXQgaGVyZSB0byBncm91cCBieSB0aGF0IGNvbHVtbi4nLFxuICAgIGlneF9ncmlkX2dyb3VwQnlBcmVhX3NlbGVjdF9tZXNzYWdlOiAnU2VsZWN0IGFsbCByb3dzIGluIHRoZSBncm91cCB3aXRoIGZpZWxkIG5hbWUgezB9IGFuZCB2YWx1ZSB7MX0uJyxcbiAgICBpZ3hfZ3JpZF9ncm91cEJ5QXJlYV9kZXNlbGVjdF9tZXNzYWdlOiAnRGVzZWxlY3QgYWxsIHJvd3MgaW4gdGhlIGdyb3VwIHdpdGggZmllbGQgbmFtZSB7MH0gYW5kIHZhbHVlIHsxfS4nLFxuICAgIGlneF9ncmlkX2VtcHR5RmlsdGVyZWRHcmlkX21lc3NhZ2U6ICdObyByZWNvcmRzIGZvdW5kLicsXG4gICAgaWd4X2dyaWRfZW1wdHlHcmlkX21lc3NhZ2U6ICdHcmlkIGhhcyBubyBkYXRhLicsXG4gICAgaWd4X2dyaWRfZmlsdGVyOiAnRmlsdGVyJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfcm93X2Nsb3NlOiAnQ2xvc2UnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9yb3dfcmVzZXQ6ICdSZXNldCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX3Jvd19wbGFjZWhvbGRlcjogJ0FkZCBmaWx0ZXIgdmFsdWUnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9yb3dfYm9vbGVhbl9wbGFjZWhvbGRlcjogJ0FsbCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX3Jvd19kYXRlX3BsYWNlaG9sZGVyOiAnUGljayB1cCBkYXRlJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfcm93X3RpbWVfcGxhY2Vob2xkZXI6ICdQaWNrIHVwIHRpbWUnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9vcGVyYXRvcl9hbmQ6ICdBbmQnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9vcGVyYXRvcl9vcjogJ09yJyxcbiAgICBpZ3hfZ3JpZF9jb21wbGV4X2ZpbHRlcjogJ0NvbXBsZXggRmlsdGVyJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfY29udGFpbnM6ICdDb250YWlucycsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2RvZXNOb3RDb250YWluOiAnRG9lcyBOb3QgQ29udGFpbicsXG4gICAgaWd4X2dyaWRfZmlsdGVyX3N0YXJ0c1dpdGg6ICdTdGFydHMgV2l0aCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2VuZHNXaXRoOiAnRW5kcyBXaXRoJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZXF1YWxzOiAnRXF1YWxzJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZG9lc05vdEVxdWFsOiAnRG9lcyBOb3QgRXF1YWwnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9lbXB0eTogJ0VtcHR5JyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbm90RW1wdHk6ICdOb3QgRW1wdHknLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9udWxsOiAnTnVsbCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX25vdE51bGw6ICdOb3QgTnVsbCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2JlZm9yZTogJ0JlZm9yZScsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2FmdGVyOiAnQWZ0ZXInLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9hdDogJ0F0JyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbm90X2F0OiAnTm90IEF0JyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfYXRfYmVmb3JlOiAnQXQgb3IgQmVmb3JlJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfYXRfYWZ0ZXI6ICdBdCBvciBBZnRlcicsXG4gICAgaWd4X2dyaWRfZmlsdGVyX3RvZGF5OiAnVG9kYXknLFxuICAgIGlneF9ncmlkX2ZpbHRlcl95ZXN0ZXJkYXk6ICdZZXN0ZXJkYXknLFxuICAgIGlneF9ncmlkX2ZpbHRlcl90aGlzTW9udGg6ICdUaGlzIE1vbnRoJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbGFzdE1vbnRoOiAnTGFzdCBNb250aCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX25leHRNb250aDogJ05leHQgTW9udGgnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl90aGlzWWVhcjogJ1RoaXMgWWVhcicsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2xhc3RZZWFyOiAnTGFzdCBZZWFyJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbmV4dFllYXI6ICdOZXh0IFllYXInLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9ncmVhdGVyVGhhbjogJ0dyZWF0ZXIgVGhhbicsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2xlc3NUaGFuOiAnTGVzcyBUaGFuJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZ3JlYXRlclRoYW5PckVxdWFsVG86ICdHcmVhdGVyIFRoYW4gT3IgRXF1YWwgVG8nLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9sZXNzVGhhbk9yRXF1YWxUbzogJ0xlc3MgVGhhbiBPciBFcXVhbCBUbycsXG4gICAgaWd4X2dyaWRfZmlsdGVyX3RydWU6ICdUcnVlJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZmFsc2U6ICdGYWxzZScsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2FsbDogJ0FsbCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2NvbmRpdGlvbl9wbGFjZWhvbGRlcjogJ1NlbGVjdCBmaWx0ZXInLFxuICAgIGlneF9ncmlkX3N1bW1hcnlfY291bnQ6ICdDb3VudCcsXG4gICAgaWd4X2dyaWRfc3VtbWFyeV9taW46ICdNaW4nLFxuICAgIGlneF9ncmlkX3N1bW1hcnlfbWF4OiAnTWF4JyxcbiAgICBpZ3hfZ3JpZF9zdW1tYXJ5X3N1bTogJ1N1bScsXG4gICAgaWd4X2dyaWRfc3VtbWFyeV9hdmVyYWdlOiAnQXZnJyxcbiAgICBpZ3hfZ3JpZF9zdW1tYXJ5X2VhcmxpZXN0OiAnRWFybGllc3QnLFxuICAgIGlneF9ncmlkX3N1bW1hcnlfbGF0ZXN0OiAnTGF0ZXN0JyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfbW92aW5nX2xlZnQ6ICdtb3ZlIGxlZnQnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9tb3ZpbmdfbGVmdF9zaG9ydDogJ2xlZnQnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9tb3ZpbmdfcmlnaHQ6ICdtb3ZlIHJpZ2h0JyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfbW92aW5nX3JpZ2h0X3Nob3J0OiAncmlnaHQnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9tb3ZpbmdfaGVhZGVyOiAnbW92ZScsXG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX3NvcnRpbmdfYXNjOiAnYXNjZW5kaW5nJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfc29ydGluZ19hc2Nfc2hvcnQ6ICdhc2MnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9zb3J0aW5nX2Rlc2M6ICdkZXNjZW5kaW5nJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfc29ydGluZ19kZXNjX3Nob3J0OiAnZGVzYycsXG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX3NvcnRpbmdfaGVhZGVyOiAnc29ydCcsXG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX2NsZWFyOiAnQ2xlYXIgY29sdW1uIGZpbHRlcnMnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2N1c3RvbV9kaWFsb2dfYWRkOiAnYWRkIGZpbHRlcicsXG4gICAgaWd4X2dyaWRfZXhjZWxfY3VzdG9tX2RpYWxvZ19jbGVhcjogJ0NsZWFyIGZpbHRlcicsXG4gICAgaWd4X2dyaWRfZXhjZWxfY3VzdG9tX2RpYWxvZ19oZWFkZXI6ICdDdXN0b20gYXV0by1maWx0ZXIgb24gY29sdW1uOiAnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2NhbmNlbDogJ2NhbmNlbCcsXG4gICAgaWd4X2dyaWRfZXhjZWxfYXBwbHk6ICdhcHBseScsXG4gICAgaWd4X2dyaWRfZXhjZWxfc2VhcmNoX3BsYWNlaG9sZGVyOiAnU2VhcmNoJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9zZWxlY3RfYWxsOiAnU2VsZWN0IEFsbCcsXG4gICAgaWd4X2dyaWRfZXhjZWxfc2VsZWN0X2FsbF9zZWFyY2hfcmVzdWx0czogJ1NlbGVjdCBhbGwgc2VhcmNoIHJlc3VsdHMnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2FkZF90b19maWx0ZXI6ICdBZGQgY3VycmVudCBzZWxlY3Rpb24gdG8gZmlsdGVyJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9ibGFua3M6ICcoQmxhbmtzKScsXG4gICAgaWd4X2dyaWRfZXhjZWxfaGlkZTogJ0hpZGUgY29sdW1uJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9zaG93OiAnU2hvdyBjb2x1bW4nLFxuICAgIGlneF9ncmlkX2V4Y2VsX3BpbjogJ1BpbiBjb2x1bW4nLFxuICAgIGlneF9ncmlkX2V4Y2VsX3VucGluOiAnVW5waW4gY29sdW1uJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9zZWxlY3Q6ICdTZWxlY3QgY29sdW1uJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9kZXNlbGVjdDogJ0Rlc2VsZWN0IGNvbHVtbicsXG4gICAgaWd4X2dyaWRfZXhjZWxfdGV4dF9maWx0ZXI6ICdUZXh0IGZpbHRlcicsXG4gICAgaWd4X2dyaWRfZXhjZWxfbnVtYmVyX2ZpbHRlcjogJ051bWJlciBmaWx0ZXInLFxuICAgIGlneF9ncmlkX2V4Y2VsX2RhdGVfZmlsdGVyOiAnRGF0ZSBmaWx0ZXInLFxuICAgIGlneF9ncmlkX2V4Y2VsX2Jvb2xlYW5fZmlsdGVyOiAnQm9vbGVhbiBmaWx0ZXInLFxuICAgIGlneF9ncmlkX2V4Y2VsX2N1cnJlbmN5X2ZpbHRlcjogJ0N1cnJlbmN5IGZpbHRlcicsXG4gICAgaWd4X2dyaWRfZXhjZWxfY3VzdG9tX2ZpbHRlcjogJ0N1c3RvbSBmaWx0ZXIuLi4nLFxuICAgIGlneF9ncmlkX2V4Y2VsX25vX21hdGNoZXM6ICdObyBtYXRjaGVzJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9tYXRjaGVzX2NvdW50OiAnezB9IG1hdGNoZXMuJyxcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfdGl0bGU6ICdBZHZhbmNlZCBGaWx0ZXJpbmcnLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9hbmRfZ3JvdXA6ICdcIkFuZFwiIEdyb3VwJyxcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfb3JfZ3JvdXA6ICdcIk9yXCIgR3JvdXAnLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9lbmRfZ3JvdXA6ICdFbmQgR3JvdXAnLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9jcmVhdGVfYW5kX2dyb3VwOiAnQ3JlYXRlIFwiQW5kXCIgR3JvdXAnLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9jcmVhdGVfb3JfZ3JvdXA6ICdDcmVhdGUgXCJPclwiIEdyb3VwJyxcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfYW5kX2xhYmVsOiAnYW5kJyxcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfb3JfbGFiZWw6ICdvcicsXG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2FkZF9jb25kaXRpb246ICdDb25kaXRpb24nLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl91bmdyb3VwOiAnVW5ncm91cCcsXG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2RlbGV0ZTogJ0RlbGV0ZScsXG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2RlbGV0ZV9maWx0ZXJzOiAnRGVsZXRlIGZpbHRlcnMnLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9pbml0aWFsX3RleHQ6ICdTdGFydCB3aXRoIGNyZWF0aW5nIGEgZ3JvdXAgb2YgY29uZGl0aW9ucyBsaW5rZWQgd2l0aCBcIkFuZFwiIG9yIFwiT3JcIicsXG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2NvbHVtbl9wbGFjZWhvbGRlcjogJ1NlbGVjdCBjb2x1bW4nLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl92YWx1ZV9wbGFjZWhvbGRlcjogJ1ZhbHVlJyxcbiAgICBpZ3hfZ3JpZF9waW5uZWRfcm93X2luZGljYXRvcjogJ1Bpbm5lZCcsXG4gICAgaWd4X2dyaWRfaGlkaW5nX2NoZWNrX2FsbF9sYWJlbDogJ1Nob3cgQWxsJyxcbiAgICBpZ3hfZ3JpZF9oaWRpbmdfdW5jaGVja19hbGxfbGFiZWw6ICdIaWRlIEFsbCcsXG4gICAgaWd4X2dyaWRfcGlubmluZ19jaGVja19hbGxfbGFiZWw6ICdQaW4gQWxsJyxcbiAgICBpZ3hfZ3JpZF9waW5uaW5nX3VuY2hlY2tfYWxsX2xhYmVsOiAnVW5waW4gQWxsJyxcbiAgICBpZ3hfZ3JpZF9yb3dfZWRpdF9idG5fZG9uZTogJ0RvbmUnLFxuICAgIGlneF9ncmlkX3Jvd19lZGl0X2J0bl9jYW5jZWw6ICdDYW5jZWwnLFxuICAgIGlneF9ncmlkX3Rvb2xiYXJfYWN0aW9uc19maWx0ZXJfcHJvbXB0OiAnRmlsdGVyIGNvbHVtbnMgbGlzdCAuLi4nLFxuICAgIGlneF9ncmlkX3Rvb2xiYXJfcGlubmluZ19idXR0b25fdG9vbHRpcDogJ09wZW4gY29sdW1uIHBpbm5pbmcgZHJvcGRvd24nLFxuICAgIGlneF9ncmlkX3Rvb2xiYXJfaGlkaW5nX2J1dHRvbl90b29sdGlwOiAnT3BlbiBjb2x1bW4gaGlkaW5nIGRyb3Bkb3duJyxcbiAgICBpZ3hfZ3JpZF90b29sYmFyX3Bpbm5pbmdfdGl0bGU6ICdQaW5uZWQgY29sdW1ucycsXG4gICAgaWd4X2dyaWRfdG9vbGJhcl9oaWRpbmdfdGl0bGU6ICdWaXNpYmxlIGNvbHVtbnMnLFxuICAgIGlneF9ncmlkX3Rvb2xiYXJfYWR2YW5jZWRfZmlsdGVyaW5nX2J1dHRvbl90b29sdGlwOiAnT3BlbiBhZHZhbmNlZCBmaWx0ZXJpbmcgZGlhbG9nJyxcbiAgICBpZ3hfZ3JpZF90b29sYmFyX2FkdmFuY2VkX2ZpbHRlcmluZ19idXR0b25fbGFiZWw6ICdBZHZhbmNlZCBmaWx0ZXJpbmcnLFxuICAgIGlneF9ncmlkX3Rvb2xiYXJfZXhwb3J0ZXJfYnV0dG9uX3Rvb2x0aXA6ICdPcGVuIGV4cG9ydGVyIGRyb3Bkb3duJyxcbiAgICBpZ3hfZ3JpZF90b29sYmFyX2V4cG9ydGVyX2J1dHRvbl9sYWJlbDogJ0V4cG9ydCcsXG4gICAgaWd4X2dyaWRfdG9vbGJhcl9leHBvcnRlcl9leGNlbF9lbnRyeV90ZXh0OiAnRXhwb3J0IHRvIEV4Y2VsJyxcbiAgICBpZ3hfZ3JpZF90b29sYmFyX2V4cG9ydGVyX2Nzdl9lbnRyeV90ZXh0OiAnRXhwb3J0IHRvIENTVicsXG4gICAgaWd4X2dyaWRfc25hY2tiYXJfYWRkcm93X2xhYmVsOiAnUm93IGFkZGVkJyxcbiAgICBpZ3hfZ3JpZF9zbmFja2Jhcl9hZGRyb3dfYWN0aW9udGV4dDogJ1NIT1cnLFxuICAgIGlneF9ncmlkX2FjdGlvbnNfZWRpdF9sYWJlbDogJ0VkaXQnLFxuICAgIGlneF9ncmlkX2FjdGlvbnNfYWRkX2xhYmVsOiAnQWRkJyxcbiAgICBpZ3hfZ3JpZF9hZGRfcm93X2xhYmVsOiAnQUREIFJPVycsXG4gICAgaWd4X2dyaWRfYWN0aW9uc19hZGRfY2hpbGRfbGFiZWw6ICdBZGQgQ2hpbGQnLFxuICAgIGlneF9ncmlkX2FjdGlvbnNfZGVsZXRlX2xhYmVsOiAnRGVsZXRlJyxcbiAgICBpZ3hfZ3JpZF9hY3Rpb25zX3Bpbl9sYWJlbDogJ1BpbicsXG4gICAgaWd4X2dyaWRfYWN0aW9uc191bnBpbl9sYWJlbDogJ1VucGluJyxcbiAgICBpZ3hfZ3JpZF9hY3Rpb25zX2p1bXBVcF9sYWJlbDogJ0p1bXAgdXAnLFxuICAgIGlneF9ncmlkX2FjdGlvbnNfanVtcERvd25fbGFiZWw6ICdKdW1wIGRvd24nLFxuICAgIGlneF9ncmlkX3Bpdm90X2RhdGVfZGltZW5zaW9uX3RvdGFsOiAnQWxsIFBlcmlvZHMnLFxuICAgIGlneF9ncmlkX3Bpdm90X2FnZ3JlZ2F0ZV9jb3VudDogJ0NvdW50JyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfbWluOiAnTWluaW11bScsXG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX21heDogJ01heGltdW0nLFxuICAgIGlneF9ncmlkX3Bpdm90X2FnZ3JlZ2F0ZV9zdW06ICdTdW0nLFxuICAgIGlneF9ncmlkX3Bpdm90X2FnZ3JlZ2F0ZV9hdmc6ICdBdmVyYWdlJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfZGF0ZV9sYXRlc3Q6ICdMYXRlc3QgRGF0ZScsXG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX2RhdGVfZWFybGllc3Q6ICdFYXJsaWVzdCBEYXRlJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfdGltZV9sYXRlc3Q6ICdMYXRlc3QgVGltZScsXG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX3RpbWVfZWFybGllc3Q6ICdFYXJsaWVzdCBUaW1lJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9lbXB0eV9yb3dfZHJvcF9hcmVhOiAnRHJvcCBSb3cgRmllbGRzIGhlcmUuJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9lbXB0eV9jb2x1bW5fZHJvcF9hcmVhOiAnRHJvcCBDb2x1bW4gRmllbGRzIGhlcmUuJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9lbXB0eV9maWx0ZXJfZHJvcF9hcmVhOiAnRHJvcCBGaWx0ZXIgRmllbGRzIGhlcmUuJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9lbXB0eV92YWx1ZV9kcm9wX2FyZWE6ICdEcm9wIFZhbHVlIEZpZWxkcyBoZXJlLicsXG4gICAgaWd4X2dyaWRfcGl2b3Rfcm93X2Ryb3BfY2hpcDogJ0Ryb3AgaGVyZSB0byB1c2UgYXMgcm93JyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9jb2x1bW5fZHJvcF9jaGlwOiAnRHJvcCBoZXJlIHRvIHVzZSBhcyBjb2x1bW4nLFxuICAgIGlneF9ncmlkX3Bpdm90X2ZpbHRlcl9kcm9wX2NoaXA6ICdEcm9wIGhlcmUgdG8gdXNlIGFzIGZpbHRlcicsXG4gICAgaWd4X2dyaWRfcGl2b3RfdmFsdWVfZHJvcF9jaGlwOiAnRHJvcCBoZXJlIHRvIHVzZSBhcyB2YWx1ZScsXG4gICAgaWd4X2dyaWRfcGl2b3RfZW1wdHlfbWVzc2FnZTogJ1Bpdm90IGdyaWQgaGFzIG5vIGRpbWVuc2lvbnMgYW5kIHZhbHVlcy4nLFxuICAgIGlneF9ncmlkX3Bpdm90X3NlbGVjdG9yX2ZpbHRlcnM6ICdGaWx0ZXJzJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9zZWxlY3Rvcl9yb3dzOiAnUm93cycsXG4gICAgaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3JfY29sdW1uczogJ0NvbHVtbnMnLFxuICAgIGlneF9ncmlkX3Bpdm90X3NlbGVjdG9yX3ZhbHVlczogJ1ZhbHVlcycsXG4gICAgaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3JfcGFuZWxfZW1wdHk6ICdEcm9wIEl0ZW1zIEhlcmUnLFxuICAgIGlneF9ncmlkX3JlcXVpcmVkX3ZhbGlkYXRpb25fZXJyb3I6ICdUaGlzIGZpZWxkIGlzIHJlcXVpcmVkJyxcbiAgICBpZ3hfZ3JpZF9taW5fdmFsaWRhdGlvbl9lcnJvcjogJ0EgdmFsdWUgb2YgYXQgbGVhc3QgezB9IHNob3VsZCBiZSBlbnRlcmVkJyxcbiAgICBpZ3hfZ3JpZF9tYXhfdmFsaWRhdGlvbl9lcnJvcjogJ0EgdmFsdWUgbm8gbW9yZSB0aGFuIHswfSBzaG91bGQgYmUgZW50ZXJlZCcsXG4gICAgaWd4X2dyaWRfbWluX2xlbmd0aF92YWxpZGF0aW9uX2Vycm9yOiAnRW50cnkgc2hvdWxkIGJlIGF0IGxlYXN0IHswfSBjaGFyYWN0ZXIocykgbG9uZycsXG4gICAgaWd4X2dyaWRfbWF4X2xlbmd0aF92YWxpZGF0aW9uX2Vycm9yOiAnRW50cnkgc2hvdWxkIGJlIG5vIG1vcmUgdGhhbiB7MH0gY2hhcmFjdGVyKHMpIGxvbmcnLFxuICAgIGlneF9ncmlkX2VtYWlsX3ZhbGlkYXRpb25fZXJyb3I6ICdBIHZhbGlkIGVtYWlsIGFkZHJlc3Mgc2hvdWxkIGJlIGVudGVyZWQnLFxuICAgIGlneF9ncmlkX3BhdHRlcm5fdmFsaWRhdGlvbl9lcnJvcjogJ0VudHJ5IGRvZXMgbm90IG1hdGNoIHRoZSByZXF1aXJlZCBwYXR0ZXJuJ1xufTtcbiJdfQ==
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JpZC1yZXNvdXJjZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvY29yZS9pMThuL2dyaWQtcmVzb3VyY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXdLQSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBeUI7SUFDdkQsNEJBQTRCLEVBQUUsZ0VBQWdFO0lBQzlGLG1DQUFtQyxFQUFFLGlFQUFpRTtJQUN0RyxxQ0FBcUMsRUFBRSxtRUFBbUU7SUFDMUcsa0NBQWtDLEVBQUUsbUJBQW1CO0lBQ3ZELDBCQUEwQixFQUFFLG1CQUFtQjtJQUMvQyxlQUFlLEVBQUUsUUFBUTtJQUN6Qix5QkFBeUIsRUFBRSxPQUFPO0lBQ2xDLHlCQUF5QixFQUFFLE9BQU87SUFDbEMsK0JBQStCLEVBQUUsa0JBQWtCO0lBQ25ELHVDQUF1QyxFQUFFLEtBQUs7SUFDOUMsb0NBQW9DLEVBQUUsY0FBYztJQUNwRCxvQ0FBb0MsRUFBRSxjQUFjO0lBQ3BELDRCQUE0QixFQUFFLEtBQUs7SUFDbkMsMkJBQTJCLEVBQUUsSUFBSTtJQUNqQyx1QkFBdUIsRUFBRSxnQkFBZ0I7SUFDekMsd0JBQXdCLEVBQUUsVUFBVTtJQUNwQyw4QkFBOEIsRUFBRSxrQkFBa0I7SUFDbEQsMEJBQTBCLEVBQUUsYUFBYTtJQUN6Qyx3QkFBd0IsRUFBRSxXQUFXO0lBQ3JDLHNCQUFzQixFQUFFLFFBQVE7SUFDaEMsNEJBQTRCLEVBQUUsZ0JBQWdCO0lBQzlDLHFCQUFxQixFQUFFLE9BQU87SUFDOUIsd0JBQXdCLEVBQUUsV0FBVztJQUNyQyxvQkFBb0IsRUFBRSxNQUFNO0lBQzVCLHVCQUF1QixFQUFFLFVBQVU7SUFDbkMsc0JBQXNCLEVBQUUsUUFBUTtJQUNoQyxxQkFBcUIsRUFBRSxPQUFPO0lBQzlCLGtCQUFrQixFQUFFLElBQUk7SUFDeEIsc0JBQXNCLEVBQUUsUUFBUTtJQUNoQyx5QkFB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QUUsdUJBQXVCO0lBQzNELHFDQUFxQyxFQUFFLDBCQUEwQjtJQUNqRSxxQ0FBcUMsRUFBRSwwQkFBMEI7SUFDakUsb0NBQW9DLEVBQUUseUJBQXlCO0lBQy9ELDRCQUE0QixFQUFFLHlCQUF5QjtJQUN2RCwrQkFBK0IsRUFBRSw0QkFBNEI7SUFDN0QsK0JBQStCLEVBQUUsNEJBQTRCO0lBQzdELDhCQUE4QixFQUFFLDJCQUEyQjtJQUMzRCw0QkFBNEIsRUFBRSwwQ0FBMEM7SUFDeEUsK0JBQStCLEVBQUUsU0FBUztJQUMxQyw0QkFBNEIsRUFBRSxNQUFNO0lBQ3BDLCtCQUErQixFQUFFLFNBQVM7SUFDMUMsOEJBQThCLEVBQUUsUUFBUTtJQUN4QyxtQ0FBbUMsRUFBRSxpQkFBaUI7SUFDdEQsa0NBQWtDLEVBQUUsd0JBQXdCO0lBQzVELDZCQUE2QixFQUFFLDJDQUEyQztJQUMxRSw2QkFBNkIsRUFBRSw0Q0FBNEM7SUFDM0Usb0NBQW9DLEVBQUUsZ0RBQWdEO0lBQ3RGLG9DQUFvQyxFQUFFLG9EQUFvRDtJQUMxRiwrQkFBK0IsRUFBRSx5Q0FBeUM7SUFDMUUsaUNBQWlDLEVBQUUsMkNBQTJDO0NBQ2pGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIElHcmlkUmVzb3VyY2VTdHJpbmdzIHtcbiAgICBpZ3hfZ3JpZF9ncm91cEJ5QXJlYV9tZXNzYWdlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2dyb3VwQnlBcmVhX3NlbGVjdF9tZXNzYWdlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2dyb3VwQnlBcmVhX2Rlc2VsZWN0X21lc3NhZ2U/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZW1wdHlGaWx0ZXJlZEdyaWRfbWVzc2FnZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9lbXB0eUdyaWRfbWVzc2FnZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX3Jvd19jbG9zZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfcm93X3Jlc2V0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9yb3dfcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX3Jvd19ib29sZWFuX3BsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9yb3dfZGF0ZV9wbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfcm93X3RpbWVfcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX29wZXJhdG9yX2FuZD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9jb21wbGV4X2ZpbHRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfb3BlcmF0b3Jfb3I/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2NvbnRhaW5zPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9kb2VzTm90Q29udGFpbj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfc3RhcnRzV2l0aD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZW5kc1dpdGg/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2VxdWFscz86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZG9lc05vdEVxdWFsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9lbXB0eT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbm90RW1wdHk/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX251bGw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX25vdE51bGw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2JlZm9yZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfYWZ0ZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2F0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9ub3RfYXQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2F0X2JlZm9yZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfYXRfYWZ0ZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX3RvZGF5Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl95ZXN0ZXJkYXk/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX3RoaXNNb250aD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbGFzdE1vbnRoPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9uZXh0TW9udGg/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX3RoaXNZZWFyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9sYXN0WWVhcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbmV4dFllYXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2dyZWF0ZXJUaGFuPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9sZXNzVGhhbj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZ3JlYXRlclRoYW5PckVxdWFsVG8/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZmlsdGVyX2xlc3NUaGFuT3JFcXVhbFRvPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl90cnVlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9mYWxzZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfYWxsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2ZpbHRlcl9jb25kaXRpb25fcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfc3VtbWFyeV9jb3VudD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9zdW1tYXJ5X21pbj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9zdW1tYXJ5X21heD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9zdW1tYXJ5X3N1bT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9zdW1tYXJ5X2F2ZXJhZ2U/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfc3VtbWFyeV9lYXJsaWVzdD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9zdW1tYXJ5X2xhdGVzdD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfbW92aW5nX2xlZnQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX21vdmluZ19sZWZ0X3Nob3J0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9tb3ZpbmdfcmlnaHQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX21vdmluZ19yaWdodF9zaG9ydD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfbW92aW5nX2hlYWRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfc29ydGluZ19hc2M/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX3NvcnRpbmdfYXNjX3Nob3J0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9zb3J0aW5nX2Rlc2M/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX3NvcnRpbmdfZGVzY19zaG9ydD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfc29ydGluZ19oZWFkZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX2NsZWFyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2N1c3RvbV9kaWFsb2dfYWRkPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2N1c3RvbV9kaWFsb2dfY2xlYXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfY3VzdG9tX2RpYWxvZ19oZWFkZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfY2FuY2VsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX2FwcGx5Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX3NlYXJjaF9wbGFjZWhvbGRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9zZWxlY3RfYWxsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX3NlbGVjdF9hbGxfc2VhcmNoX3Jlc3VsdHM/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfYWRkX3RvX2ZpbHRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9ibGFua3M/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfaGlkZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9zaG93Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX3Bpbj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF91bnBpbj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9zZWxlY3Q/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfZGVzZWxlY3Q/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfdGV4dF9maWx0ZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfbnVtYmVyX2ZpbHRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9kYXRlX2ZpbHRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9ib29sZWFuX2ZpbHRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9jdXJyZW5jeV9maWx0ZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfZXhjZWxfY3VzdG9tX2ZpbHRlcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9leGNlbF9ub19tYXRjaGVzPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2V4Y2VsX21hdGNoZXNfY291bnQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX3RpdGxlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9hbmRfZ3JvdXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX29yX2dyb3VwPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9lbmRfZ3JvdXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2NyZWF0ZV9hbmRfZ3JvdXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2NyZWF0ZV9vcl9ncm91cD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfYW5kX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9vcl9sYWJlbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfYWRkX2NvbmRpdGlvbj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfdW5ncm91cD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfZGVsZXRlPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9kZWxldGVfZmlsdGVycz86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfaW5pdGlhbF90ZXh0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9jb2x1bW5fcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX3ZhbHVlX3BsYWNlaG9sZGVyPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpbm5lZF9yb3dfaW5kaWNhdG9yPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2hpZGluZ19jaGVja19hbGxfbGFiZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfaGlkaW5nX3VuY2hlY2tfYWxsX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpbm5pbmdfY2hlY2tfYWxsX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpbm5pbmdfdW5jaGVja19hbGxfbGFiZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcm93X2VkaXRfYnRuX2RvbmU/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcm93X2VkaXRfYnRuX2NhbmNlbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9yb3dfZWRpdF90ZXh0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Rvb2xiYXJfYWN0aW9uc19maWx0ZXJfcHJvbXB0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Rvb2xiYXJfcGlubmluZ19idXR0b25fdG9vbHRpcD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF90b29sYmFyX2hpZGluZ19idXR0b25fdG9vbHRpcD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF90b29sYmFyX3Bpbm5pbmdfdGl0bGU/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfdG9vbGJhcl9oaWRpbmdfdGl0bGU/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfdG9vbGJhcl9hZHZhbmNlZF9maWx0ZXJpbmdfYnV0dG9uX3Rvb2x0aXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfdG9vbGJhcl9hZHZhbmNlZF9maWx0ZXJpbmdfYnV0dG9uX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Rvb2xiYXJfZXhwb3J0ZXJfYnV0dG9uX3Rvb2x0aXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfdG9vbGJhcl9leHBvcnRlcl9idXR0b25fbGFiZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfdG9vbGJhcl9leHBvcnRlcl9leGNlbF9lbnRyeV90ZXh0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Rvb2xiYXJfZXhwb3J0ZXJfY3N2X2VudHJ5X3RleHQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfc25hY2tiYXJfYWRkcm93X2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3NuYWNrYmFyX2FkZHJvd19hY3Rpb250ZXh0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FjdGlvbnNfZWRpdF9sYWJlbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hY3Rpb25zX2FkZF9sYWJlbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9hZGRfcm93X2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FjdGlvbnNfYWRkX2NoaWxkX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FjdGlvbnNfZGVsZXRlX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FjdGlvbnNfcGluX2xhYmVsPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2FjdGlvbnNfdW5waW5fbGFiZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWN0aW9uc19qdW1wVXBfbGFiZWw/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfYWN0aW9uc19qdW1wRG93bl9sYWJlbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9kYXRlX2RpbWVuc2lvbl90b3RhbD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfY291bnQ/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX21pbj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfbWF4Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X2FnZ3JlZ2F0ZV9zdW0/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX2F2Zz86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfZGF0ZV9sYXRlc3Q/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX2RhdGVfZWFybGllc3Q/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX3RpbWVfbGF0ZXN0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X2FnZ3JlZ2F0ZV90aW1lX2VhcmxpZXN0Pzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X2VtcHR5X3Jvd19kcm9wX2FyZWE/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfZW1wdHlfY29sdW1uX2Ryb3BfYXJlYT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9lbXB0eV9maWx0ZXJfZHJvcF9hcmVhPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X2VtcHR5X3ZhbHVlX2Ryb3BfYXJlYT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9yb3dfZHJvcF9jaGlwPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X2NvbHVtbl9kcm9wX2NoaXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfZmlsdGVyX2Ryb3BfY2hpcD86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF92YWx1ZV9kcm9wX2NoaXA/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3RfZW1wdHlfbWVzc2FnZT86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9zZWxlY3Rvcl9maWx0ZXJzPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX3Bpdm90X3NlbGVjdG9yX3Jvd3M/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3JfY29sdW1ucz86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9waXZvdF9zZWxlY3Rvcl92YWx1ZXM/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3JfcGFuZWxfZW1wdHk/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcmVxdWlyZWRfdmFsaWRhdGlvbl9lcnJvcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9taW5fdmFsaWRhdGlvbl9lcnJvcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9tYXhfdmFsaWRhdGlvbl9lcnJvcj86IHN0cmluZztcbiAgICBpZ3hfZ3JpZF9taW5fbGVuZ3RoX3ZhbGlkYXRpb25fZXJyb3I/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfbWF4X2xlbmd0aF92YWxpZGF0aW9uX2Vycm9yPzogc3RyaW5nO1xuICAgIGlneF9ncmlkX2VtYWlsX3ZhbGlkYXRpb25fZXJyb3I/OiBzdHJpbmc7XG4gICAgaWd4X2dyaWRfcGF0dGVybl92YWxpZGF0aW9uX2Vycm9yPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgR3JpZFJlc291cmNlU3RyaW5nc0VOOiBJR3JpZFJlc291cmNlU3RyaW5ncyA9IHtcbiAgICBpZ3hfZ3JpZF9ncm91cEJ5QXJlYV9tZXNzYWdlOiAnRHJhZyBhIGNvbHVtbiBoZWFkZXIgYW5kIGRyb3AgaXQgaGVyZSB0byBncm91cCBieSB0aGF0IGNvbHVtbi4nLFxuICAgIGlneF9ncmlkX2dyb3VwQnlBcmVhX3NlbGVjdF9tZXNzYWdlOiAnU2VsZWN0IGFsbCByb3dzIGluIHRoZSBncm91cCB3aXRoIGZpZWxkIG5hbWUgezB9IGFuZCB2YWx1ZSB7MX0uJyxcbiAgICBpZ3hfZ3JpZF9ncm91cEJ5QXJlYV9kZXNlbGVjdF9tZXNzYWdlOiAnRGVzZWxlY3QgYWxsIHJvd3MgaW4gdGhlIGdyb3VwIHdpdGggZmllbGQgbmFtZSB7MH0gYW5kIHZhbHVlIHsxfS4nLFxuICAgIGlneF9ncmlkX2VtcHR5RmlsdGVyZWRHcmlkX21lc3NhZ2U6ICdObyByZWNvcmRzIGZvdW5kLicsXG4gICAgaWd4X2dyaWRfZW1wdHlHcmlkX21lc3NhZ2U6ICdHcmlkIGhhcyBubyBkYXRhLicsXG4gICAgaWd4X2dyaWRfZmlsdGVyOiAnRmlsdGVyJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfcm93X2Nsb3NlOiAnQ2xvc2UnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9yb3dfcmVzZXQ6ICdSZXNldCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX3Jvd19wbGFjZWhvbGRlcjogJ0FkZCBmaWx0ZXIgdmFsdWUnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9yb3dfYm9vbGVhbl9wbGFjZWhvbGRlcjogJ0FsbCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX3Jvd19kYXRlX3BsYWNlaG9sZGVyOiAnUGljayB1cCBkYXRlJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfcm93X3RpbWVfcGxhY2Vob2xkZXI6ICdQaWNrIHVwIHRpbWUnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9vcGVyYXRvcl9hbmQ6ICdBbmQnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9vcGVyYXRvcl9vcjogJ09yJyxcbiAgICBpZ3hfZ3JpZF9jb21wbGV4X2ZpbHRlcjogJ0NvbXBsZXggRmlsdGVyJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfY29udGFpbnM6ICdDb250YWlucycsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2RvZXNOb3RDb250YWluOiAnRG9lcyBOb3QgQ29udGFpbicsXG4gICAgaWd4X2dyaWRfZmlsdGVyX3N0YXJ0c1dpdGg6ICdTdGFydHMgV2l0aCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2VuZHNXaXRoOiAnRW5kcyBXaXRoJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZXF1YWxzOiAnRXF1YWxzJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZG9lc05vdEVxdWFsOiAnRG9lcyBOb3QgRXF1YWwnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9lbXB0eTogJ0VtcHR5JyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbm90RW1wdHk6ICdOb3QgRW1wdHknLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9udWxsOiAnTnVsbCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX25vdE51bGw6ICdOb3QgTnVsbCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2JlZm9yZTogJ0JlZm9yZScsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2FmdGVyOiAnQWZ0ZXInLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9hdDogJ0F0JyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbm90X2F0OiAnTm90IEF0JyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfYXRfYmVmb3JlOiAnQXQgb3IgQmVmb3JlJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfYXRfYWZ0ZXI6ICdBdCBvciBBZnRlcicsXG4gICAgaWd4X2dyaWRfZmlsdGVyX3RvZGF5OiAnVG9kYXknLFxuICAgIGlneF9ncmlkX2ZpbHRlcl95ZXN0ZXJkYXk6ICdZZXN0ZXJkYXknLFxuICAgIGlneF9ncmlkX2ZpbHRlcl90aGlzTW9udGg6ICdUaGlzIE1vbnRoJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbGFzdE1vbnRoOiAnTGFzdCBNb250aCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX25leHRNb250aDogJ05leHQgTW9udGgnLFxuICAgIGlneF9ncmlkX2ZpbHRlcl90aGlzWWVhcjogJ1RoaXMgWWVhcicsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2xhc3RZZWFyOiAnTGFzdCBZZWFyJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfbmV4dFllYXI6ICdOZXh0IFllYXInLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9ncmVhdGVyVGhhbjogJ0dyZWF0ZXIgVGhhbicsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2xlc3NUaGFuOiAnTGVzcyBUaGFuJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZ3JlYXRlclRoYW5PckVxdWFsVG86ICdHcmVhdGVyIFRoYW4gT3IgRXF1YWwgVG8nLFxuICAgIGlneF9ncmlkX2ZpbHRlcl9sZXNzVGhhbk9yRXF1YWxUbzogJ0xlc3MgVGhhbiBPciBFcXVhbCBUbycsXG4gICAgaWd4X2dyaWRfZmlsdGVyX3RydWU6ICdUcnVlJyxcbiAgICBpZ3hfZ3JpZF9maWx0ZXJfZmFsc2U6ICdGYWxzZScsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2FsbDogJ0FsbCcsXG4gICAgaWd4X2dyaWRfZmlsdGVyX2NvbmRpdGlvbl9wbGFjZWhvbGRlcjogJ1NlbGVjdCBmaWx0ZXInLFxuICAgIGlneF9ncmlkX3N1bW1hcnlfY291bnQ6ICdDb3VudCcsXG4gICAgaWd4X2dyaWRfc3VtbWFyeV9taW46ICdNaW4nLFxuICAgIGlneF9ncmlkX3N1bW1hcnlfbWF4OiAnTWF4JyxcbiAgICBpZ3hfZ3JpZF9zdW1tYXJ5X3N1bTogJ1N1bScsXG4gICAgaWd4X2dyaWRfc3VtbWFyeV9hdmVyYWdlOiAnQXZnJyxcbiAgICBpZ3hfZ3JpZF9zdW1tYXJ5X2VhcmxpZXN0OiAnRWFybGllc3QnLFxuICAgIGlneF9ncmlkX3N1bW1hcnlfbGF0ZXN0OiAnTGF0ZXN0JyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfbW92aW5nX2xlZnQ6ICdtb3ZlIGxlZnQnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9tb3ZpbmdfbGVmdF9zaG9ydDogJ2xlZnQnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9tb3ZpbmdfcmlnaHQ6ICdtb3ZlIHJpZ2h0JyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfbW92aW5nX3JpZ2h0X3Nob3J0OiAncmlnaHQnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9tb3ZpbmdfaGVhZGVyOiAnbW92ZScsXG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX3NvcnRpbmdfYXNjOiAnYXNjZW5kaW5nJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfc29ydGluZ19hc2Nfc2hvcnQ6ICdhc2MnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2ZpbHRlcl9zb3J0aW5nX2Rlc2M6ICdkZXNjZW5kaW5nJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9maWx0ZXJfc29ydGluZ19kZXNjX3Nob3J0OiAnZGVzYycsXG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX3NvcnRpbmdfaGVhZGVyOiAnc29ydCcsXG4gICAgaWd4X2dyaWRfZXhjZWxfZmlsdGVyX2NsZWFyOiAnQ2xlYXIgY29sdW1uIGZpbHRlcnMnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2N1c3RvbV9kaWFsb2dfYWRkOiAnYWRkIGZpbHRlcicsXG4gICAgaWd4X2dyaWRfZXhjZWxfY3VzdG9tX2RpYWxvZ19jbGVhcjogJ0NsZWFyIGZpbHRlcicsXG4gICAgaWd4X2dyaWRfZXhjZWxfY3VzdG9tX2RpYWxvZ19oZWFkZXI6ICdDdXN0b20gYXV0by1maWx0ZXIgb24gY29sdW1uOiAnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2NhbmNlbDogJ2NhbmNlbCcsXG4gICAgaWd4X2dyaWRfZXhjZWxfYXBwbHk6ICdhcHBseScsXG4gICAgaWd4X2dyaWRfZXhjZWxfc2VhcmNoX3BsYWNlaG9sZGVyOiAnU2VhcmNoJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9zZWxlY3RfYWxsOiAnU2VsZWN0IEFsbCcsXG4gICAgaWd4X2dyaWRfZXhjZWxfc2VsZWN0X2FsbF9zZWFyY2hfcmVzdWx0czogJ1NlbGVjdCBhbGwgc2VhcmNoIHJlc3VsdHMnLFxuICAgIGlneF9ncmlkX2V4Y2VsX2FkZF90b19maWx0ZXI6ICdBZGQgY3VycmVudCBzZWxlY3Rpb24gdG8gZmlsdGVyJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9ibGFua3M6ICcoQmxhbmtzKScsXG4gICAgaWd4X2dyaWRfZXhjZWxfaGlkZTogJ0hpZGUgY29sdW1uJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9zaG93OiAnU2hvdyBjb2x1bW4nLFxuICAgIGlneF9ncmlkX2V4Y2VsX3BpbjogJ1BpbiBjb2x1bW4nLFxuICAgIGlneF9ncmlkX2V4Y2VsX3VucGluOiAnVW5waW4gY29sdW1uJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9zZWxlY3Q6ICdTZWxlY3QgY29sdW1uJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9kZXNlbGVjdDogJ0Rlc2VsZWN0IGNvbHVtbicsXG4gICAgaWd4X2dyaWRfZXhjZWxfdGV4dF9maWx0ZXI6ICdUZXh0IGZpbHRlcicsXG4gICAgaWd4X2dyaWRfZXhjZWxfbnVtYmVyX2ZpbHRlcjogJ051bWJlciBmaWx0ZXInLFxuICAgIGlneF9ncmlkX2V4Y2VsX2RhdGVfZmlsdGVyOiAnRGF0ZSBmaWx0ZXInLFxuICAgIGlneF9ncmlkX2V4Y2VsX2Jvb2xlYW5fZmlsdGVyOiAnQm9vbGVhbiBmaWx0ZXInLFxuICAgIGlneF9ncmlkX2V4Y2VsX2N1cnJlbmN5X2ZpbHRlcjogJ0N1cnJlbmN5IGZpbHRlcicsXG4gICAgaWd4X2dyaWRfZXhjZWxfY3VzdG9tX2ZpbHRlcjogJ0N1c3RvbSBmaWx0ZXIuLi4nLFxuICAgIGlneF9ncmlkX2V4Y2VsX25vX21hdGNoZXM6ICdObyBtYXRjaGVzJyxcbiAgICBpZ3hfZ3JpZF9leGNlbF9tYXRjaGVzX2NvdW50OiAnezB9IG1hdGNoZXMuJyxcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfdGl0bGU6ICdBZHZhbmNlZCBGaWx0ZXJpbmcnLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9hbmRfZ3JvdXA6ICdcIkFuZFwiIEdyb3VwJyxcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfb3JfZ3JvdXA6ICdcIk9yXCIgR3JvdXAnLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9lbmRfZ3JvdXA6ICdFbmQgR3JvdXAnLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9jcmVhdGVfYW5kX2dyb3VwOiAnQ3JlYXRlIFwiQW5kXCIgR3JvdXAnLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9jcmVhdGVfb3JfZ3JvdXA6ICdDcmVhdGUgXCJPclwiIEdyb3VwJyxcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfYW5kX2xhYmVsOiAnYW5kJyxcbiAgICBpZ3hfZ3JpZF9hZHZhbmNlZF9maWx0ZXJfb3JfbGFiZWw6ICdvcicsXG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2FkZF9jb25kaXRpb246ICdDb25kaXRpb24nLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl91bmdyb3VwOiAnVW5ncm91cCcsXG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2RlbGV0ZTogJ0RlbGV0ZScsXG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2RlbGV0ZV9maWx0ZXJzOiAnRGVsZXRlIGZpbHRlcnMnLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl9pbml0aWFsX3RleHQ6ICdTdGFydCB3aXRoIGNyZWF0aW5nIGEgZ3JvdXAgb2YgY29uZGl0aW9ucyBsaW5rZWQgd2l0aCBcIkFuZFwiIG9yIFwiT3JcIicsXG4gICAgaWd4X2dyaWRfYWR2YW5jZWRfZmlsdGVyX2NvbHVtbl9wbGFjZWhvbGRlcjogJ1NlbGVjdCBjb2x1bW4nLFxuICAgIGlneF9ncmlkX2FkdmFuY2VkX2ZpbHRlcl92YWx1ZV9wbGFjZWhvbGRlcjogJ1ZhbHVlJyxcbiAgICBpZ3hfZ3JpZF9waW5uZWRfcm93X2luZGljYXRvcjogJ1Bpbm5lZCcsXG4gICAgaWd4X2dyaWRfaGlkaW5nX2NoZWNrX2FsbF9sYWJlbDogJ1Nob3cgQWxsJyxcbiAgICBpZ3hfZ3JpZF9oaWRpbmdfdW5jaGVja19hbGxfbGFiZWw6ICdIaWRlIEFsbCcsXG4gICAgaWd4X2dyaWRfcGlubmluZ19jaGVja19hbGxfbGFiZWw6ICdQaW4gQWxsJyxcbiAgICBpZ3hfZ3JpZF9waW5uaW5nX3VuY2hlY2tfYWxsX2xhYmVsOiAnVW5waW4gQWxsJyxcbiAgICBpZ3hfZ3JpZF9yb3dfZWRpdF9idG5fZG9uZTogJ0RvbmUnLFxuICAgIGlneF9ncmlkX3Jvd19lZGl0X2J0bl9jYW5jZWw6ICdDYW5jZWwnLFxuICAgIGlneF9ncmlkX3Jvd19lZGl0X3RleHQ6ICdZb3UgaGF2ZSB7MH0gY2hhbmdlcyBpbiB0aGlzIHJvdyBhbmQgezF9IGhpZGRlbiBjb2x1bW5zJyxcbiAgICBpZ3hfZ3JpZF90b29sYmFyX2FjdGlvbnNfZmlsdGVyX3Byb21wdDogJ0ZpbHRlciBjb2x1bW5zIGxpc3QgLi4uJyxcbiAgICBpZ3hfZ3JpZF90b29sYmFyX3Bpbm5pbmdfYnV0dG9uX3Rvb2x0aXA6ICdPcGVuIGNvbHVtbiBwaW5uaW5nIGRyb3Bkb3duJyxcbiAgICBpZ3hfZ3JpZF90b29sYmFyX2hpZGluZ19idXR0b25fdG9vbHRpcDogJ09wZW4gY29sdW1uIGhpZGluZyBkcm9wZG93bicsXG4gICAgaWd4X2dyaWRfdG9vbGJhcl9waW5uaW5nX3RpdGxlOiAnUGlubmVkIGNvbHVtbnMnLFxuICAgIGlneF9ncmlkX3Rvb2xiYXJfaGlkaW5nX3RpdGxlOiAnVmlzaWJsZSBjb2x1bW5zJyxcbiAgICBpZ3hfZ3JpZF90b29sYmFyX2FkdmFuY2VkX2ZpbHRlcmluZ19idXR0b25fdG9vbHRpcDogJ09wZW4gYWR2YW5jZWQgZmlsdGVyaW5nIGRpYWxvZycsXG4gICAgaWd4X2dyaWRfdG9vbGJhcl9hZHZhbmNlZF9maWx0ZXJpbmdfYnV0dG9uX2xhYmVsOiAnQWR2YW5jZWQgZmlsdGVyaW5nJyxcbiAgICBpZ3hfZ3JpZF90b29sYmFyX2V4cG9ydGVyX2J1dHRvbl90b29sdGlwOiAnT3BlbiBleHBvcnRlciBkcm9wZG93bicsXG4gICAgaWd4X2dyaWRfdG9vbGJhcl9leHBvcnRlcl9idXR0b25fbGFiZWw6ICdFeHBvcnQnLFxuICAgIGlneF9ncmlkX3Rvb2xiYXJfZXhwb3J0ZXJfZXhjZWxfZW50cnlfdGV4dDogJ0V4cG9ydCB0byBFeGNlbCcsXG4gICAgaWd4X2dyaWRfdG9vbGJhcl9leHBvcnRlcl9jc3ZfZW50cnlfdGV4dDogJ0V4cG9ydCB0byBDU1YnLFxuICAgIGlneF9ncmlkX3NuYWNrYmFyX2FkZHJvd19sYWJlbDogJ1JvdyBhZGRlZCcsXG4gICAgaWd4X2dyaWRfc25hY2tiYXJfYWRkcm93X2FjdGlvbnRleHQ6ICdTSE9XJyxcbiAgICBpZ3hfZ3JpZF9hY3Rpb25zX2VkaXRfbGFiZWw6ICdFZGl0JyxcbiAgICBpZ3hfZ3JpZF9hY3Rpb25zX2FkZF9sYWJlbDogJ0FkZCcsXG4gICAgaWd4X2dyaWRfYWRkX3Jvd19sYWJlbDogJ0FERCBST1cnLFxuICAgIGlneF9ncmlkX2FjdGlvbnNfYWRkX2NoaWxkX2xhYmVsOiAnQWRkIENoaWxkJyxcbiAgICBpZ3hfZ3JpZF9hY3Rpb25zX2RlbGV0ZV9sYWJlbDogJ0RlbGV0ZScsXG4gICAgaWd4X2dyaWRfYWN0aW9uc19waW5fbGFiZWw6ICdQaW4nLFxuICAgIGlneF9ncmlkX2FjdGlvbnNfdW5waW5fbGFiZWw6ICdVbnBpbicsXG4gICAgaWd4X2dyaWRfYWN0aW9uc19qdW1wVXBfbGFiZWw6ICdKdW1wIHVwJyxcbiAgICBpZ3hfZ3JpZF9hY3Rpb25zX2p1bXBEb3duX2xhYmVsOiAnSnVtcCBkb3duJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9kYXRlX2RpbWVuc2lvbl90b3RhbDogJ0FsbCBQZXJpb2RzJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfY291bnQ6ICdDb3VudCcsXG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX21pbjogJ01pbmltdW0nLFxuICAgIGlneF9ncmlkX3Bpdm90X2FnZ3JlZ2F0ZV9tYXg6ICdNYXhpbXVtJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfc3VtOiAnU3VtJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9hZ2dyZWdhdGVfYXZnOiAnQXZlcmFnZScsXG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX2RhdGVfbGF0ZXN0OiAnTGF0ZXN0IERhdGUnLFxuICAgIGlneF9ncmlkX3Bpdm90X2FnZ3JlZ2F0ZV9kYXRlX2VhcmxpZXN0OiAnRWFybGllc3QgRGF0ZScsXG4gICAgaWd4X2dyaWRfcGl2b3RfYWdncmVnYXRlX3RpbWVfbGF0ZXN0OiAnTGF0ZXN0IFRpbWUnLFxuICAgIGlneF9ncmlkX3Bpdm90X2FnZ3JlZ2F0ZV90aW1lX2VhcmxpZXN0OiAnRWFybGllc3QgVGltZScsXG4gICAgaWd4X2dyaWRfcGl2b3RfZW1wdHlfcm93X2Ryb3BfYXJlYTogJ0Ryb3AgUm93IEZpZWxkcyBoZXJlLicsXG4gICAgaWd4X2dyaWRfcGl2b3RfZW1wdHlfY29sdW1uX2Ryb3BfYXJlYTogJ0Ryb3AgQ29sdW1uIEZpZWxkcyBoZXJlLicsXG4gICAgaWd4X2dyaWRfcGl2b3RfZW1wdHlfZmlsdGVyX2Ryb3BfYXJlYTogJ0Ryb3AgRmlsdGVyIEZpZWxkcyBoZXJlLicsXG4gICAgaWd4X2dyaWRfcGl2b3RfZW1wdHlfdmFsdWVfZHJvcF9hcmVhOiAnRHJvcCBWYWx1ZSBGaWVsZHMgaGVyZS4nLFxuICAgIGlneF9ncmlkX3Bpdm90X3Jvd19kcm9wX2NoaXA6ICdEcm9wIGhlcmUgdG8gdXNlIGFzIHJvdycsXG4gICAgaWd4X2dyaWRfcGl2b3RfY29sdW1uX2Ryb3BfY2hpcDogJ0Ryb3AgaGVyZSB0byB1c2UgYXMgY29sdW1uJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9maWx0ZXJfZHJvcF9jaGlwOiAnRHJvcCBoZXJlIHRvIHVzZSBhcyBmaWx0ZXInLFxuICAgIGlneF9ncmlkX3Bpdm90X3ZhbHVlX2Ryb3BfY2hpcDogJ0Ryb3AgaGVyZSB0byB1c2UgYXMgdmFsdWUnLFxuICAgIGlneF9ncmlkX3Bpdm90X2VtcHR5X21lc3NhZ2U6ICdQaXZvdCBncmlkIGhhcyBubyBkaW1lbnNpb25zIGFuZCB2YWx1ZXMuJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9zZWxlY3Rvcl9maWx0ZXJzOiAnRmlsdGVycycsXG4gICAgaWd4X2dyaWRfcGl2b3Rfc2VsZWN0b3Jfcm93czogJ1Jvd3MnLFxuICAgIGlneF9ncmlkX3Bpdm90X3NlbGVjdG9yX2NvbHVtbnM6ICdDb2x1bW5zJyxcbiAgICBpZ3hfZ3JpZF9waXZvdF9zZWxlY3Rvcl92YWx1ZXM6ICdWYWx1ZXMnLFxuICAgIGlneF9ncmlkX3Bpdm90X3NlbGVjdG9yX3BhbmVsX2VtcHR5OiAnRHJvcCBJdGVtcyBIZXJlJyxcbiAgICBpZ3hfZ3JpZF9yZXF1aXJlZF92YWxpZGF0aW9uX2Vycm9yOiAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCcsXG4gICAgaWd4X2dyaWRfbWluX3ZhbGlkYXRpb25fZXJyb3I6ICdBIHZhbHVlIG9mIGF0IGxlYXN0IHswfSBzaG91bGQgYmUgZW50ZXJlZCcsXG4gICAgaWd4X2dyaWRfbWF4X3ZhbGlkYXRpb25fZXJyb3I6ICdBIHZhbHVlIG5vIG1vcmUgdGhhbiB7MH0gc2hvdWxkIGJlIGVudGVyZWQnLFxuICAgIGlneF9ncmlkX21pbl9sZW5ndGhfdmFsaWRhdGlvbl9lcnJvcjogJ0VudHJ5IHNob3VsZCBiZSBhdCBsZWFzdCB7MH0gY2hhcmFjdGVyKHMpIGxvbmcnLFxuICAgIGlneF9ncmlkX21heF9sZW5ndGhfdmFsaWRhdGlvbl9lcnJvcjogJ0VudHJ5IHNob3VsZCBiZSBubyBtb3JlIHRoYW4gezB9IGNoYXJhY3RlcihzKSBsb25nJyxcbiAgICBpZ3hfZ3JpZF9lbWFpbF92YWxpZGF0aW9uX2Vycm9yOiAnQSB2YWxpZCBlbWFpbCBhZGRyZXNzIHNob3VsZCBiZSBlbnRlcmVkJyxcbiAgICBpZ3hfZ3JpZF9wYXR0ZXJuX3ZhbGlkYXRpb25fZXJyb3I6ICdFbnRyeSBkb2VzIG5vdCBtYXRjaCB0aGUgcmVxdWlyZWQgcGF0dGVybidcbn07XG4iXX0=