@idea-ionic/uncommon 8.2.4 → 8.2.6

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 (44) hide show
  1. package/esm2022/src/AWSAPI.service.mjs +5 -5
  2. package/esm2022/src/AWSAPISocket.service.mjs +3 -3
  3. package/esm2022/src/address/address.component.mjs +4 -4
  4. package/esm2022/src/address/address.module.mjs +7 -7
  5. package/esm2022/src/announcement/announcement.component.mjs +3 -3
  6. package/esm2022/src/announcement/announcement.module.mjs +4 -4
  7. package/esm2022/src/cachedResources.service.mjs +3 -3
  8. package/esm2022/src/colors/colorPicker.component.mjs +8 -8
  9. package/esm2022/src/colors/colorPicker.module.mjs +4 -4
  10. package/esm2022/src/contacts/contacts.component.mjs +5 -5
  11. package/esm2022/src/contacts/contacts.module.mjs +7 -7
  12. package/esm2022/src/dateTime/calendarPicker.component.mjs +5 -5
  13. package/esm2022/src/dateTime/dateTime.component.mjs +5 -5
  14. package/esm2022/src/dateTime/dateTime.module.mjs +4 -4
  15. package/esm2022/src/duration/duration.component.mjs +3 -3
  16. package/esm2022/src/duration/duration.module.mjs +4 -4
  17. package/esm2022/src/echo/echo.module.mjs +4 -4
  18. package/esm2022/src/echo/echo.page.mjs +3 -3
  19. package/esm2022/src/errorReporting.service.mjs +5 -5
  20. package/esm2022/src/mde/mde.component.mjs +5 -5
  21. package/esm2022/src/mde/mde.module.mjs +4 -4
  22. package/esm2022/src/mde/mdeToolbar.component.mjs +3 -3
  23. package/esm2022/src/offline/cacheableResource.component.mjs +3 -3
  24. package/esm2022/src/offline/offline.module.mjs +4 -4
  25. package/esm2022/src/offline/offline.service.mjs +3 -3
  26. package/esm2022/src/offline/offlineData.service.mjs +3 -3
  27. package/esm2022/src/offline/offlineIndicator.component.mjs +5 -5
  28. package/esm2022/src/offline/offlineManager.component.mjs +5 -5
  29. package/esm2022/src/pushNotifications.service.mjs +5 -5
  30. package/esm2022/src/sentiment/sentiment.component.mjs +3 -3
  31. package/esm2022/src/sentiment/sentiment.module.mjs +4 -4
  32. package/esm2022/src/timeInterval/fromTimeToTime.component.mjs +5 -5
  33. package/esm2022/src/timeInterval/timeInterval.component.mjs +5 -5
  34. package/esm2022/src/timeInterval/timeInterval.module.mjs +4 -4
  35. package/esm2022/src/tinCan.service.mjs +3 -3
  36. package/fesm2022/idea-ionic-uncommon.mjs +124 -123
  37. package/fesm2022/idea-ionic-uncommon.mjs.map +1 -1
  38. package/package.json +6 -6
  39. package/src/AWSAPI.service.d.ts +1 -1
  40. package/src/address/address.component.d.ts +1 -1
  41. package/src/address/address.module.d.ts +1 -1
  42. package/src/contacts/contacts.module.d.ts +1 -1
  43. package/src/errorReporting.service.d.ts +1 -1
  44. package/src/offline/offlineIndicator.component.d.ts +1 -1
@@ -1,5 +1,5 @@
1
1
  import { Component, inject } from '@angular/core';
2
- import { ModalController, AlertController } from '@ionic/angular';
2
+ import { ModalController, AlertController } from '@ionic/angular/standalone';
3
3
  import { Browser } from '@capacitor/browser';
4
4
  import { IDEAActionSheetController, IDEATranslationsService } from '@idea-ionic/common';
5
5
  import { IDEAOfflineDataService } from './offlineData.service';
@@ -74,11 +74,11 @@ export class IDEAOfflineManagerComponent {
74
74
  close() {
75
75
  this._modal.dismiss();
76
76
  }
77
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IDEAOfflineManagerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
78
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.1", type: IDEAOfflineManagerComponent, selector: "idea-offline-manager", ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>\n {{ 'IDEA_UNCOMMON.OFFLINE.OFFLINE_MANAGER' | translate }}\n </ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"'IDEA_UNCOMMON.OFFLINE.ADVANCED_ACTIONS' | translate\" (click)=\"actions()\">\n <ion-icon slot=\"icon-only\" name=\"ellipsis-vertical\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-list class=\"aList\">\n @if (!_offline.synchronizing && _offline.requiresManualConfirmation) {\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.HUGE_SYNC_NEED_MANUAL_CONFIRMATION' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n }\n @if (!_offline.synchronizing) {\n <ion-list-header>\n <ion-label class=\"ion-text-wrap\">\n <h3 class=\"lastSyncAt\">\n {{ 'IDEA_UNCOMMON.OFFLINE.LAST_SYNC' | translate }}:\n <ion-text>\n {{\n _offline.lastSyncAt\n ? (_offline.lastSyncAt | dateLocale: 'medium')\n : ('IDEA_UNCOMMON.OFFLINE.NEVER' | translate)\n }}\n </ion-text>\n </h3>\n @if (_offline.errorInLastSync) {\n <p>\n <ion-text color=\"danger\">\n <b>{{ 'IDEA_UNCOMMON.OFFLINE.ERROR_DURING_LAST_SYNC' | translate }}</b>\n </ion-text>\n </p>\n }\n </ion-label>\n <ion-button\n size=\"small\"\n fill=\"solid\"\n [color]=\"_offline.errorInLastSync ? 'danger' : 'dark'\"\n [disabled]=\"_offline.isOffline()\"\n (click)=\"sync()\"\n >\n <ion-icon slot=\"start\" name=\"sync\" /> {{ 'IDEA_UNCOMMON.OFFLINE.SYNC_NOW' | translate }}\n </ion-button>\n </ion-list-header>\n }\n </ion-list>\n @if (_offline.synchronizing) {\n <ion-list class=\"aList\">\n <ion-item>\n <ion-label class=\"ion-text-center\">\n <ion-spinner name=\"crescent\" color=\"primary\" />\n </ion-label>\n </ion-item>\n </ion-list>\n }\n @if (_offline.useQueueAPIRequests) {\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.UPLOAD' | translate }}</h2>\n <p>{{ 'IDEA_UNCOMMON.OFFLINE.UPLOAD_QUEUE_REQUESTS_EXPLANATION' | translate }}</p>\n </ion-label>\n </ion-list-header>\n @if (!_offline.queueAPIRequests.length) {\n <ion-item>\n <i>{{ 'IDEA_UNCOMMON.OFFLINE.NO_ELEMENTS_TO_UPLOAD' | translate }}</i>\n <ion-icon slot=\"end\" size=\"small\" name=\"checkmark\" color=\"success\" />\n </ion-item>\n }\n @for (r of _offline.queueAPIRequests; track r; let odd = $odd) {\n <ion-item [class.oddItem]=\"odd\">\n <ion-label class=\"ion-text-wrap\">\n {{ r.description }}\n @if (r.error) {\n <p>\n <ion-text color=\"danger\">\n <b>{{ 'IDEA_UNCOMMON.OFFLINE.ERROR_CODE' | translate }}: {{ r.error }}</b>\n </ion-text>\n <br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_I' | translate }}<br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_II' | translate }}<br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_III' | translate }}\n </p>\n }\n </ion-label>\n @if (r.error) {\n <ion-button\n fill=\"clear\"\n slot=\"end\"\n color=\"danger\"\n [title]=\"'IDEA_UNCOMMON.OFFLINE.CANCEL_REQUEST' | translate\"\n (click)=\"deleteRequest(r)\"\n >\n <ion-icon slot=\"icon-only\" name=\"trash\" />\n </ion-button>\n }\n @if (r.error) {\n <ion-button\n fill=\"clear\"\n slot=\"end\"\n color=\"medium\"\n [title]=\"'IDEA_UNCOMMON.OFFLINE.DOWNLOAD_LOG' | translate\"\n (click)=\"downloadRequestLog(r)\"\n >\n <ion-icon slot=\"icon-only\" name=\"download\" />\n </ion-button>\n }\n @if (_offline.synchronizing) {\n <ion-spinner slot=\"end\" name=\"dots\" />\n }\n </ion-item>\n }\n </ion-list>\n }\n @if (_offline.getResources().length) {\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.DOWNLOAD' | translate }}</h2>\n <p>{{ 'IDEA_UNCOMMON.OFFLINE.DOWNLOAD_RESOURCES_EXPLANATION' | translate }}</p>\n </ion-label>\n </ion-list-header>\n @for (r of _offline.getResources(); track r) {\n <idea-cacheable-resource [resource]=\"_offline.getCacheableResource(r)\" />\n }\n </ion-list>\n }\n</ion-content>\n", styles: [".aList{max-width:500px;margin:0 auto}.aList ion-list-header{padding-right:10px}.aList ion-list-header h3.lastSyncAt{margin-top:6px}\n"], dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i1.IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }, { kind: "component", type: i1.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i2.IDEACacheableResourceComponent, selector: "idea-cacheable-resource", inputs: ["resource"] }, { kind: "pipe", type: i3.IDEATranslatePipe, name: "translate" }, { kind: "pipe", type: i3.IDEALocalizedDatePipe, name: "dateLocale" }] }); }
77
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAOfflineManagerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
78
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEAOfflineManagerComponent, selector: "idea-offline-manager", ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>\n {{ 'IDEA_UNCOMMON.OFFLINE.OFFLINE_MANAGER' | translate }}\n </ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"'IDEA_UNCOMMON.OFFLINE.ADVANCED_ACTIONS' | translate\" (click)=\"actions()\">\n <ion-icon slot=\"icon-only\" name=\"ellipsis-vertical\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-list class=\"aList\">\n @if (!_offline.synchronizing && _offline.requiresManualConfirmation) {\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.HUGE_SYNC_NEED_MANUAL_CONFIRMATION' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n }\n @if (!_offline.synchronizing) {\n <ion-list-header>\n <ion-label class=\"ion-text-wrap\">\n <h3 class=\"lastSyncAt\">\n {{ 'IDEA_UNCOMMON.OFFLINE.LAST_SYNC' | translate }}:\n <ion-text>\n {{\n _offline.lastSyncAt\n ? (_offline.lastSyncAt | dateLocale: 'medium')\n : ('IDEA_UNCOMMON.OFFLINE.NEVER' | translate)\n }}\n </ion-text>\n </h3>\n @if (_offline.errorInLastSync) {\n <p>\n <ion-text color=\"danger\">\n <b>{{ 'IDEA_UNCOMMON.OFFLINE.ERROR_DURING_LAST_SYNC' | translate }}</b>\n </ion-text>\n </p>\n }\n </ion-label>\n <ion-button\n size=\"small\"\n fill=\"solid\"\n [color]=\"_offline.errorInLastSync ? 'danger' : 'dark'\"\n [disabled]=\"_offline.isOffline()\"\n (click)=\"sync()\"\n >\n <ion-icon slot=\"start\" name=\"sync\" /> {{ 'IDEA_UNCOMMON.OFFLINE.SYNC_NOW' | translate }}\n </ion-button>\n </ion-list-header>\n }\n </ion-list>\n @if (_offline.synchronizing) {\n <ion-list class=\"aList\">\n <ion-item>\n <ion-label class=\"ion-text-center\">\n <ion-spinner name=\"crescent\" color=\"primary\" />\n </ion-label>\n </ion-item>\n </ion-list>\n }\n @if (_offline.useQueueAPIRequests) {\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.UPLOAD' | translate }}</h2>\n <p>{{ 'IDEA_UNCOMMON.OFFLINE.UPLOAD_QUEUE_REQUESTS_EXPLANATION' | translate }}</p>\n </ion-label>\n </ion-list-header>\n @if (!_offline.queueAPIRequests.length) {\n <ion-item>\n <i>{{ 'IDEA_UNCOMMON.OFFLINE.NO_ELEMENTS_TO_UPLOAD' | translate }}</i>\n <ion-icon slot=\"end\" size=\"small\" name=\"checkmark\" color=\"success\" />\n </ion-item>\n }\n @for (r of _offline.queueAPIRequests; track r; let odd = $odd) {\n <ion-item [class.oddItem]=\"odd\">\n <ion-label class=\"ion-text-wrap\">\n {{ r.description }}\n @if (r.error) {\n <p>\n <ion-text color=\"danger\">\n <b>{{ 'IDEA_UNCOMMON.OFFLINE.ERROR_CODE' | translate }}: {{ r.error }}</b>\n </ion-text>\n <br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_I' | translate }}<br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_II' | translate }}<br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_III' | translate }}\n </p>\n }\n </ion-label>\n @if (r.error) {\n <ion-button\n fill=\"clear\"\n slot=\"end\"\n color=\"danger\"\n [title]=\"'IDEA_UNCOMMON.OFFLINE.CANCEL_REQUEST' | translate\"\n (click)=\"deleteRequest(r)\"\n >\n <ion-icon slot=\"icon-only\" name=\"trash\" />\n </ion-button>\n }\n @if (r.error) {\n <ion-button\n fill=\"clear\"\n slot=\"end\"\n color=\"medium\"\n [title]=\"'IDEA_UNCOMMON.OFFLINE.DOWNLOAD_LOG' | translate\"\n (click)=\"downloadRequestLog(r)\"\n >\n <ion-icon slot=\"icon-only\" name=\"download\" />\n </ion-button>\n }\n @if (_offline.synchronizing) {\n <ion-spinner slot=\"end\" name=\"dots\" />\n }\n </ion-item>\n }\n </ion-list>\n }\n @if (_offline.getResources().length) {\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.DOWNLOAD' | translate }}</h2>\n <p>{{ 'IDEA_UNCOMMON.OFFLINE.DOWNLOAD_RESOURCES_EXPLANATION' | translate }}</p>\n </ion-label>\n </ion-list-header>\n @for (r of _offline.getResources(); track r) {\n <idea-cacheable-resource [resource]=\"_offline.getCacheableResource(r)\" />\n }\n </ion-list>\n }\n</ion-content>\n", styles: [".aList{max-width:500px;margin:0 auto}.aList ion-list-header{padding-right:10px}.aList ion-list-header h3.lastSyncAt{margin-top:6px}\n"], dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonList, selector: "ion-list", inputs: ["inset", "lines", "mode"] }, { kind: "component", type: i1.IonListHeader, selector: "ion-list-header", inputs: ["color", "lines", "mode"] }, { kind: "component", type: i1.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: i2.IDEACacheableResourceComponent, selector: "idea-cacheable-resource", inputs: ["resource"] }, { kind: "pipe", type: i3.IDEATranslatePipe, name: "translate" }, { kind: "pipe", type: i3.IDEALocalizedDatePipe, name: "dateLocale" }] }); }
79
79
  }
80
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IDEAOfflineManagerComponent, decorators: [{
80
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAOfflineManagerComponent, decorators: [{
81
81
  type: Component,
82
82
  args: [{ selector: 'idea-offline-manager', template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>\n {{ 'IDEA_UNCOMMON.OFFLINE.OFFLINE_MANAGER' | translate }}\n </ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"'IDEA_UNCOMMON.OFFLINE.ADVANCED_ACTIONS' | translate\" (click)=\"actions()\">\n <ion-icon slot=\"icon-only\" name=\"ellipsis-vertical\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-list class=\"aList\">\n @if (!_offline.synchronizing && _offline.requiresManualConfirmation) {\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.HUGE_SYNC_NEED_MANUAL_CONFIRMATION' | translate }}</h2>\n </ion-label>\n </ion-list-header>\n }\n @if (!_offline.synchronizing) {\n <ion-list-header>\n <ion-label class=\"ion-text-wrap\">\n <h3 class=\"lastSyncAt\">\n {{ 'IDEA_UNCOMMON.OFFLINE.LAST_SYNC' | translate }}:\n <ion-text>\n {{\n _offline.lastSyncAt\n ? (_offline.lastSyncAt | dateLocale: 'medium')\n : ('IDEA_UNCOMMON.OFFLINE.NEVER' | translate)\n }}\n </ion-text>\n </h3>\n @if (_offline.errorInLastSync) {\n <p>\n <ion-text color=\"danger\">\n <b>{{ 'IDEA_UNCOMMON.OFFLINE.ERROR_DURING_LAST_SYNC' | translate }}</b>\n </ion-text>\n </p>\n }\n </ion-label>\n <ion-button\n size=\"small\"\n fill=\"solid\"\n [color]=\"_offline.errorInLastSync ? 'danger' : 'dark'\"\n [disabled]=\"_offline.isOffline()\"\n (click)=\"sync()\"\n >\n <ion-icon slot=\"start\" name=\"sync\" /> {{ 'IDEA_UNCOMMON.OFFLINE.SYNC_NOW' | translate }}\n </ion-button>\n </ion-list-header>\n }\n </ion-list>\n @if (_offline.synchronizing) {\n <ion-list class=\"aList\">\n <ion-item>\n <ion-label class=\"ion-text-center\">\n <ion-spinner name=\"crescent\" color=\"primary\" />\n </ion-label>\n </ion-item>\n </ion-list>\n }\n @if (_offline.useQueueAPIRequests) {\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.UPLOAD' | translate }}</h2>\n <p>{{ 'IDEA_UNCOMMON.OFFLINE.UPLOAD_QUEUE_REQUESTS_EXPLANATION' | translate }}</p>\n </ion-label>\n </ion-list-header>\n @if (!_offline.queueAPIRequests.length) {\n <ion-item>\n <i>{{ 'IDEA_UNCOMMON.OFFLINE.NO_ELEMENTS_TO_UPLOAD' | translate }}</i>\n <ion-icon slot=\"end\" size=\"small\" name=\"checkmark\" color=\"success\" />\n </ion-item>\n }\n @for (r of _offline.queueAPIRequests; track r; let odd = $odd) {\n <ion-item [class.oddItem]=\"odd\">\n <ion-label class=\"ion-text-wrap\">\n {{ r.description }}\n @if (r.error) {\n <p>\n <ion-text color=\"danger\">\n <b>{{ 'IDEA_UNCOMMON.OFFLINE.ERROR_CODE' | translate }}: {{ r.error }}</b>\n </ion-text>\n <br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_I' | translate }}<br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_II' | translate }}<br />\n {{ 'IDEA_UNCOMMON.OFFLINE.REQUEST_FAILED_EXPLANATION_III' | translate }}\n </p>\n }\n </ion-label>\n @if (r.error) {\n <ion-button\n fill=\"clear\"\n slot=\"end\"\n color=\"danger\"\n [title]=\"'IDEA_UNCOMMON.OFFLINE.CANCEL_REQUEST' | translate\"\n (click)=\"deleteRequest(r)\"\n >\n <ion-icon slot=\"icon-only\" name=\"trash\" />\n </ion-button>\n }\n @if (r.error) {\n <ion-button\n fill=\"clear\"\n slot=\"end\"\n color=\"medium\"\n [title]=\"'IDEA_UNCOMMON.OFFLINE.DOWNLOAD_LOG' | translate\"\n (click)=\"downloadRequestLog(r)\"\n >\n <ion-icon slot=\"icon-only\" name=\"download\" />\n </ion-button>\n }\n @if (_offline.synchronizing) {\n <ion-spinner slot=\"end\" name=\"dots\" />\n }\n </ion-item>\n }\n </ion-list>\n }\n @if (_offline.getResources().length) {\n <ion-list class=\"aList\">\n <ion-list-header>\n <ion-label>\n <h2>{{ 'IDEA_UNCOMMON.OFFLINE.DOWNLOAD' | translate }}</h2>\n <p>{{ 'IDEA_UNCOMMON.OFFLINE.DOWNLOAD_RESOURCES_EXPLANATION' | translate }}</p>\n </ion-label>\n </ion-list-header>\n @for (r of _offline.getResources(); track r) {\n <idea-cacheable-resource [resource]=\"_offline.getCacheableResource(r)\" />\n }\n </ion-list>\n }\n</ion-content>\n", styles: [".aList{max-width:500px;margin:0 auto}.aList ion-list-header{padding-right:10px}.aList ion-list-header h3.lastSyncAt{margin-top:6px}\n"] }]
83
83
  }] });
