igniteui-angular 16.0.0-beta.1 → 16.0.0-beta.2

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 (71) hide show
  1. package/esm2022/lib/banner/banner.component.mjs +12 -12
  2. package/esm2022/lib/calendar/calendar-base.mjs +1 -1
  3. package/esm2022/lib/calendar/calendar.mjs +2 -1
  4. package/esm2022/lib/card/card.component.mjs +1 -2
  5. package/esm2022/lib/chips/chip.component.mjs +2 -2
  6. package/esm2022/lib/data-operations/data-util.mjs +1 -1
  7. package/esm2022/lib/data-operations/filtering-strategy.mjs +1 -1
  8. package/esm2022/lib/data-operations/pivot-sort-strategy.mjs +1 -1
  9. package/esm2022/lib/data-operations/pivot-strategy.mjs +3 -3
  10. package/esm2022/lib/data-operations/sorting-strategy.mjs +3 -3
  11. package/esm2022/lib/date-common/picker-base.directive.mjs +1 -2
  12. package/esm2022/lib/date-range-picker/date-range-picker.component.mjs +1 -2
  13. package/esm2022/lib/directives/autocomplete/autocomplete.directive.mjs +1 -3
  14. package/esm2022/lib/directives/drag-drop/drag-drop.directive.mjs +2 -2
  15. package/esm2022/lib/directives/for-of/for_of.directive.mjs +1 -1
  16. package/esm2022/lib/directives/mask/mask-parsing.service.mjs +4 -5
  17. package/esm2022/lib/directives/mask/mask.directive.mjs +1 -2
  18. package/esm2022/lib/expansion-panel/expansion-panel-header.component.mjs +1 -3
  19. package/esm2022/lib/grids/columns/column.component.mjs +2 -1
  20. package/esm2022/lib/grids/columns/interfaces.mjs +1 -1
  21. package/esm2022/lib/grids/columns/templates.directive.mjs +1 -8
  22. package/esm2022/lib/grids/common/strategy.mjs +1 -1
  23. package/esm2022/lib/grids/filtering/excel-style/excel-style-filtering.component.mjs +2 -2
  24. package/esm2022/lib/grids/filtering/excel-style/excel-style-search.component.mjs +1 -2
  25. package/esm2022/lib/grids/grid/grid.directives.mjs +1 -11
  26. package/esm2022/lib/grids/grid-base.directive.mjs +3 -5
  27. package/esm2022/lib/grids/grid-public-cell.mjs +12 -12
  28. package/esm2022/lib/grids/grid.rowEdit.directive.mjs +1 -5
  29. package/esm2022/lib/grids/pivot-grid/pivot-data-selector.component.mjs +1 -3
  30. package/esm2022/lib/grids/pivot-grid/pivot-grid.component.mjs +2 -2
  31. package/esm2022/lib/grids/pivot-grid/pivot-grid.directives.mjs +1 -2
  32. package/esm2022/lib/grids/pivot-grid/pivot-grid.pipes.mjs +2 -2
  33. package/esm2022/lib/grids/pivot-grid/pivot-header-row.component.mjs +5 -5
  34. package/esm2022/lib/grids/pivot-grid/pivot-row.component.mjs +2 -2
  35. package/esm2022/lib/grids/resizing/pivot-grid/pivot-resize-handle.directive.mjs +1 -2
  36. package/esm2022/lib/grids/row-drag.directive.mjs +1 -3
  37. package/esm2022/lib/grids/selection/row-selectors.mjs +1 -4
  38. package/esm2022/lib/grids/state.directive.mjs +2 -2
  39. package/esm2022/lib/grids/summaries/grid-root-summary.pipe.mjs +1 -1
  40. package/esm2022/lib/grids/toolbar/common.mjs +1 -2
  41. package/esm2022/lib/grids/tree-grid/tree-grid-api.service.mjs +2 -2
  42. package/esm2022/lib/grids/tree-grid/tree-grid.component.mjs +1 -2
  43. package/esm2022/lib/grids/tree-grid/tree-grid.filtering.strategy.mjs +1 -1
  44. package/esm2022/lib/grids/tree-grid/tree-grid.grouping.pipe.mjs +1 -1
  45. package/esm2022/lib/icon/icon.service.mjs +2 -2
  46. package/esm2022/lib/services/excel/excel-files.mjs +2 -2
  47. package/esm2022/lib/services/excel/worksheet-data-dictionary.mjs +1 -1
  48. package/esm2022/lib/services/exporter-common/base-export-service.mjs +2 -2
  49. package/esm2022/lib/services/transaction/igx-transaction.mjs +1 -1
  50. package/esm2022/lib/services/transaction/transaction-factory.service.mjs +1 -2
  51. package/esm2022/lib/splitter/splitter-pane/splitter-pane.component.mjs +1 -3
  52. package/esm2022/lib/tabs/tab-content.directive.mjs +1 -2
  53. package/esm2022/lib/tabs/tab-header.directive.mjs +1 -2
  54. package/esm2022/lib/tabs/tab-item.directive.mjs +1 -2
  55. package/esm2022/lib/tabs/tabs/tabs.component.mjs +1 -2
  56. package/esm2022/lib/tree/tree-navigation.service.mjs +1 -1
  57. package/esm2022/lib/tree/tree-node/tree-node.component.mjs +1 -3
  58. package/esm2022/lib/tree/tree-selection.service.mjs +1 -2
  59. package/fesm2022/igniteui-angular.mjs +48 -100
  60. package/fesm2022/igniteui-angular.mjs.map +1 -1
  61. package/lib/banner/banner.component.d.ts +9 -9
  62. package/lib/directives/for-of/for_of.directive.d.ts +1 -1
  63. package/lib/grids/columns/column.component.d.ts +1 -1
  64. package/lib/grids/columns/interfaces.d.ts +1 -2
  65. package/lib/grids/grid-base.directive.d.ts +1 -1
  66. package/lib/grids/grid-public-cell.d.ts +8 -8
  67. package/migrations/common/UpdateChanges.js +2 -3
  68. package/migrations/common/util.js +3 -1
  69. package/migrations/update-13_0_0/index.js +4 -4
  70. package/package.json +5 -5
  71. package/schematics/tsconfig.tsbuildinfo +1 -1
@@ -12,7 +12,6 @@ const REGEX = new Map([
12
12
  ['9', /[\d\p{Separator}]/u],
13
13
  ['#', /[\d\-+]/], // Numeric and sign
14
14
  ]);
15
- ;
16
15
  const replaceCharAt = (string, idx, char) => `${string.substring(0, idx)}${char}${string.substring(idx + 1)}`;
