@wizishop/angular-components 14.4.10 → 14.4.12

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.
@@ -74,6 +74,8 @@ $wac-border-CTA-select: #52aecd66!default;
74
74
 
75
75
  $wac-radio: #52aecd66!default;
76
76
 
77
+ $wac-form-control-touched-and-invalid-border: #e95656 !default;
78
+
77
79
  $wac-popin-btn-close: #F5F5F5;
78
80
 
79
81
  $wac-block-color: #23272b!default;
@@ -2026,6 +2028,14 @@ wac-block {
2026
2028
  }
2027
2029
  }
2028
2030
  }
2031
+ wac-calendar {
2032
+ &.ng-touched.ng-invalid {
2033
+ .wac-calendar__wrapper__select, .wac-calendar__wrapper__editInPlace, .wac-calendar__wrapper__select {
2034
+ border-color: $wac-form-control-touched-and-invalid-border;
2035
+ }
2036
+ }
2037
+ }
2038
+
2029
2039
  .wac-calendar {
2030
2040
  position: relative;
2031
2041
  margin: 0 0 20px;
@@ -2064,6 +2074,10 @@ wac-block {
2064
2074
  margin: 0 0 10px !important;
2065
2075
  color: $wac-color-text-grey !important;
2066
2076
  cursor: pointer;
2077
+
2078
+ &.bold {
2079
+ font-weight: 500;
2080
+ }
2067
2081
  }
2068
2082
  &__autoHide {
2069
2083
  max-width: 300px;
@@ -5880,6 +5894,82 @@ wac-optional-disable-container {
5880
5894
  }
5881
5895
  }
5882
5896
  }
5897
+ .wac-tab {
5898
+ &__wrapper {
5899
+ position: relative;
5900
+ @include flexbox();
5901
+ margin-bottom: 30px;
5902
+
5903
+ &__tab {
5904
+ position: relative;
5905
+ font-size: 14px;
5906
+ line-height: 25px;
5907
+ color: $wac-secondary-color;
5908
+
5909
+ &:hover {
5910
+ color: $wac-main-text;
5911
+ transition: color 0.3s ease-in-out;
5912
+ }
5913
+
5914
+ &:not(:last-child) {
5915
+ margin-right: 30px;
5916
+ }
5917
+
5918
+ &:after {
5919
+ position: absolute;
5920
+ width: 0;
5921
+ height: 2px;
5922
+ bottom: -5px;
5923
+ left: 0;
5924
+ content: '';
5925
+ background-color: $wac-input-active-color;
5926
+ transition: width 0.3s ease-in-out, color 0.3s ease-in-out;
5927
+ }
5928
+
5929
+ &--selected {
5930
+ color: $wac-main-text;
5931
+
5932
+ &:after {
5933
+ width: 100%;
5934
+ transition: width 0.3s ease-in-out, color 0.3s ease-in-out;
5935
+ }
5936
+ }
5937
+ }
5938
+ }
5939
+
5940
+ &--underline {
5941
+ .wac-tab__wrapper:before {
5942
+ position: absolute;
5943
+ width: 100%;
5944
+ height: 1px;
5945
+ bottom: -5px;
5946
+ left: 0;
5947
+ content: '';
5948
+ background-color: $wac-border-form;
5949
+ }
5950
+ }
5951
+
5952
+ &--button {
5953
+ .wac-tab__wrapper__tab {
5954
+ background-color: $wac-button-tab-background;
5955
+ padding: 12px 20px;
5956
+ font-size: rem(14);
5957
+ line-height: rem(16);
5958
+ white-space: nowrap;
5959
+ color: $second-color;
5960
+ margin: 0 rem(2) 0 0;
5961
+ border-radius: 3px;
5962
+ transition: .3s ease;
5963
+ &--selected, &:hover, &:focus {
5964
+ background-color: $wac-wizishop-blue;
5965
+ color: $white;
5966
+ }
5967
+ &:after {
5968
+ display: none;
5969
+ }
5970
+ }
5971
+ }
5972
+ }
5883
5973
  .wac-table {
5884
5974
  width: 100%;
5885
5975
 
@@ -6026,82 +6116,6 @@ wac-optional-disable-container {
6026
6116
  }
6027
6117
  }
6028
6118
  }
6029
- .wac-tab {
6030
- &__wrapper {
6031
- position: relative;
6032
- @include flexbox();
6033
- margin-bottom: 30px;
6034
-
6035
- &__tab {
6036
- position: relative;
6037
- font-size: 14px;
6038
- line-height: 25px;
6039
- color: $wac-secondary-color;
6040
-
6041
- &:hover {
6042
- color: $wac-main-text;
6043
- transition: color 0.3s ease-in-out;
6044
- }
6045
-
6046
- &:not(:last-child) {
6047
- margin-right: 30px;
6048
- }
6049
-
6050
- &:after {
6051
- position: absolute;
6052
- width: 0;
6053
- height: 2px;
6054
- bottom: -5px;
6055
- left: 0;
6056
- content: '';
6057
- background-color: $wac-input-active-color;
6058
- transition: width 0.3s ease-in-out, color 0.3s ease-in-out;
6059
- }
6060
-
6061
- &--selected {
6062
- color: $wac-main-text;
6063
-
6064
- &:after {
6065
- width: 100%;
6066
- transition: width 0.3s ease-in-out, color 0.3s ease-in-out;
6067
- }
6068
- }
6069
- }
6070
- }
6071
-
6072
- &--underline {
6073
- .wac-tab__wrapper:before {
6074
- position: absolute;
6075
- width: 100%;
6076
- height: 1px;
6077
- bottom: -5px;
6078
- left: 0;
6079
- content: '';
6080
- background-color: $wac-border-form;
6081
- }
6082
- }
6083
-
6084
- &--button {
6085
- .wac-tab__wrapper__tab {
6086
- background-color: $wac-button-tab-background;
6087
- padding: 12px 20px;
6088
- font-size: rem(14);
6089
- line-height: rem(16);
6090
- white-space: nowrap;
6091
- color: $second-color;
6092
- margin: 0 rem(2) 0 0;
6093
- border-radius: 3px;
6094
- transition: .3s ease;
6095
- &--selected, &:hover, &:focus {
6096
- background-color: $wac-wizishop-blue;
6097
- color: $white;
6098
- }
6099
- &:after {
6100
- display: none;
6101
- }
6102
- }
6103
- }
6104
- }
6105
6119
  .wac-tag {
6106
6120
  display: flex;
6107
6121
  align-items: center;
@@ -7,7 +7,7 @@ import * as i1 from "@angular/common";
7
7
  import * as i2 from "../../directives/auto-hide/auto-hide.directive";
8
8
  import * as i3 from "@angular/forms";
9
9
  export class ButtonComponent {
10
- constructor(type = 'submit', formGroup) {
10
+ constructor(type, formGroup) {
11
11
  this.type = type;
12
12
  this.formGroup = formGroup;
13
13
  // todo add button type (ex: for submit and check if it works with template driven forms)
@@ -187,4 +187,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImpor
187
187
  type: ViewChild,
188
188
  args: ['calculWidthDelete']
189
189
  }] } });
