igniteui-angular 18.1.5 → 18.1.7

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 (34) hide show
  1. package/esm2022/lib/grids/pivot-grid/pivot-grid.interface.mjs +1 -1
  2. package/esm2022/lib/icon/icon.service.mjs +18 -14
  3. package/esm2022/lib/input-group/input-group.component.mjs +5 -9
  4. package/fesm2022/igniteui-angular.mjs +21 -21
  5. package/fesm2022/igniteui-angular.mjs.map +1 -1
  6. package/lib/core/styles/components/divider/_divider-theme.scss +1 -1
  7. package/lib/icon/icon.service.d.ts +3 -2
  8. package/package.json +1 -1
  9. package/styles/igniteui-angular-dark.css +1 -1
  10. package/styles/igniteui-angular.css +1 -1
  11. package/styles/igniteui-bootstrap-dark.css +1 -1
  12. package/styles/igniteui-bootstrap-light.css +1 -1
  13. package/styles/igniteui-dark-green.css +1 -1
  14. package/styles/igniteui-fluent-dark-excel.css +1 -1
  15. package/styles/igniteui-fluent-dark-word.css +1 -1
  16. package/styles/igniteui-fluent-dark.css +1 -1
  17. package/styles/igniteui-fluent-light-excel.css +1 -1
  18. package/styles/igniteui-fluent-light-word.css +1 -1
  19. package/styles/igniteui-fluent-light.css +1 -1
  20. package/styles/igniteui-indigo-dark.css +1 -1
  21. package/styles/igniteui-indigo-light.css +1 -1
  22. package/styles/maps/igniteui-angular-dark.css.map +1 -1
  23. package/styles/maps/igniteui-angular.css.map +1 -1
  24. package/styles/maps/igniteui-bootstrap-dark.css.map +1 -1
  25. package/styles/maps/igniteui-bootstrap-light.css.map +1 -1
  26. package/styles/maps/igniteui-dark-green.css.map +1 -1
  27. package/styles/maps/igniteui-fluent-dark-excel.css.map +1 -1
  28. package/styles/maps/igniteui-fluent-dark-word.css.map +1 -1
  29. package/styles/maps/igniteui-fluent-dark.css.map +1 -1
  30. package/styles/maps/igniteui-fluent-light-excel.css.map +1 -1
  31. package/styles/maps/igniteui-fluent-light-word.css.map +1 -1
  32. package/styles/maps/igniteui-fluent-light.css.map +1 -1
  33. package/styles/maps/igniteui-indigo-dark.css.map +1 -1
  34. package/styles/maps/igniteui-indigo-light.css.map +1 -1
@@ -23,4 +23,4 @@ export var PivotSummaryPosition;
23
23
  PivotSummaryPosition["Top"] = "top";
24
24
  PivotSummaryPosition["Bottom"] = "bottom";
25
25
  })(PivotSummaryPosition || (PivotSummaryPosition = {}));