17
16
  export function parseMask(format) {
18
17
  const literals = new Map();
@@ -89,7 +88,7 @@ export class MaskParsingService {
89
88
  const chars = Array.from(value);
90
89
  let cursor = start;
91
90
  end = Math.min(end, maskedValue.length);
92
- let initialMaskedValue = maskedValue;
91
+ const initialMaskedValue = maskedValue;
93
92
  for (let i = start; i < end || (chars.length && i < maskedValue.length); i++) {
94
93
  if (literalsPositions.indexOf(i) !== -1) {
95
94
  if (chars[0] === maskedValue[i]) {
@@ -135,7 +134,7 @@ export class MaskParsingService {
135
134
  return regex ? regex.test(inputChar) : false;
136
135
  }
137
136
  getNonLiteralIndices(mask, literalKeys) {
138
- const nonLiteralsIndices = new Array();
137
+ const nonLiteralsIndices = [];
139
138
  for (let i = 0; i < mask.length; i++) {
140
139
  if (literalKeys.indexOf(i) === -1) {
141
140
  nonLiteralsIndices.push(i);
@@ -144,7 +143,7 @@ export class MaskParsingService {
144
143
  return nonLiteralsIndices;
145
144
  }
146
145
  getNonLiteralValues(value, literalValues) {
147
- const nonLiteralValues = new Array();
146
+ const nonLiteralValues = [];
148
147
  for (const val of value) {
149
148
  if (literalValues.indexOf(val) === -1) {
150
149
  nonLiteralValues.push(val);
@@ -167,4 +166,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ng
167
166
  providedIn: 'root'
168
167
  }]
169
168
  }] });
170
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzay1wYXJzaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZGlyZWN0aXZlcy9tYXNrL21hc2stcGFyc2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNDLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ25DLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDO0lBQ2xCLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQztJQUNoQixDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQztJQUMxQixDQUFDLEdBQUcsRUFBRSw4QkFBOEIsQ0FBQztJQUNyQyxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQztJQUN4QixDQUFDLEdBQUcsRUFBRSw0QkFBNEIsQ0FBQztJQUNuQyxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUM7SUFDcEIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO0lBQ1gsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUM7SUFDM0IsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQUUsbUJBQW1CO0NBQ3hDLENBQUMsQ0FBQztBQWlCRixDQUFDO0FBRUYsTUFBTSxhQUFhLEdBQUcsQ0FBQyxNQUFjLEVBQUUsR0FBVyxFQUFFLElBQVksRUFBRSxFQUFFLENBQ2hFLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEdBQUcsSUFBSSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFHckUsTUFBTSxVQUFVLFNBQVMsQ0FBQyxNQUFjO0lBQ3BDLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0lBQzND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RSxHQUFHO1NBQ25ELENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2IsQ0FBQzttSEFySlEsa0JBQWtCO3VIQUFsQixrQkFBa0IsY0FGZixNQUFNOztnR0FFVCxrQkFBa0I7a0JBSDlCLFVBQVU7bUJBQUM7b0JBQ1IsVUFBVSxFQUFFLE1BQU07aUJBQ3JCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5cbmNvbnN0IEZMQUdTID0gbmV3IFNldCgnYUFDTDA5IyY/Jyk7XG5jb25zdCBSRUdFWCA9IG5ldyBNYXAoW1xuICAgIFsnQycsIC8oPyFeJCkvdV0sIC8vIE5vbi1lbXB0eVxuICAgIFsnJicsIC9bXlxccHtTZXBhcmF0b3J9XS91XSwgLy8gTm9uLXdoaXRlc3BhY2VcbiAgICBbJ2EnLCAvW1xccHtMZXR0ZXJ9XFxkXFxwe1NlcGFyYXRvcn1dL3VdLCAvLyBBbHBoYW51bWVyaWMgJiB3aGl0ZXNwYWNlXG4gICAgWydBJywgL1tcXHB7TGV0dGVyfVxcZF0vdV0sIC8vIEFscGhhbnVtZXJpY1xuICAgIFsnPycsIC9bXFxwe0xldHRlcn1cXHB7U2VwYXJhdG9yfV0vdV0sIC8vIEFscGhhICYgd2hpdGVzcGFjZVxuICAgIFsnTCcsIC9cXHB7TGV0dGVyfS91XSwgLy8gQWxwaGFcbiAgICBbJzAnLCAvXFxkL10sIC8vIE51bWVyaWNcbiAgICBbJzknLCAvW1xcZFxccHtTZXBhcmF0b3J9XS91XSwgLy8gTnVtZXJpYyAmIHdoaXRlc3BhY2VcbiAgICBbJyMnLCAvW1xcZFxcLStdL10sIC8vIE51bWVyaWMgYW5kIHNpZ25cbl0pO1xuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNYXNrT3B0aW9ucyB7XG4gICAgZm9ybWF0OiBzdHJpbmc7XG4gICAgcHJvbXB0Q2hhcjogc3RyaW5nO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXBsYWNlZCB7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBlbmQ6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFBhcnNlZE1hc2sge1xuICAgIGxpdGVyYWxzOiBNYXA8bnVtYmVyLCBzdHJpbmc+LFxuICAgIG1hc2s6IHN0cmluZ1xufTtcblxuY29uc3QgcmVwbGFjZUNoYXJBdCA9IChzdHJpbmc6IHN0cmluZywgaWR4OiBudW1iZXIsIGNoYXI6IHN0cmluZykgPT5cbiAgICBgJHtzdHJpbmcuc3Vic3RyaW5nKDAsIGlkeCl9JHtjaGFyfSR7c3RyaW5nLnN1YnN0cmluZyhpZHggKyAxKX1gO1xuXG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZU1hc2soZm9ybWF0OiBzdHJpbmcpOiBQYXJzZWRNYXNrIHtcbiAgICBjb25zdCBsaXRlcmFscyA9IG5ldyBNYXA8bnVtYmVyLCBzdHJpbmc+KCk7XG4gICAgbGV0IG1hc2sgPSBmb3JtYXQ7XG5cbiAgICBmb3IgKGxldCBpID0gMCwgaiA9IDA7IGkgPCBmb3JtYXQubGVuZ3RoOyBpKyssIGorKykge1xuICAgICAgICBjb25zdCBbY3VycmVudCwgbmV4dF0gPSBbZm9ybWF0LmNoYXJBdChpKSwgZm9ybWF0LmNoYXJBdChpICsgMSldO1xuXG4gICAgICAgIGlmIChjdXJyZW50ID09PSAnXFxcXCcgJiYgRkxBR1MuaGFzKG5leHQpKSB7XG4gICAgICAgICAgICBtYXNrID0gcmVwbGFjZUNoYXJBdChtYXNrLCBqLCAnJyk7XG4gICAgICAgICAgICBsaXRlcmFscy5zZXQoaiwgbmV4dCk7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAoIUZMQUdTLmhhcyhjdXJyZW50KSkge1xuICAgICAgICAgICAgICAgIGxpdGVyYWxzLnNldChqLCBjdXJyZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7IGxpdGVyYWxzLCBtYXNrIH07XG59XG5cbi8qKiBAaGlkZGVuICovXG5ASW5qZWN0YWJsZSh7XG4gICAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1hc2tQYXJzaW5nU2VydmljZSB7XG5cbiAgICBwdWJsaWMgYXBwbHlNYXNrKGlucHV0VmFsOiBzdHJpbmcsIG1hc2tPcHRpb25zOiBNYXNrT3B0aW9ucywgcG9zOiBudW1iZXIgPSAwKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IG91dHB1dFZhbCA9ICcnO1xuICAgICAgICBsZXQgdmFsdWUgPSAnJztcbiAgICAgICAgY29uc3QgeyBsaXRlcmFscywgbWFzayB9ID0gcGFyc2VNYXNrKG1hc2tPcHRpb25zLmZvcm1hdCk7XG4gICAgICAgIGNvbnN0IGxpdGVyYWxLZXlzOiBudW1iZXJbXSA9IEFycmF5LmZyb20obGl0ZXJhbHMua2V5cygpKTtcbiAgICAgICAgY29uc3Qgbm9uTGl0ZXJhbEluZGljZXM6IG51bWJlcltdID0gdGhpcy5nZXROb25MaXRlcmFsSW5kaWNlcyhtYXNrLCBsaXRlcmFsS2V5cyk7XG4gICAgICAgIGNvbnN0IGxpdGVyYWxWYWx1ZXM6IHN0cmluZ1tdID0gQXJyYXkuZnJvbShsaXRlcmFscy52YWx1ZXMoKSk7XG5cbiAgICAgICAgaWYgKGlucHV0VmFsICE9IG51bGwpIHtcbiAgICAgICAgICAgIHZhbHVlID0gaW5wdXRWYWwudG9TdHJpbmcoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgX21hc2tTeW0gb2YgbWFzaykge1xuICAgICAgICAgICAgb3V0cHV0VmFsICs9IG1hc2tPcHRpb25zLnByb21wdENoYXI7XG4gICAgICAgIH1cblxuICAgICAgICBsaXRlcmFscy5mb3JFYWNoKCh2YWw6IHN0cmluZywga2V5OiBudW1iZXIpID0+IHtcbiAgICAgICAgICAgIG91dHB1dFZhbCA9IHJlcGxhY2VDaGFyQXQob3V0cHV0VmFsLCBrZXksIHZhbCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghdmFsdWUpIHtcbiAgICAgICAgICAgIHJldHVybiBvdXRwdXRWYWw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBub25MaXRlcmFsVmFsdWVzOiBzdHJpbmdbXSA9IHRoaXMuZ2V0Tm9uTGl0ZXJhbFZhbHVlcyh2YWx1ZSwgbGl0ZXJhbFZhbHVlcyk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBub25MaXRlcmFsVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjaGFyID0gbm9uTGl0ZXJhbFZhbHVlc1tpXTtcbiAgICAgICAgICAgIGNvbnN0IGlzQ2hhclZhbGlkID0gdGhpcy52YWxpZGF0ZUNoYXJPblBvc2l0aW9uKGNoYXIsIG5vbkxpdGVyYWxJbmRpY2VzW2ldLCBtYXNrKTtcblxuICAgICAgICAgICAgaWYgKCFpc0NoYXJWYWxpZCAmJiBjaGFyICE9PSBtYXNrT3B0aW9ucy5wcm9tcHRDaGFyKSB7XG4gICAgICAgICAgICAgICAgbm9uTGl0ZXJhbFZhbHVlc1tpXSA9IG1hc2tPcHRpb25zLnByb21wdENoYXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9uTGl0ZXJhbFZhbHVlcy5sZW5ndGggPiBub25MaXRlcmFsSW5kaWNlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIG5vbkxpdGVyYWxWYWx1ZXMuc3BsaWNlKG5vbkxpdGVyYWxJbmRpY2VzLmxlbmd0aCk7XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IG5vbkxpdGVyYWxWYWx1ZSBvZiBub25MaXRlcmFsVmFsdWVzKSB7XG4gICAgICAgICAgICBjb25zdCBjaGFyID0gbm9uTGl0ZXJhbFZhbHVlO1xuICAgICAgICAgICAgb3V0cHV0VmFsID0gcmVwbGFjZUNoYXJBdChvdXRwdXRWYWwsIG5vbkxpdGVyYWxJbmRpY2VzW3BvcysrXSwgY2hhcik7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3V0cHV0VmFsO1xuICAgIH1cblxuICAgIHB1YmxpYyBwYXJzZVZhbHVlRnJvbU1hc2sobWFza2VkVmFsdWU6IHN0cmluZywgbWFza09wdGlvbnM6IE1hc2tPcHRpb25zKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IG91dHB1dFZhbCA9ICcnO1xuICAgICAgICBjb25zdCBsaXRlcmFsVmFsdWVzOiBzdHJpbmdbXSA9IEFycmF5LmZyb20ocGFyc2VNYXNrKG1hc2tPcHRpb25zLmZvcm1hdCkubGl0ZXJhbHMudmFsdWVzKCkpO1xuXG4gICAgICAgIGZvciAoY29uc3QgdmFsIG9mIG1hc2tlZFZhbHVlKSB7XG4gICAgICAgICAgICBpZiAobGl0ZXJhbFZhbHVlcy5pbmRleE9mKHZhbCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgaWYgKHZhbCAhPT0gbWFza09wdGlvbnMucHJvbXB0Q2hhcikge1xuICAgICAgICAgICAgICAgICAgICBvdXRwdXRWYWwgKz0gdmFsO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvdXRwdXRWYWw7XG4gICAgfVxuXG4gICAgcHVibGljIHJlcGxhY2VJbk1hc2sobWFza2VkVmFsdWU6IHN0cmluZywgdmFsdWU6IHN0cmluZywgbWFza09wdGlvbnM6IE1hc2tPcHRpb25zLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlcik6IFJlcGxhY2VkIHtcbiAgICAgICAgY29uc3QgeyBsaXRlcmFscywgbWFzayB9ID0gcGFyc2VNYXNrKG1hc2tPcHRpb25zLmZvcm1hdCk7XG4gICAgICAgIGNvbnN0IGxpdGVyYWxzUG9zaXRpb25zID0gQXJyYXkuZnJvbShsaXRlcmFscy5rZXlzKCkpO1xuICAgICAgICB2YWx1ZSA9IHRoaXMucmVwbGFjZUlNRU51bWJlcnModmFsdWUpO1xuICAgICAgICBjb25zdCBjaGFycyA9IEFycmF5LmZyb20odmFsdWUpO1xuICAgICAgICBsZXQgY3Vyc29yID0gc3RhcnQ7XG4gICAgICAgIGVuZCA9IE1hdGgubWluKGVuZCwgbWFza2VkVmFsdWUubGVuZ3RoKTtcbiAgICAgICAgbGV0IGluaXRpYWxNYXNrZWRWYWx1ZSA9IG1hc2tlZFZhbHVlO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8IGVuZCB8fCAoY2hhcnMubGVuZ3RoICYmIGkgPCBtYXNrZWRWYWx1ZS5sZW5ndGgpOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChsaXRlcmFsc1Bvc2l0aW9ucy5pbmRleE9mKGkpICE9PSAtMSkge1xuICAgICAgICAgICAgICAgIGlmIChjaGFyc1swXSA9PT0gbWFza2VkVmFsdWVbaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yID0gaSArIDE7XG4gICAgICAgICAgICAgICAgICAgIGNoYXJzLnNoaWZ0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNoYXJzWzBdXG4gICAgICAgICAgICAgICAgJiYgIXRoaXMudmFsaWRhdGVDaGFyT25Qb3NpdGlvbihjaGFyc1swXSwgaSwgbWFzaylcbiAgICAgICAgICAgICAgICAmJiBjaGFyc1swXSAhPT0gbWFza09wdGlvbnMucHJvbXB0Q2hhcikge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgY2hhciA9IG1hc2tPcHRpb25zLnByb21wdENoYXI7XG4gICAgICAgICAgICBpZiAoY2hhcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgY3Vyc29yID0gaSArIDE7XG4gICAgICAgICAgICAgICAgY2hhciA9IGNoYXJzLnNoaWZ0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBtYXNrZWRWYWx1ZSA9IHJlcGxhY2VDaGFyQXQobWFza2VkVmFsdWUsIGksIGNoYXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgICAgICBsZXQgaXNEZWxldGUgPSBmYWxzZTtcbiAgICAgICAgICAgIGN1cnNvciA9IHN0YXJ0O1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXRlcmFsc1Bvc2l0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gb24gYGRlbGV0ZWAgdGhlIGN1cnNvciBzaG91bGQgbW92ZSBmb3J3YXJkXG4gICAgICAgICAgICAgICAgICAgIGN1cnNvciA9IE1hdGgubWF4KGN1cnNvciwgZW5kKTtcbiAgICAgICAgICAgICAgICAgICAgaXNEZWxldGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3Vyc29yID09PSBsaXRlcmFsc1Bvc2l0aW9uc1tpXSkge1xuICAgICAgICAgICAgICAgICAgICBjdXJzb3IgPSBsaXRlcmFsc1Bvc2l0aW9uc1tpXSArIDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFpc0RlbGV0ZSAmJiBpbml0aWFsTWFza2VkVmFsdWUgIT09IG1hc2tlZFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY3Vyc29yKys7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4geyB2YWx1ZTogbWFza2VkVmFsdWUsIGVuZDogY3Vyc29yIH07XG4gICAgfVxuXG4gICAgLyoqIFZhbGlkYXRlcyBvbmx5IG5vbiBsaXRlcmFsIHBvc2l0aW9ucy4gKi9cbiAgICBwcml2YXRlIHZhbGlkYXRlQ2hhck9uUG9zaXRpb24oaW5wdXRDaGFyOiBzdHJpbmcsIHBvc2l0aW9uOiBudW1iZXIsIG1hc2s6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCByZWdleCA9IFJFR0VYLmdldChtYXNrLmNoYXJBdChwb3NpdGlvbikpO1xuICAgICAgICByZXR1cm4gcmVnZXggPyByZWdleC50ZXN0KGlucHV0Q2hhcikgOiBmYWxzZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE5vbkxpdGVyYWxJbmRpY2VzKG1hc2s6IHN0cmluZywgbGl0ZXJhbEtleXM6IG51bWJlcltdKTogbnVtYmVyW10ge1xuICAgICAgICBjb25zdCBub25MaXRlcmFsc0luZGljZXM6IG51bWJlcltdID0gbmV3IEFycmF5KCk7XG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBtYXNrLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobGl0ZXJhbEtleXMuaW5kZXhPZihpKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBub25MaXRlcmFsc0luZGljZXMucHVzaChpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBub25MaXRlcmFsc0luZGljZXM7XG4gICAgfVxuICAgIHByaXZhdGUgZ2V0Tm9uTGl0ZXJhbFZhbHVlcyh2YWx1ZTogc3RyaW5nLCBsaXRlcmFsVmFsdWVzOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICAgICAgY29uc3Qgbm9uTGl0ZXJhbFZhbHVlczogc3RyaW5nW10gPSBuZXcgQXJyYXkoKTtcblxuICAgICAgICBmb3IgKGNvbnN0IHZhbCBvZiB2YWx1ZSkge1xuICAgICAgICAgICAgaWYgKGxpdGVyYWxWYWx1ZXMuaW5kZXhPZih2YWwpID09PSAtMSkge1xuICAgICAgICAgICAgICAgIG5vbkxpdGVyYWxWYWx1ZXMucHVzaCh2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5vbkxpdGVyYWxWYWx1ZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXBsYWNlSU1FTnVtYmVycyh2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlLnJlcGxhY2UoL1vvvJDvvJHvvJLvvJPvvJTvvJXvvJbvvJfvvJjvvJldL2csIChudW0pID0+ICh7XG4gICAgICAgICAgICAn77yRJzogJzEnLCAn77ySJzogJzInLCAn77yTJzogJzMnLCAn77yUJzogJzQnLCAn77yVJzogJzUnLFxuICAgICAgICAgICAgJ++8lic6ICc2JywgJ++8lyc6ICc3JywgJ++8mCc6ICc4JywgJ++8mSc6ICc5JywgJ++8kCc6ICcwJ1xuICAgICAgICB9W251bV0pKTtcbiAgICB9XG59XG4iXX0=
169
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzay1wYXJzaW5nLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZGlyZWN0aXZlcy9tYXNrL21hc2stcGFyc2luZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBRzNDLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0FBQ25DLE1BQU0sS0FBSyxHQUFHLElBQUksR0FBRyxDQUFDO0lBQ2xCLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQztJQUNoQixDQUFDLEdBQUcsRUFBRSxtQkFBbUIsQ0FBQztJQUMxQixDQUFDLEdBQUcsRUFBRSw4QkFBOEIsQ0FBQztJQUNyQyxDQUFDLEdBQUcsRUFBRSxpQkFBaUIsQ0FBQztJQUN4QixDQUFDLEdBQUcsRUFBRSw0QkFBNEIsQ0FBQztJQUNuQyxDQUFDLEdBQUcsRUFBRSxhQUFhLENBQUM7SUFDcEIsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDO0lBQ1gsQ0FBQyxHQUFHLEVBQUUsb0JBQW9CLENBQUM7SUFDM0IsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLEVBQUUsbUJBQW1CO0NBQ3hDLENBQUMsQ0FBQztBQW1CSCxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQWMsRUFBRSxHQUFXLEVBQUUsSUFBWSxFQUFFLEVBQUUsQ0FDaEUsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxJQUFJLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUdyRSxNQUFNLFVBQVUsU0FBUyxDQUFDLE1BQWM7SUFDcEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7SUFDM0MsSUFBSSxJQUFJ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QUMsQ0FBQyxDQUFDLENBQUM7SUFDYixDQUFDO21IQXJKUSxrQkFBa0I7dUhBQWxCLGtCQUFrQixjQUZmLE1BQU07O2dHQUVULGtCQUFrQjtrQkFIOUIsVUFBVTttQkFBQztvQkFDUixVQUFVLEVBQUUsTUFBTTtpQkFDckIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cblxuY29uc3QgRkxBR1MgPSBuZXcgU2V0KCdhQUNMMDkjJj8nKTtcbmNvbnN0IFJFR0VYID0gbmV3IE1hcChbXG4gICAgWydDJywgLyg/IV4kKS91XSwgLy8gTm9uLWVtcHR5XG4gICAgWycmJywgL1teXFxwe1NlcGFyYXRvcn1dL3VdLCAvLyBOb24td2hpdGVzcGFjZVxuICAgIFsnYScsIC9bXFxwe0xldHRlcn1cXGRcXHB7U2VwYXJhdG9yfV0vdV0sIC8vIEFscGhhbnVtZXJpYyAmIHdoaXRlc3BhY2VcbiAgICBbJ0EnLCAvW1xccHtMZXR0ZXJ9XFxkXS91XSwgLy8gQWxwaGFudW1lcmljXG4gICAgWyc/JywgL1tcXHB7TGV0dGVyfVxccHtTZXBhcmF0b3J9XS91XSwgLy8gQWxwaGEgJiB3aGl0ZXNwYWNlXG4gICAgWydMJywgL1xccHtMZXR0ZXJ9L3VdLCAvLyBBbHBoYVxuICAgIFsnMCcsIC9cXGQvXSwgLy8gTnVtZXJpY1xuICAgIFsnOScsIC9bXFxkXFxwe1NlcGFyYXRvcn1dL3VdLCAvLyBOdW1lcmljICYgd2hpdGVzcGFjZVxuICAgIFsnIycsIC9bXFxkXFwtK10vXSwgLy8gTnVtZXJpYyBhbmQgc2lnblxuXSk7XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hc2tPcHRpb25zIHtcbiAgICBmb3JtYXQ6IHN0cmluZztcbiAgICBwcm9tcHRDaGFyOiBzdHJpbmc7XG59XG5cbi8qKiBAaGlkZGVuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlcGxhY2VkIHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGVuZDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgUGFyc2VkTWFzayB7XG4gICAgbGl0ZXJhbHM6IE1hcDxudW1iZXIsIHN0cmluZz4sXG4gICAgbWFzazogc3RyaW5nXG59XG5cbmNvbnN0IHJlcGxhY2VDaGFyQXQgPSAoc3RyaW5nOiBzdHJpbmcsIGlkeDogbnVtYmVyLCBjaGFyOiBzdHJpbmcpID0+XG4gICAgYCR7c3RyaW5nLnN1YnN0cmluZygwLCBpZHgpfSR7Y2hhcn0ke3N0cmluZy5zdWJzdHJpbmcoaWR4ICsgMSl9YDtcblxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VNYXNrKGZvcm1hdDogc3RyaW5nKTogUGFyc2VkTWFzayB7XG4gICAgY29uc3QgbGl0ZXJhbHMgPSBuZXcgTWFwPG51bWJlciwgc3RyaW5nPigpO1xuICAgIGxldCBtYXNrID0gZm9ybWF0O1xuXG4gICAgZm9yIChsZXQgaSA9IDAsIGogPSAwOyBpIDwgZm9ybWF0Lmxlbmd0aDsgaSsrLCBqKyspIHtcbiAgICAgICAgY29uc3QgW2N1cnJlbnQsIG5leHRdID0gW2Zvcm1hdC5jaGFyQXQoaSksIGZvcm1hdC5jaGFyQXQoaSArIDEpXTtcblxuICAgICAgICBpZiAoY3VycmVudCA9PT0gJ1xcXFwnICYmIEZMQUdTLmhhcyhuZXh0KSkge1xuICAgICAgICAgICAgbWFzayA9IHJlcGxhY2VDaGFyQXQobWFzaywgaiwgJycpO1xuICAgICAgICAgICAgbGl0ZXJhbHMuc2V0KGosIG5leHQpO1xuICAgICAgICAgICAgaSsrO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCFGTEFHUy5oYXMoY3VycmVudCkpIHtcbiAgICAgICAgICAgICAgICBsaXRlcmFscy5zZXQoaiwgY3VycmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4geyBsaXRlcmFscywgbWFzayB9O1xufVxuXG4vKiogQGhpZGRlbiAqL1xuQEluamVjdGFibGUoe1xuICAgIHByb3ZpZGVkSW46ICdyb290J1xufSlcbmV4cG9ydCBjbGFzcyBNYXNrUGFyc2luZ1NlcnZpY2Uge1xuXG4gICAgcHVibGljIGFwcGx5TWFzayhpbnB1dFZhbDogc3RyaW5nLCBtYXNrT3B0aW9uczogTWFza09wdGlvbnMsIHBvcyA9IDApOiBzdHJpbmcge1xuICAgICAgICBsZXQgb3V0cHV0VmFsID0gJyc7XG4gICAgICAgIGxldCB2YWx1ZSA9ICcnO1xuICAgICAgICBjb25zdCB7IGxpdGVyYWxzLCBtYXNrIH0gPSBwYXJzZU1hc2sobWFza09wdGlvbnMuZm9ybWF0KTtcbiAgICAgICAgY29uc3QgbGl0ZXJhbEtleXM6IG51bWJlcltdID0gQXJyYXkuZnJvbShsaXRlcmFscy5rZXlzKCkpO1xuICAgICAgICBjb25zdCBub25MaXRlcmFsSW5kaWNlczogbnVtYmVyW10gPSB0aGlzLmdldE5vbkxpdGVyYWxJbmRpY2VzKG1hc2ssIGxpdGVyYWxLZXlzKTtcbiAgICAgICAgY29uc3QgbGl0ZXJhbFZhbHVlczogc3RyaW5nW10gPSBBcnJheS5mcm9tKGxpdGVyYWxzLnZhbHVlcygpKTtcblxuICAgICAgICBpZiAoaW5wdXRWYWwgIT0gbnVsbCkge1xuICAgICAgICAgICAgdmFsdWUgPSBpbnB1dFZhbC50b1N0cmluZygpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yIChjb25zdCBfbWFza1N5bSBvZiBtYXNrKSB7XG4gICAgICAgICAgICBvdXRwdXRWYWwgKz0gbWFza09wdGlvbnMucHJvbXB0Q2hhcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxpdGVyYWxzLmZvckVhY2goKHZhbDogc3RyaW5nLCBrZXk6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgb3V0cHV0VmFsID0gcmVwbGFjZUNoYXJBdChvdXRwdXRWYWwsIGtleSwgdmFsKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG91dHB1dFZhbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG5vbkxpdGVyYWxWYWx1ZXM6IHN0cmluZ1tdID0gdGhpcy5nZXROb25MaXRlcmFsVmFsdWVzKHZhbHVlLCBsaXRlcmFsVmFsdWVzKTtcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5vbkxpdGVyYWxWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGNvbnN0IGNoYXIgPSBub25MaXRlcmFsVmFsdWVzW2ldO1xuICAgICAgICAgICAgY29uc3QgaXNDaGFyVmFsaWQgPSB0aGlzLnZhbGlkYXRlQ2hhck9uUG9zaXRpb24oY2hhciwgbm9uTGl0ZXJhbEluZGljZXNbaV0sIG1hc2spO1xuXG4gICAgICAgICAgICBpZiAoIWlzQ2hhclZhbGlkICYmIGNoYXIgIT09IG1hc2tPcHRpb25zLnByb21wdENoYXIpIHtcbiAgICAgICAgICAgICAgICBub25MaXRlcmFsVmFsdWVzW2ldID0gbWFza09wdGlvbnMucHJvbXB0Q2hhcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChub25MaXRlcmFsVmFsdWVzLmxlbmd0aCA+IG5vbkxpdGVyYWxJbmRpY2VzLmxlbmd0aCkge1xuICAgICAgICAgICAgbm9uTGl0ZXJhbFZhbHVlcy5zcGxpY2Uobm9uTGl0ZXJhbEluZGljZXMubGVuZ3RoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3Qgbm9uTGl0ZXJhbFZhbHVlIG9mIG5vbkxpdGVyYWxWYWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoYXIgPSBub25MaXRlcmFsVmFsdWU7XG4gICAgICAgICAgICBvdXRwdXRWYWwgPSByZXBsYWNlQ2hhckF0KG91dHB1dFZhbCwgbm9uTGl0ZXJhbEluZGljZXNbcG9zKytdLCBjaGFyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvdXRwdXRWYWw7XG4gICAgfVxuXG4gICAgcHVibGljIHBhcnNlVmFsdWVGcm9tTWFzayhtYXNrZWRWYWx1ZTogc3RyaW5nLCBtYXNrT3B0aW9uczogTWFza09wdGlvbnMpOiBzdHJpbmcge1xuICAgICAgICBsZXQgb3V0cHV0VmFsID0gJyc7XG4gICAgICAgIGNvbnN0IGxpdGVyYWxWYWx1ZXM6IHN0cmluZ1tdID0gQXJyYXkuZnJvbShwYXJzZU1hc2sobWFza09wdGlvbnMuZm9ybWF0KS5saXRlcmFscy52YWx1ZXMoKSk7XG5cbiAgICAgICAgZm9yIChjb25zdCB2YWwgb2YgbWFza2VkVmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChsaXRlcmFsVmFsdWVzLmluZGV4T2YodmFsKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBpZiAodmFsICE9PSBtYXNrT3B0aW9ucy5wcm9tcHRDaGFyKSB7XG4gICAgICAgICAgICAgICAgICAgIG91dHB1dFZhbCArPSB2YWw7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG91dHB1dFZhbDtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVwbGFjZUluTWFzayhtYXNrZWRWYWx1ZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBtYXNrT3B0aW9uczogTWFza09wdGlvbnMsIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKTogUmVwbGFjZWQge1xuICAgICAgICBjb25zdCB7IGxpdGVyYWxzLCBtYXNrIH0gPSBwYXJzZU1hc2sobWFza09wdGlvbnMuZm9ybWF0KTtcbiAgICAgICAgY29uc3QgbGl0ZXJhbHNQb3NpdGlvbnMgPSBBcnJheS5mcm9tKGxpdGVyYWxzLmtleXMoKSk7XG4gICAgICAgIHZhbHVlID0gdGhpcy5yZXBsYWNlSU1FTnVtYmVycyh2YWx1ZSk7XG4gICAgICAgIGNvbnN0IGNoYXJzID0gQXJyYXkuZnJvbSh2YWx1ZSk7XG4gICAgICAgIGxldCBjdXJzb3IgPSBzdGFydDtcbiAgICAgICAgZW5kID0gTWF0aC5taW4oZW5kLCBtYXNrZWRWYWx1ZS5sZW5ndGgpO1xuICAgICAgICBjb25zdCBpbml0aWFsTWFza2VkVmFsdWUgPSBtYXNrZWRWYWx1ZTtcblxuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPCBlbmQgfHwgKGNoYXJzLmxlbmd0aCAmJiBpIDwgbWFza2VkVmFsdWUubGVuZ3RoKTsgaSsrKSB7XG4gICAgICAgICAgICBpZiAobGl0ZXJhbHNQb3NpdGlvbnMuaW5kZXhPZihpKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICBpZiAoY2hhcnNbMF0gPT09IG1hc2tlZFZhbHVlW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgIGN1cnNvciA9IGkgKyAxO1xuICAgICAgICAgICAgICAgICAgICBjaGFycy5zaGlmdCgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChjaGFyc1swXVxuICAgICAgICAgICAgICAgICYmICF0aGlzLnZhbGlkYXRlQ2hhck9uUG9zaXRpb24oY2hhcnNbMF0sIGksIG1hc2spXG4gICAgICAgICAgICAgICAgJiYgY2hhcnNbMF0gIT09IG1hc2tPcHRpb25zLnByb21wdENoYXIpIHtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGNoYXIgPSBtYXNrT3B0aW9ucy5wcm9tcHRDaGFyO1xuICAgICAgICAgICAgaWYgKGNoYXJzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGN1cnNvciA9IGkgKyAxO1xuICAgICAgICAgICAgICAgIGNoYXIgPSBjaGFycy5zaGlmdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbWFza2VkVmFsdWUgPSByZXBsYWNlQ2hhckF0KG1hc2tlZFZhbHVlLCBpLCBjaGFyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPD0gMSkge1xuICAgICAgICAgICAgbGV0IGlzRGVsZXRlID0gZmFsc2U7XG4gICAgICAgICAgICBjdXJzb3IgPSBzdGFydDtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGl0ZXJhbHNQb3NpdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIG9uIGBkZWxldGVgIHRoZSBjdXJzb3Igc2hvdWxkIG1vdmUgZm9yd2FyZFxuICAgICAgICAgICAgICAgICAgICBjdXJzb3IgPSBNYXRoLm1heChjdXJzb3IsIGVuZCk7XG4gICAgICAgICAgICAgICAgICAgIGlzRGVsZXRlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnNvciA9PT0gbGl0ZXJhbHNQb3NpdGlvbnNbaV0pIHtcbiAgICAgICAgICAgICAgICAgICAgY3Vyc29yID0gbGl0ZXJhbHNQb3NpdGlvbnNbaV0gKyAxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghaXNEZWxldGUgJiYgaW5pdGlhbE1hc2tlZFZhbHVlICE9PSBtYXNrZWRWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGN1cnNvcisrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG1hc2tlZFZhbHVlLCBlbmQ6IGN1cnNvciB9O1xuICAgIH1cblxuICAgIC8qKiBWYWxpZGF0ZXMgb25seSBub24gbGl0ZXJhbCBwb3NpdGlvbnMuICovXG4gICAgcHJpdmF0ZSB2YWxpZGF0ZUNoYXJPblBvc2l0aW9uKGlucHV0Q2hhcjogc3RyaW5nLCBwb3NpdGlvbjogbnVtYmVyLCBtYXNrOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAgICAgY29uc3QgcmVnZXggPSBSRUdFWC5nZXQobWFzay5jaGFyQXQocG9zaXRpb24pKTtcbiAgICAgICAgcmV0dXJuIHJlZ2V4ID8gcmVnZXgudGVzdChpbnB1dENoYXIpIDogZmFsc2U7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXROb25MaXRlcmFsSW5kaWNlcyhtYXNrOiBzdHJpbmcsIGxpdGVyYWxLZXlzOiBudW1iZXJbXSk6IG51bWJlcltdIHtcbiAgICAgICAgY29uc3Qgbm9uTGl0ZXJhbHNJbmRpY2VzOiBudW1iZXJbXSA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbWFzay5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGxpdGVyYWxLZXlzLmluZGV4T2YoaSkgPT09IC0xKSB7XG4gICAgICAgICAgICAgICAgbm9uTGl0ZXJhbHNJbmRpY2VzLnB1c2goaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbm9uTGl0ZXJhbHNJbmRpY2VzO1xuICAgIH1cbiAgICBwcml2YXRlIGdldE5vbkxpdGVyYWxWYWx1ZXModmFsdWU6IHN0cmluZywgbGl0ZXJhbFZhbHVlczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgICAgIGNvbnN0IG5vbkxpdGVyYWxWYWx1ZXM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgICAgZm9yIChjb25zdCB2YWwgb2YgdmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChsaXRlcmFsVmFsdWVzLmluZGV4T2YodmFsKSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBub25MaXRlcmFsVmFsdWVzLnB1c2godmFsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBub25MaXRlcmFsVmFsdWVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgcmVwbGFjZUlNRU51bWJlcnModmFsdWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB2YWx1ZS5yZXBsYWNlKC9b77yQ77yR77yS77yT77yU77yV77yW77yX77yY77yZXS9nLCAobnVtKSA9PiAoe1xuICAgICAgICAgICAgJ++8kSc6ICcxJywgJ++8kic6ICcyJywgJ++8kyc6ICczJywgJ++8lCc6ICc0JywgJ++8lSc6ICc1JyxcbiAgICAgICAgICAgICfvvJYnOiAnNicsICfvvJcnOiAnNycsICfvvJgnOiAnOCcsICfvvJknOiAnOScsICfvvJAnOiAnMCdcbiAgICAgICAgfVtudW1dKSk7XG4gICAgfVxufVxuIl19
@@ -294,7 +294,6 @@ export class IgxMaskDirective {
294
294
  if (this._key === this.platform.KEYMAP.BACKSPACE) {
295
295
  replacedData.end = this._start;
296
296
  }
297
- ;
298
297
  this.setSelectionRange(replacedData.end);
299
298
  const rawVal = this.maskParser.parseValueFromMask(this.inputValue, this.maskOptions);
300
299
  this._dataValue = this.includeLiterals ? this.inputValue : rawVal;
@@ -365,4 +364,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ng
365
364
  type: HostListener,
366
365
  args: ['drop', ['$event']]
367
366
  }] } });
368
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZGlyZWN0aXZlcy9tYXNrL21hc2suZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFDakQsTUFBTSxFQUNOLEtBQUssR0FDUixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFtQyxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVwRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBUTVCLE1BQU0sT0FBTyxnQkFBZ0I7SUFDekI7Ozs7O09BS0c7SUFDSCxJQUNXLElBQUk7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBVyxJQUFJLENBQUMsR0FBVztRQUN2QiwyQkFBMkI7UUFDM0IsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNwQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzlGLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7WUFDakIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQzFDO0lBQ0wsQ0FBQztJQWlERCxjQUFjO0lBQ2QsSUFBVyxhQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7SUFDekMsQ0FBQztJ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aEIsS0FBSztnQkFVQyxlQUFlO3NCQURyQixLQUFLO2dCQVVDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFVQyxnQkFBZ0I7c0JBRHRCLEtBQUs7Z0JBV0MsWUFBWTtzQkFEbEIsTUFBTTtnQkEwRUEsU0FBUztzQkFEZixZQUFZO3VCQUFDLFNBQVMsRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFrQjVCLGtCQUFrQjtzQkFEeEIsWUFBWTt1QkFBQyxrQkFBa0I7Z0JBVXpCLGdCQUFnQjtzQkFEdEIsWUFBWTt1QkFBQyxnQkFBZ0I7Z0JBWXZCLGNBQWM7c0JBRHBCLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQW1FMUIsT0FBTztzQkFEYixZQUFZO3VCQUFDLE9BQU87Z0JBUWQsT0FBTztzQkFEYixZQUFZO3VCQUFDLE9BQU87Z0JBV2QsTUFBTTtzQkFEWixZQUFZO3VCQUFDLE1BQU0sRUFBRSxDQUFDLHFCQUFxQixDQUFDO2dCQVN0QyxXQUFXO3NCQURqQixZQUFZO3VCQUFDLFdBQVc7Z0JBU2xCLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsV0FBVztnQkFTbEIsTUFBTTtzQkFEWixZQUFZO3VCQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RMaXN0ZW5lcixcbiAgICBPdXRwdXQsIFBpcGVUcmFuc2Zvcm0sIFJlbmRlcmVyMixcbiAgICBJbnB1dCwgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRyb2xWYWx1ZUFjY2Vzc29yLCBOR19WQUxVRV9BQ0NFU1NPUiB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IE1hc2tQYXJzaW5nU2VydmljZSwgTWFza09wdGlvbnMsIHBhcnNlTWFzayB9IGZyb20gJy4vbWFzay1wYXJzaW5nLnNlcnZpY2UnO1xuaW1wb3J0IHsgSUJhc2VFdmVudEFyZ3MsIFBsYXRmb3JtVXRpbCB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgbm9vcCB9IGZyb20gJ3J4anMnO1xuXG5ARGlyZWN0aXZlKHtcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IE5HX1ZBTFVFX0FDQ0VTU09SLCB1c2VFeGlzdGluZzogSWd4TWFza0RpcmVjdGl2ZSwgbXVsdGk6IHRydWUgfV0sXG4gICAgc2VsZWN0b3I6ICdbaWd4TWFza10nLFxuICAgIGV4cG9ydEFzOiAnaWd4TWFzaycsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hNYXNrRGlyZWN0aXZlIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdDaGVja2VkLCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgaW5wdXQgbWFzay5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlucHV0IFtpZ3hNYXNrXSA9IFwiJzAwLzAwLzAwMDAnXCI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCdpZ3hNYXNrJylcbiAgICBwdWJsaWMgZ2V0IG1hc2soKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX21hc2sgfHwgdGhpcy5kZWZhdWx0TWFzaztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IG1hc2sodmFsOiBzdHJpbmcpIHtcbiAgICAgICAgLy8gQi5QLiA5dGggSnVuZSAyMDIxICM3NDkwXG4gICAgICAgIGlmICh2YWwgIT09IHRoaXMuX21hc2spIHtcbiAgICAgICAgICAgIGNvbnN0IGNsZWFuSW5wdXRWYWx1ZSA9IHRoaXMubWFza1BhcnNlci5wYXJzZVZhbHVlRnJvbU1hc2sodGhpcy5pbnB1dFZhbHVlLCB0aGlzLm1hc2tPcHRpb25zKTtcbiAgICAgICAgICAgIHRoaXMuc2V0UGxhY2Vob2xkZXIodmFsKTtcbiAgICAgICAgICAgIHRoaXMuX21hc2sgPSB2YWw7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZUlucHV0VmFsdWUoY2xlYW5JbnB1dFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgdGhlIGNoYXJhY3RlciByZXByZXNlbnRpbmcgYSBmaWxsYWJsZSBzcG90IGluIHRoZSBpbnB1dCBtYXNrLlxuICAgICAqIERlZmF1bHQgdmFsdWUgaXMgXCInXydcIi5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlucHV0IFtwcm9tcHRDaGFyXSA9IFwiJy8nXCI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgcHJvbXB0Q2hhciA9ICdfJztcblxuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyBpZiB0aGUgYm91bmQgdmFsdWUgaW5jbHVkZXMgdGhlIGZvcm1hdHRpbmcgc3ltYm9scy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlucHV0IFtpbmNsdWRlTGl0ZXJhbHNdID0gXCJ0cnVlXCI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgaW5jbHVkZUxpdGVyYWxzOiBib29sZWFuO1xuXG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIGEgcGlwZSB0byBiZSB1c2VkIG9uIGJsdXIuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpbnB1dCBbZGlzcGxheVZhbHVlUGlwZV0gPSBcImRpc3BsYXlGb3JtYXRQaXBlXCI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZGlzcGxheVZhbHVlUGlwZTogUGlwZVRyYW5zZm9ybTtcblxuICAgIC8qKlxuICAgICAqIFNwZWNpZmllcyBhIHBpcGUgdG8gYmUgdXNlZCBvbiBmb2N1cy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlucHV0IFtmb2N1c2VkVmFsdWVQaXBlXSA9IFwiaW5wdXRGb3JtYXRQaXBlXCI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZm9jdXNlZFZhbHVlUGlwZTogUGlwZVRyYW5zZm9ybTtcblxuICAgIC8qKlxuICAgICAqIEVtaXRzIGFuIGV2ZW50IGVhY2ggdGltZSB0aGUgdmFsdWUgY2hhbmdlcy5cbiAgICAgKiBQcm92aWRlcyBgcmF3VmFsdWU6IHN0cmluZ2AgYW5kIGBmb3JtYXR0ZWRWYWx1ZTogc3RyaW5nYCBhcyBldmVudCBhcmd1bWVudHMuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpbnB1dCAodmFsdWVDaGFuZ2VkKSA9IFwidmFsdWVDaGFuZ2VkKHJhd1ZhbHVlOiBzdHJpbmcsIGZvcm1hdHRlZFZhbHVlOiBzdHJpbmcpXCI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHZhbHVlQ2hhbmdlZCA9IG5ldyBFdmVudEVtaXR0ZXI8SU1hc2tFdmVudEFyZ3M+KCk7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyBnZXQgbmF0aXZlRWxlbWVudCgpOiBIVE1MSW5wdXRFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbDsgKi9cbiAgICBwcm90ZWN0ZWQgZ2V0IGlucHV0VmFsdWUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlRWxlbWVudC52YWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwcm90ZWN0ZWQgc2V0IGlucHV0VmFsdWUodmFsOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnZhbHVlID0gdmFsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIGdldCBtYXNrT3B0aW9ucygpOiBNYXNrT3B0aW9ucyB7XG4gICAgICAgIGNvbnN0IGZvcm1hdCA9IHRoaXMubWFzayB8fCB0aGlzLmRlZmF1bHRNYXNrO1xuICAgICAgICBjb25zdCBwcm9tcHRDaGFyID0gdGhpcy5wcm9tcHRDaGFyICYmIHRoaXMucHJvbXB0Q2hhci5zdWJzdHJpbmcoMCwgMSk7XG4gICAgICAgIHJldHVybiB7IGZvcm1hdCwgcHJvbXB0Q2hhciB9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIGdldCBzZWxlY3Rpb25TdGFydCgpOiBudW1iZXIge1xuICAgICAgICAvLyBFZGdlKGNsYXNzaWMpIGFuZCBGRiBkb24ndCBzZWxlY3QgdGV4dCBvbiBkcm9wXG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uU3RhcnQgPT09IHRoaXMubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgJiYgdGhpcy5faGFzRHJvcEFjdGlvbiA/XG4gICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kIC0gdGhpcy5fZHJvcHBlZERhdGEubGVuZ3RoIDpcbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBnZXQgc2VsZWN0aW9uRW5kKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIGdldCBzdGFydCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3RhcnQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgZ2V0IGVuZCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fZW5kO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBfY29tcG9zaW5nOiBib29sZWFuO1xuICAgIHByb3RlY3RlZCBfY29tcG9zaXRpb25TdGFydEluZGV4OiBudW1iZXI7XG4gICAgcHJpdmF0ZSBfY29tcG9zaXRpb25WYWx1ZTogc3RyaW5nO1xuICAgIHByaXZhdGUgX2VuZCA9IDA7XG4gICAgcHJpdmF0ZSBfc3RhcnQgPSAwO1xuICAgIHByaXZhdGUgX2tleTogc3RyaW5nO1xuICAgIHByaXZhdGUgX21hc2s6IHN0cmluZztcbiAgICBwcml2YXRlIF9vbGRUZXh0ID0gJyc7XG4gICAgcHJpdmF0ZSBfZGF0YVZhbHVlID0gJyc7XG4gICAgcHJpdmF0ZSBfZm9jdXNlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2Ryb3BwZWREYXRhOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfaGFzRHJvcEFjdGlvbjogYm9vbGVhbjtcblxuICAgIHByaXZhdGUgcmVhZG9ubHkgZGVmYXVsdE1hc2sgPSAnQ0NDQ0NDQ0NDQyc7XG5cbiAgICBwcml2YXRlIF9vblRvdWNoZWRDYWxsYmFjazogKCkgPT4gdm9pZCA9IG5vb3A7XG4gICAgcHJpdmF0ZSBfb25DaGFuZ2VDYWxsYmFjazogKF86IGFueSkgPT4gdm9pZCA9IG5vb3A7XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHJvdGVjdGVkIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWY8SFRNTElucHV0RWxlbWVudD4sXG4gICAgICAgIHByb3RlY3RlZCBtYXNrUGFyc2VyOiBNYXNrUGFyc2luZ1NlcnZpY2UsXG4gICAgICAgIHByb3RlY3RlZCByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICBwcm90ZWN0ZWQgcGxhdGZvcm06IFBsYXRmb3JtVXRpbCkgeyB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24nLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbktleURvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qga2V5ID0gZXZlbnQua2V5O1xuICAgICAgICBpZiAoIWtleSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKChldmVudC5jdHJsS2V5ICYmIChrZXkgPT09IHRoaXMucGxhdGZvcm0uS0VZTUFQLlogfHwga2V5ID09PSB0aGlzLnBsYXRmb3JtLktFWU1BUC5ZKSkpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9rZXkgPSBrZXk7XG4gICAgICAgIHRoaXMuX3N0YXJ0ID0gdGhpcy5zZWxlY3Rpb25TdGFydDtcbiAgICAgICAgdGhpcy5fZW5kID0gdGhpcy5zZWxlY3Rpb25FbmQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQEhvc3RMaXN0ZW5lcignY29tcG9zaXRpb25zdGFydCcpXG4gICAgcHVibGljIG9uQ29tcG9zaXRpb25TdGFydCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9jb21wb3NpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuX2NvbXBvc2l0aW9uU3RhcnRJbmRleCA9IHRoaXMuX3N0YXJ0O1xuICAgICAgICAgICAgdGhpcy5fY29tcG9zaW5nID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2NvbXBvc2l0aW9uZW5kJylcbiAgICBwdWJsaWMgb25Db21wb3NpdGlvbkVuZCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fc3RhcnQgPSB0aGlzLl9jb21wb3NpdGlvblN0YXJ0SW5kZXg7XG4gICAgICAgIGNvbnN0IGVuZCA9IHRoaXMuc2VsZWN0aW9uRW5kO1xuICAgICAgICBjb25zdCB2YWx1ZVRvUGFyc2UgPSB0aGlzLmlucHV0VmFsdWUuc3Vic3RyaW5nKHRoaXMuX3N0YXJ0LCBlbmQpO1xuICAgICAgICB0aGlzLnVwZGF0ZUlucHV0KHZhbHVlVG9QYXJzZSk7XG4gICAgICAgIHRoaXMuX2VuZCA9IHRoaXMuc2VsZWN0aW9uRW5kO1xuICAgICAgICB0aGlzLl9jb21wb3NpdGlvblZhbHVlID0gdGhpcy5pbnB1dFZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2lucHV0JywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25JbnB1dENoYW5nZWQoZXZlbnQpOiB2b2lkIHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqICchdGhpcy5fZm9jdXNlZCcgaXMgYSBmaXggZm9yICM4MTY1XG4gICAgICAgICAqIE9uIHBhZ2UgbG9hZCBJRSB0cmlnZ2VycyBpbnB1dCBldmVudHMgYmVmb3JlIGZvY3VzIGV2ZW50cyBhbmRcbiAgICAgICAgICogaXQgZG9lcyBzbyBmb3IgZXZlcnkgc2luZ2xlIGlucHV0IG9uIHRoZSBwYWdlLlxuICAgICAgICAgKiBUaGUgbWFzayBuZWVkcyB0byBiZSBwcmV2ZW50ZWQgZnJvbSBkb2luZyBhbnl0aGluZyB3aGlsZSB0aGlzIGlzIGhhcHBlbmluZyBiZWNhdXNlXG4gICAgICAgICAqIHRoZSBlbmQgdXNlciB3aWxsIGJlIHVuYWJsZSB0byBibHVyIHRoZSBpbnB1dC5cbiAgICAgICAgICogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjE0MDYxMzgvaW5wdXQtZXZlbnQtdHJpZ2dlcmVkLW9uLWludGVybmV0LWV4cGxvcmVyLXdoZW4tcGxhY2Vob2xkZXItY2hhbmdlZFxuICAgICAgICAgKi9cblxuICAgICAgICBpZiAodGhpcy5fY29tcG9zaW5nKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5pbnB1dFZhbHVlLmxlbmd0aCA8IHRoaXMuX29sZFRleHQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgLy8gc29mdHdhcmUga2V5Ym9hcmQgaW5wdXQgZGVsZXRlXG4gICAgICAgICAgICAgICAgdGhpcy5fa2V5ID0gdGhpcy5wbGF0Zm9ybS5LRVlNQVAuQkFDS1NQQUNFO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gQWZ0ZXIgdGhlIGNvbXBvc2l0aW9uZW5kIGV2ZW50IENocm9taXVtIHRyaWdnZXJzIGlucHV0IGV2ZW50cyBvZiB0eXBlICdkZWxldGVDb250ZW50QmFja3dhcmQnIGFuZFxuICAgICAgICAvLyB3ZSBuZWVkIHRvIGFkanVzdCB0aGUgc3RhcnQgYW5kIGVuZCBpbmRleGVzIHRvIGluY2x1ZGUgbWFzayBsaXRlcmFsc1xuICAgICAgICBpZiAoZXZlbnQuaW5wdXRUeXBlID09PSAnZGVsZXRlQ29udGVudEJhY2t3YXJkJyAmJiB0aGlzLl9rZXkgIT09IHRoaXMucGxhdGZvcm0uS0VZTUFQLkJBQ0tTUEFDRSkge1xuICAgICAgICAgICAgY29uc3QgaXNJbnB1dENvbXBsZXRlID0gdGhpcy5fY29tcG9zaXRpb25TdGFydEluZGV4ID09PSAwICYmIHRoaXMuX2VuZCA9PT0gdGhpcy5tYXNrLmxlbmd0aDtcbiAgICAgICAgICAgIGxldCBudW1iZXJPZk1hc2tMaXRlcmFscyA9IDA7XG4gICAgICAgICAgICBjb25zdCBsaXRlcmFsUG9zID0gcGFyc2VNYXNrKHRoaXMubWFza09wdGlvbnMuZm9ybWF0KS5saXRlcmFscy5rZXlzKCk7XG4gICAgICAgICAgICBmb3IgKGNvbnN0IGluZGV4IG9mIGxpdGVyYWxQb3MpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5kZXggPj0gdGhpcy5fY29tcG9zaXRpb25TdGFydEluZGV4ICYmIGluZGV4IDw9IHRoaXMuX2VuZCkge1xuICAgICAgICAgICAgICAgICAgICBudW1iZXJPZk1hc2tMaXRlcmFscysrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IGlzSW5wdXRDb21wbGV0ZSA/XG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlLnN1YnN0cmluZygwLCB0aGlzLnNlbGVjdGlvbkVuZCAtIG51bWJlck9mTWFza0xpdGVyYWxzKSArIHRoaXMuaW5wdXRWYWx1ZS5zdWJzdHJpbmcodGhpcy5zZWxlY3Rpb25FbmQpXG4gICAgICAgICAgICAgICAgOiB0aGlzLl9jb21wb3NpdGlvblZhbHVlPy5zdWJzdHJpbmcoMCwgdGhpcy5fY29tcG9zaXRpb25TdGFydEluZGV4KSB8fCB0aGlzLmlucHV0VmFsdWU7XG5cbiAgICAgICAgICAgIGlmICh0aGlzLl9jb21wb3NpdGlvblZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhcnQgPSB0aGlzLnNlbGVjdGlvblN0YXJ0O1xuICAgICAgICAgICAgICAgIHRoaXMuX2VuZCA9IHRoaXMuc2VsZWN0aW9uRW5kO1xuICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9IGlzSW5wdXRDb21wbGV0ZSA/IHRoaXMuX3N0YXJ0IC0gbnVtYmVyT2ZNYXNrTGl0ZXJhbHMgOiB0aGlzLl9jb21wb3NpdGlvblN0YXJ0SW5kZXg7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9IHRoaXMuX2VuZCAtIG51bWJlck9mTWFza0xpdGVyYWxzO1xuICAgICAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgPSB0aGlzLl9lbmQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhcnQgPSB0aGlzLnNlbGVjdGlvblN0YXJ0O1xuICAgICAgICAgICAgICAgIHRoaXMuX2VuZCA9IHRoaXMuc2VsZWN0aW9uRW5kO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2hhc0Ryb3BBY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuX3N0YXJ0ID0gdGhpcy5zZWxlY3Rpb25TdGFydDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCB2YWx1ZVRvUGFyc2UgPSAnJztcbiAgICAgICAgc3dpdGNoICh0aGlzLl9rZXkpIHtcbiAgICAgICAgICAgIGNhc2UgdGhpcy5wbGF0Zm9ybS5LRVlNQVAuREVMRVRFOlxuICAgICAgICAgICAgICAgIHRoaXMuX2VuZCA9IHRoaXMuX3N0YXJ0ID09PSB0aGlzLl9lbmQgPyArK3RoaXMuX2VuZCA6IHRoaXMuX2VuZDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgdGhpcy5wbGF0Zm9ybS5LRVlNQVAuQkFDS1NQQUNFOlxuICAgICAgICAgICAgICAgIHRoaXMuX3N0YXJ0ID0gdGhpcy5zZWxlY3Rpb25TdGFydDtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgdmFsdWVUb1BhcnNlID0gdGhpcy5pbnB1dFZhbHVlLnN1YnN0cmluZyh0aGlzLl9zdGFydCwgdGhpcy5zZWxlY3Rpb25FbmQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy51cGRhdGVJbnB1dCh2YWx1ZVRvUGFyc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcigncGFzdGUnKVxuICAgIHB1YmxpYyBvblBhc3RlKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbGRUZXh0ID0gdGhpcy5pbnB1dFZhbHVlO1xuICAgICAgICB0aGlzLl9zdGFydCA9IHRoaXMuc2VsZWN0aW9uU3RhcnQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdmb2N1cycpXG4gICAgcHVibGljIG9uRm9jdXMoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLm5hdGl2ZUVsZW1lbnQucmVhZE9ubHkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9mb2N1c2VkID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5zaG93TWFzayh0aGlzLmlucHV0VmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcignYmx1cicsIFsnJGV2ZW50LnRhcmdldC52YWx1ZSddKVxuICAgIHB1YmxpYyBvbkJsdXIodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICB0aGlzLl9mb2N1c2VkID0gZmFsc2U7XG4gICAgICAgIHRoaXMuc2hvd0Rpc3BsYXlWYWx1ZSh2YWx1ZSk7XG4gICAgICAgIHRoaXMuX29uVG91Y2hlZENhbGxiYWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdkcmFnZW50ZXInKVxuICAgIHB1YmxpYyBvbkRyYWdFbnRlcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9mb2N1c2VkICYmICF0aGlzLl9kYXRhVmFsdWUpIHtcbiAgICAgICAgICAgIHRoaXMuc2hvd01hc2sodGhpcy5fZGF0YVZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcignZHJhZ2xlYXZlJylcbiAgICBwdWJsaWMgb25EcmFnTGVhdmUoKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5zaG93RGlzcGxheVZhbHVlKHRoaXMuaW5wdXRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2Ryb3AnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkRyb3AoZXZlbnQ6IERyYWdFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9oYXNEcm9wQWN0aW9uID0gdHJ1ZTtcbiAgICAgICAgdGhpcy5fZHJvcHBlZERhdGEgPSBldmVudC5kYXRhVHJhbnNmZXIuZ2V0RGF0YSgndGV4dCcpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldFBsYWNlaG9sZGVyKHRoaXMubWFza09wdGlvbnMuZm9ybWF0KTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBUT0RPOiBSZW1vdmUgYWZ0ZXIgZGF0ZS90aW1lIHBpY2tlciBpbnRlZ3JhdGlvbiByZWZhY3RvclxuICAgICAqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0NoZWNrZWQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9jb21wb3NpbmcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLl9vbGRUZXh0ID0gdGhpcy5pbnB1dFZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5wcm9tcHRDaGFyICYmIHRoaXMucHJvbXB0Q2hhci5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICB0aGlzLm1hc2tPcHRpb25zLnByb21wdENoYXIgPSB0aGlzLnByb21wdENoYXIuc3Vic3RyaW5nKDAsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdmFsdWUgPyB0aGlzLm1hc2tQYXJzZXIuYXBwbHlNYXNrKHZhbHVlLCB0aGlzLm1hc2tPcHRpb25zKSA6ICcnO1xuICAgICAgICBpZiAodGhpcy5kaXNwbGF5VmFsdWVQaXBlKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLmRpc3BsYXlWYWx1ZVBpcGUudHJhbnNmb3JtKHRoaXMuaW5wdXRWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLl9kYXRhVmFsdWUgPSB0aGlzLmluY2x1ZGVMaXRlcmFscyA/IHRoaXMuaW5wdXRWYWx1ZSA6IHZhbHVlO1xuXG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2VkLmVtaXQoeyByYXdWYWx1ZTogdmFsdWUsIGZvcm1hdHRlZFZhbHVlOiB0aGlzLmlucHV0VmFsdWUgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKF86IGFueSkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrID0gZm47XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBzaG93TWFzayh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmZvY3VzZWRWYWx1ZVBpcGUpIHtcbiAgICAgICAgICAgIC8vIFRPRE8oRC5QLik6IGZvY3VzZWRWYWx1ZVBpcGUgc2hvdWxkIGJlIGRlcHJlY2F0ZWQgb3IgZm9yY2UtY2hlY2tlZCB0byBtYXRjaCBtYXNrIGZvcm1hdFxuICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy5mb2N1c2VkVmFsdWVQaXBlLnRyYW5zZm9ybSh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLm1hc2tQYXJzZXIuYXBwbHlNYXNrKHZhbHVlLCB0aGlzLm1hc2tPcHRpb25zKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX29sZFRleHQgPSB0aGlzLmlucHV0VmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgc2V0U2VsZWN0aW9uUmFuZ2Uoc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIgPSBzdGFydCk6IHZvaWQge1xuICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuc2V0U2VsZWN0aW9uUmFuZ2Uoc3RhcnQsIGVuZCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgYWZ0ZXJJbnB1dCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fb2xkVGV4dCA9IHRoaXMuaW5wdXRWYWx1ZTtcbiAgICAgICAgdGhpcy5faGFzRHJvcEFjdGlvbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLl9zdGFydCA9IDA7XG4gICAgICAgIHRoaXMuX2VuZCA9IDA7XG4gICAgICAgIHRoaXMuX2tleSA9IG51bGw7XG4gICAgICAgIHRoaXMuX2NvbXBvc2luZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHNldFBsYWNlaG9sZGVyKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgcGxhY2Vob2xkZXIgPSB0aGlzLm5hdGl2ZUVsZW1lbnQucGxhY2Vob2xkZXI7XG4gICAgICAgIGlmICghcGxhY2Vob2xkZXIgfHwgcGxhY2Vob2xkZXIgPT09IHRoaXMubWFzaykge1xuICAgICAgICAgICAgdGhpcy5yZW5kZXJlci5zZXRBdHRyaWJ1dGUodGhpcy5uYXRpdmVFbGVtZW50LCAncGxhY2Vob2xkZXInLCBwYXJzZU1hc2sodmFsdWUgPz8gJycpLm1hc2sgfHwgdGhpcy5kZWZhdWx0TWFzayk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZUlucHV0VmFsdWUodmFsdWU6IHN0cmluZykge1xuICAgICAgICBpZiAodGhpcy5fZm9jdXNlZCkge1xuICAgICAgICAgICAgdGhpcy5zaG93TWFzayh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuZGlzcGxheVZhbHVlUGlwZSkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy5pbnB1dFZhbHVlID8gdGhpcy5tYXNrUGFyc2VyLmFwcGx5TWFzayh2YWx1ZSwgdGhpcy5tYXNrT3B0aW9ucykgOiAnJztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlSW5wdXQodmFsdWVUb1BhcnNlOiBzdHJpbmcpIHtcbiAgICAgICAgY29uc3QgcmVwbGFjZWREYXRhID0gdGhpcy5tYXNrUGFyc2VyLnJlcGxhY2VJbk1hc2sodGhpcy5fb2xkVGV4dCwgdmFsdWVUb1BhcnNlLCB0aGlzLm1hc2tPcHRpb25zLCB0aGlzLl9zdGFydCwgdGhpcy5fZW5kKTtcbiAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gcmVwbGFjZWREYXRhLnZhbHVlO1xuICAgICAgICBpZiAodGhpcy5fa2V5ID09PSB0aGlzLnBsYXRmb3JtLktFWU1BUC5CQUNLU1BBQ0UpIHtcbiAgICAgICAgICAgIHJlcGxhY2VkRGF0YS5lbmQgPSB0aGlzLl9zdGFydDtcbiAgICAgICAgfTtcblxuICAgICAgICB0aGlzLnNldFNlbGVjdGlvblJhbmdlKHJlcGxhY2VkRGF0YS5lbmQpO1xuXG4gICAgICAgIGNvbnN0IHJhd1ZhbCA9IHRoaXMubWFza1BhcnNlci5wYXJzZVZhbHVlRnJvbU1hc2sodGhpcy5pbnB1dFZhbHVlLCB0aGlzLm1hc2tPcHRpb25zKTtcbiAgICAgICAgdGhpcy5fZGF0YVZhbHVlID0gdGhpcy5pbmNsdWRlTGl0ZXJhbHMgPyB0aGlzLmlucHV0VmFsdWUgOiByYXdWYWw7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sodGhpcy5fZGF0YVZhbHVlKTtcblxuICAgICAgICB0aGlzLnZhbHVlQ2hhbmdlZC5lbWl0KHsgcmF3VmFsdWU6IHJhd1ZhbCwgZm9ybWF0dGVkVmFsdWU6IHRoaXMuaW5wdXRWYWx1ZSB9KTtcbiAgICAgICAgdGhpcy5hZnRlcklucHV0KCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzaG93RGlzcGxheVZhbHVlKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKHRoaXMuZGlzcGxheVZhbHVlUGlwZSkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gdGhpcy5kaXNwbGF5VmFsdWVQaXBlLnRyYW5zZm9ybSh2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT09IHRoaXMubWFza1BhcnNlci5hcHBseU1hc2sobnVsbCwgdGhpcy5tYXNrT3B0aW9ucykpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9ICcnO1xuICAgICAgICB9XG4gICAgfVxufVxuXG4vKipcbiAqIFRoZSBJZ3hNYXNrTW9kdWxlIHByb3ZpZGVzIHRoZSB7QGxpbmsgSWd4TWFza0RpcmVjdGl2ZX0gaW5zaWRlIHlvdXIgYXBwbGljYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSU1hc2tFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XG4gICAgcmF3VmFsdWU6IHN0cmluZztcbiAgICBmb3JtYXR0ZWRWYWx1ZTogc3RyaW5nO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuXG4iXX0=
367
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFzay5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZGlyZWN0aXZlcy9tYXNrL21hc2suZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQWMsWUFBWSxFQUFFLFlBQVksRUFDakQsTUFBTSxFQUNOLEtBQUssR0FDUixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQXdCLGlCQUFpQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDekUsT0FBTyxFQUFtQyxTQUFTLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUVwRixPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDOzs7O0FBUTVCLE1BQU0sT0FBTyxnQkFBZ0I7SUFDekI7Ozs7O09BS0c7SUFDSCxJQUNXLElBQUk7UUFDWCxPQUFPLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBVyxJQUFJLENBQUMsR0FBVztRQUN2QiwyQkFBMkI7UUFDM0IsSUFBSSxHQUFHLEtBQUssSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNwQixNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBQzlGLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekIsSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUM7WUFDakIsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGVBQWUsQ0FBQyxDQUFDO1NBQzFDO0lBQ0wsQ0FBQztJQWlERCxjQUFjO0lBQ2QsSUFBVyxhQUFhO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUM7SUFDekMsQ0FBQztJ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QVVDLGVBQWU7c0JBRHJCLEtBQUs7Z0JBVUMsZ0JBQWdCO3NCQUR0QixLQUFLO2dCQVVDLGdCQUFnQjtzQkFEdEIsS0FBSztnQkFXQyxZQUFZO3NCQURsQixNQUFNO2dCQTBFQSxTQUFTO3NCQURmLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWtCNUIsa0JBQWtCO3NCQUR4QixZQUFZO3VCQUFDLGtCQUFrQjtnQkFVekIsZ0JBQWdCO3NCQUR0QixZQUFZO3VCQUFDLGdCQUFnQjtnQkFZdkIsY0FBYztzQkFEcEIsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBbUUxQixPQUFPO3NCQURiLFlBQVk7dUJBQUMsT0FBTztnQkFRZCxPQUFPO3NCQURiLFlBQVk7dUJBQUMsT0FBTztnQkFXZCxNQUFNO3NCQURaLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMscUJBQXFCLENBQUM7Z0JBU3RDLFdBQVc7c0JBRGpCLFlBQVk7dUJBQUMsV0FBVztnQkFTbEIsV0FBVztzQkFEakIsWUFBWTt1QkFBQyxXQUFXO2dCQVNsQixNQUFNO3NCQURaLFlBQVk7dUJBQUMsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBEaXJlY3RpdmUsIEVsZW1lbnRSZWYsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLFxuICAgIE91dHB1dCwgUGlwZVRyYW5zZm9ybSwgUmVuZGVyZXIyLFxuICAgIElucHV0LCBPbkluaXQsIEFmdGVyVmlld0NoZWNrZWQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWFza1BhcnNpbmdTZXJ2aWNlLCBNYXNrT3B0aW9ucywgcGFyc2VNYXNrIH0gZnJvbSAnLi9tYXNrLXBhcnNpbmcuc2VydmljZSc7XG5pbXBvcnQgeyBJQmFzZUV2ZW50QXJncywgUGxhdGZvcm1VdGlsIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBub29wIH0gZnJvbSAncnhqcyc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsIHVzZUV4aXN0aW5nOiBJZ3hNYXNrRGlyZWN0aXZlLCBtdWx0aTogdHJ1ZSB9XSxcbiAgICBzZWxlY3RvcjogJ1tpZ3hNYXNrXScsXG4gICAgZXhwb3J0QXM6ICdpZ3hNYXNrJyxcbiAgICBzdGFuZGFsb25lOiB0cnVlXG59KVxuZXhwb3J0IGNsYXNzIElneE1hc2tEaXJlY3RpdmUgaW1wbGVtZW50cyBPbkluaXQsIEFmdGVyVmlld0NoZWNrZWQsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSBpbnB1dCBtYXNrLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aW5wdXQgW2lneE1hc2tdID0gXCInMDAvMDAvMDAwMCdcIj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ2lneE1hc2snKVxuICAgIHB1YmxpYyBnZXQgbWFzaygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWFzayB8fCB0aGlzLmRlZmF1bHRNYXNrO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgbWFzayh2YWw6IHN0cmluZykge1xuICAgICAgICAvLyBCLlAuIDl0aCBKdW5lIDIwMjEgIzc0OTBcbiAgICAgICAgaWYgKHZhbCAhPT0gdGhpcy5fbWFzaykge1xuICAgICAgICAgICAgY29uc3QgY2xlYW5JbnB1dFZhbHVlID0gdGhpcy5tYXNrUGFyc2VyLnBhcnNlVmFsdWVGcm9tTWFzayh0aGlzLmlucHV0VmFsdWUsIHRoaXMubWFza09wdGlvbnMpO1xuICAgICAgICAgICAgdGhpcy5zZXRQbGFjZWhvbGRlcih2YWwpO1xuICAgICAgICAgICAgdGhpcy5fbWFzayA9IHZhbDtcbiAgICAgICAgICAgIHRoaXMudXBkYXRlSW5wdXRWYWx1ZShjbGVhbklucHV0VmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgY2hhcmFjdGVyIHJlcHJlc2VudGluZyBhIGZpbGxhYmxlIHNwb3QgaW4gdGhlIGlucHV0IG1hc2suXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBcIidfJ1wiLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aW5wdXQgW3Byb21wdENoYXJdID0gXCInLydcIj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBwcm9tcHRDaGFyID0gJ18nO1xuXG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIGlmIHRoZSBib3VuZCB2YWx1ZSBpbmNsdWRlcyB0aGUgZm9ybWF0dGluZyBzeW1ib2xzLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aW5wdXQgW2luY2x1ZGVMaXRlcmFsc10gPSBcInRydWVcIj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpbmNsdWRlTGl0ZXJhbHM6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBTcGVjaWZpZXMgYSBwaXBlIHRvIGJlIHVzZWQgb24gYmx1ci5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlucHV0IFtkaXNwbGF5VmFsdWVQaXBlXSA9IFwiZGlzcGxheUZvcm1hdFBpcGVcIj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBkaXNwbGF5VmFsdWVQaXBlOiBQaXBlVHJhbnNmb3JtO1xuXG4gICAgLyoqXG4gICAgICogU3BlY2lmaWVzIGEgcGlwZSB0byBiZSB1c2VkIG9uIGZvY3VzLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aW5wdXQgW2ZvY3VzZWRWYWx1ZVBpcGVdID0gXCJpbnB1dEZvcm1hdFBpcGVcIj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBmb2N1c2VkVmFsdWVQaXBlOiBQaXBlVHJhbnNmb3JtO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHMgYW4gZXZlbnQgZWFjaCB0aW1lIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgICAqIFByb3ZpZGVzIGByYXdWYWx1ZTogc3RyaW5nYCBhbmQgYGZvcm1hdHRlZFZhbHVlOiBzdHJpbmdgIGFzIGV2ZW50IGFyZ3VtZW50cy5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlucHV0ICh2YWx1ZUNoYW5nZWQpID0gXCJ2YWx1ZUNoYW5nZWQocmF3VmFsdWU6IHN0cmluZywgZm9ybWF0dGVkVmFsdWU6IHN0cmluZylcIj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgdmFsdWVDaGFuZ2VkID0gbmV3IEV2ZW50RW1pdHRlcjxJTWFza0V2ZW50QXJncz4oKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIGdldCBuYXRpdmVFbGVtZW50KCk6IEhUTUxJbnB1dEVsZW1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsOyAqL1xuICAgIHByb3RlY3RlZCBnZXQgaW5wdXRWYWx1ZSgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5uYXRpdmVFbGVtZW50LnZhbHVlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHByb3RlY3RlZCBzZXQgaW5wdXRWYWx1ZSh2YWw6IHN0cmluZykge1xuICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB2YWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgZ2V0IG1hc2tPcHRpb25zKCk6IE1hc2tPcHRpb25zIHtcbiAgICAgICAgY29uc3QgZm9ybWF0ID0gdGhpcy5tYXNrIHx8IHRoaXMuZGVmYXVsdE1hc2s7XG4gICAgICAgIGNvbnN0IHByb21wdENoYXIgPSB0aGlzLnByb21wdENoYXIgJiYgdGhpcy5wcm9tcHRDaGFyLnN1YnN0cmluZygwLCAxKTtcbiAgICAgICAgcmV0dXJuIHsgZm9ybWF0LCBwcm9tcHRDaGFyIH07XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgZ2V0IHNlbGVjdGlvblN0YXJ0KCk6IG51bWJlciB7XG4gICAgICAgIC8vIEVkZ2UoY2xhc3NpYykgYW5kIEZGIGRvbid0IHNlbGVjdCB0ZXh0IG9uIGRyb3BcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25TdGFydCA9PT0gdGhpcy5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCAmJiB0aGlzLl9oYXNEcm9wQWN0aW9uID9cbiAgICAgICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQgLSB0aGlzLl9kcm9wcGVkRGF0YS5sZW5ndGggOlxuICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIGdldCBzZWxlY3Rpb25FbmQoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmF0aXZlRWxlbWVudC5zZWxlY3Rpb25FbmQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgZ2V0IHN0YXJ0KCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdGFydDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBnZXQgZW5kKCk6IG51bWJlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl9lbmQ7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIF9jb21wb3Npbmc6IGJvb2xlYW47XG4gICAgcHJvdGVjdGVkIF9jb21wb3NpdGlvblN0YXJ0SW5kZXg6IG51bWJlcjtcbiAgICBwcml2YXRlIF9jb21wb3NpdGlvblZhbHVlOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfZW5kID0gMDtcbiAgICBwcml2YXRlIF9zdGFydCA9IDA7XG4gICAgcHJpdmF0ZSBfa2V5OiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfbWFzazogc3RyaW5nO1xuICAgIHByaXZhdGUgX29sZFRleHQgPSAnJztcbiAgICBwcml2YXRlIF9kYXRhVmFsdWUgPSAnJztcbiAgICBwcml2YXRlIF9mb2N1c2VkID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfZHJvcHBlZERhdGE6IHN0cmluZztcbiAgICBwcml2YXRlIF9oYXNEcm9wQWN0aW9uOiBib29sZWFuO1xuXG4gICAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0TWFzayA9ICdDQ0NDQ0NDQ0NDJztcblxuICAgIHByaXZhdGUgX29uVG91Y2hlZENhbGxiYWNrOiAoKSA9PiB2b2lkID0gbm9vcDtcbiAgICBwcml2YXRlIF9vbkNoYW5nZUNhbGxiYWNrOiAoXzogYW55KSA9PiB2b2lkID0gbm9vcDtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwcm90ZWN0ZWQgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MSW5wdXRFbGVtZW50PixcbiAgICAgICAgcHJvdGVjdGVkIG1hc2tQYXJzZXI6IE1hc2tQYXJzaW5nU2VydmljZSxcbiAgICAgICAgcHJvdGVjdGVkIHJlbmRlcmVyOiBSZW5kZXJlcjIsXG4gICAgICAgIHByb3RlY3RlZCBwbGF0Zm9ybTogUGxhdGZvcm1VdGlsKSB7IH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBjb25zdCBrZXkgPSBldmVudC5rZXk7XG4gICAgICAgIGlmICgha2V5KSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoKGV2ZW50LmN0cmxLZXkgJiYgKGtleSA9PT0gdGhpcy5wbGF0Zm9ybS5LRVlNQVAuWiB8fCBrZXkgPT09IHRoaXMucGxhdGZvcm0uS0VZTUFQLlkpKSkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2tleSA9IGtleTtcbiAgICAgICAgdGhpcy5fc3RhcnQgPSB0aGlzLnNlbGVjdGlvblN0YXJ0O1xuICAgICAgICB0aGlzLl9lbmQgPSB0aGlzLnNlbGVjdGlvbkVuZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdExpc3RlbmVyKCdjb21wb3NpdGlvbnN0YXJ0JylcbiAgICBwdWJsaWMgb25Db21wb3NpdGlvblN0YXJ0KCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2NvbXBvc2luZykge1xuICAgICAgICAgICAgdGhpcy5fY29tcG9zaXRpb25TdGFydEluZGV4ID0gdGhpcy5fc3RhcnQ7XG4gICAgICAgICAgICB0aGlzLl9jb21wb3NpbmcgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQEhvc3RMaXN0ZW5lcignY29tcG9zaXRpb25lbmQnKVxuICAgIHB1YmxpYyBvbkNvbXBvc2l0aW9uRW5kKCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9zdGFydCA9IHRoaXMuX2NvbXBvc2l0aW9uU3RhcnRJbmRleDtcbiAgICAgICAgY29uc3QgZW5kID0gdGhpcy5zZWxlY3Rpb25FbmQ7XG4gICAgICAgIGNvbnN0IHZhbHVlVG9QYXJzZSA9IHRoaXMuaW5wdXRWYWx1ZS5zdWJzdHJpbmcodGhpcy5fc3RhcnQsIGVuZCk7XG4gICAgICAgIHRoaXMudXBkYXRlSW5wdXQodmFsdWVUb1BhcnNlKTtcbiAgICAgICAgdGhpcy5fZW5kID0gdGhpcy5zZWxlY3Rpb25FbmQ7XG4gICAgICAgIHRoaXMuX2NvbXBvc2l0aW9uVmFsdWUgPSB0aGlzLmlucHV0VmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQEhvc3RMaXN0ZW5lcignaW5wdXQnLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbklucHV0Q2hhbmdlZChldmVudCk6IHZvaWQge1xuICAgICAgICAvKipcbiAgICAgICAgICogJyF0aGlzLl9mb2N1c2VkJyBpcyBhIGZpeCBmb3IgIzgxNjVcbiAgICAgICAgICogT24gcGFnZSBsb2FkIElFIHRyaWdnZXJzIGlucHV0IGV2ZW50cyBiZWZvcmUgZm9jdXMgZXZlbnRzIGFuZFxuICAgICAgICAgKiBpdCBkb2VzIHNvIGZvciBldmVyeSBzaW5nbGUgaW5wdXQgb24gdGhlIHBhZ2UuXG4gICAgICAgICAqIFRoZSBtYXNrIG5lZWRzIHRvIGJlIHByZXZlbnRlZCBmcm9tIGRvaW5nIGFueXRoaW5nIHdoaWxlIHRoaXMgaXMgaGFwcGVuaW5nIGJlY2F1c2VcbiAgICAgICAgICogdGhlIGVuZCB1c2VyIHdpbGwgYmUgdW5hYmxlIHRvIGJsdXIgdGhlIGlucHV0LlxuICAgICAgICAgKiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMTQwNjEzOC9pbnB1dC1ldmVudC10cmlnZ2VyZWQtb24taW50ZXJuZXQtZXhwbG9yZXItd2hlbi1wbGFjZWhvbGRlci1jaGFuZ2VkXG4gICAgICAgICAqL1xuXG4gICAgICAgIGlmICh0aGlzLl9jb21wb3NpbmcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlucHV0VmFsdWUubGVuZ3RoIDwgdGhpcy5fb2xkVGV4dC5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAvLyBzb2Z0d2FyZSBrZXlib2FyZCBpbnB1dCBkZWxldGVcbiAgICAgICAgICAgICAgICB0aGlzLl9rZXkgPSB0aGlzLnBsYXRmb3JtLktFWU1BUC5CQUNLU1BBQ0U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBBZnRlciB0aGUgY29tcG9zaXRpb25lbmQgZXZlbnQgQ2hyb21pdW0gdHJpZ2dlcnMgaW5wdXQgZXZlbnRzIG9mIHR5cGUgJ2RlbGV0ZUNvbnRlbnRCYWNrd2FyZCcgYW5kXG4gICAgICAgIC8vIHdlIG5lZWQgdG8gYWRqdXN0IHRoZSBzdGFydCBhbmQgZW5kIGluZGV4ZXMgdG8gaW5jbHVkZSBtYXNrIGxpdGVyYWxzXG4gICAgICAgIGlmIChldmVudC5pbnB1dFR5cGUgPT09ICdkZWxldGVDb250ZW50QmFja3dhcmQnICYmIHRoaXMuX2tleSAhPT0gdGhpcy5wbGF0Zm9ybS5LRVlNQVAuQkFDS1NQQUNFKSB7XG4gICAgICAgICAgICBjb25zdCBpc0lucHV0Q29tcGxldGUgPSB0aGlzLl9jb21wb3NpdGlvblN0YXJ0SW5kZXggPT09IDAgJiYgdGhpcy5fZW5kID09PSB0aGlzLm1hc2subGVuZ3RoO1xuICAgICAgICAgICAgbGV0IG51bWJlck9mTWFza0xpdGVyYWxzID0gMDtcbiAgICAgICAgICAgIGNvbnN0IGxpdGVyYWxQb3MgPSBwYXJzZU1hc2sodGhpcy5tYXNrT3B0aW9ucy5mb3JtYXQpLmxpdGVyYWxzLmtleXMoKTtcbiAgICAgICAgICAgIGZvciAoY29uc3QgaW5kZXggb2YgbGl0ZXJhbFBvcykge1xuICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSB0aGlzLl9jb21wb3NpdGlvblN0YXJ0SW5kZXggJiYgaW5kZXggPD0gdGhpcy5fZW5kKSB7XG4gICAgICAgICAgICAgICAgICAgIG51bWJlck9mTWFza0xpdGVyYWxzKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5pbnB1dFZhbHVlID0gaXNJbnB1dENvbXBsZXRlID9cbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0VmFsdWUuc3Vic3RyaW5nKDAsIHRoaXMuc2VsZWN0aW9uRW5kIC0gbnVtYmVyT2ZNYXNrTGl0ZXJhbHMpICsgdGhpcy5pbnB1dFZhbHVlLnN1YnN0cmluZyh0aGlzLnNlbGVjdGlvbkVuZClcbiAgICAgICAgICAgICAgICA6IHRoaXMuX2NvbXBvc2l0aW9uVmFsdWU/LnN1YnN0cmluZygwLCB0aGlzLl9jb21wb3NpdGlvblN0YXJ0SW5kZXgpIHx8IHRoaXMuaW5wdXRWYWx1ZTtcblxuICAgICAgICAgICAgaWYgKHRoaXMuX2NvbXBvc2l0aW9uVmFsdWUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGFydCA9IHRoaXMuc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW5kID0gdGhpcy5zZWxlY3Rpb25FbmQ7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnNlbGVjdGlvblN0YXJ0ID0gaXNJbnB1dENvbXBsZXRlID8gdGhpcy5fc3RhcnQgLSBudW1iZXJPZk1hc2tMaXRlcmFscyA6IHRoaXMuX2NvbXBvc2l0aW9uU3RhcnRJbmRleDtcbiAgICAgICAgICAgICAgICB0aGlzLm5hdGl2ZUVsZW1lbnQuc2VsZWN0aW9uRW5kID0gdGhpcy5fZW5kIC0gbnVtYmVyT2ZNYXNrTGl0ZXJhbHM7XG4gICAgICAgICAgICAgICAgdGhpcy5uYXRpdmVFbGVtZW50LnNlbGVjdGlvbkVuZCA9IHRoaXMuX2VuZDtcbiAgICAgICAgICAgICAgICB0aGlzLl9zdGFydCA9IHRoaXMuc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgICAgICAgICAgdGhpcy5fZW5kID0gdGhpcy5zZWxlY3Rpb25FbmQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5faGFzRHJvcEFjdGlvbikge1xuICAgICAgICAgICAgdGhpcy5fc3RhcnQgPSB0aGlzLnNlbGVjdGlvblN0YXJ0O1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHZhbHVlVG9QYXJzZSA9ICcnO1xuICAgICAgICBzd2l0Y2ggKHRoaXMuX2tleSkge1xuICAgICAgICAgICAgY2FzZSB0aGlzLnBsYXRmb3JtLktFWU1BUC5ERUxFVEU6XG4gICAgICAgICAgICAgICAgdGhpcy5fZW5kID0gdGhpcy5fc3RhcnQgPT09IHRoaXMuX2VuZCA/ICsrdGhpcy5fZW5kIDogdGhpcy5fZW5kO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSB0aGlzLnBsYXRmb3JtLktFWU1BUC5CQUNLU1BBQ0U6XG4gICAgICAgICAgICAgICAgdGhpcy5fc3RhcnQgPSB0aGlzLnNlbGVjdGlvblN0YXJ0O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB2YWx1ZVRvUGFyc2UgPSB0aGlzLmlucHV0VmFsdWUuc3Vic3RyaW5nKHRoaXMuX3N0YXJ0LCB0aGlzLnNlbGVjdGlvbkVuZCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnVwZGF0ZUlucHV0KHZhbHVlVG9QYXJzZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdwYXN0ZScpXG4gICAgcHVibGljIG9uUGFzdGUoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29sZFRleHQgPSB0aGlzLmlucHV0VmFsdWU7XG4gICAgICAgIHRoaXMuX3N0YXJ0ID0gdGhpcy5zZWxlY3Rpb25TdGFydDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2ZvY3VzJylcbiAgICBwdWJsaWMgb25Gb2N1cygpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMubmF0aXZlRWxlbWVudC5yZWFkT25seSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX2ZvY3VzZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNob3dNYXNrKHRoaXMuaW5wdXRWYWx1ZSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdibHVyJywgWyckZXZlbnQudGFyZ2V0LnZhbHVlJ10pXG4gICAgcHVibGljIG9uQmx1cih2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2ZvY3VzZWQgPSBmYWxzZTtcbiAgICAgICAgdGhpcy5zaG93RGlzcGxheVZhbHVlKHZhbHVlKTtcbiAgICAgICAgdGhpcy5fb25Ub3VjaGVkQ2FsbGJhY2soKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2RyYWdlbnRlcicpXG4gICAgcHVibGljIG9uRHJhZ0VudGVyKCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX2ZvY3VzZWQgJiYgIXRoaXMuX2RhdGFWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zaG93TWFzayh0aGlzLl9kYXRhVmFsdWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdkcmFnbGVhdmUnKVxuICAgIHB1YmxpYyBvbkRyYWdMZWF2ZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9mb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dEaXNwbGF5VmFsdWUodGhpcy5pbnB1dFZhbHVlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcignZHJvcCcsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uRHJvcChldmVudDogRHJhZ0V2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuX2hhc0Ryb3BBY3Rpb24gPSB0cnVlO1xuICAgICAgICB0aGlzLl9kcm9wcGVkRGF0YSA9IGV2ZW50LmRhdGFUcmFuc2Zlci5nZXREYXRhKCd0ZXh0Jyk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0UGxhY2Vob2xkZXIodGhpcy5tYXNrT3B0aW9ucy5mb3JtYXQpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFRPRE86IFJlbW92ZSBhZnRlciBkYXRlL3RpbWUgcGlja2VyIGludGVncmF0aW9uIHJlZmFjdG9yXG4gICAgICpcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2NvbXBvc2luZykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuX29sZFRleHQgPSB0aGlzLmlucHV0VmFsdWU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnByb21wdENoYXIgJiYgdGhpcy5wcm9tcHRDaGFyLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgIHRoaXMubWFza09wdGlvbnMucHJvbXB0Q2hhciA9IHRoaXMucHJvbXB0Q2hhci5zdWJzdHJpbmcoMCwgMSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSB2YWx1ZSA/IHRoaXMubWFza1BhcnNlci5hcHBseU1hc2sodmFsdWUsIHRoaXMubWFza09wdGlvbnMpIDogJyc7XG4gICAgICAgIGlmICh0aGlzLmRpc3BsYXlWYWx1ZVBpcGUpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMuZGlzcGxheVZhbHVlUGlwZS50cmFuc2Zvcm0odGhpcy5pbnB1dFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX2RhdGFWYWx1ZSA9IHRoaXMuaW5jbHVkZUxpdGVyYWxzID8gdGhpcy5pbnB1dFZhbHVlIDogdmFsdWU7XG5cbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWQuZW1pdCh7IHJhd1ZhbHVlOiB2YWx1ZSwgZm9ybWF0dGVkVmFsdWU6IHRoaXMuaW5wdXRWYWx1ZSB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAoXzogYW55KSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIHRoaXMuX29uQ2hhbmdlQ2FsbGJhY2sgPSBmbjtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vblRvdWNoZWRDYWxsYmFjayA9IGZuO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHNob3dNYXNrKHZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuZm9jdXNlZFZhbHVlUGlwZSkge1xuICAgICAgICAgICAgLy8gVE9ETyhELlAuKTogZm9jdXNlZFZhbHVlUGlwZSBzaG91bGQgYmUgZGVwcmVjYXRlZCBvciBmb3JjZS1jaGVja2VkIHRvIG1hdGNoIG1hc2sgZm9ybWF0XG4gICAgICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLmZvY3VzZWRWYWx1ZVBpcGUudHJhbnNmb3JtKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMubWFza1BhcnNlci5hcHBseU1hc2sodmFsdWUsIHRoaXMubWFza09wdGlvbnMpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5fb2xkVGV4dCA9IHRoaXMuaW5wdXRWYWx1ZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBzZXRTZWxlY3Rpb25SYW5nZShzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciA9IHN0YXJ0KTogdm9pZCB7XG4gICAgICAgIHRoaXMubmF0aXZlRWxlbWVudC5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgZW5kKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBhZnRlcklucHV0KCk6IHZvaWQge1xuICAgICAgICB0aGlzLl9vbGRUZXh0ID0gdGhpcy5pbnB1dFZhbHVlO1xuICAgICAgICB0aGlzLl9oYXNEcm9wQWN0aW9uID0gZmFsc2U7XG4gICAgICAgIHRoaXMuX3N0YXJ0ID0gMDtcbiAgICAgICAgdGhpcy5fZW5kID0gMDtcbiAgICAgICAgdGhpcy5fa2V5ID0gbnVsbDtcbiAgICAgICAgdGhpcy5fY29tcG9zaW5nID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgc2V0UGxhY2Vob2xkZXIodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgICAgICBjb25zdCBwbGFjZWhvbGRlciA9IHRoaXMubmF0aXZlRWxlbWVudC5wbGFjZWhvbGRlcjtcbiAgICAgICAgaWYgKCFwbGFjZWhvbGRlciB8fCBwbGFjZWhvbGRlciA9PT0gdGhpcy5tYXNrKSB7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcmVyLnNldEF0dHJpYnV0ZSh0aGlzLm5hdGl2ZUVsZW1lbnQsICdwbGFjZWhvbGRlcicsIHBhcnNlTWFzayh2YWx1ZSA/PyAnJykubWFzayB8fCB0aGlzLmRlZmF1bHRNYXNrKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgdXBkYXRlSW5wdXRWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLl9mb2N1c2VkKSB7XG4gICAgICAgICAgICB0aGlzLnNob3dNYXNrKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5kaXNwbGF5VmFsdWVQaXBlKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSB0aGlzLmlucHV0VmFsdWUgPyB0aGlzLm1hc2tQYXJzZXIuYXBwbHlNYXNrKHZhbHVlLCB0aGlzLm1hc2tPcHRpb25zKSA6ICcnO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVJbnB1dCh2YWx1ZVRvUGFyc2U6IHN0cmluZykge1xuICAgICAgICBjb25zdCByZXBsYWNlZERhdGEgPSB0aGlzLm1hc2tQYXJzZXIucmVwbGFjZUluTWFzayh0aGlzLl9vbGRUZXh0LCB2YWx1ZVRvUGFyc2UsIHRoaXMubWFza09wdGlvbnMsIHRoaXMuX3N0YXJ0LCB0aGlzLl9lbmQpO1xuICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSByZXBsYWNlZERhdGEudmFsdWU7XG4gICAgICAgIGlmICh0aGlzLl9rZXkgPT09IHRoaXMucGxhdGZvcm0uS0VZTUFQLkJBQ0tTUEFDRSkge1xuICAgICAgICAgICAgcmVwbGFjZWREYXRhLmVuZCA9IHRoaXMuX3N0YXJ0O1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXRTZWxlY3Rpb25SYW5nZShyZXBsYWNlZERhdGEuZW5kKTtcblxuICAgICAgICBjb25zdCByYXdWYWwgPSB0aGlzLm1hc2tQYXJzZXIucGFyc2VWYWx1ZUZyb21NYXNrKHRoaXMuaW5wdXRWYWx1ZSwgdGhpcy5tYXNrT3B0aW9ucyk7XG4gICAgICAgIHRoaXMuX2RhdGFWYWx1ZSA9IHRoaXMuaW5jbHVkZUxpdGVyYWxzID8gdGhpcy5pbnB1dFZhbHVlIDogcmF3VmFsO1xuICAgICAgICB0aGlzLl9vbkNoYW5nZUNhbGxiYWNrKHRoaXMuX2RhdGFWYWx1ZSk7XG5cbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZWQuZW1pdCh7IHJhd1ZhbHVlOiByYXdWYWwsIGZvcm1hdHRlZFZhbHVlOiB0aGlzLmlucHV0VmFsdWUgfSk7XG4gICAgICAgIHRoaXMuYWZ0ZXJJbnB1dCgpO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2hvd0Rpc3BsYXlWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGlmICh0aGlzLmRpc3BsYXlWYWx1ZVBpcGUpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXRWYWx1ZSA9IHRoaXMuZGlzcGxheVZhbHVlUGlwZS50cmFuc2Zvcm0odmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09PSB0aGlzLm1hc2tQYXJzZXIuYXBwbHlNYXNrKG51bGwsIHRoaXMubWFza09wdGlvbnMpKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0VmFsdWUgPSAnJztcbiAgICAgICAgfVxuICAgIH1cbn1cblxuLyoqXG4gKiBUaGUgSWd4TWFza01vZHVsZSBwcm92aWRlcyB0aGUge0BsaW5rIElneE1hc2tEaXJlY3RpdmV9IGluc2lkZSB5b3VyIGFwcGxpY2F0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElNYXNrRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIHJhd1ZhbHVlOiBzdHJpbmc7XG4gICAgZm9ybWF0dGVkVmFsdWU6IHN0cmluZztcbn1cblxuLyoqIEBoaWRkZW4gKi9cblxuIl19
@@ -72,7 +72,6 @@ export class IgxExpansionPanelHeaderComponent {
72
72
  get disabled() {
73
73
  return this._disabled;
74
74
  }
75
- ;
76
75
  set disabled(val) {
77
76
  this._disabled = val;
78
77
  if (val) {
@@ -83,7 +82,6 @@ export class IgxExpansionPanelHeaderComponent {
83
82
  this.tabIndex = 0;
84
83
  }
85
84
  }
86
- ;
87
85
  constructor(panel, cdr, elementRef) {
88
86
  this.panel = panel;
89
87
  this.cdr = cdr;
@@ -284,4 +282,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0-rc.4", ng
284
282
  type: HostListener,
285
283
  args: ['keydown.Alt.ArrowUp', ['$event']]
286
284
  }] } });
