@angular/material-experimental 14.0.0-next.7 → 14.0.0-next.8

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 (62) hide show
  1. package/esm2020/mdc-checkbox/testing/checkbox-harness.mjs +3 -2
  2. package/esm2020/mdc-chips/chip-edit-input.mjs +2 -2
  3. package/esm2020/mdc-core/option/option.mjs +2 -2
  4. package/esm2020/mdc-form-field/form-field.mjs +7 -4
  5. package/esm2020/mdc-menu/menu.mjs +3 -3
  6. package/esm2020/mdc-radio/testing/radio-harness.mjs +3 -2
  7. package/esm2020/mdc-select/select.mjs +2 -2
  8. package/esm2020/mdc-slide-toggle/testing/slide-toggle-harness.mjs +3 -2
  9. package/esm2020/mdc-table/table.mjs +2 -2
  10. package/esm2020/mdc-tabs/tab-header.mjs +2 -2
  11. package/esm2020/mdc-tabs/tab-nav-bar/tab-nav-bar.mjs +2 -2
  12. package/esm2020/menubar/menubar-item.mjs +15 -1
  13. package/esm2020/version.mjs +1 -1
  14. package/fesm2015/material-experimental.mjs +1 -1
  15. package/fesm2015/material-experimental.mjs.map +1 -1
  16. package/fesm2015/mdc-checkbox/testing.mjs +2 -1
  17. package/fesm2015/mdc-checkbox/testing.mjs.map +1 -1
  18. package/fesm2015/mdc-chips.mjs +1 -1
  19. package/fesm2015/mdc-chips.mjs.map +1 -1
  20. package/fesm2015/mdc-core.mjs +2 -2
  21. package/fesm2015/mdc-core.mjs.map +1 -1
  22. package/fesm2015/mdc-form-field.mjs +6 -3
  23. package/fesm2015/mdc-form-field.mjs.map +1 -1
  24. package/fesm2015/mdc-menu.mjs +2 -2
  25. package/fesm2015/mdc-menu.mjs.map +1 -1
  26. package/fesm2015/mdc-radio/testing.mjs +2 -1
  27. package/fesm2015/mdc-radio/testing.mjs.map +1 -1
  28. package/fesm2015/mdc-select.mjs +2 -2
  29. package/fesm2015/mdc-slide-toggle/testing.mjs +2 -1
  30. package/fesm2015/mdc-slide-toggle/testing.mjs.map +1 -1
  31. package/fesm2015/mdc-table.mjs +2 -2
  32. package/fesm2015/mdc-table.mjs.map +1 -1
  33. package/fesm2015/mdc-tabs.mjs +4 -4
  34. package/fesm2015/mdc-tabs.mjs.map +1 -1
  35. package/fesm2015/menubar.mjs +15 -0
  36. package/fesm2015/menubar.mjs.map +1 -1
  37. package/fesm2020/material-experimental.mjs +1 -1
  38. package/fesm2020/material-experimental.mjs.map +1 -1
  39. package/fesm2020/mdc-checkbox/testing.mjs +2 -1
  40. package/fesm2020/mdc-checkbox/testing.mjs.map +1 -1
  41. package/fesm2020/mdc-chips.mjs +1 -1
  42. package/fesm2020/mdc-chips.mjs.map +1 -1
  43. package/fesm2020/mdc-core.mjs +2 -2
  44. package/fesm2020/mdc-core.mjs.map +1 -1
  45. package/fesm2020/mdc-form-field.mjs +6 -3
  46. package/fesm2020/mdc-form-field.mjs.map +1 -1
  47. package/fesm2020/mdc-menu.mjs +2 -2
  48. package/fesm2020/mdc-menu.mjs.map +1 -1
  49. package/fesm2020/mdc-radio/testing.mjs +2 -1
  50. package/fesm2020/mdc-radio/testing.mjs.map +1 -1
  51. package/fesm2020/mdc-select.mjs +2 -2
  52. package/fesm2020/mdc-slide-toggle/testing.mjs +2 -1
  53. package/fesm2020/mdc-slide-toggle/testing.mjs.map +1 -1
  54. package/fesm2020/mdc-table.mjs +2 -2
  55. package/fesm2020/mdc-table.mjs.map +1 -1
  56. package/fesm2020/mdc-tabs.mjs +4 -4
  57. package/fesm2020/mdc-tabs.mjs.map +1 -1
  58. package/fesm2020/menubar.mjs +14 -0
  59. package/fesm2020/menubar.mjs.map +1 -1
  60. package/mdc-form-field/form-field.d.ts +6 -3
  61. package/menubar/menubar-item.d.ts +1 -0
  62. package/package.json +3 -3
@@ -29,7 +29,8 @@ export class MatCheckboxHarness extends _MatCheckboxHarnessBase {
29
29
  // We want to provide a filter option for "name" because the name of the checkbox is
30
30
  // only set on the underlying input. This means that it's not possible for developers
31
31
  // to retrieve the harness of a specific checkbox with name through a CSS selector.
32
- .addOption('name', options.name, async (harness, name) => (await harness.getName()) === name));
32
+ .addOption('name', options.name, async (harness, name) => (await harness.getName()) === name)
33
+ .addOption('checked', options.checked, async (harness, checked) => (await harness.isChecked()) == checked));
33
34
  }
34
35
  async toggle() {
35
36
  const elToClick = (await this.isDisabled()) ? this._inputContainer() : this._input();
@@ -37,4 +38,4 @@ export class MatCheckboxHarness extends _MatCheckboxHarnessBase {
37
38
  }
38
39
  }
39
40
  MatCheckboxHarness.hostSelector = '.mat-mdc-checkbox';
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1leHBlcmltZW50YWwvbWRjLWNoZWNrYm94L3Rlc3RpbmcvY2hlY2tib3gtaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQXlCLHVCQUF1QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFFbkcsc0VBQXNFO0FBQ3RFLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSx1QkFBdUI7SUFBL0Q7O1FBNEJZLFdBQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLFdBQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BDLG9CQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQU03RCxDQUFDO0lBakNDOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQWtDLEVBQUU7UUFDOUMsT0FBTyxDQUNMLElBQUksZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxDQUFDO2FBQzlDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUNwRCxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUM5RDtZQUNELG9GQUFvRjtZQUNwRixxRkFBcUY7WUFDckYsbUZBQW1GO2FBQ2xGLFNBQVMsQ0FDUixNQUFNLEVBQ04sT0FBTyxDQUFDLElBQUksRUFDWixLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FDNUQsQ0FDSixDQUFDO0lBQ0osQ0FBQztJQU1ELEtBQUssQ0FBQyxNQUFNO1FBQ1YsTUFBTSxTQUFTLEdBQUcsQ0FBQyxNQUFNLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNyRixPQUFPLENBQUMsTUFBTSxTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztJQUNuQyxDQUFDOztBQWxDTSwrQkFBWSxHQUFHLG1CQUFtQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7SGFybmVzc1ByZWRpY2F0ZX0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Rlc3RpbmcnO1xuaW1wb3J0IHtDaGVja2JveEhhcm5lc3NGaWx0ZXJzLCBfTWF0Q2hlY2tib3hIYXJuZXNzQmFzZX0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gvdGVzdGluZyc7XG5cbi8qKiBIYXJuZXNzIGZvciBpbnRlcmFjdGluZyB3aXRoIGEgTURDLWJhc2VkIG1hdC1jaGVja2JveCBpbiB0ZXN0cy4gKi9cbmV4cG9ydCBjbGFzcyBNYXRDaGVja2JveEhhcm5lc3MgZXh0ZW5kcyBfTWF0Q2hlY2tib3hIYXJuZXNzQmFzZSB7XG4gIHN0YXRpYyBob3N0U2VsZWN0b3IgPSAnLm1hdC1tZGMtY2hlY2tib3gnO1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgYEhhcm5lc3NQcmVkaWNhdGVgIHRoYXQgY2FuIGJlIHVzZWQgdG8gc2VhcmNoIGZvciBhIGNoZWNrYm94IHdpdGggc3BlY2lmaWMgYXR0cmlidXRlcy5cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9ucyBmb3IgbmFycm93aW5nIHRoZSBzZWFyY2g6XG4gICAqICAgLSBgc2VsZWN0b3JgIGZpbmRzIGEgY2hlY2tib3ggd2hvc2UgaG9zdCBlbGVtZW50IG1hdGNoZXMgdGhlIGdpdmVuIHNlbGVjdG9yLlxuICAgKiAgIC0gYGxhYmVsYCBmaW5kcyBhIGNoZWNrYm94IHdpdGggc3BlY2lmaWMgbGFiZWwgdGV4dC5cbiAgICogICAtIGBuYW1lYCBmaW5kcyBhIGNoZWNrYm94IHdpdGggc3BlY2lmaWMgbmFtZS5cbiAgICogQHJldHVybiBhIGBIYXJuZXNzUHJlZGljYXRlYCBjb25maWd1cmVkIHdpdGggdGhlIGdpdmVuIG9wdGlvbnMuXG4gICAqL1xuICBzdGF0aWMgd2l0aChvcHRpb25zOiBDaGVja2JveEhhcm5lc3NGaWx0ZXJzID0ge30pOiBIYXJuZXNzUHJlZGljYXRlPE1hdENoZWNrYm94SGFybmVzcz4ge1xuICAgIHJldHVybiAoXG4gICAgICBuZXcgSGFybmVzc1ByZWRpY2F0ZShNYXRDaGVja2JveEhhcm5lc3MsIG9wdGlvbnMpXG4gICAgICAgIC5hZGRPcHRpb24oJ2xhYmVsJywgb3B0aW9ucy5sYWJlbCwgKGhhcm5lc3MsIGxhYmVsKSA9PlxuICAgICAgICAgIEhhcm5lc3NQcmVkaWNhdGUuc3RyaW5nTWF0Y2hlcyhoYXJuZXNzLmdldExhYmVsVGV4dCgpLCBsYWJlbCksXG4gICAgICAgIClcbiAgICAgICAgLy8gV2Ugd2FudCB0byBwcm92aWRlIGEgZmlsdGVyIG9wdGlvbiBmb3IgXCJuYW1lXCIgYmVjYXVzZSB0aGUgbmFtZSBvZiB0aGUgY2hlY2tib3ggaXNcbiAgICAgICAgLy8gb25seSBzZXQgb24gdGhlIHVuZGVybHlpbmcgaW5wdXQuIFRoaXMgbWVhbnMgdGhhdCBpdCdzIG5vdCBwb3NzaWJsZSBmb3IgZGV2ZWxvcGVyc1xuICAgICAgICAvLyB0byByZXRyaWV2ZSB0aGUgaGFybmVzcyBvZiBhIHNwZWNpZmljIGNoZWNrYm94IHdpdGggbmFtZSB0aHJvdWdoIGEgQ1NTIHNlbGVjdG9yLlxuICAgICAgICAuYWRkT3B0aW9uKFxuICAgICAgICAgICduYW1lJyxcbiAgICAgICAgICBvcHRpb25zLm5hbWUsXG4gICAgICAgICAgYXN5bmMgKGhhcm5lc3MsIG5hbWUpID0+IChhd2FpdCBoYXJuZXNzLmdldE5hbWUoKSkgPT09IG5hbWUsXG4gICAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9pbnB1dCA9IHRoaXMubG9jYXRvckZvcignaW5wdXQnKTtcbiAgcHJvdGVjdGVkIF9sYWJlbCA9IHRoaXMubG9jYXRvckZvcignbGFiZWwnKTtcbiAgcHJpdmF0ZSBfaW5wdXRDb250YWluZXIgPSB0aGlzLmxvY2F0b3JGb3IoJy5tZGMtY2hlY2tib3gnKTtcblxuICBhc3luYyB0b2dnbGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZWxUb0NsaWNrID0gKGF3YWl0IHRoaXMuaXNEaXNhYmxlZCgpKSA/IHRoaXMuX2lucHV0Q29udGFpbmVyKCkgOiB0aGlzLl9pbnB1dCgpO1xuICAgIHJldHVybiAoYXdhaXQgZWxUb0NsaWNrKS5jbGljaygpO1xuICB9XG59XG4iXX0=
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hlY2tib3gtaGFybmVzcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1leHBlcmltZW50YWwvbWRjLWNoZWNrYm94L3Rlc3RpbmcvY2hlY2tib3gtaGFybmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7QUFFSCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQXlCLHVCQUF1QixFQUFDLE1BQU0sb0NBQW9DLENBQUM7QUFFbkcsc0VBQXNFO0FBQ3RFLE1BQU0sT0FBTyxrQkFBbUIsU0FBUSx1QkFBdUI7SUFBL0Q7O1FBaUNZLFdBQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ2xDLFdBQU0sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3BDLG9CQUFlLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQU03RCxDQUFDO0lBdENDOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQWtDLEVBQUU7UUFDOUMsT0FBTyxDQUNMLElBQUksZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsT0FBTyxDQUFDO2FBQzlDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUNwRCxnQkFBZ0IsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUM5RDtZQUNELG9GQUFvRjtZQUNwRixxRkFBcUY7WUFDckYsbUZBQW1GO2FBQ2xGLFNBQVMsQ0FDUixNQUFNLEVBQ04sT0FBTyxDQUFDLElBQUksRUFDWixLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxLQUFLLElBQUksQ0FDNUQ7YUFDQSxTQUFTLENBQ1IsU0FBUyxFQUNULE9BQU8sQ0FBQyxPQUFPLEVBQ2YsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUMsTUFBTSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsSUFBSSxPQUFPLENBQ25FLENBQ0osQ0FBQztJQUNKLENBQUM7SUFNRCxLQUFLLENBQUMsTUFBTTtRQUNWLE1BQU0sU0FBUyxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDckYsT0FBTyxDQUFDLE1BQU0sU0FBUyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDbkMsQ0FBQzs7QUF2Q00sK0JBQVksR0FBRyxtQkFBbUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0hhcm5lc3NQcmVkaWNhdGV9IGZyb20gJ0Bhbmd1bGFyL2Nkay90ZXN0aW5nJztcbmltcG9ydCB7Q2hlY2tib3hIYXJuZXNzRmlsdGVycywgX01hdENoZWNrYm94SGFybmVzc0Jhc2V9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2NoZWNrYm94L3Rlc3RpbmcnO1xuXG4vKiogSGFybmVzcyBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBhIE1EQy1iYXNlZCBtYXQtY2hlY2tib3ggaW4gdGVzdHMuICovXG5leHBvcnQgY2xhc3MgTWF0Q2hlY2tib3hIYXJuZXNzIGV4dGVuZHMgX01hdENoZWNrYm94SGFybmVzc0Jhc2Uge1xuICBzdGF0aWMgaG9zdFNlbGVjdG9yID0gJy5tYXQtbWRjLWNoZWNrYm94JztcblxuICAvKipcbiAgICogR2V0cyBhIGBIYXJuZXNzUHJlZGljYXRlYCB0aGF0IGNhbiBiZSB1c2VkIHRvIHNlYXJjaCBmb3IgYSBjaGVja2JveCB3aXRoIHNwZWNpZmljIGF0dHJpYnV0ZXMuXG4gICAqIEBwYXJhbSBvcHRpb25zIE9wdGlvbnMgZm9yIG5hcnJvd2luZyB0aGUgc2VhcmNoOlxuICAgKiAgIC0gYHNlbGVjdG9yYCBmaW5kcyBhIGNoZWNrYm94IHdob3NlIGhvc3QgZWxlbWVudCBtYXRjaGVzIHRoZSBnaXZlbiBzZWxlY3Rvci5cbiAgICogICAtIGBsYWJlbGAgZmluZHMgYSBjaGVja2JveCB3aXRoIHNwZWNpZmljIGxhYmVsIHRleHQuXG4gICAqICAgLSBgbmFtZWAgZmluZHMgYSBjaGVja2JveCB3aXRoIHNwZWNpZmljIG5hbWUuXG4gICAqIEByZXR1cm4gYSBgSGFybmVzc1ByZWRpY2F0ZWAgY29uZmlndXJlZCB3aXRoIHRoZSBnaXZlbiBvcHRpb25zLlxuICAgKi9cbiAgc3RhdGljIHdpdGgob3B0aW9uczogQ2hlY2tib3hIYXJuZXNzRmlsdGVycyA9IHt9KTogSGFybmVzc1ByZWRpY2F0ZTxNYXRDaGVja2JveEhhcm5lc3M+IHtcbiAgICByZXR1cm4gKFxuICAgICAgbmV3IEhhcm5lc3NQcmVkaWNhdGUoTWF0Q2hlY2tib3hIYXJuZXNzLCBvcHRpb25zKVxuICAgICAgICAuYWRkT3B0aW9uKCdsYWJlbCcsIG9wdGlvbnMubGFiZWwsIChoYXJuZXNzLCBsYWJlbCkgPT5cbiAgICAgICAgICBIYXJuZXNzUHJlZGljYXRlLnN0cmluZ01hdGNoZXMoaGFybmVzcy5nZXRMYWJlbFRleHQoKSwgbGFiZWwpLFxuICAgICAgICApXG4gICAgICAgIC8vIFdlIHdhbnQgdG8gcHJvdmlkZSBhIGZpbHRlciBvcHRpb24gZm9yIFwibmFtZVwiIGJlY2F1c2UgdGhlIG5hbWUgb2YgdGhlIGNoZWNrYm94IGlzXG4gICAgICAgIC8vIG9ubHkgc2V0IG9uIHRoZSB1bmRlcmx5aW5nIGlucHV0LiBUaGlzIG1lYW5zIHRoYXQgaXQncyBub3QgcG9zc2libGUgZm9yIGRldmVsb3BlcnNcbiAgICAgICAgLy8gdG8gcmV0cmlldmUgdGhlIGhhcm5lc3Mgb2YgYSBzcGVjaWZpYyBjaGVja2JveCB3aXRoIG5hbWUgdGhyb3VnaCBhIENTUyBzZWxlY3Rvci5cbiAgICAgICAgLmFkZE9wdGlvbihcbiAgICAgICAgICAnbmFtZScsXG4gICAgICAgICAgb3B0aW9ucy5uYW1lLFxuICAgICAgICAgIGFzeW5jIChoYXJuZXNzLCBuYW1lKSA9PiAoYXdhaXQgaGFybmVzcy5nZXROYW1lKCkpID09PSBuYW1lLFxuICAgICAgICApXG4gICAgICAgIC5hZGRPcHRpb24oXG4gICAgICAgICAgJ2NoZWNrZWQnLFxuICAgICAgICAgIG9wdGlvbnMuY2hlY2tlZCxcbiAgICAgICAgICBhc3luYyAoaGFybmVzcywgY2hlY2tlZCkgPT4gKGF3YWl0IGhhcm5lc3MuaXNDaGVja2VkKCkpID09IGNoZWNrZWQsXG4gICAgICAgIClcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIF9pbnB1dCA9IHRoaXMubG9jYXRvckZvcignaW5wdXQnKTtcbiAgcHJvdGVjdGVkIF9sYWJlbCA9IHRoaXMubG9jYXRvckZvcignbGFiZWwnKTtcbiAgcHJpdmF0ZSBfaW5wdXRDb250YWluZXIgPSB0aGlzLmxvY2F0b3JGb3IoJy5tZGMtY2hlY2tib3gnKTtcblxuICBhc3luYyB0b2dnbGUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZWxUb0NsaWNrID0gKGF3YWl0IHRoaXMuaXNEaXNhYmxlZCgpKSA/IHRoaXMuX2lucHV0Q29udGFpbmVyKCkgOiB0aGlzLl9pbnB1dCgpO1xuICAgIHJldHVybiAoYXdhaXQgZWxUb0NsaWNrKS5jbGljaygpO1xuICB9XG59XG4iXX0=
@@ -25,7 +25,7 @@ export class MatChipEditInput {
25
25
  return this._elementRef.nativeElement;
26
26
  }
27
27
  setValue(value) {
28
- this.getNativeElement().innerText = value;
28
+ this.getNativeElement().textContent = value;
29
29
  this._moveCursorToEndOfInput();
30
30
  }
31
31
  getValue() {
@@ -57,4 +57,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.6",
57
57
  type: Inject,
58
58
  args: [DOCUMENT]
59
59
  }] }]; } });
60
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1lZGl0LWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsLWV4cGVyaW1lbnRhbC9tZGMtY2hpcHMvY2hpcC1lZGl0LWlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7O0FBRXpDOzs7R0FHRztBQVVILE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsWUFDbUIsV0FBdUIsRUFDTCxTQUFjO1FBRGhDLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ0wsY0FBUyxHQUFULFNBQVMsQ0FBSztJQUNoRCxDQUFDO0lBRUosVUFBVSxDQUFDLFlBQW9CO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7SUFDeEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDMUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzNDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRyxDQUFDO1FBQ25DLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN0QixHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RCLENBQUM7O29IQS9CVSxnQkFBZ0IsNENBR2pCLFFBQVE7d0dBSFAsZ0JBQWdCO2tHQUFoQixnQkFBZ0I7a0JBVDVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsSUFBSSxFQUFFO3dCQUNKLE9BQU8sRUFBRSxxQkFBcUI7d0JBQzlCLE1BQU0sRUFBRSxTQUFTO3dCQUNqQixVQUFVLEVBQUUsSUFBSTt3QkFDaEIsaUJBQWlCLEVBQUUsTUFBTTtxQkFDMUI7aUJBQ0Y7OzBCQUlJLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgdGhhdCBtYWtlcyBhIHNwYW4gZWRpdGFibGUgYW5kIGV4cG9zZXMgZnVuY3Rpb25zIHRvIG1vZGlmeSBhbmQgcmV0cmlldmUgdGhlXG4gKiBlbGVtZW50J3MgY29udGVudHMuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ3NwYW5bbWF0Q2hpcEVkaXRJbnB1dF0nLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ21hdC1jaGlwLWVkaXQtaW5wdXQnLFxuICAgICdyb2xlJzogJ3RleHRib3gnLFxuICAgICd0YWJpbmRleCc6ICctMScsXG4gICAgJ2NvbnRlbnRlZGl0YWJsZSc6ICd0cnVlJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgTWF0Q2hpcEVkaXRJbnB1dCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnQ6IGFueSxcbiAgKSB7fVxuXG4gIGluaXRpYWxpemUoaW5pdGlhbFZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmdldE5hdGl2ZUVsZW1lbnQoKS5mb2N1cygpO1xuICAgIHRoaXMuc2V0VmFsdWUoaW5pdGlhbFZhbHVlKTtcbiAgfVxuXG4gIGdldE5hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBzZXRWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5nZXROYXRpdmVFbGVtZW50KCkuaW5uZXJUZXh0ID0gdmFsdWU7XG4gICAgdGhpcy5fbW92ZUN1cnNvclRvRW5kT2ZJbnB1dCgpO1xuICB9XG5cbiAgZ2V0VmFsdWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXROYXRpdmVFbGVtZW50KCkudGV4dENvbnRlbnQgfHwgJyc7XG4gIH1cblxuICBwcml2YXRlIF9tb3ZlQ3Vyc29yVG9FbmRPZklucHV0KCkge1xuICAgIGNvbnN0IHJhbmdlID0gdGhpcy5fZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHModGhpcy5nZXROYXRpdmVFbGVtZW50KCkpO1xuICAgIHJhbmdlLmNvbGxhcHNlKGZhbHNlKTtcbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkhO1xuICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICBzZWwuYWRkUmFuZ2UocmFuZ2UpO1xuICB9XG59XG4iXX0=
60
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hpcC1lZGl0LWlucHV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL21hdGVyaWFsLWV4cGVyaW1lbnRhbC9tZGMtY2hpcHMvY2hpcC1lZGl0LWlucHV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUM1RCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0saUJBQWlCLENBQUM7O0FBRXpDOzs7R0FHRztBQVVILE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0IsWUFDbUIsV0FBdUIsRUFDTCxTQUFjO1FBRGhDLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ0wsY0FBUyxHQUFULFNBQVMsQ0FBSztJQUNoRCxDQUFDO0lBRUosVUFBVSxDQUFDLFlBQW9CO1FBQzdCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUVELGdCQUFnQjtRQUNkLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7SUFDeEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxLQUFhO1FBQ3BCLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFDNUMsSUFBSSxDQUFDLHVCQUF1QixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDLFdBQVcsSUFBSSxFQUFFLENBQUM7SUFDbkQsQ0FBQztJQUVPLHVCQUF1QjtRQUM3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzNDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQ2xELEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDdEIsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRyxDQUFDO1FBQ25DLEdBQUcsQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUN0QixHQUFHLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3RCLENBQUM7O29IQS9CVSxnQkFBZ0IsNENBR2pCLFFBQVE7d0dBSFAsZ0JBQWdCO2tHQUFoQixnQkFBZ0I7a0JBVDVCLFNBQVM7bUJBQUM7b0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtvQkFDbEMsSUFBSSxFQUFFO3dCQUNKLE9BQU8sRUFBRSxxQkFBcUI7d0JBQzlCLE1BQU0sRUFBRSxTQUFTO3dCQUNqQixVQUFVLEVBQUUsSUFBSTt3QkFDaEIsaUJBQWlCLEVBQUUsTUFBTTtxQkFDMUI7aUJBQ0Y7OzBCQUlJLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0RpcmVjdGl2ZSwgRWxlbWVudFJlZiwgSW5qZWN0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5cbi8qKlxuICogQSBkaXJlY3RpdmUgdGhhdCBtYWtlcyBhIHNwYW4gZWRpdGFibGUgYW5kIGV4cG9zZXMgZnVuY3Rpb25zIHRvIG1vZGlmeSBhbmQgcmV0cmlldmUgdGhlXG4gKiBlbGVtZW50J3MgY29udGVudHMuXG4gKi9cbkBEaXJlY3RpdmUoe1xuICBzZWxlY3RvcjogJ3NwYW5bbWF0Q2hpcEVkaXRJbnB1dF0nLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ21hdC1jaGlwLWVkaXQtaW5wdXQnLFxuICAgICdyb2xlJzogJ3RleHRib3gnLFxuICAgICd0YWJpbmRleCc6ICctMScsXG4gICAgJ2NvbnRlbnRlZGl0YWJsZSc6ICd0cnVlJyxcbiAgfSxcbn0pXG5leHBvcnQgY2xhc3MgTWF0Q2hpcEVkaXRJbnB1dCB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSByZWFkb25seSBfZG9jdW1lbnQ6IGFueSxcbiAgKSB7fVxuXG4gIGluaXRpYWxpemUoaW5pdGlhbFZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmdldE5hdGl2ZUVsZW1lbnQoKS5mb2N1cygpO1xuICAgIHRoaXMuc2V0VmFsdWUoaW5pdGlhbFZhbHVlKTtcbiAgfVxuXG4gIGdldE5hdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG4gIH1cblxuICBzZXRWYWx1ZSh2YWx1ZTogc3RyaW5nKSB7XG4gICAgdGhpcy5nZXROYXRpdmVFbGVtZW50KCkudGV4dENvbnRlbnQgPSB2YWx1ZTtcbiAgICB0aGlzLl9tb3ZlQ3Vyc29yVG9FbmRPZklucHV0KCk7XG4gIH1cblxuICBnZXRWYWx1ZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldE5hdGl2ZUVsZW1lbnQoKS50ZXh0Q29udGVudCB8fCAnJztcbiAgfVxuXG4gIHByaXZhdGUgX21vdmVDdXJzb3JUb0VuZE9mSW5wdXQoKSB7XG4gICAgY29uc3QgcmFuZ2UgPSB0aGlzLl9kb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyh0aGlzLmdldE5hdGl2ZUVsZW1lbnQoKSk7XG4gICAgcmFuZ2UuY29sbGFwc2UoZmFsc2UpO1xuICAgIGNvbnN0IHNlbCA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKSE7XG4gICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIHNlbC5hZGRSYW5nZShyYW5nZSk7XG4gIH1cbn1cbiJdfQ==
@@ -21,7 +21,7 @@ export class MatOption extends _MatOptionBase {
21
21
  }
22
22
  }
23
23
  MatOption.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatOption, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: MAT_OPTION_PARENT_COMPONENT, optional: true }, { token: MAT_OPTGROUP, optional: true }], target: i0.ɵɵFactoryTarget.Component });