190
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hKLE9BQU8sRUFBYSxrQkFBa0IsRUFBVSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQU0zQyxNQUFNLE9BQU8sZUFBZTtJQTZHMUIsWUFDNkIsT0FBZSxRQUFRLEVBQ0YsU0FBNkI7UUFEbEQsU0FBSSxHQUFKLElBQUksQ0FBbUI7UUFDRixjQUFTLEdBQVQsU0FBUyxDQUFvQjtRQTlHL0UseUZBQXlGO1FBRXpGLGlCQUFZLEdBQUcsU0FBUyxDQUFDLENBQUMscUNBQXFDO1FBRy9ELFVBQUssR0FBRyxFQUFFLENBQUM7UUFHWCxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBTVYsY0FBUyxHQUFHLElBQUksQ0FBQztRQUVqQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBR2xCLDhCQUF5QixHQUFnQyxRQUFRLENBQUM7UUFHbEUsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFHbEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUdsQixhQUFRLEdBQUcsS0FBSyxD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MkJBQUMsa0JBQWtCOzRDQTVHeEMsWUFBWTtzQkFEWCxLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFHTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4seUJBQXlCO3NCQUR4QixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLGFBQWE7c0JBRFosS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4saUJBQWlCO3NCQURoQixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLHFCQUFxQjtzQkFEcEIsS0FBSztnQkFJVyxLQUFLO3NCQUFyQixNQUFNO2dCQUVNLFNBQVM7c0JBQXJCLEtBQUs7Z0JBTUksZUFBZTtzQkFBeEIsTUFBTTtnQkFzQlAsV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWE7Z0JBSXhCLGlCQUFpQjtzQkFEaEIsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIEF0dHJpYnV0ZSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUdyb3VwRGlyZWN0aXZlLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3YWMtYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgLy8gdG9kbyBhZGQgYnV0dG9uIHR5cGUgKGV4OiBmb3Igc3VibWl0IGFuZCBjaGVjayBpZiBpdCB3b3JrcyB3aXRoIHRlbXBsYXRlIGRyaXZlbiBmb3JtcylcbiAgQElucHV0KClcbiAgZXh0cmFDbGFzc2VzID0gJ2lzLWluZm8nOyAvLyB0b2RvIG1ha2UgYSBsaXN0IG9mIGV4aXN0aW5nIGNsYXNzXG5cbiAgQElucHV0KClcbiAgbGFiZWwgPSAnJztcblxuICBASW5wdXQoKVxuICBpY29uID0gJyc7XG5cbiAgQElucHV0KClcbiAgaWNvbk5leHQ6IHN0cmluZztcblxuICBASW5wdXQoKVxuICB0ZXh0Y29sb3IgPSBudWxsO1xuICBASW5wdXQoKVxuICB3aWR0aEF1dG8gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBjb250ZW50SG9yaXpvbnRhbFBvc2l0aW9uOiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcgPSAnY2VudGVyJztcblxuICBASW5wdXQoKVxuICBpY29uRm9udFNpemUgPSAxMjtcblxuICBASW5wdXQoKVxuICBoYXNMb2FkZXIgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHdoaXRlU3BhY2VOb3dyYXAgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBvcGFjaXR5ID0gZmFsc2U7XG4gIC8vIFRPRE8gTUFLRSBBTk5JTUFUSU9OIEFWQUlMQUJMRSBGT1IgTU9CSUxFIGFzIENPTkZJUk0gREVMRVRFIERPIChiZWNhdXNlLCBpdHMgZG9lYW50IHNob3cgdGhlIHRleHQgYW5kIHRyaWdnZXIgY2xpY2spXG4gIEBJbnB1dCgpXG4gIGFuaW1hdGlvbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGFuaW1hdGlvblJpZ2h0ID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgYW5pbWF0aW9uVGV4dCA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIGNvbmZpcm1EZWxldGUgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBjb25maXJtRGVsZXRlVGV4dCA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIGNvaW46IG51bWJlciB8IHN0cmluZztcblxuICBASW5wdXQoKVxuICB0b29sdGlwOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgdG9vbHRpcFdpZHRoOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgbm9QYWRkaW5nID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgdG9vbHRpcFBvc2l0aW9uOiAndG9wLWNlbnRlcicgfCAndG9wLXJpZ2h0JyB8ICd0b3AtbGVmdCcgfCAnYm90dG9tLWNlbnRlcicgfCAnYm90dG9tLXJpZ2h0JyB8ICdib3R0b20tbGVmdCcgfCAnbGVmdCcgfCAncmlnaHQnID0gJ3RvcC1jZW50ZXInO1xuXG4gIEBJbnB1dCgpXG4gIHRvb2x0aXBPbmVsaW5lID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgY29uZmlybURlbGV0ZVBvc2l0aW9uID0gJ3JpZ2h0JztcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgQE91dHB1dCgpIHB1YmxpYyBjbGljazogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgpIHNldCBpc0xvYWRpbmcoaXNMb2FkaW5nIDogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzTG9hZGluZyA9IGlzTG9hZGluZztcbiAgICB0aGlzLmlzTG9hZGluZ0NoYW5nZS5uZXh0KGlzTG9hZGluZyk7XG4gICAgdGhpcy50b2dnbGVMb2FkaW5nKCk7XG4gIH1cblxuICBAT3V0cHV0KCkgaXNMb2FkaW5nQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGdldCBpc0xvYWRpbmcoKSA6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0xvYWRpbmc7XG4gIH1cblxuICBwcml2YXRlIF9pc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuXG4gIGludGVydmFsID0gbnVsbDtcblxuICB3YWl0Rm9yQ29uZmlybURlbGV0ZSA9IGZhbHNlO1xuXG4gIGJ1dHRvbk1heFdpZHRoID0gJzBweCc7XG4gIGJ1dHRvbldpZHRoID0gJzBweCc7XG5cbiAgYnV0dG9uTWF4V2lkdGhEZWxldGUgPSAnMHB4JztcbiAgYnV0dG9uV2lkdGhEZWxldGUgPSAnMHB4JztcblxuICBjdXJyZW50TG9hZGluZyA9IDA7XG5cbiAgQFZpZXdDaGlsZCgnY2FsY3VsV2lkdGgnKVxuICBjYWxjdWxXaWR0aDogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdjYWxjdWxXaWR0aERlbGV0ZScpXG4gIGNhbGN1bFdpZHRoRGVsZXRlOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBBdHRyaWJ1dGUoJ3R5cGUnKSBwcml2YXRlIHR5cGU6IHN0cmluZyA9ICdzdWJtaXQnLFxuICAgIEBPcHRpb25hbCgpIEBJbmplY3QoRm9ybUdyb3VwRGlyZWN0aXZlKSBwcml2YXRlIGZvcm1Hcm91cDogRm9ybUdyb3VwRGlyZWN0aXZlXG4gICAgKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICBpZiAodGhpcy5jb25maXJtRGVsZXRlKSB7XG4gICAgICB0aGlzLndhaXRGb3JDb25maXJtRGVsZXRlID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICB0b2dnbGVMb2FkaW5nKCkge1xuICAgIHRoaXMuY3VycmVudExvYWRpbmcgPSB0aGlzLmlzTG9hZGluZyA/IDEwIDogMTAwO1xuXG4gICAgaW50ZXJ2YWwoMjAwKS5waXBlKHRha2VXaGlsZSggdGltZT0+IHRoaXMuaXNMb2FkaW5nKSkuc3Vic2NyaWJlKFxuICAgICAgKCkgPT4ge1xuICAgICAgICBpZiAodGhpcy5jdXJyZW50TG9hZGluZyA8IDg1KSB7XG4gICAgICAgICAgdGhpcy5jdXJyZW50TG9hZGluZyArPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxNSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgYWRkTWF4V2lkdGgoKSB7XG4gICAgdGhpcy5idXR0b25NYXhXaWR0aCA9IHRoaXMuYnV0dG9uV2lkdGggKyAncHgnO1xuICB9XG5cbiAgcmVzZXRNYXhXaWR0aCgpIHtcbiAgICB0aGlzLmJ1dHRvbk1heFdpZHRoID0gJzBweCc7XG4gIH1cblxuICBhZGRNYXhXaWR0aERlbGV0ZSgpIHtcbiAgICB0aGlzLmJ1dHRvbk1heFdpZHRoRGVsZXRlID0gdGhpcy5idXR0b25XaWR0aERlbGV0ZSArICdweCc7XG4gIH1cblxuICByZXNldE1heFdpZHRoRGVsZXRlKCkge1xuICAgIHRoaXMuYnV0dG9uTWF4V2lkdGhEZWxldGUgPSAnMHB4JztcbiAgICB0aGlzLndhaXRGb3JDb25maXJtRGVsZXRlID0gdHJ1ZTtcbiAgfVxuXG4gIG9uQnV0dG9uQ2xpY2soZXZlbnQpe1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLnR5cGUgPT09ICdzdWJtaXQnICYmIHRoaXMuZm9ybUdyb3VwKSB7IC8vIE1heWJlIHRoZXJlIGlzIGEgYmV0dGVyIHdheSB0byBoYW5kbGUgc3VibWl0XG4gICAgICB0aGlzLmZvcm1Hcm91cC5vblN1Ym1pdCh0aGlzLmZvcm1Hcm91cC52YWx1ZSk7XG4gICAgfVxuICAgIGlmICh0aGlzLmhhc0xvYWRlcikge1xuICAgICAgdGhpcy5pc0xvYWRpbmcgPSBmYWxzZTtcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4geyAvLyB0cmljayB0byByZXNldCB0aGUgYW5pbWF0aW9uIGxvYWRpbmdcbiAgICAgICAgdGhpcy5pc0xvYWRpbmcgPSB0cnVlO1xuICAgICAgfSwgMCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLndhaXRGb3JDb25maXJtRGVsZXRlKSB7XG4gICAgICB0aGlzLmNsaWNrLmVtaXQoZXZlbnQpO1xuICAgICAgaWYgKHRoaXMuY29uZmlybURlbGV0ZSkge1xuICAgICAgICB0aGlzLnJlc2V0TWF4V2lkdGhEZWxldGUoKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53YWl0Rm9yQ29uZmlybURlbGV0ZSA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLmFuaW1hdGlvbikge1xuICAgICAgICB0aGlzLmJ1dHRvbldpZHRoID0gdGhpcy5jYWxjdWxXaWR0aC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgfVxuICAgICAgaWYgKHRoaXMuY29uZmlybURlbGV0ZSkge1xuICAgICAgICB0aGlzLmJ1dHRvbldpZHRoRGVsZXRlID0gdGhpcy5jYWxjdWxXaWR0aERlbGV0ZS5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgfVxuICAgIH0sIDEwMDApO1xuICB9XG59XG4iLCI8YVxuICBbY2xhc3NdPVwiJ3dhYy1idXR0b24gJyArIGV4dHJhQ2xhc3Nlc1wiXG4gIChjbGljayk9XCJjb25maXJtRGVsZXRlICYmIHdhaXRGb3JDb25maXJtRGVsZXRlID8gYWRkTWF4V2lkdGhEZWxldGUoKSA6ICcnO29uQnV0dG9uQ2xpY2soJGV2ZW50KTtcIlxuICAobW91c2VsZWF2ZSk9XCJhbmltYXRpb24gPyByZXNldE1heFdpZHRoKCkgOiAnJztcIlxuICAobW91c2VlbnRlcik9XCJhbmltYXRpb24gPyBhZGRNYXhXaWR0aCgpIDogJyc7XCJcbiAgd3pBdXRvSGlkZSAoY2xpY2tPdXRzaWRlKT1cImNvbmZpcm1EZWxldGUgJiYgIXdhaXRGb3JDb25maXJtRGVsZXRlID8gcmVzZXRNYXhXaWR0aERlbGV0ZSgpIDogJydcIlxuICBbbmdDbGFzc109XCJbXG4gICAgbGFiZWwgPT09ICcnID8gJ2Fsb25lJyA6ICcnLFxuICAgIGNvaW4gPyAnaGFzLWNvaW4gd2lkdGgtYXV0bycgOiAnJyxcbiAgICBhbmltYXRpb25SaWdodCA/ICdhbmltYXRpb24tcmlnaHQnIDogJycsXG4gICAgYW5pbWF0aW9uID8gJ2FuaW1hdGlvblRleHQnIDogJycsXG4gICAgaXNMb2FkaW5nID8gJ2lzLWxvYWRpbmcnIDogJycsXG4gICAgb3BhY2l0eSA/ICdvcGFjaXR5JyA6ICcnLFxuICAgIGRpc2FibGVkID8gJ2Rpc2FibGVkJyA6ICcnLFxuICAgIHdpZHRoQXV0byA/ICd3aWR0aC1hdXRvJyA6ICcnLFxuICAgIG5vUGFkZGluZyA/ICduby1wYWRkaW5nJyA6ICcnLFxuICAgIHdoaXRlU3BhY2VOb3dyYXAgPyAnd2hpdGUtc3BhY2Utbm8td3JhcCcgOiAnJyxcbiAgICAhd2FpdEZvckNvbmZpcm1EZWxldGUgJiYgY29uZmlybURlbGV0ZSA/ICdzdGVwLWRlbGV0ZScgOiAnJyxcbiAgICBjb25maXJtRGVsZXRlID8gJ2RlbGV0ZVBvc2l0aW9uLScgKyBjb25maXJtRGVsZXRlUG9zaXRpb24gOiAnJ1xuICAgIF1cIlxuICAgIFtuZ1N0eWxlXT1cIntcbiAgICAgICd0ZXh0LWFsaWduJzogY29udGVudEhvcml6b250YWxQb3NpdGlvblxuICAgIH1cIlxuPlxuICA8c3BhbiBjbGFzcz1cIndhYy1idXR0b25fX3dyYXBwZXJcIiBbc3R5bGUuY29sb3JdPVwidGV4dGNvbG9yID8gdGV4dGNvbG9yIDogJydcIj5cbiAgICA8aSAqbmdJZj1cImljb25cIiBbbmdDbGFzc109XCJpY29uXCIgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJpY29uRm9udFNpemVcIj48L2k+XG4gICAge3sgbGFiZWwgfX1cbiAgICA8aSAqbmdJZj1cImljb25OZXh0XCIgW25nQ2xhc3NdPVwiaWNvbk5leHRcIiBbc3R5bGUuZm9udC1zaXplLnB4XT1cImljb25Gb250U2l6ZVwiPjwvaT5cbiAgPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cIndhYy1idXR0b25fX2FuaW1hdGlvblwiIFtzdHlsZS5tYXhXaWR0aF09XCJidXR0b25NYXhXaWR0aFwiIFtzdHlsZS53aWR0aF09XCJidXR0b25XaWR0aCArICdweCdcIj5cbiAgICA8c3BhbiAjY2FsY3VsV2lkdGggY2xhc3M9XCJ3YWMtYnV0dG9uX19hbmltYXRpb25fX3RleHRcIiBbaW5uZXJIVE1MXT1cImFuaW1hdGlvblRleHRcIj48L3NwYW4+XG4gIDwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJ3YWMtYnV0dG9uX19jb25maXJtRGVsZXRlXCIgW3N0eWxlLm1heFdpZHRoXT1cImJ1dHRvbk1heFdpZHRoRGVsZXRlXCIgW3N0eWxlLndpZHRoXT1cImJ1dHRvbldpZHRoRGVsZXRlICsgJ3B4J1wiPlxuICAgIDxzcGFuICNjYWxjdWxXaWR0aERlbGV0ZSBjbGFzcz1cIndhYy1idXR0b25fX2NvbmZpcm1EZWxldGVfX3RleHRcIiBbaW5uZXJIVE1MXT1cImNvbmZpcm1EZWxldGVUZXh0XCI+PC9zcGFuPlxuICA8L3NwYW4+XG4gIDxzcGFuICpuZ0lmPVwiY29pblwiIGNsYXNzPVwid2FjLWJ1dHRvbl9fY29pblwiPjxpIGNsYXNzPVwiZmEtc29saWQgZmEtY29pbi1mcm9udFwiPjwvaT48c3BhbiBbaW5uZXJIVE1MXT1cImNvaW5cIj48L3NwYW4+PC9zcGFuPlxuICA8c3BhblxuICAgIGNsYXNzPVwid2FjLWJ1dHRvbl9fbG9hZGVyXCJcbiAgICBbbmdDbGFzc109XCJleHRyYUNsYXNzZXMuaW5jbHVkZXMoJ2lzLW91dGxpbmVkJykgPyAnb3V0bGluZWQnIDogJydcIlxuICAgICpuZ0lmPVwiaXNMb2FkaW5nXCJcbiAgICBbc3R5bGUud2lkdGhdPVwiY3VycmVudExvYWRpbmcgKyAnJSdcIlxuICA+XG4gICAgPHNwYW4gKm5nSWY9XCJleHRyYUNsYXNzZXMuaW5jbHVkZXMoJ2lzLW91dGxpbmVkJylcIj5cbiAgICAgIDxpICpuZ0lmPVwiaWNvbiAhPT0gJydcIiBbbmdDbGFzc109XCJpY29uXCIgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJpY29uRm9udFNpemVcIj48L2k+XG4gICAgICB7eyBsYWJlbCB9fVxuICAgICAgPGkgKm5nSWY9XCJpY29uTmV4dCAhPT0gJydcIiBbbmdDbGFzc109XCJpY29uTmV4dFwiIFtzdHlsZS5mb250LXNpemUucHhdPVwiaWNvbkZvbnRTaXplXCI+PC9pPlxuICAgIDwvc3Bhbj5cbiAgPC9zcGFuPlxuICA8c3BhbiBjbGFzcz1cIndhYy1idXR0b25fX3Rvb2x0aXBzIHt7IHRvb2x0aXBQb3NpdGlvbiB9fVwiIFtuZ0NsYXNzXT1cInsnb25lbGluZSc6IHRvb2x0aXBPbmVsaW5lfVwiIFtzdHlsZS5taW5XaWR0aF09XCJ0b29sdGlwV2lkdGhcIiAqbmdJZj1cInRvb2x0aXBcIj5cbiAgICB7eyB0b29sdGlwIH19XG4gIDwvc3Bhbj5cbjwvYT5cbiJdfQ==
190
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2FuZ3VsYXItY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2J1dHRvbi9idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFnQixTQUFTLEVBQUUsU0FBUyxFQUFjLFlBQVksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFVLFFBQVEsRUFBRSxNQUFNLEVBQUUsU0FBUyxFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ2hKLE9BQU8sRUFBYSxrQkFBa0IsRUFBVSxNQUFNLGdCQUFnQixDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDaEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7OztBQU0zQyxNQUFNLE9BQU8sZUFBZTtJQTZHMUIsWUFDNkIsSUFBWSxFQUNTLFNBQTZCO1FBRGxELFNBQUksR0FBSixJQUFJLENBQVE7UUFDUyxjQUFTLEdBQVQsU0FBUyxDQUFvQjtRQTlHL0UseUZBQXlGO1FBRXpGLGlCQUFZLEdBQUcsU0FBUyxDQUFDLENBQUMscUNBQXFDO1FBRy9ELFVBQUssR0FBRyxFQUFFLENBQUM7UUFHWCxTQUFJLEdBQUcsRUFBRSxDQUFDO1FBTVYsY0FBUyxHQUFHLElBQUksQ0FBQztRQUVqQixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBR2xCLDhCQUF5QixHQUFnQyxRQUFRLENBQUM7UUFHbEUsaUJBQVksR0FBRyxFQUFFLENBQUM7UUFHbEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQUdsQixhQUFRLEdBQUcsS0FBSyxDQUFDO1FB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a0JBQWtCOzRDQTVHeEMsWUFBWTtzQkFEWCxLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFJTixJQUFJO3NCQURILEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFHTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4seUJBQXlCO3NCQUR4QixLQUFLO2dCQUlOLFlBQVk7c0JBRFgsS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sUUFBUTtzQkFEUCxLQUFLO2dCQUlOLGdCQUFnQjtzQkFEZixLQUFLO2dCQUlOLE9BQU87c0JBRE4sS0FBSztnQkFJTixTQUFTO3NCQURSLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLGFBQWE7c0JBRFosS0FBSztnQkFJTixhQUFhO3NCQURaLEtBQUs7Z0JBSU4saUJBQWlCO3NCQURoQixLQUFLO2dCQUlOLElBQUk7c0JBREgsS0FBSztnQkFJTixPQUFPO3NCQUROLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxLQUFLO2dCQUlOLFNBQVM7c0JBRFIsS0FBSztnQkFJTixlQUFlO3NCQURkLEtBQUs7Z0JBSU4sY0FBYztzQkFEYixLQUFLO2dCQUlOLHFCQUFxQjtzQkFEcEIsS0FBSztnQkFJVyxLQUFLO3NCQUFyQixNQUFNO2dCQUVNLFNBQVM7c0JBQXJCLEtBQUs7Z0JBTUksZUFBZTtzQkFBeEIsTUFBTTtnQkFzQlAsV0FBVztzQkFEVixTQUFTO3VCQUFDLGFBQWE7Z0JBSXhCLGlCQUFpQjtzQkFEaEIsU0FBUzt1QkFBQyxtQkFBbUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0FmdGVyVmlld0luaXQsIEF0dHJpYnV0ZSwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEluamVjdCwgSW5wdXQsIE9uSW5pdCwgT3B0aW9uYWwsIE91dHB1dCwgVmlld0NoaWxkfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUdyb3VwRGlyZWN0aXZlLCBOZ0Zvcm0gfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBpbnRlcnZhbCB9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHsgdGFrZVdoaWxlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd3YWMtYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2J1dHRvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgQnV0dG9uQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgLy8gdG9kbyBhZGQgYnV0dG9uIHR5cGUgKGV4OiBmb3Igc3VibWl0IGFuZCBjaGVjayBpZiBpdCB3b3JrcyB3aXRoIHRlbXBsYXRlIGRyaXZlbiBmb3JtcylcbiAgQElucHV0KClcbiAgZXh0cmFDbGFzc2VzID0gJ2lzLWluZm8nOyAvLyB0b2RvIG1ha2UgYSBsaXN0IG9mIGV4aXN0aW5nIGNsYXNzXG5cbiAgQElucHV0KClcbiAgbGFiZWwgPSAnJztcblxuICBASW5wdXQoKVxuICBpY29uID0gJyc7XG5cbiAgQElucHV0KClcbiAgaWNvbk5leHQ6IHN0cmluZztcblxuICBASW5wdXQoKVxuICB0ZXh0Y29sb3IgPSBudWxsO1xuICBASW5wdXQoKVxuICB3aWR0aEF1dG8gPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBjb250ZW50SG9yaXpvbnRhbFBvc2l0aW9uOiAnbGVmdCcgfCAnY2VudGVyJyB8ICdyaWdodCcgPSAnY2VudGVyJztcblxuICBASW5wdXQoKVxuICBpY29uRm9udFNpemUgPSAxMjtcblxuICBASW5wdXQoKVxuICBoYXNMb2FkZXIgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIHdoaXRlU3BhY2VOb3dyYXAgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBvcGFjaXR5ID0gZmFsc2U7XG4gIC8vIFRPRE8gTUFLRSBBTk5JTUFUSU9OIEFWQUlMQUJMRSBGT1IgTU9CSUxFIGFzIENPTkZJUk0gREVMRVRFIERPIChiZWNhdXNlLCBpdHMgZG9lYW50IHNob3cgdGhlIHRleHQgYW5kIHRyaWdnZXIgY2xpY2spXG4gIEBJbnB1dCgpXG4gIGFuaW1hdGlvbiA9IGZhbHNlO1xuXG4gIEBJbnB1dCgpXG4gIGFuaW1hdGlvblJpZ2h0ID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgYW5pbWF0aW9uVGV4dCA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIGNvbmZpcm1EZWxldGUgPSBmYWxzZTtcblxuICBASW5wdXQoKVxuICBjb25maXJtRGVsZXRlVGV4dCA9ICcnO1xuXG4gIEBJbnB1dCgpXG4gIGNvaW46IG51bWJlciB8IHN0cmluZztcblxuICBASW5wdXQoKVxuICB0b29sdGlwOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgdG9vbHRpcFdpZHRoOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgbm9QYWRkaW5nID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgdG9vbHRpcFBvc2l0aW9uOiAndG9wLWNlbnRlcicgfCAndG9wLXJpZ2h0JyB8ICd0b3AtbGVmdCcgfCAnYm90dG9tLWNlbnRlcicgfCAnYm90dG9tLXJpZ2h0JyB8ICdib3R0b20tbGVmdCcgfCAnbGVmdCcgfCAncmlnaHQnID0gJ3RvcC1jZW50ZXInO1xuXG4gIEBJbnB1dCgpXG4gIHRvb2x0aXBPbmVsaW5lID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgY29uZmlybURlbGV0ZVBvc2l0aW9uID0gJ3JpZ2h0JztcblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQGFuZ3VsYXItZXNsaW50L25vLW91dHB1dC1uYXRpdmVcbiAgQE91dHB1dCgpIHB1YmxpYyBjbGljazogRXZlbnRFbWl0dGVyPE1vdXNlRXZlbnQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgpIHNldCBpc0xvYWRpbmcoaXNMb2FkaW5nIDogYm9vbGVhbikge1xuICAgIHRoaXMuX2lzTG9hZGluZyA9IGlzTG9hZGluZztcbiAgICB0aGlzLmlzTG9hZGluZ0NoYW5nZS5uZXh0KGlzTG9hZGluZyk7XG4gICAgdGhpcy50b2dnbGVMb2FkaW5nKCk7XG4gIH1cblxuICBAT3V0cHV0KCkgaXNMb2FkaW5nQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxib29sZWFuPigpO1xuXG4gIGdldCBpc0xvYWRpbmcoKSA6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9pc0xvYWRpbmc7XG4gIH1cblxuICBwcml2YXRlIF9pc0xvYWRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuXG4gIGludGVydmFsID0gbnVsbDtcblxuICB3YWl0Rm9yQ29uZmlybURlbGV0ZSA9IGZhbHNlO1xuXG4gIGJ1dHRvbk1heFdpZHRoID0gJzBweCc7XG4gIGJ1dHRvbldpZHRoID0gJzBweCc7XG5cbiAgYnV0dG9uTWF4V2lkdGhEZWxldGUgPSAnMHB4JztcbiAgYnV0dG9uV2lkdGhEZWxldGUgPSAnMHB4JztcblxuICBjdXJyZW50TG9hZGluZyA9IDA7XG5cbiAgQFZpZXdDaGlsZCgnY2FsY3VsV2lkdGgnKVxuICBjYWxjdWxXaWR0aDogRWxlbWVudFJlZjtcblxuICBAVmlld0NoaWxkKCdjYWxjdWxXaWR0aERlbGV0ZScpXG4gIGNhbGN1bFdpZHRoRGVsZXRlOiBFbGVtZW50UmVmO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIEBBdHRyaWJ1dGUoJ3R5cGUnKSBwcml2YXRlIHR5cGU6IHN0cmluZyxcbiAgICBAT3B0aW9uYWwoKSBASW5qZWN0KEZvcm1Hcm91cERpcmVjdGl2ZSkgcHJpdmF0ZSBmb3JtR3JvdXA6IEZvcm1Hcm91cERpcmVjdGl2ZVxuICAgICkge1xuICB9XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgaWYgKHRoaXMuY29uZmlybURlbGV0ZSkge1xuICAgICAgdGhpcy53YWl0Rm9yQ29uZmlybURlbGV0ZSA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgdG9nZ2xlTG9hZGluZygpIHtcbiAgICB0aGlzLmN1cnJlbnRMb2FkaW5nID0gdGhpcy5pc0xvYWRpbmcgPyAxMCA6IDEwMDtcblxuICAgIGludGVydmFsKDIwMCkucGlwZSh0YWtlV2hpbGUoIHRpbWU9PiB0aGlzLmlzTG9hZGluZykpLnN1YnNjcmliZShcbiAgICAgICgpID0+IHtcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudExvYWRpbmcgPCA4NSkge1xuICAgICAgICAgIHRoaXMuY3VycmVudExvYWRpbmcgKz0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgfVxuXG4gIGFkZE1heFdpZHRoKCkge1xuICAgIHRoaXMuYnV0dG9uTWF4V2lkdGggPSB0aGlzLmJ1dHRvbldpZHRoICsgJ3B4JztcbiAgfVxuXG4gIHJlc2V0TWF4V2lkdGgoKSB7XG4gICAgdGhpcy5idXR0b25NYXhXaWR0aCA9ICcwcHgnO1xuICB9XG5cbiAgYWRkTWF4V2lkdGhEZWxldGUoKSB7XG4gICAgdGhpcy5idXR0b25NYXhXaWR0aERlbGV0ZSA9IHRoaXMuYnV0dG9uV2lkdGhEZWxldGUgKyAncHgnO1xuICB9XG5cbiAgcmVzZXRNYXhXaWR0aERlbGV0ZSgpIHtcbiAgICB0aGlzLmJ1dHRvbk1heFdpZHRoRGVsZXRlID0gJzBweCc7XG4gICAgdGhpcy53YWl0Rm9yQ29uZmlybURlbGV0ZSA9IHRydWU7XG4gIH1cblxuICBvbkJ1dHRvbkNsaWNrKGV2ZW50KXtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy50eXBlID09PSAnc3VibWl0JyAmJiB0aGlzLmZvcm1Hcm91cCkgeyAvLyBNYXliZSB0aGVyZSBpcyBhIGJldHRlciB3YXkgdG8gaGFuZGxlIHN1Ym1pdFxuICAgICAgdGhpcy5mb3JtR3JvdXAub25TdWJtaXQodGhpcy5mb3JtR3JvdXAudmFsdWUpO1xuICAgIH1cbiAgICBpZiAodGhpcy5oYXNMb2FkZXIpIHtcbiAgICAgIHRoaXMuaXNMb2FkaW5nID0gZmFsc2U7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHsgLy8gdHJpY2sgdG8gcmVzZXQgdGhlIGFuaW1hdGlvbiBsb2FkaW5nXG4gICAgICAgIHRoaXMuaXNMb2FkaW5nID0gdHJ1ZTtcbiAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIGlmICghdGhpcy53YWl0Rm9yQ29uZmlybURlbGV0ZSkge1xuICAgICAgdGhpcy5jbGljay5lbWl0KGV2ZW50KTtcbiAgICAgIGlmICh0aGlzLmNvbmZpcm1EZWxldGUpIHtcbiAgICAgICAgdGhpcy5yZXNldE1heFdpZHRoRGVsZXRlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMud2FpdEZvckNvbmZpcm1EZWxldGUgPSBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKSB7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBpZiAodGhpcy5hbmltYXRpb24pIHtcbiAgICAgICAgdGhpcy5idXR0b25XaWR0aCA9IHRoaXMuY2FsY3VsV2lkdGgubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgIH1cbiAgICAgIGlmICh0aGlzLmNvbmZpcm1EZWxldGUpIHtcbiAgICAgICAgdGhpcy5idXR0b25XaWR0aERlbGV0ZSA9IHRoaXMuY2FsY3VsV2lkdGhEZWxldGUubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgIH1cbiAgICB9LCAxMDAwKTtcbiAgfVxufVxuIiwiPGFcbiAgW2NsYXNzXT1cIid3YWMtYnV0dG9uICcgKyBleHRyYUNsYXNzZXNcIlxuICAoY2xpY2spPVwiY29uZmlybURlbGV0ZSAmJiB3YWl0Rm9yQ29uZmlybURlbGV0ZSA/IGFkZE1heFdpZHRoRGVsZXRlKCkgOiAnJztvbkJ1dHRvbkNsaWNrKCRldmVudCk7XCJcbiAgKG1vdXNlbGVhdmUpPVwiYW5pbWF0aW9uID8gcmVzZXRNYXhXaWR0aCgpIDogJyc7XCJcbiAgKG1vdXNlZW50ZXIpPVwiYW5pbWF0aW9uID8gYWRkTWF4V2lkdGgoKSA6ICcnO1wiXG4gIHd6QXV0b0hpZGUgKGNsaWNrT3V0c2lkZSk9XCJjb25maXJtRGVsZXRlICYmICF3YWl0Rm9yQ29uZmlybURlbGV0ZSA/IHJlc2V0TWF4V2lkdGhEZWxldGUoKSA6ICcnXCJcbiAgW25nQ2xhc3NdPVwiW1xuICAgIGxhYmVsID09PSAnJyA/ICdhbG9uZScgOiAnJyxcbiAgICBjb2luID8gJ2hhcy1jb2luIHdpZHRoLWF1dG8nIDogJycsXG4gICAgYW5pbWF0aW9uUmlnaHQgPyAnYW5pbWF0aW9uLXJpZ2h0JyA6ICcnLFxuICAgIGFuaW1hdGlvbiA/ICdhbmltYXRpb25UZXh0JyA6ICcnLFxuICAgIGlzTG9hZGluZyA/ICdpcy1sb2FkaW5nJyA6ICcnLFxuICAgIG9wYWNpdHkgPyAnb3BhY2l0eScgOiAnJyxcbiAgICBkaXNhYmxlZCA/ICdkaXNhYmxlZCcgOiAnJyxcbiAgICB3aWR0aEF1dG8gPyAnd2lkdGgtYXV0bycgOiAnJyxcbiAgICBub1BhZGRpbmcgPyAnbm8tcGFkZGluZycgOiAnJyxcbiAgICB3aGl0ZVNwYWNlTm93cmFwID8gJ3doaXRlLXNwYWNlLW5vLXdyYXAnIDogJycsXG4gICAgIXdhaXRGb3JDb25maXJtRGVsZXRlICYmIGNvbmZpcm1EZWxldGUgPyAnc3RlcC1kZWxldGUnIDogJycsXG4gICAgY29uZmlybURlbGV0ZSA/ICdkZWxldGVQb3NpdGlvbi0nICsgY29uZmlybURlbGV0ZVBvc2l0aW9uIDogJydcbiAgICBdXCJcbiAgICBbbmdTdHlsZV09XCJ7XG4gICAgICAndGV4dC1hbGlnbic6IGNvbnRlbnRIb3Jpem9udGFsUG9zaXRpb25cbiAgICB9XCJcbj5cbiAgPHNwYW4gY2xhc3M9XCJ3YWMtYnV0dG9uX193cmFwcGVyXCIgW3N0eWxlLmNvbG9yXT1cInRleHRjb2xvciA/IHRleHRjb2xvciA6ICcnXCI+XG4gICAgPGkgKm5nSWY9XCJpY29uXCIgW25nQ2xhc3NdPVwiaWNvblwiIFtzdHlsZS5mb250LXNpemUucHhdPVwiaWNvbkZvbnRTaXplXCI+PC9pPlxuICAgIHt7IGxhYmVsIH19XG4gICAgPGkgKm5nSWY9XCJpY29uTmV4dFwiIFtuZ0NsYXNzXT1cImljb25OZXh0XCIgW3N0eWxlLmZvbnQtc2l6ZS5weF09XCJpY29uRm9udFNpemVcIj48L2k+XG4gIDwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJ3YWMtYnV0dG9uX19hbmltYXRpb25cIiBbc3R5bGUubWF4V2lkdGhdPVwiYnV0dG9uTWF4V2lkdGhcIiBbc3R5bGUud2lkdGhdPVwiYnV0dG9uV2lkdGggKyAncHgnXCI+XG4gICAgPHNwYW4gI2NhbGN1bFdpZHRoIGNsYXNzPVwid2FjLWJ1dHRvbl9fYW5pbWF0aW9uX190ZXh0XCIgW2lubmVySFRNTF09XCJhbmltYXRpb25UZXh0XCI+PC9zcGFuPlxuICA8L3NwYW4+XG4gIDxzcGFuIGNsYXNzPVwid2FjLWJ1dHRvbl9fY29uZmlybURlbGV0ZVwiIFtzdHlsZS5tYXhXaWR0aF09XCJidXR0b25NYXhXaWR0aERlbGV0ZVwiIFtzdHlsZS53aWR0aF09XCJidXR0b25XaWR0aERlbGV0ZSArICdweCdcIj5cbiAgICA8c3BhbiAjY2FsY3VsV2lkdGhEZWxldGUgY2xhc3M9XCJ3YWMtYnV0dG9uX19jb25maXJtRGVsZXRlX190ZXh0XCIgW2lubmVySFRNTF09XCJjb25maXJtRGVsZXRlVGV4dFwiPjwvc3Bhbj5cbiAgPC9zcGFuPlxuICA8c3BhbiAqbmdJZj1cImNvaW5cIiBjbGFzcz1cIndhYy1idXR0b25fX2NvaW5cIj48aSBjbGFzcz1cImZhLXNvbGlkIGZhLWNvaW4tZnJvbnRcIj48L2k+PHNwYW4gW2lubmVySFRNTF09XCJjb2luXCI+PC9zcGFuPjwvc3Bhbj5cbiAgPHNwYW5cbiAgICBjbGFzcz1cIndhYy1idXR0b25fX2xvYWRlclwiXG4gICAgW25nQ2xhc3NdPVwiZXh0cmFDbGFzc2VzLmluY2x1ZGVzKCdpcy1vdXRsaW5lZCcpID8gJ291dGxpbmVkJyA6ICcnXCJcbiAgICAqbmdJZj1cImlzTG9hZGluZ1wiXG4gICAgW3N0eWxlLndpZHRoXT1cImN1cnJlbnRMb2FkaW5nICsgJyUnXCJcbiAgPlxuICAgIDxzcGFuICpuZ0lmPVwiZXh0cmFDbGFzc2VzLmluY2x1ZGVzKCdpcy1vdXRsaW5lZCcpXCI+XG4gICAgICA8aSAqbmdJZj1cImljb24gIT09ICcnXCIgW25nQ2xhc3NdPVwiaWNvblwiIFtzdHlsZS5mb250LXNpemUucHhdPVwiaWNvbkZvbnRTaXplXCI+PC9pPlxuICAgICAge3sgbGFiZWwgfX1cbiAgICAgIDxpICpuZ0lmPVwiaWNvbk5leHQgIT09ICcnXCIgW25nQ2xhc3NdPVwiaWNvbk5leHRcIiBbc3R5bGUuZm9udC1zaXplLnB4XT1cImljb25Gb250U2l6ZVwiPjwvaT5cbiAgICA8L3NwYW4+XG4gIDwvc3Bhbj5cbiAgPHNwYW4gY2xhc3M9XCJ3YWMtYnV0dG9uX190b29sdGlwcyB7eyB0b29sdGlwUG9zaXRpb24gfX1cIiBbbmdDbGFzc109XCJ7J29uZWxpbmUnOiB0b29sdGlwT25lbGluZX1cIiBbc3R5bGUubWluV2lkdGhdPVwidG9vbHRpcFdpZHRoXCIgKm5nSWY9XCJ0b29sdGlwXCI+XG4gICAge3sgdG9vbHRpcCB9fVxuICA8L3NwYW4+XG48L2E+XG4iXX0=
@@ -12,6 +12,7 @@ import * as i7 from "../optional-disable-container/optional-disable-container.co
12
12
  export class CalendarComponent {
13
13
  constructor(datePipe) {
14
14
  this.datePipe = datePipe;
15
+ this.boldLabel = false;
15
16
  this.type = 'input';
16
17
  this._options = {
17
18
  displayMode: 'inline',
@@ -121,17 +122,21 @@ export class CalendarComponent {
121
122
  }
122
123
  }
123
124
  }
124
- incrementMinutes() {
125
+ incrementMinutes($event) {
125
126
  this.calendarMinutes = parseInt(this.calendarMinutes, 10) + 1 + '';
127
+ $event.preventDefault();
126
128
  }
127
- decrementsMinutes() {
129
+ decrementsMinutes($event) {
128
130
  this.calendarMinutes = parseInt(this.calendarMinutes, 10) - 1 + '';
131
+ $event.preventDefault();
129
132
  }
130
- incrementHours() {
133
+ incrementHours($event) {
131
134
  this.calendarHours = parseInt(this.calendarHours, 10) + 1 + '';
135
+ $event.preventDefault();
132
136
  }
133
- decrementHours() {
137
+ decrementHours($event) {
134
138
  this.calendarHours = parseInt(this.calendarHours, 10) - 1 + '';
139
+ $event.preventDefault();
135
140
  }
136
141
  /*
137
142
  Ensure that the input value is a number and that it is between min and max
@@ -169,14 +174,14 @@ export class CalendarComponent {
169
174
  }
170
175
  }
171
176
  CalendarComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CalendarComponent, deps: [{ token: i1.DatePipe }], target: i0.ɵɵFactoryTarget.Component });
172
- CalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CalendarComponent, selector: "wac-calendar", inputs: { label: "label", type: "type", options: "options", position: "position", dateSelected: "dateSelected", typeDate: "typeDate", noMargin: "noMargin", disabled: "disabled" }, outputs: { dateSelectedChange: "dateSelectedChange", changeData: "changeData" }, providers: [
177
+ CalendarComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.0.7", type: CalendarComponent, selector: "wac-calendar", inputs: { label: "label", boldLabel: "boldLabel", type: "type", options: "options", position: "position", dateSelected: "dateSelected", typeDate: "typeDate", noMargin: "noMargin", disabled: "disabled" }, outputs: { dateSelectedChange: "dateSelectedChange", changeData: "changeData" }, providers: [
173
178
  {
174
179
  provide: NG_VALUE_ACCESSOR,
175
180
  useExisting: CalendarComponent,
176
181
  multi: true
177
182
  },
178
183
  DatePipe
179
- ], viewQueries: [{ propertyName: "minutes", first: true, predicate: ["minutes"], descendants: true }, { propertyName: "hours", first: true, predicate: ["hours"], descendants: true }, { propertyName: "datePicker", first: true, predicate: ["datePicker"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"wac-calendar\"\n [ngClass]=\"{\n 'wac-calendar--input': type === 'input',\n 'wac-calendar--edit': type === 'edit',\n 'wac-calendar--select': type === 'select',\n 'wac-calendar--no-margin': noMargin,\n 'wac-calendar--open': open\n }\"\n [zIndexToggle]=\"open\"\n>\n <p class=\"wac-calendar__label\" *ngIf=\"label && (type === 'input' || type === 'select')\" (click)=\"openCalendar()\">{{ label }}</p>\n <p class=\"wac-calendar__startLabel\" *ngIf=\"type === 'edit'\">{{ startLabel }}</p>\n <wac-optional-disable-container [disabled]=\"disabled\">\n <div class=\"wac-calendar__autoHide\" wzAutoHide (clickOutside)=\"openCalendar('close')\">\n <div class=\"wac-calendar__wrapper\">\n <div class=\"wac-calendar__wrapper__input\" *ngIf=\"type === 'input'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__input__icon\">\n <i class=\"far fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__input__date\">\n {{ dateSelected | date: 'dd/MM/yyyy' }}\n </div>\n <div class=\"wac-calendar__wrapper__input__time\">\n {{ dateSelected | date: 'HH:mm' }}\n </div>\n </div>\n <div class=\"wac-calendar__wrapper__editInPlace\" *ngIf=\"type === 'edit'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__editInPlace__icon\">\n <i class=\"fal fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__editInPlace__date\">\n {{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}\n </div>\n </div>\n <div class=\"wac-calendar__wrapper__select\" *ngIf=\"type === 'select'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__select__icon\">\n <i class=\"fal fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__select__date\">\n {{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}\n </div>\n </div>\n </div>\n <div\n class=\"wac-calendar__absolute\"\n [ngClass]=\"{\n top: position === 'top',\n bottom: position === 'bottom',\n left: position === 'left',\n right: position === 'right',\n 'right-top': position === 'right-top',\n 'right-bottom': position === 'right-bottom',\n 'left-top': position === 'left-top',\n 'left-bottom': position === 'left-bottom',\n 'with-time': typeDate === 'datetime-local' || typeDate === 'datetime'\n }\"\n >\n <nwb-date-picker #datePicker (change)=\"onChangeDate($event)\" [options]=\"options\">\n <input [nwbDatepickerStart]=\"datePicker\" type=\"text\" [nwbDateType]=\"'date'\" [value]=\"dateSelected.toISOString()\" />\n </nwb-date-picker>\n <div class=\"wac-calendar__absolute__time\" *ngIf=\"typeDate === 'datetime-local' || typeDate === 'datetime'\">\n <div class=\"wac-calendar__absolute__time__wrapper\">\n <div class=\"wac-calendar__absolute__time__wrapper__hours\">\n <div class=\"wac-calendar__absolute__time__wrapper__hours__left\">\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"incrementHours()\">\n <i class=\"fas fa-plus\"></i>\n </button>\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"decrementHours()\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__hours__right\">\n <input #hours type=\"text\" [(ngModel)]=\"calendarHours\" [wacOnlyNumber]=\"true\"/>\n </div>\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__minutes\">\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__left\">\n <input #minutes type=\"text\" [(ngModel)]=\"calendarMinutes\" [wacOnlyNumber]=\"true\"/>\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__right\">\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"incrementMinutes()\">\n <i class=\"fas fa-plus\"></i>\n </button>\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"decrementsMinutes()\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </wac-optional-disable-container>\n <p class=\"wac-calendar__endLabel\" *ngIf=\"type === 'edit'\">{{ endLabel }}</p>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.NwbDatePickerComponent, selector: "nwb-date-picker", inputs: ["options"], outputs: ["change", "clear"] }, { kind: "directive", type: i3.NwbDatePickerInputStartDirective, selector: "input[nwbDatepickerStart]", inputs: ["nwbDatepickerStart"] }, { kind: "directive", type: i3.NwbDatePickerInputDateTypeDirective, selector: "input[nwbDateType]", inputs: ["nwbDateType"] }, { kind: "directive", type: i4.AutoHideDirective, selector: "[wzAutoHide]", inputs: ["triggerElement", "forceOn"], outputs: ["clickOutside"] }, { kind: "directive", type: i5.ZindexToggleDirective, selector: "[zIndexToggle]", inputs: ["zIndexToggle"], outputs: ["onEventChange"] }, { kind: "directive", type: i6.OnlyNumberDirective, selector: "[wacOnlyNumber]", inputs: ["wacOnlyNumber"] }, { kind: "component", type: i7.OptionalDisableContainerComponent, selector: "wac-optional-disable-container", inputs: ["disabled"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
184
+ ], viewQueries: [{ propertyName: "minutes", first: true, predicate: ["minutes"], descendants: true }, { propertyName: "hours", first: true, predicate: ["hours"], descendants: true }, { propertyName: "datePicker", first: true, predicate: ["datePicker"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div\n class=\"wac-calendar\"\n [ngClass]=\"{\n 'wac-calendar--input': type === 'input',\n 'wac-calendar--edit': type === 'edit',\n 'wac-calendar--select': type === 'select',\n 'wac-calendar--no-margin': noMargin,\n 'wac-calendar--open': open\n }\"\n [zIndexToggle]=\"open\"\n>\n <p [class]=\"'wac-calendar__label' + (boldLabel ? ' bold' : '')\" *ngIf=\"label && (type === 'input' || type === 'select')\" (click)=\"openCalendar()\">{{ label }}</p>\n <p class=\"wac-calendar__startLabel\" *ngIf=\"type === 'edit'\">{{ startLabel }}</p>\n <wac-optional-disable-container [disabled]=\"disabled\">\n <div class=\"wac-calendar__autoHide\" wzAutoHide (clickOutside)=\"openCalendar('close')\">\n <div class=\"wac-calendar__wrapper\">\n <div class=\"wac-calendar__wrapper__input\" *ngIf=\"type === 'input'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__input__icon\">\n <i class=\"far fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__input__date\">\n {{ dateSelected | date: 'dd/MM/yyyy' }}\n </div>\n <div class=\"wac-calendar__wrapper__input__time\">\n {{ dateSelected | date: 'HH:mm' }}\n </div>\n </div>\n <div class=\"wac-calendar__wrapper__editInPlace\" *ngIf=\"type === 'edit'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__editInPlace__icon\">\n <i class=\"fal fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__editInPlace__date\">\n {{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}\n </div>\n </div>\n <div class=\"wac-calendar__wrapper__select\" *ngIf=\"type === 'select'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__select__icon\">\n <i class=\"fal fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__select__date\">\n {{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}\n </div>\n </div>\n </div>\n <div\n class=\"wac-calendar__absolute\"\n [ngClass]=\"{\n top: position === 'top',\n bottom: position === 'bottom',\n left: position === 'left',\n right: position === 'right',\n 'right-top': position === 'right-top',\n 'right-bottom': position === 'right-bottom',\n 'left-top': position === 'left-top',\n 'left-bottom': position === 'left-bottom',\n 'with-time': typeDate === 'datetime-local' || typeDate === 'datetime'\n }\"\n >\n <nwb-date-picker #datePicker (change)=\"onChangeDate($event)\" [options]=\"options\">\n <input [nwbDatepickerStart]=\"datePicker\" type=\"text\" [nwbDateType]=\"'date'\" [value]=\"dateSelected.toISOString()\" />\n </nwb-date-picker>\n <div class=\"wac-calendar__absolute__time\" *ngIf=\"typeDate === 'datetime-local' || typeDate === 'datetime'\">\n <div class=\"wac-calendar__absolute__time__wrapper\">\n <div class=\"wac-calendar__absolute__time__wrapper__hours\">\n <div class=\"wac-calendar__absolute__time__wrapper__hours__left\">\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"incrementHours($event)\">\n <i class=\"fas fa-plus\"></i>\n </button>\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"decrementHours($event)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__hours__right\">\n <input #hours type=\"text\" [(ngModel)]=\"calendarHours\" [wacOnlyNumber]=\"true\"/>\n </div>\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__minutes\">\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__left\">\n <input #minutes type=\"text\" [(ngModel)]=\"calendarMinutes\" [wacOnlyNumber]=\"true\"/>\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__right\">\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"incrementMinutes($event)\">\n <i class=\"fas fa-plus\"></i>\n </button>\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"decrementsMinutes($event)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </wac-optional-disable-container>\n <p class=\"wac-calendar__endLabel\" *ngIf=\"type === 'edit'\">{{ endLabel }}</p>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.NwbDatePickerComponent, selector: "nwb-date-picker", inputs: ["options"], outputs: ["change", "clear"] }, { kind: "directive", type: i3.NwbDatePickerInputStartDirective, selector: "input[nwbDatepickerStart]", inputs: ["nwbDatepickerStart"] }, { kind: "directive", type: i3.NwbDatePickerInputDateTypeDirective, selector: "input[nwbDateType]", inputs: ["nwbDateType"] }, { kind: "directive", type: i4.AutoHideDirective, selector: "[wzAutoHide]", inputs: ["triggerElement", "forceOn"], outputs: ["clickOutside"] }, { kind: "directive", type: i5.ZindexToggleDirective, selector: "[zIndexToggle]", inputs: ["zIndexToggle"], outputs: ["onEventChange"] }, { kind: "directive", type: i6.OnlyNumberDirective, selector: "[wacOnlyNumber]", inputs: ["wacOnlyNumber"] }, { kind: "component", type: i7.OptionalDisableContainerComponent, selector: "wac-optional-disable-container", inputs: ["disabled"] }, { kind: "pipe", type: i1.DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
180
185
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImport: i0, type: CalendarComponent, decorators: [{
181
186
  type: Component,
182
187
  args: [{ selector: 'wac-calendar', providers: [
@@ -186,7 +191,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImpor
186
191
  multi: true
187
192
  },
188
193
  DatePipe
189
- ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n class=\"wac-calendar\"\n [ngClass]=\"{\n 'wac-calendar--input': type === 'input',\n 'wac-calendar--edit': type === 'edit',\n 'wac-calendar--select': type === 'select',\n 'wac-calendar--no-margin': noMargin,\n 'wac-calendar--open': open\n }\"\n [zIndexToggle]=\"open\"\n>\n <p class=\"wac-calendar__label\" *ngIf=\"label && (type === 'input' || type === 'select')\" (click)=\"openCalendar()\">{{ label }}</p>\n <p class=\"wac-calendar__startLabel\" *ngIf=\"type === 'edit'\">{{ startLabel }}</p>\n <wac-optional-disable-container [disabled]=\"disabled\">\n <div class=\"wac-calendar__autoHide\" wzAutoHide (clickOutside)=\"openCalendar('close')\">\n <div class=\"wac-calendar__wrapper\">\n <div class=\"wac-calendar__wrapper__input\" *ngIf=\"type === 'input'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__input__icon\">\n <i class=\"far fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__input__date\">\n {{ dateSelected | date: 'dd/MM/yyyy' }}\n </div>\n <div class=\"wac-calendar__wrapper__input__time\">\n {{ dateSelected | date: 'HH:mm' }}\n </div>\n </div>\n <div class=\"wac-calendar__wrapper__editInPlace\" *ngIf=\"type === 'edit'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__editInPlace__icon\">\n <i class=\"fal fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__editInPlace__date\">\n {{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}\n </div>\n </div>\n <div class=\"wac-calendar__wrapper__select\" *ngIf=\"type === 'select'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__select__icon\">\n <i class=\"fal fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__select__date\">\n {{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}\n </div>\n </div>\n </div>\n <div\n class=\"wac-calendar__absolute\"\n [ngClass]=\"{\n top: position === 'top',\n bottom: position === 'bottom',\n left: position === 'left',\n right: position === 'right',\n 'right-top': position === 'right-top',\n 'right-bottom': position === 'right-bottom',\n 'left-top': position === 'left-top',\n 'left-bottom': position === 'left-bottom',\n 'with-time': typeDate === 'datetime-local' || typeDate === 'datetime'\n }\"\n >\n <nwb-date-picker #datePicker (change)=\"onChangeDate($event)\" [options]=\"options\">\n <input [nwbDatepickerStart]=\"datePicker\" type=\"text\" [nwbDateType]=\"'date'\" [value]=\"dateSelected.toISOString()\" />\n </nwb-date-picker>\n <div class=\"wac-calendar__absolute__time\" *ngIf=\"typeDate === 'datetime-local' || typeDate === 'datetime'\">\n <div class=\"wac-calendar__absolute__time__wrapper\">\n <div class=\"wac-calendar__absolute__time__wrapper__hours\">\n <div class=\"wac-calendar__absolute__time__wrapper__hours__left\">\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"incrementHours()\">\n <i class=\"fas fa-plus\"></i>\n </button>\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"decrementHours()\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__hours__right\">\n <input #hours type=\"text\" [(ngModel)]=\"calendarHours\" [wacOnlyNumber]=\"true\"/>\n </div>\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__minutes\">\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__left\">\n <input #minutes type=\"text\" [(ngModel)]=\"calendarMinutes\" [wacOnlyNumber]=\"true\"/>\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__right\">\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"incrementMinutes()\">\n <i class=\"fas fa-plus\"></i>\n </button>\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"decrementsMinutes()\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </wac-optional-disable-container>\n <p class=\"wac-calendar__endLabel\" *ngIf=\"type === 'edit'\">{{ endLabel }}</p>\n</div>\n" }]
194
+ ], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div\n class=\"wac-calendar\"\n [ngClass]=\"{\n 'wac-calendar--input': type === 'input',\n 'wac-calendar--edit': type === 'edit',\n 'wac-calendar--select': type === 'select',\n 'wac-calendar--no-margin': noMargin,\n 'wac-calendar--open': open\n }\"\n [zIndexToggle]=\"open\"\n>\n <p [class]=\"'wac-calendar__label' + (boldLabel ? ' bold' : '')\" *ngIf=\"label && (type === 'input' || type === 'select')\" (click)=\"openCalendar()\">{{ label }}</p>\n <p class=\"wac-calendar__startLabel\" *ngIf=\"type === 'edit'\">{{ startLabel }}</p>\n <wac-optional-disable-container [disabled]=\"disabled\">\n <div class=\"wac-calendar__autoHide\" wzAutoHide (clickOutside)=\"openCalendar('close')\">\n <div class=\"wac-calendar__wrapper\">\n <div class=\"wac-calendar__wrapper__input\" *ngIf=\"type === 'input'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__input__icon\">\n <i class=\"far fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__input__date\">\n {{ dateSelected | date: 'dd/MM/yyyy' }}\n </div>\n <div class=\"wac-calendar__wrapper__input__time\">\n {{ dateSelected | date: 'HH:mm' }}\n </div>\n </div>\n <div class=\"wac-calendar__wrapper__editInPlace\" *ngIf=\"type === 'edit'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__editInPlace__icon\">\n <i class=\"fal fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__editInPlace__date\">\n {{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}\n </div>\n </div>\n <div class=\"wac-calendar__wrapper__select\" *ngIf=\"type === 'select'\" (click)=\"openCalendar()\">\n <div class=\"wac-calendar__wrapper__select__icon\">\n <i class=\"fal fa-calendar-alt\"></i>\n </div>\n <div class=\"wac-calendar__wrapper__select__date\">\n {{ dateSelected | date: 'dd/MM/yyyy HH:mm' }}\n </div>\n </div>\n </div>\n <div\n class=\"wac-calendar__absolute\"\n [ngClass]=\"{\n top: position === 'top',\n bottom: position === 'bottom',\n left: position === 'left',\n right: position === 'right',\n 'right-top': position === 'right-top',\n 'right-bottom': position === 'right-bottom',\n 'left-top': position === 'left-top',\n 'left-bottom': position === 'left-bottom',\n 'with-time': typeDate === 'datetime-local' || typeDate === 'datetime'\n }\"\n >\n <nwb-date-picker #datePicker (change)=\"onChangeDate($event)\" [options]=\"options\">\n <input [nwbDatepickerStart]=\"datePicker\" type=\"text\" [nwbDateType]=\"'date'\" [value]=\"dateSelected.toISOString()\" />\n </nwb-date-picker>\n <div class=\"wac-calendar__absolute__time\" *ngIf=\"typeDate === 'datetime-local' || typeDate === 'datetime'\">\n <div class=\"wac-calendar__absolute__time__wrapper\">\n <div class=\"wac-calendar__absolute__time__wrapper__hours\">\n <div class=\"wac-calendar__absolute__time__wrapper__hours__left\">\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"incrementHours($event)\">\n <i class=\"fas fa-plus\"></i>\n </button>\n <button class=\"wac-calendar__absolute__time__wrapper__hours__btn\" (click)=\"decrementHours($event)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__hours__right\">\n <input #hours type=\"text\" [(ngModel)]=\"calendarHours\" [wacOnlyNumber]=\"true\"/>\n </div>\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__minutes\">\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__left\">\n <input #minutes type=\"text\" [(ngModel)]=\"calendarMinutes\" [wacOnlyNumber]=\"true\"/>\n </div>\n <div class=\"wac-calendar__absolute__time__wrapper__minutes__right\">\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"incrementMinutes($event)\">\n <i class=\"fas fa-plus\"></i>\n </button>\n <button class=\"wac-calendar__absolute__time__wrapper__minutes__btn\" (click)=\"decrementsMinutes($event)\">\n <i class=\"fas fa-minus\"></i>\n </button>\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n </wac-optional-disable-container>\n <p class=\"wac-calendar__endLabel\" *ngIf=\"type === 'edit'\">{{ endLabel }}</p>\n</div>\n" }]
190
195
  }], ctorParameters: function () { return [{ type: i1.DatePipe }]; }, propDecorators: { minutes: [{
191
196
  type: ViewChild,
192
197
  args: ['minutes']
@@ -198,6 +203,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImpor
198
203
  args: ['datePicker']
199
204
  }], label: [{
200
205
  type: Input
206
+ }], boldLabel: [{
207
+ type: Input
201
208
  }], type: [{
202
209
  type: Input
203
210
  }], options: [{
@@ -217,4 +224,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.0.7", ngImpor
217
224
  }], changeData: [{
218
225
  type: Output
219
226
  }] } });
220
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUE0Qix1QkFBdUIsRUFBRSxTQUFTLEVBQWMsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEssT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFpQnpFLE1BQU0sT0FBTyxpQkFBaUI7SUFrRjVCLFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUF6RXRDLFNBQUksR0FBZ0MsT0FBTyxDQUFDO1FBYzVDLGFBQVEsR0FBb0M7WUFDMUMsV0FBVyxFQUFFLFFBQVE7WUFDckIsVUFBVSxFQUFFLEtBQUs7WUFDakIsVUFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQztRQUdGLGFBQVEsR0FBRyxRQUFRLENBQUM7UUFZcEIsa0JBQWEsR0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO1FBRXZCLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFHbEQsYUFBUSxHQUEyQyxnQkFBZ0IsQ0FBQztRQUVwRSxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRVIsYUFBUSxHQUFHLEtBQUssQ0FBQztRQUVoQixlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQXVD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LENBQUM7SUFDRCxnQkFBZ0IsQ0FBQyxVQUFtQjtRQUNsQyxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQztJQUM3QixDQUFDOzs4R0F6TVUsaUJBQWlCO2tHQUFqQixpQkFBaUIsNFNBWGpCO1FBQ1Q7WUFDRSxPQUFPLEVBQUUsaUJBQWlCO1lBQzFCLFdBQVcsRUFBRSxpQkFBaUI7WUFDOUIsS0FBSyxFQUFFLElBQUk7U0FDWjtRQUNELFFBQVE7S0FDVCwrVENmSCxzdUpBZ0dBOzJGRDdFYSxpQkFBaUI7a0JBZDdCLFNBQVM7K0JBQ0UsY0FBYyxhQUViO3dCQUNUOzRCQUNFLE9BQU8sRUFBRSxpQkFBaUI7NEJBQzFCLFdBQVcsbUJBQW1COzRCQUM5QixLQUFLLEVBQUUsSUFBSTt5QkFDWjt3QkFDRCxRQUFRO3FCQUNULG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGlCQUNoQyxpQkFBaUIsQ0FBQyxJQUFJOytGQUlmLE9BQU87c0JBQTVCLFNBQVM7dUJBQUMsU0FBUztnQkFDQSxLQUFLO3NCQUF4QixTQUFTO3VCQUFDLE9BQU87Z0JBQ08sVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUd2QixLQUFLO3NCQURKLEtBQUs7Z0JBR04sSUFBSTtzQkFESCxLQUFLO2dCQUlGLE9BQU87c0JBRFYsS0FBSztnQkFtQk4sUUFBUTtzQkFEUCxLQUFLO2dCQUlGLFlBQVk7c0JBRGYsS0FBSztnQkFZSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBR1AsUUFBUTtzQkFEUCxLQUFLO2dCQUdOLFFBQVE7c0JBRFAsS0FBSztnQkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTndiRGF0ZVBpY2tlckNvbXBvbmVudCwgTndiRGF0ZVBpY2tlckV2ZW50LCBOd2JEYXRlUGlja2VyT3B0aW9ucyB9IGZyb20gJ0B3aXppc2hvcC9uZy13aXppLWJ1bG1hJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2FjLWNhbGVuZGFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogQ2FsZW5kYXJDb21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAgRGF0ZVBpcGVcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgLy8hIEF0IHRoZSBtb21lbnQsIHRoZSBjb21wb25lbnQgaGFuZGxlIG9ubHkgb25lIGRhdGUgKG5vdCBhIHJhbmdlKVxuICBAVmlld0NoaWxkKCdtaW51dGVzJykgbWludXRlczogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnaG91cnMnKSBob3VyczogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZGF0ZVBpY2tlcicpIGRhdGVQaWNrZXI6IE53YkRhdGVQaWNrZXJDb21wb25lbnQ7XG5cbiAgQElucHV0KClcbiAgbGFiZWw6IHN0cmluZyB8IG51bGw7XG4gIEBJbnB1dCgpXG4gIHR5cGU6ICdpbnB1dCcgfCAnZWRpdCcgfCAnc2VsZWN0JyA9ICdpbnB1dCc7XG5cbiAgQElucHV0KClcbiAgc2V0IG9wdGlvbnMob3B0aW9uczogUmVhZG9ubHk8TndiRGF0ZVBpY2tlck9wdGlvbnM+KSB7XG4gICAgdGhpcy5fb3B0aW9ucyA9IG9wdGlvbnM7XG4gICAgaWYgKHRoaXMuaXNCdWxtYURhdGVQaWNrZXJFeGlzdHMoKSkge1xuICAgICAgdGhpcy51cGRhdGVCdWxtYURhdGVQaWNrZXJPcHRpb25zKG9wdGlvbnMpO1xuICAgIH1cbiAgfVxuXG4gIGdldCBvcHRpb25zKCkgOiBSZWFkb25seTxOd2JEYXRlUGlja2VyT3B0aW9ucz4ge1xuICAgIHJldHVybiB0aGlzLl9vcHRpb25zO1xuICB9XG5cbiAgX29wdGlvbnM6IFJlYWRvbmx5PE53YkRhdGVQaWNrZXJPcHRpb25zPiAgPSB7XG4gICAgZGlzcGxheU1vZGU6ICdpbmxpbmUnLFxuICAgIHNob3dIZWFkZXI6IGZhbHNlLFxuICAgIHNob3dGb290ZXI6IHRydWUsXG4gIH07XG5cbiAgQElucHV0KClcbiAgcG9zaXRpb24gPSAnYm90dG9tJztcblxuICBASW5wdXQoKVxuICBzZXQgZGF0ZVNlbGVjdGVkKGRhdGVTZWxlY3RlZDogRGF0ZSkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuX2RhdGVTZWxlY3RlZCA9IG5ldyBEYXRlKGRhdGVTZWxlY3RlZCk7IC8vIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvbiBmb3IgcHVyZSBwaXBlXG4gIH1cbiAgZ2V0IGRhdGVTZWxlY3RlZCgpIDogRGF0ZSB7XG4gICAgcmV0dXJuIHRoaXMuX2RhdGVTZWxlY3RlZDtcbiAgfVxuICBfZGF0ZVNlbGVjdGVkOiBEYXRlID0gbmV3IERhdGUoKTtcblxuICBAT3V0cHV0KCkgZGF0ZVNlbGVjdGVkQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBJbnB1dCgpXG4gIHR5cGVEYXRlOiAnZGF0ZXRpbWUnIHwgJ2RhdGV0aW1lLWxvY2FsJyB8ICdkYXRlJyA9ICdkYXRldGltZS1sb2NhbCc7XG4gIEBJbnB1dCgpXG4gIG5vTWFyZ2luID0gZmFsc2U7XG5cbiAgQElucHV0KCkgZGlzYWJsZWQgPSBmYWxzZTtcblxuICBAT3V0cHV0KCkgY2hhbmdlRGF0YSA9IG5ldyBFdmVudEVtaXR0ZXI8eyBzdGFydERhdGU6IERhdGU7IGVuZERhdGU6IERhdGU7IH0+KCk7XG4gIG9wZW4gPSBmYWxzZTtcbiAgc3RhcnRMYWJlbCA9ICcnO1xuICBlbmRMYWJlbCA9ICcnO1xuXG4gIHNldCBjYWxlbmRhck1pbnV0ZXMoY2FsZW5kYXJNaW51dGVzOiBzdHJpbmcpIHtcbiAgICBjb25zdCBtaW51dGVzID0gdGhpcy5mb3JtYXRUaW1lKGNhbGVuZGFyTWludXRlcywgMCwgNTkpO1xuICAgIHRoaXMuZGF0ZVNlbGVjdGVkLnNldE1pbnV0ZXMobWludXRlcyk7XG4gICAgdGhpcy5kYXRlU2VsZWN0ZWQgPSB0aGlzLmRhdGVTZWxlY3RlZDsgLy8gdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uXG4gICAgdGhpcy5taW51dGVzLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmRhdGVTZWxlY3RlZCwgJ21tJyk7IC8vIGZvcmNlIHRvIHVwZGF0ZSB0aGUgaW5wdXQgdmFsdWVcbiAgICB0aGlzLnRyaWdnZXJEYXRlU2VsZWN0ZWRDaGFuZ2UoKTtcbiAgfVxuXG4gIGdldCBjYWxlbmRhck1pbnV0ZXMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5kYXRlU2VsZWN0ZWQsICdtbScpO1xuICB9XG5cbiAgc2V0IGNhbGVuZGFySG91cnMoY2FsZW5kYXJIb3Vyczogc3RyaW5nKSB7XG4gICAgY29uc3QgaG91cnMgPSB0aGlzLmZvcm1hdFRpbWUoY2FsZW5kYXJIb3VycywgMCwgMjMpO1xuICAgIHRoaXMuZGF0ZVNlbGVjdGVkLnNldEhvdXJzKGhvdXJzKTtcbiAgICB0aGlzLmRhdGVTZWxlY3RlZCA9IHRoaXMuZGF0ZVNlbGVjdGVkOyAvLyB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb25cbiAgICB0aGlzLmhvdXJzLm5hdGl2ZUVsZW1lbnQudmFsdWUgPSB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmRhdGVTZWxlY3RlZCwgJ0hIJyk7IC8vIGZvcmNlIHRvIHVwZGF0ZSB0aGUgaW5wdXQgdmFsdWVcbiAgICB0aGlzLnRyaWdnZXJEYXRlU2VsZWN0ZWRDaGFuZ2UoKTtcbiAgfVxuXG4gIGdldCBjYWxlbmRhckhvdXJzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuZGF0ZVNlbGVjdGVkLCAnSEgnKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZGF0ZVBpcGU6IERhdGVQaXBlKSB7fVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICBpZiAoY2hhbmdlcy5sYWJlbCB8fCBjaGFuZ2VzLnR5cGUpIHtcbiAgICAgIHRoaXMuc2V0Q2FsZW5kYXJMYWJlbCgpO1xuICAgIH1cbiAgfVxuXG4gIG9uQ2hhbmdlRGF0ZShzZWxlY3RlZERhdGVzOiBOd2JEYXRlUGlja2VyRXZlbnQpIHtcbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNlbGVjdGVkRGF0ZXMuc3RhcnREYXRlLnNldEhvdXJzKHRoaXMuZGF0ZVNlbGVjdGVkLmdldEhvdXJzKCkpO1xuICAgIHNlbGVjdGVkRGF0ZXMuc3RhcnREYXRlLnNldE1pbnV0ZXModGhpcy5kYXRlU2VsZWN0ZWQuZ2V0TWludXRlcygpKTtcblxuICAgIHRoaXMuZGF0ZVNlbGVjdGVkID0gc2VsZWN0ZWREYXRlcy5zdGFydERhdGU7XG4gICAgdGhpcy50cmlnZ2VyRGF0ZVNlbGVjdGVkQ2hhbmdlKCk7XG4gIH1cblxuICBwcml2YXRlIHRyaWdnZXJEYXRlU2VsZWN0ZWRDaGFuZ2UoKSB7XG4gICAgdGhpcy5vbkNoYW5nZSh0aGlzLmRhdGVTZWxlY3RlZCk7XG4gICAgdGhpcy5kYXRlU2VsZWN0ZWRDaGFuZ2UuZW1pdCh0aGlzLmRhdGVTZWxlY3RlZCk7XG4gICAgdGhpcy50cmlnZ2VyQ2hhbmdlKHtcbiAgICAgIHN0YXJ0RGF0ZTogdGhpcy5kYXRlU2VsZWN0ZWQsXG4gICAgICBlbmREYXRlOiB0aGlzLmRhdGVTZWxlY3RlZFxuICAgIH0pO1xuICB9XG5cbiAgdHJpZ2dlckNoYW5nZShldmVudDogeyBzdGFydERhdGU6IERhdGU7IGVuZERhdGU6IERhdGU7IH0pIHtcbiAgICB0aGlzLmNoYW5nZURhdGEuZW1pdChldmVudCk7XG4gIH1cblxuICBvcGVuQ2FsZW5kYXIodmFsdWUgPSBudWxsKSB7XG5cbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh2YWx1ZSA9PT0gJ2Nsb3NlJykge1xuICAgICAgaWYgKHRoaXMub3Blbikge1xuICAgICAgICB0aGlzLm9wZW4gPSBmYWxzZTtcbiAgICAgICAgdGhpcy5vblRvdWNoKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMub3BlbiA9ICF0aGlzLm9wZW47XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRDYWxlbmRhckxhYmVsKCkge1xuICAgIGlmICh0aGlzLnR5cGUgPT09ICdlZGl0JyAmJiB0aGlzLmxhYmVsKSB7XG4gICAgICBjb25zdCBzcGxpdExhYmVsID0gdGhpcy5sYWJlbC5zcGxpdCgne3h9Jyk7XG4gICAgICBpZiAoc3BsaXRMYWJlbC5sZW5ndGggPiAxKSB7XG4gICAgICAgIHRoaXMuc3RhcnRMYWJlbCA9IHNwbGl0TGFiZWxbMF07XG4gICAgICAgIHRoaXMuZW5kTGFiZWwgPSBzcGxpdExhYmVsWzFdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zdGFydExhYmVsID0gdGhpcy5sYWJlbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpbmNyZW1lbnRNaW51dGVzKCkge1xuICAgIHRoaXMuY2FsZW5kYXJNaW51dGVzID0gcGFyc2VJbnQodGhpcy5jYWxlbmRhck1pbnV0ZXMsIDEwKSArIDEgKyAnJztcbiAgfVxuXG4gIGRlY3JlbWVudHNNaW51dGVzKCkge1xuICAgIHRoaXMuY2FsZW5kYXJNaW51dGVzID0gcGFyc2VJbnQodGhpcy5jYWxlbmRhck1pbnV0ZXMsIDEwKSAtIDEgKyAnJztcbiAgfVxuXG4gIGluY3JlbWVudEhvdXJzKCkge1xuICAgIHRoaXMuY2FsZW5kYXJIb3VycyA9IHBhcnNlSW50KHRoaXMuY2FsZW5kYXJIb3VycywgMTApICsgMSArICcnO1xuICB9XG5cbiAgZGVjcmVtZW50SG91cnMoKSB7XG4gICAgdGhpcy5jYWxlbmRhckhvdXJzID0gcGFyc2VJbnQodGhpcy5jYWxlbmRhckhvdXJzLCAxMCkgLSAxICsgJyc7XG4gIH1cblxuICAvKlxuICAgIEVuc3VyZSB0aGF0IHRoZSBpbnB1dCB2YWx1ZSBpcyBhIG51bWJlciBhbmQgdGhhdCBpdCBpcyBiZXR3ZWVuIG1pbiBhbmQgbWF4XG4gICovXG4gIHByaXZhdGUgZm9ybWF0VGltZSh0aW1lOiBzdHJpbmcgfCBudW1iZXIsIG1pbiA9IDAsIG1heCA9IDU5KSB7XG4gICAgbGV0IHRpbWVOdW1iZXIgPSB0eXBlb2YgdGltZSA9PT0gJ3N0cmluZycgPyBwYXJzZUludCh0aW1lLCAxMCkgOiB0aW1lO1xuICAgIHRpbWVOdW1iZXIgPSB0aW1lTnVtYmVyID4gbWF4ID8gbWluIDogdGltZU51bWJlcjtcbiAgICB0aW1lTnVtYmVyID0gdGltZU51bWJlciA8IG1pbiA/IG1heCA6IHRpbWVOdW1iZXI7XG4gICAgdGltZU51bWJlciA9IHBhcnNlSW50KCgnJyArIHRpbWVOdW1iZXIpLnNsaWNlKC0yKSk7IC8vIGtlZXBzIG9ubHkgdGhlIGxhc3QgMiBkaWdpdHNcbiAgICByZXR1cm4gdGltZU51bWJlcjtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQnVsbWFEYXRlUGlja2VyT3B0aW9ucyhvcHRpb25zOiBSZWFkb25seTxOd2JEYXRlUGlja2VyT3B0aW9ucz4pIHtcbiAgICBjb25zdCBidWxtYUNhbGVuZGFyRGF0ZVBpY2tlciA9IHRoaXMuZGF0ZVBpY2tlclsnYnVsbWFDYWxlbmRhciddLmRhdGVQaWNrZXI7XG4gICAgYnVsbWFDYWxlbmRhckRhdGVQaWNrZXIubWluID0gb3B0aW9ucy5taW5EYXRlO1xuICAgIGJ1bG1hQ2FsZW5kYXJEYXRlUGlja2VyLm1heCA9IG9wdGlvbnMubWF4RGF0ZTtcbiAgICBidWxtYUNhbGVuZGFyRGF0ZVBpY2tlci5yZWZyZXNoKCk7XG4gIH1cblxuICBwcml2YXRlIGlzQnVsbWFEYXRlUGlja2VyRXhpc3RzKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGVQaWNrZXIgJiYgdGhpcy5kYXRlUGlja2VyWydidWxtYUNhbGVuZGFyJ10gJiYgdGhpcy5kYXRlUGlja2VyWydidWxtYUNhbGVuZGFyJ10uZGF0ZVBpY2tlcjtcbiAgfVxuXG4gIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29yIG1ldGhvZHNcblxuICBvbkNoYW5nZTogKHZhbHVlOiBEYXRlKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgb25Ub3VjaDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIHdyaXRlVmFsdWUoZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIGlmICghZGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRhdGVTZWxlY3RlZCA9IGRhdGU7XG4gIH1cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KXtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSl7XG4gICAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cIndhYy1jYWxlbmRhclwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnd2FjLWNhbGVuZGFyLS1pbnB1dCc6IHR5cGUgPT09ICdpbnB1dCcsXG4gICAgJ3dhYy1jYWxlbmRhci0tZWRpdCc6IHR5cGUgPT09ICdlZGl0JyxcbiAgICAnd2FjLWNhbGVuZGFyLS1zZWxlY3QnOiB0eXBlID09PSAnc2VsZWN0JyxcbiAgICAnd2FjLWNhbGVuZGFyLS1uby1tYXJnaW4nOiBub01hcmdpbixcbiAgICAnd2FjLWNhbGVuZGFyLS1vcGVuJzogb3BlblxuICB9XCJcbiAgW3pJbmRleFRvZ2dsZV09XCJvcGVuXCJcbj5cbiAgPHAgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2xhYmVsXCIgKm5nSWY9XCJsYWJlbCAmJiAodHlwZSA9PT0gJ2lucHV0JyB8fCB0eXBlID09PSAnc2VsZWN0JylcIiAoY2xpY2spPVwib3BlbkNhbGVuZGFyKClcIj57eyBsYWJlbCB9fTwvcD5cbiAgPHAgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3N0YXJ0TGFiZWxcIiAqbmdJZj1cInR5cGUgPT09ICdlZGl0J1wiPnt7IHN0YXJ0TGFiZWwgfX08L3A+XG4gIDx3YWMtb3B0aW9uYWwtZGlzYWJsZS1jb250YWluZXIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYXV0b0hpZGVcIiB3ekF1dG9IaWRlIChjbGlja091dHNpZGUpPVwib3BlbkNhbGVuZGFyKCdjbG9zZScpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX193cmFwcGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX2lucHV0XCIgKm5nSWY9XCJ0eXBlID09PSAnaW5wdXQnXCIgKGNsaWNrKT1cIm9wZW5DYWxlbmRhcigpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fd3JhcHBlcl9faW5wdXRfX2ljb25cIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWNhbGVuZGFyLWFsdFwiPjwvaT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX193cmFwcGVyX19pbnB1dF9fZGF0ZVwiPlxuICAgICAgICAgICAge3sgZGF0ZVNlbGVjdGVkIHwgZGF0ZTogJ2RkL01NL3l5eXknIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fd3JhcHBlcl9faW5wdXRfX3RpbWVcIj5cbiAgICAgICAgICAgIHt7IGRhdGVTZWxlY3RlZCB8IGRhdGU6ICdISDptbScgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX2VkaXRJblBsYWNlXCIgKm5nSWY9XCJ0eXBlID09PSAnZWRpdCdcIiAoY2xpY2spPVwib3BlbkNhbGVuZGFyKClcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX193cmFwcGVyX19lZGl0SW5QbGFjZV9faWNvblwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYWwgZmEtY2FsZW5kYXItYWx0XCI+PC9pPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX2VkaXRJblBsYWNlX19kYXRlXCI+XG4gICAgICAgICAgICB7eyBkYXRlU2VsZWN0ZWQgfCBkYXRlOiAnZGQvTU0veXl5eSBISDptbScgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX3NlbGVjdFwiICpuZ0lmPVwidHlwZSA9PT0gJ3NlbGVjdCdcIiAoY2xpY2spPVwib3BlbkNhbGVuZGFyKClcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX193cmFwcGVyX19zZWxlY3RfX2ljb25cIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFsIGZhLWNhbGVuZGFyLWFsdFwiPjwvaT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX193cmFwcGVyX19zZWxlY3RfX2RhdGVcIj5cbiAgICAgICAgICAgIHt7IGRhdGVTZWxlY3RlZCB8IGRhdGU6ICdkZC9NTS95eXl5IEhIOm1tJyB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgdG9wOiBwb3NpdGlvbiA9PT0gJ3RvcCcsXG4gICAgICAgICAgYm90dG9tOiBwb3NpdGlvbiA9PT0gJ2JvdHRvbScsXG4gICAgICAgICAgbGVmdDogcG9zaXRpb24gPT09ICdsZWZ0JyxcbiAgICAgICAgICByaWdodDogcG9zaXRpb24gPT09ICdyaWdodCcsXG4gICAgICAgICAgJ3JpZ2h0LXRvcCc6IHBvc2l0aW9uID09PSAncmlnaHQtdG9wJyxcbiAgICAgICAgICAncmlnaHQtYm90dG9tJzogcG9zaXRpb24gPT09ICdyaWdodC1ib3R0b20nLFxuICAgICAgICAgICdsZWZ0LXRvcCc6IHBvc2l0aW9uID09PSAnbGVmdC10b3AnLFxuICAgICAgICAgICdsZWZ0LWJvdHRvbSc6IHBvc2l0aW9uID09PSAnbGVmdC1ib3R0b20nLFxuICAgICAgICAgICd3aXRoLXRpbWUnOiB0eXBlRGF0ZSA9PT0gJ2RhdGV0aW1lLWxvY2FsJyB8fCB0eXBlRGF0ZSA9PT0gJ2RhdGV0aW1lJ1xuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAgPG53Yi1kYXRlLXBpY2tlciAjZGF0ZVBpY2tlciAoY2hhbmdlKT1cIm9uQ2hhbmdlRGF0ZSgkZXZlbnQpXCIgW29wdGlvbnNdPVwib3B0aW9uc1wiPlxuICAgICAgICAgIDxpbnB1dCBbbndiRGF0ZXBpY2tlclN0YXJ0XT1cImRhdGVQaWNrZXJcIiB0eXBlPVwidGV4dFwiIFtud2JEYXRlVHlwZV09XCInZGF0ZSdcIiBbdmFsdWVdPVwiZGF0ZVNlbGVjdGVkLnRvSVNPU3RyaW5nKClcIiAvPlxuICAgICAgICA8L253Yi1kYXRlLXBpY2tlcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVcIiAqbmdJZj1cInR5cGVEYXRlID09PSAnZGF0ZXRpbWUtbG9jYWwnIHx8IHR5cGVEYXRlID09PSAnZGF0ZXRpbWUnXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlX190aW1lX193cmFwcGVyX19ob3Vyc1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX19hYnNvbHV0ZV9fdGltZV9fd3JhcHBlcl9faG91cnNfX2xlZnRcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwid2FjLWNhbGVuZGFyX19hYnNvbHV0ZV9fdGltZV9fd3JhcHBlcl9faG91cnNfX2J0blwiIChjbGljayk9XCJpbmNyZW1lbnRIb3VycygpXCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlX190aW1lX193cmFwcGVyX19ob3Vyc19fYnRuXCIgKGNsaWNrKT1cImRlY3JlbWVudEhvdXJzKClcIj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLW1pbnVzXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJfX2hvdXJzX19yaWdodFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCAjaG91cnMgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImNhbGVuZGFySG91cnNcIiBbd2FjT25seU51bWJlcl09XCJ0cnVlXCIvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJfX21pbnV0ZXNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJfX21pbnV0ZXNfX2xlZnRcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgI21pbnV0ZXMgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImNhbGVuZGFyTWludXRlc1wiIFt3YWNPbmx5TnVtYmVyXT1cInRydWVcIi8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX19hYnNvbHV0ZV9fdGltZV9fd3JhcHBlcl9fbWludXRlc19fcmlnaHRcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwid2FjLWNhbGVuZGFyX19hYnNvbHV0ZV9fdGltZV9fd3JhcHBlcl9fbWludXRlc19fYnRuXCIgKGNsaWNrKT1cImluY3JlbWVudE1pbnV0ZXMoKVwiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGx1c1wiPjwvaT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwid2FjLWNhbGVuZGFyX19hYnNvbHV0ZV9fdGltZV9fd3JhcHBlcl9fbWludXRlc19fYnRuXCIgKGNsaWNrKT1cImRlY3JlbWVudHNNaW51dGVzKClcIj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLW1pbnVzXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3dhYy1vcHRpb25hbC1kaXNhYmxlLWNvbnRhaW5lcj5cbiAgPHAgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2VuZExhYmVsXCIgKm5nSWY9XCJ0eXBlID09PSAnZWRpdCdcIj57eyBlbmRMYWJlbCB9fTwvcD5cbjwvZGl2PlxuIl19
227
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9hbmd1bGFyLWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUE0Qix1QkFBdUIsRUFBRSxTQUFTLEVBQWMsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDcEssT0FBTyxFQUF3QixpQkFBaUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7QUFpQnpFLE1BQU0sT0FBTyxpQkFBaUI7SUFzRjVCLFlBQW9CLFFBQWtCO1FBQWxCLGFBQVEsR0FBUixRQUFRLENBQVU7UUE1RXRDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFHM0IsU0FBSSxHQUFnQyxPQUFPLENBQUM7UUFjNUMsYUFBUSxHQUFvQztZQUMxQyxXQUFXLEVBQUUsUUFBUTtZQUNyQixVQUFVLEVBQUUsS0FBSztZQUNqQixVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDO1FBR0YsYUFBUSxHQUFHLFFBQVEsQ0FBQztRQVlwQixrQkFBYSxHQUFTLElBQUksSUFBSSxFQUFFLENBQUM7UUFFdkIsdUJBQWtCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUdsRCxhQUFRLEdBQTJDLGdCQUFnQixDQUFDO1FBRXBFLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFUixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRWhC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QkFHRyxRQUFRO3NCQUFoQixLQUFLO2dCQUVJLFVBQVU7c0JBQW5CLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRlUGlwZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0LCBFdmVudEVtaXR0ZXIsIE91dHB1dCwgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzLCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgVmlld0NoaWxkLCBFbGVtZW50UmVmLCBWaWV3RW5jYXBzdWxhdGlvbiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udHJvbFZhbHVlQWNjZXNzb3IsIE5HX1ZBTFVFX0FDQ0VTU09SIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTndiRGF0ZVBpY2tlckNvbXBvbmVudCwgTndiRGF0ZVBpY2tlckV2ZW50LCBOd2JEYXRlUGlja2VyT3B0aW9ucyB9IGZyb20gJ0B3aXppc2hvcC9uZy13aXppLWJ1bG1hJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnd2FjLWNhbGVuZGFyJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NhbGVuZGFyLmNvbXBvbmVudC5odG1sJyxcbiAgcHJvdmlkZXJzOiBbXG4gICAge1xuICAgICAgcHJvdmlkZTogTkdfVkFMVUVfQUNDRVNTT1IsXG4gICAgICB1c2VFeGlzdGluZzogQ2FsZW5kYXJDb21wb25lbnQsXG4gICAgICBtdWx0aTogdHJ1ZVxuICAgIH0sXG4gICAgRGF0ZVBpcGVcbiAgXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcbiAgLy8hIEF0IHRoZSBtb21lbnQsIHRoZSBjb21wb25lbnQgaGFuZGxlIG9ubHkgb25lIGRhdGUgKG5vdCBhIHJhbmdlKVxuICBAVmlld0NoaWxkKCdtaW51dGVzJykgbWludXRlczogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnaG91cnMnKSBob3VyczogRWxlbWVudFJlZjtcbiAgQFZpZXdDaGlsZCgnZGF0ZVBpY2tlcicpIGRhdGVQaWNrZXI6IE53YkRhdGVQaWNrZXJDb21wb25lbnQ7XG5cbiAgQElucHV0KClcbiAgbGFiZWw6IHN0cmluZyB8IG51bGw7XG5cbiAgQElucHV0KClcbiAgYm9sZExhYmVsOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQElucHV0KClcbiAgdHlwZTogJ2lucHV0JyB8ICdlZGl0JyB8ICdzZWxlY3QnID0gJ2lucHV0JztcblxuICBASW5wdXQoKVxuICBzZXQgb3B0aW9ucyhvcHRpb25zOiBSZWFkb25seTxOd2JEYXRlUGlja2VyT3B0aW9ucz4pIHtcbiAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgICBpZiAodGhpcy5pc0J1bG1hRGF0ZVBpY2tlckV4aXN0cygpKSB7XG4gICAgICB0aGlzLnVwZGF0ZUJ1bG1hRGF0ZVBpY2tlck9wdGlvbnMob3B0aW9ucyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IG9wdGlvbnMoKSA6IFJlYWRvbmx5PE53YkRhdGVQaWNrZXJPcHRpb25zPiB7XG4gICAgcmV0dXJuIHRoaXMuX29wdGlvbnM7XG4gIH1cblxuICBfb3B0aW9uczogUmVhZG9ubHk8TndiRGF0ZVBpY2tlck9wdGlvbnM+ICA9IHtcbiAgICBkaXNwbGF5TW9kZTogJ2lubGluZScsXG4gICAgc2hvd0hlYWRlcjogZmFsc2UsXG4gICAgc2hvd0Zvb3RlcjogdHJ1ZSxcbiAgfTtcblxuICBASW5wdXQoKVxuICBwb3NpdGlvbiA9ICdib3R0b20nO1xuXG4gIEBJbnB1dCgpXG4gIHNldCBkYXRlU2VsZWN0ZWQoZGF0ZVNlbGVjdGVkOiBEYXRlKSB7XG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5fZGF0ZVNlbGVjdGVkID0gbmV3IERhdGUoZGF0ZVNlbGVjdGVkKTsgLy8gdHJpZ2dlciBjaGFuZ2UgZGV0ZWN0aW9uIGZvciBwdXJlIHBpcGVcbiAgfVxuICBnZXQgZGF0ZVNlbGVjdGVkKCkgOiBEYXRlIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0ZVNlbGVjdGVkO1xuICB9XG4gIF9kYXRlU2VsZWN0ZWQ6IERhdGUgPSBuZXcgRGF0ZSgpO1xuXG4gIEBPdXRwdXQoKSBkYXRlU2VsZWN0ZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQElucHV0KClcbiAgdHlwZURhdGU6ICdkYXRldGltZScgfCAnZGF0ZXRpbWUtbG9jYWwnIHwgJ2RhdGUnID0gJ2RhdGV0aW1lLWxvY2FsJztcbiAgQElucHV0KClcbiAgbm9NYXJnaW4gPSBmYWxzZTtcblxuICBASW5wdXQoKSBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIEBPdXRwdXQoKSBjaGFuZ2VEYXRhID0gbmV3IEV2ZW50RW1pdHRlcjx7IHN0YXJ0RGF0ZTogRGF0ZTsgZW5kRGF0ZTogRGF0ZTsgfT4oKTtcbiAgb3BlbiA9IGZhbHNlO1xuICBzdGFydExhYmVsID0gJyc7XG4gIGVuZExhYmVsID0gJyc7XG5cbiAgc2V0IGNhbGVuZGFyTWludXRlcyhjYWxlbmRhck1pbnV0ZXM6IHN0cmluZykge1xuICAgIGNvbnN0IG1pbnV0ZXMgPSB0aGlzLmZvcm1hdFRpbWUoY2FsZW5kYXJNaW51dGVzLCAwLCA1OSk7XG4gICAgdGhpcy5kYXRlU2VsZWN0ZWQuc2V0TWludXRlcyhtaW51dGVzKTtcbiAgICB0aGlzLmRhdGVTZWxlY3RlZCA9IHRoaXMuZGF0ZVNlbGVjdGVkOyAvLyB0cmlnZ2VyIGNoYW5nZSBkZXRlY3Rpb25cbiAgICB0aGlzLm1pbnV0ZXMubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuZGF0ZVNlbGVjdGVkLCAnbW0nKTsgLy8gZm9yY2UgdG8gdXBkYXRlIHRoZSBpbnB1dCB2YWx1ZVxuICAgIHRoaXMudHJpZ2dlckRhdGVTZWxlY3RlZENoYW5nZSgpO1xuICB9XG5cbiAgZ2V0IGNhbGVuZGFyTWludXRlcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybSh0aGlzLmRhdGVTZWxlY3RlZCwgJ21tJyk7XG4gIH1cblxuICBzZXQgY2FsZW5kYXJIb3VycyhjYWxlbmRhckhvdXJzOiBzdHJpbmcpIHtcbiAgICBjb25zdCBob3VycyA9IHRoaXMuZm9ybWF0VGltZShjYWxlbmRhckhvdXJzLCAwLCAyMyk7XG4gICAgdGhpcy5kYXRlU2VsZWN0ZWQuc2V0SG91cnMoaG91cnMpO1xuICAgIHRoaXMuZGF0ZVNlbGVjdGVkID0gdGhpcy5kYXRlU2VsZWN0ZWQ7IC8vIHRyaWdnZXIgY2hhbmdlIGRldGVjdGlvblxuICAgIHRoaXMuaG91cnMubmF0aXZlRWxlbWVudC52YWx1ZSA9IHRoaXMuZGF0ZVBpcGUudHJhbnNmb3JtKHRoaXMuZGF0ZVNlbGVjdGVkLCAnSEgnKTsgLy8gZm9yY2UgdG8gdXBkYXRlIHRoZSBpbnB1dCB2YWx1ZVxuICAgIHRoaXMudHJpZ2dlckRhdGVTZWxlY3RlZENoYW5nZSgpO1xuICB9XG5cbiAgZ2V0IGNhbGVuZGFySG91cnMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0odGhpcy5kYXRlU2VsZWN0ZWQsICdISCcpO1xuICB9XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGUpIHt9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgIGlmIChjaGFuZ2VzLmxhYmVsIHx8IGNoYW5nZXMudHlwZSkge1xuICAgICAgdGhpcy5zZXRDYWxlbmRhckxhYmVsKCk7XG4gICAgfVxuICB9XG5cbiAgb25DaGFuZ2VEYXRlKHNlbGVjdGVkRGF0ZXM6IE53YkRhdGVQaWNrZXJFdmVudCkge1xuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2VsZWN0ZWREYXRlcy5zdGFydERhdGUuc2V0SG91cnModGhpcy5kYXRlU2VsZWN0ZWQuZ2V0SG91cnMoKSk7XG4gICAgc2VsZWN0ZWREYXRlcy5zdGFydERhdGUuc2V0TWludXRlcyh0aGlzLmRhdGVTZWxlY3RlZC5nZXRNaW51dGVzKCkpO1xuXG4gICAgdGhpcy5kYXRlU2VsZWN0ZWQgPSBzZWxlY3RlZERhdGVzLnN0YXJ0RGF0ZTtcbiAgICB0aGlzLnRyaWdnZXJEYXRlU2VsZWN0ZWRDaGFuZ2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgdHJpZ2dlckRhdGVTZWxlY3RlZENoYW5nZSgpIHtcbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuZGF0ZVNlbGVjdGVkKTtcbiAgICB0aGlzLmRhdGVTZWxlY3RlZENoYW5nZS5lbWl0KHRoaXMuZGF0ZVNlbGVjdGVkKTtcbiAgICB0aGlzLnRyaWdnZXJDaGFuZ2Uoe1xuICAgICAgc3RhcnREYXRlOiB0aGlzLmRhdGVTZWxlY3RlZCxcbiAgICAgIGVuZERhdGU6IHRoaXMuZGF0ZVNlbGVjdGVkXG4gICAgfSk7XG4gIH1cblxuICB0cmlnZ2VyQ2hhbmdlKGV2ZW50OiB7IHN0YXJ0RGF0ZTogRGF0ZTsgZW5kRGF0ZTogRGF0ZTsgfSkge1xuICAgIHRoaXMuY2hhbmdlRGF0YS5lbWl0KGV2ZW50KTtcbiAgfVxuXG4gIG9wZW5DYWxlbmRhcih2YWx1ZSA9IG51bGwpIHtcblxuICAgIGlmICh0aGlzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSAnY2xvc2UnKSB7XG4gICAgICBpZiAodGhpcy5vcGVuKSB7XG4gICAgICAgIHRoaXMub3BlbiA9IGZhbHNlO1xuICAgICAgICB0aGlzLm9uVG91Y2goKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuID0gIXRoaXMub3BlbjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldENhbGVuZGFyTGFiZWwoKSB7XG4gICAgaWYgKHRoaXMudHlwZSA9PT0gJ2VkaXQnICYmIHRoaXMubGFiZWwpIHtcbiAgICAgIGNvbnN0IHNwbGl0TGFiZWwgPSB0aGlzLmxhYmVsLnNwbGl0KCd7eH0nKTtcbiAgICAgIGlmIChzcGxpdExhYmVsLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgdGhpcy5zdGFydExhYmVsID0gc3BsaXRMYWJlbFswXTtcbiAgICAgICAgdGhpcy5lbmRMYWJlbCA9IHNwbGl0TGFiZWxbMV07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnN0YXJ0TGFiZWwgPSB0aGlzLmxhYmVsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGluY3JlbWVudE1pbnV0ZXMoJGV2ZW50OiBFdmVudCkge1xuICAgIHRoaXMuY2FsZW5kYXJNaW51dGVzID0gcGFyc2VJbnQodGhpcy5jYWxlbmRhck1pbnV0ZXMsIDEwKSArIDEgKyAnJztcbiAgICAkZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIGRlY3JlbWVudHNNaW51dGVzKCRldmVudDogRXZlbnQpIHtcbiAgICB0aGlzLmNhbGVuZGFyTWludXRlcyA9IHBhcnNlSW50KHRoaXMuY2FsZW5kYXJNaW51dGVzLCAxMCkgLSAxICsgJyc7XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBpbmNyZW1lbnRIb3VycygkZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5jYWxlbmRhckhvdXJzID0gcGFyc2VJbnQodGhpcy5jYWxlbmRhckhvdXJzLCAxMCkgKyAxICsgJyc7XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBkZWNyZW1lbnRIb3VycygkZXZlbnQ6IEV2ZW50KSB7XG4gICAgdGhpcy5jYWxlbmRhckhvdXJzID0gcGFyc2VJbnQodGhpcy5jYWxlbmRhckhvdXJzLCAxMCkgLSAxICsgJyc7XG4gICAgJGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICAvKlxuICAgIEVuc3VyZSB0aGF0IHRoZSBpbnB1dCB2YWx1ZSBpcyBhIG51bWJlciBhbmQgdGhhdCBpdCBpcyBiZXR3ZWVuIG1pbiBhbmQgbWF4XG4gICovXG4gIHByaXZhdGUgZm9ybWF0VGltZSh0aW1lOiBzdHJpbmcgfCBudW1iZXIsIG1pbiA9IDAsIG1heCA9IDU5KSB7XG4gICAgbGV0IHRpbWVOdW1iZXIgPSB0eXBlb2YgdGltZSA9PT0gJ3N0cmluZycgPyBwYXJzZUludCh0aW1lLCAxMCkgOiB0aW1lO1xuICAgIHRpbWVOdW1iZXIgPSB0aW1lTnVtYmVyID4gbWF4ID8gbWluIDogdGltZU51bWJlcjtcbiAgICB0aW1lTnVtYmVyID0gdGltZU51bWJlciA8IG1pbiA/IG1heCA6IHRpbWVOdW1iZXI7XG4gICAgdGltZU51bWJlciA9IHBhcnNlSW50KCgnJyArIHRpbWVOdW1iZXIpLnNsaWNlKC0yKSk7IC8vIGtlZXBzIG9ubHkgdGhlIGxhc3QgMiBkaWdpdHNcbiAgICByZXR1cm4gdGltZU51bWJlcjtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlQnVsbWFEYXRlUGlja2VyT3B0aW9ucyhvcHRpb25zOiBSZWFkb25seTxOd2JEYXRlUGlja2VyT3B0aW9ucz4pIHtcbiAgICBjb25zdCBidWxtYUNhbGVuZGFyRGF0ZVBpY2tlciA9IHRoaXMuZGF0ZVBpY2tlclsnYnVsbWFDYWxlbmRhciddLmRhdGVQaWNrZXI7XG4gICAgYnVsbWFDYWxlbmRhckRhdGVQaWNrZXIubWluID0gb3B0aW9ucy5taW5EYXRlO1xuICAgIGJ1bG1hQ2FsZW5kYXJEYXRlUGlja2VyLm1heCA9IG9wdGlvbnMubWF4RGF0ZTtcbiAgICBidWxtYUNhbGVuZGFyRGF0ZVBpY2tlci5yZWZyZXNoKCk7XG4gIH1cblxuICBwcml2YXRlIGlzQnVsbWFEYXRlUGlja2VyRXhpc3RzKCkge1xuICAgIHJldHVybiB0aGlzLmRhdGVQaWNrZXIgJiYgdGhpcy5kYXRlUGlja2VyWydidWxtYUNhbGVuZGFyJ10gJiYgdGhpcy5kYXRlUGlja2VyWydidWxtYUNhbGVuZGFyJ10uZGF0ZVBpY2tlcjtcbiAgfVxuXG4gIC8vIENvbnRyb2xWYWx1ZUFjY2Vzc29yIG1ldGhvZHNcblxuICBvbkNoYW5nZTogKHZhbHVlOiBEYXRlKSA9PiB2b2lkID0gKCkgPT4ge307XG5cbiAgb25Ub3VjaDogKCkgPT4gdm9pZCA9ICgpID0+IHt9O1xuXG4gIHdyaXRlVmFsdWUoZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIGlmICghZGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLmRhdGVTZWxlY3RlZCA9IGRhdGU7XG4gIH1cbiAgcmVnaXN0ZXJPbkNoYW5nZShmbjogYW55KXtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cbiAgcmVnaXN0ZXJPblRvdWNoZWQoZm46IGFueSl7XG4gICAgICB0aGlzLm9uVG91Y2ggPSBmbjtcbiAgfVxuICBzZXREaXNhYmxlZFN0YXRlKGlzRGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLmRpc2FibGVkID0gaXNEaXNhYmxlZDtcbiAgfVxufVxuIiwiPGRpdlxuICBjbGFzcz1cIndhYy1jYWxlbmRhclwiXG4gIFtuZ0NsYXNzXT1cIntcbiAgICAnd2FjLWNhbGVuZGFyLS1pbnB1dCc6IHR5cGUgPT09ICdpbnB1dCcsXG4gICAgJ3dhYy1jYWxlbmRhci0tZWRpdCc6IHR5cGUgPT09ICdlZGl0JyxcbiAgICAnd2FjLWNhbGVuZGFyLS1zZWxlY3QnOiB0eXBlID09PSAnc2VsZWN0JyxcbiAgICAnd2FjLWNhbGVuZGFyLS1uby1tYXJnaW4nOiBub01hcmdpbixcbiAgICAnd2FjLWNhbGVuZGFyLS1vcGVuJzogb3BlblxuICB9XCJcbiAgW3pJbmRleFRvZ2dsZV09XCJvcGVuXCJcbj5cbiAgPHAgW2NsYXNzXT1cIid3YWMtY2FsZW5kYXJfX2xhYmVsJyArIChib2xkTGFiZWwgPyAnIGJvbGQnIDogJycpXCIgKm5nSWY9XCJsYWJlbCAmJiAodHlwZSA9PT0gJ2lucHV0JyB8fCB0eXBlID09PSAnc2VsZWN0JylcIiAoY2xpY2spPVwib3BlbkNhbGVuZGFyKClcIj57eyBsYWJlbCB9fTwvcD5cbiAgPHAgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3N0YXJ0TGFiZWxcIiAqbmdJZj1cInR5cGUgPT09ICdlZGl0J1wiPnt7IHN0YXJ0TGFiZWwgfX08L3A+XG4gIDx3YWMtb3B0aW9uYWwtZGlzYWJsZS1jb250YWluZXIgW2Rpc2FibGVkXT1cImRpc2FibGVkXCI+XG4gICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYXV0b0hpZGVcIiB3ekF1dG9IaWRlIChjbGlja091dHNpZGUpPVwib3BlbkNhbGVuZGFyKCdjbG9zZScpXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX193cmFwcGVyXCI+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX2lucHV0XCIgKm5nSWY9XCJ0eXBlID09PSAnaW5wdXQnXCIgKGNsaWNrKT1cIm9wZW5DYWxlbmRhcigpXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fd3JhcHBlcl9faW5wdXRfX2ljb25cIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFyIGZhLWNhbGVuZGFyLWFsdFwiPjwvaT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX193cmFwcGVyX19pbnB1dF9fZGF0ZVwiPlxuICAgICAgICAgICAge3sgZGF0ZVNlbGVjdGVkIHwgZGF0ZTogJ2RkL01NL3l5eXknIH19XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fd3JhcHBlcl9faW5wdXRfX3RpbWVcIj5cbiAgICAgICAgICAgIHt7IGRhdGVTZWxlY3RlZCB8IGRhdGU6ICdISDptbScgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX2VkaXRJblBsYWNlXCIgKm5nSWY9XCJ0eXBlID09PSAnZWRpdCdcIiAoY2xpY2spPVwib3BlbkNhbGVuZGFyKClcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX193cmFwcGVyX19lZGl0SW5QbGFjZV9faWNvblwiPlxuICAgICAgICAgICAgPGkgY2xhc3M9XCJmYWwgZmEtY2FsZW5kYXItYWx0XCI+PC9pPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX2VkaXRJblBsYWNlX19kYXRlXCI+XG4gICAgICAgICAgICB7eyBkYXRlU2VsZWN0ZWQgfCBkYXRlOiAnZGQvTU0veXl5eSBISDptbScgfX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX3dyYXBwZXJfX3NlbGVjdFwiICpuZ0lmPVwidHlwZSA9PT0gJ3NlbGVjdCdcIiAoY2xpY2spPVwib3BlbkNhbGVuZGFyKClcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX193cmFwcGVyX19zZWxlY3RfX2ljb25cIj5cbiAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFsIGZhLWNhbGVuZGFyLWFsdFwiPjwvaT5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX193cmFwcGVyX19zZWxlY3RfX2RhdGVcIj5cbiAgICAgICAgICAgIHt7IGRhdGVTZWxlY3RlZCB8IGRhdGU6ICdkZC9NTS95eXl5IEhIOm1tJyB9fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVcIlxuICAgICAgICBbbmdDbGFzc109XCJ7XG4gICAgICAgICAgdG9wOiBwb3NpdGlvbiA9PT0gJ3RvcCcsXG4gICAgICAgICAgYm90dG9tOiBwb3NpdGlvbiA9PT0gJ2JvdHRvbScsXG4gICAgICAgICAgbGVmdDogcG9zaXRpb24gPT09ICdsZWZ0JyxcbiAgICAgICAgICByaWdodDogcG9zaXRpb24gPT09ICdyaWdodCcsXG4gICAgICAgICAgJ3JpZ2h0LXRvcCc6IHBvc2l0aW9uID09PSAncmlnaHQtdG9wJyxcbiAgICAgICAgICAncmlnaHQtYm90dG9tJzogcG9zaXRpb24gPT09ICdyaWdodC1ib3R0b20nLFxuICAgICAgICAgICdsZWZ0LXRvcCc6IHBvc2l0aW9uID09PSAnbGVmdC10b3AnLFxuICAgICAgICAgICdsZWZ0LWJvdHRvbSc6IHBvc2l0aW9uID09PSAnbGVmdC1ib3R0b20nLFxuICAgICAgICAgICd3aXRoLXRpbWUnOiB0eXBlRGF0ZSA9PT0gJ2RhdGV0aW1lLWxvY2FsJyB8fCB0eXBlRGF0ZSA9PT0gJ2RhdGV0aW1lJ1xuICAgICAgICB9XCJcbiAgICAgID5cbiAgICAgICAgPG53Yi1kYXRlLXBpY2tlciAjZGF0ZVBpY2tlciAoY2hhbmdlKT1cIm9uQ2hhbmdlRGF0ZSgkZXZlbnQpXCIgW29wdGlvbnNdPVwib3B0aW9uc1wiPlxuICAgICAgICAgIDxpbnB1dCBbbndiRGF0ZXBpY2tlclN0YXJ0XT1cImRhdGVQaWNrZXJcIiB0eXBlPVwidGV4dFwiIFtud2JEYXRlVHlwZV09XCInZGF0ZSdcIiBbdmFsdWVdPVwiZGF0ZVNlbGVjdGVkLnRvSVNPU3RyaW5nKClcIiAvPlxuICAgICAgICA8L253Yi1kYXRlLXBpY2tlcj5cbiAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVcIiAqbmdJZj1cInR5cGVEYXRlID09PSAnZGF0ZXRpbWUtbG9jYWwnIHx8IHR5cGVEYXRlID09PSAnZGF0ZXRpbWUnXCI+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlX190aW1lX193cmFwcGVyX19ob3Vyc1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX19hYnNvbHV0ZV9fdGltZV9fd3JhcHBlcl9faG91cnNfX2xlZnRcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwid2FjLWNhbGVuZGFyX19hYnNvbHV0ZV9fdGltZV9fd3JhcHBlcl9faG91cnNfX2J0blwiIChjbGljayk9XCJpbmNyZW1lbnRIb3VycygkZXZlbnQpXCI+XG4gICAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhcyBmYS1wbHVzXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2Fic29sdXRlX190aW1lX193cmFwcGVyX19ob3Vyc19fYnRuXCIgKGNsaWNrKT1cImRlY3JlbWVudEhvdXJzKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLW1pbnVzXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJfX2hvdXJzX19yaWdodFwiPlxuICAgICAgICAgICAgICAgIDxpbnB1dCAjaG91cnMgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImNhbGVuZGFySG91cnNcIiBbd2FjT25seU51bWJlcl09XCJ0cnVlXCIvPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJfX21pbnV0ZXNcIj5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndhYy1jYWxlbmRhcl9fYWJzb2x1dGVfX3RpbWVfX3dyYXBwZXJfX21pbnV0ZXNfX2xlZnRcIj5cbiAgICAgICAgICAgICAgICA8aW5wdXQgI21pbnV0ZXMgdHlwZT1cInRleHRcIiBbKG5nTW9kZWwpXT1cImNhbGVuZGFyTWludXRlc1wiIFt3YWNPbmx5TnVtYmVyXT1cInRydWVcIi8+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2FjLWNhbGVuZGFyX19hYnNvbHV0ZV9fdGltZV9fd3JhcHBlcl9fbWludXRlc19fcmlnaHRcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwid2FjLWNhbGVuZGFyX19hYnNvbHV0ZV9fdGltZV9fd3JhcHBlcl9fbWludXRlc19fYnRuXCIgKGNsaWNrKT1cImluY3JlbWVudE1pbnV0ZXMoJGV2ZW50KVwiPlxuICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9XCJmYXMgZmEtcGx1c1wiPjwvaT5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwid2FjLWNhbGVuZGFyX19hYnNvbHV0ZV9fdGltZV9fd3JhcHBlcl9fbWludXRlc19fYnRuXCIgKGNsaWNrKT1cImRlY3JlbWVudHNNaW51dGVzKCRldmVudClcIj5cbiAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPVwiZmFzIGZhLW1pbnVzXCI+PC9pPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L3dhYy1vcHRpb25hbC1kaXNhYmxlLWNvbnRhaW5lcj5cbiAgPHAgY2xhc3M9XCJ3YWMtY2FsZW5kYXJfX2VuZExhYmVsXCIgKm5nSWY9XCJ0eXBlID09PSAnZWRpdCdcIj57eyBlbmRMYWJlbCB9fTwvcD5cbjwvZGl2PlxuIl19