26
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QtZ3JpZC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvcGl2b3QtZ3JpZC9waXZvdC1ncmlkLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQTs7RUFFRTtBQUNGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQzlCLFlBQVksRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPO0lBQ3RGLHFCQUFxQixFQUFFLEdBQUcsRUFBRSx3QkFBd0IsRUFBRSxHQUFHO0NBQzVELENBQUM7QUFxTUYscUJBQXFCO0FBQ3JCLG1EQUFtRDtBQUNuRCxNQUFNLENBQU4sSUFBWSxrQkFJWDtBQUpELFdBQVksa0JBQWtCO0lBQzFCLHlEQUFHLENBQUE7SUFDSCwrREFBTSxDQUFBO0lBQ04sK0RBQU0sQ0FBQTtBQUNWLENBQUMsRUFKVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBSTdCO0FBR0QsTUFBTSxDQUFOLElBQVksa0JBR1g7QUFIRCxXQUFZLGtCQUFrQjtJQUMxQiwyQ0FBcUIsQ0FBQTtJQUNyQiwrQ0FBeUIsQ0FBQTtBQUM3QixDQUFDLEVBSFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUc3QjtBQUVELE1BQU0sQ0FBTixJQUFZLG9CQUdYO0FBSEQsV0FBWSxvQkFBb0I7SUFDNUIsbUNBQVcsQ0FBQTtJQUNYLHlDQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxvQkFBb0IsS0FBcEIsb0JBQW9CLFFBRy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSURhdGFDbG9uZVN0cmF0ZWd5IH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2RhdGEtY2xvbmUtc3RyYXRlZ3knO1xuaW1wb3J0IHsgR3JpZENvbHVtbkRhdGFUeXBlIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2RhdGEtdXRpbCc7XG5pbXBvcnQgeyBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2ZpbHRlcmluZy1leHByZXNzaW9ucy10cmVlJztcbmltcG9ydCB7IFNvcnRpbmdEaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvc29ydGluZy1zdHJhdGVneSc7XG5pbXBvcnQgeyBDb2x1bW5UeXBlIH0gZnJvbSAnLi4vY29tbW9uL2dyaWQuaW50ZXJmYWNlJztcblxuXG4vKipcbiogRGVmYXVsdCBwaXZvdCBrZXlzIHVzZWQgZm9yIGRhdGEgcHJvY2Vzc2luZyBpbiB0aGUgcGl2b3QgcGlwZXMuXG4qL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUElWT1RfS0VZUyA9IHtcbiAgICBhZ2dyZWdhdGlvbnM6ICdhZ2dyZWdhdGlvbnMnLCByZWNvcmRzOiAncmVjb3JkcycsIGNoaWxkcmVuOiAnY2hpbGRyZW4nLCBsZXZlbDogJ2xldmVsJyxcbiAgICByb3dEaW1lbnNpb25TZXBhcmF0b3I6ICdfJywgY29sdW1uRGltZW5zaW9uU2VwYXJhdG9yOiAnLSdcbn07XG5cbi8qKlxuICogRXZlbnQgZW1pdHRlZCB3aGVuIGRpbWVuc2lvbiBjb2xsZWN0aW9uIGZvciByb3dzLCBjb2x1bW5zIG9mIGZpbHRlcnMgaXMgY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRGltZW5zaW9uc0NoYW5nZSB7XG4gICAgLyoqIFRoZSBuZXcgbGlzdCBvZiBkaW1lbnNpb25zLiAqL1xuICAgIGRpbWVuc2lvbnM6IElQaXZvdERpbWVuc2lvbltdLFxuICAgIC8qKiBUaGUgZGltZW5zaW9uIGxpc3QgdHlwZSAtIFJvdywgQ29sdW1uIG9yIEZpbHRlci4gKi9cbiAgICBkaW1lbnNpb25Db2xsZWN0aW9uVHlwZTogUGl2b3REaW1lbnNpb25UeXBlXG59XG5cbi8qKlxuKiBFdmVudCBlbWl0dGVkIHdoZW4gdmFsdWVzIGxpc3QgaXMgY2hhbmdlZC5cbiovXG5leHBvcnQgaW50ZXJmYWNlIElWYWx1ZXNDaGFuZ2Uge1xuICAgIC8qKiBUaGUgbmV3IGxpc3Qgb2YgdmFsdWVzLiAqL1xuICAgIHZhbHVlczogSVBpdm90VmFsdWVbXVxufVxuXG4vKipcbiAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBwaXZvdCBjb25maWd1cmF0aW9uIGlzIGNoYW5nZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVBpdm90Q29uZmlndXJhdGlvbkNoYW5nZWRFdmVudEFyZ3Mge1xuICAgIC8qKiBUaGUgbmV3IGNvbmZpZ3VyYXRpb24uICovXG4gICAgcGl2b3RDb25maWd1cmF0aW9uOiBJUGl2b3RDb25maWd1cmF0aW9uXG59XG5cbi8qKlxuKiBJbnRlcmZhY2UgZGVzY3JpYmluZyBQaXZvdCBkYXRhIHByb2Nlc3NpbmcgZm9yIGRpbWVuc2lvbnMuXG4qIFNob3VsZCBjb250YWluIGEgcHJvY2VzcyBtZXRob2QgYW5kIHJldHVybiByZWNvcmRzIGhpZXJhcmNoeSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgZGltZW5zaW9ucy5cbiovXG5leHBvcnQgaW50ZXJmYWNlIElQaXZvdERpbWVuc2lvblN0cmF0ZWd5IHtcbiAgICAvKiBibGF6b3JDU1N1cHByZXNzICovXG4gICAgcHJvY2Vzcyhjb2xsZWN0aW9uOiBhbnksXG4gICAgICAgIGRpbWVuc2lvbnM6IElQaXZvdERpbWVuc2lvbltdLFxuICAgICAgICB2YWx1ZXM6IElQaXZvdFZhbHVlW10sXG4gICAgICAgIGNsb25lU3RyYXRlZ3k6IElEYXRhQ2xvbmVTdHJhdGVneSxcbiAgICAgICAgcGl2b3RLZXlzPzogSVBpdm90S2V5cyk6IGFueVtdO1xufVxuXG4vKipcbiogSW50ZXJmYWNlIGRlc2NyaWJpbmcgYSBQaXZvdEFnZ3JlZ2F0aW9uIGZ1bmN0aW9uLlxuKiBBY2NlcHRzIGFuIGFycmF5IG9mIGV4dHJhY3RlZCBkYXRhIG1lbWJlcnMgYW5kIGEgYXJyYXkgb2YgdGhlIG9yaWdpbmFsIGRhdGEgcmVjb3Jkcy5cbiovXG5leHBvcnQgdHlwZSBQaXZvdEFnZ3JlZ2F0aW9uID0gKG1lbWJlcnM6IGFueVtdLCBkYXRhOiBhbnlbXSkgPT4gYW55O1xuXG4vKiBtYXJzaGFsQnlWYWx1ZSAqL1xuLyoqXG4qIEludGVyZmFjZSBkZXNjcmliaW5nIGEgSVBpdm90QWdncmVnYXRvciBjbGFzcy5cbiogVXNlZCBmb3Igc3BlY2lmeWluZyBjdXN0b20gYWdncmVnYXRvciBsaXN0cy5cbiovXG5leHBvcnQgaW50ZXJmYWNlIElQaXZvdEFnZ3JlZ2F0b3Ige1xuICAgIC8qKiBBZ2dyZWdhdGlvbiB1bmlxdWUga2V5LiAqL1xuICAgIGtleTogc3RyaW5nO1xuICAgIC8qKiBBZ2dyZWdhdGlvbiBsYWJlbCB0byBzaG93IGluIHRoZSBVSS4gKi9cbiAgICBsYWJlbDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEFnZ3JlZ2F0aW9uIG5hbWUgdGhhdCB3aWxsIGJlIHVzZWQgZnJvbSBhIGxpc3Qgb2YgcHJlZGVmaW5lZCBhZ2dyZWdhdGlvbnMuXG4gICAgICogSWYgbm90IHNldCB3aWxsIHVzZSB0aGUgc3BlY2lmaWVkIGFnZ3JlZ2F0b3IgZnVuY3Rpb24uXG4gICAgICovXG4gICAgYWdncmVnYXRvck5hbWU/OiBQaXZvdEFnZ3JlZ2F0aW9uVHlwZTtcblxuICAgIC8qIGJsYXpvckFsdGVybmF0ZVR5cGU6IEFnZ3JlZ2F0b3JFdmVudEhhbmRsZXIgKi9cbiAgICAvKiBibGF6b3JPbmx5U2NyaXB0ICovXG4gICAgLyoqXG4gICAgICogQWdncmVnYXRvciBmdW5jdGlvbiBjYW4gYmUgYSBjdXN0b20gaW1wbGVtZW50YXRpb24gb2YgYFBpdm90QWdncmVnYXRpb25gLCBvclxuICAgICAqIHVzZSBwcmVkZWZpbmVkIG9uZXMgZnJvbSBgSWd4UGl2b3RBZ2dyZWdhdGVgIGFuZCBpdHMgdmFyaWFudHMuXG4gICAgICovXG4gICAgYWdncmVnYXRvcj86IChtZW1iZXJzOiBhbnlbXSwgZGF0YT86IGFueVtdKSA9PiBhbnk7XG59XG5cbi8qIG1hcnNoYWxCeVZhbHVlICovXG4vKipcbiogQ29uZmlndXJhdGlvbiBvZiB0aGUgcGl2b3QgZ3JpZC5cbiovXG5leHBvcnQgaW50ZXJmYWNlIElQaXZvdENvbmZpZ3VyYXRpb24ge1xuICAgIC8qKiBBIHN0cmF0ZWd5IHRvIHRyYW5zZm9ybSB0aGUgcm93cy4gKi9cbiAgICByb3dTdHJhdGVneT86IElQaXZvdERpbWVuc2lvblN0cmF0ZWd5IHwgbnVsbDtcbiAgICAvKiogQSBzdHJhdGVneSB0byB0cmFuc2Zvcm0gdGhlIGNvbHVtbnMuICovXG4gICAgY29sdW1uU3RyYXRlZ3k/OiBJUGl2b3REaW1lbnNpb25TdHJhdGVneSB8IG51bGw7XG4gICAgLyoqIEEgbGlzdCBvZiB0aGUgcm93cy4gKi9cbiAgICByb3dzOiBJUGl2b3REaW1lbnNpb25bXSB8IG51bGw7XG4gICAgLyoqIEEgbGlzdCBvZiB0aGUgY29sdW1ucy4gKi9cbiAgICBjb2x1bW5zOiBJUGl2b3REaW1lbnNpb25bXSB8IG51bGw7XG4gICAgLyoqIEEgbGlzdCBvZiB0aGUgdmFsdWVzLiAqL1xuICAgIHZhbHVlczogSVBpdm90VmFsdWVbXSB8IG51bGw7XG4gICAgLyoqIERpbWVuc2lvbnMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBmaWx0ZXIgYXJlYS4gKi9cbiAgICBmaWx0ZXJzPzogSVBpdm90RGltZW5zaW9uW10gfCBudWxsO1xuICAgIC8qKiBQaXZvdCBkYXRhIGtleXMgdXNlZCBmb3IgZGF0YSBnZW5lcmF0aW9uLiBDYW4gYmUgdXNlZCBmb3IgY3VzdG9tIHJlbW90ZSBzY2VuYXJpb3Mgd2hlcmUgdGhlIGRhdGEgaXMgcHJlLXBvcHVsYXRlZC4gKi9cbiAgICBwaXZvdEtleXM/OiBJUGl2b3RLZXlzO1xufVxuXG4vKiBibGF6b3JFbGVtZW50ICovXG4vKiBtYXJzaGFsQnlWYWx1ZSAqL1xuLyoqXG4qIENvbmZpZ3VyYXRpb24gb2YgYSBwaXZvdCBkaW1lbnNpb24uXG4qL1xuZXhwb3J0IGludGVyZmFjZSBJUGl2b3REaW1lbnNpb24ge1xuICAgIC8qKiBBbGxvd3MgZGVmaW5pbmcgYSBoaWVyYXJjaHkgd2hlbiBtdWx0aXBsZSBzdWIgZ3JvdXBzIG5lZWQgdG8gYmUgZXh0cmFjdGVkIGZyb20gc2luZ2xlIG1lbWJlci4gKi9cbiAgICBjaGlsZExldmVsPzogSVBpdm90RGltZW5zaW9uO1xuICAgIC8qKiBGaWVsZCBuYW1lIHRvIHVzZSBpbiBvcmRlciB0byBleHRyYWN0IHZhbHVlLiAqL1xuICAgIG1lbWJlck5hbWU6IHN0cmluZztcblxuICAgIC8qIGNzVHJlYXRBc0V2ZW50OiBNZW1iZXJGdW5jdGlvbkhhbmRsZXIgKi9cbiAgICAvKiBibGF6b3JPbmx5U2NyaXB0ICovXG4gICAgLyoqIEZ1bmN0aW9uIHRoYXQgZXh0cmFjdHMgdGhlIHZhbHVlICovXG4gICAgbWVtYmVyRnVuY3Rpb24/OiAoZGF0YTogYW55KSA9PiBhbnk7XG4gICAgLyoqIERpc3BsYXkgbmFtZSB0byBzaG93IGluc3RlYWQgb2YgdGhlIGZpZWxkIG5hbWUgb2YgdGhpcyB2YWx1ZS4gKiovXG4gICAgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG4gICAgLyoqIEVuYWJsZXMvRGlzYWJsZXMgYSBwYXJ0aWN1bGFyIGRpbWVuc2lvbiBmcm9tIHBpdm90IHN0cnVjdHVyZS4gKi9cbiAgICBlbmFibGVkOiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIEEgcHJlZGVmaW5lZCBvciBkZWZpbmVkIHZpYSB0aGUgYGlneFBpdm90U2VsZWN0b3JgIGZpbHRlciBleHByZXNzaW9uIHRyZWUgZm9yIHRoZSBjdXJyZW50IGRpbWVuc2lvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBmaWx0ZXIgcGlwZS5cbiAgICAgKiAqL1xuICAgIGZpbHRlcj86IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgfCBudWxsO1xuICAgIC8qKiBFbmFibGUvZGlzYWJsZSBzb3J0aW5nIGZvciBhIHBhcnRpY3VsYXIgZGltZW5zaW9uLiBUcnVlIGJ5IGRlZmF1bHQuICovXG4gICAgc29ydGFibGU/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFRoZSBzb3J0aW5nIGRpcmVjdGlvbiBvZiB0aGUgY3VycmVudCBkaW1lbnNpb24uIERldGVybWluZXMgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSB2YWx1ZXMgd2lsbCBhcHBlYXIgaW4gdGhlIHJlbGF0ZWQgZGltZW5zaW9uLlxuICAgICAqL1xuICAgIHNvcnREaXJlY3Rpb24/OiBTb3J0aW5nRGlyZWN0aW9uO1xuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhVHlwZSBvZiB0aGUgcmVsYXRlZCBkYXRhIGZpZWxkLlxuICAgICAqL1xuICAgIGRhdGFUeXBlPzogR3JpZENvbHVtbkRhdGFUeXBlO1xuICAgIC8qKiBUaGUgd2lkdGggb2YgdGhlIGRpbWVuc2lvbiBjZWxscyB0byBiZSByZW5kZXJlZC5DYW4gYmUgcGl4ZWwsICUgb3IgXCJhdXRvXCIuICovXG4gICAgd2lkdGg/OiBzdHJpbmc7XG4gICAgLyoqIExldmVsIG9mIHRoZSBkaW1lbnNpb24uICovXG4gICAgbGV2ZWw/OiBudW1iZXI7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgYXV0b1dpZHRoPzogbnVtYmVyO1xuICAgIGhvcml6b250YWxTdW1tYXJ5PyA6IGJvb2xlYW47XG59XG5cbi8qIG1hcnNoYWxCeVZhbHVlICovXG4vKipcbiogQ29uZmlndXJhdGlvbiBvZiBhIHBpdm90IHZhbHVlIGFnZ3JlZ2F0aW9uLlxuKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVBpdm90VmFsdWUge1xuICAgIC8qKiBGaWVsZCBuYW1lIHRvIHVzZSBpbiBvcmRlciB0byBleHRyYWN0IHZhbHVlLiAqL1xuICAgIG1lbWJlcjogc3RyaW5nO1xuICAgIC8qKiBEaXNwbGF5IG5hbWUgdG8gc2hvdyBpbnN0ZWFkIG9mIG1lbWJlciBmb3IgdGhlIGNvbHVtbiBoZWFkZXIgb2YgdGhpcyB2YWx1ZS4gKiovXG4gICAgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG4gICAgLyoqXG4gICAgICogQWN0aXZlIGFnZ3JlZ2F0b3IgZGVmaW5pdGlvbiB3aXRoIGtleSwgbGFiZWwgYW5kIGFnZ3JlZ2F0b3IuXG4gICAgICovXG4gICAgYWdncmVnYXRlOiBJUGl2b3RBZ2dyZWdhdG9yO1xuICAgIC8qKlxuICAgICAqIExpc3Qgb2YgYWdncmVnYXRlcyB0byBzaG93IGluIGFnZ3JlZ2F0ZSBkcm9wLWRvd24uXG4gICAgICovXG4gICAgYWdncmVnYXRlTGlzdD86IElQaXZvdEFnZ3JlZ2F0b3JbXTtcbiAgICAvKiogRW5hYmxlcy9EaXNhYmxlcyBhIHBhcnRpY3VsYXIgdmFsdWUgZnJvbSBwaXZvdCBhZ2dyZWdhdGlvbi4gKi9cbiAgICBlbmFibGVkOiBib29sZWFuO1xuICAgIC8qKiAgQWxsb3cgY29uZGl0aW9uYWxseSBzdHlsaW5nIG9mIHRoZSBJZ3hQaXZvdEdyaWQgY2VsbHMuICovXG4gICAgc3R5bGVzPzogYW55O1xuICAgIC8qKiBFbmFibGVzIGEgZGF0YSB0eXBlIHNwZWNpZmljIHRlbXBsYXRlIG9mIHRoZSBjZWxscyAqL1xuICAgIGRhdGFUeXBlPzogR3JpZENvbHVtbkRhdGFUeXBlO1xuXG4gICAgLyogY3NUcmVhdEFzRXZlbnQ6IFBpdm90VmFsdWVGb3JtYXR0ZXJFdmVudEhhbmRsZXIgKi9cbiAgICAvKiBibGF6b3JPbmx5U2NyaXB0ICovXG4gICAgLyoqIEFwcGxpZXMgZGlzcGxheSBmb3JtYXQgdG8gY2VsbCB2YWx1ZXMuICovXG4gICAgZm9ybWF0dGVyPzogKHZhbHVlOiBhbnksIHJvd0RhdGE/OiBJUGl2b3RHcmlkUmVjb3JkLCBjb2x1bW5EYXRhPzogSVBpdm90R3JpZENvbHVtbikgPT4gYW55O1xufVxuXG4vKiogSW50ZXJmYWNlIGRlc2NyaWJpbmcgdGhlIFBpdm90IGNvbHVtbiBkYXRhLlxuKiAgQ29udGFpbnMgaW5mb3JtYXRpb24gb24gdGhlIHJlbGF0ZWQgY29sdW1uIGRpbWVuc2lvbnMgYW5kIHRoZWlyIHZhbHVlcy5cbiovXG5leHBvcnQgaW50ZXJmYWNlIElQaXZvdEdyaWRDb2x1bW4ge1xuICAgICAgICBmaWVsZDogc3RyaW5nLFxuICAgICAgICAvKiBibGF6b3JTdXBwcmVzcyAqL1xuICAgICAgICAvKiogR2V0cy9TZXRzIHRoZSBncm91cCB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIHJlbGF0ZWQgY29sdW1uIGRpbWVuc2lvbiBieSBpdHMgbWVtYmVyTmFtZS4gKiovXG4gICAgICAgIGRpbWVuc2lvblZhbHVlczogTWFwPHN0cmluZywgc3RyaW5nPjtcbiAgICAgICAgLyoqIExpc3Qgb2YgZGltZW5zaW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIGNvbHVtbi4qKi9cbiAgICAgICAgZGltZW5zaW9uczogSVBpdm90RGltZW5zaW9uW107XG4gICAgICAgIHZhbHVlOiBJUGl2b3RWYWx1ZVxufVxuXG4vKiBtYXJzaGFsQnlWYWx1ZSAqL1xuLyoqIEludGVyZmFjZSBkZXNjcmliaW5nIHRoZSBQaXZvdCBkYXRhIGtleXMgdXNlZCBmb3IgZGF0YSBnZW5lcmF0aW9uLlxuKiAgQ2FuIGJlIHVzZWQgZm9yIGN1c3RvbSByZW1vdGUgc2NlbmFyaW9zIHdoZXJlIHRoZSBkYXRhIGlzIHByZS1wb3B1bGF0ZWQuXG4qL1xuZXhwb3J0IGludGVyZmFjZSBJUGl2b3RLZXlzIHtcbiAgICAvKiogRmllbGQgdGhhdCBzdG9yZXMgY2hpbGRyZW4gZm9yIGhpZXJhcmNoeSBidWlsZGluZy4gKi9cbiAgICBjaGlsZHJlbjogc3RyaW5nO1xuICAgIC8qKiBGaWVsZCB0aGF0IHN0b3JlcyByZWZlcmVuY2UgdG8gdGhlIG9yaWdpbmFsIGRhdGEgcmVjb3Jkcy4gKi9cbiAgICByZWNvcmRzOiBzdHJpbmc7XG4gICAgLyoqIEZpZWxkIHRoYXQgc3RvcmVzIGFnZ3JlZ2F0aW9uIHZhbHVlcy4gKi9cbiAgICBhZ2dyZWdhdGlvbnM6IHN0cmluZztcbiAgICAvKiogRmllbGQgdGhhdCBzdG9yZXMgZGltZW5zaW9uIGxldmVsIGJhc2VkIG9uIGl0cyBoaWVyYXJjaHkuICovXG4gICAgbGV2ZWw6IHN0cmluZztcbiAgICAvKiogU2VwYXJhdG9yIHVzZWQgd2hlbiBnZW5lcmF0aW5nIHRoZSB1bmlxdWUgY29sdW1uIGZpZWxkIHZhbHVlcy4gKi9cbiAgICBjb2x1bW5EaW1lbnNpb25TZXBhcmF0b3I6IHN0cmluZztcbiAgICAvKiogU2VwYXJhdG9yIHVzZWQgd2hlbiBnZW5lcmF0aW5nIHRoZSB1bmlxdWUgcm93IGZpZWxkIHZhbHVlcy4gKi9cbiAgICByb3dEaW1lbnNpb25TZXBhcmF0b3I6IHN0cmluZztcbn1cblxuLyogbXVzdENvZXJjZVRvSW50ICovXG4vKiogVGhlIGRpbWVuc2lvbiB0eXBlcyAtIFJvdywgQ29sdW1uIG9yIEZpbHRlci4gKi9cbmV4cG9ydCBlbnVtIFBpdm90RGltZW5zaW9uVHlwZSB7XG4gICAgUm93LFxuICAgIENvbHVtbixcbiAgICBGaWx0ZXJcbn1cblxuXG5leHBvcnQgZW51bSBQaXZvdFJvd0xheW91dFR5cGUge1xuICAgIFZlcnRpY2FsID0gXCJ2ZXJ0aWNhbFwiLFxuICAgIEhvcml6b250YWwgPSBcImhvcml6b250YWxcIlxufVxuXG5leHBvcnQgZW51bSBQaXZvdFN1bW1hcnlQb3NpdGlvbiB7XG4gICAgVG9wID0gXCJ0b3BcIixcbiAgICBCb3R0b20gPSBcImJvdHRvbVwiXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVBpdm90VUlTZXR0aW5ncyB7XG4gICAgc2hvd0NvbmZpZ3VyYXRpb24/OiBib29sZWFuO1xuICAgIHNob3dSb3dIZWFkZXJzPzogYm9vbGVhbjtcbiAgICByb3dMYXlvdXQ/OiBQaXZvdFJvd0xheW91dFR5cGU7XG4gICAgaG9yaXpvbnRhbFN1bW1hcmllc1Bvc2l0aW9uPzogUGl2b3RTdW1tYXJ5UG9zaXRpb247XG59XG5cbmV4cG9ydCB0eXBlIFBpdm90QWdncmVnYXRpb25UeXBlID0gJ1NVTScgfCAnQVZHJyB8ICdNSU4nIHwgJ01BWCcgfCAnQ09VTlQnIHwgJ0xBVEVTVCcgfCAnRUFSTElFU1QnIDtcblxuLyoqIEludGVyZmFjZSBkZXNjcmliaW5nIHRoZSBwaXZvdCBkaW1lbnNpb24gZGF0YS5cbiogQ29udGFpbnMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gcmVuZGVyIGRpbWVuc2lvbiBoZWFkZXJzLlxuKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVBpdm90RGltZW5zaW9uRGF0YSB7XG4gICAgLyoqIEFzc29jaWF0ZWQgY29sdW1uIGRlZmluaXRpb24uICovXG4gICAgY29sdW1uOiBDb2x1bW5UeXBlO1xuICAgIC8qKiBBc3NvY2lhdGVkIGRpbWVuc2lvbiBkZWZpbml0aW9uLiAqL1xuICAgIGRpbWVuc2lvbjogSVBpdm90RGltZW5zaW9uO1xuICAgIC8qKiBMaXN0IG9mIHByZXZpb3VzIGRpbWVuc2lvbiBncm91cHMuICovXG4gICAgcHJldkRpbWVuc2lvbnM6IElQaXZvdERpbWVuc2lvbltdO1xuICAgIC8qKiBXaGV0aGVyIHRoaXMgYSBjaGlsZCBkaW1lbnNpb24uICovXG4gICAgaXNDaGlsZD86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGl2b3RSb3dIZWFkZXJHcm91cFR5cGUge1xuICAgIHJvd0luZGV4OiBudW1iZXI7XG4gICAgcGFyZW50OiBhbnk7XG4gICAgaGVhZGVyOiBhbnk7XG4gICAgaGVhZGVySUQ6IHN0cmluZztcbiAgICBncmlkOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGltZW5zaW9uVmFsdWVUeXBlIHtcbiAgICB2YWx1ZTogc3RyaW5nO1xuICAgIGNoaWxkcmVuOiBNYXA8c3RyaW5nLCBzdHJpbmcgfCBEaW1lbnNpb25WYWx1ZVR5cGU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQaXZvdEdyaWRSZWNvcmQge1xuICAgIC8qIGJsYXpvclN1cHByZXNzICovXG4gICAgLyoqIEdldHMvU2V0cyB0aGUgZ3JvdXAgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWxhdGVkIHJvdyBkaW1lbnNpb24gYnkgaXRzIG1lbWJlck5hbWUuICoqL1xuICAgIGRpbWVuc2lvblZhbHVlczogTWFwPHN0cmluZywgc3RyaW5nPjtcbiAgICAvKiBibGF6b3JTdXBwcmVzcyAqL1xuICAgIC8qKiBHZXRzL1NldHMgdGhlIGFnZ3JlZ2F0aW9uIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgdmFsdWUgcGF0aC4gVmFsdWUgcGF0aCBkZXBlbmRzIG9uIGNvbmZpZ3VyZWQgY29sdW1uIGRpbWVuc2lvbiBoaWVyYXJjaHkgYW5kIHZhbHVlcy4qKi9cbiAgICBhZ2dyZWdhdGlvblZhbHVlczogTWFwPHN0cmluZywgYW55PjtcbiAgICAvKiBibGF6b3JTdXBwcmVzcyAqL1xuICAgIC8qKiBMaXN0IG9mIGNoaWxkcmVuIHJlY29yZHMgaW4gY2FzZSBhbnkgcm93IGRpbWVuc2lvbiBtZW1iZXIgY29udGFpbiBhIGhpZXJhcmNoeS4gRWFjaCBkaW1lbnNpb24gbWVtYmVyIGNvbnRhaW5zIGl0cyBvd24gaGllcmFyY2h5LCB3aGljaCB5b3UgY2FuIGdldCBieSBpdHMgbWVtYmVyTmFtZS4gKiovXG4gICAgY2hpbGRyZW4/OiBNYXA8c3RyaW5nLCBJUGl2b3RHcmlkUmVjb3JkW10+O1xuICAgIC8qKiBMaXN0IG9mIG9yaWdpbmFsIGRhdGEgcmVjb3JkcyBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgcGl2b3RlZCBkYXRhLiAqKi9cbiAgICByZWNvcmRzPzogYW55W107XG4gICAgIC8qKiBSZWNvcmQgbGV2ZWwqKi9cbiAgICBsZXZlbD86IG51bWJlcjtcbiAgICAvKiogTGlzdCBvZiBkaW1lbnNpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVjb3JkLioqL1xuICAgIGRpbWVuc2lvbnM6IElQaXZvdERpbWVuc2lvbltdO1xuICAgIC8qKiBJZiBzZXQsIGl0IHNwZWNpZmllcyB0aGUgbmFtZSBvZiB0aGUgZGltZW5zaW9uLCB0aGF0IGhhcyB0b3RhbCByZWNvcmQgZW5hYmxlZC4gKi9cbiAgICB0b3RhbFJlY29yZERpbWVuc2lvbk5hbWU/OiBzdHJpbmc7XG4gICAgLyoqIFRoZSBpbmRleCBvZiB0aGUgcmVjb3JkIGluIHRoZSB0b3RhbCB2aWV3ICovXG4gICAgZGF0YUluZGV4PzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQaXZvdEdyaWRHcm91cFJlY29yZCBleHRlbmRzIElQaXZvdEdyaWRSZWNvcmQge1xuICAgIGhlaWdodD86IG51bWJlcjtcbiAgICByb3dTcGFuPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQaXZvdEdyaWRIb3Jpem9udGFsR3JvdXAge1xuICAgIHZhbHVlPzogc3RyaW5nO1xuICAgIHJvb3REaW1lbnNpb24/OiBJUGl2b3REaW1lbnNpb247XG4gICAgZGltZW5zaW9ucz86IElQaXZvdERpbWVuc2lvbltdO1xuICAgIHJlY29yZHM/OiBJUGl2b3RHcmlkUmVjb3JkW107XG4gICAgcm93U3RhcnQ/OiBudW1iZXI7XG4gICAgcm93U3Bhbj86IG51bWJlcjtcbiAgICBjb2xTdGFydD86IG51bWJlcjtcbiAgICBjb2xTcGFuPzogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElneFBpdm90R3JpZFZhbHVlVGVtcGxhdGVDb250ZXh0IHtcbiAgICAkaW1wbGljaXQ6IElQaXZvdFZhbHVlO1xufVxuIl19
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGl2b3QtZ3JpZC5pbnRlcmZhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvZ3JpZHMvcGl2b3QtZ3JpZC9waXZvdC1ncmlkLmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQTs7RUFFRTtBQUNGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHO0lBQzlCLFlBQVksRUFBRSxjQUFjLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxPQUFPO0lBQ3RGLHFCQUFxQixFQUFFLEdBQUcsRUFBRSx3QkFBd0IsRUFBRSxHQUFHO0NBQzVELENBQUM7QUF5TUYscUJBQXFCO0FBQ3JCLG1EQUFtRDtBQUNuRCxNQUFNLENBQU4sSUFBWSxrQkFJWDtBQUpELFdBQVksa0JBQWtCO0lBQzFCLHlEQUFHLENBQUE7SUFDSCwrREFBTSxDQUFBO0lBQ04sK0RBQU0sQ0FBQTtBQUNWLENBQUMsRUFKVyxrQkFBa0IsS0FBbEIsa0JBQWtCLFFBSTdCO0FBR0QsTUFBTSxDQUFOLElBQVksa0JBR1g7QUFIRCxXQUFZLGtCQUFrQjtJQUMxQiwyQ0FBcUIsQ0FBQTtJQUNyQiwrQ0FBeUIsQ0FBQTtBQUM3QixDQUFDLEVBSFcsa0JBQWtCLEtBQWxCLGtCQUFrQixRQUc3QjtBQUVELE1BQU0sQ0FBTixJQUFZLG9CQUdYO0FBSEQsV0FBWSxvQkFBb0I7SUFDNUIsbUNBQVcsQ0FBQTtJQUNYLHlDQUFpQixDQUFBO0FBQ3JCLENBQUMsRUFIVyxvQkFBb0IsS0FBcEIsb0JBQW9CLFFBRy9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSURhdGFDbG9uZVN0cmF0ZWd5IH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2RhdGEtY2xvbmUtc3RyYXRlZ3knO1xuaW1wb3J0IHsgR3JpZENvbHVtbkRhdGFUeXBlIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2RhdGEtdXRpbCc7XG5pbXBvcnQgeyBJRmlsdGVyaW5nRXhwcmVzc2lvbnNUcmVlIH0gZnJvbSAnLi4vLi4vZGF0YS1vcGVyYXRpb25zL2ZpbHRlcmluZy1leHByZXNzaW9ucy10cmVlJztcbmltcG9ydCB7IFNvcnRpbmdEaXJlY3Rpb24gfSBmcm9tICcuLi8uLi9kYXRhLW9wZXJhdGlvbnMvc29ydGluZy1zdHJhdGVneSc7XG5pbXBvcnQgeyBDb2x1bW5UeXBlIH0gZnJvbSAnLi4vY29tbW9uL2dyaWQuaW50ZXJmYWNlJztcblxuXG4vKipcbiogRGVmYXVsdCBwaXZvdCBrZXlzIHVzZWQgZm9yIGRhdGEgcHJvY2Vzc2luZyBpbiB0aGUgcGl2b3QgcGlwZXMuXG4qL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUElWT1RfS0VZUyA9IHtcbiAgICBhZ2dyZWdhdGlvbnM6ICdhZ2dyZWdhdGlvbnMnLCByZWNvcmRzOiAncmVjb3JkcycsIGNoaWxkcmVuOiAnY2hpbGRyZW4nLCBsZXZlbDogJ2xldmVsJyxcbiAgICByb3dEaW1lbnNpb25TZXBhcmF0b3I6ICdfJywgY29sdW1uRGltZW5zaW9uU2VwYXJhdG9yOiAnLSdcbn07XG5cbi8qKlxuICogRXZlbnQgZW1pdHRlZCB3aGVuIGRpbWVuc2lvbiBjb2xsZWN0aW9uIGZvciByb3dzLCBjb2x1bW5zIG9mIGZpbHRlcnMgaXMgY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRGltZW5zaW9uc0NoYW5nZSB7XG4gICAgLyoqIFRoZSBuZXcgbGlzdCBvZiBkaW1lbnNpb25zLiAqL1xuICAgIGRpbWVuc2lvbnM6IElQaXZvdERpbWVuc2lvbltdLFxuICAgIC8qKiBUaGUgZGltZW5zaW9uIGxpc3QgdHlwZSAtIFJvdywgQ29sdW1uIG9yIEZpbHRlci4gKi9cbiAgICBkaW1lbnNpb25Db2xsZWN0aW9uVHlwZTogUGl2b3REaW1lbnNpb25UeXBlXG59XG5cbi8qKlxuKiBFdmVudCBlbWl0dGVkIHdoZW4gdmFsdWVzIGxpc3QgaXMgY2hhbmdlZC5cbiovXG5leHBvcnQgaW50ZXJmYWNlIElWYWx1ZXNDaGFuZ2Uge1xuICAgIC8qKiBUaGUgbmV3IGxpc3Qgb2YgdmFsdWVzLiAqL1xuICAgIHZhbHVlczogSVBpdm90VmFsdWVbXVxufVxuXG4vKipcbiAqIEV2ZW50IGVtaXR0ZWQgd2hlbiBwaXZvdCBjb25maWd1cmF0aW9uIGlzIGNoYW5nZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVBpdm90Q29uZmlndXJhdGlvbkNoYW5nZWRFdmVudEFyZ3Mge1xuICAgIC8qKiBUaGUgbmV3IGNvbmZpZ3VyYXRpb24uICovXG4gICAgcGl2b3RDb25maWd1cmF0aW9uOiBJUGl2b3RDb25maWd1cmF0aW9uXG59XG5cbi8qKlxuKiBJbnRlcmZhY2UgZGVzY3JpYmluZyBQaXZvdCBkYXRhIHByb2Nlc3NpbmcgZm9yIGRpbWVuc2lvbnMuXG4qIFNob3VsZCBjb250YWluIGEgcHJvY2VzcyBtZXRob2QgYW5kIHJldHVybiByZWNvcmRzIGhpZXJhcmNoeSBiYXNlZCBvbiB0aGUgcHJvdmlkZWQgZGltZW5zaW9ucy5cbiovXG5leHBvcnQgaW50ZXJmYWNlIElQaXZvdERpbWVuc2lvblN0cmF0ZWd5IHtcbiAgICAvKiBibGF6b3JDU1N1cHByZXNzICovXG4gICAgcHJvY2Vzcyhjb2xsZWN0aW9uOiBhbnksXG4gICAgICAgIGRpbWVuc2lvbnM6IElQaXZvdERpbWVuc2lvbltdLFxuICAgICAgICB2YWx1ZXM6IElQaXZvdFZhbHVlW10sXG4gICAgICAgIGNsb25lU3RyYXRlZ3k6IElEYXRhQ2xvbmVTdHJhdGVneSxcbiAgICAgICAgcGl2b3RLZXlzPzogSVBpdm90S2V5cyk6IGFueVtdO1xufVxuXG4vKipcbiogSW50ZXJmYWNlIGRlc2NyaWJpbmcgYSBQaXZvdEFnZ3JlZ2F0aW9uIGZ1bmN0aW9uLlxuKiBBY2NlcHRzIGFuIGFycmF5IG9mIGV4dHJhY3RlZCBkYXRhIG1lbWJlcnMgYW5kIGEgYXJyYXkgb2YgdGhlIG9yaWdpbmFsIGRhdGEgcmVjb3Jkcy5cbiovXG5leHBvcnQgdHlwZSBQaXZvdEFnZ3JlZ2F0aW9uID0gKG1lbWJlcnM6IGFueVtdLCBkYXRhOiBhbnlbXSkgPT4gYW55O1xuXG4vKiBtYXJzaGFsQnlWYWx1ZSAqL1xuLyoganNvbkFQSUNvbXBsZXhPYmplY3QgKi9cbi8qKlxuKiBJbnRlcmZhY2UgZGVzY3JpYmluZyBhIElQaXZvdEFnZ3JlZ2F0b3IgY2xhc3MuXG4qIFVzZWQgZm9yIHNwZWNpZnlpbmcgY3VzdG9tIGFnZ3JlZ2F0b3IgbGlzdHMuXG4qL1xuZXhwb3J0IGludGVyZmFjZSBJUGl2b3RBZ2dyZWdhdG9yIHtcbiAgICAvKiogQWdncmVnYXRpb24gdW5pcXVlIGtleS4gKi9cbiAgICBrZXk6IHN0cmluZztcbiAgICAvKiogQWdncmVnYXRpb24gbGFiZWwgdG8gc2hvdyBpbiB0aGUgVUkuICovXG4gICAgbGFiZWw6IHN0cmluZztcbiAgICAvKipcbiAgICAgKiBBZ2dyZWdhdGlvbiBuYW1lIHRoYXQgd2lsbCBiZSB1c2VkIGZyb20gYSBsaXN0IG9mIHByZWRlZmluZWQgYWdncmVnYXRpb25zLlxuICAgICAqIElmIG5vdCBzZXQgd2lsbCB1c2UgdGhlIHNwZWNpZmllZCBhZ2dyZWdhdG9yIGZ1bmN0aW9uLlxuICAgICAqL1xuICAgIGFnZ3JlZ2F0b3JOYW1lPzogUGl2b3RBZ2dyZWdhdGlvblR5cGU7XG5cbiAgICAvKiBibGF6b3JBbHRlcm5hdGVUeXBlOiBBZ2dyZWdhdG9yRXZlbnRIYW5kbGVyICovXG4gICAgLyogYmxhem9yT25seVNjcmlwdCAqL1xuICAgIC8qKlxuICAgICAqIEFnZ3JlZ2F0b3IgZnVuY3Rpb24gY2FuIGJlIGEgY3VzdG9tIGltcGxlbWVudGF0aW9uIG9mIGBQaXZvdEFnZ3JlZ2F0aW9uYCwgb3JcbiAgICAgKiB1c2UgcHJlZGVmaW5lZCBvbmVzIGZyb20gYElneFBpdm90QWdncmVnYXRlYCBhbmQgaXRzIHZhcmlhbnRzLlxuICAgICAqL1xuICAgIGFnZ3JlZ2F0b3I/OiAobWVtYmVyczogYW55W10sIGRhdGE/OiBhbnlbXSkgPT4gYW55O1xufVxuXG4vKiBtYXJzaGFsQnlWYWx1ZSAqL1xuLyoganNvbkFQSUNvbXBsZXhPYmplY3QgKi9cbi8qKlxuKiBDb25maWd1cmF0aW9uIG9mIHRoZSBwaXZvdCBncmlkLlxuKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVBpdm90Q29uZmlndXJhdGlvbiB7XG4gICAgLyoqIEEgc3RyYXRlZ3kgdG8gdHJhbnNmb3JtIHRoZSByb3dzLiAqL1xuICAgIHJvd1N0cmF0ZWd5PzogSVBpdm90RGltZW5zaW9uU3RyYXRlZ3kgfCBudWxsO1xuICAgIC8qKiBBIHN0cmF0ZWd5IHRvIHRyYW5zZm9ybSB0aGUgY29sdW1ucy4gKi9cbiAgICBjb2x1bW5TdHJhdGVneT86IElQaXZvdERpbWVuc2lvblN0cmF0ZWd5IHwgbnVsbDtcbiAgICAvKiogQSBsaXN0IG9mIHRoZSByb3dzLiAqL1xuICAgIHJvd3M6IElQaXZvdERpbWVuc2lvbltdIHwgbnVsbDtcbiAgICAvKiogQSBsaXN0IG9mIHRoZSBjb2x1bW5zLiAqL1xuICAgIGNvbHVtbnM6IElQaXZvdERpbWVuc2lvbltdIHwgbnVsbDtcbiAgICAvKiogQSBsaXN0IG9mIHRoZSB2YWx1ZXMuICovXG4gICAgdmFsdWVzOiBJUGl2b3RWYWx1ZVtdIHwgbnVsbDtcbiAgICAvKiogRGltZW5zaW9ucyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIGZpbHRlciBhcmVhLiAqL1xuICAgIGZpbHRlcnM/OiBJUGl2b3REaW1lbnNpb25bXSB8IG51bGw7XG4gICAgLyoqIFBpdm90IGRhdGEga2V5cyB1c2VkIGZvciBkYXRhIGdlbmVyYXRpb24uIENhbiBiZSB1c2VkIGZvciBjdXN0b20gcmVtb3RlIHNjZW5hcmlvcyB3aGVyZSB0aGUgZGF0YSBpcyBwcmUtcG9wdWxhdGVkLiAqL1xuICAgIHBpdm90S2V5cz86IElQaXZvdEtleXM7XG59XG5cbi8qIGJsYXpvckVsZW1lbnQgKi9cbi8qIG1hcnNoYWxCeVZhbHVlICovXG4vKiBqc29uQVBJQ29tcGxleE9iamVjdCAqL1xuLyoqXG4qIENvbmZpZ3VyYXRpb24gb2YgYSBwaXZvdCBkaW1lbnNpb24uXG4qL1xuZXhwb3J0IGludGVyZmFjZSBJUGl2b3REaW1lbnNpb24ge1xuICAgIC8qKiBBbGxvd3MgZGVmaW5pbmcgYSBoaWVyYXJjaHkgd2hlbiBtdWx0aXBsZSBzdWIgZ3JvdXBzIG5lZWQgdG8gYmUgZXh0cmFjdGVkIGZyb20gc2luZ2xlIG1lbWJlci4gKi9cbiAgICBjaGlsZExldmVsPzogSVBpdm90RGltZW5zaW9uO1xuICAgIC8qKiBGaWVsZCBuYW1lIHRvIHVzZSBpbiBvcmRlciB0byBleHRyYWN0IHZhbHVlLiAqL1xuICAgIG1lbWJlck5hbWU6IHN0cmluZztcblxuICAgIC8qIGNzVHJlYXRBc0V2ZW50OiBNZW1iZXJGdW5jdGlvbkhhbmRsZXIgKi9cbiAgICAvKiBibGF6b3JPbmx5U2NyaXB0ICovXG4gICAgLyoqIEZ1bmN0aW9uIHRoYXQgZXh0cmFjdHMgdGhlIHZhbHVlICovXG4gICAgbWVtYmVyRnVuY3Rpb24/OiAoZGF0YTogYW55KSA9PiBhbnk7XG4gICAgLyoqIERpc3BsYXkgbmFtZSB0byBzaG93IGluc3RlYWQgb2YgdGhlIGZpZWxkIG5hbWUgb2YgdGhpcyB2YWx1ZS4gKiovXG4gICAgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG4gICAgLyoqIEVuYWJsZXMvRGlzYWJsZXMgYSBwYXJ0aWN1bGFyIGRpbWVuc2lvbiBmcm9tIHBpdm90IHN0cnVjdHVyZS4gKi9cbiAgICBlbmFibGVkOiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIEEgcHJlZGVmaW5lZCBvciBkZWZpbmVkIHZpYSB0aGUgYGlneFBpdm90U2VsZWN0b3JgIGZpbHRlciBleHByZXNzaW9uIHRyZWUgZm9yIHRoZSBjdXJyZW50IGRpbWVuc2lvbiB0byBiZSBhcHBsaWVkIGluIHRoZSBmaWx0ZXIgcGlwZS5cbiAgICAgKiAqL1xuICAgIGZpbHRlcj86IElGaWx0ZXJpbmdFeHByZXNzaW9uc1RyZWUgfCBudWxsO1xuICAgIC8qKiBFbmFibGUvZGlzYWJsZSBzb3J0aW5nIGZvciBhIHBhcnRpY3VsYXIgZGltZW5zaW9uLiBUcnVlIGJ5IGRlZmF1bHQuICovXG4gICAgc29ydGFibGU/OiBib29sZWFuO1xuICAgIC8qKlxuICAgICAqIFRoZSBzb3J0aW5nIGRpcmVjdGlvbiBvZiB0aGUgY3VycmVudCBkaW1lbnNpb24uIERldGVybWluZXMgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSB2YWx1ZXMgd2lsbCBhcHBlYXIgaW4gdGhlIHJlbGF0ZWQgZGltZW5zaW9uLlxuICAgICAqL1xuICAgIHNvcnREaXJlY3Rpb24/OiBTb3J0aW5nRGlyZWN0aW9uO1xuICAgIC8qKlxuICAgICAqIFRoZSBkYXRhVHlwZSBvZiB0aGUgcmVsYXRlZCBkYXRhIGZpZWxkLlxuICAgICAqL1xuICAgIGRhdGFUeXBlPzogR3JpZENvbHVtbkRhdGFUeXBlO1xuICAgIC8qKiBUaGUgd2lkdGggb2YgdGhlIGRpbWVuc2lvbiBjZWxscyB0byBiZSByZW5kZXJlZC5DYW4gYmUgcGl4ZWwsICUgb3IgXCJhdXRvXCIuICovXG4gICAgd2lkdGg/OiBzdHJpbmc7XG4gICAgLyoqIExldmVsIG9mIHRoZSBkaW1lbnNpb24uICovXG4gICAgbGV2ZWw/OiBudW1iZXI7XG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgYXV0b1dpZHRoPzogbnVtYmVyO1xuICAgIGhvcml6b250YWxTdW1tYXJ5PyA6IGJvb2xlYW47XG59XG5cbi8qIG1hcnNoYWxCeVZhbHVlICovXG4vKiBqc29uQVBJQ29tcGxleE9iamVjdCAqL1xuLyoqXG4qIENvbmZpZ3VyYXRpb24gb2YgYSBwaXZvdCB2YWx1ZSBhZ2dyZWdhdGlvbi5cbiovXG5leHBvcnQgaW50ZXJmYWNlIElQaXZvdFZhbHVlIHtcbiAgICAvKiogRmllbGQgbmFtZSB0byB1c2UgaW4gb3JkZXIgdG8gZXh0cmFjdCB2YWx1ZS4gKi9cbiAgICBtZW1iZXI6IHN0cmluZztcbiAgICAvKiogRGlzcGxheSBuYW1lIHRvIHNob3cgaW5zdGVhZCBvZiBtZW1iZXIgZm9yIHRoZSBjb2x1bW4gaGVhZGVyIG9mIHRoaXMgdmFsdWUuICoqL1xuICAgIGRpc3BsYXlOYW1lPzogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIEFjdGl2ZSBhZ2dyZWdhdG9yIGRlZmluaXRpb24gd2l0aCBrZXksIGxhYmVsIGFuZCBhZ2dyZWdhdG9yLlxuICAgICAqL1xuICAgIGFnZ3JlZ2F0ZTogSVBpdm90QWdncmVnYXRvcjtcbiAgICAvKipcbiAgICAgKiBMaXN0IG9mIGFnZ3JlZ2F0ZXMgdG8gc2hvdyBpbiBhZ2dyZWdhdGUgZHJvcC1kb3duLlxuICAgICAqL1xuICAgIGFnZ3JlZ2F0ZUxpc3Q/OiBJUGl2b3RBZ2dyZWdhdG9yW107XG4gICAgLyoqIEVuYWJsZXMvRGlzYWJsZXMgYSBwYXJ0aWN1bGFyIHZhbHVlIGZyb20gcGl2b3QgYWdncmVnYXRpb24uICovXG4gICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICAvKiogIEFsbG93IGNvbmRpdGlvbmFsbHkgc3R5bGluZyBvZiB0aGUgSWd4UGl2b3RHcmlkIGNlbGxzLiAqL1xuICAgIHN0eWxlcz86IGFueTtcbiAgICAvKiogRW5hYmxlcyBhIGRhdGEgdHlwZSBzcGVjaWZpYyB0ZW1wbGF0ZSBvZiB0aGUgY2VsbHMgKi9cbiAgICBkYXRhVHlwZT86IEdyaWRDb2x1bW5EYXRhVHlwZTtcblxuICAgIC8qIGNzVHJlYXRBc0V2ZW50OiBQaXZvdFZhbHVlRm9ybWF0dGVyRXZlbnRIYW5kbGVyICovXG4gICAgLyogYmxhem9yT25seVNjcmlwdCAqL1xuICAgIC8qKiBBcHBsaWVzIGRpc3BsYXkgZm9ybWF0IHRvIGNlbGwgdmFsdWVzLiAqL1xuICAgIGZvcm1hdHRlcj86ICh2YWx1ZTogYW55LCByb3dEYXRhPzogSVBpdm90R3JpZFJlY29yZCwgY29sdW1uRGF0YT86IElQaXZvdEdyaWRDb2x1bW4pID0+IGFueTtcbn1cblxuLyoqIEludGVyZmFjZSBkZXNjcmliaW5nIHRoZSBQaXZvdCBjb2x1bW4gZGF0YS5cbiogIENvbnRhaW5zIGluZm9ybWF0aW9uIG9uIHRoZSByZWxhdGVkIGNvbHVtbiBkaW1lbnNpb25zIGFuZCB0aGVpciB2YWx1ZXMuXG4qL1xuZXhwb3J0IGludGVyZmFjZSBJUGl2b3RHcmlkQ29sdW1uIHtcbiAgICAgICAgZmllbGQ6IHN0cmluZyxcbiAgICAgICAgLyogYmxhem9yU3VwcHJlc3MgKi9cbiAgICAgICAgLyoqIEdldHMvU2V0cyB0aGUgZ3JvdXAgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIHRoZSByZWxhdGVkIGNvbHVtbiBkaW1lbnNpb24gYnkgaXRzIG1lbWJlck5hbWUuICoqL1xuICAgICAgICBkaW1lbnNpb25WYWx1ZXM6IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gICAgICAgIC8qKiBMaXN0IG9mIGRpbWVuc2lvbnMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjb2x1bW4uKiovXG4gICAgICAgIGRpbWVuc2lvbnM6IElQaXZvdERpbWVuc2lvbltdO1xuICAgICAgICB2YWx1ZTogSVBpdm90VmFsdWVcbn1cblxuLyogbWFyc2hhbEJ5VmFsdWUgKi9cbi8qKiBJbnRlcmZhY2UgZGVzY3JpYmluZyB0aGUgUGl2b3QgZGF0YSBrZXlzIHVzZWQgZm9yIGRhdGEgZ2VuZXJhdGlvbi5cbiogIENhbiBiZSB1c2VkIGZvciBjdXN0b20gcmVtb3RlIHNjZW5hcmlvcyB3aGVyZSB0aGUgZGF0YSBpcyBwcmUtcG9wdWxhdGVkLlxuKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVBpdm90S2V5cyB7XG4gICAgLyoqIEZpZWxkIHRoYXQgc3RvcmVzIGNoaWxkcmVuIGZvciBoaWVyYXJjaHkgYnVpbGRpbmcuICovXG4gICAgY2hpbGRyZW46IHN0cmluZztcbiAgICAvKiogRmllbGQgdGhhdCBzdG9yZXMgcmVmZXJlbmNlIHRvIHRoZSBvcmlnaW5hbCBkYXRhIHJlY29yZHMuICovXG4gICAgcmVjb3Jkczogc3RyaW5nO1xuICAgIC8qKiBGaWVsZCB0aGF0IHN0b3JlcyBhZ2dyZWdhdGlvbiB2YWx1ZXMuICovXG4gICAgYWdncmVnYXRpb25zOiBzdHJpbmc7XG4gICAgLyoqIEZpZWxkIHRoYXQgc3RvcmVzIGRpbWVuc2lvbiBsZXZlbCBiYXNlZCBvbiBpdHMgaGllcmFyY2h5LiAqL1xuICAgIGxldmVsOiBzdHJpbmc7XG4gICAgLyoqIFNlcGFyYXRvciB1c2VkIHdoZW4gZ2VuZXJhdGluZyB0aGUgdW5pcXVlIGNvbHVtbiBmaWVsZCB2YWx1ZXMuICovXG4gICAgY29sdW1uRGltZW5zaW9uU2VwYXJhdG9yOiBzdHJpbmc7XG4gICAgLyoqIFNlcGFyYXRvciB1c2VkIHdoZW4gZ2VuZXJhdGluZyB0aGUgdW5pcXVlIHJvdyBmaWVsZCB2YWx1ZXMuICovXG4gICAgcm93RGltZW5zaW9uU2VwYXJhdG9yOiBzdHJpbmc7XG59XG5cbi8qIG11c3RDb2VyY2VUb0ludCAqL1xuLyoqIFRoZSBkaW1lbnNpb24gdHlwZXMgLSBSb3csIENvbHVtbiBvciBGaWx0ZXIuICovXG5leHBvcnQgZW51bSBQaXZvdERpbWVuc2lvblR5cGUge1xuICAgIFJvdyxcbiAgICBDb2x1bW4sXG4gICAgRmlsdGVyXG59XG5cblxuZXhwb3J0IGVudW0gUGl2b3RSb3dMYXlvdXRUeXBlIHtcbiAgICBWZXJ0aWNhbCA9IFwidmVydGljYWxcIixcbiAgICBIb3Jpem9udGFsID0gXCJob3Jpem9udGFsXCJcbn1cblxuZXhwb3J0IGVudW0gUGl2b3RTdW1tYXJ5UG9zaXRpb24ge1xuICAgIFRvcCA9IFwidG9wXCIsXG4gICAgQm90dG9tID0gXCJib3R0b21cIlxufVxuXG5leHBvcnQgaW50ZXJmYWNlIElQaXZvdFVJU2V0dGluZ3Mge1xuICAgIHNob3dDb25maWd1cmF0aW9uPzogYm9vbGVhbjtcbiAgICBzaG93Um93SGVhZGVycz86IGJvb2xlYW47XG4gICAgcm93TGF5b3V0PzogUGl2b3RSb3dMYXlvdXRUeXBlO1xuICAgIGhvcml6b250YWxTdW1tYXJpZXNQb3NpdGlvbj86IFBpdm90U3VtbWFyeVBvc2l0aW9uO1xufVxuXG5leHBvcnQgdHlwZSBQaXZvdEFnZ3JlZ2F0aW9uVHlwZSA9ICdTVU0nIHwgJ0FWRycgfCAnTUlOJyB8ICdNQVgnIHwgJ0NPVU5UJyB8ICdMQVRFU1QnIHwgJ0VBUkxJRVNUJyA7XG5cbi8qKiBJbnRlcmZhY2UgZGVzY3JpYmluZyB0aGUgcGl2b3QgZGltZW5zaW9uIGRhdGEuXG4qIENvbnRhaW5zIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gbmVlZGVkIHRvIHJlbmRlciBkaW1lbnNpb24gaGVhZGVycy5cbiovXG5leHBvcnQgaW50ZXJmYWNlIElQaXZvdERpbWVuc2lvbkRhdGEge1xuICAgIC8qKiBBc3NvY2lhdGVkIGNvbHVtbiBkZWZpbml0aW9uLiAqL1xuICAgIGNvbHVtbjogQ29sdW1uVHlwZTtcbiAgICAvKiogQXNzb2NpYXRlZCBkaW1lbnNpb24gZGVmaW5pdGlvbi4gKi9cbiAgICBkaW1lbnNpb246IElQaXZvdERpbWVuc2lvbjtcbiAgICAvKiogTGlzdCBvZiBwcmV2aW91cyBkaW1lbnNpb24gZ3JvdXBzLiAqL1xuICAgIHByZXZEaW1lbnNpb25zOiBJUGl2b3REaW1lbnNpb25bXTtcbiAgICAvKiogV2hldGhlciB0aGlzIGEgY2hpbGQgZGltZW5zaW9uLiAqL1xuICAgIGlzQ2hpbGQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFBpdm90Um93SGVhZGVyR3JvdXBUeXBlIHtcbiAgICByb3dJbmRleDogbnVtYmVyO1xuICAgIHBhcmVudDogYW55O1xuICAgIGhlYWRlcjogYW55O1xuICAgIGhlYWRlcklEOiBzdHJpbmc7XG4gICAgZ3JpZDogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpbWVuc2lvblZhbHVlVHlwZSB7XG4gICAgdmFsdWU6IHN0cmluZztcbiAgICBjaGlsZHJlbjogTWFwPHN0cmluZywgc3RyaW5nIHwgRGltZW5zaW9uVmFsdWVUeXBlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUGl2b3RHcmlkUmVjb3JkIHtcbiAgICAvKiBibGF6b3JTdXBwcmVzcyAqL1xuICAgIC8qKiBHZXRzL1NldHMgdGhlIGdyb3VwIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVsYXRlZCByb3cgZGltZW5zaW9uIGJ5IGl0cyBtZW1iZXJOYW1lLiAqKi9cbiAgICBkaW1lbnNpb25WYWx1ZXM6IE1hcDxzdHJpbmcsIHN0cmluZz47XG4gICAgLyogYmxhem9yU3VwcHJlc3MgKi9cbiAgICAvKiogR2V0cy9TZXRzIHRoZSBhZ2dyZWdhdGlvbiB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIHZhbHVlIHBhdGguIFZhbHVlIHBhdGggZGVwZW5kcyBvbiBjb25maWd1cmVkIGNvbHVtbiBkaW1lbnNpb24gaGllcmFyY2h5IGFuZCB2YWx1ZXMuKiovXG4gICAgYWdncmVnYXRpb25WYWx1ZXM6IE1hcDxzdHJpbmcsIGFueT47XG4gICAgLyogYmxhem9yU3VwcHJlc3MgKi9cbiAgICAvKiogTGlzdCBvZiBjaGlsZHJlbiByZWNvcmRzIGluIGNhc2UgYW55IHJvdyBkaW1lbnNpb24gbWVtYmVyIGNvbnRhaW4gYSBoaWVyYXJjaHkuIEVhY2ggZGltZW5zaW9uIG1lbWJlciBjb250YWlucyBpdHMgb3duIGhpZXJhcmNoeSwgd2hpY2ggeW91IGNhbiBnZXQgYnkgaXRzIG1lbWJlck5hbWUuICoqL1xuICAgIGNoaWxkcmVuPzogTWFwPHN0cmluZywgSVBpdm90R3JpZFJlY29yZFtdPjtcbiAgICAvKiogTGlzdCBvZiBvcmlnaW5hbCBkYXRhIHJlY29yZHMgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50IHBpdm90ZWQgZGF0YS4gKiovXG4gICAgcmVjb3Jkcz86IGFueVtdO1xuICAgICAvKiogUmVjb3JkIGxldmVsKiovXG4gICAgbGV2ZWw/OiBudW1iZXI7XG4gICAgLyoqIExpc3Qgb2YgZGltZW5zaW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHJlY29yZC4qKi9cbiAgICBkaW1lbnNpb25zOiBJUGl2b3REaW1lbnNpb25bXTtcbiAgICAvKiogSWYgc2V0LCBpdCBzcGVjaWZpZXMgdGhlIG5hbWUgb2YgdGhlIGRpbWVuc2lvbiwgdGhhdCBoYXMgdG90YWwgcmVjb3JkIGVuYWJsZWQuICovXG4gICAgdG90YWxSZWNvcmREaW1lbnNpb25OYW1lPzogc3RyaW5nO1xuICAgIC8qKiBUaGUgaW5kZXggb2YgdGhlIHJlY29yZCBpbiB0aGUgdG90YWwgdmlldyAqL1xuICAgIGRhdGFJbmRleD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUGl2b3RHcmlkR3JvdXBSZWNvcmQgZXh0ZW5kcyBJUGl2b3RHcmlkUmVjb3JkIHtcbiAgICBoZWlnaHQ/OiBudW1iZXI7XG4gICAgcm93U3Bhbj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJUGl2b3RHcmlkSG9yaXpvbnRhbEdyb3VwIHtcbiAgICB2YWx1ZT86IHN0cmluZztcbiAgICByb290RGltZW5zaW9uPzogSVBpdm90RGltZW5zaW9uO1xuICAgIGRpbWVuc2lvbnM/OiBJUGl2b3REaW1lbnNpb25bXTtcbiAgICByZWNvcmRzPzogSVBpdm90R3JpZFJlY29yZFtdO1xuICAgIHJvd1N0YXJ0PzogbnVtYmVyO1xuICAgIHJvd1NwYW4/OiBudW1iZXI7XG4gICAgY29sU3RhcnQ/OiBudW1iZXI7XG4gICAgY29sU3Bhbj86IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJZ3hQaXZvdEdyaWRWYWx1ZVRlbXBsYXRlQ29udGV4dCB7XG4gICAgJGltcGxpY2l0OiBJUGl2b3RWYWx1ZTtcbn1cbiJdfQ==
@@ -140,7 +140,6 @@ export class IgxIconService {
140
140
  const icon = this._iconRefs.get(family)?.get(name);
141
141
  const iconFamily = icon?.family ?? family;
142
142
  const _name = icon?.name ?? name;
143
- const type = icon?.type ?? this.familyType(iconFamily);
144
143
  const className = this.familyClassName(iconFamily);
145
144
  const prefix = this._families.get(iconFamily)?.prefix;
146
145
  // Handle name prefixes
@@ -148,6 +147,8 @@ export class IgxIconService {
148
147
  if (iconName && prefix) {
149
148
  iconName = _name.includes(prefix) ? _name : `${prefix}${_name}`;
150
149
  }
150
+ const cached = this.isSvgIconCached(iconName, iconFamily);
151
+ const type = cached ? "svg" : icon?.type ?? this.familyType(iconFamily);
151
152
  return {
152
153
  className,
153
154
  type,
@@ -155,6 +156,12 @@ export class IgxIconService {
155
156
  family: iconFamily,
156
157
  };
157
158
  }
159
+ getOrCreateSvgFamily(family) {
160
+ if (!this._families.has(family)) {
161
+ this._families.set(family, { className: family, type: "svg" });
162
+ }
163
+ return this._families.get(family);
164
+ }
158
165
  /**
159
166
  * Adds an SVG image to the cache. SVG source is an url.
160
167
  * ```typescript
@@ -172,7 +179,7 @@ export class IgxIconService {
172
179
  throw new Error(`The URL provided was not trusted as a resource URL: "${url}".`);
173
180
  }
174
181
  if (!this.isSvgIconCached(name, family)) {
175
- this._families.set(family, { className: family, type: "svg" });
182
+ this.getOrCreateSvgFamily(family);
176
183
  this.fetchSvg(url).subscribe((res) => {
177
184
  this.cacheSvgIcon(name, res, family, stripMeta);
178
185
  });
@@ -189,12 +196,12 @@ export class IgxIconService {
189
196
  * <path d="M74 74h54v54H74" /></svg>', 'svg-flags');
190
197
  * ```
191
198
  */
192
- addSvgIconFromText(name, iconText, family = "", stripMeta = false) {
199
+ addSvgIconFromText(name, iconText, family = this._defaultFamily.name, stripMeta = false) {
193
200
  if (name && iconText) {
194
201
  if (this.isSvgIconCached(name, family)) {
195
202
  return;
196
203
  }
197
- this._families.set(family, { className: family, type: "svg" });
204
+ this.getOrCreateSvgFamily(family);
198
205
  this.cacheSvgIcon(name, iconText, family, stripMeta);
199
206
  }
200
207
  else {
@@ -207,10 +214,9 @@ export class IgxIconService {
207
214
  * const isSvgCached = this.iconService.isSvgIconCached('aruba', 'svg-flags');
208
215
  * ```
209
216
  */
210
- isSvgIconCached(name, family = "") {
211
- const familyClassName = this.familyClassName(family);
212
- if (this._cachedIcons.has(familyClassName)) {
213
- const familyRegistry = this._cachedIcons.get(familyClassName);
217
+ isSvgIconCached(name, family) {
218
+ if (this._cachedIcons.has(family)) {
219
+ const familyRegistry = this._cachedIcons.get(family);
214
220
  return familyRegistry.has(name);
215
221
  }
216
222
  return false;
@@ -221,9 +227,8 @@ export class IgxIconService {
221
227
  * const svgIcon = this.iconService.getSvgIcon('aruba', 'svg-flags');
222
228
  * ```
223
229
  */
224
- getSvgIcon(name, family = "") {
225
- const familyClassName = this.familyClassName(family);
226
- return this._cachedIcons.get(familyClassName)?.get(name);
230
+ getSvgIcon(name, family) {
231
+ return this._cachedIcons.get(family)?.get(name);
227
232
  }
228
233
  /**
229
234
  * @hidden
@@ -236,13 +241,11 @@ export class IgxIconService {
236
241
  * @hidden
237
242
  */
238
243
  cacheSvgIcon(name, value, family = this._defaultFamily.name, stripMeta) {
239
- family = family ? family : this._defaultFamily.name;
240
244
  if (this._platformUtil?.isBrowser && name && value) {
241
245
  const doc = this._domParser.parseFromString(value, "image/svg+xml");
242
246
  const svg = doc.querySelector("svg");
243
247
  if (!this._cachedIcons.has(family)) {
244
248
  this._cachedIcons.set(family, new Map());
245
- this._iconLoaded.next({ name, value, family });
246
249
  }
247
250
  if (svg) {
248
251
  svg.setAttribute("fit", "");
@@ -259,6 +262,7 @@ export class IgxIconService {
259
262
  }
260
263
  const safeSvg = this._sanitizer.bypassSecurityTrustHtml(svg.outerHTML);
261
264
  this._cachedIcons.get(family).set(name, safeSvg);
265
+ this._iconLoaded.next({ name, value, family });
262
266
  }
263
267
  }
264
268
  }
@@ -282,4 +286,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
282
286
  type: Inject,
283
287
  args: [DOCUMENT]
284
288
  }] }] });
285
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2ljb24vaWNvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFBOzs7OztBQWtCbEQ7Ozs7Ozs7Ozs7O0dBV0c7QUFJSCxNQUFNLE9BQU8sY0FBYztJQXVCdkIsWUFDd0IsVUFBd0IsRUFDeEIsV0FBdUIsRUFDdkIsYUFBMkIsRUFDUCxRQUFrQjtRQUh0QyxlQUFVLEdBQVYsVUFBVSxDQUFjO1FBQ3hCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQ1AsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQWZ0RCxtQkFBYyxHQUFlO1lBQ2pDLElBQUksRUFBRSxVQUFVO1lBQ2hCLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1NBQ3RELENBQUM7UUFDTSxjQUFTLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7UUFDckQsY0FBUyxHQUFHLElBQUksR0FBRyxFQUFzQixDQUFDO1FBQzFDLGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7UUFDeEQsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBc0IsQ0FBQztRQVVwRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFD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OzBCQUNSLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFNlY3VyaXR5Q29udGV4dCwgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBQbGF0Zm9ybVV0aWwgfSBmcm9tIFwiLi4vY29yZS91dGlsc1wiO1xuaW1wb3J0IHsgaWNvblJlZmVyZW5jZXMgfSBmcm9tICcuL2ljb24ucmVmZXJlbmNlcydcbmltcG9ydCB7IEljb25GYW1pbHksIEljb25NZXRhLCBGYW1pbHlNZXRhIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgSWNvblR5cGUsIEljb25SZWZlcmVuY2UgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IElneFRoZW1lIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3RoZW1lL3RoZW1lLnNlcnZpY2VcIjtcblxuLyoqXG4gKiBFdmVudCBlbWl0dGVkIHdoZW4gYSBTVkcgaWNvbiBpcyBsb2FkZWQgdGhyb3VnaFxuICogYSBIVFRQIHJlcXVlc3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWd4SWNvbkxvYWRlZEV2ZW50IHtcbiAgICAvKiogTmFtZSBvZiB0aGUgaWNvbiAqL1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKiogVGhlIGFjdHVhbCBTVkcgdGV4dCwgaWYgYW55ICovXG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gICAgLyoqIFRoZSBmb250LWZhbWlseSBmb3IgdGhlIGljb24uIERlZmF1bHRzIHRvIG1hdGVyaWFsLiAqL1xuICAgIGZhbWlseTogc3RyaW5nO1xufVxuXG4vKipcbiAqICoqSWduaXRlIFVJIGZvciBBbmd1bGFyIEljb24gU2VydmljZSoqIC1cbiAqXG4gKiBUaGUgSWduaXRlIFVJIEljb24gU2VydmljZSBtYWtlcyBpdCBlYXN5IGZvciBkZXZlbG9wZXJzIHRvIGluY2x1ZGUgY3VzdG9tIFNWRyBpbWFnZXMgYW5kIHVzZSB0aGVtIHdpdGggSWd4SWNvbkNvbXBvbmVudC5cbiAqIEluIGFkZGl0aW9uIGl0IGNvdWxkIGJlIHVzZWQgdG8gYXNzb2NpYXRlIGEgY3VzdG9tIGNsYXNzIHRvIGJlIGFwcGxpZWQgb24gSWd4SWNvbkNvbXBvbmVudCBhY2NvcmRpbmcgdG8gZ2l2ZW4gZm9udC1mYW1pbHkuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHRoaXMuaWNvblNlcnZpY2Uuc2V0RmFtaWx5KCdtYXRlcmlhbCcsIHsgY2xhc3NOYW1lOiAnbWF0ZXJpYWwtaWNvbnMnLCB0eXBlOiAnZm9udCcgfSk7XG4gKiB0aGlzLmljb25TZXJ2aWNlLmFkZFN2Z0ljb24oJ2FydWJhJywgJy9hc3NldHMvc3ZnL2NvdW50cnlfZmxhZ3MvYXJ1YmEuc3ZnJywgJ3N2Zy1mbGFncycpO1xuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgSWd4SWNvblNlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIE9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIGFuIGljb24gaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZFxuICAgICAqIHRocm91Z2ggYSBIVFRQIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLnNlcnZpY2UuaWNvbkxvYWRlZC5zdWJzY3JpYmUoKGV2OiBJZ3hJY29uTG9hZGVkRXZlbnQpID0+IC4uLik7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGljb25Mb2FkZWQ6IE9ic2VydmFibGU8SWd4SWNvbkxvYWRlZEV2ZW50PjtcblxuICAgIHByaXZhdGUgX2RlZmF1bHRGYW1pbHk6IEljb25GYW1pbHkgPSB7XG4gICAgICAgIG5hbWU6IFwibWF0ZXJpYWxcIixcbiAgICAgICAgbWV0YTogeyBjbGFzc05hbWU6IFwibWF0ZXJpYWwtaWNvbnNcIiwgdHlwZTogXCJsaWdhXCIgfSxcbiAgICB9O1xuICAgIHByaXZhdGUgX2ljb25SZWZzID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIEljb25NZXRhPj4oKTtcbiAgICBwcml2YXRlIF9mYW1pbGllcyA9IG5ldyBNYXA8c3RyaW5nLCBGYW1pbHlNZXRhPigpO1xuICAgIHByaXZhdGUgX2NhY2hlZEljb25zID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIFNhZmVIdG1sPj4oKTtcbiAgICBwcml2YXRlIF9pY29uTG9hZGVkID0gbmV3IFN1YmplY3Q8SWd4SWNvbkxvYWRlZEV2ZW50PigpO1xuICAgIHByaXZhdGUgX2RvbVBhcnNlcjogRE9NUGFyc2VyO1xuICAgIHByaXZhdGUgdGhlbWUhOiBJZ3hUaGVtZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9zYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfcGxhdGZvcm1VdGlsOiBQbGF0Zm9ybVV0aWwsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRE9DVU1FTlQpIHByb3RlY3RlZCBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgKSB7XG4gICAgICAgIHRoaXMuaWNvbkxvYWRlZCA9IHRoaXMuX2ljb25Mb2FkZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMuc2V0RmFtaWx5KHRoaXMuX2RlZmF1bHRGYW1pbHkubmFtZSwgdGhpcy5fZGVmYXVsdEZhbWlseS5tZXRhKTtcblxuICAgICAgICBpZiAodGhpcy5fcGxhdGZvcm1VdGlsPy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2RvbVBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBSZXR1cm5zIHRoZSBkZWZhdWx0IGZvbnQtZmFtaWx5LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIGNvbnN0IGRlZmF1bHRGYW1pbHkgPSB0aGlzLmljb25TZXJ2aWNlLmRlZmF1bHRGYW1pbHk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBkZWZhdWx0RmFtaWx5KCk6IEljb25GYW1pbHkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdEZhbWlseTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgU2V0cyB0aGUgZGVmYXVsdCBmb250LWZhbWlseS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICB0aGlzLmljb25TZXJ2aWNlLmRlZmF1bHRGYW1pbHkgPSAnc3ZnLWZsYWdzJztcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0IGRlZmF1bHRGYW1pbHkoZmFtaWx5OiBJY29uRmFtaWx5KSB7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRGYW1pbHkgPSBmYW1pbHk7XG4gICAgICAgIHRoaXMuc2V0RmFtaWx5KHRoaXMuX2RlZmF1bHRGYW1pbHkubmFtZSwgdGhpcy5fZGVmYXVsdEZhbWlseS5tZXRhKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgUmVnaXN0ZXJzIGEgY3VzdG9tIGNsYXNzIHRvIGJlIGFwcGxpZWQgdG8gSWd4SWNvbkNvbXBvbmVudCBmb3IgYSBnaXZlbiBmb250LWZhbWlseS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyRmFtaWx5QWxpYXMoJ21hdGVyaWFsJywgJ21hdGVyaWFsLWljb25zJyk7XG4gICAgICogYGBgXG4gICAgICogQGRlcHJlY2F0ZWQgaW4gdmVyc2lvbiAxOC4xLjAuIFVzZSBgc2V0RmFtaWx5YCBpbnN0ZWFkLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWdpc3RlckZhbWlseUFsaWFzKFxuICAgICAgICBhbGlhczogc3RyaW5nLFxuICAgICAgICBjbGFzc05hbWU6IHN0cmluZyA9IGFsaWFzLFxuICAgICAgICB0eXBlOiBJY29uVHlwZSA9IFwiZm9udFwiLFxuICAgICk6IHRoaXMge1xuICAgICAgICB0aGlzLnNldEZhbWlseShhbGlhcywgeyBjbGFzc05hbWUsIHR5cGUgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBSZXR1cm5zIHRoZSBjdXN0b20gY2xhc3MsIGlmIGFueSwgYXNzb2NpYXRlZCB0byBhIGdpdmVuIGZvbnQtZmFtaWx5LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIGNvbnN0IGZhbWlseUNsYXNzID0gdGhpcy5pY29uU2VydmljZS5mYW1pbHlDbGFzc05hbWUoJ21hdGVyaWFsJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGZhbWlseUNsYXNzTmFtZShhbGlhczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZhbWlsaWVzLmdldChhbGlhcyk/LmNsYXNzTmFtZSB8fCBhbGlhcztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwcml2YXRlIGZhbWlseVR5cGUoYWxpYXM6IHN0cmluZyk6IEljb25UeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZhbWlsaWVzLmdldChhbGlhcyk/LnR5cGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIHNldFJlZnNCeVRoZW1lKHRoZW1lOiBJZ3hUaGVtZSkge1xuICAgICAgICBpZiAodGhpcy50aGVtZSAhPT0gdGhlbWUpIHtcbiAgICAgICAgICAgIHRoaXMudGhlbWUgPSB0aGVtZTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCB7IGFsaWFzLCB0YXJnZXQgfSBvZiBpY29uUmVmZXJlbmNlcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGljb24gPSB0YXJnZXQuZ2V0KHRoZW1lKSA/PyB0YXJnZXQuZ2V0KCdkZWZhdWx0JykhO1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkSWNvblJlZihhbGlhcy5uYW1lLCBhbGlhcy5mYW1pbHksIGljb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIENyZWF0ZXMgYSBmYW1pbHkgdG8gY2xhc3NOYW1lIHJlbGF0aW9uc2hpcCB0aGF0IGlzIGFwcGxpZWQgdG8gdGhlIElneEljb25Db21wb25lbnRcbiAgICAgKiAgIHdoZW5ldmVyIHRoYXQgZmFtaWx5IG5hbWUgaXMgdXNlZC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICB0aGlzLmljb25TZXJ2aWNlLnNldEZhbWlseSgnbWF0ZXJpYWwnLCB7IGNsYXNzTmFtZTogJ21hdGVyaWFsLWljb25zJywgdHlwZTogJ2xpZ2EnIH0pO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRGYW1pbHkobmFtZTogc3RyaW5nLCBtZXRhOiBGYW1pbHlNZXRhKSB7XG4gICAgICAgIHRoaXMuX2ZhbWlsaWVzLnNldChuYW1lLCBtZXRhKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQWRkcyBhbiBpY29uIHJlZmVyZW5jZSBtZXRhIGZvciBhbiBpY29uIGluIGEgbWV0YSBmYW1pbHkuXG4gICAgICogIEV4ZWN1dGVzIG9ubHkgaWYgbm8gaWNvbiByZWZlcmVuY2UgaXMgZm91bmQuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAgdGhpcy5pY29uU2VydmljZS5hZGRJY29uUmVmKCdhcnViYScsICdkZWZhdWx0JywgeyBuYW1lOiAnYXJ1YmEnLCBmYW1pbHk6ICdzdmctZmxhZ3MnIH0pO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRJY29uUmVmKG5hbWU6IHN0cmluZywgZmFtaWx5OiBzdHJpbmcsIGljb246IEljb25NZXRhKSB7XG4gICAgICAgIGNvbnN0IGljb25SZWYgPSB0aGlzLl9pY29uUmVmcy5nZXQoZmFtaWx5KT8uZ2V0KG5hbWUpO1xuXG4gICAgICAgIGlmICghaWNvblJlZikge1xuICAgICAgICAgICAgdGhpcy5zZXRJY29uUmVmKG5hbWUsIGZhbWlseSwgaWNvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgU2ltaWxhciB0byBhZGRJY29uUmVmLCBidXQgYWx3YXlzIHNldHMgdGhlIGljb24gcmVmZXJlbmNlIG1ldGEgZm9yIGFuIGljb24gaW4gYSBtZXRhIGZhbWlseS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICB0aGlzLmljb25TZXJ2aWNlLnNldEljb25SZWYoJ2FydWJhJywgJ2RlZmF1bHQnLCB7IG5hbWU6ICdhcnViYScsIGZhbWlseTogJ3N2Zy1mbGFncycgfSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldEljb25SZWYobmFtZTogc3RyaW5nLCBmYW1pbHk6IHN0cmluZywgaWNvbjogSWNvbk1ldGEpIHtcbiAgICAgICAgbGV0IGZhbWlseVJlZiA9IHRoaXMuX2ljb25SZWZzLmdldChmYW1pbHkpO1xuXG4gICAgICAgIGlmICghZmFtaWx5UmVmKSB7XG4gICAgICAgICAgICBmYW1pbHlSZWYgPSBuZXcgTWFwPHN0cmluZywgSWNvbk1ldGE+KCk7XG4gICAgICAgICAgICB0aGlzLl9pY29uUmVmcy5zZXQoZmFtaWx5LCBmYW1pbHlSZWYpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmFtaWx5VHlwZSA9IHRoaXMuZmFtaWx5VHlwZShpY29uPy5mYW1pbHkpO1xuICAgICAgICBmYW1pbHlSZWYuc2V0KG5hbWUsIHsgLi4uaWNvbiwgdHlwZTogaWNvbi50eXBlID8/IGZhbWlseVR5cGUgfSk7XG5cbiAgICAgICAgdGhpcy5faWNvbkxvYWRlZC5uZXh0KHsgbmFtZSwgZmFtaWx5IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBSZXR1cm5zIHRoZSBpY29uIHJlZmVyZW5jZSBtZXRhIGZvciBhbiBpY29uIGluIGEgZ2l2ZW4gZmFtaWx5LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIGNvbnN0IGljb25SZWYgPSB0aGlzLmljb25TZXJ2aWNlLmdldEljb25SZWYoJ2FydWJhJywgJ2RlZmF1bHQnKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0SWNvblJlZihuYW1lOiBzdHJpbmcsIGZhbWlseTogc3RyaW5nKTogSWNvblJlZmVyZW5jZSB7XG4gICAgICAgIGNvbnN0IGljb24gPSB0aGlzLl9pY29uUmVmcy5nZXQoZmFtaWx5KT8uZ2V0KG5hbWUpO1xuXG4gICAgICAgIGNvbnN0IGljb25GYW1pbHkgPSBpY29uPy5mYW1pbHkgPz8gZmFtaWx5O1xuICAgICAgICBjb25zdCBfbmFtZSA9IGljb24/Lm5hbWUgPz8gbmFtZTtcbiAgICAgICAgY29uc3QgdHlwZSA9IGljb24/LnR5cGUgPz8gdGhpcy5mYW1pbHlUeXBlKGljb25GYW1pbHkpO1xuICAgICAgICBjb25zdCBjbGFzc05hbWUgPSB0aGlzLmZhbWlseUNsYXNzTmFtZShpY29uRmFtaWx5KTtcbiAgICAgICAgY29uc3QgcHJlZml4ID0gdGhpcy5fZmFtaWxpZXMuZ2V0KGljb25GYW1pbHkpPy5wcmVmaXg7XG5cbiAgICAgICAgLy8gSGFuZGxlIG5hbWUgcHJlZml4ZXNcbiAgICAgICAgbGV0IGljb25OYW1lID0gX25hbWU7XG5cbiAgICAgICAgaWYgKGljb25OYW1lICYmIHByZWZpeCkge1xuICAgICAgICAgICAgaWNvbk5hbWUgPSBfbmFtZS5pbmNsdWRlcyhwcmVmaXgpID8gX25hbWUgOiBgJHtwcmVmaXh9JHtfbmFtZX1gO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGNsYXNzTmFtZSxcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBuYW1lOiBpY29uTmFtZSxcbiAgICAgICAgICAgIGZhbWlseTogaWNvbkZhbWlseSxcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQWRkcyBhbiBTVkcgaW1hZ2UgdG8gdGhlIGNhY2hlLiBTVkcgc291cmNlIGlzIGFuIHVybC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICB0aGlzLmljb25TZXJ2aWNlLmFkZFN2Z0ljb24oJ2FydWJhJywgJy9hc3NldHMvc3ZnL2NvdW50cnlfZmxhZ3MvYXJ1YmEuc3ZnJywgJ3N2Zy1mbGFncycpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRTdmdJY29uKFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHVybDogc3RyaW5nLFxuICAgICAgICBmYW1pbHkgPSB0aGlzLl9kZWZhdWx0RmFtaWx5Lm5hbWUsXG4gICAgICAgIHN0cmlwTWV0YSA9IGZhbHNlLFxuICAgICkge1xuICAgICAgICBpZiAobmFtZSAmJiB1cmwpIHtcbiAgICAgICAgICAgIGNvbnN0IHNhZmVVcmwgPSB0aGlzLl9zYW5pdGl6ZXIuYnlwYXNzU2VjdXJpdHlUcnVzdFJlc291cmNlVXJsKHVybCk7XG4gICAgICAgICAgICBpZiAoIXNhZmVVcmwpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBUaGUgcHJvdmlkZWQgVVJMIGNvdWxkIG5vdCBiZSBwcm9jZXNzZWQgYXMgdHJ1c3RlZCByZXNvdXJjZSBVUkwgYnkgQW5ndWxhcidzIERvbVNhbml0aXplcjogXCIke3VybH1cIi5gLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHNhbml0aXplZFVybCA9IHRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShcbiAgICAgICAgICAgICAgICBTZWN1cml0eUNvbnRleHQuUkVTT1VSQ0VfVVJMLFxuICAgICAgICAgICAgICAgIHNhZmVVcmwsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgaWYgKCFzYW5pdGl6ZWRVcmwpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBUaGUgVVJMIHByb3ZpZGVkIHdhcyBub3QgdHJ1c3RlZCBhcyBhIHJlc291cmNlIFVSTDogXCIke3VybH1cIi5gLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5pc1N2Z0ljb25DYWNoZWQobmFtZSwgZmFtaWx5KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2ZhbWlsaWVzLnNldChmYW1pbHksIHsgY2xhc3NOYW1lOiBmYW1pbHksIHR5cGU6IFwic3ZnXCIgfSk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLmZldGNoU3ZnKHVybCkuc3Vic2NyaWJlKChyZXMpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWNoZVN2Z0ljb24obmFtZSwgcmVzLCBmYW1pbHksIHN0cmlwTWV0YSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgXCJZb3Ugc2hvdWxkIHByb3ZpZGUgYXQgbGVhc3QgYG5hbWVgIGFuZCBgdXJsYCB0byByZWdpc3RlciBhbiBzdmcgaWNvbi5cIixcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQWRkcyBhbiBTVkcgaW1hZ2UgdG8gdGhlIGNhY2hlLiBTVkcgc291cmNlIGlzIGl0cyB0ZXh0LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIHRoaXMuaWNvblNlcnZpY2UuYWRkU3ZnSWNvbkZyb21UZXh0KCdzaW1wbGUnLCAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgdmlld0JveD1cIjAgMCAyMDAgMjAwXCI+XG4gICAgICogICA8cGF0aCBkPVwiTTc0IDc0aDU0djU0SDc0XCIgLz48L3N2Zz4nLCAnc3ZnLWZsYWdzJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGFkZFN2Z0ljb25Gcm9tVGV4dChcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICBpY29uVGV4dDogc3RyaW5nLFxuICAgICAgICBmYW1pbHkgPSBcIlwiLFxuICAgICAgICBzdHJpcE1ldGEgPSBmYWxzZSxcbiAgICApIHtcbiAgICAgICAgaWYgKG5hbWUgJiYgaWNvblRleHQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU3ZnSWNvbkNhY2hlZChuYW1lLCBmYW1pbHkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLl9mYW1pbGllcy5zZXQoZmFtaWx5LCB7IGNsYXNzTmFtZTogZmFtaWx5LCB0eXBlOiBcInN2Z1wiIH0pO1xuICAgICAgICAgICAgdGhpcy5jYWNoZVN2Z0ljb24obmFtZSwgaWNvblRleHQsIGZhbWlseSwgc3RyaXBNZXRhKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICBcIllvdSBzaG91bGQgcHJvdmlkZSBhdCBsZWFzdCBgbmFtZWAgYW5kIGBpY29uVGV4dGAgdG8gcmVnaXN0ZXIgYW4gc3ZnIGljb24uXCIsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIFJldHVybnMgd2hldGhlciBhIGdpdmVuIFNWRyBpbWFnZSBpcyBwcmVzZW50IGluIHRoZSBjYWNoZS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICBjb25zdCBpc1N2Z0NhY2hlZCA9IHRoaXMuaWNvblNlcnZpY2UuaXNTdmdJY29uQ2FjaGVkKCdhcnViYScsICdzdmctZmxhZ3MnKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgaXNTdmdJY29uQ2FjaGVkKG5hbWU6IHN0cmluZywgZmFtaWx5ID0gXCJcIik6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBmYW1pbHlDbGFzc05hbWUgPSB0aGlzLmZhbWlseUNsYXNzTmFtZShmYW1pbHkpO1xuICAgICAgICBpZiAodGhpcy5fY2FjaGVkSWNvbnMuaGFzKGZhbWlseUNsYXNzTmFtZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZhbWlseVJlZ2lzdHJ5ID0gdGhpcy5fY2FjaGVkSWNvbnMuZ2V0KFxuICAgICAgICAgICAgICAgIGZhbWlseUNsYXNzTmFtZSxcbiAgICAgICAgICAgICkgYXMgTWFwPHN0cmluZywgU2FmZUh0bWw+O1xuICAgICAgICAgICAgcmV0dXJuIGZhbWlseVJlZ2lzdHJ5LmhhcyhuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgUmV0dXJucyB0aGUgY2FjaGVkIFNWRyBpbWFnZSBhcyBzdHJpbmcuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAgY29uc3Qgc3ZnSWNvbiA9IHRoaXMuaWNvblNlcnZpY2UuZ2V0U3ZnSWNvbignYXJ1YmEnLCAnc3ZnLWZsYWdzJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldFN2Z0ljb24obmFtZTogc3RyaW5nLCBmYW1pbHkgPSBcIlwiKSB7XG4gICAgICAgIGNvbnN0IGZhbWlseUNsYXNzTmFtZSA9IHRoaXMuZmFtaWx5Q2xhc3NOYW1lKGZhbWlseSk7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYWNoZWRJY29ucy5nZXQoZmFtaWx5Q2xhc3NOYW1lKT8uZ2V0KG5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIGZldGNoU3ZnKHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcmVxID0gdGhpcy5faHR0cENsaWVudC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogXCJ0ZXh0XCIgfSk7XG4gICAgICAgIHJldHVybiByZXE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgY2FjaGVTdmdJY29uKFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgICAgIGZhbWlseSA9IHRoaXMuX2RlZmF1bHRGYW1pbHkubmFtZSxcbiAgICAgICAgc3RyaXBNZXRhOiBib29sZWFuLFxuICAgICkge1xuICAgICAgICBmYW1pbHkgPSBmYW1pbHkgPyBmYW1pbHkgOiB0aGlzLl9kZWZhdWx0RmFtaWx5Lm5hbWU7XG5cbiAgICAgICAgaWYgKHRoaXMuX3BsYXRmb3JtVXRpbD8uaXNCcm93c2VyICYmIG5hbWUgJiYgdmFsdWUpIHtcbiAgICAgICAgICAgIGNvbnN0IGRvYyA9IHRoaXMuX2RvbVBhcnNlci5wYXJzZUZyb21TdHJpbmcodmFsdWUsIFwiaW1hZ2Uvc3ZnK3htbFwiKTtcbiAgICAgICAgICAgIGNvbnN0IHN2ZyA9IGRvYy5xdWVyeVNlbGVjdG9yKFwic3ZnXCIpIGFzIFNWR0VsZW1lbnQ7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5fY2FjaGVkSWNvbnMuaGFzKGZhbWlseSkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZWRJY29ucy5zZXQoZmFtaWx5LCBuZXcgTWFwPHN0cmluZywgU2FmZUh0bWw+KCkpO1xuICAgICAgICAgICAgICAgIHRoaXMuX2ljb25Mb2FkZWQubmV4dCh7IG5hbWUsIHZhbHVlLCBmYW1pbHkgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdmcpIHtcbiAgICAgICAgICAgICAgICBzdmcuc2V0QXR0cmlidXRlKFwiZml0XCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgIHN2Zy5zZXRBdHRyaWJ1dGUoXCJwcmVzZXJ2ZUFzcGVjdFJhdGlvXCIsIFwieE1pZFlNaWQgbWVldFwiKTtcblxuICAgICAgICAgICAgICAgIGlmIChzdHJpcE1ldGEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSBzdmcucXVlcnlTZWxlY3RvcihcInRpdGxlXCIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXNjID0gc3ZnLnF1ZXJ5U2VsZWN0b3IoXCJkZXNjXCIpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3ZnLnJlbW92ZUNoaWxkKHRpdGxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdmcucmVtb3ZlQ2hpbGQoZGVzYyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzYWZlU3ZnID0gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKFxuICAgICAgICAgICAgICAgICAgICBzdmcub3V0ZXJIVE1MLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVkSWNvbnMuZ2V0KGZhbWlseSkuc2V0KG5hbWUsIHNhZmVTdmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
289
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWNvbi5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2ljb24vaWNvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFOUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRTNDLE9BQU8sRUFBYyxPQUFPLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFBOzs7OztBQWtCbEQ7Ozs7Ozs7Ozs7O0dBV0c7QUFJSCxNQUFNLE9BQU8sY0FBYztJQXVCdkIsWUFDd0IsVUFBd0IsRUFDeEIsV0FBdUIsRUFDdkIsYUFBMkIsRUFDUCxRQUFrQjtRQUh0QyxlQUFVLEdBQVYsVUFBVSxDQUFjO1FBQ3hCLGdCQUFXLEdBQVgsV0FBVyxDQUFZO1FBQ3ZCLGtCQUFhLEdBQWIsYUFBYSxDQUFjO1FBQ1AsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQWZ0RCxtQkFBYyxHQUFlO1lBQ2pDLElBQUksRUFBRSxVQUFVO1lBQ2hCLElBQUksRUFBRSxFQUFFLFNBQVMsRUFBRSxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFO1NBQ3RELENBQUM7UUFDTSxjQUFTLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7UUFDckQsY0FBUyxHQUFHLElBQUksR0FBRyxFQUFzQixDQUFDO1FBQzFDLGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQWlDLENBQUM7UUFDeEQsZ0JBQVcsR0FBRyxJQUFJLE9BQU8sRUFBc0IsQ0FBQztRQVVwRCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRW5FLElBQUksSUFBSSxDQUFDLGFBQWEsRUFBRSxTQUFTLEVBQUUsQ0FBQztZQUNoQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7UUFDdEMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQVcsYUFBYTtRQUNwQixPQUFPLElBQUksQ0FBQyxjQUFjLENBQUM7SUFDL0IsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBVyxhQUFhLENBQUMsTUFBa0I7UUFDdkMsSUFBSSxDQUFDLGNBQWMsR0FBRyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxtQkFBbUIsQ0FDdEIsS0FBYSxFQUNiLFlBQW9CLEtBQUssRUFDekIsT0FBaUIsTUFBTTtRQUV2QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGVBQWUsQ0FBQyxLQUFhO1FBQ2hDLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsU0FBUyxJQUFJLEtBQUssQ0FBQztJQUN6RCxDQUFDO0lBRUQsd0JBQXdCO0lBQ2hCLFVBQVUsQ0FBQyxLQUFhO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUUsSUFBSSxDQUFDO0lBQzNDLENBQUM7SUFFRCx3QkFBd0I7SUFDakIsY0FBYyxDQUFDLEtBQWU7UUFDakMsSUFBSSxJQUFJLENBQUMsS0FBSyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1lBRW5CLEtBQUssTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsSUFBSSxjQUFjLEVBQUUsQ0FBQztnQkFDN0MsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBRSxDQUFDO2dCQUN6RCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztZQUNwRCxDQUFDO1FBQ0wsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxTQUFTLENBQUMsSUFBWSxFQUFFLElBQWdCO1FBQzNDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksVUFBVSxDQUFDLElBQVksRUFBRSxNQUFjLEVBQUUsSUFBYztRQUMxRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFdEQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ1gsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxVQUFVLENBQUMsSUFBWSxFQUFFLE1BQWMsRUFBRSxJQUFjO1FBQzFELElBQUksU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRTNDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNiLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBb0IsQ0FBQztZQUN4QyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2pELFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsR0FBRyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLElBQUksVUFBVSxFQUFFLENBQUMsQ0FBQztRQUVoRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFVBQVUsQ0FBQyxJQUFZLEVBQUUsTUFBYztRQUMxQyxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbkQsTUFBTSxVQUFVLEdBQUcsSUFBSSxFQUFFLE1BQU0sSUFBSSxNQUFNLENBQUM7UUFDMUMsTUFBTSxLQUFLLEdBQUcsSUFBSSxFQUFFLElBQUksSUFBSSxJQUFJLENBQUM7UUFDakMsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLENBQUM7UUFFdEQsdUJBQXVCO1FBQ3ZCLElBQUksUUFBUSxHQUFHLEtBQUssQ0FBQztRQUVyQixJQUFJLFFBQVEsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNyQixRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sR0FBRyxLQUFLLEVBQUUsQ0FBQztRQUNwRSxDQUFDO1FBRUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDMUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUV4RSxPQUFPO1lBQ0gsU0FBUztZQUNULElBQUk7WUFDSixJQUFJLEVBQUUsUUFBUTtZQUNkLE1BQU0sRUFBRSxVQUFVO1NBQ3JCLENBQUM7SUFDTixDQUFDO0lBRU8sb0JBQW9CLENBQUMsTUFBYztRQUN2QyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ25FLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFDRDs7Ozs7T0FLRztJQUNJLFVBQVUsQ0FDYixJQUFZLEVBQ1osR0FBVyxFQUNYLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFDakMsU0FBUyxHQUFHLEtBQUs7UUFFakIsSUFBSSxJQUFJLElBQUksR0FBRyxFQUFFLENBQUM7WUFDZCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLDhCQUE4QixDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBRXBFLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztnQkFDWCxNQUFNLElBQUksS0FBSyxDQUNYLCtGQUErRixHQUFHLElBQUksQ0FDekcsQ0FBQztZQUNOLENBQUM7WUFFRCxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FDekMsZUFBZSxDQUFDLFlBQVksRUFDNUIsT0FBTyxDQUNWLENBQUM7WUFFRixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQ1gsd0RBQXdELEdBQUcsSUFBSSxDQUNsRSxDQUFDO1lBQ04sQ0FBQztZQUVELElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUN0QyxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7Z0JBRWxDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7b0JBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7Z0JBQ3BELENBQUMsQ0FBQyxDQUFDO1lBQ1AsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ0osTUFBTSxJQUFJLEtBQUssQ0FDWCx1RUFBdUUsQ0FDMUUsQ0FBQztRQUNOLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0ksa0JBQWtCLENBQ3JCLElBQVksRUFDWixRQUFnQixFQUNoQixNQUFNLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQ2pDLFNBQVMsR0FBRyxLQUFLO1FBRWpCLElBQUksSUFBSSxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ25CLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztnQkFDckMsT0FBTztZQUNYLENBQUM7WUFFRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN6RCxDQUFDO2FBQU0sQ0FBQztZQUNKLE1BQU0sSUFBSSxLQUFLLENBQ1gsNEVBQTRFLENBQy9FLENBQUM7UUFDTixDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksZUFBZSxDQUFDLElBQVksRUFBRSxNQUFjO1FBQy9DLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUNoQyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FDeEMsTUFBTSxDQUNnQixDQUFDO1lBRTNCLE9BQU8sY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxDQUFDO1FBRUQsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksVUFBVSxDQUFDLElBQVksRUFBRSxNQUFjO1FBQzFDLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3BELENBQUM7SUFFRDs7T0FFRztJQUNLLFFBQVEsQ0FBQyxHQUFXO1FBQ3hCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ2hFLE9BQU8sR0FBRyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0ssWUFBWSxDQUNoQixJQUFZLEVBQ1osS0FBYSxFQUNiLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLElBQUksRUFDakMsU0FBa0I7UUFFbEIsSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLFNBQVMsSUFBSSxJQUFJLElBQUksS0FBSyxFQUFFLENBQUM7WUFDakQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQ3BFLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFlLENBQUM7WUFFbkQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7Z0JBQ2pDLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLEdBQUcsRUFBb0IsQ0FBQyxDQUFDO1lBQy9ELENBQUM7WUFFRCxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUNOLEdBQUcsQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2dCQUM1QixHQUFHLENBQUMsWUFBWSxDQUFDLHFCQUFxQixFQUFFLGVBQWUsQ0FBQyxDQUFDO2dCQUV6RCxJQUFJLFNBQVMsRUFBRSxDQUFDO29CQUNaLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUM7b0JBQ3pDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBRXZDLElBQUksS0FBSyxFQUFFLENBQUM7d0JBQ1IsR0FBRyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDM0IsQ0FBQztvQkFFRCxJQUFJLElBQUksRUFBRSxDQUFDO3dCQUNQLEdBQUcsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7b0JBQzFCLENBQUM7Z0JBQ0wsQ0FBQztnQkFFRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLHVCQUF1QixDQUNuRCxHQUFHLENBQUMsU0FBUyxDQUNoQixDQUFDO2dCQUVGLElBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7Z0JBQ2pELElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELENBQUM7UUFDTCxDQUFDO0lBQ0wsQ0FBQzs4R0FqVlEsY0FBYyxvSkEyQkMsUUFBUTtrSEEzQnZCLGNBQWMsY0FGWCxNQUFNOzsyRkFFVCxjQUFjO2tCQUgxQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQjs7MEJBeUJRLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUNSLFFBQVE7OzBCQUFJLE1BQU07MkJBQUMsUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIFNlY3VyaXR5Q29udGV4dCwgSW5qZWN0LCBPcHRpb25hbCB9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XG5pbXBvcnQgeyBEb21TYW5pdGl6ZXIsIFNhZmVIdG1sIH0gZnJvbSBcIkBhbmd1bGFyL3BsYXRmb3JtLWJyb3dzZXJcIjtcbmltcG9ydCB7IERPQ1VNRU5UIH0gZnJvbSBcIkBhbmd1bGFyL2NvbW1vblwiO1xuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gXCJAYW5ndWxhci9jb21tb24vaHR0cFwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSwgU3ViamVjdCB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBQbGF0Zm9ybVV0aWwgfSBmcm9tIFwiLi4vY29yZS91dGlsc1wiO1xuaW1wb3J0IHsgaWNvblJlZmVyZW5jZXMgfSBmcm9tICcuL2ljb24ucmVmZXJlbmNlcydcbmltcG9ydCB7IEljb25GYW1pbHksIEljb25NZXRhLCBGYW1pbHlNZXRhIH0gZnJvbSBcIi4vdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgSWNvblR5cGUsIEljb25SZWZlcmVuY2UgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IElneFRoZW1lIH0gZnJvbSBcIi4uL3NlcnZpY2VzL3RoZW1lL3RoZW1lLnNlcnZpY2VcIjtcblxuLyoqXG4gKiBFdmVudCBlbWl0dGVkIHdoZW4gYSBTVkcgaWNvbiBpcyBsb2FkZWQgdGhyb3VnaFxuICogYSBIVFRQIHJlcXVlc3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSWd4SWNvbkxvYWRlZEV2ZW50IHtcbiAgICAvKiogTmFtZSBvZiB0aGUgaWNvbiAqL1xuICAgIG5hbWU6IHN0cmluZztcbiAgICAvKiogVGhlIGFjdHVhbCBTVkcgdGV4dCwgaWYgYW55ICovXG4gICAgdmFsdWU/OiBzdHJpbmc7XG4gICAgLyoqIFRoZSBmb250LWZhbWlseSBmb3IgdGhlIGljb24uIERlZmF1bHRzIHRvIG1hdGVyaWFsLiAqL1xuICAgIGZhbWlseTogc3RyaW5nO1xufVxuXG4vKipcbiAqICoqSWduaXRlIFVJIGZvciBBbmd1bGFyIEljb24gU2VydmljZSoqIC1cbiAqXG4gKiBUaGUgSWduaXRlIFVJIEljb24gU2VydmljZSBtYWtlcyBpdCBlYXN5IGZvciBkZXZlbG9wZXJzIHRvIGluY2x1ZGUgY3VzdG9tIFNWRyBpbWFnZXMgYW5kIHVzZSB0aGVtIHdpdGggSWd4SWNvbkNvbXBvbmVudC5cbiAqIEluIGFkZGl0aW9uIGl0IGNvdWxkIGJlIHVzZWQgdG8gYXNzb2NpYXRlIGEgY3VzdG9tIGNsYXNzIHRvIGJlIGFwcGxpZWQgb24gSWd4SWNvbkNvbXBvbmVudCBhY2NvcmRpbmcgdG8gZ2l2ZW4gZm9udC1mYW1pbHkuXG4gKlxuICogRXhhbXBsZTpcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHRoaXMuaWNvblNlcnZpY2Uuc2V0RmFtaWx5KCdtYXRlcmlhbCcsIHsgY2xhc3NOYW1lOiAnbWF0ZXJpYWwtaWNvbnMnLCB0eXBlOiAnZm9udCcgfSk7XG4gKiB0aGlzLmljb25TZXJ2aWNlLmFkZFN2Z0ljb24oJ2FydWJhJywgJy9hc3NldHMvc3ZnL2NvdW50cnlfZmxhZ3MvYXJ1YmEuc3ZnJywgJ3N2Zy1mbGFncycpO1xuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHtcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIixcbn0pXG5leHBvcnQgY2xhc3MgSWd4SWNvblNlcnZpY2Uge1xuICAgIC8qKlxuICAgICAqIE9ic2VydmFibGUgdGhhdCBlbWl0cyB3aGVuIGFuIGljb24gaXMgc3VjY2Vzc2Z1bGx5IGxvYWRlZFxuICAgICAqIHRocm91Z2ggYSBIVFRQIHJlcXVlc3QuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiB0aGlzLnNlcnZpY2UuaWNvbkxvYWRlZC5zdWJzY3JpYmUoKGV2OiBJZ3hJY29uTG9hZGVkRXZlbnQpID0+IC4uLik7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGljb25Mb2FkZWQ6IE9ic2VydmFibGU8SWd4SWNvbkxvYWRlZEV2ZW50PjtcblxuICAgIHByaXZhdGUgX2RlZmF1bHRGYW1pbHk6IEljb25GYW1pbHkgPSB7XG4gICAgICAgIG5hbWU6IFwibWF0ZXJpYWxcIixcbiAgICAgICAgbWV0YTogeyBjbGFzc05hbWU6IFwibWF0ZXJpYWwtaWNvbnNcIiwgdHlwZTogXCJsaWdhXCIgfSxcbiAgICB9O1xuICAgIHByaXZhdGUgX2ljb25SZWZzID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIEljb25NZXRhPj4oKTtcbiAgICBwcml2YXRlIF9mYW1pbGllcyA9IG5ldyBNYXA8c3RyaW5nLCBGYW1pbHlNZXRhPigpO1xuICAgIHByaXZhdGUgX2NhY2hlZEljb25zID0gbmV3IE1hcDxzdHJpbmcsIE1hcDxzdHJpbmcsIFNhZmVIdG1sPj4oKTtcbiAgICBwcml2YXRlIF9pY29uTG9hZGVkID0gbmV3IFN1YmplY3Q8SWd4SWNvbkxvYWRlZEV2ZW50PigpO1xuICAgIHByaXZhdGUgX2RvbVBhcnNlcjogRE9NUGFyc2VyO1xuICAgIHByaXZhdGUgdGhlbWUhOiBJZ3hUaGVtZTtcblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBAT3B0aW9uYWwoKSBwcml2YXRlIF9zYW5pdGl6ZXI6IERvbVNhbml0aXplcixcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfaHR0cENsaWVudDogSHR0cENsaWVudCxcbiAgICAgICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBfcGxhdGZvcm1VdGlsOiBQbGF0Zm9ybVV0aWwsXG4gICAgICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRE9DVU1FTlQpIHByb3RlY3RlZCBkb2N1bWVudDogRG9jdW1lbnQsXG4gICAgKSB7XG4gICAgICAgIHRoaXMuaWNvbkxvYWRlZCA9IHRoaXMuX2ljb25Mb2FkZWQuYXNPYnNlcnZhYmxlKCk7XG4gICAgICAgIHRoaXMuc2V0RmFtaWx5KHRoaXMuX2RlZmF1bHRGYW1pbHkubmFtZSwgdGhpcy5fZGVmYXVsdEZhbWlseS5tZXRhKTtcblxuICAgICAgICBpZiAodGhpcy5fcGxhdGZvcm1VdGlsPy5pc0Jyb3dzZXIpIHtcbiAgICAgICAgICAgIHRoaXMuX2RvbVBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBSZXR1cm5zIHRoZSBkZWZhdWx0IGZvbnQtZmFtaWx5LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIGNvbnN0IGRlZmF1bHRGYW1pbHkgPSB0aGlzLmljb25TZXJ2aWNlLmRlZmF1bHRGYW1pbHk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBkZWZhdWx0RmFtaWx5KCk6IEljb25GYW1pbHkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmYXVsdEZhbWlseTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgU2V0cyB0aGUgZGVmYXVsdCBmb250LWZhbWlseS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICB0aGlzLmljb25TZXJ2aWNlLmRlZmF1bHRGYW1pbHkgPSAnc3ZnLWZsYWdzJztcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgc2V0IGRlZmF1bHRGYW1pbHkoZmFtaWx5OiBJY29uRmFtaWx5KSB7XG4gICAgICAgIHRoaXMuX2RlZmF1bHRGYW1pbHkgPSBmYW1pbHk7XG4gICAgICAgIHRoaXMuc2V0RmFtaWx5KHRoaXMuX2RlZmF1bHRGYW1pbHkubmFtZSwgdGhpcy5fZGVmYXVsdEZhbWlseS5tZXRhKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgUmVnaXN0ZXJzIGEgY3VzdG9tIGNsYXNzIHRvIGJlIGFwcGxpZWQgdG8gSWd4SWNvbkNvbXBvbmVudCBmb3IgYSBnaXZlbiBmb250LWZhbWlseS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICB0aGlzLmljb25TZXJ2aWNlLnJlZ2lzdGVyRmFtaWx5QWxpYXMoJ21hdGVyaWFsJywgJ21hdGVyaWFsLWljb25zJyk7XG4gICAgICogYGBgXG4gICAgICogQGRlcHJlY2F0ZWQgaW4gdmVyc2lvbiAxOC4xLjAuIFVzZSBgc2V0RmFtaWx5YCBpbnN0ZWFkLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWdpc3RlckZhbWlseUFsaWFzKFxuICAgICAgICBhbGlhczogc3RyaW5nLFxuICAgICAgICBjbGFzc05hbWU6IHN0cmluZyA9IGFsaWFzLFxuICAgICAgICB0eXBlOiBJY29uVHlwZSA9IFwiZm9udFwiLFxuICAgICk6IHRoaXMge1xuICAgICAgICB0aGlzLnNldEZhbWlseShhbGlhcywgeyBjbGFzc05hbWUsIHR5cGUgfSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBSZXR1cm5zIHRoZSBjdXN0b20gY2xhc3MsIGlmIGFueSwgYXNzb2NpYXRlZCB0byBhIGdpdmVuIGZvbnQtZmFtaWx5LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIGNvbnN0IGZhbWlseUNsYXNzID0gdGhpcy5pY29uU2VydmljZS5mYW1pbHlDbGFzc05hbWUoJ21hdGVyaWFsJyk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGZhbWlseUNsYXNzTmFtZShhbGlhczogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZhbWlsaWVzLmdldChhbGlhcyk/LmNsYXNzTmFtZSB8fCBhbGlhcztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwcml2YXRlIGZhbWlseVR5cGUoYWxpYXM6IHN0cmluZyk6IEljb25UeXBlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZhbWlsaWVzLmdldChhbGlhcyk/LnR5cGU7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIHNldFJlZnNCeVRoZW1lKHRoZW1lOiBJZ3hUaGVtZSkge1xuICAgICAgICBpZiAodGhpcy50aGVtZSAhPT0gdGhlbWUpIHtcbiAgICAgICAgICAgIHRoaXMudGhlbWUgPSB0aGVtZTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCB7IGFsaWFzLCB0YXJnZXQgfSBvZiBpY29uUmVmZXJlbmNlcykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGljb24gPSB0YXJnZXQuZ2V0KHRoZW1lKSA/PyB0YXJnZXQuZ2V0KCdkZWZhdWx0JykhO1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkSWNvblJlZihhbGlhcy5uYW1lLCBhbGlhcy5mYW1pbHksIGljb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIENyZWF0ZXMgYSBmYW1pbHkgdG8gY2xhc3NOYW1lIHJlbGF0aW9uc2hpcCB0aGF0IGlzIGFwcGxpZWQgdG8gdGhlIElneEljb25Db21wb25lbnRcbiAgICAgKiAgIHdoZW5ldmVyIHRoYXQgZmFtaWx5IG5hbWUgaXMgdXNlZC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICB0aGlzLmljb25TZXJ2aWNlLnNldEZhbWlseSgnbWF0ZXJpYWwnLCB7IGNsYXNzTmFtZTogJ21hdGVyaWFsLWljb25zJywgdHlwZTogJ2xpZ2EnIH0pO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBzZXRGYW1pbHkobmFtZTogc3RyaW5nLCBtZXRhOiBGYW1pbHlNZXRhKSB7XG4gICAgICAgIHRoaXMuX2ZhbWlsaWVzLnNldChuYW1lLCBtZXRhKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgQWRkcyBhbiBpY29uIHJlZmVyZW5jZSBtZXRhIGZvciBhbiBpY29uIGluIGEgbWV0YSBmYW1pbHkuXG4gICAgICogIEV4ZWN1dGVzIG9ubHkgaWYgbm8gaWNvbiByZWZlcmVuY2UgaXMgZm91bmQuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAgdGhpcy5pY29uU2VydmljZS5hZGRJY29uUmVmKCdhcnViYScsICdkZWZhdWx0JywgeyBuYW1lOiAnYXJ1YmEnLCBmYW1pbHk6ICdzdmctZmxhZ3MnIH0pO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRJY29uUmVmKG5hbWU6IHN0cmluZywgZmFtaWx5OiBzdHJpbmcsIGljb246IEljb25NZXRhKSB7XG4gICAgICAgIGNvbnN0IGljb25SZWYgPSB0aGlzLl9pY29uUmVmcy5nZXQoZmFtaWx5KT8uZ2V0KG5hbWUpO1xuXG4gICAgICAgIGlmICghaWNvblJlZikge1xuICAgICAgICAgICAgdGhpcy5zZXRJY29uUmVmKG5hbWUsIGZhbWlseSwgaWNvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgU2ltaWxhciB0byBhZGRJY29uUmVmLCBidXQgYWx3YXlzIHNldHMgdGhlIGljb24gcmVmZXJlbmNlIG1ldGEgZm9yIGFuIGljb24gaW4gYSBtZXRhIGZhbWlseS5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICB0aGlzLmljb25TZXJ2aWNlLnNldEljb25SZWYoJ2FydWJhJywgJ2RlZmF1bHQnLCB7IG5hbWU6ICdhcnViYScsIGZhbWlseTogJ3N2Zy1mbGFncycgfSk7XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIHNldEljb25SZWYobmFtZTogc3RyaW5nLCBmYW1pbHk6IHN0cmluZywgaWNvbjogSWNvbk1ldGEpIHtcbiAgICAgICAgbGV0IGZhbWlseVJlZiA9IHRoaXMuX2ljb25SZWZzLmdldChmYW1pbHkpO1xuXG4gICAgICAgIGlmICghZmFtaWx5UmVmKSB7XG4gICAgICAgICAgICBmYW1pbHlSZWYgPSBuZXcgTWFwPHN0cmluZywgSWNvbk1ldGE+KCk7XG4gICAgICAgICAgICB0aGlzLl9pY29uUmVmcy5zZXQoZmFtaWx5LCBmYW1pbHlSZWYpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmFtaWx5VHlwZSA9IHRoaXMuZmFtaWx5VHlwZShpY29uPy5mYW1pbHkpO1xuICAgICAgICBmYW1pbHlSZWYuc2V0KG5hbWUsIHsgLi4uaWNvbiwgdHlwZTogaWNvbi50eXBlID8/IGZhbWlseVR5cGUgfSk7XG5cbiAgICAgICAgdGhpcy5faWNvbkxvYWRlZC5uZXh0KHsgbmFtZSwgZmFtaWx5IH0pO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBSZXR1cm5zIHRoZSBpY29uIHJlZmVyZW5jZSBtZXRhIGZvciBhbiBpY29uIGluIGEgZ2l2ZW4gZmFtaWx5LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIGNvbnN0IGljb25SZWYgPSB0aGlzLmljb25TZXJ2aWNlLmdldEljb25SZWYoJ2FydWJhJywgJ2RlZmF1bHQnKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0SWNvblJlZihuYW1lOiBzdHJpbmcsIGZhbWlseTogc3RyaW5nKTogSWNvblJlZmVyZW5jZSB7XG4gICAgICAgIGNvbnN0IGljb24gPSB0aGlzLl9pY29uUmVmcy5nZXQoZmFtaWx5KT8uZ2V0KG5hbWUpO1xuXG4gICAgICAgIGNvbnN0IGljb25GYW1pbHkgPSBpY29uPy5mYW1pbHkgPz8gZmFtaWx5O1xuICAgICAgICBjb25zdCBfbmFtZSA9IGljb24/Lm5hbWUgPz8gbmFtZTtcbiAgICAgICAgY29uc3QgY2xhc3NOYW1lID0gdGhpcy5mYW1pbHlDbGFzc05hbWUoaWNvbkZhbWlseSk7XG4gICAgICAgIGNvbnN0IHByZWZpeCA9IHRoaXMuX2ZhbWlsaWVzLmdldChpY29uRmFtaWx5KT8ucHJlZml4O1xuXG4gICAgICAgIC8vIEhhbmRsZSBuYW1lIHByZWZpeGVzXG4gICAgICAgIGxldCBpY29uTmFtZSA9IF9uYW1lO1xuXG4gICAgICAgIGlmIChpY29uTmFtZSAmJiBwcmVmaXgpIHtcbiAgICAgICAgICAgIGljb25OYW1lID0gX25hbWUuaW5jbHVkZXMocHJlZml4KSA/IF9uYW1lIDogYCR7cHJlZml4fSR7X25hbWV9YDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNhY2hlZCA9IHRoaXMuaXNTdmdJY29uQ2FjaGVkKGljb25OYW1lLCBpY29uRmFtaWx5KTtcbiAgICAgICAgY29uc3QgdHlwZSA9IGNhY2hlZCA/IFwic3ZnXCIgOiBpY29uPy50eXBlID8/IHRoaXMuZmFtaWx5VHlwZShpY29uRmFtaWx5KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgY2xhc3NOYW1lLFxuICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgIG5hbWU6IGljb25OYW1lLFxuICAgICAgICAgICAgZmFtaWx5OiBpY29uRmFtaWx5LFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0T3JDcmVhdGVTdmdGYW1pbHkoZmFtaWx5OiBzdHJpbmcpIHtcbiAgICAgICAgaWYgKCF0aGlzLl9mYW1pbGllcy5oYXMoZmFtaWx5KSkge1xuICAgICAgICAgICAgdGhpcy5fZmFtaWxpZXMuc2V0KGZhbWlseSwgeyBjbGFzc05hbWU6IGZhbWlseSwgdHlwZTogXCJzdmdcIiB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLl9mYW1pbGllcy5nZXQoZmFtaWx5KTtcbiAgICB9XG4gICAgLyoqXG4gICAgICogIEFkZHMgYW4gU1ZHIGltYWdlIHRvIHRoZSBjYWNoZS4gU1ZHIHNvdXJjZSBpcyBhbiB1cmwuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqICAgdGhpcy5pY29uU2VydmljZS5hZGRTdmdJY29uKCdhcnViYScsICcvYXNzZXRzL3N2Zy9jb3VudHJ5X2ZsYWdzL2FydWJhLnN2ZycsICdzdmctZmxhZ3MnKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgYWRkU3ZnSWNvbihcbiAgICAgICAgbmFtZTogc3RyaW5nLFxuICAgICAgICB1cmw6IHN0cmluZyxcbiAgICAgICAgZmFtaWx5ID0gdGhpcy5fZGVmYXVsdEZhbWlseS5uYW1lLFxuICAgICAgICBzdHJpcE1ldGEgPSBmYWxzZSxcbiAgICApIHtcbiAgICAgICAgaWYgKG5hbWUgJiYgdXJsKSB7XG4gICAgICAgICAgICBjb25zdCBzYWZlVXJsID0gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RSZXNvdXJjZVVybCh1cmwpO1xuXG4gICAgICAgICAgICBpZiAoIXNhZmVVcmwpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICAgIGBUaGUgcHJvdmlkZWQgVVJMIGNvdWxkIG5vdCBiZSBwcm9jZXNzZWQgYXMgdHJ1c3RlZCByZXNvdXJjZSBVUkwgYnkgQW5ndWxhcidzIERvbVNhbml0aXplcjogXCIke3VybH1cIi5gLFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHNhbml0aXplZFVybCA9IHRoaXMuX3Nhbml0aXplci5zYW5pdGl6ZShcbiAgICAgICAgICAgICAgICBTZWN1cml0eUNvbnRleHQuUkVTT1VSQ0VfVVJMLFxuICAgICAgICAgICAgICAgIHNhZmVVcmwsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoIXNhbml0aXplZFVybCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgICAgICAgYFRoZSBVUkwgcHJvdmlkZWQgd2FzIG5vdCB0cnVzdGVkIGFzIGEgcmVzb3VyY2UgVVJMOiBcIiR7dXJsfVwiLmAsXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzU3ZnSWNvbkNhY2hlZChuYW1lLCBmYW1pbHkpKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRPckNyZWF0ZVN2Z0ZhbWlseShmYW1pbHkpO1xuXG4gICAgICAgICAgICAgICAgdGhpcy5mZXRjaFN2Zyh1cmwpLnN1YnNjcmliZSgocmVzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FjaGVTdmdJY29uKG5hbWUsIHJlcywgZmFtaWx5LCBzdHJpcE1ldGEpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIFwiWW91IHNob3VsZCBwcm92aWRlIGF0IGxlYXN0IGBuYW1lYCBhbmQgYHVybGAgdG8gcmVnaXN0ZXIgYW4gc3ZnIGljb24uXCIsXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogIEFkZHMgYW4gU1ZHIGltYWdlIHRvIHRoZSBjYWNoZS4gU1ZHIHNvdXJjZSBpcyBpdHMgdGV4dC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICB0aGlzLmljb25TZXJ2aWNlLmFkZFN2Z0ljb25Gcm9tVGV4dCgnc2ltcGxlJywgJzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHZpZXdCb3g9XCIwIDAgMjAwIDIwMFwiPlxuICAgICAqICAgPHBhdGggZD1cIk03NCA3NGg1NHY1NEg3NFwiIC8+PC9zdmc+JywgJ3N2Zy1mbGFncycpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRTdmdJY29uRnJvbVRleHQoXG4gICAgICAgIG5hbWU6IHN0cmluZyxcbiAgICAgICAgaWNvblRleHQ6IHN0cmluZyxcbiAgICAgICAgZmFtaWx5ID0gdGhpcy5fZGVmYXVsdEZhbWlseS5uYW1lLFxuICAgICAgICBzdHJpcE1ldGEgPSBmYWxzZSxcbiAgICApIHtcbiAgICAgICAgaWYgKG5hbWUgJiYgaWNvblRleHQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU3ZnSWNvbkNhY2hlZChuYW1lLCBmYW1pbHkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLmdldE9yQ3JlYXRlU3ZnRmFtaWx5KGZhbWlseSk7XG4gICAgICAgICAgICB0aGlzLmNhY2hlU3ZnSWNvbihuYW1lLCBpY29uVGV4dCwgZmFtaWx5LCBzdHJpcE1ldGEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgICAgIFwiWW91IHNob3VsZCBwcm92aWRlIGF0IGxlYXN0IGBuYW1lYCBhbmQgYGljb25UZXh0YCB0byByZWdpc3RlciBhbiBzdmcgaWNvbi5cIixcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiAgUmV0dXJucyB3aGV0aGVyIGEgZ2l2ZW4gU1ZHIGltYWdlIGlzIHByZXNlbnQgaW4gdGhlIGNhY2hlLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgIGNvbnN0IGlzU3ZnQ2FjaGVkID0gdGhpcy5pY29uU2VydmljZS5pc1N2Z0ljb25DYWNoZWQoJ2FydWJhJywgJ3N2Zy1mbGFncycpO1xuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBpc1N2Z0ljb25DYWNoZWQobmFtZTogc3RyaW5nLCBmYW1pbHk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAodGhpcy5fY2FjaGVkSWNvbnMuaGFzKGZhbWlseSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGZhbWlseVJlZ2lzdHJ5ID0gdGhpcy5fY2FjaGVkSWNvbnMuZ2V0KFxuICAgICAgICAgICAgICAgIGZhbWlseSxcbiAgICAgICAgICAgICkgYXMgTWFwPHN0cmluZywgU2FmZUh0bWw+O1xuXG4gICAgICAgICAgICByZXR1cm4gZmFtaWx5UmVnaXN0cnkuaGFzKG5hbWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqICBSZXR1cm5zIHRoZSBjYWNoZWQgU1ZHIGltYWdlIGFzIHN0cmluZy5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogICBjb25zdCBzdmdJY29uID0gdGhpcy5pY29uU2VydmljZS5nZXRTdmdJY29uKCdhcnViYScsICdzdmctZmxhZ3MnKTtcbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0U3ZnSWNvbihuYW1lOiBzdHJpbmcsIGZhbWlseTogc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jYWNoZWRJY29ucy5nZXQoZmFtaWx5KT8uZ2V0KG5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEBoaWRkZW5cbiAgICAgKi9cbiAgICBwcml2YXRlIGZldGNoU3ZnKHVybDogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcmVxID0gdGhpcy5faHR0cENsaWVudC5nZXQodXJsLCB7IHJlc3BvbnNlVHlwZTogXCJ0ZXh0XCIgfSk7XG4gICAgICAgIHJldHVybiByZXE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogQGhpZGRlblxuICAgICAqL1xuICAgIHByaXZhdGUgY2FjaGVTdmdJY29uKFxuICAgICAgICBuYW1lOiBzdHJpbmcsXG4gICAgICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgICAgIGZhbWlseSA9IHRoaXMuX2RlZmF1bHRGYW1pbHkubmFtZSxcbiAgICAgICAgc3RyaXBNZXRhOiBib29sZWFuLFxuICAgICkge1xuICAgICAgICBpZiAodGhpcy5fcGxhdGZvcm1VdGlsPy5pc0Jyb3dzZXIgJiYgbmFtZSAmJiB2YWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgZG9jID0gdGhpcy5fZG9tUGFyc2VyLnBhcnNlRnJvbVN0cmluZyh2YWx1ZSwgXCJpbWFnZS9zdmcreG1sXCIpO1xuICAgICAgICAgICAgY29uc3Qgc3ZnID0gZG9jLnF1ZXJ5U2VsZWN0b3IoXCJzdmdcIikgYXMgU1ZHRWxlbWVudDtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLl9jYWNoZWRJY29ucy5oYXMoZmFtaWx5KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuX2NhY2hlZEljb25zLnNldChmYW1pbHksIG5ldyBNYXA8c3RyaW5nLCBTYWZlSHRtbD4oKSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzdmcpIHtcbiAgICAgICAgICAgICAgICBzdmcuc2V0QXR0cmlidXRlKFwiZml0XCIsIFwiXCIpO1xuICAgICAgICAgICAgICAgIHN2Zy5zZXRBdHRyaWJ1dGUoXCJwcmVzZXJ2ZUFzcGVjdFJhdGlvXCIsIFwieE1pZFlNaWQgbWVldFwiKTtcblxuICAgICAgICAgICAgICAgIGlmIChzdHJpcE1ldGEpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdGl0bGUgPSBzdmcucXVlcnlTZWxlY3RvcihcInRpdGxlXCIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBkZXNjID0gc3ZnLnF1ZXJ5U2VsZWN0b3IoXCJkZXNjXCIpO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aXRsZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgc3ZnLnJlbW92ZUNoaWxkKHRpdGxlKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIGlmIChkZXNjKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzdmcucmVtb3ZlQ2hpbGQoZGVzYyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb25zdCBzYWZlU3ZnID0gdGhpcy5fc2FuaXRpemVyLmJ5cGFzc1NlY3VyaXR5VHJ1c3RIdG1sKFxuICAgICAgICAgICAgICAgICAgICBzdmcub3V0ZXJIVE1MLFxuICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZWRJY29ucy5nZXQoZmFtaWx5KS5zZXQobmFtZSwgc2FmZVN2Zyk7XG4gICAgICAgICAgICAgICAgdGhpcy5faWNvbkxvYWRlZC5uZXh0KHsgbmFtZSwgdmFsdWUsIGZhbWlseSB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
@@ -329,14 +329,10 @@ export class IgxInputGroupComponent {
329
329
  }
330
330
  /** @hidden @internal */
331
331
  ngAfterViewChecked() {
332
- if (!this._theme) {
333
- const theme = this.theme ?? this.themeService.getComponentTheme(this.element);
334
- if (theme) {
335
- Promise.resolve().then(() => {
336
- this._theme$.next(theme);
337
- this.cdr.markForCheck();
338
- });
339
- }
332
+ const theme = this.themeService.getComponentTheme(this.element);
333
+ if (theme) {
334
+ this._theme$.next(theme);
335
+ this.cdr.markForCheck();
340
336
  }
341
337
  }
342
338
  /** @hidden @internal */
@@ -443,4 +439,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.5", ngImpor
443
439
  type: HostBinding,
444
440
  args: ['class.igx-input-group--search']
445
441
  }] } });