24
- MatOption.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "14.0.0-next.6", type: MatOption, selector: "mat-option", host: { attributes: { "role": "option" }, listeners: { "click": "_selectViaInteraction()", "keydown": "_handleKeydown($event)" }, properties: { "attr.tabindex": "_getTabIndex()", "class.mdc-list-item--selected": "selected", "class.mat-mdc-option-multiple": "multiple", "class.mat-mdc-option-active": "active", "class.mdc-list-item--disabled": "disabled", "id": "id", "attr.aria-selected": "_getAriaSelected()", "attr.aria-disabled": "disabled.toString()" }, classAttribute: "mat-mdc-option mat-mdc-focus-indicator mdc-list-item" }, exportAs: ["matOption"], usesInheritance: true, ngImport: i0, template: "<mat-pseudo-checkbox *ngIf=\"multiple\" class=\"mat-mdc-option-pseudo-checkbox\"\n [state]=\"selected ? 'checked' : 'unchecked'\" [disabled]=\"disabled\"></mat-pseudo-checkbox>\n\n<span class=\"mdc-list-item__primary-text\"><ng-content></ng-content></span>\n\n<!-- See a11y notes inside optgroup.ts for context behind this element. -->\n<span class=\"cdk-visually-hidden\" *ngIf=\"group && group._inert\">({{ group.label }})</span>\n\n<div class=\"mat-mdc-option-ripple\" mat-ripple\n [matRippleTrigger]=\"_getHostElement()\"\n [matRippleDisabled]=\"disabled || disableRipple\">\n</div>\n", styles: [".mat-mdc-option{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer;min-height:48px}.mat-mdc-option:focus{outline:none}[dir=rtl] .mat-mdc-option,.mat-mdc-option[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-option::after{display:inline-block;min-height:inherit;content:\"\"}.mat-mdc-option.mdc-list-item--disabled{opacity:.38;cursor:default}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-pseudo-checkbox{margin-right:16px}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox{margin-right:0;margin-left:16px}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit}.cdk-high-contrast-active .mat-mdc-option-active::before{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;border:solid 1px currentColor}\n"], components: [{ type: i1.MatPseudoCheckbox, selector: "mat-pseudo-checkbox", inputs: ["state", "disabled"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
24
+ MatOption.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "14.0.0-next.6", type: MatOption, selector: "mat-option", host: { attributes: { "role": "option" }, listeners: { "click": "_selectViaInteraction()", "keydown": "_handleKeydown($event)" }, properties: { "attr.tabindex": "_getTabIndex()", "class.mdc-list-item--selected": "selected", "class.mat-mdc-option-multiple": "multiple", "class.mat-mdc-option-active": "active", "class.mdc-list-item--disabled": "disabled", "id": "id", "attr.aria-selected": "_getAriaSelected()", "attr.aria-disabled": "disabled.toString()" }, classAttribute: "mat-mdc-option mat-mdc-focus-indicator mdc-list-item" }, exportAs: ["matOption"], usesInheritance: true, ngImport: i0, template: "<mat-pseudo-checkbox *ngIf=\"multiple\" class=\"mat-mdc-option-pseudo-checkbox\"\n [state]=\"selected ? 'checked' : 'unchecked'\" [disabled]=\"disabled\"></mat-pseudo-checkbox>\n\n<span class=\"mdc-list-item__primary-text\"><ng-content></ng-content></span>\n\n<!-- See a11y notes inside optgroup.ts for context behind this element. -->\n<span class=\"cdk-visually-hidden\" *ngIf=\"group && group._inert\">({{ group.label }})</span>\n\n<div class=\"mat-mdc-option-ripple\" mat-ripple\n [matRippleTrigger]=\"_getHostElement()\"\n [matRippleDisabled]=\"disabled || disableRipple\">\n</div>\n", styles: [".mat-mdc-option{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;user-select:none;cursor:pointer;min-height:48px}.mat-mdc-option:focus{outline:none}[dir=rtl] .mat-mdc-option,.mat-mdc-option[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-option::after{display:inline-block;min-height:inherit;content:\"\"}.mat-mdc-option.mdc-list-item--disabled{opacity:.38;cursor:default}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-pseudo-checkbox{margin-right:16px}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox{margin-right:0;margin-left:16px}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit}.cdk-high-contrast-active .mat-mdc-option-active::before{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;border:solid 1px currentColor}\n"], components: [{ type: i1.MatPseudoCheckbox, selector: "mat-pseudo-checkbox", inputs: ["state", "disabled"] }], directives: [{ type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { type: i1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
25
25
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatOption, decorators: [{
26
26
  type: Component,
27
27
  args: [{ selector: 'mat-option', exportAs: 'matOption', host: {
@@ -37,7 +37,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.6",
37
37
  '(click)': '_selectViaInteraction()',
38
38
  '(keydown)': '_handleKeydown($event)',
39
39
  'class': 'mat-mdc-option mat-mdc-focus-indicator mdc-list-item',
40
- }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-pseudo-checkbox *ngIf=\"multiple\" class=\"mat-mdc-option-pseudo-checkbox\"\n [state]=\"selected ? 'checked' : 'unchecked'\" [disabled]=\"disabled\"></mat-pseudo-checkbox>\n\n<span class=\"mdc-list-item__primary-text\"><ng-content></ng-content></span>\n\n<!-- See a11y notes inside optgroup.ts for context behind this element. -->\n<span class=\"cdk-visually-hidden\" *ngIf=\"group && group._inert\">({{ group.label }})</span>\n\n<div class=\"mat-mdc-option-ripple\" mat-ripple\n [matRippleTrigger]=\"_getHostElement()\"\n [matRippleDisabled]=\"disabled || disableRipple\">\n</div>\n", styles: [".mat-mdc-option{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer;min-height:48px}.mat-mdc-option:focus{outline:none}[dir=rtl] .mat-mdc-option,.mat-mdc-option[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-option::after{display:inline-block;min-height:inherit;content:\"\"}.mat-mdc-option.mdc-list-item--disabled{opacity:.38;cursor:default}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-pseudo-checkbox{margin-right:16px}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox{margin-right:0;margin-left:16px}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit}.cdk-high-contrast-active .mat-mdc-option-active::before{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;border:solid 1px currentColor}\n"] }]
40
+ }, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<mat-pseudo-checkbox *ngIf=\"multiple\" class=\"mat-mdc-option-pseudo-checkbox\"\n [state]=\"selected ? 'checked' : 'unchecked'\" [disabled]=\"disabled\"></mat-pseudo-checkbox>\n\n<span class=\"mdc-list-item__primary-text\"><ng-content></ng-content></span>\n\n<!-- See a11y notes inside optgroup.ts for context behind this element. -->\n<span class=\"cdk-visually-hidden\" *ngIf=\"group && group._inert\">({{ group.label }})</span>\n\n<div class=\"mat-mdc-option-ripple\" mat-ripple\n [matRippleTrigger]=\"_getHostElement()\"\n [matRippleDisabled]=\"disabled || disableRipple\">\n</div>\n", styles: [".mat-mdc-option{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;user-select:none;cursor:pointer;min-height:48px}.mat-mdc-option:focus{outline:none}[dir=rtl] .mat-mdc-option,.mat-mdc-option[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-option::after{display:inline-block;min-height:inherit;content:\"\"}.mat-mdc-option.mdc-list-item--disabled{opacity:.38;cursor:default}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-pseudo-checkbox{margin-right:16px}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox{margin-right:0;margin-left:16px}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit}.cdk-high-contrast-active .mat-mdc-option-active::before{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;pointer-events:none;border:solid 1px currentColor}\n"] }]
41
41
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: undefined, decorators: [{
42
42
  type: Optional
43
43
  }, {
@@ -443,10 +443,13 @@ export class MatFormField {
443
443
  _shouldLabelFloat() {
444
444
  return this._control.shouldLabelFloat || this._shouldAlwaysFloat();
445
445
  }
446
- /** Determines whether a class from the NgControl should be forwarded to the host element. */
446
+ /**
447
+ * Determines whether a class from the AbstractControlDirective
448
+ * should be forwarded to the host element.
449
+ */
447
450
  _shouldForward(prop) {
448
- const ngControl = this._control ? this._control.ngControl : null;
449
- return ngControl && ngControl[prop];
451
+ const control = this._control ? this._control.ngControl : null;
452
+ return control && control[prop];
450
453
  }
451
454
  /** Determines whether to display hints or errors. */
452
455
  _getDisplayedMessages() {
@@ -681,4 +684,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.6",
681
684
  }], hintLabel: [{
682
685
  type: Input
683
686
  }] } });
684
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1leHBlcmltZW50YWwvbWRjLWZvcm0tZmllbGQvZm9ybS1maWVsZC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1leHBlcmltZW50YWwvbWRjLWZvcm0tZmllbGQvZm9ybS1maWVsZC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDL0MsT0FBTyxFQUlMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUNMLE1BQU0sRUFFTixRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUNMLGtDQUFrQyxFQUNsQyxrQ0FBa0MsRUFDbEMsY0FBYyxFQUNkLHNCQUFzQixFQUN0QixtQkFBbUIsR0FDcEIsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBRUwsc0JBQXNCLEVBQ3RCLE9BQU8sSUFBSSxtQkFBbUIsR0FDL0IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBVyxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDZC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QUFJLEVBQUM7Z0JBSXpDLGtCQUFrQjtzQkFEckIsS0FBSztnQkFVRyxLQUFLO3NCQUFiLEtBQUs7Z0JBSUYsVUFBVTtzQkFEYixLQUFLO2dCQWtCRixVQUFVO3NCQURiLEtBQUs7Z0JBd0JGLGVBQWU7c0JBRGxCLEtBQUs7Z0JBV0YsU0FBUztzQkFEWixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBMTEMgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5pbXBvcnQge0RpcmVjdGlvbmFsaXR5fSBmcm9tICdAYW5ndWxhci9jZGsvYmlkaSc7XG5pbXBvcnQge1BsYXRmb3JtfSBmcm9tICdAYW5ndWxhci9jZGsvcGxhdGZvcm0nO1xuaW1wb3J0IHtcbiAgQWZ0ZXJDb250ZW50Q2hlY2tlZCxcbiAgQWZ0ZXJDb250ZW50SW5pdCxcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZCxcbiAgQ29udGVudENoaWxkcmVuLFxuICBFbGVtZW50UmVmLFxuICBJbmplY3QsXG4gIEluamVjdGlvblRva2VuLFxuICBJbnB1dCxcbiAgTmdab25lLFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBRdWVyeUxpc3QsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtOZ0NvbnRyb2x9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7VGhlbWVQYWxldHRlfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC1leHBlcmltZW50YWwvbWRjLWNvcmUnO1xuaW1wb3J0IHtcbiAgZ2V0TWF0Rm9ybUZpZWxkRHVwbGljYXRlZEhpbnRFcnJvcixcbiAgZ2V0TWF0Rm9ybUZpZWxkTWlzc2luZ0NvbnRyb2xFcnJvcixcbiAgTUFUX0ZPUk1fRklFTEQsXG4gIG1hdEZvcm1GaWVsZEFuaW1hdGlvbnMsXG4gIE1hdEZvcm1GaWVsZENvbnRyb2wsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2Zvcm0tZmllbGQnO1xuaW1wb3J0IHtBTklNQVRJT05fTU9EVUxFX1RZUEV9IGZyb20gJ0Bhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQge1xuICBNRENUZXh0RmllbGRBZGFwdGVyLFxuICBNRENUZXh0RmllbGRGb3VuZGF0aW9uLFxuICBudW1iZXJzIGFzIG1kY1RleHRGaWVsZE51bWJlcnMsXG59IGZyb20gJ0BtYXRlcmlhbC90ZXh0ZmllbGQnO1xuaW1wb3J0IHttZXJnZSwgU3ViamVjdH0gZnJvbSAncnhqcyc7XG5pbXBvcnQge3Rha2VVbnRpbH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHtNQVRfRVJST1IsIE1hdEVycm9yfSBmcm9tICcuL2RpcmVjdGl2ZXMvZXJyb3InO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRGbG9hdGluZ0xhYmVsfSBmcm9tICcuL2RpcmVjdGl2ZXMvZmxvYXRpbmctbGFiZWwnO1xuaW1wb3J0IHtNYXRIaW50fSBmcm9tICcuL2RpcmVjdGl2ZXMvaGludCc7XG5pbXBvcnQge01hdExhYmVsfSBmcm9tICcuL2RpcmVjdGl2ZXMvbGFiZWwnO1xuaW1wb3J0IHtNYXRGb3JtRmllbGRMaW5lUmlwcGxlfSBmcm9tICcuL2RpcmVjdGl2ZXMvbGluZS1yaXBwbGUnO1xuaW1wb3J0IHtNYXRGb3JtRmllbGROb3RjaGVkT3V0bGluZX0gZnJvbSAnLi9kaXJlY3RpdmVzL25vdGNoZWQtb3V0bGluZSc7XG5pbXBvcnQge01BVF9QUkVGSVgsIE1hdFByZWZpeH0gZnJvbSAnLi9kaXJlY3RpdmVzL3ByZWZpeCc7XG5pbXBvcnQge01BVF9TVUZGSVgsIE1hdFN1ZmZpeH0gZnJvbSAnLi9kaXJlY3RpdmVzL3N1ZmZpeCc7XG5pbXBvcnQge0RPQ1VNRU5UfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtCb29sZWFuSW5wdXQsIGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eX0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcblxuLyoqIFR5cGUgZm9yIHRoZSBhdmFpbGFibGUgZmxvYXRMYWJlbCB2YWx1ZXMuICovXG5leHBvcnQgdHlwZSBGbG9hdExhYmVsVHlwZSA9ICdhbHdheXMnIHwgJ2F1dG8nO1xuXG4vKiogUG9zc2libGUgYXBwZWFyYW5jZSBzdHlsZXMgZm9yIHRoZSBmb3JtIGZpZWxkLiAqL1xuZXhwb3J0IHR5cGUgTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSA9ICdmaWxsJyB8ICdvdXRsaW5lJztcblxuLyoqIEJlaGF2aW9ycyBmb3IgaG93IHRoZSBzdWJzY3JpcHQgaGVpZ2h0IGlzIHNldC4gKi9cbmV4cG9ydCB0eXBlIFN1YnNjcmlwdFNpemluZyA9ICdmaXhlZCcgfCAnZHluYW1pYyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgZGVmYXVsdCBvcHRpb25zIGZvciB0aGUgZm9ybSBmaWVsZCB0aGF0IGNhbiBiZSBjb25maWd1cmVkXG4gKiB1c2luZyB0aGUgYE1BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfT1BUSU9OU2AgaW5qZWN0aW9uIHRva2VuLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1hdEZvcm1GaWVsZERlZmF1bHRPcHRpb25zIHtcbiAgLyoqIERlZmF1bHQgZm9ybSBmaWVsZCBhcHBlYXJhbmNlIHN0eWxlLiAqL1xuICBhcHBlYXJhbmNlPzogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZTtcbiAgLyoqIERlZmF1bHQgY29sb3Igb2YgdGhlIGZvcm0gZmllbGQuICovXG4gIGNvbG9yPzogVGhlbWVQYWxldHRlO1xuICAvKiogV2hldGhlciB0aGUgcmVxdWlyZWQgbWFya2VyIHNob3VsZCBiZSBoaWRkZW4gYnkgZGVmYXVsdC4gKi9cbiAgaGlkZVJlcXVpcmVkTWFya2VyPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGxhYmVsIGZvciBmb3JtIGZpZWxkcyBzaG91bGQgYnkgZGVmYXVsdCBmbG9hdCBgYWx3YXlzYCxcbiAgICogYG5ldmVyYCwgb3IgYGF1dG9gIChvbmx5IHdoZW4gbmVjZXNzYXJ5KS5cbiAgICovXG4gIGZsb2F0TGFiZWw/OiBGbG9hdExhYmVsVHlwZTtcbiAgLyoqIFdoZXRoZXIgdGhlIGZvcm0gZmllbGQgc2hvdWxkIHJlc2VydmUgc3BhY2UgZm9yIG9uZSBsaW5lIGJ5IGRlZmF1bHQuICovXG4gIHN1YnNjcmlwdFNpemluZz86IFN1YnNjcmlwdFNpemluZztcbn1cblxuLyoqXG4gKiBJbmplY3Rpb24gdG9rZW4gdGhhdCBjYW4gYmUgdXNlZCB0byBjb25maWd1cmUgdGhlXG4gKiBkZWZhdWx0IG9wdGlvbnMgZm9yIGFsbCBmb3JtIGZpZWxkIHdpdGhpbiBhbiBhcHAuXG4gKi9cbmV4cG9ydCBjb25zdCBNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMgPSBuZXcgSW5qZWN0aW9uVG9rZW48TWF0Rm9ybUZpZWxkRGVmYXVsdE9wdGlvbnM+KFxuICAnTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TJyxcbik7XG5cbmxldCBuZXh0VW5pcXVlSWQgPSAwO1xuXG4vKiogRGVmYXVsdCBhcHBlYXJhbmNlIHVzZWQgYnkgdGhlIGZvcm0gZmllbGQuICovXG5jb25zdCBERUZBVUxUX0FQUEVBUkFOQ0U6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgPSAnZmlsbCc7XG5cbi8qKlxuICogV2hldGhlciB0aGUgbGFiZWwgZm9yIGZvcm0gZmllbGRzIHNob3VsZCBieSBkZWZhdWx0IGZsb2F0IGBhbHdheXNgLFxuICogYG5ldmVyYCwgb3IgYGF1dG9gLlxuICovXG5jb25zdCBERUZBVUxUX0ZMT0FUX0xBQkVMOiBGbG9hdExhYmVsVHlwZSA9ICdhdXRvJztcblxuLyoqIERlZmF1bHQgd2F5IHRoYXQgdGhlIHN1YnNjcmlwdCBlbGVtZW50IGhlaWdodCBpcyBzZXQuICovXG5jb25zdCBERUZBVUxUX1NVQlNDUklQVF9TSVpJTkc6IFN1YnNjcmlwdFNpemluZyA9ICdmaXhlZCc7XG5cbi8qKlxuICogRGVmYXVsdCB0cmFuc2Zvcm0gZm9yIGRvY2tlZCBmbG9hdGluZyBsYWJlbHMgaW4gYSBNREMgdGV4dC1maWVsZC4gVGhpcyB2YWx1ZSBoYXMgYmVlblxuICogZXh0cmFjdGVkIGZyb20gdGhlIE1EQyB0ZXh0LWZpZWxkIHN0eWxlcyBiZWNhdXNlIHdlIHByb2dyYW1tYXRpY2FsbHkgbW9kaWZ5IHRoZSBkb2NrZWRcbiAqIGxhYmVsIHRyYW5zZm9ybSwgYnV0IGRvIG5vdCB3YW50IHRvIGFjY2lkZW50YWxseSBkaXNjYXJkIHRoZSBkZWZhdWx0IGxhYmVsIHRyYW5zZm9ybS5cbiAqL1xuY29uc3QgRkxPQVRJTkdfTEFCRUxfREVGQVVMVF9ET0NLRURfVFJBTlNGT1JNID0gYHRyYW5zbGF0ZVkoLTUwJSlgO1xuXG4vKipcbiAqIEhvcml6b250YWwgcGFkZGluZyBpbiBwaXhlbHMgdXNlZCBieSB0aGUgTURDIGZvciB0aGUgd3JhcHBlciBjb250YWluaW5nIGluZml4LlxuICogVGhpcyB2YWx1ZSBpcyBleHRyYWN0ZWQgZnJvbSBNREMncyBTYXNzIHZhcmlhYmxlcy4gU2VlIGAkcGFkZGluZy1ob3Jpem9udGFsYC5cbiAqL1xuY29uc3QgV1JBUFBFUl9IT1JJWk9OVEFMX1BBRERJTkcgPSAxNjtcblxuLyoqIENvbnRhaW5lciBmb3IgZm9ybSBjb250cm9scyB0aGF0IGFwcGxpZXMgTWF0ZXJpYWwgRGVzaWduIHN0eWxpbmcgYW5kIGJlaGF2aW9yLiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0LWZvcm0tZmllbGQnLFxuICBleHBvcnRBczogJ21hdEZvcm1GaWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9mb3JtLWZpZWxkLmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9mb3JtLWZpZWxkLmNzcyddLFxuICBhbmltYXRpb25zOiBbbWF0Rm9ybUZpZWxkQW5pbWF0aW9ucy50cmFuc2l0aW9uTWVzc2FnZXNdLFxuICBob3N0OiB7XG4gICAgJ2NsYXNzJzogJ21hdC1tZGMtZm9ybS1maWVsZCcsXG4gICAgJ1tjbGFzcy5tYXQtbWRjLWZvcm0tZmllbGQtbGFiZWwtYWx3YXlzLWZsb2F0XSc6ICdfc2hvdWxkQWx3YXlzRmxvYXQoKScsXG4gICAgJ1tjbGFzcy5tYXQtbWRjLWZvcm0tZmllbGQtaGFzLWljb24tcHJlZml4XSc6ICdfaGFzSWNvblByZWZpeCcsXG4gICAgJ1tjbGFzcy5tYXQtbWRjLWZvcm0tZmllbGQtaGFzLWljb24tc3VmZml4XSc6ICdfaGFzSWNvblN1ZmZpeCcsXG5cbiAgICAvLyBOb3RlIHRoYXQgdGhlc2UgY2xhc3NlcyByZXVzZSB0aGUgc2FtZSBuYW1lcyBhcyB0aGUgbm9uLU1EQyB2ZXJzaW9uLCBiZWNhdXNlIHRoZXkgY2FuIGJlXG4gICAgLy8gY29uc2lkZXJlZCBhIHB1YmxpYyBBUEkgc2luY2UgY3VzdG9tIGZvcm0gY29udHJvbHMgbWF5IHVzZSB0aGVtIHRvIHN0eWxlIHRoZW1zZWx2ZXMuXG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2NvbXBvbmVudHMvcHVsbC8yMDUwMiNkaXNjdXNzaW9uX3I0ODYxMjQ5MDEuXG4gICAgJ1tjbGFzcy5tYXQtZm9ybS1maWVsZC1pbnZhbGlkXSc6ICdfY29udHJvbC5lcnJvclN0YXRlJyxcbiAgICAnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWRpc2FibGVkXSc6ICdfY29udHJvbC5kaXNhYmxlZCcsXG4gICAgJ1tjbGFzcy5tYXQtZm9ybS1maWVsZC1hdXRvZmlsbGVkXSc6ICdfY29udHJvbC5hdXRvZmlsbGVkJyxcbiAgICAnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLW5vLWFuaW1hdGlvbnNdJzogJ19hbmltYXRpb25Nb2RlID09PSBcIk5vb3BBbmltYXRpb25zXCInLFxuICAgICdbY2xhc3MubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1maWxsXSc6ICdhcHBlYXJhbmNlID09IFwiZmlsbFwiJyxcbiAgICAnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWFwcGVhcmFuY2Utb3V0bGluZV0nOiAnYXBwZWFyYW5jZSA9PSBcIm91dGxpbmVcIicsXG4gICAgJ1tjbGFzcy5tYXQtZm9ybS1maWVsZC1oaWRlLXBsYWNlaG9sZGVyXSc6ICdfaGFzRmxvYXRpbmdMYWJlbCgpICYmICFfc2hvdWxkTGFiZWxGbG9hdCgpJyxcbiAgICAnW2NsYXNzLm1hdC1mb2N1c2VkXSc6ICdfY29udHJvbC5mb2N1c2VkJyxcbiAgICAnW2NsYXNzLm1hdC1wcmltYXJ5XSc6ICdjb2xvciAhPT0gXCJhY2NlbnRcIiAmJiBjb2xvciAhPT0gXCJ3YXJuXCInLFxuICAgICdbY2xhc3MubWF0LWFjY2VudF0nOiAnY29sb3IgPT09IFwiYWNjZW50XCInLFxuICAgICdbY2xhc3MubWF0LXdhcm5dJzogJ2NvbG9yID09PSBcIndhcm5cIicsXG4gICAgJ1tjbGFzcy5uZy11bnRvdWNoZWRdJzogJ19zaG91bGRGb3J3YXJkKFwidW50b3VjaGVkXCIpJyxcbiAgICAnW2NsYXNzLm5nLXRvdWNoZWRdJzogJ19zaG91bGRGb3J3YXJkKFwidG91Y2hlZFwiKScsXG4gICAgJ1tjbGFzcy5uZy1wcmlzdGluZV0nOiAnX3Nob3VsZEZvcndhcmQoXCJwcmlzdGluZVwiKScsXG4gICAgJ1tjbGFzcy5uZy1kaXJ0eV0nOiAnX3Nob3VsZEZvcndhcmQoXCJkaXJ0eVwiKScsXG4gICAgJ1tjbGFzcy5uZy12YWxpZF0nOiAnX3Nob3VsZEZvcndhcmQoXCJ2YWxpZFwiKScsXG4gICAgJ1tjbGFzcy5uZy1pbnZhbGlkXSc6ICdfc2hvdWxkRm9yd2FyZChcImludmFsaWRcIiknLFxuICAgICdbY2xhc3MubmctcGVuZGluZ10nOiAnX3Nob3VsZEZvcndhcmQoXCJwZW5kaW5nXCIpJyxcbiAgfSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIHByb3ZpZGVyczogW3twcm92aWRlOiBNQVRfRk9STV9GSUVMRCwgdXNlRXhpc3Rpbmc6IE1hdEZvcm1GaWVsZH1dLFxufSlcbmV4cG9ydCBjbGFzcyBNYXRGb3JtRmllbGRcbiAgaW1wbGVtZW50cyBBZnRlckNvbnRlbnRJbml0LCBBZnRlckNvbnRlbnRDaGVja2VkLCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3lcbntcbiAgQFZpZXdDaGlsZCgndGV4dEZpZWxkJykgX3RleHRGaWVsZDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ2ljb25QcmVmaXhDb250YWluZXInKSBfaWNvblByZWZpeENvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoJ3RleHRQcmVmaXhDb250YWluZXInKSBfdGV4dFByZWZpeENvbnRhaW5lcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG4gIEBWaWV3Q2hpbGQoTWF0Rm9ybUZpZWxkRmxvYXRpbmdMYWJlbCkgX2Zsb2F0aW5nTGFiZWw6IE1hdEZvcm1GaWVsZEZsb2F0aW5nTGFiZWwgfCB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoTWF0Rm9ybUZpZWxkTm90Y2hlZE91dGxpbmUpIF9ub3RjaGVkT3V0bGluZTogTWF0Rm9ybUZpZWxkTm90Y2hlZE91dGxpbmUgfCB1bmRlZmluZWQ7XG4gIEBWaWV3Q2hpbGQoTWF0Rm9ybUZpZWxkTGluZVJpcHBsZSkgX2xpbmVSaXBwbGU6IE1hdEZvcm1GaWVsZExpbmVSaXBwbGUgfCB1bmRlZmluZWQ7XG5cbiAgQENvbnRlbnRDaGlsZChNYXRMYWJlbCkgX2xhYmVsQ2hpbGROb25TdGF0aWM6IE1hdExhYmVsIHwgdW5kZWZpbmVkO1xuICBAQ29udGVudENoaWxkKE1hdExhYmVsLCB7c3RhdGljOiB0cnVlfSkgX2xhYmVsQ2hpbGRTdGF0aWM6IE1hdExhYmVsIHwgdW5kZWZpbmVkO1xuICBAQ29udGVudENoaWxkKE1hdEZvcm1GaWVsZENvbnRyb2wpIF9mb3JtRmllbGRDb250cm9sOiBNYXRGb3JtRmllbGRDb250cm9sPGFueT47XG4gIEBDb250ZW50Q2hpbGRyZW4oTUFUX1BSRUZJWCwge2Rlc2NlbmRhbnRzOiB0cnVlfSkgX3ByZWZpeENoaWxkcmVuOiBRdWVyeUxpc3Q8TWF0UHJlZml4PjtcbiAgQENvbnRlbnRDaGlsZHJlbihNQVRfU1VGRklYLCB7ZGVzY2VuZGFudHM6IHRydWV9KSBfc3VmZml4Q2hpbGRyZW46IFF1ZXJ5TGlzdDxNYXRTdWZmaXg+O1xuICBAQ29udGVudENoaWxkcmVuKE1BVF9FUlJPUiwge2Rlc2NlbmRhbnRzOiB0cnVlfSkgX2Vycm9yQ2hpbGRyZW46IFF1ZXJ5TGlzdDxNYXRFcnJvcj47XG4gIEBDb250ZW50Q2hpbGRyZW4oTWF0SGludCwge2Rlc2NlbmRhbnRzOiB0cnVlfSkgX2hpbnRDaGlsZHJlbjogUXVlcnlMaXN0PE1hdEhpbnQ+O1xuXG4gIC8qKiBXaGV0aGVyIHRoZSByZXF1aXJlZCBtYXJrZXIgc2hvdWxkIGJlIGhpZGRlbi4gKi9cbiAgQElucHV0KClcbiAgZ2V0IGhpZGVSZXF1aXJlZE1hcmtlcigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5faGlkZVJlcXVpcmVkTWFya2VyO1xuICB9XG4gIHNldCBoaWRlUmVxdWlyZWRNYXJrZXIodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgIHRoaXMuX2hpZGVSZXF1aXJlZE1hcmtlciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gIH1cbiAgcHJpdmF0ZSBfaGlkZVJlcXVpcmVkTWFya2VyID0gZmFsc2U7XG5cbiAgLyoqIFRoZSBjb2xvciBwYWxldHRlIGZvciB0aGUgZm9ybSBmaWVsZC4gKi9cbiAgQElucHV0KCkgY29sb3I6IFRoZW1lUGFsZXR0ZSA9ICdwcmltYXJ5JztcblxuICAvKiogV2hldGhlciB0aGUgbGFiZWwgc2hvdWxkIGFsd2F5cyBmbG9hdCBvciBmbG9hdCBhcyB0aGUgdXNlciB0eXBlcy4gKi9cbiAgQElucHV0KClcbiAgZ2V0IGZsb2F0TGFiZWwoKTogRmxvYXRMYWJlbFR5cGUge1xuICAgIHJldHVybiB0aGlzLl9mbG9hdExhYmVsIHx8IHRoaXMuX2RlZmF1bHRzPy5mbG9hdExhYmVsIHx8IERFRkFVTFRfRkxPQVRfTEFCRUw7XG4gIH1cbiAgc2V0IGZsb2F0TGFiZWwodmFsdWU6IEZsb2F0TGFiZWxUeXBlKSB7XG4gICAgaWYgKHZhbHVlICE9PSB0aGlzLl9mbG9hdExhYmVsKSB7XG4gICAgICB0aGlzLl9mbG9hdExhYmVsID0gdmFsdWU7XG4gICAgICAvLyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuIEN1c3RvbSBmb3JtIGZpZWxkIGNvbnRyb2xzIG9yIGRpcmVjdGl2ZXMgbWlnaHQgc2V0XG4gICAgICAvLyB0aGUgXCJmbG9hdExhYmVsXCIgaW5wdXQgYW5kIGV4cGVjdCB0aGUgZm9ybSBmaWVsZCB2aWV3IHRvIGJlIHVwZGF0ZWQgYXV0b21hdGljYWxseS5cbiAgICAgIC8vIGUuZy4gYXV0b2NvbXBsZXRlIHRyaWdnZXIuIElkZWFsbHkgd2UnZCBnZXQgcmlkIG9mIHRoaXMgYW5kIHRoZSBjb25zdW1lcnMgd291bGQganVzdFxuICAgICAgLy8gZW1pdCB0aGUgXCJzdGF0ZUNoYW5nZXNcIiBvYnNlcnZhYmxlLiBUT0RPKGRldnZlcnNpb24pOiBjb25zaWRlciByZW1vdmluZy5cbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIF9mbG9hdExhYmVsOiBGbG9hdExhYmVsVHlwZTtcblxuICAvKiogVGhlIGZvcm0gZmllbGQgYXBwZWFyYW5jZSBzdHlsZS4gKi9cbiAgQElucHV0KClcbiAgZ2V0IGFwcGVhcmFuY2UoKTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSB7XG4gICAgcmV0dXJuIHRoaXMuX2FwcGVhcmFuY2U7XG4gIH1cbiAgc2V0IGFwcGVhcmFuY2UodmFsdWU6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UpIHtcbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMuX2FwcGVhcmFuY2U7XG4gICAgdGhpcy5fYXBwZWFyYW5jZSA9IHZhbHVlIHx8IHRoaXMuX2RlZmF1bHRzPy5hcHBlYXJhbmNlIHx8IERFRkFVTFRfQVBQRUFSQU5DRTtcbiAgICBpZiAodGhpcy5fYXBwZWFyYW5jZSA9PT0gJ291dGxpbmUnICYmIHRoaXMuX2FwcGVhcmFuY2UgIT09IG9sZFZhbHVlKSB7XG4gICAgICB0aGlzLl9yZWZyZXNoT3V0bGluZU5vdGNoV2lkdGgoKTtcblxuICAgICAgLy8gSWYgdGhlIGFwcGVhcmFuY2UgaGFzIGJlZW4gc3dpdGNoZWQgdG8gYG91dGxpbmVgLCB0aGUgbGFiZWwgb2Zmc2V0IG5lZWRzIHRvIGJlIHVwZGF0ZWQuXG4gICAgICAvLyBUaGUgdXBkYXRlIGNhbiBoYXBwZW4gb25jZSB0aGUgdmlldyBoYXMgYmVlbiByZS1jaGVja2VkLCBidXQgbm90IGltbWVkaWF0ZWx5IGJlY2F1c2VcbiAgICAgIC8vIHRoZSB2aWV3IGhhcyBub3QgYmVlbiB1cGRhdGVkIGFuZCB0aGUgbm90Y2hlZC1vdXRsaW5lIGZsb2F0aW5nIGxhYmVsIGlzIG5vdCBwcmVzZW50LlxuICAgICAgdGhpcy5fbmVlZHNPdXRsaW5lTGFiZWxPZmZzZXRVcGRhdGVPblN0YWJsZSA9IHRydWU7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2FwcGVhcmFuY2U6IE1hdEZvcm1GaWVsZEFwcGVhcmFuY2UgPSBERUZBVUxUX0FQUEVBUkFOQ0U7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGZvcm0gZmllbGQgc2hvdWxkIHJlc2VydmUgc3BhY2UgZm9yIG9uZSBsaW5lIG9mIGhpbnQvZXJyb3IgdGV4dCAoZGVmYXVsdClcbiAgICogb3IgdG8gaGF2ZSB0aGUgc3BhY2luZyBncm93IGZyb20gMHB4IGFzIG5lZWRlZCBiYXNlZCBvbiB0aGUgc2l6ZSBvZiB0aGUgaGludC9lcnJvciBjb250ZW50LlxuICAgKiBOb3RlIHRoYXQgd2hlbiB1c2luZyBkeW5hbWljIHNpemluZywgbGF5b3V0IHNoaWZ0cyB3aWxsIG9jY3VyIHdoZW4gaGludC9lcnJvciB0ZXh0IGNoYW5nZXMuXG4gICAqL1xuICBASW5wdXQoKVxuICBnZXQgc3Vic2NyaXB0U2l6aW5nKCk6IFN1YnNjcmlwdFNpemluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3N1YnNjcmlwdFNpemluZyB8fCB0aGlzLl9kZWZhdWx0cz8uc3Vic2NyaXB0U2l6aW5nIHx8IERFRkFVTFRfU1VCU0NSSVBUX1NJWklORztcbiAgfVxuICBzZXQgc3Vic2NyaXB0U2l6aW5nKHZhbHVlOiBTdWJzY3JpcHRTaXppbmcpIHtcbiAgICB0aGlzLl9zdWJzY3JpcHRTaXppbmcgPSB2YWx1ZSB8fCB0aGlzLl9kZWZhdWx0cz8uc3Vic2NyaXB0U2l6aW5nIHx8IERFRkFVTFRfU1VCU0NSSVBUX1NJWklORztcbiAgfVxuICBwcml2YXRlIF9zdWJzY3JpcHRTaXppbmc6IFN1YnNjcmlwdFNpemluZyB8IG51bGwgPSBudWxsO1xuXG4gIC8qKiBUZXh0IGZvciB0aGUgZm9ybSBmaWVsZCBoaW50LiAqL1xuICBASW5wdXQoKVxuICBnZXQgaGludExhYmVsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2hpbnRMYWJlbDtcbiAgfVxuICBzZXQgaGludExhYmVsKHZhbHVlOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9oaW50TGFiZWwgPSB2YWx1ZTtcbiAgICB0aGlzLl9wcm9jZXNzSGludHMoKTtcbiAgfVxuICBwcml2YXRlIF9oaW50TGFiZWwgPSAnJztcblxuICBfaGFzSWNvblByZWZpeCA9IGZhbHNlO1xuICBfaGFzVGV4dFByZWZpeCA9IGZhbHNlO1xuICBfaGFzSWNvblN1ZmZpeCA9IGZhbHNlO1xuICBfaGFzVGV4dFN1ZmZpeCA9IGZhbHNlO1xuXG4gIC8vIFVuaXF1ZSBpZCBmb3IgdGhlIGludGVybmFsIGZvcm0gZmllbGQgbGFiZWwuXG4gIHJlYWRvbmx5IF9sYWJlbElkID0gYG1hdC1tZGMtZm9ybS1maWVsZC1sYWJlbC0ke25leHRVbmlxdWVJZCsrfWA7XG5cbiAgLy8gVW5pcXVlIGlkIGZvciB0aGUgaGludCBsYWJlbC5cbiAgcmVhZG9ubHkgX2hpbnRMYWJlbElkID0gYG1hdC1tZGMtaGludC0ke25leHRVbmlxdWVJZCsrfWA7XG5cbiAgLyoqIFN0YXRlIG9mIHRoZSBtYXQtaGludCBhbmQgbWF0LWVycm9yIGFuaW1hdGlvbnMuICovXG4gIF9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZSA9ICcnO1xuXG4gIC8qKiBXaWR0aCBvZiB0aGUgb3V0bGluZSBub3RjaC4gKi9cbiAgX291dGxpbmVOb3RjaFdpZHRoID0gMDtcblxuICAvKiogR2V0cyB0aGUgY3VycmVudCBmb3JtIGZpZWxkIGNvbnRyb2wgKi9cbiAgZ2V0IF9jb250cm9sKCk6IE1hdEZvcm1GaWVsZENvbnRyb2w8YW55PiB7XG4gICAgcmV0dXJuIHRoaXMuX2V4cGxpY2l0Rm9ybUZpZWxkQ29udHJvbCB8fCB0aGlzLl9mb3JtRmllbGRDb250cm9sO1xuICB9XG4gIHNldCBfY29udHJvbCh2YWx1ZSkge1xuICAgIHRoaXMuX2V4cGxpY2l0Rm9ybUZpZWxkQ29udHJvbCA9IHZhbHVlO1xuICB9XG5cbiAgcHJpdmF0ZSBfZGVzdHJveWVkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcbiAgcHJpdmF0ZSBfaXNGb2N1c2VkOiBib29sZWFuIHwgbnVsbCA9IG51bGw7XG4gIHByaXZhdGUgX2V4cGxpY2l0Rm9ybUZpZWxkQ29udHJvbDogTWF0Rm9ybUZpZWxkQ29udHJvbDxhbnk+O1xuICBwcml2YXRlIF9mb3VuZGF0aW9uOiBNRENUZXh0RmllbGRGb3VuZGF0aW9uO1xuICBwcml2YXRlIF9uZWVkc091dGxpbmVMYWJlbE9mZnNldFVwZGF0ZU9uU3RhYmxlID0gZmFsc2U7XG4gIHByaXZhdGUgX2FkYXB0ZXI6IE1EQ1RleHRGaWVsZEFkYXB0ZXIgPSB7XG4gICAgYWRkQ2xhc3M6IGNsYXNzTmFtZSA9PiB0aGlzLl90ZXh0RmllbGQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKGNsYXNzTmFtZSksXG4gICAgcmVtb3ZlQ2xhc3M6IGNsYXNzTmFtZSA9PiB0aGlzLl90ZXh0RmllbGQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKGNsYXNzTmFtZSksXG4gICAgaGFzQ2xhc3M6IGNsYXNzTmFtZSA9PiB0aGlzLl90ZXh0RmllbGQubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoY2xhc3NOYW1lKSxcblxuICAgIGhhc0xhYmVsOiAoKSA9PiB0aGlzLl9oYXNGbG9hdGluZ0xhYmVsKCksXG4gICAgaXNGb2N1c2VkOiAoKSA9PiB0aGlzLl9jb250cm9sLmZvY3VzZWQsXG4gICAgaGFzT3V0bGluZTogKCkgPT4gdGhpcy5faGFzT3V0bGluZSgpLFxuXG4gICAgLy8gTURDIHRleHQtZmllbGQgd2lsbCBjYWxsIHRoaXMgbWV0aG9kIG9uIGZvY3VzLCBibHVyIGFuZCB2YWx1ZSBjaGFuZ2UuIEl0IGV4cGVjdHMgdXNcbiAgICAvLyB0byB1cGRhdGUgdGhlIGZsb2F0aW5nIGxhYmVsIHN0YXRlIGFjY29yZGluZ2x5LiBUaG91Z2ggd2UgbWFrZSB0aGlzIGEgbm9vcCBiZWNhdXNlIHdlXG4gICAgLy8gd2FudCB0byByZWFjdCB0byBmbG9hdGluZyBsYWJlbCBzdGF0ZSBjaGFuZ2VzIHRocm91Z2ggY2hhbmdlIGRldGVjdGlvbi4gUmVseWluZyBvbiB0aGlzXG4gICAgLy8gYWRhcHRlciBtZXRob2Qgd291bGQgbWVhbiB0aGF0IHRoZSBsYWJlbCB3b3VsZCBub3QgdXBkYXRlIGlmIHRoZSBjdXN0b20gZm9ybSBmaWVsZCBjb250cm9sXG4gICAgLy8gc2V0cyBcInNob3VsZExhYmVsRmxvYXRcIiB0byB0cnVlLCBvciBpZiB0aGUgXCJmbG9hdExhYmVsXCIgaW5wdXQgYmluZGluZyBjaGFuZ2VzIHRvIFwiYWx3YXlzXCIuXG4gICAgZmxvYXRMYWJlbDogKCkgPT4ge30sXG5cbiAgICAvLyBMYWJlbCBzaGFraW5nIGlzIG5vdCBzdXBwb3J0ZWQgeWV0LiBJdCB3aWxsIHJlcXVpcmUgYSBuZXcgQVBJIGZvciBmb3JtIGZpZWxkXG4gICAgLy8gY29udHJvbHMgdG8gdHJpZ2dlciB0aGUgc2hha2luZy4gVGhpcyBjYW4gYmUgYSBmZWF0dXJlIGluIHRoZSBmdXR1cmUuXG4gICAgLy8gVE9ETyhkZXZ2ZXJzaW9uKTogZXhwbG9yZSBvcHRpb25zIG9uIGhvdyB0byBpbnRlZ3JhdGUgbGFiZWwgc2hha2luZy5cbiAgICBzaGFrZUxhYmVsOiAoKSA9PiB7fSxcblxuICAgIC8vIE1EQyBieSBkZWZhdWx0IHVwZGF0ZXMgdGhlIG5vdGNoZWQtb3V0bGluZSB3aGVuZXZlciB0aGUgdGV4dC1maWVsZCByZWNlaXZlcyBmb2N1cywgb3JcbiAgICAvLyBpcyBiZWluZyBibHVycmVkLiBJdCBhbHNvIGNvbXB1dGVzIHRoZSBsYWJlbCB3aWR0aCBldmVyeSB0aW1lIHRoZSBub3RjaCBpcyBvcGVuZWQgb3JcbiAgICAvLyBjbG9zZWQuIFRoaXMgd29ya3MgZmluZSBpbiB0aGUgc3RhbmRhcmQgTURDIHRleHQtZmllbGQsIGJ1dCBub3QgaW4gQW5ndWxhciB3aGVyZSB0aGVcbiAgICAvLyBmbG9hdGluZyBsYWJlbCBjb3VsZCBjaGFuZ2UgdGhyb3VnaCBpbnRlcnBvbGF0aW9uLiBXZSB3YW50IHRvIGJlIGFibGUgdG8gdXBkYXRlIHRoZVxuICAgIC8vIG5vdGNoZWQgb3V0bGluZSB3aGVuZXZlciB0aGUgbGFiZWwgY29udGVudCBjaGFuZ2VzLiBBZGRpdGlvbmFsbHksIHJlbHlpbmcgb24gZm9jdXMgb3JcbiAgICAvLyBibHVyIHRvIG9wZW4gYW5kIGNsb3NlIHRoZSBub3RjaCBkb2VzIG5vdCB3b3JrIGZvciB1cyBzaW5jZSBhYnN0cmFjdCBmb3JtIGZpZWxkIGNvbnRyb2xzXG4gICAgLy8gaGF2ZSB0aGUgYWJpbGl0eSB0byBjb250cm9sIHRoZSBmbG9hdGluZyBsYWJlbCBzdGF0ZSAoaS5lLiBgc2hvdWxkTGFiZWxGbG9hdGApLCBhbmQgd2VcbiAgICAvLyB3YW50IHRvIHVwZGF0ZSB0aGUgbm90Y2ggd2hlbmV2ZXIgdGhlIGBfc2hvdWxkTGFiZWxGbG9hdCgpYCB2YWx1ZSBjaGFuZ2VzLlxuICAgIGdldExhYmVsV2lkdGg6ICgpID0+IDAsXG5cbiAgICAvLyBXZSBkb24ndCB1c2UgYHNldExhYmVsUmVxdWlyZWRgIGFzIGl0IHJlbGllcyBvbiBhIG11dGF0aW9uIG9ic2VydmVyIGZvciBkZXRlcm1pbmluZ1xuICAgIC8vIHdoZW4gdGhlIGByZXF1aXJlZGAgc3RhdGUgY2hhbmdlcy4gVGhpcyBpcyBub3QgcmVsaWFibGUgYW5kIGZsZXhpYmxlIGVub3VnaCBmb3JcbiAgICAvLyBvdXIgZm9ybSBmaWVsZCwgYXMgd2Ugc3VwcG9ydCBjdXN0b20gY29udHJvbHMgYW5kIGRldGVjdCB0aGUgcmVxdWlyZWQgc3RhdGUgdGhyb3VnaFxuICAgIC8vIGEgcHVibGljIHByb3BlcnR5IGluIHRoZSBhYnN0cmFjdCBmb3JtIGNvbnRyb2wuXG4gICAgc2V0TGFiZWxSZXF1aXJlZDogKCkgPT4ge30sXG4gICAgbm90Y2hPdXRsaW5lOiAoKSA9PiB7fSxcbiAgICBjbG9zZU91dGxpbmU6ICgpID0+IHt9LFxuXG4gICAgYWN0aXZhdGVMaW5lUmlwcGxlOiAoKSA9PiB0aGlzLl9saW5lUmlwcGxlICYmIHRoaXMuX2xpbmVSaXBwbGUuYWN0aXZhdGUoKSxcbiAgICBkZWFjdGl2YXRlTGluZVJpcHBsZTogKCkgPT4gdGhpcy5fbGluZVJpcHBsZSAmJiB0aGlzLl9saW5lUmlwcGxlLmRlYWN0aXZhdGUoKSxcblxuICAgIC8vIFRoZSBmb3VuZGF0aW9uIHRyaWVzIHRvIHJlZ2lzdGVyIGV2ZW50cyBvbiB0aGUgaW5wdXQuIFRoaXMgaXMgbm90IG1hdGNoaW5nXG4gICAgLy8gb3VyIGNvbmNlcHQgb2YgYWJzdHJhY3QgZm9ybSBmaWVsZCBjb250cm9scy4gV2UgaGFuZGxlIGVhY2ggZXZlbnQgbWFudWFsbHlcbiAgICAvLyBpbiBcInN0YXRlQ2hhbmdlc1wiIGJhc2VkIG9uIHRoZSBmb3JtIGZpZWxkIGNvbnRyb2wgc3RhdGUuIFRoZSBmb2xsb3dpbmcgZXZlbnRzXG4gICAgLy8gbmVlZCB0byBiZSBoYW5kbGVkOiBmb2N1cywgYmx1ci4gV2UgZG8gbm90IGhhbmRsZSB0aGUgXCJpbnB1dFwiIGV2ZW50IHNpbmNlXG4gICAgLy8gdGhhdCBvbmUgaXMgb25seSBuZWVkZWQgZm9yIHRoZSB0ZXh0LWZpZWxkIGNoYXJhY3RlciBjb3VudCwgd2hpY2ggd2UgZG9cbiAgICAvLyBub3QgaW1wbGVtZW50IGFzIHBhcnQgb2YgdGhlIGZvcm0gZmllbGQsIGJ1dCBzaG91bGQgYmUgaW1wbGVtZW50ZWQgbWFudWFsbHlcbiAgICAvLyBieSBjb25zdW1lcnMgdXNpbmcgdGVtcGxhdGUgYmluZGluZ3MuXG4gICAgcmVnaXN0ZXJJbnB1dEludGVyYWN0aW9uSGFuZGxlcjogKCkgPT4ge30sXG4gICAgZGVyZWdpc3RlcklucHV0SW50ZXJhY3Rpb25IYW5kbGVyOiAoKSA9PiB7fSxcblxuICAgIC8vIFdlIGRvIG5vdCBoYXZlIGEgcmVmZXJlbmNlIHRvIHRoZSBuYXRpdmUgaW5wdXQgc2luY2Ugd2Ugd29yayB3aXRoIGFic3RyYWN0IGZvcm0gZmllbGRcbiAgICAvLyBjb250cm9scy4gTURDIG5lZWRzIGEgcmVmZXJlbmNlIHRvIHRoZSBuYXRpdmUgaW5wdXQgb3B0aW9uYWxseSB0byBoYW5kbGUgY2hhcmFjdGVyXG4gICAgLy8gY291bnRpbmcgYW5kIHZhbHVlIHVwZGF0aW5nLiBUaGVzZSBhcmUgYm90aCB0aGluZ3Mgd2UgZG8gbm90IGhhbmRsZSBmcm9tIHdpdGhpbiB0aGVcbiAgICAvLyBmb3JtIGZpZWxkLCBzbyB3ZSBjYW4ganVzdCByZXR1cm4gbnVsbC5cbiAgICBnZXROYXRpdmVJbnB1dDogKCkgPT4gbnVsbCxcblxuICAgIC8vIFRoaXMgbWV0aG9kIHdpbGwgbmV2ZXIgYmUgY2FsbGVkIHNpbmNlIHdlIGRvIG5vdCBoYXZlIHRoZSBhYmlsaXR5IHRvIGFkZCBldmVudCBsaXN0ZW5lcnNcbiAgICAvLyB0byB0aGUgbmF0aXZlIGlucHV0LiBUaGlzIGlzIGJlY2F1c2UgdGhlIGZvcm0gY29udHJvbCBpcyBub3QgbmVjZXNzYXJpbHkgYW4gaW5wdXQsIGFuZFxuICAgIC8vIHRoZSBmb3JtIGZpZWxkIGRlYWxzIHdpdGggYWJzdHJhY3QgZm9ybSBjb250cm9scyBvZiBhbnkgdHlwZS5cbiAgICBzZXRMaW5lUmlwcGxlVHJhbnNmb3JtT3JpZ2luOiAoKSA9PiB7fSxcblxuICAgIC8vIFRoZSBmb3VuZGF0aW9uIHRyaWVzIHRvIHJlZ2lzdGVyIGNsaWNrIGFuZCBrZXlib2FyZCBldmVudHMgb24gdGhlIGZvcm0gZmllbGQgdG8gZmlndXJlIG91dFxuICAgIC8vIGlmIHRoZSBpbnB1dCB2YWx1ZSBjaGFuZ2VzIHRocm91Z2ggdXNlciBpbnRlcmFjdGlvbi4gQmFzZWQgb24gdGhhdCwgdGhlIGZvdW5kYXRpb24gdHJpZXNcbiAgICAvLyB0byBmb2N1cyB0aGUgaW5wdXQuIFNpbmNlIHdlIGRvIG5vdCBoYW5kbGUgdGhlIGlucHV0IHZhbHVlIGFzIHBhcnQgb2YgdGhlIGZvcm0gZmllbGQsIG5vclxuICAgIC8vIGl0J3MgZ3VhcmFudGVlZCB0byBiZSBhbiBpbnB1dCAoc2VlIGFkYXB0ZXIgbWV0aG9kcyBhYm92ZSksIHRoaXMgaXMgYSBub29wLlxuICAgIGRlcmVnaXN0ZXJUZXh0RmllbGRJbnRlcmFjdGlvbkhhbmRsZXI6ICgpID0+IHt9LFxuICAgIHJlZ2lzdGVyVGV4dEZpZWxkSW50ZXJhY3Rpb25IYW5kbGVyOiAoKSA9PiB7fSxcblxuICAgIC8vIFRoZSBmb3VuZGF0aW9uIHRyaWVzIHRvIHNldHVwIGEgXCJNdXRhdGlvbk9ic2VydmVyXCIgaW4gb3JkZXIgdG8gd2F0Y2ggZm9yIGF0dHJpYnV0ZXNcbiAgICAvLyBsaWtlIFwibWF4bGVuZ3RoXCIgb3IgXCJwYXR0ZXJuXCIgdG8gY2hhbmdlLiBUaGUgZm91bmRhdGlvbiB3aWxsIHVwZGF0ZSB0aGUgdmFsaWRpdHkgc3RhdGVcbiAgICAvLyBiYXNlZCBvbiB0aGF0LiBXZSBkbyBub3QgbmVlZCB0aGlzIGxvZ2ljIHNpbmNlIHdlIGhhbmRsZSB0aGUgdmFsaWRpdHkgdGhyb3VnaCB0aGVcbiAgICAvLyBhYnN0cmFjdCBmb3JtIGNvbnRyb2wgaW5zdGFuY2UuXG4gICAgZGVyZWdpc3RlclZhbGlkYXRpb25BdHRyaWJ1dGVDaGFuZ2VIYW5kbGVyOiAoKSA9PiB7fSxcbiAgICByZWdpc3RlclZhbGlkYXRpb25BdHRyaWJ1dGVDaGFuZ2VIYW5kbGVyOiAoKSA9PiBudWxsIGFzIGFueSxcblxuICAgIC8vIFVzZWQgYnkgZm91bmRhdGlvbiB0byBkeW5hbWljYWxseSByZW1vdmUgYXJpYS1kZXNjcmliZWRieSB3aGVuIHRoZSBoaW50IHRleHRcbiAgICAvLyBpcyBzaG93biBvbmx5IG9uIGludmFsaWQgc3RhdGUsIHdoaWNoIHNob3VsZCBub3QgYmUgYXBwbGljYWJsZSBoZXJlLlxuICAgIHNldElucHV0QXR0cjogKCkgPT4gdW5kZWZpbmVkLFxuICAgIHJlbW92ZUlucHV0QXR0cjogKCkgPT4gdW5kZWZpbmVkLFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgX2VsZW1lbnRSZWY6IEVsZW1lbnRSZWYsXG4gICAgcHJpdmF0ZSBfY2hhbmdlRGV0ZWN0b3JSZWY6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgX25nWm9uZTogTmdab25lLFxuICAgIHByaXZhdGUgX2RpcjogRGlyZWN0aW9uYWxpdHksXG4gICAgcHJpdmF0ZSBfcGxhdGZvcm06IFBsYXRmb3JtLFxuICAgIEBPcHRpb25hbCgpXG4gICAgQEluamVjdChNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMpXG4gICAgcHJpdmF0ZSBfZGVmYXVsdHM/OiBNYXRGb3JtRmllbGREZWZhdWx0T3B0aW9ucyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEFOSU1BVElPTl9NT0RVTEVfVFlQRSkgcHVibGljIF9hbmltYXRpb25Nb2RlPzogc3RyaW5nLFxuICAgIEBJbmplY3QoRE9DVU1FTlQpIHByaXZhdGUgX2RvY3VtZW50PzogYW55LFxuICApIHtcbiAgICBpZiAoX2RlZmF1bHRzKSB7XG4gICAgICBpZiAoX2RlZmF1bHRzLmFwcGVhcmFuY2UpIHtcbiAgICAgICAgdGhpcy5hcHBlYXJhbmNlID0gX2RlZmF1bHRzLmFwcGVhcmFuY2U7XG4gICAgICB9XG4gICAgICB0aGlzLl9oaWRlUmVxdWlyZWRNYXJrZXIgPSBCb29sZWFuKF9kZWZhdWx0cz8uaGlkZVJlcXVpcmVkTWFya2VyKTtcbiAgICAgIGlmIChfZGVmYXVsdHMuY29sb3IpIHtcbiAgICAgICAgdGhpcy5jb2xvciA9IF9kZWZhdWx0cy5jb2xvcjtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgdGhpcy5fZm91bmRhdGlvbiA9IG5ldyBNRENUZXh0RmllbGRGb3VuZGF0aW9uKHRoaXMuX2FkYXB0ZXIpO1xuXG4gICAgLy8gTURDIHVzZXMgdGhlIFwic2hvdWxkRmxvYXRcIiBnZXR0ZXIgdG8ga25vdyB3aGV0aGVyIHRoZSBsYWJlbCBpcyBjdXJyZW50bHkgZmxvYXRpbmcuIFRoaXNcbiAgICAvLyBkb2VzIG5vdCBtYXRjaCBvdXIgaW1wbGVtZW50YXRpb24gb2Ygd2hlbiB0aGUgbGFiZWwgZmxvYXRzIGJlY2F1c2Ugd2Ugc3VwcG9ydCBtb3JlIGNhc2VzLlxuICAgIC8vIEZvciBleGFtcGxlLCBjb25zdW1lcnMgY2FuIHNldCBcIkBJbnB1dCBmbG9hdExhYmVsXCIgdG8gYWx3YXlzLCBvciB0aGUgY3VzdG9tIGZvcm0gZmllbGRcbiAgICAvLyBjb250cm9sIGNhbiBzZXQgXCJNYXRGb3JtRmllbGRDb250cm9sI3Nob3VsZExhYmVsRmxvYXRcIiB0byB0cnVlLiBUbyBlbnN1cmUgdGhhdCBNREMga25vd3NcbiAgICAvLyB3aGVuIHRoZSBsYWJlbCBpcyBmbG9hdGluZywgd2Ugb3ZlcndyaXRlIHRoZSBwcm9wZXJ0eSB0byBiZSBiYXNlZCBvbiB0aGUgbWV0aG9kIHdlIHVzZSB0b1xuICAgIC8vIGRldGVybWluZSB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgZmxvYXRpbmcgbGFiZWwuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMuX2ZvdW5kYXRpb24sICdzaG91bGRGbG9hdCcsIHtcbiAgICAgIGdldDogKCkgPT4gdGhpcy5fc2hvdWxkTGFiZWxGbG9hdCgpLFxuICAgIH0pO1xuXG4gICAgLy8gQnkgZGVmYXVsdCwgdGhlIGZvdW5kYXRpb24gZGV0ZXJtaW5lcyB0aGUgdmFsaWRpdHkgb2YgdGhlIHRleHQtZmllbGQgZnJvbSB0aGVcbiAgICAvLyBzcGVjaWZpZWQgbmF0aXZlIGlucHV0LiBTaW5jZSB3ZSBkb24ndCBwYXNzIGEgbmF0aXZlIGlucHV0IHRvIHRoZSBmb3VuZGF0aW9uIGJlY2F1c2VcbiAgICAvLyBhYnN0cmFjdCBmb3JtIGNvbnRyb2xzIGFyZSBub3QgbmVjZXNzYXJpbHkgY29uc2lzdGluZyBvZiBhbiBpbnB1dCwgd2UgaGFuZGxlIHRoZVxuICAgIC8vIHRleHQtZmllbGQgdmFsaWRpdHkgdGhyb3VnaCB0aGUgYWJzdHJhY3QgZm9ybSBmaWVsZCBjb250cm9sIHN0YXRlLlxuICAgIHRoaXMuX2ZvdW5kYXRpb24uaXNWYWxpZCA9ICgpID0+ICF0aGlzLl9jb250cm9sLmVycm9yU3RhdGU7XG5cbiAgICAvLyBJbml0aWFsIGZvY3VzIHN0YXRlIHN5bmMuIFRoaXMgaGFwcGVucyByYXJlbHksIGJ1dCB3ZSB3YW50IHRvIGFjY291bnQgZm9yXG4gICAgLy8gaXQgaW4gY2FzZSB0aGUgZm9ybSBmaWVsZCBjb250cm9sIGhhcyBcImZvY3VzZWRcIiBzZXQgdG8gdHJ1ZSBvbiBpbml0LlxuICAgIHRoaXMuX3VwZGF0ZUZvY3VzU3RhdGUoKTtcbiAgICAvLyBJbml0aWFsIG5vdGNoIHdpZHRoIHVwZGF0ZS4gVGhpcyBpcyBuZWVkZWQgaW4gY2FzZSB0aGUgdGV4dC1maWVsZCBsYWJlbCBmbG9hdHNcbiAgICAvLyBvbiBpbml0aWFsaXphdGlvbiwgYW5kIHJlbmRlcnMgaW5zaWRlIG9mIHRoZSBub3RjaGVkIG91dGxpbmUuXG4gICAgdGhpcy5fcmVmcmVzaE91dGxpbmVOb3RjaFdpZHRoKCk7XG4gICAgLy8gTWFrZSBzdXJlIGZvbnRzIGFyZSBsb2FkZWQgYmVmb3JlIGNhbGN1bGF0aW5nIHRoZSB3aWR0aC5cbiAgICAvLyB6b25lLmpzIGN1cnJlbnRseSBkb2Vzbid0IHBhdGNoIHRoZSBGb250RmFjZVNldCBBUEkgc28gdHdvIGNhbGxzIHRvXG4gICAgLy8gX3JlZnJlc2hPdXRsaW5lTm90Y2hXaWR0aCBpcyBuZWVkZWQgZm9yIHRoaXMgdG8gd29yayBwcm9wZXJseSBpbiBhc3luYyB0ZXN0cy5cbiAgICAvLyBGdXJ0aGVybW9yZSBpZiB0aGUgZm9udCB0YWtlcyBhIGxvbmcgdGltZSB0byBsb2FkIHdlIHdhbnQgdGhlIG91dGxpbmUgbm90Y2ggdG8gYmUgY2xvc2VcbiAgICAvLyB0byB0aGUgY29ycmVjdCB3aWR0aCBmcm9tIHRoZSBzdGFydCB0aGVuIGNvcnJlY3QgaXRzZWxmIHdoZW4gdGhlIGZvbnRzIGxvYWQuXG4gICAgaWYgKHRoaXMuX2RvY3VtZW50Py5mb250cz8ucmVhZHkpIHtcbiAgICAgIHRoaXMuX2RvY3VtZW50LmZvbnRzLnJlYWR5LnRoZW4oKCkgPT4ge1xuICAgICAgICB0aGlzLl9yZWZyZXNoT3V0bGluZU5vdGNoV2lkdGgoKTtcbiAgICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRm9udEZhY2VTZXQgaXMgbm90IHN1cHBvcnRlZCBpbiBJRVxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLl9yZWZyZXNoT3V0bGluZU5vdGNoV2lkdGgoKSwgMTAwKTtcbiAgICB9XG4gICAgLy8gRW5hYmxlIGFuaW1hdGlvbnMgbm93LiBUaGlzIGVuc3VyZXMgd2UgZG9uJ3QgYW5pbWF0ZSBvbiBpbml0aWFsIHJlbmRlci5cbiAgICB0aGlzLl9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZSA9ICdlbnRlcic7XG4gICAgLy8gQmVjYXVzZSB0aGUgYWJvdmUgY2hhbmdlcyBhIHZhbHVlIHVzZWQgaW4gdGhlIHRlbXBsYXRlIGFmdGVyIGl0IHdhcyBjaGVja2VkLCB3ZSBuZWVkXG4gICAgLy8gdG8gdHJpZ2dlciBDRCBvciB0aGUgY2hhbmdlIG1pZ2h0IG5vdCBiZSByZWZsZWN0ZWQgaWYgdGhlcmUgaXMgbm8gb3RoZXIgQ0Qgc2NoZWR1bGVkLlxuICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50SW5pdCgpIHtcbiAgICB0aGlzLl9hc3NlcnRGb3JtRmllbGRDb250cm9sKCk7XG4gICAgdGhpcy5faW5pdGlhbGl6ZUNvbnRyb2woKTtcbiAgICB0aGlzLl9pbml0aWFsaXplU3Vic2NyaXB0KCk7XG4gICAgdGhpcy5faW5pdGlhbGl6ZVByZWZpeEFuZFN1ZmZpeCgpO1xuICAgIHRoaXMuX2luaXRpYWxpemVPdXRsaW5lTGFiZWxPZmZzZXRTdWJzY3JpcHRpb25zKCk7XG4gIH1cblxuICBuZ0FmdGVyQ29udGVudENoZWNrZWQoKSB7XG4gICAgdGhpcy5fYXNzZXJ0Rm9ybUZpZWxkQ29udHJvbCgpO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5fZm91bmRhdGlvbj8uZGVzdHJveSgpO1xuICAgIHRoaXMuX2Rlc3Ryb3llZC5uZXh0KCk7XG4gICAgdGhpcy5fZGVzdHJveWVkLmNvbXBsZXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgaWQgb2YgdGhlIGxhYmVsIGVsZW1lbnQuIElmIG5vIGxhYmVsIGlzIHByZXNlbnQsIHJldHVybnMgYG51bGxgLlxuICAgKi9cbiAgZ2V0TGFiZWxJZCgpOiBzdHJpbmcgfCBudWxsIHtcbiAgICByZXR1cm4gdGhpcy5faGFzRmxvYXRpbmdMYWJlbCgpID8gdGhpcy5fbGFiZWxJZCA6IG51bGw7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhbiBFbGVtZW50UmVmIGZvciB0aGUgZWxlbWVudCB0aGF0IGEgb3ZlcmxheSBhdHRhY2hlZCB0byB0aGUgZm9ybSBmaWVsZFxuICAgKiBzaG91bGQgYmUgcG9zaXRpb25lZCByZWxhdGl2ZSB0by5cbiAgICovXG4gIGdldENvbm5lY3RlZE92ZXJsYXlPcmlnaW4oKTogRWxlbWVudFJlZiB7XG4gICAgcmV0dXJuIHRoaXMuX3RleHRGaWVsZCB8fCB0aGlzLl9lbGVtZW50UmVmO1xuICB9XG5cbiAgLyoqIEFuaW1hdGVzIHRoZSBwbGFjZWhvbGRlciB1cCBhbmQgbG9ja3MgaXQgaW4gcG9zaXRpb24uICovXG4gIF9hbmltYXRlQW5kTG9ja0xhYmVsKCk6IHZvaWQge1xuICAgIC8vIFRoaXMgaXMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IG9ubHkuIENvbnN1bWVycyBvZiB0aGUgZm9ybSBmaWVsZCBtaWdodCB1c2VcbiAgICAvLyB0aGlzIG1ldGhvZC4gZS5nLiB0aGUgYXV0b2NvbXBsZXRlIHRyaWdnZXIuIFRoaXMgbWV0aG9kIGhhcyBiZWVuIGFkZGVkIHRvIHRoZSBub24tTURDXG4gICAgLy8gZm9ybSBmaWVsZCBiZWNhdXNlIHNldHRpbmcgXCJmbG9hdExhYmVsXCIgdG8gXCJhbHdheXNcIiBjYXVzZWQgdGhlIGxhYmVsIHRvIGZsb2F0IHdpdGhvdXRcbiAgICAvLyBhbmltYXRpb24uIFRoaXMgaXMgZGlmZmVyZW50IGluIE1EQyB3aGVyZSB0aGUgbGFiZWwgYWx3YXlzIGFuaW1hdGVzLCBzbyB0aGlzIG1ldGhvZFxuICAgIC8vIGlzIG5vIGxvbmdlciBuZWNlc3NhcnkuIFRoZXJlIGRvZXNuJ3Qgc2VlbSBhbnkgYmVuZWZpdCBpbiBhZGRpbmcgbG9naWMgdG8gYWxsb3cgY2hhbmdpbmdcbiAgICAvLyB0aGUgZmxvYXRpbmcgbGFiZWwgc3RhdGUgd2l0aG91dCBhbmltYXRpb25zLiBUaGUgbm9uLU1EQyBpbXBsZW1lbnRhdGlvbiB3YXMgaW5jb25zaXN0ZW50XG4gICAgLy8gYmVjYXVzZSBpdCBhbHdheXMgYW5pbWF0ZXMgaWYgXCJmbG9hdExhYmVsXCIgaXMgc2V0IGF3YXkgZnJvbSBcImFsd2F5c1wiLlxuICAgIC8vIFRPRE8oZGV2dmVyc2lvbik6IGNvbnNpZGVyIHJlbW92aW5nIHRoaXMgbWV0aG9kIHdoZW4gcmVsZWFzaW5nIHRoZSBNREMgZm9ybSBmaWVsZC5cbiAgICBpZiAodGhpcy5faGFzRmxvYXRpbmdMYWJlbCgpKSB7XG4gICAgICB0aGlzLmZsb2F0TGFiZWwgPSAnYWx3YXlzJztcbiAgICB9XG4gIH1cblxuICAvKiogSW5pdGlhbGl6ZXMgdGhlIHJlZ2lzdGVyZWQgZm9ybSBmaWVsZCBjb250cm9sLiAqL1xuICBwcml2YXRlIF9pbml0aWFsaXplQ29udHJvbCgpIHtcbiAgICBjb25zdCBjb250cm9sID0gdGhpcy5fY29udHJvbDtcblxuICAgIGlmIChjb250cm9sLmNvbnRyb2xUeXBlKSB7XG4gICAgICB0aGlzLl9lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChcbiAgICAgICAgYG1hdC1tZGMtZm9ybS1maWVsZC10eXBlLSR7Y29udHJvbC5jb250cm9sVHlwZX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBTdWJzY3JpYmUgdG8gY2hhbmdlcyBpbiB0aGUgY2hpbGQgY29udHJvbCBzdGF0ZSBpbiBvcmRlciB0byB1cGRhdGUgdGhlIGZvcm0gZmllbGQgVUkuXG4gICAgY29udHJvbC5zdGF0ZUNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX3VwZGF0ZUZvY3VzU3RhdGUoKTtcbiAgICAgIHRoaXMuX3N5bmNEZXNjcmliZWRCeUlkcygpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICAvLyBSdW4gY2hhbmdlIGRldGVjdGlvbiBpZiB0aGUgdmFsdWUgY2hhbmdlcy5cbiAgICBpZiAoY29udHJvbC5uZ0NvbnRyb2wgJiYgY29udHJvbC5uZ0NvbnRyb2wudmFsdWVDaGFuZ2VzKSB7XG4gICAgICBjb250cm9sLm5nQ29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCkpXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4gdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCkpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgX2NoZWNrUHJlZml4QW5kU3VmZml4VHlwZXMoKSB7XG4gICAgdGhpcy5faGFzSWNvblByZWZpeCA9ICEhdGhpcy5fcHJlZml4Q2hpbGRyZW4uZmluZChwID0+ICFwLl9pc1RleHQpO1xuICAgIHRoaXMuX2hhc1RleHRQcmVmaXggPSAhIXRoaXMuX3ByZWZpeENoaWxkcmVuLmZpbmQocCA9PiBwLl9pc1RleHQpO1xuICAgIHRoaXMuX2hhc0ljb25TdWZmaXggPSAhIXRoaXMuX3N1ZmZpeENoaWxkcmVuLmZpbmQocyA9PiAhcy5faXNUZXh0KTtcbiAgICB0aGlzLl9oYXNUZXh0U3VmZml4ID0gISF0aGlzLl9zdWZmaXhDaGlsZHJlbi5maW5kKHMgPT4gcy5faXNUZXh0KTtcbiAgfVxuXG4gIC8qKiBJbml0aWFsaXplcyB0aGUgcHJlZml4IGFuZCBzdWZmaXggY29udGFpbmVycy4gKi9cbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZVByZWZpeEFuZFN1ZmZpeCgpIHtcbiAgICB0aGlzLl9jaGVja1ByZWZpeEFuZFN1ZmZpeFR5cGVzKCk7XG4gICAgLy8gTWFyayB0aGUgZm9ybSBmaWVsZCBhcyBkaXJ0eSB3aGVuZXZlciB0aGUgcHJlZml4IG9yIHN1ZmZpeCBjaGlsZHJlbiBjaGFuZ2UuIFRoaXNcbiAgICAvLyBpcyBuZWNlc3NhcnkgYmVjYXVzZSB3ZSBjb25kaXRpb25hbGx5IGRpc3BsYXkgdGhlIHByZWZpeC9zdWZmaXggY29udGFpbmVycyBiYXNlZFxuICAgIC8vIG9uIHdoZXRoZXIgdGhlcmUgaXMgcHJvamVjdGVkIGNvbnRlbnQuXG4gICAgbWVyZ2UodGhpcy5fcHJlZml4Q2hpbGRyZW4uY2hhbmdlcywgdGhpcy5fc3VmZml4Q2hpbGRyZW4uY2hhbmdlcykuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX2NoZWNrUHJlZml4QW5kU3VmZml4VHlwZXMoKTtcbiAgICAgIHRoaXMuX2NoYW5nZURldGVjdG9yUmVmLm1hcmtGb3JDaGVjaygpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBzdWJzY3JpcHQgYnkgdmFsaWRhdGluZyBoaW50cyBhbmQgc3luY2hyb25pemluZyBcImFyaWEtZGVzY3JpYmVkYnlcIiBpZHNcbiAgICogd2l0aCB0aGUgY3VzdG9tIGZvcm0gZmllbGQgY29udHJvbC4gQWxzbyBzdWJzY3JpYmVzIHRvIGhpbnQgYW5kIGVycm9yIGNoYW5nZXMgaW4gb3JkZXJcbiAgICogdG8gYmUgYWJsZSB0byB2YWxpZGF0ZSBhbmQgc3luY2hyb25pemUgaWRzIG9uIGNoYW5nZS5cbiAgICovXG4gIHByaXZhdGUgX2luaXRpYWxpemVTdWJzY3JpcHQoKSB7XG4gICAgLy8gUmUtdmFsaWRhdGUgd2hlbiB0aGUgbnVtYmVyIG9mIGhpbnRzIGNoYW5nZXMuXG4gICAgdGhpcy5faGludENoaWxkcmVuLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX3Byb2Nlc3NIaW50cygpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICAvLyBVcGRhdGUgdGhlIGFyaWEtZGVzY3JpYmVkIGJ5IHdoZW4gdGhlIG51bWJlciBvZiBlcnJvcnMgY2hhbmdlcy5cbiAgICB0aGlzLl9lcnJvckNoaWxkcmVuLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgIHRoaXMuX3N5bmNEZXNjcmliZWRCeUlkcygpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG5cbiAgICAvLyBJbml0aWFsIG1hdC1oaW50IHZhbGlkYXRpb24gYW5kIHN1YnNjcmlwdCBkZXNjcmliZWRCeUlkcyBzeW5jLlxuICAgIHRoaXMuX3ZhbGlkYXRlSGludHMoKTtcbiAgICB0aGlzLl9zeW5jRGVzY3JpYmVkQnlJZHMoKTtcbiAgfVxuXG4gIC8qKiBUaHJvd3MgYW4gZXJyb3IgaWYgdGhlIGZvcm0gZmllbGQncyBjb250cm9sIGlzIG1pc3NpbmcuICovXG4gIHByaXZhdGUgX2Fzc2VydEZvcm1GaWVsZENvbnRyb2woKSB7XG4gICAgaWYgKCF0aGlzLl9jb250cm9sICYmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpKSB7XG4gICAgICB0aHJvdyBnZXRNYXRGb3JtRmllbGRNaXNzaW5nQ29udHJvbEVycm9yKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfdXBkYXRlRm9jdXNTdGF0ZSgpIHtcbiAgICAvLyBVc3VhbGx5IHRoZSBNREMgZm91bmRhdGlvbiB3b3VsZCBjYWxsIFwiYWN0aXZhdGVGb2N1c1wiIGFuZCBcImRlYWN0aXZhdGVGb2N1c1wiIHdoZW5ldmVyXG4gICAgLy8gY2VydGFpbiBET00gZXZlbnRzIGFyZSBlbWl0dGVkLiBUaGlzIGlzIG5vdCBwb3NzaWJsZSBpbiBvdXIgaW1wbGVtZW50YXRpb24gb2YgdGhlXG4gICAgLy8gZm9ybSBmaWVsZCBiZWNhdXNlIHdlIHN1cHBvcnQgYWJzdHJhY3QgZm9ybSBmaWVsZCBjb250cm9scyB3aGljaCBhcmUgbm90IG5lY2Vzc2FyaWx5XG4gICAgLy8gb2YgdHlwZSBpbnB1dCwgbm9yIGRvIHdlIGhhdmUgYSByZWZlcmVuY2UgdG8gYSBuYXRpdmUgZm9ybSBmaWVsZCBjb250cm9sIGVsZW1lbnQuIEluc3RlYWRcbiAgICAvLyB3ZSBoYW5kbGUgdGhlIGZvY3VzIGJ5IGNoZWNraW5nIGlmIHRoZSBhYnN0cmFjdCBmb3JtIGZpZWxkIGNvbnRyb2wgZm9jdXNlZCBzdGF0ZSBjaGFuZ2VzLlxuICAgIGlmICh0aGlzLl9jb250cm9sLmZvY3VzZWQgJiYgIXRoaXMuX2lzRm9jdXNlZCkge1xuICAgICAgdGhpcy5faXNGb2N1c2VkID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2ZvdW5kYXRpb24uYWN0aXZhdGVGb2N1cygpO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuX2NvbnRyb2wuZm9jdXNlZCAmJiAodGhpcy5faXNGb2N1c2VkIHx8IHRoaXMuX2lzRm9jdXNlZCA9PT0gbnVsbCkpIHtcbiAgICAgIHRoaXMuX2lzRm9jdXNlZCA9IGZhbHNlO1xuICAgICAgdGhpcy5fZm91bmRhdGlvbi5kZWFjdGl2YXRlRm9jdXMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIGZsb2F0aW5nIGxhYmVsIGluIHRoZSBkb2NrZWQgc3RhdGUgbmVlZHMgdG8gYWNjb3VudCBmb3IgcHJlZml4ZXMuIFRoZSBob3Jpem9udGFsIG9mZnNldFxuICAgKiBpcyBjYWxjdWxhdGVkIHdoZW5ldmVyIHRoZSBhcHBlYXJhbmNlIGNoYW5nZXMgdG8gYG91dGxpbmVgLCB0aGUgcHJlZml4ZXMgY2hhbmdlLCBvciB3aGVuIHRoZVxuICAgKiBmb3JtIGZpZWxkIGlzIGFkZGVkIHRvIHRoZSBET00uIFRoaXMgbWV0aG9kIHNldHMgdXAgYWxsIHN1YnNjcmlwdGlvbnMgd2hpY2ggYXJlIG5lZWRlZCB0b1xuICAgKiB0cmlnZ2VyIHRoZSBsYWJlbCBvZmZzZXQgdXBkYXRlLiBJbiBnZW5lcmFsLCB3ZSB3YW50IHRvIGF2b2lkIHBlcmZvcm1pbmcgbWVhc3VyZW1lbnRzIG9mdGVuLFxuICAgKiBzbyB3ZSByZWx5IG9uIHRoZSBgTmdab25lYCBhcyBpbmRpY2F0b3Igd2hlbiB0aGUgb2Zmc2V0IHNob3VsZCBiZSByZWNhbGN1bGF0ZWQsIGluc3RlYWQgb2ZcbiAgICogY2hlY2tpbmcgZXZlcnkgY2hhbmdlIGRldGVjdGlvbiBjeWNsZS5cbiAgICovXG4gIHByaXZhdGUgX2luaXRpYWxpemVPdXRsaW5lTGFiZWxPZmZzZXRTdWJzY3JpcHRpb25zKCkge1xuICAgIC8vIFdoZW5ldmVyIHRoZSBwcmVmaXggY2hhbmdlcywgc2NoZWR1bGUgYW4gdXBkYXRlIG9mIHRoZSBsYWJlbCBvZmZzZXQuXG4gICAgdGhpcy5fcHJlZml4Q2hpbGRyZW4uY2hhbmdlcy5zdWJzY3JpYmUoXG4gICAgICAoKSA9PiAodGhpcy5fbmVlZHNPdXRsaW5lTGFiZWxPZmZzZXRVcGRhdGVPblN0YWJsZSA9IHRydWUpLFxuICAgICk7XG5cbiAgICAvLyBOb3RlIHRoYXQgd2UgaGF2ZSB0byBydW4gb3V0c2lkZSBvZiB0aGUgYE5nWm9uZWAgZXhwbGljaXRseSwgaW4gb3JkZXIgdG8gYXZvaWRcbiAgICAvLyB0aHJvd2luZyB1c2VycyBpbnRvIGFuIGluZmluaXRlIGxvb3AgaWYgYHpvbmUtcGF0Y2gtcnhqc2AgaXMgaW5jbHVkZWQuXG4gICAgdGhpcy5fbmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcbiAgICAgIHRoaXMuX25nWm9uZS5vblN0YWJsZS5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5fbmVlZHNPdXRsaW5lTGFiZWxPZmZzZXRVcGRhdGVPblN0YWJsZSkge1xuICAgICAgICAgIHRoaXMuX25lZWRzT3V0bGluZUxhYmVsT2Zmc2V0VXBkYXRlT25TdGFibGUgPSBmYWxzZTtcbiAgICAgICAgICB0aGlzLl91cGRhdGVPdXRsaW5lTGFiZWxPZmZzZXQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9kaXIuY2hhbmdlXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4gKHRoaXMuX25lZWRzT3V0bGluZUxhYmVsT2Zmc2V0VXBkYXRlT25TdGFibGUgPSB0cnVlKSk7XG4gIH1cblxuICAvKiogV2hldGhlciB0aGUgZmxvYXRpbmcgbGFiZWwgc2hvdWxkIGFsd2F5cyBmbG9hdCBvciBub3QuICovXG4gIF9zaG91bGRBbHdheXNGbG9hdCgpIHtcbiAgICByZXR1cm4gdGhpcy5mbG9hdExhYmVsID09PSAnYWx3YXlzJztcbiAgfVxuXG4gIF9oYXNPdXRsaW5lKCkge1xuICAgIHJldHVybiB0aGlzLmFwcGVhcmFuY2UgPT09ICdvdXRsaW5lJztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBsYWJlbCBzaG91bGQgZGlzcGxheSBpbiB0aGUgaW5maXguIExhYmVscyBpbiB0aGUgb3V0bGluZSBhcHBlYXJhbmNlIGFyZVxuICAgKiBkaXNwbGF5ZWQgYXMgcGFydCBvZiB0aGUgbm90Y2hlZC1vdXRsaW5lIGFuZCBhcmUgaG9yaXpvbnRhbGx5IG9mZnNldCB0byBhY2NvdW50IGZvclxuICAgKiBmb3JtIGZpZWxkIHByZWZpeCBjb250ZW50LiBUaGlzIHdvbid0IHdvcmsgaW4gc2VydmVyIHNpZGUgcmVuZGVyaW5nIHNpbmNlIHdlIGNhbm5vdFxuICAgKiBtZWFzdXJlIHRoZSB3aWR0aCBvZiB0aGUgcHJlZml4IGNvbnRhaW5lci4gVG8gbWFrZSB0aGUgZG9ja2VkIGxhYmVsIGFwcGVhciBhcyBpZiB0aGVcbiAgICogcmlnaHQgb2Zmc2V0IGhhcyBiZWVuIGNhbGN1bGF0ZWQsIHdlIGZvcmNpYmx5IHJlbmRlciB0aGUgbGFiZWwgaW5zaWRlIHRoZSBpbmZpeC4gU2luY2VcbiAgICogdGhlIGxhYmVsIGlzIHBhcnQgb2YgdGhlIGluZml4LCB0aGUgbGFiZWwgY2Fubm90IG92ZXJmbG93IHRoZSBwcmVmaXggY29udGVudC5cbiAgICovXG4gIF9mb3JjZURpc3BsYXlJbmZpeExhYmVsKCkge1xuICAgIHJldHVybiAhdGhpcy5fcGxhdGZvcm0uaXNCcm93c2VyICYmIHRoaXMuX3ByZWZpeENoaWxkcmVuLmxlbmd0aCAmJiAhdGhpcy5fc2hvdWxkTGFiZWxGbG9hdCgpO1xuICB9XG5cbiAgX2hhc0Zsb2F0aW5nTGFiZWwoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5fbGFiZWxDaGlsZE5vblN0YXRpYyB8fCAhIXRoaXMuX2xhYmVsQ2hpbGRTdGF0aWM7XG4gIH1cblxuICBfc2hvdWxkTGFiZWxGbG9hdCgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29udHJvbC5zaG91bGRMYWJlbEZsb2F0IHx8IHRoaXMuX3Nob3VsZEFsd2F5c0Zsb2F0KCk7XG4gIH1cblxuICAvKiogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgY2xhc3MgZnJvbSB0aGUgTmdDb250cm9sIHNob3VsZCBiZSBmb3J3YXJkZWQgdG8gdGhlIGhvc3QgZWxlbWVudC4gKi9cbiAgX3Nob3VsZEZvcndhcmQocHJvcDoga2V5b2YgTmdDb250cm9sKTogYm9vbGVhbiB7XG4gICAgY29uc3QgbmdDb250cm9sID0gdGhpcy5fY29udHJvbCA/IHRoaXMuX2NvbnRyb2wubmdDb250cm9sIDogbnVsbDtcbiAgICByZXR1cm4gbmdDb250cm9sICYmIG5nQ29udHJvbFtwcm9wXTtcbiAgfVxuXG4gIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZGlzcGxheSBoaW50cyBvciBlcnJvcnMuICovXG4gIF9nZXREaXNwbGF5ZWRNZXNzYWdlcygpOiAnZXJyb3InIHwgJ2hpbnQnIHtcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JDaGlsZHJlbiAmJiB0aGlzLl9lcnJvckNoaWxkcmVuLmxlbmd0aCA+IDAgJiYgdGhpcy5fY29udHJvbC5lcnJvclN0YXRlXG4gICAgICA/ICdlcnJvcidcbiAgICAgIDogJ2hpbnQnO1xuICB9XG5cbiAgLyoqIFJlZnJlc2hlcyB0aGUgd2lkdGggb2YgdGhlIG91dGxpbmUtbm90Y2gsIGlmIHByZXNlbnQuICovXG4gIF9yZWZyZXNoT3V0bGluZU5vdGNoV2lkdGgoKSB7XG4gICAgaWYgKCF0aGlzLl9oYXNPdXRsaW5lKCkgfHwgIXRoaXMuX2Zsb2F0aW5nTGFiZWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gVGhlIG91dGxpbmUgbm90Y2ggc2hvdWxkIGJlIGJhc2VkIG9uIHRoZSBsYWJlbCB3aWR0aCwgYnV0IG5lZWRzIHRvIHJlc3BlY3QgdGhlIHNjYWxpbmdcbiAgICAvLyBhcHBsaWVkIHRvIHRoZSBsYWJlbCBpZiBpdCBhY3RpdmVseSBmbG9hdHMuIFNpbmNlIHRoZSBsYWJlbCBhbHdheXMgZmxvYXRzIHdoZW4gdGhlIG5vdGNoXG4gICAgLy8gaXMgb3BlbiwgdGhlIE1EQyB0ZXh0LWZpZWxkIGZsb2F0aW5nIGxhYmVsIHNjYWxpbmcgaXMgcmVzcGVjdGVkIGluIG5vdGNoIHdpZHRoIGNhbGN1bGF0aW9uLlxuICAgIHRoaXMuX291dGxpbmVOb3RjaFdpZHRoID0gdGhpcy5fZmxvYXRpbmdMYWJlbC5nZXRXaWR0aCgpICogbWRjVGV4dEZpZWxkTnVtYmVycy5MQUJFTF9TQ0FMRTtcbiAgfVxuXG4gIC8qKiBEb2VzIGFueSBleHRyYSBwcm9jZXNzaW5nIHRoYXQgaXMgcmVxdWlyZWQgd2hlbiBoYW5kbGluZyB0aGUgaGludHMuICovXG4gIHByaXZhdGUgX3Byb2Nlc3NIaW50cygpIHtcbiAgICB0aGlzLl92YWxpZGF0ZUhpbnRzKCk7XG4gICAgdGhpcy5fc3luY0Rlc2NyaWJlZEJ5SWRzKCk7XG4gIH1cblxuICAvKipcbiAgICogRW5zdXJlIHRoYXQgdGhlcmUgaXMgYSBtYXhpbXVtIG9mIG9uZSBvZiBlYWNoIFwibWF0LWhpbnRcIiBhbGlnbm1lbnQgc3BlY2lmaWVkLiBUaGUgaGludFxuICAgKiBsYWJlbCBzcGVjaWZpZWQgc2V0IHRocm91Z2ggdGhlIGlucHV0IGlzIGJlaW5nIGNvbnNpZGVyZWQgYXMgXCJzdGFydFwiIGFsaWduZWQuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGlzIGEgbm9vcCBpZiBBbmd1bGFyIHJ1bnMgaW4gcHJvZHVjdGlvbiBtb2RlLlxuICAgKi9cbiAgcHJpdmF0ZSBfdmFsaWRhdGVIaW50cygpIHtcbiAgICBpZiAodGhpcy5faGludENoaWxkcmVuICYmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpKSB7XG4gICAgICBsZXQgc3RhcnRIaW50OiBNYXRIaW50O1xuICAgICAgbGV0IGVuZEhpbnQ6IE1hdEhpbnQ7XG4gICAgICB0aGlzLl9oaW50Q2hpbGRyZW4uZm9yRWFjaCgoaGludDogTWF0SGludCkgPT4ge1xuICAgICAgICBpZiAoaGludC5hbGlnbiA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgIGlmIChzdGFydEhpbnQgfHwgdGhpcy5oaW50TGFiZWwpIHtcbiAgICAgICAgICAgIHRocm93IGdldE1hdEZvcm1GaWVsZER1cGxpY2F0ZWRIaW50RXJyb3IoJ3N0YXJ0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHN0YXJ0SGludCA9IGhpbnQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaGludC5hbGlnbiA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICBpZiAoZW5kSGludCkge1xuICAgICAgICAgICAgdGhyb3cgZ2V0TWF0Rm9ybUZpZWxkRHVwbGljYXRlZEhpbnRFcnJvcignZW5kJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVuZEhpbnQgPSBoaW50O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbGlzdCBvZiBlbGVtZW50IElEcyB0aGF0IGRlc2NyaWJlIHRoZSBjaGlsZCBjb250cm9sLiBUaGlzIGFsbG93cyB0aGUgY29udHJvbCB0byB1cGRhdGVcbiAgICogaXRzIGBhcmlhLWRlc2NyaWJlZGJ5YCBhdHRyaWJ1dGUgYWNjb3JkaW5nbHkuXG4gICAqL1xuICBwcml2YXRlIF9zeW5jRGVzY3JpYmVkQnlJZHMoKSB7XG4gICAgaWYgKHRoaXMuX2NvbnRyb2wpIHtcbiAgICAgIGxldCBpZHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgIC8vIFRPRE8od2FnbmVybWFjaWVsKTogUmVtb3ZlIHRoZSB0eXBlIGNoZWNrIHdoZW4gd2UgZmluZCB0aGUgcm9vdCBjYXVzZSBvZiB0aGlzIGJ1Zy5cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5fY29udHJvbC51c2VyQXJpYURlc2NyaWJlZEJ5ICYmXG4gICAgICAgIHR5cGVvZiB0aGlzLl9jb250cm9sLnVzZXJBcmlhRGVzY3JpYmVkQnkgPT09ICdzdHJpbmcnXG4gICAgICApIHtcbiAgICAgICAgaWRzLnB1c2goLi4udGhpcy5fY29udHJvbC51c2VyQXJpYURlc2NyaWJlZEJ5LnNwbGl0KCcgJykpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fZ2V0RGlzcGxheWVkTWVzc2FnZXMoKSA9PT0gJ2hpbnQnKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0SGludCA9IHRoaXMuX2hpbnRDaGlsZHJlblxuICAgICAgICAgID8gdGhpcy5faGludENoaWxkcmVuLmZpbmQoaGludCA9PiBoaW50LmFsaWduID09PSAnc3RhcnQnKVxuICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgY29uc3QgZW5kSGludCA9IHRoaXMuX2hpbnRDaGlsZHJlblxuICAgICAgICAgID8gdGhpcy5faGludENoaWxkcmVuLmZpbmQoaGludCA9PiBoaW50LmFsaWduID09PSAnZW5kJylcbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgICAgaWYgKHN0YXJ0SGludCkge1xuICAgICAgICAgIGlkcy5wdXNoKHN0YXJ0SGludC5pZCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5faGludExhYmVsKSB7XG4gICAgICAgICAgaWRzLnB1c2godGhpcy5faGludExhYmVsSWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVuZEhpbnQpIHtcbiAgICAgICAgICBpZHMucHVzaChlbmRIaW50LmlkKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9lcnJvckNoaWxkcmVuKSB7XG4gICAgICAgIGlkcy5wdXNoKC4uLnRoaXMuX2Vycm9yQ2hpbGRyZW4ubWFwKGVycm9yID0+IGVycm9yLmlkKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NvbnRyb2wuc2V0RGVzY3JpYmVkQnlJZHMoaWRzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgaG9yaXpvbnRhbCBvZmZzZXQgb2YgdGhlIGxhYmVsIGluIHRoZSBvdXRsaW5lIGFwcGVhcmFuY2UuIEluIHRoZSBvdXRsaW5lXG4gICAqIGFwcGVhcmFuY2UsIHRoZSBub3RjaGVkLW91dGxpbmUgYW5kIGxhYmVsIGFyZSBub3QgcmVsYXRpdmUgdG8gdGhlIGluZml4IGNvbnRhaW5lciBiZWNhdXNlXG4gICAqIHRoZSBvdXRsaW5lIGludGVuZHMgdG8gc3Vycm91bmQgcHJlZml4ZXMsIHN1ZmZpeGVzIGFuZCB0aGUgaW5maXguIFRoaXMgbWVhbnMgdGhhdCB0aGVcbiAgICogZmxvYXRpbmcgbGFiZWwgYnkgZGVmYXVsdCBvdmVybGFwcyBwcmVmaXhlcyBpbiB0aGUgZG9ja2VkIHN0YXRlLiBUbyBhdm9pZCB0aGlzLCB3ZSBuZWVkIHRvXG4gICAqIGhvcml6b250YWxseSBvZmZzZXQgdGhlIGxhYmVsIGJ5IHRoZSB3aWR0aCBvZiB0aGUgcHJlZml4IGNvbnRhaW5lci4gVGhlIE1EQyB0ZXh0LWZpZWxkIGRvZXNcbiAgICogbm90IG5lZWQgdG8gZG8gdGhpcyBiZWNhdXNlIHRoZXkgdXNlIGEgZml4ZWQgd2lkdGggZm9yIHByZWZpeGVzLiBIZW5jZSwgdGhleSBjYW4gc2ltcGx5XG4gICAqIGluY29ycG9yYXRlIHRoZSBob3Jpem9udGFsIG9mZnNldCBpbnRvIHRoZWlyIGRlZmF1bHQgdGV4dC1maWVsZCBzdHlsZXMuXG4gICAqL1xuICBwcml2YXRlIF91cGRhdGVPdXRsaW5lTGFiZWxPZmZzZXQoKSB7XG4gICAgaWYgKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIgfHwgIXRoaXMuX2hhc091dGxpbmUoKSB8fCAhdGhpcy5fZmxvYXRpbmdMYWJlbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmbG9hdGluZ0xhYmVsID0gdGhpcy5fZmxvYXRpbmdMYWJlbC5lbGVtZW50O1xuICAgIC8vIElmIG5vIHByZWZpeCBpcyBkaXNwbGF5ZWQsIHJlc2V0IHRoZSBvdXRsaW5lIGxhYmVsIG9mZnNldCBmcm9tIHBvdGVudGlhbFxuICAgIC8vIHByZXZpb3VzIGxhYmVsIG9mZnNldCB1cGRhdGVzLlxuICAgIGlmICghKHRoaXMuX2ljb25QcmVmaXhDb250YWluZXIgfHwgdGhpcy5fdGV4dFByZWZpeENvbnRhaW5lcikpIHtcbiAgICAgIGZsb2F0aW5nTGFiZWwuc3R5bGUudHJhbnNmb3JtID0gJyc7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIElmIHRoZSBmb3JtIGZpZWxkIGlzIG5vdCBhdHRhY2hlZCB0byB0aGUgRE9NIHlldCAoZS5nLiBpbiBhIHRhYiksIHdlIGRlZmVyXG4gICAgLy8gdGhlIGxhYmVsIG9mZnNldCB1cGRhdGUgdW50aWwgdGhlIHpvbmUgc3RhYmlsaXplcy5cbiAgICBpZiAoIXRoaXMuX2lzQXR0YWNoZWRUb0RvbSgpKSB7XG4gICAgICB0aGlzLl9uZWVkc091dGxpbmVMYWJlbE9mZnNldFVwZGF0ZU9uU3RhYmxlID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaWNvblByZWZpeENvbnRhaW5lciA9IHRoaXMuX2ljb25QcmVmaXhDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgdGV4dFByZWZpeENvbnRhaW5lciA9IHRoaXMuX3RleHRQcmVmaXhDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgaWNvblByZWZpeENvbnRhaW5lcldpZHRoID0gaWNvblByZWZpeENvbnRhaW5lcj8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPz8gMDtcbiAgICBjb25zdCB0ZXh0UHJlZml4Q29udGFpbmVyV2lkdGggPSB0ZXh0UHJlZml4Q29udGFpbmVyPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCA/PyAwO1xuICAgIC8vIElmIHRoZSBkaXJlY3Rpb25hbGl0eSBpcyBSVEwsIHRoZSB4LWF4aXMgdHJhbnNmb3JtIG5lZWRzIHRvIGJlIGludmVydGVkLiBUaGlzXG4gICAgLy8gaXMgYmVjYXVzZSBgdHJhbnNmb3JtWGAgZG9lcyBub3QgY2hhbmdlIGJhc2VkIG9uIHRoZSBwYWdlIGRpcmVjdGlvbmFsaXR5LlxuICAgIGNvbnN0IGxhYmVsSG9yaXpvbnRhbE9mZnNldCA9XG4gICAgICAodGhpcy5fZGlyLnZhbHVlID09PSAncnRsJyA/IC0xIDogMSkgKlxuICAgICAgLy8gSWYgdGhlcmUncyBhbiBpY29uIHByZWZpeCwgd2Ugc3VidHJhY3QgdGhlIGRlZmF1bHQgaG9yaXpvbnRhbCBwYWRkaW5nIGFzIHdlXG4gICAgICAvLyByZXNldCB0aGUgaG9yaXpvbnRhbCBwYWRkaW5nIGluIENTUyB0b28uXG4gICAgICAoKGljb25QcmVmaXhDb250YWluZXIgPyBpY29uUHJlZml4Q29udGFpbmVyV2lkdGggLSBXUkFQUEVSX0hPUklaT05UQUxfUEFERElORyA6IDApICtcbiAgICAgICAgdGV4dFByZWZpeENvbnRhaW5lcldpZHRoKTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgdHJhbnNmb3JtIHRoZSBmbG9hdGluZyBsYWJlbCB0byBhY2NvdW50IGZvciB0aGUgcHJlZml4IGNvbnRhaW5lci4gTm90ZVxuICAgIC8vIHRoYXQgd2UgZG8gbm90IHdhbnQgdG8gb3ZlcndyaXRlIHRoZSBkZWZhdWx0IHRyYW5zZm9ybSBmb3IgZG9ja2VkIGZsb2F0aW5nIGxhYmVscy5cbiAgICBmbG9hdGluZ0xhYmVsLnN0eWxlLnRyYW5zZm9ybSA9IGAke0ZMT0FUSU5HX0xBQkVMX0RFRkFVTFRfRE9DS0VEX1RSQU5TRk9STX0gdHJhbnNsYXRlWCgke2xhYmVsSG9yaXpvbnRhbE9mZnNldH1weClgO1xuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBmb3JtIGZpZWxkIGlzIGF0dGFjaGVkIHRvIHRoZSBET00uICovXG4gIHByaXZhdGUgX2lzQXR0YWNoZWRUb0RvbSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoZWxlbWVudC5nZXRSb290Tm9kZSkge1xuICAgICAgY29uc3Qgcm9vdE5vZGUgPSBlbGVtZW50LmdldFJvb3ROb2RlKCk7XG4gICAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBpbnNpZGUgdGhlIERPTSB0aGUgcm9vdCBub2RlIHdpbGwgYmUgZWl0aGVyIHRoZSBkb2N1bWVudFxuICAgICAgLy8gb3IgdGhlIGNsb3Nlc3Qgc2hhZG93IHJvb3QsIG90aGVyd2lzZSBpdCdsbCBiZSB0aGUgZWxlbWVudCBpdHNlbGYuXG4gICAgICByZXR1cm4gcm9vdE5vZGUgJiYgcm9vdE5vZGUgIT09IGVsZW1lbnQ7XG4gICAgfVxuICAgIC8vIE90aGVyd2lzZSBmYWxsIGJhY2sgdG8gY2hlY2tpbmcgaWYgaXQncyBpbiB0aGUgZG9jdW1lbnQuIFRoaXMgZG9lc24ndCBhY2NvdW50IGZvclxuICAgIC8vIHNoYWRvdyBET00sIGhvd2V2ZXIgYnJvd3NlciB0aGF0IHN1cHBvcnQgc2hhZG93IERPTSBzaG91bGQgc3VwcG9ydCBgZ2V0Um9vdE5vZGVgIGFzIHdlbGwuXG4gICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCEuY29udGFpbnMoZWxlbWVudCk7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjbGFiZWxUZW1wbGF0ZT5cbiAgPCEtLVxuICAgIE1EQyByZWNvbW1lbmRzIHRoYXQgdGhlIHRleHQtZmllbGQgaXMgYSBgPGxhYmVsPmAgZWxlbWVudC4gVGhpcyByYXRoZXIgY29tcGxpY2F0ZXMgdGhlXG4gICAgc2V0dXAgYmVjYXVzZSBpdCB3b3VsZCByZXF1aXJlIGV2ZXJ5IGZvcm0tZmllbGQgY29udHJvbCB0byBleHBsaWNpdGx5IHNldCBgYXJpYS1sYWJlbGxlZGJ5YC5cbiAgICBUaGlzIGlzIGJlY2F1c2UgdGhlIGA8bGFiZWw+YCBpdHNlbGYgY29udGFpbnMgbW9yZSB0aGFuIHRoZSBhY3R1YWwgbGFiZWwgKGUuZy4gcHJlZml4LCBzdWZmaXhcbiAgICBvciBvdGhlciBwcm9qZWN0ZWQgY29udGVudCksIGFuZCBzY3JlZW4gcmVhZGVycyBjb3VsZCBwb3RlbnRpYWxseSByZWFkIG91dCB1bmRlc2lyZWQgY29udGVudC5cbiAgICBFeGNsdWRpbmcgZWxlbWVudHMgZnJvbSBiZWluZyBwcmludGVkIG91dCByZXF1aXJlcyB0aGVtIHRvIGJlIG1hcmtlZCB3aXRoIGBhcmlhLWhpZGRlbmAsIG9yXG4gICAgdGhlIGZvcm0gY29udHJvbCBpcyBzZXQgdG8gYSBzY29wZWQgZWxlbWVudCBmb3IgdGhlIGxhYmVsICh1c2luZyBgYXJpYS1sYWJlbGxlZGJ5YCkuIEJvdGggb2ZcbiAgICB0aGVzZSBvcHRpb25zIHNlZW0gdG8gY29tcGxpY2F0ZSB0aGUgc2V0dXAgYmVjYXVzZSB3ZSBrbm93IGV4YWN0bHkgd2hhdCBjb250ZW50IGlzIHJlbmRlcmVkXG4gICAgYXMgcGFydCBvZiB0aGUgbGFiZWwsIGFuZCB3ZSBkb24ndCB3YW50IHRvIHNwZW5kIHJlc291cmNlcyBvbiB3YWxraW5nIHRocm91Z2ggcHJvamVjdGVkIGNvbnRlbnRcbiAgICB0byBzZXQgYGFyaWEtaGlkZGVuYC4gTm9yIGRvIHdlIHdhbnQgdG8gc2V0IGBhcmlhLWxhYmVsbGVkYnlgIG9uIGV2ZXJ5IGZvcm0gY29udHJvbCBpZiB3ZSBjb3VsZFxuICAgIHNpbXBseSBsaW5rIHRoZSBsYWJlbCB0byB0aGUgY29udHJvbCB1c2luZyB0aGUgbGFiZWwgYGZvcmAgYXR0cmlidXRlLlxuXG4gICAgKk5vdGUqOiBXZSBhZGQgYXJpYS1vd25zIGFzIGEgd29ya2Fyb3VuZCBmb3IgYW4gaXNzdWUgaW4gSkFXUyAmIE5WREEgd2hlcmUgdGhlIGxhYmVsIGlzbid0XG4gICAgcmVhZCBpZiBpdCBjb21lcyBiZWZvcmUgdGhlIGNvbnRyb2wgaW4gdGhlIERPTS5cbiAgLS0+XG4gIDxsYWJlbCBtYXRGb3JtRmllbGRGbG9hdGluZ0xhYmVsXG4gICAgICAgICBbZmxvYXRpbmddPVwiX3Nob3VsZExhYmVsRmxvYXQoKVwiXG4gICAgICAgICAqbmdJZj1cIl9oYXNGbG9hdGluZ0xhYmVsKClcIlxuICAgICAgICAgKGNka09ic2VydmVDb250ZW50KT1cIl9yZWZyZXNoT3V0bGluZU5vdGNoV2lkdGgoKVwiXG4gICAgICAgICBbY2RrT2JzZXJ2ZUNvbnRlbnREaXNhYmxlZF09XCIhX2hhc091dGxpbmUoKVwiXG4gICAgICAgICBbaWRdPVwiX2xhYmVsSWRcIlxuICAgICAgICAgW2F0dHIuZm9yXT1cIl9jb250cm9sLmlkXCJcbiAgICAgICAgIFthdHRyLmFyaWEtb3duc109XCJfY29udHJvbC5pZFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1sYWJlbFwiPjwvbmctY29udGVudD5cbiAgICA8IS0tXG4gICAgICBXZSBzZXQgdGhlIHJlcXVpcmVkIG1hcmtlciBhcyBhIHNlcGFyYXRlIGVsZW1lbnQsIGluIG9yZGVyIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHRhcmdldCBpZlxuICAgICAgYXBwcyB3YW50IHRvIG92ZXJyaWRlIGl0IGFuZCB0byBiZSBhYmxlIHRvIHNldCBgYXJpYS1oaWRkZW5gIHNvIHRoYXQgc2NyZWVuIHJlYWRlcnMgZG9uJ3RcbiAgICAgIHBpY2sgaXQgdXAuXG4gICAgIC0tPlxuICAgIDxzcGFuXG4gICAgICAqbmdJZj1cIiFoaWRlUmVxdWlyZWRNYXJrZXIgJiYgX2NvbnRyb2wucmVxdWlyZWRcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgIGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlciBtZGMtZmxvYXRpbmctbGFiZWwtLXJlcXVpcmVkXCI+PC9zcGFuPlxuICA8L2xhYmVsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPGRpdiBjbGFzcz1cIm1hdC1tZGMtdGV4dC1maWVsZC13cmFwcGVyIG1kYy10ZXh0LWZpZWxkXCIgI3RleHRGaWVsZFxuICAgICBbY2xhc3MubWRjLXRleHQtZmllbGQtLWZpbGxlZF09XCIhX2hhc091dGxpbmUoKVwiXG4gICAgIFtjbGFzcy5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWRdPVwiX2hhc091dGxpbmUoKVwiXG4gICAgIFtjbGFzcy5tZGMtdGV4dC1maWVsZC0tbm8tbGFiZWxdPVwiIV9oYXNGbG9hdGluZ0xhYmVsKClcIlxuICAgICBbY2xhc3MubWRjLXRleHQtZmllbGQtLWRpc2FibGVkXT1cIl9jb250cm9sLmRpc2FibGVkXCJcbiAgICAgW2NsYXNzLm1kYy10ZXh0LWZpZWxkLS1pbnZhbGlkXT1cIl9jb250cm9sLmVycm9yU3RhdGVcIlxuICAgICAoY2xpY2spPVwiX2NvbnRyb2wub25Db250YWluZXJDbGljayAmJiBfY29udHJvbC5vbkNvbnRhaW5lckNsaWNrKCRldmVudClcIj5cbiAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1mb2N1cy1vdmVybGF5XCIgKm5nSWY9XCIhX2hhc091dGxpbmUoKSAmJiAhX2NvbnRyb2wuZGlzYWJsZWRcIj48L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1mbGV4XCI+XG4gICAgPGRpdiAqbmdJZj1cIl9oYXNPdXRsaW5lKClcIiBtYXRGb3JtRmllbGROb3RjaGVkT3V0bGluZVxuICAgICAgICAgW21hdEZvcm1GaWVsZE5vdGNoZWRPdXRsaW5lT3Blbl09XCJfc2hvdWxkTGFiZWxGbG9hdCgpXCJcbiAgICAgICAgIFttYXRGb3JtRmllbGROb3RjaGVkT3V0bGluZVdpZHRoXT1cIl9vdXRsaW5lTm90Y2hXaWR0aFwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiFfZm9yY2VEaXNwbGF5SW5maXhMYWJlbCgpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLWljb24tcHJlZml4XCIgKm5nSWY9XCJfaGFzSWNvblByZWZpeFwiICNpY29uUHJlZml4Q29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFByZWZpeF0sIFttYXRJY29uUHJlZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLXRleHQtcHJlZml4XCIgKm5nSWY9XCJfaGFzVGV4dFByZWZpeFwiICN0ZXh0UHJlZml4Q29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFRleHRQcmVmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1pbmZpeFwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiFfaGFzT3V0bGluZSgpIHx8IF9mb3JjZURpc3BsYXlJbmZpeExhYmVsKClcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC10ZXh0LXN1ZmZpeFwiICpuZ0lmPVwiX2hhc1RleHRTdWZmaXhcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRUZXh0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLWljb24tc3VmZml4XCIgKm5nSWY9XCJfaGFzSWNvblN1ZmZpeFwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF0sIFttYXRJY29uU3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBtYXRGb3JtRmllbGRMaW5lUmlwcGxlICpuZ0lmPVwiIV9oYXNPdXRsaW5lKClcIj48L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyIG1hdC1tZGMtZm9ybS1maWVsZC1ib3R0b20tYWxpZ25cIlxuICAgICBbY2xhc3MubWF0LW1kYy1mb3JtLWZpZWxkLXN1YnNjcmlwdC1keW5hbWljLXNpemVdPVwic3Vic2NyaXB0U2l6aW5nID09PSAnZHluYW1pYydcIlxuICAgICBbbmdTd2l0Y2hdPVwiX2dldERpc3BsYXllZE1lc3NhZ2VzKClcIj5cbiAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1lcnJvci13cmFwcGVyXCIgKm5nU3dpdGNoQ2FzZT1cIidlcnJvcidcIlxuICAgICAgIFtAdHJhbnNpdGlvbk1lc3NhZ2VzXT1cIl9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZVwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1lcnJvclwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1oaW50LXdyYXBwZXJcIiAqbmdTd2l0Y2hDYXNlPVwiJ2hpbnQnXCJcbiAgICAgICBbQHRyYW5zaXRpb25NZXNzYWdlc109XCJfc3Vic2NyaXB0QW5pbWF0aW9uU3RhdGVcIj5cbiAgICA8bWF0LWhpbnQgKm5nSWY9XCJoaW50TGFiZWxcIiBbaWRdPVwiX2hpbnRMYWJlbElkXCI+e3toaW50TGFiZWx9fTwvbWF0LWhpbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibWF0LWhpbnQ6bm90KFthbGlnbj0nZW5kJ10pXCI+PC9uZy1jb250ZW50PlxuICAgIDxkaXYgY2xhc3M9XCJtYXQtbWRjLWZvcm0tZmllbGQtaGludC1zcGFjZXJcIj48L2Rpdj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJtYXQtaGludFthbGlnbj0nZW5kJ11cIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
687
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybS1maWVsZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1leHBlcmltZW50YWwvbWRjLWZvcm0tZmllbGQvZm9ybS1maWVsZC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1leHBlcmltZW50YWwvbWRjLWZvcm0tZmllbGQvZm9ybS1maWVsZC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNILE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsUUFBUSxFQUFDLE1BQU0sdUJBQXVCLENBQUM7QUFDL0MsT0FBTyxFQUlMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBQ2YsVUFBVSxFQUNWLE1BQU0sRUFDTixjQUFjLEVBQ2QsS0FBSyxFQUNMLE1BQU0sRUFFTixRQUFRLEVBQ1IsU0FBUyxFQUNULFNBQVMsRUFDVCxpQkFBaUIsR0FDbEIsTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUNMLGtDQUFrQyxFQUNsQyxrQ0FBa0MsRUFDbEMsY0FBYyxFQUNkLHNCQUFzQixFQUN0QixtQkFBbUIsR0FDcEIsTUFBTSw4QkFBOEIsQ0FBQztBQUN0QyxPQUFPLEVBQUMscUJBQXFCLEVBQUMsTUFBTSxzQ0FBc0MsQ0FBQztBQUMzRSxPQUFPLEVBRUwsc0JBQXNCLEVBQ3RCLE9BQU8sSUFBSSxtQkFBbUIsR0FDL0IsTUFBTSxxQkFBcUIsQ0FBQztBQUM3QixPQUFPLEVBQUMsS0FBSyxFQUFFLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUNwQyxPQUFPLEVBQUMsU0FBUyxFQUFDLE1BQU0sZ0JBQWdCLENBQUM7QUFDekMsT0FBTyxFQUFDLFNBQVMsRUFBVyxNQUFNLG9CQUFvQixDQUFDO0FBQ3ZELE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLDZC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QUksRUFBQztnQkFJekMsa0JBQWtCO3NCQURyQixLQUFLO2dCQVVHLEtBQUs7c0JBQWIsS0FBSztnQkFJRixVQUFVO3NCQURiLEtBQUs7Z0JBa0JGLFVBQVU7c0JBRGIsS0FBSztnQkF3QkYsZUFBZTtzQkFEbEIsS0FBSztnQkFXRixTQUFTO3NCQURaLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbmltcG9ydCB7RGlyZWN0aW9uYWxpdHl9IGZyb20gJ0Bhbmd1bGFyL2Nkay9iaWRpJztcbmltcG9ydCB7UGxhdGZvcm19IGZyb20gJ0Bhbmd1bGFyL2Nkay9wbGF0Zm9ybSc7XG5pbXBvcnQge1xuICBBZnRlckNvbnRlbnRDaGVja2VkLFxuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgSW5qZWN0aW9uVG9rZW4sXG4gIElucHV0LFxuICBOZ1pvbmUsXG4gIE9uRGVzdHJveSxcbiAgT3B0aW9uYWwsXG4gIFF1ZXJ5TGlzdCxcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvbixcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0Fic3RyYWN0Q29udHJvbERpcmVjdGl2ZX0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtUaGVtZVBhbGV0dGV9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsLWV4cGVyaW1lbnRhbC9tZGMtY29yZSc7XG5pbXBvcnQge1xuICBnZXRNYXRGb3JtRmllbGREdXBsaWNhdGVkSGludEVycm9yLFxuICBnZXRNYXRGb3JtRmllbGRNaXNzaW5nQ29udHJvbEVycm9yLFxuICBNQVRfRk9STV9GSUVMRCxcbiAgbWF0Rm9ybUZpZWxkQW5pbWF0aW9ucyxcbiAgTWF0Rm9ybUZpZWxkQ29udHJvbCxcbn0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XG5pbXBvcnQge0FOSU1BVElPTl9NT0RVTEVfVFlQRX0gZnJvbSAnQGFuZ3VsYXIvcGxhdGZvcm0tYnJvd3Nlci9hbmltYXRpb25zJztcbmltcG9ydCB7XG4gIE1EQ1RleHRGaWVsZEFkYXB0ZXIsXG4gIE1EQ1RleHRGaWVsZEZvdW5kYXRpb24sXG4gIG51bWJlcnMgYXMgbWRjVGV4dEZpZWxkTnVtYmVycyxcbn0gZnJvbSAnQG1hdGVyaWFsL3RleHRmaWVsZCc7XG5pbXBvcnQge21lcmdlLCBTdWJqZWN0fSBmcm9tICdyeGpzJztcbmltcG9ydCB7dGFrZVVudGlsfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge01BVF9FUlJPUiwgTWF0RXJyb3J9IGZyb20gJy4vZGlyZWN0aXZlcy9lcnJvcic7XG5pbXBvcnQge01hdEZvcm1GaWVsZEZsb2F0aW5nTGFiZWx9IGZyb20gJy4vZGlyZWN0aXZlcy9mbG9hdGluZy1sYWJlbCc7XG5pbXBvcnQge01hdEhpbnR9IGZyb20gJy4vZGlyZWN0aXZlcy9oaW50JztcbmltcG9ydCB7TWF0TGFiZWx9IGZyb20gJy4vZGlyZWN0aXZlcy9sYWJlbCc7XG5pbXBvcnQge01hdEZvcm1GaWVsZExpbmVSaXBwbGV9IGZyb20gJy4vZGlyZWN0aXZlcy9saW5lLXJpcHBsZSc7XG5pbXBvcnQge01hdEZvcm1GaWVsZE5vdGNoZWRPdXRsaW5lfSBmcm9tICcuL2RpcmVjdGl2ZXMvbm90Y2hlZC1vdXRsaW5lJztcbmltcG9ydCB7TUFUX1BSRUZJWCwgTWF0UHJlZml4fSBmcm9tICcuL2RpcmVjdGl2ZXMvcHJlZml4JztcbmltcG9ydCB7TUFUX1NVRkZJWCwgTWF0U3VmZml4fSBmcm9tICcuL2RpcmVjdGl2ZXMvc3VmZml4JztcbmltcG9ydCB7RE9DVU1FTlR9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge0Jvb2xlYW5JbnB1dCwgY29lcmNlQm9vbGVhblByb3BlcnR5fSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuXG4vKiogVHlwZSBmb3IgdGhlIGF2YWlsYWJsZSBmbG9hdExhYmVsIHZhbHVlcy4gKi9cbmV4cG9ydCB0eXBlIEZsb2F0TGFiZWxUeXBlID0gJ2Fsd2F5cycgfCAnYXV0byc7XG5cbi8qKiBQb3NzaWJsZSBhcHBlYXJhbmNlIHN0eWxlcyBmb3IgdGhlIGZvcm0gZmllbGQuICovXG5leHBvcnQgdHlwZSBNYXRGb3JtRmllbGRBcHBlYXJhbmNlID0gJ2ZpbGwnIHwgJ291dGxpbmUnO1xuXG4vKiogQmVoYXZpb3JzIGZvciBob3cgdGhlIHN1YnNjcmlwdCBoZWlnaHQgaXMgc2V0LiAqL1xuZXhwb3J0IHR5cGUgU3Vic2NyaXB0U2l6aW5nID0gJ2ZpeGVkJyB8ICdkeW5hbWljJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBkZWZhdWx0IG9wdGlvbnMgZm9yIHRoZSBmb3JtIGZpZWxkIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWRcbiAqIHVzaW5nIHRoZSBgTUFUX0ZPUk1fRklFTERfREVGQVVMVF9PUFRJT05TYCBpbmplY3Rpb24gdG9rZW4uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWF0Rm9ybUZpZWxkRGVmYXVsdE9wdGlvbnMge1xuICAvKiogRGVmYXVsdCBmb3JtIGZpZWxkIGFwcGVhcmFuY2Ugc3R5bGUuICovXG4gIGFwcGVhcmFuY2U/OiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlO1xuICAvKiogRGVmYXVsdCBjb2xvciBvZiB0aGUgZm9ybSBmaWVsZC4gKi9cbiAgY29sb3I/OiBUaGVtZVBhbGV0dGU7XG4gIC8qKiBXaGV0aGVyIHRoZSByZXF1aXJlZCBtYXJrZXIgc2hvdWxkIGJlIGhpZGRlbiBieSBkZWZhdWx0LiAqL1xuICBoaWRlUmVxdWlyZWRNYXJrZXI/OiBib29sZWFuO1xuICAvKipcbiAgICogV2hldGhlciB0aGUgbGFiZWwgZm9yIGZvcm0gZmllbGRzIHNob3VsZCBieSBkZWZhdWx0IGZsb2F0IGBhbHdheXNgLFxuICAgKiBgbmV2ZXJgLCBvciBgYXV0b2AgKG9ubHkgd2hlbiBuZWNlc3NhcnkpLlxuICAgKi9cbiAgZmxvYXRMYWJlbD86IEZsb2F0TGFiZWxUeXBlO1xuICAvKiogV2hldGhlciB0aGUgZm9ybSBmaWVsZCBzaG91bGQgcmVzZXJ2ZSBzcGFjZSBmb3Igb25lIGxpbmUgYnkgZGVmYXVsdC4gKi9cbiAgc3Vic2NyaXB0U2l6aW5nPzogU3Vic2NyaXB0U2l6aW5nO1xufVxuXG4vKipcbiAqIEluamVjdGlvbiB0b2tlbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSB0aGVcbiAqIGRlZmF1bHQgb3B0aW9ucyBmb3IgYWxsIGZvcm0gZmllbGQgd2l0aGluIGFuIGFwcC5cbiAqL1xuZXhwb3J0IGNvbnN0IE1BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfT1BUSU9OUyA9IG5ldyBJbmplY3Rpb25Ub2tlbjxNYXRGb3JtRmllbGREZWZhdWx0T3B0aW9ucz4oXG4gICdNQVRfRk9STV9GSUVMRF9ERUZBVUxUX09QVElPTlMnLFxuKTtcblxubGV0IG5leHRVbmlxdWVJZCA9IDA7XG5cbi8qKiBEZWZhdWx0IGFwcGVhcmFuY2UgdXNlZCBieSB0aGUgZm9ybSBmaWVsZC4gKi9cbmNvbnN0IERFRkFVTFRfQVBQRUFSQU5DRTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSA9ICdmaWxsJztcblxuLyoqXG4gKiBXaGV0aGVyIHRoZSBsYWJlbCBmb3IgZm9ybSBmaWVsZHMgc2hvdWxkIGJ5IGRlZmF1bHQgZmxvYXQgYGFsd2F5c2AsXG4gKiBgbmV2ZXJgLCBvciBgYXV0b2AuXG4gKi9cbmNvbnN0IERFRkFVTFRfRkxPQVRfTEFCRUw6IEZsb2F0TGFiZWxUeXBlID0gJ2F1dG8nO1xuXG4vKiogRGVmYXVsdCB3YXkgdGhhdCB0aGUgc3Vic2NyaXB0IGVsZW1lbnQgaGVpZ2h0IGlzIHNldC4gKi9cbmNvbnN0IERFRkFVTFRfU1VCU0NSSVBUX1NJWklORzogU3Vic2NyaXB0U2l6aW5nID0gJ2ZpeGVkJztcblxuLyoqXG4gKiBEZWZhdWx0IHRyYW5zZm9ybSBmb3IgZG9ja2VkIGZsb2F0aW5nIGxhYmVscyBpbiBhIE1EQyB0ZXh0LWZpZWxkLiBUaGlzIHZhbHVlIGhhcyBiZWVuXG4gKiBleHRyYWN0ZWQgZnJvbSB0aGUgTURDIHRleHQtZmllbGQgc3R5bGVzIGJlY2F1c2Ugd2UgcHJvZ3JhbW1hdGljYWxseSBtb2RpZnkgdGhlIGRvY2tlZFxuICogbGFiZWwgdHJhbnNmb3JtLCBidXQgZG8gbm90IHdhbnQgdG8gYWNjaWRlbnRhbGx5IGRpc2NhcmQgdGhlIGRlZmF1bHQgbGFiZWwgdHJhbnNmb3JtLlxuICovXG5jb25zdCBGTE9BVElOR19MQUJFTF9ERUZBVUxUX0RPQ0tFRF9UUkFOU0ZPUk0gPSBgdHJhbnNsYXRlWSgtNTAlKWA7XG5cbi8qKlxuICogSG9yaXpvbnRhbCBwYWRkaW5nIGluIHBpeGVscyB1c2VkIGJ5IHRoZSBNREMgZm9yIHRoZSB3cmFwcGVyIGNvbnRhaW5pbmcgaW5maXguXG4gKiBUaGlzIHZhbHVlIGlzIGV4dHJhY3RlZCBmcm9tIE1EQydzIFNhc3MgdmFyaWFibGVzLiBTZWUgYCRwYWRkaW5nLWhvcml6b250YWxgLlxuICovXG5jb25zdCBXUkFQUEVSX0hPUklaT05UQUxfUEFERElORyA9IDE2O1xuXG4vKiogQ29udGFpbmVyIGZvciBmb3JtIGNvbnRyb2xzIHRoYXQgYXBwbGllcyBNYXRlcmlhbCBEZXNpZ24gc3R5bGluZyBhbmQgYmVoYXZpb3IuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdtYXQtZm9ybS1maWVsZCcsXG4gIGV4cG9ydEFzOiAnbWF0Rm9ybUZpZWxkJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2Zvcm0tZmllbGQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2Zvcm0tZmllbGQuY3NzJ10sXG4gIGFuaW1hdGlvbnM6IFttYXRGb3JtRmllbGRBbmltYXRpb25zLnRyYW5zaXRpb25NZXNzYWdlc10sXG4gIGhvc3Q6IHtcbiAgICAnY2xhc3MnOiAnbWF0LW1kYy1mb3JtLWZpZWxkJyxcbiAgICAnW2NsYXNzLm1hdC1tZGMtZm9ybS1maWVsZC1sYWJlbC1hbHdheXMtZmxvYXRdJzogJ19zaG91bGRBbHdheXNGbG9hdCgpJyxcbiAgICAnW2NsYXNzLm1hdC1tZGMtZm9ybS1maWVsZC1oYXMtaWNvbi1wcmVmaXhdJzogJ19oYXNJY29uUHJlZml4JyxcbiAgICAnW2NsYXNzLm1hdC1tZGMtZm9ybS1maWVsZC1oYXMtaWNvbi1zdWZmaXhdJzogJ19oYXNJY29uU3VmZml4JyxcblxuICAgIC8vIE5vdGUgdGhhdCB0aGVzZSBjbGFzc2VzIHJldXNlIHRoZSBzYW1lIG5hbWVzIGFzIHRoZSBub24tTURDIHZlcnNpb24sIGJlY2F1c2UgdGhleSBjYW4gYmVcbiAgICAvLyBjb25zaWRlcmVkIGEgcHVibGljIEFQSSBzaW5jZSBjdXN0b20gZm9ybSBjb250cm9scyBtYXkgdXNlIHRoZW0gdG8gc3R5bGUgdGhlbXNlbHZlcy5cbiAgICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvY29tcG9uZW50cy9wdWxsLzIwNTAyI2Rpc2N1c3Npb25fcjQ4NjEyNDkwMS5cbiAgICAnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWludmFsaWRdJzogJ19jb250cm9sLmVycm9yU3RhdGUnLFxuICAgICdbY2xhc3MubWF0LWZvcm0tZmllbGQtZGlzYWJsZWRdJzogJ19jb250cm9sLmRpc2FibGVkJyxcbiAgICAnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWF1dG9maWxsZWRdJzogJ19jb250cm9sLmF1dG9maWxsZWQnLFxuICAgICdbY2xhc3MubWF0LWZvcm0tZmllbGQtbm8tYW5pbWF0aW9uc10nOiAnX2FuaW1hdGlvbk1vZGUgPT09IFwiTm9vcEFuaW1hdGlvbnNcIicsXG4gICAgJ1tjbGFzcy5tYXQtZm9ybS1maWVsZC1hcHBlYXJhbmNlLWZpbGxdJzogJ2FwcGVhcmFuY2UgPT0gXCJmaWxsXCInLFxuICAgICdbY2xhc3MubWF0LWZvcm0tZmllbGQtYXBwZWFyYW5jZS1vdXRsaW5lXSc6ICdhcHBlYXJhbmNlID09IFwib3V0bGluZVwiJyxcbiAgICAnW2NsYXNzLm1hdC1mb3JtLWZpZWxkLWhpZGUtcGxhY2Vob2xkZXJdJzogJ19oYXNGbG9hdGluZ0xhYmVsKCkgJiYgIV9zaG91bGRMYWJlbEZsb2F0KCknLFxuICAgICdbY2xhc3MubWF0LWZvY3VzZWRdJzogJ19jb250cm9sLmZvY3VzZWQnLFxuICAgICdbY2xhc3MubWF0LXByaW1hcnldJzogJ2NvbG9yICE9PSBcImFjY2VudFwiICYmIGNvbG9yICE9PSBcIndhcm5cIicsXG4gICAgJ1tjbGFzcy5tYXQtYWNjZW50XSc6ICdjb2xvciA9PT0gXCJhY2NlbnRcIicsXG4gICAgJ1tjbGFzcy5tYXQtd2Fybl0nOiAnY29sb3IgPT09IFwid2FyblwiJyxcbiAgICAnW2NsYXNzLm5nLXVudG91Y2hlZF0nOiAnX3Nob3VsZEZvcndhcmQoXCJ1bnRvdWNoZWRcIiknLFxuICAgICdbY2xhc3MubmctdG91Y2hlZF0nOiAnX3Nob3VsZEZvcndhcmQoXCJ0b3VjaGVkXCIpJyxcbiAgICAnW2NsYXNzLm5nLXByaXN0aW5lXSc6ICdfc2hvdWxkRm9yd2FyZChcInByaXN0aW5lXCIpJyxcbiAgICAnW2NsYXNzLm5nLWRpcnR5XSc6ICdfc2hvdWxkRm9yd2FyZChcImRpcnR5XCIpJyxcbiAgICAnW2NsYXNzLm5nLXZhbGlkXSc6ICdfc2hvdWxkRm9yd2FyZChcInZhbGlkXCIpJyxcbiAgICAnW2NsYXNzLm5nLWludmFsaWRdJzogJ19zaG91bGRGb3J3YXJkKFwiaW52YWxpZFwiKScsXG4gICAgJ1tjbGFzcy5uZy1wZW5kaW5nXSc6ICdfc2hvdWxkRm9yd2FyZChcInBlbmRpbmdcIiknLFxuICB9LFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgcHJvdmlkZXJzOiBbe3Byb3ZpZGU6IE1BVF9GT1JNX0ZJRUxELCB1c2VFeGlzdGluZzogTWF0Rm9ybUZpZWxkfV0sXG59KVxuZXhwb3J0IGNsYXNzIE1hdEZvcm1GaWVsZFxuICBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIEFmdGVyQ29udGVudENoZWNrZWQsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveVxue1xuICBAVmlld0NoaWxkKCd0ZXh0RmllbGQnKSBfdGV4dEZpZWxkOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgnaWNvblByZWZpeENvbnRhaW5lcicpIF9pY29uUHJlZml4Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZCgndGV4dFByZWZpeENvbnRhaW5lcicpIF90ZXh0UHJlZml4Q29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcbiAgQFZpZXdDaGlsZChNYXRGb3JtRmllbGRGbG9hdGluZ0xhYmVsKSBfZmxvYXRpbmdMYWJlbDogTWF0Rm9ybUZpZWxkRmxvYXRpbmdMYWJlbCB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZChNYXRGb3JtRmllbGROb3RjaGVkT3V0bGluZSkgX25vdGNoZWRPdXRsaW5lOiBNYXRGb3JtRmllbGROb3RjaGVkT3V0bGluZSB8IHVuZGVmaW5lZDtcbiAgQFZpZXdDaGlsZChNYXRGb3JtRmllbGRMaW5lUmlwcGxlKSBfbGluZVJpcHBsZTogTWF0Rm9ybUZpZWxkTGluZVJpcHBsZSB8IHVuZGVmaW5lZDtcblxuICBAQ29udGVudENoaWxkKE1hdExhYmVsKSBfbGFiZWxDaGlsZE5vblN0YXRpYzogTWF0TGFiZWwgfCB1bmRlZmluZWQ7XG4gIEBDb250ZW50Q2hpbGQoTWF0TGFiZWwsIHtzdGF0aWM6IHRydWV9KSBfbGFiZWxDaGlsZFN0YXRpYzogTWF0TGFiZWwgfCB1bmRlZmluZWQ7XG4gIEBDb250ZW50Q2hpbGQoTWF0Rm9ybUZpZWxkQ29udHJvbCkgX2Zvcm1GaWVsZENvbnRyb2w6IE1hdEZvcm1GaWVsZENvbnRyb2w8YW55PjtcbiAgQENvbnRlbnRDaGlsZHJlbihNQVRfUFJFRklYLCB7ZGVzY2VuZGFudHM6IHRydWV9KSBfcHJlZml4Q2hpbGRyZW46IFF1ZXJ5TGlzdDxNYXRQcmVmaXg+O1xuICBAQ29udGVudENoaWxkcmVuKE1BVF9TVUZGSVgsIHtkZXNjZW5kYW50czogdHJ1ZX0pIF9zdWZmaXhDaGlsZHJlbjogUXVlcnlMaXN0PE1hdFN1ZmZpeD47XG4gIEBDb250ZW50Q2hpbGRyZW4oTUFUX0VSUk9SLCB7ZGVzY2VuZGFudHM6IHRydWV9KSBfZXJyb3JDaGlsZHJlbjogUXVlcnlMaXN0PE1hdEVycm9yPjtcbiAgQENvbnRlbnRDaGlsZHJlbihNYXRIaW50LCB7ZGVzY2VuZGFudHM6IHRydWV9KSBfaGludENoaWxkcmVuOiBRdWVyeUxpc3Q8TWF0SGludD47XG5cbiAgLyoqIFdoZXRoZXIgdGhlIHJlcXVpcmVkIG1hcmtlciBzaG91bGQgYmUgaGlkZGVuLiAqL1xuICBASW5wdXQoKVxuICBnZXQgaGlkZVJlcXVpcmVkTWFya2VyKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9oaWRlUmVxdWlyZWRNYXJrZXI7XG4gIH1cbiAgc2V0IGhpZGVSZXF1aXJlZE1hcmtlcih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgdGhpcy5faGlkZVJlcXVpcmVkTWFya2VyID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgfVxuICBwcml2YXRlIF9oaWRlUmVxdWlyZWRNYXJrZXIgPSBmYWxzZTtcblxuICAvKiogVGhlIGNvbG9yIHBhbGV0dGUgZm9yIHRoZSBmb3JtIGZpZWxkLiAqL1xuICBASW5wdXQoKSBjb2xvcjogVGhlbWVQYWxldHRlID0gJ3ByaW1hcnknO1xuXG4gIC8qKiBXaGV0aGVyIHRoZSBsYWJlbCBzaG91bGQgYWx3YXlzIGZsb2F0IG9yIGZsb2F0IGFzIHRoZSB1c2VyIHR5cGVzLiAqL1xuICBASW5wdXQoKVxuICBnZXQgZmxvYXRMYWJlbCgpOiBGbG9hdExhYmVsVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuX2Zsb2F0TGFiZWwgfHwgdGhpcy5fZGVmYXVsdHM/LmZsb2F0TGFiZWwgfHwgREVGQVVMVF9GTE9BVF9MQUJFTDtcbiAgfVxuICBzZXQgZmxvYXRMYWJlbCh2YWx1ZTogRmxvYXRMYWJlbFR5cGUpIHtcbiAgICBpZiAodmFsdWUgIT09IHRoaXMuX2Zsb2F0TGFiZWwpIHtcbiAgICAgIHRoaXMuX2Zsb2F0TGFiZWwgPSB2YWx1ZTtcbiAgICAgIC8vIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eS4gQ3VzdG9tIGZvcm0gZmllbGQgY29udHJvbHMgb3IgZGlyZWN0aXZlcyBtaWdodCBzZXRcbiAgICAgIC8vIHRoZSBcImZsb2F0TGFiZWxcIiBpbnB1dCBhbmQgZXhwZWN0IHRoZSBmb3JtIGZpZWxkIHZpZXcgdG8gYmUgdXBkYXRlZCBhdXRvbWF0aWNhbGx5LlxuICAgICAgLy8gZS5nLiBhdXRvY29tcGxldGUgdHJpZ2dlci4gSWRlYWxseSB3ZSdkIGdldCByaWQgb2YgdGhpcyBhbmQgdGhlIGNvbnN1bWVycyB3b3VsZCBqdXN0XG4gICAgICAvLyBlbWl0IHRoZSBcInN0YXRlQ2hhbmdlc1wiIG9ic2VydmFibGUuIFRPRE8oZGV2dmVyc2lvbik6IGNvbnNpZGVyIHJlbW92aW5nLlxuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG4gIHByaXZhdGUgX2Zsb2F0TGFiZWw6IEZsb2F0TGFiZWxUeXBlO1xuXG4gIC8qKiBUaGUgZm9ybSBmaWVsZCBhcHBlYXJhbmNlIHN0eWxlLiAqL1xuICBASW5wdXQoKVxuICBnZXQgYXBwZWFyYW5jZSgpOiBNYXRGb3JtRmllbGRBcHBlYXJhbmNlIHtcbiAgICByZXR1cm4gdGhpcy5fYXBwZWFyYW5jZTtcbiAgfVxuICBzZXQgYXBwZWFyYW5jZSh2YWx1ZTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5fYXBwZWFyYW5jZTtcbiAgICB0aGlzLl9hcHBlYXJhbmNlID0gdmFsdWUgfHwgdGhpcy5fZGVmYXVsdHM/LmFwcGVhcmFuY2UgfHwgREVGQVVMVF9BUFBFQVJBTkNFO1xuICAgIGlmICh0aGlzLl9hcHBlYXJhbmNlID09PSAnb3V0bGluZScgJiYgdGhpcy5fYXBwZWFyYW5jZSAhPT0gb2xkVmFsdWUpIHtcbiAgICAgIHRoaXMuX3JlZnJlc2hPdXRsaW5lTm90Y2hXaWR0aCgpO1xuXG4gICAgICAvLyBJZiB0aGUgYXBwZWFyYW5jZSBoYXMgYmVlbiBzd2l0Y2hlZCB0byBgb3V0bGluZWAsIHRoZSBsYWJlbCBvZmZzZXQgbmVlZHMgdG8gYmUgdXBkYXRlZC5cbiAgICAgIC8vIFRoZSB1cGRhdGUgY2FuIGhhcHBlbiBvbmNlIHRoZSB2aWV3IGhhcyBiZWVuIHJlLWNoZWNrZWQsIGJ1dCBub3QgaW1tZWRpYXRlbHkgYmVjYXVzZVxuICAgICAgLy8gdGhlIHZpZXcgaGFzIG5vdCBiZWVuIHVwZGF0ZWQgYW5kIHRoZSBub3RjaGVkLW91dGxpbmUgZmxvYXRpbmcgbGFiZWwgaXMgbm90IHByZXNlbnQuXG4gICAgICB0aGlzLl9uZWVkc091dGxpbmVMYWJlbE9mZnNldFVwZGF0ZU9uU3RhYmxlID0gdHJ1ZTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSBfYXBwZWFyYW5jZTogTWF0Rm9ybUZpZWxkQXBwZWFyYW5jZSA9IERFRkFVTFRfQVBQRUFSQU5DRTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZm9ybSBmaWVsZCBzaG91bGQgcmVzZXJ2ZSBzcGFjZSBmb3Igb25lIGxpbmUgb2YgaGludC9lcnJvciB0ZXh0IChkZWZhdWx0KVxuICAgKiBvciB0byBoYXZlIHRoZSBzcGFjaW5nIGdyb3cgZnJvbSAwcHggYXMgbmVlZGVkIGJhc2VkIG9uIHRoZSBzaXplIG9mIHRoZSBoaW50L2Vycm9yIGNvbnRlbnQuXG4gICAqIE5vdGUgdGhhdCB3aGVuIHVzaW5nIGR5bmFtaWMgc2l6aW5nLCBsYXlvdXQgc2hpZnRzIHdpbGwgb2NjdXIgd2hlbiBoaW50L2Vycm9yIHRleHQgY2hhbmdlcy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIGdldCBzdWJzY3JpcHRTaXppbmcoKTogU3Vic2NyaXB0U2l6aW5nIHtcbiAgICByZXR1cm4gdGhpcy5fc3Vic2NyaXB0U2l6aW5nIHx8IHRoaXMuX2RlZmF1bHRzPy5zdWJzY3JpcHRTaXppbmcgfHwgREVGQVVMVF9TVUJTQ1JJUFRfU0laSU5HO1xuICB9XG4gIHNldCBzdWJzY3JpcHRTaXppbmcodmFsdWU6IFN1YnNjcmlwdFNpemluZykge1xuICAgIHRoaXMuX3N1YnNjcmlwdFNpemluZyA9IHZhbHVlIHx8IHRoaXMuX2RlZmF1bHRzPy5zdWJzY3JpcHRTaXppbmcgfHwgREVGQVVMVF9TVUJTQ1JJUFRfU0laSU5HO1xuICB9XG4gIHByaXZhdGUgX3N1YnNjcmlwdFNpemluZzogU3Vic2NyaXB0U2l6aW5nIHwgbnVsbCA9IG51bGw7XG5cbiAgLyoqIFRleHQgZm9yIHRoZSBmb3JtIGZpZWxkIGhpbnQuICovXG4gIEBJbnB1dCgpXG4gIGdldCBoaW50TGFiZWwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5faGludExhYmVsO1xuICB9XG4gIHNldCBoaW50TGFiZWwodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2hpbnRMYWJlbCA9IHZhbHVlO1xuICAgIHRoaXMuX3Byb2Nlc3NIaW50cygpO1xuICB9XG4gIHByaXZhdGUgX2hpbnRMYWJlbCA9ICcnO1xuXG4gIF9oYXNJY29uUHJlZml4ID0gZmFsc2U7XG4gIF9oYXNUZXh0UHJlZml4ID0gZmFsc2U7XG4gIF9oYXNJY29uU3VmZml4ID0gZmFsc2U7XG4gIF9oYXNUZXh0U3VmZml4ID0gZmFsc2U7XG5cbiAgLy8gVW5pcXVlIGlkIGZvciB0aGUgaW50ZXJuYWwgZm9ybSBmaWVsZCBsYWJlbC5cbiAgcmVhZG9ubHkgX2xhYmVsSWQgPSBgbWF0LW1kYy1mb3JtLWZpZWxkLWxhYmVsLSR7bmV4dFVuaXF1ZUlkKyt9YDtcblxuICAvLyBVbmlxdWUgaWQgZm9yIHRoZSBoaW50IGxhYmVsLlxuICByZWFkb25seSBfaGludExhYmVsSWQgPSBgbWF0LW1kYy1oaW50LSR7bmV4dFVuaXF1ZUlkKyt9YDtcblxuICAvKiogU3RhdGUgb2YgdGhlIG1hdC1oaW50IGFuZCBtYXQtZXJyb3IgYW5pbWF0aW9ucy4gKi9cbiAgX3N1YnNjcmlwdEFuaW1hdGlvblN0YXRlID0gJyc7XG5cbiAgLyoqIFdpZHRoIG9mIHRoZSBvdXRsaW5lIG5vdGNoLiAqL1xuICBfb3V0bGluZU5vdGNoV2lkdGggPSAwO1xuXG4gIC8qKiBHZXRzIHRoZSBjdXJyZW50IGZvcm0gZmllbGQgY29udHJvbCAqL1xuICBnZXQgX2NvbnRyb2woKTogTWF0Rm9ybUZpZWxkQ29udHJvbDxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fZXhwbGljaXRGb3JtRmllbGRDb250cm9sIHx8IHRoaXMuX2Zvcm1GaWVsZENvbnRyb2w7XG4gIH1cbiAgc2V0IF9jb250cm9sKHZhbHVlKSB7XG4gICAgdGhpcy5fZXhwbGljaXRGb3JtRmllbGRDb250cm9sID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIF9kZXN0cm95ZWQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIF9pc0ZvY3VzZWQ6IGJvb2xlYW4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfZXhwbGljaXRGb3JtRmllbGRDb250cm9sOiBNYXRGb3JtRmllbGRDb250cm9sPGFueT47XG4gIHByaXZhdGUgX2ZvdW5kYXRpb246IE1EQ1RleHRGaWVsZEZvdW5kYXRpb247XG4gIHByaXZhdGUgX25lZWRzT3V0bGluZUxhYmVsT2Zmc2V0VXBkYXRlT25TdGFibGUgPSBmYWxzZTtcbiAgcHJpdmF0ZSBfYWRhcHRlcjogTURDVGV4dEZpZWxkQWRhcHRlciA9IHtcbiAgICBhZGRDbGFzczogY2xhc3NOYW1lID0+IHRoaXMuX3RleHRGaWVsZC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKSxcbiAgICByZW1vdmVDbGFzczogY2xhc3NOYW1lID0+IHRoaXMuX3RleHRGaWVsZC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoY2xhc3NOYW1lKSxcbiAgICBoYXNDbGFzczogY2xhc3NOYW1lID0+IHRoaXMuX3RleHRGaWVsZC5uYXRpdmVFbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhjbGFzc05hbWUpLFxuXG4gICAgaGFzTGFiZWw6ICgpID0+IHRoaXMuX2hhc0Zsb2F0aW5nTGFiZWwoKSxcbiAgICBpc0ZvY3VzZWQ6ICgpID0+IHRoaXMuX2NvbnRyb2wuZm9jdXNlZCxcbiAgICBoYXNPdXRsaW5lOiAoKSA9PiB0aGlzLl9oYXNPdXRsaW5lKCksXG5cbiAgICAvLyBNREMgdGV4dC1maWVsZCB3aWxsIGNhbGwgdGhpcyBtZXRob2Qgb24gZm9jdXMsIGJsdXIgYW5kIHZhbHVlIGNoYW5nZS4gSXQgZXhwZWN0cyB1c1xuICAgIC8vIHRvIHVwZGF0ZSB0aGUgZmxvYXRpbmcgbGFiZWwgc3RhdGUgYWNjb3JkaW5nbHkuIFRob3VnaCB3ZSBtYWtlIHRoaXMgYSBub29wIGJlY2F1c2Ugd2VcbiAgICAvLyB3YW50IHRvIHJlYWN0IHRvIGZsb2F0aW5nIGxhYmVsIHN0YXRlIGNoYW5nZXMgdGhyb3VnaCBjaGFuZ2UgZGV0ZWN0aW9uLiBSZWx5aW5nIG9uIHRoaXNcbiAgICAvLyBhZGFwdGVyIG1ldGhvZCB3b3VsZCBtZWFuIHRoYXQgdGhlIGxhYmVsIHdvdWxkIG5vdCB1cGRhdGUgaWYgdGhlIGN1c3RvbSBmb3JtIGZpZWxkIGNvbnRyb2xcbiAgICAvLyBzZXRzIFwic2hvdWxkTGFiZWxGbG9hdFwiIHRvIHRydWUsIG9yIGlmIHRoZSBcImZsb2F0TGFiZWxcIiBpbnB1dCBiaW5kaW5nIGNoYW5nZXMgdG8gXCJhbHdheXNcIi5cbiAgICBmbG9hdExhYmVsOiAoKSA9PiB7fSxcblxuICAgIC8vIExhYmVsIHNoYWtpbmcgaXMgbm90IHN1cHBvcnRlZCB5ZXQuIEl0IHdpbGwgcmVxdWlyZSBhIG5ldyBBUEkgZm9yIGZvcm0gZmllbGRcbiAgICAvLyBjb250cm9scyB0byB0cmlnZ2VyIHRoZSBzaGFraW5nLiBUaGlzIGNhbiBiZSBhIGZlYXR1cmUgaW4gdGhlIGZ1dHVyZS5cbiAgICAvLyBUT0RPKGRldnZlcnNpb24pOiBleHBsb3JlIG9wdGlvbnMgb24gaG93IHRvIGludGVncmF0ZSBsYWJlbCBzaGFraW5nLlxuICAgIHNoYWtlTGFiZWw6ICgpID0+IHt9LFxuXG4gICAgLy8gTURDIGJ5IGRlZmF1bHQgdXBkYXRlcyB0aGUgbm90Y2hlZC1vdXRsaW5lIHdoZW5ldmVyIHRoZSB0ZXh0LWZpZWxkIHJlY2VpdmVzIGZvY3VzLCBvclxuICAgIC8vIGlzIGJlaW5nIGJsdXJyZWQuIEl0IGFsc28gY29tcHV0ZXMgdGhlIGxhYmVsIHdpZHRoIGV2ZXJ5IHRpbWUgdGhlIG5vdGNoIGlzIG9wZW5lZCBvclxuICAgIC8vIGNsb3NlZC4gVGhpcyB3b3JrcyBmaW5lIGluIHRoZSBzdGFuZGFyZCBNREMgdGV4dC1maWVsZCwgYnV0IG5vdCBpbiBBbmd1bGFyIHdoZXJlIHRoZVxuICAgIC8vIGZsb2F0aW5nIGxhYmVsIGNvdWxkIGNoYW5nZSB0aHJvdWdoIGludGVycG9sYXRpb24uIFdlIHdhbnQgdG8gYmUgYWJsZSB0byB1cGRhdGUgdGhlXG4gICAgLy8gbm90Y2hlZCBvdXRsaW5lIHdoZW5ldmVyIHRoZSBsYWJlbCBjb250ZW50IGNoYW5nZXMuIEFkZGl0aW9uYWxseSwgcmVseWluZyBvbiBmb2N1cyBvclxuICAgIC8vIGJsdXIgdG8gb3BlbiBhbmQgY2xvc2UgdGhlIG5vdGNoIGRvZXMgbm90IHdvcmsgZm9yIHVzIHNpbmNlIGFic3RyYWN0IGZvcm0gZmllbGQgY29udHJvbHNcbiAgICAvLyBoYXZlIHRoZSBhYmlsaXR5IHRvIGNvbnRyb2wgdGhlIGZsb2F0aW5nIGxhYmVsIHN0YXRlIChpLmUuIGBzaG91bGRMYWJlbEZsb2F0YCksIGFuZCB3ZVxuICAgIC8vIHdhbnQgdG8gdXBkYXRlIHRoZSBub3RjaCB3aGVuZXZlciB0aGUgYF9zaG91bGRMYWJlbEZsb2F0KClgIHZhbHVlIGNoYW5nZXMuXG4gICAgZ2V0TGFiZWxXaWR0aDogKCkgPT4gMCxcblxuICAgIC8vIFdlIGRvbid0IHVzZSBgc2V0TGFiZWxSZXF1aXJlZGAgYXMgaXQgcmVsaWVzIG9uIGEgbXV0YXRpb24gb2JzZXJ2ZXIgZm9yIGRldGVybWluaW5nXG4gICAgLy8gd2hlbiB0aGUgYHJlcXVpcmVkYCBzdGF0ZSBjaGFuZ2VzLiBUaGlzIGlzIG5vdCByZWxpYWJsZSBhbmQgZmxleGlibGUgZW5vdWdoIGZvclxuICAgIC8vIG91ciBmb3JtIGZpZWxkLCBhcyB3ZSBzdXBwb3J0IGN1c3RvbSBjb250cm9scyBhbmQgZGV0ZWN0IHRoZSByZXF1aXJlZCBzdGF0ZSB0aHJvdWdoXG4gICAgLy8gYSBwdWJsaWMgcHJvcGVydHkgaW4gdGhlIGFic3RyYWN0IGZvcm0gY29udHJvbC5cbiAgICBzZXRMYWJlbFJlcXVpcmVkOiAoKSA9PiB7fSxcbiAgICBub3RjaE91dGxpbmU6ICgpID0+IHt9LFxuICAgIGNsb3NlT3V0bGluZTogKCkgPT4ge30sXG5cbiAgICBhY3RpdmF0ZUxpbmVSaXBwbGU6ICgpID0+IHRoaXMuX2xpbmVSaXBwbGUgJiYgdGhpcy5fbGluZVJpcHBsZS5hY3RpdmF0ZSgpLFxuICAgIGRlYWN0aXZhdGVMaW5lUmlwcGxlOiAoKSA9PiB0aGlzLl9saW5lUmlwcGxlICYmIHRoaXMuX2xpbmVSaXBwbGUuZGVhY3RpdmF0ZSgpLFxuXG4gICAgLy8gVGhlIGZvdW5kYXRpb24gdHJpZXMgdG8gcmVnaXN0ZXIgZXZlbnRzIG9uIHRoZSBpbnB1dC4gVGhpcyBpcyBub3QgbWF0Y2hpbmdcbiAgICAvLyBvdXIgY29uY2VwdCBvZiBhYnN0cmFjdCBmb3JtIGZpZWxkIGNvbnRyb2xzLiBXZSBoYW5kbGUgZWFjaCBldmVudCBtYW51YWxseVxuICAgIC8vIGluIFwic3RhdGVDaGFuZ2VzXCIgYmFzZWQgb24gdGhlIGZvcm0gZmllbGQgY29udHJvbCBzdGF0ZS4gVGhlIGZvbGxvd2luZyBldmVudHNcbiAgICAvLyBuZWVkIHRvIGJlIGhhbmRsZWQ6IGZvY3VzLCBibHVyLiBXZSBkbyBub3QgaGFuZGxlIHRoZSBcImlucHV0XCIgZXZlbnQgc2luY2VcbiAgICAvLyB0aGF0IG9uZSBpcyBvbmx5IG5lZWRlZCBmb3IgdGhlIHRleHQtZmllbGQgY2hhcmFjdGVyIGNvdW50LCB3aGljaCB3ZSBkb1xuICAgIC8vIG5vdCBpbXBsZW1lbnQgYXMgcGFydCBvZiB0aGUgZm9ybSBmaWVsZCwgYnV0IHNob3VsZCBiZSBpbXBsZW1lbnRlZCBtYW51YWxseVxuICAgIC8vIGJ5IGNvbnN1bWVycyB1c2luZyB0ZW1wbGF0ZSBiaW5kaW5ncy5cbiAgICByZWdpc3RlcklucHV0SW50ZXJhY3Rpb25IYW5kbGVyOiAoKSA9PiB7fSxcbiAgICBkZXJlZ2lzdGVySW5wdXRJbnRlcmFjdGlvbkhhbmRsZXI6ICgpID0+IHt9LFxuXG4gICAgLy8gV2UgZG8gbm90IGhhdmUgYSByZWZlcmVuY2UgdG8gdGhlIG5hdGl2ZSBpbnB1dCBzaW5jZSB3ZSB3b3JrIHdpdGggYWJzdHJhY3QgZm9ybSBmaWVsZFxuICAgIC8vIGNvbnRyb2xzLiBNREMgbmVlZHMgYSByZWZlcmVuY2UgdG8gdGhlIG5hdGl2ZSBpbnB1dCBvcHRpb25hbGx5IHRvIGhhbmRsZSBjaGFyYWN0ZXJcbiAgICAvLyBjb3VudGluZyBhbmQgdmFsdWUgdXBkYXRpbmcuIFRoZXNlIGFyZSBib3RoIHRoaW5ncyB3ZSBkbyBub3QgaGFuZGxlIGZyb20gd2l0aGluIHRoZVxuICAgIC8vIGZvcm0gZmllbGQsIHNvIHdlIGNhbiBqdXN0IHJldHVybiBudWxsLlxuICAgIGdldE5hdGl2ZUlucHV0OiAoKSA9PiBudWxsLFxuXG4gICAgLy8gVGhpcyBtZXRob2Qgd2lsbCBuZXZlciBiZSBjYWxsZWQgc2luY2Ugd2UgZG8gbm90IGhhdmUgdGhlIGFiaWxpdHkgdG8gYWRkIGV2ZW50IGxpc3RlbmVyc1xuICAgIC8vIHRvIHRoZSBuYXRpdmUgaW5wdXQuIFRoaXMgaXMgYmVjYXVzZSB0aGUgZm9ybSBjb250cm9sIGlzIG5vdCBuZWNlc3NhcmlseSBhbiBpbnB1dCwgYW5kXG4gICAgLy8gdGhlIGZvcm0gZmllbGQgZGVhbHMgd2l0aCBhYnN0cmFjdCBmb3JtIGNvbnRyb2xzIG9mIGFueSB0eXBlLlxuICAgIHNldExpbmVSaXBwbGVUcmFuc2Zvcm1PcmlnaW46ICgpID0+IHt9LFxuXG4gICAgLy8gVGhlIGZvdW5kYXRpb24gdHJpZXMgdG8gcmVnaXN0ZXIgY2xpY2sgYW5kIGtleWJvYXJkIGV2ZW50cyBvbiB0aGUgZm9ybSBmaWVsZCB0byBmaWd1cmUgb3V0XG4gICAgLy8gaWYgdGhlIGlucHV0IHZhbHVlIGNoYW5nZXMgdGhyb3VnaCB1c2VyIGludGVyYWN0aW9uLiBCYXNlZCBvbiB0aGF0LCB0aGUgZm91bmRhdGlvbiB0cmllc1xuICAgIC8vIHRvIGZvY3VzIHRoZSBpbnB1dC4gU2luY2Ugd2UgZG8gbm90IGhhbmRsZSB0aGUgaW5wdXQgdmFsdWUgYXMgcGFydCBvZiB0aGUgZm9ybSBmaWVsZCwgbm9yXG4gICAgLy8gaXQncyBndWFyYW50ZWVkIHRvIGJlIGFuIGlucHV0IChzZWUgYWRhcHRlciBtZXRob2RzIGFib3ZlKSwgdGhpcyBpcyBhIG5vb3AuXG4gICAgZGVyZWdpc3RlclRleHRGaWVsZEludGVyYWN0aW9uSGFuZGxlcjogKCkgPT4ge30sXG4gICAgcmVnaXN0ZXJUZXh0RmllbGRJbnRlcmFjdGlvbkhhbmRsZXI6ICgpID0+IHt9LFxuXG4gICAgLy8gVGhlIGZvdW5kYXRpb24gdHJpZXMgdG8gc2V0dXAgYSBcIk11dGF0aW9uT2JzZXJ2ZXJcIiBpbiBvcmRlciB0byB3YXRjaCBmb3IgYXR0cmlidXRlc1xuICAgIC8vIGxpa2UgXCJtYXhsZW5ndGhcIiBvciBcInBhdHRlcm5cIiB0byBjaGFuZ2UuIFRoZSBmb3VuZGF0aW9uIHdpbGwgdXBkYXRlIHRoZSB2YWxpZGl0eSBzdGF0ZVxuICAgIC8vIGJhc2VkIG9uIHRoYXQuIFdlIGRvIG5vdCBuZWVkIHRoaXMgbG9naWMgc2luY2Ugd2UgaGFuZGxlIHRoZSB2YWxpZGl0eSB0aHJvdWdoIHRoZVxuICAgIC8vIGFic3RyYWN0IGZvcm0gY29udHJvbCBpbnN0YW5jZS5cbiAgICBkZXJlZ2lzdGVyVmFsaWRhdGlvbkF0dHJpYnV0ZUNoYW5nZUhhbmRsZXI6ICgpID0+IHt9LFxuICAgIHJlZ2lzdGVyVmFsaWRhdGlvbkF0dHJpYnV0ZUNoYW5nZUhhbmRsZXI6ICgpID0+IG51bGwgYXMgYW55LFxuXG4gICAgLy8gVXNlZCBieSBmb3VuZGF0aW9uIHRvIGR5bmFtaWNhbGx5IHJlbW92ZSBhcmlhLWRlc2NyaWJlZGJ5IHdoZW4gdGhlIGhpbnQgdGV4dFxuICAgIC8vIGlzIHNob3duIG9ubHkgb24gaW52YWxpZCBzdGF0ZSwgd2hpY2ggc2hvdWxkIG5vdCBiZSBhcHBsaWNhYmxlIGhlcmUuXG4gICAgc2V0SW5wdXRBdHRyOiAoKSA9PiB1bmRlZmluZWQsXG4gICAgcmVtb3ZlSW5wdXRBdHRyOiAoKSA9PiB1bmRlZmluZWQsXG4gIH07XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBfZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIF9jaGFuZ2VEZXRlY3RvclJlZjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBfbmdab25lOiBOZ1pvbmUsXG4gICAgcHJpdmF0ZSBfZGlyOiBEaXJlY3Rpb25hbGl0eSxcbiAgICBwcml2YXRlIF9wbGF0Zm9ybTogUGxhdGZvcm0sXG4gICAgQE9wdGlvbmFsKClcbiAgICBASW5qZWN0KE1BVF9GT1JNX0ZJRUxEX0RFRkFVTFRfT1BUSU9OUylcbiAgICBwcml2YXRlIF9kZWZhdWx0cz86IE1hdEZvcm1GaWVsZERlZmF1bHRPcHRpb25zLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoQU5JTUFUSU9OX01PRFVMRV9UWVBFKSBwdWJsaWMgX2FuaW1hdGlvbk1vZGU/OiBzdHJpbmcsXG4gICAgQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBfZG9jdW1lbnQ/OiBhbnksXG4gICkge1xuICAgIGlmIChfZGVmYXVsdHMpIHtcbiAgICAgIGlmIChfZGVmYXVsdHMuYXBwZWFyYW5jZSkge1xuICAgICAgICB0aGlzLmFwcGVhcmFuY2UgPSBfZGVmYXVsdHMuYXBwZWFyYW5jZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX2hpZGVSZXF1aXJlZE1hcmtlciA9IEJvb2xlYW4oX2RlZmF1bHRzPy5oaWRlUmVxdWlyZWRNYXJrZXIpO1xuICAgICAgaWYgKF9kZWZhdWx0cy5jb2xvcikge1xuICAgICAgICB0aGlzLmNvbG9yID0gX2RlZmF1bHRzLmNvbG9yO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLl9mb3VuZGF0aW9uID0gbmV3IE1EQ1RleHRGaWVsZEZvdW5kYXRpb24odGhpcy5fYWRhcHRlcik7XG5cbiAgICAvLyBNREMgdXNlcyB0aGUgXCJzaG91bGRGbG9hdFwiIGdldHRlciB0byBrbm93IHdoZXRoZXIgdGhlIGxhYmVsIGlzIGN1cnJlbnRseSBmbG9hdGluZy4gVGhpc1xuICAgIC8vIGRvZXMgbm90IG1hdGNoIG91ciBpbXBsZW1lbnRhdGlvbiBvZiB3aGVuIHRoZSBsYWJlbCBmbG9hdHMgYmVjYXVzZSB3ZSBzdXBwb3J0IG1vcmUgY2FzZXMuXG4gICAgLy8gRm9yIGV4YW1wbGUsIGNvbnN1bWVycyBjYW4gc2V0IFwiQElucHV0IGZsb2F0TGFiZWxcIiB0byBhbHdheXMsIG9yIHRoZSBjdXN0b20gZm9ybSBmaWVsZFxuICAgIC8vIGNvbnRyb2wgY2FuIHNldCBcIk1hdEZvcm1GaWVsZENvbnRyb2wjc2hvdWxkTGFiZWxGbG9hdFwiIHRvIHRydWUuIFRvIGVuc3VyZSB0aGF0IE1EQyBrbm93c1xuICAgIC8vIHdoZW4gdGhlIGxhYmVsIGlzIGZsb2F0aW5nLCB3ZSBvdmVyd3JpdGUgdGhlIHByb3BlcnR5IHRvIGJlIGJhc2VkIG9uIHRoZSBtZXRob2Qgd2UgdXNlIHRvXG4gICAgLy8gZGV0ZXJtaW5lIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBmbG9hdGluZyBsYWJlbC5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcy5fZm91bmRhdGlvbiwgJ3Nob3VsZEZsb2F0Jywge1xuICAgICAgZ2V0OiAoKSA9PiB0aGlzLl9zaG91bGRMYWJlbEZsb2F0KCksXG4gICAgfSk7XG5cbiAgICAvLyBCeSBkZWZhdWx0LCB0aGUgZm91bmRhdGlvbiBkZXRlcm1pbmVzIHRoZSB2YWxpZGl0eSBvZiB0aGUgdGV4dC1maWVsZCBmcm9tIHRoZVxuICAgIC8vIHNwZWNpZmllZCBuYXRpdmUgaW5wdXQuIFNpbmNlIHdlIGRvbid0IHBhc3MgYSBuYXRpdmUgaW5wdXQgdG8gdGhlIGZvdW5kYXRpb24gYmVjYXVzZVxuICAgIC8vIGFic3RyYWN0IGZvcm0gY29udHJvbHMgYXJlIG5vdCBuZWNlc3NhcmlseSBjb25zaXN0aW5nIG9mIGFuIGlucHV0LCB3ZSBoYW5kbGUgdGhlXG4gICAgLy8gdGV4dC1maWVsZCB2YWxpZGl0eSB0aHJvdWdoIHRoZSBhYnN0cmFjdCBmb3JtIGZpZWxkIGNvbnRyb2wgc3RhdGUuXG4gICAgdGhpcy5fZm91bmRhdGlvbi5pc1ZhbGlkID0gKCkgPT4gIXRoaXMuX2NvbnRyb2wuZXJyb3JTdGF0ZTtcblxuICAgIC8vIEluaXRpYWwgZm9jdXMgc3RhdGUgc3luYy4gVGhpcyBoYXBwZW5zIHJhcmVseSwgYnV0IHdlIHdhbnQgdG8gYWNjb3VudCBmb3JcbiAgICAvLyBpdCBpbiBjYXNlIHRoZSBmb3JtIGZpZWxkIGNvbnRyb2wgaGFzIFwiZm9jdXNlZFwiIHNldCB0byB0cnVlIG9uIGluaXQuXG4gICAgdGhpcy5fdXBkYXRlRm9jdXNTdGF0ZSgpO1xuICAgIC8vIEluaXRpYWwgbm90Y2ggd2lkdGggdXBkYXRlLiBUaGlzIGlzIG5lZWRlZCBpbiBjYXNlIHRoZSB0ZXh0LWZpZWxkIGxhYmVsIGZsb2F0c1xuICAgIC8vIG9uIGluaXRpYWxpemF0aW9uLCBhbmQgcmVuZGVycyBpbnNpZGUgb2YgdGhlIG5vdGNoZWQgb3V0bGluZS5cbiAgICB0aGlzLl9yZWZyZXNoT3V0bGluZU5vdGNoV2lkdGgoKTtcbiAgICAvLyBNYWtlIHN1cmUgZm9udHMgYXJlIGxvYWRlZCBiZWZvcmUgY2FsY3VsYXRpbmcgdGhlIHdpZHRoLlxuICAgIC8vIHpvbmUuanMgY3VycmVudGx5IGRvZXNuJ3QgcGF0Y2ggdGhlIEZvbnRGYWNlU2V0IEFQSSBzbyB0d28gY2FsbHMgdG9cbiAgICAvLyBfcmVmcmVzaE91dGxpbmVOb3RjaFdpZHRoIGlzIG5lZWRlZCBmb3IgdGhpcyB0byB3b3JrIHByb3Blcmx5IGluIGFzeW5jIHRlc3RzLlxuICAgIC8vIEZ1cnRoZXJtb3JlIGlmIHRoZSBmb250IHRha2VzIGEgbG9uZyB0aW1lIHRvIGxvYWQgd2Ugd2FudCB0aGUgb3V0bGluZSBub3RjaCB0byBiZSBjbG9zZVxuICAgIC8vIHRvIHRoZSBjb3JyZWN0IHdpZHRoIGZyb20gdGhlIHN0YXJ0IHRoZW4gY29ycmVjdCBpdHNlbGYgd2hlbiB0aGUgZm9udHMgbG9hZC5cbiAgICBpZiAodGhpcy5fZG9jdW1lbnQ/LmZvbnRzPy5yZWFkeSkge1xuICAgICAgdGhpcy5fZG9jdW1lbnQuZm9udHMucmVhZHkudGhlbigoKSA9PiB7XG4gICAgICAgIHRoaXMuX3JlZnJlc2hPdXRsaW5lTm90Y2hXaWR0aCgpO1xuICAgICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBGb250RmFjZVNldCBpcyBub3Qgc3VwcG9ydGVkIGluIElFXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuX3JlZnJlc2hPdXRsaW5lTm90Y2hXaWR0aCgpLCAxMDApO1xuICAgIH1cbiAgICAvLyBFbmFibGUgYW5pbWF0aW9ucyBub3cuIFRoaXMgZW5zdXJlcyB3ZSBkb24ndCBhbmltYXRlIG9uIGluaXRpYWwgcmVuZGVyLlxuICAgIHRoaXMuX3N1YnNjcmlwdEFuaW1hdGlvblN0YXRlID0gJ2VudGVyJztcbiAgICAvLyBCZWNhdXNlIHRoZSBhYm92ZSBjaGFuZ2VzIGEgdmFsdWUgdXNlZCBpbiB0aGUgdGVtcGxhdGUgYWZ0ZXIgaXQgd2FzIGNoZWNrZWQsIHdlIG5lZWRcbiAgICAvLyB0byB0cmlnZ2VyIENEIG9yIHRoZSBjaGFuZ2UgbWlnaHQgbm90IGJlIHJlZmxlY3RlZCBpZiB0aGVyZSBpcyBubyBvdGhlciBDRCBzY2hlZHVsZWQuXG4gICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xuICAgIHRoaXMuX2Fzc2VydEZvcm1GaWVsZENvbnRyb2woKTtcbiAgICB0aGlzLl9pbml0aWFsaXplQ29udHJvbCgpO1xuICAgIHRoaXMuX2luaXRpYWxpemVTdWJzY3JpcHQoKTtcbiAgICB0aGlzLl9pbml0aWFsaXplUHJlZml4QW5kU3VmZml4KCk7XG4gICAgdGhpcy5faW5pdGlhbGl6ZU91dGxpbmVMYWJlbE9mZnNldFN1YnNjcmlwdGlvbnMoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJDb250ZW50Q2hlY2tlZCgpIHtcbiAgICB0aGlzLl9hc3NlcnRGb3JtRmllbGRDb250cm9sKCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLl9mb3VuZGF0aW9uPy5kZXN0cm95KCk7XG4gICAgdGhpcy5fZGVzdHJveWVkLm5leHQoKTtcbiAgICB0aGlzLl9kZXN0cm95ZWQuY29tcGxldGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBpZCBvZiB0aGUgbGFiZWwgZWxlbWVudC4gSWYgbm8gbGFiZWwgaXMgcHJlc2VudCwgcmV0dXJucyBgbnVsbGAuXG4gICAqL1xuICBnZXRMYWJlbElkKCk6IHN0cmluZyB8IG51bGwge1xuICAgIHJldHVybiB0aGlzLl9oYXNGbG9hdGluZ0xhYmVsKCkgPyB0aGlzLl9sYWJlbElkIDogbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFuIEVsZW1lbnRSZWYgZm9yIHRoZSBlbGVtZW50IHRoYXQgYSBvdmVybGF5IGF0dGFjaGVkIHRvIHRoZSBmb3JtIGZpZWxkXG4gICAqIHNob3VsZCBiZSBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvLlxuICAgKi9cbiAgZ2V0Q29ubmVjdGVkT3ZlcmxheU9yaWdpbigpOiBFbGVtZW50UmVmIHtcbiAgICByZXR1cm4gdGhpcy5fdGV4dEZpZWxkIHx8IHRoaXMuX2VsZW1lbnRSZWY7XG4gIH1cblxuICAvKiogQW5pbWF0ZXMgdGhlIHBsYWNlaG9sZGVyIHVwIGFuZCBsb2NrcyBpdCBpbiBwb3NpdGlvbi4gKi9cbiAgX2FuaW1hdGVBbmRMb2NrTGFiZWwoKTogdm9pZCB7XG4gICAgLy8gVGhpcyBpcyBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgb25seS4gQ29uc3VtZXJzIG9mIHRoZSBmb3JtIGZpZWxkIG1pZ2h0IHVzZVxuICAgIC8vIHRoaXMgbWV0aG9kLiBlLmcuIHRoZSBhdXRvY29tcGxldGUgdHJpZ2dlci4gVGhpcyBtZXRob2QgaGFzIGJlZW4gYWRkZWQgdG8gdGhlIG5vbi1NRENcbiAgICAvLyBmb3JtIGZpZWxkIGJlY2F1c2Ugc2V0dGluZyBcImZsb2F0TGFiZWxcIiB0byBcImFsd2F5c1wiIGNhdXNlZCB0aGUgbGFiZWwgdG8gZmxvYXQgd2l0aG91dFxuICAgIC8vIGFuaW1hdGlvbi4gVGhpcyBpcyBkaWZmZXJlbnQgaW4gTURDIHdoZXJlIHRoZSBsYWJlbCBhbHdheXMgYW5pbWF0ZXMsIHNvIHRoaXMgbWV0aG9kXG4gICAgLy8gaXMgbm8gbG9uZ2VyIG5lY2Vzc2FyeS4gVGhlcmUgZG9lc24ndCBzZWVtIGFueSBiZW5lZml0IGluIGFkZGluZyBsb2dpYyB0byBhbGxvdyBjaGFuZ2luZ1xuICAgIC8vIHRoZSBmbG9hdGluZyBsYWJlbCBzdGF0ZSB3aXRob3V0IGFuaW1hdGlvbnMuIFRoZSBub24tTURDIGltcGxlbWVudGF0aW9uIHdhcyBpbmNvbnNpc3RlbnRcbiAgICAvLyBiZWNhdXNlIGl0IGFsd2F5cyBhbmltYXRlcyBpZiBcImZsb2F0TGFiZWxcIiBpcyBzZXQgYXdheSBmcm9tIFwiYWx3YXlzXCIuXG4gICAgLy8gVE9ETyhkZXZ2ZXJzaW9uKTogY29uc2lkZXIgcmVtb3ZpbmcgdGhpcyBtZXRob2Qgd2hlbiByZWxlYXNpbmcgdGhlIE1EQyBmb3JtIGZpZWxkLlxuICAgIGlmICh0aGlzLl9oYXNGbG9hdGluZ0xhYmVsKCkpIHtcbiAgICAgIHRoaXMuZmxvYXRMYWJlbCA9ICdhbHdheXMnO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBJbml0aWFsaXplcyB0aGUgcmVnaXN0ZXJlZCBmb3JtIGZpZWxkIGNvbnRyb2wuICovXG4gIHByaXZhdGUgX2luaXRpYWxpemVDb250cm9sKCkge1xuICAgIGNvbnN0IGNvbnRyb2wgPSB0aGlzLl9jb250cm9sO1xuXG4gICAgaWYgKGNvbnRyb2wuY29udHJvbFR5cGUpIHtcbiAgICAgIHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5jbGFzc0xpc3QuYWRkKFxuICAgICAgICBgbWF0LW1kYy1mb3JtLWZpZWxkLXR5cGUtJHtjb250cm9sLmNvbnRyb2xUeXBlfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIC8vIFN1YnNjcmliZSB0byBjaGFuZ2VzIGluIHRoZSBjaGlsZCBjb250cm9sIHN0YXRlIGluIG9yZGVyIHRvIHVwZGF0ZSB0aGUgZm9ybSBmaWVsZCBVSS5cbiAgICBjb250cm9sLnN0YXRlQ2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fdXBkYXRlRm9jdXNTdGF0ZSgpO1xuICAgICAgdGhpcy5fc3luY0Rlc2NyaWJlZEJ5SWRzKCk7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIC8vIFJ1biBjaGFuZ2UgZGV0ZWN0aW9uIGlmIHRoZSB2YWx1ZSBjaGFuZ2VzLlxuICAgIGlmIChjb250cm9sLm5nQ29udHJvbCAmJiBjb250cm9sLm5nQ29udHJvbC52YWx1ZUNoYW5nZXMpIHtcbiAgICAgIGNvbnRyb2wubmdDb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5fZGVzdHJveWVkKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBfY2hlY2tQcmVmaXhBbmRTdWZmaXhUeXBlcygpIHtcbiAgICB0aGlzLl9oYXNJY29uUHJlZml4ID0gISF0aGlzLl9wcmVmaXhDaGlsZHJlbi5maW5kKHAgPT4gIXAuX2lzVGV4dCk7XG4gICAgdGhpcy5faGFzVGV4dFByZWZpeCA9ICEhdGhpcy5fcHJlZml4Q2hpbGRyZW4uZmluZChwID0+IHAuX2lzVGV4dCk7XG4gICAgdGhpcy5faGFzSWNvblN1ZmZpeCA9ICEhdGhpcy5fc3VmZml4Q2hpbGRyZW4uZmluZChzID0+ICFzLl9pc1RleHQpO1xuICAgIHRoaXMuX2hhc1RleHRTdWZmaXggPSAhIXRoaXMuX3N1ZmZpeENoaWxkcmVuLmZpbmQocyA9PiBzLl9pc1RleHQpO1xuICB9XG5cbiAgLyoqIEluaXRpYWxpemVzIHRoZSBwcmVmaXggYW5kIHN1ZmZpeCBjb250YWluZXJzLiAqL1xuICBwcml2YXRlIF9pbml0aWFsaXplUHJlZml4QW5kU3VmZml4KCkge1xuICAgIHRoaXMuX2NoZWNrUHJlZml4QW5kU3VmZml4VHlwZXMoKTtcbiAgICAvLyBNYXJrIHRoZSBmb3JtIGZpZWxkIGFzIGRpcnR5IHdoZW5ldmVyIHRoZSBwcmVmaXggb3Igc3VmZml4IGNoaWxkcmVuIGNoYW5nZS4gVGhpc1xuICAgIC8vIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHdlIGNvbmRpdGlvbmFsbHkgZGlzcGxheSB0aGUgcHJlZml4L3N1ZmZpeCBjb250YWluZXJzIGJhc2VkXG4gICAgLy8gb24gd2hldGhlciB0aGVyZSBpcyBwcm9qZWN0ZWQgY29udGVudC5cbiAgICBtZXJnZSh0aGlzLl9wcmVmaXhDaGlsZHJlbi5jaGFuZ2VzLCB0aGlzLl9zdWZmaXhDaGlsZHJlbi5jaGFuZ2VzKS5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fY2hlY2tQcmVmaXhBbmRTdWZmaXhUeXBlcygpO1xuICAgICAgdGhpcy5fY2hhbmdlRGV0ZWN0b3JSZWYubWFya0ZvckNoZWNrKCk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIHN1YnNjcmlwdCBieSB2YWxpZGF0aW5nIGhpbnRzIGFuZCBzeW5jaHJvbml6aW5nIFwiYXJpYS1kZXNjcmliZWRieVwiIGlkc1xuICAgKiB3aXRoIHRoZSBjdXN0b20gZm9ybSBmaWVsZCBjb250cm9sLiBBbHNvIHN1YnNjcmliZXMgdG8gaGludCBhbmQgZXJyb3IgY2hhbmdlcyBpbiBvcmRlclxuICAgKiB0byBiZSBhYmxlIHRvIHZhbGlkYXRlIGFuZCBzeW5jaHJvbml6ZSBpZHMgb24gY2hhbmdlLlxuICAgKi9cbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZVN1YnNjcmlwdCgpIHtcbiAgICAvLyBSZS12YWxpZGF0ZSB3aGVuIHRoZSBudW1iZXIgb2YgaGludHMgY2hhbmdlcy5cbiAgICB0aGlzLl9oaW50Q2hpbGRyZW4uY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fcHJvY2Vzc0hpbnRzKCk7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgYXJpYS1kZXNjcmliZWQgYnkgd2hlbiB0aGUgbnVtYmVyIG9mIGVycm9ycyBjaGFuZ2VzLlxuICAgIHRoaXMuX2Vycm9yQ2hpbGRyZW4uY2hhbmdlcy5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgdGhpcy5fc3luY0Rlc2NyaWJlZEJ5SWRzKCk7XG4gICAgICB0aGlzLl9jaGFuZ2VEZXRlY3RvclJlZi5tYXJrRm9yQ2hlY2soKTtcbiAgICB9KTtcblxuICAgIC8vIEluaXRpYWwgbWF0LWhpbnQgdmFsaWRhdGlvbiBhbmQgc3Vic2NyaXB0IGRlc2NyaWJlZEJ5SWRzIHN5bmMuXG4gICAgdGhpcy5fdmFsaWRhdGVIaW50cygpO1xuICAgIHRoaXMuX3N5bmNEZXNjcmliZWRCeUlkcygpO1xuICB9XG5cbiAgLyoqIFRocm93cyBhbiBlcnJvciBpZiB0aGUgZm9ybSBmaWVsZCdzIGNvbnRyb2wgaXMgbWlzc2luZy4gKi9cbiAgcHJpdmF0ZSBfYXNzZXJ0Rm9ybUZpZWxkQ29udHJvbCgpIHtcbiAgICBpZiAoIXRoaXMuX2NvbnRyb2wgJiYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkpIHtcbiAgICAgIHRocm93IGdldE1hdEZvcm1GaWVsZE1pc3NpbmdDb250cm9sRXJyb3IoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF91cGRhdGVGb2N1c1N0YXRlKCkge1xuICAgIC8vIFVzdWFsbHkgdGhlIE1EQyBmb3VuZGF0aW9uIHdvdWxkIGNhbGwgXCJhY3RpdmF0ZUZvY3VzXCIgYW5kIFwiZGVhY3RpdmF0ZUZvY3VzXCIgd2hlbmV2ZXJcbiAgICAvLyBjZXJ0YWluIERPTSBldmVudHMgYXJlIGVtaXR0ZWQuIFRoaXMgaXMgbm90IHBvc3NpYmxlIGluIG91ciBpbXBsZW1lbnRhdGlvbiBvZiB0aGVcbiAgICAvLyBmb3JtIGZpZWxkIGJlY2F1c2Ugd2Ugc3VwcG9ydCBhYnN0cmFjdCBmb3JtIGZpZWxkIGNvbnRyb2xzIHdoaWNoIGFyZSBub3QgbmVjZXNzYXJpbHlcbiAgICAvLyBvZiB0eXBlIGlucHV0LCBub3IgZG8gd2UgaGF2ZSBhIHJlZmVyZW5jZSB0byBhIG5hdGl2ZSBmb3JtIGZpZWxkIGNvbnRyb2wgZWxlbWVudC4gSW5zdGVhZFxuICAgIC8vIHdlIGhhbmRsZSB0aGUgZm9jdXMgYnkgY2hlY2tpbmcgaWYgdGhlIGFic3RyYWN0IGZvcm0gZmllbGQgY29udHJvbCBmb2N1c2VkIHN0YXRlIGNoYW5nZXMuXG4gICAgaWYgKHRoaXMuX2NvbnRyb2wuZm9jdXNlZCAmJiAhdGhpcy5faXNGb2N1c2VkKSB7XG4gICAgICB0aGlzLl9pc0ZvY3VzZWQgPSB0cnVlO1xuICAgICAgdGhpcy5fZm91bmRhdGlvbi5hY3RpdmF0ZUZvY3VzKCk7XG4gICAgfSBlbHNlIGlmICghdGhpcy5fY29udHJvbC5mb2N1c2VkICYmICh0aGlzLl9pc0ZvY3VzZWQgfHwgdGhpcy5faXNGb2N1c2VkID09PSBudWxsKSkge1xuICAgICAgdGhpcy5faXNGb2N1c2VkID0gZmFsc2U7XG4gICAgICB0aGlzLl9mb3VuZGF0aW9uLmRlYWN0aXZhdGVGb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgZmxvYXRpbmcgbGFiZWwgaW4gdGhlIGRvY2tlZCBzdGF0ZSBuZWVkcyB0byBhY2NvdW50IGZvciBwcmVmaXhlcy4gVGhlIGhvcml6b250YWwgb2Zmc2V0XG4gICAqIGlzIGNhbGN1bGF0ZWQgd2hlbmV2ZXIgdGhlIGFwcGVhcmFuY2UgY2hhbmdlcyB0byBgb3V0bGluZWAsIHRoZSBwcmVmaXhlcyBjaGFuZ2UsIG9yIHdoZW4gdGhlXG4gICAqIGZvcm0gZmllbGQgaXMgYWRkZWQgdG8gdGhlIERPTS4gVGhpcyBtZXRob2Qgc2V0cyB1cCBhbGwgc3Vic2NyaXB0aW9ucyB3aGljaCBhcmUgbmVlZGVkIHRvXG4gICAqIHRyaWdnZXIgdGhlIGxhYmVsIG9mZnNldCB1cGRhdGUuIEluIGdlbmVyYWwsIHdlIHdhbnQgdG8gYXZvaWQgcGVyZm9ybWluZyBtZWFzdXJlbWVudHMgb2Z0ZW4sXG4gICAqIHNvIHdlIHJlbHkgb24gdGhlIGBOZ1pvbmVgIGFzIGluZGljYXRvciB3aGVuIHRoZSBvZmZzZXQgc2hvdWxkIGJlIHJlY2FsY3VsYXRlZCwgaW5zdGVhZCBvZlxuICAgKiBjaGVja2luZyBldmVyeSBjaGFuZ2UgZGV0ZWN0aW9uIGN5Y2xlLlxuICAgKi9cbiAgcHJpdmF0ZSBfaW5pdGlhbGl6ZU91dGxpbmVMYWJlbE9mZnNldFN1YnNjcmlwdGlvbnMoKSB7XG4gICAgLy8gV2hlbmV2ZXIgdGhlIHByZWZpeCBjaGFuZ2VzLCBzY2hlZHVsZSBhbiB1cGRhdGUgb2YgdGhlIGxhYmVsIG9mZnNldC5cbiAgICB0aGlzLl9wcmVmaXhDaGlsZHJlbi5jaGFuZ2VzLnN1YnNjcmliZShcbiAgICAgICgpID0+ICh0aGlzLl9uZWVkc091dGxpbmVMYWJlbE9mZnNldFVwZGF0ZU9uU3RhYmxlID0gdHJ1ZSksXG4gICAgKTtcblxuICAgIC8vIE5vdGUgdGhhdCB3ZSBoYXZlIHRvIHJ1biBvdXRzaWRlIG9mIHRoZSBgTmdab25lYCBleHBsaWNpdGx5LCBpbiBvcmRlciB0byBhdm9pZFxuICAgIC8vIHRocm93aW5nIHVzZXJzIGludG8gYW4gaW5maW5pdGUgbG9vcCBpZiBgem9uZS1wYXRjaC1yeGpzYCBpcyBpbmNsdWRlZC5cbiAgICB0aGlzLl9uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgdGhpcy5fbmdab25lLm9uU3RhYmxlLnBpcGUodGFrZVVudGlsKHRoaXMuX2Rlc3Ryb3llZCkpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGlmICh0aGlzLl9uZWVkc091dGxpbmVMYWJlbE9mZnNldFVwZGF0ZU9uU3RhYmxlKSB7XG4gICAgICAgICAgdGhpcy5fbmVlZHNPdXRsaW5lTGFiZWxPZmZzZXRVcGRhdGVPblN0YWJsZSA9IGZhbHNlO1xuICAgICAgICAgIHRoaXMuX3VwZGF0ZU91dGxpbmVMYWJlbE9mZnNldCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuX2Rpci5jaGFuZ2VcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLl9kZXN0cm95ZWQpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiAodGhpcy5fbmVlZHNPdXRsaW5lTGFiZWxPZmZzZXRVcGRhdGVPblN0YWJsZSA9IHRydWUpKTtcbiAgfVxuXG4gIC8qKiBXaGV0aGVyIHRoZSBmbG9hdGluZyBsYWJlbCBzaG91bGQgYWx3YXlzIGZsb2F0IG9yIG5vdC4gKi9cbiAgX3Nob3VsZEFsd2F5c0Zsb2F0KCkge1xuICAgIHJldHVybiB0aGlzLmZsb2F0TGFiZWwgPT09ICdhbHdheXMnO1xuICB9XG5cbiAgX2hhc091dGxpbmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuYXBwZWFyYW5jZSA9PT0gJ291dGxpbmUnO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGxhYmVsIHNob3VsZCBkaXNwbGF5IGluIHRoZSBpbmZpeC4gTGFiZWxzIGluIHRoZSBvdXRsaW5lIGFwcGVhcmFuY2UgYXJlXG4gICAqIGRpc3BsYXllZCBhcyBwYXJ0IG9mIHRoZSBub3RjaGVkLW91dGxpbmUgYW5kIGFyZSBob3Jpem9udGFsbHkgb2Zmc2V0IHRvIGFjY291bnQgZm9yXG4gICAqIGZvcm0gZmllbGQgcHJlZml4IGNvbnRlbnQuIFRoaXMgd29uJ3Qgd29yayBpbiBzZXJ2ZXIgc2lkZSByZW5kZXJpbmcgc2luY2Ugd2UgY2Fubm90XG4gICAqIG1lYXN1cmUgdGhlIHdpZHRoIG9mIHRoZSBwcmVmaXggY29udGFpbmVyLiBUbyBtYWtlIHRoZSBkb2NrZWQgbGFiZWwgYXBwZWFyIGFzIGlmIHRoZVxuICAgKiByaWdodCBvZmZzZXQgaGFzIGJlZW4gY2FsY3VsYXRlZCwgd2UgZm9yY2libHkgcmVuZGVyIHRoZSBsYWJlbCBpbnNpZGUgdGhlIGluZml4LiBTaW5jZVxuICAgKiB0aGUgbGFiZWwgaXMgcGFydCBvZiB0aGUgaW5maXgsIHRoZSBsYWJlbCBjYW5ub3Qgb3ZlcmZsb3cgdGhlIHByZWZpeCBjb250ZW50LlxuICAgKi9cbiAgX2ZvcmNlRGlzcGxheUluZml4TGFiZWwoKSB7XG4gICAgcmV0dXJuICF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIgJiYgdGhpcy5fcHJlZml4Q2hpbGRyZW4ubGVuZ3RoICYmICF0aGlzLl9zaG91bGRMYWJlbEZsb2F0KCk7XG4gIH1cblxuICBfaGFzRmxvYXRpbmdMYWJlbCgpIHtcbiAgICByZXR1cm4gISF0aGlzLl9sYWJlbENoaWxkTm9uU3RhdGljIHx8ICEhdGhpcy5fbGFiZWxDaGlsZFN0YXRpYztcbiAgfVxuXG4gIF9zaG91bGRMYWJlbEZsb2F0KCkge1xuICAgIHJldHVybiB0aGlzLl9jb250cm9sLnNob3VsZExhYmVsRmxvYXQgfHwgdGhpcy5fc2hvdWxkQWx3YXlzRmxvYXQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBjbGFzcyBmcm9tIHRoZSBBYnN0cmFjdENvbnRyb2xEaXJlY3RpdmVcbiAgICogc2hvdWxkIGJlIGZvcndhcmRlZCB0byB0aGUgaG9zdCBlbGVtZW50LlxuICAgKi9cbiAgX3Nob3VsZEZvcndhcmQocHJvcDoga2V5b2YgQWJzdHJhY3RDb250cm9sRGlyZWN0aXZlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgY29udHJvbCA9IHRoaXMuX2NvbnRyb2wgPyB0aGlzLl9jb250cm9sLm5nQ29udHJvbCA6IG51bGw7XG4gICAgcmV0dXJuIGNvbnRyb2wgJiYgY29udHJvbFtwcm9wXTtcbiAgfVxuXG4gIC8qKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gZGlzcGxheSBoaW50cyBvciBlcnJvcnMuICovXG4gIF9nZXREaXNwbGF5ZWRNZXNzYWdlcygpOiAnZXJyb3InIHwgJ2hpbnQnIHtcbiAgICByZXR1cm4gdGhpcy5fZXJyb3JDaGlsZHJlbiAmJiB0aGlzLl9lcnJvckNoaWxkcmVuLmxlbmd0aCA+IDAgJiYgdGhpcy5fY29udHJvbC5lcnJvclN0YXRlXG4gICAgICA/ICdlcnJvcidcbiAgICAgIDogJ2hpbnQnO1xuICB9XG5cbiAgLyoqIFJlZnJlc2hlcyB0aGUgd2lkdGggb2YgdGhlIG91dGxpbmUtbm90Y2gsIGlmIHByZXNlbnQuICovXG4gIF9yZWZyZXNoT3V0bGluZU5vdGNoV2lkdGgoKSB7XG4gICAgaWYgKCF0aGlzLl9oYXNPdXRsaW5lKCkgfHwgIXRoaXMuX2Zsb2F0aW5nTGFiZWwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gVGhlIG91dGxpbmUgbm90Y2ggc2hvdWxkIGJlIGJhc2VkIG9uIHRoZSBsYWJlbCB3aWR0aCwgYnV0IG5lZWRzIHRvIHJlc3BlY3QgdGhlIHNjYWxpbmdcbiAgICAvLyBhcHBsaWVkIHRvIHRoZSBsYWJlbCBpZiBpdCBhY3RpdmVseSBmbG9hdHMuIFNpbmNlIHRoZSBsYWJlbCBhbHdheXMgZmxvYXRzIHdoZW4gdGhlIG5vdGNoXG4gICAgLy8gaXMgb3BlbiwgdGhlIE1EQyB0ZXh0LWZpZWxkIGZsb2F0aW5nIGxhYmVsIHNjYWxpbmcgaXMgcmVzcGVjdGVkIGluIG5vdGNoIHdpZHRoIGNhbGN1bGF0aW9uLlxuICAgIHRoaXMuX291dGxpbmVOb3RjaFdpZHRoID0gdGhpcy5fZmxvYXRpbmdMYWJlbC5nZXRXaWR0aCgpICogbWRjVGV4dEZpZWxkTnVtYmVycy5MQUJFTF9TQ0FMRTtcbiAgfVxuXG4gIC8qKiBEb2VzIGFueSBleHRyYSBwcm9jZXNzaW5nIHRoYXQgaXMgcmVxdWlyZWQgd2hlbiBoYW5kbGluZyB0aGUgaGludHMuICovXG4gIHByaXZhdGUgX3Byb2Nlc3NIaW50cygpIHtcbiAgICB0aGlzLl92YWxpZGF0ZUhpbnRzKCk7XG4gICAgdGhpcy5fc3luY0Rlc2NyaWJlZEJ5SWRzKCk7XG4gIH1cblxuICAvKipcbiAgICogRW5zdXJlIHRoYXQgdGhlcmUgaXMgYSBtYXhpbXVtIG9mIG9uZSBvZiBlYWNoIFwibWF0LWhpbnRcIiBhbGlnbm1lbnQgc3BlY2lmaWVkLiBUaGUgaGludFxuICAgKiBsYWJlbCBzcGVjaWZpZWQgc2V0IHRocm91Z2ggdGhlIGlucHV0IGlzIGJlaW5nIGNvbnNpZGVyZWQgYXMgXCJzdGFydFwiIGFsaWduZWQuXG4gICAqXG4gICAqIFRoaXMgbWV0aG9kIGlzIGEgbm9vcCBpZiBBbmd1bGFyIHJ1bnMgaW4gcHJvZHVjdGlvbiBtb2RlLlxuICAgKi9cbiAgcHJpdmF0ZSBfdmFsaWRhdGVIaW50cygpIHtcbiAgICBpZiAodGhpcy5faGludENoaWxkcmVuICYmICh0eXBlb2YgbmdEZXZNb2RlID09PSAndW5kZWZpbmVkJyB8fCBuZ0Rldk1vZGUpKSB7XG4gICAgICBsZXQgc3RhcnRIaW50OiBNYXRIaW50O1xuICAgICAgbGV0IGVuZEhpbnQ6IE1hdEhpbnQ7XG4gICAgICB0aGlzLl9oaW50Q2hpbGRyZW4uZm9yRWFjaCgoaGludDogTWF0SGludCkgPT4ge1xuICAgICAgICBpZiAoaGludC5hbGlnbiA9PT0gJ3N0YXJ0Jykge1xuICAgICAgICAgIGlmIChzdGFydEhpbnQgfHwgdGhpcy5oaW50TGFiZWwpIHtcbiAgICAgICAgICAgIHRocm93IGdldE1hdEZvcm1GaWVsZER1cGxpY2F0ZWRIaW50RXJyb3IoJ3N0YXJ0Jyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHN0YXJ0SGludCA9IGhpbnQ7XG4gICAgICAgIH0gZWxzZSBpZiAoaGludC5hbGlnbiA9PT0gJ2VuZCcpIHtcbiAgICAgICAgICBpZiAoZW5kSGludCkge1xuICAgICAgICAgICAgdGhyb3cgZ2V0TWF0Rm9ybUZpZWxkRHVwbGljYXRlZEhpbnRFcnJvcignZW5kJyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVuZEhpbnQgPSBoaW50O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgbGlzdCBvZiBlbGVtZW50IElEcyB0aGF0IGRlc2NyaWJlIHRoZSBjaGlsZCBjb250cm9sLiBUaGlzIGFsbG93cyB0aGUgY29udHJvbCB0byB1cGRhdGVcbiAgICogaXRzIGBhcmlhLWRlc2NyaWJlZGJ5YCBhdHRyaWJ1dGUgYWNjb3JkaW5nbHkuXG4gICAqL1xuICBwcml2YXRlIF9zeW5jRGVzY3JpYmVkQnlJZHMoKSB7XG4gICAgaWYgKHRoaXMuX2NvbnRyb2wpIHtcbiAgICAgIGxldCBpZHM6IHN0cmluZ1tdID0gW107XG5cbiAgICAgIC8vIFRPRE8od2FnbmVybWFjaWVsKTogUmVtb3ZlIHRoZSB0eXBlIGNoZWNrIHdoZW4gd2UgZmluZCB0aGUgcm9vdCBjYXVzZSBvZiB0aGlzIGJ1Zy5cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5fY29udHJvbC51c2VyQXJpYURlc2NyaWJlZEJ5ICYmXG4gICAgICAgIHR5cGVvZiB0aGlzLl9jb250cm9sLnVzZXJBcmlhRGVzY3JpYmVkQnkgPT09ICdzdHJpbmcnXG4gICAgICApIHtcbiAgICAgICAgaWRzLnB1c2goLi4udGhpcy5fY29udHJvbC51c2VyQXJpYURlc2NyaWJlZEJ5LnNwbGl0KCcgJykpO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fZ2V0RGlzcGxheWVkTWVzc2FnZXMoKSA9PT0gJ2hpbnQnKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0SGludCA9IHRoaXMuX2hpbnRDaGlsZHJlblxuICAgICAgICAgID8gdGhpcy5faGludENoaWxkcmVuLmZpbmQoaGludCA9PiBoaW50LmFsaWduID09PSAnc3RhcnQnKVxuICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgY29uc3QgZW5kSGludCA9IHRoaXMuX2hpbnRDaGlsZHJlblxuICAgICAgICAgID8gdGhpcy5faGludENoaWxkcmVuLmZpbmQoaGludCA9PiBoaW50LmFsaWduID09PSAnZW5kJylcbiAgICAgICAgICA6IG51bGw7XG5cbiAgICAgICAgaWYgKHN0YXJ0SGludCkge1xuICAgICAgICAgIGlkcy5wdXNoKHN0YXJ0SGludC5pZCk7XG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5faGludExhYmVsKSB7XG4gICAgICAgICAgaWRzLnB1c2godGhpcy5faGludExhYmVsSWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGVuZEhpbnQpIHtcbiAgICAgICAgICBpZHMucHVzaChlbmRIaW50LmlkKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9lcnJvckNoaWxkcmVuKSB7XG4gICAgICAgIGlkcy5wdXNoKC4uLnRoaXMuX2Vycm9yQ2hpbGRyZW4ubWFwKGVycm9yID0+IGVycm9yLmlkKSk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2NvbnRyb2wuc2V0RGVzY3JpYmVkQnlJZHMoaWRzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVXBkYXRlcyB0aGUgaG9yaXpvbnRhbCBvZmZzZXQgb2YgdGhlIGxhYmVsIGluIHRoZSBvdXRsaW5lIGFwcGVhcmFuY2UuIEluIHRoZSBvdXRsaW5lXG4gICAqIGFwcGVhcmFuY2UsIHRoZSBub3RjaGVkLW91dGxpbmUgYW5kIGxhYmVsIGFyZSBub3QgcmVsYXRpdmUgdG8gdGhlIGluZml4IGNvbnRhaW5lciBiZWNhdXNlXG4gICAqIHRoZSBvdXRsaW5lIGludGVuZHMgdG8gc3Vycm91bmQgcHJlZml4ZXMsIHN1ZmZpeGVzIGFuZCB0aGUgaW5maXguIFRoaXMgbWVhbnMgdGhhdCB0aGVcbiAgICogZmxvYXRpbmcgbGFiZWwgYnkgZGVmYXVsdCBvdmVybGFwcyBwcmVmaXhlcyBpbiB0aGUgZG9ja2VkIHN0YXRlLiBUbyBhdm9pZCB0aGlzLCB3ZSBuZWVkIHRvXG4gICAqIGhvcml6b250YWxseSBvZmZzZXQgdGhlIGxhYmVsIGJ5IHRoZSB3aWR0aCBvZiB0aGUgcHJlZml4IGNvbnRhaW5lci4gVGhlIE1EQyB0ZXh0LWZpZWxkIGRvZXNcbiAgICogbm90IG5lZWQgdG8gZG8gdGhpcyBiZWNhdXNlIHRoZXkgdXNlIGEgZml4ZWQgd2lkdGggZm9yIHByZWZpeGVzLiBIZW5jZSwgdGhleSBjYW4gc2ltcGx5XG4gICAqIGluY29ycG9yYXRlIHRoZSBob3Jpem9udGFsIG9mZnNldCBpbnRvIHRoZWlyIGRlZmF1bHQgdGV4dC1maWVsZCBzdHlsZXMuXG4gICAqL1xuICBwcml2YXRlIF91cGRhdGVPdXRsaW5lTGFiZWxPZmZzZXQoKSB7XG4gICAgaWYgKCF0aGlzLl9wbGF0Zm9ybS5pc0Jyb3dzZXIgfHwgIXRoaXMuX2hhc091dGxpbmUoKSB8fCAhdGhpcy5fZmxvYXRpbmdMYWJlbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBmbG9hdGluZ0xhYmVsID0gdGhpcy5fZmxvYXRpbmdMYWJlbC5lbGVtZW50O1xuICAgIC8vIElmIG5vIHByZWZpeCBpcyBkaXNwbGF5ZWQsIHJlc2V0IHRoZSBvdXRsaW5lIGxhYmVsIG9mZnNldCBmcm9tIHBvdGVudGlhbFxuICAgIC8vIHByZXZpb3VzIGxhYmVsIG9mZnNldCB1cGRhdGVzLlxuICAgIGlmICghKHRoaXMuX2ljb25QcmVmaXhDb250YWluZXIgfHwgdGhpcy5fdGV4dFByZWZpeENvbnRhaW5lcikpIHtcbiAgICAgIGZsb2F0aW5nTGFiZWwuc3R5bGUudHJhbnNmb3JtID0gJyc7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIElmIHRoZSBmb3JtIGZpZWxkIGlzIG5vdCBhdHRhY2hlZCB0byB0aGUgRE9NIHlldCAoZS5nLiBpbiBhIHRhYiksIHdlIGRlZmVyXG4gICAgLy8gdGhlIGxhYmVsIG9mZnNldCB1cGRhdGUgdW50aWwgdGhlIHpvbmUgc3RhYmlsaXplcy5cbiAgICBpZiAoIXRoaXMuX2lzQXR0YWNoZWRUb0RvbSgpKSB7XG4gICAgICB0aGlzLl9uZWVkc091dGxpbmVMYWJlbE9mZnNldFVwZGF0ZU9uU3RhYmxlID0gdHJ1ZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaWNvblByZWZpeENvbnRhaW5lciA9IHRoaXMuX2ljb25QcmVmaXhDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgdGV4dFByZWZpeENvbnRhaW5lciA9IHRoaXMuX3RleHRQcmVmaXhDb250YWluZXI/Lm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgaWNvblByZWZpeENvbnRhaW5lcldpZHRoID0gaWNvblByZWZpeENvbnRhaW5lcj8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPz8gMDtcbiAgICBjb25zdCB0ZXh0UHJlZml4Q29udGFpbmVyV2lkdGggPSB0ZXh0UHJlZml4Q29udGFpbmVyPy5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCA/PyAwO1xuICAgIC8vIElmIHRoZSBkaXJlY3Rpb25hbGl0eSBpcyBSVEwsIHRoZSB4LWF4aXMgdHJhbnNmb3JtIG5lZWRzIHRvIGJlIGludmVydGVkLiBUaGlzXG4gICAgLy8gaXMgYmVjYXVzZSBgdHJhbnNmb3JtWGAgZG9lcyBub3QgY2hhbmdlIGJhc2VkIG9uIHRoZSBwYWdlIGRpcmVjdGlvbmFsaXR5LlxuICAgIGNvbnN0IGxhYmVsSG9yaXpvbnRhbE9mZnNldCA9XG4gICAgICAodGhpcy5fZGlyLnZhbHVlID09PSAncnRsJyA/IC0xIDogMSkgKlxuICAgICAgLy8gSWYgdGhlcmUncyBhbiBpY29uIHByZWZpeCwgd2Ugc3VidHJhY3QgdGhlIGRlZmF1bHQgaG9yaXpvbnRhbCBwYWRkaW5nIGFzIHdlXG4gICAgICAvLyByZXNldCB0aGUgaG9yaXpvbnRhbCBwYWRkaW5nIGluIENTUyB0b28uXG4gICAgICAoKGljb25QcmVmaXhDb250YWluZXIgPyBpY29uUHJlZml4Q29udGFpbmVyV2lkdGggLSBXUkFQUEVSX0hPUklaT05UQUxfUEFERElORyA6IDApICtcbiAgICAgICAgdGV4dFByZWZpeENvbnRhaW5lcldpZHRoKTtcblxuICAgIC8vIFVwZGF0ZSB0aGUgdHJhbnNmb3JtIHRoZSBmbG9hdGluZyBsYWJlbCB0byBhY2NvdW50IGZvciB0aGUgcHJlZml4IGNvbnRhaW5lci4gTm90ZVxuICAgIC8vIHRoYXQgd2UgZG8gbm90IHdhbnQgdG8gb3ZlcndyaXRlIHRoZSBkZWZhdWx0IHRyYW5zZm9ybSBmb3IgZG9ja2VkIGZsb2F0aW5nIGxhYmVscy5cbiAgICBmbG9hdGluZ0xhYmVsLnN0eWxlLnRyYW5zZm9ybSA9IGAke0ZMT0FUSU5HX0xBQkVMX0RFRkFVTFRfRE9DS0VEX1RSQU5TRk9STX0gdHJhbnNsYXRlWCgke2xhYmVsSG9yaXpvbnRhbE9mZnNldH1weClgO1xuICB9XG5cbiAgLyoqIENoZWNrcyB3aGV0aGVyIHRoZSBmb3JtIGZpZWxkIGlzIGF0dGFjaGVkIHRvIHRoZSBET00uICovXG4gIHByaXZhdGUgX2lzQXR0YWNoZWRUb0RvbSgpOiBib29sZWFuIHtcbiAgICBjb25zdCBlbGVtZW50OiBIVE1MRWxlbWVudCA9IHRoaXMuX2VsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcbiAgICBpZiAoZWxlbWVudC5nZXRSb290Tm9kZSkge1xuICAgICAgY29uc3Qgcm9vdE5vZGUgPSBlbGVtZW50LmdldFJvb3ROb2RlKCk7XG4gICAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBpbnNpZGUgdGhlIERPTSB0aGUgcm9vdCBub2RlIHdpbGwgYmUgZWl0aGVyIHRoZSBkb2N1bWVudFxuICAgICAgLy8gb3IgdGhlIGNsb3Nlc3Qgc2hhZG93IHJvb3QsIG90aGVyd2lzZSBpdCdsbCBiZSB0aGUgZWxlbWVudCBpdHNlbGYuXG4gICAgICByZXR1cm4gcm9vdE5vZGUgJiYgcm9vdE5vZGUgIT09IGVsZW1lbnQ7XG4gICAgfVxuICAgIC8vIE90aGVyd2lzZSBmYWxsIGJhY2sgdG8gY2hlY2tpbmcgaWYgaXQncyBpbiB0aGUgZG9jdW1lbnQuIFRoaXMgZG9lc24ndCBhY2NvdW50IGZvclxuICAgIC8vIHNoYWRvdyBET00sIGhvd2V2ZXIgYnJvd3NlciB0aGF0IHN1cHBvcnQgc2hhZG93IERPTSBzaG91bGQgc3VwcG9ydCBgZ2V0Um9vdE5vZGVgIGFzIHdlbGwuXG4gICAgcmV0dXJuIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCEuY29udGFpbnMoZWxlbWVudCk7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZSAjbGFiZWxUZW1wbGF0ZT5cbiAgPCEtLVxuICAgIE1EQyByZWNvbW1lbmRzIHRoYXQgdGhlIHRleHQtZmllbGQgaXMgYSBgPGxhYmVsPmAgZWxlbWVudC4gVGhpcyByYXRoZXIgY29tcGxpY2F0ZXMgdGhlXG4gICAgc2V0dXAgYmVjYXVzZSBpdCB3b3VsZCByZXF1aXJlIGV2ZXJ5IGZvcm0tZmllbGQgY29udHJvbCB0byBleHBsaWNpdGx5IHNldCBgYXJpYS1sYWJlbGxlZGJ5YC5cbiAgICBUaGlzIGlzIGJlY2F1c2UgdGhlIGA8bGFiZWw+YCBpdHNlbGYgY29udGFpbnMgbW9yZSB0aGFuIHRoZSBhY3R1YWwgbGFiZWwgKGUuZy4gcHJlZml4LCBzdWZmaXhcbiAgICBvciBvdGhlciBwcm9qZWN0ZWQgY29udGVudCksIGFuZCBzY3JlZW4gcmVhZGVycyBjb3VsZCBwb3RlbnRpYWxseSByZWFkIG91dCB1bmRlc2lyZWQgY29udGVudC5cbiAgICBFeGNsdWRpbmcgZWxlbWVudHMgZnJvbSBiZWluZyBwcmludGVkIG91dCByZXF1aXJlcyB0aGVtIHRvIGJlIG1hcmtlZCB3aXRoIGBhcmlhLWhpZGRlbmAsIG9yXG4gICAgdGhlIGZvcm0gY29udHJvbCBpcyBzZXQgdG8gYSBzY29wZWQgZWxlbWVudCBmb3IgdGhlIGxhYmVsICh1c2luZyBgYXJpYS1sYWJlbGxlZGJ5YCkuIEJvdGggb2ZcbiAgICB0aGVzZSBvcHRpb25zIHNlZW0gdG8gY29tcGxpY2F0ZSB0aGUgc2V0dXAgYmVjYXVzZSB3ZSBrbm93IGV4YWN0bHkgd2hhdCBjb250ZW50IGlzIHJlbmRlcmVkXG4gICAgYXMgcGFydCBvZiB0aGUgbGFiZWwsIGFuZCB3ZSBkb24ndCB3YW50IHRvIHNwZW5kIHJlc291cmNlcyBvbiB3YWxraW5nIHRocm91Z2ggcHJvamVjdGVkIGNvbnRlbnRcbiAgICB0byBzZXQgYGFyaWEtaGlkZGVuYC4gTm9yIGRvIHdlIHdhbnQgdG8gc2V0IGBhcmlhLWxhYmVsbGVkYnlgIG9uIGV2ZXJ5IGZvcm0gY29udHJvbCBpZiB3ZSBjb3VsZFxuICAgIHNpbXBseSBsaW5rIHRoZSBsYWJlbCB0byB0aGUgY29udHJvbCB1c2luZyB0aGUgbGFiZWwgYGZvcmAgYXR0cmlidXRlLlxuXG4gICAgKk5vdGUqOiBXZSBhZGQgYXJpYS1vd25zIGFzIGEgd29ya2Fyb3VuZCBmb3IgYW4gaXNzdWUgaW4gSkFXUyAmIE5WREEgd2hlcmUgdGhlIGxhYmVsIGlzbid0XG4gICAgcmVhZCBpZiBpdCBjb21lcyBiZWZvcmUgdGhlIGNvbnRyb2wgaW4gdGhlIERPTS5cbiAgLS0+XG4gIDxsYWJlbCBtYXRGb3JtRmllbGRGbG9hdGluZ0xhYmVsXG4gICAgICAgICBbZmxvYXRpbmddPVwiX3Nob3VsZExhYmVsRmxvYXQoKVwiXG4gICAgICAgICAqbmdJZj1cIl9oYXNGbG9hdGluZ0xhYmVsKClcIlxuICAgICAgICAgKGNka09ic2VydmVDb250ZW50KT1cIl9yZWZyZXNoT3V0bGluZU5vdGNoV2lkdGgoKVwiXG4gICAgICAgICBbY2RrT2JzZXJ2ZUNvbnRlbnREaXNhYmxlZF09XCIhX2hhc091dGxpbmUoKVwiXG4gICAgICAgICBbaWRdPVwiX2xhYmVsSWRcIlxuICAgICAgICAgW2F0dHIuZm9yXT1cIl9jb250cm9sLmlkXCJcbiAgICAgICAgIFthdHRyLmFyaWEtb3duc109XCJfY29udHJvbC5pZFwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1sYWJlbFwiPjwvbmctY29udGVudD5cbiAgICA8IS0tXG4gICAgICBXZSBzZXQgdGhlIHJlcXVpcmVkIG1hcmtlciBhcyBhIHNlcGFyYXRlIGVsZW1lbnQsIGluIG9yZGVyIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHRhcmdldCBpZlxuICAgICAgYXBwcyB3YW50IHRvIG92ZXJyaWRlIGl0IGFuZCB0byBiZSBhYmxlIHRvIHNldCBgYXJpYS1oaWRkZW5gIHNvIHRoYXQgc2NyZWVuIHJlYWRlcnMgZG9uJ3RcbiAgICAgIHBpY2sgaXQgdXAuXG4gICAgIC0tPlxuICAgIDxzcGFuXG4gICAgICAqbmdJZj1cIiFoaWRlUmVxdWlyZWRNYXJrZXIgJiYgX2NvbnRyb2wucmVxdWlyZWRcIlxuICAgICAgYXJpYS1oaWRkZW49XCJ0cnVlXCJcbiAgICAgIGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLXJlcXVpcmVkLW1hcmtlciBtZGMtZmxvYXRpbmctbGFiZWwtLXJlcXVpcmVkXCI+PC9zcGFuPlxuICA8L2xhYmVsPlxuPC9uZy10ZW1wbGF0ZT5cblxuPGRpdiBjbGFzcz1cIm1hdC1tZGMtdGV4dC1maWVsZC13cmFwcGVyIG1kYy10ZXh0LWZpZWxkXCIgI3RleHRGaWVsZFxuICAgICBbY2xhc3MubWRjLXRleHQtZmllbGQtLWZpbGxlZF09XCIhX2hhc091dGxpbmUoKVwiXG4gICAgIFtjbGFzcy5tZGMtdGV4dC1maWVsZC0tb3V0bGluZWRdPVwiX2hhc091dGxpbmUoKVwiXG4gICAgIFtjbGFzcy5tZGMtdGV4dC1maWVsZC0tbm8tbGFiZWxdPVwiIV9oYXNGbG9hdGluZ0xhYmVsKClcIlxuICAgICBbY2xhc3MubWRjLXRleHQtZmllbGQtLWRpc2FibGVkXT1cIl9jb250cm9sLmRpc2FibGVkXCJcbiAgICAgW2NsYXNzLm1kYy10ZXh0LWZpZWxkLS1pbnZhbGlkXT1cIl9jb250cm9sLmVycm9yU3RhdGVcIlxuICAgICAoY2xpY2spPVwiX2NvbnRyb2wub25Db250YWluZXJDbGljayAmJiBfY29udHJvbC5vbkNvbnRhaW5lckNsaWNrKCRldmVudClcIj5cbiAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1mb2N1cy1vdmVybGF5XCIgKm5nSWY9XCIhX2hhc091dGxpbmUoKSAmJiAhX2NvbnRyb2wuZGlzYWJsZWRcIj48L2Rpdj5cbiAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1mbGV4XCI+XG4gICAgPGRpdiAqbmdJZj1cIl9oYXNPdXRsaW5lKClcIiBtYXRGb3JtRmllbGROb3RjaGVkT3V0bGluZVxuICAgICAgICAgW21hdEZvcm1GaWVsZE5vdGNoZWRPdXRsaW5lT3Blbl09XCJfc2hvdWxkTGFiZWxGbG9hdCgpXCJcbiAgICAgICAgIFttYXRGb3JtRmllbGROb3RjaGVkT3V0bGluZVdpZHRoXT1cIl9vdXRsaW5lTm90Y2hXaWR0aFwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiFfZm9yY2VEaXNwbGF5SW5maXhMYWJlbCgpXCI+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJsYWJlbFRlbXBsYXRlXCI+PC9uZy10ZW1wbGF0ZT5cbiAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPC9kaXY+XG5cbiAgICA8ZGl2IGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLWljb24tcHJlZml4XCIgKm5nSWY9XCJfaGFzSWNvblByZWZpeFwiICNpY29uUHJlZml4Q29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFByZWZpeF0sIFttYXRJY29uUHJlZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLXRleHQtcHJlZml4XCIgKm5nSWY9XCJfaGFzVGV4dFByZWZpeFwiICN0ZXh0UHJlZml4Q29udGFpbmVyPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFRleHRQcmVmaXhdXCI+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1pbmZpeFwiPlxuICAgICAgPG5nLXRlbXBsYXRlIFtuZ0lmXT1cIiFfaGFzT3V0bGluZSgpIHx8IF9mb3JjZURpc3BsYXlJbmZpeExhYmVsKClcIj5cbiAgICAgICAgPG5nLXRlbXBsYXRlIFtuZ1RlbXBsYXRlT3V0bGV0XT1cImxhYmVsVGVtcGxhdGVcIj48L25nLXRlbXBsYXRlPlxuICAgICAgPC9uZy10ZW1wbGF0ZT5cblxuICAgICAgPG5nLWNvbnRlbnQ+PC9uZy1jb250ZW50PlxuICAgIDwvZGl2PlxuXG4gICAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC10ZXh0LXN1ZmZpeFwiICpuZ0lmPVwiX2hhc1RleHRTdWZmaXhcIj5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIlttYXRUZXh0U3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLWljb24tc3VmZml4XCIgKm5nSWY9XCJfaGFzSWNvblN1ZmZpeFwiPlxuICAgICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiW21hdFN1ZmZpeF0sIFttYXRJY29uU3VmZml4XVwiPjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG5cbiAgPGRpdiBtYXRGb3JtRmllbGRMaW5lUmlwcGxlICpuZ0lmPVwiIV9oYXNPdXRsaW5lKClcIj48L2Rpdj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwibWF0LW1kYy1mb3JtLWZpZWxkLXN1YnNjcmlwdC13cmFwcGVyIG1hdC1tZGMtZm9ybS1maWVsZC1ib3R0b20tYWxpZ25cIlxuICAgICBbY2xhc3MubWF0LW1kYy1mb3JtLWZpZWxkLXN1YnNjcmlwdC1keW5hbWljLXNpemVdPVwic3Vic2NyaXB0U2l6aW5nID09PSAnZHluYW1pYydcIlxuICAgICBbbmdTd2l0Y2hdPVwiX2dldERpc3BsYXllZE1lc3NhZ2VzKClcIj5cbiAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1lcnJvci13cmFwcGVyXCIgKm5nU3dpdGNoQ2FzZT1cIidlcnJvcidcIlxuICAgICAgIFtAdHJhbnNpdGlvbk1lc3NhZ2VzXT1cIl9zdWJzY3JpcHRBbmltYXRpb25TdGF0ZVwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIm1hdC1lcnJvclwiPjwvbmctY29udGVudD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cIm1hdC1tZGMtZm9ybS1maWVsZC1oaW50LXdyYXBwZXJcIiAqbmdTd2l0Y2hDYXNlPVwiJ2hpbnQnXCJcbiAgICAgICBbQHRyYW5zaXRpb25NZXNzYWdlc109XCJfc3Vic2NyaXB0QW5pbWF0aW9uU3RhdGVcIj5cbiAgICA8bWF0LWhpbnQgKm5nSWY9XCJoaW50TGFiZWxcIiBbaWRdPVwiX2hpbnRMYWJlbElkXCI+e3toaW50TGFiZWx9fTwvbWF0LWhpbnQ+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwibWF0LWhpbnQ6bm90KFthbGlnbj0nZW5kJ10pXCI+PC9uZy1jb250ZW50PlxuICAgIDxkaXYgY2xhc3M9XCJtYXQtbWRjLWZvcm0tZmllbGQtaGludC1zcGFjZXJcIj48L2Rpdj5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJtYXQtaGludFthbGlnbj0nZW5kJ11cIj48L25nLWNvbnRlbnQ+XG4gIDwvZGl2PlxuPC9kaXY+XG4iXX0=
@@ -28,16 +28,16 @@ export class MatMenu extends _MatMenuBase {
28
28
  }
29
29
  }
30
30
  MatMenu.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatMenu, deps: [{ token: i0.ElementRef }, { token: i0.NgZone }, { token: MAT_MENU_DEFAULT_OPTIONS }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
31
- MatMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "14.0.0-next.6", type: MatMenu, selector: "mat-menu", host: { properties: { "attr.aria-label": "null", "attr.aria-labelledby": "null", "attr.aria-describedby": "null" } }, providers: [{ provide: MAT_MENU_PANEL, useExisting: MatMenu }], exportAs: ["matMenu"], usesInheritance: true, ngImport: i0, template: "<ng-template>\n <div\n class=\"mat-mdc-menu-panel mdc-menu-surface mdc-menu-surface--open mat-mdc-elevation-specific\"\n [id]=\"panelId\"\n [ngClass]=\"_classList\"\n (keydown)=\"_handleKeydown($event)\"\n (click)=\"closed.emit('click')\"\n [@transformMenu]=\"_panelAnimationState\"\n (@transformMenu.start)=\"_onAnimationStart($event)\"\n (@transformMenu.done)=\"_onAnimationDone($event)\"\n tabindex=\"-1\"\n role=\"menu\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby || null\"\n [attr.aria-describedby]=\"ariaDescribedby || null\">\n <div class=\"mat-mdc-menu-content mdc-list\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: [".mdc-menu-surface{display:none;position:absolute;box-sizing:border-box;max-width:var(--mdc-menu-max-width, calc(100vw - 32px));max-height:var(--mdc-menu-max-height, calc(100vh - 32px));margin:0;padding:0;transform:scale(1);transform-origin:top left;opacity:0;overflow:auto;will-change:transform,opacity;z-index:8;border-radius:var(--mdc-shape-medium, 4px);transform-origin-left:top left;transform-origin-right:top right}.mdc-menu-surface:focus{outline:none}.mdc-menu-surface--animating-open{display:inline-block;transform:scale(0.8);opacity:0}.mdc-menu-surface--open{display:inline-block;transform:scale(1);opacity:1}.mdc-menu-surface--animating-closed{display:inline-block;opacity:0}[dir=rtl] .mdc-menu-surface,.mdc-menu-surface[dir=rtl]{transform-origin-left:top right;transform-origin-right:top left}.mdc-menu-surface--anchor{position:relative;overflow:visible}.mdc-menu-surface--fixed{position:fixed}.mdc-menu-surface--fullwidth{width:100%}mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;list-style-type:none}.mat-mdc-menu-content:focus{outline:none}.cdk-high-contrast-active .mat-mdc-menu-panel{outline:solid 1px}.mat-mdc-menu-panel.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;position:relative}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px}.mat-mdc-menu-item:focus{outline:none}[dir=rtl] .mat-mdc-menu-item,.mat-mdc-menu-item[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-menu-item::-moz-focus-inner{border:0}.mat-mdc-menu-item[disabled]{pointer-events:none;cursor:default;opacity:.38}.mat-mdc-menu-item .mat-icon{margin-right:16px}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:16px}.mat-mdc-menu-item .mdc-list-item__primary-text{white-space:normal}.cdk-high-contrast-active .mat-mdc-menu-item{margin-top:1px}.cdk-high-contrast-active .mat-mdc-menu-item.cdk-program-focused,.cdk-high-contrast-active .mat-mdc-menu-item.cdk-keyboard-focused,.cdk-high-contrast-active .mat-mdc-menu-item-highlighted{outline:dotted 1px}.mat-mdc-menu-item-submenu-trigger{padding-right:32px}[dir=rtl] .mat-mdc-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}.mat-mdc-menu-submenu-icon{position:absolute;top:50%;right:16px;transform:translateY(-50%);width:5px;height:10px;fill:currentColor}[dir=rtl] .mat-mdc-menu-submenu-icon{right:auto;left:16px;transform:translateY(-50%) scaleX(-1)}.cdk-high-contrast-active .mat-mdc-menu-submenu-icon{fill:CanvasText}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [matMenuAnimations.transformMenu, matMenuAnimations.fadeInItems], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
31
+ MatMenu.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "12.0.0", version: "14.0.0-next.6", type: MatMenu, selector: "mat-menu", host: { properties: { "attr.aria-label": "null", "attr.aria-labelledby": "null", "attr.aria-describedby": "null" } }, providers: [{ provide: MAT_MENU_PANEL, useExisting: MatMenu }], exportAs: ["matMenu"], usesInheritance: true, ngImport: i0, template: "<ng-template>\n <div\n class=\"mat-mdc-menu-panel mdc-menu-surface mdc-menu-surface--open mat-mdc-elevation-specific\"\n [id]=\"panelId\"\n [ngClass]=\"_classList\"\n (keydown)=\"_handleKeydown($event)\"\n (click)=\"closed.emit('click')\"\n [@transformMenu]=\"_panelAnimationState\"\n (@transformMenu.start)=\"_onAnimationStart($event)\"\n (@transformMenu.done)=\"_onAnimationDone($event)\"\n tabindex=\"-1\"\n role=\"menu\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby || null\"\n [attr.aria-describedby]=\"ariaDescribedby || null\">\n <div class=\"mat-mdc-menu-content mdc-list\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: [".mdc-menu-surface{display:none;position:absolute;box-sizing:border-box;max-width:var(--mdc-menu-max-width, calc(100vw - 32px));max-height:var(--mdc-menu-max-height, calc(100vh - 32px));margin:0;padding:0;transform:scale(1);transform-origin:top left;opacity:0;overflow:auto;will-change:transform,opacity;z-index:8;border-radius:var(--mdc-shape-medium, 4px);transform-origin-left:top left;transform-origin-right:top right}.mdc-menu-surface:focus{outline:none}.mdc-menu-surface--animating-open{display:inline-block;transform:scale(0.8);opacity:0}.mdc-menu-surface--open{display:inline-block;transform:scale(1);opacity:1}.mdc-menu-surface--animating-closed{display:inline-block;opacity:0}[dir=rtl] .mdc-menu-surface,.mdc-menu-surface[dir=rtl]{transform-origin-left:top right;transform-origin-right:top left}.mdc-menu-surface--anchor{position:relative;overflow:visible}.mdc-menu-surface--fixed{position:fixed}.mdc-menu-surface--fullwidth{width:100%}mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;list-style-type:none}.mat-mdc-menu-content:focus{outline:none}.cdk-high-contrast-active .mat-mdc-menu-panel{outline:solid 1px}.mat-mdc-menu-panel.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;position:relative}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px}.mat-mdc-menu-item:focus{outline:none}[dir=rtl] .mat-mdc-menu-item,.mat-mdc-menu-item[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-menu-item::-moz-focus-inner{border:0}.mat-mdc-menu-item[disabled]{pointer-events:none;cursor:default;opacity:.38}.mat-mdc-menu-item .mat-icon{margin-right:16px}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:16px}.mat-mdc-menu-item .mdc-list-item__primary-text{white-space:normal}.cdk-high-contrast-active .mat-mdc-menu-item{margin-top:1px}.cdk-high-contrast-active .mat-mdc-menu-item.cdk-program-focused,.cdk-high-contrast-active .mat-mdc-menu-item.cdk-keyboard-focused,.cdk-high-contrast-active .mat-mdc-menu-item-highlighted{outline:dotted 1px}.mat-mdc-menu-item-submenu-trigger{padding-right:32px}[dir=rtl] .mat-mdc-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}.mat-mdc-menu-submenu-icon{position:absolute;top:50%;right:16px;transform:translateY(-50%);width:5px;height:10px;fill:currentColor}[dir=rtl] .mat-mdc-menu-submenu-icon{right:auto;left:16px;transform:translateY(-50%) scaleX(-1)}.cdk-high-contrast-active .mat-mdc-menu-submenu-icon{fill:CanvasText}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\n"], directives: [{ type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [matMenuAnimations.transformMenu, matMenuAnimations.fadeInItems], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
32
32
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.0-next.6", ngImport: i0, type: MatMenu, decorators: [{
33
33
  type: Component,