84
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmbGluZU1hbmFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy91bmNvbW1vbi9zcmMvb2ZmbGluZS9vZmZsaW5lTWFuYWdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3VuY29tbW9uL3NyYy9vZmZsaW5lL29mZmxpbmVNYW5hZ2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXhGLE9BQU8sRUFBRSxzQkFBc0IsRUFBYyxNQUFNLHVCQUF1QixDQUFDOzs7OztBQU8zRSxNQUFNLE9BQU8sMkJBQTJCO0lBTHhDO1FBTVUsV0FBTSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqQyxXQUFNLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pDLGFBQVEsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3QyxlQUFVLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDckQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0tBaUUzQztJQS9EQyxLQUFLLENBQUMsSUFBSTtRQUNSLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDckMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDO1lBQzNELE9BQU8sRUFBRSxJ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RUFBRTtnQkFDUCxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO2dCQUM1RCxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxFQUFFO2FBQ2xHO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDOzhHQXJFVSwyQkFBMkI7a0dBQTNCLDJCQUEyQiw0RENaeEMsd2lLQTZJQTs7MkZEaklhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyLCBBbGVydENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBCcm93c2VyIH0gZnJvbSAnQGNhcGFjaXRvci9icm93c2VyJztcbmltcG9ydCB7IElERUFBY3Rpb25TaGVldENvbnRyb2xsZXIsIElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuaW1wb3J0IHsgSURFQU9mZmxpbmVEYXRhU2VydmljZSwgQVBJUmVxdWVzdCB9IGZyb20gJy4vb2ZmbGluZURhdGEuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lkZWEtb2ZmbGluZS1tYW5hZ2VyJyxcbiAgdGVtcGxhdGVVcmw6ICdvZmZsaW5lTWFuYWdlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydvZmZsaW5lTWFuYWdlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIElERUFPZmZsaW5lTWFuYWdlckNvbXBvbmVudCB7XG4gIHByaXZhdGUgX21vZGFsID0gaW5qZWN0KE1vZGFsQ29udHJvbGxlcik7XG4gIHByaXZhdGUgX2FsZXJ0ID0gaW5qZWN0KEFsZXJ0Q29udHJvbGxlcik7XG4gIHByaXZhdGUgX2FjdGlvbnMgPSBpbmplY3QoSURFQUFjdGlvblNoZWV0Q29udHJvbGxlcik7XG4gIHByaXZhdGUgX3RyYW5zbGF0ZSA9IGluamVjdChJREVBVHJhbnNsYXRpb25zU2VydmljZSk7XG4gIF9vZmZsaW5lID0gaW5qZWN0KElERUFPZmZsaW5lRGF0YVNlcnZpY2UpO1xuXG4gIGFzeW5jIHN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYWxlcnQgPSBhd2FpdCB0aGlzLl9hbGVydC5jcmVhdGUoe1xuICAgICAgaGVhZGVyOiB0aGlzLl90cmFuc2xhdGUuXygnSURFQV9VTkNPTU1PTi5PRkZMSU5FLlNZTkNfTk9XJyksXG4gICAgICBtZXNzYWdlOiB0aGlzLl90cmFuc2xhdGUuXygnSURFQV9VTkNPTU1PTi5PRkZMSU5FLkRPTlRfRVhJVF9BUFBfRElTQ0xBSU1FUicpLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7IHRleHQ6IHRoaXMuX3RyYW5zbGF0ZS5fKCdDT01NT04uQ0FOQ0VMJykgfSxcbiAgICAgICAgeyB0ZXh0OiB0aGlzLl90cmFuc2xhdGUuXygnQ09NTU9OLkdPVF9JVCcpLCBoYW5kbGVyOiAoKTogUHJvbWlzZTx2b2lkPiA9PiB0aGlzLl9vZmZsaW5lLnN5bmNocm9uaXplKHRydWUpIH1cbiAgICAgIF1cbiAgICB9KTtcbiAgICBhbGVydC5wcmVzZW50KCk7XG4gIH1cblxuICBhc3luYyBkZWxldGVSZXF1ZXN0KHJlcXVlc3Q6IEFQSVJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBhbGVydCA9IGF3YWl0IHRoaXMuX2FsZXJ0LmNyZWF0ZSh7XG4gICAgICBoZWFkZXI6IHRoaXMuX3RyYW5zbGF0ZS5fKCdDT01NT04uQVJFX1lPVV9TVVJFJyksXG4gICAgICBtZXNzYWdlOiB0aGlzLl90cmFuc2xhdGUuXygnSURFQV9VTkNPTU1PTi5PRkZMSU5FLkRFTEVUSU9OX0lTX0lSUkVWRVJTSUJMRScpLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7IHRleHQ6IHRoaXMuX3RyYW5zbGF0ZS5fKCdDT01NT04uQ0FOQ0VMJykgfSxcbiAgICAgICAge1xuICAgICAgICAgIHRleHQ6IHRoaXMuX3RyYW5zbGF0ZS5fKCdDT01NT04uQ09ORklSTScpLFxuICAgICAgICAgIGhhbmRsZXI6ICgpOiBQcm9taXNlPHZvaWQ+ID0+IHRoaXMuX29mZmxpbmUuZGVsZXRlUmVxdWVzdChyZXF1ZXN0KVxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG4gICAgYWxlcnQucHJlc2VudCgpO1xuICB9XG4gIGRvd25sb2FkUmVxdWVzdExvZyhyZXF1ZXN0OiBBUElSZXF1ZXN0KTogdm9pZCB7XG4gICAgY29uc3QgZGF0YVVSTCA9IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKG5ldyBCbG9iKFtKU09OLnN0cmluZ2lmeShyZXF1ZXN0KV0sIHsgdHlwZTogJ3RleHQvanNvbicgfSkpO1xuICAgIEJyb3dzZXIub3Blbih7IHVybDogZGF0YVVSTCB9KTtcbiAgfVxuXG4gIGFzeW5jIGFjdGlvbnMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYnV0dG9ucyA9IFtcbiAgICAgIHtcbiAgICAgICAgdGV4dDogdGhpcy5fdHJhbnNsYXRlLl8oJ0lERUFfVU5DT01NT04uT0ZGTElORS5GT1JDRV9GVUxMX1NZTkMnKSxcbiAgICAgICAgaWNvbjogJ3N5bmMnLFxuICAgICAgICBoYW5kbGVyOiAoKTogUHJvbWlzZTx2b2lkPiA9PiB0aGlzLmZvcmNlRnVsbFN5bmMoKVxuICAgICAgfSxcbiAgICAgIHsgdGV4dDogdGhpcy5fdHJhbnNsYXRlLl8oJ0NPTU1PTi5DQU5DRUwnKSwgcm9sZTogJ2NhbmNlbCcsIGljb246ICdhcnJvdy11bmRvJyB9XG4gICAgXTtcbiAgICBjb25zdCBhY3Rpb25zID0gYXdhaXQgdGhpcy5fYWN0aW9ucy5jcmVhdGUoe1xuICAgICAgaGVhZGVyOiB0aGlzLl90cmFuc2xhdGUuXygnSURFQV9VTkNPTU1PTi5PRkZMSU5FLkFEVkFOQ0VEX0FDVElPTlMnKSxcbiAgICAgIGJ1dHRvbnNcbiAgICB9KTtcbiAgICBhY3Rpb25zLnByZXNlbnQoKTtcbiAgfVxuXG4gIGFzeW5jIGZvcmNlRnVsbFN5bmMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgYWxlcnQgPSBhd2FpdCB0aGlzLl9hbGVydC5jcmVhdGUoe1xuICAgICAgaGVhZGVyOiB0aGlzLl90cmFuc2xhdGUuXygnSURFQV9VTkNPTU1PTi5PRkZMSU5FLkZPUkNFX0ZVTExfU1lOQycpLFxuICAgICAgc3ViSGVhZGVyOiB0aGlzLl90cmFuc2xhdGUuXygnQ09NTU9OLkFSRV9ZT1VfU1VSRScpLFxuICAgICAgbWVzc2FnZTogdGhpcy5fdHJhbnNsYXRlLl8oJ0lERUFfVU5DT01NT04uT0ZGTElORS5GVUxMX1NZTkNfRElTQ0xBSU1FUicpLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7IHRleHQ6IHRoaXMuX3RyYW5zbGF0ZS5fKCdDT01NT04uQ0FOQ0VMJyksIHJvbGU6ICdjYW5jZWwnIH0sXG4gICAgICAgIHsgdGV4dDogdGhpcy5fdHJhbnNsYXRlLl8oJ0NPTU1PTi5DT05GSVJNJyksIGhhbmRsZXI6ICgpOiB2b2lkID0+IHRoaXMuX29mZmxpbmUuZm9yY2VGdWxsU3luYygpIH1cbiAgICAgIF1cbiAgICB9KTtcbiAgICBhbGVydC5wcmVzZW50KCk7XG4gIH1cblxuICBjbG9zZSgpOiB2b2lkIHtcbiAgICB0aGlzLl9tb2RhbC5kaXNtaXNzKCk7XG4gIH1cbn1cbiIsIjxpb24taGVhZGVyPlxuICA8aW9uLXRvb2xiYXIgY29sb3I9XCJpZGVhVG9vbGJhclwiPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwic3RhcnRcIj5cbiAgICAgIDxpb24tYnV0dG9uIChjbGljayk9XCJjbG9zZSgpXCI+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvc2VcIiBzbG90PVwiaWNvbi1vbmx5XCIgLz5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICAgIDxpb24tdGl0bGU+XG4gICAgICB7eyAnSURFQV9VTkNPTU1PTi5PRkZMSU5FLk9GRkxJTkVfTUFOQUdFUicgfCB0cmFuc2xhdGUgfX1cbiAgICA8L2lvbi10aXRsZT5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgPGlvbi1idXR0b24gW3RpdGxlXT1cIidJREVBX1VOQ09NTU9OLk9GRkxJTkUuQURWQU5DRURfQUNUSU9OUycgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiYWN0aW9ucygpXCI+XG4gICAgICAgIDxpb24taWNvbiBzbG90PVwiaWNvbi1vbmx5XCIgbmFtZT1cImVsbGlwc2lzLXZlcnRpY2FsXCIgLz5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuPGlvbi1jb250ZW50PlxuICA8aW9uLWxpc3QgY2xhc3M9XCJhTGlzdFwiPlxuICAgIEBpZiAoIV9vZmZsaW5lLnN5bmNocm9uaXppbmcgJiYgX29mZmxpbmUucmVxdWlyZXNNYW51YWxDb25maXJtYXRpb24pIHtcbiAgICAgIDxpb24tbGlzdC1oZWFkZXI+XG4gICAgICAgIDxpb24tbGFiZWw+XG4gICAgICAgICAgPGgyPnt7ICdJREVBX1VOQ09NTU9OLk9GRkxJTkUuSFVHRV9TWU5DX05FRURfTUFOVUFMX0NPTkZJUk1BVElPTicgfCB0cmFuc2xhdGUgfX08L2gyPlxuICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgIDwvaW9uLWxpc3QtaGVhZGVyPlxuICAgIH1cbiAgICBAaWYgKCFfb2ZmbGluZS5zeW5jaHJvbml6aW5nKSB7XG4gICAgICA8aW9uLWxpc3QtaGVhZGVyPlxuICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwiaW9uLXRleHQtd3JhcFwiPlxuICAgICAgICAgIDxoMyBjbGFzcz1cImxhc3RTeW5jQXRcIj5cbiAgICAgICAgICAgIHt7ICdJREVBX1VOQ09NTU9OLk9GRkxJTkUuTEFTVF9TWU5DJyB8IHRyYW5zbGF0ZSB9fTpcbiAgICAgICAgICAgIDxpb24tdGV4dD5cbiAgICAgICAgICAgICAge3tcbiAgICAgICAgICAgICAgICBfb2ZmbGluZS5sYXN0U3luY0F0XG4gICAgICAgICAgICAgICAgICA/IChfb2ZmbGluZS5sYXN0U3luY0F0IHwgZGF0ZUxvY2FsZTogJ21lZGl1bScpXG4gICAgICAgICAgICAgICAgICA6ICgnSURFQV9VTkNPTU1PTi5PRkZMSU5FLk5FVkVSJyB8IHRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgPC9oMz5cbiAgICAgICAgICBAaWYgKF9vZmZsaW5lLmVycm9ySW5MYXN0U3luYykge1xuICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgIDxpb24tdGV4dCBjb2xvcj1cImRhbmdlclwiPlxuICAgICAgICAgICAgICAgIDxiPnt7ICdJREVBX1VOQ09NTU9OLk9GRkxJTkUuRVJST1JfRFVSSU5HX0xBU1RfU1lOQycgfCB0cmFuc2xhdGUgfX08L2I+XG4gICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgfVxuICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIGZpbGw9XCJzb2xpZFwiXG4gICAgICAgICAgW2NvbG9yXT1cIl9vZmZsaW5lLmVycm9ySW5MYXN0U3luYyA/ICdkYW5nZXInIDogJ2RhcmsnXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiX29mZmxpbmUuaXNPZmZsaW5lKClcIlxuICAgICAgICAgIChjbGljayk9XCJzeW5jKClcIlxuICAgICAgICA+XG4gICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJzdGFydFwiIG5hbWU9XCJzeW5jXCIgLz4ge3sgJ0lERUFfVU5DT01NT04uT0ZGTElORS5TWU5DX05PVycgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tbGlzdC1oZWFkZXI+XG4gICAgfVxuICA8L2lvbi1saXN0PlxuICBAaWYgKF9vZmZsaW5lLnN5bmNocm9uaXppbmcpIHtcbiAgICA8aW9uLWxpc3QgY2xhc3M9XCJhTGlzdFwiPlxuICAgICAgPGlvbi1pdGVtPlxuICAgICAgICA8aW9uLWxhYmVsIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCI+XG4gICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJjcmVzY2VudFwiIGNvbG9yPVwicHJpbWFyeVwiIC8+XG4gICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgPC9pb24taXRlbT5cbiAgICA8L2lvbi1saXN0PlxuICB9XG4gIEBpZiAoX29mZmxpbmUudXNlUXVldWVBUElSZXF1ZXN0cykge1xuICAgIDxpb24tbGlzdCBjbGFzcz1cImFMaXN0XCI+XG4gICAgICA8aW9uLWxpc3QtaGVhZGVyPlxuICAgICAgICA8aW9uLWxhYmVsPlxuICAgICAgICAgIDxoMj57eyAnSURFQV9VTkNPTU1PTi5PRkZMSU5FLlVQTE9BRCcgfCB0cmFuc2xhdGUgfX08L2gyPlxuICAgICAgICAgIDxwPnt7ICdJREVBX1VOQ09NTU9OLk9GRkxJTkUuVVBMT0FEX1FVRVVFX1JFUVVFU1RTX0VYUExBTkFUSU9OJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICA8L2lvbi1saXN0LWhlYWRlcj5cbiAgICAgIEBpZiAoIV9vZmZsaW5lLnF1ZXVlQVBJUmVxdWVzdHMubGVuZ3RoKSB7XG4gICAgICAgIDxpb24taXRlbT5cbiAgICAgICAgICA8aT57eyAnSURFQV9VTkNPTU1PTi5PRkZMSU5FLk5PX0VMRU1FTlRTX1RPX1VQTE9BRCcgfCB0cmFuc2xhdGUgfX08L2k+XG4gICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJlbmRcIiBzaXplPVwic21hbGxcIiBuYW1lPVwiY2hlY2ttYXJrXCIgY29sb3I9XCJzdWNjZXNzXCIgLz5cbiAgICAgICAgPC9pb24taXRlbT5cbiAgICAgIH1cbiAgICAgIEBmb3IgKHIgb2YgX29mZmxpbmUucXVldWVBUElSZXF1ZXN0czsgdHJhY2sgcjsgbGV0IG9kZCA9ICRvZGQpIHtcbiAgICAgICAgPGlvbi1pdGVtIFtjbGFzcy5vZGRJdGVtXT1cIm9kZFwiPlxuICAgICAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJpb24tdGV4dC13cmFwXCI+XG4gICAgICAgICAgICB7eyByLmRlc2NyaXB0aW9uIH19XG4gICAgICAgICAgICBAaWYgKHIuZXJyb3IpIHtcbiAgICAgICAgICAgICAgPHA+XG4gICAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwiZGFuZ2VyXCI+XG4gICAgICAgICAgICAgICAgICA8Yj57eyAnSURFQV9VTkNPTU1PTi5PRkZMSU5FLkVSUk9SX0NPREUnIHwgdHJhbnNsYXRlIH19OiB7eyByLmVycm9yIH19PC9iPlxuICAgICAgICAgICAgICAgIDwvaW9uLXRleHQ+XG4gICAgICAgICAgICAgICAgPGJyIC8+XG4gICAgICAgICAgICAgICAge3sgJ0lERUFfVU5DT01NT04uT0ZGTElORS5SRVFVRVNUX0ZBSUxFRF9FWFBMQU5BVElPTl9JJyB8IHRyYW5zbGF0ZSB9fTxiciAvPlxuICAgICAgICAgICAgICAgIHt7ICdJREVBX1VOQ09NTU9OLk9GRkxJTkUuUkVRVUVTVF9GQUlMRURfRVhQTEFOQVRJT05fSUknIHwgdHJhbnNsYXRlIH19PGJyIC8+XG4gICAgICAgICAgICAgICAge3sgJ0lERUFfVU5DT01NT04uT0ZGTElORS5SRVFVRVNUX0ZBSUxFRF9FWFBMQU5BVElPTl9JSUknIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgICAgICBAaWYgKHIuZXJyb3IpIHtcbiAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICAgIHNsb3Q9XCJlbmRcIlxuICAgICAgICAgICAgICBjb2xvcj1cImRhbmdlclwiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCInSURFQV9VTkNPTU1PTi5PRkZMSU5FLkNBTkNFTF9SRVFVRVNUJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJkZWxldGVSZXF1ZXN0KHIpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwidHJhc2hcIiAvPlxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKHIuZXJyb3IpIHtcbiAgICAgICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgICAgIGZpbGw9XCJjbGVhclwiXG4gICAgICAgICAgICAgIHNsb3Q9XCJlbmRcIlxuICAgICAgICAgICAgICBjb2xvcj1cIm1lZGl1bVwiXG4gICAgICAgICAgICAgIFt0aXRsZV09XCInSURFQV9VTkNPTU1PTi5PRkZMSU5FLkRPV05MT0FEX0xPRycgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwiZG93bmxvYWRSZXF1ZXN0TG9nKHIpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiZG93bmxvYWRcIiAvPlxuICAgICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICAgIH1cbiAgICAgICAgICBAaWYgKF9vZmZsaW5lLnN5bmNocm9uaXppbmcpIHtcbiAgICAgICAgICAgIDxpb24tc3Bpbm5lciBzbG90PVwiZW5kXCIgbmFtZT1cImRvdHNcIiAvPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9pb24taXRlbT5cbiAgICAgIH1cbiAgICA8L2lvbi1saXN0PlxuICB9XG4gIEBpZiAoX29mZmxpbmUuZ2V0UmVzb3VyY2VzKCkubGVuZ3RoKSB7XG4gICAgPGlvbi1saXN0IGNsYXNzPVwiYUxpc3RcIj5cbiAgICAgIDxpb24tbGlzdC1oZWFkZXI+XG4gICAgICAgIDxpb24tbGFiZWw+XG4gICAgICAgICAgPGgyPnt7ICdJREVBX1VOQ09NTU9OLk9GRkxJTkUuRE9XTkxPQUQnIHwgdHJhbnNsYXRlIH19PC9oMj5cbiAgICAgICAgICA8cD57eyAnSURFQV9VTkNPTU1PTi5PRkZMSU5FLkRPV05MT0FEX1JFU09VUkNFU19FWFBMQU5BVElPTicgfCB0cmFuc2xhdGUgfX08L3A+XG4gICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgPC9pb24tbGlzdC1oZWFkZXI+XG4gICAgICBAZm9yIChyIG9mIF9vZmZsaW5lLmdldFJlc291cmNlcygpOyB0cmFjayByKSB7XG4gICAgICAgIDxpZGVhLWNhY2hlYWJsZS1yZXNvdXJjZSBbcmVzb3VyY2VdPVwiX29mZmxpbmUuZ2V0Q2FjaGVhYmxlUmVzb3VyY2UocilcIiAvPlxuICAgICAgfVxuICAgIDwvaW9uLWxpc3Q+XG4gIH1cbjwvaW9uLWNvbnRlbnQ+XG4iXX0=
84
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2ZmbGluZU1hbmFnZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy91bmNvbW1vbi9zcmMvb2ZmbGluZS9vZmZsaW5lTWFuYWdlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9tb2R1bGVzL3VuY29tbW9uL3NyYy9vZmZsaW5lL29mZmxpbmVNYW5hZ2VyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ2xELE9BQU8sRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDN0UsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQzdDLE9BQU8sRUFBRSx5QkFBeUIsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRXhGLE9BQU8sRUFBRSxzQkFBc0IsRUFBYyxNQUFNLHVCQUF1QixDQUFDOzs7OztBQU8zRSxNQUFNLE9BQU8sMkJBQTJCO0lBTHhDO1FBTVUsV0FBTSxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUNqQyxXQUFNLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ2pDLGFBQVEsR0FBRyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUM3QyxlQUFVLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDckQsYUFBUSxHQUFHLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0tBaUUzQztJQS9EQyxLQUFLLENBQUMsSUFBSTtRQUNSLE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7WUFDckMsTUFBTSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLGdDQUFnQyxDQUFDO1lBQzNELE9BQU8sRUFBRSxJ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RUFBRTtnQkFDUCxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO2dCQUM1RCxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsRUFBRSxFQUFFO2FBQ2xHO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDOzhHQXJFVSwyQkFBMkI7a0dBQTNCLDJCQUEyQiw0RENaeEMsd2lLQTZJQTs7MkZEaklhLDJCQUEyQjtrQkFMdkMsU0FBUzsrQkFDRSxzQkFBc0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgTW9kYWxDb250cm9sbGVyLCBBbGVydENvbnRyb2xsZXIgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IEJyb3dzZXIgfSBmcm9tICdAY2FwYWNpdG9yL2Jyb3dzZXInO1xuaW1wb3J0IHsgSURFQUFjdGlvblNoZWV0Q29udHJvbGxlciwgSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UgfSBmcm9tICdAaWRlYS1pb25pYy9jb21tb24nO1xuXG5pbXBvcnQgeyBJREVBT2ZmbGluZURhdGFTZXJ2aWNlLCBBUElSZXF1ZXN0IH0gZnJvbSAnLi9vZmZsaW5lRGF0YS5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWRlYS1vZmZsaW5lLW1hbmFnZXInLFxuICB0ZW1wbGF0ZVVybDogJ29mZmxpbmVNYW5hZ2VyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ29mZmxpbmVNYW5hZ2VyLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSURFQU9mZmxpbmVNYW5hZ2VyQ29tcG9uZW50IHtcbiAgcHJpdmF0ZSBfbW9kYWwgPSBpbmplY3QoTW9kYWxDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfYWxlcnQgPSBpbmplY3QoQWxlcnRDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfYWN0aW9ucyA9IGluamVjdChJREVBQWN0aW9uU2hlZXRDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfdHJhbnNsYXRlID0gaW5qZWN0KElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlKTtcbiAgX29mZmxpbmUgPSBpbmplY3QoSURFQU9mZmxpbmVEYXRhU2VydmljZSk7XG5cbiAgYXN5bmMgc3luYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBhbGVydCA9IGF3YWl0IHRoaXMuX2FsZXJ0LmNyZWF0ZSh7XG4gICAgICBoZWFkZXI6IHRoaXMuX3RyYW5zbGF0ZS5fKCdJREVBX1VOQ09NTU9OLk9GRkxJTkUuU1lOQ19OT1cnKSxcbiAgICAgIG1lc3NhZ2U6IHRoaXMuX3RyYW5zbGF0ZS5fKCdJREVBX1VOQ09NTU9OLk9GRkxJTkUuRE9OVF9FWElUX0FQUF9ESVNDTEFJTUVSJyksXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHsgdGV4dDogdGhpcy5fdHJhbnNsYXRlLl8oJ0NPTU1PTi5DQU5DRUwnKSB9LFxuICAgICAgICB7IHRleHQ6IHRoaXMuX3RyYW5zbGF0ZS5fKCdDT01NT04uR09UX0lUJyksIGhhbmRsZXI6ICgpOiBQcm9taXNlPHZvaWQ+ID0+IHRoaXMuX29mZmxpbmUuc3luY2hyb25pemUodHJ1ZSkgfVxuICAgICAgXVxuICAgIH0pO1xuICAgIGFsZXJ0LnByZXNlbnQoKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZVJlcXVlc3QocmVxdWVzdDogQVBJUmVxdWVzdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGFsZXJ0ID0gYXdhaXQgdGhpcy5fYWxlcnQuY3JlYXRlKHtcbiAgICAgIGhlYWRlcjogdGhpcy5fdHJhbnNsYXRlLl8oJ0NPTU1PTi5BUkVfWU9VX1NVUkUnKSxcbiAgICAgIG1lc3NhZ2U6IHRoaXMuX3RyYW5zbGF0ZS5fKCdJREVBX1VOQ09NTU9OLk9GRkxJTkUuREVMRVRJT05fSVNfSVJSRVZFUlNJQkxFJyksXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHsgdGV4dDogdGhpcy5fdHJhbnNsYXRlLl8oJ0NPTU1PTi5DQU5DRUwnKSB9LFxuICAgICAgICB7XG4gICAgICAgICAgdGV4dDogdGhpcy5fdHJhbnNsYXRlLl8oJ0NPTU1PTi5DT05GSVJNJyksXG4gICAgICAgICAgaGFuZGxlcjogKCk6IFByb21pc2U8dm9pZD4gPT4gdGhpcy5fb2ZmbGluZS5kZWxldGVSZXF1ZXN0KHJlcXVlc3QpXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9KTtcbiAgICBhbGVydC5wcmVzZW50KCk7XG4gIH1cbiAgZG93bmxvYWRSZXF1ZXN0TG9nKHJlcXVlc3Q6IEFQSVJlcXVlc3QpOiB2b2lkIHtcbiAgICBjb25zdCBkYXRhVVJMID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwobmV3IEJsb2IoW0pTT04uc3RyaW5naWZ5KHJlcXVlc3QpXSwgeyB0eXBlOiAndGV4dC9qc29uJyB9KSk7XG4gICAgQnJvd3Nlci5vcGVuKHsgdXJsOiBkYXRhVVJMIH0pO1xuICB9XG5cbiAgYXN5bmMgYWN0aW9ucygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBidXR0b25zID0gW1xuICAgICAge1xuICAgICAgICB0ZXh0OiB0aGlzLl90cmFuc2xhdGUuXygnSURFQV9VTkNPTU1PTi5PRkZMSU5FLkZPUkNFX0ZVTExfU1lOQycpLFxuICAgICAgICBpY29uOiAnc3luYycsXG4gICAgICAgIGhhbmRsZXI6ICgpOiBQcm9taXNlPHZvaWQ+ID0+IHRoaXMuZm9yY2VGdWxsU3luYygpXG4gICAgICB9LFxuICAgICAgeyB0ZXh0OiB0aGlzLl90cmFuc2xhdGUuXygnQ09NTU9OLkNBTkNFTCcpLCByb2xlOiAnY2FuY2VsJywgaWNvbjogJ2Fycm93LXVuZG8nIH1cbiAgICBdO1xuICAgIGNvbnN0IGFjdGlvbnMgPSBhd2FpdCB0aGlzLl9hY3Rpb25zLmNyZWF0ZSh7XG4gICAgICBoZWFkZXI6IHRoaXMuX3RyYW5zbGF0ZS5fKCdJREVBX1VOQ09NTU9OLk9GRkxJTkUuQURWQU5DRURfQUNUSU9OUycpLFxuICAgICAgYnV0dG9uc1xuICAgIH0pO1xuICAgIGFjdGlvbnMucHJlc2VudCgpO1xuICB9XG5cbiAgYXN5bmMgZm9yY2VGdWxsU3luYygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBhbGVydCA9IGF3YWl0IHRoaXMuX2FsZXJ0LmNyZWF0ZSh7XG4gICAgICBoZWFkZXI6IHRoaXMuX3RyYW5zbGF0ZS5fKCdJREVBX1VOQ09NTU9OLk9GRkxJTkUuRk9SQ0VfRlVMTF9TWU5DJyksXG4gICAgICBzdWJIZWFkZXI6IHRoaXMuX3RyYW5zbGF0ZS5fKCdDT01NT04uQVJFX1lPVV9TVVJFJyksXG4gICAgICBtZXNzYWdlOiB0aGlzLl90cmFuc2xhdGUuXygnSURFQV9VTkNPTU1PTi5PRkZMSU5FLkZVTExfU1lOQ19ESVNDTEFJTUVSJyksXG4gICAgICBidXR0b25zOiBbXG4gICAgICAgIHsgdGV4dDogdGhpcy5fdHJhbnNsYXRlLl8oJ0NPTU1PTi5DQU5DRUwnKSwgcm9sZTogJ2NhbmNlbCcgfSxcbiAgICAgICAgeyB0ZXh0OiB0aGlzLl90cmFuc2xhdGUuXygnQ09NTU9OLkNPTkZJUk0nKSwgaGFuZGxlcjogKCk6IHZvaWQgPT4gdGhpcy5fb2ZmbGluZS5mb3JjZUZ1bGxTeW5jKCkgfVxuICAgICAgXVxuICAgIH0pO1xuICAgIGFsZXJ0LnByZXNlbnQoKTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsLmRpc21pc3MoKTtcbiAgfVxufVxuIiwiPGlvbi1oZWFkZXI+XG4gIDxpb24tdG9vbGJhciBjb2xvcj1cImlkZWFUb29sYmFyXCI+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgPGlvbi1idXR0b24gKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZVwiIHNsb3Q9XCJpY29uLW9ubHlcIiAvPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgPGlvbi10aXRsZT5cbiAgICAgIHt7ICdJREVBX1VOQ09NTU9OLk9GRkxJTkUuT0ZGTElORV9NQU5BR0VSJyB8IHRyYW5zbGF0ZSB9fVxuICAgIDwvaW9uLXRpdGxlPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICA8aW9uLWJ1dHRvbiBbdGl0bGVdPVwiJ0lERUFfVU5DT01NT04uT0ZGTElORS5BRFZBTkNFRF9BQ1RJT05TJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJhY3Rpb25zKClcIj5cbiAgICAgICAgPGlvbi1pY29uIHNsb3Q9XCJpY29uLW9ubHlcIiBuYW1lPVwiZWxsaXBzaXMtdmVydGljYWxcIiAvPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1oZWFkZXI+XG48aW9uLWNvbnRlbnQ+XG4gIDxpb24tbGlzdCBjbGFzcz1cImFMaXN0XCI+XG4gICAgQGlmICghX29mZmxpbmUuc3luY2hyb25pemluZyAmJiBfb2ZmbGluZS5yZXF1aXJlc01hbnVhbENvbmZpcm1hdGlvbikge1xuICAgICAgPGlvbi1saXN0LWhlYWRlcj5cbiAgICAgICAgPGlvbi1sYWJlbD5cbiAgICAgICAgICA8aDI+e3sgJ0lERUFfVU5DT01NT04uT0ZGTElORS5IVUdFX1NZTkNfTkVFRF9NQU5VQUxfQ09ORklSTUFUSU9OJyB8IHRyYW5zbGF0ZSB9fTwvaDI+XG4gICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgPC9pb24tbGlzdC1oZWFkZXI+XG4gICAgfVxuICAgIEBpZiAoIV9vZmZsaW5lLnN5bmNocm9uaXppbmcpIHtcbiAgICAgIDxpb24tbGlzdC1oZWFkZXI+XG4gICAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJpb24tdGV4dC13cmFwXCI+XG4gICAgICAgICAgPGgzIGNsYXNzPVwibGFzdFN5bmNBdFwiPlxuICAgICAgICAgICAge3sgJ0lERUFfVU5DT01NT04uT0ZGTElORS5MQVNUX1NZTkMnIHwgdHJhbnNsYXRlIH19OlxuICAgICAgICAgICAgPGlvbi10ZXh0PlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIF9vZmZsaW5lLmxhc3RTeW5jQXRcbiAgICAgICAgICAgICAgICAgID8gKF9vZmZsaW5lLmxhc3RTeW5jQXQgfCBkYXRlTG9jYWxlOiAnbWVkaXVtJylcbiAgICAgICAgICAgICAgICAgIDogKCdJREVBX1VOQ09NTU9OLk9GRkxJTkUuTkVWRVInIHwgdHJhbnNsYXRlKVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICA8L2gzPlxuICAgICAgICAgIEBpZiAoX29mZmxpbmUuZXJyb3JJbkxhc3RTeW5jKSB7XG4gICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgPGlvbi10ZXh0IGNvbG9yPVwiZGFuZ2VyXCI+XG4gICAgICAgICAgICAgICAgPGI+e3sgJ0lERUFfVU5DT01NT04uT0ZGTElORS5FUlJPUl9EVVJJTkdfTEFTVF9TWU5DJyB8IHRyYW5zbGF0ZSB9fTwvYj5cbiAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICB9XG4gICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgZmlsbD1cInNvbGlkXCJcbiAgICAgICAgICBbY29sb3JdPVwiX29mZmxpbmUuZXJyb3JJbkxhc3RTeW5jID8gJ2RhbmdlcicgOiAnZGFyaydcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCJfb2ZmbGluZS5pc09mZmxpbmUoKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInN5bmMoKVwiXG4gICAgICAgID5cbiAgICAgICAgICA8aW9uLWljb24gc2xvdD1cInN0YXJ0XCIgbmFtZT1cInN5bmNcIiAvPiB7eyAnSURFQV9VTkNPTU1PTi5PRkZMSU5FLlNZTkNfTk9XJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1saXN0LWhlYWRlcj5cbiAgICB9XG4gIDwvaW9uLWxpc3Q+XG4gIEBpZiAoX29mZmxpbmUuc3luY2hyb25pemluZykge1xuICAgIDxpb24tbGlzdCBjbGFzcz1cImFMaXN0XCI+XG4gICAgICA8aW9uLWl0ZW0+XG4gICAgICAgIDxpb24tbGFiZWwgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIj5cbiAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCIgY29sb3I9XCJwcmltYXJ5XCIgLz5cbiAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICA8L2lvbi1pdGVtPlxuICAgIDwvaW9uLWxpc3Q+XG4gIH1cbiAgQGlmIChfb2ZmbGluZS51c2VRdWV1ZUFQSVJlcXVlc3RzKSB7XG4gICAgPGlvbi1saXN0IGNsYXNzPVwiYUxpc3RcIj5cbiAgICAgIDxpb24tbGlzdC1oZWFkZXI+XG4gICAgICAgIDxpb24tbGFiZWw+XG4gICAgICAgICAgPGgyPnt7ICdJREVBX1VOQ09NTU9OLk9GRkxJTkUuVVBMT0FEJyB8IHRyYW5zbGF0ZSB9fTwvaDI+XG4gICAgICAgICAgPHA+e3sgJ0lERUFfVU5DT01NT04uT0ZGTElORS5VUExPQURfUVVFVUVfUkVRVUVTVFNfRVhQTEFOQVRJT04nIHwgdHJhbnNsYXRlIH19PC9wPlxuICAgICAgICA8L2lvbi1sYWJlbD5cbiAgICAgIDwvaW9uLWxpc3QtaGVhZGVyPlxuICAgICAgQGlmICghX29mZmxpbmUucXVldWVBUElSZXF1ZXN0cy5sZW5ndGgpIHtcbiAgICAgICAgPGlvbi1pdGVtPlxuICAgICAgICAgIDxpPnt7ICdJREVBX1VOQ09NTU9OLk9GRkxJTkUuTk9fRUxFTUVOVFNfVE9fVVBMT0FEJyB8IHRyYW5zbGF0ZSB9fTwvaT5cbiAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImVuZFwiIHNpemU9XCJzbWFsbFwiIG5hbWU9XCJjaGVja21hcmtcIiBjb2xvcj1cInN1Y2Nlc3NcIiAvPlxuICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgfVxuICAgICAgQGZvciAociBvZiBfb2ZmbGluZS5xdWV1ZUFQSVJlcXVlc3RzOyB0cmFjayByOyBsZXQgb2RkID0gJG9kZCkge1xuICAgICAgICA8aW9uLWl0ZW0gW2NsYXNzLm9kZEl0ZW1dPVwib2RkXCI+XG4gICAgICAgICAgPGlvbi1sYWJlbCBjbGFzcz1cImlvbi10ZXh0LXdyYXBcIj5cbiAgICAgICAgICAgIHt7IHIuZGVzY3JpcHRpb24gfX1cbiAgICAgICAgICAgIEBpZiAoci5lcnJvcikge1xuICAgICAgICAgICAgICA8cD5cbiAgICAgICAgICAgICAgICA8aW9uLXRleHQgY29sb3I9XCJkYW5nZXJcIj5cbiAgICAgICAgICAgICAgICAgIDxiPnt7ICdJREVBX1VOQ09NTU9OLk9GRkxJTkUuRVJST1JfQ09ERScgfCB0cmFuc2xhdGUgfX06IHt7IHIuZXJyb3IgfX08L2I+XG4gICAgICAgICAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgICAgICAgICA8YnIgLz5cbiAgICAgICAgICAgICAgICB7eyAnSURFQV9VTkNPTU1PTi5PRkZMSU5FLlJFUVVFU1RfRkFJTEVEX0VYUExBTkFUSU9OX0knIHwgdHJhbnNsYXRlIH19PGJyIC8+XG4gICAgICAgICAgICAgICAge3sgJ0lERUFfVU5DT01NT04uT0ZGTElORS5SRVFVRVNUX0ZBSUxFRF9FWFBMQU5BVElPTl9JSScgfCB0cmFuc2xhdGUgfX08YnIgLz5cbiAgICAgICAgICAgICAgICB7eyAnSURFQV9VTkNPTU1PTi5PRkZMSU5FLlJFUVVFU1RfRkFJTEVEX0VYUExBTkFUSU9OX0lJSScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9wPlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvaW9uLWxhYmVsPlxuICAgICAgICAgIEBpZiAoci5lcnJvcikge1xuICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICAgICAgc2xvdD1cImVuZFwiXG4gICAgICAgICAgICAgIGNvbG9yPVwiZGFuZ2VyXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIidJREVBX1VOQ09NTU9OLk9GRkxJTkUuQ0FOQ0VMX1JFUVVFU1QnIHwgdHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImRlbGV0ZVJlcXVlc3QocilcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJ0cmFzaFwiIC8+XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoci5lcnJvcikge1xuICAgICAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICAgICAgZmlsbD1cImNsZWFyXCJcbiAgICAgICAgICAgICAgc2xvdD1cImVuZFwiXG4gICAgICAgICAgICAgIGNvbG9yPVwibWVkaXVtXCJcbiAgICAgICAgICAgICAgW3RpdGxlXT1cIidJREVBX1VOQ09NTU9OLk9GRkxJTkUuRE9XTkxPQURfTE9HJyB8IHRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgIChjbGljayk9XCJkb3dubG9hZFJlcXVlc3RMb2cocilcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW9uLWljb24gc2xvdD1cImljb24tb25seVwiIG5hbWU9XCJkb3dubG9hZFwiIC8+XG4gICAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgICAgfVxuICAgICAgICAgIEBpZiAoX29mZmxpbmUuc3luY2hyb25pemluZykge1xuICAgICAgICAgICAgPGlvbi1zcGlubmVyIHNsb3Q9XCJlbmRcIiBuYW1lPVwiZG90c1wiIC8+XG4gICAgICAgICAgfVxuICAgICAgICA8L2lvbi1pdGVtPlxuICAgICAgfVxuICAgIDwvaW9uLWxpc3Q+XG4gIH1cbiAgQGlmIChfb2ZmbGluZS5nZXRSZXNvdXJjZXMoKS5sZW5ndGgpIHtcbiAgICA8aW9uLWxpc3QgY2xhc3M9XCJhTGlzdFwiPlxuICAgICAgPGlvbi1saXN0LWhlYWRlcj5cbiAgICAgICAgPGlvbi1sYWJlbD5cbiAgICAgICAgICA8aDI+e3sgJ0lERUFfVU5DT01NT04uT0ZGTElORS5ET1dOTE9BRCcgfCB0cmFuc2xhdGUgfX08L2gyPlxuICAgICAgICAgIDxwPnt7ICdJREVBX1VOQ09NTU9OLk9GRkxJTkUuRE9XTkxPQURfUkVTT1VSQ0VTX0VYUExBTkFUSU9OJyB8IHRyYW5zbGF0ZSB9fTwvcD5cbiAgICAgICAgPC9pb24tbGFiZWw+XG4gICAgICA8L2lvbi1saXN0LWhlYWRlcj5cbiAgICAgIEBmb3IgKHIgb2YgX29mZmxpbmUuZ2V0UmVzb3VyY2VzKCk7IHRyYWNrIHIpIHtcbiAgICAgICAgPGlkZWEtY2FjaGVhYmxlLXJlc291cmNlIFtyZXNvdXJjZV09XCJfb2ZmbGluZS5nZXRDYWNoZWFibGVSZXNvdXJjZShyKVwiIC8+XG4gICAgICB9XG4gICAgPC9pb24tbGlzdD5cbiAgfVxuPC9pb24tY29udGVudD5cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { Injectable, inject } from '@angular/core';
2
- import { Platform } from '@ionic/angular';
2
+ import { Platform } from '@ionic/angular/standalone';
3
3
  import { PushNotifications } from '@capacitor/push-notifications';
4
4
  import { Observable } from 'rxjs';
5
5
  import { PushNotificationsDevice, PushNotificationsPlatforms } from 'idea-toolbox';
@@ -47,10 +47,10 @@ export class IDEAPushNotificationsService {
47
47
  if (permStatus.receive === 'granted')
48
48
  PushNotifications.register();
49
49
  }
50
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IDEAPushNotificationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
51
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IDEAPushNotificationsService }); }
50
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAPushNotificationsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
51
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAPushNotificationsService }); }
52
52
  }
53
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IDEAPushNotificationsService, decorators: [{
53
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAPushNotificationsService, decorators: [{
54
54
  type: Injectable
55
55
  }], ctorParameters: () => [] });
56
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVzaE5vdGlmaWNhdGlvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvdW5jb21tb24vc3JjL3B1c2hOb3RpZmljYXRpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzFDLE9BQU8sRUFBRSxpQkFBaUIsRUFBMEIsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVuRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFFckU7O0dBRUc7QUFFSCxNQUFNLE9BQU8sNEJBQTRCO0lBUXZDO1FBUFEsY0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixvQkFBZSxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBTzFELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQUUsT0FBTztRQUVoQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzdDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FDcEQsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLHVCQUF1QixDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLDBCQUEwQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FDN0csQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN0QyxpREFBaUQ7WUFDaEQsaUJBQXlCLENBQUMsV0FBVyxDQUFDLG1CQUFtQixFQUFFLENBQUMsR0FBVSxFQUFRLEVBQUU7Z0JBQy9FLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzdDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLGNBQWM7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFBRSxPQUFPO1FBRWhDLElBQUksVUFBVSxHQUFHLE1BQU0saUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUU1RCxJQUFJLFVBQVUsQ0FBQyxPQUFPLEtBQUssUUFBUTtZQUFFLFVBQVUsR0FBRyxNQUFNLGlCQUFpQixDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFL0YsSUFBSSxVQUFVLENBQUMsT0FBTyxLQUFLLFNBQVM7WUFBRSxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyRSxDQUFDOzhHQS9DVSw0QkFBNEI7a0hBQTVCLDRCQUE0Qjs7MkZBQTVCLDRCQUE0QjtrQkFEeEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAaW9uaWMvYW5ndWxhcic7XG5pbXBvcnQgeyBQdXNoTm90aWZpY2F0aW9ucywgUHVzaE5vdGlmaWNhdGlvblNjaGVtYSB9IGZyb20gJ0BjYXBhY2l0b3IvcHVzaC1ub3RpZmljYXRpb25zJztcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IFB1c2hOb3RpZmljYXRpb25zRGV2aWNlLCBQdXNoTm90aWZpY2F0aW9uc1BsYXRmb3JtcyB9IGZyb20gJ2lkZWEtdG9vbGJveCc7XG5cbmltcG9ydCB7IElERUFFcnJvclJlcG9ydGluZ1NlcnZpY2UgfSBmcm9tICcuL2Vycm9yUmVwb3J0aW5nLnNlcnZpY2UnO1xuXG4vKipcbiAqIFRvIHN1YnNjcmliZSBwdXNoIG5vdGlmaWNhdGlvbnMgZXZlbnRzLlxuICovXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgSURFQVB1c2hOb3RpZmljYXRpb25zU2VydmljZSB7XG4gIHByaXZhdGUgX3BsYXRmb3JtID0gaW5qZWN0KFBsYXRmb3JtKTtcbiAgcHJpdmF0ZSBfZXJyb3JSZXBvcnRpbmcgPSBpbmplY3QoSURFQUVycm9yUmVwb3J0aW5nU2VydmljZSk7XG5cbiAgcmVnaXN0cmF0aW9uczogT2JzZXJ2YWJsZTxQdXNoTm90aWZpY2F0aW9uc0RldmljZT47XG4gIG5vdGlmaWNhdGlvbnM6IE9ic2VydmFibGU8UHVzaE5vdGlmaWNhdGlvblNjaGVtYT47XG4gIGVycm9yczogT2JzZXJ2YWJsZTxFcnJvcj47XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmlzQXZhaWxhYmxlKCkpIHJldHVybjtcblxuICAgIHRoaXMucmVnaXN0cmF0aW9ucyA9IG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAgIFB1c2hOb3RpZmljYXRpb25zLmFkZExpc3RlbmVyKCdyZWdpc3RyYXRpb24nLCB0b2tlbiA9PlxuICAgICAgICBvYnNlcnZlci5uZXh0KG5ldyBQdXNoTm90aWZpY2F0aW9uc0RldmljZSh7IHRva2VuOiB0b2tlbi52YWx1ZSwgcGxhdGZvcm06IFB1c2hOb3RpZmljYXRpb25zUGxhdGZvcm1zLkZDTSB9KSlcbiAgICAgICk7XG4gICAgfSk7XG4gICAgdGhpcy5lcnJvcnMgPSBuZXcgT2JzZXJ2YWJsZShvYnNlcnZlciA9PiB7XG4gICAgICAvLyByaWYuIGh0dHBzOi8vZm9ydW0uaW9uaWNmcmFtZXdvcmsuY29tL3QvMjI2Mzc2XG4gICAgICAoUHVzaE5vdGlmaWNhdGlvbnMgYXMgYW55KS5hZGRMaXN0ZW5lcigncmVnaXN0cmF0aW9uRXJyb3InLCAoZXJyOiBFcnJvcik6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLl9lcnJvclJlcG9ydGluZy5zZW5kUmVwb3J0KGVycik7XG4gICAgICAgIG9ic2VydmVyLm5leHQoZXJyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIHRoaXMubm90aWZpY2F0aW9ucyA9IG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAgIFB1c2hOb3RpZmljYXRpb25zLmFkZExpc3RlbmVyKCdwdXNoTm90aWZpY2F0aW9uUmVjZWl2ZWQnLCBuID0+IG9ic2VydmVyLm5leHQobikpO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0cnVlIGlmIHRoZSBkZXZpY2UgaXMgc3VwcG9ydGVkLlxuICAgKi9cbiAgaXNBdmFpbGFibGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3BsYXRmb3JtLmlzKCdjYXBhY2l0b3InKSAmJiAhIVB1c2hOb3RpZmljYXRpb25zO1xuICB9XG5cbiAgLyoqXG4gICAqIFRvIGZpcmUgdGhlIHJlZ2lzdHJhdGlvbiBvZiBhIG5ldyBkZXZpY2U6IGl0IHdpbGwgcmV3cXVlc3QgdGhlIHBlcm1pc3Npb24gdG8gdXNlIFB1c2ggTm90aWZpY2F0aW9uLlxuICAgKiBPbiBpT1Mgd2lsbCBwcm9tcHQgdGhlIHJlcXVlc3QsIG9uIEFuZHJvaWQgaXQncyBhdXRvbWF0aWMuXG4gICAqL1xuICBhc3luYyByZWdpc3RlckRldmljZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBpZiAoIXRoaXMuaXNBdmFpbGFibGUoKSkgcmV0dXJuO1xuXG4gICAgbGV0IHBlcm1TdGF0dXMgPSBhd2FpdCBQdXNoTm90aWZpY2F0aW9ucy5jaGVja1Blcm1pc3Npb25zKCk7XG5cbiAgICBpZiAocGVybVN0YXR1cy5yZWNlaXZlID09PSAncHJvbXB0JykgcGVybVN0YXR1cyA9IGF3YWl0IFB1c2hOb3RpZmljYXRpb25zLnJlcXVlc3RQZXJtaXNzaW9ucygpO1xuXG4gICAgaWYgKHBlcm1TdGF0dXMucmVjZWl2ZSA9PT0gJ2dyYW50ZWQnKSBQdXNoTm90aWZpY2F0aW9ucy5yZWdpc3RlcigpO1xuICB9XG59XG4iXX0=
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVzaE5vdGlmaWNhdGlvbnMuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL21vZHVsZXMvdW5jb21tb24vc3JjL3B1c2hOb3RpZmljYXRpb25zLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxpQkFBaUIsRUFBMEIsTUFBTSwrQkFBK0IsQ0FBQztBQUMxRixPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBQ2xDLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSwwQkFBMEIsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUVuRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7QUFFckU7O0dBRUc7QUFFSCxNQUFNLE9BQU8sNEJBQTRCO0lBUXZDO1FBUFEsY0FBUyxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixvQkFBZSxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBTzFELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQUUsT0FBTztRQUVoQyxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzdDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FDcEQsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLHVCQUF1QixDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsUUFBUSxFQUFFLDBCQUEwQixDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FDN0csQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN0QyxpREFBaUQ7WUFDaEQsaUJBQXlCLENBQUMsV0FBVyxDQUFDLG1CQUFtQixFQUFFLENBQUMsR0FBVSxFQUFRLEVBQUU7Z0JBQy9FLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3JCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsYUFBYSxHQUFHLElBQUksVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFO1lBQzdDLGlCQUFpQixDQUFDLFdBQVcsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNILFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztJQUMvRCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsS0FBSyxDQUFDLGNBQWM7UUFDbEIsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFBRSxPQUFPO1FBRWhDLElBQUksVUFBVSxHQUFHLE1BQU0saUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUU1RCxJQUFJLFVBQVUsQ0FBQyxPQUFPLEtBQUssUUFBUTtZQUFFLFVBQVUsR0FBRyxNQUFNLGlCQUFpQixDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFFL0YsSUFBSSxVQUFVLENBQUMsT0FBTyxLQUFLLFNBQVM7WUFBRSxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNyRSxDQUFDOzhHQS9DVSw0QkFBNEI7a0hBQTVCLDRCQUE0Qjs7MkZBQTVCLDRCQUE0QjtrQkFEeEMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgUGxhdGZvcm0gfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IFB1c2hOb3RpZmljYXRpb25zLCBQdXNoTm90aWZpY2F0aW9uU2NoZW1hIH0gZnJvbSAnQGNhcGFjaXRvci9wdXNoLW5vdGlmaWNhdGlvbnMnO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgUHVzaE5vdGlmaWNhdGlvbnNEZXZpY2UsIFB1c2hOb3RpZmljYXRpb25zUGxhdGZvcm1zIH0gZnJvbSAnaWRlYS10b29sYm94JztcblxuaW1wb3J0IHsgSURFQUVycm9yUmVwb3J0aW5nU2VydmljZSB9IGZyb20gJy4vZXJyb3JSZXBvcnRpbmcuc2VydmljZSc7XG5cbi8qKlxuICogVG8gc3Vic2NyaWJlIHB1c2ggbm90aWZpY2F0aW9ucyBldmVudHMuXG4gKi9cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBJREVBUHVzaE5vdGlmaWNhdGlvbnNTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBfcGxhdGZvcm0gPSBpbmplY3QoUGxhdGZvcm0pO1xuICBwcml2YXRlIF9lcnJvclJlcG9ydGluZyA9IGluamVjdChJREVBRXJyb3JSZXBvcnRpbmdTZXJ2aWNlKTtcblxuICByZWdpc3RyYXRpb25zOiBPYnNlcnZhYmxlPFB1c2hOb3RpZmljYXRpb25zRGV2aWNlPjtcbiAgbm90aWZpY2F0aW9uczogT2JzZXJ2YWJsZTxQdXNoTm90aWZpY2F0aW9uU2NoZW1hPjtcbiAgZXJyb3JzOiBPYnNlcnZhYmxlPEVycm9yPjtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIXRoaXMuaXNBdmFpbGFibGUoKSkgcmV0dXJuO1xuXG4gICAgdGhpcy5yZWdpc3RyYXRpb25zID0gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4ge1xuICAgICAgUHVzaE5vdGlmaWNhdGlvbnMuYWRkTGlzdGVuZXIoJ3JlZ2lzdHJhdGlvbicsIHRva2VuID0+XG4gICAgICAgIG9ic2VydmVyLm5leHQobmV3IFB1c2hOb3RpZmljYXRpb25zRGV2aWNlKHsgdG9rZW46IHRva2VuLnZhbHVlLCBwbGF0Zm9ybTogUHVzaE5vdGlmaWNhdGlvbnNQbGF0Zm9ybXMuRkNNIH0pKVxuICAgICAgKTtcbiAgICB9KTtcbiAgICB0aGlzLmVycm9ycyA9IG5ldyBPYnNlcnZhYmxlKG9ic2VydmVyID0+IHtcbiAgICAgIC8vIHJpZi4gaHR0cHM6Ly9mb3J1bS5pb25pY2ZyYW1ld29yay5jb20vdC8yMjYzNzZcbiAgICAgIChQdXNoTm90aWZpY2F0aW9ucyBhcyBhbnkpLmFkZExpc3RlbmVyKCdyZWdpc3RyYXRpb25FcnJvcicsIChlcnI6IEVycm9yKTogdm9pZCA9PiB7XG4gICAgICAgIHRoaXMuX2Vycm9yUmVwb3J0aW5nLnNlbmRSZXBvcnQoZXJyKTtcbiAgICAgICAgb2JzZXJ2ZXIubmV4dChlcnIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgdGhpcy5ub3RpZmljYXRpb25zID0gbmV3IE9ic2VydmFibGUob2JzZXJ2ZXIgPT4ge1xuICAgICAgUHVzaE5vdGlmaWNhdGlvbnMuYWRkTGlzdGVuZXIoJ3B1c2hOb3RpZmljYXRpb25SZWNlaXZlZCcsIG4gPT4gb2JzZXJ2ZXIubmV4dChuKSk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRydWUgaWYgdGhlIGRldmljZSBpcyBzdXBwb3J0ZWQuXG4gICAqL1xuICBpc0F2YWlsYWJsZSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGxhdGZvcm0uaXMoJ2NhcGFjaXRvcicpICYmICEhUHVzaE5vdGlmaWNhdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogVG8gZmlyZSB0aGUgcmVnaXN0cmF0aW9uIG9mIGEgbmV3IGRldmljZTogaXQgd2lsbCByZXdxdWVzdCB0aGUgcGVybWlzc2lvbiB0byB1c2UgUHVzaCBOb3RpZmljYXRpb24uXG4gICAqIE9uIGlPUyB3aWxsIHByb21wdCB0aGUgcmVxdWVzdCwgb24gQW5kcm9pZCBpdCdzIGF1dG9tYXRpYy5cbiAgICovXG4gIGFzeW5jIHJlZ2lzdGVyRGV2aWNlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghdGhpcy5pc0F2YWlsYWJsZSgpKSByZXR1cm47XG5cbiAgICBsZXQgcGVybVN0YXR1cyA9IGF3YWl0IFB1c2hOb3RpZmljYXRpb25zLmNoZWNrUGVybWlzc2lvbnMoKTtcblxuICAgIGlmIChwZXJtU3RhdHVzLnJlY2VpdmUgPT09ICdwcm9tcHQnKSBwZXJtU3RhdHVzID0gYXdhaXQgUHVzaE5vdGlmaWNhdGlvbnMucmVxdWVzdFBlcm1pc3Npb25zKCk7XG5cbiAgICBpZiAocGVybVN0YXR1cy5yZWNlaXZlID09PSAnZ3JhbnRlZCcpIFB1c2hOb3RpZmljYXRpb25zLnJlZ2lzdGVyKCk7XG4gIH1cbn1cbiJdfQ==
@@ -53,10 +53,10 @@ export class IDEASentimentComponent {
53
53
  return 'light';
54
54
  }
55
55
  }
56
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IDEASentimentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
57
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.1", type: IDEASentimentComponent, selector: "idea-sentiment", inputs: { text: "text", lines: "lines", color: "color" }, outputs: { change: "change" }, usesOnChanges: true, ngImport: i0, template: "@if (text && _offline.isOnline()) {\n <ion-item [lines]=\"lines\" [color]=\"color\">\n @if (!sentiment) {\n <ion-spinner slot=\"end\" size=\"small\" />\n }\n @if (sentiment) {\n <ion-badge\n slot=\"end\"\n size=\"small\"\n [color]=\"getColorBySentiment()\"\n [title]=\"'IDEA_UNCOMMON.SENTIMENT.RESULT_HINT' | translate: { sentiment: sentiment }\"\n >\n {{ 'IDEA_UNCOMMON.SENTIMENT.RESULT.' + sentiment | translate }}\n </ion-badge>\n }\n </ion-item>\n}\n", styles: [""], dependencies: [{ kind: "component", type: i1.IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i1.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "pipe", type: i2.IDEATranslatePipe, name: "translate" }] }); }
56
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEASentimentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
57
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEASentimentComponent, selector: "idea-sentiment", inputs: { text: "text", lines: "lines", color: "color" }, outputs: { change: "change" }, usesOnChanges: true, ngImport: i0, template: "@if (text && _offline.isOnline()) {\n <ion-item [lines]=\"lines\" [color]=\"color\">\n @if (!sentiment) {\n <ion-spinner slot=\"end\" size=\"small\" />\n }\n @if (sentiment) {\n <ion-badge\n slot=\"end\"\n size=\"small\"\n [color]=\"getColorBySentiment()\"\n [title]=\"'IDEA_UNCOMMON.SENTIMENT.RESULT_HINT' | translate: { sentiment: sentiment }\"\n >\n {{ 'IDEA_UNCOMMON.SENTIMENT.RESULT.' + sentiment | translate }}\n </ion-badge>\n }\n </ion-item>\n}\n", styles: [""], dependencies: [{ kind: "component", type: i1.IonBadge, selector: "ion-badge", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonItem, selector: "ion-item", inputs: ["button", "color", "detail", "detailIcon", "disabled", "download", "href", "lines", "mode", "rel", "routerAnimation", "routerDirection", "target", "type"] }, { kind: "component", type: i1.IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "pipe", type: i2.IDEATranslatePipe, name: "translate" }] }); }
58
58
  }
59
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IDEASentimentComponent, decorators: [{
59
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEASentimentComponent, decorators: [{
60
60
  type: Component,
61
61
  args: [{ selector: 'idea-sentiment', template: "@if (text && _offline.isOnline()) {\n <ion-item [lines]=\"lines\" [color]=\"color\">\n @if (!sentiment) {\n <ion-spinner slot=\"end\" size=\"small\" />\n }\n @if (sentiment) {\n <ion-badge\n slot=\"end\"\n size=\"small\"\n [color]=\"getColorBySentiment()\"\n [title]=\"'IDEA_UNCOMMON.SENTIMENT.RESULT_HINT' | translate: { sentiment: sentiment }\"\n >\n {{ 'IDEA_UNCOMMON.SENTIMENT.RESULT.' + sentiment | translate }}\n </ion-badge>\n }\n </ion-item>\n}\n" }]
62
62
  }], propDecorators: { text: [{
@@ -6,11 +6,11 @@ import { IDEATranslationsModule } from '@idea-ionic/common';
6
6
  import { IDEASentimentComponent } from './sentiment.component';
7
7
  import * as i0 from "@angular/core";
8
8
  export class IDEASentimentModule {
9
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IDEASentimentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.1.1", ngImport: i0, type: IDEASentimentModule, declarations: [IDEASentimentComponent], imports: [CommonModule, FormsModule, IonicModule, IDEATranslationsModule], exports: [IDEASentimentComponent] }); }
11
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IDEASentimentModule, imports: [CommonModule, FormsModule, IonicModule, IDEATranslationsModule] }); }
9
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEASentimentModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
10
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.9", ngImport: i0, type: IDEASentimentModule, declarations: [IDEASentimentComponent], imports: [CommonModule, FormsModule, IonicModule, IDEATranslationsModule], exports: [IDEASentimentComponent] }); }
11
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEASentimentModule, imports: [CommonModule, FormsModule, IonicModule, IDEATranslationsModule] }); }
12
12
  }
13
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IDEASentimentModule, decorators: [{
13
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEASentimentModule, decorators: [{
14
14
  type: NgModule,
15
15
  args: [{
16
16
  imports: [CommonModule, FormsModule, IonicModule, IDEATranslationsModule],
@@ -1,5 +1,5 @@
1
1
  import { Component, Input, inject } from '@angular/core';
2
- import { ModalController } from '@ionic/angular';
2
+ import { ModalController } from '@ionic/angular/standalone';
3
3
  import { TimeInterval } from 'idea-toolbox';
4
4
  import { IDEATranslationsService } from '@idea-ionic/common';
5
5
  import * as i0 from "@angular/core";
@@ -119,10 +119,10 @@ export class IDEAFromTimeToTimeComponent {
119
119
  close() {
120
120
  this._modal.dismiss();
121
121
  }
122
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IDEAFromTimeToTimeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
123
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.1.1", type: IDEAFromTimeToTimeComponent, selector: "idea-from-time-to-time", inputs: { timeInterval: "timeInterval", period: "period", notEarlierThan: "notEarlierThan", notLaterThan: "notLaterThan", title: "title" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"'COMMON.CLOSE' | translate\" (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"'COMMON.RESET' | translate\" (click)=\"reset()\">\n <ion-icon name=\"arrow-undo\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-grid class=\"clockGrid\">\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"5\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(12) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(12)\"\n [disabled]=\"!isAllowed(12)\"\n (click)=\"setInterval(12)\"\n >\n {{ getClockButtonContent(12) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(12, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(12, minutes)\"\n [disabled]=\"!isAllowed(12, minutes)\"\n (click)=\"setInterval(12, minutes)\"\n >\n {{ getClockButtonContent(12, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"3\">&nbsp;</ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"2\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(11, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(11, minutes)\"\n [disabled]=\"!isAllowed(11, minutes)\"\n (click)=\"setInterval(11, minutes)\"\n >\n {{ getClockButtonContent(11, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(11) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(11)\"\n [disabled]=\"!isAllowed(11)\"\n (click)=\"setInterval(11)\"\n >\n {{ getClockButtonContent(11) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(1) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(1)\"\n [disabled]=\"!isAllowed(1)\"\n (click)=\"setInterval(1)\"\n >\n {{ getClockButtonContent(1) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(1, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(1, minutes)\"\n [disabled]=\"!isAllowed(1, minutes)\"\n (click)=\"setInterval(1, minutes)\"\n >\n {{ getClockButtonContent(1, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\">&nbsp;</ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"1\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(10, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(10, minutes)\"\n [disabled]=\"!isAllowed(10, minutes)\"\n (click)=\"setInterval(10, minutes)\"\n >\n {{ getClockButtonContent(10, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(10) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(10)\"\n [disabled]=\"!isAllowed(10)\"\n (click)=\"setInterval(10)\"\n >\n {{ getClockButtonContent(10) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(2) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(2)\"\n [disabled]=\"!isAllowed(2)\"\n (click)=\"setInterval(2)\"\n >\n {{ getClockButtonContent(2) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(2, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(2, minutes)\"\n [disabled]=\"!isAllowed(2, minutes)\"\n (click)=\"setInterval(2, minutes)\"\n >\n {{ getClockButtonContent(2, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"1\">&nbsp;</ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(9, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(9, minutes)\"\n [disabled]=\"!isAllowed(9, minutes)\"\n (click)=\"setInterval(9, minutes)\"\n >\n {{ getClockButtonContent(9, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(9) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(9)\"\n [disabled]=\"!isAllowed(9)\"\n (click)=\"setInterval(9)\"\n >\n {{ getClockButtonContent(9) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center displayText\" [size]=\"4\">\n <ion-text [class.fromSelected]=\"segment === Segments.TO\">\n {{ 'IDEA_UNCOMMON.FTTT.FROM' | translate }}\n @if (segment === Segments.TO) {\n <span>{{ msToTimeString(_timeInterval.from) }}</span>\n }\n </ion-text>\n @if (segment === Segments.TO) {\n <ion-text>{{ 'IDEA_UNCOMMON.FTTT.TO' | translate }}</ion-text>\n }\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(3) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(3)\"\n [disabled]=\"!isAllowed(3)\"\n (click)=\"setInterval(3)\"\n >\n {{ getClockButtonContent(3) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(3, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(3, minutes)\"\n [disabled]=\"!isAllowed(3, minutes)\"\n (click)=\"setInterval(3, minutes)\"\n >\n {{ getClockButtonContent(3, minutes) }}\n </ion-button>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"1\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(8, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(8, minutes)\"\n [disabled]=\"!isAllowed(8, minutes)\"\n (click)=\"setInterval(8, minutes)\"\n >\n {{ getClockButtonContent(8, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(8) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(8)\"\n [disabled]=\"!isAllowed(8)\"\n (click)=\"setInterval(8)\"\n >\n {{ getClockButtonContent(8) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(4) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(4)\"\n [disabled]=\"!isAllowed(4)\"\n (click)=\"setInterval(4)\"\n >\n {{ getClockButtonContent(4) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(4, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(4, minutes)\"\n [disabled]=\"!isAllowed(4, minutes)\"\n (click)=\"setInterval(4, minutes)\"\n >\n {{ getClockButtonContent(4, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"1\">&nbsp;</ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"2\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(7, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(7, minutes)\"\n [disabled]=\"!isAllowed(7, minutes)\"\n (click)=\"setInterval(7, minutes)\"\n >\n {{ getClockButtonContent(7, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(7) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(7)\"\n [disabled]=\"!isAllowed(7)\"\n (click)=\"setInterval(7)\"\n >\n {{ getClockButtonContent(7) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(5) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(5)\"\n [disabled]=\"!isAllowed(5)\"\n (click)=\"setInterval(5)\"\n >\n {{ getClockButtonContent(5) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(5, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(5, minutes)\"\n [disabled]=\"!isAllowed(5, minutes)\"\n (click)=\"setInterval(5, minutes)\"\n >\n {{ getClockButtonContent(5, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\">&nbsp;</ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"3\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(6, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(6, minutes)\"\n [disabled]=\"!isAllowed(6, minutes)\"\n (click)=\"setInterval(6, minutes)\"\n >\n {{ getClockButtonContent(6, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(6) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(6)\"\n [disabled]=\"!isAllowed(6)\"\n (click)=\"setInterval(6)\"\n >\n {{ getClockButtonContent(6) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"5\">&nbsp;</ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right\" [size]=\"3\" [sizeSm]=\"7\">\n <ion-text class=\"prefLabel\">{{ 'IDEA_UNCOMMON.FTTT.PERIOD' | translate }}:</ion-text>\n </ion-col>\n <ion-col [size]=\"9\" [sizeSm]=\"5\">\n <ion-segment [value]=\"period\" (ionChange)=\"period = $event?.detail?.value || period\">\n <ion-segment-button [value]=\"Periods.AM\">\n <ion-label>{{ 'IDEA_UNCOMMON.FTTT.AM' | translate }}</ion-label>\n </ion-segment-button>\n <ion-segment-button [value]=\"Periods.PM\">\n <ion-label>{{ 'IDEA_UNCOMMON.FTTT.PM' | translate }}</ion-label>\n </ion-segment-button>\n </ion-segment>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right\" [size]=\"3\" [sizeSm]=\"7\">\n <ion-text class=\"prefLabel\">{{ 'IDEA_UNCOMMON.FTTT.MINUTES_PREFERENCE' | translate }}:</ion-text>\n </ion-col>\n <ion-col [size]=\"9\" [sizeSm]=\"5\">\n <ion-segment [value]=\"minutes\" (ionChange)=\"minutes = $event?.detail?.value || minutes\">\n <ion-segment-button value=\"15\">\n <ion-label>15</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"30\">\n <ion-label>30</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"45\">\n <ion-label>45</ion-label>\n </ion-segment-button>\n </ion-segment>\n </ion-col>\n </ion-row>\n </ion-grid>\n</ion-content>\n", styles: ["ion-grid.clockGrid ion-button[size=large]{width:50px;height:50px;font-size:1.1em;font-weight:700}ion-grid.clockGrid ion-button[size=small]{font-size:.75em}ion-grid.clockGrid ion-button.oppositeMeridian{--border-color: var(--ion-color-medium);--border-style: dashed;--border-width: 1px}ion-grid.clockGrid .displayText ion-text{font-size:1.3em;font-weight:700}ion-grid.clockGrid .displayText ion-text.fromSelected{display:block;padding-bottom:3px;font-size:.9em}ion-grid.clockGrid ion-segment ion-segment-button{min-width:50px;--color-checked: var(--ion-color-dark);--border-color: var(--ion-color-dark)}ion-grid.clockGrid .prefLabel{font-size:.6em;font-weight:700;text-transform:uppercase}\n"], dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonSegment, selector: "ion-segment", inputs: ["color", "disabled", "mode", "scrollable", "selectOnFocus", "swipeGesture", "value"] }, { kind: "component", type: i1.IonSegmentButton, selector: "ion-segment-button", inputs: ["disabled", "layout", "mode", "type", "value"] }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i1.SelectValueAccessor, selector: "ion-select, ion-radio-group, ion-segment, ion-datetime" }, { kind: "pipe", type: i2.IDEATranslatePipe, name: "translate" }] }); }
122
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAFromTimeToTimeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
123
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.9", type: IDEAFromTimeToTimeComponent, selector: "idea-from-time-to-time", inputs: { timeInterval: "timeInterval", period: "period", notEarlierThan: "notEarlierThan", notLaterThan: "notLaterThan", title: "title" }, ngImport: i0, template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"'COMMON.CLOSE' | translate\" (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"'COMMON.RESET' | translate\" (click)=\"reset()\">\n <ion-icon name=\"arrow-undo\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-grid class=\"clockGrid\">\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"5\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(12) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(12)\"\n [disabled]=\"!isAllowed(12)\"\n (click)=\"setInterval(12)\"\n >\n {{ getClockButtonContent(12) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(12, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(12, minutes)\"\n [disabled]=\"!isAllowed(12, minutes)\"\n (click)=\"setInterval(12, minutes)\"\n >\n {{ getClockButtonContent(12, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"3\">&nbsp;</ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"2\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(11, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(11, minutes)\"\n [disabled]=\"!isAllowed(11, minutes)\"\n (click)=\"setInterval(11, minutes)\"\n >\n {{ getClockButtonContent(11, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(11) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(11)\"\n [disabled]=\"!isAllowed(11)\"\n (click)=\"setInterval(11)\"\n >\n {{ getClockButtonContent(11) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(1) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(1)\"\n [disabled]=\"!isAllowed(1)\"\n (click)=\"setInterval(1)\"\n >\n {{ getClockButtonContent(1) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(1, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(1, minutes)\"\n [disabled]=\"!isAllowed(1, minutes)\"\n (click)=\"setInterval(1, minutes)\"\n >\n {{ getClockButtonContent(1, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\">&nbsp;</ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"1\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(10, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(10, minutes)\"\n [disabled]=\"!isAllowed(10, minutes)\"\n (click)=\"setInterval(10, minutes)\"\n >\n {{ getClockButtonContent(10, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(10) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(10)\"\n [disabled]=\"!isAllowed(10)\"\n (click)=\"setInterval(10)\"\n >\n {{ getClockButtonContent(10) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(2) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(2)\"\n [disabled]=\"!isAllowed(2)\"\n (click)=\"setInterval(2)\"\n >\n {{ getClockButtonContent(2) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(2, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(2, minutes)\"\n [disabled]=\"!isAllowed(2, minutes)\"\n (click)=\"setInterval(2, minutes)\"\n >\n {{ getClockButtonContent(2, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"1\">&nbsp;</ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(9, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(9, minutes)\"\n [disabled]=\"!isAllowed(9, minutes)\"\n (click)=\"setInterval(9, minutes)\"\n >\n {{ getClockButtonContent(9, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(9) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(9)\"\n [disabled]=\"!isAllowed(9)\"\n (click)=\"setInterval(9)\"\n >\n {{ getClockButtonContent(9) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center displayText\" [size]=\"4\">\n <ion-text [class.fromSelected]=\"segment === Segments.TO\">\n {{ 'IDEA_UNCOMMON.FTTT.FROM' | translate }}\n @if (segment === Segments.TO) {\n <span>{{ msToTimeString(_timeInterval.from) }}</span>\n }\n </ion-text>\n @if (segment === Segments.TO) {\n <ion-text>{{ 'IDEA_UNCOMMON.FTTT.TO' | translate }}</ion-text>\n }\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(3) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(3)\"\n [disabled]=\"!isAllowed(3)\"\n (click)=\"setInterval(3)\"\n >\n {{ getClockButtonContent(3) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(3, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(3, minutes)\"\n [disabled]=\"!isAllowed(3, minutes)\"\n (click)=\"setInterval(3, minutes)\"\n >\n {{ getClockButtonContent(3, minutes) }}\n </ion-button>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"1\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(8, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(8, minutes)\"\n [disabled]=\"!isAllowed(8, minutes)\"\n (click)=\"setInterval(8, minutes)\"\n >\n {{ getClockButtonContent(8, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(8) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(8)\"\n [disabled]=\"!isAllowed(8)\"\n (click)=\"setInterval(8)\"\n >\n {{ getClockButtonContent(8) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(4) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(4)\"\n [disabled]=\"!isAllowed(4)\"\n (click)=\"setInterval(4)\"\n >\n {{ getClockButtonContent(4) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(4, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(4, minutes)\"\n [disabled]=\"!isAllowed(4, minutes)\"\n (click)=\"setInterval(4, minutes)\"\n >\n {{ getClockButtonContent(4, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"1\">&nbsp;</ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"2\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(7, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(7, minutes)\"\n [disabled]=\"!isAllowed(7, minutes)\"\n (click)=\"setInterval(7, minutes)\"\n >\n {{ getClockButtonContent(7, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(7) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(7)\"\n [disabled]=\"!isAllowed(7)\"\n (click)=\"setInterval(7)\"\n >\n {{ getClockButtonContent(7) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(5) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(5)\"\n [disabled]=\"!isAllowed(5)\"\n (click)=\"setInterval(5)\"\n >\n {{ getClockButtonContent(5) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(5, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(5, minutes)\"\n [disabled]=\"!isAllowed(5, minutes)\"\n (click)=\"setInterval(5, minutes)\"\n >\n {{ getClockButtonContent(5, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\">&nbsp;</ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"3\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(6, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(6, minutes)\"\n [disabled]=\"!isAllowed(6, minutes)\"\n (click)=\"setInterval(6, minutes)\"\n >\n {{ getClockButtonContent(6, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(6) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(6)\"\n [disabled]=\"!isAllowed(6)\"\n (click)=\"setInterval(6)\"\n >\n {{ getClockButtonContent(6) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"5\">&nbsp;</ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right\" [size]=\"3\" [sizeSm]=\"7\">\n <ion-text class=\"prefLabel\">{{ 'IDEA_UNCOMMON.FTTT.PERIOD' | translate }}:</ion-text>\n </ion-col>\n <ion-col [size]=\"9\" [sizeSm]=\"5\">\n <ion-segment [value]=\"period\" (ionChange)=\"period = $event?.detail?.value || period\">\n <ion-segment-button [value]=\"Periods.AM\">\n <ion-label>{{ 'IDEA_UNCOMMON.FTTT.AM' | translate }}</ion-label>\n </ion-segment-button>\n <ion-segment-button [value]=\"Periods.PM\">\n <ion-label>{{ 'IDEA_UNCOMMON.FTTT.PM' | translate }}</ion-label>\n </ion-segment-button>\n </ion-segment>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right\" [size]=\"3\" [sizeSm]=\"7\">\n <ion-text class=\"prefLabel\">{{ 'IDEA_UNCOMMON.FTTT.MINUTES_PREFERENCE' | translate }}:</ion-text>\n </ion-col>\n <ion-col [size]=\"9\" [sizeSm]=\"5\">\n <ion-segment [value]=\"minutes\" (ionChange)=\"minutes = $event?.detail?.value || minutes\">\n <ion-segment-button value=\"15\">\n <ion-label>15</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"30\">\n <ion-label>30</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"45\">\n <ion-label>45</ion-label>\n </ion-segment-button>\n </ion-segment>\n </ion-col>\n </ion-row>\n </ion-grid>\n</ion-content>\n", styles: ["ion-grid.clockGrid ion-button[size=large]{width:50px;height:50px;font-size:1.1em;font-weight:700}ion-grid.clockGrid ion-button[size=small]{font-size:.75em}ion-grid.clockGrid ion-button.oppositeMeridian{--border-color: var(--ion-color-medium);--border-style: dashed;--border-width: 1px}ion-grid.clockGrid .displayText ion-text{font-size:1.3em;font-weight:700}ion-grid.clockGrid .displayText ion-text.fromSelected{display:block;padding-bottom:3px;font-size:.9em}ion-grid.clockGrid ion-segment ion-segment-button{min-width:50px;--color-checked: var(--ion-color-dark);--border-color: var(--ion-color-dark)}ion-grid.clockGrid .prefLabel{font-size:.6em;font-weight:700;text-transform:uppercase}\n"], dependencies: [{ kind: "component", type: i1.IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: i1.IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: i1.IonCol, selector: "ion-col", inputs: ["offset", "offsetLg", "offsetMd", "offsetSm", "offsetXl", "offsetXs", "pull", "pullLg", "pullMd", "pullSm", "pullXl", "pullXs", "push", "pushLg", "pushMd", "pushSm", "pushXl", "pushXs", "size", "sizeLg", "sizeMd", "sizeSm", "sizeXl", "sizeXs"] }, { kind: "component", type: i1.IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: i1.IonGrid, selector: "ion-grid", inputs: ["fixed"] }, { kind: "component", type: i1.IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: i1.IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: i1.IonLabel, selector: "ion-label", inputs: ["color", "mode", "position"] }, { kind: "component", type: i1.IonRow, selector: "ion-row" }, { kind: "component", type: i1.IonSegment, selector: "ion-segment", inputs: ["color", "disabled", "mode", "scrollable", "selectOnFocus", "swipeGesture", "value"] }, { kind: "component", type: i1.IonSegmentButton, selector: "ion-segment-button", inputs: ["disabled", "layout", "mode", "type", "value"] }, { kind: "component", type: i1.IonText, selector: "ion-text", inputs: ["color", "mode"] }, { kind: "component", type: i1.IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: i1.IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "directive", type: i1.SelectValueAccessor, selector: "ion-select, ion-radio-group, ion-segment, ion-datetime" }, { kind: "pipe", type: i2.IDEATranslatePipe, name: "translate" }] }); }
124
124
  }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.1", ngImport: i0, type: IDEAFromTimeToTimeComponent, decorators: [{
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.9", ngImport: i0, type: IDEAFromTimeToTimeComponent, decorators: [{
126
126
  type: Component,
127
127
  args: [{ selector: 'idea-from-time-to-time', template: "<ion-header>\n <ion-toolbar color=\"ideaToolbar\">\n <ion-buttons slot=\"start\">\n <ion-button [title]=\"'COMMON.CLOSE' | translate\" (click)=\"close()\">\n <ion-icon name=\"close\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n <ion-title>{{ title }}</ion-title>\n <ion-buttons slot=\"end\">\n <ion-button [title]=\"'COMMON.RESET' | translate\" (click)=\"reset()\">\n <ion-icon name=\"arrow-undo\" slot=\"icon-only\" />\n </ion-button>\n </ion-buttons>\n </ion-toolbar>\n</ion-header>\n<ion-content>\n <ion-grid class=\"clockGrid\">\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"5\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(12) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(12)\"\n [disabled]=\"!isAllowed(12)\"\n (click)=\"setInterval(12)\"\n >\n {{ getClockButtonContent(12) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(12, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(12, minutes)\"\n [disabled]=\"!isAllowed(12, minutes)\"\n (click)=\"setInterval(12, minutes)\"\n >\n {{ getClockButtonContent(12, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"3\">&nbsp;</ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"2\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(11, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(11, minutes)\"\n [disabled]=\"!isAllowed(11, minutes)\"\n (click)=\"setInterval(11, minutes)\"\n >\n {{ getClockButtonContent(11, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(11) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(11)\"\n [disabled]=\"!isAllowed(11)\"\n (click)=\"setInterval(11)\"\n >\n {{ getClockButtonContent(11) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(1) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(1)\"\n [disabled]=\"!isAllowed(1)\"\n (click)=\"setInterval(1)\"\n >\n {{ getClockButtonContent(1) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(1, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(1, minutes)\"\n [disabled]=\"!isAllowed(1, minutes)\"\n (click)=\"setInterval(1, minutes)\"\n >\n {{ getClockButtonContent(1, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\">&nbsp;</ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"1\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(10, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(10, minutes)\"\n [disabled]=\"!isAllowed(10, minutes)\"\n (click)=\"setInterval(10, minutes)\"\n >\n {{ getClockButtonContent(10, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(10) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(10)\"\n [disabled]=\"!isAllowed(10)\"\n (click)=\"setInterval(10)\"\n >\n {{ getClockButtonContent(10) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(2) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(2)\"\n [disabled]=\"!isAllowed(2)\"\n (click)=\"setInterval(2)\"\n >\n {{ getClockButtonContent(2) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(2, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(2, minutes)\"\n [disabled]=\"!isAllowed(2, minutes)\"\n (click)=\"setInterval(2, minutes)\"\n >\n {{ getClockButtonContent(2, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"1\">&nbsp;</ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(9, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(9, minutes)\"\n [disabled]=\"!isAllowed(9, minutes)\"\n (click)=\"setInterval(9, minutes)\"\n >\n {{ getClockButtonContent(9, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(9) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(9)\"\n [disabled]=\"!isAllowed(9)\"\n (click)=\"setInterval(9)\"\n >\n {{ getClockButtonContent(9) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center displayText\" [size]=\"4\">\n <ion-text [class.fromSelected]=\"segment === Segments.TO\">\n {{ 'IDEA_UNCOMMON.FTTT.FROM' | translate }}\n @if (segment === Segments.TO) {\n <span>{{ msToTimeString(_timeInterval.from) }}</span>\n }\n </ion-text>\n @if (segment === Segments.TO) {\n <ion-text>{{ 'IDEA_UNCOMMON.FTTT.TO' | translate }}</ion-text>\n }\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(3) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(3)\"\n [disabled]=\"!isAllowed(3)\"\n (click)=\"setInterval(3)\"\n >\n {{ getClockButtonContent(3) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(3, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(3, minutes)\"\n [disabled]=\"!isAllowed(3, minutes)\"\n (click)=\"setInterval(3, minutes)\"\n >\n {{ getClockButtonContent(3, minutes) }}\n </ion-button>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"1\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(8, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(8, minutes)\"\n [disabled]=\"!isAllowed(8, minutes)\"\n (click)=\"setInterval(8, minutes)\"\n >\n {{ getClockButtonContent(8, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(8) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(8)\"\n [disabled]=\"!isAllowed(8)\"\n (click)=\"setInterval(8)\"\n >\n {{ getClockButtonContent(8) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(4) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(4)\"\n [disabled]=\"!isAllowed(4)\"\n (click)=\"setInterval(4)\"\n >\n {{ getClockButtonContent(4) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(4, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(4, minutes)\"\n [disabled]=\"!isAllowed(4, minutes)\"\n (click)=\"setInterval(4, minutes)\"\n >\n {{ getClockButtonContent(4, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"1\">&nbsp;</ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"2\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(7, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(7, minutes)\"\n [disabled]=\"!isAllowed(7, minutes)\"\n (click)=\"setInterval(7, minutes)\"\n >\n {{ getClockButtonContent(7, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-left\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(7) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(7)\"\n [disabled]=\"!isAllowed(7)\"\n (click)=\"setInterval(7)\"\n >\n {{ getClockButtonContent(7) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(5) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(5)\"\n [disabled]=\"!isAllowed(5)\"\n (click)=\"setInterval(5)\"\n >\n {{ getClockButtonContent(5) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(5, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(5, minutes)\"\n [disabled]=\"!isAllowed(5, minutes)\"\n (click)=\"setInterval(5, minutes)\"\n >\n {{ getClockButtonContent(5, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"2\">&nbsp;</ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col [size]=\"3\">&nbsp;</ion-col>\n <ion-col class=\"ion-text-right\" [size]=\"2\">\n <ion-button\n size=\"small\"\n [color]=\"equalsFrom(6, minutes) ? 'primary' : 'light'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(6, minutes)\"\n [disabled]=\"!isAllowed(6, minutes)\"\n (click)=\"setInterval(6, minutes)\"\n >\n {{ getClockButtonContent(6, minutes) }}\n </ion-button>\n </ion-col>\n <ion-col class=\"ion-text-center\" [size]=\"2\">\n <ion-button\n size=\"large\"\n shape=\"round\"\n [color]=\"equalsFrom(6) ? 'primary' : 'dark'\"\n [class.oppositeMeridian]=\"isHourOfOppositeMeridian(6)\"\n [disabled]=\"!isAllowed(6)\"\n (click)=\"setInterval(6)\"\n >\n {{ getClockButtonContent(6) }}\n </ion-button>\n </ion-col>\n <ion-col [size]=\"5\">&nbsp;</ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right\" [size]=\"3\" [sizeSm]=\"7\">\n <ion-text class=\"prefLabel\">{{ 'IDEA_UNCOMMON.FTTT.PERIOD' | translate }}:</ion-text>\n </ion-col>\n <ion-col [size]=\"9\" [sizeSm]=\"5\">\n <ion-segment [value]=\"period\" (ionChange)=\"period = $event?.detail?.value || period\">\n <ion-segment-button [value]=\"Periods.AM\">\n <ion-label>{{ 'IDEA_UNCOMMON.FTTT.AM' | translate }}</ion-label>\n </ion-segment-button>\n <ion-segment-button [value]=\"Periods.PM\">\n <ion-label>{{ 'IDEA_UNCOMMON.FTTT.PM' | translate }}</ion-label>\n </ion-segment-button>\n </ion-segment>\n </ion-col>\n </ion-row>\n <ion-row class=\"ion-align-items-center\">\n <ion-col class=\"ion-text-right\" [size]=\"3\" [sizeSm]=\"7\">\n <ion-text class=\"prefLabel\">{{ 'IDEA_UNCOMMON.FTTT.MINUTES_PREFERENCE' | translate }}:</ion-text>\n </ion-col>\n <ion-col [size]=\"9\" [sizeSm]=\"5\">\n <ion-segment [value]=\"minutes\" (ionChange)=\"minutes = $event?.detail?.value || minutes\">\n <ion-segment-button value=\"15\">\n <ion-label>15</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"30\">\n <ion-label>30</ion-label>\n </ion-segment-button>\n <ion-segment-button value=\"45\">\n <ion-label>45</ion-label>\n </ion-segment-button>\n </ion-segment>\n </ion-col>\n </ion-row>\n </ion-grid>\n</ion-content>\n", styles: ["ion-grid.clockGrid ion-button[size=large]{width:50px;height:50px;font-size:1.1em;font-weight:700}ion-grid.clockGrid ion-button[size=small]{font-size:.75em}ion-grid.clockGrid ion-button.oppositeMeridian{--border-color: var(--ion-color-medium);--border-style: dashed;--border-width: 1px}ion-grid.clockGrid .displayText ion-text{font-size:1.3em;font-weight:700}ion-grid.clockGrid .displayText ion-text.fromSelected{display:block;padding-bottom:3px;font-size:.9em}ion-grid.clockGrid ion-segment ion-segment-button{min-width:50px;--color-checked: var(--ion-color-dark);--border-color: var(--ion-color-dark)}ion-grid.clockGrid .prefLabel{font-size:.6em;font-weight:700;text-transform:uppercase}\n"] }]
128
128
  }], propDecorators: { timeInterval: [{
@@ -152,4 +152,4 @@ export var Periods;
152
152
  Periods["AM"] = "AM";
153
153
  Periods["PM"] = "PM";
154
154
  })(Periods || (Periods = {}));
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbVRpbWVUb1RpbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy91bmNvbW1vbi9zcmMvdGltZUludGVydmFsL2Zyb21UaW1lVG9UaW1lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvdW5jb21tb24vc3JjL3RpbWVJbnRlcnZhbC9mcm9tVGltZVRvVGltZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFPN0QsTUFBTSxPQUFPLDJCQUEyQjtJQUx4QztRQU1VLFdBQU0sR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakMsZUFBVSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBTXJEOztXQUVHO1FBQ00sV0FBTSxHQUFZLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFldEMsYUFBUSxHQUFHLFFBQVEsQ0FBQztRQUNwQixZQUFPLEdBQUcsT0FBTyxDQUFDO0tBK0duQjtJQTNHQyxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYSxFQUFFLE9BQWdCO1FBQ3pDLCtFQUErRTtRQUMvRSxLQUFLLEdBQUcs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O0lBQ3hCLENBQUM7OEdBeklVLDJCQUEyQjtrR0FBM0IsMkJBQTJCLDBNQ1Z4QywyOGJBK1dBOzsyRkRyV2EsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLHdCQUF3Qjs4QkFXekIsWUFBWTtzQkFBcEIsS0FBSztnQkFJRyxNQUFNO3NCQUFkLEtBQUs7Z0JBSUcsY0FBYztzQkFBdEIsS0FBSztnQkFJRyxZQUFZO3NCQUFwQixLQUFLO2dCQUlHLEtBQUs7c0JBQWIsS0FBSzs7QUFxSFI7O0dBRUc7QUFDSCxJQUFLLFFBR0o7QUFIRCxXQUFLLFFBQVE7SUFDWCx5QkFBYSxDQUFBO0lBQ2IscUJBQVMsQ0FBQTtBQUNYLENBQUMsRUFISSxRQUFRLEtBQVIsUUFBUSxRQUdaO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxPQUdYO0FBSEQsV0FBWSxPQUFPO0lBQ2pCLG9CQUFTLENBQUE7SUFDVCxvQkFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUhXLE9BQU8sS0FBUCxPQUFPLFFBR2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyJztcbmltcG9ydCB7IFRpbWVJbnRlcnZhbCB9IGZyb20gJ2lkZWEtdG9vbGJveCc7XG5pbXBvcnQgeyBJREVBVHJhbnNsYXRpb25zU2VydmljZSB9IGZyb20gJ0BpZGVhLWlvbmljL2NvbW1vbic7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2lkZWEtZnJvbS10aW1lLXRvLXRpbWUnLFxuICB0ZW1wbGF0ZVVybDogJ2Zyb21UaW1lVG9UaW1lLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJ2Zyb21UaW1lVG9UaW1lLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgSURFQUZyb21UaW1lVG9UaW1lQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcbiAgcHJpdmF0ZSBfbW9kYWwgPSBpbmplY3QoTW9kYWxDb250cm9sbGVyKTtcbiAgcHJpdmF0ZSBfdHJhbnNsYXRlID0gaW5qZWN0KElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlKTtcblxuICAvKipcbiAgICogVGhlIHRpbWUgaW50ZXJ2YWwgdG8gc2V0LlxuICAgKi9cbiAgQElucHV0KCkgdGltZUludGVydmFsOiBUaW1lSW50ZXJ2YWw7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHdlIHNob3VsZCBzdGFydCBwaWNraW5nIHRoZSB0aW1lIGRpc3BsYXlpbmcgdGhlIGFmdGVybm9vbiAoUE0pIG9yIHRoZSBtb3JuaW5nIChBTSwgZGVmYXVsdCkuXG4gICAqL1xuICBASW5wdXQoKSBwZXJpb2Q6IFBlcmlvZHMgPSBQZXJpb2RzLkFNO1xuICAvKipcbiAgICogQSB0aW1lIHRvIHVzZSBhcyBsb3dlciBsaW1pdCBmb3IgdGhlIHBvc3NpYmxlIGNob2ljZXMuXG4gICAqL1xuICBASW5wdXQoKSBub3RFYXJsaWVyVGhhbjogbnVtYmVyO1xuICAvKipcbiAgICogQSB0aW1lIHRvIHVzZSBhcyB1cHBlciBsaW1pdCBmb3IgdGhlIHBvc3NpYmxlIGNob2ljZXMuXG4gICAqL1xuICBASW5wdXQoKSBub3RMYXRlclRoYW46IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSB0aXRsZSBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgQElucHV0KCkgdGl0bGU6IHN0cmluZztcblxuICBzZWdtZW50OiBTZWdtZW50cztcbiAgU2VnbWVudHMgPSBTZWdtZW50cztcbiAgUGVyaW9kcyA9IFBlcmlvZHM7XG4gIHRpbWVJbnRlcnZhbFdDOiBUaW1lSW50ZXJ2YWw7XG4gIG1pbnV0ZXM6IG51bWJlcjtcblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlZ21lbnQgPSBTZWdtZW50cy5GUk9NO1xuICAgIHRoaXMubWludXRlcyA9IDMwO1xuICAgIHRoaXMudGltZUludGVydmFsV0MgPSBuZXcgVGltZUludGVydmFsKHRoaXMudGltZUludGVydmFsKTtcbiAgfVxuXG4gIHNldEludGVydmFsKGhvdXJzOiBudW1iZXIsIG1pbnV0ZXM/OiBudW1iZXIpOiB2b2lkIHtcbiAgICAvLyBhZGp1c3QgdGhlIGhvdXIgYmFzZWQgb24gdGhlIHN0YXJ0IG9mIHRoZSBpbnRlcnZhbCBhbmQgdGhlIHNldHRpbmdzIG9mIGFtL3BtXG4gICAgaG91cnMgPSB0aGlzLmNvbnRleHR1YWxpemVIb3VyKGhvdXJzLCBtaW51dGVzKTtcbiAgICAvLyBjb252ZXJ0IHRoZSBob3VycyBhbmQgbWludXRlcyBpbiBtaWxsaXNlY29uZHNcbiAgICBjb25zdCB0aW1lTXMgPSB0aGlzLnRpbWVUb01zKGhvdXJzLCBtaW51dGVzKTtcbiAgICAvLyBzZXQgdGhlIGNvcnJlY3QgcGFydCBvZiB0aGUgaW50ZXJ2YWwsIGJhc2VkIG9uIHRoZSBjdXJyZW50IHNlZ21lbnRcbiAgICBpZiAodGhpcy5zZWdtZW50ID09PSBTZWdtZW50cy5GUk9NKSB7XG4gICAgICAvLyBzZXQgdGhlIHN0YXJ0IG9mIHRoZSBpbnRlcnZhbCAoZnJvbSkgYW5kIGNoYW5nZSB0aGUgc2VnbWVudCBzbyB0aGF0IHRoZSBlbmQgKHRvKSB3aWxsIGJlIHBpY2tlZFxuICAgICAgdGhpcy50aW1lSW50ZXJ2YWxXQy5mcm9tID0gdGltZU1zO1xuICAgICAgdGhpcy5zZWdtZW50ID0gU2VnbWVudHMuVE87XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGNhbid0IHByb2NlZWQgaWYgZnJvbSBhbmQgdG8gYXJlIGVxdWFsXG4gICAgICBpZiAodGltZU1zID09PSB0aGlzLnRpbWVJbnRlcnZhbFdDLmZyb20pIHJldHVybjtcbiAgICAgIC8vIHNldCB0aGUgZW5kIG9mIHRoZSBpbnRlcnZhbCAodG8pXG4gICAgICB0aGlzLnRpbWVJbnRlcnZhbFdDLnRvID0gdGltZU1zO1xuICAgICAgLy8gc2F2ZSB0aGUgY2hhbmdlcyBhbmQgbm90aWZ5IHRoZSBwYXJlbnQgY29tcG9uZW50XG4gICAgICB0aGlzLnNhdmUoKTtcbiAgICB9XG4gIH1cbiAgcHJpdmF0ZSB0aW1lVG9Ncyhob3VyczogbnVtYmVyLCBtaW51dGVzPzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKGhvdXJzICogNjAgKiA2MCArIChtaW51dGVzIHx8IDApICogNjApICogMTAwMDtcbiAgfVxuXG4gIGdldENsb2NrQnV0dG9uQ29udGVudChob3VyczogbnVtYmVyLCBtaW51dGVzPzogbnVtYmVyKTogc3RyaW5nIHtcbiAgICAvLyBhZGp1c3QgdGhlIGhvdXIgYmFzZWQgb24gdGhlIHN0YXJ0IG9mIHRoZSBpbnRlcnZhbCBhbmQgdGhlIHNldHRpbmdzIG9mIGFtL3BtXG4gICAgaG91cnMgPSB0aGlzLmNvbnRleHR1YWxpemVIb3VyKGhvdXJzLCBtaW51dGVzKTtcbiAgICAvLyBjb252ZXJ0IHRoZSBjYWxjdWxhdGVkIHRpbWUgaW50byBhIHJlYWRhYmxlIHN0cmluZzsgd2UgbmVlZCB0byBmb3JtYXQgaXQgdG8gZGlzdGluZ3Vpc2ggMC0yNCB2cyAwLTEyIGFtL3BtXG4gICAgY29uc3QgcmVmRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgcmVmRGF0ZS5zZXRIb3Vycyhob3VycywgbWludXRlcyB8fCAwLCAwKTtcbiAgICBjb25zdCBzdHIgPSB0aGlzLl90cmFuc2xhdGUuZm9ybWF0RGF0ZShyZWZEYXRlLCAnc2hvcnRUaW1lJyk7XG4gICAgLy8gcmVtb3ZlIHRoZSBleHRyYSBwYXJ0IChlLmcuIGFtL3BtKSwgYmFzZWQgb24gdGhlIHR5cGUgb2YgYnV0dG9uIHdlIGhhdmUgdG8gc2hvd1xuICAgIGNvbnN0IHN0ckFyciA9IHN0ci5zcGxpdCgnOicpO1xuICAgIHJldHVybiBTdHJpbmcoTnVtYmVyKHN0ckFyclswXSkpLmNvbmNhdChtaW51dGVzID8gJzonLmNvbmNhdChzdHJBcnJbMV0uc2xpY2UoMCwgMikpIDogJycpO1xuICB9XG4gIHByaXZhdGUgY29udGV4dHVhbGl6ZUhvdXIoaG91cnM6IG51bWJlciwgbWludXRlcz86IG51bWJlcik6IG51bWJlciB7XG4gICAgLy8gYWRqdXN0IHRoZSBjb250ZW50IHRvIHRoZSBhZnRlcm5vb24gaG91cnMsIGlmIG5lZWRlZFxuICAgIGlmICh0aGlzLnBlcmlvZCA9PT0gUGVyaW9kcy5QTSkgaG91cnMgKz0gMTI7XG4gICAgLy8gaWYgd2UgYWxyZWFkeSBzZWxlY3RlZCB0aGUgc3RhcnQgb2YgdGhlIGludGVydmFsLCBjaGVjayB3aGV0aGVyIHdlIG5lZWQgdG8gYWRqdXN0IHRoZSB0aW1lOiB0aGUgY2VudGVyIG9mIHRoZVxuICAgIC8vIGNsb2NrIHdpbGwgYmUgbW92ZWQgdG8gdGhlIHNlbGVjdGVkIGhvdXIgKGZyb20pLCB0byBoYXZlIGEgcmVhc29uYWJsZSBzZXQgb2YgY2hvaWNlcyBmb3IgdGhlIGVuZCAodG8pXG4gICAgaWYgKHRoaXMuc2VnbWVudCA9PT0gU2VnbWVudHMuVE8gJiYgdGhpcy50aW1lVG9Ncyhob3VycywgbWludXRlcykgPCB0aGlzLnRpbWVJbnRlcnZhbFdDLmZyb20pXG4gICAgICBob3VycyArPSB0aGlzLnBlcmlvZCA9PT0gUGVyaW9kcy5QTSA/IC0xMiA6IDEyO1xuICAgIC8vIHNldCBtaWRuaWdodCB0byAwMFxuICAgIGlmIChob3VycyA9PT0gMjQpIGhvdXJzID0gMDtcbiAgICByZXR1cm4gaG91cnM7XG4gIH1cblxuICBlcXVhbHNGcm9tKGhvdXJzOiBudW1iZXIsIG1pbnV0ZXM/OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAvLyBpZiB0aGUgc3RhcnQgb2YgdGhlIGludGVydmFsIGhhc24ndCBiZWVuIHNlbGVjdGVkIHlldCwgc2tpcCBpdFxuICAgIGlmICh0aGlzLnNlZ21lbnQgPT09IFNlZ21lbnRzLkZST00pIHJldHVybiBmYWxzZTtcbiAgICAvLyBhZGp1c3QgdGhlIGhvdXIgYmFzZWQgb24gdGhlIHN0YXJ0IG9mIHRoZSBpbnRlcnZhbCBhbmQgdGhlIHNldHRpbmdzIG9mIGFtL3BtXG4gICAgaG91cnMgPSB0aGlzLmNvbnRleHR1YWxpemVIb3VyKGhvdXJzLCBtaW51dGVzKTtcbiAgICAvLyBjb21wYXJlIHRoZSB0d28gc3RyaW5ncyBiYXNlZCBvbiB0aGUgdGltZXN0YW1wcyBpbiBtc1xuICAgIHJldHVybiB0aGlzLm1zVG9UaW1lU3RyaW5nKHRoaXMudGltZUludGVydmFsV0MuZnJvbSkgPT09IHRoaXMubXNUb1RpbWVTdHJpbmcodGhpcy50aW1lVG9Ncyhob3VycywgbWludXRlcykpO1xuICB9XG5cbiAgaXNBbGxvd2VkKGhvdXJzOiBudW1iZXIsIG1pbnV0ZXM/OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAvLyBhZGp1c3QgdGhlIGhvdXIgYmFzZWQgb24gdGhlIHN0YXJ0IG9mIHRoZSBpbnRlcnZhbCBhbmQgdGhlIHNldHRpbmdzIG9mIGFtL3BtXG4gICAgaG91cnMgPSB0aGlzLmNvbnRleHR1YWxpemVIb3VyKGhvdXJzLCBtaW51dGVzKTtcbiAgICAvLyBjaGVjayB3aGV0aGVyIHRoZSBzZWxlY3RlZCB0aW1lIGlzIGluc2lkZSB0aGUgZ2l2ZW4gYm91bmRhcmllc1xuICAgIHJldHVybiAoXG4gICAgICAoIXRoaXMubm90RWFybGllclRoYW4gfHxcbiAgICAgICAgdGhpcy50aW1lVG9Ncyhob3VycywgbWludXRlcykgPj0gdGhpcy5ub3RFYXJsaWVyVGhhbiB8fFxuICAgICAgICB0aGlzLnRpbWVUb01zKGhvdXJzLCBtaW51dGVzKSA9PT0gMCkgJiZcbiAgICAgICghdGhpcy5ub3RMYXRlclRoYW4gfHwgdGhpcy50aW1lVG9Ncyhob3VycywgbWludXRlcykgPD0gdGhpcy5ub3RMYXRlclRoYW4pXG4gICAgKTtcbiAgfVxuXG4gIGlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbihob3VyczogbnVtYmVyLCBtaW51dGVzPzogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgLy8gaWYgdGhlIHN0YXJ0IG9mIHRoZSBpbnRlcnZhbCBoYXNuJ3QgYmVlbiBzZWxlY3RlZCB5ZXQsIHNraXAgaXRcbiAgICBpZiAodGhpcy5zZWdtZW50ID09PSBTZWdtZW50cy5GUk9NKSByZXR1cm4gZmFsc2U7XG4gICAgLy8gYWRqdXN0IHRoZSBob3VyIGJhc2VkIG9uIHRoZSBzdGFydCBvZiB0aGUgaW50ZXJ2YWwgYW5kIHRoZSBzZXR0aW5ncyBvZiBhbS9wbVxuICAgIGhvdXJzID0gdGhpcy5jb250ZXh0dWFsaXplSG91cihob3VycywgbWludXRlcyk7XG4gICAgLy8gY2FsY3VsYXRlIHRoZSBtcyBvZiB0aGUgc2VsZWN0ZWQgdGltZSBhbmQgb2YgXCJub29uXCIgdGltZSAodG8gZGV0ZXJtIHRoZSBtZXJpZGlhbilcbiAgICBjb25zdCB0aW1lTXMgPSB0aGlzLnRpbWVUb01zKGhvdXJzLCBtaW51dGVzKTtcbiAgICBjb25zdCBub29uTXMgPSB0aGlzLnRpbWVUb01zKDEyKTtcbiAgICAvLyByZXR1cm4gdHJ1ZSBpbiBjYXNlIHRoZSBob3VyIGRvZXNuJ3QgYmVsb25nIHRvIHRoZSBjdXJyZW50IG1lcmlkaWFuXG4gICAgcmV0dXJuICh0aGlzLnBlcmlvZCA9PT0gUGVyaW9kcy5BTSAmJiB0aW1lTXMgPiBub29uTXMpIHx8ICh0aGlzLnBlcmlvZCA9PT0gUGVyaW9kcy5QTSAmJiB0aW1lTXMgPCBub29uTXMpO1xuICB9XG5cbiAgbXNUb1RpbWVTdHJpbmcodGltZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICBpZiAoIXRpbWUpIHJldHVybiAnJztcbiAgICAvLyBub3RlOiB0aGUgdGltZSBtdXN0IGJlIGFsd2F5cyBjb25zaWRlcmVkIHdpdGhvdXQgYW55IHRpbWV6b25lIChVVEMpXG4gICAgY29uc3QgcmVmRGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgcmVmRGF0ZS5zZXRUaW1lKHRpbWUpO1xuICAgIGNvbnN0IGRhdGVPcHRzID0geyB0aW1lWm9uZTogJ1VUQycsIGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcgfSBhcyBjb25zdDtcbiAgICByZXR1cm4gcmVmRGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcodGhpcy5fdHJhbnNsYXRlLmdldEN1cnJlbnRMYW5nKCksIGRhdGVPcHRzKTtcbiAgfVxuXG4gIHNhdmUoKTogdm9pZCB7XG4gICAgdGhpcy50aW1lSW50ZXJ2YWwubG9hZCh0aGlzLnRpbWVJbnRlcnZhbFdDKTtcbiAgICB0aGlzLl9tb2RhbC5kaXNtaXNzKHRydWUpO1xuICB9XG5cbiAgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy50aW1lSW50ZXJ2YWwucmVzZXQoKTtcbiAgICB0aGlzLl9tb2RhbC5kaXNtaXNzKGZhbHNlKTtcbiAgfVxuXG4gIGNsb3NlKCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsLmRpc21pc3MoKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoZSB0d28gc3RhZ2VzIG9mIHRoZSBjb21wb25lbnQsIHRvIHBpY2sgdGhlIHN0YXJ0IGFuZCB0aGUgZW5kIG9mIHRoZSBpbnRlcnZhbC5cbiAqL1xuZW51bSBTZWdtZW50cyB7XG4gIEZST00gPSAnRlJPTScsXG4gIFRPID0gJ1RPJ1xufVxuXG4vKipcbiAqIFRoZSB0d28gcG9zc2libGUgcGVyaW9kcyBvZiB0aGUgY29tcG9uZW50LCB0byBpbnRlcnByZXQgdGhlIGNsb2NrIHRoZSByaWdodCB3YXkuXG4gKi9cbmV4cG9ydCBlbnVtIFBlcmlvZHMge1xuICBBTSA9ICdBTScsXG4gIFBNID0gJ1BNJ1xufVxuIiwiPGlvbi1oZWFkZXI+XG4gIDxpb24tdG9vbGJhciBjb2xvcj1cImlkZWFUb29sYmFyXCI+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJzdGFydFwiPlxuICAgICAgPGlvbi1idXR0b24gW3RpdGxlXT1cIidDT01NT04uQ0xPU0UnIHwgdHJhbnNsYXRlXCIgKGNsaWNrKT1cImNsb3NlKClcIj5cbiAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG9zZVwiIHNsb3Q9XCJpY29uLW9ubHlcIiAvPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gICAgPGlvbi10aXRsZT57eyB0aXRsZSB9fTwvaW9uLXRpdGxlPlxuICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICA8aW9uLWJ1dHRvbiBbdGl0bGVdPVwiJ0NPTU1PTi5SRVNFVCcgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwicmVzZXQoKVwiPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImFycm93LXVuZG9cIiBzbG90PVwiaWNvbi1vbmx5XCIgLz5cbiAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICA8L2lvbi1idXR0b25zPlxuICA8L2lvbi10b29sYmFyPlxuPC9pb24taGVhZGVyPlxuPGlvbi1jb250ZW50PlxuICA8aW9uLWdyaWQgY2xhc3M9XCJjbG9ja0dyaWRcIj5cbiAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxpb24tY29sIFtzaXplXT1cIjVcIj4mbmJzcDs8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDEyKSA/ICdwcmltYXJ5JyA6ICdkYXJrJ1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDEyKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoMTIpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoMTIpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCgxMikgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1sZWZ0XCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oMTIsIG1pbnV0ZXMpID8gJ3ByaW1hcnknIDogJ2xpZ2h0J1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDEyLCBtaW51dGVzKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoMTIsIG1pbnV0ZXMpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoMTIsIG1pbnV0ZXMpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCgxMiwgbWludXRlcykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgW3NpemVdPVwiM1wiPiZuYnNwOzwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCIyXCI+Jm5ic3A7PC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSgxMSwgbWludXRlcykgPyAncHJpbWFyeScgOiAnbGlnaHQnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oMTEsIG1pbnV0ZXMpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCgxMSwgbWludXRlcylcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCgxMSwgbWludXRlcylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDExLCBtaW51dGVzKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWxlZnRcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBzaGFwZT1cInJvdW5kXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSgxMSkgPyAncHJpbWFyeScgOiAnZGFyaydcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbigxMSlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDExKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDExKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoMTEpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBzaGFwZT1cInJvdW5kXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSgxKSA/ICdwcmltYXJ5JyA6ICdkYXJrJ1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDEpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCgxKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDEpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCgxKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDEsIG1pbnV0ZXMpID8gJ3ByaW1hcnknIDogJ2xpZ2h0J1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDEsIG1pbnV0ZXMpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCgxLCBtaW51dGVzKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDEsIG1pbnV0ZXMpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCgxLCBtaW51dGVzKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCIyXCI+Jm5ic3A7PC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cbiAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxpb24tY29sIFtzaXplXT1cIjFcIj4mbmJzcDs8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDEwLCBtaW51dGVzKSA/ICdwcmltYXJ5JyA6ICdsaWdodCdcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbigxMCwgbWludXRlcylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDEwLCBtaW51dGVzKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDEwLCBtaW51dGVzKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoMTAsIG1pbnV0ZXMpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdFwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDEwKSA/ICdwcmltYXJ5JyA6ICdkYXJrJ1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDEwKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoMTApXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoMTApXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCgxMCkgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgW3NpemVdPVwiMlwiPiZuYnNwOzwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBzaGFwZT1cInJvdW5kXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSgyKSA/ICdwcmltYXJ5JyA6ICdkYXJrJ1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDIpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCgyKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDIpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCgyKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDIsIG1pbnV0ZXMpID8gJ3ByaW1hcnknIDogJ2xpZ2h0J1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDIsIG1pbnV0ZXMpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCgyLCBtaW51dGVzKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDIsIG1pbnV0ZXMpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCgyLCBtaW51dGVzKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCIxXCI+Jm5ic3A7PC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cbiAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oOSwgbWludXRlcykgPyAncHJpbWFyeScgOiAnbGlnaHQnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oOSwgbWludXRlcylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDksIG1pbnV0ZXMpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoOSwgbWludXRlcylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDksIG1pbnV0ZXMpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdFwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDkpID8gJ3ByaW1hcnknIDogJ2RhcmsnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oOSlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDkpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoOSlcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDkpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyIGRpc3BsYXlUZXh0XCIgW3NpemVdPVwiNFwiPlxuICAgICAgICA8aW9uLXRleHQgW2NsYXNzLmZyb21TZWxlY3RlZF09XCJzZWdtZW50ID09PSBTZWdtZW50cy5UT1wiPlxuICAgICAgICAgIHt7ICdJREVBX1VOQ09NTU9OLkZUVFQuRlJPTScgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICBAaWYgKHNlZ21lbnQgPT09IFNlZ21lbnRzLlRPKSB7XG4gICAgICAgICAgICA8c3Bhbj57eyBtc1RvVGltZVN0cmluZyhfdGltZUludGVydmFsLmZyb20pIH19PC9zcGFuPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9pb24tdGV4dD5cbiAgICAgICAgQGlmIChzZWdtZW50ID09PSBTZWdtZW50cy5UTykge1xuICAgICAgICAgIDxpb24tdGV4dD57eyAnSURFQV9VTkNPTU1PTi5GVFRULlRPJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLXRleHQ+XG4gICAgICAgIH1cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBzaGFwZT1cInJvdW5kXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSgzKSA/ICdwcmltYXJ5JyA6ICdkYXJrJ1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDMpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCgzKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDMpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCgzKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDMsIG1pbnV0ZXMpID8gJ3ByaW1hcnknIDogJ2xpZ2h0J1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDMsIG1pbnV0ZXMpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCgzLCBtaW51dGVzKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDMsIG1pbnV0ZXMpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCgzLCBtaW51dGVzKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGlvbi1jb2wgW3NpemVdPVwiMVwiPiZuYnNwOzwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oOCwgbWludXRlcykgPyAncHJpbWFyeScgOiAnbGlnaHQnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oOCwgbWludXRlcylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDgsIG1pbnV0ZXMpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoOCwgbWludXRlcylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDgsIG1pbnV0ZXMpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdFwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDgpID8gJ3ByaW1hcnknIDogJ2RhcmsnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oOClcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDgpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoOClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDgpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIFtzaXplXT1cIjJcIj4mbmJzcDs8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0XCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgc2hhcGU9XCJyb3VuZFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oNCkgPyAncHJpbWFyeScgOiAnZGFyaydcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbig0KVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoNClcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCg0KVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoNCkgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSg0LCBtaW51dGVzKSA/ICdwcmltYXJ5JyA6ICdsaWdodCdcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbig0LCBtaW51dGVzKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoNCwgbWludXRlcylcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCg0LCBtaW51dGVzKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoNCwgbWludXRlcykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgW3NpemVdPVwiMVwiPiZuYnNwOzwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCIyXCI+Jm5ic3A7PC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSg3LCBtaW51dGVzKSA/ICdwcmltYXJ5JyA6ICdsaWdodCdcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbig3LCBtaW51dGVzKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoNywgbWludXRlcylcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCg3LCBtaW51dGVzKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoNywgbWludXRlcykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1sZWZ0XCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgc2hhcGU9XCJyb3VuZFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oNykgPyAncHJpbWFyeScgOiAnZGFyaydcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbig3KVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoNylcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCg3KVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoNykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDUpID8gJ3ByaW1hcnknIDogJ2RhcmsnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oNSlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDUpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoNSlcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDUpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oNSwgbWludXRlcykgPyAncHJpbWFyeScgOiAnbGlnaHQnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oNSwgbWludXRlcylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDUsIG1pbnV0ZXMpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoNSwgbWludXRlcylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDUsIG1pbnV0ZXMpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIFtzaXplXT1cIjJcIj4mbmJzcDs8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGlvbi1jb2wgW3NpemVdPVwiM1wiPiZuYnNwOzwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSg2LCBtaW51dGVzKSA/ICdwcmltYXJ5JyA6ICdsaWdodCdcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbig2LCBtaW51dGVzKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoNiwgbWludXRlcylcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCg2LCBtaW51dGVzKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoNiwgbWludXRlcykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBzaGFwZT1cInJvdW5kXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSg2KSA/ICdwcmltYXJ5JyA6ICdkYXJrJ1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDYpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCg2KVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDYpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCg2KSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCI1XCI+Jm5ic3A7PC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cbiAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIiBbc2l6ZV09XCIzXCIgW3NpemVTbV09XCI3XCI+XG4gICAgICAgIDxpb24tdGV4dCBjbGFzcz1cInByZWZMYWJlbFwiPnt7ICdJREVBX1VOQ09NTU9OLkZUVFQuUEVSSU9EJyB8IHRyYW5zbGF0ZSB9fTo8L2lvbi10ZXh0PlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgW3NpemVdPVwiOVwiIFtzaXplU21dPVwiNVwiPlxuICAgICAgICA8aW9uLXNlZ21lbnQgW3ZhbHVlXT1cInBlcmlvZFwiIChpb25DaGFuZ2UpPVwicGVyaW9kID0gJGV2ZW50Py5kZXRhaWw/LnZhbHVlIHx8IHBlcmlvZFwiPlxuICAgICAgICAgIDxpb24tc2VnbWVudC1idXR0b24gW3ZhbHVlXT1cIlBlcmlvZHMuQU1cIj5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgJ0lERUFfVU5DT01NT04uRlRUVC5BTScgfCB0cmFuc2xhdGUgfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICA8L2lvbi1zZWdtZW50LWJ1dHRvbj5cbiAgICAgICAgICA8aW9uLXNlZ21lbnQtYnV0dG9uIFt2YWx1ZV09XCJQZXJpb2RzLlBNXCI+XG4gICAgICAgICAgICA8aW9uLWxhYmVsPnt7ICdJREVBX1VOQ09NTU9OLkZUVFQuUE0nIHwgdHJhbnNsYXRlIH19PC9pb24tbGFiZWw+XG4gICAgICAgICAgPC9pb24tc2VnbWVudC1idXR0b24+XG4gICAgICAgIDwvaW9uLXNlZ21lbnQ+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiIFtzaXplXT1cIjNcIiBbc2l6ZVNtXT1cIjdcIj5cbiAgICAgICAgPGlvbi10ZXh0IGNsYXNzPVwicHJlZkxhYmVsXCI+e3sgJ0lERUFfVU5DT01NT04uRlRUVC5NSU5VVEVTX1BSRUZFUkVOQ0UnIHwgdHJhbnNsYXRlIH19OjwvaW9uLXRleHQ+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCI5XCIgW3NpemVTbV09XCI1XCI+XG4gICAgICAgIDxpb24tc2VnbWVudCBbdmFsdWVdPVwibWludXRlc1wiIChpb25DaGFuZ2UpPVwibWludXRlcyA9ICRldmVudD8uZGV0YWlsPy52YWx1ZSB8fCBtaW51dGVzXCI+XG4gICAgICAgICAgPGlvbi1zZWdtZW50LWJ1dHRvbiB2YWx1ZT1cIjE1XCI+XG4gICAgICAgICAgICA8aW9uLWxhYmVsPjE1PC9pb24tbGFiZWw+XG4gICAgICAgICAgPC9pb24tc2VnbWVudC1idXR0b24+XG4gICAgICAgICAgPGlvbi1zZWdtZW50LWJ1dHRvbiB2YWx1ZT1cIjMwXCI+XG4gICAgICAgICAgICA8aW9uLWxhYmVsPjMwPC9pb24tbGFiZWw+XG4gICAgICAgICAgPC9pb24tc2VnbWVudC1idXR0b24+XG4gICAgICAgICAgPGlvbi1zZWdtZW50LWJ1dHRvbiB2YWx1ZT1cIjQ1XCI+XG4gICAgICAgICAgICA8aW9uLWxhYmVsPjQ1PC9pb24tbGFiZWw+XG4gICAgICAgICAgPC9pb24tc2VnbWVudC1idXR0b24+XG4gICAgICAgIDwvaW9uLXNlZ21lbnQ+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuICA8L2lvbi1ncmlkPlxuPC9pb24tY29udGVudD5cbiJdfQ==
155
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnJvbVRpbWVUb1RpbWUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbW9kdWxlcy91bmNvbW1vbi9zcmMvdGltZUludGVydmFsL2Zyb21UaW1lVG9UaW1lLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uL21vZHVsZXMvdW5jb21tb24vc3JjL3RpbWVJbnRlcnZhbC9mcm9tVGltZVRvVGltZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzVELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDNUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7Ozs7QUFPN0QsTUFBTSxPQUFPLDJCQUEyQjtJQUx4QztRQU1VLFdBQU0sR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUM7UUFDakMsZUFBVSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBTXJEOztXQUVHO1FBQ00sV0FBTSxHQUFZLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFldEMsYUFBUSxHQUFHLFFBQVEsQ0FBQztRQUNwQixZQUFPLEdBQUcsT0FBTyxDQUFDO0tBK0duQjtJQTNHQyxRQUFRO1FBQ04sSUFBSSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQzdCLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxXQUFXLENBQUMsS0FBYSxFQUFFLE9BQWdCO1FBQ3pDLCtFQUErRTtRQUMvRSxLQUFLLEdBQUcs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O0lBQ3hCLENBQUM7OEdBeklVLDJCQUEyQjtrR0FBM0IsMkJBQTJCLDBNQ1Z4QywyOGJBK1dBOzsyRkRyV2EsMkJBQTJCO2tCQUx2QyxTQUFTOytCQUNFLHdCQUF3Qjs4QkFXekIsWUFBWTtzQkFBcEIsS0FBSztnQkFJRyxNQUFNO3NCQUFkLEtBQUs7Z0JBSUcsY0FBYztzQkFBdEIsS0FBSztnQkFJRyxZQUFZO3NCQUFwQixLQUFLO2dCQUlHLEtBQUs7c0JBQWIsS0FBSzs7QUFxSFI7O0dBRUc7QUFDSCxJQUFLLFFBR0o7QUFIRCxXQUFLLFFBQVE7SUFDWCx5QkFBYSxDQUFBO0lBQ2IscUJBQVMsQ0FBQTtBQUNYLENBQUMsRUFISSxRQUFRLEtBQVIsUUFBUSxRQUdaO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxPQUdYO0FBSEQsV0FBWSxPQUFPO0lBQ2pCLG9CQUFTLENBQUE7SUFDVCxvQkFBUyxDQUFBO0FBQ1gsQ0FBQyxFQUhXLE9BQU8sS0FBUCxPQUFPLFFBR2xCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0LCBpbmplY3QgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IE1vZGFsQ29udHJvbGxlciB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgVGltZUludGVydmFsIH0gZnJvbSAnaWRlYS10b29sYm94JztcbmltcG9ydCB7IElERUFUcmFuc2xhdGlvbnNTZXJ2aWNlIH0gZnJvbSAnQGlkZWEtaW9uaWMvY29tbW9uJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnaWRlYS1mcm9tLXRpbWUtdG8tdGltZScsXG4gIHRlbXBsYXRlVXJsOiAnZnJvbVRpbWVUb1RpbWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnZnJvbVRpbWVUb1RpbWUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBJREVBRnJvbVRpbWVUb1RpbWVDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIF9tb2RhbCA9IGluamVjdChNb2RhbENvbnRyb2xsZXIpO1xuICBwcml2YXRlIF90cmFuc2xhdGUgPSBpbmplY3QoSURFQVRyYW5zbGF0aW9uc1NlcnZpY2UpO1xuXG4gIC8qKlxuICAgKiBUaGUgdGltZSBpbnRlcnZhbCB0byBzZXQuXG4gICAqL1xuICBASW5wdXQoKSB0aW1lSW50ZXJ2YWw6IFRpbWVJbnRlcnZhbDtcbiAgLyoqXG4gICAqIFdoZXRoZXIgd2Ugc2hvdWxkIHN0YXJ0IHBpY2tpbmcgdGhlIHRpbWUgZGlzcGxheWluZyB0aGUgYWZ0ZXJub29uIChQTSkgb3IgdGhlIG1vcm5pbmcgKEFNLCBkZWZhdWx0KS5cbiAgICovXG4gIEBJbnB1dCgpIHBlcmlvZDogUGVyaW9kcyA9IFBlcmlvZHMuQU07XG4gIC8qKlxuICAgKiBBIHRpbWUgdG8gdXNlIGFzIGxvd2VyIGxpbWl0IGZvciB0aGUgcG9zc2libGUgY2hvaWNlcy5cbiAgICovXG4gIEBJbnB1dCgpIG5vdEVhcmxpZXJUaGFuOiBudW1iZXI7XG4gIC8qKlxuICAgKiBBIHRpbWUgdG8gdXNlIGFzIHVwcGVyIGxpbWl0IGZvciB0aGUgcG9zc2libGUgY2hvaWNlcy5cbiAgICovXG4gIEBJbnB1dCgpIG5vdExhdGVyVGhhbjogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIHRpdGxlIG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuXG4gIHNlZ21lbnQ6IFNlZ21lbnRzO1xuICBTZWdtZW50cyA9IFNlZ21lbnRzO1xuICBQZXJpb2RzID0gUGVyaW9kcztcbiAgdGltZUludGVydmFsV0M6IFRpbWVJbnRlcnZhbDtcbiAgbWludXRlczogbnVtYmVyO1xuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VnbWVudCA9IFNlZ21lbnRzLkZST007XG4gICAgdGhpcy5taW51dGVzID0gMzA7XG4gICAgdGhpcy50aW1lSW50ZXJ2YWxXQyA9IG5ldyBUaW1lSW50ZXJ2YWwodGhpcy50aW1lSW50ZXJ2YWwpO1xuICB9XG5cbiAgc2V0SW50ZXJ2YWwoaG91cnM6IG51bWJlciwgbWludXRlcz86IG51bWJlcik6IHZvaWQge1xuICAgIC8vIGFkanVzdCB0aGUgaG91ciBiYXNlZCBvbiB0aGUgc3RhcnQgb2YgdGhlIGludGVydmFsIGFuZCB0aGUgc2V0dGluZ3Mgb2YgYW0vcG1cbiAgICBob3VycyA9IHRoaXMuY29udGV4dHVhbGl6ZUhvdXIoaG91cnMsIG1pbnV0ZXMpO1xuICAgIC8vIGNvbnZlcnQgdGhlIGhvdXJzIGFuZCBtaW51dGVzIGluIG1pbGxpc2Vjb25kc1xuICAgIGNvbnN0IHRpbWVNcyA9IHRoaXMudGltZVRvTXMoaG91cnMsIG1pbnV0ZXMpO1xuICAgIC8vIHNldCB0aGUgY29ycmVjdCBwYXJ0IG9mIHRoZSBpbnRlcnZhbCwgYmFzZWQgb24gdGhlIGN1cnJlbnQgc2VnbWVudFxuICAgIGlmICh0aGlzLnNlZ21lbnQgPT09IFNlZ21lbnRzLkZST00pIHtcbiAgICAgIC8vIHNldCB0aGUgc3RhcnQgb2YgdGhlIGludGVydmFsIChmcm9tKSBhbmQgY2hhbmdlIHRoZSBzZWdtZW50IHNvIHRoYXQgdGhlIGVuZCAodG8pIHdpbGwgYmUgcGlja2VkXG4gICAgICB0aGlzLnRpbWVJbnRlcnZhbFdDLmZyb20gPSB0aW1lTXM7XG4gICAgICB0aGlzLnNlZ21lbnQgPSBTZWdtZW50cy5UTztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gY2FuJ3QgcHJvY2VlZCBpZiBmcm9tIGFuZCB0byBhcmUgZXF1YWxcbiAgICAgIGlmICh0aW1lTXMgPT09IHRoaXMudGltZUludGVydmFsV0MuZnJvbSkgcmV0dXJuO1xuICAgICAgLy8gc2V0IHRoZSBlbmQgb2YgdGhlIGludGVydmFsICh0bylcbiAgICAgIHRoaXMudGltZUludGVydmFsV0MudG8gPSB0aW1lTXM7XG4gICAgICAvLyBzYXZlIHRoZSBjaGFuZ2VzIGFuZCBub3RpZnkgdGhlIHBhcmVudCBjb21wb25lbnRcbiAgICAgIHRoaXMuc2F2ZSgpO1xuICAgIH1cbiAgfVxuICBwcml2YXRlIHRpbWVUb01zKGhvdXJzOiBudW1iZXIsIG1pbnV0ZXM/OiBudW1iZXIpOiBudW1iZXIge1xuICAgIHJldHVybiAoaG91cnMgKiA2MCAqIDYwICsgKG1pbnV0ZXMgfHwgMCkgKiA2MCkgKiAxMDAwO1xuICB9XG5cbiAgZ2V0Q2xvY2tCdXR0b25Db250ZW50KGhvdXJzOiBudW1iZXIsIG1pbnV0ZXM/OiBudW1iZXIpOiBzdHJpbmcge1xuICAgIC8vIGFkanVzdCB0aGUgaG91ciBiYXNlZCBvbiB0aGUgc3RhcnQgb2YgdGhlIGludGVydmFsIGFuZCB0aGUgc2V0dGluZ3Mgb2YgYW0vcG1cbiAgICBob3VycyA9IHRoaXMuY29udGV4dHVhbGl6ZUhvdXIoaG91cnMsIG1pbnV0ZXMpO1xuICAgIC8vIGNvbnZlcnQgdGhlIGNhbGN1bGF0ZWQgdGltZSBpbnRvIGEgcmVhZGFibGUgc3RyaW5nOyB3ZSBuZWVkIHRvIGZvcm1hdCBpdCB0byBkaXN0aW5ndWlzaCAwLTI0IHZzIDAtMTIgYW0vcG1cbiAgICBjb25zdCByZWZEYXRlID0gbmV3IERhdGUoKTtcbiAgICByZWZEYXRlLnNldEhvdXJzKGhvdXJzLCBtaW51dGVzIHx8IDAsIDApO1xuICAgIGNvbnN0IHN0ciA9IHRoaXMuX3RyYW5zbGF0ZS5mb3JtYXREYXRlKHJlZkRhdGUsICdzaG9ydFRpbWUnKTtcbiAgICAvLyByZW1vdmUgdGhlIGV4dHJhIHBhcnQgKGUuZy4gYW0vcG0pLCBiYXNlZCBvbiB0aGUgdHlwZSBvZiBidXR0b24gd2UgaGF2ZSB0byBzaG93XG4gICAgY29uc3Qgc3RyQXJyID0gc3RyLnNwbGl0KCc6Jyk7XG4gICAgcmV0dXJuIFN0cmluZyhOdW1iZXIoc3RyQXJyWzBdKSkuY29uY2F0KG1pbnV0ZXMgPyAnOicuY29uY2F0KHN0ckFyclsxXS5zbGljZSgwLCAyKSkgOiAnJyk7XG4gIH1cbiAgcHJpdmF0ZSBjb250ZXh0dWFsaXplSG91cihob3VyczogbnVtYmVyLCBtaW51dGVzPzogbnVtYmVyKTogbnVtYmVyIHtcbiAgICAvLyBhZGp1c3QgdGhlIGNvbnRlbnQgdG8gdGhlIGFmdGVybm9vbiBob3VycywgaWYgbmVlZGVkXG4gICAgaWYgKHRoaXMucGVyaW9kID09PSBQZXJpb2RzLlBNKSBob3VycyArPSAxMjtcbiAgICAvLyBpZiB3ZSBhbHJlYWR5IHNlbGVjdGVkIHRoZSBzdGFydCBvZiB0aGUgaW50ZXJ2YWwsIGNoZWNrIHdoZXRoZXIgd2UgbmVlZCB0byBhZGp1c3QgdGhlIHRpbWU6IHRoZSBjZW50ZXIgb2YgdGhlXG4gICAgLy8gY2xvY2sgd2lsbCBiZSBtb3ZlZCB0byB0aGUgc2VsZWN0ZWQgaG91ciAoZnJvbSksIHRvIGhhdmUgYSByZWFzb25hYmxlIHNldCBvZiBjaG9pY2VzIGZvciB0aGUgZW5kICh0bylcbiAgICBpZiAodGhpcy5zZWdtZW50ID09PSBTZWdtZW50cy5UTyAmJiB0aGlzLnRpbWVUb01zKGhvdXJzLCBtaW51dGVzKSA8IHRoaXMudGltZUludGVydmFsV0MuZnJvbSlcbiAgICAgIGhvdXJzICs9IHRoaXMucGVyaW9kID09PSBQZXJpb2RzLlBNID8gLTEyIDogMTI7XG4gICAgLy8gc2V0IG1pZG5pZ2h0IHRvIDAwXG4gICAgaWYgKGhvdXJzID09PSAyNCkgaG91cnMgPSAwO1xuICAgIHJldHVybiBob3VycztcbiAgfVxuXG4gIGVxdWFsc0Zyb20oaG91cnM6IG51bWJlciwgbWludXRlcz86IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIC8vIGlmIHRoZSBzdGFydCBvZiB0aGUgaW50ZXJ2YWwgaGFzbid0IGJlZW4gc2VsZWN0ZWQgeWV0LCBza2lwIGl0XG4gICAgaWYgKHRoaXMuc2VnbWVudCA9PT0gU2VnbWVudHMuRlJPTSkgcmV0dXJuIGZhbHNlO1xuICAgIC8vIGFkanVzdCB0aGUgaG91ciBiYXNlZCBvbiB0aGUgc3RhcnQgb2YgdGhlIGludGVydmFsIGFuZCB0aGUgc2V0dGluZ3Mgb2YgYW0vcG1cbiAgICBob3VycyA9IHRoaXMuY29udGV4dHVhbGl6ZUhvdXIoaG91cnMsIG1pbnV0ZXMpO1xuICAgIC8vIGNvbXBhcmUgdGhlIHR3byBzdHJpbmdzIGJhc2VkIG9uIHRoZSB0aW1lc3RhbXBzIGluIG1zXG4gICAgcmV0dXJuIHRoaXMubXNUb1RpbWVTdHJpbmcodGhpcy50aW1lSW50ZXJ2YWxXQy5mcm9tKSA9PT0gdGhpcy5tc1RvVGltZVN0cmluZyh0aGlzLnRpbWVUb01zKGhvdXJzLCBtaW51dGVzKSk7XG4gIH1cblxuICBpc0FsbG93ZWQoaG91cnM6IG51bWJlciwgbWludXRlcz86IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIC8vIGFkanVzdCB0aGUgaG91ciBiYXNlZCBvbiB0aGUgc3RhcnQgb2YgdGhlIGludGVydmFsIGFuZCB0aGUgc2V0dGluZ3Mgb2YgYW0vcG1cbiAgICBob3VycyA9IHRoaXMuY29udGV4dHVhbGl6ZUhvdXIoaG91cnMsIG1pbnV0ZXMpO1xuICAgIC8vIGNoZWNrIHdoZXRoZXIgdGhlIHNlbGVjdGVkIHRpbWUgaXMgaW5zaWRlIHRoZSBnaXZlbiBib3VuZGFyaWVzXG4gICAgcmV0dXJuIChcbiAgICAgICghdGhpcy5ub3RFYXJsaWVyVGhhbiB8fFxuICAgICAgICB0aGlzLnRpbWVUb01zKGhvdXJzLCBtaW51dGVzKSA+PSB0aGlzLm5vdEVhcmxpZXJUaGFuIHx8XG4gICAgICAgIHRoaXMudGltZVRvTXMoaG91cnMsIG1pbnV0ZXMpID09PSAwKSAmJlxuICAgICAgKCF0aGlzLm5vdExhdGVyVGhhbiB8fCB0aGlzLnRpbWVUb01zKGhvdXJzLCBtaW51dGVzKSA8PSB0aGlzLm5vdExhdGVyVGhhbilcbiAgICApO1xuICB9XG5cbiAgaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKGhvdXJzOiBudW1iZXIsIG1pbnV0ZXM/OiBudW1iZXIpOiBib29sZWFuIHtcbiAgICAvLyBpZiB0aGUgc3RhcnQgb2YgdGhlIGludGVydmFsIGhhc24ndCBiZWVuIHNlbGVjdGVkIHlldCwgc2tpcCBpdFxuICAgIGlmICh0aGlzLnNlZ21lbnQgPT09IFNlZ21lbnRzLkZST00pIHJldHVybiBmYWxzZTtcbiAgICAvLyBhZGp1c3QgdGhlIGhvdXIgYmFzZWQgb24gdGhlIHN0YXJ0IG9mIHRoZSBpbnRlcnZhbCBhbmQgdGhlIHNldHRpbmdzIG9mIGFtL3BtXG4gICAgaG91cnMgPSB0aGlzLmNvbnRleHR1YWxpemVIb3VyKGhvdXJzLCBtaW51dGVzKTtcbiAgICAvLyBjYWxjdWxhdGUgdGhlIG1zIG9mIHRoZSBzZWxlY3RlZCB0aW1lIGFuZCBvZiBcIm5vb25cIiB0aW1lICh0byBkZXRlcm0gdGhlIG1lcmlkaWFuKVxuICAgIGNvbnN0IHRpbWVNcyA9IHRoaXMudGltZVRvTXMoaG91cnMsIG1pbnV0ZXMpO1xuICAgIGNvbnN0IG5vb25NcyA9IHRoaXMudGltZVRvTXMoMTIpO1xuICAgIC8vIHJldHVybiB0cnVlIGluIGNhc2UgdGhlIGhvdXIgZG9lc24ndCBiZWxvbmcgdG8gdGhlIGN1cnJlbnQgbWVyaWRpYW5cbiAgICByZXR1cm4gKHRoaXMucGVyaW9kID09PSBQZXJpb2RzLkFNICYmIHRpbWVNcyA+IG5vb25NcykgfHwgKHRoaXMucGVyaW9kID09PSBQZXJpb2RzLlBNICYmIHRpbWVNcyA8IG5vb25Ncyk7XG4gIH1cblxuICBtc1RvVGltZVN0cmluZyh0aW1lOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIGlmICghdGltZSkgcmV0dXJuICcnO1xuICAgIC8vIG5vdGU6IHRoZSB0aW1lIG11c3QgYmUgYWx3YXlzIGNvbnNpZGVyZWQgd2l0aG91dCBhbnkgdGltZXpvbmUgKFVUQylcbiAgICBjb25zdCByZWZEYXRlID0gbmV3IERhdGUoKTtcbiAgICByZWZEYXRlLnNldFRpbWUodGltZSk7XG4gICAgY29uc3QgZGF0ZU9wdHMgPSB7IHRpbWVab25lOiAnVVRDJywgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JyB9IGFzIGNvbnN0O1xuICAgIHJldHVybiByZWZEYXRlLnRvTG9jYWxlVGltZVN0cmluZyh0aGlzLl90cmFuc2xhdGUuZ2V0Q3VycmVudExhbmcoKSwgZGF0ZU9wdHMpO1xuICB9XG5cbiAgc2F2ZSgpOiB2b2lkIHtcbiAgICB0aGlzLnRpbWVJbnRlcnZhbC5sb2FkKHRoaXMudGltZUludGVydmFsV0MpO1xuICAgIHRoaXMuX21vZGFsLmRpc21pc3ModHJ1ZSk7XG4gIH1cblxuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLnRpbWVJbnRlcnZhbC5yZXNldCgpO1xuICAgIHRoaXMuX21vZGFsLmRpc21pc3MoZmFsc2UpO1xuICB9XG5cbiAgY2xvc2UoKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kYWwuZGlzbWlzcygpO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHR3byBzdGFnZXMgb2YgdGhlIGNvbXBvbmVudCwgdG8gcGljayB0aGUgc3RhcnQgYW5kIHRoZSBlbmQgb2YgdGhlIGludGVydmFsLlxuICovXG5lbnVtIFNlZ21lbnRzIHtcbiAgRlJPTSA9ICdGUk9NJyxcbiAgVE8gPSAnVE8nXG59XG5cbi8qKlxuICogVGhlIHR3byBwb3NzaWJsZSBwZXJpb2RzIG9mIHRoZSBjb21wb25lbnQsIHRvIGludGVycHJldCB0aGUgY2xvY2sgdGhlIHJpZ2h0IHdheS5cbiAqL1xuZXhwb3J0IGVudW0gUGVyaW9kcyB7XG4gIEFNID0gJ0FNJyxcbiAgUE0gPSAnUE0nXG59XG4iLCI8aW9uLWhlYWRlcj5cbiAgPGlvbi10b29sYmFyIGNvbG9yPVwiaWRlYVRvb2xiYXJcIj5cbiAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cInN0YXJ0XCI+XG4gICAgICA8aW9uLWJ1dHRvbiBbdGl0bGVdPVwiJ0NPTU1PTi5DTE9TRScgfCB0cmFuc2xhdGVcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxuICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3NlXCIgc2xvdD1cImljb24tb25seVwiIC8+XG4gICAgICA8L2lvbi1idXR0b24+XG4gICAgPC9pb24tYnV0dG9ucz5cbiAgICA8aW9uLXRpdGxlPnt7IHRpdGxlIH19PC9pb24tdGl0bGU+XG4gICAgPGlvbi1idXR0b25zIHNsb3Q9XCJlbmRcIj5cbiAgICAgIDxpb24tYnV0dG9uIFt0aXRsZV09XCInQ09NTU9OLlJFU0VUJyB8IHRyYW5zbGF0ZVwiIChjbGljayk9XCJyZXNldCgpXCI+XG4gICAgICAgIDxpb24taWNvbiBuYW1lPVwiYXJyb3ctdW5kb1wiIHNsb3Q9XCJpY29uLW9ubHlcIiAvPlxuICAgICAgPC9pb24tYnV0dG9uPlxuICAgIDwvaW9uLWJ1dHRvbnM+XG4gIDwvaW9uLXRvb2xiYXI+XG48L2lvbi1oZWFkZXI+XG48aW9uLWNvbnRlbnQ+XG4gIDxpb24tZ3JpZCBjbGFzcz1cImNsb2NrR3JpZFwiPlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGlvbi1jb2wgW3NpemVdPVwiNVwiPiZuYnNwOzwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgc2hhcGU9XCJyb3VuZFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oMTIpID8gJ3ByaW1hcnknIDogJ2RhcmsnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oMTIpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCgxMilcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCgxMilcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDEyKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWxlZnRcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSgxMiwgbWludXRlcykgPyAncHJpbWFyeScgOiAnbGlnaHQnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oMTIsIG1pbnV0ZXMpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCgxMiwgbWludXRlcylcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCgxMiwgbWludXRlcylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDEyLCBtaW51dGVzKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCIzXCI+Jm5ic3A7PC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cbiAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxpb24tY29sIFtzaXplXT1cIjJcIj4mbmJzcDs8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDExLCBtaW51dGVzKSA/ICdwcmltYXJ5JyA6ICdsaWdodCdcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbigxMSwgbWludXRlcylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDExLCBtaW51dGVzKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDExLCBtaW51dGVzKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoMTEsIG1pbnV0ZXMpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtbGVmdFwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDExKSA/ICdwcmltYXJ5JyA6ICdkYXJrJ1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDExKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoMTEpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoMTEpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCgxMSkgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDEpID8gJ3ByaW1hcnknIDogJ2RhcmsnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oMSlcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDEpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoMSlcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDEpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oMSwgbWludXRlcykgPyAncHJpbWFyeScgOiAnbGlnaHQnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oMSwgbWludXRlcylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDEsIG1pbnV0ZXMpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoMSwgbWludXRlcylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDEsIG1pbnV0ZXMpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIFtzaXplXT1cIjJcIj4mbmJzcDs8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGlvbi1jb2wgW3NpemVdPVwiMVwiPiZuYnNwOzwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oMTAsIG1pbnV0ZXMpID8gJ3ByaW1hcnknIDogJ2xpZ2h0J1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDEwLCBtaW51dGVzKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoMTAsIG1pbnV0ZXMpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoMTAsIG1pbnV0ZXMpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCgxMCwgbWludXRlcykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1sZWZ0XCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgc2hhcGU9XCJyb3VuZFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oMTApID8gJ3ByaW1hcnknIDogJ2RhcmsnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oMTApXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCgxMClcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCgxMClcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDEwKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCIyXCI+Jm5ic3A7PC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDIpID8gJ3ByaW1hcnknIDogJ2RhcmsnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oMilcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDIpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoMilcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDIpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oMiwgbWludXRlcykgPyAncHJpbWFyeScgOiAnbGlnaHQnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oMiwgbWludXRlcylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDIsIG1pbnV0ZXMpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoMiwgbWludXRlcylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDIsIG1pbnV0ZXMpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIFtzaXplXT1cIjFcIj4mbmJzcDs8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSg5LCBtaW51dGVzKSA/ICdwcmltYXJ5JyA6ICdsaWdodCdcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbig5LCBtaW51dGVzKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoOSwgbWludXRlcylcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCg5LCBtaW51dGVzKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoOSwgbWludXRlcykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1sZWZ0XCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgc2hhcGU9XCJyb3VuZFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oOSkgPyAncHJpbWFyeScgOiAnZGFyaydcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbig5KVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoOSlcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCg5KVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoOSkgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXIgZGlzcGxheVRleHRcIiBbc2l6ZV09XCI0XCI+XG4gICAgICAgIDxpb24tdGV4dCBbY2xhc3MuZnJvbVNlbGVjdGVkXT1cInNlZ21lbnQgPT09IFNlZ21lbnRzLlRPXCI+XG4gICAgICAgICAge3sgJ0lERUFfVU5DT01NT04uRlRUVC5GUk9NJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgIEBpZiAoc2VnbWVudCA9PT0gU2VnbWVudHMuVE8pIHtcbiAgICAgICAgICAgIDxzcGFuPnt7IG1zVG9UaW1lU3RyaW5nKF90aW1lSW50ZXJ2YWwuZnJvbSkgfX08L3NwYW4+XG4gICAgICAgICAgfVxuICAgICAgICA8L2lvbi10ZXh0PlxuICAgICAgICBAaWYgKHNlZ21lbnQgPT09IFNlZ21lbnRzLlRPKSB7XG4gICAgICAgICAgPGlvbi10ZXh0Pnt7ICdJREVBX1VOQ09NTU9OLkZUVFQuVE8nIHwgdHJhbnNsYXRlIH19PC9pb24tdGV4dD5cbiAgICAgICAgfVxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDMpID8gJ3ByaW1hcnknIDogJ2RhcmsnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oMylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDMpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoMylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDMpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtY2VudGVyXCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oMywgbWludXRlcykgPyAncHJpbWFyeScgOiAnbGlnaHQnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oMywgbWludXRlcylcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDMsIG1pbnV0ZXMpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoMywgbWludXRlcylcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDMsIG1pbnV0ZXMpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCIxXCI+Jm5ic3A7PC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSg4LCBtaW51dGVzKSA/ICdwcmltYXJ5JyA6ICdsaWdodCdcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbig4LCBtaW51dGVzKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoOCwgbWludXRlcylcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCg4LCBtaW51dGVzKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoOCwgbWludXRlcykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1sZWZ0XCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgc2hhcGU9XCJyb3VuZFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oOCkgPyAncHJpbWFyeScgOiAnZGFyaydcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbig4KVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoOClcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCg4KVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoOCkgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgW3NpemVdPVwiMlwiPiZuYnNwOzwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIGNsYXNzPVwiaW9uLXRleHQtcmlnaHRcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBzaGFwZT1cInJvdW5kXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSg0KSA/ICdwcmltYXJ5JyA6ICdkYXJrJ1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDQpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCg0KVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDQpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCg0KSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDQsIG1pbnV0ZXMpID8gJ3ByaW1hcnknIDogJ2xpZ2h0J1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDQsIG1pbnV0ZXMpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCg0LCBtaW51dGVzKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDQsIG1pbnV0ZXMpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCg0LCBtaW51dGVzKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCIxXCI+Jm5ic3A7PC9pb24tY29sPlxuICAgIDwvaW9uLXJvdz5cbiAgICA8aW9uLXJvdyBjbGFzcz1cImlvbi1hbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgIDxpb24tY29sIFtzaXplXT1cIjJcIj4mbmJzcDs8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDcsIG1pbnV0ZXMpID8gJ3ByaW1hcnknIDogJ2xpZ2h0J1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDcsIG1pbnV0ZXMpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCg3LCBtaW51dGVzKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDcsIG1pbnV0ZXMpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCg3LCBtaW51dGVzKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWxlZnRcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cImxhcmdlXCJcbiAgICAgICAgICBzaGFwZT1cInJvdW5kXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSg3KSA/ICdwcmltYXJ5JyA6ICdkYXJrJ1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDcpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCg3KVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDcpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCg3KSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0XCIgW3NpemVdPVwiMlwiPlxuICAgICAgICA8aW9uLWJ1dHRvblxuICAgICAgICAgIHNpemU9XCJsYXJnZVwiXG4gICAgICAgICAgc2hhcGU9XCJyb3VuZFwiXG4gICAgICAgICAgW2NvbG9yXT1cImVxdWFsc0Zyb20oNSkgPyAncHJpbWFyeScgOiAnZGFyaydcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbig1KVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoNSlcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCg1KVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoNSkgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1jZW50ZXJcIiBbc2l6ZV09XCIyXCI+XG4gICAgICAgIDxpb24tYnV0dG9uXG4gICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICBbY29sb3JdPVwiZXF1YWxzRnJvbSg1LCBtaW51dGVzKSA/ICdwcmltYXJ5JyA6ICdsaWdodCdcIlxuICAgICAgICAgIFtjbGFzcy5vcHBvc2l0ZU1lcmlkaWFuXT1cImlzSG91ck9mT3Bwb3NpdGVNZXJpZGlhbig1LCBtaW51dGVzKVwiXG4gICAgICAgICAgW2Rpc2FibGVkXT1cIiFpc0FsbG93ZWQoNSwgbWludXRlcylcIlxuICAgICAgICAgIChjbGljayk9XCJzZXRJbnRlcnZhbCg1LCBtaW51dGVzKVwiXG4gICAgICAgID5cbiAgICAgICAgICB7eyBnZXRDbG9ja0J1dHRvbkNvbnRlbnQoNSwgbWludXRlcykgfX1cbiAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgPC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgW3NpemVdPVwiMlwiPiZuYnNwOzwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCIzXCI+Jm5ic3A7PC9pb24tY29sPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwic21hbGxcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDYsIG1pbnV0ZXMpID8gJ3ByaW1hcnknIDogJ2xpZ2h0J1wiXG4gICAgICAgICAgW2NsYXNzLm9wcG9zaXRlTWVyaWRpYW5dPVwiaXNIb3VyT2ZPcHBvc2l0ZU1lcmlkaWFuKDYsIG1pbnV0ZXMpXCJcbiAgICAgICAgICBbZGlzYWJsZWRdPVwiIWlzQWxsb3dlZCg2LCBtaW51dGVzKVwiXG4gICAgICAgICAgKGNsaWNrKT1cInNldEludGVydmFsKDYsIG1pbnV0ZXMpXCJcbiAgICAgICAgPlxuICAgICAgICAgIHt7IGdldENsb2NrQnV0dG9uQ29udGVudCg2LCBtaW51dGVzKSB9fVxuICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LWNlbnRlclwiIFtzaXplXT1cIjJcIj5cbiAgICAgICAgPGlvbi1idXR0b25cbiAgICAgICAgICBzaXplPVwibGFyZ2VcIlxuICAgICAgICAgIHNoYXBlPVwicm91bmRcIlxuICAgICAgICAgIFtjb2xvcl09XCJlcXVhbHNGcm9tKDYpID8gJ3ByaW1hcnknIDogJ2RhcmsnXCJcbiAgICAgICAgICBbY2xhc3Mub3Bwb3NpdGVNZXJpZGlhbl09XCJpc0hvdXJPZk9wcG9zaXRlTWVyaWRpYW4oNilcIlxuICAgICAgICAgIFtkaXNhYmxlZF09XCIhaXNBbGxvd2VkKDYpXCJcbiAgICAgICAgICAoY2xpY2spPVwic2V0SW50ZXJ2YWwoNilcIlxuICAgICAgICA+XG4gICAgICAgICAge3sgZ2V0Q2xvY2tCdXR0b25Db250ZW50KDYpIH19XG4gICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIFtzaXplXT1cIjVcIj4mbmJzcDs8L2lvbi1jb2w+XG4gICAgPC9pb24tcm93PlxuICAgIDxpb24tcm93IGNsYXNzPVwiaW9uLWFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgPGlvbi1jb2wgY2xhc3M9XCJpb24tdGV4dC1yaWdodFwiIFtzaXplXT1cIjNcIiBbc2l6ZVNtXT1cIjdcIj5cbiAgICAgICAgPGlvbi10ZXh0IGNsYXNzPVwicHJlZkxhYmVsXCI+e3sgJ0lERUFfVU5DT01NT04uRlRUVC5QRVJJT0QnIHwgdHJhbnNsYXRlIH19OjwvaW9uLXRleHQ+XG4gICAgICA8L2lvbi1jb2w+XG4gICAgICA8aW9uLWNvbCBbc2l6ZV09XCI5XCIgW3NpemVTbV09XCI1XCI+XG4gICAgICAgIDxpb24tc2VnbWVudCBbdmFsdWVdPVwicGVyaW9kXCIgKGlvbkNoYW5nZSk9XCJwZXJpb2QgPSAkZXZlbnQ/LmRldGFpbD8udmFsdWUgfHwgcGVyaW9kXCI+XG4gICAgICAgICAgPGlvbi1zZWdtZW50LWJ1dHRvbiBbdmFsdWVdPVwiUGVyaW9kcy5BTVwiPlxuICAgICAgICAgICAgPGlvbi1sYWJlbD57eyAnSURFQV9VTkNPTU1PTi5GVFRULkFNJyB8IHRyYW5zbGF0ZSB9fTwvaW9uLWxhYmVsPlxuICAgICAgICAgIDwvaW9uLXNlZ21lbnQtYnV0dG9uPlxuICAgICAgICAgIDxpb24tc2VnbWVudC1idXR0b24gW3ZhbHVlXT1cIlBlcmlvZHMuUE1cIj5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+e3sgJ0lERUFfVU5DT01NT04uRlRUVC5QTScgfCB0cmFuc2xhdGUgfX08L2lvbi1sYWJlbD5cbiAgICAgICAgICA8L2lvbi1zZWdtZW50LWJ1dHRvbj5cbiAgICAgICAgPC9pb24tc2VnbWVudD5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gICAgPGlvbi1yb3cgY2xhc3M9XCJpb24tYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICA8aW9uLWNvbCBjbGFzcz1cImlvbi10ZXh0LXJpZ2h0XCIgW3NpemVdPVwiM1wiIFtzaXplU21dPVwiN1wiPlxuICAgICAgICA8aW9uLXRleHQgY2xhc3M9XCJwcmVmTGFiZWxcIj57eyAnSURFQV9VTkNPTU1PTi5GVFRULk1JTlVURVNfUFJFRkVSRU5DRScgfCB0cmFuc2xhdGUgfX06PC9pb24tdGV4dD5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICAgIDxpb24tY29sIFtzaXplXT1cIjlcIiBbc2l6ZVNtXT1cIjVcIj5cbiAgICAgICAgPGlvbi1zZWdtZW50IFt2YWx1ZV09XCJtaW51dGVzXCIgKGlvbkNoYW5nZSk9XCJtaW51dGVzID0gJGV2ZW50Py5kZXRhaWw/LnZhbHVlIHx8IG1pbnV0ZXNcIj5cbiAgICAgICAgICA8aW9uLXNlZ21lbnQtYnV0dG9uIHZhbHVlPVwiMTVcIj5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+MTU8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8L2lvbi1zZWdtZW50LWJ1dHRvbj5cbiAgICAgICAgICA8aW9uLXNlZ21lbnQtYnV0dG9uIHZhbHVlPVwiMzBcIj5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+MzA8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8L2lvbi1zZWdtZW50LWJ1dHRvbj5cbiAgICAgICAgICA8aW9uLXNlZ21lbnQtYnV0dG9uIHZhbHVlPVwiNDVcIj5cbiAgICAgICAgICAgIDxpb24tbGFiZWw+NDU8L2lvbi1sYWJlbD5cbiAgICAgICAgICA8L2lvbi1zZWdtZW50LWJ1dHRvbj5cbiAgICAgICAgPC9pb24tc2VnbWVudD5cbiAgICAgIDwvaW9uLWNvbD5cbiAgICA8L2lvbi1yb3c+XG4gIDwvaW9uLWdyaWQ+XG48L2lvbi1jb250ZW50PlxuIl19