ca-components 1.7.1 → 1.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/components/ca-custom-datetime-pickers/ca-custom-datetime-pickers.component.mjs +16 -9
- package/esm2022/lib/components/ca-custom-datetime-pickers/components/ca-custom-datetime-pickers-calendar-dates-main/ca-custom-datetime-pickers-calendar-dates-main.component.mjs +5 -3
- package/esm2022/lib/components/ca-custom-datetime-pickers/components/ca-custom-datetime-pickers-calendar-days/ca-custom-datetime-pickers-calendar-days.component.mjs +1 -1
- package/esm2022/lib/components/ca-custom-datetime-pickers/components/ca-custom-datetime-pickers-calendar-left/ca-custom-datetime-pickers-calendar-left.component.mjs +10 -5
- package/esm2022/lib/components/ca-input-datetime-picker/ca-input-datetime-picker.component.mjs +90 -49
- package/esm2022/lib/components/ca-input-test/input-test.component.mjs +1 -1
- package/esm2022/lib/components/ca-new-filter/components/ca-filter-time-dropdown/ca-filter-time-dropdown.component.mjs +2 -2
- package/fesm2022/ca-components.mjs +116 -61
- package/fesm2022/ca-components.mjs.map +1 -1
- package/lib/components/ca-input-datetime-picker/ca-input-datetime-picker.component.d.ts +7 -2
- package/package.json +1 -1
package/esm2022/lib/components/ca-input-datetime-picker/ca-input-datetime-picker.component.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Component, EventEmitter, Input, Output, Self, ViewChild, } from '@angular/core';
|
|
2
|
-
import { FormsModule, ReactiveFormsModule, } from '@angular/forms';
|
|
2
|
+
import { FormControl, FormsModule, ReactiveFormsModule, } from '@angular/forms';
|
|
3
3
|
import { CommonModule } from '@angular/common';
|
|
4
4
|
// Imports
|
|
5
5
|
import moment from 'moment';
|
|
6
|
-
import { Subject, takeUntil } from 'rxjs';
|
|
6
|
+
import { Subject, take, takeUntil } from 'rxjs';
|
|
7
7
|
import { InputSvgRoutes } from '../ca-input/utils';
|
|
8
8
|
// Pipe
|
|
9
9
|
import { InputContainerClassPipe, InputDatetimePickerClassPipe, } from '../ca-input/pipes';
|
|
@@ -27,8 +27,10 @@ export class CaInputDatetimePickerComponent {
|
|
|
27
27
|
this.calendarService = calendarService;
|
|
28
28
|
this.clearInputEvent = new EventEmitter();
|
|
29
29
|
this.blurInputEvent = new EventEmitter();
|
|
30
|
+
this.inputFormControl = new FormControl(null);
|
|
30
31
|
this.showDateInput = false;
|
|
31
32
|
this.dateTimeInputDate = new Date();
|
|
33
|
+
this.dateTimeIntDate = new Date();
|
|
32
34
|
this.selectionInput = -1;
|
|
33
35
|
this.inputSvgRoutes = InputSvgRoutes;
|
|
34
36
|
this.isTouchedInput = false;
|
|
@@ -44,12 +46,26 @@ export class CaInputDatetimePickerComponent {
|
|
|
44
46
|
this.destroy$ = new Subject();
|
|
45
47
|
this.superControl.valueAccessor = this;
|
|
46
48
|
}
|
|
49
|
+
ngOnInit() {
|
|
50
|
+
if (this.superControl?.control) {
|
|
51
|
+
this.superControl.control.valueChanges
|
|
52
|
+
.pipe(take(1)) // 👈 only listen once
|
|
53
|
+
.subscribe((_) => {
|
|
54
|
+
if (this.valueAfterWriteValue) {
|
|
55
|
+
setTimeout(() => {
|
|
56
|
+
this.onChange(this.valueAfterWriteValue);
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
47
62
|
ngAfterViewInit() {
|
|
48
|
-
this.
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
63
|
+
if (this.valueAfterWriteValue) {
|
|
64
|
+
this.setTimeDateInput(this.valueAfterWriteValue);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
this.setTimePickerTime();
|
|
68
|
+
}
|
|
53
69
|
this.calendarService.dateChanged
|
|
54
70
|
.pipe(takeUntil(this.destroy$))
|
|
55
71
|
.subscribe((date) => {
|
|
@@ -88,7 +104,8 @@ export class CaInputDatetimePickerComponent {
|
|
|
88
104
|
}, 90);
|
|
89
105
|
}
|
|
90
106
|
selectLastOneAfterMouseUp() {
|
|
91
|
-
if (this.inputConfig.name ===
|
|
107
|
+
if (this.inputConfig.name ===
|
|
108
|
+
InputConfigNameStringEnum.DATE_PICKER_BANK_CARD) {
|
|
92
109
|
this.selectionInput = 1;
|
|
93
110
|
this.span2.nativeElement.focus();
|
|
94
111
|
this.setSpanSelection(this.span2.nativeElement);
|
|
@@ -140,7 +157,8 @@ export class CaInputDatetimePickerComponent {
|
|
|
140
157
|
isNumber(evt) {
|
|
141
158
|
evt = evt ? evt : window.event;
|
|
142
159
|
let charCode = evt.which ? evt.which : evt.keyCode;
|
|
143
|
-
return ((charCode >= 48 && charCode <= 57) ||
|
|
160
|
+
return ((charCode >= 48 && charCode <= 57) ||
|
|
161
|
+
(charCode >= 96 && charCode <= 105));
|
|
144
162
|
}
|
|
145
163
|
isNavigationKey(e) {
|
|
146
164
|
const navigationKeys = [37, 38, 39, 40, 8, 9, 46]; // Arrow keys, Backspace, Tab, Delete
|
|
@@ -233,12 +251,11 @@ export class CaInputDatetimePickerComponent {
|
|
|
233
251
|
registerOnChange(fn) {
|
|
234
252
|
this.onChange = fn;
|
|
235
253
|
}
|
|
236
|
-
onChange(_) {
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
254
|
+
onChange(_) { }
|
|
255
|
+
writeValue(obj) {
|
|
256
|
+
if (obj)
|
|
257
|
+
this.setTimeDateInput(obj, true);
|
|
240
258
|
}
|
|
241
|
-
writeValue(obj) { }
|
|
242
259
|
registerOnTouched() { }
|
|
243
260
|
// BLUR ON INPUT
|
|
244
261
|
blurOnDateTime() {
|
|
@@ -257,7 +274,9 @@ export class CaInputDatetimePickerComponent {
|
|
|
257
274
|
else {
|
|
258
275
|
if (this.inputConfig.expiredDateInvalid &&
|
|
259
276
|
moment(this.dateTimeInputDate).isBefore(moment())) {
|
|
260
|
-
this.superControl.control?.setErrors({
|
|
277
|
+
this.superControl.control?.setErrors({
|
|
278
|
+
invalid: true,
|
|
279
|
+
}); // don't accept expired dates
|
|
261
280
|
}
|
|
262
281
|
else {
|
|
263
282
|
this.calendarService.dateChanged.next(this.dateTimeInputDate);
|
|
@@ -321,7 +340,8 @@ export class CaInputDatetimePickerComponent {
|
|
|
321
340
|
text = moment(new Date(date)).format('MM/DD/YY');
|
|
322
341
|
dateFormat = text.split('/');
|
|
323
342
|
}
|
|
324
|
-
else if (this.inputConfig.name ===
|
|
343
|
+
else if (this.inputConfig.name ===
|
|
344
|
+
InputConfigNameStringEnum.DATE_PICKER_BANK_CARD) {
|
|
325
345
|
text = moment(new Date(date)).format('MM/DD/YY');
|
|
326
346
|
dateFormat = text.split('/');
|
|
327
347
|
}
|
|
@@ -334,22 +354,31 @@ export class CaInputDatetimePickerComponent {
|
|
|
334
354
|
timeFormat = moment(new Date(date)).format('hh/mm/A');
|
|
335
355
|
dateFormat = timeFormat.split('/');
|
|
336
356
|
}
|
|
357
|
+
if (this.formFormat) {
|
|
358
|
+
const newFormFormat = moment(new Date(date)).format(this.formFormat);
|
|
359
|
+
this.valueAfterWriteValue = newFormFormat;
|
|
360
|
+
text = newFormFormat;
|
|
361
|
+
}
|
|
337
362
|
if (!hasValue)
|
|
338
363
|
this.onChange(text);
|
|
339
|
-
// this.input.nativeElement.value = text;
|
|
340
364
|
this.setIsFocusInput(false);
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
this.
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
365
|
+
// HAS TO BE IN TIMEOUT BECAUSE OF ANGULAR STACK
|
|
366
|
+
setTimeout(() => {
|
|
367
|
+
if (this.span1)
|
|
368
|
+
this.span1.nativeElement.innerHTML = dateFormat[0];
|
|
369
|
+
if (this.span2)
|
|
370
|
+
if (this.inputConfig.name !==
|
|
371
|
+
InputConfigNameStringEnum.DATE_PICKER_BANK_CARD) {
|
|
372
|
+
this.span2.nativeElement.innerHTML = dateFormat[1];
|
|
373
|
+
this.span3.nativeElement.innerHTML = dateFormat[2];
|
|
374
|
+
}
|
|
375
|
+
else {
|
|
376
|
+
this.span2.nativeElement.innerHTML = dateFormat[2];
|
|
377
|
+
}
|
|
378
|
+
}, 0);
|
|
379
|
+
if (date) {
|
|
380
|
+
this.dateTimeInputDate = new Date(date);
|
|
381
|
+
}
|
|
353
382
|
this.showDateInput = true;
|
|
354
383
|
}
|
|
355
384
|
handleKeyboardInputs(e, isRestart) {
|
|
@@ -360,9 +389,11 @@ export class CaInputDatetimePickerComponent {
|
|
|
360
389
|
? undefined
|
|
361
390
|
: parseInt(this.span2.nativeElement.innerHTML);
|
|
362
391
|
let span3Value;
|
|
363
|
-
if (this.inputConfig.name !==
|
|
392
|
+
if (this.inputConfig.name !==
|
|
393
|
+
InputConfigNameStringEnum.DATE_PICKER_BANK_CARD) {
|
|
364
394
|
span3Value =
|
|
365
|
-
isNaN(this.span3.nativeElement.innerHTML) ||
|
|
395
|
+
isNaN(this.span3.nativeElement.innerHTML) ||
|
|
396
|
+
this.newInputChanged
|
|
366
397
|
? ''
|
|
367
398
|
: parseInt(this.span3.nativeElement.innerHTML);
|
|
368
399
|
}
|
|
@@ -382,12 +413,13 @@ export class CaInputDatetimePickerComponent {
|
|
|
382
413
|
this.selectSpanByTabIndex(1, true);
|
|
383
414
|
}
|
|
384
415
|
else {
|
|
385
|
-
this.dateTimeInputDate = new Date(this.dateTimeInputDate.setMonth(parseInt(this.span1.nativeElement.innerHTML +
|
|
386
|
-
1));
|
|
416
|
+
this.dateTimeInputDate = new Date(this.dateTimeInputDate.setMonth(parseInt(this.span1.nativeElement.innerHTML +
|
|
417
|
+
parseInt(e.key)) - 1));
|
|
387
418
|
if (!final_value)
|
|
388
419
|
this.span1.nativeElement.innerHTML = 'mm';
|
|
389
420
|
else
|
|
390
|
-
this.span1.nativeElement.innerHTML = (this.span1.nativeElement.innerHTML +
|
|
421
|
+
this.span1.nativeElement.innerHTML = (this.span1.nativeElement.innerHTML +
|
|
422
|
+
parseInt(e.key)).slice(-2);
|
|
391
423
|
this.selectionInput = 1;
|
|
392
424
|
this.selectSpanByTabIndex(1, true);
|
|
393
425
|
}
|
|
@@ -419,12 +451,14 @@ export class CaInputDatetimePickerComponent {
|
|
|
419
451
|
this.selectSpanByTabIndex(2, true);
|
|
420
452
|
}
|
|
421
453
|
else {
|
|
422
|
-
this.dateTimeInputDate = new Date(this.dateTimeInputDate.setDate(parseInt(this.span2.nativeElement.innerHTML +
|
|
454
|
+
this.dateTimeInputDate = new Date(this.dateTimeInputDate.setDate(parseInt(this.span2.nativeElement.innerHTML +
|
|
455
|
+
parseInt(e.key))));
|
|
423
456
|
if (!final_value) {
|
|
424
457
|
this.span2.nativeElement.innerHTML = 'dd';
|
|
425
458
|
}
|
|
426
459
|
else {
|
|
427
|
-
this.span2.nativeElement.innerHTML = (this.span2.nativeElement.innerHTML +
|
|
460
|
+
this.span2.nativeElement.innerHTML = (this.span2.nativeElement.innerHTML +
|
|
461
|
+
parseInt(e.key)).slice(-2);
|
|
428
462
|
}
|
|
429
463
|
this.selectionInput = 2;
|
|
430
464
|
this.selectSpanByTabIndex(2, true);
|
|
@@ -465,7 +499,8 @@ export class CaInputDatetimePickerComponent {
|
|
|
465
499
|
}
|
|
466
500
|
}
|
|
467
501
|
}
|
|
468
|
-
else if (this.inputConfig.name ===
|
|
502
|
+
else if (this.inputConfig.name ===
|
|
503
|
+
InputConfigNameStringEnum.DATE_PICKER_BANK_CARD) {
|
|
469
504
|
if (!this.selectionInput) {
|
|
470
505
|
if (isRestart) {
|
|
471
506
|
this.span1.nativeElement.innerHTML = 'mm';
|
|
@@ -480,13 +515,14 @@ export class CaInputDatetimePickerComponent {
|
|
|
480
515
|
this.selectSpanByTabIndex(1, true);
|
|
481
516
|
}
|
|
482
517
|
else {
|
|
483
|
-
this.dateTimeInputDate = new Date(this.dateTimeInputDate.setMonth(parseInt(this.span1.nativeElement.innerHTML +
|
|
484
|
-
1));
|
|
518
|
+
this.dateTimeInputDate = new Date(this.dateTimeInputDate.setMonth(parseInt(this.span1.nativeElement.innerHTML +
|
|
519
|
+
parseInt(e.key)) - 1));
|
|
485
520
|
if (!final_value) {
|
|
486
521
|
this.span1.nativeElement.innerHTML = 'mm';
|
|
487
522
|
}
|
|
488
523
|
else {
|
|
489
|
-
this.span1.nativeElement.innerHTML = (this.span1.nativeElement.innerHTML +
|
|
524
|
+
this.span1.nativeElement.innerHTML = (this.span1.nativeElement.innerHTML +
|
|
525
|
+
parseInt(e.key)).slice(-2);
|
|
490
526
|
}
|
|
491
527
|
this.selectionInput = 1;
|
|
492
528
|
this.selectSpanByTabIndex(1, true);
|
|
@@ -579,14 +615,16 @@ export class CaInputDatetimePickerComponent {
|
|
|
579
615
|
this.selectionInput = 0;
|
|
580
616
|
const isUp = direction === 'up';
|
|
581
617
|
const isDatePicker = this.inputConfig.name === InputConfigNameStringEnum.DATE_PICKER;
|
|
582
|
-
const isBankCardPicker = this.inputConfig.name ===
|
|
618
|
+
const isBankCardPicker = this.inputConfig.name ===
|
|
619
|
+
InputConfigNameStringEnum.DATE_PICKER_BANK_CARD;
|
|
583
620
|
if (isDatePicker || isBankCardPicker)
|
|
584
621
|
this.handleDatePickerInput(isUp, isDatePicker);
|
|
585
622
|
else
|
|
586
623
|
this.handleTimePickerInput(isUp);
|
|
587
624
|
}
|
|
588
625
|
moveSelectionRightOrTab(e) {
|
|
589
|
-
const isDatepickerBankCard = this.inputConfig.name ===
|
|
626
|
+
const isDatepickerBankCard = this.inputConfig.name ===
|
|
627
|
+
InputConfigNameStringEnum.DATE_PICKER_BANK_CARD;
|
|
590
628
|
const maxIndex = isDatepickerBankCard ? 1 : 2;
|
|
591
629
|
if (this.selectionInput < maxIndex && !e.shiftKey) {
|
|
592
630
|
this.selectionInput += 1;
|
|
@@ -702,6 +740,7 @@ export class CaInputDatetimePickerComponent {
|
|
|
702
740
|
this.clearInputEvent.emit(event);
|
|
703
741
|
this.setIsFocusInput(false);
|
|
704
742
|
this.resetDateTimeInputs();
|
|
743
|
+
this.onChange('');
|
|
705
744
|
}
|
|
706
745
|
onBlurInput(event) {
|
|
707
746
|
this.blurInputEvent.emit(event);
|
|
@@ -738,7 +777,7 @@ export class CaInputDatetimePickerComponent {
|
|
|
738
777
|
this.destroy$.complete();
|
|
739
778
|
}
|
|
740
779
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: CaInputDatetimePickerComponent, deps: [{ token: i1.NgControl, self: true }, { token: i2.CalendarDateTimePickerService }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
741
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CaInputDatetimePickerComponent, isStandalone: true, selector: "ca-input-datetime-picker", inputs: { inputConfig: "inputConfig" }, outputs: { clearInputEvent: "clear", blurInputEvent: "blurInput", selectLastOneForSelectionEmitter: "selectLastOneForSelectionEmitter", selectLastOneAfterMouseUpEmitter: "selectLastOneAfterMouseUpEmitter", onDatePasteEmitter: "onDatePasteEmitter", onFocusEmitter: "onFocusEmitter", changeSelectionEmmiter: "changeSelectionEmmiter", setSelectionEmmiter: "setSelectionEmmiter" }, providers: [CalendarDateTimePickerService], viewQueries: [{ propertyName: "caInputPlaceholderIconComponent", first: true, predicate: CaInputPlaceholderIconComponent, descendants: true }, { propertyName: "dateTimePopover", first: true, predicate: ["dateTimePopover"], descendants: true }, { propertyName: "caInputComponent", first: true, predicate: CaInputComponent, descendants: true, static: true }, { propertyName: "span1", first: true, predicate: ["span1"], descendants: true }, { propertyName: "span2", first: true, predicate: ["span2"], descendants: true }, { propertyName: "span3", first: true, predicate: ["span3"], descendants: true }, { propertyName: "holder1", first: true, predicate: ["holder1"], descendants: true }], ngImport: i0, template: "<div\n class=\"datetime-picker-main-holder input-custom-group datetimeclass\"\n [ngClass]=\"\n getSuperControl\n | inputContainerClass\n : caInputComponent.isFocusInput\n : caInputComponent.isTouchedInput\n : inputConfig\n : getSuperControl?.value\n \"\n>\n <div\n #holder1\n class=\"date_time_holder input-control\"\n [class.active]=\"showDateInput\"\n tabindex=\"-1\"\n (mousedown)=\"selectLastOneForSelection()\"\n (mouseup)=\"selectLastOneAfterMouseUp()\"\n (paste)=\"onDatePaste($event)\"\n (keydown)=\"changeSelection($event, true)\"\n (click)=\"toggleDropdownOptions()\"\n [ngStyle]=\"{\n 'padding-left': inputConfig.isIconHidden ? '2px' : '27px'\n }\"\n [ngClass]=\"\n caInputComponent.isFocusInput\n | inputDatetimePickerClass\n : false\n : getSuperControl\n : inputConfig\n : caInputComponent.isTouchedInput\n : getSuperControl?.value\n \"\n >\n <span\n #span1\n class=\"main\"\n [ngClass]=\"{\n 'reset-selection-color': !caInputComponent.isFocusInput\n }\"\n tabindex=\"0\"\n (mouseup)=\"setSelection($event)\"\n (keydown)=\"changeSelection($event)\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? 'mm' : 'HH'\"\n ></span>\n <span>\n <div\n class=\"border-picker\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? '/' : ':'\"\n ></div>\n </span>\n <span\n #span2\n class=\"main\"\n [ngClass]=\"{\n 'reset-selection-color': !caInputComponent.isFocusInput\n }\"\n tabindex=\"1\"\n (mouseup)=\"setSelection($event)\"\n (keydown)=\"changeSelection($event)\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? 'dd' : 'MM'\"\n ></span>\n <span>\n <div\n class=\"border-picker\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? '/' : ' '\"\n ></div>\n </span>\n <span\n #span3\n class=\"main\"\n [ngClass]=\"{\n 'reset-selection-color': !caInputComponent.isFocusInput\n }\"\n tabindex=\"2\"\n (mouseup)=\"setSelection($event)\"\n (keydown)=\"changeSelection($event)\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? 'yy' : 'AM'\"\n ></span>\n </div>\n <app-ca-input\n [inputConfig]=\"inputConfig\"\n [dateTimePopover]=\"dateTimePopover\"\n (focusInputEvent)=\"handleFocusInput($event)\"\n (handleToggleDropdownOptions)=\"toggleDropdownOptions()\"\n (closePopover)=\"blurOnDateTime()\"\n (blurInput)=\"onBlurInput($event)\"\n (clear)=\"clearInput($event)\"\n [formControl]=\"getSuperControl! | formControl\"\n ></app-ca-input>\n</div>\n\n<!-- Popover for DateTime Pickers -->\n<ng-template #dateTimePopover let-data=\"data\">\n <div class=\"datetime-dropdown-holder\">\n <ca-custom-datetime-pickers\n [calendarType]=\"\n inputConfig.name === 'datepicker' ||\n inputConfig.name === 'datepickerBankCard'\n ? 'date'\n : 'time'\n \"\n [inputConfig]=\"inputConfig\"\n [placeholder]=\"'MM/DD/YY'\"\n [dateTime]=\"dateTimeInputDate\"\n (closePopover)=\"closePopover()\"\n ></ca-custom-datetime-pickers>\n </div>\n</ng-template>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\";@import\"https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css\";.ca-font-thin{font-weight:100!important}.ca-font-extra-light{font-weight:200!important}.ca-font-light{font-weight:300!important}.ca-font-regular{font-weight:400!important}.ca-font-medium{font-weight:500!important}.ca-font-semi-bold{font-weight:600!important}.ca-font-bold{font-weight:700!important}.ca-font-extra-bold{font-weight:800!important}.ca-font-black{font-weight:900!important}.pickup-delivery-popover{top:-38px!important;max-width:340px!important}.pickup-delivery-popover.bs-popover-top{top:auto!important;bottom:-38px!important}.pickup-delivery-popover.bs-popover-top .load-component .assigned-load-holder{order:3;margin-top:4px;margin-bottom:0!important}.pickup-delivery-popover.bs-popover-top .load-component .statusBar{order:2;margin-top:4px}.pickup-delivery-popover.bs-popover-top .load-component .animation-three-tabs{order:1}.gps_dropdown_popover{top:-38px;max-width:494px}.gps_dropdown_popover .popover-body{padding:0}.table-progress-popover{background-color:unset!important;margin-left:-10px}.table-progress-popover .progress-dropdown{margin-top:-6px;width:260px;height:200px;background:#2f2f2f;border-radius:3px;padding:8px;box-shadow:0 0 4px #00000026;overflow:hidden;-webkit-animation:progressAnimation .25s ease-in-out;animation:progressAnimation .25s ease-in-out}.table-progress-popover .progress-dropdown .progress-header .progress-title{font-size:18px;font-weight:600;color:#fff}.table-progress-popover .progress-dropdown .progress-header .progress-title span{font-weight:400}.table-progress-popover .progress-dropdown .progress-header .progress-total{font-size:14px;line-height:17px;color:#fff}.table-progress-popover .progress-dropdown .table-progress-bar-container{width:100%;height:8px;margin-top:6px;border-radius:2px;overflow:hidden}.table-progress-popover .progress-dropdown .table-progress-bar-container .table-progress-bar{height:100%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-dual-info-container .progress-info-container{width:50%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container{margin-top:10px}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-title{margin-bottom:2px;font-size:11px;font-weight:700;line-height:14px;color:#ffffffb2}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-text{font-size:14px;line-height:18px;color:#fff}.table-progress-popover .progress-dropdown.credit-dropdown{height:100px}@-webkit-keyframes progressAnimation{0%{height:0px}to{height:220px}}@keyframes progressAnimation{0%{height:0px}to{height:220px}}ngb-popover-window{padding:unset!important;border:unset!important}ngb-popover-window .popover-arrow{display:none!important}ngb-popover-window .popover-body{padding:unset!important}.dispatch-note .popover-body{position:relative;top:-4px;left:-4px}.dropdown-menu-popover.bs-popover-end-top .dropdown-container{transform:translate(-4px,-3px)}.dropdown-menu-popover.bs-popover-bottom-end .dropdown-container{transform:translate(3px,-3px)}.dropdown-menu-popover.bs-popover-end-bottom .dropdown-container{transform:translate(-3px,3px)}.dropdown-menu-popover.bs-popover-top-end .dropdown-container{transform:translate(3px,3px)}.dropdown-details-title-card-popover .dropdown-container{transform:translateY(-4px)}.tooltip{font-size:12px;position:relative}.tooltip.show{opacity:.83}.tooltip.fade:after,.tooltip.fade:before{transform:translateY(-10px);transition:all .15s ease-in-out}.tooltip.fade:hover:after,.tooltip.fade:hover:before{opacity:1;transform:translate(0)}.tooltip-inner{padding:4px 10px;white-space:nowrap;max-width:none;border-radius:3px}.tooltip-inner:empty{padding:0}.placeholder-delete .tooltip-inner{background-color:#f66}.placeholder-delete .arrow:before{border-top-color:#f66}.custom-popup-owners-for-flag .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(126%) translate(-50%)!important;width:130px;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-for-flag .arrow{bottom:-18%;transform:rotate(180deg);left:calc(50% + 2.7rem)}.custom-popup-owners-for-flag .tooltip{opacity:.93!important;width:0}.custom-popup-owners{z-index:999}.custom-popup-owners .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners .tooltip{transform:translateY(-61px)!important}.custom-popup-owners-year{z-index:999}.custom-popup-owners-year .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners-year .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners-year .tooltip{transform:translate(70px,-61px)!important}.custom-popup-owners-info .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-100%) translate(-10%);width:200px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;margin-top:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info .tooltip{opacity:.93;width:0}.custom-popup-owners-info .arrow{display:none}.custom-popup-owners-info #phone-inside{position:relative;right:26px;bottom:0}.custom-popup-owners-info-at .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-108%) translate(-7%);width:270px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info-at .tooltip{opacity:1;width:0}.custom-popup-owners-info-at .arrow{display:none}.custom-popup-owners-for-tag .tooltip-inner{color:#3b3b3b;background-color:#fff;width:100px;border-radius:3px;box-shadow:0 0 3px #0003!important}.custom-popup-owners-for-tag .tooltip{top:5px!important}.custom-popup-owners-for-tag .arrow{bottom:-24%}.align-items-flex-start{justify-content:center;align-items:center}.align-items-flex-end{display:flex;justify-content:center;flex-direction:column;align-self:flex-end;align-items:flex-start}.label-add{align-self:flex-start}.fadeInLoad{animation:fadeInLoad .25s}@keyframes fadeInLoad{0%{opacity:0}to{opacity:1}}.fadeIn{opacity:1;-webkit-transition:.25s;-moz-transition:.25s;-o-transition:.25s;transition:.25s}.thisText:hover .fadeIn{opacity:0}.fadeInLoad{animation-name:example;animation-duration:.25s}@keyframes example{0%{transform:scale(.5)}to{transform:scale(1)}}.tooltip.tooltip-table-icons{left:12px!important;opacity:1}.tooltip.tooltip-table-icons .arrow{display:none!important}.tooltip.tooltip-table-icons .tooltip-inner{border-radius:0 50px 50px;background:#28529f}.tooltip.show{opacity:1;animation:fadeIn ease .5s!important;-webkit-animation:fadeIn ease .5s!important;-moz-animation:fadeIn ease .5s!important;-o-animation:fadeIn ease .5s!important;-ms-animation:fadeIn ease .5s!important}.ta-tooltip{position:absolute;font-size:12px;text-align:center;color:#fff;line-height:22px;z-index:999999!important;opacity:0;white-space:nowrap;transform:scale(.7)}.ta-tooltip.ta-tooltip-show{opacity:.85;transform:scale(1);padding:0 12px}.ta-tooltip.ta-tooltip-bottom-right,.ta-tooltip.ta-tooltip-bottom-right-corner{transform-origin:top left;border-radius:0 15px 15px}.ta-tooltip.ta-tooltip-bottom-left{transform-origin:top right;border-radius:15px 0 15px 15px}@keyframes scaleItem{0%{transform:scale(.4)}to{transform:scale(1)}}.app-ca-main-tooltip{pointer-events:none}.app-ca-main-tooltip .tooltip-inner{padding:0;background-color:transparent;pointer-events:none}.app-ca-main-tooltip .tooltip-inner .tooltip-holder{display:flex;font-size:11px;font-weight:700;border-radius:2px;padding:2px 8px;animation:scaleItem .3s;white-space:normal}.app-ca-main-tooltip .tooltip-inner .tooltip-holder:empty{padding:0}.tooltip-arrow{display:none!important}.trucks.semitruck svg path,.trucks.semisleeper svg path,.trucks.flatbed svg path,.trucks.stepdeck svg path,.trucks.lowboyrgn svg path,.trucks.chassis svg path,.trucks.conestoga svg path,.trucks.sidekit svg path,.trucks.container svg path,.trailers.semitruck svg path,.trailers.semisleeper svg path,.trailers.flatbed svg path,.trailers.stepdeck svg path,.trailers.lowboyrgn svg path,.trailers.chassis svg path,.trailers.conestoga svg path,.trailers.sidekit svg path,.trailers.container svg path{fill:#92b1f5}.trucks.boxtruck svg path,.trucks.reefertruck svg path,.trucks.cargovan svg path,.trucks.dryvan svg path,.trucks.reefer svg path,.trailers.boxtruck svg path,.trailers.reefertruck svg path,.trailers.cargovan svg path,.trailers.dryvan svg path,.trailers.reefer svg path{fill:#fbc88b}.trucks.dumptruck svg path,.trucks.cementtruck svg path,.trucks.garbagetruck svg path,.trucks.enddump svg path,.trucks.bottomdump svg path,.trucks.hopper svg path,.trucks.tanker svg path,.trucks.pneumatictanker svg path,.trailers.dumptruck svg path,.trailers.cementtruck svg path,.trailers.garbagetruck svg path,.trailers.enddump svg path,.trailers.bottomdump svg path,.trailers.hopper svg path,.trailers.tanker svg path,.trailers.pneumatictanker svg path{fill:#ed9292}.trucks.towtruck svg path,.trucks.carhauler svg path,.trucks.spotter svg path,.trucks.carhaulerstigner svg path,.trailers.towtruck svg path,.trailers.carhauler svg path,.trailers.spotter svg path,.trailers.carhaulerstigner svg path{fill:#86c9c3}.trucks .svgtext-template-text,.trailers .svgtext-template-text{color:#fff;transition:color .3s ease-in-out}.colors .black svg #droplet{fill:#6c6c6c}.colors .brown svg #droplet{fill:#a1887f}.colors .darkgreen svg #droplet{fill:#4db6a2}.colors .lightgreen svg #droplet{fill:#81c784}.colors .darkblue svg #droplet{fill:#546fd2}.colors .lightblue svg #droplet{fill:#64b5f6}.colors .gray svg #droplet{fill:#aaa}.colors .purple svg #droplet{fill:#ba68c8}.colors .gold svg #droplet{fill:#bcad79}.colors .silver svg #droplet{fill:#dadada}.colors .red svg #droplet{fill:#f96b69}.colors .pink svg #droplet{fill:#f26ec2}.colors .white svg #droplet{fill:#f1f1f1}.colors .orange svg #droplet{fill:#ff8a65}.colors .yellow svg #droplet{fill:#ffd54f}.colors:hover{transition:all .3s ease-in-out}.colors:hover .black svg #droplet{fill:#3c3c3c}.colors:hover .brown svg #droplet{fill:#8d6e63}.colors:hover .darkgreen svg #droplet{fill:#26a690}.colors:hover .lightgreen svg #droplet{fill:#66bb6a}.colors:hover .darkblue svg #droplet{fill:#304fc1}.colors:hover .lightblue svg #droplet{fill:#42a5f5}.colors:hover .gray svg #droplet{fill:#919191}.colors:hover .purple svg #droplet{fill:#ab47bc}.colors:hover .gold svg #droplet{fill:#aa9c6e}.colors:hover .silver svg #droplet{fill:#b7b7b7}.colors:hover .red svg #droplet{fill:#ef5350}.colors:hover .pink svg #droplet{fill:#fa4daa}.colors:hover .white svg #droplet{fill:#fff}.colors:hover .orange svg #droplet{fill:#ff7043}.colors:hover .yellow svg #droplet{fill:#ffca28}.text-color-black{color:#424242!important}.text-color-black::-moz-selection{background-color:#42424233!important;color:#424242!important}.text-color-black::selection{background-color:#42424233!important;color:#424242!important}.text-color-black-2{color:#2f2f2f!important}.text-color-black-2::-moz-selection{background-color:#2f2f2f33!important;color:#2f2f2f!important}.text-color-black-2::selection{background-color:#2f2f2f33!important;color:#2f2f2f!important}.text-color-muted{color:#919191!important}.text-color-muted::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-muted::selection{background-color:#91919133!important;color:#919191!important}.text-color-green{color:#56b4ac!important}.text-color-green::-moz-selection{background-color:#56b4ac33!important;color:#56b4ac!important}.text-color-green::selection{background-color:#56b4ac33!important;color:#56b4ac!important}.text-color-green-2{color:#259f94!important}.text-color-green-2::-moz-selection{background-color:#259f9433!important;color:#259f94!important}.text-color-green-2::selection{background-color:#259f9433!important;color:#259f94!important}.text-color-green-4{color:#86c9c3!important}.text-color-green-4::-moz-selection{background-color:#86c9c333!important;color:#86c9c3!important}.text-color-green-4::selection{background-color:#86c9c333!important;color:#86c9c3!important}.text-color-blue-13{color:#6692f1!important}.text-color-blue-13::-moz-selection{background-color:#6692f133!important;color:#6692f1!important}.text-color-blue-13::selection{background-color:#6692f133!important;color:#6692f1!important}.text-color-blue-16{color:#e9effd!important}.text-color-blue-16::-moz-selection{background-color:#e9effd33!important;color:#e9effd!important}.text-color-blue-16::selection{background-color:#e9effd33!important;color:#e9effd!important}.text-color-blue-18{color:#3b73ed!important}.text-color-blue-18::-moz-selection{background-color:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-18::selection{background-color:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-19{color:#92b1f5!important}.text-color-blue-19::-moz-selection{background-color:#92b1f533!important;color:#92b1f5!important}.text-color-blue-19::selection{background-color:#92b1f533!important;color:#92b1f5!important}.text-color-red-10{color:#e66767!important}.text-color-red-10::-moz-selection{background-color:#e6676733!important;color:#e66767!important}.text-color-red-10::selection{background-color:#e6676733!important;color:#e66767!important}.text-color-red-11{color:#df3c3c!important}.text-color-red-11::-moz-selection{background-color:#df3c3c33!important;color:#df3c3c!important}.text-color-red-11::selection{background-color:#df3c3c33!important;color:#df3c3c!important}.text-color-red-13{color:#ed9292!important}.text-color-red-13::-moz-selection{background-color:#ed929233!important;color:#ed9292!important}.text-color-red-13::selection{background-color:#ed929233!important;color:#ed9292!important}.text-color-yellow{color:#fab15c!important}.text-color-yellow::-moz-selection{background-color:#fab15c33!important;color:#fab15c!important}.text-color-yellow::selection{background-color:#fab15c33!important;color:#fab15c!important}.text-color-purple{color:#b370f0!important}.text-color-purple::-moz-selection{background-color:#b370f033!important;color:#b370f0!important}.text-color-purple::selection{background-color:#b370f033!important;color:#b370f0!important}.text-color-special-filter-purple{color:#9e47ec!important}.text-color-special-filter-purple::-moz-selection{background-color:#9e47ec33!important;color:#9e47ec!important}.text-color-special-filter-purple::selection{background-color:#9e47ec33!important;color:#9e47ec!important}.text-color-light-grey{color:#e5e5e5!important}.text-color-light-grey::-moz-selection{background-color:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey::selection{background-color:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey-2{color:#aaa!important}.text-color-light-grey-2::-moz-selection{background-color:#aaa3!important;color:#aaa!important}.text-color-light-grey-2::selection{background-color:#aaa3!important;color:#aaa!important}.text-color-light-grey-6{color:#ccc!important}.text-color-light-grey-6::-moz-selection{background-color:#ccc3!important;color:#ccc!important}.text-color-light-grey-6::selection{background-color:#ccc3!important;color:#ccc!important}.text-color-white{color:#fff!important}.text-color-white::-moz-selection{background-color:#fff3!important;color:#fff!important}.text-color-white::selection{background-color:#fff3!important;color:#fff!important}.text-color-white-2{color:#fff!important}.text-color-white-2::-moz-selection{background-color:#fff3!important;color:#fff!important}.text-color-white-2::selection{background-color:#fff3!important;color:#fff!important}.text-color-white-4{color:#ffffffb2!important}.text-color-white-4::-moz-selection{background-color:#fff3!important;color:#ffffffb2!important}.text-color-white-4::selection{background-color:#fff3!important;color:#ffffffb2!important}.text-color-bw6-2{color:#6c6c6c!important}.text-color-bw6-2::-moz-selection{background-color:#6c6c6c33!important;color:#6c6c6c!important}.text-color-bw6-2::selection{background-color:#6c6c6c33!important;color:#6c6c6c!important}.text-color-bw-9{color:#dadada!important}.text-color-bw-9::-moz-selection{background-color:#dadada33!important;color:#dadada!important}.text-color-bw-9::selection{background-color:#dadada33!important;color:#dadada!important}.text-color-grey{color:#919191!important}.text-color-grey::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-grey::selection{background-color:#91919133!important;color:#919191!important}.text-color-grey .address-text::-moz-selection,.text-color-grey .marker-bold-text::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-grey .address-text::selection,.text-color-grey .marker-bold-text::selection{background-color:#91919133!important;color:#919191!important}.text-color-orange-1{color:#ff7043!important}.text-color-orange-1::-moz-selection{background-color:#ff704333!important;color:#ff7043!important}.text-color-orange-1::selection{background-color:#ff704333!important;color:#ff7043!important}.text-color-brown-1{color:#865e3a!important}.text-color-brown-1::-moz-selection{background-color:#865e3a33!important;color:#865e3a!important}.text-color-brown-1::selection{background-color:#865e3a33!important;color:#865e3a!important}.text-color-light-blue-2{color:#1ab5e6!important}.text-color-light-blue-2::-moz-selection{background-color:#1ab5e633!important;color:#1ab5e6!important}.text-color-light-blue-2::selection{background-color:#1ab5e633!important;color:#1ab5e6!important}.text-size-11{font-size:11px!important;line-height:14px!important}.text-size-14{font-size:14px!important;line-height:18px!important}.text-size-16{font-size:16px!important;line-height:19px!important}.text-size-18{font-size:18px!important;line-height:22px!important}.text-size-20{font-size:20px!important;line-height:24px!important}.text-size-26{font-size:26px!important;line-height:32px!important}.text-size-28{font-size:28px!important;line-height:34px!important}.font-size-11{font-size:11px!important}.line-height-12{line-height:12px!important}.svg-fill-black svg path,.svg-fill-black svg circle{fill:#424242!important}.svg-fill-white svg path,.svg-fill-white svg circle{fill:#fff!important}.svg-fill-white-2 svg path,.svg-fill-white-2 svg circle{fill:#fff!important}.svg-fill-muted svg path,.svg-fill-muted svg circle{fill:#919191!important}.svg-fill-bw-9 svg path,.svg-fill-bw-9 svg circle{fill:#dadada!important}.svg-fill-light-grey-2 svg path,.svg-fill-light-grey-2 svg circle{fill:#aaa!important}.svg-fill-light-grey-6 svg path,.svg-fill-light-grey-6 svg circle{fill:#ccc!important}.svg-fill-blue-8 svg path,.svg-fill-blue-8 svg circle{fill:#6692f1!important}.svg-fill-blue-13 svg path,.svg-fill-blue-13 svg circle{fill:#6692f1!important}.svg-fill-blue-14 svg path,.svg-fill-blue-14 svg circle{fill:#3b73ed!important}.svg-fill-blue-17 svg path,.svg-fill-blue-17 svg circle{fill:#bed0f9!important}.svg-fill-blue-19 svg path,.svg-fill-blue-19 svg circle{fill:#92b1f5!important}.svg-fill-blue-26 svg path,.svg-fill-blue-26 svg circle{fill:#4dc5eb!important}.svg-fill-green svg path,.svg-fill-green svg circle{fill:#56b4ac!important}.svg-fill-green-2 svg path,.svg-fill-green-2 svg circle{fill:#259f94!important}.svg-fill-green-4 svg path,.svg-fill-green-4 svg circle{fill:#86c9c3!important}.svg-fill-green-6 svg path,.svg-fill-green-6 svg circle{fill:#77bf56!important}.svg-fill-yellow-1 svg path,.svg-fill-yellow-1 svg circle{fill:#fab15c!important}.svg-fill-yellow-4 svg path,.svg-fill-yellow-4 svg circle{fill:#fbc88b!important}.svg-fill-yellow-5 svg path,.svg-fill-yellow-5 svg circle{fill:#f89b2e!important}.svg-fill-yellow-8 svg path,.svg-fill-yellow-8 svg circle{fill:#daad4f!important}.svg-fill-white-4 svg path,.svg-fill-white-4 svg circle{fill:#ffffffb2!important}.svg-fill-grey svg path,.svg-fill-grey svg circle{fill:#919191!important}.svg-fill-red-10 svg path,.svg-fill-red-10 svg circle{fill:#e66767!important}.svg-fill-red-11 svg path,.svg-fill-red-11 svg circle{fill:#df3c3c!important}.svg-fill-red-14 svg path,.svg-fill-red-14 svg circle{fill:#c20c0c!important}.svg-fill-red-18 svg path,.svg-fill-red-18 svg circle{fill:#e668a0!important}.svg-fill-orange-4 svg path,.svg-fill-orange-4 svg circle{fill:#ff906d!important}.svg-fill-brown svg path,.svg-fill-brown svg circle{fill:#865e3a!important}.svg-fill-purple-4 svg path,.svg-fill-purple-4 svg circle{fill:#9e47ec!important}.svg-hover-white svg path{transition:fill .3s ease-in-out}.svg-hover-white:hover svg path{fill:#fff!important}.svg-hover-white-2 svg path{transition:fill .3s ease-in-out}.svg-hover-white-2:hover svg path{fill:#fff!important}.svg-hover-muted svg path{transition:fill .3s ease-in-out}.svg-hover-muted:hover svg path{fill:#919191!important}.svg-hover-grey-4 svg path{transition:fill .3s ease-in-out}.svg-hover-grey-4:hover svg path{fill:#ccc!important}.svg-hover-black svg path{transition:fill .3s ease-in-out}.svg-hover-black:hover svg path{fill:#424242!important}.svg-hover-blue-10 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-10:hover svg path{fill:#6f9ee033!important}.svg-hover-blue-15 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-15:hover svg path{fill:#0b49d1!important}.svg-hover-blue-19 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-19:hover svg path{fill:#92b1f5!important}.svg-hover-bw6-2 svg path{transition:fill .3s ease-in-out}.svg-hover-bw6-2:hover svg path{fill:#6c6c6c!important}.svg-hover-trash-red svg path{transition:fill .3s ease-in-out}.svg-hover-trash-red:hover svg path{fill:#ff5050!important}.svg-hover-red-14 svg path{transition:fill .3s ease-in-out}.svg-hover-red-14:hover svg path{fill:#c20c0c!important}.svg-size-6 svg{width:6px;height:6px}.svg-size-10 svg{width:10px;height:10px}.svg-size-12 svg{width:12px;height:12px}.svg-size-14 svg{width:14px;height:14px}.svg-size-16 svg{width:16px;height:16px}.svg-size-17 svg{width:17px;height:17px}.svg-size-18 svg{width:18px;height:18px}.svg-size-22 svg{width:22px;height:22px}.svg-size-23 svg{width:23px;height:23px}.svg-size-26 svg{width:26px;height:26px}.svg-size-44-16 svg{width:44px;height:16px}.background-transparent{background-color:transparent}.background-black{background-color:#424242}.background-black-2{background-color:#2f2f2f}.background-black-3{background-color:#1d1d1d}.background-gray{background-color:#e5e5e5}.background-light-gray-6{background-color:#ccc}.background-light-gray-2{background-color:#aaa}.background-blue-13{background-color:#6692f1}.background-blue-14,.background-blue-18{background-color:#3b73ed}.background-green-0{background-color:#56b4ac}.background-green-2{background-color:#259f94}.background-green-3{background-color:#b6dfdb}.background-green-4,.background-green-6{background-color:#86c9c3}.background-dark-2{background-color:#91919133}.background-red-19{background-color:#df3d85}.background-purple-4{background-color:#9e47ec}.background-gold-bold{background-color:#cf961d}.background-gold-subtle{background-color:#e4c481}.background-orange-3{background-color:#ffb097}.background-orange-4{background-color:#ff906d}.background-orange-7{background-color:#ffcfc0}.background-yellow-8{background-color:#daad4f}.background-bw5{background-color:#919191}.background-bw6-2{background-color:#6c6c6c}.background-hover-black{transition:background-color .3s ease-in-out}.background-hover-black:hover{background-color:#424242!important}.background-hover-bw2{transition:background-color .3s ease-in-out}.background-hover-bw2:hover{background-color:#eee!important}.background-hover-bw6-2{transition:background-color .3s ease-in-out}.background-hover-bw6-2:hover{background-color:#6c6c6c!important}.background-hover-blue-13{transition:background-color .3s ease-in-out}.background-hover-blue-13:hover{background-color:#6692f1!important}.background-hover-blue-15{transition:background-color .3s ease-in-out}.background-hover-blue-15:hover{background-color:#0b49d1!important}.background-hover-gray{transition:background-color .3s ease-in-out}.background-hover-gray:hover{background-color:#e5e5e5!important}.br-1{border-radius:1px}.br-2{border-radius:2px}.br-3{border-radius:3px}.br-10{border-radius:10px}.br-circle{border-radius:50%}.padding-2{padding:2px}.padding-4{padding:4px}.padding-6{padding:6px}.padding-y-2{padding-top:2px;padding-bottom:2px}.padding-y-4{padding-top:4px;padding-bottom:4px}.padding-y-6{padding-top:6px;padding-bottom:6px}.padding-x-4{padding-left:4px;padding-right:4px}.padding-x-5{padding-left:5px;padding-right:5px}.padding-x-6{padding-left:6px;padding-right:6px}.margin-1{margin:1px}.margin-y-1{margin-top:1px;margin-bottom:1px}.margin-x-1{margin-left:1px;margin-right:1px}.margin-t-1{margin-top:1px}.margin-r-1{margin-right:1px}.margin-b-1{margin-bottom:1px}.margin-l-1{margin-left:1px}.margin-2{margin:2px}.margin-y-2{margin-top:2px;margin-bottom:2px}.margin-x-2{margin-left:2px;margin-right:2px}.margin-t-2{margin-top:2px}.margin-r-2{margin-right:2px}.margin-b-2{margin-bottom:2px}.margin-l-2{margin-left:2px}.margin-4{margin:4px}.margin-y-4{margin-top:4px;margin-bottom:4px}.margin-x-4{margin-left:4px;margin-right:4px}.margin-t-4{margin-top:4px}.margin-r-4{margin-right:4px}.margin-b-4{margin-bottom:4px}.margin-l-4{margin-left:4px}.margin-5{margin:5px}.margin-y-5{margin-top:5px;margin-bottom:5px}.margin-x-5{margin-left:5px;margin-right:5px}.margin-t-5{margin-top:5px}.margin-r-5{margin-right:5px}.margin-b-5{margin-bottom:5px}.margin-l-5{margin-left:5px}.margin-6{margin:6px}.margin-y-6{margin-top:6px;margin-bottom:6px}.margin-x-6{margin-left:6px;margin-right:6px}.margin-t-6{margin-top:6px}.margin-r-6{margin-right:6px}.margin-b-6{margin-bottom:6px}.margin-l-6{margin-left:6px}.margin-8{margin:8px}.margin-y-8{margin-top:8px;margin-bottom:8px}.margin-x-8{margin-left:8px;margin-right:8px}.margin-t-8{margin-top:8px}.margin-r-8{margin-right:8px}.margin-b-8{margin-bottom:8px}.margin-l-8{margin-left:8px}.margin-15{margin:15px}.margin-y-15{margin-top:15px;margin-bottom:15px}.margin-x-15{margin-left:15px;margin-right:15px}.margin-t-15{margin-top:15px}.margin-r-15{margin-right:15px}.margin-b-15{margin-bottom:15px}.margin-l-15{margin-left:15px}.margin-24{margin:24px}.margin-y-24{margin-top:24px;margin-bottom:24px}.margin-x-24{margin-left:24px;margin-right:24px}.margin-t-24{margin-top:24px}.margin-r-24{margin-right:24px}.margin-b-24{margin-bottom:24px}.margin-l-24{margin-left:24px}.gap-xs{gap:2px}.w-1{width:1px}.h-1{height:1px}.w-10{width:10px}.h-10{height:10px}.w-14{width:14px}.h-14{height:14px}.w-18{width:18px}.h-18{height:18px}.w-31{width:31px}.h-31{height:31px}.w-36{width:36px}.h-36{height:36px}.w-120{width:120px}.h-120{height:120px}@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.filter-dropdown-popover{width:260px;position:relative;top:-4px;left:-4px}.filter-dropdown-popover-max-height{max-height:360px}.filter-dropdown-list{max-height:260px;overflow-y:auto}.filter-dropdown-list-icon{height:26px;transition:background-color .3s ease-in-out}.filter-dropdown-list-icon-value{height:14px;width:14px}.filter-dropdown-list-icon-remove{display:none}.filter-dropdown-list-icon:hover{background-color:#424242}.filter-dropdown-list-icon:hover .filter-dropdown-icon-count{display:none}.filter-dropdown-list-icon-selected:hover{background-color:#0b49d1}.filter-dropdown-list-item-icons{transition:opacity .3s ease-in-out;opacity:0}.filter-dropdown-list-item-status-circle{height:10px;width:10px}.filter-dropdown-list-item-remove{display:none}.filter-dropdown-list-item:hover{background-color:#424242}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons{opacity:1}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons svg path{fill:var(--svg-fill-color, #e66767)}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove{display:flex}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove svg path{fill:#e66767!important}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-count{display:none!important}.filter-dropdown-icon{height:26px;width:26px}.filter-dropdown-count{height:14px;width:14px}.filter-dropdown-count-remove,.filter-dropdown-count-hover:hover .filter-dropdown-count-value{display:none}.filter-dropdown-count-hover:hover .filter-dropdown-count-remove{display:flex}.filter-dropdown-button{height:26px}.filter-dropdown-footer-button{color:#dadada;transition:color .3s ease-in-out,background-color .3s ease-in-out;height:18px;width:50%}.filter-dropdown-footer-button-set{color:#fff;background-color:#3b73ed}.filter-dropdown-footer-button-set:hover{background-color:#e9effd;color:#0b49d1}.filter-dropdown-footer-button-clear{color:#dadada}.filter-dropdown-footer-button-clear:hover{background-color:#eee;color:#424242}.filter-dropdown-list-badge{min-width:18px}*{margin:0;font-family:Montserrat,sans-serif}html{scroll-behavior:auto!important}.gm-style-iw-chr,.gm-style-iw-tc{display:none}.gm-style .gm-style-iw-c{border-radius:0}.gm-style-iw{overflow-y:auto!important;overflow-x:hidden!important}.gm-style-iw>div{overflow:visible!important}.infoWindow{overflow:hidden!important}.gm-style-iw-d,.gm-style-iw.gm-style-iw-c{max-height:350px!important}::ng-deep .popover{--bs-popover-border-width: 0;--bs-popover-body-padding-y: 0;--bs-popover-body-padding-x: 0}::ng-deep .popover .popover-arrow{display:none}.c-pointer{cursor:pointer}.ca-scroll-bar{overflow-y:scroll}.ca-scroll-bar::-webkit-scrollbar{width:2px}.ca-scroll-bar::-webkit-scrollbar-thumb{background:#ccc;border-radius:1px}.ca-scroll-bar::-webkit-scrollbar-track{background:#2f2f2f}.datetime-picker-main-holder{position:relative}.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover{transition:.3s ease-in-out}.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-clear{display:inline-block}.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-dropdown-arrow:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-icon:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover app-ca-input-placeholder-icon:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-clear:hover~.input-control{background-color:#dadada}.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-dropdown-arrow:before:hover,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-dropdown-arrow:after:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-icon:before:hover,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-icon:after:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover app-ca-input-placeholder-icon:before:hover,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover app-ca-input-placeholder-icon:after:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-clear:before:hover,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-clear:after:hover~.input-control{background-color:#dadada}.datetime-picker-main-holder.input-custom-group.datetimeclass{border-radius:2px!important}.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-out-filled),.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-in),.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-out),.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-out-filled),.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-in),.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-out-empty){background-color:#eee}.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-out-filled):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-in):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-out):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-out-filled):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-in):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-out-empty):hover{background-color:#dadada}.datetime-picker-main-holder.input-custom-group.datetimeclass.invalid-empty-focus-out{background-color:#fae3e3}.datetime-picker-main-holder.input-custom-group.datetimeclass.invalid-empty-focus-out:hover{background-color:#f5c7c7}.datetime-picker-main-holder.input-custom-group.datetimeclass.valid-focus-out{background-color:#e2ecf9}.datetime-picker-main-holder.input-custom-group.datetimeclass.valid-focus-out:hover{background-color:#c5d8f3}.datetime-picker-main-holder.input-custom-group.datetimeclass.inactive-empty,.datetime-picker-main-holder.input-custom-group.datetimeclass.inactive-filled{background-color:#f7f7f7}.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-out-filled),.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-in),.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-out),.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-out-filled),.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-in),.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-out-empty){background-color:#424242}.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-out-filled):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-in):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-out):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-out-filled):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-in):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-out-empty):hover{background-color:#6c6c6c}.datetime-picker-main-holder.input-custom-group.datetimeclass.dark.valid-focus-out-filled{background-color:red}.datetime-picker-main-holder.input-custom-group.datetimeclass.dark.valid-focus-out-filled:hover{background-color:#c5d8f3}.datetime-picker-main-holder.input-custom-group.datetimeclass.dark.inactive-empty,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark.inactive-filled{background-color:#f7f7f7}\n", "@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.date_time_holder{display:flex;align-items:center;position:absolute;top:0;width:100%;height:100%;padding:0 6px;opacity:0;z-index:20;cursor:text}.date_time_holder span{position:relative;line-height:14px;display:flex;height:100%;align-items:center;z-index:10}.date_time_holder span .border-picker{position:absolute;top:0;left:50%;transform:translate(-50%);height:100%;display:flex;align-items:center;justify-content:center;width:0px}.date_time_holder span::selection{background-color:#fff3;color:#fff}.date_time_holder span div::selection{background-color:#fff3;color:#fff}.date_time_holder::selection{background-color:transparent!important;color:#fff}.date_time_holder span.main{padding:0 2px;outline:none;font-size:14px;z-index:11}.date_time_holder span.main::selection{z-index:10}.date_time_holder span.main:first-child{padding-left:4px}.date_time_holder span.reset-selection-color::selection{background-color:transparent!important;color:#2f2f2f!important}.date_time_holder.focus{opacity:1;padding-left:35px}.date_time_holder.focus span:nth-child(2){z-index:12;pointer-events:none}.date_time_holder.focus span:nth-child(3){z-index:13}.date_time_holder.focus span:nth-child(4){z-index:14;pointer-events:none}.date_time_holder.focus span:nth-child(5){z-index:15}.date_time_holder.valid-focus-out-filled{opacity:1}.date_time_holder.valid-focus-out-filled span,.date_time_holder.valid-focus-out-filled span .border-picker{color:#2f2f2f!important;-webkit-user-select:none;user-select:none}.date_time_holder.dark.valid-focus-out-filled{background:#3b73ed33!important}.date_time_holder.dark.valid-focus-out-filled span,.date_time_holder.dark.valid-focus-out-filled span .border-picker{color:#fff!important}.date_time_holder.dark.valid-focus-out-filled:hover{background:#3b73ed66!important}.date_time_holder.dark.valid-focus-in{background:#0b49d1!important}.date_time_holder.dark.valid-focus-in span,.date_time_holder.dark.valid-focus-in span .border-picker{color:#fff!important}.date_time_holder.focus{background-color:#1d1d1d;color:#fff;transition:.2s ease-in-out}.date_time_holder.valid-focus-in{opacity:1}.date_time_holder.valid-focus-in::selection,.date_time_holder.valid-focus-in div::selection{background-color:#fff3;color:#fff}.date_time_holder.invalid-focus-out-filled{opacity:1}.date_time_holder.date_time_holder_bank_card span.main{padding:0 3px}\n"], dependencies: [{ kind: "ngmodule", type:
|
|
780
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.13", type: CaInputDatetimePickerComponent, isStandalone: true, selector: "ca-input-datetime-picker", inputs: { inputConfig: "inputConfig", formFormat: "formFormat" }, outputs: { clearInputEvent: "clear", blurInputEvent: "blurInput", selectLastOneForSelectionEmitter: "selectLastOneForSelectionEmitter", selectLastOneAfterMouseUpEmitter: "selectLastOneAfterMouseUpEmitter", onDatePasteEmitter: "onDatePasteEmitter", onFocusEmitter: "onFocusEmitter", changeSelectionEmmiter: "changeSelectionEmmiter", setSelectionEmmiter: "setSelectionEmmiter" }, providers: [CalendarDateTimePickerService], viewQueries: [{ propertyName: "caInputPlaceholderIconComponent", first: true, predicate: CaInputPlaceholderIconComponent, descendants: true }, { propertyName: "dateTimePopover", first: true, predicate: ["dateTimePopover"], descendants: true }, { propertyName: "caInputComponent", first: true, predicate: CaInputComponent, descendants: true, static: true }, { propertyName: "span1", first: true, predicate: ["span1"], descendants: true, static: true }, { propertyName: "span2", first: true, predicate: ["span2"], descendants: true, static: true }, { propertyName: "span3", first: true, predicate: ["span3"], descendants: true, static: true }, { propertyName: "holder1", first: true, predicate: ["holder1"], descendants: true, static: true }], ngImport: i0, template: "<div\n class=\"datetime-picker-main-holder input-custom-group datetimeclass\"\n [ngClass]=\"\n getSuperControl\n | inputContainerClass\n : caInputComponent.isFocusInput\n : caInputComponent.isTouchedInput\n : inputConfig\n : getSuperControl?.value\n \"\n>\n <div\n #holder1\n class=\"date_time_holder input-control\"\n [class.active]=\"showDateInput\"\n tabindex=\"-1\"\n (mousedown)=\"selectLastOneForSelection()\"\n (mouseup)=\"selectLastOneAfterMouseUp()\"\n (paste)=\"onDatePaste($event)\"\n (keydown)=\"changeSelection($event, true)\"\n (click)=\"toggleDropdownOptions()\"\n [ngStyle]=\"{\n 'padding-left': inputConfig.isIconHidden ? '2px' : '27px',\n }\"\n [ngClass]=\"\n caInputComponent.isFocusInput\n | inputDatetimePickerClass\n : false\n : getSuperControl\n : inputConfig\n : caInputComponent.isTouchedInput\n : getSuperControl?.value\n \"\n >\n <span\n #span1\n class=\"main\"\n [ngClass]=\"{\n 'reset-selection-color': !caInputComponent.isFocusInput,\n }\"\n tabindex=\"0\"\n (mouseup)=\"setSelection($event)\"\n (keydown)=\"changeSelection($event)\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? 'mm' : 'HH'\"\n ></span>\n <span>\n <div\n class=\"border-picker\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? '/' : ':'\"\n ></div>\n </span>\n <span\n #span2\n class=\"main\"\n [ngClass]=\"{\n 'reset-selection-color': !caInputComponent.isFocusInput,\n }\"\n tabindex=\"1\"\n (mouseup)=\"setSelection($event)\"\n (keydown)=\"changeSelection($event)\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? 'dd' : 'MM'\"\n ></span>\n <span>\n <div\n class=\"border-picker\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? '/' : ' '\"\n ></div>\n </span>\n <span\n #span3\n class=\"main\"\n [ngClass]=\"{\n 'reset-selection-color': !caInputComponent.isFocusInput,\n }\"\n tabindex=\"2\"\n (mouseup)=\"setSelection($event)\"\n (keydown)=\"changeSelection($event)\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? 'yy' : 'AM'\"\n ></span>\n </div>\n <app-ca-input\n [inputConfig]=\"inputConfig\"\n [dateTimePopover]=\"dateTimePopover\"\n (focusInputEvent)=\"handleFocusInput($event)\"\n (handleToggleDropdownOptions)=\"toggleDropdownOptions()\"\n (closePopover)=\"blurOnDateTime()\"\n (blurInput)=\"onBlurInput($event)\"\n (clear)=\"clearInput($event)\"\n [formControl]=\"getSuperControl! | formControl\"\n ></app-ca-input>\n</div>\n<!-- Popover for DateTime Pickers -->\n<ng-template #dateTimePopover let-data=\"data\">\n <div class=\"datetime-dropdown-holder\">\n <ca-custom-datetime-pickers\n [calendarType]=\"\n inputConfig.name === 'datepicker' ||\n inputConfig.name === 'datepickerBankCard'\n ? 'date'\n : 'time'\n \"\n [inputConfig]=\"inputConfig\"\n [placeholder]=\"'MM/DD/YY'\"\n [dateTime]=\"dateTimeInputDate\"\n (closePopover)=\"closePopover()\"\n ></ca-custom-datetime-pickers>\n </div>\n</ng-template>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\";@import\"https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css\";.ca-font-thin{font-weight:100!important}.ca-font-extra-light{font-weight:200!important}.ca-font-light{font-weight:300!important}.ca-font-regular{font-weight:400!important}.ca-font-medium{font-weight:500!important}.ca-font-semi-bold{font-weight:600!important}.ca-font-bold{font-weight:700!important}.ca-font-extra-bold{font-weight:800!important}.ca-font-black{font-weight:900!important}.pickup-delivery-popover{top:-38px!important;max-width:340px!important}.pickup-delivery-popover.bs-popover-top{top:auto!important;bottom:-38px!important}.pickup-delivery-popover.bs-popover-top .load-component .assigned-load-holder{order:3;margin-top:4px;margin-bottom:0!important}.pickup-delivery-popover.bs-popover-top .load-component .statusBar{order:2;margin-top:4px}.pickup-delivery-popover.bs-popover-top .load-component .animation-three-tabs{order:1}.gps_dropdown_popover{top:-38px;max-width:494px}.gps_dropdown_popover .popover-body{padding:0}.table-progress-popover{background-color:unset!important;margin-left:-10px}.table-progress-popover .progress-dropdown{margin-top:-6px;width:260px;height:200px;background:#2f2f2f;border-radius:3px;padding:8px;box-shadow:0 0 4px #00000026;overflow:hidden;-webkit-animation:progressAnimation .25s ease-in-out;animation:progressAnimation .25s ease-in-out}.table-progress-popover .progress-dropdown .progress-header .progress-title{font-size:18px;font-weight:600;color:#fff}.table-progress-popover .progress-dropdown .progress-header .progress-title span{font-weight:400}.table-progress-popover .progress-dropdown .progress-header .progress-total{font-size:14px;line-height:17px;color:#fff}.table-progress-popover .progress-dropdown .table-progress-bar-container{width:100%;height:8px;margin-top:6px;border-radius:2px;overflow:hidden}.table-progress-popover .progress-dropdown .table-progress-bar-container .table-progress-bar{height:100%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-dual-info-container .progress-info-container{width:50%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container{margin-top:10px}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-title{margin-bottom:2px;font-size:11px;font-weight:700;line-height:14px;color:#ffffffb2}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-text{font-size:14px;line-height:18px;color:#fff}.table-progress-popover .progress-dropdown.credit-dropdown{height:100px}@-webkit-keyframes progressAnimation{0%{height:0px}to{height:220px}}@keyframes progressAnimation{0%{height:0px}to{height:220px}}ngb-popover-window{padding:unset!important;border:unset!important}ngb-popover-window .popover-arrow{display:none!important}ngb-popover-window .popover-body{padding:unset!important}.dispatch-note .popover-body{position:relative;top:-4px;left:-4px}.dropdown-menu-popover.bs-popover-end-top .dropdown-container{transform:translate(-4px,-3px)}.dropdown-menu-popover.bs-popover-bottom-end .dropdown-container{transform:translate(3px,-3px)}.dropdown-menu-popover.bs-popover-end-bottom .dropdown-container{transform:translate(-3px,3px)}.dropdown-menu-popover.bs-popover-top-end .dropdown-container{transform:translate(3px,3px)}.dropdown-details-title-card-popover .dropdown-container{transform:translateY(-4px)}.tooltip{font-size:12px;position:relative}.tooltip.show{opacity:.83}.tooltip.fade:after,.tooltip.fade:before{transform:translateY(-10px);transition:all .15s ease-in-out}.tooltip.fade:hover:after,.tooltip.fade:hover:before{opacity:1;transform:translate(0)}.tooltip-inner{padding:4px 10px;white-space:nowrap;max-width:none;border-radius:3px}.tooltip-inner:empty{padding:0}.placeholder-delete .tooltip-inner{background-color:#f66}.placeholder-delete .arrow:before{border-top-color:#f66}.custom-popup-owners-for-flag .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(126%) translate(-50%)!important;width:130px;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-for-flag .arrow{bottom:-18%;transform:rotate(180deg);left:calc(50% + 2.7rem)}.custom-popup-owners-for-flag .tooltip{opacity:.93!important;width:0}.custom-popup-owners{z-index:999}.custom-popup-owners .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners .tooltip{transform:translateY(-61px)!important}.custom-popup-owners-year{z-index:999}.custom-popup-owners-year .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners-year .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners-year .tooltip{transform:translate(70px,-61px)!important}.custom-popup-owners-info .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-100%) translate(-10%);width:200px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;margin-top:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info .tooltip{opacity:.93;width:0}.custom-popup-owners-info .arrow{display:none}.custom-popup-owners-info #phone-inside{position:relative;right:26px;bottom:0}.custom-popup-owners-info-at .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-108%) translate(-7%);width:270px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info-at .tooltip{opacity:1;width:0}.custom-popup-owners-info-at .arrow{display:none}.custom-popup-owners-for-tag .tooltip-inner{color:#3b3b3b;background-color:#fff;width:100px;border-radius:3px;box-shadow:0 0 3px #0003!important}.custom-popup-owners-for-tag .tooltip{top:5px!important}.custom-popup-owners-for-tag .arrow{bottom:-24%}.align-items-flex-start{justify-content:center;align-items:center}.align-items-flex-end{display:flex;justify-content:center;flex-direction:column;align-self:flex-end;align-items:flex-start}.label-add{align-self:flex-start}.fadeInLoad{animation:fadeInLoad .25s}@keyframes fadeInLoad{0%{opacity:0}to{opacity:1}}.fadeIn{opacity:1;-webkit-transition:.25s;-moz-transition:.25s;-o-transition:.25s;transition:.25s}.thisText:hover .fadeIn{opacity:0}.fadeInLoad{animation-name:example;animation-duration:.25s}@keyframes example{0%{transform:scale(.5)}to{transform:scale(1)}}.tooltip.tooltip-table-icons{left:12px!important;opacity:1}.tooltip.tooltip-table-icons .arrow{display:none!important}.tooltip.tooltip-table-icons .tooltip-inner{border-radius:0 50px 50px;background:#28529f}.tooltip.show{opacity:1;animation:fadeIn ease .5s!important;-webkit-animation:fadeIn ease .5s!important;-moz-animation:fadeIn ease .5s!important;-o-animation:fadeIn ease .5s!important;-ms-animation:fadeIn ease .5s!important}.ta-tooltip{position:absolute;font-size:12px;text-align:center;color:#fff;line-height:22px;z-index:999999!important;opacity:0;white-space:nowrap;transform:scale(.7)}.ta-tooltip.ta-tooltip-show{opacity:.85;transform:scale(1);padding:0 12px}.ta-tooltip.ta-tooltip-bottom-right,.ta-tooltip.ta-tooltip-bottom-right-corner{transform-origin:top left;border-radius:0 15px 15px}.ta-tooltip.ta-tooltip-bottom-left{transform-origin:top right;border-radius:15px 0 15px 15px}@keyframes scaleItem{0%{transform:scale(.4)}to{transform:scale(1)}}.app-ca-main-tooltip{pointer-events:none}.app-ca-main-tooltip .tooltip-inner{padding:0;background-color:transparent;pointer-events:none}.app-ca-main-tooltip .tooltip-inner .tooltip-holder{display:flex;font-size:11px;font-weight:700;border-radius:2px;padding:2px 8px;animation:scaleItem .3s;white-space:normal}.app-ca-main-tooltip .tooltip-inner .tooltip-holder:empty{padding:0}.tooltip-arrow{display:none!important}.trucks.semitruck svg path,.trucks.semisleeper svg path,.trucks.flatbed svg path,.trucks.stepdeck svg path,.trucks.lowboyrgn svg path,.trucks.chassis svg path,.trucks.conestoga svg path,.trucks.sidekit svg path,.trucks.container svg path,.trailers.semitruck svg path,.trailers.semisleeper svg path,.trailers.flatbed svg path,.trailers.stepdeck svg path,.trailers.lowboyrgn svg path,.trailers.chassis svg path,.trailers.conestoga svg path,.trailers.sidekit svg path,.trailers.container svg path{fill:#92b1f5}.trucks.boxtruck svg path,.trucks.reefertruck svg path,.trucks.cargovan svg path,.trucks.dryvan svg path,.trucks.reefer svg path,.trailers.boxtruck svg path,.trailers.reefertruck svg path,.trailers.cargovan svg path,.trailers.dryvan svg path,.trailers.reefer svg path{fill:#fbc88b}.trucks.dumptruck svg path,.trucks.cementtruck svg path,.trucks.garbagetruck svg path,.trucks.enddump svg path,.trucks.bottomdump svg path,.trucks.hopper svg path,.trucks.tanker svg path,.trucks.pneumatictanker svg path,.trailers.dumptruck svg path,.trailers.cementtruck svg path,.trailers.garbagetruck svg path,.trailers.enddump svg path,.trailers.bottomdump svg path,.trailers.hopper svg path,.trailers.tanker svg path,.trailers.pneumatictanker svg path{fill:#ed9292}.trucks.towtruck svg path,.trucks.carhauler svg path,.trucks.spotter svg path,.trucks.carhaulerstigner svg path,.trailers.towtruck svg path,.trailers.carhauler svg path,.trailers.spotter svg path,.trailers.carhaulerstigner svg path{fill:#86c9c3}.trucks .svgtext-template-text,.trailers .svgtext-template-text{color:#fff;transition:color .3s ease-in-out}.colors .black svg #droplet{fill:#6c6c6c}.colors .brown svg #droplet{fill:#a1887f}.colors .darkgreen svg #droplet{fill:#4db6a2}.colors .lightgreen svg #droplet{fill:#81c784}.colors .darkblue svg #droplet{fill:#546fd2}.colors .lightblue svg #droplet{fill:#64b5f6}.colors .gray svg #droplet{fill:#aaa}.colors .purple svg #droplet{fill:#ba68c8}.colors .gold svg #droplet{fill:#bcad79}.colors .silver svg #droplet{fill:#dadada}.colors .red svg #droplet{fill:#f96b69}.colors .pink svg #droplet{fill:#f26ec2}.colors .white svg #droplet{fill:#f1f1f1}.colors .orange svg #droplet{fill:#ff8a65}.colors .yellow svg #droplet{fill:#ffd54f}.colors:hover{transition:all .3s ease-in-out}.colors:hover .black svg #droplet{fill:#3c3c3c}.colors:hover .brown svg #droplet{fill:#8d6e63}.colors:hover .darkgreen svg #droplet{fill:#26a690}.colors:hover .lightgreen svg #droplet{fill:#66bb6a}.colors:hover .darkblue svg #droplet{fill:#304fc1}.colors:hover .lightblue svg #droplet{fill:#42a5f5}.colors:hover .gray svg #droplet{fill:#919191}.colors:hover .purple svg #droplet{fill:#ab47bc}.colors:hover .gold svg #droplet{fill:#aa9c6e}.colors:hover .silver svg #droplet{fill:#b7b7b7}.colors:hover .red svg #droplet{fill:#ef5350}.colors:hover .pink svg #droplet{fill:#fa4daa}.colors:hover .white svg #droplet{fill:#fff}.colors:hover .orange svg #droplet{fill:#ff7043}.colors:hover .yellow svg #droplet{fill:#ffca28}.text-color-black{color:#424242!important}.text-color-black::-moz-selection{background-color:#42424233!important;color:#424242!important}.text-color-black::selection{background-color:#42424233!important;color:#424242!important}.text-color-black-2{color:#2f2f2f!important}.text-color-black-2::-moz-selection{background-color:#2f2f2f33!important;color:#2f2f2f!important}.text-color-black-2::selection{background-color:#2f2f2f33!important;color:#2f2f2f!important}.text-color-muted{color:#919191!important}.text-color-muted::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-muted::selection{background-color:#91919133!important;color:#919191!important}.text-color-green{color:#56b4ac!important}.text-color-green::-moz-selection{background-color:#56b4ac33!important;color:#56b4ac!important}.text-color-green::selection{background-color:#56b4ac33!important;color:#56b4ac!important}.text-color-green-2{color:#259f94!important}.text-color-green-2::-moz-selection{background-color:#259f9433!important;color:#259f94!important}.text-color-green-2::selection{background-color:#259f9433!important;color:#259f94!important}.text-color-green-4{color:#86c9c3!important}.text-color-green-4::-moz-selection{background-color:#86c9c333!important;color:#86c9c3!important}.text-color-green-4::selection{background-color:#86c9c333!important;color:#86c9c3!important}.text-color-blue-13{color:#6692f1!important}.text-color-blue-13::-moz-selection{background-color:#6692f133!important;color:#6692f1!important}.text-color-blue-13::selection{background-color:#6692f133!important;color:#6692f1!important}.text-color-blue-16{color:#e9effd!important}.text-color-blue-16::-moz-selection{background-color:#e9effd33!important;color:#e9effd!important}.text-color-blue-16::selection{background-color:#e9effd33!important;color:#e9effd!important}.text-color-blue-18{color:#3b73ed!important}.text-color-blue-18::-moz-selection{background-color:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-18::selection{background-color:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-19{color:#92b1f5!important}.text-color-blue-19::-moz-selection{background-color:#92b1f533!important;color:#92b1f5!important}.text-color-blue-19::selection{background-color:#92b1f533!important;color:#92b1f5!important}.text-color-red-10{color:#e66767!important}.text-color-red-10::-moz-selection{background-color:#e6676733!important;color:#e66767!important}.text-color-red-10::selection{background-color:#e6676733!important;color:#e66767!important}.text-color-red-11{color:#df3c3c!important}.text-color-red-11::-moz-selection{background-color:#df3c3c33!important;color:#df3c3c!important}.text-color-red-11::selection{background-color:#df3c3c33!important;color:#df3c3c!important}.text-color-red-13{color:#ed9292!important}.text-color-red-13::-moz-selection{background-color:#ed929233!important;color:#ed9292!important}.text-color-red-13::selection{background-color:#ed929233!important;color:#ed9292!important}.text-color-yellow{color:#fab15c!important}.text-color-yellow::-moz-selection{background-color:#fab15c33!important;color:#fab15c!important}.text-color-yellow::selection{background-color:#fab15c33!important;color:#fab15c!important}.text-color-purple{color:#b370f0!important}.text-color-purple::-moz-selection{background-color:#b370f033!important;color:#b370f0!important}.text-color-purple::selection{background-color:#b370f033!important;color:#b370f0!important}.text-color-special-filter-purple{color:#9e47ec!important}.text-color-special-filter-purple::-moz-selection{background-color:#9e47ec33!important;color:#9e47ec!important}.text-color-special-filter-purple::selection{background-color:#9e47ec33!important;color:#9e47ec!important}.text-color-light-grey{color:#e5e5e5!important}.text-color-light-grey::-moz-selection{background-color:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey::selection{background-color:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey-2{color:#aaa!important}.text-color-light-grey-2::-moz-selection{background-color:#aaa3!important;color:#aaa!important}.text-color-light-grey-2::selection{background-color:#aaa3!important;color:#aaa!important}.text-color-light-grey-6{color:#ccc!important}.text-color-light-grey-6::-moz-selection{background-color:#ccc3!important;color:#ccc!important}.text-color-light-grey-6::selection{background-color:#ccc3!important;color:#ccc!important}.text-color-white{color:#fff!important}.text-color-white::-moz-selection{background-color:#fff3!important;color:#fff!important}.text-color-white::selection{background-color:#fff3!important;color:#fff!important}.text-color-white-2{color:#fff!important}.text-color-white-2::-moz-selection{background-color:#fff3!important;color:#fff!important}.text-color-white-2::selection{background-color:#fff3!important;color:#fff!important}.text-color-white-4{color:#ffffffb2!important}.text-color-white-4::-moz-selection{background-color:#fff3!important;color:#ffffffb2!important}.text-color-white-4::selection{background-color:#fff3!important;color:#ffffffb2!important}.text-color-bw6-2{color:#6c6c6c!important}.text-color-bw6-2::-moz-selection{background-color:#6c6c6c33!important;color:#6c6c6c!important}.text-color-bw6-2::selection{background-color:#6c6c6c33!important;color:#6c6c6c!important}.text-color-bw-9{color:#dadada!important}.text-color-bw-9::-moz-selection{background-color:#dadada33!important;color:#dadada!important}.text-color-bw-9::selection{background-color:#dadada33!important;color:#dadada!important}.text-color-grey{color:#919191!important}.text-color-grey::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-grey::selection{background-color:#91919133!important;color:#919191!important}.text-color-grey .address-text::-moz-selection,.text-color-grey .marker-bold-text::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-grey .address-text::selection,.text-color-grey .marker-bold-text::selection{background-color:#91919133!important;color:#919191!important}.text-color-orange-1{color:#ff7043!important}.text-color-orange-1::-moz-selection{background-color:#ff704333!important;color:#ff7043!important}.text-color-orange-1::selection{background-color:#ff704333!important;color:#ff7043!important}.text-color-brown-1{color:#865e3a!important}.text-color-brown-1::-moz-selection{background-color:#865e3a33!important;color:#865e3a!important}.text-color-brown-1::selection{background-color:#865e3a33!important;color:#865e3a!important}.text-color-light-blue-2{color:#1ab5e6!important}.text-color-light-blue-2::-moz-selection{background-color:#1ab5e633!important;color:#1ab5e6!important}.text-color-light-blue-2::selection{background-color:#1ab5e633!important;color:#1ab5e6!important}.text-size-11{font-size:11px!important;line-height:14px!important}.text-size-14{font-size:14px!important;line-height:18px!important}.text-size-16{font-size:16px!important;line-height:19px!important}.text-size-18{font-size:18px!important;line-height:22px!important}.text-size-20{font-size:20px!important;line-height:24px!important}.text-size-26{font-size:26px!important;line-height:32px!important}.text-size-28{font-size:28px!important;line-height:34px!important}.font-size-11{font-size:11px!important}.line-height-12{line-height:12px!important}.svg-fill-black svg path,.svg-fill-black svg circle{fill:#424242!important}.svg-fill-white svg path,.svg-fill-white svg circle{fill:#fff!important}.svg-fill-white-2 svg path,.svg-fill-white-2 svg circle{fill:#fff!important}.svg-fill-muted svg path,.svg-fill-muted svg circle{fill:#919191!important}.svg-fill-bw-9 svg path,.svg-fill-bw-9 svg circle{fill:#dadada!important}.svg-fill-light-grey-2 svg path,.svg-fill-light-grey-2 svg circle{fill:#aaa!important}.svg-fill-light-grey-6 svg path,.svg-fill-light-grey-6 svg circle{fill:#ccc!important}.svg-fill-blue-8 svg path,.svg-fill-blue-8 svg circle{fill:#6692f1!important}.svg-fill-blue-13 svg path,.svg-fill-blue-13 svg circle{fill:#6692f1!important}.svg-fill-blue-14 svg path,.svg-fill-blue-14 svg circle{fill:#3b73ed!important}.svg-fill-blue-17 svg path,.svg-fill-blue-17 svg circle{fill:#bed0f9!important}.svg-fill-blue-19 svg path,.svg-fill-blue-19 svg circle{fill:#92b1f5!important}.svg-fill-blue-26 svg path,.svg-fill-blue-26 svg circle{fill:#4dc5eb!important}.svg-fill-green svg path,.svg-fill-green svg circle{fill:#56b4ac!important}.svg-fill-green-2 svg path,.svg-fill-green-2 svg circle{fill:#259f94!important}.svg-fill-green-4 svg path,.svg-fill-green-4 svg circle{fill:#86c9c3!important}.svg-fill-green-6 svg path,.svg-fill-green-6 svg circle{fill:#77bf56!important}.svg-fill-yellow-1 svg path,.svg-fill-yellow-1 svg circle{fill:#fab15c!important}.svg-fill-yellow-4 svg path,.svg-fill-yellow-4 svg circle{fill:#fbc88b!important}.svg-fill-yellow-5 svg path,.svg-fill-yellow-5 svg circle{fill:#f89b2e!important}.svg-fill-yellow-8 svg path,.svg-fill-yellow-8 svg circle{fill:#daad4f!important}.svg-fill-white-4 svg path,.svg-fill-white-4 svg circle{fill:#ffffffb2!important}.svg-fill-grey svg path,.svg-fill-grey svg circle{fill:#919191!important}.svg-fill-red-10 svg path,.svg-fill-red-10 svg circle{fill:#e66767!important}.svg-fill-red-11 svg path,.svg-fill-red-11 svg circle{fill:#df3c3c!important}.svg-fill-red-14 svg path,.svg-fill-red-14 svg circle{fill:#c20c0c!important}.svg-fill-red-18 svg path,.svg-fill-red-18 svg circle{fill:#e668a0!important}.svg-fill-orange-4 svg path,.svg-fill-orange-4 svg circle{fill:#ff906d!important}.svg-fill-brown svg path,.svg-fill-brown svg circle{fill:#865e3a!important}.svg-fill-purple-4 svg path,.svg-fill-purple-4 svg circle{fill:#9e47ec!important}.svg-hover-white svg path{transition:fill .3s ease-in-out}.svg-hover-white:hover svg path{fill:#fff!important}.svg-hover-white-2 svg path{transition:fill .3s ease-in-out}.svg-hover-white-2:hover svg path{fill:#fff!important}.svg-hover-muted svg path{transition:fill .3s ease-in-out}.svg-hover-muted:hover svg path{fill:#919191!important}.svg-hover-grey-4 svg path{transition:fill .3s ease-in-out}.svg-hover-grey-4:hover svg path{fill:#ccc!important}.svg-hover-black svg path{transition:fill .3s ease-in-out}.svg-hover-black:hover svg path{fill:#424242!important}.svg-hover-blue-10 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-10:hover svg path{fill:#6f9ee033!important}.svg-hover-blue-15 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-15:hover svg path{fill:#0b49d1!important}.svg-hover-blue-19 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-19:hover svg path{fill:#92b1f5!important}.svg-hover-bw6-2 svg path{transition:fill .3s ease-in-out}.svg-hover-bw6-2:hover svg path{fill:#6c6c6c!important}.svg-hover-trash-red svg path{transition:fill .3s ease-in-out}.svg-hover-trash-red:hover svg path{fill:#ff5050!important}.svg-hover-red-14 svg path{transition:fill .3s ease-in-out}.svg-hover-red-14:hover svg path{fill:#c20c0c!important}.svg-size-6 svg{width:6px;height:6px}.svg-size-10 svg{width:10px;height:10px}.svg-size-12 svg{width:12px;height:12px}.svg-size-14 svg{width:14px;height:14px}.svg-size-16 svg{width:16px;height:16px}.svg-size-17 svg{width:17px;height:17px}.svg-size-18 svg{width:18px;height:18px}.svg-size-22 svg{width:22px;height:22px}.svg-size-23 svg{width:23px;height:23px}.svg-size-26 svg{width:26px;height:26px}.svg-size-44-16 svg{width:44px;height:16px}.background-transparent{background-color:transparent}.background-black{background-color:#424242}.background-black-2{background-color:#2f2f2f}.background-black-3{background-color:#1d1d1d}.background-gray{background-color:#e5e5e5}.background-light-gray-6{background-color:#ccc}.background-light-gray-2{background-color:#aaa}.background-blue-13{background-color:#6692f1}.background-blue-14,.background-blue-18{background-color:#3b73ed}.background-green-0{background-color:#56b4ac}.background-green-2{background-color:#259f94}.background-green-3{background-color:#b6dfdb}.background-green-4,.background-green-6{background-color:#86c9c3}.background-dark-2{background-color:#91919133}.background-red-19{background-color:#df3d85}.background-purple-4{background-color:#9e47ec}.background-gold-bold{background-color:#cf961d}.background-gold-subtle{background-color:#e4c481}.background-orange-3{background-color:#ffb097}.background-orange-4{background-color:#ff906d}.background-orange-7{background-color:#ffcfc0}.background-yellow-8{background-color:#daad4f}.background-bw5{background-color:#919191}.background-bw6-2{background-color:#6c6c6c}.background-hover-black{transition:background-color .3s ease-in-out}.background-hover-black:hover{background-color:#424242!important}.background-hover-bw2{transition:background-color .3s ease-in-out}.background-hover-bw2:hover{background-color:#eee!important}.background-hover-bw6-2{transition:background-color .3s ease-in-out}.background-hover-bw6-2:hover{background-color:#6c6c6c!important}.background-hover-blue-13{transition:background-color .3s ease-in-out}.background-hover-blue-13:hover{background-color:#6692f1!important}.background-hover-blue-15{transition:background-color .3s ease-in-out}.background-hover-blue-15:hover{background-color:#0b49d1!important}.background-hover-gray{transition:background-color .3s ease-in-out}.background-hover-gray:hover{background-color:#e5e5e5!important}.br-1{border-radius:1px}.br-2{border-radius:2px}.br-3{border-radius:3px}.br-10{border-radius:10px}.br-circle{border-radius:50%}.padding-2{padding:2px}.padding-4{padding:4px}.padding-6{padding:6px}.padding-y-2{padding-top:2px;padding-bottom:2px}.padding-y-4{padding-top:4px;padding-bottom:4px}.padding-y-6{padding-top:6px;padding-bottom:6px}.padding-x-4{padding-left:4px;padding-right:4px}.padding-x-5{padding-left:5px;padding-right:5px}.padding-x-6{padding-left:6px;padding-right:6px}.margin-1{margin:1px}.margin-y-1{margin-top:1px;margin-bottom:1px}.margin-x-1{margin-left:1px;margin-right:1px}.margin-t-1{margin-top:1px}.margin-r-1{margin-right:1px}.margin-b-1{margin-bottom:1px}.margin-l-1{margin-left:1px}.margin-2{margin:2px}.margin-y-2{margin-top:2px;margin-bottom:2px}.margin-x-2{margin-left:2px;margin-right:2px}.margin-t-2{margin-top:2px}.margin-r-2{margin-right:2px}.margin-b-2{margin-bottom:2px}.margin-l-2{margin-left:2px}.margin-4{margin:4px}.margin-y-4{margin-top:4px;margin-bottom:4px}.margin-x-4{margin-left:4px;margin-right:4px}.margin-t-4{margin-top:4px}.margin-r-4{margin-right:4px}.margin-b-4{margin-bottom:4px}.margin-l-4{margin-left:4px}.margin-5{margin:5px}.margin-y-5{margin-top:5px;margin-bottom:5px}.margin-x-5{margin-left:5px;margin-right:5px}.margin-t-5{margin-top:5px}.margin-r-5{margin-right:5px}.margin-b-5{margin-bottom:5px}.margin-l-5{margin-left:5px}.margin-6{margin:6px}.margin-y-6{margin-top:6px;margin-bottom:6px}.margin-x-6{margin-left:6px;margin-right:6px}.margin-t-6{margin-top:6px}.margin-r-6{margin-right:6px}.margin-b-6{margin-bottom:6px}.margin-l-6{margin-left:6px}.margin-8{margin:8px}.margin-y-8{margin-top:8px;margin-bottom:8px}.margin-x-8{margin-left:8px;margin-right:8px}.margin-t-8{margin-top:8px}.margin-r-8{margin-right:8px}.margin-b-8{margin-bottom:8px}.margin-l-8{margin-left:8px}.margin-15{margin:15px}.margin-y-15{margin-top:15px;margin-bottom:15px}.margin-x-15{margin-left:15px;margin-right:15px}.margin-t-15{margin-top:15px}.margin-r-15{margin-right:15px}.margin-b-15{margin-bottom:15px}.margin-l-15{margin-left:15px}.margin-24{margin:24px}.margin-y-24{margin-top:24px;margin-bottom:24px}.margin-x-24{margin-left:24px;margin-right:24px}.margin-t-24{margin-top:24px}.margin-r-24{margin-right:24px}.margin-b-24{margin-bottom:24px}.margin-l-24{margin-left:24px}.gap-xs{gap:2px}.w-1{width:1px}.h-1{height:1px}.w-10{width:10px}.h-10{height:10px}.w-14{width:14px}.h-14{height:14px}.w-18{width:18px}.h-18{height:18px}.w-31{width:31px}.h-31{height:31px}.w-36{width:36px}.h-36{height:36px}.w-120{width:120px}.h-120{height:120px}@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.filter-dropdown-popover{width:260px;position:relative;top:-4px;left:-4px}.filter-dropdown-popover-max-height{max-height:360px}.filter-dropdown-list{max-height:260px;overflow-y:auto}.filter-dropdown-list-icon{height:26px;transition:background-color .3s ease-in-out}.filter-dropdown-list-icon-value{height:14px;width:14px}.filter-dropdown-list-icon-remove{display:none}.filter-dropdown-list-icon:hover{background-color:#424242}.filter-dropdown-list-icon:hover .filter-dropdown-icon-count{display:none}.filter-dropdown-list-icon-selected:hover{background-color:#0b49d1}.filter-dropdown-list-item-icons{transition:opacity .3s ease-in-out;opacity:0}.filter-dropdown-list-item-status-circle{height:10px;width:10px}.filter-dropdown-list-item-remove{display:none}.filter-dropdown-list-item:hover{background-color:#424242}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons{opacity:1}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons svg path{fill:var(--svg-fill-color, #e66767)}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove{display:flex}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove svg path{fill:#e66767!important}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-count{display:none!important}.filter-dropdown-icon{height:26px;width:26px}.filter-dropdown-count{height:14px;width:14px}.filter-dropdown-count-remove,.filter-dropdown-count-hover:hover .filter-dropdown-count-value{display:none}.filter-dropdown-count-hover:hover .filter-dropdown-count-remove{display:flex}.filter-dropdown-button{height:26px}.filter-dropdown-footer-button{color:#dadada;transition:color .3s ease-in-out,background-color .3s ease-in-out;height:18px;width:50%}.filter-dropdown-footer-button-set{color:#fff;background-color:#3b73ed}.filter-dropdown-footer-button-set:hover{background-color:#e9effd;color:#0b49d1}.filter-dropdown-footer-button-clear{color:#dadada}.filter-dropdown-footer-button-clear:hover{background-color:#eee;color:#424242}.filter-dropdown-list-badge{min-width:18px}*{margin:0;font-family:Montserrat,sans-serif}html{scroll-behavior:auto!important}.gm-style-iw-chr,.gm-style-iw-tc{display:none}.gm-style .gm-style-iw-c{border-radius:0}.gm-style-iw{overflow-y:auto!important;overflow-x:hidden!important}.gm-style-iw>div{overflow:visible!important}.infoWindow{overflow:hidden!important}.gm-style-iw-d,.gm-style-iw.gm-style-iw-c{max-height:350px!important}::ng-deep .popover{--bs-popover-border-width: 0;--bs-popover-body-padding-y: 0;--bs-popover-body-padding-x: 0}::ng-deep .popover .popover-arrow{display:none}.c-pointer{cursor:pointer}.ca-scroll-bar{overflow-y:scroll}.ca-scroll-bar::-webkit-scrollbar{width:2px}.ca-scroll-bar::-webkit-scrollbar-thumb{background:#ccc;border-radius:1px}.ca-scroll-bar::-webkit-scrollbar-track{background:#2f2f2f}.datetime-picker-main-holder{position:relative}.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover{transition:.3s ease-in-out}.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-clear{display:inline-block}.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-dropdown-arrow:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-icon:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover app-ca-input-placeholder-icon:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-clear:hover~.input-control{background-color:#dadada}.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-dropdown-arrow:before:hover,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-dropdown-arrow:after:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-icon:before:hover,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-icon:after:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover app-ca-input-placeholder-icon:before:hover,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover app-ca-input-placeholder-icon:after:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-clear:before:hover,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-clear:after:hover~.input-control{background-color:#dadada}.datetime-picker-main-holder.input-custom-group.datetimeclass{border-radius:2px!important}.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-out-filled),.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-in),.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-out),.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-out-filled),.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-in),.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-out-empty){background-color:#eee}.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-out-filled):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-in):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-out):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-out-filled):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-in):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-out-empty):hover{background-color:#dadada}.datetime-picker-main-holder.input-custom-group.datetimeclass.invalid-empty-focus-out{background-color:#fae3e3}.datetime-picker-main-holder.input-custom-group.datetimeclass.invalid-empty-focus-out:hover{background-color:#f5c7c7}.datetime-picker-main-holder.input-custom-group.datetimeclass.valid-focus-out{background-color:#e2ecf9}.datetime-picker-main-holder.input-custom-group.datetimeclass.valid-focus-out:hover{background-color:#c5d8f3}.datetime-picker-main-holder.input-custom-group.datetimeclass.inactive-empty,.datetime-picker-main-holder.input-custom-group.datetimeclass.inactive-filled{background-color:#f7f7f7;pointer-events:none}.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-out-filled),.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-in),.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-out),.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-out-filled),.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-in),.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-out-empty){background-color:#424242}.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-out-filled):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-in):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-out):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-out-filled):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-in):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-out-empty):hover{background-color:#6c6c6c}.datetime-picker-main-holder.input-custom-group.datetimeclass.dark.valid-focus-out-filled{background-color:red}.datetime-picker-main-holder.input-custom-group.datetimeclass.dark.valid-focus-out-filled:hover{background-color:#c5d8f3}.datetime-picker-main-holder.input-custom-group.datetimeclass.dark.inactive-empty,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark.inactive-filled{background-color:#f7f7f7}\n", "@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.date_time_holder{display:flex;align-items:center;position:absolute;top:0;width:100%;height:100%;padding:0 6px;opacity:0;z-index:20;cursor:text}.date_time_holder span{position:relative;line-height:14px;display:flex;height:100%;align-items:center;z-index:10}.date_time_holder span .border-picker{position:absolute;top:0;left:50%;transform:translate(-50%);height:100%;display:flex;align-items:center;justify-content:center;width:0px}.date_time_holder span::selection{background-color:#fff3;color:#fff}.date_time_holder span div::selection{background-color:#fff3;color:#fff}.date_time_holder::selection{background-color:transparent!important;color:#fff}.date_time_holder span.main{padding:0 2px;outline:none;font-size:14px;z-index:11}.date_time_holder span.main::selection{z-index:10}.date_time_holder span.main:first-child{padding-left:4px}.date_time_holder span.reset-selection-color::selection{background-color:transparent!important;color:#2f2f2f!important}.date_time_holder.focus{opacity:1;padding-left:35px}.date_time_holder.focus span:nth-child(2){z-index:12;pointer-events:none}.date_time_holder.focus span:nth-child(3){z-index:13}.date_time_holder.focus span:nth-child(4){z-index:14;pointer-events:none}.date_time_holder.focus span:nth-child(5){z-index:15}.date_time_holder.valid-focus-out-filled{opacity:1}.date_time_holder.valid-focus-out-filled span,.date_time_holder.valid-focus-out-filled span .border-picker{color:#2f2f2f!important;-webkit-user-select:none;user-select:none}.date_time_holder.dark.valid-focus-out-filled{background:#3b73ed33!important}.date_time_holder.dark.valid-focus-out-filled span,.date_time_holder.dark.valid-focus-out-filled span .border-picker{color:#fff!important}.date_time_holder.dark.valid-focus-out-filled:hover{background:#3b73ed66!important}.date_time_holder.dark.valid-focus-in{background:#0b49d1!important}.date_time_holder.dark.valid-focus-in span,.date_time_holder.dark.valid-focus-in span .border-picker{color:#fff!important}.date_time_holder.focus{background-color:#1d1d1d;color:#fff;transition:.2s ease-in-out}.date_time_holder.valid-focus-in{opacity:1}.date_time_holder.valid-focus-in::selection,.date_time_holder.valid-focus-in div::selection{background-color:#fff3;color:#fff}.date_time_holder.invalid-focus-out-filled{opacity:1}.date_time_holder.date_time_holder_bank_card span.main{padding:0 3px}\n"], dependencies: [{ kind: "ngmodule", type:
|
|
742
781
|
// modules
|
|
743
782
|
CommonModule }, { kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: AngularSvgIconModule }, { kind: "component", type:
|
|
744
783
|
// components
|
|
@@ -761,11 +800,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
761
800
|
InputDatetimePickerClassPipe,
|
|
762
801
|
InputContainerClassPipe,
|
|
763
802
|
FormControlPipe,
|
|
764
|
-
], providers: [CalendarDateTimePickerService], template: "<div\n class=\"datetime-picker-main-holder input-custom-group datetimeclass\"\n [ngClass]=\"\n getSuperControl\n | inputContainerClass\n : caInputComponent.isFocusInput\n : caInputComponent.isTouchedInput\n : inputConfig\n : getSuperControl?.value\n \"\n>\n <div\n #holder1\n class=\"date_time_holder input-control\"\n [class.active]=\"showDateInput\"\n tabindex=\"-1\"\n (mousedown)=\"selectLastOneForSelection()\"\n (mouseup)=\"selectLastOneAfterMouseUp()\"\n (paste)=\"onDatePaste($event)\"\n (keydown)=\"changeSelection($event, true)\"\n (click)=\"toggleDropdownOptions()\"\n [ngStyle]=\"{\n 'padding-left': inputConfig.isIconHidden ? '2px' : '27px'\n }\"\n [ngClass]=\"\n caInputComponent.isFocusInput\n | inputDatetimePickerClass\n : false\n : getSuperControl\n : inputConfig\n : caInputComponent.isTouchedInput\n : getSuperControl?.value\n \"\n >\n <span\n #span1\n class=\"main\"\n [ngClass]=\"{\n 'reset-selection-color': !caInputComponent.isFocusInput\n }\"\n tabindex=\"0\"\n (mouseup)=\"setSelection($event)\"\n (keydown)=\"changeSelection($event)\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? 'mm' : 'HH'\"\n ></span>\n <span>\n <div\n class=\"border-picker\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? '/' : ':'\"\n ></div>\n </span>\n <span\n #span2\n class=\"main\"\n [ngClass]=\"{\n 'reset-selection-color': !caInputComponent.isFocusInput\n }\"\n tabindex=\"1\"\n (mouseup)=\"setSelection($event)\"\n (keydown)=\"changeSelection($event)\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? 'dd' : 'MM'\"\n ></span>\n <span>\n <div\n class=\"border-picker\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? '/' : ' '\"\n ></div>\n </span>\n <span\n #span3\n class=\"main\"\n [ngClass]=\"{\n 'reset-selection-color': !caInputComponent.isFocusInput\n }\"\n tabindex=\"2\"\n (mouseup)=\"setSelection($event)\"\n (keydown)=\"changeSelection($event)\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? 'yy' : 'AM'\"\n ></span>\n </div>\n <app-ca-input\n [inputConfig]=\"inputConfig\"\n [dateTimePopover]=\"dateTimePopover\"\n (focusInputEvent)=\"handleFocusInput($event)\"\n (handleToggleDropdownOptions)=\"toggleDropdownOptions()\"\n (closePopover)=\"blurOnDateTime()\"\n (blurInput)=\"onBlurInput($event)\"\n (clear)=\"clearInput($event)\"\n [formControl]=\"getSuperControl! | formControl\"\n ></app-ca-input>\n</div>\n\n<!-- Popover for DateTime Pickers -->\n<ng-template #dateTimePopover let-data=\"data\">\n <div class=\"datetime-dropdown-holder\">\n <ca-custom-datetime-pickers\n [calendarType]=\"\n inputConfig.name === 'datepicker' ||\n inputConfig.name === 'datepickerBankCard'\n ? 'date'\n : 'time'\n \"\n [inputConfig]=\"inputConfig\"\n [placeholder]=\"'MM/DD/YY'\"\n [dateTime]=\"dateTimeInputDate\"\n (closePopover)=\"closePopover()\"\n ></ca-custom-datetime-pickers>\n </div>\n</ng-template>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\";@import\"https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css\";.ca-font-thin{font-weight:100!important}.ca-font-extra-light{font-weight:200!important}.ca-font-light{font-weight:300!important}.ca-font-regular{font-weight:400!important}.ca-font-medium{font-weight:500!important}.ca-font-semi-bold{font-weight:600!important}.ca-font-bold{font-weight:700!important}.ca-font-extra-bold{font-weight:800!important}.ca-font-black{font-weight:900!important}.pickup-delivery-popover{top:-38px!important;max-width:340px!important}.pickup-delivery-popover.bs-popover-top{top:auto!important;bottom:-38px!important}.pickup-delivery-popover.bs-popover-top .load-component .assigned-load-holder{order:3;margin-top:4px;margin-bottom:0!important}.pickup-delivery-popover.bs-popover-top .load-component .statusBar{order:2;margin-top:4px}.pickup-delivery-popover.bs-popover-top .load-component .animation-three-tabs{order:1}.gps_dropdown_popover{top:-38px;max-width:494px}.gps_dropdown_popover .popover-body{padding:0}.table-progress-popover{background-color:unset!important;margin-left:-10px}.table-progress-popover .progress-dropdown{margin-top:-6px;width:260px;height:200px;background:#2f2f2f;border-radius:3px;padding:8px;box-shadow:0 0 4px #00000026;overflow:hidden;-webkit-animation:progressAnimation .25s ease-in-out;animation:progressAnimation .25s ease-in-out}.table-progress-popover .progress-dropdown .progress-header .progress-title{font-size:18px;font-weight:600;color:#fff}.table-progress-popover .progress-dropdown .progress-header .progress-title span{font-weight:400}.table-progress-popover .progress-dropdown .progress-header .progress-total{font-size:14px;line-height:17px;color:#fff}.table-progress-popover .progress-dropdown .table-progress-bar-container{width:100%;height:8px;margin-top:6px;border-radius:2px;overflow:hidden}.table-progress-popover .progress-dropdown .table-progress-bar-container .table-progress-bar{height:100%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-dual-info-container .progress-info-container{width:50%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container{margin-top:10px}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-title{margin-bottom:2px;font-size:11px;font-weight:700;line-height:14px;color:#ffffffb2}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-text{font-size:14px;line-height:18px;color:#fff}.table-progress-popover .progress-dropdown.credit-dropdown{height:100px}@-webkit-keyframes progressAnimation{0%{height:0px}to{height:220px}}@keyframes progressAnimation{0%{height:0px}to{height:220px}}ngb-popover-window{padding:unset!important;border:unset!important}ngb-popover-window .popover-arrow{display:none!important}ngb-popover-window .popover-body{padding:unset!important}.dispatch-note .popover-body{position:relative;top:-4px;left:-4px}.dropdown-menu-popover.bs-popover-end-top .dropdown-container{transform:translate(-4px,-3px)}.dropdown-menu-popover.bs-popover-bottom-end .dropdown-container{transform:translate(3px,-3px)}.dropdown-menu-popover.bs-popover-end-bottom .dropdown-container{transform:translate(-3px,3px)}.dropdown-menu-popover.bs-popover-top-end .dropdown-container{transform:translate(3px,3px)}.dropdown-details-title-card-popover .dropdown-container{transform:translateY(-4px)}.tooltip{font-size:12px;position:relative}.tooltip.show{opacity:.83}.tooltip.fade:after,.tooltip.fade:before{transform:translateY(-10px);transition:all .15s ease-in-out}.tooltip.fade:hover:after,.tooltip.fade:hover:before{opacity:1;transform:translate(0)}.tooltip-inner{padding:4px 10px;white-space:nowrap;max-width:none;border-radius:3px}.tooltip-inner:empty{padding:0}.placeholder-delete .tooltip-inner{background-color:#f66}.placeholder-delete .arrow:before{border-top-color:#f66}.custom-popup-owners-for-flag .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(126%) translate(-50%)!important;width:130px;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-for-flag .arrow{bottom:-18%;transform:rotate(180deg);left:calc(50% + 2.7rem)}.custom-popup-owners-for-flag .tooltip{opacity:.93!important;width:0}.custom-popup-owners{z-index:999}.custom-popup-owners .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners .tooltip{transform:translateY(-61px)!important}.custom-popup-owners-year{z-index:999}.custom-popup-owners-year .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners-year .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners-year .tooltip{transform:translate(70px,-61px)!important}.custom-popup-owners-info .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-100%) translate(-10%);width:200px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;margin-top:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info .tooltip{opacity:.93;width:0}.custom-popup-owners-info .arrow{display:none}.custom-popup-owners-info #phone-inside{position:relative;right:26px;bottom:0}.custom-popup-owners-info-at .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-108%) translate(-7%);width:270px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info-at .tooltip{opacity:1;width:0}.custom-popup-owners-info-at .arrow{display:none}.custom-popup-owners-for-tag .tooltip-inner{color:#3b3b3b;background-color:#fff;width:100px;border-radius:3px;box-shadow:0 0 3px #0003!important}.custom-popup-owners-for-tag .tooltip{top:5px!important}.custom-popup-owners-for-tag .arrow{bottom:-24%}.align-items-flex-start{justify-content:center;align-items:center}.align-items-flex-end{display:flex;justify-content:center;flex-direction:column;align-self:flex-end;align-items:flex-start}.label-add{align-self:flex-start}.fadeInLoad{animation:fadeInLoad .25s}@keyframes fadeInLoad{0%{opacity:0}to{opacity:1}}.fadeIn{opacity:1;-webkit-transition:.25s;-moz-transition:.25s;-o-transition:.25s;transition:.25s}.thisText:hover .fadeIn{opacity:0}.fadeInLoad{animation-name:example;animation-duration:.25s}@keyframes example{0%{transform:scale(.5)}to{transform:scale(1)}}.tooltip.tooltip-table-icons{left:12px!important;opacity:1}.tooltip.tooltip-table-icons .arrow{display:none!important}.tooltip.tooltip-table-icons .tooltip-inner{border-radius:0 50px 50px;background:#28529f}.tooltip.show{opacity:1;animation:fadeIn ease .5s!important;-webkit-animation:fadeIn ease .5s!important;-moz-animation:fadeIn ease .5s!important;-o-animation:fadeIn ease .5s!important;-ms-animation:fadeIn ease .5s!important}.ta-tooltip{position:absolute;font-size:12px;text-align:center;color:#fff;line-height:22px;z-index:999999!important;opacity:0;white-space:nowrap;transform:scale(.7)}.ta-tooltip.ta-tooltip-show{opacity:.85;transform:scale(1);padding:0 12px}.ta-tooltip.ta-tooltip-bottom-right,.ta-tooltip.ta-tooltip-bottom-right-corner{transform-origin:top left;border-radius:0 15px 15px}.ta-tooltip.ta-tooltip-bottom-left{transform-origin:top right;border-radius:15px 0 15px 15px}@keyframes scaleItem{0%{transform:scale(.4)}to{transform:scale(1)}}.app-ca-main-tooltip{pointer-events:none}.app-ca-main-tooltip .tooltip-inner{padding:0;background-color:transparent;pointer-events:none}.app-ca-main-tooltip .tooltip-inner .tooltip-holder{display:flex;font-size:11px;font-weight:700;border-radius:2px;padding:2px 8px;animation:scaleItem .3s;white-space:normal}.app-ca-main-tooltip .tooltip-inner .tooltip-holder:empty{padding:0}.tooltip-arrow{display:none!important}.trucks.semitruck svg path,.trucks.semisleeper svg path,.trucks.flatbed svg path,.trucks.stepdeck svg path,.trucks.lowboyrgn svg path,.trucks.chassis svg path,.trucks.conestoga svg path,.trucks.sidekit svg path,.trucks.container svg path,.trailers.semitruck svg path,.trailers.semisleeper svg path,.trailers.flatbed svg path,.trailers.stepdeck svg path,.trailers.lowboyrgn svg path,.trailers.chassis svg path,.trailers.conestoga svg path,.trailers.sidekit svg path,.trailers.container svg path{fill:#92b1f5}.trucks.boxtruck svg path,.trucks.reefertruck svg path,.trucks.cargovan svg path,.trucks.dryvan svg path,.trucks.reefer svg path,.trailers.boxtruck svg path,.trailers.reefertruck svg path,.trailers.cargovan svg path,.trailers.dryvan svg path,.trailers.reefer svg path{fill:#fbc88b}.trucks.dumptruck svg path,.trucks.cementtruck svg path,.trucks.garbagetruck svg path,.trucks.enddump svg path,.trucks.bottomdump svg path,.trucks.hopper svg path,.trucks.tanker svg path,.trucks.pneumatictanker svg path,.trailers.dumptruck svg path,.trailers.cementtruck svg path,.trailers.garbagetruck svg path,.trailers.enddump svg path,.trailers.bottomdump svg path,.trailers.hopper svg path,.trailers.tanker svg path,.trailers.pneumatictanker svg path{fill:#ed9292}.trucks.towtruck svg path,.trucks.carhauler svg path,.trucks.spotter svg path,.trucks.carhaulerstigner svg path,.trailers.towtruck svg path,.trailers.carhauler svg path,.trailers.spotter svg path,.trailers.carhaulerstigner svg path{fill:#86c9c3}.trucks .svgtext-template-text,.trailers .svgtext-template-text{color:#fff;transition:color .3s ease-in-out}.colors .black svg #droplet{fill:#6c6c6c}.colors .brown svg #droplet{fill:#a1887f}.colors .darkgreen svg #droplet{fill:#4db6a2}.colors .lightgreen svg #droplet{fill:#81c784}.colors .darkblue svg #droplet{fill:#546fd2}.colors .lightblue svg #droplet{fill:#64b5f6}.colors .gray svg #droplet{fill:#aaa}.colors .purple svg #droplet{fill:#ba68c8}.colors .gold svg #droplet{fill:#bcad79}.colors .silver svg #droplet{fill:#dadada}.colors .red svg #droplet{fill:#f96b69}.colors .pink svg #droplet{fill:#f26ec2}.colors .white svg #droplet{fill:#f1f1f1}.colors .orange svg #droplet{fill:#ff8a65}.colors .yellow svg #droplet{fill:#ffd54f}.colors:hover{transition:all .3s ease-in-out}.colors:hover .black svg #droplet{fill:#3c3c3c}.colors:hover .brown svg #droplet{fill:#8d6e63}.colors:hover .darkgreen svg #droplet{fill:#26a690}.colors:hover .lightgreen svg #droplet{fill:#66bb6a}.colors:hover .darkblue svg #droplet{fill:#304fc1}.colors:hover .lightblue svg #droplet{fill:#42a5f5}.colors:hover .gray svg #droplet{fill:#919191}.colors:hover .purple svg #droplet{fill:#ab47bc}.colors:hover .gold svg #droplet{fill:#aa9c6e}.colors:hover .silver svg #droplet{fill:#b7b7b7}.colors:hover .red svg #droplet{fill:#ef5350}.colors:hover .pink svg #droplet{fill:#fa4daa}.colors:hover .white svg #droplet{fill:#fff}.colors:hover .orange svg #droplet{fill:#ff7043}.colors:hover .yellow svg #droplet{fill:#ffca28}.text-color-black{color:#424242!important}.text-color-black::-moz-selection{background-color:#42424233!important;color:#424242!important}.text-color-black::selection{background-color:#42424233!important;color:#424242!important}.text-color-black-2{color:#2f2f2f!important}.text-color-black-2::-moz-selection{background-color:#2f2f2f33!important;color:#2f2f2f!important}.text-color-black-2::selection{background-color:#2f2f2f33!important;color:#2f2f2f!important}.text-color-muted{color:#919191!important}.text-color-muted::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-muted::selection{background-color:#91919133!important;color:#919191!important}.text-color-green{color:#56b4ac!important}.text-color-green::-moz-selection{background-color:#56b4ac33!important;color:#56b4ac!important}.text-color-green::selection{background-color:#56b4ac33!important;color:#56b4ac!important}.text-color-green-2{color:#259f94!important}.text-color-green-2::-moz-selection{background-color:#259f9433!important;color:#259f94!important}.text-color-green-2::selection{background-color:#259f9433!important;color:#259f94!important}.text-color-green-4{color:#86c9c3!important}.text-color-green-4::-moz-selection{background-color:#86c9c333!important;color:#86c9c3!important}.text-color-green-4::selection{background-color:#86c9c333!important;color:#86c9c3!important}.text-color-blue-13{color:#6692f1!important}.text-color-blue-13::-moz-selection{background-color:#6692f133!important;color:#6692f1!important}.text-color-blue-13::selection{background-color:#6692f133!important;color:#6692f1!important}.text-color-blue-16{color:#e9effd!important}.text-color-blue-16::-moz-selection{background-color:#e9effd33!important;color:#e9effd!important}.text-color-blue-16::selection{background-color:#e9effd33!important;color:#e9effd!important}.text-color-blue-18{color:#3b73ed!important}.text-color-blue-18::-moz-selection{background-color:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-18::selection{background-color:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-19{color:#92b1f5!important}.text-color-blue-19::-moz-selection{background-color:#92b1f533!important;color:#92b1f5!important}.text-color-blue-19::selection{background-color:#92b1f533!important;color:#92b1f5!important}.text-color-red-10{color:#e66767!important}.text-color-red-10::-moz-selection{background-color:#e6676733!important;color:#e66767!important}.text-color-red-10::selection{background-color:#e6676733!important;color:#e66767!important}.text-color-red-11{color:#df3c3c!important}.text-color-red-11::-moz-selection{background-color:#df3c3c33!important;color:#df3c3c!important}.text-color-red-11::selection{background-color:#df3c3c33!important;color:#df3c3c!important}.text-color-red-13{color:#ed9292!important}.text-color-red-13::-moz-selection{background-color:#ed929233!important;color:#ed9292!important}.text-color-red-13::selection{background-color:#ed929233!important;color:#ed9292!important}.text-color-yellow{color:#fab15c!important}.text-color-yellow::-moz-selection{background-color:#fab15c33!important;color:#fab15c!important}.text-color-yellow::selection{background-color:#fab15c33!important;color:#fab15c!important}.text-color-purple{color:#b370f0!important}.text-color-purple::-moz-selection{background-color:#b370f033!important;color:#b370f0!important}.text-color-purple::selection{background-color:#b370f033!important;color:#b370f0!important}.text-color-special-filter-purple{color:#9e47ec!important}.text-color-special-filter-purple::-moz-selection{background-color:#9e47ec33!important;color:#9e47ec!important}.text-color-special-filter-purple::selection{background-color:#9e47ec33!important;color:#9e47ec!important}.text-color-light-grey{color:#e5e5e5!important}.text-color-light-grey::-moz-selection{background-color:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey::selection{background-color:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey-2{color:#aaa!important}.text-color-light-grey-2::-moz-selection{background-color:#aaa3!important;color:#aaa!important}.text-color-light-grey-2::selection{background-color:#aaa3!important;color:#aaa!important}.text-color-light-grey-6{color:#ccc!important}.text-color-light-grey-6::-moz-selection{background-color:#ccc3!important;color:#ccc!important}.text-color-light-grey-6::selection{background-color:#ccc3!important;color:#ccc!important}.text-color-white{color:#fff!important}.text-color-white::-moz-selection{background-color:#fff3!important;color:#fff!important}.text-color-white::selection{background-color:#fff3!important;color:#fff!important}.text-color-white-2{color:#fff!important}.text-color-white-2::-moz-selection{background-color:#fff3!important;color:#fff!important}.text-color-white-2::selection{background-color:#fff3!important;color:#fff!important}.text-color-white-4{color:#ffffffb2!important}.text-color-white-4::-moz-selection{background-color:#fff3!important;color:#ffffffb2!important}.text-color-white-4::selection{background-color:#fff3!important;color:#ffffffb2!important}.text-color-bw6-2{color:#6c6c6c!important}.text-color-bw6-2::-moz-selection{background-color:#6c6c6c33!important;color:#6c6c6c!important}.text-color-bw6-2::selection{background-color:#6c6c6c33!important;color:#6c6c6c!important}.text-color-bw-9{color:#dadada!important}.text-color-bw-9::-moz-selection{background-color:#dadada33!important;color:#dadada!important}.text-color-bw-9::selection{background-color:#dadada33!important;color:#dadada!important}.text-color-grey{color:#919191!important}.text-color-grey::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-grey::selection{background-color:#91919133!important;color:#919191!important}.text-color-grey .address-text::-moz-selection,.text-color-grey .marker-bold-text::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-grey .address-text::selection,.text-color-grey .marker-bold-text::selection{background-color:#91919133!important;color:#919191!important}.text-color-orange-1{color:#ff7043!important}.text-color-orange-1::-moz-selection{background-color:#ff704333!important;color:#ff7043!important}.text-color-orange-1::selection{background-color:#ff704333!important;color:#ff7043!important}.text-color-brown-1{color:#865e3a!important}.text-color-brown-1::-moz-selection{background-color:#865e3a33!important;color:#865e3a!important}.text-color-brown-1::selection{background-color:#865e3a33!important;color:#865e3a!important}.text-color-light-blue-2{color:#1ab5e6!important}.text-color-light-blue-2::-moz-selection{background-color:#1ab5e633!important;color:#1ab5e6!important}.text-color-light-blue-2::selection{background-color:#1ab5e633!important;color:#1ab5e6!important}.text-size-11{font-size:11px!important;line-height:14px!important}.text-size-14{font-size:14px!important;line-height:18px!important}.text-size-16{font-size:16px!important;line-height:19px!important}.text-size-18{font-size:18px!important;line-height:22px!important}.text-size-20{font-size:20px!important;line-height:24px!important}.text-size-26{font-size:26px!important;line-height:32px!important}.text-size-28{font-size:28px!important;line-height:34px!important}.font-size-11{font-size:11px!important}.line-height-12{line-height:12px!important}.svg-fill-black svg path,.svg-fill-black svg circle{fill:#424242!important}.svg-fill-white svg path,.svg-fill-white svg circle{fill:#fff!important}.svg-fill-white-2 svg path,.svg-fill-white-2 svg circle{fill:#fff!important}.svg-fill-muted svg path,.svg-fill-muted svg circle{fill:#919191!important}.svg-fill-bw-9 svg path,.svg-fill-bw-9 svg circle{fill:#dadada!important}.svg-fill-light-grey-2 svg path,.svg-fill-light-grey-2 svg circle{fill:#aaa!important}.svg-fill-light-grey-6 svg path,.svg-fill-light-grey-6 svg circle{fill:#ccc!important}.svg-fill-blue-8 svg path,.svg-fill-blue-8 svg circle{fill:#6692f1!important}.svg-fill-blue-13 svg path,.svg-fill-blue-13 svg circle{fill:#6692f1!important}.svg-fill-blue-14 svg path,.svg-fill-blue-14 svg circle{fill:#3b73ed!important}.svg-fill-blue-17 svg path,.svg-fill-blue-17 svg circle{fill:#bed0f9!important}.svg-fill-blue-19 svg path,.svg-fill-blue-19 svg circle{fill:#92b1f5!important}.svg-fill-blue-26 svg path,.svg-fill-blue-26 svg circle{fill:#4dc5eb!important}.svg-fill-green svg path,.svg-fill-green svg circle{fill:#56b4ac!important}.svg-fill-green-2 svg path,.svg-fill-green-2 svg circle{fill:#259f94!important}.svg-fill-green-4 svg path,.svg-fill-green-4 svg circle{fill:#86c9c3!important}.svg-fill-green-6 svg path,.svg-fill-green-6 svg circle{fill:#77bf56!important}.svg-fill-yellow-1 svg path,.svg-fill-yellow-1 svg circle{fill:#fab15c!important}.svg-fill-yellow-4 svg path,.svg-fill-yellow-4 svg circle{fill:#fbc88b!important}.svg-fill-yellow-5 svg path,.svg-fill-yellow-5 svg circle{fill:#f89b2e!important}.svg-fill-yellow-8 svg path,.svg-fill-yellow-8 svg circle{fill:#daad4f!important}.svg-fill-white-4 svg path,.svg-fill-white-4 svg circle{fill:#ffffffb2!important}.svg-fill-grey svg path,.svg-fill-grey svg circle{fill:#919191!important}.svg-fill-red-10 svg path,.svg-fill-red-10 svg circle{fill:#e66767!important}.svg-fill-red-11 svg path,.svg-fill-red-11 svg circle{fill:#df3c3c!important}.svg-fill-red-14 svg path,.svg-fill-red-14 svg circle{fill:#c20c0c!important}.svg-fill-red-18 svg path,.svg-fill-red-18 svg circle{fill:#e668a0!important}.svg-fill-orange-4 svg path,.svg-fill-orange-4 svg circle{fill:#ff906d!important}.svg-fill-brown svg path,.svg-fill-brown svg circle{fill:#865e3a!important}.svg-fill-purple-4 svg path,.svg-fill-purple-4 svg circle{fill:#9e47ec!important}.svg-hover-white svg path{transition:fill .3s ease-in-out}.svg-hover-white:hover svg path{fill:#fff!important}.svg-hover-white-2 svg path{transition:fill .3s ease-in-out}.svg-hover-white-2:hover svg path{fill:#fff!important}.svg-hover-muted svg path{transition:fill .3s ease-in-out}.svg-hover-muted:hover svg path{fill:#919191!important}.svg-hover-grey-4 svg path{transition:fill .3s ease-in-out}.svg-hover-grey-4:hover svg path{fill:#ccc!important}.svg-hover-black svg path{transition:fill .3s ease-in-out}.svg-hover-black:hover svg path{fill:#424242!important}.svg-hover-blue-10 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-10:hover svg path{fill:#6f9ee033!important}.svg-hover-blue-15 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-15:hover svg path{fill:#0b49d1!important}.svg-hover-blue-19 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-19:hover svg path{fill:#92b1f5!important}.svg-hover-bw6-2 svg path{transition:fill .3s ease-in-out}.svg-hover-bw6-2:hover svg path{fill:#6c6c6c!important}.svg-hover-trash-red svg path{transition:fill .3s ease-in-out}.svg-hover-trash-red:hover svg path{fill:#ff5050!important}.svg-hover-red-14 svg path{transition:fill .3s ease-in-out}.svg-hover-red-14:hover svg path{fill:#c20c0c!important}.svg-size-6 svg{width:6px;height:6px}.svg-size-10 svg{width:10px;height:10px}.svg-size-12 svg{width:12px;height:12px}.svg-size-14 svg{width:14px;height:14px}.svg-size-16 svg{width:16px;height:16px}.svg-size-17 svg{width:17px;height:17px}.svg-size-18 svg{width:18px;height:18px}.svg-size-22 svg{width:22px;height:22px}.svg-size-23 svg{width:23px;height:23px}.svg-size-26 svg{width:26px;height:26px}.svg-size-44-16 svg{width:44px;height:16px}.background-transparent{background-color:transparent}.background-black{background-color:#424242}.background-black-2{background-color:#2f2f2f}.background-black-3{background-color:#1d1d1d}.background-gray{background-color:#e5e5e5}.background-light-gray-6{background-color:#ccc}.background-light-gray-2{background-color:#aaa}.background-blue-13{background-color:#6692f1}.background-blue-14,.background-blue-18{background-color:#3b73ed}.background-green-0{background-color:#56b4ac}.background-green-2{background-color:#259f94}.background-green-3{background-color:#b6dfdb}.background-green-4,.background-green-6{background-color:#86c9c3}.background-dark-2{background-color:#91919133}.background-red-19{background-color:#df3d85}.background-purple-4{background-color:#9e47ec}.background-gold-bold{background-color:#cf961d}.background-gold-subtle{background-color:#e4c481}.background-orange-3{background-color:#ffb097}.background-orange-4{background-color:#ff906d}.background-orange-7{background-color:#ffcfc0}.background-yellow-8{background-color:#daad4f}.background-bw5{background-color:#919191}.background-bw6-2{background-color:#6c6c6c}.background-hover-black{transition:background-color .3s ease-in-out}.background-hover-black:hover{background-color:#424242!important}.background-hover-bw2{transition:background-color .3s ease-in-out}.background-hover-bw2:hover{background-color:#eee!important}.background-hover-bw6-2{transition:background-color .3s ease-in-out}.background-hover-bw6-2:hover{background-color:#6c6c6c!important}.background-hover-blue-13{transition:background-color .3s ease-in-out}.background-hover-blue-13:hover{background-color:#6692f1!important}.background-hover-blue-15{transition:background-color .3s ease-in-out}.background-hover-blue-15:hover{background-color:#0b49d1!important}.background-hover-gray{transition:background-color .3s ease-in-out}.background-hover-gray:hover{background-color:#e5e5e5!important}.br-1{border-radius:1px}.br-2{border-radius:2px}.br-3{border-radius:3px}.br-10{border-radius:10px}.br-circle{border-radius:50%}.padding-2{padding:2px}.padding-4{padding:4px}.padding-6{padding:6px}.padding-y-2{padding-top:2px;padding-bottom:2px}.padding-y-4{padding-top:4px;padding-bottom:4px}.padding-y-6{padding-top:6px;padding-bottom:6px}.padding-x-4{padding-left:4px;padding-right:4px}.padding-x-5{padding-left:5px;padding-right:5px}.padding-x-6{padding-left:6px;padding-right:6px}.margin-1{margin:1px}.margin-y-1{margin-top:1px;margin-bottom:1px}.margin-x-1{margin-left:1px;margin-right:1px}.margin-t-1{margin-top:1px}.margin-r-1{margin-right:1px}.margin-b-1{margin-bottom:1px}.margin-l-1{margin-left:1px}.margin-2{margin:2px}.margin-y-2{margin-top:2px;margin-bottom:2px}.margin-x-2{margin-left:2px;margin-right:2px}.margin-t-2{margin-top:2px}.margin-r-2{margin-right:2px}.margin-b-2{margin-bottom:2px}.margin-l-2{margin-left:2px}.margin-4{margin:4px}.margin-y-4{margin-top:4px;margin-bottom:4px}.margin-x-4{margin-left:4px;margin-right:4px}.margin-t-4{margin-top:4px}.margin-r-4{margin-right:4px}.margin-b-4{margin-bottom:4px}.margin-l-4{margin-left:4px}.margin-5{margin:5px}.margin-y-5{margin-top:5px;margin-bottom:5px}.margin-x-5{margin-left:5px;margin-right:5px}.margin-t-5{margin-top:5px}.margin-r-5{margin-right:5px}.margin-b-5{margin-bottom:5px}.margin-l-5{margin-left:5px}.margin-6{margin:6px}.margin-y-6{margin-top:6px;margin-bottom:6px}.margin-x-6{margin-left:6px;margin-right:6px}.margin-t-6{margin-top:6px}.margin-r-6{margin-right:6px}.margin-b-6{margin-bottom:6px}.margin-l-6{margin-left:6px}.margin-8{margin:8px}.margin-y-8{margin-top:8px;margin-bottom:8px}.margin-x-8{margin-left:8px;margin-right:8px}.margin-t-8{margin-top:8px}.margin-r-8{margin-right:8px}.margin-b-8{margin-bottom:8px}.margin-l-8{margin-left:8px}.margin-15{margin:15px}.margin-y-15{margin-top:15px;margin-bottom:15px}.margin-x-15{margin-left:15px;margin-right:15px}.margin-t-15{margin-top:15px}.margin-r-15{margin-right:15px}.margin-b-15{margin-bottom:15px}.margin-l-15{margin-left:15px}.margin-24{margin:24px}.margin-y-24{margin-top:24px;margin-bottom:24px}.margin-x-24{margin-left:24px;margin-right:24px}.margin-t-24{margin-top:24px}.margin-r-24{margin-right:24px}.margin-b-24{margin-bottom:24px}.margin-l-24{margin-left:24px}.gap-xs{gap:2px}.w-1{width:1px}.h-1{height:1px}.w-10{width:10px}.h-10{height:10px}.w-14{width:14px}.h-14{height:14px}.w-18{width:18px}.h-18{height:18px}.w-31{width:31px}.h-31{height:31px}.w-36{width:36px}.h-36{height:36px}.w-120{width:120px}.h-120{height:120px}@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.filter-dropdown-popover{width:260px;position:relative;top:-4px;left:-4px}.filter-dropdown-popover-max-height{max-height:360px}.filter-dropdown-list{max-height:260px;overflow-y:auto}.filter-dropdown-list-icon{height:26px;transition:background-color .3s ease-in-out}.filter-dropdown-list-icon-value{height:14px;width:14px}.filter-dropdown-list-icon-remove{display:none}.filter-dropdown-list-icon:hover{background-color:#424242}.filter-dropdown-list-icon:hover .filter-dropdown-icon-count{display:none}.filter-dropdown-list-icon-selected:hover{background-color:#0b49d1}.filter-dropdown-list-item-icons{transition:opacity .3s ease-in-out;opacity:0}.filter-dropdown-list-item-status-circle{height:10px;width:10px}.filter-dropdown-list-item-remove{display:none}.filter-dropdown-list-item:hover{background-color:#424242}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons{opacity:1}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons svg path{fill:var(--svg-fill-color, #e66767)}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove{display:flex}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove svg path{fill:#e66767!important}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-count{display:none!important}.filter-dropdown-icon{height:26px;width:26px}.filter-dropdown-count{height:14px;width:14px}.filter-dropdown-count-remove,.filter-dropdown-count-hover:hover .filter-dropdown-count-value{display:none}.filter-dropdown-count-hover:hover .filter-dropdown-count-remove{display:flex}.filter-dropdown-button{height:26px}.filter-dropdown-footer-button{color:#dadada;transition:color .3s ease-in-out,background-color .3s ease-in-out;height:18px;width:50%}.filter-dropdown-footer-button-set{color:#fff;background-color:#3b73ed}.filter-dropdown-footer-button-set:hover{background-color:#e9effd;color:#0b49d1}.filter-dropdown-footer-button-clear{color:#dadada}.filter-dropdown-footer-button-clear:hover{background-color:#eee;color:#424242}.filter-dropdown-list-badge{min-width:18px}*{margin:0;font-family:Montserrat,sans-serif}html{scroll-behavior:auto!important}.gm-style-iw-chr,.gm-style-iw-tc{display:none}.gm-style .gm-style-iw-c{border-radius:0}.gm-style-iw{overflow-y:auto!important;overflow-x:hidden!important}.gm-style-iw>div{overflow:visible!important}.infoWindow{overflow:hidden!important}.gm-style-iw-d,.gm-style-iw.gm-style-iw-c{max-height:350px!important}::ng-deep .popover{--bs-popover-border-width: 0;--bs-popover-body-padding-y: 0;--bs-popover-body-padding-x: 0}::ng-deep .popover .popover-arrow{display:none}.c-pointer{cursor:pointer}.ca-scroll-bar{overflow-y:scroll}.ca-scroll-bar::-webkit-scrollbar{width:2px}.ca-scroll-bar::-webkit-scrollbar-thumb{background:#ccc;border-radius:1px}.ca-scroll-bar::-webkit-scrollbar-track{background:#2f2f2f}.datetime-picker-main-holder{position:relative}.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover{transition:.3s ease-in-out}.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-clear{display:inline-block}.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-dropdown-arrow:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-icon:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover app-ca-input-placeholder-icon:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-clear:hover~.input-control{background-color:#dadada}.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-dropdown-arrow:before:hover,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-dropdown-arrow:after:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-icon:before:hover,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-icon:after:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover app-ca-input-placeholder-icon:before:hover,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover app-ca-input-placeholder-icon:after:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-clear:before:hover,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-clear:after:hover~.input-control{background-color:#dadada}.datetime-picker-main-holder.input-custom-group.datetimeclass{border-radius:2px!important}.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-out-filled),.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-in),.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-out),.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-out-filled),.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-in),.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-out-empty){background-color:#eee}.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-out-filled):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-in):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-out):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-out-filled):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-in):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-out-empty):hover{background-color:#dadada}.datetime-picker-main-holder.input-custom-group.datetimeclass.invalid-empty-focus-out{background-color:#fae3e3}.datetime-picker-main-holder.input-custom-group.datetimeclass.invalid-empty-focus-out:hover{background-color:#f5c7c7}.datetime-picker-main-holder.input-custom-group.datetimeclass.valid-focus-out{background-color:#e2ecf9}.datetime-picker-main-holder.input-custom-group.datetimeclass.valid-focus-out:hover{background-color:#c5d8f3}.datetime-picker-main-holder.input-custom-group.datetimeclass.inactive-empty,.datetime-picker-main-holder.input-custom-group.datetimeclass.inactive-filled{background-color:#f7f7f7}.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-out-filled),.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-in),.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-out),.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-out-filled),.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-in),.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-out-empty){background-color:#424242}.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-out-filled):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-in):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-out):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-out-filled):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-in):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-out-empty):hover{background-color:#6c6c6c}.datetime-picker-main-holder.input-custom-group.datetimeclass.dark.valid-focus-out-filled{background-color:red}.datetime-picker-main-holder.input-custom-group.datetimeclass.dark.valid-focus-out-filled:hover{background-color:#c5d8f3}.datetime-picker-main-holder.input-custom-group.datetimeclass.dark.inactive-empty,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark.inactive-filled{background-color:#f7f7f7}\n", "@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.date_time_holder{display:flex;align-items:center;position:absolute;top:0;width:100%;height:100%;padding:0 6px;opacity:0;z-index:20;cursor:text}.date_time_holder span{position:relative;line-height:14px;display:flex;height:100%;align-items:center;z-index:10}.date_time_holder span .border-picker{position:absolute;top:0;left:50%;transform:translate(-50%);height:100%;display:flex;align-items:center;justify-content:center;width:0px}.date_time_holder span::selection{background-color:#fff3;color:#fff}.date_time_holder span div::selection{background-color:#fff3;color:#fff}.date_time_holder::selection{background-color:transparent!important;color:#fff}.date_time_holder span.main{padding:0 2px;outline:none;font-size:14px;z-index:11}.date_time_holder span.main::selection{z-index:10}.date_time_holder span.main:first-child{padding-left:4px}.date_time_holder span.reset-selection-color::selection{background-color:transparent!important;color:#2f2f2f!important}.date_time_holder.focus{opacity:1;padding-left:35px}.date_time_holder.focus span:nth-child(2){z-index:12;pointer-events:none}.date_time_holder.focus span:nth-child(3){z-index:13}.date_time_holder.focus span:nth-child(4){z-index:14;pointer-events:none}.date_time_holder.focus span:nth-child(5){z-index:15}.date_time_holder.valid-focus-out-filled{opacity:1}.date_time_holder.valid-focus-out-filled span,.date_time_holder.valid-focus-out-filled span .border-picker{color:#2f2f2f!important;-webkit-user-select:none;user-select:none}.date_time_holder.dark.valid-focus-out-filled{background:#3b73ed33!important}.date_time_holder.dark.valid-focus-out-filled span,.date_time_holder.dark.valid-focus-out-filled span .border-picker{color:#fff!important}.date_time_holder.dark.valid-focus-out-filled:hover{background:#3b73ed66!important}.date_time_holder.dark.valid-focus-in{background:#0b49d1!important}.date_time_holder.dark.valid-focus-in span,.date_time_holder.dark.valid-focus-in span .border-picker{color:#fff!important}.date_time_holder.focus{background-color:#1d1d1d;color:#fff;transition:.2s ease-in-out}.date_time_holder.valid-focus-in{opacity:1}.date_time_holder.valid-focus-in::selection,.date_time_holder.valid-focus-in div::selection{background-color:#fff3;color:#fff}.date_time_holder.invalid-focus-out-filled{opacity:1}.date_time_holder.date_time_holder_bank_card span.main{padding:0 3px}\n"] }]
|
|
803
|
+
], providers: [CalendarDateTimePickerService], template: "<div\n class=\"datetime-picker-main-holder input-custom-group datetimeclass\"\n [ngClass]=\"\n getSuperControl\n | inputContainerClass\n : caInputComponent.isFocusInput\n : caInputComponent.isTouchedInput\n : inputConfig\n : getSuperControl?.value\n \"\n>\n <div\n #holder1\n class=\"date_time_holder input-control\"\n [class.active]=\"showDateInput\"\n tabindex=\"-1\"\n (mousedown)=\"selectLastOneForSelection()\"\n (mouseup)=\"selectLastOneAfterMouseUp()\"\n (paste)=\"onDatePaste($event)\"\n (keydown)=\"changeSelection($event, true)\"\n (click)=\"toggleDropdownOptions()\"\n [ngStyle]=\"{\n 'padding-left': inputConfig.isIconHidden ? '2px' : '27px',\n }\"\n [ngClass]=\"\n caInputComponent.isFocusInput\n | inputDatetimePickerClass\n : false\n : getSuperControl\n : inputConfig\n : caInputComponent.isTouchedInput\n : getSuperControl?.value\n \"\n >\n <span\n #span1\n class=\"main\"\n [ngClass]=\"{\n 'reset-selection-color': !caInputComponent.isFocusInput,\n }\"\n tabindex=\"0\"\n (mouseup)=\"setSelection($event)\"\n (keydown)=\"changeSelection($event)\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? 'mm' : 'HH'\"\n ></span>\n <span>\n <div\n class=\"border-picker\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? '/' : ':'\"\n ></div>\n </span>\n <span\n #span2\n class=\"main\"\n [ngClass]=\"{\n 'reset-selection-color': !caInputComponent.isFocusInput,\n }\"\n tabindex=\"1\"\n (mouseup)=\"setSelection($event)\"\n (keydown)=\"changeSelection($event)\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? 'dd' : 'MM'\"\n ></span>\n <span>\n <div\n class=\"border-picker\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? '/' : ' '\"\n ></div>\n </span>\n <span\n #span3\n class=\"main\"\n [ngClass]=\"{\n 'reset-selection-color': !caInputComponent.isFocusInput,\n }\"\n tabindex=\"2\"\n (mouseup)=\"setSelection($event)\"\n (keydown)=\"changeSelection($event)\"\n [innerHTML]=\"inputConfig.name === 'datepicker' ? 'yy' : 'AM'\"\n ></span>\n </div>\n <app-ca-input\n [inputConfig]=\"inputConfig\"\n [dateTimePopover]=\"dateTimePopover\"\n (focusInputEvent)=\"handleFocusInput($event)\"\n (handleToggleDropdownOptions)=\"toggleDropdownOptions()\"\n (closePopover)=\"blurOnDateTime()\"\n (blurInput)=\"onBlurInput($event)\"\n (clear)=\"clearInput($event)\"\n [formControl]=\"getSuperControl! | formControl\"\n ></app-ca-input>\n</div>\n<!-- Popover for DateTime Pickers -->\n<ng-template #dateTimePopover let-data=\"data\">\n <div class=\"datetime-dropdown-holder\">\n <ca-custom-datetime-pickers\n [calendarType]=\"\n inputConfig.name === 'datepicker' ||\n inputConfig.name === 'datepickerBankCard'\n ? 'date'\n : 'time'\n \"\n [inputConfig]=\"inputConfig\"\n [placeholder]=\"'MM/DD/YY'\"\n [dateTime]=\"dateTimeInputDate\"\n (closePopover)=\"closePopover()\"\n ></ca-custom-datetime-pickers>\n </div>\n</ng-template>\n", styles: ["@import\"https://fonts.googleapis.com/css2?family=Montserrat:ital,wght@0,100..900;1,100..900&family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&display=swap\";@import\"https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css\";.ca-font-thin{font-weight:100!important}.ca-font-extra-light{font-weight:200!important}.ca-font-light{font-weight:300!important}.ca-font-regular{font-weight:400!important}.ca-font-medium{font-weight:500!important}.ca-font-semi-bold{font-weight:600!important}.ca-font-bold{font-weight:700!important}.ca-font-extra-bold{font-weight:800!important}.ca-font-black{font-weight:900!important}.pickup-delivery-popover{top:-38px!important;max-width:340px!important}.pickup-delivery-popover.bs-popover-top{top:auto!important;bottom:-38px!important}.pickup-delivery-popover.bs-popover-top .load-component .assigned-load-holder{order:3;margin-top:4px;margin-bottom:0!important}.pickup-delivery-popover.bs-popover-top .load-component .statusBar{order:2;margin-top:4px}.pickup-delivery-popover.bs-popover-top .load-component .animation-three-tabs{order:1}.gps_dropdown_popover{top:-38px;max-width:494px}.gps_dropdown_popover .popover-body{padding:0}.table-progress-popover{background-color:unset!important;margin-left:-10px}.table-progress-popover .progress-dropdown{margin-top:-6px;width:260px;height:200px;background:#2f2f2f;border-radius:3px;padding:8px;box-shadow:0 0 4px #00000026;overflow:hidden;-webkit-animation:progressAnimation .25s ease-in-out;animation:progressAnimation .25s ease-in-out}.table-progress-popover .progress-dropdown .progress-header .progress-title{font-size:18px;font-weight:600;color:#fff}.table-progress-popover .progress-dropdown .progress-header .progress-title span{font-weight:400}.table-progress-popover .progress-dropdown .progress-header .progress-total{font-size:14px;line-height:17px;color:#fff}.table-progress-popover .progress-dropdown .table-progress-bar-container{width:100%;height:8px;margin-top:6px;border-radius:2px;overflow:hidden}.table-progress-popover .progress-dropdown .table-progress-bar-container .table-progress-bar{height:100%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-dual-info-container .progress-info-container{width:50%}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container{margin-top:10px}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-title{margin-bottom:2px;font-size:11px;font-weight:700;line-height:14px;color:#ffffffb2}.table-progress-popover .progress-dropdown .progress-dropdown-body .progress-info-container .progress-info-text{font-size:14px;line-height:18px;color:#fff}.table-progress-popover .progress-dropdown.credit-dropdown{height:100px}@-webkit-keyframes progressAnimation{0%{height:0px}to{height:220px}}@keyframes progressAnimation{0%{height:0px}to{height:220px}}ngb-popover-window{padding:unset!important;border:unset!important}ngb-popover-window .popover-arrow{display:none!important}ngb-popover-window .popover-body{padding:unset!important}.dispatch-note .popover-body{position:relative;top:-4px;left:-4px}.dropdown-menu-popover.bs-popover-end-top .dropdown-container{transform:translate(-4px,-3px)}.dropdown-menu-popover.bs-popover-bottom-end .dropdown-container{transform:translate(3px,-3px)}.dropdown-menu-popover.bs-popover-end-bottom .dropdown-container{transform:translate(-3px,3px)}.dropdown-menu-popover.bs-popover-top-end .dropdown-container{transform:translate(3px,3px)}.dropdown-details-title-card-popover .dropdown-container{transform:translateY(-4px)}.tooltip{font-size:12px;position:relative}.tooltip.show{opacity:.83}.tooltip.fade:after,.tooltip.fade:before{transform:translateY(-10px);transition:all .15s ease-in-out}.tooltip.fade:hover:after,.tooltip.fade:hover:before{opacity:1;transform:translate(0)}.tooltip-inner{padding:4px 10px;white-space:nowrap;max-width:none;border-radius:3px}.tooltip-inner:empty{padding:0}.placeholder-delete .tooltip-inner{background-color:#f66}.placeholder-delete .arrow:before{border-top-color:#f66}.custom-popup-owners-for-flag .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(126%) translate(-50%)!important;width:130px;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-for-flag .arrow{bottom:-18%;transform:rotate(180deg);left:calc(50% + 2.7rem)}.custom-popup-owners-for-flag .tooltip{opacity:.93!important;width:0}.custom-popup-owners{z-index:999}.custom-popup-owners .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners .tooltip{transform:translateY(-61px)!important}.custom-popup-owners-year{z-index:999}.custom-popup-owners-year .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(132%);z-index:999;box-shadow:0 0 3px #0003}.custom-popup-owners-year .arrow{bottom:-20%;transform:rotate(180deg)}.custom-popup-owners-year .tooltip{transform:translate(70px,-61px)!important}.custom-popup-owners-info .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-100%) translate(-10%);width:200px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;margin-top:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info .tooltip{opacity:.93;width:0}.custom-popup-owners-info .arrow{display:none}.custom-popup-owners-info #phone-inside{position:relative;right:26px;bottom:0}.custom-popup-owners-info-at .tooltip-inner{color:#3b3b3b;background-color:#fff;transform:translateY(-108%) translate(-7%);width:270px;height:36px;display:flex;justify-content:center;align-items:center;border-radius:3px;box-shadow:0 0 3px #0003}.custom-popup-owners-info-at .tooltip{opacity:1;width:0}.custom-popup-owners-info-at .arrow{display:none}.custom-popup-owners-for-tag .tooltip-inner{color:#3b3b3b;background-color:#fff;width:100px;border-radius:3px;box-shadow:0 0 3px #0003!important}.custom-popup-owners-for-tag .tooltip{top:5px!important}.custom-popup-owners-for-tag .arrow{bottom:-24%}.align-items-flex-start{justify-content:center;align-items:center}.align-items-flex-end{display:flex;justify-content:center;flex-direction:column;align-self:flex-end;align-items:flex-start}.label-add{align-self:flex-start}.fadeInLoad{animation:fadeInLoad .25s}@keyframes fadeInLoad{0%{opacity:0}to{opacity:1}}.fadeIn{opacity:1;-webkit-transition:.25s;-moz-transition:.25s;-o-transition:.25s;transition:.25s}.thisText:hover .fadeIn{opacity:0}.fadeInLoad{animation-name:example;animation-duration:.25s}@keyframes example{0%{transform:scale(.5)}to{transform:scale(1)}}.tooltip.tooltip-table-icons{left:12px!important;opacity:1}.tooltip.tooltip-table-icons .arrow{display:none!important}.tooltip.tooltip-table-icons .tooltip-inner{border-radius:0 50px 50px;background:#28529f}.tooltip.show{opacity:1;animation:fadeIn ease .5s!important;-webkit-animation:fadeIn ease .5s!important;-moz-animation:fadeIn ease .5s!important;-o-animation:fadeIn ease .5s!important;-ms-animation:fadeIn ease .5s!important}.ta-tooltip{position:absolute;font-size:12px;text-align:center;color:#fff;line-height:22px;z-index:999999!important;opacity:0;white-space:nowrap;transform:scale(.7)}.ta-tooltip.ta-tooltip-show{opacity:.85;transform:scale(1);padding:0 12px}.ta-tooltip.ta-tooltip-bottom-right,.ta-tooltip.ta-tooltip-bottom-right-corner{transform-origin:top left;border-radius:0 15px 15px}.ta-tooltip.ta-tooltip-bottom-left{transform-origin:top right;border-radius:15px 0 15px 15px}@keyframes scaleItem{0%{transform:scale(.4)}to{transform:scale(1)}}.app-ca-main-tooltip{pointer-events:none}.app-ca-main-tooltip .tooltip-inner{padding:0;background-color:transparent;pointer-events:none}.app-ca-main-tooltip .tooltip-inner .tooltip-holder{display:flex;font-size:11px;font-weight:700;border-radius:2px;padding:2px 8px;animation:scaleItem .3s;white-space:normal}.app-ca-main-tooltip .tooltip-inner .tooltip-holder:empty{padding:0}.tooltip-arrow{display:none!important}.trucks.semitruck svg path,.trucks.semisleeper svg path,.trucks.flatbed svg path,.trucks.stepdeck svg path,.trucks.lowboyrgn svg path,.trucks.chassis svg path,.trucks.conestoga svg path,.trucks.sidekit svg path,.trucks.container svg path,.trailers.semitruck svg path,.trailers.semisleeper svg path,.trailers.flatbed svg path,.trailers.stepdeck svg path,.trailers.lowboyrgn svg path,.trailers.chassis svg path,.trailers.conestoga svg path,.trailers.sidekit svg path,.trailers.container svg path{fill:#92b1f5}.trucks.boxtruck svg path,.trucks.reefertruck svg path,.trucks.cargovan svg path,.trucks.dryvan svg path,.trucks.reefer svg path,.trailers.boxtruck svg path,.trailers.reefertruck svg path,.trailers.cargovan svg path,.trailers.dryvan svg path,.trailers.reefer svg path{fill:#fbc88b}.trucks.dumptruck svg path,.trucks.cementtruck svg path,.trucks.garbagetruck svg path,.trucks.enddump svg path,.trucks.bottomdump svg path,.trucks.hopper svg path,.trucks.tanker svg path,.trucks.pneumatictanker svg path,.trailers.dumptruck svg path,.trailers.cementtruck svg path,.trailers.garbagetruck svg path,.trailers.enddump svg path,.trailers.bottomdump svg path,.trailers.hopper svg path,.trailers.tanker svg path,.trailers.pneumatictanker svg path{fill:#ed9292}.trucks.towtruck svg path,.trucks.carhauler svg path,.trucks.spotter svg path,.trucks.carhaulerstigner svg path,.trailers.towtruck svg path,.trailers.carhauler svg path,.trailers.spotter svg path,.trailers.carhaulerstigner svg path{fill:#86c9c3}.trucks .svgtext-template-text,.trailers .svgtext-template-text{color:#fff;transition:color .3s ease-in-out}.colors .black svg #droplet{fill:#6c6c6c}.colors .brown svg #droplet{fill:#a1887f}.colors .darkgreen svg #droplet{fill:#4db6a2}.colors .lightgreen svg #droplet{fill:#81c784}.colors .darkblue svg #droplet{fill:#546fd2}.colors .lightblue svg #droplet{fill:#64b5f6}.colors .gray svg #droplet{fill:#aaa}.colors .purple svg #droplet{fill:#ba68c8}.colors .gold svg #droplet{fill:#bcad79}.colors .silver svg #droplet{fill:#dadada}.colors .red svg #droplet{fill:#f96b69}.colors .pink svg #droplet{fill:#f26ec2}.colors .white svg #droplet{fill:#f1f1f1}.colors .orange svg #droplet{fill:#ff8a65}.colors .yellow svg #droplet{fill:#ffd54f}.colors:hover{transition:all .3s ease-in-out}.colors:hover .black svg #droplet{fill:#3c3c3c}.colors:hover .brown svg #droplet{fill:#8d6e63}.colors:hover .darkgreen svg #droplet{fill:#26a690}.colors:hover .lightgreen svg #droplet{fill:#66bb6a}.colors:hover .darkblue svg #droplet{fill:#304fc1}.colors:hover .lightblue svg #droplet{fill:#42a5f5}.colors:hover .gray svg #droplet{fill:#919191}.colors:hover .purple svg #droplet{fill:#ab47bc}.colors:hover .gold svg #droplet{fill:#aa9c6e}.colors:hover .silver svg #droplet{fill:#b7b7b7}.colors:hover .red svg #droplet{fill:#ef5350}.colors:hover .pink svg #droplet{fill:#fa4daa}.colors:hover .white svg #droplet{fill:#fff}.colors:hover .orange svg #droplet{fill:#ff7043}.colors:hover .yellow svg #droplet{fill:#ffca28}.text-color-black{color:#424242!important}.text-color-black::-moz-selection{background-color:#42424233!important;color:#424242!important}.text-color-black::selection{background-color:#42424233!important;color:#424242!important}.text-color-black-2{color:#2f2f2f!important}.text-color-black-2::-moz-selection{background-color:#2f2f2f33!important;color:#2f2f2f!important}.text-color-black-2::selection{background-color:#2f2f2f33!important;color:#2f2f2f!important}.text-color-muted{color:#919191!important}.text-color-muted::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-muted::selection{background-color:#91919133!important;color:#919191!important}.text-color-green{color:#56b4ac!important}.text-color-green::-moz-selection{background-color:#56b4ac33!important;color:#56b4ac!important}.text-color-green::selection{background-color:#56b4ac33!important;color:#56b4ac!important}.text-color-green-2{color:#259f94!important}.text-color-green-2::-moz-selection{background-color:#259f9433!important;color:#259f94!important}.text-color-green-2::selection{background-color:#259f9433!important;color:#259f94!important}.text-color-green-4{color:#86c9c3!important}.text-color-green-4::-moz-selection{background-color:#86c9c333!important;color:#86c9c3!important}.text-color-green-4::selection{background-color:#86c9c333!important;color:#86c9c3!important}.text-color-blue-13{color:#6692f1!important}.text-color-blue-13::-moz-selection{background-color:#6692f133!important;color:#6692f1!important}.text-color-blue-13::selection{background-color:#6692f133!important;color:#6692f1!important}.text-color-blue-16{color:#e9effd!important}.text-color-blue-16::-moz-selection{background-color:#e9effd33!important;color:#e9effd!important}.text-color-blue-16::selection{background-color:#e9effd33!important;color:#e9effd!important}.text-color-blue-18{color:#3b73ed!important}.text-color-blue-18::-moz-selection{background-color:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-18::selection{background-color:#3b73ed33!important;color:#3b73ed!important}.text-color-blue-19{color:#92b1f5!important}.text-color-blue-19::-moz-selection{background-color:#92b1f533!important;color:#92b1f5!important}.text-color-blue-19::selection{background-color:#92b1f533!important;color:#92b1f5!important}.text-color-red-10{color:#e66767!important}.text-color-red-10::-moz-selection{background-color:#e6676733!important;color:#e66767!important}.text-color-red-10::selection{background-color:#e6676733!important;color:#e66767!important}.text-color-red-11{color:#df3c3c!important}.text-color-red-11::-moz-selection{background-color:#df3c3c33!important;color:#df3c3c!important}.text-color-red-11::selection{background-color:#df3c3c33!important;color:#df3c3c!important}.text-color-red-13{color:#ed9292!important}.text-color-red-13::-moz-selection{background-color:#ed929233!important;color:#ed9292!important}.text-color-red-13::selection{background-color:#ed929233!important;color:#ed9292!important}.text-color-yellow{color:#fab15c!important}.text-color-yellow::-moz-selection{background-color:#fab15c33!important;color:#fab15c!important}.text-color-yellow::selection{background-color:#fab15c33!important;color:#fab15c!important}.text-color-purple{color:#b370f0!important}.text-color-purple::-moz-selection{background-color:#b370f033!important;color:#b370f0!important}.text-color-purple::selection{background-color:#b370f033!important;color:#b370f0!important}.text-color-special-filter-purple{color:#9e47ec!important}.text-color-special-filter-purple::-moz-selection{background-color:#9e47ec33!important;color:#9e47ec!important}.text-color-special-filter-purple::selection{background-color:#9e47ec33!important;color:#9e47ec!important}.text-color-light-grey{color:#e5e5e5!important}.text-color-light-grey::-moz-selection{background-color:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey::selection{background-color:#e5e5e533!important;color:#e5e5e5!important}.text-color-light-grey-2{color:#aaa!important}.text-color-light-grey-2::-moz-selection{background-color:#aaa3!important;color:#aaa!important}.text-color-light-grey-2::selection{background-color:#aaa3!important;color:#aaa!important}.text-color-light-grey-6{color:#ccc!important}.text-color-light-grey-6::-moz-selection{background-color:#ccc3!important;color:#ccc!important}.text-color-light-grey-6::selection{background-color:#ccc3!important;color:#ccc!important}.text-color-white{color:#fff!important}.text-color-white::-moz-selection{background-color:#fff3!important;color:#fff!important}.text-color-white::selection{background-color:#fff3!important;color:#fff!important}.text-color-white-2{color:#fff!important}.text-color-white-2::-moz-selection{background-color:#fff3!important;color:#fff!important}.text-color-white-2::selection{background-color:#fff3!important;color:#fff!important}.text-color-white-4{color:#ffffffb2!important}.text-color-white-4::-moz-selection{background-color:#fff3!important;color:#ffffffb2!important}.text-color-white-4::selection{background-color:#fff3!important;color:#ffffffb2!important}.text-color-bw6-2{color:#6c6c6c!important}.text-color-bw6-2::-moz-selection{background-color:#6c6c6c33!important;color:#6c6c6c!important}.text-color-bw6-2::selection{background-color:#6c6c6c33!important;color:#6c6c6c!important}.text-color-bw-9{color:#dadada!important}.text-color-bw-9::-moz-selection{background-color:#dadada33!important;color:#dadada!important}.text-color-bw-9::selection{background-color:#dadada33!important;color:#dadada!important}.text-color-grey{color:#919191!important}.text-color-grey::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-grey::selection{background-color:#91919133!important;color:#919191!important}.text-color-grey .address-text::-moz-selection,.text-color-grey .marker-bold-text::-moz-selection{background-color:#91919133!important;color:#919191!important}.text-color-grey .address-text::selection,.text-color-grey .marker-bold-text::selection{background-color:#91919133!important;color:#919191!important}.text-color-orange-1{color:#ff7043!important}.text-color-orange-1::-moz-selection{background-color:#ff704333!important;color:#ff7043!important}.text-color-orange-1::selection{background-color:#ff704333!important;color:#ff7043!important}.text-color-brown-1{color:#865e3a!important}.text-color-brown-1::-moz-selection{background-color:#865e3a33!important;color:#865e3a!important}.text-color-brown-1::selection{background-color:#865e3a33!important;color:#865e3a!important}.text-color-light-blue-2{color:#1ab5e6!important}.text-color-light-blue-2::-moz-selection{background-color:#1ab5e633!important;color:#1ab5e6!important}.text-color-light-blue-2::selection{background-color:#1ab5e633!important;color:#1ab5e6!important}.text-size-11{font-size:11px!important;line-height:14px!important}.text-size-14{font-size:14px!important;line-height:18px!important}.text-size-16{font-size:16px!important;line-height:19px!important}.text-size-18{font-size:18px!important;line-height:22px!important}.text-size-20{font-size:20px!important;line-height:24px!important}.text-size-26{font-size:26px!important;line-height:32px!important}.text-size-28{font-size:28px!important;line-height:34px!important}.font-size-11{font-size:11px!important}.line-height-12{line-height:12px!important}.svg-fill-black svg path,.svg-fill-black svg circle{fill:#424242!important}.svg-fill-white svg path,.svg-fill-white svg circle{fill:#fff!important}.svg-fill-white-2 svg path,.svg-fill-white-2 svg circle{fill:#fff!important}.svg-fill-muted svg path,.svg-fill-muted svg circle{fill:#919191!important}.svg-fill-bw-9 svg path,.svg-fill-bw-9 svg circle{fill:#dadada!important}.svg-fill-light-grey-2 svg path,.svg-fill-light-grey-2 svg circle{fill:#aaa!important}.svg-fill-light-grey-6 svg path,.svg-fill-light-grey-6 svg circle{fill:#ccc!important}.svg-fill-blue-8 svg path,.svg-fill-blue-8 svg circle{fill:#6692f1!important}.svg-fill-blue-13 svg path,.svg-fill-blue-13 svg circle{fill:#6692f1!important}.svg-fill-blue-14 svg path,.svg-fill-blue-14 svg circle{fill:#3b73ed!important}.svg-fill-blue-17 svg path,.svg-fill-blue-17 svg circle{fill:#bed0f9!important}.svg-fill-blue-19 svg path,.svg-fill-blue-19 svg circle{fill:#92b1f5!important}.svg-fill-blue-26 svg path,.svg-fill-blue-26 svg circle{fill:#4dc5eb!important}.svg-fill-green svg path,.svg-fill-green svg circle{fill:#56b4ac!important}.svg-fill-green-2 svg path,.svg-fill-green-2 svg circle{fill:#259f94!important}.svg-fill-green-4 svg path,.svg-fill-green-4 svg circle{fill:#86c9c3!important}.svg-fill-green-6 svg path,.svg-fill-green-6 svg circle{fill:#77bf56!important}.svg-fill-yellow-1 svg path,.svg-fill-yellow-1 svg circle{fill:#fab15c!important}.svg-fill-yellow-4 svg path,.svg-fill-yellow-4 svg circle{fill:#fbc88b!important}.svg-fill-yellow-5 svg path,.svg-fill-yellow-5 svg circle{fill:#f89b2e!important}.svg-fill-yellow-8 svg path,.svg-fill-yellow-8 svg circle{fill:#daad4f!important}.svg-fill-white-4 svg path,.svg-fill-white-4 svg circle{fill:#ffffffb2!important}.svg-fill-grey svg path,.svg-fill-grey svg circle{fill:#919191!important}.svg-fill-red-10 svg path,.svg-fill-red-10 svg circle{fill:#e66767!important}.svg-fill-red-11 svg path,.svg-fill-red-11 svg circle{fill:#df3c3c!important}.svg-fill-red-14 svg path,.svg-fill-red-14 svg circle{fill:#c20c0c!important}.svg-fill-red-18 svg path,.svg-fill-red-18 svg circle{fill:#e668a0!important}.svg-fill-orange-4 svg path,.svg-fill-orange-4 svg circle{fill:#ff906d!important}.svg-fill-brown svg path,.svg-fill-brown svg circle{fill:#865e3a!important}.svg-fill-purple-4 svg path,.svg-fill-purple-4 svg circle{fill:#9e47ec!important}.svg-hover-white svg path{transition:fill .3s ease-in-out}.svg-hover-white:hover svg path{fill:#fff!important}.svg-hover-white-2 svg path{transition:fill .3s ease-in-out}.svg-hover-white-2:hover svg path{fill:#fff!important}.svg-hover-muted svg path{transition:fill .3s ease-in-out}.svg-hover-muted:hover svg path{fill:#919191!important}.svg-hover-grey-4 svg path{transition:fill .3s ease-in-out}.svg-hover-grey-4:hover svg path{fill:#ccc!important}.svg-hover-black svg path{transition:fill .3s ease-in-out}.svg-hover-black:hover svg path{fill:#424242!important}.svg-hover-blue-10 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-10:hover svg path{fill:#6f9ee033!important}.svg-hover-blue-15 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-15:hover svg path{fill:#0b49d1!important}.svg-hover-blue-19 svg path{transition:fill .3s ease-in-out}.svg-hover-blue-19:hover svg path{fill:#92b1f5!important}.svg-hover-bw6-2 svg path{transition:fill .3s ease-in-out}.svg-hover-bw6-2:hover svg path{fill:#6c6c6c!important}.svg-hover-trash-red svg path{transition:fill .3s ease-in-out}.svg-hover-trash-red:hover svg path{fill:#ff5050!important}.svg-hover-red-14 svg path{transition:fill .3s ease-in-out}.svg-hover-red-14:hover svg path{fill:#c20c0c!important}.svg-size-6 svg{width:6px;height:6px}.svg-size-10 svg{width:10px;height:10px}.svg-size-12 svg{width:12px;height:12px}.svg-size-14 svg{width:14px;height:14px}.svg-size-16 svg{width:16px;height:16px}.svg-size-17 svg{width:17px;height:17px}.svg-size-18 svg{width:18px;height:18px}.svg-size-22 svg{width:22px;height:22px}.svg-size-23 svg{width:23px;height:23px}.svg-size-26 svg{width:26px;height:26px}.svg-size-44-16 svg{width:44px;height:16px}.background-transparent{background-color:transparent}.background-black{background-color:#424242}.background-black-2{background-color:#2f2f2f}.background-black-3{background-color:#1d1d1d}.background-gray{background-color:#e5e5e5}.background-light-gray-6{background-color:#ccc}.background-light-gray-2{background-color:#aaa}.background-blue-13{background-color:#6692f1}.background-blue-14,.background-blue-18{background-color:#3b73ed}.background-green-0{background-color:#56b4ac}.background-green-2{background-color:#259f94}.background-green-3{background-color:#b6dfdb}.background-green-4,.background-green-6{background-color:#86c9c3}.background-dark-2{background-color:#91919133}.background-red-19{background-color:#df3d85}.background-purple-4{background-color:#9e47ec}.background-gold-bold{background-color:#cf961d}.background-gold-subtle{background-color:#e4c481}.background-orange-3{background-color:#ffb097}.background-orange-4{background-color:#ff906d}.background-orange-7{background-color:#ffcfc0}.background-yellow-8{background-color:#daad4f}.background-bw5{background-color:#919191}.background-bw6-2{background-color:#6c6c6c}.background-hover-black{transition:background-color .3s ease-in-out}.background-hover-black:hover{background-color:#424242!important}.background-hover-bw2{transition:background-color .3s ease-in-out}.background-hover-bw2:hover{background-color:#eee!important}.background-hover-bw6-2{transition:background-color .3s ease-in-out}.background-hover-bw6-2:hover{background-color:#6c6c6c!important}.background-hover-blue-13{transition:background-color .3s ease-in-out}.background-hover-blue-13:hover{background-color:#6692f1!important}.background-hover-blue-15{transition:background-color .3s ease-in-out}.background-hover-blue-15:hover{background-color:#0b49d1!important}.background-hover-gray{transition:background-color .3s ease-in-out}.background-hover-gray:hover{background-color:#e5e5e5!important}.br-1{border-radius:1px}.br-2{border-radius:2px}.br-3{border-radius:3px}.br-10{border-radius:10px}.br-circle{border-radius:50%}.padding-2{padding:2px}.padding-4{padding:4px}.padding-6{padding:6px}.padding-y-2{padding-top:2px;padding-bottom:2px}.padding-y-4{padding-top:4px;padding-bottom:4px}.padding-y-6{padding-top:6px;padding-bottom:6px}.padding-x-4{padding-left:4px;padding-right:4px}.padding-x-5{padding-left:5px;padding-right:5px}.padding-x-6{padding-left:6px;padding-right:6px}.margin-1{margin:1px}.margin-y-1{margin-top:1px;margin-bottom:1px}.margin-x-1{margin-left:1px;margin-right:1px}.margin-t-1{margin-top:1px}.margin-r-1{margin-right:1px}.margin-b-1{margin-bottom:1px}.margin-l-1{margin-left:1px}.margin-2{margin:2px}.margin-y-2{margin-top:2px;margin-bottom:2px}.margin-x-2{margin-left:2px;margin-right:2px}.margin-t-2{margin-top:2px}.margin-r-2{margin-right:2px}.margin-b-2{margin-bottom:2px}.margin-l-2{margin-left:2px}.margin-4{margin:4px}.margin-y-4{margin-top:4px;margin-bottom:4px}.margin-x-4{margin-left:4px;margin-right:4px}.margin-t-4{margin-top:4px}.margin-r-4{margin-right:4px}.margin-b-4{margin-bottom:4px}.margin-l-4{margin-left:4px}.margin-5{margin:5px}.margin-y-5{margin-top:5px;margin-bottom:5px}.margin-x-5{margin-left:5px;margin-right:5px}.margin-t-5{margin-top:5px}.margin-r-5{margin-right:5px}.margin-b-5{margin-bottom:5px}.margin-l-5{margin-left:5px}.margin-6{margin:6px}.margin-y-6{margin-top:6px;margin-bottom:6px}.margin-x-6{margin-left:6px;margin-right:6px}.margin-t-6{margin-top:6px}.margin-r-6{margin-right:6px}.margin-b-6{margin-bottom:6px}.margin-l-6{margin-left:6px}.margin-8{margin:8px}.margin-y-8{margin-top:8px;margin-bottom:8px}.margin-x-8{margin-left:8px;margin-right:8px}.margin-t-8{margin-top:8px}.margin-r-8{margin-right:8px}.margin-b-8{margin-bottom:8px}.margin-l-8{margin-left:8px}.margin-15{margin:15px}.margin-y-15{margin-top:15px;margin-bottom:15px}.margin-x-15{margin-left:15px;margin-right:15px}.margin-t-15{margin-top:15px}.margin-r-15{margin-right:15px}.margin-b-15{margin-bottom:15px}.margin-l-15{margin-left:15px}.margin-24{margin:24px}.margin-y-24{margin-top:24px;margin-bottom:24px}.margin-x-24{margin-left:24px;margin-right:24px}.margin-t-24{margin-top:24px}.margin-r-24{margin-right:24px}.margin-b-24{margin-bottom:24px}.margin-l-24{margin-left:24px}.gap-xs{gap:2px}.w-1{width:1px}.h-1{height:1px}.w-10{width:10px}.h-10{height:10px}.w-14{width:14px}.h-14{height:14px}.w-18{width:18px}.h-18{height:18px}.w-31{width:31px}.h-31{height:31px}.w-36{width:36px}.h-36{height:36px}.w-120{width:120px}.h-120{height:120px}@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.filter-dropdown-popover{width:260px;position:relative;top:-4px;left:-4px}.filter-dropdown-popover-max-height{max-height:360px}.filter-dropdown-list{max-height:260px;overflow-y:auto}.filter-dropdown-list-icon{height:26px;transition:background-color .3s ease-in-out}.filter-dropdown-list-icon-value{height:14px;width:14px}.filter-dropdown-list-icon-remove{display:none}.filter-dropdown-list-icon:hover{background-color:#424242}.filter-dropdown-list-icon:hover .filter-dropdown-icon-count{display:none}.filter-dropdown-list-icon-selected:hover{background-color:#0b49d1}.filter-dropdown-list-item-icons{transition:opacity .3s ease-in-out;opacity:0}.filter-dropdown-list-item-status-circle{height:10px;width:10px}.filter-dropdown-list-item-remove{display:none}.filter-dropdown-list-item:hover{background-color:#424242}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons{opacity:1}.filter-dropdown-list-item:hover .filter-dropdown-list-item-icons svg path{fill:var(--svg-fill-color, #e66767)}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove{display:flex}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-remove svg path{fill:#e66767!important}.filter-dropdown-list-item-hover:hover .filter-dropdown-list-item-count{display:none!important}.filter-dropdown-icon{height:26px;width:26px}.filter-dropdown-count{height:14px;width:14px}.filter-dropdown-count-remove,.filter-dropdown-count-hover:hover .filter-dropdown-count-value{display:none}.filter-dropdown-count-hover:hover .filter-dropdown-count-remove{display:flex}.filter-dropdown-button{height:26px}.filter-dropdown-footer-button{color:#dadada;transition:color .3s ease-in-out,background-color .3s ease-in-out;height:18px;width:50%}.filter-dropdown-footer-button-set{color:#fff;background-color:#3b73ed}.filter-dropdown-footer-button-set:hover{background-color:#e9effd;color:#0b49d1}.filter-dropdown-footer-button-clear{color:#dadada}.filter-dropdown-footer-button-clear:hover{background-color:#eee;color:#424242}.filter-dropdown-list-badge{min-width:18px}*{margin:0;font-family:Montserrat,sans-serif}html{scroll-behavior:auto!important}.gm-style-iw-chr,.gm-style-iw-tc{display:none}.gm-style .gm-style-iw-c{border-radius:0}.gm-style-iw{overflow-y:auto!important;overflow-x:hidden!important}.gm-style-iw>div{overflow:visible!important}.infoWindow{overflow:hidden!important}.gm-style-iw-d,.gm-style-iw.gm-style-iw-c{max-height:350px!important}::ng-deep .popover{--bs-popover-border-width: 0;--bs-popover-body-padding-y: 0;--bs-popover-body-padding-x: 0}::ng-deep .popover .popover-arrow{display:none}.c-pointer{cursor:pointer}.ca-scroll-bar{overflow-y:scroll}.ca-scroll-bar::-webkit-scrollbar{width:2px}.ca-scroll-bar::-webkit-scrollbar-thumb{background:#ccc;border-radius:1px}.ca-scroll-bar::-webkit-scrollbar-track{background:#2f2f2f}.datetime-picker-main-holder{position:relative}.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover{transition:.3s ease-in-out}.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-clear{display:inline-block}.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-dropdown-arrow:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-icon:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover app-ca-input-placeholder-icon:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-clear:hover~.input-control{background-color:#dadada}.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-dropdown-arrow:before:hover,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-dropdown-arrow:after:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-icon:before:hover,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-icon:after:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover app-ca-input-placeholder-icon:before:hover,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover app-ca-input-placeholder-icon:after:hover~.input-control,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-clear:before:hover,.datetime-picker-main-holder.input-custom-group.custom-filled-hover:hover .input-clear:after:hover~.input-control{background-color:#dadada}.datetime-picker-main-holder.input-custom-group.datetimeclass{border-radius:2px!important}.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-out-filled),.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-in),.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-out),.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-out-filled),.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-in),.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-out-empty){background-color:#eee}.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-out-filled):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-in):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-out):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.valid-focus-out-filled):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-in):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass:not(.invalid-focus-out-empty):hover{background-color:#dadada}.datetime-picker-main-holder.input-custom-group.datetimeclass.invalid-empty-focus-out{background-color:#fae3e3}.datetime-picker-main-holder.input-custom-group.datetimeclass.invalid-empty-focus-out:hover{background-color:#f5c7c7}.datetime-picker-main-holder.input-custom-group.datetimeclass.valid-focus-out{background-color:#e2ecf9}.datetime-picker-main-holder.input-custom-group.datetimeclass.valid-focus-out:hover{background-color:#c5d8f3}.datetime-picker-main-holder.input-custom-group.datetimeclass.inactive-empty,.datetime-picker-main-holder.input-custom-group.datetimeclass.inactive-filled{background-color:#f7f7f7;pointer-events:none}.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-out-filled),.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-in),.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-out),.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-out-filled),.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-in),.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-out-empty){background-color:#424242}.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-out-filled):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-in):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-out):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.valid-focus-out-filled):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-in):hover,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark:not(.invalid-focus-out-empty):hover{background-color:#6c6c6c}.datetime-picker-main-holder.input-custom-group.datetimeclass.dark.valid-focus-out-filled{background-color:red}.datetime-picker-main-holder.input-custom-group.datetimeclass.dark.valid-focus-out-filled:hover{background-color:#c5d8f3}.datetime-picker-main-holder.input-custom-group.datetimeclass.dark.inactive-empty,.datetime-picker-main-holder.input-custom-group.datetimeclass.dark.inactive-filled{background-color:#f7f7f7}\n", "@keyframes dropdown{0%{margin-top:20px;visibility:hidden;opacity:0}to{opacity:1;margin-top:10px;visibility:visible!important}}@keyframes dropup{0%{margin-top:-19px;visibility:hidden;opacity:0}to{margin-top:inherit;visibility:visible!important}}.date_time_holder{display:flex;align-items:center;position:absolute;top:0;width:100%;height:100%;padding:0 6px;opacity:0;z-index:20;cursor:text}.date_time_holder span{position:relative;line-height:14px;display:flex;height:100%;align-items:center;z-index:10}.date_time_holder span .border-picker{position:absolute;top:0;left:50%;transform:translate(-50%);height:100%;display:flex;align-items:center;justify-content:center;width:0px}.date_time_holder span::selection{background-color:#fff3;color:#fff}.date_time_holder span div::selection{background-color:#fff3;color:#fff}.date_time_holder::selection{background-color:transparent!important;color:#fff}.date_time_holder span.main{padding:0 2px;outline:none;font-size:14px;z-index:11}.date_time_holder span.main::selection{z-index:10}.date_time_holder span.main:first-child{padding-left:4px}.date_time_holder span.reset-selection-color::selection{background-color:transparent!important;color:#2f2f2f!important}.date_time_holder.focus{opacity:1;padding-left:35px}.date_time_holder.focus span:nth-child(2){z-index:12;pointer-events:none}.date_time_holder.focus span:nth-child(3){z-index:13}.date_time_holder.focus span:nth-child(4){z-index:14;pointer-events:none}.date_time_holder.focus span:nth-child(5){z-index:15}.date_time_holder.valid-focus-out-filled{opacity:1}.date_time_holder.valid-focus-out-filled span,.date_time_holder.valid-focus-out-filled span .border-picker{color:#2f2f2f!important;-webkit-user-select:none;user-select:none}.date_time_holder.dark.valid-focus-out-filled{background:#3b73ed33!important}.date_time_holder.dark.valid-focus-out-filled span,.date_time_holder.dark.valid-focus-out-filled span .border-picker{color:#fff!important}.date_time_holder.dark.valid-focus-out-filled:hover{background:#3b73ed66!important}.date_time_holder.dark.valid-focus-in{background:#0b49d1!important}.date_time_holder.dark.valid-focus-in span,.date_time_holder.dark.valid-focus-in span .border-picker{color:#fff!important}.date_time_holder.focus{background-color:#1d1d1d;color:#fff;transition:.2s ease-in-out}.date_time_holder.valid-focus-in{opacity:1}.date_time_holder.valid-focus-in::selection,.date_time_holder.valid-focus-in div::selection{background-color:#fff3;color:#fff}.date_time_holder.invalid-focus-out-filled{opacity:1}.date_time_holder.date_time_holder_bank_card span.main{padding:0 3px}\n"] }]
|
|
765
804
|
}], ctorParameters: () => [{ type: i1.NgControl, decorators: [{
|
|
766
805
|
type: Self
|
|
767
806
|
}] }, { type: i2.CalendarDateTimePickerService }], propDecorators: { inputConfig: [{
|
|
768
807
|
type: Input
|
|
808
|
+
}], formFormat: [{
|
|
809
|
+
type: Input
|
|
769
810
|
}], clearInputEvent: [{
|
|
770
811
|
type: Output,
|
|
771
812
|
args: ['clear']
|
|
@@ -795,15 +836,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
795
836
|
type: Output
|
|
796
837
|
}], span1: [{
|
|
797
838
|
type: ViewChild,
|
|
798
|
-
args: ['span1', { static:
|
|
839
|
+
args: ['span1', { static: true }]
|
|
799
840
|
}], span2: [{
|
|
800
841
|
type: ViewChild,
|
|
801
|
-
args: ['span2', { static:
|
|
842
|
+
args: ['span2', { static: true }]
|
|
802
843
|
}], span3: [{
|
|
803
844
|
type: ViewChild,
|
|
804
|
-
args: ['span3', { static:
|
|
845
|
+
args: ['span3', { static: true }]
|
|
805
846
|
}], holder1: [{
|
|
806
847
|
type: ViewChild,
|
|
807
|
-
args: ['holder1', { static:
|
|
848
|
+
args: ['holder1', { static: true }]
|
|
808
849
|
}] } });
|
|
809
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQtZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLWlucHV0LWRhdGV0aW1lLXBpY2tlci9jYS1pbnB1dC1kYXRldGltZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQtZGF0ZXRpbWUtcGlja2VyL2NhLWlucHV0LWRhdGV0aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUwsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEdBQ1YsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVMLFdBQVcsRUFFWCxtQkFBbUIsR0FDcEIsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFL0MsVUFBVTtBQUNWLE9BQU8sTUFBTSxNQUFNLFFBQVEsQ0FBQztBQUU1QixPQUFPLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUkxQyxPQUFPLEVBQW9CLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBRXJFLE9BQU87QUFDUCxPQUFPLEVBQ0wsdUJBQXVCLEVBQ3ZCLDRCQUE0QixHQUM3QixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLGFBQWE7QUFDYixPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsZ0NBQWdDLEVBQUUsTUFBTSxvRUFBb0UsQ0FBQztBQUN0SCxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxzRkFBc0YsQ0FB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ZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE91dHB1dCxcbiAgU2VsZixcbiAgVmlld0NoaWxkLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIENvbnRyb2xWYWx1ZUFjY2Vzc29yLFxuICBGb3Jtc01vZHVsZSxcbiAgTmdDb250cm9sLFxuICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBDb21tb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuXG4vLyBJbXBvcnRzXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5pbXBvcnQgeyBOZ2JQb3BvdmVyIH0gZnJvbSAnQG5nLWJvb3RzdHJhcC9uZy1ib290c3RyYXAnO1xuaW1wb3J0IHsgU3ViamVjdCwgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XG5cbi8vIE1vZGVsc1xuaW1wb3J0IHsgSUNhSW5wdXQgfSBmcm9tICcuLi9jYS1pbnB1dC9jb25maWcnO1xuaW1wb3J0IHsgSW5wdXRDaGFuZ2VWYWx1ZSwgSW5wdXRTdmdSb3V0ZXMgfSBmcm9tICcuLi9jYS1pbnB1dC91dGlscyc7XG5cbi8vIFBpcGVcbmltcG9ydCB7XG4gIElucHV0Q29udGFpbmVyQ2xhc3NQaXBlLFxuICBJbnB1dERhdGV0aW1lUGlja2VyQ2xhc3NQaXBlLFxufSBmcm9tICcuLi9jYS1pbnB1dC9waXBlcyc7XG5cbi8vIENvbXBvbmVudHNcbmltcG9ydCB7IENhSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi9jYS1pbnB1dC9jYS1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FDdXN0b21EYXRldGltZVBpY2tlcnNDb21wb25lbnQgfSBmcm9tICcuLi9jYS1jdXN0b20tZGF0ZXRpbWUtcGlja2Vycy9jYS1jdXN0b20tZGF0ZXRpbWUtcGlja2Vycy5jb21wb25lbnQnO1xuaW1wb3J0IHsgQ2FJbnB1dFBsYWNlaG9sZGVySWNvbkNvbXBvbmVudCB9IGZyb20gJy4uL2NhLWlucHV0L2NvbXBvbmVudHMvY2EtaW5wdXQtcGxhY2Vob2xkZXItaWNvbi9jYS1pbnB1dC1wbGFjZWhvbGRlci1pY29uLmNvbXBvbmVudCc7XG5cbi8vIEVudW1zXG5pbXBvcnQgeyBJbnB1dENvbmZpZ05hbWVTdHJpbmdFbnVtIH0gZnJvbSAnLi4vY2EtaW5wdXQvZW51bXMnO1xuXG4vLyBTZXJ2aWNlc1xuaW1wb3J0IHsgQ2FsZW5kYXJEYXRlVGltZVBpY2tlclNlcnZpY2UgfSBmcm9tICcuLi9jYS1jdXN0b20tZGF0ZXRpbWUtcGlja2Vycy9zZXJ2aWNlcy9jYWxlbmRhci1kYXRldGltZS1waWNrZXIuc2VydmljZSc7XG5pbXBvcnQgeyBBbmd1bGFyU3ZnSWNvbk1vZHVsZSB9IGZyb20gJ2FuZ3VsYXItc3ZnLWljb24nO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2xQaXBlIH0gZnJvbSAnLi4vY2EtaW5wdXQvcGlwZXMvZm9ybS1jb250cm9sLnBpcGUnO1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2EtaW5wdXQtZGF0ZXRpbWUtcGlja2VyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhLWlucHV0LWRhdGV0aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogW1xuICAgICcuL2NhLWlucHV0LWRhdGV0aW1lLXBpY2tlci5jb21wb25lbnQuc2NzcycsXG4gICAgJy4uL2NhLWlucHV0L3Njc3MvL2NhLWlucHV0LmRhdGVwaWNrZXIuc2NzcycsXG4gIF0sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICAvLyBtb2R1bGVzXG4gICAgQ29tbW9uTW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgQW5ndWxhclN2Z0ljb25Nb2R1bGUsXG4gICAgLy8gY29tcG9uZW50c1xuICAgIENhSW5wdXRDb21wb25lbnQsXG4gICAgQ2FDdXN0b21EYXRldGltZVBpY2tlcnNDb21wb25lbnQsXG4gICAgLy8gcGlwZXNcbiAgICBJbnB1dERhdGV0aW1lUGlja2VyQ2xhc3NQaXBlLFxuICAgIElucHV0Q29udGFpbmVyQ2xhc3NQaXBlLFxuICAgIEZvcm1Db250cm9sUGlwZSxcbiAgXSxcbiAgcHJvdmlkZXJzOiBbQ2FsZW5kYXJEYXRlVGltZVBpY2tlclNlcnZpY2VdLFxufSlcbmV4cG9ydCBjbGFzcyBDYUlucHV0RGF0ZXRpbWVQaWNrZXJDb21wb25lbnRcbiAgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBDb250cm9sVmFsdWVBY2Nlc3NvciwgT25EZXN0cm95XG57XG4gIEBJbnB1dCgpIGlucHV0Q29uZmlnITogSUNhSW5wdXQ7XG5cbiAgQE91dHB1dCgnY2xlYXInKSBjbGVhcklucHV0RXZlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICBAT3V0cHV0KCdibHVySW5wdXQnKSBibHVySW5wdXRFdmVudDogRXZlbnRFbWl0dGVyPGJvb2xlYW4+ID1cbiAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG5cbiAgQFZpZXdDaGlsZChDYUlucHV0UGxhY2Vob2xkZXJJY29uQ29tcG9uZW50KVxuICBjYUlucHV0UGxhY2Vob2xkZXJJY29uQ29tcG9uZW50ITogQ2FJbnB1dFBsYWNlaG9sZGVySWNvbkNvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdkYXRlVGltZVBvcG92ZXInKSBkYXRlVGltZVBvcG92ZXIhOiBOZ2JQb3BvdmVyO1xuICBAVmlld0NoaWxkKENhSW5wdXRDb21wb25lbnQsIHsgc3RhdGljOiB0cnVlIH0pXG4gIGNhSW5wdXRDb21wb25lbnQhOiBDYUlucHV0Q29tcG9uZW50O1xuXG4gIHB1YmxpYyBzaG93RGF0ZUlucHV0OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBkYXRlVGltZUlucHV0RGF0ZTogRGF0ZSA9IG5ldyBEYXRlKCk7XG4gIHB1YmxpYyBzZWxlY3Rpb25JbnB1dDogbnVtYmVyID0gLTE7XG5cbiAgcHJpdmF0ZSBkYXRlVGltZU1haW5UaW1lciE6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVtYmVyO1xuICBwcml2YXRlIGZvY3VzQmx1ciE6IFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVtYmVyO1xuICBwcml2YXRlIHRpbWVvdXRDbGVhbmVyITogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudW1iZXI7XG5cbiAgcHVibGljIGlucHV0U3ZnUm91dGVzID0gSW5wdXRTdmdSb3V0ZXM7XG5cbiAgcHVibGljIGlzVG91Y2hlZElucHV0OiBib29sZWFuID0gZmFsc2U7XG4gIHB1YmxpYyBwcmV2ZW50Qmx1cjogYm9vbGVhbiA9IGZhbHNlO1xuICAvLyBEYXRlXG4gIHB1YmxpYyBuZXdJbnB1dENoYW5nZWQ6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgc2VsZWN0TGFzdE9uZUZvclNlbGVjdGlvbkVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gIEBPdXRwdXQoKSBzZWxlY3RMYXN0T25lQWZ0ZXJNb3VzZVVwRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcbiAgQE91dHB1dCgpIG9uRGF0ZVBhc3RlRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8Q2xpcGJvYXJkRXZlbnQ+KCk7XG4gIEBPdXRwdXQoKSBvbkZvY3VzRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcbiAgQE91dHB1dCgpIGNoYW5nZVNlbGVjdGlvbkVtbWl0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICBlOiBLZXlib2FyZEV2ZW50O1xuICAgIG5vUHJldmVudERlZmF1bHQ6IGJvb2xlYW47XG4gIH0+KCk7XG4gIEBPdXRwdXQoKSBzZXRTZWxlY3Rpb25FbW1pdGVyID0gbmV3IEV2ZW50RW1pdHRlcjx7XG4gICAgcHJldmVudERlZmF1bHQ6ICgpID0+IHZvaWQ7XG4gICAgc3RvcFByb3BhZ2F0aW9uOiAoKSA9PiB2b2lkO1xuICAgIHRhcmdldDogYW55O1xuICB9PigpO1xuXG4gIEBWaWV3Q2hpbGQoJ3NwYW4xJywgeyBzdGF0aWM6IGZhbHNlIH0pIHNwYW4xITogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnc3BhbjInLCB7IHN0YXRpYzogZmFsc2UgfSkgc3BhbjIhOiBFbGVtZW50UmVmO1xuICBAVmlld0NoaWxkKCdzcGFuMycsIHsgc3RhdGljOiBmYWxzZSB9KSBzcGFuMyE6IEVsZW1lbnRSZWY7XG4gIEBWaWV3Q2hpbGQoJ2hvbGRlcjEnLCB7IHN0YXRpYzogZmFsc2UgfSkgaG9sZGVyMSE6IEVsZW1lbnRSZWY7XG5cbiAgcHJpdmF0ZSBkZXN0cm95JDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgQFNlbGYoKSBwdWJsaWMgc3VwZXJDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgcHJpdmF0ZSBjYWxlbmRhclNlcnZpY2U6IENhbGVuZGFyRGF0ZVRpbWVQaWNrZXJTZXJ2aWNlXG4gICkge1xuICAgIHRoaXMuc3VwZXJDb250cm9sLnZhbHVlQWNjZXNzb3IgPSB0aGlzO1xuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2V0VGltZVBpY2tlclRpbWUoKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnZhbHVlKVxuICAgICAgICB0aGlzLnNldFRpbWVEYXRlSW5wdXQodGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8udmFsdWUsIHRydWUpO1xuICAgIH0sIDMwMCk7XG5cbiAgICB0aGlzLmNhbGVuZGFyU2VydmljZS5kYXRlQ2hhbmdlZFxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKVxuICAgICAgLnN1YnNjcmliZSgoZGF0ZSkgPT4ge1xuICAgICAgICBpZiAoIXRoaXMuaW5wdXRDb25maWcuaXNEaXNhYmxlZCkge1xuICAgICAgICAgIHRoaXMuc2V0VGltZURhdGVJbnB1dChkYXRlKTtcbiAgICAgICAgICB0aGlzLmNhSW5wdXRDb21wb25lbnQuY2FJbnB1dFBsYWNlaG9sZGVySWNvbkNvbXBvbmVudC50Mj8uY2xvc2UoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBnZXQgZ2V0U3VwZXJDb250cm9sKCkge1xuICAgIHJldHVybiB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sO1xuICB9XG5cbiAgcHVibGljIHNlbGVjdExhc3RPbmVGb3JTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgbGV0IHJhbmdlLCBzZWxlY3Rpb247XG5cbiAgICB0aGlzLnNob3dEYXRlSW5wdXQgPSB0cnVlO1xuICAgIHRoaXMuc2VsZWN0aW9uSW5wdXQgPSAtMTtcbiAgICB0aGlzLmNhSW5wdXRDb21wb25lbnQuaXNGb2N1c0lucHV0ID0gdHJ1ZTtcblxuICAgIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uICYmIGRvY3VtZW50LmNyZWF0ZVJhbmdlKSB7XG4gICAgICBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG5cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5uYW1lICE9PVxuICAgICAgICBJbnB1dENvbmZpZ05hbWVTdHJpbmdFbnVtLkRBVEVfUElDS0VSX0JBTktfQ0FSRFxuICAgICAgKSB7XG4gICAgICAgIHJhbmdlLnNldFN0YXJ0KHRoaXMuc3BhbjMubmF0aXZlRWxlbWVudCwgMSk7XG4gICAgICAgIHJhbmdlLnNldEVuZCh0aGlzLnNwYW4zLm5hdGl2ZUVsZW1lbnQsIDEpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmFuZ2Uuc2V0U3RhcnQodGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50LCAxKTtcbiAgICAgICAgcmFuZ2Uuc2V0RW5kKHRoaXMuc3BhbjIubmF0aXZlRWxlbWVudCwgMSk7XG4gICAgICB9XG5cbiAgICAgIHNlbGVjdGlvbj8ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICBzZWxlY3Rpb24/LmFkZFJhbmdlKHJhbmdlKTtcbiAgICB9XG5cbiAgICB0aGlzLnRpbWVvdXRDbGVhbmVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5kYXRlVGltZU1haW5UaW1lcik7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5mb2N1c0JsdXIpO1xuICAgIH0sIDkwKTtcbiAgfVxuXG4gIHB1YmxpYyBzZWxlY3RMYXN0T25lQWZ0ZXJNb3VzZVVwKCk6IHZvaWQge1xuICAgIGlmIChcbiAgICAgIHRoaXMuaW5wdXRDb25maWcubmFtZSA9PT0gSW5wdXRDb25maWdOYW1lU3RyaW5nRW51bS5EQVRFX1BJQ0tFUl9CQU5LX0NBUkRcbiAgICApIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uSW5wdXQgPSAxO1xuICAgICAgdGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XG4gICAgICB0aGlzLnNldFNwYW5TZWxlY3Rpb24odGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3Rpb25JbnB1dCA9IDI7XG4gICAgICB0aGlzLnNwYW4zLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgIHRoaXMuc2V0U3BhblNlbGVjdGlvbih0aGlzLnNwYW4zLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHRoaXMuc2hvd0RhdGVJbnB1dCA9IHRydWU7XG5cbiAgICB0aGlzLnRpbWVvdXRDbGVhbmVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5kYXRlVGltZU1haW5UaW1lcik7XG4gICAgICBjbGVhclRpbWVvdXQodGhpcy5mb2N1c0JsdXIpO1xuICAgIH0sIDkwKTtcbiAgfVxuXG4gIHB1YmxpYyBvbkRhdGVQYXN0ZShldmVudDogQ2xpcGJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgY29uc3QgcGFzdGVUZXh0ID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpIGFzIHN0cmluZztcbiAgICBjb25zdCBwYXN0ZWREYXRlID0gbmV3IERhdGUocGFzdGVUZXh0KTtcbiAgICBpZiAoIWlzTmFOKHBhc3RlZERhdGUuZ2V0VGltZSgpKSkge1xuICAgICAgdGhpcy5zZXRUaW1lRGF0ZUlucHV0KHBhc3RlZERhdGUpO1xuICAgICAgdGhpcy5zZWxlY3RTcGFuQnlUYWJJbmRleCh0aGlzLnNlbGVjdGlvbklucHV0KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgY2hhbmdlU2VsZWN0aW9uKGV2ZW50OiBLZXlib2FyZEV2ZW50LCBub1ByZXZlbnREZWZhdWx0ID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAoIW5vUHJldmVudERlZmF1bHQpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG5cbiAgICBjb25zdCBpc05hdmlnYXRpb25LZXkgPSB0aGlzLmlzTmF2aWdhdGlvbktleShldmVudCk7XG4gICAgY29uc3QgaXNTcGVjaWFsVGltZVBpY2tlcktleSA9XG4gICAgICB0aGlzLnNlbGVjdGlvbklucHV0ID09PSAzICYmXG4gICAgICB0aGlzLmlucHV0Q29uZmlnLm5hbWUgPT09IElucHV0Q29uZmlnTmFtZVN0cmluZ0VudW0uVElNRV9QSUNLRVI7XG5cbiAgICBpZiAoaXNOYXZpZ2F0aW9uS2V5IHx8IGlzU3BlY2lhbFRpbWVQaWNrZXJLZXkpIHtcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB0aGlzLmhhbmRsZU5hdmlnYXRpb25LZXkoZXZlbnQpO1xuICAgIH0gZWxzZSBpZiAoIXRoaXMuaXNOdW1iZXIoZXZlbnQpKSB7XG4gICAgICBpZiAoIW5vUHJldmVudERlZmF1bHQpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKCFub1ByZXZlbnREZWZhdWx0KSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbklucHV0ID09PSAtMSkgdGhpcy5zZWxlY3Rpb25JbnB1dCA9IDA7XG4gICAgICAgIHRoaXMuaGFuZGxlS2V5Ym9hcmRJbnB1dHMoZXZlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaXNOdW1iZXIoZXZ0OiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgZXZ0ID0gZXZ0ID8gZXZ0IDogKHdpbmRvdy5ldmVudCBhcyBLZXlib2FyZEV2ZW50KTtcbiAgICBsZXQgY2hhckNvZGUgPSBldnQud2hpY2ggPyBldnQud2hpY2ggOiBldnQua2V5Q29kZTtcbiAgICByZXR1cm4gKFxuICAgICAgKGNoYXJDb2RlID49IDQ4ICYmIGNoYXJDb2RlIDw9IDU3KSB8fCAoY2hhckNvZGUgPj0gOTYgJiYgY2hhckNvZGUgPD0gMTA1KVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGlzTmF2aWdhdGlvbktleShlOiBLZXlib2FyZEV2ZW50KTogYm9vbGVhbiB7XG4gICAgY29uc3QgbmF2aWdhdGlvbktleXMgPSBbMzcsIDM4LCAzOSwgNDAsIDgsIDksIDQ2XTsgLy8gQXJyb3cga2V5cywgQmFja3NwYWNlLCBUYWIsIERlbGV0ZVxuICAgIHJldHVybiBuYXZpZ2F0aW9uS2V5cy5pbmNsdWRlcyhlLmtleUNvZGUpO1xuICB9XG5cbiAgcHVibGljIG9uRm9jdXMoZXZlbnQ/OiBGb2N1c0V2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5vbkZvY3VzRW1pdHRlci5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBjbG9zZVBvcG92ZXIoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY2FJbnB1dENvbXBvbmVudC5jYUlucHV0UGxhY2Vob2xkZXJJY29uQ29tcG9uZW50LnQyKVxuICAgICAgdGhpcy5jYUlucHV0Q29tcG9uZW50LmNhSW5wdXRQbGFjZWhvbGRlckljb25Db21wb25lbnQudDIuY2xvc2UoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b2dnbGVEcm9wZG93bk9wdGlvbnMoKSB7XG4gICAgaWYgKHRoaXMuY2FJbnB1dENvbXBvbmVudC5jYUlucHV0UGxhY2Vob2xkZXJJY29uQ29tcG9uZW50LnQyKSB7XG4gICAgICBpZiAoIXRoaXMuY2FJbnB1dENvbXBvbmVudC5jYUlucHV0UGxhY2Vob2xkZXJJY29uQ29tcG9uZW50LnQyLmlzT3BlbigpKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmRhdGVUaW1lTWFpblRpbWVyKTtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZm9jdXNCbHVyKTtcbiAgICAgICAgdGhpcy5ob2xkZXIxLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25JbnB1dCA9IC0xO1xuICAgICAgICB0aGlzLnNldFNwYW5TZWxlY3Rpb24odGhpcy5ob2xkZXIxLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLmNhSW5wdXRDb21wb25lbnQuY2FJbnB1dFBsYWNlaG9sZGVySWNvbkNvbXBvbmVudC50Mi5vcGVuKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmhvbGRlcjEubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgICAgIC8vIHRoaXMuc2V0SXNGb2N1c0lucHV0KGZhbHNlKTtcbiAgICAgICAgbGV0IHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgc2VsZWN0aW9uPy5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaGFuZGxlRm9jdXNJbnB1dChlOiBFdmVudCkge1xuICAgIGNvbnN0IGV2ZW50ID0gZSBhcyBGb2N1c0V2ZW50O1xuXG4gICAgaWYgKCF0aGlzLmlucHV0Q29uZmlnLmlzRGlzYWJsZWQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmRhdGVUaW1lTWFpblRpbWVyKTtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmZvY3VzQmx1cik7XG4gICAgICB0aGlzLnNob3dEYXRlSW5wdXQgPSB0cnVlO1xuICAgICAgaWYgKFxuICAgICAgICAodGhpcy5zZWxlY3Rpb25JbnB1dCA9PT0gLTEgJiZcbiAgICAgICAgICAoZXZlbnQ/LnRhcmdldCBhcyBIVE1MRWxlbWVudCk/Lm5vZGVOYW1lID09PSAnSU5QVVQnKSB8fFxuICAgICAgICAoZXZlbnQ/LnJlbGF0ZWRUYXJnZXQgYXMgSFRNTEVsZW1lbnQpPy5ub2RlTmFtZSA9PT0gJ0lOUFVUJyB8fFxuICAgICAgICBldmVudD8ucmVsYXRlZFRhcmdldCA9PT0gbnVsbFxuICAgICAgKSB7XG4gICAgICAgIHRoaXMucHJldmVudEJsdXIgPSB0cnVlO1xuICAgICAgICB0aGlzLmhvbGRlcjEubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB0aGlzLnNldFNwYW5TZWxlY3Rpb24odGhpcy5ob2xkZXIxLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbklucHV0ID0gLTE7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuY2FJbnB1dENvbXBvbmVudC5jYUlucHV0UGxhY2Vob2xkZXJJY29uQ29tcG9uZW50LnQyLnRvZ2dsZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRTcGFuU2VsZWN0aW9uKGVsZW1lbnQ6IE5vZGUpOiB2b2lkIHtcbiAgICBsZXQgcmFuZ2U6IFJhbmdlO1xuICAgIGxldCBzZWxlY3Rpb246IFNlbGVjdGlvbiB8IG51bGw7XG5cbiAgICBpZiAod2luZG93LmdldFNlbGVjdGlvbiAmJiBkb2N1bWVudC5jcmVhdGVSYW5nZSkge1xuICAgICAgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgcmFuZ2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICAgICAgcmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKGVsZW1lbnQpO1xuICAgICAgc2VsZWN0aW9uPy5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgIHNlbGVjdGlvbj8uYWRkUmFuZ2UocmFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzZXRTZWxlY3Rpb24oZXZlbnQ6IHtcbiAgICBwcmV2ZW50RGVmYXVsdDogKCkgPT4gdm9pZDtcbiAgICBzdG9wUHJvcGFnYXRpb246ICgpID0+IHZvaWQ7XG4gICAgdGFyZ2V0OiBhbnk7XG4gIH0pOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xuXG4gICAgY29uc3Qgc2VsZWN0aW9uSW5wdXQgPSBwYXJzZUludChlbGVtZW50LmdldEF0dHJpYnV0ZSgndGFiaW5kZXgnKSk7XG5cbiAgICBjb25zdCBjdXJyZW50U2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuXG4gICAgaWYgKGN1cnJlbnRTZWxlY3Rpb24gJiYgY3VycmVudFNlbGVjdGlvbi50b1N0cmluZygpLmxlbmd0aCA+IDEwKSB7XG4gICAgICB0aGlzLmhvbGRlcjEubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgdGhpcy5zZWxlY3Rpb25JbnB1dCA9IDA7XG4gICAgICB0aGlzLnNldFNwYW5TZWxlY3Rpb24odGhpcy5ob2xkZXIxLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGF0ZVRpbWVNYWluVGltZXIpO1xuICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZm9jdXNCbHVyKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjbGVhclRpbWVvdXQodGhpcy5kYXRlVGltZU1haW5UaW1lcik7XG4gICAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdtYWluJykpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uSW5wdXQgPSBzZWxlY3Rpb25JbnB1dDtcbiAgICAgIHRoaXMuc2V0U3BhblNlbGVjdGlvbihlbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uSW5wdXQgPT09IC0xKSB7XG4gICAgICAgIHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbklucHV0ID0gMDtcbiAgICAgICAgdGhpcy5zZXRTcGFuU2VsZWN0aW9uKHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLnNlbGVjdFNwYW5CeVRhYkluZGV4KHRoaXMuc2VsZWN0aW9uSW5wdXQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiBhbnkpOiB2b2lkIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgb25DaGFuZ2UoXzogSW5wdXRDaGFuZ2VWYWx1ZSk6IHZvaWQge1xuICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnNldFZhbHVlKF8pO1xuICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/Lm1hcmtBc1RvdWNoZWQoKTsgLy8gTWFyayB0aGUgY29udHJvbCBhcyB0b3VjaGVkXG4gICAgdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8ubWFya0FzRGlydHkoKTtcbiAgfVxuXG4gIHB1YmxpYyB3cml0ZVZhbHVlKG9iajogSW5wdXRDaGFuZ2VWYWx1ZSk6IHZvaWQge31cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoKTogdm9pZCB7fVxuXG4gIC8vIEJMVVIgT04gSU5QVVRcbiAgcHVibGljIGJsdXJPbkRhdGVUaW1lKCk6IHZvaWQge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLmRhdGVUaW1lTWFpblRpbWVyKTtcbiAgICB0aGlzLmRhdGVUaW1lTWFpblRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5uYW1lID09PSBJbnB1dENvbmZpZ05hbWVTdHJpbmdFbnVtLkRBVEVfUElDS0VSKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhaXNOYU4odGhpcy5zcGFuMT8ubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpICYmXG4gICAgICAgICAgIWlzTmFOKHRoaXMuc3BhbjI/Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKSAmJlxuICAgICAgICAgICFpc05hTih0aGlzLnNwYW4zPy5uYXRpdmVFbGVtZW50LmlubmVySFRNTClcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5pc0Z1dHVyZURhdGVEaXNhYmxlZCAmJlxuICAgICAgICAgICAgbW9tZW50KHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUpLmlzQWZ0ZXIobW9tZW50KCkpXG4gICAgICAgICAgKVxuICAgICAgICAgICAgdGhpcy5zdXBlckNvbnRyb2wuY29udHJvbD8uc2V0RXJyb3JzKHtcbiAgICAgICAgICAgICAgaW52YWxpZDogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIC8vIGRvbid0IGFjY2VwdCBmdXR1cmUgZGF0ZXNcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5leHBpcmVkRGF0ZUludmFsaWQgJiZcbiAgICAgICAgICAgICAgbW9tZW50KHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUpLmlzQmVmb3JlKG1vbWVudCgpKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnNldEVycm9ycyh7IGludmFsaWQ6IHRydWUgfSk7IC8vIGRvbid0IGFjY2VwdCBleHBpcmVkIGRhdGVzXG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmNhbGVuZGFyU2VydmljZS5kYXRlQ2hhbmdlZC5uZXh0KHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLnNwYW4xLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJ21tJztcbiAgICAgICAgICB0aGlzLnNwYW4yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJ2RkJztcbiAgICAgICAgICB0aGlzLnNwYW4zLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJ3l5JztcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgICB0aGlzLnNob3dEYXRlSW5wdXQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5uYW1lID09PVxuICAgICAgICBJbnB1dENvbmZpZ05hbWVTdHJpbmdFbnVtLkRBVEVfUElDS0VSX0JBTktfQ0FSRFxuICAgICAgKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAhaXNOYU4odGhpcy5zcGFuMS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCkgJiZcbiAgICAgICAgICAhaXNOYU4odGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50LmlubmVySFRNTClcbiAgICAgICAgKSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5leHBpcmVkRGF0ZUludmFsaWQgJiZcbiAgICAgICAgICAgIG1vbWVudCh0aGlzLmRhdGVUaW1lSW5wdXREYXRlKS5pc0JlZm9yZShtb21lbnQoKSlcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnNldEVycm9ycyh7IGludmFsaWQ6IHRydWUgfSk7IC8vIGRvbid0IGFjY2VwdCBleHBpcmVkIGRhdGVzXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmRhdGVDaGFuZ2VkLm5leHQodGhpcy5kYXRlVGltZUlucHV0RGF0ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnbW0nO1xuICAgICAgICAgIHRoaXMuc3BhbjIubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAneXknO1xuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgICAgICAgIHRoaXMuc2hvd0RhdGVJbnB1dCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgIWlzTmFOKHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpICYmXG4gICAgICAgICAgIWlzTmFOKHRoaXMuc3BhbjIubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpXG4gICAgICAgICkge1xuICAgICAgICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmRhdGVDaGFuZ2VkLm5leHQodGhpcy5kYXRlVGltZUlucHV0RGF0ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5zcGFuMS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICdISCc7XG4gICAgICAgICAgdGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICdNTSc7XG4gICAgICAgICAgdGhpcy5zZXRUaW1lUGlja2VyVGltZSgpO1xuICAgICAgICAgIHRoaXMuc2hvd0RhdGVJbnB1dCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLmRhdGVUaW1lTWFpblRpbWVyKTtcbiAgICAgIHRoaXMuc2VsZWN0aW9uSW5wdXQgPSAtMTtcbiAgICAgIHRoaXMubmV3SW5wdXRDaGFuZ2VkID0gdHJ1ZTtcbiAgICB9LCAxMDApO1xuICB9XG5cbiAgcHVibGljIG9uUG9wb3ZlclNob3duKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd0RhdGVJbnB1dCA9IHRydWU7XG4gICAgdGhpcy5ob2xkZXIxLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgfVxuXG4gIHB1YmxpYyBvblBvcG92ZXJIaWRkZW4oKTogdm9pZCB7XG4gICAgdGhpcy5ibHVyT25EYXRlVGltZSgpO1xuICB9XG5cbiAgcHVibGljIHNldFRpbWVEYXRlSW5wdXQoZGF0ZTogSW5wdXRDaGFuZ2VWYWx1ZSwgaGFzVmFsdWU/OiBib29sZWFuKTogdm9pZCB7XG4gICAgbGV0IHRleHQsIGRhdGVGb3JtYXQsIHRpbWVGb3JtYXQ7XG4gICAgaWYgKHRoaXMuaW5wdXRDb25maWcubmFtZSA9PT0gSW5wdXRDb25maWdOYW1lU3RyaW5nRW51bS5EQVRFX1BJQ0tFUikge1xuICAgICAgdGV4dCA9IG1vbWVudChuZXcgRGF0ZShkYXRlKSkuZm9ybWF0KCdNTS9ERC9ZWScpO1xuICAgICAgZGF0ZUZvcm1hdCA9IHRleHQuc3BsaXQoJy8nKTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgdGhpcy5pbnB1dENvbmZpZy5uYW1lID09PSBJbnB1dENvbmZpZ05hbWVTdHJpbmdFbnVtLkRBVEVfUElDS0VSX0JBTktfQ0FSRFxuICAgICkge1xuICAgICAgdGV4dCA9IG1vbWVudChuZXcgRGF0ZShkYXRlKSkuZm9ybWF0KCdNTS9ERC9ZWScpO1xuICAgICAgZGF0ZUZvcm1hdCA9IHRleHQuc3BsaXQoJy8nKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGF0ZSA9XG4gICAgICAgIGRhdGUgaW5zdGFuY2VvZiBEYXRlXG4gICAgICAgICAgPyBkYXRlXG4gICAgICAgICAgOiBuZXcgRGF0ZShtb21lbnQoKS5mb3JtYXQoJ01NL0REL1lZWVknKSArICcgJyArIGRhdGUpO1xuICAgICAgdGV4dCA9IG1vbWVudChuZXcgRGF0ZShkYXRlKSkuZm9ybWF0KCdISDptbScpO1xuXG4gICAgICB0aW1lRm9ybWF0ID0gbW9tZW50KG5ldyBEYXRlKGRhdGUpKS5mb3JtYXQoJ2hoL21tL0EnKTtcbiAgICAgIGRhdGVGb3JtYXQgPSB0aW1lRm9ybWF0LnNwbGl0KCcvJyk7XG4gICAgfVxuXG4gICAgaWYgKCFoYXNWYWx1ZSkgdGhpcy5vbkNoYW5nZSh0ZXh0KTtcbiAgICAvLyB0aGlzLmlucHV0Lm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0ZXh0O1xuICAgIHRoaXMuc2V0SXNGb2N1c0lucHV0KGZhbHNlKTtcblxuICAgIGlmICh0aGlzLnNwYW4xKSB0aGlzLnNwYW4xLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gZGF0ZUZvcm1hdFswXTtcblxuICAgIGlmICh0aGlzLnNwYW4yKVxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLmlucHV0Q29uZmlnLm5hbWUgIT09XG4gICAgICAgIElucHV0Q29uZmlnTmFtZVN0cmluZ0VudW0uREFURV9QSUNLRVJfQkFOS19DQVJEXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IGRhdGVGb3JtYXRbMV07XG4gICAgICAgIHRoaXMuc3BhbjMubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSBkYXRlRm9ybWF0WzJdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IGRhdGVGb3JtYXRbMl07XG4gICAgICB9XG5cbiAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlID0gbmV3IERhdGUoZGF0ZSk7XG4gICAgdGhpcy5zaG93RGF0ZUlucHV0ID0gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVLZXlib2FyZElucHV0cyhlOiBLZXlib2FyZEV2ZW50LCBpc1Jlc3RhcnQ/OiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3Qgc3Bhbk9uZVZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQgPVxuICAgICAgaXNOYU4odGhpcy5zcGFuMS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCkgfHwgdGhpcy5uZXdJbnB1dENoYW5nZWRcbiAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgOiBwYXJzZUludCh0aGlzLnNwYW4xLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKTtcbiAgICBjb25zdCBzcGFuMlZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQgPVxuICAgICAgaXNOYU4odGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCkgfHwgdGhpcy5uZXdJbnB1dENoYW5nZWRcbiAgICAgICAgPyB1bmRlZmluZWRcbiAgICAgICAgOiBwYXJzZUludCh0aGlzLnNwYW4yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKTtcblxuICAgIGxldCBzcGFuM1ZhbHVlOiBzdHJpbmcgfCBudW1iZXIgfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAoXG4gICAgICB0aGlzLmlucHV0Q29uZmlnLm5hbWUgIT09IElucHV0Q29uZmlnTmFtZVN0cmluZ0VudW0uREFURV9QSUNLRVJfQkFOS19DQVJEXG4gICAgKSB7XG4gICAgICBzcGFuM1ZhbHVlID1cbiAgICAgICAgaXNOYU4odGhpcy5zcGFuMy5uYXRpdmVFbGVtZW50LmlubmVySFRNTCkgfHwgdGhpcy5uZXdJbnB1dENoYW5nZWRcbiAgICAgICAgICA/ICcnXG4gICAgICAgICAgOiBwYXJzZUludCh0aGlzLnNwYW4zLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKTtcbiAgICB9XG5cbiAgICB0aGlzLm5ld0lucHV0Q2hhbmdlZCA9IGZhbHNlO1xuICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLm5hbWUgPT09IElucHV0Q29uZmlnTmFtZVN0cmluZ0VudW0uREFURV9QSUNLRVIpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdGlvbklucHV0ID09PSAwKSB7XG4gICAgICAgIGlmIChpc1Jlc3RhcnQpIHtcbiAgICAgICAgICB0aGlzLnNwYW4xLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJ21tJztcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbklucHV0ID0gMDtcbiAgICAgICAgICB0aGlzLnNlbGVjdFNwYW5CeVRhYkluZGV4KDApO1xuICAgICAgICB9IGVsc2UgaWYgKHNwYW5PbmVWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgbGV0IGZpbmFsX3ZhbHVlID0gcGFyc2VJbnQoYCR7c3Bhbk9uZVZhbHVlfSR7ZS5rZXl9YCk7XG4gICAgICAgICAgaWYgKGZpbmFsX3ZhbHVlID4gMTIpIHtcbiAgICAgICAgICAgIHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAoJzAnICsgcGFyc2VJbnQoZS5rZXkpKS5zbGljZShcbiAgICAgICAgICAgICAgLTJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbklucHV0ID0gMTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0U3BhbkJ5VGFiSW5kZXgoMSwgdHJ1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZS5zZXRNb250aChcbiAgICAgICAgICAgICAgICBwYXJzZUludCh0aGlzLnNwYW4xLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MICsgcGFyc2VJbnQoZS5rZXkpKSAtXG4gICAgICAgICAgICAgICAgICAxXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICghZmluYWxfdmFsdWUpIHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnbW0nO1xuICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICB0aGlzLnNwYW4xLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gKFxuICAgICAgICAgICAgICAgIHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgKyBwYXJzZUludChlLmtleSlcbiAgICAgICAgICAgICAgKS5zbGljZSgtMik7XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uSW5wdXQgPSAxO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RTcGFuQnlUYWJJbmRleCgxLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHBhcnNlSW50KGUua2V5KSlcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZS5zZXRNb250aChwYXJzZUludChlLmtleSkgLSAxKVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IGZpbmFsX3ZhbHVlID0gKCcwJyArIHBhcnNlSW50KGUua2V5KSkuc2xpY2UoLTIpO1xuXG4gICAgICAgICAgdGhpcy5zcGFuMS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IGZpbmFsX3ZhbHVlO1xuXG4gICAgICAgICAgaWYgKHBhcnNlSW50KGAxJHtlLmtleX1gKSA+IDEyKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbklucHV0ID0gMTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0U3BhbkJ5VGFiSW5kZXgoMSwgdHJ1ZSk7XG4gICAgICAgICAgfSBlbHNlIHRoaXMuc2VsZWN0U3BhbkJ5VGFiSW5kZXgoMCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3Rpb25JbnB1dCA9PT0gMSkge1xuICAgICAgICBpZiAoaXNSZXN0YXJ0KSB7XG4gICAgICAgICAgdGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICdkZCc7XG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb25JbnB1dCA9IDA7XG4gICAgICAgICAgdGhpcy5zZWxlY3RTcGFuQnlUYWJJbmRleCgwLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIGlmIChzcGFuMlZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBsZXQgZmluYWxfdmFsdWUgPSBwYXJzZUludChgJHtzcGFuMlZhbHVlfSR7ZS5rZXl9YCk7XG4gICAgICAgICAgaWYgKGZpbmFsX3ZhbHVlID4gMzEpIHtcbiAgICAgICAgICAgIHRoaXMuc3BhbjIubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAoJzAnICsgcGFyc2VJbnQoZS5rZXkpKS5zbGljZShcbiAgICAgICAgICAgICAgLTJcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbklucHV0ID0gMjtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0U3BhbkJ5VGFiSW5kZXgoMiwgdHJ1ZSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZS5zZXREYXRlKFxuICAgICAgICAgICAgICAgIHBhcnNlSW50KHRoaXMuc3BhbjIubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgKyBwYXJzZUludChlLmtleSkpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmICghZmluYWxfdmFsdWUpIHtcbiAgICAgICAgICAgICAgdGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICdkZCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnNwYW4yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gKFxuICAgICAgICAgICAgICAgIHRoaXMuc3BhbjIubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgKyBwYXJzZUludChlLmtleSlcbiAgICAgICAgICAgICAgKS5zbGljZSgtMik7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uSW5wdXQgPSAyO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RTcGFuQnlUYWJJbmRleCgyLCB0cnVlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaWYgKHBhcnNlSW50KGUua2V5KSlcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZS5zZXREYXRlKHBhcnNlSW50KGUua2V5KSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICB0aGlzLnNwYW4yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gKCcwJyArIHBhcnNlSW50KGUua2V5KSkuc2xpY2UoXG4gICAgICAgICAgICAtMlxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBpZiAocGFyc2VJbnQoYDEke2Uua2V5fWApID4gMzEpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uSW5wdXQgPSAyO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RTcGFuQnlUYWJJbmRleCgyLCB0cnVlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RTcGFuQnlUYWJJbmRleCgxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChpc1Jlc3RhcnQpIHtcbiAgICAgICAgICB0aGlzLnNwYW4zLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJ3l5JztcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbklucHV0ID0gMTtcbiAgICAgICAgICB0aGlzLnNlbGVjdFNwYW5CeVRhYkluZGV4KDEsIHRydWUpO1xuICAgICAgICB9IGVsc2UgaWYgKCFzcGFuM1ZhbHVlIHx8IHNwYW4zVmFsdWUudG9TdHJpbmcoKS5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICB0aGlzLnNwYW4zLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gKCcwJyArIHBhcnNlSW50KGUua2V5KSkuc2xpY2UoXG4gICAgICAgICAgICAtMlxuICAgICAgICAgICk7XG4gICAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZS5zZXRGdWxsWWVhcihcbiAgICAgICAgICAgICAgcGFyc2VJbnQoYDIwMCR7cGFyc2VJbnQoZS5rZXkpfWApXG4gICAgICAgICAgICApXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHRoaXMuc2VsZWN0U3BhbkJ5VGFiSW5kZXgoMik7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgZmluYWxZZWFyID0gcGFyc2VJbnQoXG4gICAgICAgICAgICB0aGlzLnNwYW4zLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MICsgcGFyc2VJbnQoZS5rZXkpXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IGZpbmFsU2hvd1llYXIgPVxuICAgICAgICAgICAgZmluYWxZZWFyID4gMzFcbiAgICAgICAgICAgICAgPyBwYXJzZUludChgMTkke2ZpbmFsWWVhcn1gKVxuICAgICAgICAgICAgICA6IHBhcnNlSW50KGAyMCR7ZmluYWxZZWFyfWApO1xuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUuc2V0RnVsbFllYXIoZmluYWxTaG93WWVhcilcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgdGhpcy5zcGFuMy5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IChcbiAgICAgICAgICAgIHRoaXMuc3BhbjMubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgKyBwYXJzZUludChlLmtleSlcbiAgICAgICAgICApLnNsaWNlKC0yKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdFNwYW5CeVRhYkluZGV4KDIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHRoaXMuaW5wdXRDb25maWcubmFtZSA9PT0gSW5wdXRDb25maWdOYW1lU3RyaW5nRW51bS5EQVRFX1BJQ0tFUl9CQU5LX0NBUkRcbiAgICApIHtcbiAgICAgIGlmICghdGhpcy5zZWxlY3Rpb25JbnB1dCkge1xuICAgICAgICBpZiAoaXNSZXN0YXJ0KSB7XG4gICAgICAgICAgdGhpcy5zcGFuMS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICdtbSc7XG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb25JbnB1dCA9IDA7XG4gICAgICAgICAgdGhpcy5zZWxlY3RTcGFuQnlUYWJJbmRleCgwKTtcbiAgICAgICAgfSBlbHNlIGlmIChzcGFuT25lVmFsdWUpIHtcbiAgICAgICAgICBjb25zdCBmaW5hbF92YWx1ZSA9IHBhcnNlSW50KGAke3NwYW5PbmVWYWx1ZX0ke2Uua2V5fWApO1xuICAgICAgICAgIGlmIChmaW5hbF92YWx1ZSA+IDEyKSB7XG4gICAgICAgICAgICB0aGlzLnNwYW4xLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gKCcwJyArIHBhcnNlSW50KGUua2V5KSkuc2xpY2UoXG4gICAgICAgICAgICAgIC0yXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25JbnB1dCA9IDE7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdFNwYW5CeVRhYkluZGV4KDEsIHRydWUpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlID0gbmV3IERhdGUoXG4gICAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUuc2V0TW9udGgoXG4gICAgICAgICAgICAgICAgcGFyc2VJbnQodGhpcy5zcGFuMS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCArIHBhcnNlSW50KGUua2V5KSkgLVxuICAgICAgICAgICAgICAgICAgMVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBpZiAoIWZpbmFsX3ZhbHVlKSB7XG4gICAgICAgICAgICAgIHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnbW0nO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5zcGFuMS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IChcbiAgICAgICAgICAgICAgICB0aGlzLnNwYW4xLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MICsgcGFyc2VJbnQoZS5rZXkpXG4gICAgICAgICAgICAgICkuc2xpY2UoLTIpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbklucHV0ID0gMTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0U3BhbkJ5VGFiSW5kZXgoMSwgdHJ1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChwYXJzZUludChlLmtleSkpXG4gICAgICAgICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlID0gbmV3IERhdGUoXG4gICAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUuc2V0TW9udGgocGFyc2VJbnQoZS5rZXkpIC0gMSlcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCBmaW5hbF92YWx1ZSA9ICgnMCcgKyBwYXJzZUludChlLmtleSkpLnNsaWNlKC0yKTtcblxuICAgICAgICAgIHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSBmaW5hbF92YWx1ZTtcblxuICAgICAgICAgIGlmIChwYXJzZUludChgMSR7ZS5rZXl9YCkgPiAxMikge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25JbnB1dCA9IDE7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdFNwYW5CeVRhYkluZGV4KDEsIHRydWUpO1xuICAgICAgICAgIH0gZWxzZSB0aGlzLnNlbGVjdFNwYW5CeVRhYkluZGV4KDApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoaXNSZXN0YXJ0KSB7XG4gICAgICAgICAgdGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICd5eSc7XG4gICAgICAgICAgdGhpcy5zZWxlY3Rpb25JbnB1dCA9IDI7XG4gICAgICAgICAgdGhpcy5zZWxlY3RTcGFuQnlUYWJJbmRleCgyLCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIGlmICghc3BhbjJWYWx1ZSB8fCBzcGFuMlZhbHVlLnRvU3RyaW5nKCkubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgdGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICgnMCcgKyBwYXJzZUludChlLmtleSkpLnNsaWNlKFxuICAgICAgICAgICAgLTJcbiAgICAgICAgICApO1xuICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUuc2V0RnVsbFllYXIoXG4gICAgICAgICAgICAgIHBhcnNlSW50KGAyMDAke3BhcnNlSW50KGUua2V5KX1gKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICB0aGlzLnNlbGVjdFNwYW5CeVRhYkluZGV4KDEpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IGZpbmFsWWVhciA9IHBhcnNlSW50KFxuICAgICAgICAgICAgdGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCArIHBhcnNlSW50KGUua2V5KVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCBmaW5hbFNob3dZZWFyID1cbiAgICAgICAgICAgIGZpbmFsWWVhciA+IDMxXG4gICAgICAgICAgICAgID8gcGFyc2VJbnQoYDE5JHtmaW5hbFllYXJ9YClcbiAgICAgICAgICAgICAgOiBwYXJzZUludChgMjAke2ZpbmFsWWVhcn1gKTtcbiAgICAgICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlID0gbmV3IERhdGUoXG4gICAgICAgICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlLnNldEZ1bGxZZWFyKGZpbmFsU2hvd1llYXIpXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIHRoaXMuc3BhbjIubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAoXG4gICAgICAgICAgICB0aGlzLnNwYW4yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MICsgcGFyc2VJbnQoZS5rZXkpXG4gICAgICAgICAgKS5zbGljZSgtMik7XG4gICAgICAgICAgdGhpcy5zZWxlY3RTcGFuQnlUYWJJbmRleCgxKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNlbGVjdFNwYW5CeVRhYkluZGV4KGluZHg6IG51bWJlciwgY2hhbmdlVGFiPzogYm9vbGVhbik6IHZvaWQge1xuICAgIHN3aXRjaCAoaW5keCkge1xuICAgICAgY2FzZSAwOlxuICAgICAgICB0aGlzLnNldFNwYW5TZWxlY3Rpb24odGhpcy5zcGFuMS5uYXRpdmVFbGVtZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIHRoaXMuc2V0U3BhblNlbGVjdGlvbih0aGlzLnNwYW4yLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjpcbiAgICAgICAgdGhpcy5zZXRTcGFuU2VsZWN0aW9uKHRoaXMuc3BhbjMubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhpcy5zZXRTcGFuU2VsZWN0aW9uKHRoaXMuaG9sZGVyMS5uYXRpdmVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlVGFiKSB0aGlzLm5ld0lucHV0Q2hhbmdlZCA9IHRydWU7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU5hdmlnYXRpb25LZXkoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcbiAgICAgIGNhc2UgMzc6IC8vIExlZnQgYXJyb3dcbiAgICAgICAgdGhpcy5tb3ZlU2VsZWN0aW9uTGVmdCgpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzk6IC8vIFJpZ2h0IGFycm93XG4gICAgICBjYXNlIDk6IC8vIFRhYlxuICAgICAgICB0aGlzLm1vdmVTZWxlY3Rpb25SaWdodE9yVGFiKGV2ZW50KTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM4OiAvLyBVcCBhcnJvd1xuICAgICAgICB0aGlzLnNldERhdGVUaW1lTW9kZWwoJ3VwJyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA0MDogLy8gRG93biBhcnJvd1xuICAgICAgICB0aGlzLnNldERhdGVUaW1lTW9kZWwoJ2Rvd24nKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDg6IC8vIEJhY2tzcGFjZVxuICAgICAgY2FzZSA0NjogLy8gRGVsZXRlXG4gICAgICAgIHRoaXMuaGFuZGxlS2V5Ym9hcmRJbnB1dHMoZXZlbnQsIHRydWUpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZURhdGVQaWNrZXJJbnB1dChpc1VwOiBib29sZWFuLCBpc0RhdGVQaWNrZXI6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBpZiAodGhpcy5zZWxlY3Rpb25JbnB1dCA9PT0gMCkgdGhpcy51cGRhdGVNb250aChpc1VwKTtcbiAgICBlbHNlIGlmICh0aGlzLnNlbGVjdGlvbklucHV0ID09PSAxKSB0aGlzLnVwZGF0ZURhdGUoaXNVcCwgaXNEYXRlUGlja2VyKTtcbiAgICBlbHNlIHRoaXMudXBkYXRlWWVhcihpc1VwLCBpc0RhdGVQaWNrZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXREYXRlVGltZU1vZGVsKGRpcmVjdGlvbjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uSW5wdXQgPT09IC0xKSB0aGlzLnNlbGVjdGlvbklucHV0ID0gMDtcblxuICAgIGNvbnN0IGlzVXAgPSBkaXJlY3Rpb24gPT09ICd1cCc7XG4gICAgY29uc3QgaXNEYXRlUGlja2VyID1cbiAgICAgIHRoaXMuaW5wdXRDb25maWcubmFtZSA9PT0gSW5wdXRDb25maWdOYW1lU3RyaW5nRW51bS5EQVRFX1BJQ0tFUjtcbiAgICBjb25zdCBpc0JhbmtDYXJkUGlja2VyID1cbiAgICAgIHRoaXMuaW5wdXRDb25maWcubmFtZSA9PT0gSW5wdXRDb25maWdOYW1lU3RyaW5nRW51bS5EQVRFX1BJQ0tFUl9CQU5LX0NBUkQ7XG5cbiAgICBpZiAoaXNEYXRlUGlja2VyIHx8IGlzQmFua0NhcmRQaWNrZXIpXG4gICAgICB0aGlzLmhhbmRsZURhdGVQaWNrZXJJbnB1dChpc1VwLCBpc0RhdGVQaWNrZXIpO1xuICAgIGVsc2UgdGhpcy5oYW5kbGVUaW1lUGlja2VySW5wdXQoaXNVcCk7XG4gIH1cblxuICBwcml2YXRlIG1vdmVTZWxlY3Rpb25SaWdodE9yVGFiKGU6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICBjb25zdCBpc0RhdGVwaWNrZXJCYW5rQ2FyZCA9XG4gICAgICB0aGlzLmlucHV0Q29uZmlnLm5hbWUgPT09IElucHV0Q29uZmlnTmFtZVN0cmluZ0VudW0uREFURV9QSUNLRVJfQkFOS19DQVJEO1xuICAgIGNvbnN0IG1heEluZGV4ID0gaXNEYXRlcGlja2VyQmFua0NhcmQgPyAxIDogMjtcblxuICAgIGlmICh0aGlzLnNlbGVjdGlvbklucHV0IDwgbWF4SW5kZXggJiYgIWUuc2hpZnRLZXkpIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uSW5wdXQgKz0gMTtcbiAgICAgIHRoaXMuc2VsZWN0U3BhbkJ5VGFiSW5kZXgodGhpcy5zZWxlY3Rpb25JbnB1dCwgdHJ1ZSk7XG4gICAgfSBlbHNlIGlmIChlLmtleUNvZGUgPT09IDkgJiYgIWUuc2hpZnRLZXkpIHtcbiAgICAgIHRoaXMuZm9jdXNOZXh0SW5wdXQoKTtcbiAgICB9IGVsc2UgaWYgKGUuc2hpZnRLZXkgJiYgZS5rZXlDb2RlID09PSA5KSB7XG4gICAgICB0aGlzLmZvY3VzUHJldmlvdXNJbnB1dCgpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNQcmV2aW91c0lucHV0KCk6IHZvaWQge1xuICAgIGNvbnN0IGFsbElucHV0cyA9IEFycmF5LmZyb20oXG4gICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdpbnB1dC5pbnB1dC1jb250cm9sJylcbiAgICApIGFzIEhUTUxJbnB1dEVsZW1lbnRbXTtcblxuICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGFsbElucHV0cy5maW5kSW5kZXgoXG4gICAgICAoaW5wdXQpID0+IGlucHV0ID09PSB0aGlzLmNhSW5wdXRDb21wb25lbnQuaW5wdXQubmF0aXZlRWxlbWVudFxuICAgICk7XG5cbiAgICBpZiAoY3VycmVudEluZGV4ID09PSAtMSkgdGhpcy5zZWxlY3Rpb25JbnB1dCA9IDM7XG4gICAgZWxzZSBpZiAoY3VycmVudEluZGV4ID09PSAwKSB0aGlzLnNlbGVjdGlvbklucHV0ID0gMDtcbiAgICBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0aW9uSW5wdXQgLT0gMTtcbiAgICAgIHRoaXMuc2VsZWN0U3BhbkJ5VGFiSW5kZXgodGhpcy5zZWxlY3Rpb25JbnB1dCk7XG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRJbmRleCA+IDApIGFsbElucHV0c1tjdXJyZW50SW5kZXggLSAxXS5mb2N1cygpO1xuXG4gICAgdGhpcy5zZWxlY3Rpb25JbnB1dCA9IC0xO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c05leHRJbnB1dCgpOiB2b2lkIHtcbiAgICBjb25zdCBhbGxJbnB1dHMgPSBBcnJheS5mcm9tKFxuICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQuaW5wdXQtY29udHJvbCcpXG4gICAgKSBhcyBIVE1MSW5wdXRFbGVtZW50W107XG4gICAgY29uc3QgY3VycmVudEluZGV4ID0gYWxsSW5wdXRzLmZpbmRJbmRleChcbiAgICAgIChpbnB1dCkgPT4gaW5wdXQgPT09IHRoaXMuY2FJbnB1dENvbXBvbmVudC5pbnB1dC5uYXRpdmVFbGVtZW50XG4gICAgKTtcblxuICAgIGlmIChhbGxJbnB1dHNbY3VycmVudEluZGV4ICsgMV0pIGFsbElucHV0c1tjdXJyZW50SW5kZXggKyAxXS5mb2N1cygpO1xuICAgIGVsc2Uge1xuICAgICAgdGhpcy5zZXRJc0ZvY3VzSW5wdXQoZmFsc2UpO1xuICAgICAgdGhpcy5ibHVyT25EYXRlVGltZSgpO1xuICAgIH1cblxuICAgIHRoaXMuc2VsZWN0aW9uSW5wdXQgPSAtMTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRJc0ZvY3VzSW5wdXQodmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmNhSW5wdXRDb21wb25lbnQuaXNGb2N1c0lucHV0ID0gdmFsdWU7XG4gIH1cblxuICBwcml2YXRlIG1vdmVTZWxlY3Rpb25MZWZ0KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGlvbklucHV0ID4gMCkge1xuICAgICAgdGhpcy5zZWxlY3Rpb25JbnB1dCAtPSAxO1xuICAgICAgdGhpcy5zZWxlY3RTcGFuQnlUYWJJbmRleCh0aGlzLnNlbGVjdGlvbklucHV0LCB0cnVlKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU1vbnRoKGlzVXA6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBtb250aERlbHRhID0gaXNVcCA/IDEgOiAtMTtcbiAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlID0gbmV3IERhdGUoXG4gICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlLnNldE1vbnRoKFxuICAgICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlLmdldE1vbnRoKCkgKyBtb250aERlbHRhXG4gICAgICApXG4gICAgKTtcblxuICAgIHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLnBhZFZhbHVlKFxuICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZS5nZXRNb250aCgpICsgMVxuICAgICk7XG4gICAgdGhpcy5zZXRTcGFuU2VsZWN0aW9uKHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZURhdGUoaXNVcDogYm9vbGVhbiwgaXNEYXRlUGlja2VyOiBib29sZWFuKTogdm9pZCB7XG4gICAgY29uc3QgZGF0ZURlbHRhID0gaXNVcCA/IDEgOiAtMTtcbiAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlID0gbmV3IERhdGUoXG4gICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlLnNldERhdGUoXG4gICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUuZ2V0RGF0ZSgpICsgZGF0ZURlbHRhXG4gICAgICApXG4gICAgKTtcblxuICAgIGNvbnN0IHNwYW5FbGVtZW50ID0gaXNEYXRlUGlja2VyXG4gICAgICA/IHRoaXMuc3BhbjIubmF0aXZlRWxlbWVudFxuICAgICAgOiB0aGlzLnNwYW4xLm5hdGl2ZUVsZW1lbnQ7XG4gICAgc3BhbkVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5wYWRWYWx1ZSh0aGlzLmRhdGVUaW1lSW5wdXREYXRlLmdldERhdGUoKSk7XG4gICAgdGhpcy5zZXRTcGFuU2VsZWN0aW9uKHNwYW5FbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlWWVhcihpc1VwOiBib29sZWFuLCBpc0RhdGVQaWNrZXI6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCB5ZWFyRGVsdGEgPSBpc1VwID8gMSA6IC0xO1xuICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUgPSBuZXcgRGF0ZShcbiAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUuc2V0RnVsbFllYXIoXG4gICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUuZ2V0RnVsbFllYXIoKSArIHllYXJEZWx0YVxuICAgICAgKVxuICAgICk7XG5cbiAgICBjb25zdCBzcGFuRWxlbWVudCA9IGlzRGF0ZVBpY2tlclxuICAgICAgPyB0aGlzLnNwYW4zLm5hdGl2ZUVsZW1lbnRcbiAgICAgIDogdGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50O1xuICAgIHNwYW5FbGVtZW50LmlubmVySFRNTCA9IHRoaXMuZGF0ZVRpbWVJbnB1dERhdGVcbiAgICAgIC5nZXRGdWxsWWVhcigpXG4gICAgICAudG9TdHJpbmcoKVxuICAgICAgLnNsaWNlKC0yKTtcbiAgICB0aGlzLnNldFNwYW5TZWxlY3Rpb24oc3BhbkVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBwYWRWYWx1ZSh2YWx1ZTogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gKCcwJyArIHZhbHVlKS5zbGljZSgtMik7XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVRpbWVQaWNrZXJJbnB1dChpc1VwOiBib29sZWFuKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uSW5wdXQgPT09IDApIHRoaXMudXBkYXRlSG91cnMoaXNVcCk7XG4gICAgZWxzZSBpZiAodGhpcy5zZWxlY3Rpb25JbnB1dCA9PT0gMSkgdGhpcy51cGRhdGVNaW51dGVzKGlzVXApO1xuICAgIGVsc2UgdGhpcy50b2dnbGVBTVBNKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUhvdXJzKGlzVXA6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICBjb25zdCBob3Vyc0RlbHRhID0gaXNVcCA/IDEgOiAtMTtcbiAgICBsZXQgc2VsZWN0ZWRIb3VycyA9IHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUuZ2V0SG91cnMoKSArIGhvdXJzRGVsdGE7XG5cbiAgICBpZiAoc2VsZWN0ZWRIb3VycyA9PT0gMCkgc2VsZWN0ZWRIb3VycyA9IDI0O1xuICAgIGlmIChzZWxlY3RlZEhvdXJzID09PSAtMSkgc2VsZWN0ZWRIb3VycyA9IDIzO1xuXG4gICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZS5zZXRIb3VycyhzZWxlY3RlZEhvdXJzKVxuICAgICk7XG5cbiAgICB0aGlzLnNwYW4xLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5wYWRWYWx1ZShcbiAgICAgIHNlbGVjdGVkSG91cnMgPiAxMiA/IHNlbGVjdGVkSG91cnMgLSAxMiA6IHNlbGVjdGVkSG91cnNcbiAgICApO1xuICAgIHRoaXMuc2V0U3BhblNlbGVjdGlvbih0aGlzLnNwYW4xLm5hdGl2ZUVsZW1lbnQpO1xuXG4gICAgdGhpcy5zcGFuMy5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9XG4gICAgICBzZWxlY3RlZEhvdXJzID4gMTEgJiYgc2VsZWN0ZWRIb3VycyA8IDI0ID8gJ1BNJyA6ICdBTSc7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZU1pbnV0ZXMoaXNVcDogYm9vbGVhbik6IHZvaWQge1xuICAgIGNvbnN0IG1pbnV0ZXNEZWx0YSA9IGlzVXAgPyAxIDogLTE7XG4gICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZS5zZXRNaW51dGVzKFxuICAgICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlLmdldE1pbnV0ZXMoKSArIG1pbnV0ZXNEZWx0YVxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLnNwYW4yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5wYWRWYWx1ZShcbiAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUuZ2V0TWludXRlcygpXG4gICAgKTtcbiAgICB0aGlzLnNldFNwYW5TZWxlY3Rpb24odGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgdG9nZ2xlQU1QTSgpOiB2b2lkIHtcbiAgICB0aGlzLnNwYW4zLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID1cbiAgICAgIHRoaXMuc3BhbjMubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPT09ICdBTScgPyAnUE0nIDogJ0FNJztcblxuICAgIGNvbnN0IGhvdXJzVG9BZGQgPSB0aGlzLnNwYW4zLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID09PSAnQU0nID8gLTEyIDogMTI7XG4gICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZS5zZXRIb3VycyhcbiAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZS5nZXRIb3VycygpICsgaG91cnNUb0FkZFxuICAgICAgKVxuICAgICk7XG5cbiAgICB0aGlzLnNldFNwYW5TZWxlY3Rpb24odGhpcy5zcGFuMy5uYXRpdmVFbGVtZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBjbGVhcklucHV0KGV2ZW50OiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5jbGVhcklucHV0RXZlbnQuZW1pdChldmVudCk7XG5cbiAgICB0aGlzLnNldElzRm9jdXNJbnB1dChmYWxzZSk7XG4gICAgdGhpcy5yZXNldERhdGVUaW1lSW5wdXRzKCk7XG4gIH1cblxuICBwdWJsaWMgb25CbHVySW5wdXQoZXZlbnQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmJsdXJJbnB1dEV2ZW50LmVtaXQoZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0RGF0ZVRpbWVJbnB1dHMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc3BhbjEpXG4gICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5uYW1lID09PSBJbnB1dENvbmZpZ05hbWVTdHJpbmdFbnVtLkRBVEVfUElDS0VSKSB7XG4gICAgICAgIHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnbW0nO1xuICAgICAgICB0aGlzLnNwYW4yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJ2RkJztcbiAgICAgICAgdGhpcy5zcGFuMy5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICd5eSc7XG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICB0aGlzLmlucHV0Q29uZmlnLm5hbWUgPT09XG4gICAgICAgIElucHV0Q29uZmlnTmFtZVN0cmluZ0VudW0uREFURV9QSUNLRVJfQkFOS19DQVJEXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5zcGFuMS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICdtbSc7XG4gICAgICAgIHRoaXMuc3BhbjIubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAneXknO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5uYW1lID09PSBJbnB1dENvbmZpZ05hbWVTdHJpbmdFbnVtLlRJTUVfUElDS0VSXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5zcGFuMS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICdISCc7XG4gICAgICAgIHRoaXMuc3BhbjIubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnTU0nO1xuICAgICAgICB0aGlzLnNwYW4zLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJ0FNJztcbiAgICAgIH1cblxuICAgIHRoaXMuc2V0VGltZVBpY2tlclRpbWUoKTtcbiAgICB0aGlzLm5ld0lucHV0Q2hhbmdlZCA9IHRydWU7XG4gICAgdGhpcy5zZXRJc0ZvY3VzSW5wdXQoZmFsc2UpO1xuICAgIHRoaXMuc2hvd0RhdGVJbnB1dCA9IGZhbHNlO1xuICB9XG5cbiAgcHVibGljIHNldFRpbWVQaWNrZXJUaW1lKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLm5hbWUgPT09IElucHV0Q29uZmlnTmFtZVN0cmluZ0VudW0uVElNRV9QSUNLRVIpXG4gICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlID0gbmV3IERhdGUoXG4gICAgICAgIG1vbWVudCgpLmZvcm1hdCgnTU0vREQvWVlZWScpICtcbiAgICAgICAgICAodGhpcy5pbnB1dENvbmZpZz8uaXNGcm9tRGF0ZSA/ICcgMTI6MTUnIDogJyAxMjowMCcpXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgIHRoaXMuZGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMuZGVzdHJveSQuY29tcGxldGUoKTtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cImRhdGV0aW1lLXBpY2tlci1tYWluLWhvbGRlciBpbnB1dC1jdXN0b20tZ3JvdXAgZGF0ZXRpbWVjbGFzc1wiXG4gIFtuZ0NsYXNzXT1cIlxuICAgIGdldFN1cGVyQ29udHJvbFxuICAgICAgfCBpbnB1dENvbnRhaW5lckNsYXNzXG4gICAgICAgIDogY2FJbnB1dENvbXBvbmVudC5pc0ZvY3VzSW5wdXRcbiAgICAgICAgOiBjYUlucHV0Q29tcG9uZW50LmlzVG91Y2hlZElucHV0XG4gICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgOiBnZXRTdXBlckNvbnRyb2w/LnZhbHVlXG4gIFwiXG4+XG4gIDxkaXZcbiAgICAjaG9sZGVyMVxuICAgIGNsYXNzPVwiZGF0ZV90aW1lX2hvbGRlciBpbnB1dC1jb250cm9sXCJcbiAgICBbY2xhc3MuYWN0aXZlXT1cInNob3dEYXRlSW5wdXRcIlxuICAgIHRhYmluZGV4PVwiLTFcIlxuICAgIChtb3VzZWRvd24pPVwic2VsZWN0TGFzdE9uZUZvclNlbGVjdGlvbigpXCJcbiAgICAobW91c2V1cCk9XCJzZWxlY3RMYXN0T25lQWZ0ZXJNb3VzZVVwKClcIlxuICAgIChwYXN0ZSk9XCJvbkRhdGVQYXN0ZSgkZXZlbnQpXCJcbiAgICAoa2V5ZG93bik9XCJjaGFuZ2VTZWxlY3Rpb24oJGV2ZW50LCB0cnVlKVwiXG4gICAgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duT3B0aW9ucygpXCJcbiAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAncGFkZGluZy1sZWZ0JzogaW5wdXRDb25maWcuaXNJY29uSGlkZGVuID8gJzJweCcgOiAnMjdweCdcbiAgICB9XCJcbiAgICBbbmdDbGFzc109XCJcbiAgICAgIGNhSW5wdXRDb21wb25lbnQuaXNGb2N1c0lucHV0XG4gICAgICAgIHwgaW5wdXREYXRldGltZVBpY2tlckNsYXNzXG4gICAgICAgICAgOiBmYWxzZVxuICAgICAgICAgIDogZ2V0U3VwZXJDb250cm9sXG4gICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgIDogY2FJbnB1dENvbXBvbmVudC5pc1RvdWNoZWRJbnB1dFxuICAgICAgICAgIDogZ2V0U3VwZXJDb250cm9sPy52YWx1ZVxuICAgIFwiXG4gID5cbiAgICA8c3BhblxuICAgICAgI3NwYW4xXG4gICAgICBjbGFzcz1cIm1haW5cIlxuICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAncmVzZXQtc2VsZWN0aW9uLWNvbG9yJzogIWNhSW5wdXRDb21wb25lbnQuaXNGb2N1c0lucHV0XG4gICAgICB9XCJcbiAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAobW91c2V1cCk9XCJzZXRTZWxlY3Rpb24oJGV2ZW50KVwiXG4gICAgICAoa2V5ZG93bik9XCJjaGFuZ2VTZWxlY3Rpb24oJGV2ZW50KVwiXG4gICAgICBbaW5uZXJIVE1MXT1cImlucHV0Q29uZmlnLm5hbWUgPT09ICdkYXRlcGlja2VyJyA/ICdtbScgOiAnSEgnXCJcbiAgICA+PC9zcGFuPlxuICAgIDxzcGFuPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cImJvcmRlci1waWNrZXJcIlxuICAgICAgICBbaW5uZXJIVE1MXT1cImlucHV0Q29uZmlnLm5hbWUgPT09ICdkYXRlcGlja2VyJyA/ICcvJyA6ICc6J1wiXG4gICAgICA+PC9kaXY+XG4gICAgPC9zcGFuPlxuICAgIDxzcGFuXG4gICAgICAjc3BhbjJcbiAgICAgIGNsYXNzPVwibWFpblwiXG4gICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICdyZXNldC1zZWxlY3Rpb24tY29sb3InOiAhY2FJbnB1dENvbXBvbmVudC5pc0ZvY3VzSW5wdXRcbiAgICAgIH1cIlxuICAgICAgdGFiaW5kZXg9XCIxXCJcbiAgICAgIChtb3VzZXVwKT1cInNldFNlbGVjdGlvbigkZXZlbnQpXCJcbiAgICAgIChrZXlkb3duKT1cImNoYW5nZVNlbGVjdGlvbigkZXZlbnQpXCJcbiAgICAgIFtpbm5lckhUTUxdPVwiaW5wdXRDb25maWcubmFtZSA9PT0gJ2RhdGVwaWNrZXInID8gJ2RkJyA6ICdNTSdcIlxuICAgID48L3NwYW4+XG4gICAgPHNwYW4+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwiYm9yZGVyLXBpY2tlclwiXG4gICAgICAgIFtpbm5lckhUTUxdPVwiaW5wdXRDb25maWcubmFtZSA9PT0gJ2RhdGVwaWNrZXInID8gJy8nIDogJyAnXCJcbiAgICAgID48L2Rpdj5cbiAgICA8L3NwYW4+XG4gICAgPHNwYW5cbiAgICAgICNzcGFuM1xuICAgICAgY2xhc3M9XCJtYWluXCJcbiAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgJ3Jlc2V0LXNlbGVjdGlvbi1jb2xvcic6ICFjYUlucHV0Q29tcG9uZW50LmlzRm9jdXNJbnB1dFxuICAgICAgfVwiXG4gICAgICB0YWJpbmRleD1cIjJcIlxuICAgICAgKG1vdXNldXApPVwic2V0U2VsZWN0aW9uKCRldmVudClcIlxuICAgICAgKGtleWRvd24pPVwiY2hhbmdlU2VsZWN0aW9uKCRldmVudClcIlxuICAgICAgW2lubmVySFRNTF09XCJpbnB1dENvbmZpZy5uYW1lID09PSAnZGF0ZXBpY2tlcicgPyAneXknIDogJ0FNJ1wiXG4gICAgPjwvc3Bhbj5cbiAgPC9kaXY+XG4gIDxhcHAtY2EtaW5wdXRcbiAgICBbaW5wdXRDb25maWddPVwiaW5wdXRDb25maWdcIlxuICAgIFtkYXRlVGltZVBvcG92ZXJdPVwiZGF0ZVRpbWVQb3BvdmVyXCJcbiAgICAoZm9jdXNJbnB1dEV2ZW50KT1cImhhbmRsZUZvY3VzSW5wdXQoJGV2ZW50KVwiXG4gICAgKGhhbmRsZVRvZ2dsZURyb3Bkb3duT3B0aW9ucyk9XCJ0b2dnbGVEcm9wZG93bk9wdGlvbnMoKVwiXG4gICAgKGNsb3NlUG9wb3Zlcik9XCJibHVyT25EYXRlVGltZSgpXCJcbiAgICAoYmx1cklucHV0KT1cIm9uQmx1cklucHV0KCRldmVudClcIlxuICAgIChjbGVhcik9XCJjbGVhcklucHV0KCRldmVudClcIlxuICAgIFtmb3JtQ29udHJvbF09XCJnZXRTdXBlckNvbnRyb2whIHwgZm9ybUNvbnRyb2xcIlxuICAgID48L2FwcC1jYS1pbnB1dD5cbjwvZGl2PlxuXG48IS0tIFBvcG92ZXIgZm9yIERhdGVUaW1lIFBpY2tlcnMgLS0+XG48bmctdGVtcGxhdGUgI2RhdGVUaW1lUG9wb3ZlciBsZXQtZGF0YT1cImRhdGFcIj5cbiAgPGRpdiBjbGFzcz1cImRhdGV0aW1lLWRyb3Bkb3duLWhvbGRlclwiPlxuICAgIDxjYS1jdXN0b20tZGF0ZXRpbWUtcGlja2Vyc1xuICAgICAgW2NhbGVuZGFyVHlwZV09XCJcbiAgICAgICAgaW5wdXRDb25maWcubmFtZSA9PT0gJ2RhdGVwaWNrZXInIHx8XG4gICAgICAgIGlucHV0Q29uZmlnLm5hbWUgPT09ICdkYXRlcGlja2VyQmFua0NhcmQnXG4gICAgICAgICAgPyAnZGF0ZSdcbiAgICAgICAgICA6ICd0aW1lJ1xuICAgICAgXCJcbiAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICBbcGxhY2Vob2xkZXJdPVwiJ01NL0REL1lZJ1wiXG4gICAgICBbZGF0ZVRpbWVdPVwiZGF0ZVRpbWVJbnB1dERhdGVcIlxuICAgICAgKGNsb3NlUG9wb3Zlcik9XCJjbG9zZVBvcG92ZXIoKVwiXG4gICAgPjwvY2EtY3VzdG9tLWRhdGV0aW1lLXBpY2tlcnM+XG4gIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|
|
850
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2EtaW5wdXQtZGF0ZXRpbWUtcGlja2VyLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NhLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhLWlucHV0LWRhdGV0aW1lLXBpY2tlci9jYS1pbnB1dC1kYXRldGltZS1waWNrZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY2EtY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvY2EtaW5wdXQtZGF0ZXRpbWUtcGlja2VyL2NhLWlucHV0LWRhdGV0aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBRUgsU0FBUyxFQUVULFlBQVksRUFDWixLQUFLLEVBRUwsTUFBTSxFQUNOLElBQUksRUFDSixTQUFTLEdBQ1osTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUVILFdBQVcsRUFDWCxXQUFXLEVBRVgsbUJBQW1CLEdBQ3RCLE1BQU0sZ0JBQWdCLENBQUM7QUFDeEIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLFVBQVU7QUFDVixPQUFPLE1BQU0sTUFBTSxRQUFRLENBQUM7QUFFNUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFDO0FBSWhELE9BQU8sRUFBb0IsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFFckUsT0FBTztBQUNQLE9BQU8sRUFDSCx1QkFBdUIsRUFDdkIsNEJBQTRCLEdBQy9CLE1BQU0sbUJBQW1CLENBQUM7QUFFM0IsYUFBYTtBQUNiLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxnQ0FBZ0MsRUFBRSxNQUFNLG9FQUFvRSxDQUFDO0FBQ3RILE9BQU8sRUFBRSwrQkFBK0Is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O2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBRVcsZUFBZTtzQkFBL0IsTUFBTTt1QkFBQyxPQUFPO2dCQUVNLGNBQWM7c0JBQWxDLE1BQU07dUJBQUMsV0FBVztnQkFJbkIsK0JBQStCO3NCQUQ5QixTQUFTO3VCQUFDLCtCQUErQjtnQkFHWixlQUFlO3NCQUE1QyxTQUFTO3VCQUFDLGlCQUFpQjtnQkFFNUIsZ0JBQWdCO3NCQURmLFNBQVM7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQXFCbkMsZ0NBQWdDO3NCQUF6QyxNQUFNO2dCQUNHLGdDQUFnQztzQkFBekMsTUFBTTtnQkFDRyxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxzQkFBc0I7c0JBQS9CLE1BQU07Z0JBSUcsbUJBQW1CO3NCQUE1QixNQUFNO2dCQU0rQixLQUFLO3NCQUExQyxTQUFTO3VCQUFDLE9BQU8sRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7Z0JBQ0UsS0FBSztzQkFBMUMsU0FBUzt1QkFBQyxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO2dCQUNFLEtBQUs7c0JBQTFDLFNBQVM7dUJBQUMsT0FBTyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQkFDSSxPQUFPO3NCQUE5QyxTQUFTO3VCQUFDLFNBQVMsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyVmlld0luaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIEVsZW1lbnRSZWYsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE9uRGVzdHJveSxcbiAgICBPdXRwdXQsXG4gICAgU2VsZixcbiAgICBWaWV3Q2hpbGQsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgICBGb3JtQ29udHJvbCxcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBOZ0NvbnRyb2wsXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbn0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcblxuLy8gSW1wb3J0c1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IHsgTmdiUG9wb3ZlciB9IGZyb20gJ0BuZy1ib290c3RyYXAvbmctYm9vdHN0cmFwJztcbmltcG9ydCB7IFN1YmplY3QsIHRha2UsIHRha2VVbnRpbCB9IGZyb20gJ3J4anMnO1xuXG4vLyBNb2RlbHNcbmltcG9ydCB7IElDYUlucHV0IH0gZnJvbSAnLi4vY2EtaW5wdXQvY29uZmlnJztcbmltcG9ydCB7IElucHV0Q2hhbmdlVmFsdWUsIElucHV0U3ZnUm91dGVzIH0gZnJvbSAnLi4vY2EtaW5wdXQvdXRpbHMnO1xuXG4vLyBQaXBlXG5pbXBvcnQge1xuICAgIElucHV0Q29udGFpbmVyQ2xhc3NQaXBlLFxuICAgIElucHV0RGF0ZXRpbWVQaWNrZXJDbGFzc1BpcGUsXG59IGZyb20gJy4uL2NhLWlucHV0L3BpcGVzJztcblxuLy8gQ29tcG9uZW50c1xuaW1wb3J0IHsgQ2FJbnB1dENvbXBvbmVudCB9IGZyb20gJy4uL2NhLWlucHV0L2NhLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUN1c3RvbURhdGV0aW1lUGlja2Vyc0NvbXBvbmVudCB9IGZyb20gJy4uL2NhLWN1c3RvbS1kYXRldGltZS1waWNrZXJzL2NhLWN1c3RvbS1kYXRldGltZS1waWNrZXJzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDYUlucHV0UGxhY2Vob2xkZXJJY29uQ29tcG9uZW50IH0gZnJvbSAnLi4vY2EtaW5wdXQvY29tcG9uZW50cy9jYS1pbnB1dC1wbGFjZWhvbGRlci1pY29uL2NhLWlucHV0LXBsYWNlaG9sZGVyLWljb24uY29tcG9uZW50JztcblxuLy8gRW51bXNcbmltcG9ydCB7IElucHV0Q29uZmlnTmFtZVN0cmluZ0VudW0gfSBmcm9tICcuLi9jYS1pbnB1dC9lbnVtcyc7XG5cbi8vIFNlcnZpY2VzXG5pbXBvcnQgeyBDYWxlbmRhckRhdGVUaW1lUGlja2VyU2VydmljZSB9IGZyb20gJy4uL2NhLWN1c3RvbS1kYXRldGltZS1waWNrZXJzL3NlcnZpY2VzL2NhbGVuZGFyLWRhdGV0aW1lLXBpY2tlci5zZXJ2aWNlJztcbmltcG9ydCB7IEFuZ3VsYXJTdmdJY29uTW9kdWxlIH0gZnJvbSAnYW5ndWxhci1zdmctaWNvbic7XG5pbXBvcnQgeyBGb3JtQ29udHJvbFBpcGUgfSBmcm9tICcuLi9jYS1pbnB1dC9waXBlcy9mb3JtLWNvbnRyb2wucGlwZSc7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2NhLWlucHV0LWRhdGV0aW1lLXBpY2tlcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL2NhLWlucHV0LWRhdGV0aW1lLXBpY2tlci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbXG4gICAgICAgICcuL2NhLWlucHV0LWRhdGV0aW1lLXBpY2tlci5jb21wb25lbnQuc2NzcycsXG4gICAgICAgICcuLi9jYS1pbnB1dC9zY3NzLy9jYS1pbnB1dC5kYXRlcGlja2VyLnNjc3MnLFxuICAgIF0sXG4gICAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgICBpbXBvcnRzOiBbXG4gICAgICAgIC8vIG1vZHVsZXNcbiAgICAgICAgQ29tbW9uTW9kdWxlLFxuICAgICAgICBGb3Jtc01vZHVsZSxcbiAgICAgICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICAgICAgQW5ndWxhclN2Z0ljb25Nb2R1bGUsXG4gICAgICAgIC8vIGNvbXBvbmVudHNcbiAgICAgICAgQ2FJbnB1dENvbXBvbmVudCxcbiAgICAgICAgQ2FDdXN0b21EYXRldGltZVBpY2tlcnNDb21wb25lbnQsXG4gICAgICAgIC8vIHBpcGVzXG4gICAgICAgIElucHV0RGF0ZXRpbWVQaWNrZXJDbGFzc1BpcGUsXG4gICAgICAgIElucHV0Q29udGFpbmVyQ2xhc3NQaXBlLFxuICAgICAgICBGb3JtQ29udHJvbFBpcGUsXG4gICAgXSxcbiAgICBwcm92aWRlcnM6IFtDYWxlbmRhckRhdGVUaW1lUGlja2VyU2VydmljZV0sXG59KVxuZXhwb3J0IGNsYXNzIENhSW5wdXREYXRldGltZVBpY2tlckNvbXBvbmVudFxuICAgIGltcGxlbWVudHMgQWZ0ZXJWaWV3SW5pdCwgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE9uRGVzdHJveVxue1xuICAgIEBJbnB1dCgpIGlucHV0Q29uZmlnITogSUNhSW5wdXQ7XG4gICAgQElucHV0KCkgZm9ybUZvcm1hdD86IHN0cmluZztcblxuICAgIEBPdXRwdXQoJ2NsZWFyJykgY2xlYXJJbnB1dEV2ZW50OiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPVxuICAgICAgICBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgnYmx1cklucHV0JykgYmx1cklucHV0RXZlbnQ6IEV2ZW50RW1pdHRlcjxib29sZWFuPiA9XG4gICAgICAgIG5ldyBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4oKTtcblxuICAgIEBWaWV3Q2hpbGQoQ2FJbnB1dFBsYWNlaG9sZGVySWNvbkNvbXBvbmVudClcbiAgICBjYUlucHV0UGxhY2Vob2xkZXJJY29uQ29tcG9uZW50ITogQ2FJbnB1dFBsYWNlaG9sZGVySWNvbkNvbXBvbmVudDtcblxuICAgIEBWaWV3Q2hpbGQoJ2RhdGVUaW1lUG9wb3ZlcicpIGRhdGVUaW1lUG9wb3ZlciE6IE5nYlBvcG92ZXI7XG4gICAgQFZpZXdDaGlsZChDYUlucHV0Q29tcG9uZW50LCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIGNhSW5wdXRDb21wb25lbnQhOiBDYUlucHV0Q29tcG9uZW50O1xuXG4gICAgcHVibGljIGlucHV0Rm9ybUNvbnRyb2w6IEZvcm1Db250cm9sID0gbmV3IEZvcm1Db250cm9sKG51bGwpO1xuXG4gICAgcHVibGljIHNob3dEYXRlSW5wdXQ6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBwdWJsaWMgZGF0ZVRpbWVJbnB1dERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIHB1YmxpYyBkYXRlVGltZUludERhdGU6IERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIHB1YmxpYyBzZWxlY3Rpb25JbnB1dDogbnVtYmVyID0gLTE7XG5cbiAgICBwcml2YXRlIGRhdGVUaW1lTWFpblRpbWVyITogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudW1iZXI7XG4gICAgcHJpdmF0ZSBmb2N1c0JsdXIhOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bWJlcjtcbiAgICBwcml2YXRlIHRpbWVvdXRDbGVhbmVyITogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudW1iZXI7XG5cbiAgICBwdWJsaWMgaW5wdXRTdmdSb3V0ZXMgPSBJbnB1dFN2Z1JvdXRlcztcblxuICAgIHB1YmxpYyBpc1RvdWNoZWRJbnB1dDogYm9vbGVhbiA9IGZhbHNlO1xuICAgIHB1YmxpYyBwcmV2ZW50Qmx1cjogYm9vbGVhbiA9IGZhbHNlO1xuICAgIC8vIERhdGVcbiAgICBwdWJsaWMgbmV3SW5wdXRDaGFuZ2VkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBAT3V0cHV0KCkgc2VsZWN0TGFzdE9uZUZvclNlbGVjdGlvbkVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIHNlbGVjdExhc3RPbmVBZnRlck1vdXNlVXBFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuICAgIEBPdXRwdXQoKSBvbkRhdGVQYXN0ZUVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPENsaXBib2FyZEV2ZW50PigpO1xuICAgIEBPdXRwdXQoKSBvbkZvY3VzRW1pdHRlciA9IG5ldyBFdmVudEVtaXR0ZXI8Rm9jdXNFdmVudD4oKTtcbiAgICBAT3V0cHV0KCkgY2hhbmdlU2VsZWN0aW9uRW1taXRlciA9IG5ldyBFdmVudEVtaXR0ZXI8e1xuICAgICAgICBlOiBLZXlib2FyZEV2ZW50O1xuICAgICAgICBub1ByZXZlbnREZWZhdWx0OiBib29sZWFuO1xuICAgIH0+KCk7XG4gICAgQE91dHB1dCgpIHNldFNlbGVjdGlvbkVtbWl0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyPHtcbiAgICAgICAgcHJldmVudERlZmF1bHQ6ICgpID0+IHZvaWQ7XG4gICAgICAgIHN0b3BQcm9wYWdhdGlvbjogKCkgPT4gdm9pZDtcbiAgICAgICAgdGFyZ2V0OiBhbnk7XG4gICAgfT4oKTtcblxuICAgIEBWaWV3Q2hpbGQoJ3NwYW4xJywgeyBzdGF0aWM6IHRydWUgfSkgc3BhbjEhOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ3NwYW4yJywgeyBzdGF0aWM6IHRydWUgfSkgc3BhbjIhOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ3NwYW4zJywgeyBzdGF0aWM6IHRydWUgfSkgc3BhbjMhOiBFbGVtZW50UmVmO1xuICAgIEBWaWV3Q2hpbGQoJ2hvbGRlcjEnLCB7IHN0YXRpYzogdHJ1ZSB9KSBob2xkZXIxITogRWxlbWVudFJlZjtcblxuICAgIHByaXZhdGUgZGVzdHJveSQ6IFN1YmplY3Q8dm9pZD4gPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIEBTZWxmKCkgcHVibGljIHN1cGVyQ29udHJvbDogTmdDb250cm9sLFxuICAgICAgICBwcml2YXRlIGNhbGVuZGFyU2VydmljZTogQ2FsZW5kYXJEYXRlVGltZVBpY2tlclNlcnZpY2VcbiAgICApIHtcbiAgICAgICAgdGhpcy5zdXBlckNvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gICAgfVxuXG4gICAgdmFsdWVBZnRlcldyaXRlVmFsdWUhOiBzdHJpbmc7XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc3VwZXJDb250cm9sPy5jb250cm9sKSB7XG4gICAgICAgICAgICB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sLnZhbHVlQ2hhbmdlc1xuICAgICAgICAgICAgICAgIC5waXBlKHRha2UoMSkpIC8vIPCfkYggb25seSBsaXN0ZW4gb25jZVxuICAgICAgICAgICAgICAgIC5zdWJzY3JpYmUoKF8pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMudmFsdWVBZnRlcldyaXRlVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25DaGFuZ2UodGhpcy52YWx1ZUFmdGVyV3JpdGVWYWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy52YWx1ZUFmdGVyV3JpdGVWYWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5zZXRUaW1lRGF0ZUlucHV0KHRoaXMudmFsdWVBZnRlcldyaXRlVmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXRUaW1lUGlja2VyVGltZSgpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jYWxlbmRhclNlcnZpY2UuZGF0ZUNoYW5nZWRcbiAgICAgICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSlcbiAgICAgICAgICAgIC5zdWJzY3JpYmUoKGRhdGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaW5wdXRDb25maWcuaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFRpbWVEYXRlSW5wdXQoZGF0ZSk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY2FJbnB1dENvbXBvbmVudC5jYUlucHV0UGxhY2Vob2xkZXJJY29uQ29tcG9uZW50LnQyPy5jbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgIH1cblxuICAgIGdldCBnZXRTdXBlckNvbnRyb2woKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZWxlY3RMYXN0T25lRm9yU2VsZWN0aW9uKCk6IHZvaWQge1xuICAgICAgICBsZXQgcmFuZ2UsIHNlbGVjdGlvbjtcblxuICAgICAgICB0aGlzLnNob3dEYXRlSW5wdXQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNlbGVjdGlvbklucHV0ID0gLTE7XG4gICAgICAgIHRoaXMuY2FJbnB1dENvbXBvbmVudC5pc0ZvY3VzSW5wdXQgPSB0cnVlO1xuXG4gICAgICAgIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uICYmIGRvY3VtZW50LmNyZWF0ZVJhbmdlKSB7XG4gICAgICAgICAgICBzZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gICAgICAgICAgICByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLm5hbWUgIT09XG4gICAgICAgICAgICAgICAgSW5wdXRDb25maWdOYW1lU3RyaW5nRW51bS5EQVRFX1BJQ0tFUl9CQU5LX0NBUkRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHJhbmdlLnNldFN0YXJ0KHRoaXMuc3BhbjMubmF0aXZlRWxlbWVudCwgMSk7XG4gICAgICAgICAgICAgICAgcmFuZ2Uuc2V0RW5kKHRoaXMuc3BhbjMubmF0aXZlRWxlbWVudCwgMSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJhbmdlLnNldFN0YXJ0KHRoaXMuc3BhbjIubmF0aXZlRWxlbWVudCwgMSk7XG4gICAgICAgICAgICAgICAgcmFuZ2Uuc2V0RW5kKHRoaXMuc3BhbjIubmF0aXZlRWxlbWVudCwgMSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHNlbGVjdGlvbj8ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICAgICAgICBzZWxlY3Rpb24/LmFkZFJhbmdlKHJhbmdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMudGltZW91dENsZWFuZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmRhdGVUaW1lTWFpblRpbWVyKTtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmZvY3VzQmx1cik7XG4gICAgICAgIH0sIDkwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VsZWN0TGFzdE9uZUFmdGVyTW91c2VVcCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5uYW1lID09PVxuICAgICAgICAgICAgSW5wdXRDb25maWdOYW1lU3RyaW5nRW51bS5EQVRFX1BJQ0tFUl9CQU5LX0NBUkRcbiAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbklucHV0ID0gMTtcbiAgICAgICAgICAgIHRoaXMuc3BhbjIubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgdGhpcy5zZXRTcGFuU2VsZWN0aW9uKHRoaXMuc3BhbjIubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbklucHV0ID0gMjtcbiAgICAgICAgICAgIHRoaXMuc3BhbjMubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgdGhpcy5zZXRTcGFuU2VsZWN0aW9uKHRoaXMuc3BhbjMubmF0aXZlRWxlbWVudCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNob3dEYXRlSW5wdXQgPSB0cnVlO1xuXG4gICAgICAgIHRoaXMudGltZW91dENsZWFuZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmRhdGVUaW1lTWFpblRpbWVyKTtcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmZvY3VzQmx1cik7XG4gICAgICAgIH0sIDkwKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25EYXRlUGFzdGUoZXZlbnQ6IENsaXBib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgY29uc3QgcGFzdGVUZXh0ID0gZXZlbnQuY2xpcGJvYXJkRGF0YT8uZ2V0RGF0YSgndGV4dCcpIGFzIHN0cmluZztcbiAgICAgICAgY29uc3QgcGFzdGVkRGF0ZSA9IG5ldyBEYXRlKHBhc3RlVGV4dCk7XG4gICAgICAgIGlmICghaXNOYU4ocGFzdGVkRGF0ZS5nZXRUaW1lKCkpKSB7XG4gICAgICAgICAgICB0aGlzLnNldFRpbWVEYXRlSW5wdXQocGFzdGVkRGF0ZSk7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdFNwYW5CeVRhYkluZGV4KHRoaXMuc2VsZWN0aW9uSW5wdXQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGNoYW5nZVNlbGVjdGlvbihcbiAgICAgICAgZXZlbnQ6IEtleWJvYXJkRXZlbnQsXG4gICAgICAgIG5vUHJldmVudERlZmF1bHQgPSBmYWxzZVxuICAgICk6IHZvaWQge1xuICAgICAgICBpZiAoIW5vUHJldmVudERlZmF1bHQpIHtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGlzTmF2aWdhdGlvbktleSA9IHRoaXMuaXNOYXZpZ2F0aW9uS2V5KGV2ZW50KTtcbiAgICAgICAgY29uc3QgaXNTcGVjaWFsVGltZVBpY2tlcktleSA9XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbklucHV0ID09PSAzICYmXG4gICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLm5hbWUgPT09IElucHV0Q29uZmlnTmFtZVN0cmluZ0VudW0uVElNRV9QSUNLRVI7XG5cbiAgICAgICAgaWYgKGlzTmF2aWdhdGlvbktleSB8fCBpc1NwZWNpYWxUaW1lUGlja2VyS2V5KSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgdGhpcy5oYW5kbGVOYXZpZ2F0aW9uS2V5KGV2ZW50KTtcbiAgICAgICAgfSBlbHNlIGlmICghdGhpcy5pc051bWJlcihldmVudCkpIHtcbiAgICAgICAgICAgIGlmICghbm9QcmV2ZW50RGVmYXVsdCkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmICghbm9QcmV2ZW50RGVmYXVsdCkgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbklucHV0ID09PSAtMSkgdGhpcy5zZWxlY3Rpb25JbnB1dCA9IDA7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVLZXlib2FyZElucHV0cyhldmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGlzTnVtYmVyKGV2dDogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICAgICAgICBldnQgPSBldnQgPyBldnQgOiAod2luZG93LmV2ZW50IGFzIEtleWJvYXJkRXZlbnQpO1xuICAgICAgICBsZXQgY2hhckNvZGUgPSBldnQud2hpY2ggPyBldnQud2hpY2ggOiBldnQua2V5Q29kZTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChjaGFyQ29kZSA+PSA0OCAmJiBjaGFyQ29kZSA8PSA1NykgfHxcbiAgICAgICAgICAgIChjaGFyQ29kZSA+PSA5NiAmJiBjaGFyQ29kZSA8PSAxMDUpXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBpc05hdmlnYXRpb25LZXkoZTogS2V5Ym9hcmRFdmVudCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBuYXZpZ2F0aW9uS2V5cyA9IFszNywgMzgsIDM5LCA0MCwgOCwgOSwgNDZdOyAvLyBBcnJvdyBrZXlzLCBCYWNrc3BhY2UsIFRhYiwgRGVsZXRlXG4gICAgICAgIHJldHVybiBuYXZpZ2F0aW9uS2V5cy5pbmNsdWRlcyhlLmtleUNvZGUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkZvY3VzKGV2ZW50PzogRm9jdXNFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9uRm9jdXNFbWl0dGVyLmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZVBvcG92ZXIoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmNhSW5wdXRDb21wb25lbnQuY2FJbnB1dFBsYWNlaG9sZGVySWNvbkNvbXBvbmVudC50MilcbiAgICAgICAgICAgIHRoaXMuY2FJbnB1dENvbXBvbmVudC5jYUlucHV0UGxhY2Vob2xkZXJJY29uQ29tcG9uZW50LnQyLmNsb3NlKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHRvZ2dsZURyb3Bkb3duT3B0aW9ucygpIHtcbiAgICAgICAgaWYgKHRoaXMuY2FJbnB1dENvbXBvbmVudC5jYUlucHV0UGxhY2Vob2xkZXJJY29uQ29tcG9uZW50LnQyKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIXRoaXMuY2FJbnB1dENvbXBvbmVudC5jYUlucHV0UGxhY2Vob2xkZXJJY29uQ29tcG9uZW50LnQyLmlzT3BlbigpXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5kYXRlVGltZU1haW5UaW1lcik7XG4gICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZm9jdXNCbHVyKTtcbiAgICAgICAgICAgICAgICB0aGlzLmhvbGRlcjEubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uSW5wdXQgPSAtMTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNwYW5TZWxlY3Rpb24odGhpcy5ob2xkZXIxLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuY2FJbnB1dENvbXBvbmVudC5jYUlucHV0UGxhY2Vob2xkZXJJY29uQ29tcG9uZW50LnQyLm9wZW4oKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ob2xkZXIxLm5hdGl2ZUVsZW1lbnQuYmx1cigpO1xuICAgICAgICAgICAgICAgIC8vIHRoaXMuc2V0SXNGb2N1c0lucHV0KGZhbHNlKTtcbiAgICAgICAgICAgICAgICBsZXQgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgICAgICAgICAgIHNlbGVjdGlvbj8ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgaGFuZGxlRm9jdXNJbnB1dChlOiBFdmVudCkge1xuICAgICAgICBjb25zdCBldmVudCA9IGUgYXMgRm9jdXNFdmVudDtcblxuICAgICAgICBpZiAoIXRoaXMuaW5wdXRDb25maWcuaXNEaXNhYmxlZCkge1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGF0ZVRpbWVNYWluVGltZXIpO1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZm9jdXNCbHVyKTtcbiAgICAgICAgICAgIHRoaXMuc2hvd0RhdGVJbnB1dCA9IHRydWU7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgKHRoaXMuc2VsZWN0aW9uSW5wdXQgPT09IC0xICYmXG4gICAgICAgICAgICAgICAgICAgIChldmVudD8udGFyZ2V0IGFzIEhUTUxFbGVtZW50KT8ubm9kZU5hbWUgPT09ICdJTlBVVCcpIHx8XG4gICAgICAgICAgICAgICAgKGV2ZW50Py5yZWxhdGVkVGFyZ2V0IGFzIEhUTUxFbGVtZW50KT8ubm9kZU5hbWUgPT09ICdJTlBVVCcgfHxcbiAgICAgICAgICAgICAgICBldmVudD8ucmVsYXRlZFRhcmdldCA9PT0gbnVsbFxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2ZW50Qmx1ciA9IHRydWU7XG4gICAgICAgICAgICAgICAgdGhpcy5ob2xkZXIxLm5hdGl2ZUVsZW1lbnQuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNwYW5TZWxlY3Rpb24odGhpcy5ob2xkZXIxLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uSW5wdXQgPSAtMTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5jYUlucHV0Q29tcG9uZW50LmNhSW5wdXRQbGFjZWhvbGRlckljb25Db21wb25lbnQudDIudG9nZ2xlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0U3BhblNlbGVjdGlvbihlbGVtZW50OiBOb2RlKTogdm9pZCB7XG4gICAgICAgIGxldCByYW5nZTogUmFuZ2U7XG4gICAgICAgIGxldCBzZWxlY3Rpb246IFNlbGVjdGlvbiB8IG51bGw7XG5cbiAgICAgICAgaWYgKHdpbmRvdy5nZXRTZWxlY3Rpb24gJiYgZG9jdW1lbnQuY3JlYXRlUmFuZ2UpIHtcbiAgICAgICAgICAgIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgICAgIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgICAgICAgIHJhbmdlLnNlbGVjdE5vZGVDb250ZW50cyhlbGVtZW50KTtcbiAgICAgICAgICAgIHNlbGVjdGlvbj8ucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgICAgICAgICBzZWxlY3Rpb24/LmFkZFJhbmdlKHJhbmdlKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBzZXRTZWxlY3Rpb24oZXZlbnQ6IHtcbiAgICAgICAgcHJldmVudERlZmF1bHQ6ICgpID0+IHZvaWQ7XG4gICAgICAgIHN0b3BQcm9wYWdhdGlvbjogKCkgPT4gdm9pZDtcbiAgICAgICAgdGFyZ2V0OiBhbnk7XG4gICAgfSk6IHZvaWQge1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xuXG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbklucHV0ID0gcGFyc2VJbnQoZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JykpO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRTZWxlY3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICAgICAgaWYgKGN1cnJlbnRTZWxlY3Rpb24gJiYgY3VycmVudFNlbGVjdGlvbi50b1N0cmluZygpLmxlbmd0aCA+IDEwKSB7XG4gICAgICAgICAgICB0aGlzLmhvbGRlcjEubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25JbnB1dCA9IDA7XG4gICAgICAgICAgICB0aGlzLnNldFNwYW5TZWxlY3Rpb24odGhpcy5ob2xkZXIxLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGF0ZVRpbWVNYWluVGltZXIpO1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZm9jdXNCbHVyKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNsZWFyVGltZW91dCh0aGlzLmRhdGVUaW1lTWFpblRpbWVyKTtcbiAgICAgICAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdtYWluJykpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uSW5wdXQgPSBzZWxlY3Rpb25JbnB1dDtcbiAgICAgICAgICAgIHRoaXMuc2V0U3BhblNlbGVjdGlvbihlbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbklucHV0ID09PSAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uSW5wdXQgPSAwO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3BhblNlbGVjdGlvbih0aGlzLnNwYW4xLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0U3BhbkJ5VGFiSW5kZXgodGhpcy5zZWxlY3Rpb25JbnB1dCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KTogdm9pZCB7XG4gICAgICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25DaGFuZ2UoXzogSW5wdXRDaGFuZ2VWYWx1ZSk6IHZvaWQge31cblxuICAgIHB1YmxpYyB3cml0ZVZhbHVlKG9iajogSW5wdXRDaGFuZ2VWYWx1ZSk6IHZvaWQge1xuICAgICAgICBpZiAob2JqKSB0aGlzLnNldFRpbWVEYXRlSW5wdXQob2JqLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoKTogdm9pZCB7fVxuXG4gICAgLy8gQkxVUiBPTiBJTlBVVFxuICAgIHB1YmxpYyBibHVyT25EYXRlVGltZSgpOiB2b2lkIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuZGF0ZVRpbWVNYWluVGltZXIpO1xuICAgICAgICB0aGlzLmRhdGVUaW1lTWFpblRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5uYW1lID09PSBJbnB1dENvbmZpZ05hbWVTdHJpbmdFbnVtLkRBVEVfUElDS0VSXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICFpc05hTih0aGlzLnNwYW4xPy5uYXRpdmVFbGVtZW50LmlubmVySFRNTCkgJiZcbiAgICAgICAgICAgICAgICAgICAgIWlzTmFOKHRoaXMuc3BhbjI/Lm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKSAmJlxuICAgICAgICAgICAgICAgICAgICAhaXNOYU4odGhpcy5zcGFuMz8ubmF0aXZlRWxlbWVudC5pbm5lckhUTUwpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcuaXNGdXR1cmVEYXRlRGlzYWJsZWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vbWVudCh0aGlzLmRhdGVUaW1lSW5wdXREYXRlKS5pc0FmdGVyKG1vbWVudCgpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy5zZXRFcnJvcnMoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgLy8gZG9uJ3QgYWNjZXB0IGZ1dHVyZSBkYXRlc1xuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLmV4cGlyZWREYXRlSW52YWxpZCAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vbWVudCh0aGlzLmRhdGVUaW1lSW5wdXREYXRlKS5pc0JlZm9yZShtb21lbnQoKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3VwZXJDb250cm9sLmNvbnRyb2w/LnNldEVycm9ycyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7IC8vIGRvbid0IGFjY2VwdCBleHBpcmVkIGRhdGVzXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2FsZW5kYXJTZXJ2aWNlLmRhdGVDaGFuZ2VkLm5leHQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGFuMS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICdtbSc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3BhbjIubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnZGQnO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNwYW4zLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJ3l5JztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZSA9IG5ldyBEYXRlKCk7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2hvd0RhdGVJbnB1dCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5uYW1lID09PVxuICAgICAgICAgICAgICAgIElucHV0Q29uZmlnTmFtZVN0cmluZ0VudW0uREFURV9QSUNLRVJfQkFOS19DQVJEXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICFpc05hTih0aGlzLnNwYW4xLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKSAmJlxuICAgICAgICAgICAgICAgICAgICAhaXNOYU4odGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50LmlubmVySFRNTClcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5leHBpcmVkRGF0ZUludmFsaWQgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vbWVudCh0aGlzLmRhdGVUaW1lSW5wdXREYXRlKS5pc0JlZm9yZShtb21lbnQoKSlcbiAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1cGVyQ29udHJvbC5jb250cm9sPy5zZXRFcnJvcnMoeyBpbnZhbGlkOiB0cnVlIH0pOyAvLyBkb24ndCBhY2NlcHQgZXhwaXJlZCBkYXRlc1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhclNlcnZpY2UuZGF0ZUNoYW5nZWQubmV4dChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGFuMS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICdtbSc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3BhbjIubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAneXknO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlID0gbmV3IERhdGUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93RGF0ZUlucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICFpc05hTih0aGlzLnNwYW4xLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKSAmJlxuICAgICAgICAgICAgICAgICAgICAhaXNOYU4odGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50LmlubmVySFRNTClcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5jYWxlbmRhclNlcnZpY2UuZGF0ZUNoYW5nZWQubmV4dChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGVcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNwYW4xLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJ0hIJztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICdNTSc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0VGltZVBpY2tlclRpbWUoKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93RGF0ZUlucHV0ID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5kYXRlVGltZU1haW5UaW1lcik7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbklucHV0ID0gLTE7XG4gICAgICAgICAgICB0aGlzLm5ld0lucHV0Q2hhbmdlZCA9IHRydWU7XG4gICAgICAgIH0sIDEwMCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uUG9wb3ZlclNob3duKCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNob3dEYXRlSW5wdXQgPSB0cnVlO1xuICAgICAgICB0aGlzLmhvbGRlcjEubmF0aXZlRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblBvcG92ZXJIaWRkZW4oKTogdm9pZCB7XG4gICAgICAgIHRoaXMuYmx1ck9uRGF0ZVRpbWUoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0VGltZURhdGVJbnB1dChkYXRlOiBJbnB1dENoYW5nZVZhbHVlLCBoYXNWYWx1ZT86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgbGV0IHRleHQsIGRhdGVGb3JtYXQsIHRpbWVGb3JtYXQ7XG4gICAgICAgIGlmICh0aGlzLmlucHV0Q29uZmlnLm5hbWUgPT09IElucHV0Q29uZmlnTmFtZVN0cmluZ0VudW0uREFURV9QSUNLRVIpIHtcbiAgICAgICAgICAgIHRleHQgPSBtb21lbnQobmV3IERhdGUoZGF0ZSkpLmZvcm1hdCgnTU0vREQvWVknKTtcbiAgICAgICAgICAgIGRhdGVGb3JtYXQgPSB0ZXh0LnNwbGl0KCcvJyk7XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLm5hbWUgPT09XG4gICAgICAgICAgICBJbnB1dENvbmZpZ05hbWVTdHJpbmdFbnVtLkRBVEVfUElDS0VSX0JBTktfQ0FSRFxuICAgICAgICApIHtcbiAgICAgICAgICAgIHRleHQgPSBtb21lbnQobmV3IERhdGUoZGF0ZSkpLmZvcm1hdCgnTU0vREQvWVknKTtcbiAgICAgICAgICAgIGRhdGVGb3JtYXQgPSB0ZXh0LnNwbGl0KCcvJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBkYXRlID1cbiAgICAgICAgICAgICAgICBkYXRlIGluc3RhbmNlb2YgRGF0ZVxuICAgICAgICAgICAgICAgICAgICA/IGRhdGVcbiAgICAgICAgICAgICAgICAgICAgOiBuZXcgRGF0ZShtb21lbnQoKS5mb3JtYXQoJ01NL0REL1lZWVknKSArICcgJyArIGRhdGUpO1xuICAgICAgICAgICAgdGV4dCA9IG1vbWVudChuZXcgRGF0ZShkYXRlKSkuZm9ybWF0KCdISDptbScpO1xuXG4gICAgICAgICAgICB0aW1lRm9ybWF0ID0gbW9tZW50KG5ldyBEYXRlKGRhdGUpKS5mb3JtYXQoJ2hoL21tL0EnKTtcbiAgICAgICAgICAgIGRhdGVGb3JtYXQgPSB0aW1lRm9ybWF0LnNwbGl0KCcvJyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5mb3JtRm9ybWF0KSB7XG4gICAgICAgICAgICBjb25zdCBuZXdGb3JtRm9ybWF0ID0gbW9tZW50KG5ldyBEYXRlKGRhdGUpKS5mb3JtYXQoXG4gICAgICAgICAgICAgICAgdGhpcy5mb3JtRm9ybWF0XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgdGhpcy52YWx1ZUFmdGVyV3JpdGVWYWx1ZSA9IG5ld0Zvcm1Gb3JtYXQ7XG4gICAgICAgICAgICB0ZXh0ID0gbmV3Rm9ybUZvcm1hdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghaGFzVmFsdWUpIHRoaXMub25DaGFuZ2UodGV4dCk7XG4gICAgICAgIHRoaXMuc2V0SXNGb2N1c0lucHV0KGZhbHNlKTtcblxuICAgICAgICAvLyBIQVMgVE8gQkUgSU4gVElNRU9VVCBCRUNBVVNFIE9GIEFOR1VMQVIgU1RBQ0tcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICBpZiAodGhpcy5zcGFuMSkgdGhpcy5zcGFuMS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IGRhdGVGb3JtYXRbMF07XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnNwYW4yKVxuICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5uYW1lICE9PVxuICAgICAgICAgICAgICAgICAgICBJbnB1dENvbmZpZ05hbWVTdHJpbmdFbnVtLkRBVEVfUElDS0VSX0JBTktfQ0FSRFxuICAgICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNwYW4yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gZGF0ZUZvcm1hdFsxXTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGFuMy5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IGRhdGVGb3JtYXRbMl07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IGRhdGVGb3JtYXRbMl07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcblxuICAgICAgICBpZiAoZGF0ZSkge1xuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZSA9IG5ldyBEYXRlKGRhdGUpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuc2hvd0RhdGVJbnB1dCA9IHRydWU7XG4gICAgfVxuXG4gICAgcHVibGljIGhhbmRsZUtleWJvYXJkSW5wdXRzKGU6IEtleWJvYXJkRXZlbnQsIGlzUmVzdGFydD86IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc3Bhbk9uZVZhbHVlOiBudW1iZXIgfCB1bmRlZmluZWQgPVxuICAgICAgICAgICAgaXNOYU4odGhpcy5zcGFuMS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCkgfHwgdGhpcy5uZXdJbnB1dENoYW5nZWRcbiAgICAgICAgICAgICAgICA/IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIDogcGFyc2VJbnQodGhpcy5zcGFuMS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCk7XG4gICAgICAgIGNvbnN0IHNwYW4yVmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCA9XG4gICAgICAgICAgICBpc05hTih0aGlzLnNwYW4yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKSB8fCB0aGlzLm5ld0lucHV0Q2hhbmdlZFxuICAgICAgICAgICAgICAgID8gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgOiBwYXJzZUludCh0aGlzLnNwYW4yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MKTtcblxuICAgICAgICBsZXQgc3BhbjNWYWx1ZTogc3RyaW5nIHwgbnVtYmVyIHwgdW5kZWZpbmVkO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcubmFtZSAhPT1cbiAgICAgICAgICAgIElucHV0Q29uZmlnTmFtZVN0cmluZ0VudW0uREFURV9QSUNLRVJfQkFOS19DQVJEXG4gICAgICAgICkge1xuICAgICAgICAgICAgc3BhbjNWYWx1ZSA9XG4gICAgICAgICAgICAgICAgaXNOYU4odGhpcy5zcGFuMy5uYXRpdmVFbGVtZW50LmlubmVySFRNTCkgfHxcbiAgICAgICAgICAgICAgICB0aGlzLm5ld0lucHV0Q2hhbmdlZFxuICAgICAgICAgICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICAgICAgICAgIDogcGFyc2VJbnQodGhpcy5zcGFuMy5uYXRpdmVFbGVtZW50LmlubmVySFRNTCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLm5ld0lucHV0Q2hhbmdlZCA9IGZhbHNlO1xuICAgICAgICBpZiAodGhpcy5pbnB1dENvbmZpZy5uYW1lID09PSBJbnB1dENvbmZpZ05hbWVTdHJpbmdFbnVtLkRBVEVfUElDS0VSKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3Rpb25JbnB1dCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGlmIChpc1Jlc3RhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGFuMS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICdtbSc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uSW5wdXQgPSAwO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFNwYW5CeVRhYkluZGV4KDApO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3Bhbk9uZVZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpbmFsX3ZhbHVlID0gcGFyc2VJbnQoYCR7c3Bhbk9uZVZhbHVlfSR7ZS5rZXl9YCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaW5hbF92YWx1ZSA+IDEyKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNwYW4xLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICcwJyArIHBhcnNlSW50KGUua2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgKS5zbGljZSgtMik7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbklucHV0ID0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0U3BhbkJ5VGFiSW5kZXgoMSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlID0gbmV3IERhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZS5zZXRNb250aChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VJbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNwYW4xLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUludChlLmtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSAtIDFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZpbmFsX3ZhbHVlKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnbW0nO1xuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUludChlLmtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLnNsaWNlKC0yKTtcblxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25JbnB1dCA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFNwYW5CeVRhYkluZGV4KDEsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlSW50KGUua2V5KSlcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlLnNldE1vbnRoKHBhcnNlSW50KGUua2V5KSAtIDEpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbmFsX3ZhbHVlID0gKCcwJyArIHBhcnNlSW50KGUua2V5KSkuc2xpY2UoLTIpO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSBmaW5hbF92YWx1ZTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VJbnQoYDEke2Uua2V5fWApID4gMTIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uSW5wdXQgPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RTcGFuQnlUYWJJbmRleCgxLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHRoaXMuc2VsZWN0U3BhbkJ5VGFiSW5kZXgoMCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGlvbklucHV0ID09PSAxKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzUmVzdGFydCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNwYW4yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJ2RkJztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25JbnB1dCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0U3BhbkJ5VGFiSW5kZXgoMCwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzcGFuMlZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZpbmFsX3ZhbHVlID0gcGFyc2VJbnQoYCR7c3BhbjJWYWx1ZX0ke2Uua2V5fWApO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmluYWxfdmFsdWUgPiAzMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnMCcgKyBwYXJzZUludChlLmtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICkuc2xpY2UoLTIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25JbnB1dCA9IDI7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFNwYW5CeVRhYkluZGV4KDIsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUuc2V0RGF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VJbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNwYW4yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUludChlLmtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmluYWxfdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNwYW4yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJ2RkJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSW50KGUua2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkuc2xpY2UoLTIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbklucHV0ID0gMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0U3BhbkJ5VGFiSW5kZXgoMiwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VJbnQoZS5rZXkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUuc2V0RGF0ZShwYXJzZUludChlLmtleSkpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3BhbjIubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAnMCcgKyBwYXJzZUludChlLmtleSlcbiAgICAgICAgICAgICAgICAgICAgKS5zbGljZSgtMik7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHBhcnNlSW50KGAxJHtlLmtleX1gKSA+IDMxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbklucHV0ID0gMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0U3BhbkJ5VGFiSW5kZXgoMiwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFNwYW5CeVRhYkluZGV4KDEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAoaXNSZXN0YXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3BhbjMubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAneXknO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbklucHV0ID0gMTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RTcGFuQnlUYWJJbmRleCgxLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFzcGFuM1ZhbHVlIHx8IHNwYW4zVmFsdWUudG9TdHJpbmcoKS5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGFuMy5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICcwJyArIHBhcnNlSW50KGUua2V5KVxuICAgICAgICAgICAgICAgICAgICApLnNsaWNlKC0yKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZS5zZXRGdWxsWWVhcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUludChgMjAwJHtwYXJzZUludChlLmtleSl9YClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFNwYW5CeVRhYkluZGV4KDIpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbmFsWWVhciA9IHBhcnNlSW50KFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGFuMy5uYXRpdmVFbGVtZW50LmlubmVySFRNTCArIHBhcnNlSW50KGUua2V5KVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZpbmFsU2hvd1llYXIgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxZZWFyID4gMzFcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHBhcnNlSW50KGAxOSR7ZmluYWxZZWFyfWApXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBwYXJzZUludChgMjAke2ZpbmFsWWVhcn1gKTtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZS5zZXRGdWxsWWVhcihmaW5hbFNob3dZZWFyKVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc3BhbjMubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNwYW4zLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MICsgcGFyc2VJbnQoZS5rZXkpXG4gICAgICAgICAgICAgICAgICAgICkuc2xpY2UoLTIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFNwYW5CeVRhYkluZGV4KDIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcubmFtZSA9PT1cbiAgICAgICAgICAgIElucHV0Q29uZmlnTmFtZVN0cmluZ0VudW0uREFURV9QSUNLRVJfQkFOS19DQVJEXG4gICAgICAgICkge1xuICAgICAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGlvbklucHV0KSB7XG4gICAgICAgICAgICAgICAgaWYgKGlzUmVzdGFydCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNwYW4xLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJ21tJztcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25JbnB1dCA9IDA7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0U3BhbkJ5VGFiSW5kZXgoMCk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzcGFuT25lVmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmluYWxfdmFsdWUgPSBwYXJzZUludChgJHtzcGFuT25lVmFsdWV9JHtlLmtleX1gKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmFsX3ZhbHVlID4gMTIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJzAnICsgcGFyc2VJbnQoZS5rZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICApLnNsaWNlKC0yKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uSW5wdXQgPSAxO1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RTcGFuQnlUYWJJbmRleCgxLCB0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlLnNldE1vbnRoKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZUludChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSW50KGUua2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApIC0gMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZmluYWxfdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNwYW4xLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gJ21tJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGFuMS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGFuMS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSW50KGUua2V5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkuc2xpY2UoLTIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGlvbklucHV0ID0gMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0U3BhbkJ5VGFiSW5kZXgoMSwgdHJ1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBpZiAocGFyc2VJbnQoZS5rZXkpKVxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUuc2V0TW9udGgocGFyc2VJbnQoZS5rZXkpIC0gMSlcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmluYWxfdmFsdWUgPSAoJzAnICsgcGFyc2VJbnQoZS5rZXkpKS5zbGljZSgtMik7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGFuMS5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IGZpbmFsX3ZhbHVlO1xuXG4gICAgICAgICAgICAgICAgICAgIGlmIChwYXJzZUludChgMSR7ZS5rZXl9YCkgPiAxMikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25JbnB1dCA9IDE7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFNwYW5CeVRhYkluZGV4KDEsIHRydWUpO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgdGhpcy5zZWxlY3RTcGFuQnlUYWJJbmRleCgwKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChpc1Jlc3RhcnQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9ICd5eSc7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uSW5wdXQgPSAyO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFNwYW5CeVRhYkluZGV4KDIsIHRydWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXNwYW4yVmFsdWUgfHwgc3BhbjJWYWx1ZS50b1N0cmluZygpLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNwYW4yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gKFxuICAgICAgICAgICAgICAgICAgICAgICAgJzAnICsgcGFyc2VJbnQoZS5rZXkpXG4gICAgICAgICAgICAgICAgICAgICkuc2xpY2UoLTIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlID0gbmV3IERhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlLnNldEZ1bGxZZWFyKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlSW50KGAyMDAke3BhcnNlSW50KGUua2V5KX1gKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0U3BhbkJ5VGFiSW5kZXgoMSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmluYWxZZWFyID0gcGFyc2VJbnQoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNwYW4yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MICsgcGFyc2VJbnQoZS5rZXkpXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgZmluYWxTaG93WWVhciA9XG4gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbFllYXIgPiAzMVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gcGFyc2VJbnQoYDE5JHtmaW5hbFllYXJ9YClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHBhcnNlSW50KGAyMCR7ZmluYWxZZWFyfWApO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlID0gbmV3IERhdGUoXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlLnNldEZ1bGxZZWFyKGZpbmFsU2hvd1llYXIpXG4gICAgICAgICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zcGFuMi5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9IChcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3BhbjIubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgKyBwYXJzZUludChlLmtleSlcbiAgICAgICAgICAgICAgICAgICAgKS5zbGljZSgtMik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0U3BhbkJ5VGFiSW5kZXgoMSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0U3BhbkJ5VGFiSW5kZXgoaW5keDogbnVtYmVyLCBjaGFuZ2VUYWI/OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHN3aXRjaCAoaW5keCkge1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3BhblNlbGVjdGlvbih0aGlzLnNwYW4xLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3BhblNlbGVjdGlvbih0aGlzLnNwYW4yLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3BhblNlbGVjdGlvbih0aGlzLnNwYW4zLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aGlzLnNldFNwYW5TZWxlY3Rpb24odGhpcy5ob2xkZXIxLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNoYW5nZVRhYikgdGhpcy5uZXdJbnB1dENoYW5nZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFuZGxlTmF2aWdhdGlvbktleShldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgICAgICBzd2l0Y2ggKGV2ZW50LmtleUNvZGUpIHtcbiAgICAgICAgICAgIGNhc2UgMzc6IC8vIExlZnQgYXJyb3dcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmVTZWxlY3Rpb25MZWZ0KCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDM5OiAvLyBSaWdodCBhcnJvd1xuICAgICAgICAgICAgY2FzZSA5OiAvLyBUYWJcbiAgICAgICAgICAgICAgICB0aGlzLm1vdmVTZWxlY3Rpb25SaWdodE9yVGFiKGV2ZW50KTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMzg6IC8vIFVwIGFycm93XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRlVGltZU1vZGVsKCd1cCcpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA0MDogLy8gRG93biBhcnJvd1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0RGF0ZVRpbWVNb2RlbCgnZG93bicpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSA4OiAvLyBCYWNrc3BhY2VcbiAgICAgICAgICAgIGNhc2UgNDY6IC8vIERlbGV0ZVxuICAgICAgICAgICAgICAgIHRoaXMuaGFuZGxlS2V5Ym9hcmRJbnB1dHMoZXZlbnQsIHRydWUpO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoYW5kbGVEYXRlUGlja2VySW5wdXQoaXNVcDogYm9vbGVhbiwgaXNEYXRlUGlja2VyOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbklucHV0ID09PSAwKSB0aGlzLnVwZGF0ZU1vbnRoKGlzVXApO1xuICAgICAgICBlbHNlIGlmICh0aGlzLnNlbGVjdGlvbklucHV0ID09PSAxKSB0aGlzLnVwZGF0ZURhdGUoaXNVcCwgaXNEYXRlUGlja2VyKTtcbiAgICAgICAgZWxzZSB0aGlzLnVwZGF0ZVllYXIoaXNVcCwgaXNEYXRlUGlja2VyKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldERhdGVUaW1lTW9kZWwoZGlyZWN0aW9uOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uSW5wdXQgPT09IC0xKSB0aGlzLnNlbGVjdGlvbklucHV0ID0gMDtcblxuICAgICAgICBjb25zdCBpc1VwID0gZGlyZWN0aW9uID09PSAndXAnO1xuICAgICAgICBjb25zdCBpc0RhdGVQaWNrZXIgPVxuICAgICAgICAgICAgdGhpcy5pbnB1dENvbmZpZy5uYW1lID09PSBJbnB1dENvbmZpZ05hbWVTdHJpbmdFbnVtLkRBVEVfUElDS0VSO1xuICAgICAgICBjb25zdCBpc0JhbmtDYXJkUGlja2VyID1cbiAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcubmFtZSA9PT1cbiAgICAgICAgICAgIElucHV0Q29uZmlnTmFtZVN0cmluZ0VudW0uREFURV9QSUNLRVJfQkFOS19DQVJEO1xuXG4gICAgICAgIGlmIChpc0RhdGVQaWNrZXIgfHwgaXNCYW5rQ2FyZFBpY2tlcilcbiAgICAgICAgICAgIHRoaXMuaGFuZGxlRGF0ZVBpY2tlcklucHV0KGlzVXAsIGlzRGF0ZVBpY2tlcik7XG4gICAgICAgIGVsc2UgdGhpcy5oYW5kbGVUaW1lUGlja2VySW5wdXQoaXNVcCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb3ZlU2VsZWN0aW9uUmlnaHRPclRhYihlOiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGlzRGF0ZXBpY2tlckJhbmtDYXJkID1cbiAgICAgICAgICAgIHRoaXMuaW5wdXRDb25maWcubmFtZSA9PT1cbiAgICAgICAgICAgIElucHV0Q29uZmlnTmFtZVN0cmluZ0VudW0uREFURV9QSUNLRVJfQkFOS19DQVJEO1xuICAgICAgICBjb25zdCBtYXhJbmRleCA9IGlzRGF0ZXBpY2tlckJhbmtDYXJkID8gMSA6IDI7XG5cbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uSW5wdXQgPCBtYXhJbmRleCAmJiAhZS5zaGlmdEtleSkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25JbnB1dCArPSAxO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RTcGFuQnlUYWJJbmRleCh0aGlzLnNlbGVjdGlvbklucHV0LCB0cnVlKTtcbiAgICAgICAgfSBlbHNlIGlmIChlLmtleUNvZGUgPT09IDkgJiYgIWUuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgIHRoaXMuZm9jdXNOZXh0SW5wdXQoKTtcbiAgICAgICAgfSBlbHNlIGlmIChlLnNoaWZ0S2V5ICYmIGUua2V5Q29kZSA9PT0gOSkge1xuICAgICAgICAgICAgdGhpcy5mb2N1c1ByZXZpb3VzSW5wdXQoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZm9jdXNQcmV2aW91c0lucHV0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbGxJbnB1dHMgPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQuaW5wdXQtY29udHJvbCcpXG4gICAgICAgICkgYXMgSFRNTElucHV0RWxlbWVudFtdO1xuXG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGFsbElucHV0cy5maW5kSW5kZXgoXG4gICAgICAgICAgICAoaW5wdXQpID0+IGlucHV0ID09PSB0aGlzLmNhSW5wdXRDb21wb25lbnQuaW5wdXQubmF0aXZlRWxlbWVudFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChjdXJyZW50SW5kZXggPT09IC0xKSB0aGlzLnNlbGVjdGlvbklucHV0ID0gMztcbiAgICAgICAgZWxzZSBpZiAoY3VycmVudEluZGV4ID09PSAwKSB0aGlzLnNlbGVjdGlvbklucHV0ID0gMDtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbklucHV0IC09IDE7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdFNwYW5CeVRhYkluZGV4KHRoaXMuc2VsZWN0aW9uSW5wdXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA+IDApIGFsbElucHV0c1tjdXJyZW50SW5kZXggLSAxXS5mb2N1cygpO1xuXG4gICAgICAgIHRoaXMuc2VsZWN0aW9uSW5wdXQgPSAtMTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvY3VzTmV4dElucHV0KCk6IHZvaWQge1xuICAgICAgICBjb25zdCBhbGxJbnB1dHMgPSBBcnJheS5mcm9tKFxuICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnaW5wdXQuaW5wdXQtY29udHJvbCcpXG4gICAgICAgICkgYXMgSFRNTElucHV0RWxlbWVudFtdO1xuICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBhbGxJbnB1dHMuZmluZEluZGV4KFxuICAgICAgICAgICAgKGlucHV0KSA9PiBpbnB1dCA9PT0gdGhpcy5jYUlucHV0Q29tcG9uZW50LmlucHV0Lm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoYWxsSW5wdXRzW2N1cnJlbnRJbmRleCArIDFdKSBhbGxJbnB1dHNbY3VycmVudEluZGV4ICsgMV0uZm9jdXMoKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnNldElzRm9jdXNJbnB1dChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLmJsdXJPbkRhdGVUaW1lKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGlvbklucHV0ID0gLTE7XG4gICAgfVxuXG4gICAgcHVibGljIHNldElzRm9jdXNJbnB1dCh2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmNhSW5wdXRDb21wb25lbnQuaXNGb2N1c0lucHV0ID0gdmFsdWU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBtb3ZlU2VsZWN0aW9uTGVmdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0aW9uSW5wdXQgPiAwKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGlvbklucHV0IC09IDE7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdFNwYW5CeVRhYkluZGV4KHRoaXMuc2VsZWN0aW9uSW5wdXQsIHRydWUpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVNb250aChpc1VwOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IG1vbnRoRGVsdGEgPSBpc1VwID8gMSA6IC0xO1xuICAgICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlID0gbmV3IERhdGUoXG4gICAgICAgICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlLnNldE1vbnRoKFxuICAgICAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUuZ2V0TW9udGgoKSArIG1vbnRoRGVsdGFcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnNwYW4xLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5wYWRWYWx1ZShcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUuZ2V0TW9udGgoKSArIDFcbiAgICAgICAgKTtcbiAgICAgICAgdGhpcy5zZXRTcGFuU2VsZWN0aW9uKHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVEYXRlKGlzVXA6IGJvb2xlYW4sIGlzRGF0ZVBpY2tlcjogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCBkYXRlRGVsdGEgPSBpc1VwID8gMSA6IC0xO1xuICAgICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlID0gbmV3IERhdGUoXG4gICAgICAgICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlLnNldERhdGUoXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZS5nZXREYXRlKCkgKyBkYXRlRGVsdGFcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICBjb25zdCBzcGFuRWxlbWVudCA9IGlzRGF0ZVBpY2tlclxuICAgICAgICAgICAgPyB0aGlzLnNwYW4yLm5hdGl2ZUVsZW1lbnRcbiAgICAgICAgICAgIDogdGhpcy5zcGFuMS5uYXRpdmVFbGVtZW50O1xuICAgICAgICBzcGFuRWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLnBhZFZhbHVlKHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUuZ2V0RGF0ZSgpKTtcbiAgICAgICAgdGhpcy5zZXRTcGFuU2VsZWN0aW9uKHNwYW5FbGVtZW50KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZVllYXIoaXNVcDogYm9vbGVhbiwgaXNEYXRlUGlja2VyOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHllYXJEZWx0YSA9IGlzVXAgPyAxIDogLTE7XG4gICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUuc2V0RnVsbFllYXIoXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZS5nZXRGdWxsWWVhcigpICsgeWVhckRlbHRhXG4gICAgICAgICAgICApXG4gICAgICAgICk7XG5cbiAgICAgICAgY29uc3Qgc3BhbkVsZW1lbnQgPSBpc0RhdGVQaWNrZXJcbiAgICAgICAgICAgID8gdGhpcy5zcGFuMy5uYXRpdmVFbGVtZW50XG4gICAgICAgICAgICA6IHRoaXMuc3BhbjIubmF0aXZlRWxlbWVudDtcbiAgICAgICAgc3BhbkVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5kYXRlVGltZUlucHV0RGF0ZVxuICAgICAgICAgICAgLmdldEZ1bGxZZWFyKClcbiAgICAgICAgICAgIC50b1N0cmluZygpXG4gICAgICAgICAgICAuc2xpY2UoLTIpO1xuICAgICAgICB0aGlzLnNldFNwYW5TZWxlY3Rpb24oc3BhbkVsZW1lbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgcGFkVmFsdWUodmFsdWU6IG51bWJlcik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiAoJzAnICsgdmFsdWUpLnNsaWNlKC0yKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhbmRsZVRpbWVQaWNrZXJJbnB1dChpc1VwOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGlvbklucHV0ID09PSAwKSB0aGlzLnVwZGF0ZUhvdXJzKGlzVXApO1xuICAgICAgICBlbHNlIGlmICh0aGlzLnNlbGVjdGlvbklucHV0ID09PSAxKSB0aGlzLnVwZGF0ZU1pbnV0ZXMoaXNVcCk7XG4gICAgICAgIGVsc2UgdGhpcy50b2dnbGVBTVBNKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVIb3Vycyhpc1VwOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IGhvdXJzRGVsdGEgPSBpc1VwID8gMSA6IC0xO1xuICAgICAgICBsZXQgc2VsZWN0ZWRIb3VycyA9IHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUuZ2V0SG91cnMoKSArIGhvdXJzRGVsdGE7XG5cbiAgICAgICAgaWYgKHNlbGVjdGVkSG91cnMgPT09IDApIHNlbGVjdGVkSG91cnMgPSAyNDtcbiAgICAgICAgaWYgKHNlbGVjdGVkSG91cnMgPT09IC0xKSBzZWxlY3RlZEhvdXJzID0gMjM7XG5cbiAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZSA9IG5ldyBEYXRlKFxuICAgICAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZS5zZXRIb3VycyhzZWxlY3RlZEhvdXJzKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLnBhZFZhbHVlKFxuICAgICAgICAgICAgc2VsZWN0ZWRIb3VycyA+IDEyID8gc2VsZWN0ZWRIb3VycyAtIDEyIDogc2VsZWN0ZWRIb3Vyc1xuICAgICAgICApO1xuICAgICAgICB0aGlzLnNldFNwYW5TZWxlY3Rpb24odGhpcy5zcGFuMS5uYXRpdmVFbGVtZW50KTtcblxuICAgICAgICB0aGlzLnNwYW4zLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID1cbiAgICAgICAgICAgIHNlbGVjdGVkSG91cnMgPiAxMSAmJiBzZWxlY3RlZEhvdXJzIDwgMjQgPyAnUE0nIDogJ0FNJztcbiAgICB9XG5cbiAgICBwcml2YXRlIHVwZGF0ZU1pbnV0ZXMoaXNVcDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBjb25zdCBtaW51dGVzRGVsdGEgPSBpc1VwID8gMSA6IC0xO1xuICAgICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlID0gbmV3IERhdGUoXG4gICAgICAgICAgICB0aGlzLmRhdGVUaW1lSW5wdXREYXRlLnNldE1pbnV0ZXMoXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZS5nZXRNaW51dGVzKCkgKyBtaW51dGVzRGVsdGFcbiAgICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICB0aGlzLnNwYW4yLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID0gdGhpcy5wYWRWYWx1ZShcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUuZ2V0TWludXRlcygpXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuc2V0U3BhblNlbGVjdGlvbih0aGlzLnNwYW4yLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdG9nZ2xlQU1QTSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zcGFuMy5uYXRpdmVFbGVtZW50LmlubmVySFRNTCA9XG4gICAgICAgICAgICB0aGlzLnNwYW4zLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID09PSAnQU0nID8gJ1BNJyA6ICdBTSc7XG5cbiAgICAgICAgY29uc3QgaG91cnNUb0FkZCA9XG4gICAgICAgICAgICB0aGlzLnNwYW4zLm5hdGl2ZUVsZW1lbnQuaW5uZXJIVE1MID09PSAnQU0nID8gLTEyIDogMTI7XG4gICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUuc2V0SG91cnMoXG4gICAgICAgICAgICAgICAgdGhpcy5kYXRlVGltZUlucHV0RGF0ZS5nZXRIb3VycygpICsgaG91cnNUb0FkZFxuICAgICAgICAgICAgKVxuICAgICAgICApO1xuXG4gICAgICAgIHRoaXMuc2V0U3BhblNlbGVjdGlvbih0aGlzLnNwYW4zLm5hdGl2ZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbGVhcklucHV0KGV2ZW50OiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIHRoaXMuY2xlYXJJbnB1dEV2ZW50LmVtaXQoZXZlbnQpO1xuXG4gICAgICAgIHRoaXMuc2V0SXNGb2N1c0lucHV0KGZhbHNlKTtcbiAgICAgICAgdGhpcy5yZXNldERhdGVUaW1lSW5wdXRzKCk7XG4gICAgICAgIHRoaXMub25DaGFuZ2UoJycpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkJsdXJJbnB1dChldmVudDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmJsdXJJbnB1dEV2ZW50LmVtaXQoZXZlbnQpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZXNldERhdGVUaW1lSW5wdXRzKCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5zcGFuMSlcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLm5hbWUgPT09IElucHV0Q29uZmlnTmFtZVN0cmluZ0VudW0uREFURV9QSUNLRVJcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnbW0nO1xuICAgICAgICAgICAgICAgIHRoaXMuc3BhbjIubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnZGQnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3BhbjMubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAneXknO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLm5hbWUgPT09XG4gICAgICAgICAgICAgICAgSW5wdXRDb25maWdOYW1lU3RyaW5nRW51bS5EQVRFX1BJQ0tFUl9CQU5LX0NBUkRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnbW0nO1xuICAgICAgICAgICAgICAgIHRoaXMuc3BhbjIubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAneXknO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLmlucHV0Q29uZmlnLm5hbWUgPT09IElucHV0Q29uZmlnTmFtZVN0cmluZ0VudW0uVElNRV9QSUNLRVJcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuc3BhbjEubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnSEgnO1xuICAgICAgICAgICAgICAgIHRoaXMuc3BhbjIubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnTU0nO1xuICAgICAgICAgICAgICAgIHRoaXMuc3BhbjMubmF0aXZlRWxlbWVudC5pbm5lckhUTUwgPSAnQU0nO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuc2V0VGltZVBpY2tlclRpbWUoKTtcbiAgICAgICAgdGhpcy5uZXdJbnB1dENoYW5nZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLnNldElzRm9jdXNJbnB1dChmYWxzZSk7XG4gICAgICAgIHRoaXMuc2hvd0RhdGVJbnB1dCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRUaW1lUGlja2VyVGltZSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaW5wdXRDb25maWcubmFtZSA9PT0gSW5wdXRDb25maWdOYW1lU3RyaW5nRW51bS5USU1FX1BJQ0tFUilcbiAgICAgICAgICAgIHRoaXMuZGF0ZVRpbWVJbnB1dERhdGUgPSBuZXcgRGF0ZShcbiAgICAgICAgICAgICAgICBtb21lbnQoKS5mb3JtYXQoJ01NL0REL1lZWVknKSArXG4gICAgICAgICAgICAgICAgICAgICh0aGlzLmlucHV0Q29uZmlnPy5pc0Zyb21EYXRlID8gJyAxMjoxNScgOiAnIDEyOjAwJylcbiAgICAgICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIG5nT25EZXN0cm95KCkge1xuICAgICAgICB0aGlzLmRlc3Ryb3kkLm5leHQoKTtcbiAgICAgICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIH1cbn1cbiIsIjxkaXZcbiAgICBjbGFzcz1cImRhdGV0aW1lLXBpY2tlci1tYWluLWhvbGRlciBpbnB1dC1jdXN0b20tZ3JvdXAgZGF0ZXRpbWVjbGFzc1wiXG4gICAgW25nQ2xhc3NdPVwiXG4gICAgICAgIGdldFN1cGVyQ29udHJvbFxuICAgICAgICAgICAgfCBpbnB1dENvbnRhaW5lckNsYXNzXG4gICAgICAgICAgICAgICAgOiBjYUlucHV0Q29tcG9uZW50LmlzRm9jdXNJbnB1dFxuICAgICAgICAgICAgICAgIDogY2FJbnB1dENvbXBvbmVudC5pc1RvdWNoZWRJbnB1dFxuICAgICAgICAgICAgICAgIDogaW5wdXRDb25maWdcbiAgICAgICAgICAgICAgICA6IGdldFN1cGVyQ29udHJvbD8udmFsdWVcbiAgICBcIlxuPlxuICAgIDxkaXZcbiAgICAgICAgI2hvbGRlcjFcbiAgICAgICAgY2xhc3M9XCJkYXRlX3RpbWVfaG9sZGVyIGlucHV0LWNvbnRyb2xcIlxuICAgICAgICBbY2xhc3MuYWN0aXZlXT1cInNob3dEYXRlSW5wdXRcIlxuICAgICAgICB0YWJpbmRleD1cIi0xXCJcbiAgICAgICAgKG1vdXNlZG93bik9XCJzZWxlY3RMYXN0T25lRm9yU2VsZWN0aW9uKClcIlxuICAgICAgICAobW91c2V1cCk9XCJzZWxlY3RMYXN0T25lQWZ0ZXJNb3VzZVVwKClcIlxuICAgICAgICAocGFzdGUpPVwib25EYXRlUGFzdGUoJGV2ZW50KVwiXG4gICAgICAgIChrZXlkb3duKT1cImNoYW5nZVNlbGVjdGlvbigkZXZlbnQsIHRydWUpXCJcbiAgICAgICAgKGNsaWNrKT1cInRvZ2dsZURyb3Bkb3duT3B0aW9ucygpXCJcbiAgICAgICAgW25nU3R5bGVdPVwie1xuICAgICAgICAgICAgJ3BhZGRpbmctbGVmdCc6IGlucHV0Q29uZmlnLmlzSWNvbkhpZGRlbiA/ICcycHgnIDogJzI3cHgnLFxuICAgICAgICB9XCJcbiAgICAgICAgW25nQ2xhc3NdPVwiXG4gICAgICAgICAgICBjYUlucHV0Q29tcG9uZW50LmlzRm9jdXNJbnB1dFxuICAgICAgICAgICAgICAgIHwgaW5wdXREYXRldGltZVBpY2tlckNsYXNzXG4gICAgICAgICAgICAgICAgICAgIDogZmFsc2VcbiAgICAgICAgICAgICAgICAgICAgOiBnZXRTdXBlckNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgOiBpbnB1dENvbmZpZ1xuICAgICAgICAgICAgICAgICAgICA6IGNhSW5wdXRDb21wb25lbnQuaXNUb3VjaGVkSW5wdXRcbiAgICAgICAgICAgICAgICAgICAgOiBnZXRTdXBlckNvbnRyb2w/LnZhbHVlXG4gICAgICAgIFwiXG4gICAgPlxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgI3NwYW4xXG4gICAgICAgICAgICBjbGFzcz1cIm1haW5cIlxuICAgICAgICAgICAgW25nQ2xhc3NdPVwie1xuICAgICAgICAgICAgICAgICdyZXNldC1zZWxlY3Rpb24tY29sb3InOiAhY2FJbnB1dENvbXBvbmVudC5pc0ZvY3VzSW5wdXQsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAgIHRhYmluZGV4PVwiMFwiXG4gICAgICAgICAgICAobW91c2V1cCk9XCJzZXRTZWxlY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICAoa2V5ZG93bik9XCJjaGFuZ2VTZWxlY3Rpb24oJGV2ZW50KVwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cImlucHV0Q29uZmlnLm5hbWUgPT09ICdkYXRlcGlja2VyJyA/ICdtbScgOiAnSEgnXCJcbiAgICAgICAgPjwvc3Bhbj5cbiAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJib3JkZXItcGlja2VyXCJcbiAgICAgICAgICAgICAgICBbaW5uZXJIVE1MXT1cImlucHV0Q29uZmlnLm5hbWUgPT09ICdkYXRlcGlja2VyJyA/ICcvJyA6ICc6J1wiXG4gICAgICAgICAgICA+PC9kaXY+XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICNzcGFuMlxuICAgICAgICAgICAgY2xhc3M9XCJtYWluXCJcbiAgICAgICAgICAgIFtuZ0NsYXNzXT1cIntcbiAgICAgICAgICAgICAgICAncmVzZXQtc2VsZWN0aW9uLWNvbG9yJzogIWNhSW5wdXRDb21wb25lbnQuaXNGb2N1c0lucHV0LFxuICAgICAgICAgICAgfVwiXG4gICAgICAgICAgICB0YWJpbmRleD1cIjFcIlxuICAgICAgICAgICAgKG1vdXNldXApPVwic2V0U2VsZWN0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgKGtleWRvd24pPVwiY2hhbmdlU2VsZWN0aW9uKCRldmVudClcIlxuICAgICAgICAgICAgW2lubmVySFRNTF09XCJpbnB1dENvbmZpZy5uYW1lID09PSAnZGF0ZXBpY2tlcicgPyAnZGQnIDogJ01NJ1wiXG4gICAgICAgID48L3NwYW4+XG4gICAgICAgIDxzcGFuPlxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzPVwiYm9yZGVyLXBpY2tlclwiXG4gICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJpbnB1dENvbmZpZy5uYW1lID09PSAnZGF0ZXBpY2tlcicgPyAnLycgOiAnICdcIlxuICAgICAgICAgICAgPjwvZGl2PlxuICAgICAgICA8L3NwYW4+XG4gICAgICAgIDxzcGFuXG4gICAgICAgICAgICAjc3BhbjNcbiAgICAgICAgICAgIGNsYXNzPVwibWFpblwiXG4gICAgICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgICAgICAgJ3Jlc2V0LXNlbGVjdGlvbi1jb2xvcic6ICFjYUlucHV0Q29tcG9uZW50LmlzRm9jdXNJbnB1dCxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgICAgdGFiaW5kZXg9XCIyXCJcbiAgICAgICAgICAgIChtb3VzZXVwKT1cInNldFNlbGVjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cImNoYW5nZVNlbGVjdGlvbigkZXZlbnQpXCJcbiAgICAgICAgICAgIFtpbm5lckhUTUxdPVwiaW5wdXRDb25maWcubmFtZSA9PT0gJ2RhdGVwaWNrZXInID8gJ3l5JyA6ICdBTSdcIlxuICAgICAgICA+PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxhcHAtY2EtaW5wdXRcbiAgICAgICAgW2lucHV0Q29uZmlnXT1cImlucHV0Q29uZmlnXCJcbiAgICAgICAgW2RhdGVUaW1lUG9wb3Zlcl09XCJkYXRlVGltZVBvcG92ZXJcIlxuICAgICAgICAoZm9jdXNJbnB1dEV2ZW50KT1cImhhbmRsZUZvY3VzSW5wdXQoJGV2ZW50KVwiXG4gICAgICAgIChoYW5kbGVUb2dnbGVEcm9wZG93bk9wdGlvbnMpPVwidG9nZ2xlRHJvcGRvd25PcHRpb25zKClcIlxuICAgICAgICAoY2xvc2VQb3BvdmVyKT1cImJsdXJPbkRhdGVUaW1lKClcIlxuICAgICAgICAoYmx1cklucHV0KT1cIm9uQmx1cklucHV0KCRldmVudClcIlxuICAgICAgICAoY2xlYXIpPVwiY2xlYXJJbnB1dCgkZXZlbnQpXCJcbiAgICAgICAgW2Zvcm1Db250cm9sXT1cImdldFN1cGVyQ29udHJvbCEgfCBmb3JtQ29udHJvbFwiXG4gICAgPjwvYXBwLWNhLWlucHV0PlxuPC9kaXY+XG48IS0tIFBvcG92ZXIgZm9yIERhdGVUaW1lIFBpY2tlcnMgLS0+XG48bmctdGVtcGxhdGUgI2RhdGVUaW1lUG9wb3ZlciBsZXQtZGF0YT1cImRhdGFcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZGF0ZXRpbWUtZHJvcGRvd24taG9sZGVyXCI+XG4gICAgICAgIDxjYS1jdXN0b20tZGF0ZXRpbWUtcGlja2Vyc1xuICAgICAgICAgICAgW2NhbGVuZGFyVHlwZV09XCJcbiAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5uYW1lID09PSAnZGF0ZXBpY2tlcicgfHxcbiAgICAgICAgICAgICAgICBpbnB1dENvbmZpZy5uYW1lID09PSAnZGF0ZXBpY2tlckJhbmtDYXJkJ1xuICAgICAgICAgICAgICAgICAgICA/ICdkYXRlJ1xuICAgICAgICAgICAgICAgICAgICA6ICd0aW1lJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIFtpbnB1dENvbmZpZ109XCJpbnB1dENvbmZpZ1wiXG4gICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ01NL0REL1lZJ1wiXG4gICAgICAgICAgICBbZGF0ZVRpbWVdPVwiZGF0ZVRpbWVJbnB1dERhdGVcIlxuICAgICAgICAgICAgKGNsb3NlUG9wb3Zlcik9XCJjbG9zZVBvcG92ZXIoKVwiXG4gICAgICAgID48L2NhLWN1c3RvbS1kYXRldGltZS1waWNrZXJzPlxuICAgIDwvZGl2PlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
|