287
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZXhwYW5zaW9uLXBhbmVsL2V4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLElBQUksRUFDSixZQUFZLEVBQ1osTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzlFLE9BQU8sRUFBRSw2QkFBNkIsRUFBOEQsTUFBTSwwQkFBMEIsQ0FBQztBQUNySSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFdkM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxNQUFNLENBQUM7SUFDbkQsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxPQUFPO0NBQ2pCLENBQUMsQ0FBQztBQVVILE1BQU0sT0FBTyxnQ0FBZ0M7SUFDekM7OztPQUdHO0lBQ0gsSUFBVyxPQUFPO1FBQ2QsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFL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QUM7O3NCQUN4QyxZQUFZO3VCQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDOztzQkFDM0MsWUFBWTt1QkFBQyxPQUFPLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBaUIxQixTQUFTO3NCQURmLFlBQVk7dUJBQUMsdUJBQXVCLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBY3pDLFVBQVU7c0JBRGhCLFlBQVk7dUJBQUMscUJBQXFCLEVBQUUsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICBFbGVtZW50UmVmLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIEhvc3RMaXN0ZW5lcixcbiAgICBJbnB1dCxcbiAgICBIb3N0LFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBPdXRwdXQsXG4gICAgQ29udGVudENoaWxkLFxuICAgIEluamVjdCxcbiAgICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJZ3hFeHBhbnNpb25QYW5lbEljb25EaXJlY3RpdmUgfSBmcm9tICcuL2V4cGFuc2lvbi1wYW5lbC5kaXJlY3RpdmVzJztcbmltcG9ydCB7IElHWF9FWFBBTlNJT05fUEFORUxfQ09NUE9ORU5ULCBJZ3hFeHBhbnNpb25QYW5lbEJhc2UsIElFeHBhbnNpb25QYW5lbENhbmNlbGFibGVFdmVudEFyZ3MgIH0gZnJvbSAnLi9leHBhbnNpb24tcGFuZWwuY29tbW9uJztcbmltcG9ydCB7IG1rZW51bSB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgSWd4SWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgTmdJZiB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKlxuICogQGhpZGRlblxuICovXG5leHBvcnQgY29uc3QgRXhwYW5zaW9uUGFuZWxIZWFkZXJJY29uUG9zaXRpb24gPSBta2VudW0oe1xuICAgIExFRlQ6ICdsZWZ0JyxcbiAgICBOT05FOiAnbm9uZScsXG4gICAgUklHSFQ6ICdyaWdodCdcbn0pO1xuZXhwb3J0IHR5cGUgRXhwYW5zaW9uUGFuZWxIZWFkZXJJY29uUG9zaXRpb24gPSAodHlwZW9mIEV4cGFuc2lvblBhbmVsSGVhZGVySWNvblBvc2l0aW9uKVtrZXlvZiB0eXBlb2YgRXhwYW5zaW9uUGFuZWxIZWFkZXJJY29uUG9zaXRpb25dO1xuXG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXInLFxuICAgIHRlbXBsYXRlVXJsOiAnZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgSWd4SWNvbkNvbXBvbmVudF1cbn0pXG5leHBvcnQgY2xhc3MgSWd4RXhwYW5zaW9uUGFuZWxIZWFkZXJDb21wb25lbnQge1xuICAgIC8qKlxuICAgICAqIFJldHVybnMgYSByZWZlcmVuY2UgdG8gdGhlIGBpZ3gtZXhwYW5zaW9uLXBhbmVsLWljb25gIGVsZW1lbnQ7XG4gICAgICogSWYgYGljb25Qb3NpdGlvbmAgaXMgYE5PTkVgIC0gcmV0dXJuIG51bGw7XG4gICAgICovXG4gICAgcHVibGljIGdldCBpY29uUmVmKCk6IEVsZW1lbnRSZWYge1xuICAgICAgICBjb25zdCByZW5kZXJlZFRlbXBsYXRlID0gdGhpcy5jdXN0b21JY29uUmVmICA/PyB0aGlzLmRlZmF1bHRJY29uUmVmO1xuICAgICAgICByZXR1cm4gdGhpcy5pY29uUG9zaXRpb24gIT09IEV4cGFuc2lvblBhbmVsSGVhZGVySWNvblBvc2l0aW9uLk5PTkUgPyByZW5kZXJlZFRlbXBsYXRlIDogbnVsbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hFeHBhbnNpb25QYW5lbEljb25EaXJlY3RpdmUpXG4gICAgcHVibGljIHNldCBpY29uVGVtcGxhdGUodmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2ljb25UZW1wbGF0ZSA9IHZhbDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBpY29uVGVtcGxhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pY29uVGVtcGxhdGU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHRoZSBgYXJpYS1sZXZlbGAgYXR0cmlidXRlIG9mIHRoZSBoZWFkZXJcbiAgICAgKiBHZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IGN1cnJlbnRBcmlhTGV2ZWwgPSB0aGlzLnBhbmVsLmhlYWRlci5sdjtcbiAgICAgKiBgYGBcbiAgICAgKiBTZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIHRoaXMucGFuZWwuaGVhZGVyLmx2ID0gJzUnO1xuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIFtsdl09XCJteUN1c3RvbUxldmVsXCI+PC9pZ3gtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2F0dHIuYXJpYS1sZXZlbCcpXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgbHYgPSAnMyc7XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgdGhlIGByb2xlYCBhdHRyaWJ1dGUgb2YgdGhlIGhlYWRlclxuICAgICAqIEdldFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgY29uc3QgY3VycmVudFJvbGUgPSB0aGlzLnBhbmVsLmhlYWRlci5yb2xlO1xuICAgICAqIGBgYFxuICAgICAqIFNldFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgdGhpcy5wYW5lbC5oZWFkZXIucm9sZSA9ICc1JztcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBbcm9sZV09XCInY3VzdG9tJ1wiPjwvaWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLnJvbGUnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHJvbGUgPSAnaGVhZGluZyc7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgcHVibGljIGdldCBjb250cm9scygpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5wYW5lbC5pZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaW5uZXJFbGVtZW50KCkge1xuICAgICAgICByZXR1cm4gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2hpbGRyZW5bMF07XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBleHBhbmQvY29sbGFwc2UgaWNvblxuICAgICAqIEFjY2VwdHMgYGxlZnRgLCBgcmlnaHRgIG9yIGBub25lYFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgY29uc3QgY3VycmVudEljb25Qb3NpdGlvbiA9IHRoaXMucGFuZWwuaGVhZGVyLmljb25Qb3NpdGlvbjtcbiAgICAgKiBgYGBcbiAgICAgKiBTZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIHRoaXMucGFuZWwuaGVhZGVyLmljb25Qb3NpdGlvbiA9ICdsZWZ0JztcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBbaWNvblBvc2l0aW9uXT1cIidyaWdodCdcIj48L2lneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGljb25Qb3NpdGlvbjogRXhwYW5zaW9uUGFuZWxIZWFkZXJJY29uUG9zaXRpb24gPSBFeHBhbnNpb25QYW5lbEhlYWRlckljb25Qb3NpdGlvbi5MRUZUO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuZXZlciBhIHVzZXIgaW50ZXJhY3RzIHdpdGggdGhlIGhlYWRlciBob3N0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBoYW5kbGVJbnRlcmFjdGlvbihldmVudDogSUV4cGFuc2lvblBhbmVsQ2FuY2VsYWJsZUV2ZW50QXJncykge1xuICAgICAqICAuLi5cbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgKGludGVyYWN0aW9uKT1cImhhbmRsZUludGVyYWN0aW9uKCRldmVudClcIj5cbiAgICAgKiAgICAgIC4uLlxuICAgICAqICA8L2lneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBPdXRwdXQoKVxuICAgIHB1YmxpYyBpbnRlcmFjdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8SUV4cGFuc2lvblBhbmVsQ2FuY2VsYWJsZUV2ZW50QXJncyA+KCk7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZXhwYW5zaW9uLXBhbmVsX19oZWFkZXInKVxuICAgIHB1YmxpYyBjc3NDbGFzcyA9ICdpZ3gtZXhwYW5zaW9uLXBhbmVsX19oZWFkZXInO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWV4cGFuc2lvbi1wYW5lbF9faGVhZGVyLS1leHBhbmRlZCcpXG4gICAgcHVibGljIGdldCBpc0V4cGFuZGVkKCkge1xuICAgICAgICByZXR1cm4gIXRoaXMucGFuZWwuY29sbGFwc2VkO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB0aGUgd2hldGhlciB0aGUgaGVhZGVyIGlzIGRpc2FibGVkXG4gICAgICogV2hlbiBkaXNhYmxlZCwgdGhlIGhlYWRlciB3aWxsIG5vdCBoYW5kbGUgdXNlciBldmVudHMgYW5kIHdpbGwgc3RvcCB0aGVpciBwcm9wYWdhdGlvblxuICAgICAqXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBjb25zdCBpc0Rpc2FibGVkID0gdGhpcy5wYW5lbC5oZWFkZXIuZGlzYWJsZWQ7XG4gICAgICogYGBgXG4gICAgICogU2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICB0aGlzLnBhbmVsLmhlYWRlci5kaXNhYmxlZCA9IHRydWU7XG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgW2Rpc2FibGVkXT1cInRydWVcIj5cbiAgICAgKiAgICAgLi4uXG4gICAgICogIDwvaWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1leHBhbnNpb24tcGFuZWwtLWRpc2FibGVkJylcbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7XG4gICAgfTtcblxuICAgIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsO1xuICAgICAgICBpZiAodmFsKSB7XG4gICAgICAgICAgICAvLyBWLlMuIEp1bmUgMTF0aCwgMjAyMTogIzk2OTYgVGFiSW5kZXggc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiBwYW5lbCBpcyBkaXNhYmxlZFxuICAgICAgICAgICAgZGVsZXRlIHRoaXMudGFiSW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRhYkluZGV4ID0gMDtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBAQ29udGVudENoaWxkKElneEV4cGFuc2lvblBhbmVsSWNvbkRpcmVjdGl2ZSwgeyByZWFkOiBFbGVtZW50UmVmIH0pXG4gICAgcHJpdmF0ZSBjdXN0b21JY29uUmVmOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQFZpZXdDaGlsZChJZ3hJY29uQ29tcG9uZW50LCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBwcml2YXRlIGRlZmF1bHRJY29uUmVmOiBFbGVtZW50UmVmO1xuXG4gICAgLyoqXG4gICAgICogU2V0cy9nZXRzIHRoZSBgaWRgIG9mIHRoZSBleHBhbnNpb24gcGFuZWwgaGVhZGVyLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBsZXQgcGFuZWxIZWFkZXJJZCA9ICB0aGlzLnBhbmVsLmhlYWRlci5pZDtcbiAgICAgKiBgYGBcbiAgICAgKlxuICAgICAqIEBtZW1iZXJvZiBJZ3hFeHBhbnNpb25QYW5lbENvbXBvbmVudFxuICAgICAqL1xuICAgIHB1YmxpYyBpZCA9ICcnO1xuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIHRhYkluZGV4ID0gMDtcblxuICAgIC8vIHByb3BlcnRpZXMgc2VjdGlvblxuICAgIHByaXZhdGUgX2ljb25UZW1wbGF0ZSA9IGZhbHNlO1xuICAgIHByaXZhdGUgX2Rpc2FibGVkID0gZmFsc2U7XG5cbiAgICBjb25zdHJ1Y3RvcihASG9zdCgpIEBJbmplY3QoSUdYX0VYUEFOU0lPTl9QQU5FTF9DT01QT05FTlQpIHB1YmxpYyBwYW5lbDogSWd4RXhwYW5zaW9uUGFuZWxCYXNlLCBwdWJsaWMgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgICBwdWJsaWMgZWxlbWVudFJlZjogRWxlbWVudFJlZikge1xuICAgICAgICB0aGlzLmlkID0gYCR7dGhpcy5wYW5lbC5pZH0taGVhZGVyYDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuXG4gICAgICovXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5FbnRlcicsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5TcGFjZScsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5TcGFjZWJhcicsIFsnJGV2ZW50J10pXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkFjdGlvbihldnQ/OiBFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgICBldnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBldmVudEFyZ3M6IElFeHBhbnNpb25QYW5lbENhbmNlbGFibGVFdmVudEFyZ3MgID0geyBldmVudDogZXZ0LCBvd25lcjogdGhpcy5wYW5lbCwgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICB0aGlzLmludGVyYWN0aW9uLmVtaXQoZXZlbnRBcmdzKTtcbiAgICAgICAgaWYgKGV2ZW50QXJncy5jYW5jZWwgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnBhbmVsLnRvZ2dsZShldnQpO1xuICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkFsdC5BcnJvd0Rvd24nLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvcGVuUGFuZWwoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmFsdEtleSkge1xuICAgICAgICAgICAgY29uc3QgZXZlbnRBcmdzOiBJRXhwYW5zaW9uUGFuZWxDYW5jZWxhYmxlRXZlbnRBcmdzICA9IHsgZXZlbnQsIG93bmVyOiB0aGlzLnBhbmVsLCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgICAgICB0aGlzLmludGVyYWN0aW9uLmVtaXQoZXZlbnRBcmdzKTtcbiAgICAgICAgICAgIGlmIChldmVudEFyZ3MuY2FuY2VsID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wYW5lbC5leHBhbmQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgIH1cblxuICAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICAgQEhvc3RMaXN0ZW5lcigna2V5ZG93bi5BbHQuQXJyb3dVcCcsIFsnJGV2ZW50J10pXG4gICAgIHB1YmxpYyBjbG9zZVBhbmVsKGV2ZW50OiBLZXlib2FyZEV2ZW50KSB7XG4gICAgICAgIGlmIChldmVudC5hbHRLZXkpIHtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50QXJnczogSUV4cGFuc2lvblBhbmVsQ2FuY2VsYWJsZUV2ZW50QXJncyAgPSB7IGV2ZW50LCBvd25lcjogdGhpcy5wYW5lbCwgY2FuY2VsOiBmYWxzZSB9O1xuICAgICAgICAgICAgdGhpcy5pbnRlcmFjdGlvbi5lbWl0KGV2ZW50QXJncyk7XG4gICAgICAgICAgICBpZiAoZXZlbnRBcmdzLmNhbmNlbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMucGFuZWwuY29sbGFwc2UoZXZlbnQpO1xuICAgICAgICB9XG4gICAgIH1cblxuICAgICAvKipcbiAgICAgICogQGhpZGRlblxuICAgICAgKi9cbiAgICAgcHVibGljIGdldCBpY29uUG9zaXRpb25DbGFzcygpOiBzdHJpbmcge1xuICAgICAgICBzd2l0Y2ggKHRoaXMuaWNvblBvc2l0aW9uKSB7XG4gICAgICAgICAgICBjYXNlIChFeHBhbnNpb25QYW5lbEhlYWRlckljb25Qb3NpdGlvbi5MRUZUKTpcbiAgICAgICAgICAgICAgICByZXR1cm4gYGlneC1leHBhbnNpb24tcGFuZWxfX2hlYWRlci1pY29uLS1zdGFydGA7XG4gICAgICAgICAgICBjYXNlIChFeHBhbnNpb25QYW5lbEhlYWRlckljb25Qb3NpdGlvbi5SSUdIVCk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBpZ3gtZXhwYW5zaW9uLXBhbmVsX19oZWFkZXItaWNvbi0tZW5kYDtcbiAgICAgICAgICAgIGNhc2UgKEV4cGFuc2lvblBhbmVsSGVhZGVySWNvblBvc2l0aW9uLk5PTkUpOlxuICAgICAgICAgICAgICAgIHJldHVybiBgaWd4LWV4cGFuc2lvbi1wYW5lbF9faGVhZGVyLWljb24tLW5vbmVgO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgIH1cbiAgICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImlneC1leHBhbnNpb24tcGFuZWxfX2hlYWRlci1pbm5lclwiIFthdHRyLnRhYmluZGV4XT1cInRhYkluZGV4XCIgcm9sZT1cImJ1dHRvblwiIFthdHRyLmlkXT1cImlkXCJcblthdHRyLmFyaWEtZGlzYWJsZWRdPVwiZGlzYWJsZWRcIiBbYXR0ci5hcmlhLWV4cGFuZGVkXT1cImlzRXhwYW5kZWRcIiBbYXR0ci5hcmlhLWNvbnRyb2xzXT1cImNvbnRyb2xzXCI+XG4gICAgPGRpdiBjbGFzcz1cImlneC1leHBhbnNpb24tcGFuZWxfX3RpdGxlLXdyYXBwZXJcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiaWd4LWV4cGFuc2lvbi1wYW5lbC10aXRsZVwiPjwvbmctY29udGVudD5cbiAgICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiaWd4LWV4cGFuc2lvbi1wYW5lbC1kZXNjcmlwdGlvblwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPGRpdiBbY2xhc3NdPVwiaWNvblBvc2l0aW9uQ2xhc3NcIj5cbiAgICAgICAgPG5nLWNvbnRlbnQgKm5nSWY9XCJpY29uVGVtcGxhdGVcIiBzZWxlY3Q9XCJpZ3gtZXhwYW5zaW9uLXBhbmVsLWljb25cIj48L25nLWNvbnRlbnQ+XG4gICAgICAgIDxpZ3gtaWNvbiAqbmdJZj1cIiFpY29uVGVtcGxhdGVcIj5cbiAgICAgICAgICAgIHt7cGFuZWwuY29sbGFwc2VkPyAnZXhwYW5kX21vcmUnOidleHBhbmRfbGVzcyd9fVxuICAgICAgICA8L2lneC1pY29uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG4iXX0=
285
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXhwYW5zaW9uLXBhbmVsLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZXhwYW5zaW9uLXBhbmVsL2V4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2V4cGFuc2lvbi1wYW5lbC9leHBhbnNpb24tcGFuZWwtaGVhZGVyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBRVQsVUFBVSxFQUNWLFdBQVcsRUFDWCxZQUFZLEVBQ1osS0FBSyxFQUNMLElBQUksRUFDSixZQUFZLEVBQ1osTUFBTSxFQUNOLFlBQVksRUFDWixNQUFNLEVBQ04sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQzlFLE9BQU8sRUFBRSw2QkFBNkIsRUFBOEQsTUFBTSwwQkFBMEIsQ0FBQztBQUNySSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxJQUFJLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQzs7QUFFdkM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQ0FBZ0MsR0FBRyxNQUFNLENBQUM7SUFDbkQsSUFBSSxFQUFFLE1BQU07SUFDWixJQUFJLEVBQUUsTUFBTTtJQUNaLEtBQUssRUFBRSxPQUFPO0NBQ2pCLENBQUMsQ0FBQztBQVVILE1BQU0sT0FBTyxnQ0FBZ0M7SUFDekM7OztPQUdHO0lBQ0gsSUFBVyxPQUFPO1FBQ2QsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsYUFBYSxJQUFL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QyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs7c0JBQzNDLFlBQVk7dUJBQUMsT0FBTyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWlCMUIsU0FBUztzQkFEZixZQUFZO3VCQUFDLHVCQUF1QixFQUFFLENBQUMsUUFBUSxDQUFDO2dCQWN6QyxVQUFVO3NCQURoQixZQUFZO3VCQUFDLHFCQUFxQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBDb21wb25lbnQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsXG4gICAgSW5wdXQsXG4gICAgSG9zdCxcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgT3V0cHV0LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBJbmplY3QsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWd4RXhwYW5zaW9uUGFuZWxJY29uRGlyZWN0aXZlIH0gZnJvbSAnLi9leHBhbnNpb24tcGFuZWwuZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBJR1hfRVhQQU5TSU9OX1BBTkVMX0NPTVBPTkVOVCwgSWd4RXhwYW5zaW9uUGFuZWxCYXNlLCBJRXhwYW5zaW9uUGFuZWxDYW5jZWxhYmxlRXZlbnRBcmdzICB9IGZyb20gJy4vZXhwYW5zaW9uLXBhbmVsLmNvbW1vbic7XG5pbXBvcnQgeyBta2VudW0gfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IElneEljb25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IE5nSWYgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vKipcbiAqIEBoaWRkZW5cbiAqL1xuZXhwb3J0IGNvbnN0IEV4cGFuc2lvblBhbmVsSGVhZGVySWNvblBvc2l0aW9uID0gbWtlbnVtKHtcbiAgICBMRUZUOiAnbGVmdCcsXG4gICAgTk9ORTogJ25vbmUnLFxuICAgIFJJR0hUOiAncmlnaHQnXG59KTtcbmV4cG9ydCB0eXBlIEV4cGFuc2lvblBhbmVsSGVhZGVySWNvblBvc2l0aW9uID0gKHR5cGVvZiBFeHBhbnNpb25QYW5lbEhlYWRlckljb25Qb3NpdGlvbilba2V5b2YgdHlwZW9mIEV4cGFuc2lvblBhbmVsSGVhZGVySWNvblBvc2l0aW9uXTtcblxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2V4cGFuc2lvbi1wYW5lbC1oZWFkZXIuY29tcG9uZW50Lmh0bWwnLFxuICAgIHN0YW5kYWxvbmU6IHRydWUsXG4gICAgaW1wb3J0czogW05nSWYsIElneEljb25Db21wb25lbnRdXG59KVxuZXhwb3J0IGNsYXNzIElneEV4cGFuc2lvblBhbmVsSGVhZGVyQ29tcG9uZW50IHtcbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBgaWd4LWV4cGFuc2lvbi1wYW5lbC1pY29uYCBlbGVtZW50O1xuICAgICAqIElmIGBpY29uUG9zaXRpb25gIGlzIGBOT05FYCAtIHJldHVybiBudWxsO1xuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaWNvblJlZigpOiBFbGVtZW50UmVmIHtcbiAgICAgICAgY29uc3QgcmVuZGVyZWRUZW1wbGF0ZSA9IHRoaXMuY3VzdG9tSWNvblJlZiAgPz8gdGhpcy5kZWZhdWx0SWNvblJlZjtcbiAgICAgICAgcmV0dXJuIHRoaXMuaWNvblBvc2l0aW9uICE9PSBFeHBhbnNpb25QYW5lbEhlYWRlckljb25Qb3NpdGlvbi5OT05FID8gcmVuZGVyZWRUZW1wbGF0ZSA6IG51bGw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGQoSWd4RXhwYW5zaW9uUGFuZWxJY29uRGlyZWN0aXZlKVxuICAgIHB1YmxpYyBzZXQgaWNvblRlbXBsYXRlKHZhbDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9pY29uVGVtcGxhdGUgPSB2YWw7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaWNvblRlbXBsYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faWNvblRlbXBsYXRlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB0aGUgYGFyaWEtbGV2ZWxgIGF0dHJpYnV0ZSBvZiB0aGUgaGVhZGVyXG4gICAgICogR2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICBjb25zdCBjdXJyZW50QXJpYUxldmVsID0gdGhpcy5wYW5lbC5oZWFkZXIubHY7XG4gICAgICogYGBgXG4gICAgICogU2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICB0aGlzLnBhbmVsLmhlYWRlci5sdiA9ICc1JztcbiAgICAgKiBgYGBcbiAgICAgKiBgYGBodG1sXG4gICAgICogIDxpZ3gtZXhwYW5zaW9uLXBhbmVsLWhlYWRlciBbbHZdPVwibXlDdXN0b21MZXZlbFwiPjwvaWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdhdHRyLmFyaWEtbGV2ZWwnKVxuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIGx2ID0gJzMnO1xuXG4gICAgLyoqXG4gICAgICogR2V0cy9zZXRzIHRoZSBgcm9sZWAgYXR0cmlidXRlIG9mIHRoZSBoZWFkZXJcbiAgICAgKiBHZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IGN1cnJlbnRSb2xlID0gdGhpcy5wYW5lbC5oZWFkZXIucm9sZTtcbiAgICAgKiBgYGBcbiAgICAgKiBTZXRcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIHRoaXMucGFuZWwuaGVhZGVyLnJvbGUgPSAnNSc7XG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgW3JvbGVdPVwiJ2N1c3RvbSdcIj48L2lneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnYXR0ci5yb2xlJylcbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyByb2xlID0gJ2hlYWRpbmcnO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgY29udHJvbHMoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucGFuZWwuaWQ7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGlubmVyRWxlbWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmNoaWxkcmVuWzBdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMvc2V0cyB0aGUgcG9zaXRpb24gb2YgdGhlIGV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgZXhwYW5kL2NvbGxhcHNlIGljb25cbiAgICAgKiBBY2NlcHRzIGBsZWZ0YCwgYHJpZ2h0YCBvciBgbm9uZWBcbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIGNvbnN0IGN1cnJlbnRJY29uUG9zaXRpb24gPSB0aGlzLnBhbmVsLmhlYWRlci5pY29uUG9zaXRpb247XG4gICAgICogYGBgXG4gICAgICogU2V0XG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICB0aGlzLnBhbmVsLmhlYWRlci5pY29uUG9zaXRpb24gPSAnbGVmdCc7XG4gICAgICogYGBgXG4gICAgICogYGBgaHRtbFxuICAgICAqICA8aWd4LWV4cGFuc2lvbi1wYW5lbC1oZWFkZXIgW2ljb25Qb3NpdGlvbl09XCIncmlnaHQnXCI+PC9pZ3gtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBpY29uUG9zaXRpb246IEV4cGFuc2lvblBhbmVsSGVhZGVySWNvblBvc2l0aW9uID0gRXhwYW5zaW9uUGFuZWxIZWFkZXJJY29uUG9zaXRpb24uTEVGVDtcblxuICAgIC8qKlxuICAgICAqIEVtaXR0ZWQgd2hlbmV2ZXIgYSB1c2VyIGludGVyYWN0cyB3aXRoIHRoZSBoZWFkZXIgaG9zdFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgaGFuZGxlSW50ZXJhY3Rpb24oZXZlbnQ6IElFeHBhbnNpb25QYW5lbENhbmNlbGFibGVFdmVudEFyZ3MpIHtcbiAgICAgKiAgLi4uXG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIChpbnRlcmFjdGlvbik9XCJoYW5kbGVJbnRlcmFjdGlvbigkZXZlbnQpXCI+XG4gICAgICogICAgICAuLi5cbiAgICAgKiAgPC9pZ3gtZXhwYW5zaW9uLXBhbmVsLWhlYWRlcj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgaW50ZXJhY3Rpb24gPSBuZXcgRXZlbnRFbWl0dGVyPElFeHBhbnNpb25QYW5lbENhbmNlbGFibGVFdmVudEFyZ3MgPigpO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWV4cGFuc2lvbi1wYW5lbF9faGVhZGVyJylcbiAgICBwdWJsaWMgY3NzQ2xhc3MgPSAnaWd4LWV4cGFuc2lvbi1wYW5lbF9faGVhZGVyJztcblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1leHBhbnNpb24tcGFuZWxfX2hlYWRlci0tZXhwYW5kZWQnKVxuICAgIHB1YmxpYyBnZXQgaXNFeHBhbmRlZCgpIHtcbiAgICAgICAgcmV0dXJuICF0aGlzLnBhbmVsLmNvbGxhcHNlZDtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzL3NldHMgdGhlIHdoZXRoZXIgdGhlIGhlYWRlciBpcyBkaXNhYmxlZFxuICAgICAqIFdoZW4gZGlzYWJsZWQsIHRoZSBoZWFkZXIgd2lsbCBub3QgaGFuZGxlIHVzZXIgZXZlbnRzIGFuZCB3aWxsIHN0b3AgdGhlaXIgcHJvcGFnYXRpb25cbiAgICAgKlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgY29uc3QgaXNEaXNhYmxlZCA9IHRoaXMucGFuZWwuaGVhZGVyLmRpc2FibGVkO1xuICAgICAqIGBgYFxuICAgICAqIFNldFxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgdGhpcy5wYW5lbC5oZWFkZXIuZGlzYWJsZWQgPSB0cnVlO1xuICAgICAqIGBgYFxuICAgICAqIGBgYGh0bWxcbiAgICAgKiAgPGlneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyIFtkaXNhYmxlZF09XCJ0cnVlXCI+XG4gICAgICogICAgIC4uLlxuICAgICAqICA8L2lneC1leHBhbnNpb24tcGFuZWwtaGVhZGVyPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtZXhwYW5zaW9uLXBhbmVsLS1kaXNhYmxlZCcpXG4gICAgcHVibGljIGdldCBkaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgZGlzYWJsZWQodmFsOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gdmFsO1xuICAgICAgICBpZiAodmFsKSB7XG4gICAgICAgICAgICAvLyBWLlMuIEp1bmUgMTF0aCwgMjAyMTogIzk2OTYgVGFiSW5kZXggc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiBwYW5lbCBpcyBkaXNhYmxlZFxuICAgICAgICAgICAgZGVsZXRlIHRoaXMudGFiSW5kZXg7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRhYkluZGV4ID0gMDtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBDb250ZW50Q2hpbGQoSWd4RXhwYW5zaW9uUGFuZWxJY29uRGlyZWN0aXZlLCB7IHJlYWQ6IEVsZW1lbnRSZWYgfSlcbiAgICBwcml2YXRlIGN1c3RvbUljb25SZWY6IEVsZW1lbnRSZWY7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBAVmlld0NoaWxkKElneEljb25Db21wb25lbnQsIHsgcmVhZDogRWxlbWVudFJlZiB9KVxuICAgIHByaXZhdGUgZGVmYXVsdEljb25SZWY6IEVsZW1lbnRSZWY7XG5cbiAgICAvKipcbiAgICAgKiBTZXRzL2dldHMgdGhlIGBpZGAgb2YgdGhlIGV4cGFuc2lvbiBwYW5lbCBoZWFkZXIuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIGxldCBwYW5lbEhlYWRlcklkID0gIHRoaXMucGFuZWwuaGVhZGVyLmlkO1xuICAgICAqIGBgYFxuICAgICAqXG4gICAgICogQG1lbWJlcm9mIElneEV4cGFuc2lvblBhbmVsQ29tcG9uZW50XG4gICAgICovXG4gICAgcHVibGljIGlkID0gJyc7XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgdGFiSW5kZXggPSAwO1xuXG4gICAgLy8gcHJvcGVydGllcyBzZWN0aW9uXG4gICAgcHJpdmF0ZSBfaWNvblRlbXBsYXRlID0gZmFsc2U7XG4gICAgcHJpdmF0ZSBfZGlzYWJsZWQgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKEBIb3N0KCkgQEluamVjdChJR1hfRVhQQU5TSU9OX1BBTkVMX0NPTVBPTkVOVCkgcHVibGljIHBhbmVsOiBJZ3hFeHBhbnNpb25QYW5lbEJhc2UsIHB1YmxpYyBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICAgICAgICAgICAgICAgIHB1YmxpYyBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHRoaXMuaWQgPSBgJHt0aGlzLnBhbmVsLmlkfS1oZWFkZXJgO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkVudGVyJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLlNwYWNlJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLlNwYWNlYmFyJywgWyckZXZlbnQnXSlcbiAgICBASG9zdExpc3RlbmVyKCdjbGljaycsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uQWN0aW9uKGV2dD86IEV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGV2ZW50QXJnczogSUV4cGFuc2lvblBhbmVsQ2FuY2VsYWJsZUV2ZW50QXJncyAgPSB7IGV2ZW50OiBldnQsIG93bmVyOiB0aGlzLnBhbmVsLCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgIHRoaXMuaW50ZXJhY3Rpb24uZW1pdChldmVudEFyZ3MpO1xuICAgICAgICBpZiAoZXZlbnRBcmdzLmNhbmNlbCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucGFuZWwudG9nZ2xlKGV2dCk7XG4gICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2tleWRvd24uQWx0LkFycm93RG93bicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9wZW5QYW5lbChldmVudDogS2V5Ym9hcmRFdmVudCkge1xuICAgICAgICBpZiAoZXZlbnQuYWx0S2V5KSB7XG4gICAgICAgICAgICBjb25zdCBldmVudEFyZ3M6IElFeHBhbnNpb25QYW5lbENhbmNlbGFibGVFdmVudEFyZ3MgID0geyBldmVudCwgb3duZXI6IHRoaXMucGFuZWwsIGNhbmNlbDogZmFsc2UgfTtcbiAgICAgICAgICAgIHRoaXMuaW50ZXJhY3Rpb24uZW1pdChldmVudEFyZ3MpO1xuICAgICAgICAgICAgaWYgKGV2ZW50QXJncy5jYW5jZWwgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnBhbmVsLmV4cGFuZChldmVudCk7XG4gICAgICAgIH1cbiAgICAgfVxuXG4gICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duLkFsdC5BcnJvd1VwJywgWyckZXZlbnQnXSlcbiAgICAgcHVibGljIGNsb3NlUGFuZWwoZXZlbnQ6IEtleWJvYXJkRXZlbnQpIHtcbiAgICAgICAgaWYgKGV2ZW50LmFsdEtleSkge1xuICAgICAgICAgICAgY29uc3QgZXZlbnRBcmdzOiBJRXhwYW5zaW9uUGFuZWxDYW5jZWxhYmxlRXZlbnRBcmdzICA9IHsgZXZlbnQsIG93bmVyOiB0aGlzLnBhbmVsLCBjYW5jZWw6IGZhbHNlIH07XG4gICAgICAgICAgICB0aGlzLmludGVyYWN0aW9uLmVtaXQoZXZlbnRBcmdzKTtcbiAgICAgICAgICAgIGlmIChldmVudEFyZ3MuY2FuY2VsID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5wYW5lbC5jb2xsYXBzZShldmVudCk7XG4gICAgICAgIH1cbiAgICAgfVxuXG4gICAgIC8qKlxuICAgICAgKiBAaGlkZGVuXG4gICAgICAqL1xuICAgICBwdWJsaWMgZ2V0IGljb25Qb3NpdGlvbkNsYXNzKCk6IHN0cmluZyB7XG4gICAgICAgIHN3aXRjaCAodGhpcy5pY29uUG9zaXRpb24pIHtcbiAgICAgICAgICAgIGNhc2UgKEV4cGFuc2lvblBhbmVsSGVhZGVySWNvblBvc2l0aW9uLkxFRlQpOlxuICAgICAgICAgICAgICAgIHJldHVybiBgaWd4LWV4cGFuc2lvbi1wYW5lbF9faGVhZGVyLWljb24tLXN0YXJ0YDtcbiAgICAgICAgICAgIGNhc2UgKEV4cGFuc2lvblBhbmVsSGVhZGVySWNvblBvc2l0aW9uLlJJR0hUKTpcbiAgICAgICAgICAgICAgICByZXR1cm4gYGlneC1leHBhbnNpb24tcGFuZWxfX2hlYWRlci1pY29uLS1lbmRgO1xuICAgICAgICAgICAgY2FzZSAoRXhwYW5zaW9uUGFuZWxIZWFkZXJJY29uUG9zaXRpb24uTk9ORSk6XG4gICAgICAgICAgICAgICAgcmV0dXJuIGBpZ3gtZXhwYW5zaW9uLXBhbmVsX19oZWFkZXItaWNvbi0tbm9uZWA7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgfVxuICAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaWd4LWV4cGFuc2lvbi1wYW5lbF9faGVhZGVyLWlubmVyXCIgW2F0dHIudGFiaW5kZXhdPVwidGFiSW5kZXhcIiByb2xlPVwiYnV0dG9uXCIgW2F0dHIuaWRdPVwiaWRcIlxuW2F0dHIuYXJpYS1kaXNhYmxlZF09XCJkaXNhYmxlZFwiIFthdHRyLmFyaWEtZXhwYW5kZWRdPVwiaXNFeHBhbmRlZFwiIFthdHRyLmFyaWEtY29udHJvbHNdPVwiY29udHJvbHNcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaWd4LWV4cGFuc2lvbi1wYW5lbF9fdGl0bGUtd3JhcHBlclwiPlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJpZ3gtZXhwYW5zaW9uLXBhbmVsLXRpdGxlXCI+PC9uZy1jb250ZW50PlxuICAgICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJpZ3gtZXhwYW5zaW9uLXBhbmVsLWRlc2NyaXB0aW9uXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8ZGl2IFtjbGFzc109XCJpY29uUG9zaXRpb25DbGFzc1wiPlxuICAgICAgICA8bmctY29udGVudCAqbmdJZj1cImljb25UZW1wbGF0ZVwiIHNlbGVjdD1cImlneC1leHBhbnNpb24tcGFuZWwtaWNvblwiPjwvbmctY29udGVudD5cbiAgICAgICAgPGlneC1pY29uICpuZ0lmPVwiIWljb25UZW1wbGF0ZVwiPlxuICAgICAgICAgICAge3twYW5lbC5jb2xsYXBzZWQ/ICdleHBhbmRfbW9yZSc6J2V4cGFuZF9sZXNzJ319XG4gICAgICAgIDwvaWd4LWljb24+XG4gICAgPC9kaXY+XG48L2Rpdj5cbiJdfQ==