@tuki-io/tuki-widgets 0.0.219-dev.62 → 0.0.219-dev.63

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 (103) hide show
  1. package/di2mt/widgets/site-upgrade/site-upgrade.module.d.ts +9 -8
  2. package/di2mt/widgets/user-upgrade/user-upgrade.module.d.ts +11 -10
  3. package/esm2020/di2mt/widgets/site-upgrade/site-upgrade-data-table/site-upgrade-data-table.component.mjs +12 -11
  4. package/esm2020/di2mt/widgets/site-upgrade/site-upgrade.module.mjs +7 -3
  5. package/esm2020/di2mt/widgets/user-upgrade/user-upgrade-data-table/user-upgrade-data-table.component.mjs +12 -11
  6. package/esm2020/di2mt/widgets/user-upgrade/user-upgrade.module.mjs +7 -3
  7. package/esm2020/locations/src/locations.component.mjs +11 -11
  8. package/esm2020/locations/src/locations.module.mjs +7 -6
  9. package/esm2020/meetings/src/components/meeting-spaces/meeting-space/meeting-space.component.mjs +9 -9
  10. package/esm2020/meetings/src/components/meeting-spaces/meeting-spaces.component.mjs +17 -9
  11. package/esm2020/meetings/src/meetings.module.mjs +7 -6
  12. package/esm2020/shared/public-api.mjs +2 -1
  13. package/esm2020/shared/src/ui/tk-loader/tk-loader.component.mjs +34 -0
  14. package/esm2020/user-creation/src/user-creation.module.mjs +7 -6
  15. package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-details-step/user-details-step.component.mjs +16 -16
  16. package/esm2020/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.mjs +27 -10
  17. package/esm2020/user-creation/src/widgets/user-creation-wizard/user-creation-wizard.component.mjs +11 -11
  18. package/esm2020/user-device-manage/src/associate-lines/associate-lines.component.mjs +10 -10
  19. package/esm2020/user-device-manage/src/device-manage-widget.component.mjs +11 -11
  20. package/esm2020/user-device-manage/src/device-settings/device-settings.component.mjs +9 -9
  21. package/esm2020/user-device-manage/src/line-key-config/line-key-config.component.mjs +9 -9
  22. package/esm2020/user-device-manage/src/user-device-manage.module.mjs +8 -7
  23. package/esm2020/user-manage/src/user-manage-widget.component.mjs +12 -12
  24. package/esm2020/user-manage/src/user-manage.module.mjs +8 -7
  25. package/esm2020/users-list/src/classes/site-option.mjs +2 -0
  26. package/esm2020/users-list/src/components/table-toolbar/table-toolbar.component.mjs +18 -4
  27. package/esm2020/users-list/src/move-user-wizard/move-user-stepper/move-user-stepper.component.mjs +15 -15
  28. package/esm2020/users-list/src/move-user-wizard/move-user-wizard.component.mjs +5 -5
  29. package/esm2020/users-list/src/users-list.component.mjs +104 -46
  30. package/esm2020/users-list/src/users-list.module.mjs +7 -6
  31. package/esm2020/workspaces/src/components/workspace-detail/workspace-detail.component.mjs +7 -7
  32. package/esm2020/workspaces/src/components/workspace-device-detail/workspace-device-detail.component.mjs +9 -9
  33. package/esm2020/workspaces/src/components/workspaces-filters/workspaces-filters.component.mjs +13 -3
  34. package/esm2020/workspaces/src/types/workspace.mjs +6 -2
  35. package/esm2020/workspaces/src/workspaces.component.mjs +26 -8
  36. package/esm2020/workspaces/src/workspaces.module.mjs +7 -6
  37. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs +26 -18
  38. package/fesm2015/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  39. package/fesm2015/tuki-io-tuki-widgets-locations.mjs +16 -24
  40. package/fesm2015/tuki-io-tuki-widgets-locations.mjs.map +1 -1
  41. package/fesm2015/tuki-io-tuki-widgets-meetings.mjs +31 -33
  42. package/fesm2015/tuki-io-tuki-widgets-meetings.mjs.map +1 -1
  43. package/fesm2015/tuki-io-tuki-widgets-shared.mjs +31 -1
  44. package/fesm2015/tuki-io-tuki-widgets-shared.mjs.map +1 -1
  45. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs +52 -43
  46. package/fesm2015/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
  47. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs +43 -51
  48. package/fesm2015/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  49. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs +20 -29
  50. package/fesm2015/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  51. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs +136 -73
  52. package/fesm2015/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  53. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs +64 -37
  54. package/fesm2015/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
  55. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs +26 -18
  56. package/fesm2020/tuki-io-tuki-widgets-di2mt.mjs.map +1 -1
  57. package/fesm2020/tuki-io-tuki-widgets-locations.mjs +16 -24
  58. package/fesm2020/tuki-io-tuki-widgets-locations.mjs.map +1 -1
  59. package/fesm2020/tuki-io-tuki-widgets-meetings.mjs +31 -33
  60. package/fesm2020/tuki-io-tuki-widgets-meetings.mjs.map +1 -1
  61. package/fesm2020/tuki-io-tuki-widgets-shared.mjs +31 -1
  62. package/fesm2020/tuki-io-tuki-widgets-shared.mjs.map +1 -1
  63. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs +51 -43
  64. package/fesm2020/tuki-io-tuki-widgets-user-creation.mjs.map +1 -1
  65. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs +43 -51
  66. package/fesm2020/tuki-io-tuki-widgets-user-device-manage.mjs.map +1 -1
  67. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs +20 -29
  68. package/fesm2020/tuki-io-tuki-widgets-user-manage.mjs.map +1 -1
  69. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs +134 -71
  70. package/fesm2020/tuki-io-tuki-widgets-users-list.mjs.map +1 -1
  71. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs +64 -37
  72. package/fesm2020/tuki-io-tuki-widgets-workspaces.mjs.map +1 -1
  73. package/locations/src/locations.module.d.ts +2 -2
  74. package/meetings/src/meetings.module.d.ts +2 -2
  75. package/package.json +1 -1
  76. package/shared/public-api.d.ts +1 -0
  77. package/shared/src/ui/tk-loader/tk-loader.component.d.ts +15 -0
  78. package/user-creation/src/user-creation.module.d.ts +3 -3
  79. package/user-creation/src/widgets/user-creation-wizard/components/user-template-step/user-template-step.component.d.ts +2 -0
  80. package/user-device-manage/src/user-device-manage.module.d.ts +16 -16
  81. package/user-manage/src/user-manage.module.d.ts +12 -13
  82. package/users-list/src/classes/site-option.d.ts +4 -0
  83. package/users-list/src/components/table-toolbar/table-toolbar.component.d.ts +6 -1
  84. package/users-list/src/users-list.component.d.ts +11 -1
  85. package/users-list/src/users-list.module.d.ts +9 -9
  86. package/workspaces/src/components/workspaces-filters/workspaces-filters.component.d.ts +9 -1
  87. package/workspaces/src/types/workspace.d.ts +5 -0
  88. package/workspaces/src/workspaces.component.d.ts +4 -1
  89. package/workspaces/src/workspaces.module.d.ts +2 -2
  90. package/esm2020/locations/src/utils/app-loader/app-loader.mjs +0 -14
  91. package/esm2020/meetings/src/utils/app-loader/app-loader.mjs +0 -14
  92. package/esm2020/user-creation/src/utils/app-loader/app-loader.mjs +0 -14
  93. package/esm2020/user-device-manage/src/utils/app-loader/app-loader.mjs +0 -14
  94. package/esm2020/user-manage/src/utils/app-loader/app-loader.mjs +0 -14
  95. package/esm2020/users-list/src/utils/app-loader/app-loader.mjs +0 -14
  96. package/esm2020/workspaces/src/utils/app-loader/app-loader.mjs +0 -14
  97. package/locations/src/utils/app-loader/app-loader.d.ts +0 -6
  98. package/meetings/src/utils/app-loader/app-loader.d.ts +0 -6
  99. package/user-creation/src/utils/app-loader/app-loader.d.ts +0 -6
  100. package/user-device-manage/src/utils/app-loader/app-loader.d.ts +0 -6
  101. package/user-manage/src/utils/app-loader/app-loader.d.ts +0 -6
  102. package/users-list/src/utils/app-loader/app-loader.d.ts +0 -6
  103. package/workspaces/src/utils/app-loader/app-loader.d.ts +0 -6
@@ -7,12 +7,12 @@ import * as i2 from "../services/api.service";
7
7
  import * as i3 from "../services/device.service";
8
8
  import * as i4 from "../services/site-settings.service";
9
9
  import * as i5 from "@angular/router";
10
- import * as i6 from "@angular/common";
11
- import * as i7 from "@angular/forms";
12
- import * as i8 from "@angular/material/divider";
13
- import * as i9 from "@angular/material/tooltip";
14
- import * as i10 from "@angular/material/slide-toggle";
15
- import * as i11 from "../utils/app-loader/app-loader";
10
+ import * as i6 from "@tuki-io/tuki-widgets/shared";
11
+ import * as i7 from "@angular/common";
12
+ import * as i8 from "@angular/forms";
13
+ import * as i9 from "@angular/material/divider";
14
+ import * as i10 from "@angular/material/tooltip";
15
+ import * as i11 from "@angular/material/slide-toggle";
16
16
  export class DeviceSettingsComponent {
17
17
  get lines() {
18
18
  return this.device?.lines?.map((line) => line?.extension || line?.number).filter(Boolean).join(' | ') || 'N/A';
@@ -187,10 +187,10 @@ export class DeviceSettingsComponent {
187
187
  }
188
188
  }
189
189
  DeviceSettingsComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DeviceSettingsComponent, deps: [{ token: i1.UserService }, { token: i2.APIService }, { token: i3.DeviceService }, { token: i4.SiteSettingsService }, { token: i5.Router }], target: i0.ɵɵFactoryTarget.Component });