34
34
  args: [{ selector: 'mat-menu', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, exportAs: 'matMenu', host: {
35
35
  '[attr.aria-label]': 'null',
36
36
  '[attr.aria-labelledby]': 'null',
37
37
  '[attr.aria-describedby]': 'null',
38
- }, animations: [matMenuAnimations.transformMenu, matMenuAnimations.fadeInItems], providers: [{ provide: MAT_MENU_PANEL, useExisting: MatMenu }], template: "<ng-template>\n <div\n class=\"mat-mdc-menu-panel mdc-menu-surface mdc-menu-surface--open mat-mdc-elevation-specific\"\n [id]=\"panelId\"\n [ngClass]=\"_classList\"\n (keydown)=\"_handleKeydown($event)\"\n (click)=\"closed.emit('click')\"\n [@transformMenu]=\"_panelAnimationState\"\n (@transformMenu.start)=\"_onAnimationStart($event)\"\n (@transformMenu.done)=\"_onAnimationDone($event)\"\n tabindex=\"-1\"\n role=\"menu\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby || null\"\n [attr.aria-describedby]=\"ariaDescribedby || null\">\n <div class=\"mat-mdc-menu-content mdc-list\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: [".mdc-menu-surface{display:none;position:absolute;box-sizing:border-box;max-width:var(--mdc-menu-max-width, calc(100vw - 32px));max-height:var(--mdc-menu-max-height, calc(100vh - 32px));margin:0;padding:0;transform:scale(1);transform-origin:top left;opacity:0;overflow:auto;will-change:transform,opacity;z-index:8;border-radius:var(--mdc-shape-medium, 4px);transform-origin-left:top left;transform-origin-right:top right}.mdc-menu-surface:focus{outline:none}.mdc-menu-surface--animating-open{display:inline-block;transform:scale(0.8);opacity:0}.mdc-menu-surface--open{display:inline-block;transform:scale(1);opacity:1}.mdc-menu-surface--animating-closed{display:inline-block;opacity:0}[dir=rtl] .mdc-menu-surface,.mdc-menu-surface[dir=rtl]{transform-origin-left:top right;transform-origin-right:top left}.mdc-menu-surface--anchor{position:relative;overflow:visible}.mdc-menu-surface--fixed{position:fixed}.mdc-menu-surface--fullwidth{width:100%}mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;list-style-type:none}.mat-mdc-menu-content:focus{outline:none}.cdk-high-contrast-active .mat-mdc-menu-panel{outline:solid 1px}.mat-mdc-menu-panel.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;position:relative}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px}.mat-mdc-menu-item:focus{outline:none}[dir=rtl] .mat-mdc-menu-item,.mat-mdc-menu-item[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-menu-item::-moz-focus-inner{border:0}.mat-mdc-menu-item[disabled]{pointer-events:none;cursor:default;opacity:.38}.mat-mdc-menu-item .mat-icon{margin-right:16px}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:16px}.mat-mdc-menu-item .mdc-list-item__primary-text{white-space:normal}.cdk-high-contrast-active .mat-mdc-menu-item{margin-top:1px}.cdk-high-contrast-active .mat-mdc-menu-item.cdk-program-focused,.cdk-high-contrast-active .mat-mdc-menu-item.cdk-keyboard-focused,.cdk-high-contrast-active .mat-mdc-menu-item-highlighted{outline:dotted 1px}.mat-mdc-menu-item-submenu-trigger{padding-right:32px}[dir=rtl] .mat-mdc-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}.mat-mdc-menu-submenu-icon{position:absolute;top:50%;right:16px;transform:translateY(-50%);width:5px;height:10px;fill:currentColor}[dir=rtl] .mat-mdc-menu-submenu-icon{right:auto;left:16px;transform:translateY(-50%) scaleX(-1)}.cdk-high-contrast-active .mat-mdc-menu-submenu-icon{fill:CanvasText}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\n"] }]
38
+ }, animations: [matMenuAnimations.transformMenu, matMenuAnimations.fadeInItems], providers: [{ provide: MAT_MENU_PANEL, useExisting: MatMenu }], template: "<ng-template>\n <div\n class=\"mat-mdc-menu-panel mdc-menu-surface mdc-menu-surface--open mat-mdc-elevation-specific\"\n [id]=\"panelId\"\n [ngClass]=\"_classList\"\n (keydown)=\"_handleKeydown($event)\"\n (click)=\"closed.emit('click')\"\n [@transformMenu]=\"_panelAnimationState\"\n (@transformMenu.start)=\"_onAnimationStart($event)\"\n (@transformMenu.done)=\"_onAnimationDone($event)\"\n tabindex=\"-1\"\n role=\"menu\"\n [attr.aria-label]=\"ariaLabel || null\"\n [attr.aria-labelledby]=\"ariaLabelledby || null\"\n [attr.aria-describedby]=\"ariaDescribedby || null\">\n <div class=\"mat-mdc-menu-content mdc-list\">\n <ng-content></ng-content>\n </div>\n </div>\n</ng-template>\n", styles: [".mdc-menu-surface{display:none;position:absolute;box-sizing:border-box;max-width:var(--mdc-menu-max-width, calc(100vw - 32px));max-height:var(--mdc-menu-max-height, calc(100vh - 32px));margin:0;padding:0;transform:scale(1);transform-origin:top left;opacity:0;overflow:auto;will-change:transform,opacity;z-index:8;border-radius:var(--mdc-shape-medium, 4px);transform-origin-left:top left;transform-origin-right:top right}.mdc-menu-surface:focus{outline:none}.mdc-menu-surface--animating-open{display:inline-block;transform:scale(0.8);opacity:0}.mdc-menu-surface--open{display:inline-block;transform:scale(1);opacity:1}.mdc-menu-surface--animating-closed{display:inline-block;opacity:0}[dir=rtl] .mdc-menu-surface,.mdc-menu-surface[dir=rtl]{transform-origin-left:top right;transform-origin-right:top left}.mdc-menu-surface--anchor{position:relative;overflow:visible}.mdc-menu-surface--fixed{position:fixed}.mdc-menu-surface--fullwidth{width:100%}mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;list-style-type:none}.mat-mdc-menu-content:focus{outline:none}.cdk-high-contrast-active .mat-mdc-menu-panel{outline:solid 1px}.mat-mdc-menu-panel.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;position:relative}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:transparent;cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px}.mat-mdc-menu-item:focus{outline:none}[dir=rtl] .mat-mdc-menu-item,.mat-mdc-menu-item[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-menu-item::-moz-focus-inner{border:0}.mat-mdc-menu-item[disabled]{pointer-events:none;cursor:default;opacity:.38}.mat-mdc-menu-item .mat-icon{margin-right:16px}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:16px}.mat-mdc-menu-item .mdc-list-item__primary-text{white-space:normal}.cdk-high-contrast-active .mat-mdc-menu-item{margin-top:1px}.cdk-high-contrast-active .mat-mdc-menu-item.cdk-program-focused,.cdk-high-contrast-active .mat-mdc-menu-item.cdk-keyboard-focused,.cdk-high-contrast-active .mat-mdc-menu-item-highlighted{outline:dotted 1px}.mat-mdc-menu-item-submenu-trigger{padding-right:32px}[dir=rtl] .mat-mdc-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}.mat-mdc-menu-submenu-icon{position:absolute;top:50%;right:16px;transform:translateY(-50%);width:5px;height:10px;fill:currentColor}[dir=rtl] .mat-mdc-menu-submenu-icon{right:auto;left:16px;transform:translateY(-50%) scaleX(-1)}.cdk-high-contrast-active .mat-mdc-menu-submenu-icon{fill:CanvasText}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}\n"] }]
39
39
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.NgZone }, { type: undefined, decorators: [{
40
40
  type: Inject,
41
41
  args: [MAT_MENU_DEFAULT_OPTIONS]
42
42
  }] }, { type: i0.ChangeDetectorRef }]; } });
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1leHBlcmltZW50YWwvbWRjLW1lbnUvbWVudS50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1leHBlcmltZW50YWwvbWRjLW1lbnUvbWVudS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxPQUFPLEVBQWlCLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUVOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIsWUFBWSxFQUNaLGlCQUFpQixHQUVsQixNQUFNLHdCQUF3QixDQUFDOzs7QUFFaEMsb0JBQW9CO0FBQ3BCLE1BQU0sVUFBVSxnQ0FBZ0MsQ0FBQyxPQUFnQjtJQUMvRCxPQUFPLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUNyRCxDQUFDO0FBRUQsb0JBQW9CO0FBQ3BCLE1BQU0sQ0FBQyxNQUFNLHlDQUF5QyxHQUFhO0lBQ2pFLE9BQU8sRUFBRSx3QkFBd0I7SUFDakMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDO0lBQ2YsVUFBVSxFQUFFLGdDQUFnQztDQUM3QyxDQUFDO0FBaUJGLE1BQU0sT0FBTyxPQUFRLFNBQVEsWUFBWTtJQWN2QyxZQUNFLFdBQW9DLEVBQ3BDLE9BQWUsRUFDbUIsZUFBc0MsRUFDeEUsaUJBQXFDO1FBRXJDLEtBQUssQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBbkIvQyxxQkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQztRQUN6QyxtQkFBYyxHQUFHLENBQUMsQ0FBQztJQW1CdEMsQ0FBQzs7MkdBckJVLE9BQU8sa0VBaUJSLHdCQUF3QjsrRkFqQnZCLE9BQU8seUpBRlAsQ0FBQyxFQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBQyxDQUFDLHdFQ3JEOUQsbXVCQW9CQSx5a0dEZ0NjLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLFdBQVcsQ0FBQztrR0FHakUsT0FBTztrQkFmbkIsU0FBUzsrQkFDRSxVQUFVLG1CQUdILHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksWUFDM0IsU0FBUyxRQUNiO3dCQUNKLG1CQUFtQixFQUFFLE1BQU07d0JBQzNCLHdCQUF3QixFQUFFLE1BQU07d0JBQ2hDLHlCQUF5QixFQUFFLE1BQU07cUJBQ2xDLGNBQ1csQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsV0FBVyxDQUFDLGFBQ2pFLENBQUMsRUFBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsU0FBUyxFQUFDLENBQUM7OzBCQW1CekQsTUFBTTsyQkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtPdmVybGF5LCBTY3JvbGxTdHJhdGVneX0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgTmdab25lLFxuICBQcm92aWRlcixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgTUFUX01FTlVfREVGQVVMVF9PUFRJT05TLFxuICBNQVRfTUVOVV9QQU5FTCxcbiAgTUFUX01FTlVfU0NST0xMX1NUUkFURUdZLFxuICBfTWF0TWVudUJhc2UsXG4gIG1hdE1lbnVBbmltYXRpb25zLFxuICBNYXRNZW51RGVmYXVsdE9wdGlvbnMsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIE1BVF9NRU5VX1NDUk9MTF9TVFJBVEVHWV9GQUNUT1JZKG92ZXJsYXk6IE92ZXJsYXkpOiAoKSA9PiBTY3JvbGxTdHJhdGVneSB7XG4gIHJldHVybiAoKSA9PiBvdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpO1xufVxuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGNvbnN0IE1BVF9NRU5VX1NDUk9MTF9TVFJBVEVHWV9GQUNUT1JZX1BST1ZJREVSOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogTUFUX01FTlVfU0NST0xMX1NUUkFURUdZLFxuICBkZXBzOiBbT3ZlcmxheV0sXG4gIHVzZUZhY3Rvcnk6IE1BVF9NRU5VX1NDUk9MTF9TVFJBVEVHWV9GQUNUT1JZLFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0LW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJ21lbnUuaHRtbCcsXG4gIHN0eWxlVXJsczogWydtZW51LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgZXhwb3J0QXM6ICdtYXRNZW51JyxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5hcmlhLWxhYmVsXSc6ICdudWxsJyxcbiAgICAnW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XSc6ICdudWxsJyxcbiAgICAnW2F0dHIuYXJpYS1kZXNjcmliZWRieV0nOiAnbnVsbCcsXG4gIH0sXG4gIGFuaW1hdGlvbnM6IFttYXRNZW51QW5pbWF0aW9ucy50cmFuc2Zvcm1NZW51LCBtYXRNZW51QW5pbWF0aW9ucy5mYWRlSW5JdGVtc10sXG4gIHByb3ZpZGVyczogW3twcm92aWRlOiBNQVRfTUVOVV9QQU5FTCwgdXNlRXhpc3Rpbmc6IE1hdE1lbnV9XSxcbn0pXG5leHBvcnQgY2xhc3MgTWF0TWVudSBleHRlbmRzIF9NYXRNZW51QmFzZSB7XG4gIHByb3RlY3RlZCBvdmVycmlkZSBfZWxldmF0aW9uUHJlZml4ID0gJ21hdC1tZGMtZWxldmF0aW9uLXonO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX2Jhc2VFbGV2YXRpb24gPSA4O1xuXG4gIC8qXG4gICAqIEBkZXByZWNhdGVkIGBjaGFuZ2VEZXRlY3RvclJlZmAgcGFyYW1ldGVyIHdpbGwgYmVjb21lIGEgcmVxdWlyZWQgcGFyYW1ldGVyLlxuICAgKiBAYnJlYWtpbmctY2hhbmdlIDE1LjAuMFxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgbmdab25lOiBOZ1pvbmUsXG4gICAgZGVmYXVsdE9wdGlvbnM6IE1hdE1lbnVEZWZhdWx0T3B0aW9ucyxcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgX25nWm9uZTogTmdab25lLFxuICAgIEBJbmplY3QoTUFUX01FTlVfREVGQVVMVF9PUFRJT05TKSBfZGVmYXVsdE9wdGlvbnM6IE1hdE1lbnVEZWZhdWx0T3B0aW9ucyxcbiAgICBjaGFuZ2VEZXRlY3RvclJlZj86IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICBzdXBlcihfZWxlbWVudFJlZiwgX25nWm9uZSwgX2RlZmF1bHRPcHRpb25zLCBjaGFuZ2VEZXRlY3RvclJlZik7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwibWF0LW1kYy1tZW51LXBhbmVsIG1kYy1tZW51LXN1cmZhY2UgbWRjLW1lbnUtc3VyZmFjZS0tb3BlbiBtYXQtbWRjLWVsZXZhdGlvbi1zcGVjaWZpY1wiXG4gICAgW2lkXT1cInBhbmVsSWRcIlxuICAgIFtuZ0NsYXNzXT1cIl9jbGFzc0xpc3RcIlxuICAgIChrZXlkb3duKT1cIl9oYW5kbGVLZXlkb3duKCRldmVudClcIlxuICAgIChjbGljayk9XCJjbG9zZWQuZW1pdCgnY2xpY2snKVwiXG4gICAgW0B0cmFuc2Zvcm1NZW51XT1cIl9wYW5lbEFuaW1hdGlvblN0YXRlXCJcbiAgICAoQHRyYW5zZm9ybU1lbnUuc3RhcnQpPVwiX29uQW5pbWF0aW9uU3RhcnQoJGV2ZW50KVwiXG4gICAgKEB0cmFuc2Zvcm1NZW51LmRvbmUpPVwiX29uQW5pbWF0aW9uRG9uZSgkZXZlbnQpXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICByb2xlPVwibWVudVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgfHwgbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZGJ5IHx8IG51bGxcIlxuICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZGJ5IHx8IG51bGxcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWF0LW1kYy1tZW51LWNvbnRlbnQgbWRjLWxpc3RcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVudS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1leHBlcmltZW50YWwvbWRjLW1lbnUvbWVudS50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9tYXRlcmlhbC1leHBlcmltZW50YWwvbWRjLW1lbnUvbWVudS5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUVILE9BQU8sRUFBQyxPQUFPLEVBQWlCLE1BQU0sc0JBQXNCLENBQUM7QUFDN0QsT0FBTyxFQUNMLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixNQUFNLEVBQ04sTUFBTSxFQUVOLGlCQUFpQixHQUNsQixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIsWUFBWSxFQUNaLGlCQUFpQixHQUVsQixNQUFNLHdCQUF3QixDQUFDOzs7QUFFaEMsb0JBQW9CO0FBQ3BCLE1BQU0sVUFBVSxnQ0FBZ0MsQ0FBQyxPQUFnQjtJQUMvRCxPQUFPLEdBQUcsRUFBRSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsQ0FBQztBQUNyRCxDQUFDO0FBRUQsb0JBQW9CO0FBQ3BCLE1BQU0sQ0FBQyxNQUFNLHlDQUF5QyxHQUFhO0lBQ2pFLE9BQU8sRUFBRSx3QkFBd0I7SUFDakMsSUFBSSxFQUFFLENBQUMsT0FBTyxDQUFDO0lBQ2YsVUFBVSxFQUFFLGdDQUFnQztDQUM3QyxDQUFDO0FBaUJGLE1BQU0sT0FBTyxPQUFRLFNBQVEsWUFBWTtJQWN2QyxZQUNFLFdBQW9DLEVBQ3BDLE9BQWUsRUFDbUIsZUFBc0MsRUFDeEUsaUJBQXFDO1FBRXJDLEtBQUssQ0FBQyxXQUFXLEVBQUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBbkIvQyxxQkFBZ0IsR0FBRyxxQkFBcUIsQ0FBQztRQUN6QyxtQkFBYyxHQUFHLENBQUMsQ0FBQztJQW1CdEMsQ0FBQzs7MkdBckJVLE9BQU8sa0VBaUJSLHdCQUF3QjsrRkFqQnZCLE9BQU8seUpBRlAsQ0FBQyxFQUFDLE9BQU8sRUFBRSxjQUFjLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBQyxDQUFDLHdFQ3JEOUQsbXVCQW9CQSxtakdEZ0NjLENBQUMsaUJBQWlCLENBQUMsYUFBYSxFQUFFLGlCQUFpQixDQUFDLFdBQVcsQ0FBQztrR0FHakUsT0FBTztrQkFmbkIsU0FBUzsrQkFDRSxVQUFVLG1CQUdILHVCQUF1QixDQUFDLE1BQU0saUJBQ2hDLGlCQUFpQixDQUFDLElBQUksWUFDM0IsU0FBUyxRQUNiO3dCQUNKLG1CQUFtQixFQUFFLE1BQU07d0JBQzNCLHdCQUF3QixFQUFFLE1BQU07d0JBQ2hDLHlCQUF5QixFQUFFLE1BQU07cUJBQ2xDLGNBQ1csQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsaUJBQWlCLENBQUMsV0FBVyxDQUFDLGFBQ2pFLENBQUMsRUFBQyxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsU0FBUyxFQUFDLENBQUM7OzBCQW1CekQsTUFBTTsyQkFBQyx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtPdmVybGF5LCBTY3JvbGxTdHJhdGVneX0gZnJvbSAnQGFuZ3VsYXIvY2RrL292ZXJsYXknO1xuaW1wb3J0IHtcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEluamVjdCxcbiAgTmdab25lLFxuICBQcm92aWRlcixcbiAgVmlld0VuY2Fwc3VsYXRpb24sXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgTUFUX01FTlVfREVGQVVMVF9PUFRJT05TLFxuICBNQVRfTUVOVV9QQU5FTCxcbiAgTUFUX01FTlVfU0NST0xMX1NUUkFURUdZLFxuICBfTWF0TWVudUJhc2UsXG4gIG1hdE1lbnVBbmltYXRpb25zLFxuICBNYXRNZW51RGVmYXVsdE9wdGlvbnMsXG59IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL21lbnUnO1xuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGZ1bmN0aW9uIE1BVF9NRU5VX1NDUk9MTF9TVFJBVEVHWV9GQUNUT1JZKG92ZXJsYXk6IE92ZXJsYXkpOiAoKSA9PiBTY3JvbGxTdHJhdGVneSB7XG4gIHJldHVybiAoKSA9PiBvdmVybGF5LnNjcm9sbFN0cmF0ZWdpZXMucmVwb3NpdGlvbigpO1xufVxuXG4vKiogQGRvY3MtcHJpdmF0ZSAqL1xuZXhwb3J0IGNvbnN0IE1BVF9NRU5VX1NDUk9MTF9TVFJBVEVHWV9GQUNUT1JZX1BST1ZJREVSOiBQcm92aWRlciA9IHtcbiAgcHJvdmlkZTogTUFUX01FTlVfU0NST0xMX1NUUkFURUdZLFxuICBkZXBzOiBbT3ZlcmxheV0sXG4gIHVzZUZhY3Rvcnk6IE1BVF9NRU5VX1NDUk9MTF9TVFJBVEVHWV9GQUNUT1JZLFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWF0LW1lbnUnLFxuICB0ZW1wbGF0ZVVybDogJ21lbnUuaHRtbCcsXG4gIHN0eWxlVXJsczogWydtZW51LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgZXhwb3J0QXM6ICdtYXRNZW51JyxcbiAgaG9zdDoge1xuICAgICdbYXR0ci5hcmlhLWxhYmVsXSc6ICdudWxsJyxcbiAgICAnW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XSc6ICdudWxsJyxcbiAgICAnW2F0dHIuYXJpYS1kZXNjcmliZWRieV0nOiAnbnVsbCcsXG4gIH0sXG4gIGFuaW1hdGlvbnM6IFttYXRNZW51QW5pbWF0aW9ucy50cmFuc2Zvcm1NZW51LCBtYXRNZW51QW5pbWF0aW9ucy5mYWRlSW5JdGVtc10sXG4gIHByb3ZpZGVyczogW3twcm92aWRlOiBNQVRfTUVOVV9QQU5FTCwgdXNlRXhpc3Rpbmc6IE1hdE1lbnV9XSxcbn0pXG5leHBvcnQgY2xhc3MgTWF0TWVudSBleHRlbmRzIF9NYXRNZW51QmFzZSB7XG4gIHByb3RlY3RlZCBvdmVycmlkZSBfZWxldmF0aW9uUHJlZml4ID0gJ21hdC1tZGMtZWxldmF0aW9uLXonO1xuICBwcm90ZWN0ZWQgb3ZlcnJpZGUgX2Jhc2VFbGV2YXRpb24gPSA4O1xuXG4gIC8qXG4gICAqIEBkZXByZWNhdGVkIGBjaGFuZ2VEZXRlY3RvclJlZmAgcGFyYW1ldGVyIHdpbGwgYmVjb21lIGEgcmVxdWlyZWQgcGFyYW1ldGVyLlxuICAgKiBAYnJlYWtpbmctY2hhbmdlIDE1LjAuMFxuICAgKi9cbiAgY29uc3RydWN0b3IoXG4gICAgZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgbmdab25lOiBOZ1pvbmUsXG4gICAgZGVmYXVsdE9wdGlvbnM6IE1hdE1lbnVEZWZhdWx0T3B0aW9ucyxcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBfZWxlbWVudFJlZjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgX25nWm9uZTogTmdab25lLFxuICAgIEBJbmplY3QoTUFUX01FTlVfREVGQVVMVF9PUFRJT05TKSBfZGVmYXVsdE9wdGlvbnM6IE1hdE1lbnVEZWZhdWx0T3B0aW9ucyxcbiAgICBjaGFuZ2VEZXRlY3RvclJlZj86IENoYW5nZURldGVjdG9yUmVmLFxuICApIHtcbiAgICBzdXBlcihfZWxlbWVudFJlZiwgX25nWm9uZSwgX2RlZmF1bHRPcHRpb25zLCBjaGFuZ2VEZXRlY3RvclJlZik7XG4gIH1cbn1cbiIsIjxuZy10ZW1wbGF0ZT5cbiAgPGRpdlxuICAgIGNsYXNzPVwibWF0LW1kYy1tZW51LXBhbmVsIG1kYy1tZW51LXN1cmZhY2UgbWRjLW1lbnUtc3VyZmFjZS0tb3BlbiBtYXQtbWRjLWVsZXZhdGlvbi1zcGVjaWZpY1wiXG4gICAgW2lkXT1cInBhbmVsSWRcIlxuICAgIFtuZ0NsYXNzXT1cIl9jbGFzc0xpc3RcIlxuICAgIChrZXlkb3duKT1cIl9oYW5kbGVLZXlkb3duKCRldmVudClcIlxuICAgIChjbGljayk9XCJjbG9zZWQuZW1pdCgnY2xpY2snKVwiXG4gICAgW0B0cmFuc2Zvcm1NZW51XT1cIl9wYW5lbEFuaW1hdGlvblN0YXRlXCJcbiAgICAoQHRyYW5zZm9ybU1lbnUuc3RhcnQpPVwiX29uQW5pbWF0aW9uU3RhcnQoJGV2ZW50KVwiXG4gICAgKEB0cmFuc2Zvcm1NZW51LmRvbmUpPVwiX29uQW5pbWF0aW9uRG9uZSgkZXZlbnQpXCJcbiAgICB0YWJpbmRleD1cIi0xXCJcbiAgICByb2xlPVwibWVudVwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbF09XCJhcmlhTGFiZWwgfHwgbnVsbFwiXG4gICAgW2F0dHIuYXJpYS1sYWJlbGxlZGJ5XT1cImFyaWFMYWJlbGxlZGJ5IHx8IG51bGxcIlxuICAgIFthdHRyLmFyaWEtZGVzY3JpYmVkYnldPVwiYXJpYURlc2NyaWJlZGJ5IHx8IG51bGxcIj5cbiAgICA8ZGl2IGNsYXNzPVwibWF0LW1kYy1tZW51LWNvbnRlbnQgbWRjLWxpc3RcIj5cbiAgICAgIDxuZy1jb250ZW50PjwvbmctY29udGVudD5cbiAgICA8L2Rpdj5cbiAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuIl19