@colijnit/transaction 12.1.133 → 12.1.135

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/bundles/colijnit-transaction.umd.js +906 -659
  2. package/bundles/colijnit-transaction.umd.js.map +1 -1
  3. package/colijnit-transaction.d.ts +463 -468
  4. package/colijnit-transaction.metadata.json +1 -1
  5. package/esm2015/colijnit-transaction.js +464 -469
  6. package/esm2015/lib/component/core/base/components/transaction-header-block/transaction-header-block.component.js +7 -3
  7. package/esm2015/lib/component/digital-signature/digital-signature.component.js +5 -2
  8. package/esm2015/lib/component/payment/payment.component.js +18 -12
  9. package/esm2015/lib/component/transaction/transaction.component.js +96 -86
  10. package/esm2015/lib/component/transaction-header/transaction-header/transaction-header.component.js +31 -19
  11. package/esm2015/lib/component/transaction-header/transaction-header/transaction-header.module.js +4 -2
  12. package/esm2015/lib/component/transaction-header/transaction-header-delivery/transaction-header-delivery.component.js +36 -16
  13. package/esm2015/lib/component/transaction-header/transaction-header-order/transaction-header-order.component.js +30 -21
  14. package/esm2015/lib/component/transaction-header/transaction-header-payment/transaction-header-payment.component.js +48 -18
  15. package/esm2015/lib/component/transaction-header/transaction-header-relation/transaction-header-relation.component.js +19 -9
  16. package/esm2015/lib/component/transaction-header/transaction-header-relation/transaction-header-relation.module.js +6 -3
  17. package/esm2015/lib/component/transaction-header-fields/transaction-header-payment-button/transaction-header-payment-button.component.js +2 -2
  18. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-invoice/transaction-quick-access-invoice.component.js +9 -7
  19. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-order-delivery/transaction-quick-access-order-delivery.component.js +15 -9
  20. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-overview/transaction-quick-access-overview.component.js +39 -37
  21. package/esm2015/lib/component/transaction-quick-access/transaction-quick-access-send-method-base.component.js +4 -1
  22. package/esm2015/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-article/transaction-purchase-order-filter-content-article.component.js +34 -41
  23. package/esm2015/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-logistics/transaction-purchase-order-filter-content-logistics.component.js +98 -112
  24. package/esm2015/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-order/transaction-purchase-order-filter-content-order.component.js +94 -120
  25. package/esm2015/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-article/transaction-sales-order-filter-content-article.component.js +28 -34
  26. package/esm2015/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-logistics/transaction-sales-order-filter-content-logistics.component.js +51 -73
  27. package/esm2015/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-order/transaction-sales-order-filter-content-order.component.js +42 -71
  28. package/esm2015/lib/component/transaction-search/transaction-filter-historic-state/transaction-filter-historic-state.component.js +9 -2
  29. package/esm2015/lib/component/transaction-search/transaction-filter-item/transaction-filter-item.component.js +9 -3
  30. package/esm2015/lib/component/transaction-tags/transaction-tags.component.js +66 -6
  31. package/esm2015/lib/component/transaction-tags/transaction-tags.module.js +8 -2
  32. package/esm2015/lib/enum/icon.enum.js +2 -1
  33. package/esm2015/lib/model/Settings.js +4 -0
  34. package/esm2015/lib/model/icon-svg.js +2 -1
  35. package/esm2015/lib/res/dictionary/dictionaries.js +3 -3
  36. package/esm2015/lib/service/options.service.js +8 -31
  37. package/esm2015/lib/service/relation-connector.service.js +4 -2
  38. package/esm2015/lib/service/transaction-base.service.js +2 -2
  39. package/esm2015/lib/service/transaction-connector-adapter.service.js +64 -10
  40. package/esm2015/lib/service/transaction-connector.service.js +13 -3
  41. package/esm2015/lib/service/transaction.service.js +47 -25
  42. package/esm2015/lib/transaction-version.js +3 -3
  43. package/esm2015/public_api.js +6 -1
  44. package/fesm2015/colijnit-transaction.js +886 -735
  45. package/fesm2015/colijnit-transaction.js.map +1 -1
  46. package/lib/component/core/base/components/transaction-header-block/style/_layout.scss +27 -0
  47. package/lib/component/core/base/components/transaction-header-block/style/_material-definition.scss +12 -3
  48. package/lib/component/core/base/components/transaction-header-block/transaction-header-block.component.d.ts +1 -0
  49. package/lib/component/digital-signature/digital-signature.component.d.ts +2 -0
  50. package/lib/component/payment/payment.component.d.ts +1 -0
  51. package/lib/component/transaction/style/material.scss +2 -0
  52. package/lib/component/transaction/transaction.component.d.ts +3 -2
  53. package/lib/component/transaction-button-bar/style/_material-definition.scss +1 -1
  54. package/lib/component/transaction-document-text-dialog/style/_layout.scss +32 -0
  55. package/lib/component/transaction-document-text-dialog/style/_material-definition.scss +17 -0
  56. package/lib/component/transaction-document-text-dialog/style/_theme.scss +5 -0
  57. package/lib/component/transaction-document-text-dialog/style/material.scss +4 -0
  58. package/lib/component/transaction-header/style/_layout.scss +1 -1
  59. package/lib/component/transaction-header/style/_material-definition.scss +1 -1
  60. package/lib/component/transaction-header/transaction-header/style/_layout.scss +35 -1
  61. package/lib/component/transaction-header/transaction-header/style/_material-definition.scss +11 -2
  62. package/lib/component/transaction-header/transaction-header/transaction-header.component.d.ts +5 -0
  63. package/lib/component/transaction-header/transaction-header-delivery/style/_layout.scss +57 -11
  64. package/lib/component/transaction-header/transaction-header-delivery/style/_material-definition.scss +22 -2
  65. package/lib/component/transaction-header/transaction-header-delivery/style/_theme.scss +6 -2
  66. package/lib/component/transaction-header/transaction-header-order/style/_layout.scss +11 -5
  67. package/lib/component/transaction-header/transaction-header-order/style/_material-definition.scss +8 -4
  68. package/lib/component/transaction-header/transaction-header-order/style/_theme.scss +1 -0
  69. package/lib/component/transaction-header/transaction-header-payment/style/_layout.scss +46 -0
  70. package/lib/component/transaction-header/transaction-header-payment/style/_material-definition.scss +17 -0
  71. package/lib/component/transaction-header/transaction-header-popup/style/_material-definition.scss +15 -0
  72. package/lib/component/transaction-header/transaction-header-relation/style/_layout.scss +47 -0
  73. package/lib/component/transaction-header/transaction-header-relation/transaction-header-relation.component.d.ts +2 -0
  74. package/lib/component/transaction-header-fields/transaction-header-deliverydate-definitive-button/style/_layout.scss +19 -3
  75. package/lib/component/transaction-header-fields/transaction-header-deliverydate-definitive-button/style/_material-definition.scss +8 -3
  76. package/lib/component/transaction-header-fields/transaction-header-payment-button/style/_material-definition.scss +1 -1
  77. package/lib/component/transaction-header-fields/transaction-header-payment-button/style/_theme.scss +1 -1
  78. package/lib/component/transaction-quick-access/transaction-quick-access-send-method-base.component.d.ts +1 -0
  79. package/lib/component/transaction-search/transaction-filter-categories/style/_layout.scss +1 -1
  80. package/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-article/transaction-purchase-order-filter-content-article.component.d.ts +2 -1
  81. package/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-logistics/transaction-purchase-order-filter-content-logistics.component.d.ts +6 -2
  82. package/lib/component/transaction-search/transaction-filter-content/purchase-order-filter-content/transaction-purchase-order-filter-content-order/transaction-purchase-order-filter-content-order.component.d.ts +2 -1
  83. package/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-article/transaction-sales-order-filter-content-article.component.d.ts +7 -6
  84. package/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-logistics/transaction-sales-order-filter-content-logistics.component.d.ts +2 -1
  85. package/lib/component/transaction-search/transaction-filter-content/sales-order-filter-content/transaction-sales-order-filter-content-order/transaction-sales-order-filter-content-order.component.d.ts +2 -1
  86. package/lib/component/transaction-search/transaction-filter-historic-state/transaction-filter-historic-state.component.d.ts +4 -0
  87. package/lib/component/transaction-search/transaction-filter-item/transaction-filter-item.component.d.ts +4 -0
  88. package/lib/component/transaction-tags/style/_layout.scss +18 -0
  89. package/lib/component/transaction-tags/style/_material-definition.scss +4 -0
  90. package/lib/component/transaction-tags/transaction-tags.component.d.ts +12 -1
  91. package/lib/enum/icon.enum.d.ts +1 -0
  92. package/lib/model/Settings.d.ts +3 -0
  93. package/lib/res/dictionary/dictionaries.d.ts +5 -0
  94. package/lib/service/options.service.d.ts +2 -2
  95. package/lib/service/transaction-connector-adapter.service.d.ts +18 -15
  96. package/lib/service/transaction-connector.service.d.ts +15 -12
  97. package/lib/service/transaction.service.d.ts +10 -6
  98. package/lib/style/_variables.scss +4 -1
  99. package/package.json +9 -9
  100. package/public_api.d.ts +5 -0
@@ -1,5 +1,5 @@
1
1
  import { Component, HostBinding } from '@angular/core';
2
- import { FilterViewmodel } from '@colijnit/corecomponents_v12';
2
+ import { FilterItemMode, FilterViewmodel } from '@colijnit/corecomponents_v12';
3
3
  import { TransactionService } from '../../../../../service/transaction.service';
4
4
  import { TransactionFilterContentBaseComponent } from '../../../../core/base/transaction-filter-content-base.component';
5
5
  import { FilterRequestService } from '../../../service/filter-request.service';
@@ -10,6 +10,7 @@ export class TransactionSalesOrderFilterContentLogisticsComponent extends Transa
10
10
  this.searchService = searchService;
11
11
  this.filterRequestService = filterRequestService;
12
12
  this.transactionService = transactionService;
13
+ this.modes = FilterItemMode;
13
14
  this.deliveryMethods = [];
14
15
  this.deliveryMethodFields = { text: "description", value: "code" };
15
16
  this.warehouseFields = { text: "description", value: "warehouseNo" };