446
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2lucHV0LWdyb3VwL2lucHV0LWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNySCxPQUFPLEVBR0gsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBRWYsV0FBVyxFQUNYLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUUzQixRQUFRLEVBQWEsZ0JBQWdCLEVBQ3hDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBeUIsc0JBQXNCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUU3RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDaEIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUUzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQXFCLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFn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K0JGLEtBQUs7c0JBRGYsS0FBSztnQkF3Q0MsT0FBTztzQkFEYixZQUFZO3VCQUFDLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQztnQkFhMUIsYUFBYTtzQkFEbkIsWUFBWTt1QkFBQyxhQUFhLEVBQUUsQ0FBQyxRQUFRLENBQUM7Z0JBNEI1QixXQUFXO3NCQURyQixXQUFXO3VCQUFDLGlDQUFpQztnQkFZbkMsV0FBVztzQkFEckIsV0FBVzt1QkFBQyxpQ0FBaUM7Z0JBb0RuQyxTQUFTO3NCQURuQixXQUFXO3VCQUFDLDRCQUE0QjtnQkFpQjlCLFVBQVU7c0JBRHBCLFdBQVc7dUJBQUMsNkJBQTZCO2dCQXFCL0IsWUFBWTtzQkFEdEIsV0FBVzt1QkFBQywrQkFBK0I7Z0JBZ0JqQyxZQUFZO3NCQUR0QixXQUFXO3VCQUFDLCtCQUErQjtnQkFnQmpDLGVBQWU7c0JBRHpCLFdBQVc7dUJBQUMsa0NBQWtDO2dCQWdCcEMsWUFBWTtzQkFEdEIsV0FBVzt1QkFBQywrQkFBK0I7Z0JBZ0JqQyxZQUFZO3NCQUR0QixXQUFXO3VCQUFDLCtCQUErQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERPQ1VNRU5ULCBOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0LCBOZ0NsYXNzLCBOZ1N3aXRjaCwgTmdTd2l0Y2hDYXNlLCBOZ1N3aXRjaERlZmF1bHQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdDaGVja2VkLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgSG9zdEJpbmRpbmcsXG4gICAgSG9zdExpc3RlbmVyLCBJbmplY3QsIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPcHRpb25hbCwgUXVlcnlMaXN0LCBib29sZWFuQXR0cmlidXRlXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSUlucHV0UmVzb3VyY2VTdHJpbmdzLCBJbnB1dFJlc291cmNlU3RyaW5nc0VOIH0gZnJvbSAnLi4vY29yZS9pMThuL2lucHV0LXJlc291cmNlcyc7XG5pbXBvcnQgeyBQbGF0Zm9ybVV0aWwgfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IElneEJ1dHRvbkRpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvYnV0dG9uL2J1dHRvbi5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4SGludERpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvaGludC9oaW50LmRpcmVjdGl2ZSc7XG5pbXBvcnQge1xuICAgIElneElucHV0RGlyZWN0aXZlLFxuICAgIElneElucHV0U3RhdGVcbn0gZnJvbSAnLi4vZGlyZWN0aXZlcy9pbnB1dC9pbnB1dC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4UHJlZml4RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9wcmVmaXgvcHJlZml4LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hTdWZmaXhEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3N1ZmZpeC9zdWZmaXguZGlyZWN0aXZlJztcblxuaW1wb3J0IHsgSWd4SW5wdXRHcm91cEJhc2UgfSBmcm9tICcuL2lucHV0LWdyb3VwLmNvbW1vbic7XG5pbXBvcnQgeyBJZ3hJbnB1dEdyb3VwVHlwZSwgSUdYX0lOUFVUX0dST1VQX1RZUEUgfSBmcm9tICcuL2lucHV0R3JvdXBUeXBlJztcbmltcG9ydCB7IElneEljb25Db21wb25lbnQgfSBmcm9tICcuLi9pY29uL2ljb24uY29tcG9uZW50JztcbmltcG9ydCB7IGdldEN1cnJlbnRSZXNvdXJjZVN0cmluZ3MgfSBmcm9tICcuLi9jb3JlL2kxOG4vcmVzb3VyY2VzJztcbmltcG9ydCB7IElneFRoZW1lLCBUaGVtZVNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy90aGVtZS90aGVtZS5zZXJ2aWNlJztcbmltcG9ydCB7IFN1YmplY3QsIFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC1pbnB1dC1ncm91cCcsXG4gICAgdGVtcGxhdGVVcmw6ICdpbnB1dC1ncm91cC5jb21wb25lbnQuaHRtbCcsXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBJZ3hJbnB1dEdyb3VwQmFzZSwgdXNlRXhpc3Rpbmc6IElneElucHV0R3JvdXBDb21wb25lbnQgfV0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbTmdJZiwgTmdUZW1wbGF0ZU91dGxldCwgSWd4UHJlZml4RGlyZWN0aXZlLCBJZ3hCdXR0b25EaXJlY3RpdmUsIE5nQ2xhc3MsIElneFN1ZmZpeERpcmVjdGl2ZSwgSWd4SWNvbkNvbXBvbmVudCwgTmdTd2l0Y2gsIE5nU3dpdGNoQ2FzZSwgTmdTd2l0Y2hEZWZhdWx0XVxufSlcbmV4cG9ydCBjbGFzcyBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50IGltcGxlbWVudHMgSWd4SW5wdXRHcm91cEJhc2UsIEFmdGVyVmlld0NoZWNrZWQsIE9uRGVzdHJveSB7XG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgcmVzb3VyY2Ugc3RyaW5ncy5cbiAgICAgKiBCeSBkZWZhdWx0IGl0IHVzZXMgRU4gcmVzb3VyY2VzLlxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCByZXNvdXJjZVN0cmluZ3ModmFsdWU6IElJbnB1dFJlc291cmNlU3RyaW5ncykge1xuICAgICAgICB0aGlzLl9yZXNvdXJjZVN0cmluZ3MgPSBPYmplY3QuYXNzaWduKHt9LCB0aGlzLl9yZXNvdXJjZVN0cmluZ3MsIHZhbHVlKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSByZXNvdXJjZSBzdHJpbmdzLlxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgcmVzb3VyY2VTdHJpbmdzKCk6IElJbnB1dFJlc291cmNlU3RyaW5ncyB7XG4gICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZVN0cmluZ3M7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgdGhhdCBlbmFibGVzL2Rpc2FibGVzIHRoZSBhdXRvLWdlbmVyYXRlZCBjbGFzcyBvZiB0aGUgYElneElucHV0R3JvdXBDb21wb25lbnRgLlxuICAgICAqIEJ5IGRlZmF1bHQgYXBwbGllZCB0aGUgY2xhc3MgaXMgYXBwbGllZC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogIEBWaWV3Q2hpbGQoXCJNeUlucHV0R3JvdXBcIilcbiAgICAgKiAgcHVibGljIGlucHV0R3JvdXA6IElneElucHV0R3JvdXBDb21wb25lbnQ7XG4gICAgICogIG5nQWZ0ZXJWaWV3SW5pdCgpe1xuICAgICAqICB0aGlzLmlucHV0R3JvdXAuZGVmYXVsdENsYXNzID0gZmFsc2U7XG4gICAgICogYGBgXG4gICAgICogfVxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWlucHV0LWdyb3VwJylcbiAgICBwdWJsaWMgZGVmYXVsdENsYXNzID0gdHJ1ZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtaW5wdXQtZ3JvdXAtLXBsYWNlaG9sZGVyJylcbiAgICBwdWJsaWMgaGFzUGxhY2Vob2xkZXIgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtaW5wdXQtZ3JvdXAtLXJlcXVpcmVkJylcbiAgICBwdWJsaWMgaXNSZXF1aXJlZCA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1pbnB1dC1ncm91cC0tZm9jdXNlZCcpXG4gICAgcHVibGljIGlzRm9jdXNlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogQGhpZGRlbiBAaW50ZXJuYWxcbiAgICAgKiBXaGVuIHRydXRoeSwgZGlzYWJsZXMgdGhlIGBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50YC5cbiAgICAgKiBDb250cm9sbGVkIGJ5IHRoZSB1bmRlcmx5aW5nIGBJZ3hJbnB1dERpcmVjdGl2ZWAuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtaW5wdXQtZ3JvdXAgW2Rpc2FibGVkXT1cInRydWVcIj48L2lneC1pbnB1dC1ncm91cD5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1pbnB1dC1ncm91cC0tZGlzYWJsZWQnKVxuICAgIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gICAgLyoqXG4gICAgICogUHJldmVudHMgYXV0b21hdGljYWxseSBmb2N1c2luZyB0aGUgaW5wdXQgd2hlbiBjbGlja2luZyBvbiBvdGhlciBlbGVtZW50cyBpbiB0aGUgaW5wdXQgZ3JvdXAgKGUuZy4gcHJlZml4IG9yIHN1ZmZpeCkuXG4gICAgICpcbiAgICAgKiBAcmVtYXJrcyBBdXRvbWF0aWMgZm9jdXMgY2F1c2VzIHNvZnR3YXJlIGtleWJvYXJkIHRvIHNob3cgb24gbW9iaWxlIGRldmljZXMuXG4gICAgICpcbiAgICAgKiBAZXhhbXBsZVxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWlucHV0LWdyb3VwIFtzdXBwcmVzc0lucHV0QXV0b2ZvY3VzXT1cInRydWVcIj48L2lneC1pbnB1dC1ncm91cD5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoeyB0cmFuc2Zvcm06IGJvb2xlYW5BdHRyaWJ1dGUgfSlcbiAgICBwdWJsaWMgc3VwcHJlc3NJbnB1dEF1dG9mb2N1cyA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1pbnB1dC1ncm91cC0td2FybmluZycpXG4gICAgcHVibGljIGhhc1dhcm5pbmcgPSBmYWxzZTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihJZ3hIaW50RGlyZWN0aXZlLCB7IHJlYWQ6IElneEhpbnREaXJlY3RpdmUgfSlcbiAgICBwcm90ZWN0ZWQgaGludHM6IFF1ZXJ5TGlzdDxJZ3hIaW50RGlyZWN0aXZlPjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oSWd4UHJlZml4RGlyZWN0aXZlLCB7IHJlYWQ6IElneFByZWZpeERpcmVjdGl2ZSwgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgX3ByZWZpeGVzOiBRdWVyeUxpc3Q8SWd4UHJlZml4RGlyZWN0aXZlPjtcblxuICAgIEBDb250ZW50Q2hpbGRyZW4oSWd4U3VmZml4RGlyZWN0aXZlLCB7IHJlYWQ6IElneFN1ZmZpeERpcmVjdGl2ZSwgZGVzY2VuZGFudHM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgX3N1ZmZpeGVzOiBRdWVyeUxpc3Q8SWd4U3VmZml4RGlyZWN0aXZlPjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZChJZ3hJbnB1dERpcmVjdGl2ZSwgeyByZWFkOiBJZ3hJbnB1dERpcmVjdGl2ZSwgc3RhdGljOiB0cnVlIH0pXG4gICAgcHJvdGVjdGVkIGlucHV0OiBJZ3hJbnB1dERpcmVjdGl2ZTtcblxuICAgIHByaXZhdGUgX3R5cGU6IElneElucHV0R3JvdXBUeXBlID0gbnVsbDtcbiAgICBwcml2YXRlIF9maWxsZWQgPSBmYWxzZTtcbiAgICBwcml2YXRlIF90aGVtZTogSWd4VGhlbWU7XG4gICAgcHJpdmF0ZSBfdGhlbWUkID0gbmV3IFN1YmplY3Q8SWd4VGhlbWU+KCk7XG4gICAgcHJpdmF0ZSBfc3Vic2NyaXB0aW9uOiBTdWJzY3JpcHRpb247XG4gICAgcHJpdmF0ZSBfcmVzb3VyY2VTdHJpbmdzID0gZ2V0Q3VycmVudFJlc291cmNlU3RyaW5ncyhJbnB1dFJlc291cmNlU3RyaW5nc0VOKTtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtaW5wdXQtZ3JvdXAtLXZhbGlkJylcbiAgICBwdWJsaWMgZ2V0IHZhbGlkQ2xhc3MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0LnZhbGlkID09PSBJZ3hJbnB1dFN0YXRlLlZBTElEO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtaW5wdXQtZ3JvdXAtLWludmFsaWQnKVxuICAgIHB1YmxpYyBnZXQgaW52YWxpZENsYXNzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dC52YWxpZCA9PT0gSWd4SW5wdXRTdGF0ZS5JTlZBTElEO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtaW5wdXQtZ3JvdXAtLWZpbGxlZCcpXG4gICAgcHVibGljIGdldCBpc0ZpbGxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGxlZCB8fCAodGhpcy5pbnB1dCAmJiB0aGlzLmlucHV0LnZhbHVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWlucHV0LWdyb3VwLS10ZXh0YXJlYS1ncm91cCcpXG4gICAgcHVibGljIGdldCB0ZXh0QXJlYUNsYXNzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dC5pc1RleHRBcmVhO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFNldHMgaG93IHRoZSBpbnB1dCB3aWxsIGJlIHN0eWxlZC5cbiAgICAgKiBBbGxvd2VkIHZhbHVlcyBvZiB0eXBlIElneElucHV0R3JvdXBUeXBlLlxuICAgICAqIGBgYGh0bWxcbiAgICAgKiA8aWd4LWlucHV0LWdyb3VwIFt0eXBlXT1cIidzZWFyY2gnXCI+XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQElucHV0KCd0eXBlJylcbiAgICBwdWJsaWMgc2V0IHR5cGUodmFsdWU6IElneElucHV0R3JvdXBUeXBlKSB7XG4gICAgICAgIHRoaXMuX3R5cGUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB0eXBlIG9mIHRoZSBgSWd4SW5wdXRHcm91cENvbXBvbmVudGAuIEhvdyB0aGUgaW5wdXQgaXMgc3R5bGVkLlxuICAgICAqIFRoZSBkZWZhdWx0IGlzIGBsaW5lYC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogQFZpZXdDaGlsZChcIk15SW5wdXRHcm91cFwiKVxuICAgICAqIHB1YmxpYyBpbnB1dEdyb3VwOiBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50O1xuICAgICAqIG5nQWZ0ZXJWaWV3SW5pdCgpe1xuICAgICAqICAgIGxldCBpbnB1dFR5cGUgPSB0aGlzLmlucHV0R3JvdXAudHlwZTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCB0eXBlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdHlwZSB8fCB0aGlzLl9pbnB1dEdyb3VwVHlwZSB8fCAnbGluZSc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyB0aGUgdGhlbWUgb2YgdGhlIGlucHV0LlxuICAgICAqIEFsbG93ZWQgdmFsdWVzIG9mIHR5cGUgSWd4SW5wdXRHcm91cFRoZW1lLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKFwiTXlJbnB1dEdyb3VwXCIpXG4gICAgICogcHVibGljIGlucHV0R3JvdXA6IElneElucHV0R3JvdXBDb21wb25lbnQ7XG4gICAgICogbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAqICBsZXQgaW5wdXRUaGVtZSA9ICdmbHVlbnQnO1xuICAgICAqIH1cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBzZXQgdGhlbWUodmFsdWU6IElneFRoZW1lKSB7XG4gICAgICAgIHRoaXMuX3RoZW1lID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0aGUgdGhlbWUgb2YgdGhlIGlucHV0LlxuICAgICAqIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBvZiB0eXBlIElneElucHV0R3JvdXBUeXBlLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKFwiTXlJbnB1dEdyb3VwXCIpXG4gICAgICogcHVibGljIGlucHV0R3JvdXA6IElneElucHV0R3JvdXBDb21wb25lbnQ7XG4gICAgICogbmdBZnRlclZpZXdJbml0KCkge1xuICAgICAqICBsZXQgaW5wdXRUaGVtZSA9IHRoaXMuaW5wdXRHcm91cC50aGVtZTtcbiAgICAgKiB9XG4gICAgICovXG4gICAgcHVibGljIGdldCB0aGVtZSgpOiBJZ3hUaGVtZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aGVtZTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3RvcihcbiAgICAgICAgcHVibGljIGVsZW1lbnQ6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+LFxuICAgICAgICBAT3B0aW9uYWwoKVxuICAgICAgICBASW5qZWN0KElHWF9JTlBVVF9HUk9VUF9UWVBFKVxuICAgICAgICBwcml2YXRlIF9pbnB1dEdyb3VwVHlwZTogSWd4SW5wdXRHcm91cFR5cGUsXG4gICAgICAgIEBJbmplY3QoRE9DVU1FTlQpXG4gICAgICAgIHByaXZhdGUgZG9jdW1lbnQ6IGFueSxcbiAgICAgICAgcHJpdmF0ZSBwbGF0Zm9ybTogUGxhdGZvcm1VdGlsLFxuICAgICAgICBwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgIHByaXZhdGUgdGhlbWVTZXJ2aWNlOiBUaGVtZVNlcnZpY2UsXG4gICAgKSB7XG4gICAgICAgIHRoaXMuX3RoZW1lID0gdGhpcy50aGVtZVNlcnZpY2UuZ2xvYmFsVGhlbWU7XG5cbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uID0gdGhpcy5fdGhlbWUkLmFzT2JzZXJ2YWJsZSgpLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgICAgICB0aGlzLl90aGVtZSA9IHZhbHVlIGFzIElneFRoZW1lO1xuICAgICAgICAgICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ2NsaWNrJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25DbGljayhldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICAhdGhpcy5pc0ZvY3VzZWQgJiZcbiAgICAgICAgICAgIGV2ZW50LnRhcmdldCAhPT0gdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50ICYmXG4gICAgICAgICAgICAhdGhpcy5zdXBwcmVzc0lucHV0QXV0b2ZvY3VzXG4gICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5pbnB1dC5mb2N1cygpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdExpc3RlbmVyKCdwb2ludGVyZG93bicsIFsnJGV2ZW50J10pXG4gICAgcHVibGljIG9uUG9pbnRlckRvd24oZXZlbnQ6IFBvaW50ZXJFdmVudCkge1xuICAgICAgICBpZiAodGhpcy5pc0ZvY3VzZWQgJiYgZXZlbnQudGFyZ2V0ICE9PSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgaGludENsaWNrSGFuZGxlcihldmVudDogTW91c2VFdmVudCkge1xuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50YCBoYXMgaGludHMuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoXCJNeUlucHV0R3JvdXBcIilcbiAgICAgKiBwdWJsaWMgaW5wdXRHcm91cDogSWd4SW5wdXRHcm91cENvbXBvbmVudDtcbiAgICAgKiBuZ0FmdGVyVmlld0luaXQoKXtcbiAgICAgKiAgICBsZXQgaW5wdXRIaW50cyA9IHRoaXMuaW5wdXRHcm91cC5oYXNIaW50cztcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBoYXNIaW50cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaGludHMubGVuZ3RoID4gMDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1pbnB1dC1ncm91cC0tcHJlZml4ZWQnKVxuICAgIHB1YmxpYyBnZXQgaGFzUHJlZml4ZXMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wcmVmaXhlcy5sZW5ndGggPiAwIHx8IHRoaXMuaXNGaWxlVHlwZTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgc2V0IHByZWZpeGVzKGl0ZW1zOiBRdWVyeUxpc3Q8SWd4UHJlZml4RGlyZWN0aXZlPikge1xuICAgICAgICB0aGlzLl9wcmVmaXhlcyA9IGl0ZW1zO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWlucHV0LWdyb3VwLS1zdWZmaXhlZCcpXG4gICAgcHVibGljIGdldCBoYXNTdWZmaXhlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3N1ZmZpeGVzLmxlbmd0aCA+IDAgfHwgdGhpcy5pc0ZpbGVUeXBlICYmIHRoaXMuaXNGaWxsZWQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIHNldCBzdWZmaXhlcyhpdGVtczogUXVlcnlMaXN0PElneFByZWZpeERpcmVjdGl2ZT4pIHtcbiAgICAgICAgdGhpcy5fc3VmZml4ZXMgPSBpdGVtcztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50YCBoYXMgYm9yZGVyLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKFwiTXlJbnB1dEdyb3VwXCIpXG4gICAgICogcHVibGljIGlucHV0R3JvdXA6IElneElucHV0R3JvdXBDb21wb25lbnQ7XG4gICAgICogbmdBZnRlclZpZXdJbml0KCl7XG4gICAgICogICAgbGV0IGlucHV0Qm9yZGVyID0gdGhpcy5pbnB1dEdyb3VwLmhhc0JvcmRlcjtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBoYXNCb3JkZXIoKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAodGhpcy50eXBlID09PSAnbGluZScgfHwgdGhpcy50eXBlID09PSAnYm94JykgJiZcbiAgICAgICAgICAgIHRoaXMuX3RoZW1lID09PSAnbWF0ZXJpYWwnXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBgSWd4SW5wdXRHcm91cENvbXBvbmVudGAgdHlwZSBpcyBsaW5lLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKFwiTXlJbnB1dEdyb3VwMVwiKVxuICAgICAqIHB1YmxpYyBpbnB1dEdyb3VwOiBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50O1xuICAgICAqIG5nQWZ0ZXJWaWV3SW5pdCgpe1xuICAgICAqICAgIGxldCBpc1R5cGVMaW5lID0gdGhpcy5pbnB1dEdyb3VwLmlzVHlwZUxpbmU7XG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIHB1YmxpYyBnZXQgaXNUeXBlTGluZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gJ2xpbmUnICYmIHRoaXMuX3RoZW1lID09PSAnbWF0ZXJpYWwnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgYElneElucHV0R3JvdXBDb21wb25lbnRgIHR5cGUgaXMgYm94LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKFwiTXlJbnB1dEdyb3VwMVwiKVxuICAgICAqIHB1YmxpYyBpbnB1dEdyb3VwOiBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50O1xuICAgICAqIG5nQWZ0ZXJWaWV3SW5pdCgpe1xuICAgICAqICAgIGxldCBpc1R5cGVCb3ggPSB0aGlzLmlucHV0R3JvdXAuaXNUeXBlQm94O1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1pbnB1dC1ncm91cC0tYm94JylcbiAgICBwdWJsaWMgZ2V0IGlzVHlwZUJveCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gJ2JveCcgJiYgdGhpcy5fdGhlbWUgPT09ICdtYXRlcmlhbCc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIHVwbG9hZEJ1dHRvbkhhbmRsZXIoKSB7XG4gICAgICAgIHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudC5jbGljaygpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBjbGVhclZhbHVlSGFuZGxlcigpIHtcbiAgICAgICAgdGhpcy5pbnB1dC5jbGVhcigpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWlucHV0LWdyb3VwLS1maWxlJylcbiAgICBwdWJsaWMgZ2V0IGlzRmlsZVR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0LnR5cGUgPT09ICdmaWxlJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgZ2V0IGZpbGVOYW1lcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXQuZmlsZU5hbWVzIHx8IHRoaXMuX3Jlc291cmNlU3RyaW5ncy5pZ3hfaW5wdXRfZmlsZV9wbGFjZWhvbGRlcjtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50YCB0eXBlIGlzIGJvcmRlci5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogQFZpZXdDaGlsZChcIk15SW5wdXRHcm91cDFcIilcbiAgICAgKiBwdWJsaWMgaW5wdXRHcm91cDogSWd4SW5wdXRHcm91cENvbXBvbmVudDtcbiAgICAgKiBuZ0FmdGVyVmlld0luaXQoKXtcbiAgICAgKiAgICBsZXQgaXNUeXBlQm9yZGVyID0gdGhpcy5pbnB1dEdyb3VwLmlzVHlwZUJvcmRlcjtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtaW5wdXQtZ3JvdXAtLWJvcmRlcicpXG4gICAgcHVibGljIGdldCBpc1R5cGVCb3JkZXIoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGUgPT09ICdib3JkZXInICYmIHRoaXMuX3RoZW1lID09PSAnbWF0ZXJpYWwnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgYElneElucHV0R3JvdXBDb21wb25lbnRgIHRoZW1lIGlzIEZsdWVudC5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogQFZpZXdDaGlsZChcIk15SW5wdXRHcm91cDFcIilcbiAgICAgKiBwdWJsaWMgaW5wdXRHcm91cDogSWd4SW5wdXRHcm91cENvbXBvbmVudDtcbiAgICAgKiBuZ0FmdGVyVmlld0luaXQoKXtcbiAgICAgKiAgICBsZXQgaXNUeXBlRmx1ZW50ID0gdGhpcy5pbnB1dEdyb3VwLmlzVHlwZUZsdWVudDtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtaW5wdXQtZ3JvdXAtLWZsdWVudCcpXG4gICAgcHVibGljIGdldCBpc1R5cGVGbHVlbnQoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aGVtZSA9PT0gJ2ZsdWVudCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBgSWd4SW5wdXRHcm91cENvbXBvbmVudGAgdGhlbWUgaXMgQm9vdHN0cmFwLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKFwiTXlJbnB1dEdyb3VwMVwiKVxuICAgICAqIHB1YmxpYyBpbnB1dEdyb3VwOiBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50O1xuICAgICAqIG5nQWZ0ZXJWaWV3SW5pdCgpe1xuICAgICAqICAgIGxldCBpc1R5cGVCb290c3RyYXAgPSB0aGlzLmlucHV0R3JvdXAuaXNUeXBlQm9vdHN0cmFwO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1pbnB1dC1ncm91cC0tYm9vdHN0cmFwJylcbiAgICBwdWJsaWMgZ2V0IGlzVHlwZUJvb3RzdHJhcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RoZW1lID09PSAnYm9vdHN0cmFwJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50YCB0aGVtZSBpcyBJbmRpZ28uXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoXCJNeUlucHV0R3JvdXAxXCIpXG4gICAgICogcHVibGljIGlucHV0R3JvdXA6IElneElucHV0R3JvdXBDb21wb25lbnQ7XG4gICAgICogbmdBZnRlclZpZXdJbml0KCl7XG4gICAgICogICAgbGV0IGlzVHlwZUluZGlnbyA9IHRoaXMuaW5wdXRHcm91cC5pc1R5cGVJbmRpZ287XG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWlucHV0LWdyb3VwLS1pbmRpZ28nKVxuICAgIHB1YmxpYyBnZXQgaXNUeXBlSW5kaWdvKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGhlbWUgPT09ICdpbmRpZ28nO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgYElneElucHV0R3JvdXBDb21wb25lbnRgIHR5cGUgaXMgc2VhcmNoLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKFwiTXlJbnB1dEdyb3VwMVwiKVxuICAgICAqIHB1YmxpYyBpbnB1dEdyb3VwOiBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50O1xuICAgICAqIG5nQWZ0ZXJWaWV3SW5pdCgpe1xuICAgICAqICAgIGxldCBpc1R5cGVTZWFyY2ggPSB0aGlzLmlucHV0R3JvdXAuaXNUeXBlU2VhcmNoO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1pbnB1dC1ncm91cC0tc2VhcmNoJylcbiAgICBwdWJsaWMgZ2V0IGlzVHlwZVNlYXJjaCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gJ3NlYXJjaCc7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgZ2V0IGZpbGxlZCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGxlZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyBzZXQgZmlsbGVkKHZhbCkge1xuICAgICAgICB0aGlzLl9maWxsZWQgPSB2YWw7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpIHtcbiAgICAgICAgaWYgKCF0aGlzLl90aGVtZSkge1xuICAgICAgICAgICAgY29uc3QgdGhlbWUgPSB0aGlzLnRoZW1lID8/IHRoaXMudGhlbWVTZXJ2aWNlLmdldENvbXBvbmVudFRoZW1lKHRoaXMuZWxlbWVudCk7XG5cbiAgICAgICAgICAgIGlmICh0aGVtZSkge1xuICAgICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLl90aGVtZSQubmV4dCh0aGVtZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24udW5zdWJzY3JpYmUoKTtcbiAgICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiaWd4LWlucHV0LWdyb3VwX193cmFwcGVyXCIgKm5nSWY9XCJpc1R5cGVCb3g7IGVsc2UgYnVuZGxlXCI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImJ1bmRsZVwiPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG5cbjxkaXYgY2xhc3M9XCJpZ3gtaW5wdXQtZ3JvdXBfX2hpbnRcIiAoY2xpY2spPVwiaGludENsaWNrSGFuZGxlcigkZXZlbnQpXCI+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiaWd4LWhpbnQsIFtpZ3hIaW50XVwiPjwvbmctY29udGVudD5cbjwvZGl2PlxuXG48bmctdGVtcGxhdGUgI2xhYmVsPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltpZ3hMYWJlbF1cIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2lucHV0PlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltpZ3hJbnB1dF1cIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3ByZWZpeD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJpZ3gtcHJlZml4LCBbaWd4UHJlZml4XVwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjdXBsb2FkQnV0dG9uPlxuICAgIDxpZ3gtcHJlZml4ICpuZ0lmPVwiaXNGaWxlVHlwZVwiIGNsYXNzPVwiaWd4LWlucHV0LWdyb3VwX191cGxvYWQtYnV0dG9uXCI+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIGlneEJ1dHRvbj1cImNvbnRhaW5lZFwiXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIChjbGljayk9XCJ1cGxvYWRCdXR0b25IYW5kbGVyKClcIlxuICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRpc2FibGVkXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lneC1pbnB1dC1ncm91cF9fdXBsb2FkLWJ1dHRvbic6IGlzVHlwZUxpbmUgfVwiXG4gICAgICAgID5cbiAgICAgICAgICAgIHt7IHJlc291cmNlU3RyaW5ncy5pZ3hfaW5wdXRfdXBsb2FkX2J1dHRvbiB9fVxuICAgICAgICA8L2J1dHRvbj5cbiAgICA8L2lneC1wcmVmaXg+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2ZpbGVzPlxuICAgIDxkaXZcbiAgICAgICAgKm5nSWY9XCJpc0ZpbGVUeXBlXCJcbiAgICAgICAgY2xhc3M9XCJpZ3gtaW5wdXQtZ3JvdXBfX2ZpbGUtaW5wdXRcIlxuICAgICAgICBbdGl0bGVdPVwiZmlsZU5hbWVzXCJcbiAgICA+XG4gICAgICAgIDxzcGFuPnt7IGZpbGVOYW1lcyB9fTwvc3Bhbj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjY2xlYXI+XG4gICAgPGlneC1zdWZmaXhcbiAgICAgICAgY2xhc3M9XCJpZ3gtaW5wdXQtZ3JvdXBfX2NsZWFyLWljb25cIlxuICAgICAgICAqbmdJZj1cImlzRmlsZVR5cGUgJiYgaXNGaWxsZWRcIlxuICAgICAgICAoY2xpY2spPVwiY2xlYXJWYWx1ZUhhbmRsZXIoKVwiXG4gICAgICAgIChrZXlkb3duLkVudGVyKT1cImNsZWFyVmFsdWVIYW5kbGVyKClcIlxuICAgICAgICB0aXRsZT1cImNsZWFyIGZpbGVzXCJcbiAgICAgICAgdGFiaW5kZXg9XCIwXCJcbiAgICA+XG4gICAgICAgIDxpZ3gtaWNvbiBmYW1pbHk9XCJkZWZhdWx0XCIgbmFtZT1cImlucHV0X2NsZWFyXCI+PC9pZ3gtaWNvbj5cbiAgICA8L2lneC1zdWZmaXg+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3N1ZmZpeD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJpZ3gtc3VmZml4LCBbaWd4U3VmZml4XVwiPjwvbmctY29udGVudD5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjbWF0ZXJpYWxCdW5kbGU+XG4gICAgPGRpdiBjbGFzcz1cImlneC1pbnB1dC1ncm91cF9fYnVuZGxlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpZ3gtaW5wdXQtZ3JvdXBfX2J1bmRsZS1zdGFydFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZWZpeFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInVwbG9hZEJ1dHRvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlneC1pbnB1dC1ncm91cF9fbm90Y2hcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGFiZWxcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LWlucHV0LWdyb3VwX19idW5kbGUtbWFpblwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmlsZXNcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlneC1pbnB1dC1ncm91cF9fZmlsbGVyXCI+PC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlneC1pbnB1dC1ncm91cF9fYnVuZGxlLWVuZFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNsZWFyXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3VmZml4XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpZ3gtaW5wdXQtZ3JvdXBfX2xpbmVcIiAqbmdJZj1cImhhc0JvcmRlclwiPjwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNmbHVlbnRCdW5kbGU+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiaWd4LWlucHV0LWdyb3VwX19idW5kbGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlneC1pbnB1dC1ncm91cF9fYnVuZGxlLXN0YXJ0XCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicHJlZml4XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidXBsb2FkQnV0dG9uXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlneC1pbnB1dC1ncm91cF9fYnVuZGxlLW1haW5cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpbGVzXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpZ3gtaW5wdXQtZ3JvdXBfX2J1bmRsZS1lbmRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjbGVhclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN1ZmZpeFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LWlucHV0LWdyb3VwX19saW5lXCIgKm5nSWY9XCJoYXNCb3JkZXJcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYm9vdHN0cmFwQnVuZGxlPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cImlneC1pbnB1dC1ncm91cF9fYnVuZGxlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpZ3gtaW5wdXQtZ3JvdXBfX2J1bmRsZS1zdGFydFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZWZpeFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInVwbG9hZEJ1dHRvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpbGVzXCI+PC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlneC1pbnB1dC1ncm91cF9fYnVuZGxlLWVuZFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImNsZWFyXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwic3VmZml4XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNidW5kbGU+XG4gICAgPG5nLWNvbnRhaW5lciBbbmdTd2l0Y2hdPVwidGhlbWVcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2Jvb3RzdHJhcCdcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJib290c3RyYXBCdW5kbGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2ZsdWVudCdcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmbHVlbnRCdW5kbGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hDYXNlPVwiJ2luZGlnbydcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmbHVlbnRCdW5kbGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cIm1hdGVyaWFsQnVuZGxlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
442
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQtZ3JvdXAuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL2lucHV0LWdyb3VwL2lucHV0LWdyb3VwLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2lnbml0ZXVpLWFuZ3VsYXIvc3JjL2xpYi9pbnB1dC1ncm91cC9pbnB1dC1ncm91cC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxlQUFlLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUNySCxPQUFPLEVBR0gsU0FBUyxFQUNULFlBQVksRUFDWixlQUFlLEVBRWYsV0FBVyxFQUNYLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUUzQixRQUFRLEVBQWEsZ0JBQWdCLEVBQ3hDLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBeUIsc0JBQXNCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUU3RixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNyRSxPQUFPLEVBQ0gsaUJBQWlCLEVBQ2pCLGFBQWEsRUFDaEIsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUUzRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN6RCxPQUFPLEVBQXFCLG9CQUFvQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGdCQUFn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RHJCLFdBQVc7dUJBQUMsaUNBQWlDO2dCQVluQyxXQUFXO3NCQURyQixXQUFXO3VCQUFDLGlDQUFpQztnQkFvRG5DLFNBQVM7c0JBRG5CLFdBQVc7dUJBQUMsNEJBQTRCO2dCQWlCOUIsVUFBVTtzQkFEcEIsV0FBVzt1QkFBQyw2QkFBNkI7Z0JBcUIvQixZQUFZO3NCQUR0QixXQUFXO3VCQUFDLCtCQUErQjtnQkFnQmpDLFlBQVk7c0JBRHRCLFdBQVc7dUJBQUMsK0JBQStCO2dCQWdCakMsZUFBZTtzQkFEekIsV0FBVzt1QkFBQyxrQ0FBa0M7Z0JBZ0JwQyxZQUFZO3NCQUR0QixXQUFXO3VCQUFDLCtCQUErQjtnQkFnQmpDLFlBQVk7c0JBRHRCLFdBQVc7dUJBQUMsK0JBQStCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQsIE5nSWYsIE5nVGVtcGxhdGVPdXRsZXQsIE5nQ2xhc3MsIE5nU3dpdGNoLCBOZ1N3aXRjaENhc2UsIE5nU3dpdGNoRGVmYXVsdCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQge1xuICAgIEFmdGVyVmlld0NoZWNrZWQsXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRWxlbWVudFJlZixcbiAgICBIb3N0QmluZGluZyxcbiAgICBIb3N0TGlzdGVuZXIsIEluamVjdCwgSW5wdXQsXG4gICAgT25EZXN0cm95LFxuICAgIE9wdGlvbmFsLCBRdWVyeUxpc3QsIGJvb2xlYW5BdHRyaWJ1dGVcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJSW5wdXRSZXNvdXJjZVN0cmluZ3MsIElucHV0UmVzb3VyY2VTdHJpbmdzRU4gfSBmcm9tICcuLi9jb3JlL2kxOG4vaW5wdXQtcmVzb3VyY2VzJztcbmltcG9ydCB7IFBsYXRmb3JtVXRpbCB9IGZyb20gJy4uL2NvcmUvdXRpbHMnO1xuaW1wb3J0IHsgSWd4QnV0dG9uRGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9idXR0b24vYnV0dG9uLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hIaW50RGlyZWN0aXZlIH0gZnJvbSAnLi4vZGlyZWN0aXZlcy9oaW50L2hpbnQuZGlyZWN0aXZlJztcbmltcG9ydCB7XG4gICAgSWd4SW5wdXREaXJlY3RpdmUsXG4gICAgSWd4SW5wdXRTdGF0ZVxufSBmcm9tICcuLi9kaXJlY3RpdmVzL2lucHV0L2lucHV0LmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hQcmVmaXhEaXJlY3RpdmUgfSBmcm9tICcuLi9kaXJlY3RpdmVzL3ByZWZpeC9wcmVmaXguZGlyZWN0aXZlJztcbmltcG9ydCB7IElneFN1ZmZpeERpcmVjdGl2ZSB9IGZyb20gJy4uL2RpcmVjdGl2ZXMvc3VmZml4L3N1ZmZpeC5kaXJlY3RpdmUnO1xuXG5pbXBvcnQgeyBJZ3hJbnB1dEdyb3VwQmFzZSB9IGZyb20gJy4vaW5wdXQtZ3JvdXAuY29tbW9uJztcbmltcG9ydCB7IElneElucHV0R3JvdXBUeXBlLCBJR1hfSU5QVVRfR1JPVVBfVFlQRSB9IGZyb20gJy4vaW5wdXRHcm91cFR5cGUnO1xuaW1wb3J0IHsgSWd4SWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2ljb24vaWNvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgZ2V0Q3VycmVudFJlc291cmNlU3RyaW5ncyB9IGZyb20gJy4uL2NvcmUvaTE4bi9yZXNvdXJjZXMnO1xuaW1wb3J0IHsgSWd4VGhlbWUsIFRoZW1lU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3RoZW1lL3RoZW1lLnNlcnZpY2UnO1xuaW1wb3J0IHsgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAnaWd4LWlucHV0LWdyb3VwJyxcbiAgICB0ZW1wbGF0ZVVybDogJ2lucHV0LWdyb3VwLmNvbXBvbmVudC5odG1sJyxcbiAgICBwcm92aWRlcnM6IFt7IHByb3ZpZGU6IElneElucHV0R3JvdXBCYXNlLCB1c2VFeGlzdGluZzogSWd4SW5wdXRHcm91cENvbXBvbmVudCB9XSxcbiAgICBzdGFuZGFsb25lOiB0cnVlLFxuICAgIGltcG9ydHM6IFtOZ0lmLCBOZ1RlbXBsYXRlT3V0bGV0LCBJZ3hQcmVmaXhEaXJlY3RpdmUsIElneEJ1dHRvbkRpcmVjdGl2ZSwgTmdDbGFzcywgSWd4U3VmZml4RGlyZWN0aXZlLCBJZ3hJY29uQ29tcG9uZW50LCBOZ1N3aXRjaCwgTmdTd2l0Y2hDYXNlLCBOZ1N3aXRjaERlZmF1bHRdXG59KVxuZXhwb3J0IGNsYXNzIElneElucHV0R3JvdXBDb21wb25lbnQgaW1wbGVtZW50cyBJZ3hJbnB1dEdyb3VwQmFzZSwgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25EZXN0cm95IHtcbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSByZXNvdXJjZSBzdHJpbmdzLlxuICAgICAqIEJ5IGRlZmF1bHQgaXQgdXNlcyBFTiByZXNvdXJjZXMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgc2V0IHJlc291cmNlU3RyaW5ncyh2YWx1ZTogSUlucHV0UmVzb3VyY2VTdHJpbmdzKSB7XG4gICAgICAgIHRoaXMuX3Jlc291cmNlU3RyaW5ncyA9IE9iamVjdC5hc3NpZ24oe30sIHRoaXMuX3Jlc291cmNlU3RyaW5ncywgdmFsdWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHJlc291cmNlIHN0cmluZ3MuXG4gICAgICovXG4gICAgcHVibGljIGdldCByZXNvdXJjZVN0cmluZ3MoKTogSUlucHV0UmVzb3VyY2VTdHJpbmdzIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlU3RyaW5ncztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSB0aGF0IGVuYWJsZXMvZGlzYWJsZXMgdGhlIGF1dG8tZ2VuZXJhdGVkIGNsYXNzIG9mIHRoZSBgSWd4SW5wdXRHcm91cENvbXBvbmVudGAuXG4gICAgICogQnkgZGVmYXVsdCBhcHBsaWVkIHRoZSBjbGFzcyBpcyBhcHBsaWVkLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiAgQFZpZXdDaGlsZChcIk15SW5wdXRHcm91cFwiKVxuICAgICAqICBwdWJsaWMgaW5wdXRHcm91cDogSWd4SW5wdXRHcm91cENvbXBvbmVudDtcbiAgICAgKiAgbmdBZnRlclZpZXdJbml0KCl7XG4gICAgICogIHRoaXMuaW5wdXRHcm91cC5kZWZhdWx0Q2xhc3MgPSBmYWxzZTtcbiAgICAgKiBgYGBcbiAgICAgKiB9XG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtaW5wdXQtZ3JvdXAnKVxuICAgIHB1YmxpYyBkZWZhdWx0Q2xhc3MgPSB0cnVlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1pbnB1dC1ncm91cC0tcGxhY2Vob2xkZXInKVxuICAgIHB1YmxpYyBoYXNQbGFjZWhvbGRlciA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1pbnB1dC1ncm91cC0tcmVxdWlyZWQnKVxuICAgIHB1YmxpYyBpc1JlcXVpcmVkID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWlucHV0LWdyb3VwLS1mb2N1c2VkJylcbiAgICBwdWJsaWMgaXNGb2N1c2VkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBAaGlkZGVuIEBpbnRlcm5hbFxuICAgICAqIFdoZW4gdHJ1dGh5LCBkaXNhYmxlcyB0aGUgYElneElucHV0R3JvdXBDb21wb25lbnRgLlxuICAgICAqIENvbnRyb2xsZWQgYnkgdGhlIHVuZGVybHlpbmcgYElneElucHV0RGlyZWN0aXZlYC5cbiAgICAgKiBgYGBodG1sXG4gICAgICogPGlneC1pbnB1dC1ncm91cCBbZGlzYWJsZWRdPVwidHJ1ZVwiPjwvaWd4LWlucHV0LWdyb3VwPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWlucHV0LWdyb3VwLS1kaXNhYmxlZCcpXG4gICAgcHVibGljIGRpc2FibGVkID0gZmFsc2U7XG5cbiAgICAvKipcbiAgICAgKiBQcmV2ZW50cyBhdXRvbWF0aWNhbGx5IGZvY3VzaW5nIHRoZSBpbnB1dCB3aGVuIGNsaWNraW5nIG9uIG90aGVyIGVsZW1lbnRzIGluIHRoZSBpbnB1dCBncm91cCAoZS5nLiBwcmVmaXggb3Igc3VmZml4KS5cbiAgICAgKlxuICAgICAqIEByZW1hcmtzIEF1dG9tYXRpYyBmb2N1cyBjYXVzZXMgc29mdHdhcmUga2V5Ym9hcmQgdG8gc2hvdyBvbiBtb2JpbGUgZGV2aWNlcy5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtaW5wdXQtZ3JvdXAgW3N1cHByZXNzSW5wdXRBdXRvZm9jdXNdPVwidHJ1ZVwiPjwvaWd4LWlucHV0LWdyb3VwPlxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBJbnB1dCh7IHRyYW5zZm9ybTogYm9vbGVhbkF0dHJpYnV0ZSB9KVxuICAgIHB1YmxpYyBzdXBwcmVzc0lucHV0QXV0b2ZvY3VzID0gZmFsc2U7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWlucHV0LWdyb3VwLS13YXJuaW5nJylcbiAgICBwdWJsaWMgaGFzV2FybmluZyA9IGZhbHNlO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkcmVuKElneEhpbnREaXJlY3RpdmUsIHsgcmVhZDogSWd4SGludERpcmVjdGl2ZSB9KVxuICAgIHByb3RlY3RlZCBoaW50czogUXVlcnlMaXN0PElneEhpbnREaXJlY3RpdmU+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihJZ3hQcmVmaXhEaXJlY3RpdmUsIHsgcmVhZDogSWd4UHJlZml4RGlyZWN0aXZlLCBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHByb3RlY3RlZCBfcHJlZml4ZXM6IFF1ZXJ5TGlzdDxJZ3hQcmVmaXhEaXJlY3RpdmU+O1xuXG4gICAgQENvbnRlbnRDaGlsZHJlbihJZ3hTdWZmaXhEaXJlY3RpdmUsIHsgcmVhZDogSWd4U3VmZml4RGlyZWN0aXZlLCBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHByb3RlY3RlZCBfc3VmZml4ZXM6IFF1ZXJ5TGlzdDxJZ3hTdWZmaXhEaXJlY3RpdmU+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAQ29udGVudENoaWxkKElneElucHV0RGlyZWN0aXZlLCB7IHJlYWQ6IElneElucHV0RGlyZWN0aXZlLCBzdGF0aWM6IHRydWUgfSlcbiAgICBwcm90ZWN0ZWQgaW5wdXQ6IElneElucHV0RGlyZWN0aXZlO1xuXG4gICAgcHJpdmF0ZSBfdHlwZTogSWd4SW5wdXRHcm91cFR5cGUgPSBudWxsO1xuICAgIHByaXZhdGUgX2ZpbGxlZCA9IGZhbHNlO1xuICAgIHByaXZhdGUgX3RoZW1lOiBJZ3hUaGVtZTtcbiAgICBwcml2YXRlIF90aGVtZSQgPSBuZXcgU3ViamVjdDxJZ3hUaGVtZT4oKTtcbiAgICBwcml2YXRlIF9zdWJzY3JpcHRpb246IFN1YnNjcmlwdGlvbjtcbiAgICBwcml2YXRlIF9yZXNvdXJjZVN0cmluZ3MgPSBnZXRDdXJyZW50UmVzb3VyY2VTdHJpbmdzKElucHV0UmVzb3VyY2VTdHJpbmdzRU4pO1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1pbnB1dC1ncm91cC0tdmFsaWQnKVxuICAgIHB1YmxpYyBnZXQgdmFsaWRDbGFzcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXQudmFsaWQgPT09IElneElucHV0U3RhdGUuVkFMSUQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1pbnB1dC1ncm91cC0taW52YWxpZCcpXG4gICAgcHVibGljIGdldCBpbnZhbGlkQ2xhc3MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0LnZhbGlkID09PSBJZ3hJbnB1dFN0YXRlLklOVkFMSUQ7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1pbnB1dC1ncm91cC0tZmlsbGVkJylcbiAgICBwdWJsaWMgZ2V0IGlzRmlsbGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsbGVkIHx8ICh0aGlzLmlucHV0ICYmIHRoaXMuaW5wdXQudmFsdWUpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtaW5wdXQtZ3JvdXAtLXRleHRhcmVhLWdyb3VwJylcbiAgICBwdWJsaWMgZ2V0IHRleHRBcmVhQ2xhc3MoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmlucHV0LmlzVGV4dEFyZWE7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogU2V0cyBob3cgdGhlIGlucHV0IHdpbGwgYmUgc3R5bGVkLlxuICAgICAqIEFsbG93ZWQgdmFsdWVzIG9mIHR5cGUgSWd4SW5wdXRHcm91cFR5cGUuXG4gICAgICogYGBgaHRtbFxuICAgICAqIDxpZ3gtaW5wdXQtZ3JvdXAgW3R5cGVdPVwiJ3NlYXJjaCdcIj5cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASW5wdXQoJ3R5cGUnKVxuICAgIHB1YmxpYyBzZXQgdHlwZSh2YWx1ZTogSWd4SW5wdXRHcm91cFR5cGUpIHtcbiAgICAgICAgdGhpcy5fdHlwZSA9IHZhbHVlO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIHR5cGUgb2YgdGhlIGBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50YC4gSG93IHRoZSBpbnB1dCBpcyBzdHlsZWQuXG4gICAgICogVGhlIGRlZmF1bHQgaXMgYGxpbmVgLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKFwiTXlJbnB1dEdyb3VwXCIpXG4gICAgICogcHVibGljIGlucHV0R3JvdXA6IElneElucHV0R3JvdXBDb21wb25lbnQ7XG4gICAgICogbmdBZnRlclZpZXdJbml0KCl7XG4gICAgICogICAgbGV0IGlucHV0VHlwZSA9IHRoaXMuaW5wdXRHcm91cC50eXBlO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHR5cGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90eXBlIHx8IHRoaXMuX2lucHV0R3JvdXBUeXBlIHx8ICdsaW5lJztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBTZXRzIHRoZSB0aGVtZSBvZiB0aGUgaW5wdXQuXG4gICAgICogQWxsb3dlZCB2YWx1ZXMgb2YgdHlwZSBJZ3hJbnB1dEdyb3VwVGhlbWUuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoXCJNeUlucHV0R3JvdXBcIilcbiAgICAgKiBwdWJsaWMgaW5wdXRHcm91cDogSWd4SW5wdXRHcm91cENvbXBvbmVudDtcbiAgICAgKiBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICogIGxldCBpbnB1dFRoZW1lID0gJ2ZsdWVudCc7XG4gICAgICogfVxuICAgICAqL1xuICAgIEBJbnB1dCgpXG4gICAgcHVibGljIHNldCB0aGVtZSh2YWx1ZTogSWd4VGhlbWUpIHtcbiAgICAgICAgdGhpcy5fdGhlbWUgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRoZSB0aGVtZSBvZiB0aGUgaW5wdXQuXG4gICAgICogVGhlIHJldHVybmVkIHZhbHVlIGlzIG9mIHR5cGUgSWd4SW5wdXRHcm91cFR5cGUuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoXCJNeUlucHV0R3JvdXBcIilcbiAgICAgKiBwdWJsaWMgaW5wdXRHcm91cDogSWd4SW5wdXRHcm91cENvbXBvbmVudDtcbiAgICAgKiBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgICogIGxldCBpbnB1dFRoZW1lID0gdGhpcy5pbnB1dEdyb3VwLnRoZW1lO1xuICAgICAqIH1cbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IHRoZW1lKCk6IElneFRoZW1lIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RoZW1lO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKFxuICAgICAgICBwdWJsaWMgZWxlbWVudDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD4sXG4gICAgICAgIEBPcHRpb25hbCgpXG4gICAgICAgIEBJbmplY3QoSUdYX0lOUFVUX0dST1VQX1RZUEUpXG4gICAgICAgIHByaXZhdGUgX2lucHV0R3JvdXBUeXBlOiBJZ3hJbnB1dEdyb3VwVHlwZSxcbiAgICAgICAgQEluamVjdChET0NVTUVOVClcbiAgICAgICAgcHJpdmF0ZSBkb2N1bWVudDogYW55LFxuICAgICAgICBwcml2YXRlIHBsYXRmb3JtOiBQbGF0Zm9ybVV0aWwsXG4gICAgICAgIHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgcHJpdmF0ZSB0aGVtZVNlcnZpY2U6IFRoZW1lU2VydmljZSxcbiAgICApIHtcbiAgICAgICAgdGhpcy5fdGhlbWUgPSB0aGlzLnRoZW1lU2VydmljZS5nbG9iYWxUaGVtZTtcblxuICAgICAgICB0aGlzLl9zdWJzY3JpcHRpb24gPSB0aGlzLl90aGVtZSQuYXNPYnNlcnZhYmxlKCkuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgICAgIHRoaXMuX3RoZW1lID0gdmFsdWUgYXMgSWd4VGhlbWU7XG4gICAgICAgICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RMaXN0ZW5lcignY2xpY2snLCBbJyRldmVudCddKVxuICAgIHB1YmxpYyBvbkNsaWNrKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgICF0aGlzLmlzRm9jdXNlZCAmJlxuICAgICAgICAgICAgZXZlbnQudGFyZ2V0ICE9PSB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQgJiZcbiAgICAgICAgICAgICF0aGlzLnN1cHByZXNzSW5wdXRBdXRvZm9jdXNcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0LmZvY3VzKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBIb3N0TGlzdGVuZXIoJ3BvaW50ZXJkb3duJywgWyckZXZlbnQnXSlcbiAgICBwdWJsaWMgb25Qb2ludGVyRG93bihldmVudDogUG9pbnRlckV2ZW50KSB7XG4gICAgICAgIGlmICh0aGlzLmlzRm9jdXNlZCAmJiBldmVudC50YXJnZXQgIT09IHRoaXMuaW5wdXQubmF0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBoaW50Q2xpY2tIYW5kbGVyKGV2ZW50OiBNb3VzZUV2ZW50KSB7XG4gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgYElneElucHV0R3JvdXBDb21wb25lbnRgIGhhcyBoaW50cy5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogQFZpZXdDaGlsZChcIk15SW5wdXRHcm91cFwiKVxuICAgICAqIHB1YmxpYyBpbnB1dEdyb3VwOiBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50O1xuICAgICAqIG5nQWZ0ZXJWaWV3SW5pdCgpe1xuICAgICAqICAgIGxldCBpbnB1dEhpbnRzID0gdGhpcy5pbnB1dEdyb3VwLmhhc0hpbnRzO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGhhc0hpbnRzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5oaW50cy5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWlucHV0LWdyb3VwLS1wcmVmaXhlZCcpXG4gICAgcHVibGljIGdldCBoYXNQcmVmaXhlcygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3ByZWZpeGVzLmxlbmd0aCA+IDAgfHwgdGhpcy5pc0ZpbGVUeXBlO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBzZXQgcHJlZml4ZXMoaXRlbXM6IFF1ZXJ5TGlzdDxJZ3hQcmVmaXhEaXJlY3RpdmU+KSB7XG4gICAgICAgIHRoaXMuX3ByZWZpeGVzID0gaXRlbXM7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtaW5wdXQtZ3JvdXAtLXN1ZmZpeGVkJylcbiAgICBwdWJsaWMgZ2V0IGhhc1N1ZmZpeGVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3VmZml4ZXMubGVuZ3RoID4gMCB8fCB0aGlzLmlzRmlsZVR5cGUgJiYgdGhpcy5pc0ZpbGxlZDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgc2V0IHN1ZmZpeGVzKGl0ZW1zOiBRdWVyeUxpc3Q8SWd4UHJlZml4RGlyZWN0aXZlPikge1xuICAgICAgICB0aGlzLl9zdWZmaXhlcyA9IGl0ZW1zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgYElneElucHV0R3JvdXBDb21wb25lbnRgIGhhcyBib3JkZXIuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoXCJNeUlucHV0R3JvdXBcIilcbiAgICAgKiBwdWJsaWMgaW5wdXRHcm91cDogSWd4SW5wdXRHcm91cENvbXBvbmVudDtcbiAgICAgKiBuZ0FmdGVyVmlld0luaXQoKXtcbiAgICAgKiAgICBsZXQgaW5wdXRCb3JkZXIgPSB0aGlzLmlucHV0R3JvdXAuaGFzQm9yZGVyO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0IGhhc0JvcmRlcigpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICh0aGlzLnR5cGUgPT09ICdsaW5lJyB8fCB0aGlzLnR5cGUgPT09ICdib3gnKSAmJlxuICAgICAgICAgICAgdGhpcy5fdGhlbWUgPT09ICdtYXRlcmlhbCdcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIGBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50YCB0eXBlIGlzIGxpbmUuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoXCJNeUlucHV0R3JvdXAxXCIpXG4gICAgICogcHVibGljIGlucHV0R3JvdXA6IElneElucHV0R3JvdXBDb21wb25lbnQ7XG4gICAgICogbmdBZnRlclZpZXdJbml0KCl7XG4gICAgICogICAgbGV0IGlzVHlwZUxpbmUgPSB0aGlzLmlucHV0R3JvdXAuaXNUeXBlTGluZTtcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgcHVibGljIGdldCBpc1R5cGVMaW5lKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlID09PSAnbGluZScgJiYgdGhpcy5fdGhlbWUgPT09ICdtYXRlcmlhbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBgSWd4SW5wdXRHcm91cENvbXBvbmVudGAgdHlwZSBpcyBib3guXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoXCJNeUlucHV0R3JvdXAxXCIpXG4gICAgICogcHVibGljIGlucHV0R3JvdXA6IElneElucHV0R3JvdXBDb21wb25lbnQ7XG4gICAgICogbmdBZnRlclZpZXdJbml0KCl7XG4gICAgICogICAgbGV0IGlzVHlwZUJveCA9IHRoaXMuaW5wdXRHcm91cC5pc1R5cGVCb3g7XG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWlucHV0LWdyb3VwLS1ib3gnKVxuICAgIHB1YmxpYyBnZXQgaXNUeXBlQm94KCkge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlID09PSAnYm94JyAmJiB0aGlzLl90aGVtZSA9PT0gJ21hdGVyaWFsJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgdXBsb2FkQnV0dG9uSGFuZGxlcigpIHtcbiAgICAgICAgdGhpcy5pbnB1dC5uYXRpdmVFbGVtZW50LmNsaWNrKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIGNsZWFyVmFsdWVIYW5kbGVyKCkge1xuICAgICAgICB0aGlzLmlucHV0LmNsZWFyKCk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtaW5wdXQtZ3JvdXAtLWZpbGUnKVxuICAgIHB1YmxpYyBnZXQgaXNGaWxlVHlwZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuaW5wdXQudHlwZSA9PT0gJ2ZpbGUnO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBnZXQgZmlsZU5hbWVzKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5pbnB1dC5maWxlTmFtZXMgfHwgdGhpcy5fcmVzb3VyY2VTdHJpbmdzLmlneF9pbnB1dF9maWxlX3BsYWNlaG9sZGVyO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgYElneElucHV0R3JvdXBDb21wb25lbnRgIHR5cGUgaXMgYm9yZGVyLlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKFwiTXlJbnB1dEdyb3VwMVwiKVxuICAgICAqIHB1YmxpYyBpbnB1dEdyb3VwOiBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50O1xuICAgICAqIG5nQWZ0ZXJWaWV3SW5pdCgpe1xuICAgICAqICAgIGxldCBpc1R5cGVCb3JkZXIgPSB0aGlzLmlucHV0R3JvdXAuaXNUeXBlQm9yZGVyO1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1pbnB1dC1ncm91cC0tYm9yZGVyJylcbiAgICBwdWJsaWMgZ2V0IGlzVHlwZUJvcmRlcigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZSA9PT0gJ2JvcmRlcicgJiYgdGhpcy5fdGhlbWUgPT09ICdtYXRlcmlhbCc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBgSWd4SW5wdXRHcm91cENvbXBvbmVudGAgdGhlbWUgaXMgRmx1ZW50LlxuICAgICAqIGBgYHR5cGVzY3JpcHRcbiAgICAgKiBAVmlld0NoaWxkKFwiTXlJbnB1dEdyb3VwMVwiKVxuICAgICAqIHB1YmxpYyBpbnB1dEdyb3VwOiBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50O1xuICAgICAqIG5nQWZ0ZXJWaWV3SW5pdCgpe1xuICAgICAqICAgIGxldCBpc1R5cGVGbHVlbnQgPSB0aGlzLmlucHV0R3JvdXAuaXNUeXBlRmx1ZW50O1xuICAgICAqIH1cbiAgICAgKiBgYGBcbiAgICAgKi9cbiAgICBASG9zdEJpbmRpbmcoJ2NsYXNzLmlneC1pbnB1dC1ncm91cC0tZmx1ZW50JylcbiAgICBwdWJsaWMgZ2V0IGlzVHlwZUZsdWVudCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RoZW1lID09PSAnZmx1ZW50JztcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIGBJZ3hJbnB1dEdyb3VwQ29tcG9uZW50YCB0aGVtZSBpcyBCb290c3RyYXAuXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoXCJNeUlucHV0R3JvdXAxXCIpXG4gICAgICogcHVibGljIGlucHV0R3JvdXA6IElneElucHV0R3JvdXBDb21wb25lbnQ7XG4gICAgICogbmdBZnRlclZpZXdJbml0KCl7XG4gICAgICogICAgbGV0IGlzVHlwZUJvb3RzdHJhcCA9IHRoaXMuaW5wdXRHcm91cC5pc1R5cGVCb290c3RyYXA7XG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWlucHV0LWdyb3VwLS1ib290c3RyYXAnKVxuICAgIHB1YmxpYyBnZXQgaXNUeXBlQm9vdHN0cmFwKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdGhlbWUgPT09ICdib290c3RyYXAnO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgYElneElucHV0R3JvdXBDb21wb25lbnRgIHRoZW1lIGlzIEluZGlnby5cbiAgICAgKiBgYGB0eXBlc2NyaXB0XG4gICAgICogQFZpZXdDaGlsZChcIk15SW5wdXRHcm91cDFcIilcbiAgICAgKiBwdWJsaWMgaW5wdXRHcm91cDogSWd4SW5wdXRHcm91cENvbXBvbmVudDtcbiAgICAgKiBuZ0FmdGVyVmlld0luaXQoKXtcbiAgICAgKiAgICBsZXQgaXNUeXBlSW5kaWdvID0gdGhpcy5pbnB1dEdyb3VwLmlzVHlwZUluZGlnbztcbiAgICAgKiB9XG4gICAgICogYGBgXG4gICAgICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtaW5wdXQtZ3JvdXAtLWluZGlnbycpXG4gICAgcHVibGljIGdldCBpc1R5cGVJbmRpZ28oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl90aGVtZSA9PT0gJ2luZGlnbyc7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogUmV0dXJucyB3aGV0aGVyIHRoZSBgSWd4SW5wdXRHcm91cENvbXBvbmVudGAgdHlwZSBpcyBzZWFyY2guXG4gICAgICogYGBgdHlwZXNjcmlwdFxuICAgICAqIEBWaWV3Q2hpbGQoXCJNeUlucHV0R3JvdXAxXCIpXG4gICAgICogcHVibGljIGlucHV0R3JvdXA6IElneElucHV0R3JvdXBDb21wb25lbnQ7XG4gICAgICogbmdBZnRlclZpZXdJbml0KCl7XG4gICAgICogICAgbGV0IGlzVHlwZVNlYXJjaCA9IHRoaXMuaW5wdXRHcm91cC5pc1R5cGVTZWFyY2g7XG4gICAgICogfVxuICAgICAqIGBgYFxuICAgICAqL1xuICAgIEBIb3N0QmluZGluZygnY2xhc3MuaWd4LWlucHV0LWdyb3VwLS1zZWFyY2gnKVxuICAgIHB1YmxpYyBnZXQgaXNUeXBlU2VhcmNoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlID09PSAnc2VhcmNoJztcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyBnZXQgZmlsbGVkKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZmlsbGVkO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIHNldCBmaWxsZWQodmFsKSB7XG4gICAgICAgIHRoaXMuX2ZpbGxlZCA9IHZhbDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgbmdBZnRlclZpZXdDaGVja2VkKCkge1xuICAgICAgICBjb25zdCB0aGVtZSA9IHRoaXMudGhlbWVTZXJ2aWNlLmdldENvbXBvbmVudFRoZW1lKHRoaXMuZWxlbWVudCk7XG5cbiAgICAgICAgaWYgKHRoZW1lKSB7XG4gICAgICAgICAgICB0aGlzLl90aGVtZSQubmV4dCh0aGVtZSk7XG4gICAgICAgICAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpIHtcbiAgICAgICAgdGhpcy5fc3Vic2NyaXB0aW9uLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImlneC1pbnB1dC1ncm91cF9fd3JhcHBlclwiICpuZ0lmPVwiaXNUeXBlQm94OyBlbHNlIGJ1bmRsZVwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJidW5kbGVcIj48L25nLWNvbnRhaW5lcj5cbjwvZGl2PlxuXG48ZGl2IGNsYXNzPVwiaWd4LWlucHV0LWdyb3VwX19oaW50XCIgKGNsaWNrKT1cImhpbnRDbGlja0hhbmRsZXIoJGV2ZW50KVwiPlxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cImlneC1oaW50LCBbaWd4SGludF1cIj48L25nLWNvbnRlbnQ+XG48L2Rpdj5cblxuPG5nLXRlbXBsYXRlICNsYWJlbD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaWd4TGFiZWxdXCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNpbnB1dD5cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbaWd4SW5wdXRdXCI+PC9uZy1jb250ZW50PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNwcmVmaXg+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiaWd4LXByZWZpeCwgW2lneFByZWZpeF1cIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI3VwbG9hZEJ1dHRvbj5cbiAgICA8aWd4LXByZWZpeCAqbmdJZj1cImlzRmlsZVR5cGVcIiBjbGFzcz1cImlneC1pbnB1dC1ncm91cF9fdXBsb2FkLWJ1dHRvblwiPlxuICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBpZ3hCdXR0b249XCJjb250YWluZWRcIlxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAoY2xpY2spPVwidXBsb2FkQnV0dG9uSGFuZGxlcigpXCJcbiAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkaXNhYmxlZFwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpZ3gtaW5wdXQtZ3JvdXBfX3VwbG9hZC1idXR0b24nOiBpc1R5cGVMaW5lIH1cIlxuICAgICAgICA+XG4gICAgICAgICAgICB7eyByZXNvdXJjZVN0cmluZ3MuaWd4X2lucHV0X3VwbG9hZF9idXR0b24gfX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgPC9pZ3gtcHJlZml4PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNmaWxlcz5cbiAgICA8ZGl2XG4gICAgICAgICpuZ0lmPVwiaXNGaWxlVHlwZVwiXG4gICAgICAgIGNsYXNzPVwiaWd4LWlucHV0LWdyb3VwX19maWxlLWlucHV0XCJcbiAgICAgICAgW3RpdGxlXT1cImZpbGVOYW1lc1wiXG4gICAgPlxuICAgICAgICA8c3Bhbj57eyBmaWxlTmFtZXMgfX08L3NwYW4+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2NsZWFyPlxuICAgIDxpZ3gtc3VmZml4XG4gICAgICAgIGNsYXNzPVwiaWd4LWlucHV0LWdyb3VwX19jbGVhci1pY29uXCJcbiAgICAgICAgKm5nSWY9XCJpc0ZpbGVUeXBlICYmIGlzRmlsbGVkXCJcbiAgICAgICAgKGNsaWNrKT1cImNsZWFyVmFsdWVIYW5kbGVyKClcIlxuICAgICAgICAoa2V5ZG93bi5FbnRlcik9XCJjbGVhclZhbHVlSGFuZGxlcigpXCJcbiAgICAgICAgdGl0bGU9XCJjbGVhciBmaWxlc1wiXG4gICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgPlxuICAgICAgICA8aWd4LWljb24gZmFtaWx5PVwiZGVmYXVsdFwiIG5hbWU9XCJpbnB1dF9jbGVhclwiPjwvaWd4LWljb24+XG4gICAgPC9pZ3gtc3VmZml4PlxuPC9uZy10ZW1wbGF0ZT5cblxuPG5nLXRlbXBsYXRlICNzdWZmaXg+XG4gICAgPG5nLWNvbnRlbnQgc2VsZWN0PVwiaWd4LXN1ZmZpeCwgW2lneFN1ZmZpeF1cIj48L25nLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI21hdGVyaWFsQnVuZGxlPlxuICAgIDxkaXYgY2xhc3M9XCJpZ3gtaW5wdXQtZ3JvdXBfX2J1bmRsZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LWlucHV0LWdyb3VwX19idW5kbGUtc3RhcnRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcmVmaXhcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ1cGxvYWRCdXR0b25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpZ3gtaW5wdXQtZ3JvdXBfX25vdGNoXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImxhYmVsXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlneC1pbnB1dC1ncm91cF9fYnVuZGxlLW1haW5cIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJpbnB1dFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImZpbGVzXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpZ3gtaW5wdXQtZ3JvdXBfX2ZpbGxlclwiPjwvZGl2PlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpZ3gtaW5wdXQtZ3JvdXBfX2J1bmRsZS1lbmRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjbGVhclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN1ZmZpeFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LWlucHV0LWdyb3VwX19saW5lXCIgKm5nSWY9XCJoYXNCb3JkZXJcIj48L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjZmx1ZW50QnVuZGxlPlxuICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJsYWJlbFwiPjwvbmctY29udGFpbmVyPlxuXG4gICAgPGRpdiBjbGFzcz1cImlneC1pbnB1dC1ncm91cF9fYnVuZGxlXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpZ3gtaW5wdXQtZ3JvdXBfX2J1bmRsZS1zdGFydFwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInByZWZpeFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInVwbG9hZEJ1dHRvblwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpZ3gtaW5wdXQtZ3JvdXBfX2J1bmRsZS1tYWluXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiaW5wdXRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWxlc1wiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LWlucHV0LWdyb3VwX19idW5kbGUtZW5kXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiY2xlYXJcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzdWZmaXhcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImlneC1pbnB1dC1ncm91cF9fbGluZVwiICpuZ0lmPVwiaGFzQm9yZGVyXCI+PC9kaXY+XG4gICAgPC9kaXY+XG48L25nLXRlbXBsYXRlPlxuXG48bmctdGVtcGxhdGUgI2Jvb3RzdHJhcEJ1bmRsZT5cbiAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwibGFiZWxcIj48L25nLWNvbnRhaW5lcj5cblxuICAgIDxkaXYgY2xhc3M9XCJpZ3gtaW5wdXQtZ3JvdXBfX2J1bmRsZVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaWd4LWlucHV0LWdyb3VwX19idW5kbGUtc3RhcnRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJwcmVmaXhcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJ1cGxvYWRCdXR0b25cIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cImlucHV0XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJmaWxlc1wiPjwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpZ3gtaW5wdXQtZ3JvdXBfX2J1bmRsZS1lbmRcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJjbGVhclwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInN1ZmZpeFwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbjwvbmctdGVtcGxhdGU+XG5cbjxuZy10ZW1wbGF0ZSAjYnVuZGxlPlxuICAgIDxuZy1jb250YWluZXIgW25nU3dpdGNoXT1cInRoZW1lXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidib290c3RyYXAnXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiYm9vdHN0cmFwQnVuZGxlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidmbHVlbnQnXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmx1ZW50QnVuZGxlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIidpbmRpZ28nXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwiZmx1ZW50QnVuZGxlXCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoRGVmYXVsdD5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJtYXRlcmlhbEJ1bmRsZVwiPjwvbmctY29udGFpbmVyPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
@@ -9283,7 +9283,6 @@ class IgxIconService {
9283
9283
  const icon = this._iconRefs.get(family)?.get(name);
9284
9284
  const iconFamily = icon?.family ?? family;
9285
9285
  const _name = icon?.name ?? name;
9286
- const type = icon?.type ?? this.familyType(iconFamily);
9287
9286
  const className = this.familyClassName(iconFamily);
9288
9287
  const prefix = this._families.get(iconFamily)?.prefix;
9289
9288
  // Handle name prefixes
@@ -9291,6 +9290,8 @@ class IgxIconService {
9291
9290
  if (iconName && prefix) {
9292
9291
  iconName = _name.includes(prefix) ? _name : `${prefix}${_name}`;
9293
9292
  }
9293
+ const cached = this.isSvgIconCached(iconName, iconFamily);
9294
+ const type = cached ? "svg" : icon?.type ?? this.familyType(iconFamily);
9294
9295
  return {
9295
9296
  className,
9296
9297
  type,
@@ -9298,6 +9299,12 @@ class IgxIconService {
9298
9299
  family: iconFamily,
9299
9300
  };
9300
9301
  }
9302
+ getOrCreateSvgFamily(family) {
9303
+ if (!this._families.has(family)) {
9304
+ this._families.set(family, { className: family, type: "svg" });
9305
+ }
9306
+ return this._families.get(family);
9307
+ }
9301
9308
  /**
9302
9309
  * Adds an SVG image to the cache. SVG source is an url.
9303
9310
  * ```typescript
@@ -9315,7 +9322,7 @@ class IgxIconService {
9315
9322
  throw new Error(`The URL provided was not trusted as a resource URL: "${url}".`);
9316
9323
  }
9317
9324
  if (!this.isSvgIconCached(name, family)) {
9318
- this._families.set(family, { className: family, type: "svg" });
9325
+ this.getOrCreateSvgFamily(family);
9319
9326
  this.fetchSvg(url).subscribe((res) => {
9320
9327
  this.cacheSvgIcon(name, res, family, stripMeta);
9321
9328
  });
@@ -9332,12 +9339,12 @@ class IgxIconService {
9332
9339
  * <path d="M74 74h54v54H74" /></svg>', 'svg-flags');
9333
9340
  * ```
9334
9341
  */
9335
- addSvgIconFromText(name, iconText, family = "", stripMeta = false) {
9342
+ addSvgIconFromText(name, iconText, family = this._defaultFamily.name, stripMeta = false) {
9336
9343
  if (name && iconText) {
9337
9344
  if (this.isSvgIconCached(name, family)) {
9338
9345
  return;
9339
9346
  }
9340
- this._families.set(family, { className: family, type: "svg" });
9347
+ this.getOrCreateSvgFamily(family);
9341
9348
  this.cacheSvgIcon(name, iconText, family, stripMeta);
9342
9349
  }
9343
9350
  else {
@@ -9350,10 +9357,9 @@ class IgxIconService {
9350
9357
  * const isSvgCached = this.iconService.isSvgIconCached('aruba', 'svg-flags');
9351
9358
  * ```
9352
9359
  */
9353
- isSvgIconCached(name, family = "") {
9354
- const familyClassName = this.familyClassName(family);
9355
- if (this._cachedIcons.has(familyClassName)) {
9356
- const familyRegistry = this._cachedIcons.get(familyClassName);
9360
+ isSvgIconCached(name, family) {
9361
+ if (this._cachedIcons.has(family)) {
9362
+ const familyRegistry = this._cachedIcons.get(family);
9357
9363
  return familyRegistry.has(name);
9358
9364
  }
9359
9365
  return false;
@@ -9364,9 +9370,8 @@ class IgxIconService {
9364
9370
  * const svgIcon = this.iconService.getSvgIcon('aruba', 'svg-flags');
9365
9371
  * ```
9366
9372
  */
9367
- getSvgIcon(name, family = "") {
9368
- const familyClassName = this.familyClassName(family);
9369
- return this._cachedIcons.get(familyClassName)?.get(name);
9373
+ getSvgIcon(name, family) {
9374
+ return this._cachedIcons.get(family)?.get(name);
9370
9375
  }
9371
9376
  /**
9372
9377
  * @hidden
@@ -9379,13 +9384,11 @@ class IgxIconService {
9379
9384
  * @hidden
9380
9385
  */
9381
9386
  cacheSvgIcon(name, value, family = this._defaultFamily.name, stripMeta) {
9382
- family = family ? family : this._defaultFamily.name;
9383
9387
  if (this._platformUtil?.isBrowser && name && value) {
9384
9388
  const doc = this._domParser.parseFromString(value, "image/svg+xml");
9385
9389
  const svg = doc.querySelector("svg");
9386
9390
  if (!this._cachedIcons.has(family)) {
9387
9391
  this._cachedIcons.set(family, new Map());
9388
- this._iconLoaded.next({ name, value, family });
9389
9392
  }
9390
9393
  if (svg) {
9391
9394
  svg.setAttribute("fit", "");
@@ -9402,6 +9405,7 @@ class IgxIconService {
9402
9405
  }
9403
9406
  const safeSvg = this._sanitizer.bypassSecurityTrustHtml(svg.outerHTML);
9404
9407
  this._cachedIcons.get(family).set(name, safeSvg);
9408
+ this._iconLoaded.next({ name, value, family });
9405
9409
  }
9406
9410
  }
9407
9411
  }
@@ -10037,14 +10041,10 @@ class IgxInputGroupComponent {
10037
10041
  }
10038
10042
  /** @hidden @internal */
10039
10043
  ngAfterViewChecked() {
10040
- if (!this._theme) {
10041
- const theme = this.theme ?? this.themeService.getComponentTheme(this.element);
10042
- if (theme) {
10043
- Promise.resolve().then(() => {
10044
- this._theme$.next(theme);
10045
- this.cdr.markForCheck();
10046
- });
10047
- }
10044
+ const theme = this.themeService.getComponentTheme(this.element);
10045
+ if (theme) {
10046
+ this._theme$.next(theme);
10047
+ this.cdr.markForCheck();
10048
10048
  }
10049
10049
  }
10050
10050
  /** @hidden @internal */