190
- DeviceSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DeviceSettingsComponent, selector: "app-device-settings", inputs: { token: "token", host: "host", siteId: "siteId", userId: "userId", deviceName: "deviceName" }, outputs: { goBack: "goBack" }, ngImport: i0, template: "<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div class=\"go-back-box\" (click)=\"onGoBack()\">\r\n <div class=\"go-back-box-container\">\r\n <span class=\"app-icon icon-webex-left-arrow\"></span>\r\n <span class=\"go-back-title\">Device General Info</span>\r\n </div>\r\n</div>\r\n\r\n<div class=\"device-settings\">\r\n <div class=\"panel-header\">\r\n <span class=\"panel-header__title\">Device Settings</span>\r\n </div>\r\n\r\n <div class=\"panel-body\">\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Details</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row\">\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ device?.name || 'N/A' }}</span>\r\n <span class=\"extra-info\">Name</span>\r\n </div>\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ device?.model || 'N/A' }}</span>\r\n <span class=\"extra-info\">Type</span>\r\n </div>\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ device?.description || 'N/A' }}</span>\r\n <span class=\"extra-info\">Device description</span>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"detail-row\">\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ lines }}</span>\r\n <span class=\"extra-info\">Line</span>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"detail-row flex-column\" style=\"gap: 0.5rem;\">\r\n <span class=\"text-description\">PLAR service</span>\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"plarService\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Device info</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Registration status</div>\r\n <div class=\"input-holder__plain-value text-description\">{{ device?.form?.get('registrationStatus')?.value || 'Unknown' }}</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">IP Address</div>\r\n <div class=\"input-holder__plain-value text-description\">{{ device?.ipAddress || 'None' }}</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Description</div>\r\n <input class=\"plain-input\" [formControl]=\"description\">\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Protocol</div>\r\n <div class=\"input-holder__plain-value text-description\">SIP</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Softkey template</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" name=\"cluster\" [formControl]=\"softkeyTemplate\">\r\n <option *ngFor=\"let cluster of softKeys\" [value]=\"cluster\">{{ cluster }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Button template</div>\r\n <div class=\"input-holder__plain-value text-description\">Standard 8851 SIP</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Location</div>\r\n <div class=\"input-holder__plain-value text-description\">Paris_ios</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Device pool</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" name=\"devicePool\" [formControl]=\"devicePool\">\r\n <option *ngFor=\"let pool of devicePools\" [value]=\"pool\">{{ pool }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Device CSS</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" name=\"deviceCss\" [formControl]=\"deviceCss\">\r\n <option *ngFor=\"let css of cssOptions\" [value]=\"css\">{{ css }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"input-holder\">\r\n <div class=\"input-holder__name\">Firmware version</div>\r\n <div class=\"input-holder__plain-value text-description\">{{ device?.softwareVersion || 'Unknown' }}</div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Media Settings</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Media Resource Group List</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Network Hold MOH Audio Source</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">User Hold MOH Audio Source</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">AAR Settings</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">AAR Calling Search Space</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">AAR Group</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Device Additional Information</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Common Phone Profile</div>\r\n <div class=\"input-holder__plain-value text-description\">Standard Common Phone Profile</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">User Locale</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Enable Extension Mobility</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"enableExtensionMobility\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Privacy</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Mobility user ID</div>\r\n <div class=\"input-holder__plain-value text-description\">Adam.Allen</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Always Use Prime Line</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Geolocation</div>\r\n <div class=\"input-holder__plain-value text-description\">&nbsp;</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Logged Into Hunt Group</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"loggedIntoHuntGroup\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Remote Device</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"remoteDevice\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Phone Security Profile</div>\r\n <div class=\"input-holder__plain-value text-description\">Cisco Dual Mode for iPhone - Standard SIP Non-Secure Profile</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Network Locale</div>\r\n <div class=\"input-holder__plain-value text-description\">China</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Built In Bridge</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Device Mobility Mode</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Use Trusted Relay Point</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Always Use Prime Line for Voice Message</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Ignore Presentation Indicators( internal calls only )</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"ignorePresentationIndicators\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">Hot line Device</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"hotlineDevice\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Number Presentation Transformation</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">\r\n Caller ID For Calls From This Phone\r\n <i class=\"icon info-icon rem1\" [matTooltip]=\"'Controls how the caller ID is presented for calls placed from this phone.'\"></i>\r\n </div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"callerIdForCallsFromThisPhone\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">\r\n Remote Number\r\n <i class=\"icon info-icon rem1\" [matTooltip]=\"'Controls how the remote number is presented for this phone.'\"></i>\r\n </div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"remoteNumber\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n\r\n <div class=\"settings-footer\">\r\n <div class=\"settings-footer__actions\">\r\n <button type=\"button\" class=\"btn-outline\" (click)=\"onCancel()\">Cancel</button>\r\n <button type=\"button\" class=\"btn-filled\" [disabled]=\"!hasChanges\" (click)=\"onSave()\">Save</button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";*{margin:0}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center;transition:all .15s ease-out}.icon-webex-left-arrow{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cg id%3D%22arrow-left%22%3E%0D%3Cpath id%3D%22Vector%22 d%3D%22M5.70746 7.99987L11.3539 2.35352C11.4453 2.25928 11.496 2.13287 11.495 2.00159C11.494 1.8703 11.4414 1.74467 11.3486 1.65183C11.2558 1.55899 11.1301 1.50639 10.9988 1.50539C10.8676 1.50438 10.7411 1.55506 10.6469 1.64647L4.64691 7.64647C4.55316 7.74023 4.50049 7.8674 4.50049 7.99999C4.50049 8.13259 4.55316 8.25975 4.64691 8.35352L10.6469 14.3535C10.6931 14.4011 10.7482 14.439 10.8092 14.4651C10.8702 14.4912 10.9357 14.5049 11.002 14.5054C11.0683 14.5059 11.134 14.4932 11.1954 14.468C11.2567 14.4429 11.3125 14.4058 11.3593 14.3589C11.4062 14.312 11.4433 14.2563 11.4685 14.1949C11.4936 14.1336 11.5063 14.0679 11.5058 14.0016C11.5053 13.9353 11.4916 13.8697 11.4655 13.8088C11.4394 13.7478 11.4015 13.6926 11.3539 13.6465L5.70746 7.99987Z%22 fill%3D%22black%22 fill-opacity%3D%220.95%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\")}.go-back-box{background:white;border-bottom:rgba(0,0,0,.2) 1px solid;height:60px;width:100%;line-height:60px;cursor:pointer}.go-back-box-container{width:95%;margin:auto;margin-left:.5rem;display:flex;justify-content:flex-start}.go-back-box-container .icon-webex-left-arrow,.go-back-box-container .go-back-title{display:block;height:60px}.go-back-box-container .go-back-title{line-height:61px}.go-back-title{display:inline-block;margin:0 10px}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;background:linear-gradient(90deg,#0d56aa,#0d56ab)}.panel-header__title{font-size:1rem;font-weight:500;font-family:Poppins,Poppins,sans-serif;color:#fff}.device-settings{display:flex;flex-direction:column;min-height:100%;background:#F3F6F6;font-family:Poppins,Poppins,sans-serif}.device-settings .panel-body{flex:1;padding:2rem 1.5rem;display:flex;flex-direction:column;gap:3rem}.device-settings .panel-body .card{width:50rem;margin:0 auto;display:flex;flex-direction:column;padding:1.5rem;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;background:#ffffff;min-width:0;font-family:Poppins,Poppins,sans-serif;gap:1.5rem;flex:1}.device-settings .panel-body .card.vertical-card{flex-direction:row}.device-settings .panel-body .card.vertical-card .main-content{gap:0}.device-settings .panel-body .card.vertical-card .main-content .mat-divider{border-top-color:#0003!important}.device-settings .panel-body .card.vertical-card .main-content .input-holder{min-height:2rem;box-sizing:content-box;display:flex;gap:3.25rem}.device-settings .panel-body .card.vertical-card .main-content .input-holder.input-holder-top{padding:.75rem 0 0}.device-settings .panel-body .card.vertical-card .main-content .input-holder.input-holder-bottom{padding:0 0 .75rem}.device-settings .panel-body .card.vertical-card .main-content .input-holder.input-holder-top-bottom{padding:.75rem 0}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__name{max-width:150px;width:150px;flex-shrink:0;color:#000000f2;font-size:.875rem;font-weight:400;white-space:normal;overflow-wrap:break-word}.device-settings .panel-body .card.vertical-card .main-content .input-holder input{width:200px;height:21px;padding:4px 12px;box-sizing:content-box;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;border-radius:8px;font-family:inherit;font-size:.875rem;font-weight:400;color:#000000f2}.device-settings .panel-body .card.vertical-card .main-content .input-holder input:hover{background-color:#0000001f!important}.device-settings .panel-body .card.vertical-card .main-content .input-holder input:focus{display:flex;align-items:center;color:#000000b3;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;cursor:pointer;flex-wrap:wrap;gap:.5rem;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;outline:none}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap{position:relative;display:flex;align-items:center}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select{width:200px;appearance:none;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;border-radius:6px;font-family:inherit;font-size:.8125rem;color:#000000f2;cursor:pointer;height:21px;padding:4px 12px;box-sizing:content-box}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select:focus{outline:none;border-color:#0006}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select:hover{background-color:#0000001f!important}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select:focus{color:#000000b3;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;cursor:pointer;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;outline:none}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select-icon{position:absolute;right:.5rem;font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.device-settings .panel-body .card .header{display:flex;align-items:center;justify-content:space-between;align-items:start;width:180px}.device-settings .panel-body .card .header .title{font-weight:500;font-size:1rem;font-family:Poppins,Poppins,sans-serif;color:#000000f2}.device-settings .panel-body .card .main-content{display:flex;flex-direction:column;min-width:0;gap:1.5rem;flex:1}.device-settings .panel-body .card .main-content .detail-row{display:flex;flex:1;min-width:0;gap:2rem}.device-settings .panel-body .card .main-content .detail-row .side{width:200px;display:flex;flex-direction:column;flex:1;gap:.25rem}.device-settings .panel-body .card .main-content .detail-row .side .main-value{font-weight:400;font-size:.875rem;color:#000000f2}.device-settings .panel-body .card .main-content .detail-row .side .extra-info{font-weight:400;font-size:.75rem;color:#333}.device-settings .panel-body .card .main-content .input-holder{display:grid;grid-template-columns:45% 55%;align-items:center}.device-settings .panel-body .card .main-content .input-holder__name{font-weight:400;font-size:.875rem}.device-settings .panel-body .card .main-content .input-holder__input .mat-form-field{width:100%;max-width:16rem}.device-settings .panel-body .card .main-content .input-holder__input .plain-input{width:100%;max-width:16rem;font-size:.875rem;padding:.5rem 0;border:none;border-bottom:1px solid rgba(0,0,0,.95);background:transparent;outline:none}.flex-column{display:flex;flex-direction:column}.gap-0_75{gap:.75rem}.text-description{font-size:.875rem;font-weight:400}.icon{background-repeat:no-repeat;background-position:center;display:inline-block;background-size:contain}.info-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M15.75 10.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2M16.75 14.5a.75.75 0 0 0-.75-.75h-2a.75.75 0 0 0 0 1.5h1.25v7H13a.75.75 0 0 0 0 1.5h6a.75.75 0 0 0 0-1.5h-2.25zM2.25 16C2.25 8.406 8.406 2.25 16 2.25S29.75 8.406 29.75 16 23.594 29.75 16 29.75 2.25 23.594 2.25 16M16 3.75C9.235 3.75 3.75 9.235 3.75 16S9.235 28.25 16 28.25 28.25 22.765 28.25 16 22.765 3.75 16 3.75%22%2F%3E%3C%2Fsvg%3E\")}.rem1{height:1rem;width:1rem;vertical-align:middle;margin-left:.25rem}.settings-footer{position:sticky;bottom:0;background:#ffffff;border-top:1px solid rgba(0,0,0,.2);padding:1rem 1.5rem}.settings-footer__actions{display:flex;justify-content:flex-end;gap:.75rem;max-width:50rem;margin:0 auto}.btn-outline,.btn-filled{padding:.313rem .75rem;border-radius:50px;font-weight:500;font-size:.875rem;font-family:Poppins,Poppins,sans-serif;cursor:pointer;transition:background-color .1s ease-in-out;white-space:nowrap}.btn-outline{background:#ffffff;border:1px solid rgba(0,0,0,.2);color:#0006}.btn-outline:hover:not(:disabled){background:#f5f5f5}.btn-outline:disabled{color:#babcc5;border-color:#dfe3e7;cursor:not-allowed}.btn-filled{background:rgba(0,0,0,.9490196078);color:#fff;border:1px solid transparent}.btn-filled:hover:not(:disabled){background:#2a2a2a}.btn-filled:disabled{background:#DFE3E7;color:#babcc5;cursor:not-allowed}::ng-deep .device-settings .custom-toggle .mat-slide-toggle-bar{position:relative!important;width:48px!important;height:25px!important;flex-shrink:0!important;border-radius:13px!important;background-color:#ccc!important}::ng-deep .device-settings .custom-toggle .mat-slide-toggle-thumb{height:20px!important;width:20px!important;position:absolute!important;border-radius:50%!important;display:flex!important;align-items:center!important;justify-content:center!important;left:3px!important;top:5px!important;background-color:#fff!important}::ng-deep .device-settings .custom-toggle .mat-slide-toggle-thumb:after{content:\"\\d7\";font-size:14px!important;color:#8e9fb7!important;line-height:1!important;display:block!important;pointer-events:none!important}::ng-deep .device-settings .custom-toggle.mat-checked .mat-slide-toggle-thumb{left:calc(100% - 11px)!important}::ng-deep .device-settings .custom-toggle.mat-checked .mat-slide-toggle-thumb:after{content:\"\\2713\";color:#0d56aa!important;font-weight:700!important;font-size:10px!important}::ng-deep .device-settings .custom-toggle.mat-checked .mat-slide-toggle-bar{background:#1170cf!important}\n"], dependencies: [{ kind: "directive", type: i6.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i6.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i7.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i7.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i7.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i7.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i7.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i7.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i8.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i10.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }, { kind: "component", type: i11.AppLoaderComponent, selector: "app-loader" }] });
190
+ DeviceSettingsComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.10", type: DeviceSettingsComponent, selector: "app-device-settings", inputs: { token: "token", host: "host", siteId: "siteId", userId: "userId", deviceName: "deviceName" }, outputs: { goBack: "goBack" }, ngImport: i0, template: "<tk-loader *ngIf=\"dataPending\"></tk-loader>\r\n<div class=\"go-back-box\" (click)=\"onGoBack()\">\r\n <div class=\"go-back-box-container\">\r\n <span class=\"app-icon icon-webex-left-arrow\"></span>\r\n <span class=\"go-back-title\">Device General Info</span>\r\n </div>\r\n</div>\r\n\r\n<div class=\"device-settings\">\r\n <div class=\"panel-header\">\r\n <span class=\"panel-header__title\">Device Settings</span>\r\n </div>\r\n\r\n <div class=\"panel-body\">\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Details</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row\">\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ device?.name || 'N/A' }}</span>\r\n <span class=\"extra-info\">Name</span>\r\n </div>\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ device?.model || 'N/A' }}</span>\r\n <span class=\"extra-info\">Type</span>\r\n </div>\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ device?.description || 'N/A' }}</span>\r\n <span class=\"extra-info\">Device description</span>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"detail-row\">\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ lines }}</span>\r\n <span class=\"extra-info\">Line</span>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"detail-row flex-column\" style=\"gap: 0.5rem;\">\r\n <span class=\"text-description\">PLAR service</span>\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"plarService\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Device info</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Registration status</div>\r\n <div class=\"input-holder__plain-value text-description\">{{ device?.form?.get('registrationStatus')?.value || 'Unknown' }}</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">IP Address</div>\r\n <div class=\"input-holder__plain-value text-description\">{{ device?.ipAddress || 'None' }}</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Description</div>\r\n <input class=\"plain-input\" [formControl]=\"description\">\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Protocol</div>\r\n <div class=\"input-holder__plain-value text-description\">SIP</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Softkey template</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" name=\"cluster\" [formControl]=\"softkeyTemplate\">\r\n <option *ngFor=\"let cluster of softKeys\" [value]=\"cluster\">{{ cluster }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Button template</div>\r\n <div class=\"input-holder__plain-value text-description\">Standard 8851 SIP</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Location</div>\r\n <div class=\"input-holder__plain-value text-description\">Paris_ios</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Device pool</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" name=\"devicePool\" [formControl]=\"devicePool\">\r\n <option *ngFor=\"let pool of devicePools\" [value]=\"pool\">{{ pool }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Device CSS</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" name=\"deviceCss\" [formControl]=\"deviceCss\">\r\n <option *ngFor=\"let css of cssOptions\" [value]=\"css\">{{ css }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"input-holder\">\r\n <div class=\"input-holder__name\">Firmware version</div>\r\n <div class=\"input-holder__plain-value text-description\">{{ device?.softwareVersion || 'Unknown' }}</div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Media Settings</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Media Resource Group List</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Network Hold MOH Audio Source</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">User Hold MOH Audio Source</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">AAR Settings</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">AAR Calling Search Space</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">AAR Group</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Device Additional Information</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Common Phone Profile</div>\r\n <div class=\"input-holder__plain-value text-description\">Standard Common Phone Profile</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">User Locale</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Enable Extension Mobility</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"enableExtensionMobility\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Privacy</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Mobility user ID</div>\r\n <div class=\"input-holder__plain-value text-description\">Adam.Allen</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Always Use Prime Line</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Geolocation</div>\r\n <div class=\"input-holder__plain-value text-description\">&nbsp;</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Logged Into Hunt Group</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"loggedIntoHuntGroup\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Remote Device</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"remoteDevice\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Phone Security Profile</div>\r\n <div class=\"input-holder__plain-value text-description\">Cisco Dual Mode for iPhone - Standard SIP Non-Secure Profile</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Network Locale</div>\r\n <div class=\"input-holder__plain-value text-description\">China</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Built In Bridge</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Device Mobility Mode</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Use Trusted Relay Point</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Always Use Prime Line for Voice Message</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Ignore Presentation Indicators( internal calls only )</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"ignorePresentationIndicators\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">Hot line Device</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"hotlineDevice\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Number Presentation Transformation</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">\r\n Caller ID For Calls From This Phone\r\n <i class=\"icon info-icon rem1\" [matTooltip]=\"'Controls how the caller ID is presented for calls placed from this phone.'\"></i>\r\n </div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"callerIdForCallsFromThisPhone\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">\r\n Remote Number\r\n <i class=\"icon info-icon rem1\" [matTooltip]=\"'Controls how the remote number is presented for this phone.'\"></i>\r\n </div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"remoteNumber\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n\r\n <div class=\"settings-footer\">\r\n <div class=\"settings-footer__actions\">\r\n <button type=\"button\" class=\"btn-outline\" (click)=\"onCancel()\">Cancel</button>\r\n <button type=\"button\" class=\"btn-filled\" [disabled]=\"!hasChanges\" (click)=\"onSave()\">Save</button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";*{margin:0}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center;transition:all .15s ease-out}.icon-webex-left-arrow{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cg id%3D%22arrow-left%22%3E%0D%3Cpath id%3D%22Vector%22 d%3D%22M5.70746 7.99987L11.3539 2.35352C11.4453 2.25928 11.496 2.13287 11.495 2.00159C11.494 1.8703 11.4414 1.74467 11.3486 1.65183C11.2558 1.55899 11.1301 1.50639 10.9988 1.50539C10.8676 1.50438 10.7411 1.55506 10.6469 1.64647L4.64691 7.64647C4.55316 7.74023 4.50049 7.8674 4.50049 7.99999C4.50049 8.13259 4.55316 8.25975 4.64691 8.35352L10.6469 14.3535C10.6931 14.4011 10.7482 14.439 10.8092 14.4651C10.8702 14.4912 10.9357 14.5049 11.002 14.5054C11.0683 14.5059 11.134 14.4932 11.1954 14.468C11.2567 14.4429 11.3125 14.4058 11.3593 14.3589C11.4062 14.312 11.4433 14.2563 11.4685 14.1949C11.4936 14.1336 11.5063 14.0679 11.5058 14.0016C11.5053 13.9353 11.4916 13.8697 11.4655 13.8088C11.4394 13.7478 11.4015 13.6926 11.3539 13.6465L5.70746 7.99987Z%22 fill%3D%22black%22 fill-opacity%3D%220.95%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\")}.go-back-box{background:white;border-bottom:rgba(0,0,0,.2) 1px solid;height:60px;width:100%;line-height:60px;cursor:pointer}.go-back-box-container{width:95%;margin:auto;margin-left:.5rem;display:flex;justify-content:flex-start}.go-back-box-container .icon-webex-left-arrow,.go-back-box-container .go-back-title{display:block;height:60px}.go-back-box-container .go-back-title{line-height:61px}.go-back-title{display:inline-block;margin:0 10px}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;background:linear-gradient(90deg,#0d56aa,#0d56ab)}.panel-header__title{font-size:1rem;font-weight:500;font-family:Poppins,Poppins,sans-serif;color:#fff}.device-settings{display:flex;flex-direction:column;min-height:100%;background:#F3F6F6;font-family:Poppins,Poppins,sans-serif}.device-settings .panel-body{flex:1;padding:2rem 1.5rem;display:flex;flex-direction:column;gap:3rem}.device-settings .panel-body .card{width:50rem;margin:0 auto;display:flex;flex-direction:column;padding:1.5rem;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;background:#ffffff;min-width:0;font-family:Poppins,Poppins,sans-serif;gap:1.5rem;flex:1}.device-settings .panel-body .card.vertical-card{flex-direction:row}.device-settings .panel-body .card.vertical-card .main-content{gap:0}.device-settings .panel-body .card.vertical-card .main-content .mat-divider{border-top-color:#0003!important}.device-settings .panel-body .card.vertical-card .main-content .input-holder{min-height:2rem;box-sizing:content-box;display:flex;gap:3.25rem}.device-settings .panel-body .card.vertical-card .main-content .input-holder.input-holder-top{padding:.75rem 0 0}.device-settings .panel-body .card.vertical-card .main-content .input-holder.input-holder-bottom{padding:0 0 .75rem}.device-settings .panel-body .card.vertical-card .main-content .input-holder.input-holder-top-bottom{padding:.75rem 0}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__name{max-width:150px;width:150px;flex-shrink:0;color:#000000f2;font-size:.875rem;font-weight:400;white-space:normal;overflow-wrap:break-word}.device-settings .panel-body .card.vertical-card .main-content .input-holder input{width:200px;height:21px;padding:4px 12px;box-sizing:content-box;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;border-radius:8px;font-family:inherit;font-size:.875rem;font-weight:400;color:#000000f2}.device-settings .panel-body .card.vertical-card .main-content .input-holder input:hover{background-color:#0000001f!important}.device-settings .panel-body .card.vertical-card .main-content .input-holder input:focus{display:flex;align-items:center;color:#000000b3;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;cursor:pointer;flex-wrap:wrap;gap:.5rem;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;outline:none}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap{position:relative;display:flex;align-items:center}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select{width:200px;appearance:none;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;border-radius:6px;font-family:inherit;font-size:.8125rem;color:#000000f2;cursor:pointer;height:21px;padding:4px 12px;box-sizing:content-box}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select:focus{outline:none;border-color:#0006}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select:hover{background-color:#0000001f!important}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select:focus{color:#000000b3;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;cursor:pointer;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;outline:none}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select-icon{position:absolute;right:.5rem;font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.device-settings .panel-body .card .header{display:flex;align-items:center;justify-content:space-between;align-items:start;width:180px}.device-settings .panel-body .card .header .title{font-weight:500;font-size:1rem;font-family:Poppins,Poppins,sans-serif;color:#000000f2}.device-settings .panel-body .card .main-content{display:flex;flex-direction:column;min-width:0;gap:1.5rem;flex:1}.device-settings .panel-body .card .main-content .detail-row{display:flex;flex:1;min-width:0;gap:2rem}.device-settings .panel-body .card .main-content .detail-row .side{width:200px;display:flex;flex-direction:column;flex:1;gap:.25rem}.device-settings .panel-body .card .main-content .detail-row .side .main-value{font-weight:400;font-size:.875rem;color:#000000f2}.device-settings .panel-body .card .main-content .detail-row .side .extra-info{font-weight:400;font-size:.75rem;color:#333}.device-settings .panel-body .card .main-content .input-holder{display:grid;grid-template-columns:45% 55%;align-items:center}.device-settings .panel-body .card .main-content .input-holder__name{font-weight:400;font-size:.875rem}.device-settings .panel-body .card .main-content .input-holder__input .mat-form-field{width:100%;max-width:16rem}.device-settings .panel-body .card .main-content .input-holder__input .plain-input{width:100%;max-width:16rem;font-size:.875rem;padding:.5rem 0;border:none;border-bottom:1px solid rgba(0,0,0,.95);background:transparent;outline:none}.flex-column{display:flex;flex-direction:column}.gap-0_75{gap:.75rem}.text-description{font-size:.875rem;font-weight:400}.icon{background-repeat:no-repeat;background-position:center;display:inline-block;background-size:contain}.info-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M15.75 10.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2M16.75 14.5a.75.75 0 0 0-.75-.75h-2a.75.75 0 0 0 0 1.5h1.25v7H13a.75.75 0 0 0 0 1.5h6a.75.75 0 0 0 0-1.5h-2.25zM2.25 16C2.25 8.406 8.406 2.25 16 2.25S29.75 8.406 29.75 16 23.594 29.75 16 29.75 2.25 23.594 2.25 16M16 3.75C9.235 3.75 3.75 9.235 3.75 16S9.235 28.25 16 28.25 28.25 22.765 28.25 16 22.765 3.75 16 3.75%22%2F%3E%3C%2Fsvg%3E\")}.rem1{height:1rem;width:1rem;vertical-align:middle;margin-left:.25rem}.settings-footer{position:sticky;bottom:0;background:#ffffff;border-top:1px solid rgba(0,0,0,.2);padding:1rem 1.5rem}.settings-footer__actions{display:flex;justify-content:flex-end;gap:.75rem;max-width:50rem;margin:0 auto}.btn-outline,.btn-filled{padding:.313rem .75rem;border-radius:50px;font-weight:500;font-size:.875rem;font-family:Poppins,Poppins,sans-serif;cursor:pointer;transition:background-color .1s ease-in-out;white-space:nowrap}.btn-outline{background:#ffffff;border:1px solid rgba(0,0,0,.2);color:#0006}.btn-outline:hover:not(:disabled){background:#f5f5f5}.btn-outline:disabled{color:#babcc5;border-color:#dfe3e7;cursor:not-allowed}.btn-filled{background:rgba(0,0,0,.9490196078);color:#fff;border:1px solid transparent}.btn-filled:hover:not(:disabled){background:#2a2a2a}.btn-filled:disabled{background:#DFE3E7;color:#babcc5;cursor:not-allowed}::ng-deep .device-settings .custom-toggle .mat-slide-toggle-bar{position:relative!important;width:48px!important;height:25px!important;flex-shrink:0!important;border-radius:13px!important;background-color:#ccc!important}::ng-deep .device-settings .custom-toggle .mat-slide-toggle-thumb{height:20px!important;width:20px!important;position:absolute!important;border-radius:50%!important;display:flex!important;align-items:center!important;justify-content:center!important;left:3px!important;top:5px!important;background-color:#fff!important}::ng-deep .device-settings .custom-toggle .mat-slide-toggle-thumb:after{content:\"\\d7\";font-size:14px!important;color:#8e9fb7!important;line-height:1!important;display:block!important;pointer-events:none!important}::ng-deep .device-settings .custom-toggle.mat-checked .mat-slide-toggle-thumb{left:calc(100% - 11px)!important}::ng-deep .device-settings .custom-toggle.mat-checked .mat-slide-toggle-thumb:after{content:\"\\2713\";color:#0d56aa!important;font-weight:700!important;font-size:10px!important}::ng-deep .device-settings .custom-toggle.mat-checked .mat-slide-toggle-bar{background:#1170cf!important}\n"], dependencies: [{ kind: "component", type: i6.TkLoaderComponent, selector: "tk-loader", inputs: ["diameter", "strokeWidth", "backdrop", "color"] }, { kind: "directive", type: i7.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i7.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i8.NgSelectOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.ɵNgSelectMultipleOption, selector: "option", inputs: ["ngValue", "value"] }, { kind: "directive", type: i8.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i8.SelectControlValueAccessor, selector: "select:not([multiple])[formControlName],select:not([multiple])[formControl],select:not([multiple])[ngModel]", inputs: ["compareWith"] }, { kind: "directive", type: i8.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i8.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: i9.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "directive", type: i10.MatTooltip, selector: "[matTooltip]", exportAs: ["matTooltip"] }, { kind: "component", type: i11.MatSlideToggle, selector: "mat-slide-toggle", inputs: ["disabled", "disableRipple", "color", "tabIndex"], exportAs: ["matSlideToggle"] }] });
191
191
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImport: i0, type: DeviceSettingsComponent, decorators: [{
192
192
  type: Component,
193
- args: [{ selector: 'app-device-settings', template: "<app-loader *ngIf=\"dataPending\"></app-loader>\r\n<div class=\"go-back-box\" (click)=\"onGoBack()\">\r\n <div class=\"go-back-box-container\">\r\n <span class=\"app-icon icon-webex-left-arrow\"></span>\r\n <span class=\"go-back-title\">Device General Info</span>\r\n </div>\r\n</div>\r\n\r\n<div class=\"device-settings\">\r\n <div class=\"panel-header\">\r\n <span class=\"panel-header__title\">Device Settings</span>\r\n </div>\r\n\r\n <div class=\"panel-body\">\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Details</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row\">\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ device?.name || 'N/A' }}</span>\r\n <span class=\"extra-info\">Name</span>\r\n </div>\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ device?.model || 'N/A' }}</span>\r\n <span class=\"extra-info\">Type</span>\r\n </div>\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ device?.description || 'N/A' }}</span>\r\n <span class=\"extra-info\">Device description</span>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"detail-row\">\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ lines }}</span>\r\n <span class=\"extra-info\">Line</span>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"detail-row flex-column\" style=\"gap: 0.5rem;\">\r\n <span class=\"text-description\">PLAR service</span>\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"plarService\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Device info</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Registration status</div>\r\n <div class=\"input-holder__plain-value text-description\">{{ device?.form?.get('registrationStatus')?.value || 'Unknown' }}</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">IP Address</div>\r\n <div class=\"input-holder__plain-value text-description\">{{ device?.ipAddress || 'None' }}</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Description</div>\r\n <input class=\"plain-input\" [formControl]=\"description\">\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Protocol</div>\r\n <div class=\"input-holder__plain-value text-description\">SIP</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Softkey template</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" name=\"cluster\" [formControl]=\"softkeyTemplate\">\r\n <option *ngFor=\"let cluster of softKeys\" [value]=\"cluster\">{{ cluster }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Button template</div>\r\n <div class=\"input-holder__plain-value text-description\">Standard 8851 SIP</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Location</div>\r\n <div class=\"input-holder__plain-value text-description\">Paris_ios</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Device pool</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" name=\"devicePool\" [formControl]=\"devicePool\">\r\n <option *ngFor=\"let pool of devicePools\" [value]=\"pool\">{{ pool }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Device CSS</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" name=\"deviceCss\" [formControl]=\"deviceCss\">\r\n <option *ngFor=\"let css of cssOptions\" [value]=\"css\">{{ css }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"input-holder\">\r\n <div class=\"input-holder__name\">Firmware version</div>\r\n <div class=\"input-holder__plain-value text-description\">{{ device?.softwareVersion || 'Unknown' }}</div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Media Settings</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Media Resource Group List</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Network Hold MOH Audio Source</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">User Hold MOH Audio Source</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">AAR Settings</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">AAR Calling Search Space</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">AAR Group</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Device Additional Information</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Common Phone Profile</div>\r\n <div class=\"input-holder__plain-value text-description\">Standard Common Phone Profile</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">User Locale</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Enable Extension Mobility</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"enableExtensionMobility\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Privacy</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Mobility user ID</div>\r\n <div class=\"input-holder__plain-value text-description\">Adam.Allen</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Always Use Prime Line</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Geolocation</div>\r\n <div class=\"input-holder__plain-value text-description\">&nbsp;</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Logged Into Hunt Group</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"loggedIntoHuntGroup\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Remote Device</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"remoteDevice\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Phone Security Profile</div>\r\n <div class=\"input-holder__plain-value text-description\">Cisco Dual Mode for iPhone - Standard SIP Non-Secure Profile</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Network Locale</div>\r\n <div class=\"input-holder__plain-value text-description\">China</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Built In Bridge</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Device Mobility Mode</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Use Trusted Relay Point</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Always Use Prime Line for Voice Message</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Ignore Presentation Indicators( internal calls only )</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"ignorePresentationIndicators\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">Hot line Device</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"hotlineDevice\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Number Presentation Transformation</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">\r\n Caller ID For Calls From This Phone\r\n <i class=\"icon info-icon rem1\" [matTooltip]=\"'Controls how the caller ID is presented for calls placed from this phone.'\"></i>\r\n </div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"callerIdForCallsFromThisPhone\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">\r\n Remote Number\r\n <i class=\"icon info-icon rem1\" [matTooltip]=\"'Controls how the remote number is presented for this phone.'\"></i>\r\n </div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"remoteNumber\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n\r\n <div class=\"settings-footer\">\r\n <div class=\"settings-footer__actions\">\r\n <button type=\"button\" class=\"btn-outline\" (click)=\"onCancel()\">Cancel</button>\r\n <button type=\"button\" class=\"btn-filled\" [disabled]=\"!hasChanges\" (click)=\"onSave()\">Save</button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";*{margin:0}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center;transition:all .15s ease-out}.icon-webex-left-arrow{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cg id%3D%22arrow-left%22%3E%0D%3Cpath id%3D%22Vector%22 d%3D%22M5.70746 7.99987L11.3539 2.35352C11.4453 2.25928 11.496 2.13287 11.495 2.00159C11.494 1.8703 11.4414 1.74467 11.3486 1.65183C11.2558 1.55899 11.1301 1.50639 10.9988 1.50539C10.8676 1.50438 10.7411 1.55506 10.6469 1.64647L4.64691 7.64647C4.55316 7.74023 4.50049 7.8674 4.50049 7.99999C4.50049 8.13259 4.55316 8.25975 4.64691 8.35352L10.6469 14.3535C10.6931 14.4011 10.7482 14.439 10.8092 14.4651C10.8702 14.4912 10.9357 14.5049 11.002 14.5054C11.0683 14.5059 11.134 14.4932 11.1954 14.468C11.2567 14.4429 11.3125 14.4058 11.3593 14.3589C11.4062 14.312 11.4433 14.2563 11.4685 14.1949C11.4936 14.1336 11.5063 14.0679 11.5058 14.0016C11.5053 13.9353 11.4916 13.8697 11.4655 13.8088C11.4394 13.7478 11.4015 13.6926 11.3539 13.6465L5.70746 7.99987Z%22 fill%3D%22black%22 fill-opacity%3D%220.95%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\")}.go-back-box{background:white;border-bottom:rgba(0,0,0,.2) 1px solid;height:60px;width:100%;line-height:60px;cursor:pointer}.go-back-box-container{width:95%;margin:auto;margin-left:.5rem;display:flex;justify-content:flex-start}.go-back-box-container .icon-webex-left-arrow,.go-back-box-container .go-back-title{display:block;height:60px}.go-back-box-container .go-back-title{line-height:61px}.go-back-title{display:inline-block;margin:0 10px}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;background:linear-gradient(90deg,#0d56aa,#0d56ab)}.panel-header__title{font-size:1rem;font-weight:500;font-family:Poppins,Poppins,sans-serif;color:#fff}.device-settings{display:flex;flex-direction:column;min-height:100%;background:#F3F6F6;font-family:Poppins,Poppins,sans-serif}.device-settings .panel-body{flex:1;padding:2rem 1.5rem;display:flex;flex-direction:column;gap:3rem}.device-settings .panel-body .card{width:50rem;margin:0 auto;display:flex;flex-direction:column;padding:1.5rem;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;background:#ffffff;min-width:0;font-family:Poppins,Poppins,sans-serif;gap:1.5rem;flex:1}.device-settings .panel-body .card.vertical-card{flex-direction:row}.device-settings .panel-body .card.vertical-card .main-content{gap:0}.device-settings .panel-body .card.vertical-card .main-content .mat-divider{border-top-color:#0003!important}.device-settings .panel-body .card.vertical-card .main-content .input-holder{min-height:2rem;box-sizing:content-box;display:flex;gap:3.25rem}.device-settings .panel-body .card.vertical-card .main-content .input-holder.input-holder-top{padding:.75rem 0 0}.device-settings .panel-body .card.vertical-card .main-content .input-holder.input-holder-bottom{padding:0 0 .75rem}.device-settings .panel-body .card.vertical-card .main-content .input-holder.input-holder-top-bottom{padding:.75rem 0}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__name{max-width:150px;width:150px;flex-shrink:0;color:#000000f2;font-size:.875rem;font-weight:400;white-space:normal;overflow-wrap:break-word}.device-settings .panel-body .card.vertical-card .main-content .input-holder input{width:200px;height:21px;padding:4px 12px;box-sizing:content-box;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;border-radius:8px;font-family:inherit;font-size:.875rem;font-weight:400;color:#000000f2}.device-settings .panel-body .card.vertical-card .main-content .input-holder input:hover{background-color:#0000001f!important}.device-settings .panel-body .card.vertical-card .main-content .input-holder input:focus{display:flex;align-items:center;color:#000000b3;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;cursor:pointer;flex-wrap:wrap;gap:.5rem;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;outline:none}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap{position:relative;display:flex;align-items:center}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select{width:200px;appearance:none;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;border-radius:6px;font-family:inherit;font-size:.8125rem;color:#000000f2;cursor:pointer;height:21px;padding:4px 12px;box-sizing:content-box}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select:focus{outline:none;border-color:#0006}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select:hover{background-color:#0000001f!important}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select:focus{color:#000000b3;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;cursor:pointer;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;outline:none}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select-icon{position:absolute;right:.5rem;font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.device-settings .panel-body .card .header{display:flex;align-items:center;justify-content:space-between;align-items:start;width:180px}.device-settings .panel-body .card .header .title{font-weight:500;font-size:1rem;font-family:Poppins,Poppins,sans-serif;color:#000000f2}.device-settings .panel-body .card .main-content{display:flex;flex-direction:column;min-width:0;gap:1.5rem;flex:1}.device-settings .panel-body .card .main-content .detail-row{display:flex;flex:1;min-width:0;gap:2rem}.device-settings .panel-body .card .main-content .detail-row .side{width:200px;display:flex;flex-direction:column;flex:1;gap:.25rem}.device-settings .panel-body .card .main-content .detail-row .side .main-value{font-weight:400;font-size:.875rem;color:#000000f2}.device-settings .panel-body .card .main-content .detail-row .side .extra-info{font-weight:400;font-size:.75rem;color:#333}.device-settings .panel-body .card .main-content .input-holder{display:grid;grid-template-columns:45% 55%;align-items:center}.device-settings .panel-body .card .main-content .input-holder__name{font-weight:400;font-size:.875rem}.device-settings .panel-body .card .main-content .input-holder__input .mat-form-field{width:100%;max-width:16rem}.device-settings .panel-body .card .main-content .input-holder__input .plain-input{width:100%;max-width:16rem;font-size:.875rem;padding:.5rem 0;border:none;border-bottom:1px solid rgba(0,0,0,.95);background:transparent;outline:none}.flex-column{display:flex;flex-direction:column}.gap-0_75{gap:.75rem}.text-description{font-size:.875rem;font-weight:400}.icon{background-repeat:no-repeat;background-position:center;display:inline-block;background-size:contain}.info-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M15.75 10.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2M16.75 14.5a.75.75 0 0 0-.75-.75h-2a.75.75 0 0 0 0 1.5h1.25v7H13a.75.75 0 0 0 0 1.5h6a.75.75 0 0 0 0-1.5h-2.25zM2.25 16C2.25 8.406 8.406 2.25 16 2.25S29.75 8.406 29.75 16 23.594 29.75 16 29.75 2.25 23.594 2.25 16M16 3.75C9.235 3.75 3.75 9.235 3.75 16S9.235 28.25 16 28.25 28.25 22.765 28.25 16 22.765 3.75 16 3.75%22%2F%3E%3C%2Fsvg%3E\")}.rem1{height:1rem;width:1rem;vertical-align:middle;margin-left:.25rem}.settings-footer{position:sticky;bottom:0;background:#ffffff;border-top:1px solid rgba(0,0,0,.2);padding:1rem 1.5rem}.settings-footer__actions{display:flex;justify-content:flex-end;gap:.75rem;max-width:50rem;margin:0 auto}.btn-outline,.btn-filled{padding:.313rem .75rem;border-radius:50px;font-weight:500;font-size:.875rem;font-family:Poppins,Poppins,sans-serif;cursor:pointer;transition:background-color .1s ease-in-out;white-space:nowrap}.btn-outline{background:#ffffff;border:1px solid rgba(0,0,0,.2);color:#0006}.btn-outline:hover:not(:disabled){background:#f5f5f5}.btn-outline:disabled{color:#babcc5;border-color:#dfe3e7;cursor:not-allowed}.btn-filled{background:rgba(0,0,0,.9490196078);color:#fff;border:1px solid transparent}.btn-filled:hover:not(:disabled){background:#2a2a2a}.btn-filled:disabled{background:#DFE3E7;color:#babcc5;cursor:not-allowed}::ng-deep .device-settings .custom-toggle .mat-slide-toggle-bar{position:relative!important;width:48px!important;height:25px!important;flex-shrink:0!important;border-radius:13px!important;background-color:#ccc!important}::ng-deep .device-settings .custom-toggle .mat-slide-toggle-thumb{height:20px!important;width:20px!important;position:absolute!important;border-radius:50%!important;display:flex!important;align-items:center!important;justify-content:center!important;left:3px!important;top:5px!important;background-color:#fff!important}::ng-deep .device-settings .custom-toggle .mat-slide-toggle-thumb:after{content:\"\\d7\";font-size:14px!important;color:#8e9fb7!important;line-height:1!important;display:block!important;pointer-events:none!important}::ng-deep .device-settings .custom-toggle.mat-checked .mat-slide-toggle-thumb{left:calc(100% - 11px)!important}::ng-deep .device-settings .custom-toggle.mat-checked .mat-slide-toggle-thumb:after{content:\"\\2713\";color:#0d56aa!important;font-weight:700!important;font-size:10px!important}::ng-deep .device-settings .custom-toggle.mat-checked .mat-slide-toggle-bar{background:#1170cf!important}\n"] }]
193
+ args: [{ selector: 'app-device-settings', template: "<tk-loader *ngIf=\"dataPending\"></tk-loader>\r\n<div class=\"go-back-box\" (click)=\"onGoBack()\">\r\n <div class=\"go-back-box-container\">\r\n <span class=\"app-icon icon-webex-left-arrow\"></span>\r\n <span class=\"go-back-title\">Device General Info</span>\r\n </div>\r\n</div>\r\n\r\n<div class=\"device-settings\">\r\n <div class=\"panel-header\">\r\n <span class=\"panel-header__title\">Device Settings</span>\r\n </div>\r\n\r\n <div class=\"panel-body\">\r\n <section class=\"card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Details</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"detail-row\">\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ device?.name || 'N/A' }}</span>\r\n <span class=\"extra-info\">Name</span>\r\n </div>\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ device?.model || 'N/A' }}</span>\r\n <span class=\"extra-info\">Type</span>\r\n </div>\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ device?.description || 'N/A' }}</span>\r\n <span class=\"extra-info\">Device description</span>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"detail-row\">\r\n <div class=\"side\">\r\n <span class=\"main-value\">{{ lines }}</span>\r\n <span class=\"extra-info\">Line</span>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"detail-row flex-column\" style=\"gap: 0.5rem;\">\r\n <span class=\"text-description\">PLAR service</span>\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"plarService\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Device info</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Registration status</div>\r\n <div class=\"input-holder__plain-value text-description\">{{ device?.form?.get('registrationStatus')?.value || 'Unknown' }}</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">IP Address</div>\r\n <div class=\"input-holder__plain-value text-description\">{{ device?.ipAddress || 'None' }}</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Description</div>\r\n <input class=\"plain-input\" [formControl]=\"description\">\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Protocol</div>\r\n <div class=\"input-holder__plain-value text-description\">SIP</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Softkey template</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" name=\"cluster\" [formControl]=\"softkeyTemplate\">\r\n <option *ngFor=\"let cluster of softKeys\" [value]=\"cluster\">{{ cluster }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Button template</div>\r\n <div class=\"input-holder__plain-value text-description\">Standard 8851 SIP</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Location</div>\r\n <div class=\"input-holder__plain-value text-description\">Paris_ios</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Device pool</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" name=\"devicePool\" [formControl]=\"devicePool\">\r\n <option *ngFor=\"let pool of devicePools\" [value]=\"pool\">{{ pool }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Device CSS</div>\r\n <div class=\"input-holder__select-wrap\">\r\n <select class=\"input-holder__select\" name=\"deviceCss\" [formControl]=\"deviceCss\">\r\n <option *ngFor=\"let css of cssOptions\" [value]=\"css\">{{ css }}</option>\r\n </select>\r\n <img class=\"input-holder__select-icon\" src=\"assets/icons/arrow-down-bold.svg\" alt=\"\">\r\n </div>\r\n </div>\r\n <div class=\"input-holder\">\r\n <div class=\"input-holder__name\">Firmware version</div>\r\n <div class=\"input-holder__plain-value text-description\">{{ device?.softwareVersion || 'Unknown' }}</div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Media Settings</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Media Resource Group List</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Network Hold MOH Audio Source</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">User Hold MOH Audio Source</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">AAR Settings</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">AAR Calling Search Space</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">AAR Group</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Device Additional Information</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">Common Phone Profile</div>\r\n <div class=\"input-holder__plain-value text-description\">Standard Common Phone Profile</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">User Locale</div>\r\n <div class=\"input-holder__plain-value text-description\">None</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Enable Extension Mobility</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"enableExtensionMobility\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Privacy</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Mobility user ID</div>\r\n <div class=\"input-holder__plain-value text-description\">Adam.Allen</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Always Use Prime Line</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Geolocation</div>\r\n <div class=\"input-holder__plain-value text-description\">&nbsp;</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Logged Into Hunt Group</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"loggedIntoHuntGroup\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Remote Device</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"remoteDevice\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Phone Security Profile</div>\r\n <div class=\"input-holder__plain-value text-description\">Cisco Dual Mode for iPhone - Standard SIP Non-Secure Profile</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Network Locale</div>\r\n <div class=\"input-holder__plain-value text-description\">China</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Built In Bridge</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Device Mobility Mode</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Use Trusted Relay Point</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Always Use Prime Line for Voice Message</div>\r\n <div class=\"input-holder__plain-value text-description\">Default</div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top-bottom\">\r\n <div class=\"input-holder__name\">Ignore Presentation Indicators( internal calls only )</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"ignorePresentationIndicators\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">Hot line Device</div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"hotlineDevice\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n\r\n <section class=\"card vertical-card\">\r\n <div class=\"header\">\r\n <span class=\"title\">Number Presentation Transformation</span>\r\n </div>\r\n <div class=\"main-content\">\r\n <div class=\"input-holder input-holder-bottom\">\r\n <div class=\"input-holder__name\">\r\n Caller ID For Calls From This Phone\r\n <i class=\"icon info-icon rem1\" [matTooltip]=\"'Controls how the caller ID is presented for calls placed from this phone.'\"></i>\r\n </div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"callerIdForCallsFromThisPhone\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n <mat-divider></mat-divider>\r\n <div class=\"input-holder input-holder-top\">\r\n <div class=\"input-holder__name\">\r\n Remote Number\r\n <i class=\"icon info-icon rem1\" [matTooltip]=\"'Controls how the remote number is presented for this phone.'\"></i>\r\n </div>\r\n <div class=\"input-holder__input\">\r\n <mat-slide-toggle class=\"custom-toggle\" [formControl]=\"remoteNumber\"></mat-slide-toggle>\r\n </div>\r\n </div>\r\n </div>\r\n </section>\r\n </div>\r\n\r\n <div class=\"settings-footer\">\r\n <div class=\"settings-footer__actions\">\r\n <button type=\"button\" class=\"btn-outline\" (click)=\"onCancel()\">Cancel</button>\r\n <button type=\"button\" class=\"btn-filled\" [disabled]=\"!hasChanges\" (click)=\"onSave()\">Save</button>\r\n </div>\r\n </div>\r\n</div>\r\n", styles: ["@charset \"UTF-8\";@import\"https://fonts.googleapis.com/css?family=Poppins:400,100,200,300,500,600,800,700,900\";*{margin:0}.app-icon{height:20px;width:20px;display:inline-block;cursor:pointer;background-repeat:no-repeat;background-position:center;transition:all .15s ease-out}.icon-webex-left-arrow{background-image:url(\"data:image/svg+xml,%3Csvg width%3D%2216%22 height%3D%2216%22 viewBox%3D%220 0 16 16%22 fill%3D%22none%22 xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%0D%3Cg id%3D%22arrow-left%22%3E%0D%3Cpath id%3D%22Vector%22 d%3D%22M5.70746 7.99987L11.3539 2.35352C11.4453 2.25928 11.496 2.13287 11.495 2.00159C11.494 1.8703 11.4414 1.74467 11.3486 1.65183C11.2558 1.55899 11.1301 1.50639 10.9988 1.50539C10.8676 1.50438 10.7411 1.55506 10.6469 1.64647L4.64691 7.64647C4.55316 7.74023 4.50049 7.8674 4.50049 7.99999C4.50049 8.13259 4.55316 8.25975 4.64691 8.35352L10.6469 14.3535C10.6931 14.4011 10.7482 14.439 10.8092 14.4651C10.8702 14.4912 10.9357 14.5049 11.002 14.5054C11.0683 14.5059 11.134 14.4932 11.1954 14.468C11.2567 14.4429 11.3125 14.4058 11.3593 14.3589C11.4062 14.312 11.4433 14.2563 11.4685 14.1949C11.4936 14.1336 11.5063 14.0679 11.5058 14.0016C11.5053 13.9353 11.4916 13.8697 11.4655 13.8088C11.4394 13.7478 11.4015 13.6926 11.3539 13.6465L5.70746 7.99987Z%22 fill%3D%22black%22 fill-opacity%3D%220.95%22%2F%3E%0D%3C%2Fg%3E%0D%3C%2Fsvg%3E%0D\")}.go-back-box{background:white;border-bottom:rgba(0,0,0,.2) 1px solid;height:60px;width:100%;line-height:60px;cursor:pointer}.go-back-box-container{width:95%;margin:auto;margin-left:.5rem;display:flex;justify-content:flex-start}.go-back-box-container .icon-webex-left-arrow,.go-back-box-container .go-back-title{display:block;height:60px}.go-back-box-container .go-back-title{line-height:61px}.go-back-title{display:inline-block;margin:0 10px}.panel-header{display:flex;align-items:center;justify-content:space-between;padding:1rem 1.5rem;background:linear-gradient(90deg,#0d56aa,#0d56ab)}.panel-header__title{font-size:1rem;font-weight:500;font-family:Poppins,Poppins,sans-serif;color:#fff}.device-settings{display:flex;flex-direction:column;min-height:100%;background:#F3F6F6;font-family:Poppins,Poppins,sans-serif}.device-settings .panel-body{flex:1;padding:2rem 1.5rem;display:flex;flex-direction:column;gap:3rem}.device-settings .panel-body .card{width:50rem;margin:0 auto;display:flex;flex-direction:column;padding:1.5rem;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;background:#ffffff;min-width:0;font-family:Poppins,Poppins,sans-serif;gap:1.5rem;flex:1}.device-settings .panel-body .card.vertical-card{flex-direction:row}.device-settings .panel-body .card.vertical-card .main-content{gap:0}.device-settings .panel-body .card.vertical-card .main-content .mat-divider{border-top-color:#0003!important}.device-settings .panel-body .card.vertical-card .main-content .input-holder{min-height:2rem;box-sizing:content-box;display:flex;gap:3.25rem}.device-settings .panel-body .card.vertical-card .main-content .input-holder.input-holder-top{padding:.75rem 0 0}.device-settings .panel-body .card.vertical-card .main-content .input-holder.input-holder-bottom{padding:0 0 .75rem}.device-settings .panel-body .card.vertical-card .main-content .input-holder.input-holder-top-bottom{padding:.75rem 0}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__name{max-width:150px;width:150px;flex-shrink:0;color:#000000f2;font-size:.875rem;font-weight:400;white-space:normal;overflow-wrap:break-word}.device-settings .panel-body .card.vertical-card .main-content .input-holder input{width:200px;height:21px;padding:4px 12px;box-sizing:content-box;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;border-radius:8px;font-family:inherit;font-size:.875rem;font-weight:400;color:#000000f2}.device-settings .panel-body .card.vertical-card .main-content .input-holder input:hover{background-color:#0000001f!important}.device-settings .panel-body .card.vertical-card .main-content .input-holder input:focus{display:flex;align-items:center;color:#000000b3;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;cursor:pointer;flex-wrap:wrap;gap:.5rem;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;outline:none}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap{position:relative;display:flex;align-items:center}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select{width:200px;appearance:none;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;border-radius:6px;font-family:inherit;font-size:.8125rem;color:#000000f2;cursor:pointer;height:21px;padding:4px 12px;box-sizing:content-box}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select:focus{outline:none;border-color:#0006}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select:hover{background-color:#0000001f!important}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select:focus{color:#000000b3;background:#fff;border:solid .0625rem rgba(0,0,0,.5019607843)!important;cursor:pointer;box-shadow:0 0 0 .12rem #fff,0 0 0 .25rem #1170cf,0 0 0 .3rem #1170cf59;outline:none}.device-settings .panel-body .card.vertical-card .main-content .input-holder .input-holder__select-wrap .input-holder__select-icon{position:absolute;right:.5rem;font-size:1.125rem;height:1.125rem;width:1.125rem;color:#0006;pointer-events:none}.device-settings .panel-body .card .header{display:flex;align-items:center;justify-content:space-between;align-items:start;width:180px}.device-settings .panel-body .card .header .title{font-weight:500;font-size:1rem;font-family:Poppins,Poppins,sans-serif;color:#000000f2}.device-settings .panel-body .card .main-content{display:flex;flex-direction:column;min-width:0;gap:1.5rem;flex:1}.device-settings .panel-body .card .main-content .detail-row{display:flex;flex:1;min-width:0;gap:2rem}.device-settings .panel-body .card .main-content .detail-row .side{width:200px;display:flex;flex-direction:column;flex:1;gap:.25rem}.device-settings .panel-body .card .main-content .detail-row .side .main-value{font-weight:400;font-size:.875rem;color:#000000f2}.device-settings .panel-body .card .main-content .detail-row .side .extra-info{font-weight:400;font-size:.75rem;color:#333}.device-settings .panel-body .card .main-content .input-holder{display:grid;grid-template-columns:45% 55%;align-items:center}.device-settings .panel-body .card .main-content .input-holder__name{font-weight:400;font-size:.875rem}.device-settings .panel-body .card .main-content .input-holder__input .mat-form-field{width:100%;max-width:16rem}.device-settings .panel-body .card .main-content .input-holder__input .plain-input{width:100%;max-width:16rem;font-size:.875rem;padding:.5rem 0;border:none;border-bottom:1px solid rgba(0,0,0,.95);background:transparent;outline:none}.flex-column{display:flex;flex-direction:column}.gap-0_75{gap:.75rem}.text-description{font-size:.875rem;font-weight:400}.icon{background-repeat:no-repeat;background-position:center;display:inline-block;background-size:contain}.info-icon{background-image:url(\"data:image/svg+xml,%3Csvg xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22 width%3D%2232%22 height%3D%2232%22 viewBox%3D%220 0 32 32%22%3E%3Cpath d%3D%22M15.75 10.5a1 1 0 1 0 0-2 1 1 0 0 0 0 2M16.75 14.5a.75.75 0 0 0-.75-.75h-2a.75.75 0 0 0 0 1.5h1.25v7H13a.75.75 0 0 0 0 1.5h6a.75.75 0 0 0 0-1.5h-2.25zM2.25 16C2.25 8.406 8.406 2.25 16 2.25S29.75 8.406 29.75 16 23.594 29.75 16 29.75 2.25 23.594 2.25 16M16 3.75C9.235 3.75 3.75 9.235 3.75 16S9.235 28.25 16 28.25 28.25 22.765 28.25 16 22.765 3.75 16 3.75%22%2F%3E%3C%2Fsvg%3E\")}.rem1{height:1rem;width:1rem;vertical-align:middle;margin-left:.25rem}.settings-footer{position:sticky;bottom:0;background:#ffffff;border-top:1px solid rgba(0,0,0,.2);padding:1rem 1.5rem}.settings-footer__actions{display:flex;justify-content:flex-end;gap:.75rem;max-width:50rem;margin:0 auto}.btn-outline,.btn-filled{padding:.313rem .75rem;border-radius:50px;font-weight:500;font-size:.875rem;font-family:Poppins,Poppins,sans-serif;cursor:pointer;transition:background-color .1s ease-in-out;white-space:nowrap}.btn-outline{background:#ffffff;border:1px solid rgba(0,0,0,.2);color:#0006}.btn-outline:hover:not(:disabled){background:#f5f5f5}.btn-outline:disabled{color:#babcc5;border-color:#dfe3e7;cursor:not-allowed}.btn-filled{background:rgba(0,0,0,.9490196078);color:#fff;border:1px solid transparent}.btn-filled:hover:not(:disabled){background:#2a2a2a}.btn-filled:disabled{background:#DFE3E7;color:#babcc5;cursor:not-allowed}::ng-deep .device-settings .custom-toggle .mat-slide-toggle-bar{position:relative!important;width:48px!important;height:25px!important;flex-shrink:0!important;border-radius:13px!important;background-color:#ccc!important}::ng-deep .device-settings .custom-toggle .mat-slide-toggle-thumb{height:20px!important;width:20px!important;position:absolute!important;border-radius:50%!important;display:flex!important;align-items:center!important;justify-content:center!important;left:3px!important;top:5px!important;background-color:#fff!important}::ng-deep .device-settings .custom-toggle .mat-slide-toggle-thumb:after{content:\"\\d7\";font-size:14px!important;color:#8e9fb7!important;line-height:1!important;display:block!important;pointer-events:none!important}::ng-deep .device-settings .custom-toggle.mat-checked .mat-slide-toggle-thumb{left:calc(100% - 11px)!important}::ng-deep .device-settings .custom-toggle.mat-checked .mat-slide-toggle-thumb:after{content:\"\\2713\";color:#0d56aa!important;font-weight:700!important;font-size:10px!important}::ng-deep .device-settings .custom-toggle.mat-checked .mat-slide-toggle-bar{background:#1170cf!important}\n"] }]
194
194
  }], ctorParameters: function () { return [{ type: i1.UserService }, { type: i2.APIService }, { type: i3.DeviceService }, { type: i4.SiteSettingsService }, { type: i5.Router }]; }, propDecorators: { goBack: [{
195
195
  type: Output
196
196
  }], token: [{
@@ -204,4 +204,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.10", ngImpo
204
204
  }], deviceName: [{
205
205
  type: Input
206
206
  }] } });
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy91c2VyLWRldmljZS1tYW5hZ2Uvc3JjL2RldmljZS1zZXR0aW5ncy9kZXZpY2Utc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3VzZXItZGV2aWNlLW1hbmFnZS9zcmMvZGV2aWNlLXNldHRpbmdzL2RldmljZS1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFXekUsTUFBTSxPQUFPLHVCQUF1QjtJQTJDbEMsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLElBQUksSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ3RILENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLHVCQUF1QixDQUFDO0lBQzFE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LENBQUMsT0FBTyxFQUFFLEFBQUQsRUFBRyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxhQUFhLENBQUM7YUFDdkUsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsS0FBSyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7O3FIQTFNVSx1QkFBdUI7eUdBQXZCLHVCQUF1QixrTUNkcEMsNjdjQXdTQTs0RkQxUmEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHFCQUFxQjs4TUFLckIsTUFBTTtzQkFBZixNQUFNO2dCQUNFLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSwgZm9ya0pvaW4sIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVBJU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGV2aWNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RldmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2l0ZVNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NpdGUtc2V0dGluZ3Muc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1kZXZpY2Utc2V0dGluZ3MnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kZXZpY2Utc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RldmljZS1zZXR0aW5ncy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGV2aWNlU2V0dGluZ3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQE91dHB1dCgpIGdvQmFjayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSB0b2tlbiE6IHN0cmluZztcclxuICBASW5wdXQoKSBob3N0ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNpdGVJZCE6IHN0cmluZztcclxuICBASW5wdXQoKSB1c2VySWQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZGV2aWNlTmFtZSE6IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHVibGljIGRhdGFQZW5kaW5nID0gZmFsc2U7XHJcbiAgcHVibGljIGRldmljZTogYW55ID0gbnVsbDtcclxuICBwdWJsaWMgc29mdEtleXM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBwbGFyU2VydmljZSA9IG5ldyBGb3JtQ29udHJvbChmYWxzZSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IGRlc2NyaXB0aW9uID0gbmV3IEZvcm1Db250cm9sKCcnKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgc29mdGtleVRlbXBsYXRlID0gbmV3IEZvcm1Db250cm9sKCdTdGFuZGFyZCB1c2VyJyk7XHJcbiAgcHVibGljIHJlYWRvbmx5IGRldmljZVBvb2wgPSBuZXcgRm9ybUNvbnRyb2woJ1BhcmlzX3JlZ3VsYXJfRFBfdGVzdCcpO1xyXG4gIHB1YmxpYyByZWFkb25seSBkZXZpY2VDc3MgPSBuZXcgRm9ybUNvbnRyb2woJ1BhcmlzX25hdGlvbmFsX0NTUycpO1xyXG4gIHB1YmxpYyByZWFkb25seSBlbmFibGVFeHRlbnNpb25Nb2JpbGl0eSA9IG5ldyBGb3JtQ29udHJvbCh0cnVlKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgbG9nZ2VkSW50b0h1bnRHcm91cCA9IG5ldyBGb3JtQ29udHJvbChmYWxzZSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IHJlbW90ZURldmljZSA9IG5ldyBGb3JtQ29udHJvbChmYWxzZSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IGlnbm9yZVByZXNlbnRhdGlvbkluZGljYXRvcnMgPSBuZXcgRm9ybUNvbnRyb2woZmFsc2UpO1xyXG4gIHB1YmxpYyByZWFkb25seSBob3RsaW5lRGV2aWNlID0gbmV3IEZvcm1Db250cm9sKGZhbHNlKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgY2FsbGVySWRGb3JDYWxsc0Zyb21UaGlzUGhvbmUgPSBuZXcgRm9ybUNvbnRyb2wodHJ1ZSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IHJlbW90ZU51bWJlciA9IG5ldyBGb3JtQ29udHJvbCh0cnVlKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBmb3JtQ29udHJvbHM6IEZvcm1Db250cm9sPGFueT5bXSA9IFtcclxuICAgIHRoaXMucGxhclNlcnZpY2UsXHJcbiAgICB0aGlzLmRlc2NyaXB0aW9uLFxyXG4gICAgdGhpcy5zb2Z0a2V5VGVtcGxhdGUsXHJcbiAgICB0aGlzLmRldmljZVBvb2wsXHJcbiAgICB0aGlzLmRldmljZUNzcyxcclxuICAgIHRoaXMuZW5hYmxlRXh0ZW5zaW9uTW9iaWxpdHksXHJcbiAgICB0aGlzLmxvZ2dlZEludG9IdW50R3JvdXAsXHJcbiAgICB0aGlzLnJlbW90ZURldmljZSxcclxuICAgIHRoaXMuaWdub3JlUHJlc2VudGF0aW9uSW5kaWNhdG9ycyxcclxuICAgIHRoaXMuaG90bGluZURldmljZSxcclxuICAgIHRoaXMuY2FsbGVySWRGb3JDYWxsc0Zyb21UaGlzUGhvbmUsXHJcbiAgICB0aGlzLnJlbW90ZU51bWJlcixcclxuICBdO1xyXG5cclxuICBwdWJsaWMgaGFzQ2hhbmdlcyA9IGZhbHNlO1xyXG5cclxuICBnZXQgbGluZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmRldmljZT8ubGluZXM/Lm1hcCgobGluZTogYW55KSA9PiBsaW5lPy5leHRlbnNpb24gfHwgbGluZT8ubnVtYmVyKS5maWx0ZXIoQm9vbGVhbikuam9pbignIHwgJykgfHwgJ04vQSc7XHJcbiAgfVxyXG5cclxuICBnZXQgZGV2aWNlUG9vbHMoKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2l0ZVNldHRpbmdzU2VydmljZS5kZXZpY2VQb29scztcclxuICB9XHJcblxyXG4gIGdldCBjc3NPcHRpb25zKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiB0aGlzLnNpdGVTZXR0aW5nc1NlcnZpY2UuY2FsbGluZ1NlYXJjaFNwYWNlVHlwZXM7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFQSVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRldmljZVNlcnZpY2U6IERldmljZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNpdGVTZXR0aW5nc1NlcnZpY2U6IFNpdGVTZXR0aW5nc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFwaVNlcnZpY2UudG9rZW4gPSB0aGlzLnRva2VuO1xyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLmFwaVVybCA9IHRoaXMuaG9zdDtcclxuXHJcbiAgICB0aGlzLmZvcm1Db250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4gY29udHJvbC52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuaGFzQ2hhbmdlcyA9IHRydWUpKTtcclxuXHJcbiAgICBpZiAodGhpcy51c2VyU2VydmljZS51c2VyRGV2aWNlKSB7XHJcbiAgICAgIHRoaXMuZGV2aWNlID0gdGhpcy51c2VyU2VydmljZS51c2VyRGV2aWNlO1xyXG4gICAgICB0aGlzLnBsYXJTZXJ2aWNlLnNldFZhbHVlKCEhdGhpcy5kZXZpY2U/LnBsYXJTZXJ2aWNlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgICB0aGlzLmRlc2NyaXB0aW9uLnNldFZhbHVlKHRoaXMuZGV2aWNlPy5kZXNjcmlwdGlvbiB8fCAnJywge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5zb2Z0a2V5VGVtcGxhdGUuc2V0VmFsdWUodGhpcy5kZXZpY2U/LnNvZnRrZXlUZW1wbGF0ZSB8fCAnJywge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5kZXZpY2VQb29sLnNldFZhbHVlKHRoaXMuZGV2aWNlPy5kZXZpY2VQb29sTmFtZSB8fCAnJywge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5kZXZpY2VDc3Muc2V0VmFsdWUodGhpcy5kZXZpY2U/LmNhbGxpbmdTZWFyY2hTcGFjZU5hbWUgfHwgJycsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgIHRoaXMuZW5hYmxlRXh0ZW5zaW9uTW9iaWxpdHkuc2V0VmFsdWUoISF0aGlzLmRldmljZT8uZW5hYmxlZEV4dGVuc2lvbk1vYmlsaXR5LCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgICB0aGlzLmxvZ2dlZEludG9IdW50R3JvdXAuc2V0VmFsdWUoISF0aGlzLmRldmljZT8ubG9nZ2VkSW50b0h1bnRHcm91cCwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5yZW1vdGVEZXZpY2Uuc2V0VmFsdWUoISF0aGlzLmRldmljZT8ucmVtb3RlRGV2aWNlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgICB0aGlzLmhvdGxpbmVEZXZpY2Uuc2V0VmFsdWUoISF0aGlzLmRldmljZT8uaG90bGluZURldmljZSwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5pZ25vcmVQcmVzZW50YXRpb25JbmRpY2F0b3JzLnNldFZhbHVlKCEhdGhpcy5kZXZpY2U/Lmlnbm9yZVByZXNlbnRhdGlvbkluZGljYXRvcnMsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgIHRoaXMuY2FsbGVySWRGb3JDYWxsc0Zyb21UaGlzUGhvbmUuc2V0VmFsdWUoISF0aGlzLmRldmljZT8udXNlRGV2aWNlUG9vbENncG5JbmdyZXNzRE4sIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgIHRoaXMucmVtb3RlTnVtYmVyLnNldFZhbHVlKCEhdGhpcy5kZXZpY2U/LnJlbW90ZURldmljZSwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5nZXRTaXRlU2V0dGluZ3MoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREYXRhKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRhUGVuZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCBkZXZpY2VUeXBlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RldmljZVR5cGUnKTtcclxuICAgIGxldCByZXF1ZXN0O1xyXG4gICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdpc1dlYmV4JykgPT09ICd0cnVlJykge1xyXG4gICAgICBjb25zdCBjdXN0b21lcklkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1c3RvbWVySWQnKTtcclxuICAgICAgY29uc3Qgd2ViZXhJZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd3ZWJleFVVSUQnKTtcclxuICAgICAgcmVxdWVzdCA9IHRoaXMudXNlclNlcnZpY2UuZmV0Y2hXZWJleFVzZXJEZXZpY2UoY3VzdG9tZXJJZCEsIHdlYmV4SWQhLCBkZXZpY2VUeXBlISk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXF1ZXN0ID0gdGhpcy51c2VyU2VydmljZS5mZXRjaERJVXNlckRldmljZShOdW1iZXIodGhpcy5zaXRlSWQpLCB0aGlzLnVzZXJJZCwgZGV2aWNlVHlwZSEpO1xyXG4gICAgfVxyXG4gICAgZm9ya0pvaW4oe1xyXG4gICAgICBkZXZpY2U6IHJlcXVlc3QsXHJcbiAgICAgIHNvZnRLZXlzOiB0aGlzLnNpdGVTZXR0aW5nc1NlcnZpY2UuZ2V0RGV2aWNlU29mdGtleVRlbXBsYXRlcyhOdW1iZXIodGhpcy5zaXRlSWQpKSxcclxuICAgICAgc2l0ZURlZmF1bHRzOiB0aGlzLnNpdGVTZXR0aW5nc1NlcnZpY2UuZ2V0U2l0ZURlZmF1bHRzKE51bWJlcih0aGlzLnNpdGVJZCkpLFxyXG4gICAgfSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB0aGlzLmRhdGFQZW5kaW5nID0gZmFsc2UpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh7ZGV2aWNlLCBzb2Z0S2V5c30pID0+IHtcclxuICAgICAgICB0aGlzLmRldmljZSA9IGRldmljZTtcclxuICAgICAgICB0aGlzLnNvZnRLZXlzID0gKHNvZnRLZXlzIGFzIHN0cmluZ1tdKSB8fCBbXTtcclxuICAgICAgICB0aGlzLnBsYXJTZXJ2aWNlLnNldFZhbHVlKCEhdGhpcy5kZXZpY2U/LnBsYXJTZXJ2aWNlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgICAgIHRoaXMuZGVzY3JpcHRpb24uc2V0VmFsdWUodGhpcy5kZXZpY2U/LmRlc2NyaXB0aW9uIHx8ICcnLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgICAgIHRoaXMuc29mdGtleVRlbXBsYXRlLnNldFZhbHVlKHRoaXMuZGV2aWNlPy5zb2Z0a2V5VGVtcGxhdGUgfHwgJycsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgICAgdGhpcy5kZXZpY2VQb29sLnNldFZhbHVlKHRoaXMuZGV2aWNlPy5kZXZpY2VQb29sTmFtZSB8fCAnJywge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgICB0aGlzLmRldmljZUNzcy5zZXRWYWx1ZSh0aGlzLmRldmljZT8uY2FsbGluZ1NlYXJjaFNwYWNlTmFtZSB8fCAnJywge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgICB0aGlzLmVuYWJsZUV4dGVuc2lvbk1vYmlsaXR5LnNldFZhbHVlKCEhdGhpcy5kZXZpY2U/LmVuYWJsZWRFeHRlbnNpb25Nb2JpbGl0eSwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgICB0aGlzLmxvZ2dlZEludG9IdW50R3JvdXAuc2V0VmFsdWUoISF0aGlzLmRldmljZT8ubG9nZ2VkSW50b0h1bnRHcm91cCwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5yZW1vdGVEZXZpY2Uuc2V0VmFsdWUoISF0aGlzLmRldmljZT8ucmVtb3RlRGV2aWNlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgICB0aGlzLmhvdGxpbmVEZXZpY2Uuc2V0VmFsdWUoISF0aGlzLmRldmljZT8uaG90bGluZURldmljZSwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5pZ25vcmVQcmVzZW50YXRpb25JbmRpY2F0b3JzLnNldFZhbHVlKCEhdGhpcy5kZXZpY2U/Lmlnbm9yZVByZXNlbnRhdGlvbkluZGljYXRvcnMsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgIHRoaXMuY2FsbGVySWRGb3JDYWxsc0Zyb21UaGlzUGhvbmUuc2V0VmFsdWUoISF0aGlzLmRldmljZT8udXNlRGV2aWNlUG9vbENncG5JbmdyZXNzRE4sIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgIHRoaXMucmVtb3RlTnVtYmVyLnNldFZhbHVlKCEhdGhpcy5kZXZpY2U/LnJlbW90ZURldmljZSwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNpdGVTZXR0aW5ncygpOiB2b2lkIHtcclxuICAgIHRoaXMuZGF0YVBlbmRpbmcgPSB0cnVlO1xyXG4gICAgZm9ya0pvaW4oe1xyXG4gICAgICBzb2Z0S2V5czogdGhpcy5zaXRlU2V0dGluZ3NTZXJ2aWNlLmdldERldmljZVNvZnRrZXlUZW1wbGF0ZXMoTnVtYmVyKHRoaXMuc2l0ZUlkKSksXHJcbiAgICAgIHNpdGVEZWZhdWx0czogdGhpcy5zaXRlU2V0dGluZ3NTZXJ2aWNlLmdldFNpdGVEZWZhdWx0cyhOdW1iZXIodGhpcy5zaXRlSWQpKSxcclxuICAgIH0pXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5kYXRhUGVuZGluZyA9IGZhbHNlKSlcclxuICAgICAgLnN1YnNjcmliZSgoe3NvZnRLZXlzfSkgPT4gdGhpcy5zb2Z0S2V5cyA9IChzb2Z0S2V5cyBhcyBzdHJpbmdbXSkgfHwgW10pO1xyXG4gIH1cclxuXHJcbiAgb25Hb0JhY2soKTogdm9pZCB7XHJcbiAgICBjb25zdCBbcGF0aF0gPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJz8nKTtcclxuICAgIGNvbnN0IHNlZ21lbnRzID0gcGF0aC5zcGxpdCgnLycpLmZpbHRlcihCb29sZWFuKTtcclxuICAgIGlmIChzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAxXSA9PT0gJ2RldmljZS1zZXR0aW5ncycpIHtcclxuICAgICAgc2VnbWVudHMucG9wKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJyArIHNlZ21lbnRzLmpvaW4oJy8nKSk7XHJcbiAgICAvLyB0aGlzLmdvQmFjay5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbkNhbmNlbCgpOiB2b2lkIHtcclxuICAgIHRoaXMub25Hb0JhY2soKTtcclxuICB9XHJcblxyXG4gIG9uU2F2ZSgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5oYXNDaGFuZ2VzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBib2R5ID0gdGhpcy5nZXRDaGFuZ2VkRGV2aWNlRmllbGRzKCk7XHJcbiAgICBpZiAoIWJvZHkubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuaGFzQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm9uR29CYWNrKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGFQZW5kaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuZGV2aWNlU2VydmljZS5wdXREZXZpY2VGaWVsZHMoTnVtYmVyKHRoaXMuc2l0ZUlkKSwgdGhpcy5kZXZpY2U/Lm5hbWUgfHwgJycsIHRoaXMudXNlclNlcnZpY2UudXNlclRva2VuLCBib2R5KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy51c2VyU2VydmljZS5wZXJzaXN0VXNlckNhY2hlKCkpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmRhdGFQZW5kaW5nID0gZmFsc2UpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaGFzQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub25Hb0JhY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENoYW5nZWREZXZpY2VGaWVsZHMoKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgZmllbGRzTWFwOiBBcnJheTxbRm9ybUNvbnRyb2w8YW55Piwgc3RyaW5nLCBhbnldPiA9IFtcclxuICAgICAgW3RoaXMucGxhclNlcnZpY2UsICdwbGFyU2VydmljZScsICEhdGhpcy5kZXZpY2U/LnBsYXJTZXJ2aWNlXSxcclxuICAgICAgW3RoaXMuZGVzY3JpcHRpb24sICdkZXNjcmlwdGlvbicsIHRoaXMuZGV2aWNlPy5kZXNjcmlwdGlvbiB8fCAnJ10sXHJcbiAgICAgIFt0aGlzLnNvZnRrZXlUZW1wbGF0ZSwgJ3NvZnRrZXlUZW1wbGF0ZScsIHRoaXMuZGV2aWNlPy5zb2Z0a2V5VGVtcGxhdGUgfHwgJyddLFxyXG4gICAgICBbdGhpcy5kZXZpY2VQb29sLCAnZGV2aWNlUG9vbE5hbWUnLCB0aGlzLmRldmljZT8uZGV2aWNlUG9vbE5hbWUgfHwgJyddLFxyXG4gICAgICBbdGhpcy5kZXZpY2VDc3MsICdjYWxsaW5nU2VhcmNoU3BhY2VOYW1lJywgdGhpcy5kZXZpY2U/LmNhbGxpbmdTZWFyY2hTcGFjZU5hbWUgfHwgJyddLFxyXG4gICAgICBbdGhpcy5lbmFibGVFeHRlbnNpb25Nb2JpbGl0eSwgJ2VuYWJsZWRFeHRlbnNpb25Nb2JpbGl0eScsICEhdGhpcy5kZXZpY2U/LmVuYWJsZWRFeHRlbnNpb25Nb2JpbGl0eV0sXHJcbiAgICAgIFt0aGlzLmxvZ2dlZEludG9IdW50R3JvdXAsICdsb2dnZWRJbnRvSHVudEdyb3VwJywgISF0aGlzLmRldmljZT8ubG9nZ2VkSW50b0h1bnRHcm91cF0sXHJcbiAgICAgIFt0aGlzLnJlbW90ZURldmljZSwgJ3JlbW90ZURldmljZScsICEhdGhpcy5kZXZpY2U/LnJlbW90ZURldmljZV0sXHJcbiAgICAgIFt0aGlzLmlnbm9yZVByZXNlbnRhdGlvbkluZGljYXRvcnMsICdpZ25vcmVQcmVzZW50YXRpb25JbmRpY2F0b3JzJywgISF0aGlzLmRldmljZT8uaWdub3JlUHJlc2VudGF0aW9uSW5kaWNhdG9yc10sXHJcbiAgICAgIFt0aGlzLmhvdGxpbmVEZXZpY2UsICdob3RsaW5lRGV2aWNlJywgISF0aGlzLmRldmljZT8uaG90bGluZURldmljZV0sXHJcbiAgICAgIFt0aGlzLmNhbGxlcklkRm9yQ2FsbHNGcm9tVGhpc1Bob25lLCAndXNlRGV2aWNlUG9vbENncG5JbmdyZXNzRE4nLCAhIXRoaXMuZGV2aWNlPy51c2VEZXZpY2VQb29sQ2dwbkluZ3Jlc3NETl0sXHJcbiAgICBdO1xyXG5cclxuICAgIHJldHVybiBmaWVsZHNNYXBcclxuICAgICAgLmZpbHRlcigoW2NvbnRyb2wsICwgb3JpZ2luYWxWYWx1ZV0pID0+IGNvbnRyb2wudmFsdWUgIT09IG9yaWdpbmFsVmFsdWUpXHJcbiAgICAgIC5tYXAoKFtjb250cm9sLCBmaWVsZF0pID0+IGBkZXZpY2UuJHtmaWVsZH09JHtjb250cm9sLnZhbHVlfWApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPGFwcC1sb2FkZXIgKm5nSWY9XCJkYXRhUGVuZGluZ1wiPjwvYXBwLWxvYWRlcj5cclxuPGRpdiBjbGFzcz1cImdvLWJhY2stYm94XCIgKGNsaWNrKT1cIm9uR29CYWNrKClcIj5cclxuICA8ZGl2IGNsYXNzPVwiZ28tYmFjay1ib3gtY29udGFpbmVyXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cImFwcC1pY29uIGljb24td2ViZXgtbGVmdC1hcnJvd1wiPjwvc3Bhbj5cclxuICAgIDxzcGFuIGNsYXNzPVwiZ28tYmFjay10aXRsZVwiPkRldmljZSBHZW5lcmFsIEluZm88L3NwYW4+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG5cclxuPGRpdiBjbGFzcz1cImRldmljZS1zZXR0aW5nc1wiPlxyXG4gIDxkaXYgY2xhc3M9XCJwYW5lbC1oZWFkZXJcIj5cclxuICAgIDxzcGFuIGNsYXNzPVwicGFuZWwtaGVhZGVyX190aXRsZVwiPkRldmljZSBTZXR0aW5nczwvc3Bhbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInBhbmVsLWJvZHlcIj5cclxuICAgIDxzZWN0aW9uIGNsYXNzPVwiY2FyZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPkRldGFpbHM8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFpbi12YWx1ZVwiPnt7IGRldmljZT8ubmFtZSB8fCAnTi9BJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJleHRyYS1pbmZvXCI+TmFtZTwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGVcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYWluLXZhbHVlXCI+e3sgZGV2aWNlPy5tb2RlbCB8fCAnTi9BJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJleHRyYS1pbmZvXCI+VHlwZTwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInNpZGVcIj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtYWluLXZhbHVlXCI+e3sgZGV2aWNlPy5kZXNjcmlwdGlvbiB8fCAnTi9BJyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJleHRyYS1pbmZvXCI+RGV2aWNlIGRlc2NyaXB0aW9uPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3dcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFpbi12YWx1ZVwiPnt7IGxpbmVzIH19PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImV4dHJhLWluZm9cIj5MaW5lPC9zcGFuPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImRldGFpbC1yb3cgZmxleC1jb2x1bW5cIiBzdHlsZT1cImdhcDogMC41cmVtO1wiPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LWRlc2NyaXB0aW9uXCI+UExBUiBzZXJ2aWNlPC9zcGFuPlxyXG4gICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgY2xhc3M9XCJjdXN0b20tdG9nZ2xlXCIgW2Zvcm1Db250cm9sXT1cInBsYXJTZXJ2aWNlXCI+PC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cImNhcmQgdmVydGljYWwtY2FyZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPkRldmljZSBpbmZvPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPlJlZ2lzdHJhdGlvbiBzdGF0dXM8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3BsYWluLXZhbHVlIHRleHQtZGVzY3JpcHRpb25cIj57eyBkZXZpY2U/LmZvcm0/LmdldCgncmVnaXN0cmF0aW9uU3RhdHVzJyk/LnZhbHVlIHx8ICdVbmtub3duJyB9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5JUCBBZGRyZXNzPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+e3sgZGV2aWNlPy5pcEFkZHJlc3MgfHwgJ05vbmUnIH19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPkRlc2NyaXB0aW9uPC9kaXY+XHJcbiAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJwbGFpbi1pbnB1dFwiIFtmb3JtQ29udHJvbF09XCJkZXNjcmlwdGlvblwiPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5Qcm90b2NvbDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPlNJUDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5Tb2Z0a2V5IHRlbXBsYXRlPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3Qtd3JhcFwiPlxyXG4gICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3RcIiBuYW1lPVwiY2x1c3RlclwiIFtmb3JtQ29udHJvbF09XCJzb2Z0a2V5VGVtcGxhdGVcIj5cclxuICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjbHVzdGVyIG9mIHNvZnRLZXlzXCIgW3ZhbHVlXT1cImNsdXN0ZXJcIj57eyBjbHVzdGVyIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3QtaWNvblwiIHNyYz1cImFzc2V0cy9pY29ucy9hcnJvdy1kb3duLWJvbGQuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+QnV0dG9uIHRlbXBsYXRlPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+U3RhbmRhcmQgODg1MSBTSVA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+TG9jYXRpb248L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3BsYWluLXZhbHVlIHRleHQtZGVzY3JpcHRpb25cIj5QYXJpc19pb3M8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+RGV2aWNlIHBvb2w8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdC13cmFwXCI+XHJcbiAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdFwiIG5hbWU9XCJkZXZpY2VQb29sXCIgW2Zvcm1Db250cm9sXT1cImRldmljZVBvb2xcIj5cclxuICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBwb29sIG9mIGRldmljZVBvb2xzXCIgW3ZhbHVlXT1cInBvb2xcIj57eyBwb29sIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3QtaWNvblwiIHNyYz1cImFzc2V0cy9pY29ucy9hcnJvdy1kb3duLWJvbGQuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+RGV2aWNlIENTUzwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0LXdyYXBcIj5cclxuICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0XCIgbmFtZT1cImRldmljZUNzc1wiIFtmb3JtQ29udHJvbF09XCJkZXZpY2VDc3NcIj5cclxuICAgICAgICAgICAgICA8b3B0aW9uICpuZ0Zvcj1cImxldCBjc3Mgb2YgY3NzT3B0aW9uc1wiIFt2YWx1ZV09XCJjc3NcIj57eyBjc3MgfX08L29wdGlvbj5cclxuICAgICAgICAgICAgPC9zZWxlY3Q+XHJcbiAgICAgICAgICAgIDxpbWcgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdC1pY29uXCIgc3JjPVwiYXNzZXRzL2ljb25zL2Fycm93LWRvd24tYm9sZC5zdmdcIiBhbHQ9XCJcIj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5GaXJtd2FyZSB2ZXJzaW9uPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+e3sgZGV2aWNlPy5zb2Z0d2FyZVZlcnNpb24gfHwgJ1Vua25vd24nIH19PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG5cclxuICAgIDxzZWN0aW9uIGNsYXNzPVwiY2FyZCB2ZXJ0aWNhbC1jYXJkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+TWVkaWEgU2V0dGluZ3M8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+TWVkaWEgUmVzb3VyY2UgR3JvdXAgTGlzdDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPk5vbmU8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+TmV0d29yayBIb2xkIE1PSCBBdWRpbyBTb3VyY2U8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3BsYWluLXZhbHVlIHRleHQtZGVzY3JpcHRpb25cIj5Ob25lPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPlVzZXIgSG9sZCBNT0ggQXVkaW8gU291cmNlPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+Tm9uZTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cImNhcmQgdmVydGljYWwtY2FyZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPkFBUiBTZXR0aW5nczwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5BQVIgQ2FsbGluZyBTZWFyY2ggU3BhY2U8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3BsYWluLXZhbHVlIHRleHQtZGVzY3JpcHRpb25cIj5Ob25lPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPkFBUiBHcm91cDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPk5vbmU8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJjYXJkIHZlcnRpY2FsLWNhcmRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIj5EZXZpY2UgQWRkaXRpb25hbCBJbmZvcm1hdGlvbjwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5Db21tb24gUGhvbmUgUHJvZmlsZTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPlN0YW5kYXJkIENvbW1vbiBQaG9uZSBQcm9maWxlPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPlVzZXIgTG9jYWxlPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+Tm9uZTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5FbmFibGUgRXh0ZW5zaW9uIE1vYmlsaXR5PC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19pbnB1dFwiPlxyXG4gICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBjbGFzcz1cImN1c3RvbS10b2dnbGVcIiBbZm9ybUNvbnRyb2xdPVwiZW5hYmxlRXh0ZW5zaW9uTW9iaWxpdHlcIj48L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+UHJpdmFjeTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPkRlZmF1bHQ8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+TW9iaWxpdHkgdXNlciBJRDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPkFkYW0uQWxsZW48L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+QWx3YXlzIFVzZSBQcmltZSBMaW5lPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+RGVmYXVsdDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5HZW9sb2NhdGlvbjwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPiZuYnNwOzwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5Mb2dnZWQgSW50byBIdW50IEdyb3VwPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19pbnB1dFwiPlxyXG4gICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBjbGFzcz1cImN1c3RvbS10b2dnbGVcIiBbZm9ybUNvbnRyb2xdPVwibG9nZ2VkSW50b0h1bnRHcm91cFwiPjwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5SZW1vdGUgRGV2aWNlPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19pbnB1dFwiPlxyXG4gICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBjbGFzcz1cImN1c3RvbS10b2dnbGVcIiBbZm9ybUNvbnRyb2xdPVwicmVtb3RlRGV2aWNlXCI+PC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPlBob25lIFNlY3VyaXR5IFByb2ZpbGU8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3BsYWluLXZhbHVlIHRleHQtZGVzY3JpcHRpb25cIj5DaXNjbyBEdWFsIE1vZGUgZm9yIGlQaG9uZSAtIFN0YW5kYXJkIFNJUCBOb24tU2VjdXJlIFByb2ZpbGU8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+TmV0d29yayBMb2NhbGU8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3BsYWluLXZhbHVlIHRleHQtZGVzY3JpcHRpb25cIj5DaGluYTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5CdWlsdCBJbiBCcmlkZ2U8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3BsYWluLXZhbHVlIHRleHQtZGVzY3JpcHRpb25cIj5EZWZhdWx0PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPkRldmljZSBNb2JpbGl0eSBNb2RlPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+RGVmYXVsdDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5Vc2UgVHJ1c3RlZCBSZWxheSBQb2ludDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPkRlZmF1bHQ8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+QWx3YXlzIFVzZSBQcmltZSBMaW5lIGZvciBWb2ljZSBNZXNzYWdlPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+RGVmYXVsdDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5JZ25vcmUgUHJlc2VudGF0aW9uIEluZGljYXRvcnMoIGludGVybmFsIGNhbGxzIG9ubHkgKTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9faW5wdXRcIj5cclxuICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgY2xhc3M9XCJjdXN0b20tdG9nZ2xlXCIgW2Zvcm1Db250cm9sXT1cImlnbm9yZVByZXNlbnRhdGlvbkluZGljYXRvcnNcIj48L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3BcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5Ib3QgbGluZSBEZXZpY2U8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX2lucHV0XCI+XHJcbiAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIGNsYXNzPVwiY3VzdG9tLXRvZ2dsZVwiIFtmb3JtQ29udHJvbF09XCJob3RsaW5lRGV2aWNlXCI+PC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG5cclxuICAgIDxzZWN0aW9uIGNsYXNzPVwiY2FyZCB2ZXJ0aWNhbC1jYXJkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+TnVtYmVyIFByZXNlbnRhdGlvbiBUcmFuc2Zvcm1hdGlvbjwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5cclxuICAgICAgICAgICAgQ2FsbGVyIElEIEZvciBDYWxscyBGcm9tIFRoaXMgUGhvbmVcclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGluZm8taWNvbiByZW0xXCIgW21hdFRvb2x0aXBdPVwiJ0NvbnRyb2xzIGhvdyB0aGUgY2FsbGVyIElEIGlzIHByZXNlbnRlZCBmb3IgY2FsbHMgcGxhY2VkIGZyb20gdGhpcyBwaG9uZS4nXCI+PC9pPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19pbnB1dFwiPlxyXG4gICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBjbGFzcz1cImN1c3RvbS10b2dnbGVcIiBbZm9ybUNvbnRyb2xdPVwiY2FsbGVySWRGb3JDYWxsc0Zyb21UaGlzUGhvbmVcIj48L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3BcIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5cclxuICAgICAgICAgICAgUmVtb3RlIE51bWJlclxyXG4gICAgICAgICAgICA8aSBjbGFzcz1cImljb24gaW5mby1pY29uIHJlbTFcIiBbbWF0VG9vbHRpcF09XCInQ29udHJvbHMgaG93IHRoZSByZW1vdGUgbnVtYmVyIGlzIHByZXNlbnRlZCBmb3IgdGhpcyBwaG9uZS4nXCI+PC9pPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19pbnB1dFwiPlxyXG4gICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBjbGFzcz1cImN1c3RvbS10b2dnbGVcIiBbZm9ybUNvbnRyb2xdPVwicmVtb3RlTnVtYmVyXCI+PC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG4gIDwvZGl2PlxyXG5cclxuICA8ZGl2IGNsYXNzPVwic2V0dGluZ3MtZm9vdGVyXCI+XHJcbiAgICA8ZGl2IGNsYXNzPVwic2V0dGluZ3MtZm9vdGVyX19hY3Rpb25zXCI+XHJcbiAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwiYnRuLW91dGxpbmVcIiAoY2xpY2spPVwib25DYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1maWxsZWRcIiBbZGlzYWJsZWRdPVwiIWhhc0NoYW5nZXNcIiAoY2xpY2spPVwib25TYXZlKClcIj5TYXZlPC9idXR0b24+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbiJdfQ==
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlLXNldHRpbmdzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3R1a2kvd2lkZ2V0cy91c2VyLWRldmljZS1tYW5hZ2Uvc3JjL2RldmljZS1zZXR0aW5ncy9kZXZpY2Utc2V0dGluZ3MuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHVraS93aWRnZXRzL3VzZXItZGV2aWNlLW1hbmFnZS9zcmMvZGV2aWNlLXNldHRpbmdzL2RldmljZS1zZXR0aW5ncy5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQXFCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxRixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFN0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxNQUFNLENBQUM7Ozs7Ozs7Ozs7Ozs7QUFXekUsTUFBTSxPQUFPLHVCQUF1QjtJQTJDbEMsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLElBQUksRUFBRSxTQUFTLElBQUksSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDO0lBQ3RILENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxXQUFXLENBQUM7SUFDOUMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLG1CQUFtQixDQUFDLHVCQUF1QixDQUFDO0lBQzFE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LENBQUMsT0FBTyxFQUFFLEFBQUQsRUFBRyxhQUFhLENBQUMsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssS0FBSyxhQUFhLENBQUM7YUFDdkUsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLFVBQVUsS0FBSyxJQUFJLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQzNCLENBQUM7O3FIQTFNVSx1QkFBdUI7eUdBQXZCLHVCQUF1QixrTUNkcEMsMjdjQXdTQTs0RkQxUmEsdUJBQXVCO2tCQUxuQyxTQUFTOytCQUNFLHFCQUFxQjs4TUFLckIsTUFBTTtzQkFBZixNQUFNO2dCQUNFLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xyXG5pbXBvcnQgeyBmaW5hbGl6ZSwgZm9ya0pvaW4sIFN1YmplY3QsIHN3aXRjaE1hcCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcbmltcG9ydCB7IFVzZXJTZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvdXNlci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQVBJU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2FwaS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgRGV2aWNlU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL2RldmljZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2l0ZVNldHRpbmdzU2VydmljZSB9IGZyb20gJy4uL3NlcnZpY2VzL3NpdGUtc2V0dGluZ3Muc2VydmljZSc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICBzZWxlY3RvcjogJ2FwcC1kZXZpY2Utc2V0dGluZ3MnLFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9kZXZpY2Utc2V0dGluZ3MuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2RldmljZS1zZXR0aW5ncy5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgRGV2aWNlU2V0dGluZ3NDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSB7XHJcbiAgQE91dHB1dCgpIGdvQmFjayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBASW5wdXQoKSB0b2tlbiE6IHN0cmluZztcclxuICBASW5wdXQoKSBob3N0ITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHNpdGVJZCE6IHN0cmluZztcclxuICBASW5wdXQoKSB1c2VySWQhOiBzdHJpbmc7XHJcbiAgQElucHV0KCkgZGV2aWNlTmFtZSE6IHN0cmluZztcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBkZXN0cm95JCA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcbiAgcHVibGljIGRhdGFQZW5kaW5nID0gZmFsc2U7XHJcbiAgcHVibGljIGRldmljZTogYW55ID0gbnVsbDtcclxuICBwdWJsaWMgc29mdEtleXM6IHN0cmluZ1tdID0gW107XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBwbGFyU2VydmljZSA9IG5ldyBGb3JtQ29udHJvbChmYWxzZSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IGRlc2NyaXB0aW9uID0gbmV3IEZvcm1Db250cm9sKCcnKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgc29mdGtleVRlbXBsYXRlID0gbmV3IEZvcm1Db250cm9sKCdTdGFuZGFyZCB1c2VyJyk7XHJcbiAgcHVibGljIHJlYWRvbmx5IGRldmljZVBvb2wgPSBuZXcgRm9ybUNvbnRyb2woJ1BhcmlzX3JlZ3VsYXJfRFBfdGVzdCcpO1xyXG4gIHB1YmxpYyByZWFkb25seSBkZXZpY2VDc3MgPSBuZXcgRm9ybUNvbnRyb2woJ1BhcmlzX25hdGlvbmFsX0NTUycpO1xyXG4gIHB1YmxpYyByZWFkb25seSBlbmFibGVFeHRlbnNpb25Nb2JpbGl0eSA9IG5ldyBGb3JtQ29udHJvbCh0cnVlKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgbG9nZ2VkSW50b0h1bnRHcm91cCA9IG5ldyBGb3JtQ29udHJvbChmYWxzZSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IHJlbW90ZURldmljZSA9IG5ldyBGb3JtQ29udHJvbChmYWxzZSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IGlnbm9yZVByZXNlbnRhdGlvbkluZGljYXRvcnMgPSBuZXcgRm9ybUNvbnRyb2woZmFsc2UpO1xyXG4gIHB1YmxpYyByZWFkb25seSBob3RsaW5lRGV2aWNlID0gbmV3IEZvcm1Db250cm9sKGZhbHNlKTtcclxuICBwdWJsaWMgcmVhZG9ubHkgY2FsbGVySWRGb3JDYWxsc0Zyb21UaGlzUGhvbmUgPSBuZXcgRm9ybUNvbnRyb2wodHJ1ZSk7XHJcbiAgcHVibGljIHJlYWRvbmx5IHJlbW90ZU51bWJlciA9IG5ldyBGb3JtQ29udHJvbCh0cnVlKTtcclxuXHJcbiAgcHJpdmF0ZSByZWFkb25seSBmb3JtQ29udHJvbHM6IEZvcm1Db250cm9sPGFueT5bXSA9IFtcclxuICAgIHRoaXMucGxhclNlcnZpY2UsXHJcbiAgICB0aGlzLmRlc2NyaXB0aW9uLFxyXG4gICAgdGhpcy5zb2Z0a2V5VGVtcGxhdGUsXHJcbiAgICB0aGlzLmRldmljZVBvb2wsXHJcbiAgICB0aGlzLmRldmljZUNzcyxcclxuICAgIHRoaXMuZW5hYmxlRXh0ZW5zaW9uTW9iaWxpdHksXHJcbiAgICB0aGlzLmxvZ2dlZEludG9IdW50R3JvdXAsXHJcbiAgICB0aGlzLnJlbW90ZURldmljZSxcclxuICAgIHRoaXMuaWdub3JlUHJlc2VudGF0aW9uSW5kaWNhdG9ycyxcclxuICAgIHRoaXMuaG90bGluZURldmljZSxcclxuICAgIHRoaXMuY2FsbGVySWRGb3JDYWxsc0Zyb21UaGlzUGhvbmUsXHJcbiAgICB0aGlzLnJlbW90ZU51bWJlcixcclxuICBdO1xyXG5cclxuICBwdWJsaWMgaGFzQ2hhbmdlcyA9IGZhbHNlO1xyXG5cclxuICBnZXQgbGluZXMoKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB0aGlzLmRldmljZT8ubGluZXM/Lm1hcCgobGluZTogYW55KSA9PiBsaW5lPy5leHRlbnNpb24gfHwgbGluZT8ubnVtYmVyKS5maWx0ZXIoQm9vbGVhbikuam9pbignIHwgJykgfHwgJ04vQSc7XHJcbiAgfVxyXG5cclxuICBnZXQgZGV2aWNlUG9vbHMoKTogc3RyaW5nW10ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2l0ZVNldHRpbmdzU2VydmljZS5kZXZpY2VQb29scztcclxuICB9XHJcblxyXG4gIGdldCBjc3NPcHRpb25zKCk6IHN0cmluZ1tdIHtcclxuICAgIHJldHVybiB0aGlzLnNpdGVTZXR0aW5nc1NlcnZpY2UuY2FsbGluZ1NlYXJjaFNwYWNlVHlwZXM7XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyB1c2VyU2VydmljZTogVXNlclNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGFwaVNlcnZpY2U6IEFQSVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGRldmljZVNlcnZpY2U6IERldmljZVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHNpdGVTZXR0aW5nc1NlcnZpY2U6IFNpdGVTZXR0aW5nc1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlcjogUm91dGVyLFxyXG4gICkge1xyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmFwaVNlcnZpY2UudG9rZW4gPSB0aGlzLnRva2VuO1xyXG4gICAgdGhpcy5hcGlTZXJ2aWNlLmFwaVVybCA9IHRoaXMuaG9zdDtcclxuXHJcbiAgICB0aGlzLmZvcm1Db250cm9scy5mb3JFYWNoKGNvbnRyb2wgPT4gY29udHJvbC52YWx1ZUNoYW5nZXNcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHRoaXMuaGFzQ2hhbmdlcyA9IHRydWUpKTtcclxuXHJcbiAgICBpZiAodGhpcy51c2VyU2VydmljZS51c2VyRGV2aWNlKSB7XHJcbiAgICAgIHRoaXMuZGV2aWNlID0gdGhpcy51c2VyU2VydmljZS51c2VyRGV2aWNlO1xyXG4gICAgICB0aGlzLnBsYXJTZXJ2aWNlLnNldFZhbHVlKCEhdGhpcy5kZXZpY2U/LnBsYXJTZXJ2aWNlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgICB0aGlzLmRlc2NyaXB0aW9uLnNldFZhbHVlKHRoaXMuZGV2aWNlPy5kZXNjcmlwdGlvbiB8fCAnJywge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5zb2Z0a2V5VGVtcGxhdGUuc2V0VmFsdWUodGhpcy5kZXZpY2U/LnNvZnRrZXlUZW1wbGF0ZSB8fCAnJywge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5kZXZpY2VQb29sLnNldFZhbHVlKHRoaXMuZGV2aWNlPy5kZXZpY2VQb29sTmFtZSB8fCAnJywge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5kZXZpY2VDc3Muc2V0VmFsdWUodGhpcy5kZXZpY2U/LmNhbGxpbmdTZWFyY2hTcGFjZU5hbWUgfHwgJycsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgIHRoaXMuZW5hYmxlRXh0ZW5zaW9uTW9iaWxpdHkuc2V0VmFsdWUoISF0aGlzLmRldmljZT8uZW5hYmxlZEV4dGVuc2lvbk1vYmlsaXR5LCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgICB0aGlzLmxvZ2dlZEludG9IdW50R3JvdXAuc2V0VmFsdWUoISF0aGlzLmRldmljZT8ubG9nZ2VkSW50b0h1bnRHcm91cCwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5yZW1vdGVEZXZpY2Uuc2V0VmFsdWUoISF0aGlzLmRldmljZT8ucmVtb3RlRGV2aWNlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgICB0aGlzLmhvdGxpbmVEZXZpY2Uuc2V0VmFsdWUoISF0aGlzLmRldmljZT8uaG90bGluZURldmljZSwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5pZ25vcmVQcmVzZW50YXRpb25JbmRpY2F0b3JzLnNldFZhbHVlKCEhdGhpcy5kZXZpY2U/Lmlnbm9yZVByZXNlbnRhdGlvbkluZGljYXRvcnMsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgIHRoaXMuY2FsbGVySWRGb3JDYWxsc0Zyb21UaGlzUGhvbmUuc2V0VmFsdWUoISF0aGlzLmRldmljZT8udXNlRGV2aWNlUG9vbENncG5JbmdyZXNzRE4sIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgIHRoaXMucmVtb3RlTnVtYmVyLnNldFZhbHVlKCEhdGhpcy5kZXZpY2U/LnJlbW90ZURldmljZSwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5nZXRTaXRlU2V0dGluZ3MoKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZ2V0RGF0YSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXREYXRhKCk6IHZvaWQge1xyXG4gICAgdGhpcy5kYXRhUGVuZGluZyA9IHRydWU7XHJcbiAgICBjb25zdCBkZXZpY2VUeXBlID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2RldmljZVR5cGUnKTtcclxuICAgIGxldCByZXF1ZXN0O1xyXG4gICAgaWYgKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdpc1dlYmV4JykgPT09ICd0cnVlJykge1xyXG4gICAgICBjb25zdCBjdXN0b21lcklkID0gbG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1c3RvbWVySWQnKTtcclxuICAgICAgY29uc3Qgd2ViZXhJZCA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCd3ZWJleFVVSUQnKTtcclxuICAgICAgcmVxdWVzdCA9IHRoaXMudXNlclNlcnZpY2UuZmV0Y2hXZWJleFVzZXJEZXZpY2UoY3VzdG9tZXJJZCEsIHdlYmV4SWQhLCBkZXZpY2VUeXBlISk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXF1ZXN0ID0gdGhpcy51c2VyU2VydmljZS5mZXRjaERJVXNlckRldmljZShOdW1iZXIodGhpcy5zaXRlSWQpLCB0aGlzLnVzZXJJZCwgZGV2aWNlVHlwZSEpO1xyXG4gICAgfVxyXG4gICAgZm9ya0pvaW4oe1xyXG4gICAgICBkZXZpY2U6IHJlcXVlc3QsXHJcbiAgICAgIHNvZnRLZXlzOiB0aGlzLnNpdGVTZXR0aW5nc1NlcnZpY2UuZ2V0RGV2aWNlU29mdGtleVRlbXBsYXRlcyhOdW1iZXIodGhpcy5zaXRlSWQpKSxcclxuICAgICAgc2l0ZURlZmF1bHRzOiB0aGlzLnNpdGVTZXR0aW5nc1NlcnZpY2UuZ2V0U2l0ZURlZmF1bHRzKE51bWJlcih0aGlzLnNpdGVJZCkpLFxyXG4gICAgfSlcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxyXG4gICAgICAucGlwZShmaW5hbGl6ZSgoKSA9PiB0aGlzLmRhdGFQZW5kaW5nID0gZmFsc2UpKVxyXG4gICAgICAuc3Vic2NyaWJlKCh7ZGV2aWNlLCBzb2Z0S2V5c30pID0+IHtcclxuICAgICAgICB0aGlzLmRldmljZSA9IGRldmljZTtcclxuICAgICAgICB0aGlzLnNvZnRLZXlzID0gKHNvZnRLZXlzIGFzIHN0cmluZ1tdKSB8fCBbXTtcclxuICAgICAgICB0aGlzLnBsYXJTZXJ2aWNlLnNldFZhbHVlKCEhdGhpcy5kZXZpY2U/LnBsYXJTZXJ2aWNlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgICAgIHRoaXMuZGVzY3JpcHRpb24uc2V0VmFsdWUodGhpcy5kZXZpY2U/LmRlc2NyaXB0aW9uIHx8ICcnLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgICAgIHRoaXMuc29mdGtleVRlbXBsYXRlLnNldFZhbHVlKHRoaXMuZGV2aWNlPy5zb2Z0a2V5VGVtcGxhdGUgfHwgJycsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgICAgdGhpcy5kZXZpY2VQb29sLnNldFZhbHVlKHRoaXMuZGV2aWNlPy5kZXZpY2VQb29sTmFtZSB8fCAnJywge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgICB0aGlzLmRldmljZUNzcy5zZXRWYWx1ZSh0aGlzLmRldmljZT8uY2FsbGluZ1NlYXJjaFNwYWNlTmFtZSB8fCAnJywge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgICB0aGlzLmVuYWJsZUV4dGVuc2lvbk1vYmlsaXR5LnNldFZhbHVlKCEhdGhpcy5kZXZpY2U/LmVuYWJsZWRFeHRlbnNpb25Nb2JpbGl0eSwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgICB0aGlzLmxvZ2dlZEludG9IdW50R3JvdXAuc2V0VmFsdWUoISF0aGlzLmRldmljZT8ubG9nZ2VkSW50b0h1bnRHcm91cCwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5yZW1vdGVEZXZpY2Uuc2V0VmFsdWUoISF0aGlzLmRldmljZT8ucmVtb3RlRGV2aWNlLCB7ZW1pdEV2ZW50OiBmYWxzZX0pO1xyXG4gICAgICB0aGlzLmhvdGxpbmVEZXZpY2Uuc2V0VmFsdWUoISF0aGlzLmRldmljZT8uaG90bGluZURldmljZSwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgdGhpcy5pZ25vcmVQcmVzZW50YXRpb25JbmRpY2F0b3JzLnNldFZhbHVlKCEhdGhpcy5kZXZpY2U/Lmlnbm9yZVByZXNlbnRhdGlvbkluZGljYXRvcnMsIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgIHRoaXMuY2FsbGVySWRGb3JDYWxsc0Zyb21UaGlzUGhvbmUuc2V0VmFsdWUoISF0aGlzLmRldmljZT8udXNlRGV2aWNlUG9vbENncG5JbmdyZXNzRE4sIHtlbWl0RXZlbnQ6IGZhbHNlfSk7XHJcbiAgICAgIHRoaXMucmVtb3RlTnVtYmVyLnNldFZhbHVlKCEhdGhpcy5kZXZpY2U/LnJlbW90ZURldmljZSwge2VtaXRFdmVudDogZmFsc2V9KTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFNpdGVTZXR0aW5ncygpOiB2b2lkIHtcclxuICAgIHRoaXMuZGF0YVBlbmRpbmcgPSB0cnVlO1xyXG4gICAgZm9ya0pvaW4oe1xyXG4gICAgICBzb2Z0S2V5czogdGhpcy5zaXRlU2V0dGluZ3NTZXJ2aWNlLmdldERldmljZVNvZnRrZXlUZW1wbGF0ZXMoTnVtYmVyKHRoaXMuc2l0ZUlkKSksXHJcbiAgICAgIHNpdGVEZWZhdWx0czogdGhpcy5zaXRlU2V0dGluZ3NTZXJ2aWNlLmdldFNpdGVEZWZhdWx0cyhOdW1iZXIodGhpcy5zaXRlSWQpKSxcclxuICAgIH0pXHJcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcclxuICAgICAgLnBpcGUoZmluYWxpemUoKCkgPT4gdGhpcy5kYXRhUGVuZGluZyA9IGZhbHNlKSlcclxuICAgICAgLnN1YnNjcmliZSgoe3NvZnRLZXlzfSkgPT4gdGhpcy5zb2Z0S2V5cyA9IChzb2Z0S2V5cyBhcyBzdHJpbmdbXSkgfHwgW10pO1xyXG4gIH1cclxuXHJcbiAgb25Hb0JhY2soKTogdm9pZCB7XHJcbiAgICBjb25zdCBbcGF0aF0gPSB0aGlzLnJvdXRlci51cmwuc3BsaXQoJz8nKTtcclxuICAgIGNvbnN0IHNlZ21lbnRzID0gcGF0aC5zcGxpdCgnLycpLmZpbHRlcihCb29sZWFuKTtcclxuICAgIGlmIChzZWdtZW50c1tzZWdtZW50cy5sZW5ndGggLSAxXSA9PT0gJ2RldmljZS1zZXR0aW5ncycpIHtcclxuICAgICAgc2VnbWVudHMucG9wKCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKCcvJyArIHNlZ21lbnRzLmpvaW4oJy8nKSk7XHJcbiAgICAvLyB0aGlzLmdvQmFjay5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbkNhbmNlbCgpOiB2b2lkIHtcclxuICAgIHRoaXMub25Hb0JhY2soKTtcclxuICB9XHJcblxyXG4gIG9uU2F2ZSgpOiB2b2lkIHtcclxuICAgIGlmICghdGhpcy5oYXNDaGFuZ2VzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBib2R5ID0gdGhpcy5nZXRDaGFuZ2VkRGV2aWNlRmllbGRzKCk7XHJcbiAgICBpZiAoIWJvZHkubGVuZ3RoKSB7XHJcbiAgICAgIHRoaXMuaGFzQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm9uR29CYWNrKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLmRhdGFQZW5kaW5nID0gdHJ1ZTtcclxuICAgIHRoaXMuZGV2aWNlU2VydmljZS5wdXREZXZpY2VGaWVsZHMoTnVtYmVyKHRoaXMuc2l0ZUlkKSwgdGhpcy5kZXZpY2U/Lm5hbWUgfHwgJycsIHRoaXMudXNlclNlcnZpY2UudXNlclRva2VuLCBib2R5KVxyXG4gICAgICAucGlwZShcclxuICAgICAgICBzd2l0Y2hNYXAoKCkgPT4gdGhpcy51c2VyU2VydmljZS5wZXJzaXN0VXNlckNhY2hlKCkpLFxyXG4gICAgICAgIHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSxcclxuICAgICAgICBmaW5hbGl6ZSgoKSA9PiB0aGlzLmRhdGFQZW5kaW5nID0gZmFsc2UpLFxyXG4gICAgICApXHJcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuaGFzQ2hhbmdlcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMub25Hb0JhY2soKTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENoYW5nZWREZXZpY2VGaWVsZHMoKTogc3RyaW5nW10ge1xyXG4gICAgY29uc3QgZmllbGRzTWFwOiBBcnJheTxbRm9ybUNvbnRyb2w8YW55Piwgc3RyaW5nLCBhbnldPiA9IFtcclxuICAgICAgW3RoaXMucGxhclNlcnZpY2UsICdwbGFyU2VydmljZScsICEhdGhpcy5kZXZpY2U/LnBsYXJTZXJ2aWNlXSxcclxuICAgICAgW3RoaXMuZGVzY3JpcHRpb24sICdkZXNjcmlwdGlvbicsIHRoaXMuZGV2aWNlPy5kZXNjcmlwdGlvbiB8fCAnJ10sXHJcbiAgICAgIFt0aGlzLnNvZnRrZXlUZW1wbGF0ZSwgJ3NvZnRrZXlUZW1wbGF0ZScsIHRoaXMuZGV2aWNlPy5zb2Z0a2V5VGVtcGxhdGUgfHwgJyddLFxyXG4gICAgICBbdGhpcy5kZXZpY2VQb29sLCAnZGV2aWNlUG9vbE5hbWUnLCB0aGlzLmRldmljZT8uZGV2aWNlUG9vbE5hbWUgfHwgJyddLFxyXG4gICAgICBbdGhpcy5kZXZpY2VDc3MsICdjYWxsaW5nU2VhcmNoU3BhY2VOYW1lJywgdGhpcy5kZXZpY2U/LmNhbGxpbmdTZWFyY2hTcGFjZU5hbWUgfHwgJyddLFxyXG4gICAgICBbdGhpcy5lbmFibGVFeHRlbnNpb25Nb2JpbGl0eSwgJ2VuYWJsZWRFeHRlbnNpb25Nb2JpbGl0eScsICEhdGhpcy5kZXZpY2U/LmVuYWJsZWRFeHRlbnNpb25Nb2JpbGl0eV0sXHJcbiAgICAgIFt0aGlzLmxvZ2dlZEludG9IdW50R3JvdXAsICdsb2dnZWRJbnRvSHVudEdyb3VwJywgISF0aGlzLmRldmljZT8ubG9nZ2VkSW50b0h1bnRHcm91cF0sXHJcbiAgICAgIFt0aGlzLnJlbW90ZURldmljZSwgJ3JlbW90ZURldmljZScsICEhdGhpcy5kZXZpY2U/LnJlbW90ZURldmljZV0sXHJcbiAgICAgIFt0aGlzLmlnbm9yZVByZXNlbnRhdGlvbkluZGljYXRvcnMsICdpZ25vcmVQcmVzZW50YXRpb25JbmRpY2F0b3JzJywgISF0aGlzLmRldmljZT8uaWdub3JlUHJlc2VudGF0aW9uSW5kaWNhdG9yc10sXHJcbiAgICAgIFt0aGlzLmhvdGxpbmVEZXZpY2UsICdob3RsaW5lRGV2aWNlJywgISF0aGlzLmRldmljZT8uaG90bGluZURldmljZV0sXHJcbiAgICAgIFt0aGlzLmNhbGxlcklkRm9yQ2FsbHNGcm9tVGhpc1Bob25lLCAndXNlRGV2aWNlUG9vbENncG5JbmdyZXNzRE4nLCAhIXRoaXMuZGV2aWNlPy51c2VEZXZpY2VQb29sQ2dwbkluZ3Jlc3NETl0sXHJcbiAgICBdO1xyXG5cclxuICAgIHJldHVybiBmaWVsZHNNYXBcclxuICAgICAgLmZpbHRlcigoW2NvbnRyb2wsICwgb3JpZ2luYWxWYWx1ZV0pID0+IGNvbnRyb2wudmFsdWUgIT09IG9yaWdpbmFsVmFsdWUpXHJcbiAgICAgIC5tYXAoKFtjb250cm9sLCBmaWVsZF0pID0+IGBkZXZpY2UuJHtmaWVsZH09JHtjb250cm9sLnZhbHVlfWApO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcclxuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcclxuICB9XHJcbn1cclxuIiwiPHRrLWxvYWRlciAqbmdJZj1cImRhdGFQZW5kaW5nXCI+PC90ay1sb2FkZXI+XHJcbjxkaXYgY2xhc3M9XCJnby1iYWNrLWJveFwiIChjbGljayk9XCJvbkdvQmFjaygpXCI+XHJcbiAgPGRpdiBjbGFzcz1cImdvLWJhY2stYm94LWNvbnRhaW5lclwiPlxyXG4gICAgPHNwYW4gY2xhc3M9XCJhcHAtaWNvbiBpY29uLXdlYmV4LWxlZnQtYXJyb3dcIj48L3NwYW4+XHJcbiAgICA8c3BhbiBjbGFzcz1cImdvLWJhY2stdGl0bGVcIj5EZXZpY2UgR2VuZXJhbCBJbmZvPC9zcGFuPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuXHJcbjxkaXYgY2xhc3M9XCJkZXZpY2Utc2V0dGluZ3NcIj5cclxuICA8ZGl2IGNsYXNzPVwicGFuZWwtaGVhZGVyXCI+XHJcbiAgICA8c3BhbiBjbGFzcz1cInBhbmVsLWhlYWRlcl9fdGl0bGVcIj5EZXZpY2UgU2V0dGluZ3M8L3NwYW4+XHJcbiAgPC9kaXY+XHJcblxyXG4gIDxkaXYgY2xhc3M9XCJwYW5lbC1ib2R5XCI+XHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cImNhcmRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIj5EZXRhaWxzPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1haW4tdmFsdWVcIj57eyBkZXZpY2U/Lm5hbWUgfHwgJ04vQScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXh0cmEtaW5mb1wiPk5hbWU8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFpbi12YWx1ZVwiPnt7IGRldmljZT8ubW9kZWwgfHwgJ04vQScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXh0cmEtaW5mb1wiPlR5cGU8L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaWRlXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWFpbi12YWx1ZVwiPnt7IGRldmljZT8uZGVzY3JpcHRpb24gfHwgJ04vQScgfX08L3NwYW4+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZXh0cmEtaW5mb1wiPkRldmljZSBkZXNjcmlwdGlvbjwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93XCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2lkZVwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1haW4tdmFsdWVcIj57eyBsaW5lcyB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJleHRyYS1pbmZvXCI+TGluZTwvc3Bhbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJkZXRhaWwtcm93IGZsZXgtY29sdW1uXCIgc3R5bGU9XCJnYXA6IDAuNXJlbTtcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC1kZXNjcmlwdGlvblwiPlBMQVIgc2VydmljZTwvc3Bhbj5cclxuICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIGNsYXNzPVwiY3VzdG9tLXRvZ2dsZVwiIFtmb3JtQ29udHJvbF09XCJwbGFyU2VydmljZVwiPjwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJjYXJkIHZlcnRpY2FsLWNhcmRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIj5EZXZpY2UgaW5mbzwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJtYWluLWNvbnRlbnRcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5SZWdpc3RyYXRpb24gc3RhdHVzPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+e3sgZGV2aWNlPy5mb3JtPy5nZXQoJ3JlZ2lzdHJhdGlvblN0YXR1cycpPy52YWx1ZSB8fCAnVW5rbm93bicgfX08L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+SVAgQWRkcmVzczwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPnt7IGRldmljZT8uaXBBZGRyZXNzIHx8ICdOb25lJyB9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5EZXNjcmlwdGlvbjwvZGl2PlxyXG4gICAgICAgICAgPGlucHV0IGNsYXNzPVwicGxhaW4taW5wdXRcIiBbZm9ybUNvbnRyb2xdPVwiZGVzY3JpcHRpb25cIj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+UHJvdG9jb2w8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3BsYWluLXZhbHVlIHRleHQtZGVzY3JpcHRpb25cIj5TSVA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+U29mdGtleSB0ZW1wbGF0ZTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0LXdyYXBcIj5cclxuICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0XCIgbmFtZT1cImNsdXN0ZXJcIiBbZm9ybUNvbnRyb2xdPVwic29mdGtleVRlbXBsYXRlXCI+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgY2x1c3RlciBvZiBzb2Z0S2V5c1wiIFt2YWx1ZV09XCJjbHVzdGVyXCI+e3sgY2x1c3RlciB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgPGltZyBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0LWljb25cIiBzcmM9XCJhc3NldHMvaWNvbnMvYXJyb3ctZG93bi1ib2xkLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPkJ1dHRvbiB0ZW1wbGF0ZTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPlN0YW5kYXJkIDg4NTEgU0lQPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPkxvY2F0aW9uPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+UGFyaXNfaW9zPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPkRldmljZSBwb29sPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3Qtd3JhcFwiPlxyXG4gICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3RcIiBuYW1lPVwiZGV2aWNlUG9vbFwiIFtmb3JtQ29udHJvbF09XCJkZXZpY2VQb29sXCI+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgcG9vbCBvZiBkZXZpY2VQb29sc1wiIFt2YWx1ZV09XCJwb29sXCI+e3sgcG9vbCB9fTwvb3B0aW9uPlxyXG4gICAgICAgICAgICA8L3NlbGVjdD5cclxuICAgICAgICAgICAgPGltZyBjbGFzcz1cImlucHV0LWhvbGRlcl9fc2VsZWN0LWljb25cIiBzcmM9XCJhc3NldHMvaWNvbnMvYXJyb3ctZG93bi1ib2xkLnN2Z1wiIGFsdD1cIlwiPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPkRldmljZSBDU1M8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdC13cmFwXCI+XHJcbiAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3NlbGVjdFwiIG5hbWU9XCJkZXZpY2VDc3NcIiBbZm9ybUNvbnRyb2xdPVwiZGV2aWNlQ3NzXCI+XHJcbiAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgY3NzIG9mIGNzc09wdGlvbnNcIiBbdmFsdWVdPVwiY3NzXCI+e3sgY3NzIH19PC9vcHRpb24+XHJcbiAgICAgICAgICAgIDwvc2VsZWN0PlxyXG4gICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW5wdXQtaG9sZGVyX19zZWxlY3QtaWNvblwiIHNyYz1cImFzc2V0cy9pY29ucy9hcnJvdy1kb3duLWJvbGQuc3ZnXCIgYWx0PVwiXCI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+RmlybXdhcmUgdmVyc2lvbjwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPnt7IGRldmljZT8uc29mdHdhcmVWZXJzaW9uIHx8ICdVbmtub3duJyB9fTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cImNhcmQgdmVydGljYWwtY2FyZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPk1lZGlhIFNldHRpbmdzPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzcz1cIm1haW4tY29udGVudFwiPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPk1lZGlhIFJlc291cmNlIEdyb3VwIExpc3Q8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3BsYWluLXZhbHVlIHRleHQtZGVzY3JpcHRpb25cIj5Ob25lPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPk5ldHdvcmsgSG9sZCBNT0ggQXVkaW8gU291cmNlPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+Tm9uZTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5Vc2VyIEhvbGQgTU9IIEF1ZGlvIFNvdXJjZTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPk5vbmU8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L3NlY3Rpb24+XHJcblxyXG4gICAgPHNlY3Rpb24gY2xhc3M9XCJjYXJkIHZlcnRpY2FsLWNhcmRcIj5cclxuICAgICAgPGRpdiBjbGFzcz1cImhlYWRlclwiPlxyXG4gICAgICAgIDxzcGFuIGNsYXNzPVwidGl0bGVcIj5BQVIgU2V0dGluZ3M8L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+QUFSIENhbGxpbmcgU2VhcmNoIFNwYWNlPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+Tm9uZTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5BQVIgR3JvdXA8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3BsYWluLXZhbHVlIHRleHQtZGVzY3JpcHRpb25cIj5Ob25lPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9zZWN0aW9uPlxyXG5cclxuICAgIDxzZWN0aW9uIGNsYXNzPVwiY2FyZCB2ZXJ0aWNhbC1jYXJkXCI+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cclxuICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+RGV2aWNlIEFkZGl0aW9uYWwgSW5mb3JtYXRpb248L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+Q29tbW9uIFBob25lIFByb2ZpbGU8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3BsYWluLXZhbHVlIHRleHQtZGVzY3JpcHRpb25cIj5TdGFuZGFyZCBDb21tb24gUGhvbmUgUHJvZmlsZTwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5Vc2VyIExvY2FsZTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPk5vbmU8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+RW5hYmxlIEV4dGVuc2lvbiBNb2JpbGl0eTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9faW5wdXRcIj5cclxuICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgY2xhc3M9XCJjdXN0b20tdG9nZ2xlXCIgW2Zvcm1Db250cm9sXT1cImVuYWJsZUV4dGVuc2lvbk1vYmlsaXR5XCI+PC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPlByaXZhY3k8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3BsYWluLXZhbHVlIHRleHQtZGVzY3JpcHRpb25cIj5EZWZhdWx0PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPk1vYmlsaXR5IHVzZXIgSUQ8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3BsYWluLXZhbHVlIHRleHQtZGVzY3JpcHRpb25cIj5BZGFtLkFsbGVuPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPkFsd2F5cyBVc2UgUHJpbWUgTGluZTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPkRlZmF1bHQ8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+R2VvbG9jYXRpb248L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3BsYWluLXZhbHVlIHRleHQtZGVzY3JpcHRpb25cIj4mbmJzcDs8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+TG9nZ2VkIEludG8gSHVudCBHcm91cDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9faW5wdXRcIj5cclxuICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgY2xhc3M9XCJjdXN0b20tdG9nZ2xlXCIgW2Zvcm1Db250cm9sXT1cImxvZ2dlZEludG9IdW50R3JvdXBcIj48L21hdC1zbGlkZS10b2dnbGU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+UmVtb3RlIERldmljZTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9faW5wdXRcIj5cclxuICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgY2xhc3M9XCJjdXN0b20tdG9nZ2xlXCIgW2Zvcm1Db250cm9sXT1cInJlbW90ZURldmljZVwiPjwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5QaG9uZSBTZWN1cml0eSBQcm9maWxlPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+Q2lzY28gRHVhbCBNb2RlIGZvciBpUGhvbmUgLSBTdGFuZGFyZCBTSVAgTm9uLVNlY3VyZSBQcm9maWxlPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPk5ldHdvcmsgTG9jYWxlPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+Q2hpbmE8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+QnVpbHQgSW4gQnJpZGdlPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19wbGFpbi12YWx1ZSB0ZXh0LWRlc2NyaXB0aW9uXCI+RGVmYXVsdDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxtYXQtZGl2aWRlcj48L21hdC1kaXZpZGVyPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXIgaW5wdXQtaG9sZGVyLXRvcC1ib3R0b21cIj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX25hbWVcIj5EZXZpY2UgTW9iaWxpdHkgTW9kZTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPkRlZmF1bHQ8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+VXNlIFRydXN0ZWQgUmVsYXkgUG9pbnQ8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX3BsYWluLXZhbHVlIHRleHQtZGVzY3JpcHRpb25cIj5EZWZhdWx0PC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wLWJvdHRvbVwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fbmFtZVwiPkFsd2F5cyBVc2UgUHJpbWUgTGluZSBmb3IgVm9pY2UgTWVzc2FnZTwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9fcGxhaW4tdmFsdWUgdGV4dC1kZXNjcmlwdGlvblwiPkRlZmF1bHQ8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyIGlucHV0LWhvbGRlci10b3AtYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+SWdub3JlIFByZXNlbnRhdGlvbiBJbmRpY2F0b3JzKCBpbnRlcm5hbCBjYWxscyBvbmx5ICk8L2Rpdj5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1ob2xkZXJfX2lucHV0XCI+XHJcbiAgICAgICAgICAgIDxtYXQtc2xpZGUtdG9nZ2xlIGNsYXNzPVwiY3VzdG9tLXRvZ2dsZVwiIFtmb3JtQ29udHJvbF09XCJpZ25vcmVQcmVzZW50YXRpb25JbmRpY2F0b3JzXCI+PC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+SG90IGxpbmUgRGV2aWNlPC9kaXY+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19pbnB1dFwiPlxyXG4gICAgICAgICAgICA8bWF0LXNsaWRlLXRvZ2dsZSBjbGFzcz1cImN1c3RvbS10b2dnbGVcIiBbZm9ybUNvbnRyb2xdPVwiaG90bGluZURldmljZVwiPjwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvc2VjdGlvbj5cclxuXHJcbiAgICA8c2VjdGlvbiBjbGFzcz1cImNhcmQgdmVydGljYWwtY2FyZFwiPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XHJcbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ0aXRsZVwiPk51bWJlciBQcmVzZW50YXRpb24gVHJhbnNmb3JtYXRpb248L3NwYW4+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8ZGl2IGNsYXNzPVwibWFpbi1jb250ZW50XCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItYm90dG9tXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+XHJcbiAgICAgICAgICAgIENhbGxlciBJRCBGb3IgQ2FsbHMgRnJvbSBUaGlzIFBob25lXHJcbiAgICAgICAgICAgIDxpIGNsYXNzPVwiaWNvbiBpbmZvLWljb24gcmVtMVwiIFttYXRUb29sdGlwXT1cIidDb250cm9scyBob3cgdGhlIGNhbGxlciBJRCBpcyBwcmVzZW50ZWQgZm9yIGNhbGxzIHBsYWNlZCBmcm9tIHRoaXMgcGhvbmUuJ1wiPjwvaT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9faW5wdXRcIj5cclxuICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgY2xhc3M9XCJjdXN0b20tdG9nZ2xlXCIgW2Zvcm1Db250cm9sXT1cImNhbGxlcklkRm9yQ2FsbHNGcm9tVGhpc1Bob25lXCI+PC9tYXQtc2xpZGUtdG9nZ2xlPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlciBpbnB1dC1ob2xkZXItdG9wXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtaG9sZGVyX19uYW1lXCI+XHJcbiAgICAgICAgICAgIFJlbW90ZSBOdW1iZXJcclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJpY29uIGluZm8taWNvbiByZW0xXCIgW21hdFRvb2x0aXBdPVwiJ0NvbnRyb2xzIGhvdyB0aGUgcmVtb3RlIG51bWJlciBpcyBwcmVzZW50ZWQgZm9yIHRoaXMgcGhvbmUuJ1wiPjwvaT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWhvbGRlcl9faW5wdXRcIj5cclxuICAgICAgICAgICAgPG1hdC1zbGlkZS10b2dnbGUgY2xhc3M9XCJjdXN0b20tdG9nZ2xlXCIgW2Zvcm1Db250cm9sXT1cInJlbW90ZU51bWJlclwiPjwvbWF0LXNsaWRlLXRvZ2dsZT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvc2VjdGlvbj5cclxuICA8L2Rpdj5cclxuXHJcbiAgPGRpdiBjbGFzcz1cInNldHRpbmdzLWZvb3RlclwiPlxyXG4gICAgPGRpdiBjbGFzcz1cInNldHRpbmdzLWZvb3Rlcl9fYWN0aW9uc1wiPlxyXG4gICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1vdXRsaW5lXCIgKGNsaWNrKT1cIm9uQ2FuY2VsKClcIj5DYW5jZWw8L2J1dHRvbj5cclxuICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tZmlsbGVkXCIgW2Rpc2FibGVkXT1cIiFoYXNDaGFuZ2VzXCIgKGNsaWNrKT1cIm9uU2F2ZSgpXCI+U2F2ZTwvYnV0dG9uPlxyXG4gICAgPC9kaXY+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=