@@ -57,22 +58,19 @@ TransactionSalesOrderFilterContentLogisticsComponent.decorators = [
57
58
 
58
59
  <!--Levermethode-->
59
60
  <div class="filter-item-wrapper">
60
- <co-transaction-filter-item
61
- [placeholder]="'DELIVERY_METHOD'"
61
+ <co-transaction-filter-item [placeholder]="'DELIVERY_METHOD'"
62
62
  [collection]="deliveryMethods"
63
- [searchCollectionPlaceholder]="searchPlaceholder.DeliveryMethod"
64
- (collectionChange)="filterRequestService.handleCollectionChangeForRange($event, 'rangeDeliveryMethod')"
63
+ [(model)]="searchService.searchRequest.rangeDeliveryMethod"
64
+ [mode]="modes.Filterlist"
65
65
  >
66
66
  </co-transaction-filter-item>
67
67
  </div>
68
68
 
69
69
  <!--Leverdatum definitief-->
70
70
  <div class="filter-item-wrapper">
71
- <co-transaction-filter-item [placeholder]="'DELIVERY_DATE_FINAL'" [customContent]="true">
72
- <co-input-checkbox
73
- [model]="searchRequest.deliveryDateDefinitive === 'J'"
74
- (modelChange)="filterRequestService.handleCheckboxValueChangeForString($event, 'deliveryDateDefinitive')"
75
- [label]="'DELIVERY_DATE_FINAL' | localize"></co-input-checkbox>
71
+ <co-transaction-filter-item [placeholder]="'DELIVERY_DATE_FINAL'"
72
+ [(model)]="searchService.searchRequest.deliveryDateDefinitive"
73
+ [mode]="modes.CheckboxToText">
76
74
  </co-transaction-filter-item>
77
75
  </div>
78
76
 
@@ -80,129 +78,109 @@ TransactionSalesOrderFilterContentLogisticsComponent.decorators = [
80
78
  <div class="filter-item-wrapper">
81
79
  <co-transaction-filter-historic-state
82
80
  [label]="'ALLOCATED'"
83
- (collectionChange)="filterRequestService.handleCollectionChangeForArray($event, 'quantityAllocated')"
81
+ [(model)]="searchService.searchRequest.quantityAllocated"
82
+ [mode]="modes.SelectListWithStringCollectionOutput">
84
83
  ></co-transaction-filter-historic-state>
85
84
  </div>
86
85
 
87
86
  <!--Geleverd-->
88
87
  <div class="filter-item-wrapper">
89
- <co-transaction-filter-historic-state
90
- [label]="'DELIVERED'"
91
- (collectionChange)="filterRequestService.handleCollectionChangeForArray($event, 'quantityDelivered')"
88
+ <co-transaction-filter-historic-state [label]="'DELIVERED'"
89
+ [(model)]="searchService.searchRequest.quantityDelivered"
90
+ [mode]="modes.SelectListWithStringCollectionOutput">
92
91
  ></co-transaction-filter-historic-state>
93
92
  </div>
94
93
 
95
94
  <!--Gefactureerd-->
96
95
  <div class="filter-item-wrapper">
97
- <co-transaction-filter-historic-state
98
- [label]="'INVOICED'"
99
- (collectionChange)="filterRequestService.handleCollectionChangeForArray($event, 'quantityInvoiced')"
96
+ <co-transaction-filter-historic-state [label]="'INVOICED'"
97
+ [(model)]="searchService.searchRequest.quantityInvoiced"
98
+ [mode]="modes.SelectListWithStringCollectionOutput">
100
99
  ></co-transaction-filter-historic-state>
101
100
  </div>
102
101
 
103
102
  <!--Te picken-->
104
103
  <div class="filter-item-wrapper">
105
- <co-transaction-filter-historic-state
106
- [label]="'TO_BE_PICKED'"
107
- (collectionChange)="filterRequestService.handleCollectionChangeForArray($event, 'quantityToBePicked')"
104
+ <co-transaction-filter-historic-state [label]="'TO_BE_PICKED'"
105
+ [(model)]="searchService.searchRequest.quantityToBePicked"
106
+ [mode]="modes.SelectListWithStringCollectionOutput">
108
107
  ></co-transaction-filter-historic-state>
109
108
  </div>
110
109
 
111
110
  <!--Gepicked-->
112
111
  <div class="filter-item-wrapper">
113
- <co-transaction-filter-historic-state
114
- [label]="'PICKED'"
115
- (collectionChange)="filterRequestService.handleCollectionChangeForArray($event, 'quantityPicked')"
112
+ <co-transaction-filter-historic-state [label]="'PICKED'"
113
+ [(model)]="searchService.searchRequest.quantityPicked"
114
+ [mode]="modes.SelectListWithStringCollectionOutput">
116
115
  ></co-transaction-filter-historic-state>
117
116
  </div>
118
117
 
119
118
  <!--Bevestigde leverdatum-->
120
119
  <div class="filter-item-wrapper">
121
- <co-transaction-filter-item [placeholder]="'CONFIRMED_DELIVERY_DATE'" [customContent]="true">
122
- <co-input-date-range
123
- [model]="[confirmedDeliveryStartDate, confirmedDeliveryEndDate]"
124
- (modelChange)="onDateRangeChange($event, 'confirmedDeliveryDateRange')"
125
- (cleared)="onClearedDateRangeChange('confirmedDeliveryDateRange')"
126
- [placeholder]="'SELECT_DATE' | localize">
127
- </co-input-date-range>
120
+ <co-transaction-filter-item [placeholder]="'CONFIRMED_DELIVERY_DATE'"
121
+ [(model)]="searchService.searchRequest.confirmedDeliveryDateRange"
122
+ [mode]="modes.DateRangeField">
128
123
  </co-transaction-filter-item>
129
124
  </div>
130
125
 
131
126
  <!--Aankomstdatum-->
132
127
  <div class="filter-item-wrapper">
133
- <co-transaction-filter-item [placeholder]="'ARRIVAL_DATE'" [customContent]="true">
134
- <co-input-date-range
135
- [model]="[arrivalStartDate, arrivalEndDate]"
136
- (modelChange)="onDateRangeChange($event, 'arrivalDateRange')"
137
- (cleared)="onClearedDateRangeChange('arrivalDateRange')"
138
- [placeholder]="'SELECT_DATE' | localize">
139
- </co-input-date-range>
128
+ <co-transaction-filter-item [placeholder]="'ARRIVAL_DATE'"
129
+ [(model)]="searchService.searchRequest.arrivalDateRange"
130
+ [mode]="modes.DateRangeField">
140
131
  </co-transaction-filter-item>
141
132
  </div>
142
133
 
143
134
  <!--Deellevering-->
144
135
  <div class="filter-item-wrapper">
145
- <co-transaction-filter-item [placeholder]="'PART_DELIVERY'" [customContent]="true">
146
- <co-input-checkbox
147
- [model]="searchRequest.partialDelivery === 'J'"
148
- (modelChange)="filterRequestService.handleCheckboxValueChangeForString($event, 'partialDelivery')"
149
- [label]="'PART_DELIVERY' | localize">
150
- </co-input-checkbox>
151
- </co-transaction-filter-item>
136
+ <co-transaction-filter-historic-state [label]="'PART_DELIVERY'"
137
+ [(model)]="searchService.searchRequest.partialDelivery"
138
+ [mode]="modes.CheckboxToText">
139
+ ></co-transaction-filter-historic-state>
152
140
  </div>
153
141
 
154
142
  <!--Magazijn -->
155
143
  <div class="filter-item-wrapper">
156
- <co-transaction-filter-item
157
- [placeholder]="'WAREHOUSE'"
158
- [singleSelect]="true"
144
+ <co-transaction-filter-item [placeholder]="'WAREHOUSE'"
159
145
  [collection]="warehouses"
160
- [searchCollectionPlaceholder]="searchPlaceholder.Warehouse"
161
- (collectionChange)="filterRequestService.handleCollectionChangeForSingleSelect($event, 'warehouse')">
146
+ [(model)]="searchService.searchRequest.warehouse"
147
+ [mode]="modes.SingleSelectList">
162
148
  </co-transaction-filter-item>
163
149
  </div>
164
150
 
165
151
  <!--Bron magazijn-->
166
152
  <div class="filter-item-wrapper">
167
- <co-transaction-filter-item
168
- [placeholder]="'SOURCE_WAREHOUSE'"
169
- [singleSelect]="true"
153
+ <co-transaction-filter-item [placeholder]="'SOURCE_WAREHOUSE'"
170
154
  [collection]="sourceWarehouses"
171
- [searchCollectionPlaceholder]="searchPlaceholder.SourceWarehouse"
172
- (collectionChange)="filterRequestService.handleCollectionChangeForSingleSelect($event, 'sourceWarehouse')">
155
+ [(model)]="searchService.searchRequest.sourceWarehouse"
156
+ [mode]="modes.SingleSelectList">
173
157
  </co-transaction-filter-item>
174
158
  </div>
175
159
 
176
160
  <!--Serienummer -->
177
161
  <div class="filter-item-wrapper">
178
- <co-transaction-filter-item
179
- [placeholder]="'SERIAL_NUMBER'"
180
- [customContent]="true">
181
- <co-input-text [(model)]="searchRequest.serialNumber"
182
- [placeholder]="searchPlaceholder.SerialNumber | localize"></co-input-text>
162
+ <co-transaction-filter-item [placeholder]="'SERIAL_NUMBER'"
163
+ [(model)]="searchService.searchRequest.serialNumber"
164
+ [mode]="modes.TextField"
165
+ >
183
166
  </co-transaction-filter-item>
184
167
  </div>
185
168
 
186
169
  <!--Batchnummer -->
187
170
  <div class="filter-item-wrapper">
188
- <co-transaction-filter-item
189
- [placeholder]="'BATCH_NUMBER'"
190
- [customContent]="true">
191
- <co-input-text [(model)]="searchRequest.batchNumber"
192
- [placeholder]="searchPlaceholder.BatchNumber | localize"></co-input-text>
171
+ <co-transaction-filter-item [placeholder]="'BATCH_NUMBER'"
172
+ [(model)]="searchService.searchRequest.batchNumber"
173
+ [mode]="modes.TextField"
174
+ >
193
175
  </co-transaction-filter-item>
194
176
  </div>
195
177
 
196
178
  <!--Inclusief retouren-->
197
179
  <div class="filter-item-wrapper">
198
- <co-transaction-filter-item [placeholder]="'INCLUDING_RETURNS'" [customContent]="true">
199
- <co-input-checkbox
200
- [label]="'INCLUDING_RETURNS' | localize"
201
- [model]="searchRequest.includingReturns === 1"
202
- (modelChange)="filterRequestService.handleCheckboxValueChangeForNumber($event, 'includingReturns')"
203
- >
204
- </co-input-checkbox>
205
- </co-transaction-filter-item>
180
+ <co-transaction-filter-item [placeholder]="'PICKED'"
181
+ [(model)]="searchRequest.includingReturns"
182
+ [mode]="modes.CheckboxToBinary">
183
+ ></co-transaction-filter-item>
206
184
  </div>
207
185
 
208
186
  <!--Levermethode op (regel/header): todo: nog uitzoeken welke filter dit is-->
@@ -218,4 +196,4 @@ TransactionSalesOrderFilterContentLogisticsComponent.ctorParameters = () => [
218
196
  TransactionSalesOrderFilterContentLogisticsComponent.propDecorators = {
219
197
  showClass: [{ type: HostBinding, args: ["class.co-transaction-search-filter-content",] }]
220
198
  };
221
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tc2FsZXMtb3JkZXItZmlsdGVyLWNvbnRlbnQtbG9naXN0aWNzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLXNlYXJjaC90cmFuc2FjdGlvbi1maWx0ZXItY29udGVudC9zYWxlcy1vcmRlci1maWx0ZXItY29udGVudC90cmFuc2FjdGlvbi1zYWxlcy1vcmRlci1maWx0ZXItY29udGVudC1sb2dpc3RpY3MvdHJhbnNhY3Rpb24tc2FsZXMtb3JkZXItZmlsdGVyLWNvbnRlbnQtbG9naXN0aWNzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUdyRCxPQUFPLEVBQXNCLGVBQWUsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2xGLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQzlFLE9BQU8sRUFBQyxxQ0FBcUMsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBQ3RILE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQzdFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBaUtyRixNQUFNLE9BQU8sb0RBQXFELFNBQVEscUNBQXFDO0lBc0I3RyxZQUNTLGFBQXVDLEVBQ3ZDLG9CQUEwQyxFQUMxQyxrQkFBc0M7UUFFN0MsS0FBSyxDQUFDLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxrQkFBa0IsQ0FBQyxDQUFBO1FBSnZELGtCQUFhLEdBQWIsYUFBYSxDQUEwQjtRQUN2Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFsQnhDLG9CQUFlLEdBQUcsRUFBRSxDQUFDO1FBQ3JCLHlCQUFvQixHQUFvQixFQUFDLElBQUksRUFBRSxhQUFhLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxDQUFDO1FBRzdFLG9CQUFlLEdBQW9CLEVBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFDLENBQUM7UUFHL0UsMEJBQXFCLEdBQW9CLEVBQUMsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsYUFBYSxFQUFDLENBQUM7SUFjNUYsQ0FBQztJQXpCTSxTQUFTO1FBQ2QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBeUJNLFFBQVE7UUFDYixJQUFJLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDdEIsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFTyxjQUFjO1FBQ3BCLElBQUksQ0FBQywwQkFBMEIsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsNkJBQTZCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQywwQkFBMEIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1SSxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsMEJBQTBCLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFDMUksSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyw2QkFBNkIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3hILElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLDZCQUE2QixDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDeEgsQ0FBQztJQUVELGtCQUFrQjtJQUNWLG1CQUFtQjtRQUN6QixJQUFJLENBQUMsa0JBQWtCLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxlQUFpQyxFQUFFLEVBQUU7WUFDdEYsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsV0FBVyxDQUFDO1FBQ3JHLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFlBQVk7SUFDSixjQUFjO1FBQ3BCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxVQUF1QixFQUFFLEVBQUU7WUFDdkUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLGVBQWUsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUN0RixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxtQkFBbUI7SUFDWCxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFVBQXVCLEVBQUUsRUFBRTtZQUN2RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSxlQUFlLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUNsRyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OztZQTlORixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLHFEQUFxRDtnQkFDL0QsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTJKVDthQUNGOzs7WUFoS08sd0JBQXdCO1lBRHhCLG9CQUFvQjtZQUZwQixrQkFBa0I7Ozt3QkFzS3ZCLFdBQVcsU0FBQyw0Q0FBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSG9zdEJpbmRpbmd9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0RlbGl2ZXJ5TWV0aG9kfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvZGVsaXZlcnktbWV0aG9kLmJvJztcclxuaW1wb3J0IHtXYXJlaG91c2V9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC93YXJlaG91c2UuYm8nO1xyXG5pbXBvcnQge0ZpbHRlckl0ZW1WaWV3bW9kZWwsIEZpbHRlclZpZXdtb2RlbH0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uRmlsdGVyQ29udGVudEJhc2VDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvYmFzZS90cmFuc2FjdGlvbi1maWx0ZXItY29udGVudC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7RmlsdGVyUmVxdWVzdFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvZmlsdGVyLXJlcXVlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWFyY2hTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLXNlYXJjaC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tdHJhbnNhY3Rpb24tc2FsZXMtb3JkZXItZmlsdGVyLWNvbnRlbnQtbG9naXN0aWNzJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWZpbHRlci1jb250ZW50LWxvZ2lzdGljcy13cmFwcGVyIHRyYW5zYWN0aW9uLWZpbHRlci1jb250ZW50LXdyYXBwZXJcIj5cclxuXHJcbiAgICAgIDwhLS1MZXZlcm1ldGhvZGUtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidERUxJVkVSWV9NRVRIT0QnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwiZGVsaXZlcnlNZXRob2RzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaENvbGxlY3Rpb25QbGFjZWhvbGRlcl09XCJzZWFyY2hQbGFjZWhvbGRlci5EZWxpdmVyeU1ldGhvZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb2xsZWN0aW9uQ2hhbmdlKT1cImZpbHRlclJlcXVlc3RTZXJ2aWNlLmhhbmRsZUNvbGxlY3Rpb25DaGFuZ2VGb3JSYW5nZSgkZXZlbnQsICdyYW5nZURlbGl2ZXJ5TWV0aG9kJylcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1MZXZlcmRhdHVtIGRlZmluaXRpZWYtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0gW3BsYWNlaG9sZGVyXT1cIidERUxJVkVSWV9EQVRFX0ZJTkFMJ1wiIFtjdXN0b21Db250ZW50XT1cInRydWVcIj5cclxuICAgICAgICAgIDxjby1pbnB1dC1jaGVja2JveFxyXG4gICAgICAgICAgICBbbW9kZWxdPVwic2VhcmNoUmVxdWVzdC5kZWxpdmVyeURhdGVEZWZpbml0aXZlID09PSAnSidcIlxyXG4gICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwiZmlsdGVyUmVxdWVzdFNlcnZpY2UuaGFuZGxlQ2hlY2tib3hWYWx1ZUNoYW5nZUZvclN0cmluZygkZXZlbnQsICdkZWxpdmVyeURhdGVEZWZpbml0aXZlJylcIlxyXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ0RFTElWRVJZX0RBVEVfRklOQUwnIHwgbG9jYWxpemVcIj48L2NvLWlucHV0LWNoZWNrYm94PlxyXG4gICAgICAgIDwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLVRvZWdld2V6ZW4tLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWhpc3RvcmljLXN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0FMTE9DQVRFRCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbGxlY3Rpb25DaGFuZ2UpPVwiZmlsdGVyUmVxdWVzdFNlcnZpY2UuaGFuZGxlQ29sbGVjdGlvbkNoYW5nZUZvckFycmF5KCRldmVudCwgJ3F1YW50aXR5QWxsb2NhdGVkJylcIlxyXG4gICAgICAgID48L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1oaXN0b3JpYy1zdGF0ZT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tR2VsZXZlcmQtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWhpc3RvcmljLXN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0RFTElWRVJFRCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbGxlY3Rpb25DaGFuZ2UpPVwiZmlsdGVyUmVxdWVzdFNlcnZpY2UuaGFuZGxlQ29sbGVjdGlvbkNoYW5nZUZvckFycmF5KCRldmVudCwgJ3F1YW50aXR5RGVsaXZlcmVkJylcIlxyXG4gICAgICAgID48L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1oaXN0b3JpYy1zdGF0ZT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tR2VmYWN0dXJlZXJkLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1oaXN0b3JpYy1zdGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidJTlZPSUNFRCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbGxlY3Rpb25DaGFuZ2UpPVwiZmlsdGVyUmVxdWVzdFNlcnZpY2UuaGFuZGxlQ29sbGVjdGlvbkNoYW5nZUZvckFycmF5KCRldmVudCwgJ3F1YW50aXR5SW52b2ljZWQnKVwiXHJcbiAgICAgICAgPjwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWhpc3RvcmljLXN0YXRlPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1UZSBwaWNrZW4tLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWhpc3RvcmljLXN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1RPX0JFX1BJQ0tFRCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbGxlY3Rpb25DaGFuZ2UpPVwiZmlsdGVyUmVxdWVzdFNlcnZpY2UuaGFuZGxlQ29sbGVjdGlvbkNoYW5nZUZvckFycmF5KCRldmVudCwgJ3F1YW50aXR5VG9CZVBpY2tlZCcpXCJcclxuICAgICAgICA+PC9jby10cmFuc2FjdGlvbi1maWx0ZXItaGlzdG9yaWMtc3RhdGU+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLUdlcGlja2VkLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1oaXN0b3JpYy1zdGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidQSUNLRUQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb2xsZWN0aW9uQ2hhbmdlKT1cImZpbHRlclJlcXVlc3RTZXJ2aWNlLmhhbmRsZUNvbGxlY3Rpb25DaGFuZ2VGb3JBcnJheSgkZXZlbnQsICdxdWFudGl0eVBpY2tlZCcpXCJcclxuICAgICAgICA+PC9jby10cmFuc2FjdGlvbi1maWx0ZXItaGlzdG9yaWMtc3RhdGU+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLUJldmVzdGlnZGUgbGV2ZXJkYXR1bS0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiPlxyXG4gICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbSBbcGxhY2Vob2xkZXJdPVwiJ0NPTkZJUk1FRF9ERUxJVkVSWV9EQVRFJ1wiIFtjdXN0b21Db250ZW50XT1cInRydWVcIj5cclxuICAgICAgICAgIDxjby1pbnB1dC1kYXRlLXJhbmdlXHJcbiAgICAgICAgICAgIFttb2RlbF09XCJbY29uZmlybWVkRGVsaXZlcnlTdGFydERhdGUsIGNvbmZpcm1lZERlbGl2ZXJ5RW5kRGF0ZV1cIlxyXG4gICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwib25EYXRlUmFuZ2VDaGFuZ2UoJGV2ZW50LCAnY29uZmlybWVkRGVsaXZlcnlEYXRlUmFuZ2UnKVwiXHJcbiAgICAgICAgICAgIChjbGVhcmVkKT1cIm9uQ2xlYXJlZERhdGVSYW5nZUNoYW5nZSgnY29uZmlybWVkRGVsaXZlcnlEYXRlUmFuZ2UnKVwiXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU0VMRUNUX0RBVEUnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICAgIDwvY28taW5wdXQtZGF0ZS1yYW5nZT5cclxuICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1BYW5rb21zdGRhdHVtLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtIFtwbGFjZWhvbGRlcl09XCInQVJSSVZBTF9EQVRFJ1wiIFtjdXN0b21Db250ZW50XT1cInRydWVcIj5cclxuICAgICAgICAgIDxjby1pbnB1dC1kYXRlLXJhbmdlXHJcbiAgICAgICAgICAgIFttb2RlbF09XCJbYXJyaXZhbFN0YXJ0RGF0ZSwgYXJyaXZhbEVuZERhdGVdXCJcclxuICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cIm9uRGF0ZVJhbmdlQ2hhbmdlKCRldmVudCwgJ2Fycml2YWxEYXRlUmFuZ2UnKVwiXHJcbiAgICAgICAgICAgIChjbGVhcmVkKT1cIm9uQ2xlYXJlZERhdGVSYW5nZUNoYW5nZSgnYXJyaXZhbERhdGVSYW5nZScpXCJcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTRUxFQ1RfREFURScgfCBsb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgPC9jby1pbnB1dC1kYXRlLXJhbmdlPlxyXG4gICAgICAgIDwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLURlZWxsZXZlcmluZy0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiPlxyXG4gICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbSBbcGxhY2Vob2xkZXJdPVwiJ1BBUlRfREVMSVZFUlknXCIgW2N1c3RvbUNvbnRlbnRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94XHJcbiAgICAgICAgICAgIFttb2RlbF09XCJzZWFyY2hSZXF1ZXN0LnBhcnRpYWxEZWxpdmVyeSA9PT0gJ0onXCJcclxuICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImZpbHRlclJlcXVlc3RTZXJ2aWNlLmhhbmRsZUNoZWNrYm94VmFsdWVDaGFuZ2VGb3JTdHJpbmcoJGV2ZW50LCAncGFydGlhbERlbGl2ZXJ5JylcIlxyXG4gICAgICAgICAgICBbbGFiZWxdPVwiJ1BBUlRfREVMSVZFUlknIHwgbG9jYWxpemVcIj5cclxuICAgICAgICAgIDwvY28taW5wdXQtY2hlY2tib3g+XHJcbiAgICAgICAgPC9jby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tTWFnYXppam4gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInV0FSRUhPVVNFJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaW5nbGVTZWxlY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cIndhcmVob3VzZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoQ29sbGVjdGlvblBsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyLldhcmVob3VzZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb2xsZWN0aW9uQ2hhbmdlKT1cImZpbHRlclJlcXVlc3RTZXJ2aWNlLmhhbmRsZUNvbGxlY3Rpb25DaGFuZ2VGb3JTaW5nbGVTZWxlY3QoJGV2ZW50LCAnd2FyZWhvdXNlJylcIj5cclxuICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1Ccm9uIG1hZ2F6aWpuLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU09VUkNFX1dBUkVIT1VTRSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2luZ2xlU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJzb3VyY2VXYXJlaG91c2VzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3NlYXJjaENvbGxlY3Rpb25QbGFjZWhvbGRlcl09XCJzZWFyY2hQbGFjZWhvbGRlci5Tb3VyY2VXYXJlaG91c2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29sbGVjdGlvbkNoYW5nZSk9XCJmaWx0ZXJSZXF1ZXN0U2VydmljZS5oYW5kbGVDb2xsZWN0aW9uQ2hhbmdlRm9yU2luZ2xlU2VsZWN0KCRldmVudCwgJ3NvdXJjZVdhcmVob3VzZScpXCI+XHJcbiAgICAgICAgPC9jby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tU2VyaWVudW1tZXIgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU0VSSUFMX05VTUJFUidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VzdG9tQ29udGVudF09XCJ0cnVlXCI+XHJcbiAgICAgICAgICA8Y28taW5wdXQtdGV4dCBbKG1vZGVsKV09XCJzZWFyY2hSZXF1ZXN0LnNlcmlhbE51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwic2VhcmNoUGxhY2Vob2xkZXIuU2VyaWFsTnVtYmVyIHwgbG9jYWxpemVcIj48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgPC9jby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tQmF0Y2hudW1tZXIgLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQkFUQ0hfTlVNQkVSJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21Db250ZW50XT1cInRydWVcIj5cclxuICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFsobW9kZWwpXT1cInNlYXJjaFJlcXVlc3QuYmF0Y2hOdW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyLkJhdGNoTnVtYmVyIHwgbG9jYWxpemVcIj48L2NvLWlucHV0LXRleHQ+XHJcbiAgICAgICAgPC9jby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tSW5jbHVzaWVmIHJldG91cmVuLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtIFtwbGFjZWhvbGRlcl09XCInSU5DTFVESU5HX1JFVFVSTlMnXCIgW2N1c3RvbUNvbnRlbnRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94XHJcbiAgICAgICAgICAgIFtsYWJlbF09XCInSU5DTFVESU5HX1JFVFVSTlMnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgICBbbW9kZWxdPVwic2VhcmNoUmVxdWVzdC5pbmNsdWRpbmdSZXR1cm5zID09PSAxXCJcclxuICAgICAgICAgICAgKG1vZGVsQ2hhbmdlKT1cImZpbHRlclJlcXVlc3RTZXJ2aWNlLmhhbmRsZUNoZWNrYm94VmFsdWVDaGFuZ2VGb3JOdW1iZXIoJGV2ZW50LCAnaW5jbHVkaW5nUmV0dXJucycpXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgIDwvY28taW5wdXQtY2hlY2tib3g+XHJcbiAgICAgICAgPC9jby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tTGV2ZXJtZXRob2RlIG9wIChyZWdlbC9oZWFkZXIpOiB0b2RvOiBub2cgdWl0em9la2VuIHdlbGtlIGZpbHRlciBkaXQgaXMtLT5cclxuICAgIDwvZGl2PlxyXG4gIGBcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uU2FsZXNPcmRlckZpbHRlckNvbnRlbnRMb2dpc3RpY3NDb21wb25lbnQgZXh0ZW5kcyBUcmFuc2FjdGlvbkZpbHRlckNvbnRlbnRCYXNlQ29tcG9uZW50IHtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tdHJhbnNhY3Rpb24tc2VhcmNoLWZpbHRlci1jb250ZW50XCIpXHJcbiAgcHVibGljIHNob3dDbGFzcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbGl2ZXJ5TWV0aG9kcyA9IFtdO1xyXG4gIHB1YmxpYyBkZWxpdmVyeU1ldGhvZEZpZWxkczogeyB0ZXh0LCB2YWx1ZSB9ID0ge3RleHQ6IFwiZGVzY3JpcHRpb25cIiwgdmFsdWU6IFwiY29kZVwifTtcclxuXHJcbiAgcHVibGljIHdhcmVob3VzZXM6IEZpbHRlckl0ZW1WaWV3bW9kZWxbXTtcclxuICBwdWJsaWMgd2FyZWhvdXNlRmllbGRzOiB7IHRleHQsIHZhbHVlIH0gPSB7dGV4dDogXCJkZXNjcmlwdGlvblwiLCB2YWx1ZTogXCJ3YXJlaG91c2VOb1wifTtcclxuXHJcbiAgcHVibGljIHNvdXJjZVdhcmVob3VzZXM6IEZpbHRlckl0ZW1WaWV3bW9kZWxbXTtcclxuICBwdWJsaWMgc291cmNlV2FyZWhvdXNlRmllbGRzOiB7IHRleHQsIHZhbHVlIH0gPSB7dGV4dDogXCJkZXNjcmlwdGlvblwiLCB2YWx1ZTogXCJ3YXJlaG91c2VOb1wifTtcclxuXHJcbiAgcHVibGljIGNvbmZpcm1lZERlbGl2ZXJ5U3RhcnREYXRlOiBEYXRlO1xyXG4gIHB1YmxpYyBjb25maXJtZWREZWxpdmVyeUVuZERhdGU6IERhdGU7XHJcblxyXG4gIHB1YmxpYyBhcnJpdmFsU3RhcnREYXRlOiBEYXRlO1xyXG4gIHB1YmxpYyBhcnJpdmFsRW5kRGF0ZTogRGF0ZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgc2VhcmNoU2VydmljZTogVHJhbnNhY3Rpb25TZWFyY2hTZXJ2aWNlLFxyXG4gICAgcHVibGljIGZpbHRlclJlcXVlc3RTZXJ2aWNlOiBGaWx0ZXJSZXF1ZXN0U2VydmljZSxcclxuICAgIHB1YmxpYyB0cmFuc2FjdGlvblNlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZSxcclxuICApIHtcclxuICAgIHN1cGVyKHNlYXJjaFNlcnZpY2UsIGZpbHRlclJlcXVlc3RTZXJ2aWNlLCB0cmFuc2FjdGlvblNlcnZpY2UpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zZXRSYW5nZURhdGVzKCk7XHJcbiAgICB0aGlzLl9zZXREZWxpdmVyeU1ldGhvZHMoKTtcclxuICAgIHRoaXMuX3NldFdhcmVob3VzZXMoKTtcclxuICAgIHRoaXMuX3NldFNvdXJjZVdhcmVob3VzZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldFJhbmdlRGF0ZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpcm1lZERlbGl2ZXJ5U3RhcnREYXRlID0gdGhpcy5maWx0ZXJSZXF1ZXN0U2VydmljZS5nZXREYXRlRnJvbUZpbHRlclJlcXVlc3RSYW5nZSh0aGlzLnNlYXJjaFJlcXVlc3QuY29uZmlybWVkRGVsaXZlcnlEYXRlUmFuZ2UsIDApO1xyXG4gICAgdGhpcy5jb25maXJtZWREZWxpdmVyeUVuZERhdGUgPSB0aGlzLmZpbHRlclJlcXVlc3RTZXJ2aWNlLmdldERhdGVGcm9tRmlsdGVyUmVxdWVzdFJhbmdlKHRoaXMuc2VhcmNoUmVxdWVzdC5jb25maXJtZWREZWxpdmVyeURhdGVSYW5nZSwgMSk7XHJcbiAgICB0aGlzLmFycml2YWxTdGFydERhdGUgPSB0aGlzLmZpbHRlclJlcXVlc3RTZXJ2aWNlLmdldERhdGVGcm9tRmlsdGVyUmVxdWVzdFJhbmdlKHRoaXMuc2VhcmNoUmVxdWVzdC5hcnJpdmFsRGF0ZVJhbmdlLCAwKTtcclxuICAgIHRoaXMuYXJyaXZhbEVuZERhdGUgPSB0aGlzLmZpbHRlclJlcXVlc3RTZXJ2aWNlLmdldERhdGVGcm9tRmlsdGVyUmVxdWVzdFJhbmdlKHRoaXMuc2VhcmNoUmVxdWVzdC5hcnJpdmFsRGF0ZVJhbmdlLCAxKTtcclxuICB9XHJcblxyXG4gIC8vRGVsaXZlcnkgTWV0aG9kc1xyXG4gIHByaXZhdGUgX3NldERlbGl2ZXJ5TWV0aG9kcygpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldERlbGl2ZXJ5TWV0aG9kcygpLnRoZW4oKGRlbGl2ZXJ5TWV0aG9kczogRGVsaXZlcnlNZXRob2RbXSkgPT4ge1xyXG4gICAgICB0aGlzLmRlbGl2ZXJ5TWV0aG9kcyA9IG5ldyBGaWx0ZXJWaWV3bW9kZWwoZGVsaXZlcnlNZXRob2RzLCB0aGlzLmRlbGl2ZXJ5TWV0aG9kRmllbGRzKS5maWx0ZXJJdGVtcztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9XYXJlaG91c2VzXHJcbiAgcHJpdmF0ZSBfc2V0V2FyZWhvdXNlcygpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldFdhcmVob3VzZXMoKS50aGVuKCh3YXJlaG91c2VzOiBXYXJlaG91c2VbXSkgPT4ge1xyXG4gICAgICB0aGlzLndhcmVob3VzZXMgPSBuZXcgRmlsdGVyVmlld21vZGVsKHdhcmVob3VzZXMsIHRoaXMud2FyZWhvdXNlRmllbGRzKS5maWx0ZXJJdGVtcztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9Tb3VyY2UgV2FyZWhvdXNlc1xyXG4gIHByaXZhdGUgX3NldFNvdXJjZVdhcmVob3VzZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRXYXJlaG91c2VzKCkudGhlbigod2FyZWhvdXNlczogV2FyZWhvdXNlW10pID0+IHtcclxuICAgICAgdGhpcy5zb3VyY2VXYXJlaG91c2VzID0gbmV3IEZpbHRlclZpZXdtb2RlbCh3YXJlaG91c2VzLCB0aGlzLnNvdXJjZVdhcmVob3VzZUZpZWxkcykuZmlsdGVySXRlbXM7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
199
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tc2FsZXMtb3JkZXItZmlsdGVyLWNvbnRlbnQtbG9naXN0aWNzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RyYW5zYWN0aW9uL3NyYy9saWIvY29tcG9uZW50L3RyYW5zYWN0aW9uLXNlYXJjaC90cmFuc2FjdGlvbi1maWx0ZXItY29udGVudC9zYWxlcy1vcmRlci1maWx0ZXItY29udGVudC90cmFuc2FjdGlvbi1zYWxlcy1vcmRlci1maWx0ZXItY29udGVudC1sb2dpc3RpY3MvdHJhbnNhY3Rpb24tc2FsZXMtb3JkZXItZmlsdGVyLWNvbnRlbnQtbG9naXN0aWNzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFFLFdBQVcsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUdyRCxPQUFPLEVBQUMsY0FBYyxFQUF1QixlQUFlLEVBQUMsTUFBTSw4QkFBOEIsQ0FBQztBQUNsRyxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQztBQUM5RSxPQUFPLEVBQUMscUNBQXFDLEVBQUMsTUFBTSxpRUFBaUUsQ0FBQztBQUN0SCxPQUFPLEVBQUMsb0JBQW9CLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUM3RSxPQUFPLEVBQUMsd0JBQXdCLEVBQUMsTUFBTSw2Q0FBNkMsQ0FBQztBQTBJckYsTUFBTSxPQUFPLG9EQUFxRCxTQUFRLHFDQUFxQztJQXVCN0csWUFDUyxhQUF1QyxFQUN2QyxvQkFBMEMsRUFDMUMsa0JBQXNDO1FBRTdDLEtBQUssQ0FBQyxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtRQUp2RCxrQkFBYSxHQUFiLGFBQWEsQ0FBMEI7UUFDdkMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUFzQjtRQUMxQyx1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FB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QUFrQjs7O3dCQWdKdkIsV0FBVyxTQUFDLDRDQUE0QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBIb3N0QmluZGluZ30gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7RGVsaXZlcnlNZXRob2R9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9kZWxpdmVyeS1tZXRob2QuYm8nO1xyXG5pbXBvcnQge1dhcmVob3VzZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL3dhcmVob3VzZS5ibyc7XHJcbmltcG9ydCB7RmlsdGVySXRlbU1vZGUsIEZpbHRlckl0ZW1WaWV3bW9kZWwsIEZpbHRlclZpZXdtb2RlbH0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uRmlsdGVyQ29udGVudEJhc2VDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvYmFzZS90cmFuc2FjdGlvbi1maWx0ZXItY29udGVudC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7RmlsdGVyUmVxdWVzdFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvZmlsdGVyLXJlcXVlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWFyY2hTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLXNlYXJjaC5zZXJ2aWNlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tdHJhbnNhY3Rpb24tc2FsZXMtb3JkZXItZmlsdGVyLWNvbnRlbnQtbG9naXN0aWNzJyxcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgPGRpdiBjbGFzcz1cInRyYW5zYWN0aW9uLWZpbHRlci1jb250ZW50LWxvZ2lzdGljcy13cmFwcGVyIHRyYW5zYWN0aW9uLWZpbHRlci1jb250ZW50LXdyYXBwZXJcIj5cclxuXHJcbiAgICAgIDwhLS1MZXZlcm1ldGhvZGUtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0gW3BsYWNlaG9sZGVyXT1cIidERUxJVkVSWV9NRVRIT0QnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwiZGVsaXZlcnlNZXRob2RzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwic2VhcmNoU2VydmljZS5zZWFyY2hSZXF1ZXN0LnJhbmdlRGVsaXZlcnlNZXRob2RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZV09XCJtb2Rlcy5GaWx0ZXJsaXN0XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9jby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tTGV2ZXJkYXR1bSBkZWZpbml0aWVmLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtIFtwbGFjZWhvbGRlcl09XCInREVMSVZFUllfREFURV9GSU5BTCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZWFyY2hTZXJ2aWNlLnNlYXJjaFJlcXVlc3QuZGVsaXZlcnlEYXRlRGVmaW5pdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlXT1cIm1vZGVzLkNoZWNrYm94VG9UZXh0XCI+XHJcbiAgICAgICAgPC9jby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tVG9lZ2V3ZXplbi0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiPlxyXG4gICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaGlzdG9yaWMtc3RhdGVcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQUxMT0NBVEVEJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZWFyY2hTZXJ2aWNlLnNlYXJjaFJlcXVlc3QucXVhbnRpdHlBbGxvY2F0ZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVdPVwibW9kZXMuU2VsZWN0TGlzdFdpdGhTdHJpbmdDb2xsZWN0aW9uT3V0cHV0XCI+XHJcbiAgICAgICAgPjwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWhpc3RvcmljLXN0YXRlPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1HZWxldmVyZC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiPlxyXG4gICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaGlzdG9yaWMtc3RhdGUgW2xhYmVsXT1cIidERUxJVkVSRUQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsobW9kZWwpXT1cInNlYXJjaFNlcnZpY2Uuc2VhcmNoUmVxdWVzdC5xdWFudGl0eURlbGl2ZXJlZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZV09XCJtb2Rlcy5TZWxlY3RMaXN0V2l0aFN0cmluZ0NvbGxlY3Rpb25PdXRwdXRcIj5cclxuICAgICAgICA+PC9jby10cmFuc2FjdGlvbi1maWx0ZXItaGlzdG9yaWMtc3RhdGU+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLUdlZmFjdHVyZWVyZC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiPlxyXG4gICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaGlzdG9yaWMtc3RhdGUgW2xhYmVsXT1cIidJTlZPSUNFRCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwic2VhcmNoU2VydmljZS5zZWFyY2hSZXF1ZXN0LnF1YW50aXR5SW52b2ljZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVdPVwibW9kZXMuU2VsZWN0TGlzdFdpdGhTdHJpbmdDb2xsZWN0aW9uT3V0cHV0XCI+XHJcbiAgICAgICAgPjwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWhpc3RvcmljLXN0YXRlPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1UZSBwaWNrZW4tLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWhpc3RvcmljLXN0YXRlIFtsYWJlbF09XCInVE9fQkVfUElDS0VEJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZWFyY2hTZXJ2aWNlLnNlYXJjaFJlcXVlc3QucXVhbnRpdHlUb0JlUGlja2VkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlXT1cIm1vZGVzLlNlbGVjdExpc3RXaXRoU3RyaW5nQ29sbGVjdGlvbk91dHB1dFwiPlxyXG4gICAgICAgID48L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1oaXN0b3JpYy1zdGF0ZT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tR2VwaWNrZWQtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWhpc3RvcmljLXN0YXRlIFtsYWJlbF09XCInUElDS0VEJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZWFyY2hTZXJ2aWNlLnNlYXJjaFJlcXVlc3QucXVhbnRpdHlQaWNrZWRcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVdPVwibW9kZXMuU2VsZWN0TGlzdFdpdGhTdHJpbmdDb2xsZWN0aW9uT3V0cHV0XCI+XHJcbiAgICAgICAgPjwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWhpc3RvcmljLXN0YXRlPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1CZXZlc3RpZ2RlIGxldmVyZGF0dW0tLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0gW3BsYWNlaG9sZGVyXT1cIidDT05GSVJNRURfREVMSVZFUllfREFURSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZWFyY2hTZXJ2aWNlLnNlYXJjaFJlcXVlc3QuY29uZmlybWVkRGVsaXZlcnlEYXRlUmFuZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZV09XCJtb2Rlcy5EYXRlUmFuZ2VGaWVsZFwiPlxyXG4gICAgICAgIDwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLUFhbmtvbXN0ZGF0dW0tLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0gW3BsYWNlaG9sZGVyXT1cIidBUlJJVkFMX0RBVEUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwic2VhcmNoU2VydmljZS5zZWFyY2hSZXF1ZXN0LmFycml2YWxEYXRlUmFuZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZV09XCJtb2Rlcy5EYXRlUmFuZ2VGaWVsZFwiPlxyXG4gICAgICAgIDwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLURlZWxsZXZlcmluZy0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiPlxyXG4gICAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1oaXN0b3JpYy1zdGF0ZSBbbGFiZWxdPVwiJ1BBUlRfREVMSVZFUlknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwic2VhcmNoU2VydmljZS5zZWFyY2hSZXF1ZXN0LnBhcnRpYWxEZWxpdmVyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlXT1cIm1vZGVzLkNoZWNrYm94VG9UZXh0XCI+XHJcbiAgICAgICAgICAgID48L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1oaXN0b3JpYy1zdGF0ZT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tTWFnYXppam4gLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtIFtwbGFjZWhvbGRlcl09XCInV0FSRUhPVVNFJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cIndhcmVob3VzZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZWFyY2hTZXJ2aWNlLnNlYXJjaFJlcXVlc3Qud2FyZWhvdXNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVdPVwibW9kZXMuU2luZ2xlU2VsZWN0TGlzdFwiPlxyXG4gICAgICAgIDwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLUJyb24gbWFnYXppam4tLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0gW3BsYWNlaG9sZGVyXT1cIidTT1VSQ0VfV0FSRUhPVVNFJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cInNvdXJjZVdhcmVob3VzZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZWFyY2hTZXJ2aWNlLnNlYXJjaFJlcXVlc3Quc291cmNlV2FyZWhvdXNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVdPVwibW9kZXMuU2luZ2xlU2VsZWN0TGlzdFwiPlxyXG4gICAgICAgIDwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLVNlcmllbnVtbWVyIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiPlxyXG4gICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbSBbcGxhY2Vob2xkZXJdPVwiJ1NFUklBTF9OVU1CRVInXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwic2VhcmNoU2VydmljZS5zZWFyY2hSZXF1ZXN0LnNlcmlhbE51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlXT1cIm1vZGVzLlRleHRGaWVsZFwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgIDwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLUJhdGNobnVtbWVyIC0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiPlxyXG4gICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbSBbcGxhY2Vob2xkZXJdPVwiJ0JBVENIX05VTUJFUidcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZWFyY2hTZXJ2aWNlLnNlYXJjaFJlcXVlc3QuYmF0Y2hOdW1iZXJcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZV09XCJtb2Rlcy5UZXh0RmllbGRcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1JbmNsdXNpZWYgcmV0b3VyZW4tLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0gW3BsYWNlaG9sZGVyXT1cIidQSUNLRUQnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwic2VhcmNoUmVxdWVzdC5pbmNsdWRpbmdSZXR1cm5zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVdPVwibW9kZXMuQ2hlY2tib3hUb0JpbmFyeVwiPlxyXG4gICAgICAgICAgPjwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLUxldmVybWV0aG9kZSBvcCAocmVnZWwvaGVhZGVyKTogdG9kbzogbm9nIHVpdHpvZWtlbiB3ZWxrZSBmaWx0ZXIgZGl0IGlzLS0+XHJcbiAgICA8L2Rpdj5cclxuICBgXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvblNhbGVzT3JkZXJGaWx0ZXJDb250ZW50TG9naXN0aWNzQ29tcG9uZW50IGV4dGVuZHMgVHJhbnNhY3Rpb25GaWx0ZXJDb250ZW50QmFzZUNvbXBvbmVudCB7XHJcbiAgcHVibGljIHJlYWRvbmx5IG1vZGVzOiB0eXBlb2YgRmlsdGVySXRlbU1vZGUgPSBGaWx0ZXJJdGVtTW9kZTtcclxuXHJcbiAgQEhvc3RCaW5kaW5nKFwiY2xhc3MuY28tdHJhbnNhY3Rpb24tc2VhcmNoLWZpbHRlci1jb250ZW50XCIpXHJcbiAgcHVibGljIHNob3dDbGFzcygpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGRlbGl2ZXJ5TWV0aG9kcyA9IFtdO1xyXG4gIHB1YmxpYyBkZWxpdmVyeU1ldGhvZEZpZWxkczogeyB0ZXh0LCB2YWx1ZSB9ID0ge3RleHQ6IFwiZGVzY3JpcHRpb25cIiwgdmFsdWU6IFwiY29kZVwifTtcclxuXHJcbiAgcHVibGljIHdhcmVob3VzZXM6IEZpbHRlckl0ZW1WaWV3bW9kZWxbXTtcclxuICBwdWJsaWMgd2FyZWhvdXNlRmllbGRzOiB7IHRleHQsIHZhbHVlIH0gPSB7dGV4dDogXCJkZXNjcmlwdGlvblwiLCB2YWx1ZTogXCJ3YXJlaG91c2VOb1wifTtcclxuXHJcbiAgcHVibGljIHNvdXJjZVdhcmVob3VzZXM6IEZpbHRlckl0ZW1WaWV3bW9kZWxbXTtcclxuICBwdWJsaWMgc291cmNlV2FyZWhvdXNlRmllbGRzOiB7IHRleHQsIHZhbHVlIH0gPSB7dGV4dDogXCJkZXNjcmlwdGlvblwiLCB2YWx1ZTogXCJ3YXJlaG91c2VOb1wifTtcclxuXHJcbiAgcHVibGljIGNvbmZpcm1lZERlbGl2ZXJ5U3RhcnREYXRlOiBEYXRlO1xyXG4gIHB1YmxpYyBjb25maXJtZWREZWxpdmVyeUVuZERhdGU6IERhdGU7XHJcblxyXG4gIHB1YmxpYyBhcnJpdmFsU3RhcnREYXRlOiBEYXRlO1xyXG4gIHB1YmxpYyBhcnJpdmFsRW5kRGF0ZTogRGF0ZTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwdWJsaWMgc2VhcmNoU2VydmljZTogVHJhbnNhY3Rpb25TZWFyY2hTZXJ2aWNlLFxyXG4gICAgcHVibGljIGZpbHRlclJlcXVlc3RTZXJ2aWNlOiBGaWx0ZXJSZXF1ZXN0U2VydmljZSxcclxuICAgIHB1YmxpYyB0cmFuc2FjdGlvblNlcnZpY2U6IFRyYW5zYWN0aW9uU2VydmljZSxcclxuICApIHtcclxuICAgIHN1cGVyKHNlYXJjaFNlcnZpY2UsIGZpbHRlclJlcXVlc3RTZXJ2aWNlLCB0cmFuc2FjdGlvblNlcnZpY2UpXHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zZXRSYW5nZURhdGVzKCk7XHJcbiAgICB0aGlzLl9zZXREZWxpdmVyeU1ldGhvZHMoKTtcclxuICAgIHRoaXMuX3NldFdhcmVob3VzZXMoKTtcclxuICAgIHRoaXMuX3NldFNvdXJjZVdhcmVob3VzZXMoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldFJhbmdlRGF0ZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbmZpcm1lZERlbGl2ZXJ5U3RhcnREYXRlID0gdGhpcy5maWx0ZXJSZXF1ZXN0U2VydmljZS5nZXREYXRlRnJvbUZpbHRlclJlcXVlc3RSYW5nZSh0aGlzLnNlYXJjaFJlcXVlc3QuY29uZmlybWVkRGVsaXZlcnlEYXRlUmFuZ2UsIDApO1xyXG4gICAgdGhpcy5jb25maXJtZWREZWxpdmVyeUVuZERhdGUgPSB0aGlzLmZpbHRlclJlcXVlc3RTZXJ2aWNlLmdldERhdGVGcm9tRmlsdGVyUmVxdWVzdFJhbmdlKHRoaXMuc2VhcmNoUmVxdWVzdC5jb25maXJtZWREZWxpdmVyeURhdGVSYW5nZSwgMSk7XHJcbiAgICB0aGlzLmFycml2YWxTdGFydERhdGUgPSB0aGlzLmZpbHRlclJlcXVlc3RTZXJ2aWNlLmdldERhdGVGcm9tRmlsdGVyUmVxdWVzdFJhbmdlKHRoaXMuc2VhcmNoUmVxdWVzdC5hcnJpdmFsRGF0ZVJhbmdlLCAwKTtcclxuICAgIHRoaXMuYXJyaXZhbEVuZERhdGUgPSB0aGlzLmZpbHRlclJlcXVlc3RTZXJ2aWNlLmdldERhdGVGcm9tRmlsdGVyUmVxdWVzdFJhbmdlKHRoaXMuc2VhcmNoUmVxdWVzdC5hcnJpdmFsRGF0ZVJhbmdlLCAxKTtcclxuICB9XHJcblxyXG4gIC8vRGVsaXZlcnkgTWV0aG9kc1xyXG4gIHByaXZhdGUgX3NldERlbGl2ZXJ5TWV0aG9kcygpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldERlbGl2ZXJ5TWV0aG9kcygpLnRoZW4oKGRlbGl2ZXJ5TWV0aG9kczogRGVsaXZlcnlNZXRob2RbXSkgPT4ge1xyXG4gICAgICB0aGlzLmRlbGl2ZXJ5TWV0aG9kcyA9IG5ldyBGaWx0ZXJWaWV3bW9kZWwoZGVsaXZlcnlNZXRob2RzLCB0aGlzLmRlbGl2ZXJ5TWV0aG9kRmllbGRzKS5maWx0ZXJJdGVtcztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9XYXJlaG91c2VzXHJcbiAgcHJpdmF0ZSBfc2V0V2FyZWhvdXNlcygpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldFdhcmVob3VzZXMoKS50aGVuKCh3YXJlaG91c2VzOiBXYXJlaG91c2VbXSkgPT4ge1xyXG4gICAgICB0aGlzLndhcmVob3VzZXMgPSBuZXcgRmlsdGVyVmlld21vZGVsKHdhcmVob3VzZXMsIHRoaXMud2FyZWhvdXNlRmllbGRzKS5maWx0ZXJJdGVtcztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy9Tb3VyY2UgV2FyZWhvdXNlc1xyXG4gIHByaXZhdGUgX3NldFNvdXJjZVdhcmVob3VzZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRXYXJlaG91c2VzKCkudGhlbigod2FyZWhvdXNlczogV2FyZWhvdXNlW10pID0+IHtcclxuICAgICAgdGhpcy5zb3VyY2VXYXJlaG91c2VzID0gbmV3IEZpbHRlclZpZXdtb2RlbCh3YXJlaG91c2VzLCB0aGlzLnNvdXJjZVdhcmVob3VzZUZpZWxkcykuZmlsdGVySXRlbXM7XHJcbiAgICB9KTtcclxuICB9XHJcbn1cclxuIl19
@@ -1,7 +1,7 @@
1
1
  import { __awaiter } from "tslib";
2
2
  import { Component, HostBinding } from '@angular/core';
3
3
  import { RelationRequest } from '@colijnit/relationapi/build/model/relation-request';
4
- import { FilterViewmodel } from '@colijnit/corecomponents_v12';
4
+ import { FilterItemMode, FilterViewmodel } from '@colijnit/corecomponents_v12';
5
5
  import { TransactionService } from '../../../../../service/transaction.service';
6
6
  import { TransactionFilterContentBaseComponent } from '../../../../core/base/transaction-filter-content-base.component';
7
7
  import { FilterRequestService } from '../../../service/filter-request.service';
@@ -15,6 +15,7 @@ export class TransactionSalesOrderFilterContentOrderComponent extends Transactio
15
15
  this.filterRequestService = filterRequestService;
16
16
  this.transactionService = transactionService;
17
17
  this.relationService = relationService;
18
+ this.modes = FilterItemMode;
18
19
  this.salesPersonsFields = { text: "name", value: "relationId" };
19
20
  this.tagsFields = { text: "description", value: "tagValueId" };
20
21
  this.branchFields = { text: "familyName", value: "relationId" };
@@ -94,136 +95,106 @@ TransactionSalesOrderFilterContentOrderComponent.decorators = [
94
95
 
95
96
  <!--Orderdatum-->
96
97
  <div class="filter-item-wrapper">
97
- <co-transaction-filter-item [placeholder]="'ORDER_DATE'" [customContent]="true">
98
- <co-input-date-range
99
- [model]="[transStartDate, transEndDate]"
100
- (modelChange)="onDateRangeChange($event, 'rangeTransDate')"
101
- (cleared)="onClearedDateRangeChange('rangeTransDate')"
102
- [placeholder]="'SELECT_DATE' | localize">
103
- </co-input-date-range>
98
+ <co-transaction-filter-item [placeholder]="'ORDER_DATE'"
99
+ [(model)]="searchService.searchRequest.rangeTransDate"
100
+ [mode]="modes.DateRangeField">
104
101
  </co-transaction-filter-item>
105
102
  </div>
106
103
 
107
- <!--Leverdatum-->
108
104
  <div class="filter-item-wrapper">
109
- <co-transaction-filter-item [placeholder]="'DELIVERY_DATE'" [customContent]="true">
110
- <co-input-date-range
111
- [model]="[deliveryStartDate, deliveryEndDate]"
112
- (modelChange)="onDateRangeChange($event, 'deliveryDateRange')"
113
- (cleared)="onClearedDateRangeChange('deliveryDateRange')"
114
- [placeholder]="'SELECT_DATE' | localize">
115
- </co-input-date-range>
105
+ <co-transaction-filter-item [placeholder]="'DELIVERY_DATE'"
106
+ [(model)]="searchService.searchRequest.deliveryDateRange"
107
+ [mode]="modes.DateRangeField">
116
108
  </co-transaction-filter-item>
117
109
  </div>
118
110
 
119
- <!--Filiaal-->
120
111
  <div class="filter-item-wrapper">
121
- <co-transaction-filter-item
122
- [placeholder]="'BRANCH'"
123
- [searchCollectionPlaceholder]="searchPlaceholder.Branch"
112
+ <co-transaction-filter-item [placeholder]="'BRANCH'"
124
113
  [collection]="branches"
125
- (collectionChange)="filterRequestService.handleCollectionChangeForRange($event, 'rangeBranchId')">
114
+ [(model)]="searchService.searchRequest.rangeBranchId"
115
+ [mode]="modes.Filterlist">
126
116
  </co-transaction-filter-item>
127
117
  </div>
128
118
 
129
119
  <!--Verkoper-->
130
120
  <div class="filter-item-wrapper">
131
- <co-transaction-filter-item
132
- [placeholder]="'HANDLED_BY'"
133
- [searchCollectionPlaceholder]="searchPlaceholder.SalesPerson"
121
+ <co-transaction-filter-item [placeholder]="'HANDLED_BY'"
134
122
  [collection]="salesPersons"
135
- (collectionChange)="filterRequestService.handleCollectionChangeForRange($event, 'rangeSalesPerson')"
123
+ [(model)]="searchService.searchRequest.rangeSalesPerson"
124
+ [mode]="modes.Filterlist"
136
125
  >
137
126
  </co-transaction-filter-item>
138
127
  </div>
139
128
 
140
129
  <!--Eigen referentie-->
141
130
  <div class="filter-item-wrapper">
142
- <co-transaction-filter-item
143
- [placeholder]="'OWN_REFERENCE'"
144
- [customContent]="true">
145
- <co-input-text [(model)]="searchRequest.userReference"
146
- [placeholder]="searchPlaceholder.OwnReference | localize"></co-input-text>
131
+ <co-transaction-filter-item [placeholder]="'OWN_REFERENCE'"
132
+ [(model)]="searchService.searchRequest.userReference"
133
+ [mode]="modes.TextField"
134
+ >
147
135
  </co-transaction-filter-item>
148
136
  </div>
149
137
 
150
138
  <!--Tags-->
151
139
  <div class="filter-item-wrapper">
152
- <co-transaction-filter-item
153
- [placeholder]="'TAGS'"
154
- [searchCollectionPlaceholder]="searchPlaceholder.Tags"
140
+ <co-transaction-filter-item [placeholder]="'TAGS'"
155
141
  [collection]="tags"
156
- (collectionChange)="filterRequestService.handleCollectionChangeForRange($event, 'tagRange')">
157
- <co-input-text [(model)]="searchRequest.tagRange" [placeholder]="searchPlaceholder.Tags | localize"></co-input-text>
142
+ [(model)]="searchService.searchRequest.tagRange"
143
+ [mode]="modes.Filterlist">
158
144
  </co-transaction-filter-item>
159
145
  </div>
160
146
 
161
147
  <!--On hold codes-->
162
148
  <div class="filter-item-wrapper">
163
- <co-transaction-filter-item
164
- [placeholder]="'ON_HOLD'"
149
+ <co-transaction-filter-item [placeholder]="'ON_HOLD'"
165
150
  [collection]="onHoldCodes"
166
- (collectionChange)="filterRequestService.handleCollectionChangeForRange($event,'rangeOnHoldCodes')">
167
- <co-input-text [(model)]="searchRequest.tagRange" [placeholder]="searchPlaceholder.OnHold | localize"></co-input-text>
151
+ [(model)]="searchService.searchRequest.rangeOnHoldCodes"
152
+ [mode]="modes.Filterlist">
168
153
  </co-transaction-filter-item>
169
154
  </div>
170
155
 
171
156
  <!--Order definitief-->
172
157
  <div class="filter-item-wrapper">
173
- <co-transaction-filter-item
174
- [placeholder]="'ORDER_DEFINITIVE'"
175
- [customContent]="true">
176
- <co-input-checkbox
177
- [model]="searchRequest.transactionDefinitive === 'J'"
178
- (modelChange)="filterRequestService.handleCheckboxValueChangeForString($event, 'transactionDefinitive')"
179
- [label]="'ORDER_DEFINITIVE' | localize"></co-input-checkbox>
158
+ <co-transaction-filter-item [placeholder]="'ORDER_DEFINITIVE'"
159
+ [(model)]="searchService.searchRequest.transactionDefinitive"
160
+ [mode]="modes.CheckboxToText">
180
161
  </co-transaction-filter-item>
181
162
  </div>
182
163
 
183
164
  <!--Commissiecode-->
184
165
  <div class="filter-item-wrapper">
185
- <co-transaction-filter-item
186
- [placeholder]="'COMMISSION_CODE'"
187
- [searchCollectionPlaceholder]="searchPlaceholder.CommissionCode"
166
+ <co-transaction-filter-item [placeholder]="'COMMISSION_CODE'"
188
167
  [collection]="commissionCodes"
189
- (collectionChange)="filterRequestService.handleCollectionChangeForArray($event, 'commissionCodes')"
168
+ [(model)]="searchService.searchRequest.commissionCodes"
169
+ [mode]="modes.SelectListWithStringCollectionOutput">
190
170
  >
191
171
  </co-transaction-filter-item>
192
172
  </div>
193
173
 
194
- <!--Inactieve transacties-->
195
174
  <div class="filter-item-wrapper">
196
- <co-transaction-filter-item
197
- [placeholder]="'INACTIVE_TRANSACTIONS'"
198
- [customContent]="true">
199
- <co-input-checkbox
200
- [model]="searchRequest.active === false"
201
- (modelChange)="searchRequest.active = !$event"
202
- [label]="'INACTIVE_TRANSACTIONS' | localize"
203
- ></co-input-checkbox>
175
+ <co-transaction-filter-item [placeholder]="'INACTIVE_TRANSACTIONS'"
176
+ [(model)]="searchService.searchRequest.active"
177
+ [mode]="modes.Checkbox">
204
178
  </co-transaction-filter-item>
205
179
  </div>
206
180
 
207
181
  <!--Klantnaam-->
208
182
  <div class="filter-item-wrapper">
209
- <co-transaction-filter-item
210
- [placeholder]="'CUSTOMER_NAME'"
183
+ <co-transaction-filter-item [placeholder]="'CUSTOMER_NAME'"
211
184
  [searchCollectionPlaceholder]="searchPlaceholder.CustomerName"
212
- [singleSelect]="true"
185
+ [mode]="modes.SingleSelectList"
186
+ [(model)]="searchService.searchRequest.relationName"
213
187
  [minSearchCharsToLoadCollection]="3"
214
- [collectionLoadFn]="loadCustomers"
215
- (collectionChange)="filterRequestService.handleCollectionChangeForSingleSelect($event, 'relationName' )">
188
+ [collectionLoadFn]="loadCustomers">
216
189
  </co-transaction-filter-item>
217
190
  </div>
218
191
 
219
192
  <!--Klantgroep-->
220
193
  <div class="filter-item-wrapper">
221
- <co-transaction-filter-item
222
- [placeholder]="'CUSTOMER_GROUP'"
223
- [searchCollectionPlaceholder]="searchPlaceholder.CustomerGroup"
224
- [singleSelect]="true"
225
- [collection]="customerGroups"
226
- (collectionChange)="filterRequestService.handleCollectionChangeForSingleSelect($event, 'customerGroupId')">
194
+ <co-transaction-filter-item [placeholder]="'CUSTOMER_GROUP'"
195
+ [(model)]="searchService.searchRequest.customerGroupId"
196
+ [mode]="modes.SingleSelectList"
197
+ [collection]="customerGroups">
227
198
  </co-transaction-filter-item>
228
199
  </div>
229
200
  </div>
@@ -239,4 +210,4 @@ TransactionSalesOrderFilterContentOrderComponent.ctorParameters = () => [
239
210
  TransactionSalesOrderFilterContentOrderComponent.propDecorators = {
240
211
  showClass: [{ type: HostBinding, args: ["class.co-transaction-search-filter-content",] }]
241
212
  };
242
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tc2FsZXMtb3JkZXItZmlsdGVyLWNvbnRlbnQtb3JkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24tc2VhcmNoL3RyYW5zYWN0aW9uLWZpbHRlci1jb250ZW50L3NhbGVzLW9yZGVyLWZpbHRlci1jb250ZW50L3RyYW5zYWN0aW9uLXNhbGVzLW9yZGVyLWZpbHRlci1jb250ZW50LW9yZGVyL3RyYW5zYWN0aW9uLXNhbGVzLW9yZGVyLWZpbHRlci1jb250ZW50LW9yZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFJckQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQ25GLE9BQU8sRUFBc0IsZUFBZSxFQUFDLE1BQU0sOEJBQThCLENBQUM7QUFDbEYsT0FBTyxFQUFDLGtCQUFrQixFQUFDLE1BQU0sNENBQTRDLENBQUM7QUFDOUUsT0FBTyxFQUFDLHFDQUFxQyxFQUFDLE1BQU0saUVBQWlFLENBQUM7QUFDdEgsT0FBTyxFQUFDLG9CQUFvQixFQUFDLE1BQU0seUNBQXlDLENBQUM7QUFDN0UsT0FBTyxFQUFDLHdCQUF3QixFQUFDLE1BQU0sNkNBQTZDLENBQUM7QUFJckYsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQ3hFLE9BQU8sRUFBQyxZQUFZLEVBQUMsTUFBTSxxREFBcUQsQ0FBQztBQWdKakYsTUFBTSxPQUFPLGdEQUFpRCxTQUFRLHFDQUFxQztJQThCekcsWUFDUyxhQUF1QyxFQUN2QyxvQkFBMEMsRUFDMUMsa0JBQXNDLEVBQ3RDLGVBQWdDO1FBRXZDLEtBQUssQ0FBQyxhQUFhLEVBQUUsb0JB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ZUFBZ0MsRUFBRSxFQUFFO1lBQ3pGLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxlQUFlLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUNyRyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxnQkFBZ0I7SUFDUixrQkFBa0I7UUFDeEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsY0FBK0IsRUFBRSxFQUFFO1lBQ25GLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxlQUFlLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDLFdBQVcsQ0FBQztRQUNsRyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OztZQXpQRixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlEQUFpRDtnQkFDM0QsUUFBUSxFQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwSVQ7YUFDRjs7O1lBcEpPLHdCQUF3QjtZQUR4QixvQkFBb0I7WUFGcEIsa0JBQWtCO1lBT2xCLGVBQWU7Ozt3QkFtSnBCLFdBQVcsU0FBQyw0Q0FBNEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgSG9zdEJpbmRpbmd9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQge0NvRG9tYWluVmFsdWV9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL2NvLWRvbWFpbi12YWx1ZS5ibyc7XHJcbmltcG9ydCB7Q3VzdG9tZXJHcm91cH0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL2N1c3RvbWVyLWdyb3VwLmJvJztcclxuaW1wb3J0IHtPbkhvbGRDb2RlfSBmcm9tICdAY29saWpuaXQvdHJhbnNhY3Rpb25hcGkvYnVpbGQvbW9kZWwvb24taG9sZC1jb2RlLmJvJztcclxuaW1wb3J0IHtSZWxhdGlvblJlcXVlc3R9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1yZXF1ZXN0JztcclxuaW1wb3J0IHtGaWx0ZXJJdGVtVmlld21vZGVsLCBGaWx0ZXJWaWV3bW9kZWx9IGZyb20gJ0Bjb2xpam5pdC9jb3JlY29tcG9uZW50c192MTInO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi5zZXJ2aWNlJztcclxuaW1wb3J0IHtUcmFuc2FjdGlvbkZpbHRlckNvbnRlbnRCYXNlQ29tcG9uZW50fSBmcm9tICcuLi8uLi8uLi8uLi9jb3JlL2Jhc2UvdHJhbnNhY3Rpb24tZmlsdGVyLWNvbnRlbnQtYmFzZS5jb21wb25lbnQnO1xyXG5pbXBvcnQge0ZpbHRlclJlcXVlc3RTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL2ZpbHRlci1yZXF1ZXN0LnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uU2VhcmNoU2VydmljZX0gZnJvbSAnLi4vLi4vLi4vc2VydmljZS90cmFuc2FjdGlvbi1zZWFyY2guc2VydmljZSc7XHJcbmltcG9ydCB7VGFnfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC90YWcnO1xyXG5pbXBvcnQge1NhbGVzUGVyc29ufSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvc2FsZXMtcGVyc29uLmJvJztcclxuaW1wb3J0IHtSZWxhdGlvbkxpc3RPYmplY3R9IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9yZWxhdGlvbi1saXN0LW9iamVjdC5ibyc7XHJcbmltcG9ydCB7UmVsYXRpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlL3JlbGF0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1JlbGF0aW9uS2luZH0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL2VudW0vcmVsYXRpb24ta2luZC5lbnVtJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tdHJhbnNhY3Rpb24tc2FsZXMtb3JkZXItZmlsdGVyLWNvbnRlbnQtb3JkZXInLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24tZmlsdGVyLWNvbnRlbnQtb3JkZXItd3JhcHBlciB0cmFuc2FjdGlvbi1maWx0ZXItY29udGVudC13cmFwcGVyXCI+XHJcblxyXG4gICAgICA8IS0tT3JkZXJkYXR1bS0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiPlxyXG4gICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbSBbcGxhY2Vob2xkZXJdPVwiJ09SREVSX0RBVEUnXCIgW2N1c3RvbUNvbnRlbnRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGNvLWlucHV0LWRhdGUtcmFuZ2VcclxuICAgICAgICAgICAgW21vZGVsXT1cIlt0cmFuc1N0YXJ0RGF0ZSwgdHJhbnNFbmREYXRlXVwiXHJcbiAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJvbkRhdGVSYW5nZUNoYW5nZSgkZXZlbnQsICdyYW5nZVRyYW5zRGF0ZScpXCJcclxuICAgICAgICAgICAgKGNsZWFyZWQpPVwib25DbGVhcmVkRGF0ZVJhbmdlQ2hhbmdlKCdyYW5nZVRyYW5zRGF0ZScpXCJcclxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidTRUxFQ1RfREFURScgfCBsb2NhbGl6ZVwiPlxyXG4gICAgICAgICAgPC9jby1pbnB1dC1kYXRlLXJhbmdlPlxyXG4gICAgICAgIDwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLUxldmVyZGF0dW0tLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0gW3BsYWNlaG9sZGVyXT1cIidERUxJVkVSWV9EQVRFJ1wiIFtjdXN0b21Db250ZW50XT1cInRydWVcIj5cclxuICAgICAgICAgIDxjby1pbnB1dC1kYXRlLXJhbmdlXHJcbiAgICAgICAgICAgIFttb2RlbF09XCJbZGVsaXZlcnlTdGFydERhdGUsIGRlbGl2ZXJ5RW5kRGF0ZV1cIlxyXG4gICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwib25EYXRlUmFuZ2VDaGFuZ2UoJGV2ZW50LCAnZGVsaXZlcnlEYXRlUmFuZ2UnKVwiXHJcbiAgICAgICAgICAgIChjbGVhcmVkKT1cIm9uQ2xlYXJlZERhdGVSYW5nZUNoYW5nZSgnZGVsaXZlcnlEYXRlUmFuZ2UnKVwiXHJcbiAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInU0VMRUNUX0RBVEUnIHwgbG9jYWxpemVcIj5cclxuICAgICAgICAgIDwvY28taW5wdXQtZGF0ZS1yYW5nZT5cclxuICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1GaWxpYWFsLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQlJBTkNIJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hDb2xsZWN0aW9uUGxhY2Vob2xkZXJdPVwic2VhcmNoUGxhY2Vob2xkZXIuQnJhbmNoXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwiYnJhbmNoZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29sbGVjdGlvbkNoYW5nZSk9XCJmaWx0ZXJSZXF1ZXN0U2VydmljZS5oYW5kbGVDb2xsZWN0aW9uQ2hhbmdlRm9yUmFuZ2UoJGV2ZW50LCAncmFuZ2VCcmFuY2hJZCcpXCI+XHJcbiAgICAgICAgPC9jby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tVmVya29wZXItLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidIQU5ETEVEX0JZJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hDb2xsZWN0aW9uUGxhY2Vob2xkZXJdPVwic2VhcmNoUGxhY2Vob2xkZXIuU2FsZXNQZXJzb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJzYWxlc1BlcnNvbnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29sbGVjdGlvbkNoYW5nZSk9XCJmaWx0ZXJSZXF1ZXN0U2VydmljZS5oYW5kbGVDb2xsZWN0aW9uQ2hhbmdlRm9yUmFuZ2UoJGV2ZW50LCAncmFuZ2VTYWxlc1BlcnNvbicpXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9jby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tRWlnZW4gcmVmZXJlbnRpZS0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiPlxyXG4gICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiJ09XTl9SRUZFUkVOQ0UnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUNvbnRlbnRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGNvLWlucHV0LXRleHQgWyhtb2RlbCldPVwic2VhcmNoUmVxdWVzdC51c2VyUmVmZXJlbmNlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJzZWFyY2hQbGFjZWhvbGRlci5Pd25SZWZlcmVuY2UgfCBsb2NhbGl6ZVwiPjwvY28taW5wdXQtdGV4dD5cclxuICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1UYWdzLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInVEFHUydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoQ29sbGVjdGlvblBsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyLlRhZ3NcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJ0YWdzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbGxlY3Rpb25DaGFuZ2UpPVwiZmlsdGVyUmVxdWVzdFNlcnZpY2UuaGFuZGxlQ29sbGVjdGlvbkNoYW5nZUZvclJhbmdlKCRldmVudCwgJ3RhZ1JhbmdlJylcIj5cclxuICAgICAgICAgIDxjby1pbnB1dC10ZXh0IFsobW9kZWwpXT1cInNlYXJjaFJlcXVlc3QudGFnUmFuZ2VcIiBbcGxhY2Vob2xkZXJdPVwic2VhcmNoUGxhY2Vob2xkZXIuVGFncyB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgIDwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLU9uIGhvbGQgY29kZXMtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidPTl9IT0xEJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cIm9uSG9sZENvZGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbGxlY3Rpb25DaGFuZ2UpPVwiZmlsdGVyUmVxdWVzdFNlcnZpY2UuaGFuZGxlQ29sbGVjdGlvbkNoYW5nZUZvclJhbmdlKCRldmVudCwncmFuZ2VPbkhvbGRDb2RlcycpXCI+XHJcbiAgICAgICAgICA8Y28taW5wdXQtdGV4dCBbKG1vZGVsKV09XCJzZWFyY2hSZXF1ZXN0LnRhZ1JhbmdlXCIgW3BsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyLk9uSG9sZCB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC10ZXh0PlxyXG4gICAgICAgIDwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLU9yZGVyIGRlZmluaXRpZWYtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidPUkRFUl9ERUZJTklUSVZFJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjdXN0b21Db250ZW50XT1cInRydWVcIj5cclxuICAgICAgICAgIDxjby1pbnB1dC1jaGVja2JveFxyXG4gICAgICAgICAgICBbbW9kZWxdPVwic2VhcmNoUmVxdWVzdC50cmFuc2FjdGlvbkRlZmluaXRpdmUgPT09ICdKJ1wiXHJcbiAgICAgICAgICAgIChtb2RlbENoYW5nZSk9XCJmaWx0ZXJSZXF1ZXN0U2VydmljZS5oYW5kbGVDaGVja2JveFZhbHVlQ2hhbmdlRm9yU3RyaW5nKCRldmVudCwgJ3RyYW5zYWN0aW9uRGVmaW5pdGl2ZScpXCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIidPUkRFUl9ERUZJTklUSVZFJyB8IGxvY2FsaXplXCI+PC9jby1pbnB1dC1jaGVja2JveD5cclxuICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1Db21taXNzaWVjb2RlLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQ09NTUlTU0lPTl9DT0RFJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWFyY2hDb2xsZWN0aW9uUGxhY2Vob2xkZXJdPVwic2VhcmNoUGxhY2Vob2xkZXIuQ29tbWlzc2lvbkNvZGVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJjb21taXNzaW9uQ29kZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29sbGVjdGlvbkNoYW5nZSk9XCJmaWx0ZXJSZXF1ZXN0U2VydmljZS5oYW5kbGVDb2xsZWN0aW9uQ2hhbmdlRm9yQXJyYXkoJGV2ZW50LCAnY29tbWlzc2lvbkNvZGVzJylcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1JbmFjdGlldmUgdHJhbnNhY3RpZXMtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidJTkFDVElWRV9UUkFOU0FDVElPTlMnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2N1c3RvbUNvbnRlbnRdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgPGNvLWlucHV0LWNoZWNrYm94XHJcbiAgICAgICAgICAgIFttb2RlbF09XCJzZWFyY2hSZXF1ZXN0LmFjdGl2ZSA9PT0gZmFsc2VcIlxyXG4gICAgICAgICAgICAobW9kZWxDaGFuZ2UpPVwic2VhcmNoUmVxdWVzdC5hY3RpdmUgPSAhJGV2ZW50XCJcclxuICAgICAgICAgICAgW2xhYmVsXT1cIidJTkFDVElWRV9UUkFOU0FDVElPTlMnIHwgbG9jYWxpemVcIlxyXG4gICAgICAgICAgPjwvY28taW5wdXQtY2hlY2tib3g+XHJcbiAgICAgICAgPC9jby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tS2xhbnRuYWFtLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCInQ1VTVE9NRVJfTkFNRSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoQ29sbGVjdGlvblBsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyLkN1c3RvbWVyTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzaW5nbGVTZWxlY3RdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttaW5TZWFyY2hDaGFyc1RvTG9hZENvbGxlY3Rpb25dPVwiM1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xsZWN0aW9uTG9hZEZuXT1cImxvYWRDdXN0b21lcnNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29sbGVjdGlvbkNoYW5nZSk9XCJmaWx0ZXJSZXF1ZXN0U2VydmljZS5oYW5kbGVDb2xsZWN0aW9uQ2hhbmdlRm9yU2luZ2xlU2VsZWN0KCRldmVudCwgJ3JlbGF0aW9uTmFtZScgKVwiPlxyXG4gICAgICAgIDwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLUtsYW50Z3JvZXAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIidDVVNUT01FUl9HUk9VUCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoQ29sbGVjdGlvblBsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyLkN1c3RvbWVyR3JvdXBcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2luZ2xlU2VsZWN0XT1cInRydWVcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJjdXN0b21lckdyb3Vwc1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb2xsZWN0aW9uQ2hhbmdlKT1cImZpbHRlclJlcXVlc3RTZXJ2aWNlLmhhbmRsZUNvbGxlY3Rpb25DaGFuZ2VGb3JTaW5nbGVTZWxlY3QoJGV2ZW50LCAnY3VzdG9tZXJHcm91cElkJylcIj5cclxuICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIGBcclxufSlcclxuZXhwb3J0IGNsYXNzIFRyYW5zYWN0aW9uU2FsZXNPcmRlckZpbHRlckNvbnRlbnRPcmRlckNvbXBvbmVudCBleHRlbmRzIFRyYW5zYWN0aW9uRmlsdGVyQ29udGVudEJhc2VDb21wb25lbnQge1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby10cmFuc2FjdGlvbi1zZWFyY2gtZmlsdGVyLWNvbnRlbnRcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2FsZXNQZXJzb25zOiBGaWx0ZXJJdGVtVmlld21vZGVsW107XHJcbiAgcHVibGljIHNhbGVzUGVyc29uc0ZpZWxkczogeyB0ZXh0LCB2YWx1ZSB9ID0ge3RleHQ6IFwibmFtZVwiLCB2YWx1ZTogXCJyZWxhdGlvbklkXCJ9O1xyXG5cclxuICBwdWJsaWMgdGFnczogRmlsdGVySXRlbVZpZXdtb2RlbFtdO1xyXG4gIHB1YmxpYyB0YWdzRmllbGRzOiB7IHRleHQsIHZhbHVlIH0gPSB7dGV4dDogXCJkZXNjcmlwdGlvblwiLCB2YWx1ZTogXCJ0YWdWYWx1ZUlkXCJ9O1xyXG5cclxuICBwdWJsaWMgYnJhbmNoZXM6IEZpbHRlckl0ZW1WaWV3bW9kZWxbXTtcclxuICBwdWJsaWMgYnJhbmNoRmllbGRzOiB7IHRleHQsIHZhbHVlIH0gPSB7dGV4dDogXCJmYW1pbHlOYW1lXCIsIHZhbHVlOiBcInJlbGF0aW9uSWRcIn07XHJcblxyXG4gIHB1YmxpYyBvbkhvbGRDb2RlczogRmlsdGVySXRlbVZpZXdtb2RlbFtdO1xyXG4gIHB1YmxpYyBvbkhvbGRDb2RlRmllbGRzOiB7IHRleHQsIHZhbHVlIH0gPSB7dGV4dDogXCJkZXNjcmlwdGlvblwiLCB2YWx1ZTogXCJvbkhvbGRDb2RlXCJ9O1xyXG5cclxuICBwdWJsaWMgY29tbWlzc2lvbkNvZGVzOiBGaWx0ZXJJdGVtVmlld21vZGVsW107XHJcbiAgcHVibGljIGNvbW1pc3Npb25Db2RlRmllbGRzOiB7IHRleHQsIHZhbHVlIH0gPSB7dGV4dDogXCJkZXNjcmlwdGlvblwiLCB2YWx1ZTogXCJjb2RlXCJ9O1xyXG5cclxuICBwdWJsaWMgY3VzdG9tZXJHcm91cHM6IEZpbHRlckl0ZW1WaWV3bW9kZWxbXTtcclxuICBwdWJsaWMgY3VzdG9tZXJHcm91cEZpZWxkczogeyB0ZXh0LCB2YWx1ZSB9ID0ge3RleHQ6IFwibmFhbVwiLCB2YWx1ZTogXCJncm9lcHNudW1tZXJcIn07XHJcblxyXG4gIHB1YmxpYyB0cmFuc1N0YXJ0RGF0ZTogRGF0ZTtcclxuICBwdWJsaWMgdHJhbnNFbmREYXRlOiBEYXRlO1xyXG4gIHB1YmxpYyBkZWxpdmVyeVN0YXJ0RGF0ZTogRGF0ZTtcclxuICBwdWJsaWMgZGVsaXZlcnlFbmREYXRlOiBEYXRlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBzZWFyY2hTZXJ2aWNlOiBUcmFuc2FjdGlvblNlYXJjaFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZmlsdGVyUmVxdWVzdFNlcnZpY2U6IEZpbHRlclJlcXVlc3RTZXJ2aWNlLFxyXG4gICAgcHVibGljIHRyYW5zYWN0aW9uU2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHVibGljIHJlbGF0aW9uU2VydmljZTogUmVsYXRpb25TZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgc3VwZXIoc2VhcmNoU2VydmljZSwgZmlsdGVyUmVxdWVzdFNlcnZpY2UsIHRyYW5zYWN0aW9uU2VydmljZSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NldFJhbmdlRGF0ZXMoKTtcclxuICAgIHRoaXMuX3NldFNhbGVzUGVyc29ucygpO1xyXG4gICAgdGhpcy5fc2V0VGFncygpO1xyXG4gICAgdGhpcy5fc2V0QnJhbmNoZXMoKTtcclxuICAgIHRoaXMuX3NldE9uSG9sZENvZGVzKCk7XHJcbiAgICB0aGlzLl9zZXRDb21taXNzaW9uQ29kZXMoKTtcclxuICAgIHRoaXMuX3NldEN1c3RvbWVyR3JvdXBzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIGxvYWRDdXN0b21lcnMgPSBhc3luYyAobmFtZUZpbHRlcjogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCByZXF1ZXN0OiBSZWxhdGlvblJlcXVlc3QgPSBuZXcgUmVsYXRpb25SZXF1ZXN0KCk7XHJcbiAgICByZXF1ZXN0LmZhbWlseU5hbWUgPSBuYW1lRmlsdGVyO1xyXG4gICAgcmV0dXJuIHRoaXMucmVsYXRpb25TZXJ2aWNlLmdldFJlbGF0aW9uTGlzdE9iamVjdHMocmVxdWVzdCkudGhlbigocmVsYXRpb25zOiBSZWxhdGlvbkxpc3RPYmplY3RbXSkgPT4ge1xyXG4gICAgICByZXR1cm4gbmV3IEZpbHRlclZpZXdtb2RlbChyZWxhdGlvbnMsIHt0ZXh0OiAnZmFtaWx5TmFtZScsIHZhbHVlOiAnZmFtaWx5TmFtZSd9KS5maWx0ZXJJdGVtcztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0UmFuZ2VEYXRlcygpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNTdGFydERhdGUgPSB0aGlzLmZpbHRlclJlcXVlc3RTZXJ2aWNlLmdldERhdGVGcm9tRmlsdGVyUmVxdWVzdFJhbmdlKHRoaXMuc2VhcmNoUmVxdWVzdC5yYW5nZVRyYW5zRGF0ZSwgMCk7XHJcbiAgICB0aGlzLnRyYW5zRW5kRGF0ZSA9IHRoaXMuZmlsdGVyUmVxdWVzdFNlcnZpY2UuZ2V0RGF0ZUZyb21GaWx0ZXJSZXF1ZXN0UmFuZ2UodGhpcy5zZWFyY2hSZXF1ZXN0LnJhbmdlVHJhbnNEYXRlLCAxKTtcclxuICAgIHRoaXMuZGVsaXZlcnlTdGFydERhdGUgPSB0aGlzLmZpbHRlclJlcXVlc3RTZXJ2aWNlLmdldERhdGVGcm9tRmlsdGVyUmVxdWVzdFJhbmdlKHRoaXMuc2VhcmNoUmVxdWVzdC5kZWxpdmVyeURhdGVSYW5nZSwgMCk7XHJcbiAgICB0aGlzLmRlbGl2ZXJ5RW5kRGF0ZSA9IHRoaXMuZmlsdGVyUmVxdWVzdFNlcnZpY2UuZ2V0RGF0ZUZyb21GaWx0ZXJSZXF1ZXN0UmFuZ2UodGhpcy5zZWFyY2hSZXF1ZXN0LmRlbGl2ZXJ5RGF0ZVJhbmdlLCAxKTtcclxuICB9XHJcblxyXG4gIC8vVmVya29wZXJcclxuICBwcml2YXRlIF9zZXRTYWxlc1BlcnNvbnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRTYWxlc1BlcnNvbnMoKS50aGVuKChzYWxlc1BlcnNvbnM6IFNhbGVzUGVyc29uW10pID0+IHtcclxuICAgICAgdGhpcy5zYWxlc1BlcnNvbnMgPSBuZXcgRmlsdGVyVmlld21vZGVsKHNhbGVzUGVyc29ucywgdGhpcy5zYWxlc1BlcnNvbnNGaWVsZHMpLmZpbHRlckl0ZW1zO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBUYWdzXHJcbiAgcHJpdmF0ZSBfc2V0VGFncygpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldFRhZ3MoMSkudGhlbigodGFnczogVGFnW10pID0+IHtcclxuICAgICAgdGhpcy50YWdzID0gbmV3IEZpbHRlclZpZXdtb2RlbCh0YWdzLCB0aGlzLnRhZ3NGaWVsZHMpLmZpbHRlckl0ZW1zO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL0JyYW5jaGVzXHJcbiAgcHJpdmF0ZSBfc2V0QnJhbmNoZXMoKTogdm9pZCB7XHJcbiAgICBjb25zdCByZXF1ZXN0OiBSZWxhdGlvblJlcXVlc3QgPSBuZXcgUmVsYXRpb25SZXF1ZXN0KCk7XHJcbiAgICByZXF1ZXN0LnJlbGF0aW9uVHlwZSA9IFJlbGF0aW9uS2luZC5CcmFuY2g7XHJcbiAgICB0aGlzLnJlbGF0aW9uU2VydmljZS5nZXRSZWxhdGlvbkxpc3RPYmplY3RzKHJlcXVlc3QpLnRoZW4oKGJyYW5jaGVzOiBSZWxhdGlvbkxpc3RPYmplY3RbXSkgPT4ge1xyXG4gICAgICB0aGlzLmJyYW5jaGVzID0gbmV3IEZpbHRlclZpZXdtb2RlbChicmFuY2hlcywgdGhpcy5icmFuY2hGaWVsZHMpLmZpbHRlckl0ZW1zO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL09uSG9sZENvZGVzXHJcbiAgcHJpdmF0ZSBfc2V0T25Ib2xkQ29kZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRPbkhvbGRDb2RlcygpLnRoZW4oKG9uSG9sZENvZGVzOiBPbkhvbGRDb2RlW10pID0+IHtcclxuICAgICAgdGhpcy5vbkhvbGRDb2RlcyA9IG5ldyBGaWx0ZXJWaWV3bW9kZWwob25Ib2xkQ29kZXMsIHRoaXMub25Ib2xkQ29kZUZpZWxkcykuZmlsdGVySXRlbXM7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vQ29tbWlzc2lvbkNvZGVzXHJcbiAgcHJpdmF0ZSBfc2V0Q29tbWlzc2lvbkNvZGVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0Q29tbWlzc2lvbkNvZGVzKFwiTkxcIikudGhlbigoY29tbWlzc2lvbkNvZGVzOiBDb0RvbWFpblZhbHVlW10pID0+IHtcclxuICAgICAgdGhpcy5jb21taXNzaW9uQ29kZXMgPSBuZXcgRmlsdGVyVmlld21vZGVsKGNvbW1pc3Npb25Db2RlcywgdGhpcy5jb21taXNzaW9uQ29kZUZpZWxkcykuZmlsdGVySXRlbXM7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vQ3VzdG9tZXJHcm91cHNcclxuICBwcml2YXRlIF9zZXRDdXN0b21lckdyb3VwcygpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldEN1c3RvbWVyR3JvdXBzKCkudGhlbigoY3VzdG9tZXJHcm91cHM6IEN1c3RvbWVyR3JvdXBbXSkgPT4ge1xyXG4gICAgICB0aGlzLmN1c3RvbWVyR3JvdXBzID0gbmV3IEZpbHRlclZpZXdtb2RlbChjdXN0b21lckdyb3VwcywgdGhpcy5jdXN0b21lckdyb3VwRmllbGRzKS5maWx0ZXJJdGVtcztcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=
213
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNhY3Rpb24tc2FsZXMtb3JkZXItZmlsdGVyLWNvbnRlbnQtb3JkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHJhbnNhY3Rpb24vc3JjL2xpYi9jb21wb25lbnQvdHJhbnNhY3Rpb24tc2VhcmNoL3RyYW5zYWN0aW9uLWZpbHRlci1jb250ZW50L3NhbGVzLW9yZGVyLWZpbHRlci1jb250ZW50L3RyYW5zYWN0aW9uLXNhbGVzLW9yZGVyLWZpbHRlci1jb250ZW50LW9yZGVyL3RyYW5zYWN0aW9uLXNhbGVzLW9yZGVyLWZpbHRlci1jb250ZW50LW9yZGVyLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUMsTUFBTSxlQUFlLENBQUM7QUFJckQsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLG9EQUFvRCxDQUFDO0FBQ25GLE9BQU8sRUFBQyxjQUFjLEVBQXVCLGVBQWUsRUFBQyxNQUFNLDhCQUE4QixDQUFDO0FBQ2xHLE9BQU8sRUFBQyxrQkFBa0IsRUFBQyxNQUFNLDRDQUE0QyxDQUFDO0FBQzlFLE9BQU8sRUFBQyxxQ0FBcUMsRUFBQyxNQUFNLGlFQUFpRSxDQUFDO0FBQ3RILE9BQU8sRUFBQyxvQkFBb0IsRUFBQyxNQUFNLHlDQUF5QyxDQUFDO0FBQzdFLE9BQU8sRUFBQyx3QkFBd0IsRUFBQyxNQUFNLDZDQUE2QyxDQUFDO0FBSXJGLE9BQU8sRUFBQyxlQUFlLEVBQUMsTUFBTSx5Q0FBeUMsQ0FBQztBQUN4RSxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0scURBQXFELENBQUM7QUFtSGpGLE1BQU0sT0FBTyxnREFBaUQsU0FBUSxxQ0FBcUM7SUErQnpHLFlBQ1MsYUFBdUMsRUFDdkMsb0JBQTBDLEVBQzFDLGtCQUFzQyxFQUN0QyxlQUFnQztRQUV2QyxLQUFLLENBQUMsYUFB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QixDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLGVBQWdDLEVBQUUsRUFBRTtZQUN6RixJQUFJLENBQUMsZUFBZSxHQUFHLElBQUksZUFBZSxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFDckcsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsZ0JBQWdCO0lBQ1Isa0JBQWtCO1FBQ3hCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQStCLEVBQUUsRUFBRTtZQUNuRixJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksZUFBZSxDQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFDbEcsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDOzs7WUE1TkYsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxpREFBaUQ7Z0JBQzNELFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBNEdUO2FBQ0Y7OztZQXZITyx3QkFBd0I7WUFEeEIsb0JBQW9CO1lBRnBCLGtCQUFrQjtZQU9sQixlQUFlOzs7d0JBdUhwQixXQUFXLFNBQUMsNENBQTRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIEhvc3RCaW5kaW5nfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHtDb0RvbWFpblZhbHVlfSBmcm9tICdAY29saWpuaXQvbWFpbmFwaS9idWlsZC9tb2RlbC9jby1kb21haW4tdmFsdWUuYm8nO1xyXG5pbXBvcnQge0N1c3RvbWVyR3JvdXB9IGZyb20gJ0Bjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC9jdXN0b21lci1ncm91cC5ibyc7XHJcbmltcG9ydCB7T25Ib2xkQ29kZX0gZnJvbSAnQGNvbGlqbml0L3RyYW5zYWN0aW9uYXBpL2J1aWxkL21vZGVsL29uLWhvbGQtY29kZS5ibyc7XHJcbmltcG9ydCB7UmVsYXRpb25SZXF1ZXN0fSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvbW9kZWwvcmVsYXRpb24tcmVxdWVzdCc7XHJcbmltcG9ydCB7RmlsdGVySXRlbU1vZGUsIEZpbHRlckl0ZW1WaWV3bW9kZWwsIEZpbHRlclZpZXdtb2RlbH0gZnJvbSAnQGNvbGlqbml0L2NvcmVjb21wb25lbnRzX3YxMic7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLnNlcnZpY2UnO1xyXG5pbXBvcnQge1RyYW5zYWN0aW9uRmlsdGVyQ29udGVudEJhc2VDb21wb25lbnR9IGZyb20gJy4uLy4uLy4uLy4uL2NvcmUvYmFzZS90cmFuc2FjdGlvbi1maWx0ZXItY29udGVudC1iYXNlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7RmlsdGVyUmVxdWVzdFNlcnZpY2V9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2UvZmlsdGVyLXJlcXVlc3Quc2VydmljZSc7XHJcbmltcG9ydCB7VHJhbnNhY3Rpb25TZWFyY2hTZXJ2aWNlfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlL3RyYW5zYWN0aW9uLXNlYXJjaC5zZXJ2aWNlJztcclxuaW1wb3J0IHtUYWd9IGZyb20gJ0Bjb2xpam5pdC9tYWluYXBpL2J1aWxkL21vZGVsL3RhZyc7XHJcbmltcG9ydCB7U2FsZXNQZXJzb259IGZyb20gJ0Bjb2xpam5pdC9yZWxhdGlvbmFwaS9idWlsZC9tb2RlbC9zYWxlcy1wZXJzb24uYm8nO1xyXG5pbXBvcnQge1JlbGF0aW9uTGlzdE9iamVjdH0gZnJvbSAnQGNvbGlqbml0L3JlbGF0aW9uYXBpL2J1aWxkL21vZGVsL3JlbGF0aW9uLWxpc3Qtb2JqZWN0LmJvJztcclxuaW1wb3J0IHtSZWxhdGlvblNlcnZpY2V9IGZyb20gJy4uLy4uLy4uLy4uLy4uL3NlcnZpY2UvcmVsYXRpb24uc2VydmljZSc7XHJcbmltcG9ydCB7UmVsYXRpb25LaW5kfSBmcm9tICdAY29saWpuaXQvcmVsYXRpb25hcGkvYnVpbGQvZW51bS9yZWxhdGlvbi1raW5kLmVudW0nO1xyXG5pbXBvcnQge1dhcmVob3VzZX0gZnJvbSBcIkBjb2xpam5pdC90cmFuc2FjdGlvbmFwaS9idWlsZC9tb2RlbC93YXJlaG91c2UuYm9cIjtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnY28tdHJhbnNhY3Rpb24tc2FsZXMtb3JkZXItZmlsdGVyLWNvbnRlbnQtb3JkZXInLFxyXG4gIHRlbXBsYXRlOiBgXHJcbiAgICA8ZGl2IGNsYXNzPVwidHJhbnNhY3Rpb24tZmlsdGVyLWNvbnRlbnQtb3JkZXItd3JhcHBlciB0cmFuc2FjdGlvbi1maWx0ZXItY29udGVudC13cmFwcGVyXCI+XHJcblxyXG4gICAgICA8IS0tT3JkZXJkYXR1bS0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiPlxyXG4gICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbSBbcGxhY2Vob2xkZXJdPVwiJ09SREVSX0RBVEUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwic2VhcmNoU2VydmljZS5zZWFyY2hSZXF1ZXN0LnJhbmdlVHJhbnNEYXRlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVdPVwibW9kZXMuRGF0ZVJhbmdlRmllbGRcIj5cclxuICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtIFtwbGFjZWhvbGRlcl09XCInREVMSVZFUllfREFURSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZWFyY2hTZXJ2aWNlLnNlYXJjaFJlcXVlc3QuZGVsaXZlcnlEYXRlUmFuZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZV09XCJtb2Rlcy5EYXRlUmFuZ2VGaWVsZFwiPlxyXG4gICAgICAgIDwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0gW3BsYWNlaG9sZGVyXT1cIidCUkFOQ0gnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwiYnJhbmNoZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZWFyY2hTZXJ2aWNlLnNlYXJjaFJlcXVlc3QucmFuZ2VCcmFuY2hJZFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlXT1cIm1vZGVzLkZpbHRlcmxpc3RcIj5cclxuICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1WZXJrb3Blci0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiPlxyXG4gICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbSBbcGxhY2Vob2xkZXJdPVwiJ0hBTkRMRURfQlknXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbGxlY3Rpb25dPVwic2FsZXNQZXJzb25zXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwic2VhcmNoU2VydmljZS5zZWFyY2hSZXF1ZXN0LnJhbmdlU2FsZXNQZXJzb25cIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZV09XCJtb2Rlcy5GaWx0ZXJsaXN0XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgPC9jby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tRWlnZW4gcmVmZXJlbnRpZS0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiPlxyXG4gICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbSBbcGxhY2Vob2xkZXJdPVwiJ09XTl9SRUZFUkVOQ0UnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwic2VhcmNoU2VydmljZS5zZWFyY2hSZXF1ZXN0LnVzZXJSZWZlcmVuY2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZV09XCJtb2Rlcy5UZXh0RmllbGRcIlxyXG4gICAgICAgID5cclxuICAgICAgICA8L2NvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtPlxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIDwhLS1UYWdzLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtIFtwbGFjZWhvbGRlcl09XCInVEFHUydcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJ0YWdzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwic2VhcmNoU2VydmljZS5zZWFyY2hSZXF1ZXN0LnRhZ1JhbmdlXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVdPVwibW9kZXMuRmlsdGVybGlzdFwiPlxyXG4gICAgICAgIDwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLU9uIGhvbGQgY29kZXMtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0gW3BsYWNlaG9sZGVyXT1cIidPTl9IT0xEJ1wiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cIm9uSG9sZENvZGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwic2VhcmNoU2VydmljZS5zZWFyY2hSZXF1ZXN0LnJhbmdlT25Ib2xkQ29kZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbW9kZV09XCJtb2Rlcy5GaWx0ZXJsaXN0XCI+XHJcbiAgICAgICAgPC9jby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tT3JkZXIgZGVmaW5pdGllZi0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiPlxyXG4gICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbSBbcGxhY2Vob2xkZXJdPVwiJ09SREVSX0RFRklOSVRJVkUnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwic2VhcmNoU2VydmljZS5zZWFyY2hSZXF1ZXN0LnRyYW5zYWN0aW9uRGVmaW5pdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlXT1cIm1vZGVzLkNoZWNrYm94VG9UZXh0XCI+XHJcbiAgICAgICAgPC9jby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tQ29tbWlzc2llY29kZS0tPlxyXG4gICAgICA8ZGl2IGNsYXNzPVwiZmlsdGVyLWl0ZW0td3JhcHBlclwiPlxyXG4gICAgICAgIDxjby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbSBbcGxhY2Vob2xkZXJdPVwiJ0NPTU1JU1NJT05fQ09ERSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY29sbGVjdGlvbl09XCJjb21taXNzaW9uQ29kZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZWFyY2hTZXJ2aWNlLnNlYXJjaFJlcXVlc3QuY29tbWlzc2lvbkNvZGVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVdPVwibW9kZXMuU2VsZWN0TGlzdFdpdGhTdHJpbmdDb2xsZWN0aW9uT3V0cHV0XCI+XHJcbiAgICAgICAgPlxyXG4gICAgICAgIDwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0gW3BsYWNlaG9sZGVyXT1cIidJTkFDVElWRV9UUkFOU0FDVElPTlMnXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyhtb2RlbCldPVwic2VhcmNoU2VydmljZS5zZWFyY2hSZXF1ZXN0LmFjdGl2ZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlXT1cIm1vZGVzLkNoZWNrYm94XCI+XHJcbiAgICAgICAgPC9jby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbT5cclxuICAgICAgPC9kaXY+XHJcblxyXG4gICAgICA8IS0tS2xhbnRuYWFtLS0+XHJcbiAgICAgIDxkaXYgY2xhc3M9XCJmaWx0ZXItaXRlbS13cmFwcGVyXCI+XHJcbiAgICAgICAgPGNvLXRyYW5zYWN0aW9uLWZpbHRlci1pdGVtIFtwbGFjZWhvbGRlcl09XCInQ1VTVE9NRVJfTkFNRSdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbc2VhcmNoQ29sbGVjdGlvblBsYWNlaG9sZGVyXT1cInNlYXJjaFBsYWNlaG9sZGVyLkN1c3RvbWVyTmFtZVwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFttb2RlXT1cIm1vZGVzLlNpbmdsZVNlbGVjdExpc3RcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZWFyY2hTZXJ2aWNlLnNlYXJjaFJlcXVlc3QucmVsYXRpb25OYW1lXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21pblNlYXJjaENoYXJzVG9Mb2FkQ29sbGVjdGlvbl09XCIzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NvbGxlY3Rpb25Mb2FkRm5dPVwibG9hZEN1c3RvbWVyc1wiPlxyXG4gICAgICAgIDwvY28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgPCEtLUtsYW50Z3JvZXAtLT5cclxuICAgICAgPGRpdiBjbGFzcz1cImZpbHRlci1pdGVtLXdyYXBwZXJcIj5cclxuICAgICAgICA8Y28tdHJhbnNhY3Rpb24tZmlsdGVyLWl0ZW0gW3BsYWNlaG9sZGVyXT1cIidDVVNUT01FUl9HUk9VUCdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKG1vZGVsKV09XCJzZWFyY2hTZXJ2aWNlLnNlYXJjaFJlcXVlc3QuY3VzdG9tZXJHcm91cElkXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW21vZGVdPVwibW9kZXMuU2luZ2xlU2VsZWN0TGlzdFwiXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjb2xsZWN0aW9uXT1cImN1c3RvbWVyR3JvdXBzXCI+XHJcbiAgICAgICAgPC9jby10cmFuc2FjdGlvbi1maWx0ZXItaXRlbT5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICBgXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcmFuc2FjdGlvblNhbGVzT3JkZXJGaWx0ZXJDb250ZW50T3JkZXJDb21wb25lbnQgZXh0ZW5kcyBUcmFuc2FjdGlvbkZpbHRlckNvbnRlbnRCYXNlQ29tcG9uZW50IHtcclxuICBwdWJsaWMgcmVhZG9ubHkgbW9kZXM6IHR5cGVvZiBGaWx0ZXJJdGVtTW9kZSA9IEZpbHRlckl0ZW1Nb2RlO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jby10cmFuc2FjdGlvbi1zZWFyY2gtZmlsdGVyLWNvbnRlbnRcIilcclxuICBwdWJsaWMgc2hvd0NsYXNzKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2FsZXNQZXJzb25zOiBGaWx0ZXJJdGVtVmlld21vZGVsW107XHJcbiAgcHVibGljIHNhbGVzUGVyc29uc0ZpZWxkczogeyB0ZXh0LCB2YWx1ZSB9ID0ge3RleHQ6IFwibmFtZVwiLCB2YWx1ZTogXCJyZWxhdGlvbklkXCJ9O1xyXG5cclxuICBwdWJsaWMgdGFnczogRmlsdGVySXRlbVZpZXdtb2RlbFtdO1xyXG4gIHB1YmxpYyB0YWdzRmllbGRzOiB7IHRleHQsIHZhbHVlIH0gPSB7dGV4dDogXCJkZXNjcmlwdGlvblwiLCB2YWx1ZTogXCJ0YWdWYWx1ZUlkXCJ9O1xyXG5cclxuICBwdWJsaWMgYnJhbmNoZXM6IEZpbHRlckl0ZW1WaWV3bW9kZWxbXTtcclxuICBwdWJsaWMgYnJhbmNoRmllbGRzOiB7IHRleHQsIHZhbHVlIH0gPSB7dGV4dDogXCJmYW1pbHlOYW1lXCIsIHZhbHVlOiBcInJlbGF0aW9uSWRcIn07XHJcblxyXG4gIHB1YmxpYyBvbkhvbGRDb2RlczogRmlsdGVySXRlbVZpZXdtb2RlbFtdO1xyXG4gIHB1YmxpYyBvbkhvbGRDb2RlRmllbGRzOiB7IHRleHQsIHZhbHVlIH0gPSB7dGV4dDogXCJkZXNjcmlwdGlvblwiLCB2YWx1ZTogXCJvbkhvbGRDb2RlXCJ9O1xyXG5cclxuICBwdWJsaWMgY29tbWlzc2lvbkNvZGVzOiBGaWx0ZXJJdGVtVmlld21vZGVsW107XHJcbiAgcHVibGljIGNvbW1pc3Npb25Db2RlRmllbGRzOiB7IHRleHQsIHZhbHVlIH0gPSB7dGV4dDogXCJkZXNjcmlwdGlvblwiLCB2YWx1ZTogXCJjb2RlXCJ9O1xyXG5cclxuICBwdWJsaWMgY3VzdG9tZXJHcm91cHM6IEZpbHRlckl0ZW1WaWV3bW9kZWxbXTtcclxuICBwdWJsaWMgY3VzdG9tZXJHcm91cEZpZWxkczogeyB0ZXh0LCB2YWx1ZSB9ID0ge3RleHQ6IFwibmFhbVwiLCB2YWx1ZTogXCJncm9lcHNudW1tZXJcIn07XHJcblxyXG4gIHB1YmxpYyB0cmFuc1N0YXJ0RGF0ZTogRGF0ZTtcclxuICBwdWJsaWMgdHJhbnNFbmREYXRlOiBEYXRlO1xyXG4gIHB1YmxpYyBkZWxpdmVyeVN0YXJ0RGF0ZTogRGF0ZTtcclxuICBwdWJsaWMgZGVsaXZlcnlFbmREYXRlOiBEYXRlO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHB1YmxpYyBzZWFyY2hTZXJ2aWNlOiBUcmFuc2FjdGlvblNlYXJjaFNlcnZpY2UsXHJcbiAgICBwdWJsaWMgZmlsdGVyUmVxdWVzdFNlcnZpY2U6IEZpbHRlclJlcXVlc3RTZXJ2aWNlLFxyXG4gICAgcHVibGljIHRyYW5zYWN0aW9uU2VydmljZTogVHJhbnNhY3Rpb25TZXJ2aWNlLFxyXG4gICAgcHVibGljIHJlbGF0aW9uU2VydmljZTogUmVsYXRpb25TZXJ2aWNlLFxyXG4gICkge1xyXG4gICAgc3VwZXIoc2VhcmNoU2VydmljZSwgZmlsdGVyUmVxdWVzdFNlcnZpY2UsIHRyYW5zYWN0aW9uU2VydmljZSlcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NldFJhbmdlRGF0ZXMoKTtcclxuICAgIHRoaXMuX3NldFNhbGVzUGVyc29ucygpO1xyXG4gICAgdGhpcy5fc2V0VGFncygpO1xyXG4gICAgdGhpcy5fc2V0QnJhbmNoZXMoKTtcclxuICAgIHRoaXMuX3NldE9uSG9sZENvZGVzKCk7XHJcbiAgICB0aGlzLl9zZXRDb21taXNzaW9uQ29kZXMoKTtcclxuICAgIHRoaXMuX3NldEN1c3RvbWVyR3JvdXBzKCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHVibGljIGxvYWRDdXN0b21lcnMgPSBhc3luYyAobmFtZUZpbHRlcjogc3RyaW5nKSA9PiB7XHJcbiAgICBjb25zdCByZXF1ZXN0OiBSZWxhdGlvblJlcXVlc3QgPSBuZXcgUmVsYXRpb25SZXF1ZXN0KCk7XHJcbiAgICByZXF1ZXN0LmZhbWlseU5hbWUgPSBuYW1lRmlsdGVyO1xyXG4gICAgcmV0dXJuIHRoaXMucmVsYXRpb25TZXJ2aWNlLmdldFJlbGF0aW9uTGlzdE9iamVjdHMocmVxdWVzdCkudGhlbigocmVsYXRpb25zOiBSZWxhdGlvbkxpc3RPYmplY3RbXSkgPT4ge1xyXG4gICAgICByZXR1cm4gbmV3IEZpbHRlclZpZXdtb2RlbChyZWxhdGlvbnMsIHt0ZXh0OiAnZmFtaWx5TmFtZScsIHZhbHVlOiAnZmFtaWx5TmFtZSd9KS5maWx0ZXJJdGVtcztcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0UmFuZ2VEYXRlcygpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNTdGFydERhdGUgPSB0aGlzLmZpbHRlclJlcXVlc3RTZXJ2aWNlLmdldERhdGVGcm9tRmlsdGVyUmVxdWVzdFJhbmdlKHRoaXMuc2VhcmNoUmVxdWVzdC5yYW5nZVRyYW5zRGF0ZSwgMCk7XHJcbiAgICB0aGlzLnRyYW5zRW5kRGF0ZSA9IHRoaXMuZmlsdGVyUmVxdWVzdFNlcnZpY2UuZ2V0RGF0ZUZyb21GaWx0ZXJSZXF1ZXN0UmFuZ2UodGhpcy5zZWFyY2hSZXF1ZXN0LnJhbmdlVHJhbnNEYXRlLCAxKTtcclxuICAgIHRoaXMuZGVsaXZlcnlTdGFydERhdGUgPSB0aGlzLmZpbHRlclJlcXVlc3RTZXJ2aWNlLmdldERhdGVGcm9tRmlsdGVyUmVxdWVzdFJhbmdlKHRoaXMuc2VhcmNoUmVxdWVzdC5kZWxpdmVyeURhdGVSYW5nZSwgMCk7XHJcbiAgICB0aGlzLmRlbGl2ZXJ5RW5kRGF0ZSA9IHRoaXMuZmlsdGVyUmVxdWVzdFNlcnZpY2UuZ2V0RGF0ZUZyb21GaWx0ZXJSZXF1ZXN0UmFuZ2UodGhpcy5zZWFyY2hSZXF1ZXN0LmRlbGl2ZXJ5RGF0ZVJhbmdlLCAxKTtcclxuICB9XHJcblxyXG4gIC8vVmVya29wZXJcclxuICBwcml2YXRlIF9zZXRTYWxlc1BlcnNvbnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRTYWxlc1BlcnNvbnMoKS50aGVuKChzYWxlc1BlcnNvbnM6IFNhbGVzUGVyc29uW10pID0+IHtcclxuICAgICAgdGhpcy5zYWxlc1BlcnNvbnMgPSBuZXcgRmlsdGVyVmlld21vZGVsKHNhbGVzUGVyc29ucywgdGhpcy5zYWxlc1BlcnNvbnNGaWVsZHMpLmZpbHRlckl0ZW1zO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBUYWdzXHJcbiAgcHJpdmF0ZSBfc2V0VGFncygpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldFRhZ3MoMSkudGhlbigodGFnczogVGFnW10pID0+IHtcclxuICAgICAgdGhpcy50YWdzID0gbmV3IEZpbHRlclZpZXdtb2RlbCh0YWdzLCB0aGlzLnRhZ3NGaWVsZHMpLmZpbHRlckl0ZW1zO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL0JyYW5jaGVzXHJcbiAgcHJpdmF0ZSBfc2V0QnJhbmNoZXMoKTogdm9pZCB7XHJcbiAgICBjb25zdCByZXF1ZXN0OiBSZWxhdGlvblJlcXVlc3QgPSBuZXcgUmVsYXRpb25SZXF1ZXN0KCk7XHJcbiAgICByZXF1ZXN0LnJlbGF0aW9uVHlwZSA9IFJlbGF0aW9uS2luZC5CcmFuY2g7XHJcbiAgICB0aGlzLnJlbGF0aW9uU2VydmljZS5nZXRSZWxhdGlvbkxpc3RPYmplY3RzKHJlcXVlc3QpLnRoZW4oKGJyYW5jaGVzOiBSZWxhdGlvbkxpc3RPYmplY3RbXSkgPT4ge1xyXG4gICAgICB0aGlzLmJyYW5jaGVzID0gbmV3IEZpbHRlclZpZXdtb2RlbChicmFuY2hlcywgdGhpcy5icmFuY2hGaWVsZHMpLmZpbHRlckl0ZW1zO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvL09uSG9sZENvZGVzXHJcbiAgcHJpdmF0ZSBfc2V0T25Ib2xkQ29kZXMoKTogdm9pZCB7XHJcbiAgICB0aGlzLnRyYW5zYWN0aW9uU2VydmljZS5nZXRPbkhvbGRDb2RlcygpLnRoZW4oKG9uSG9sZENvZGVzOiBPbkhvbGRDb2RlW10pID0+IHtcclxuICAgICAgdGhpcy5vbkhvbGRDb2RlcyA9IG5ldyBGaWx0ZXJWaWV3bW9kZWwob25Ib2xkQ29kZXMsIHRoaXMub25Ib2xkQ29kZUZpZWxkcykuZmlsdGVySXRlbXM7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vQ29tbWlzc2lvbkNvZGVzXHJcbiAgcHJpdmF0ZSBfc2V0Q29tbWlzc2lvbkNvZGVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy50cmFuc2FjdGlvblNlcnZpY2UuZ2V0Q29tbWlzc2lvbkNvZGVzKFwiTkxcIikudGhlbigoY29tbWlzc2lvbkNvZGVzOiBDb0RvbWFpblZhbHVlW10pID0+IHtcclxuICAgICAgdGhpcy5jb21taXNzaW9uQ29kZXMgPSBuZXcgRmlsdGVyVmlld21vZGVsKGNvbW1pc3Npb25Db2RlcywgdGhpcy5jb21taXNzaW9uQ29kZUZpZWxkcykuZmlsdGVySXRlbXM7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8vQ3VzdG9tZXJHcm91cHNcclxuICBwcml2YXRlIF9zZXRDdXN0b21lckdyb3VwcygpOiB2b2lkIHtcclxuICAgIHRoaXMudHJhbnNhY3Rpb25TZXJ2aWNlLmdldEN1c3RvbWVyR3JvdXBzKCkudGhlbigoY3VzdG9tZXJHcm91cHM6IEN1c3RvbWVyR3JvdXBbXSkgPT4ge1xyXG4gICAgICB0aGlzLmN1c3RvbWVyR3JvdXBzID0gbmV3IEZpbHRlclZpZXdtb2RlbChjdXN0b21lckdyb3VwcywgdGhpcy5jdXN0b21lckdyb3VwRmllbGRzKS5maWx0ZXJJdGVtcztcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iXX0=