@openziti/ziti-console-lib 0.6.0 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (94) hide show
  1. package/assets/html/api-sessions.htm +0 -1
  2. package/assets/html/auth-policies.htm +1 -1
  3. package/assets/html/cas.htm +1 -7
  4. package/assets/html/config-types.htm +0 -1
  5. package/assets/html/jwt-signers.htm +1 -1
  6. package/assets/html/posture-checks.htm +1 -1
  7. package/assets/styles/global.scss +233 -3
  8. package/esm2022/lib/features/config-editor/config-editor.component.mjs +1 -3
  9. package/esm2022/lib/features/data-table/cells/table-cell-name/table-cell-name.component.mjs +12 -3
  10. package/esm2022/lib/features/dynamic-widgets/text-list/text-list-input.component.mjs +2 -2
  11. package/esm2022/lib/features/list-page-features/list-page-header/list-page-header.component.mjs +22 -3
  12. package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.component.mjs +342 -0
  13. package/esm2022/lib/features/projectable-forms/auth-policy/auth-policy-form.service.mjs +127 -0
  14. package/esm2022/lib/features/projectable-forms/configuration/configuration-form.component.mjs +2 -1
  15. package/esm2022/lib/features/projectable-forms/edge-router/edge-router-form.component.mjs +2 -1
  16. package/esm2022/lib/features/projectable-forms/form-header/form-header.component.mjs +6 -3
  17. package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.mjs +78 -20
  18. package/esm2022/lib/features/projectable-forms/jwt-signer/jwt-signer-form.service.mjs +2 -2
  19. package/esm2022/lib/features/projectable-forms/service/service-form.component.mjs +3 -3
  20. package/esm2022/lib/features/tag-selector/tag-selector.component.mjs +2 -2
  21. package/esm2022/lib/features/wrappers/zac-wrapper.service.mjs +20 -8
  22. package/esm2022/lib/models/auth-policy.mjs +31 -0
  23. package/esm2022/lib/models/jwt-signer.mjs +4 -2
  24. package/esm2022/lib/pages/auth-policies/auth-policies-page.component.mjs +115 -0
  25. package/esm2022/lib/pages/auth-policies/auth-policies-page.service.mjs +207 -0
  26. package/esm2022/lib/pages/configurations/configurations-page.component.mjs +2 -2
  27. package/esm2022/lib/pages/edge-router-policies/edge-router-policies-page.component.mjs +2 -2
  28. package/esm2022/lib/pages/edge-routers/edge-routers-page.component.mjs +2 -2
  29. package/esm2022/lib/pages/identities/identities-page.component.mjs +2 -2
  30. package/esm2022/lib/pages/jwt-signers/jwt-signers-page.component.mjs +27 -7
  31. package/esm2022/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.mjs +2 -2
  32. package/esm2022/lib/pages/service-policies/service-policies-page.component.mjs +2 -2
  33. package/esm2022/lib/pages/services/services-page.component.mjs +2 -2
  34. package/esm2022/lib/pages/terminators/terminators-page.component.mjs +3 -3
  35. package/esm2022/lib/services/node-data.service.mjs +18 -1
  36. package/esm2022/lib/services/tab-name.service.mjs +8 -5
  37. package/esm2022/lib/services/validation.service.mjs +10 -1
  38. package/esm2022/lib/services/ziti-controller-data.service.mjs +16 -1
  39. package/esm2022/lib/services/ziti-data.service.mjs +1 -1
  40. package/esm2022/lib/shared/list-page-service.class.mjs +5 -2
  41. package/esm2022/lib/version.mjs +2 -2
  42. package/esm2022/lib/ziti-console-lib.module.mjs +19 -5
  43. package/esm2022/public-api.mjs +5 -1
  44. package/fesm2022/openziti-ziti-console-lib.mjs +1124 -196
  45. package/fesm2022/openziti-ziti-console-lib.mjs.map +1 -1
  46. package/lib/features/config-editor/config-editor.component.d.ts.map +1 -1
  47. package/lib/features/data-table/cells/table-cell-name/table-cell-name.component.d.ts.map +1 -1
  48. package/lib/features/list-page-features/list-page-header/list-page-header.component.d.ts +1 -0
  49. package/lib/features/list-page-features/list-page-header/list-page-header.component.d.ts.map +1 -1
  50. package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts +75 -0
  51. package/lib/features/projectable-forms/auth-policy/auth-policy-form.component.d.ts.map +1 -0
  52. package/lib/features/projectable-forms/auth-policy/auth-policy-form.service.d.ts +38 -0
  53. package/lib/features/projectable-forms/auth-policy/auth-policy-form.service.d.ts.map +1 -0
  54. package/lib/features/projectable-forms/configuration/configuration-form.component.d.ts.map +1 -1
  55. package/lib/features/projectable-forms/edge-router/edge-router-form.component.d.ts.map +1 -1
  56. package/lib/features/projectable-forms/form-header/form-header.component.d.ts.map +1 -1
  57. package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts +4 -0
  58. package/lib/features/projectable-forms/jwt-signer/jwt-signer-form.component.d.ts.map +1 -1
  59. package/lib/features/wrappers/zac-wrapper.service.d.ts +2 -2
  60. package/lib/features/wrappers/zac-wrapper.service.d.ts.map +1 -1
  61. package/lib/models/auth-policy.d.ts +8 -0
  62. package/lib/models/auth-policy.d.ts.map +1 -0
  63. package/lib/models/jwt-signer.d.ts +3 -1
  64. package/lib/models/jwt-signer.d.ts.map +1 -1
  65. package/lib/pages/auth-policies/auth-policies-page.component.d.ts +29 -0
  66. package/lib/pages/auth-policies/auth-policies-page.component.d.ts.map +1 -0
  67. package/lib/pages/auth-policies/auth-policies-page.service.d.ts +34 -0
  68. package/lib/pages/auth-policies/auth-policies-page.service.d.ts.map +1 -0
  69. package/lib/pages/configurations/configurations-page.component.d.ts.map +1 -1
  70. package/lib/pages/edge-router-policies/edge-router-policies-page.component.d.ts.map +1 -1
  71. package/lib/pages/edge-routers/edge-routers-page.component.d.ts.map +1 -1
  72. package/lib/pages/identities/identities-page.component.d.ts.map +1 -1
  73. package/lib/pages/jwt-signers/jwt-signers-page.component.d.ts +4 -1
  74. package/lib/pages/jwt-signers/jwt-signers-page.component.d.ts.map +1 -1
  75. package/lib/pages/service-edge-router-policies/service-edge-router-policies-page.component.d.ts.map +1 -1
  76. package/lib/pages/service-policies/service-policies-page.component.d.ts.map +1 -1
  77. package/lib/pages/services/services-page.component.d.ts.map +1 -1
  78. package/lib/pages/terminators/terminators-page.component.d.ts.map +1 -1
  79. package/lib/services/node-data.service.d.ts +1 -0
  80. package/lib/services/node-data.service.d.ts.map +1 -1
  81. package/lib/services/tab-name.service.d.ts.map +1 -1
  82. package/lib/services/validation.service.d.ts +1 -0
  83. package/lib/services/validation.service.d.ts.map +1 -1
  84. package/lib/services/ziti-controller-data.service.d.ts +1 -0
  85. package/lib/services/ziti-controller-data.service.d.ts.map +1 -1
  86. package/lib/services/ziti-data.service.d.ts +1 -0
  87. package/lib/services/ziti-data.service.d.ts.map +1 -1
  88. package/lib/shared/list-page-service.class.d.ts +1 -0
  89. package/lib/shared/list-page-service.class.d.ts.map +1 -1
  90. package/lib/ziti-console-lib.module.d.ts +20 -17
  91. package/lib/ziti-console-lib.module.d.ts.map +1 -1
  92. package/package.json +1 -1
  93. package/public-api.d.ts +4 -0
  94. package/public-api.d.ts.map +1 -1
@@ -1,7 +1,6 @@
1
1
  <!-- General Page Layout HTML -->
2
2
  <div class="header">
3
3
  <div class="title">
4
- <span data-i18n="Manage"></span>
5
4
  <span data-i18n="Sessions"></span>
6
5
  </div>
7
6
  <div class="bread">
@@ -12,7 +12,7 @@
12
12
  <span data-i18n="AuthPolicies"></span>
13
13
  </div>
14
14
  <div class="line"></div>
15
- {{html.tabPolicies}}
15
+ {{html.tabAuthentication}}
16
16
  </div>
17
17
  {{html.add}}
18
18
  {{html.search}}
@@ -1,7 +1,6 @@
1
1
  <!-- General Page Layout HTML -->
2
2
  <div class="header">
3
3
  <div class="title">
4
- <span data-i18n="Manage"></span>
5
4
  <span data-i18n="CAs"></span>
6
5
  </div>
7
6
  <div class="bread">
@@ -11,12 +10,7 @@
11
10
  <span data-i18n="CAs"></span>
12
11
  </div>
13
12
  <div class="line"></div>
14
- <div class="tabs">
15
- <div class="tab selected">
16
- <span data-i18n="Manage"></span>
17
- <span data-i18n="CAs"></span>
18
- </div>
19
- </div>
13
+ {{html.tabAuthentication}}
20
14
  </div>
21
15
  {{html.add}}
22
16
  {{html.search}}
@@ -1,7 +1,6 @@
1
1
  <!-- General Page Layout HTML -->
2
2
  <div class="header">
3
3
  <div class="title">
4
- <span data-i18n="Manage"></span>
5
4
  <span data-i18n="ConfigTypes"></span>
6
5
  </div>
7
6
  <div class="bread">
@@ -12,7 +12,7 @@
12
12
  <span data-i18n="JwtSigners"></span>
13
13
  </div>
14
14
  {{html.line}}
15
- {{html.tabPolicies}}
15
+ {{html.tabAuthentication}}
16
16
  </div>
17
17
  {{html.add}}
18
18
  {{html.search}}
@@ -1,6 +1,6 @@
1
1
  <!-- General Page Layout HTML -->
2
2
  <div class="header">
3
- <div class="title">Manage <span data-i18n="PostureChecks"></span></div>
3
+ <div class="title"><span data-i18n="PostureChecks"></span></div>
4
4
  <div class="bread">Ziti Network <span class="secondary">/</span> Manage <span data-i18n="PostureChecks"></span></div>
5
5
  {{html.line}}
6
6
  {{html.tabIdentities}}
@@ -24,6 +24,10 @@ body {
24
24
  --formBase: #919ca5;
25
25
  --formGroup: #232f3e;
26
26
  --formSubGroup: #5e7088;
27
+ --buttonHeightSmall: 25px;
28
+ --buttonImageSizeSmall: 20px;
29
+ --buttonImagePaddingSmall: 35px;
30
+ --buttonImagePositionSmall: left calc(var(--paddingSmall) + 3px) center;
27
31
  --modalBorderRadius: 15px;
28
32
  --paddingSmall: 5px;
29
33
  --paddingMedium: 10px;
@@ -127,6 +131,7 @@ input {
127
131
  font-weight: 700;
128
132
  }
129
133
 
134
+ #VerifyModal,
130
135
  #DetailModal,
131
136
  #AddMessageModal,
132
137
  #QRModal,
@@ -143,7 +148,23 @@ input {
143
148
  }
144
149
  }
145
150
 
151
+ #VerifyModal {
152
+ .sized {
153
+ &.large {
154
+ margin-top: 20px;
155
+ height: 100%;
156
+
157
+ .icon-close {
158
+ &.close {
159
+ top: 30px;
160
+ }
161
+ }
162
+ }
163
+ }
164
+ }
165
+
146
166
  .sideNavClosed {
167
+ #VerifyModal,
147
168
  #AddMessageModal,
148
169
  #QRModal,
149
170
  #ResetModal,
@@ -313,6 +334,12 @@ input {
313
334
  color: var(--tableText);
314
335
  text-transform: uppercase;
315
336
  height: 14px;
337
+
338
+ .form-sub-text {
339
+ margin-left: 5px;
340
+ font-size: 12px;
341
+ text-transform: none;
342
+ }
316
343
  }
317
344
 
318
345
  .form-field-label {
@@ -773,12 +800,15 @@ lib-form-field-container {
773
800
  justify-content: space-between;
774
801
  padding: 20px;
775
802
  width: 100%;
776
- background-color: var(--stroke);
803
+ background-color: var(--formGroup);
777
804
  border-radius: 5px;
778
805
 
779
806
  &.toggle-container {
780
- padding-top: 10px;
781
- padding-bottom: 10px;
807
+ padding: 10px;
808
+
809
+ .config-container-label {
810
+ color: var(--offWhite);
811
+ }
782
812
  }
783
813
  }
784
814
 
@@ -1107,5 +1137,205 @@ p-dropdown {
1107
1137
  display: none;
1108
1138
  }
1109
1139
  }
1140
+ .p-icon-wrapper {
1141
+ width: 20px;
1142
+ position: absolute;
1143
+ right: 32px;
1144
+ top: 11px;
1145
+ height: 20px;
1146
+
1147
+ .p-dropdown-clear-icon {
1148
+ right: 0;
1149
+ path {
1150
+ fill: var(--icon) !important;
1151
+ }
1152
+ }
1153
+
1154
+ &:hover {
1155
+ .p-dropdown-clear-icon {
1156
+ path {
1157
+ fill: var(--primaryColor) !important;
1158
+ }
1159
+ }
1160
+ }
1161
+ }
1162
+ }
1163
+ }
1164
+
1165
+ .p-element {
1166
+
1167
+ .p-chips.p-component {
1168
+ width: 100%;
1169
+ font-weight: 400;
1170
+ font-family: 'Open Sans', Arial, sans-serif;
1171
+ height: var(--defaultInputHeight);
1172
+ border-color: var(--stroke);
1173
+ border-style: solid;
1174
+ border-width: var(--inputBorderWidth);
1175
+ border-radius: var(--inputBorderRadius);
1176
+ padding-left: 10px;
1177
+ padding-right: 10px;
1178
+ outline: none;
1179
+ box-sizing: border-box;
1180
+ font-size: 15px;
1181
+ background-color: var(--background) !important;
1182
+ color: var(--text);
1183
+ -webkit-appearance: none;
1184
+
1185
+ .p-inputtext.p-chips-multiple-container {
1186
+ width: 100%;
1187
+ padding: 0;
1188
+ border-width: var(--inputBorderWidth);
1189
+
1190
+ &.p-focus {
1191
+ border-color: var(--primaryColor) !important;
1192
+ box-shadow: 0 0 7px 0 var(--primaryColorOpaque) !important;
1193
+
1194
+ &.error {
1195
+ border-color: var(--red) !important;
1196
+ }
1197
+ }
1198
+ }
1199
+ }
1200
+
1201
+ .p-chips .p-chips-multiple-container .p-chips-input-token input {
1202
+ height: 25px;
1203
+ font-size: 14px;
1204
+ color: #495057;
1205
+ padding: 0;
1206
+ margin: 0;
1207
+ border: 0 none;
1208
+ outline: 0 none;
1209
+ background-color: transparent;
1210
+ box-shadow: none;
1211
+ border-radius: 0;
1212
+ width: 100%
1213
+ }
1214
+
1215
+ .p-chips .p-chips-multiple-container .p-chips-token {
1216
+ margin-right: .5rem;
1217
+ font-family: Open Sans, sans-serif;
1218
+ font-weight: 600;
1219
+ margin-top: 5px;
1220
+ margin-bottom: 5px;
1221
+ background: var(--primary);
1222
+ color: var(--white);
1223
+ border-radius: var(--inputBorderRadius);
1224
+ cursor: default;
1225
+ display: inline-flex;
1226
+ align-items: center;
1227
+ flex: 0 0 auto;
1228
+ max-width: 100%
1229
+ }
1230
+
1231
+ .p-chips-token-icon {
1232
+ margin-left: 0.5rem;
1233
+ cursor: pointer;
1234
+ color:blue;
1235
+ fill: red;
1236
+ }
1237
+
1238
+ .p-chips {
1239
+ display: inline-flex
1240
+ }
1241
+
1242
+ .p-chips-token-label {
1243
+ min-width: 0;
1244
+ overflow: auto
1245
+ }
1246
+
1247
+ .p-chips-token-label::-webkit-scrollbar {
1248
+ display: none
1249
+ }
1250
+
1251
+ .p-fluid .p-chips {
1252
+ display: flex
1253
+ }
1254
+
1255
+ .p-chips-clear-icon {
1256
+ position: absolute;
1257
+ top: 50%;
1258
+ margin-top: -.5rem;
1259
+ cursor: pointer;
1260
+ }
1261
+
1262
+ .p-chips-clearable .p-inputtext {
1263
+ position: relative
1264
+ }
1265
+
1266
+ .p-inputtext {
1267
+ border:none;
1268
+ }
1269
+ }
1270
+
1271
+ p-dropdown {
1272
+ .p-dropdown {
1273
+ .p-dropdown-header {
1274
+ .dropdown-filter-container {
1275
+ display: flex;
1276
+ flex-direction: row;
1277
+
1278
+ .p-inputtext {
1279
+ border-radius: 0;
1280
+ border-width: 1px;
1281
+ border-color: var(--stroke);
1282
+ border-style: solid;
1283
+
1284
+ &:focus {
1285
+ box-shadow: none;
1286
+ &:enabled {
1287
+ box-shadow: none;
1288
+ }
1289
+ }
1290
+ }
1291
+
1292
+ .spinner {
1293
+ display: inline-block;
1294
+ width: var(--spinnerSizeMedium);
1295
+ height: var(--spinnerSizeMedium);
1296
+ border-radius: 50%;
1297
+ background: transparent;
1298
+ border-top: var(--spinerBorderTopMedium);
1299
+ border-right: var(--spinerBorderRightMedium);
1300
+ border-bottom: var(--spinerBorderBottomMedium);
1301
+ border-left: var(--spinerBorderLeftMedium);
1302
+ animation: loading .5s infinite linear;
1303
+ margin-left: var(--marginSmall);
1304
+ position: absolute;
1305
+ right: 18px;
1306
+ top: 20px;
1307
+ opacity: .7;
1308
+ }
1309
+ }
1310
+
1311
+ .p-inputgroup-addon {
1312
+ border-top-left-radius: var(--inputBorderRadius);
1313
+ border-bottom-left-radius: var(--inputBorderRadius);
1314
+ }
1315
+
1316
+ .p-button {
1317
+ border-radius: 0;
1318
+ border-top-right-radius: var(--inputBorderRadius);
1319
+ border-bottom-right-radius: var(--inputBorderRadius);
1320
+ background-color: var(--primary);
1321
+
1322
+ &.configs-loading {
1323
+ .p-button-icon {
1324
+ display: none;
1325
+ }
1326
+ }
1327
+
1328
+ &:focus {
1329
+ box-shadow: none;
1330
+ }
1331
+ }
1332
+ .p-button {
1333
+ &.configs-loading {
1334
+ .p-button-icon {
1335
+ display: none;
1336
+ }
1337
+ }
1338
+ }
1339
+ }
1110
1340
  }
1111
1341
  }
@@ -34,10 +34,8 @@ class ConfigEditorComponent {
34
34
  this.lColorArray = [
35
35
  'white',
36
36
  'white',
37
- 'white',
38
37
  ];
39
38
  this.bColorArray = [
40
- 'var(--formBase)',
41
39
  'var(--formGroup)',
42
40
  'var(--formSubGroup)'
43
41
  ];
@@ -252,4 +250,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
252
250
  type: ViewChild,
253
251
  args: [JsonEditorComponent, { static: false }]
254
252
  }] } });
255
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvY29uZmlnLWVkaXRvci9jb25maWctZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9jb25maWctZWRpdG9yL2NvbmZpZy1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBZ0IsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBQyxtQkFBbUIsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLE1BQU0sUUFBUSxDQUFDOzs7OztBQUcvRSxNQUthLHFCQUFxQjtJQXFCaEMsSUFBYSxVQUFVLENBQUMsSUFBSTtRQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBQUEsQ0FBQztJQUVGLElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBR0QsSUFBYSxZQUFZLENBQUMsWUFBcUI7UUFDN0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUM7UUFDbEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBR0QsSUFBYSxNQUFNLENBQUMsTUFBVztR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O1FBQ25ELENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0F0T1UscUJBQXFCO21HQUFyQixxQkFBcUIsaVdBbURDLGdCQUFnQixzREFDdEMsbUJBQW1CLGdEQzlEaEMsaWRBSTRGOztTRE0vRSxxQkFBcUI7NEZBQXJCLHFCQUFxQjtrQkFMakMsU0FBUzsrQkFDRSxtQkFBbUI7b0dBcUJwQixZQUFZO3NCQUFwQixLQUFLO2dCQUNJLGtCQUFrQjtzQkFBM0IsTUFBTTtnQkFHTSxVQUFVO3NCQUF0QixLQUFLO2dCQUdJLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFNTSxZQUFZO3NCQUF4QixLQUFLO2dCQVNPLE1BQU07c0JBQWxCLEtBQUs7Z0JBWThDLFdBQVc7c0JBQTlELFNBQVM7dUJBQUMsYUFBYSxFQUFFLEVBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFDO2dCQUNELE1BQU07c0JBQXRELFNBQVM7dUJBQUMsbUJBQW1CLEVBQUUsRUFBQyxNQUFNLEVBQUUsS0FBSyxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb21wb25lbnQsIENvbXBvbmVudFJlZiwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQsIFZpZXdDaGlsZCwgVmlld0NvbnRhaW5lclJlZn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0pzb25FZGl0b3JDb21wb25lbnQsIEpzb25FZGl0b3JPcHRpb25zfSBmcm9tIFwiYW5nLWpzb25lZGl0b3JcIjtcbmltcG9ydCB7ZGVib3VuY2UsIGRlZmVyLCBkZWxheSwgaXNCb29sZWFuLCBpc0VtcHR5LCBpc05pbCwga2V5c30gZnJvbSBcImxvZGFzaFwiO1xuaW1wb3J0IHtTY2hlbWFTZXJ2aWNlfSBmcm9tIFwiLi4vLi4vc2VydmljZXMvc2NoZW1hLnNlcnZpY2VcIjtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWNvbmZpZy1lZGl0b3InLFxuICB0ZW1wbGF0ZVVybDogJy4vY29uZmlnLWVkaXRvci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2NvbmZpZy1lZGl0b3IuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBDb25maWdFZGl0b3JDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGl0ZW1zOiBhbnlbXSA9IFtdO1xuXG4gIGxDb2xvckFycmF5ID0gW1xuICAgICd3aGl0ZScsXG4gICAgJ3doaXRlJyxcbiAgICAnd2hpdGUnLFxuICBdXG5cbiAgYkNvbG9yQXJyYXkgPSBbXG4gICAgJ3ZhcigtLWZvcm1CYXNlKScsXG4gICAgJ3ZhcigtLWZvcm1Hcm91cCknLFxuICAgICd2YXIoLS1mb3JtU3ViR3JvdXApJ1xuICBdXG4gIGhpZGVDb25maWdKU09OID0gZmFsc2U7XG5cbiAgQElucHV0KCkgY29uZmlnRXJyb3JzOiBhbnkgPSB7fTtcbiAgQE91dHB1dCgpIGNvbmZpZ0Vycm9yc0NoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIF9jb25maWdEYXRhOiBhbnkgPSB7fTtcbiAgQElucHV0KCkgc2V0IGNvbmZpZ0RhdGEoZGF0YSkge1xuICAgIHRoaXMuX2NvbmZpZ0RhdGEgPSBkYXRhO1xuICB9O1xuICBAT3V0cHV0KCkgY29uZmlnRGF0YUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuICBnZXQgY29uZmlnRGF0YSgpIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnRGF0YTtcbiAgfVxuXG4gIF9zaG93SnNvblZpZXcgPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0IHNob3dKc29uVmlldyhzaG93SnNvblZpZXc6IGJvb2xlYW4pIHtcbiAgICB0aGlzLl9zaG93SnNvblZpZXcgPSBzaG93SnNvblZpZXc7XG4gICAgdGhpcy51cGRhdGVDb25maWdEYXRhKCk7XG4gIH1cbiAgZ2V0IHNob3dKc29uVmlldygpIHtcbiAgICByZXR1cm4gdGhpcy5fc2hvd0pzb25WaWV3O1xuICB9XG5cbiAgX3NjaGVtYSA9IGZhbHNlO1xuICBASW5wdXQoKSBzZXQgc2NoZW1hKHNjaGVtYTogYW55KSB7XG4gICAgdGhpcy5fc2NoZW1hID0gc2NoZW1hO1xuICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICAgIHRoaXMudXBkYXRlQ29uZmlnRGF0YSgpO1xuICB9XG5cbiAgZ2V0IHNjaGVtYSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2NoZW1hO1xuICB9XG5cbiAgZm9ybURhdGFDaGFuZ2VkRGVib3VuY2VkOiBhbnkgPSBkZWJvdW5jZSh0aGlzLmZvcm1EYXRhQ2hhbmdlZC5iaW5kKHRoaXMpLCAzNTApO1xuICBqc29uRGF0YUNoYW5nZWREZWJvdW5jZWQ6IGFueSA9IGRlYm91bmNlKHRoaXMuanNvbkRhdGFDaGFuZ2VkLmJpbmQodGhpcyksIDM1MCk7XG4gIEBWaWV3Q2hpbGQoXCJkeW5hbWljZm9ybVwiLCB7cmVhZDogVmlld0NvbnRhaW5lclJlZn0pIGR5bmFtaWNGb3JtITogVmlld0NvbnRhaW5lclJlZjtcbiAgQFZpZXdDaGlsZChKc29uRWRpdG9yQ29tcG9uZW50LCB7c3RhdGljOiBmYWxzZX0pIGVkaXRvciE6IEpzb25FZGl0b3JDb21wb25lbnQ7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2NoZW1hU3ZjOiBTY2hlbWFTZXJ2aWNlKSB7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmNyZWF0ZUZvcm0oKTtcbiAgICBkZWZlcigoKSA9PiB7XG4gICAgICB0aGlzLmZvcm1EYXRhQ2hhbmdlZCgpO1xuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRlRm9ybSgpIHtcbiAgICB0aGlzLmNsZWFyRm9ybSgpO1xuICAgIGlmICh0aGlzLmR5bmFtaWNGb3JtICYmIHRoaXMuc2NoZW1hKSB7XG4gICAgICB0aGlzLnJlbmRlclNjaGVtYSh0aGlzLnNjaGVtYSk7XG4gICAgfVxuICB9XG5cbiAgY2xlYXJGb3JtKCkge1xuICAgIHRoaXMuaXRlbXMuZm9yRWFjaCgoaXRlbTogYW55KSA9PiB7XG4gICAgICBpZiAoaXRlbT8uY29tcG9uZW50KSBpdGVtLmNvbXBvbmVudC5kZXN0cm95KCk7XG4gICAgfSk7XG4gICAgdGhpcy5jb25maWdFcnJvcnMgPSB7fTtcbiAgICB0aGlzLml0ZW1zID0gW107XG4gIH1cblxuICByZW5kZXJTY2hlbWEoc2NoZW1hOiBhbnkpIHtcbiAgICBpZiAoc2NoZW1hLnByb3BlcnRpZXMpIHtcbiAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLnNjaGVtYVN2Yy5yZW5kZXIoc2NoZW1hLCB0aGlzLmR5bmFtaWNGb3JtLCB0aGlzLmxDb2xvckFycmF5LCB0aGlzLmJDb2xvckFycmF5KTtcbiAgICAgIGZvciAobGV0IG9iaiBvZiB0aGlzLml0ZW1zKSB7XG4gICAgICAgIGNvbnN0IGNSZWYgPSBvYmouY29tcG9uZW50O1xuICAgICAgICBjUmVmLmluc3RhbmNlLmVycm9ycyA9IHRoaXMuY29uZmlnRXJyb3JzO1xuICAgICAgICBpZiAoY1JlZj8uaW5zdGFuY2UudmFsdWVDaGFuZ2UpIHtcbiAgICAgICAgICBjb25zdCBwTmFtZTogc3RyaW5nW10gID0gY1JlZi5pbnN0YW5jZS5wYXJlbnRhZ2U7XG4gICAgICAgICAgbGV0IHBhcmVudEtleTtcbiAgICAgICAgICBpZihwTmFtZSkgcGFyZW50S2V5ID0gcE5hbWUuam9pbignLicpO1xuICAgICAgICAgIC8vaWYgKHBhcmVudEtleSAmJiAhdGhpcy5mb3JtRGF0YVtwYXJlbnRLZXldKSB0aGlzLmZvcm1EYXRhW3BhcmVudEtleV0gPSB7fTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUNvbmZpZ0RhdGEoKSB7XG4gICAgaWYgKCF0aGlzLnNob3dKc29uVmlldykge1xuICAgICAgdGhpcy51cGRhdGVGb3JtVmlldyh0aGlzLml0ZW1zLCB0aGlzLmNvbmZpZ0RhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhpZGVDb25maWdKU09OID0gdHJ1ZTtcbiAgICAgIGRlZmVyKCgpID0+IHtcbiAgICAgICAgdGhpcy5nZXRDb25maWdEYXRhRnJvbUZvcm0oKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHVwZGF0ZUZvcm1WaWV3KGl0ZW1zLCBkYXRhOiBhbnkgPSB7fSkge1xuICAgIGl0ZW1zLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGlmIChpdGVtLml0ZW1zKSB7XG4gICAgICAgIGlmIChpdGVtLnR5cGUgPT09ICdhcnJheScpIHtcbiAgICAgICAgICBpZiAoaXRlbT8uY29tcG9uZW50Py5pbnN0YW5jZT8uYWRkZWRJdGVtcykge1xuICAgICAgICAgICAgaXRlbS5hZGRlZEl0ZW1zID0gZGF0YVtpdGVtLmtleV0gfHwgW107XG4gICAgICAgICAgICBpdGVtLmNvbXBvbmVudC5pbnN0YW5jZS5hZGRlZEl0ZW1zID0gZGF0YVtpdGVtLmtleV0gfHwgW107XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMudXBkYXRlRm9ybVZpZXcoaXRlbS5pdGVtcywge30pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMudXBkYXRlRm9ybVZpZXcoaXRlbS5pdGVtcywgZGF0YVtpdGVtLmtleV0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0/LmNvbXBvbmVudD8uaW5zdGFuY2U/LnNldFByb3BlcnRpZXMpIHtcbiAgICAgICAgbGV0IHZhbDtcbiAgICAgICAgc3dpdGNoIChpdGVtLmtleSkge1xuICAgICAgICAgIGNhc2UgJ2ZvcndhcmRpbmdjb25maWcnOlxuICAgICAgICAgICAgdmFsID0ge1xuICAgICAgICAgICAgICBwcm90b2NvbDogZGF0YS5wcm90b2NvbCxcbiAgICAgICAgICAgICAgYWRkcmVzczogZGF0YS5hZGRyZXNzLFxuICAgICAgICAgICAgICBwb3J0OiBkYXRhLnBvcnQsXG4gICAgICAgICAgICAgIGZvcndhcmRQcm90b2NvbDogZGF0YS5mb3J3YXJkUHJvdG9jb2wsXG4gICAgICAgICAgICAgIGZvcndhcmRBZGRyZXNzOiBkYXRhLmZvcndhcmRBZGRyZXNzLFxuICAgICAgICAgICAgICBmb3J3YXJkUG9ydDogZGF0YS5mb3J3YXJkUG9ydCxcbiAgICAgICAgICAgICAgYWxsb3dlZFByb3RvY29sczogZGF0YS5hbGxvd2VkUHJvdG9jb2xzLFxuICAgICAgICAgICAgICBhbGxvd2VkQWRkcmVzc2VzOiBkYXRhLmFsbG93ZWRBZGRyZXNzZXMsXG4gICAgICAgICAgICAgIGFsbG93ZWRQb3J0UmFuZ2VzOiBkYXRhLmFsbG93ZWRQb3J0UmFuZ2VzXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdwYXAnOlxuICAgICAgICAgICAgdmFsID0ge1xuICAgICAgICAgICAgICBwcm90b2NvbDogZGF0YS5wcm90b2NvbCxcbiAgICAgICAgICAgICAgYWRkcmVzczogZGF0YS5hZGRyZXNzLFxuICAgICAgICAgICAgICBwb3J0OiBkYXRhLnBvcnQsXG4gICAgICAgICAgICAgIGhvc3RuYW1lOiBkYXRhLmhvc3RuYW1lLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHZhbCA9IGRhdGFbaXRlbS5rZXldO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaXRlbT8uY29tcG9uZW50Py5pbnN0YW5jZT8uc2V0UHJvcGVydGllcyh2YWwpO1xuICAgICAgfSBlbHNlIGlmIChpdGVtPy5jb21wb25lbnQ/LnNldElucHV0KSB7XG4gICAgICAgIGl0ZW0uY29tcG9uZW50LnNldElucHV0KCdmaWVsZFZhbHVlJywgZGF0YVtpdGVtLmtleV0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgZ2V0Q29uZmlnRGF0YUZyb21Gb3JtKCkge1xuICAgIGNvbnN0IGRhdGEgPSB7fTtcbiAgICB0aGlzLmFkZEl0ZW1zVG9Db25maWcodGhpcy5pdGVtcywgZGF0YSk7XG4gICAgdGhpcy5fY29uZmlnRGF0YSA9IGRhdGE7XG4gICAgdGhpcy5oaWRlQ29uZmlnSlNPTiA9IGZhbHNlO1xuICAgIHRoaXMuY29uZmlnRGF0YUNoYW5nZS5lbWl0KHRoaXMuY29uZmlnRGF0YSk7XG4gIH1cblxuICBhZGRJdGVtc1RvQ29uZmlnKGl0ZW1zLCBkYXRhOiBhbnkgPSB7fSwgcGFyZW50VHlwZSA9ICdvYmplY3QnKSB7XG4gICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgICBpZiAoaXRlbS5hZGRlZEl0ZW1zKSB7XG4gICAgICAgICAgZGF0YVtpdGVtLmtleV0gPSBpdGVtLmFkZGVkSXRlbXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGF0YVtpdGVtLmtleV0gPSBbXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIGNvbnN0IHZhbCA9IHRoaXMuYWRkSXRlbXNUb0NvbmZpZyhpdGVtLml0ZW1zLCB7fSwgaXRlbS50eXBlKTtcbiAgICAgICAgbGV0IGhhc0RlZmluaXRpb24gPSBmYWxzZTtcbiAgICAgICAga2V5cyh2YWwpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICAgIGlmIChpc0Jvb2xlYW4odmFsW2tleV0pIHx8ICghaXNFbXB0eSh2YWxba2V5XSkgJiYgIWlzTmlsKHZhbFtrZXldKSkpIHtcbiAgICAgICAgICAgIGhhc0RlZmluaXRpb24gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICAgIGRhdGFbaXRlbS5rZXldID0gaGFzRGVmaW5pdGlvbiA/IHZhbCA6IHVuZGVmaW5lZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBwcm9wcyA9IFtdO1xuICAgICAgICBpZiAoaXRlbT8uY29tcG9uZW50Py5pbnN0YW5jZT8uZ2V0UHJvcGVydGllcykge1xuICAgICAgICAgIHByb3BzID0gaXRlbT8uY29tcG9uZW50Py5pbnN0YW5jZT8uZ2V0UHJvcGVydGllcygpO1xuICAgICAgICB9IGVsc2UgaWYgKGl0ZW0/LmNvbXBvbmVudD8uaW5zdGFuY2UpIHtcbiAgICAgICAgICBwcm9wcyA9IFt7a2V5OiBpdGVtLmtleSwgdmFsdWU6IGl0ZW0uY29tcG9uZW50Lmluc3RhbmNlLmZpZWxkVmFsdWV9XTtcbiAgICAgICAgfVxuICAgICAgICBwcm9wcy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICAgICAgZGF0YVtwcm9wLmtleV0gPSBwcm9wLnZhbHVlO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YTtcbiAgfVxuXG4gIHZhbGlkYXRlQ29uZmlnKCkge1xuICAgIHRoaXMuY29uZmlnRXJyb3JzID0ge307XG4gICAgY29uc3QgY29uZmlnSXRlbXNWYWxpZCA9IHRoaXMudmFsaWRhdGVDb25maWdJdGVtcyh0aGlzLml0ZW1zKTtcbiAgICBpZiAoIWNvbmZpZ0l0ZW1zVmFsaWQpIHtcbiAgICAgIHRoaXMuY29uZmlnRXJyb3JzWydjb25maWdEYXRhJ10gPSB0cnVlO1xuICAgIH1cbiAgICB0aGlzLmNvbmZpZ0Vycm9yc0NoYW5nZS5lbWl0KHRoaXMuY29uZmlnRXJyb3JzKTtcbiAgICByZXR1cm4gaXNFbXB0eSh0aGlzLmNvbmZpZ0Vycm9ycyk7XG4gIH1cblxuICB2YWxpZGF0ZUNvbmZpZ0l0ZW1zKGl0ZW1zLCBwYXJlbnRUeXBlID0gJ29iamVjdCcpIHtcbiAgICBsZXQgaXNWYWxpZCA9IHRydWU7XG4gICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgaWYgKCF0aGlzLnZhbGlkYXRlQ29uZmlnSXRlbXMoaXRlbS5pdGVtcywgaXRlbS50eXBlKSkge1xuICAgICAgICAgIGlzVmFsaWQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpdGVtPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5pc1ZhbGlkKSB7XG4gICAgICAgIGlmICghaXRlbT8uY29tcG9uZW50Py5pbnN0YW5jZT8uaXNWYWxpZCgpKSB7XG4gICAgICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGlzVmFsaWQ7XG4gIH1cblxuICBmb3JtRGF0YUNoYW5nZWQoKSB7XG4gICAgZGVsYXkoKCkgPT4ge1xuICAgICAgdGhpcy5nZXRDb25maWdEYXRhRnJvbUZvcm0oKTtcbiAgICB9LCAyMDApO1xuICB9XG5cbiAganNvbkRhdGFDaGFuZ2VkKGV2ZW50KSB7XG4gICAgZGVmZXIoKCkgPT4ge1xuICAgICAgdGhpcy5jb25maWdEYXRhQ2hhbmdlLmVtaXQodGhpcy5jb25maWdEYXRhKTtcbiAgICAgIHRoaXMudXBkYXRlRm9ybVZpZXcodGhpcy5pdGVtcywgdGhpcy5jb25maWdEYXRhKTtcbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImZvcm0tZmllbGQtZXh0ZW5kZWQtZmllbGRzXCIgW2hpZGRlbl09XCJzaG93SnNvblZpZXdcIiAobW91c2V1cCk9XCJmb3JtRGF0YUNoYW5nZWREZWJvdW5jZWQoJGV2ZW50KVwiIChrZXl1cCk9XCJmb3JtRGF0YUNoYW5nZWREZWJvdW5jZWQoJGV2ZW50KVwiPlxuICAgIDxuZy1jb250YWluZXIgI2R5bmFtaWNmb3JtPjwvbmctY29udGFpbmVyPlxuPC9kaXY+XG48bGliLWpzb24tdmlldyAqbmdJZj1cInNob3dKc29uVmlldyAmJiAhaGlkZUNvbmZpZ0pTT05cIiAoZGF0YUNoYW5nZSk9XCJqc29uRGF0YUNoYW5nZWREZWJvdW5jZWQoJGV2ZW50KVwiIFsoZGF0YSldPVwiY29uZmlnRGF0YVwiPjwvbGliLWpzb24tdmlldz5cbjxsaWItanNvbi12aWV3ICpuZ0lmPVwic2hvd0pzb25WaWV3ICYmIGhpZGVDb25maWdKU09OXCIgWyhkYXRhKV09XCJjb25maWdEYXRhXCI+PC9saWItanNvbi12aWV3PiJdfQ==
253
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWVkaXRvci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvY29uZmlnLWVkaXRvci9jb25maWctZWRpdG9yLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9jb25maWctZWRpdG9yL2NvbmZpZy1lZGl0b3IuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFNBQVMsRUFBZ0IsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFDLE1BQU0sZUFBZSxDQUFDO0FBQ3hILE9BQU8sRUFBQyxtQkFBbUIsRUFBb0IsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFDLE1BQU0sUUFBUSxDQUFDOzs7OztBQUcvRSxNQUthLHFCQUFxQjtJQW1CaEMsSUFBYSxVQUFVLENBQUMsSUFBSTtRQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztJQUMxQixDQUFDO0lBQUEsQ0FBQztJQUVGLElBQUksVUFBVTtRQUNaLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBR0QsSUFBYSxZQUFZLENBQUMsWUFBcUI7UUFDN0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUM7UUFDbEMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUNELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBR0QsSUFBYSxNQUFNLENBQUMsTUFBVztR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QUNMLENBQUM7K0dBcE9VLHFCQUFxQjttR0FBckIscUJBQXFCLGlXQWlEQyxnQkFBZ0Isc0RBQ3RDLG1CQUFtQixnREM1RGhDLGlkQUk0Rjs7U0RNL0UscUJBQXFCOzRGQUFyQixxQkFBcUI7a0JBTGpDLFNBQVM7K0JBQ0UsbUJBQW1CO29HQW1CcEIsWUFBWTtzQkFBcEIsS0FBSztnQkFDSSxrQkFBa0I7c0JBQTNCLE1BQU07Z0JBR00sVUFBVTtzQkFBdEIsS0FBSztnQkFHSSxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBTU0sWUFBWTtzQkFBeEIsS0FBSztnQkFTTyxNQUFNO3NCQUFsQixLQUFLO2dCQVk4QyxXQUFXO3NCQUE5RCxTQUFTO3VCQUFDLGFBQWEsRUFBRSxFQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBQztnQkFDRCxNQUFNO3NCQUF0RCxTQUFTO3VCQUFDLG1CQUFtQixFQUFFLEVBQUMsTUFBTSxFQUFFLEtBQUssRUFBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBDb21wb25lbnRSZWYsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0LCBWaWV3Q2hpbGQsIFZpZXdDb250YWluZXJSZWZ9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtKc29uRWRpdG9yQ29tcG9uZW50LCBKc29uRWRpdG9yT3B0aW9uc30gZnJvbSBcImFuZy1qc29uZWRpdG9yXCI7XG5pbXBvcnQge2RlYm91bmNlLCBkZWZlciwgZGVsYXksIGlzQm9vbGVhbiwgaXNFbXB0eSwgaXNOaWwsIGtleXN9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7U2NoZW1hU2VydmljZX0gZnJvbSBcIi4uLy4uL3NlcnZpY2VzL3NjaGVtYS5zZXJ2aWNlXCI7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2xpYi1jb25maWctZWRpdG9yJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2NvbmZpZy1lZGl0b3IuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9jb25maWctZWRpdG9yLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgQ29uZmlnRWRpdG9yQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBpdGVtczogYW55W10gPSBbXTtcblxuICBsQ29sb3JBcnJheSA9IFtcbiAgICAnd2hpdGUnLFxuICAgICd3aGl0ZScsXG4gIF1cblxuICBiQ29sb3JBcnJheSA9IFtcbiAgICAndmFyKC0tZm9ybUdyb3VwKScsXG4gICAgJ3ZhcigtLWZvcm1TdWJHcm91cCknXG4gIF1cbiAgaGlkZUNvbmZpZ0pTT04gPSBmYWxzZTtcblxuICBASW5wdXQoKSBjb25maWdFcnJvcnM6IGFueSA9IHt9O1xuICBAT3V0cHV0KCkgY29uZmlnRXJyb3JzQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgX2NvbmZpZ0RhdGE6IGFueSA9IHt9O1xuICBASW5wdXQoKSBzZXQgY29uZmlnRGF0YShkYXRhKSB7XG4gICAgdGhpcy5fY29uZmlnRGF0YSA9IGRhdGE7XG4gIH07XG4gIEBPdXRwdXQoKSBjb25maWdEYXRhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG4gIGdldCBjb25maWdEYXRhKCkge1xuICAgIHJldHVybiB0aGlzLl9jb25maWdEYXRhO1xuICB9XG5cbiAgX3Nob3dKc29uVmlldyA9IGZhbHNlO1xuICBASW5wdXQoKSBzZXQgc2hvd0pzb25WaWV3KHNob3dKc29uVmlldzogYm9vbGVhbikge1xuICAgIHRoaXMuX3Nob3dKc29uVmlldyA9IHNob3dKc29uVmlldztcbiAgICB0aGlzLnVwZGF0ZUNvbmZpZ0RhdGEoKTtcbiAgfVxuICBnZXQgc2hvd0pzb25WaWV3KCkge1xuICAgIHJldHVybiB0aGlzLl9zaG93SnNvblZpZXc7XG4gIH1cblxuICBfc2NoZW1hID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNldCBzY2hlbWEoc2NoZW1hOiBhbnkpIHtcbiAgICB0aGlzLl9zY2hlbWEgPSBzY2hlbWE7XG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XG4gICAgdGhpcy51cGRhdGVDb25maWdEYXRhKCk7XG4gIH1cblxuICBnZXQgc2NoZW1hKCkge1xuICAgIHJldHVybiB0aGlzLl9zY2hlbWE7XG4gIH1cblxuICBmb3JtRGF0YUNoYW5nZWREZWJvdW5jZWQ6IGFueSA9IGRlYm91bmNlKHRoaXMuZm9ybURhdGFDaGFuZ2VkLmJpbmQodGhpcyksIDM1MCk7XG4gIGpzb25EYXRhQ2hhbmdlZERlYm91bmNlZDogYW55ID0gZGVib3VuY2UodGhpcy5qc29uRGF0YUNoYW5nZWQuYmluZCh0aGlzKSwgMzUwKTtcbiAgQFZpZXdDaGlsZChcImR5bmFtaWNmb3JtXCIsIHtyZWFkOiBWaWV3Q29udGFpbmVyUmVmfSkgZHluYW1pY0Zvcm0hOiBWaWV3Q29udGFpbmVyUmVmO1xuICBAVmlld0NoaWxkKEpzb25FZGl0b3JDb21wb25lbnQsIHtzdGF0aWM6IGZhbHNlfSkgZWRpdG9yITogSnNvbkVkaXRvckNvbXBvbmVudDtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBzY2hlbWFTdmM6IFNjaGVtYVNlcnZpY2UpIHtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuY3JlYXRlRm9ybSgpO1xuICAgIGRlZmVyKCgpID0+IHtcbiAgICAgIHRoaXMuZm9ybURhdGFDaGFuZ2VkKCk7XG4gICAgfSk7XG4gIH1cblxuICBjcmVhdGVGb3JtKCkge1xuICAgIHRoaXMuY2xlYXJGb3JtKCk7XG4gICAgaWYgKHRoaXMuZHluYW1pY0Zvcm0gJiYgdGhpcy5zY2hlbWEpIHtcbiAgICAgIHRoaXMucmVuZGVyU2NoZW1hKHRoaXMuc2NoZW1hKTtcbiAgICB9XG4gIH1cblxuICBjbGVhckZvcm0oKSB7XG4gICAgdGhpcy5pdGVtcy5mb3JFYWNoKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIGlmIChpdGVtPy5jb21wb25lbnQpIGl0ZW0uY29tcG9uZW50LmRlc3Ryb3koKTtcbiAgICB9KTtcbiAgICB0aGlzLmNvbmZpZ0Vycm9ycyA9IHt9O1xuICAgIHRoaXMuaXRlbXMgPSBbXTtcbiAgfVxuXG4gIHJlbmRlclNjaGVtYShzY2hlbWE6IGFueSkge1xuICAgIGlmIChzY2hlbWEucHJvcGVydGllcykge1xuICAgICAgdGhpcy5pdGVtcyA9IHRoaXMuc2NoZW1hU3ZjLnJlbmRlcihzY2hlbWEsIHRoaXMuZHluYW1pY0Zvcm0sIHRoaXMubENvbG9yQXJyYXksIHRoaXMuYkNvbG9yQXJyYXkpO1xuICAgICAgZm9yIChsZXQgb2JqIG9mIHRoaXMuaXRlbXMpIHtcbiAgICAgICAgY29uc3QgY1JlZiA9IG9iai5jb21wb25lbnQ7XG4gICAgICAgIGNSZWYuaW5zdGFuY2UuZXJyb3JzID0gdGhpcy5jb25maWdFcnJvcnM7XG4gICAgICAgIGlmIChjUmVmPy5pbnN0YW5jZS52YWx1ZUNoYW5nZSkge1xuICAgICAgICAgIGNvbnN0IHBOYW1lOiBzdHJpbmdbXSAgPSBjUmVmLmluc3RhbmNlLnBhcmVudGFnZTtcbiAgICAgICAgICBsZXQgcGFyZW50S2V5O1xuICAgICAgICAgIGlmKHBOYW1lKSBwYXJlbnRLZXkgPSBwTmFtZS5qb2luKCcuJyk7XG4gICAgICAgICAgLy9pZiAocGFyZW50S2V5ICYmICF0aGlzLmZvcm1EYXRhW3BhcmVudEtleV0pIHRoaXMuZm9ybURhdGFbcGFyZW50S2V5XSA9IHt9O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlQ29uZmlnRGF0YSgpIHtcbiAgICBpZiAoIXRoaXMuc2hvd0pzb25WaWV3KSB7XG4gICAgICB0aGlzLnVwZGF0ZUZvcm1WaWV3KHRoaXMuaXRlbXMsIHRoaXMuY29uZmlnRGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuaGlkZUNvbmZpZ0pTT04gPSB0cnVlO1xuICAgICAgZGVmZXIoKCkgPT4ge1xuICAgICAgICB0aGlzLmdldENvbmZpZ0RhdGFGcm9tRm9ybSgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgdXBkYXRlRm9ybVZpZXcoaXRlbXMsIGRhdGE6IGFueSA9IHt9KSB7XG4gICAgaXRlbXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgaWYgKGl0ZW0uaXRlbXMpIHtcbiAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gJ2FycmF5Jykge1xuICAgICAgICAgIGlmIChpdGVtPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5hZGRlZEl0ZW1zKSB7XG4gICAgICAgICAgICBpdGVtLmFkZGVkSXRlbXMgPSBkYXRhW2l0ZW0ua2V5XSB8fCBbXTtcbiAgICAgICAgICAgIGl0ZW0uY29tcG9uZW50Lmluc3RhbmNlLmFkZGVkSXRlbXMgPSBkYXRhW2l0ZW0ua2V5XSB8fCBbXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy51cGRhdGVGb3JtVmlldyhpdGVtLml0ZW1zLCB7fSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy51cGRhdGVGb3JtVmlldyhpdGVtLml0ZW1zLCBkYXRhW2l0ZW0ua2V5XSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXRlbT8uY29tcG9uZW50Py5pbnN0YW5jZT8uc2V0UHJvcGVydGllcykge1xuICAgICAgICBsZXQgdmFsO1xuICAgICAgICBzd2l0Y2ggKGl0ZW0ua2V5KSB7XG4gICAgICAgICAgY2FzZSAnZm9yd2FyZGluZ2NvbmZpZyc6XG4gICAgICAgICAgICB2YWwgPSB7XG4gICAgICAgICAgICAgIHByb3RvY29sOiBkYXRhLnByb3RvY29sLFxuICAgICAgICAgICAgICBhZGRyZXNzOiBkYXRhLmFkZHJlc3MsXG4gICAgICAgICAgICAgIHBvcnQ6IGRhdGEucG9ydCxcbiAgICAgICAgICAgICAgZm9yd2FyZFByb3RvY29sOiBkYXRhLmZvcndhcmRQcm90b2NvbCxcbiAgICAgICAgICAgICAgZm9yd2FyZEFkZHJlc3M6IGRhdGEuZm9yd2FyZEFkZHJlc3MsXG4gICAgICAgICAgICAgIGZvcndhcmRQb3J0OiBkYXRhLmZvcndhcmRQb3J0LFxuICAgICAgICAgICAgICBhbGxvd2VkUHJvdG9jb2xzOiBkYXRhLmFsbG93ZWRQcm90b2NvbHMsXG4gICAgICAgICAgICAgIGFsbG93ZWRBZGRyZXNzZXM6IGRhdGEuYWxsb3dlZEFkZHJlc3NlcyxcbiAgICAgICAgICAgICAgYWxsb3dlZFBvcnRSYW5nZXM6IGRhdGEuYWxsb3dlZFBvcnRSYW5nZXNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ3BhcCc6XG4gICAgICAgICAgICB2YWwgPSB7XG4gICAgICAgICAgICAgIHByb3RvY29sOiBkYXRhLnByb3RvY29sLFxuICAgICAgICAgICAgICBhZGRyZXNzOiBkYXRhLmFkZHJlc3MsXG4gICAgICAgICAgICAgIHBvcnQ6IGRhdGEucG9ydCxcbiAgICAgICAgICAgICAgaG9zdG5hbWU6IGRhdGEuaG9zdG5hbWUsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdmFsID0gZGF0YVtpdGVtLmtleV07XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBpdGVtPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5zZXRQcm9wZXJ0aWVzKHZhbCk7XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0/LmNvbXBvbmVudD8uc2V0SW5wdXQpIHtcbiAgICAgICAgaXRlbS5jb21wb25lbnQuc2V0SW5wdXQoJ2ZpZWxkVmFsdWUnLCBkYXRhW2l0ZW0ua2V5XSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGRhdGE7XG4gIH1cblxuICBnZXRDb25maWdEYXRhRnJvbUZvcm0oKSB7XG4gICAgY29uc3QgZGF0YSA9IHt9O1xuICAgIHRoaXMuYWRkSXRlbXNUb0NvbmZpZyh0aGlzLml0ZW1zLCBkYXRhKTtcbiAgICB0aGlzLl9jb25maWdEYXRhID0gZGF0YTtcbiAgICB0aGlzLmhpZGVDb25maWdKU09OID0gZmFsc2U7XG4gICAgdGhpcy5jb25maWdEYXRhQ2hhbmdlLmVtaXQodGhpcy5jb25maWdEYXRhKTtcbiAgfVxuXG4gIGFkZEl0ZW1zVG9Db25maWcoaXRlbXMsIGRhdGE6IGFueSA9IHt9LCBwYXJlbnRUeXBlID0gJ29iamVjdCcpIHtcbiAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS50eXBlID09PSAnYXJyYXknKSB7XG4gICAgICAgIGlmIChpdGVtLmFkZGVkSXRlbXMpIHtcbiAgICAgICAgICBkYXRhW2l0ZW0ua2V5XSA9IGl0ZW0uYWRkZWRJdGVtcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkYXRhW2l0ZW0ua2V5XSA9IFtdO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0udHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgY29uc3QgdmFsID0gdGhpcy5hZGRJdGVtc1RvQ29uZmlnKGl0ZW0uaXRlbXMsIHt9LCBpdGVtLnR5cGUpO1xuICAgICAgICBsZXQgaGFzRGVmaW5pdGlvbiA9IGZhbHNlO1xuICAgICAgICBrZXlzKHZhbCkuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAgICAgaWYgKGlzQm9vbGVhbih2YWxba2V5XSkgfHwgKCFpc0VtcHR5KHZhbFtrZXldKSAmJiAhaXNOaWwodmFsW2tleV0pKSkge1xuICAgICAgICAgICAgaGFzRGVmaW5pdGlvbiA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgZGF0YVtpdGVtLmtleV0gPSBoYXNEZWZpbml0aW9uID8gdmFsIDogdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGV0IHByb3BzID0gW107XG4gICAgICAgIGlmIChpdGVtPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5nZXRQcm9wZXJ0aWVzKSB7XG4gICAgICAgICAgcHJvcHMgPSBpdGVtPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5nZXRQcm9wZXJ0aWVzKCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaXRlbT8uY29tcG9uZW50Py5pbnN0YW5jZSkge1xuICAgICAgICAgIHByb3BzID0gW3trZXk6IGl0ZW0ua2V5LCB2YWx1ZTogaXRlbS5jb21wb25lbnQuaW5zdGFuY2UuZmllbGRWYWx1ZX1dO1xuICAgICAgICB9XG4gICAgICAgIHByb3BzLmZvckVhY2goKHByb3ApID0+IHtcbiAgICAgICAgICBkYXRhW3Byb3Aua2V5XSA9IHByb3AudmFsdWU7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBkYXRhO1xuICB9XG5cbiAgdmFsaWRhdGVDb25maWcoKSB7XG4gICAgdGhpcy5jb25maWdFcnJvcnMgPSB7fTtcbiAgICBjb25zdCBjb25maWdJdGVtc1ZhbGlkID0gdGhpcy52YWxpZGF0ZUNvbmZpZ0l0ZW1zKHRoaXMuaXRlbXMpO1xuICAgIGlmICghY29uZmlnSXRlbXNWYWxpZCkge1xuICAgICAgdGhpcy5jb25maWdFcnJvcnNbJ2NvbmZpZ0RhdGEnXSA9IHRydWU7XG4gICAgfVxuICAgIHRoaXMuY29uZmlnRXJyb3JzQ2hhbmdlLmVtaXQodGhpcy5jb25maWdFcnJvcnMpO1xuICAgIHJldHVybiBpc0VtcHR5KHRoaXMuY29uZmlnRXJyb3JzKTtcbiAgfVxuXG4gIHZhbGlkYXRlQ29uZmlnSXRlbXMoaXRlbXMsIHBhcmVudFR5cGUgPSAnb2JqZWN0Jykge1xuICAgIGxldCBpc1ZhbGlkID0gdHJ1ZTtcbiAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBpZiAoaXRlbS50eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpZiAoIXRoaXMudmFsaWRhdGVDb25maWdJdGVtcyhpdGVtLml0ZW1zLCBpdGVtLnR5cGUpKSB7XG4gICAgICAgICAgaXNWYWxpZCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGl0ZW0/LmNvbXBvbmVudD8uaW5zdGFuY2U/LmlzVmFsaWQpIHtcbiAgICAgICAgaWYgKCFpdGVtPy5jb21wb25lbnQ/Lmluc3RhbmNlPy5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICBpc1ZhbGlkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICByZXR1cm4gaXNWYWxpZDtcbiAgfVxuXG4gIGZvcm1EYXRhQ2hhbmdlZCgpIHtcbiAgICBkZWxheSgoKSA9PiB7XG4gICAgICB0aGlzLmdldENvbmZpZ0RhdGFGcm9tRm9ybSgpO1xuICAgIH0sIDIwMCk7XG4gIH1cblxuICBqc29uRGF0YUNoYW5nZWQoZXZlbnQpIHtcbiAgICBkZWZlcigoKSA9PiB7XG4gICAgICB0aGlzLmNvbmZpZ0RhdGFDaGFuZ2UuZW1pdCh0aGlzLmNvbmZpZ0RhdGEpO1xuICAgICAgdGhpcy51cGRhdGVGb3JtVmlldyh0aGlzLml0ZW1zLCB0aGlzLmNvbmZpZ0RhdGEpO1xuICAgIH0pO1xuICB9XG59XG4iLCI8ZGl2IGNsYXNzPVwiZm9ybS1maWVsZC1leHRlbmRlZC1maWVsZHNcIiBbaGlkZGVuXT1cInNob3dKc29uVmlld1wiIChtb3VzZXVwKT1cImZvcm1EYXRhQ2hhbmdlZERlYm91bmNlZCgkZXZlbnQpXCIgKGtleXVwKT1cImZvcm1EYXRhQ2hhbmdlZERlYm91bmNlZCgkZXZlbnQpXCI+XG4gICAgPG5nLWNvbnRhaW5lciAjZHluYW1pY2Zvcm0+PC9uZy1jb250YWluZXI+XG48L2Rpdj5cbjxsaWItanNvbi12aWV3ICpuZ0lmPVwic2hvd0pzb25WaWV3ICYmICFoaWRlQ29uZmlnSlNPTlwiIChkYXRhQ2hhbmdlKT1cImpzb25EYXRhQ2hhbmdlZERlYm91bmNlZCgkZXZlbnQpXCIgWyhkYXRhKV09XCJjb25maWdEYXRhXCI+PC9saWItanNvbi12aWV3PlxuPGxpYi1qc29uLXZpZXcgKm5nSWY9XCJzaG93SnNvblZpZXcgJiYgaGlkZUNvbmZpZ0pTT05cIiBbKGRhdGEpXT1cImNvbmZpZ0RhdGFcIj48L2xpYi1qc29uLXZpZXc+Il19
@@ -1,5 +1,5 @@
1
1
  import { Component } from '@angular/core';
2
- import { isEmpty, get } from 'lodash';
2
+ import { isEmpty, isFunction, get } from 'lodash';
3
3
  import * as i0 from "@angular/core";
4
4
  import * as i1 from "@angular/material/dialog";
5
5
  import * as i2 from "@angular/router";
@@ -19,9 +19,18 @@ class TableCellNameComponent {
19
19
  return true;
20
20
  }
21
21
  linkClicked(event) {
22
- this.router.navigateByUrl(`${this.cellParams.pathRoot}/${this.item.id}`);
23
22
  event.stopPropagation();
24
23
  event.preventDefault();
24
+ if (isFunction(this.cellParams?.cellNamePreCheck)) {
25
+ this.cellParams?.cellNamePreCheck(this.item).then((result) => {
26
+ if (!result) {
27
+ return;
28
+ }
29
+ this.router.navigateByUrl(`${this.cellParams.pathRoot}/${this.item.id}`);
30
+ });
31
+ return;
32
+ }
33
+ this.router.navigateByUrl(`${this.cellParams.pathRoot}/${this.item.id}`);
25
34
  }
26
35
  get cellText() {
27
36
  let val = get(this.item, this.cellParams?.colDef?.field);
@@ -38,4 +47,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
38
47
  type: Component,
39
48
  args: [{ selector: 'lib-table-cell-name', template: "<span class=\"cell-name-container\">\n <a href=\"./{{cellParams.pathRoot}}/{{item.id}}\" (click)=\"linkClicked($event)\">\n <div class=\"col cell-name-renderer\" data-id=\"{{item.id}}\">\n <div *ngIf=\"cellParams.showIdentityIcons\" class=\"cell-status-container\">\n <span class=\"circle {{item.hasApiSession}}\" title=\"Api Session\"></span>\n <span class=\"circle {{item.hasEdgeRouterConnection}}\" title=\"Edge Router Connected\"></span>\n </div>\n <div *ngIf=\"cellParams.showRouterIcons\" class=\"cell-status-container\">\n <span class=\"circle {{item.isVerified}}\" title=\"Api Session\"></span>\n <span class=\"circle {{item.isOnline}}\" title=\"Edge Router Connected\"></span>\n </div>\n <strong>{{cellText}}</strong>\n </div>\n </a>\n</span>\n", styles: [".cell-name-renderer{display:flex;flex-direction:row;gap:5px}.cell-name-container{display:flex;flex-direction:row;flex-wrap:nowrap}.cell-status-container{position:relative;display:flex;align-items:center;justify-content:center;gap:4px}\n"] }]
40
49
  }], ctorParameters: function () { return [{ type: i1.MatDialog }, { type: i2.Router }]; } });
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC1uYW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9kYXRhLXRhYmxlL2NlbGxzL3RhYmxlLWNlbGwtbmFtZS90YWJsZS1jZWxsLW5hbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2RhdGEtdGFibGUvY2VsbHMvdGFibGUtY2VsbC1uYW1lL3RhYmxlLWNlbGwtbmFtZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTTFDLE9BQU8sRUFBQyxPQUFPLEVBQUUsR0FBRyxFQUFDLE1BQU0sUUFBUSxDQUFDOzs7OztBQUVwQyxNQUthLHNCQUFzQjtJQU1qQyxZQUFtQixVQUFxQixFQUFVLE1BQWM7UUFBN0MsZUFBVSxHQUFWLFVBQVUsQ0FBVztRQUFVLFdBQU0sR0FBTixNQUFNLENBQVE7SUFDaEUsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUEyQjtRQUNoQyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUVELE9BQU8sQ0FBQyxNQUFnQztRQUN0QyxJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQztRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7UUFDeEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQUs7UUFDZixJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUN6RSxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDeEIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6RCxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNoQixHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDdEI7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7K0dBaENVLHNCQUFzQjttR0FBdEIsc0JBQXNCLDJEQ2JuQywwM0JBZUE7O1NERmEsc0JBQXNCOzRGQUF0QixzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0lDZWxsUmVuZGVyZXJBbmd1bGFyQ29tcH0gZnJvbSBcImFnLWdyaWQtYW5ndWxhclwiO1xuaW1wb3J0IHtNYXREaWFsb2d9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcbmltcG9ydCB7SUNlbGxSZW5kZXJlclBhcmFtc30gZnJvbSBcImFnLWdyaWQtY29tbXVuaXR5XCI7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuXG5pbXBvcnQge2lzRW1wdHksIGdldH0gZnJvbSAnbG9kYXNoJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXRhYmxlLWNlbGwtbmFtZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1jZWxsLW5hbWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1jZWxsLW5hbWUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNlbGxOYW1lQ29tcG9uZW50ICBpbXBsZW1lbnRzIElDZWxsUmVuZGVyZXJBbmd1bGFyQ29tcCB7XG5cbiAgY2VsbFBhcmFtczogYW55O1xuICBpdGVtOiBhbnk7XG4gIGRpYWxvZ1JlZjogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dGb3JtOiBNYXREaWFsb2csIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcbiAgfVxuXG4gIGFnSW5pdChwYXJhbXM6IElDZWxsUmVuZGVyZXJQYXJhbXMpOiB2b2lkIHtcbiAgICB0aGlzLmNlbGxQYXJhbXMgPSBwYXJhbXM7XG4gICAgdGhpcy5pdGVtID0gcGFyYW1zLmRhdGE7XG4gIH1cblxuICByZWZyZXNoKHBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtczxhbnk+KTogYm9vbGVhbiB7XG4gICAgdGhpcy5jZWxsUGFyYW1zID0gcGFyYW1zO1xuICAgIHRoaXMuaXRlbSA9IHBhcmFtcy5kYXRhO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgbGlua0NsaWNrZWQoZXZlbnQpIHtcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGAke3RoaXMuY2VsbFBhcmFtcy5wYXRoUm9vdH0vJHt0aGlzLml0ZW0uaWR9YCk7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIGdldCBjZWxsVGV4dCgpIHtcbiAgICBsZXQgdmFsID0gZ2V0KHRoaXMuaXRlbSwgdGhpcy5jZWxsUGFyYW1zPy5jb2xEZWY/LmZpZWxkKTtcbiAgICBpZiAoaXNFbXB0eSh2YWwpKSB7XG4gICAgICB2YWwgPSB0aGlzLml0ZW0ubmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxufVxuIiwiPHNwYW4gY2xhc3M9XCJjZWxsLW5hbWUtY29udGFpbmVyXCI+XG4gICAgPGEgaHJlZj1cIi4ve3tjZWxsUGFyYW1zLnBhdGhSb290fX0ve3tpdGVtLmlkfX1cIiAoY2xpY2spPVwibGlua0NsaWNrZWQoJGV2ZW50KVwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiY29sIGNlbGwtbmFtZS1yZW5kZXJlclwiIGRhdGEtaWQ9XCJ7e2l0ZW0uaWR9fVwiPlxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImNlbGxQYXJhbXMuc2hvd0lkZW50aXR5SWNvbnNcIiBjbGFzcz1cImNlbGwtc3RhdHVzLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2lyY2xlIHt7aXRlbS5oYXNBcGlTZXNzaW9ufX1cIiB0aXRsZT1cIkFwaSBTZXNzaW9uXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2lyY2xlIHt7aXRlbS5oYXNFZGdlUm91dGVyQ29ubmVjdGlvbn19XCIgdGl0bGU9XCJFZGdlIFJvdXRlciBDb25uZWN0ZWRcIj48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjZWxsUGFyYW1zLnNob3dSb3V0ZXJJY29uc1wiIGNsYXNzPVwiY2VsbC1zdGF0dXMtY29udGFpbmVyXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaXJjbGUge3tpdGVtLmlzVmVyaWZpZWR9fVwiIHRpdGxlPVwiQXBpIFNlc3Npb25cIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaXJjbGUge3tpdGVtLmlzT25saW5lfX1cIiB0aXRsZT1cIkVkZ2UgUm91dGVyIENvbm5lY3RlZFwiPjwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHN0cm9uZz57e2NlbGxUZXh0fX08L3N0cm9uZz5cbiAgICAgICAgPC9kaXY+XG4gICAgPC9hPlxuPC9zcGFuPlxuIl19
50
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtY2VsbC1uYW1lLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3ppdGktY29uc29sZS1saWIvc3JjL2xpYi9mZWF0dXJlcy9kYXRhLXRhYmxlL2NlbGxzL3RhYmxlLWNlbGwtbmFtZS90YWJsZS1jZWxsLW5hbWUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMveml0aS1jb25zb2xlLWxpYi9zcmMvbGliL2ZlYXR1cmVzL2RhdGEtdGFibGUvY2VsbHMvdGFibGUtY2VsbC1uYW1lL3RhYmxlLWNlbGwtbmFtZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBTTFDLE9BQU8sRUFBQyxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBQyxNQUFNLFFBQVEsQ0FBQzs7Ozs7QUFFaEQsTUFLYSxzQkFBc0I7SUFNakMsWUFBbUIsVUFBcUIsRUFBVSxNQUFjO1FBQTdDLGVBQVUsR0FBVixVQUFVLENBQVc7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFRO0lBQ2hFLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBMkI7UUFDaEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFRCxPQUFPLENBQUMsTUFBZ0M7UUFDdEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFNLENBQUM7UUFDekIsSUFBSSxDQUFDLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFLO1FBQ2YsS0FBSyxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQ3hCLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUN2QixJQUFJLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLEVBQUU7WUFDakQsSUFBSSxDQUFDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQzNELElBQUksQ0FBQyxNQUFNLEVBQUU7b0JBQ1gsT0FBTztpQkFDUjtnQkFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUMzRSxDQUFDLENBQUMsQ0FBQTtZQUNGLE9BQU87U0FDUjtRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDVixJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN6RCxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNoQixHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7U0FDdEI7UUFDRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7K0dBekNVLHNCQUFzQjttR0FBdEIsc0JBQXNCLDJEQ2JuQywwM0JBZUE7O1NERmEsc0JBQXNCOzRGQUF0QixzQkFBc0I7a0JBTGxDLFNBQVM7K0JBQ0UscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0lDZWxsUmVuZGVyZXJBbmd1bGFyQ29tcH0gZnJvbSBcImFnLWdyaWQtYW5ndWxhclwiO1xuaW1wb3J0IHtNYXREaWFsb2d9IGZyb20gXCJAYW5ndWxhci9tYXRlcmlhbC9kaWFsb2dcIjtcbmltcG9ydCB7SUNlbGxSZW5kZXJlclBhcmFtc30gZnJvbSBcImFnLWdyaWQtY29tbXVuaXR5XCI7XG5pbXBvcnQge1JvdXRlcn0gZnJvbSBcIkBhbmd1bGFyL3JvdXRlclwiO1xuXG5pbXBvcnQge2lzRW1wdHksIGlzRnVuY3Rpb24sIGdldH0gZnJvbSAnbG9kYXNoJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLXRhYmxlLWNlbGwtbmFtZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS1jZWxsLW5hbWUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi90YWJsZS1jZWxsLW5hbWUuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBUYWJsZUNlbGxOYW1lQ29tcG9uZW50ICBpbXBsZW1lbnRzIElDZWxsUmVuZGVyZXJBbmd1bGFyQ29tcCB7XG5cbiAgY2VsbFBhcmFtczogYW55O1xuICBpdGVtOiBhbnk7XG4gIGRpYWxvZ1JlZjogYW55O1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkaWFsb2dGb3JtOiBNYXREaWFsb2csIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcbiAgfVxuXG4gIGFnSW5pdChwYXJhbXM6IElDZWxsUmVuZGVyZXJQYXJhbXMpOiB2b2lkIHtcbiAgICB0aGlzLmNlbGxQYXJhbXMgPSBwYXJhbXM7XG4gICAgdGhpcy5pdGVtID0gcGFyYW1zLmRhdGE7XG4gIH1cblxuICByZWZyZXNoKHBhcmFtczogSUNlbGxSZW5kZXJlclBhcmFtczxhbnk+KTogYm9vbGVhbiB7XG4gICAgdGhpcy5jZWxsUGFyYW1zID0gcGFyYW1zO1xuICAgIHRoaXMuaXRlbSA9IHBhcmFtcy5kYXRhO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgbGlua0NsaWNrZWQoZXZlbnQpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGlmIChpc0Z1bmN0aW9uKHRoaXMuY2VsbFBhcmFtcz8uY2VsbE5hbWVQcmVDaGVjaykpIHtcbiAgICAgIHRoaXMuY2VsbFBhcmFtcz8uY2VsbE5hbWVQcmVDaGVjayh0aGlzLml0ZW0pLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGAke3RoaXMuY2VsbFBhcmFtcy5wYXRoUm9vdH0vJHt0aGlzLml0ZW0uaWR9YCk7XG4gICAgICB9KVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZUJ5VXJsKGAke3RoaXMuY2VsbFBhcmFtcy5wYXRoUm9vdH0vJHt0aGlzLml0ZW0uaWR9YCk7XG4gIH1cblxuICBnZXQgY2VsbFRleHQoKSB7XG4gICAgbGV0IHZhbCA9IGdldCh0aGlzLml0ZW0sIHRoaXMuY2VsbFBhcmFtcz8uY29sRGVmPy5maWVsZCk7XG4gICAgaWYgKGlzRW1wdHkodmFsKSkge1xuICAgICAgdmFsID0gdGhpcy5pdGVtLm5hbWU7XG4gICAgfVxuICAgIHJldHVybiB2YWw7XG4gIH1cbn1cbiIsIjxzcGFuIGNsYXNzPVwiY2VsbC1uYW1lLWNvbnRhaW5lclwiPlxuICAgIDxhIGhyZWY9XCIuL3t7Y2VsbFBhcmFtcy5wYXRoUm9vdH19L3t7aXRlbS5pZH19XCIgKGNsaWNrKT1cImxpbmtDbGlja2VkKCRldmVudClcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImNvbCBjZWxsLW5hbWUtcmVuZGVyZXJcIiBkYXRhLWlkPVwie3tpdGVtLmlkfX1cIj5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJjZWxsUGFyYW1zLnNob3dJZGVudGl0eUljb25zXCIgY2xhc3M9XCJjZWxsLXN0YXR1cy1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNpcmNsZSB7e2l0ZW0uaGFzQXBpU2Vzc2lvbn19XCIgdGl0bGU9XCJBcGkgU2Vzc2lvblwiPjwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNpcmNsZSB7e2l0ZW0uaGFzRWRnZVJvdXRlckNvbm5lY3Rpb259fVwiIHRpdGxlPVwiRWRnZSBSb3V0ZXIgQ29ubmVjdGVkXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiY2VsbFBhcmFtcy5zaG93Um91dGVySWNvbnNcIiBjbGFzcz1cImNlbGwtc3RhdHVzLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2lyY2xlIHt7aXRlbS5pc1ZlcmlmaWVkfX1cIiB0aXRsZT1cIkFwaSBTZXNzaW9uXCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2lyY2xlIHt7aXRlbS5pc09ubGluZX19XCIgdGl0bGU9XCJFZGdlIFJvdXRlciBDb25uZWN0ZWRcIj48L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3tjZWxsVGV4dH19PC9zdHJvbmc+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvYT5cbjwvc3Bhbj5cbiJdfQ==
@@ -77,7 +77,7 @@ class TextListInputComponent {
77
77
  </p-chips>
78
78
  <div *ngIf="error" class="error">{{error}}</div>
79
79
  </div>
80
- `, isInline: true, styles: ["::ng-deep .p-element .p-chips.p-component{width:100%;font-weight:400;font-family:Open Sans,Arial,sans-serif;height:var(--defaultInputHeight);border-color:var(--stroke);border-style:solid;border-width:var(--inputBorderWidth);border-radius:var(--inputBorderRadius);padding-left:10px;padding-right:10px;outline:none;box-sizing:border-box;font-size:15px;background-color:var(--background)!important;color:var(--text);-webkit-appearance:none}::ng-deep .p-element .p-chips.p-component .p-inputtext.p-chips-multiple-container{width:100%;padding:0;border-width:var(--inputBorderWidth)}::ng-deep .p-element .p-chips.p-component .p-inputtext.p-chips-multiple-container.p-focus{border-color:var(--primaryColor)!important;box-shadow:0 0 7px 0 var(--primaryColorOpaque)!important}::ng-deep .p-element .p-chips.p-component .p-inputtext.p-chips-multiple-container.p-focus.error{border-color:var(--red)!important}::ng-deep .p-element .p-chips .p-chips-multiple-container .p-chips-input-token input{height:25px;font-size:14px;color:#495057;padding:0;margin:0;border:0 none;outline:0 none;background-color:transparent;box-shadow:none;border-radius:0;width:100%}::ng-deep .p-element .p-chips .p-chips-multiple-container .p-chips-token{margin-right:.5rem;font-family:Open Sans,sans-serif;font-weight:600;margin-top:5px;margin-bottom:5px;background:var(--primary);color:var(--white);border-radius:var(--inputBorderRadius);cursor:default;display:inline-flex;align-items:center;flex:0 0 auto;max-width:100%}::ng-deep .p-element .p-chips-token-icon{margin-left:.5rem;cursor:pointer;color:#00f;fill:red}::ng-deep .p-element .p-chips{display:inline-flex}::ng-deep .p-element .p-chips-token-label{min-width:0;overflow:auto}::ng-deep .p-element .p-chips-token-label::-webkit-scrollbar{display:none}::ng-deep .p-element .p-fluid .p-chips{display:flex}::ng-deep .p-element .p-chips-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}::ng-deep .p-element .p-chips-clearable .p-inputtext{position:relative}::ng-deep .p-element .p-inputtext{border:none}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.Chips, selector: "p-chips", inputs: ["style", "styleClass", "disabled", "field", "placeholder", "max", "ariaLabel", "ariaLabelledBy", "tabindex", "inputId", "allowDuplicate", "inputStyle", "inputStyleClass", "addOnTab", "addOnBlur", "separator", "showClear"], outputs: ["onAdd", "onRemove", "onFocus", "onBlur", "onChipClick", "onClear"] }] }); }
80
+ `, isInline: true, styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: i3.Chips, selector: "p-chips", inputs: ["style", "styleClass", "disabled", "field", "placeholder", "max", "ariaLabel", "ariaLabelledBy", "tabindex", "inputId", "allowDuplicate", "inputStyle", "inputStyleClass", "addOnTab", "addOnBlur", "separator", "showClear"], outputs: ["onAdd", "onRemove", "onFocus", "onBlur", "onChipClick", "onClear"] }] }); }
81
81
  }
82
82
  export { TextListInputComponent };
83
83
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TextListInputComponent, decorators: [{
@@ -97,7 +97,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
97
97
  </p-chips>
98
98
  <div *ngIf="error" class="error">{{error}}</div>
99
99
  </div>
100
- `, styles: ["::ng-deep .p-element .p-chips.p-component{width:100%;font-weight:400;font-family:Open Sans,Arial,sans-serif;height:var(--defaultInputHeight);border-color:var(--stroke);border-style:solid;border-width:var(--inputBorderWidth);border-radius:var(--inputBorderRadius);padding-left:10px;padding-right:10px;outline:none;box-sizing:border-box;font-size:15px;background-color:var(--background)!important;color:var(--text);-webkit-appearance:none}::ng-deep .p-element .p-chips.p-component .p-inputtext.p-chips-multiple-container{width:100%;padding:0;border-width:var(--inputBorderWidth)}::ng-deep .p-element .p-chips.p-component .p-inputtext.p-chips-multiple-container.p-focus{border-color:var(--primaryColor)!important;box-shadow:0 0 7px 0 var(--primaryColorOpaque)!important}::ng-deep .p-element .p-chips.p-component .p-inputtext.p-chips-multiple-container.p-focus.error{border-color:var(--red)!important}::ng-deep .p-element .p-chips .p-chips-multiple-container .p-chips-input-token input{height:25px;font-size:14px;color:#495057;padding:0;margin:0;border:0 none;outline:0 none;background-color:transparent;box-shadow:none;border-radius:0;width:100%}::ng-deep .p-element .p-chips .p-chips-multiple-container .p-chips-token{margin-right:.5rem;font-family:Open Sans,sans-serif;font-weight:600;margin-top:5px;margin-bottom:5px;background:var(--primary);color:var(--white);border-radius:var(--inputBorderRadius);cursor:default;display:inline-flex;align-items:center;flex:0 0 auto;max-width:100%}::ng-deep .p-element .p-chips-token-icon{margin-left:.5rem;cursor:pointer;color:#00f;fill:red}::ng-deep .p-element .p-chips{display:inline-flex}::ng-deep .p-element .p-chips-token-label{min-width:0;overflow:auto}::ng-deep .p-element .p-chips-token-label::-webkit-scrollbar{display:none}::ng-deep .p-element .p-fluid .p-chips{display:flex}::ng-deep .p-element .p-chips-clear-icon{position:absolute;top:50%;margin-top:-.5rem;cursor:pointer}::ng-deep .p-element .p-chips-clearable .p-inputtext{position:relative}::ng-deep .p-element .p-inputtext{border:none}\n"] }]
100
+ ` }]
101
101
  }], propDecorators: { fieldName: [{
102
102
  type: Input
103
103
  }], fieldValue: [{
@@ -27,13 +27,32 @@ class ListPageHeaderComponent {
27
27
  clickAction(value) {
28
28
  this.actionClicked.emit(value);
29
29
  }
30
+ tabSelected(tab) {
31
+ const parsedUrl = new URL(window.location.href);
32
+ let path = parsedUrl.pathname;
33
+ if (document.baseURI) {
34
+ const base = new URL(document.baseURI).pathname;
35
+ if (path.startsWith(base)) {
36
+ path = path.slice(base.length);
37
+ }
38
+ }
39
+ let tabUrl = tab.url;
40
+ if (tab.url.startsWith('/')) {
41
+ tabUrl = tab.url.slice(1);
42
+ }
43
+ if (path.startsWith('/')) {
44
+ path = path.slice(1);
45
+ }
46
+ // Return the path without parameters
47
+ return tabUrl === path;
48
+ }
30
49
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListPageHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
31
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ListPageHeaderComponent, selector: "lib-list-page-header", inputs: { title: "title", tabs: "tabs", showAdd: "showAdd", hideAction: "hideAction" }, outputs: { actionClicked: "actionClicked" }, ngImport: i0, template: "<div class=\"header\">\n <div class=\"title\">\n <span>{{title}}</span>\n </div>\n <div class=\"bread\"></div>\n <div class=\"line\"></div>\n <div class=\"tabs\">\n <div *ngFor=\"let tab of tabs\" class=\"tab\" [routerLink]=\"tab.url\" [hidden]=\"tab.hidden\">{{tab.label}}</div>\n </div>\n <div *ngIf=\"showAdd\" [ngClass]=\"{hideAction: hideAction}\" (click)=\"clickAction('add')\"\n class=\"action icon-plus icon-add\" data-action=\"add\"></div>\n <div *ngIf=\"!showAdd\" [ngClass]=\"{hideAction: hideAction}\" (click)=\"clickAction('delete')\"\n class=\"action icon-minus icon-delete\" data-action=\"delete\"></div>\n</div>\n", styles: [".header [class^=icon-],.header [class*=\" icon-\"]{font-family:zac,serif!important;speak:never;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.header .hideAction{display:none}.header .action{text-align:center;color:var(--white);line-height:60px;font-size:30px;width:60px;height:60px;border-radius:40px;position:absolute;right:0;top:12px;background-color:var(--primary);cursor:pointer;overflow:hidden;z-index:24;box-shadow:var(--shadow);transition:var(--transition)}.header .action.icon-delete{background-color:var(--red)}.header .line{width:100%;height:4px;background-color:var(--stroke)}.header .tabs{position:relative;display:flex;flex:1 1;flex-wrap:wrap;width:100%;font-size:14px;min-height:40px;padding-top:16px}.header .tabs .tab{position:relative;float:left;margin-right:20px;padding-bottom:5px;margin-bottom:10px;font-size:14px;font-weight:600;cursor:pointer;transition:var(--transition);border-bottom-width:4px;border-bottom-color:transparent;border-bottom-style:solid}.header .tabs .tab:hover{border-bottom-color:var(--inputBorder)}.header .title{height:30px;overflow:hidden;font-family:Russo One,serif;color:var(--primary);filter:brightness(50%);font-size:30px;text-transform:uppercase;font-weight:400;line-height:34px}@media (max-width: 1024px){.title{font-size:20px!important}.action{line-height:45px!important;font-size:20px!important;width:45px!important;height:45px!important;border-radius:40px!important;top:20px!important;right:0!important}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
50
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: ListPageHeaderComponent, selector: "lib-list-page-header", inputs: { title: "title", tabs: "tabs", showAdd: "showAdd", hideAction: "hideAction" }, outputs: { actionClicked: "actionClicked" }, ngImport: i0, template: "<div class=\"header\">\n <div class=\"title\">\n <span>{{title}}</span>\n </div>\n <div class=\"bread\"></div>\n <div class=\"line\"></div>\n <div class=\"tabs\">\n <div *ngFor=\"let tab of tabs\" class=\"tab\" [ngClass]=\"{selected: tabSelected(tab)}\" [routerLink]=\"tab.url\" [hidden]=\"tab.hidden\">{{tab.label}}</div>\n </div>\n <div *ngIf=\"showAdd\" [ngClass]=\"{hideAction: hideAction}\" (click)=\"clickAction('add')\"\n class=\"action icon-plus icon-add\" data-action=\"add\"></div>\n <div *ngIf=\"!showAdd\" [ngClass]=\"{hideAction: hideAction}\" (click)=\"clickAction('delete')\"\n class=\"action icon-minus icon-delete\" data-action=\"delete\"></div>\n</div>\n", styles: [".header [class^=icon-],.header [class*=\" icon-\"]{font-family:zac,serif!important;speak:never;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.header .hideAction{display:none}.header .action{text-align:center;color:var(--white);line-height:60px;font-size:30px;width:60px;height:60px;border-radius:40px;position:absolute;right:0;top:12px;background-color:var(--primary);cursor:pointer;overflow:hidden;z-index:24;box-shadow:var(--shadow);transition:var(--transition)}.header .action.icon-delete{background-color:var(--red)}.header .line{width:100%;height:4px;background-color:var(--stroke)}.header .tabs{position:relative;display:flex;flex:1 1;flex-wrap:wrap;width:100%;font-size:14px;min-height:40px;padding-top:16px}.header .tabs .tab{position:relative;float:left;margin-right:20px;padding-bottom:5px;margin-bottom:10px;font-size:14px;font-weight:600;cursor:pointer;transition:var(--transition);border-bottom-width:4px;border-bottom-color:transparent;border-bottom-style:solid}.header .tabs .tab:hover{border-bottom-color:var(--inputBorder)}.header .tabs .tab.selected,.header .tabs .tab.selected:hover{border-bottom-color:var(--primaryColor)}.header .title{height:30px;overflow:hidden;font-family:Russo One,serif;color:var(--primary);filter:brightness(50%);font-size:30px;text-transform:uppercase;font-weight:400;line-height:34px}@media (max-width: 1024px){.title{font-size:20px!important}.action{line-height:45px!important;font-size:20px!important;width:45px!important;height:45px!important;border-radius:40px!important;top:20px!important;right:0!important}}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }] }); }
32
51
  }
33
52
  export { ListPageHeaderComponent };
34
53
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: ListPageHeaderComponent, decorators: [{
35
54
  type: Component,
36
- args: [{ selector: 'lib-list-page-header', template: "<div class=\"header\">\n <div class=\"title\">\n <span>{{title}}</span>\n </div>\n <div class=\"bread\"></div>\n <div class=\"line\"></div>\n <div class=\"tabs\">\n <div *ngFor=\"let tab of tabs\" class=\"tab\" [routerLink]=\"tab.url\" [hidden]=\"tab.hidden\">{{tab.label}}</div>\n </div>\n <div *ngIf=\"showAdd\" [ngClass]=\"{hideAction: hideAction}\" (click)=\"clickAction('add')\"\n class=\"action icon-plus icon-add\" data-action=\"add\"></div>\n <div *ngIf=\"!showAdd\" [ngClass]=\"{hideAction: hideAction}\" (click)=\"clickAction('delete')\"\n class=\"action icon-minus icon-delete\" data-action=\"delete\"></div>\n</div>\n", styles: [".header [class^=icon-],.header [class*=\" icon-\"]{font-family:zac,serif!important;speak:never;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.header .hideAction{display:none}.header .action{text-align:center;color:var(--white);line-height:60px;font-size:30px;width:60px;height:60px;border-radius:40px;position:absolute;right:0;top:12px;background-color:var(--primary);cursor:pointer;overflow:hidden;z-index:24;box-shadow:var(--shadow);transition:var(--transition)}.header .action.icon-delete{background-color:var(--red)}.header .line{width:100%;height:4px;background-color:var(--stroke)}.header .tabs{position:relative;display:flex;flex:1 1;flex-wrap:wrap;width:100%;font-size:14px;min-height:40px;padding-top:16px}.header .tabs .tab{position:relative;float:left;margin-right:20px;padding-bottom:5px;margin-bottom:10px;font-size:14px;font-weight:600;cursor:pointer;transition:var(--transition);border-bottom-width:4px;border-bottom-color:transparent;border-bottom-style:solid}.header .tabs .tab:hover{border-bottom-color:var(--inputBorder)}.header .title{height:30px;overflow:hidden;font-family:Russo One,serif;color:var(--primary);filter:brightness(50%);font-size:30px;text-transform:uppercase;font-weight:400;line-height:34px}@media (max-width: 1024px){.title{font-size:20px!important}.action{line-height:45px!important;font-size:20px!important;width:45px!important;height:45px!important;border-radius:40px!important;top:20px!important;right:0!important}}\n"] }]
55
+ args: [{ selector: 'lib-list-page-header', template: "<div class=\"header\">\n <div class=\"title\">\n <span>{{title}}</span>\n </div>\n <div class=\"bread\"></div>\n <div class=\"line\"></div>\n <div class=\"tabs\">\n <div *ngFor=\"let tab of tabs\" class=\"tab\" [ngClass]=\"{selected: tabSelected(tab)}\" [routerLink]=\"tab.url\" [hidden]=\"tab.hidden\">{{tab.label}}</div>\n </div>\n <div *ngIf=\"showAdd\" [ngClass]=\"{hideAction: hideAction}\" (click)=\"clickAction('add')\"\n class=\"action icon-plus icon-add\" data-action=\"add\"></div>\n <div *ngIf=\"!showAdd\" [ngClass]=\"{hideAction: hideAction}\" (click)=\"clickAction('delete')\"\n class=\"action icon-minus icon-delete\" data-action=\"delete\"></div>\n</div>\n", styles: [".header [class^=icon-],.header [class*=\" icon-\"]{font-family:zac,serif!important;speak:never;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.header .hideAction{display:none}.header .action{text-align:center;color:var(--white);line-height:60px;font-size:30px;width:60px;height:60px;border-radius:40px;position:absolute;right:0;top:12px;background-color:var(--primary);cursor:pointer;overflow:hidden;z-index:24;box-shadow:var(--shadow);transition:var(--transition)}.header .action.icon-delete{background-color:var(--red)}.header .line{width:100%;height:4px;background-color:var(--stroke)}.header .tabs{position:relative;display:flex;flex:1 1;flex-wrap:wrap;width:100%;font-size:14px;min-height:40px;padding-top:16px}.header .tabs .tab{position:relative;float:left;margin-right:20px;padding-bottom:5px;margin-bottom:10px;font-size:14px;font-weight:600;cursor:pointer;transition:var(--transition);border-bottom-width:4px;border-bottom-color:transparent;border-bottom-style:solid}.header .tabs .tab:hover{border-bottom-color:var(--inputBorder)}.header .tabs .tab.selected,.header .tabs .tab.selected:hover{border-bottom-color:var(--primaryColor)}.header .title{height:30px;overflow:hidden;font-family:Russo One,serif;color:var(--primary);filter:brightness(50%);font-size:30px;text-transform:uppercase;font-weight:400;line-height:34px}@media (max-width: 1024px){.title{font-size:20px!important}.action{line-height:45px!important;font-size:20px!important;width:45px!important;height:45px!important;border-radius:40px!important;top:20px!important;right:0!important}}\n"] }]
37
56
  }], propDecorators: { title: [{
38
57
  type: Input
39
58
  }], tabs: [{
@@ -45,4 +64,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
45
64
  }], actionClicked: [{
46
65
  type: Output
47
66
  }] } });
48
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1wYWdlLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvbGlzdC1wYWdlLWZlYXR1cmVzL2xpc3QtcGFnZS1oZWFkZXIvbGlzdC1wYWdlLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvbGlzdC1wYWdlLWZlYXR1cmVzL2xpc3QtcGFnZS1oZWFkZXIvbGlzdC1wYWdlLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7QUFFckUsTUFLYSx1QkFBdUI7SUFMcEM7UUFNYSxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBRW5CLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztLQUt4RDtJQUhHLFdBQVcsQ0FBQyxLQUFhO1FBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7K0dBVFEsdUJBQXVCO21HQUF2Qix1QkFBdUIsaU1DdkJwQyw2cUJBY0E7O1NEU2EsdUJBQXVCOzRGQUF2Qix1QkFBdUI7a0JBTG5DLFNBQVM7K0JBQ0Usc0JBQXNCOzhCQUtyQixLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLGFBQWE7c0JBQXRCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICAgIENvcHlyaWdodCBOZXRGb3VuZHJ5IEluYy5cblxuICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuXG4gICAgaHR0cHM6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuXG4gICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4qL1xuXG5pbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWxpc3QtcGFnZS1oZWFkZXInLFxuICB0ZW1wbGF0ZVVybDogJy4vbGlzdC1wYWdlLWhlYWRlci5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xpc3QtcGFnZS1oZWFkZXIuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBMaXN0UGFnZUhlYWRlckNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgdGl0bGU6IHN0cmluZyA9ICcnO1xuICAgIEBJbnB1dCgpIHRhYnMhOiBhbnlbXTtcbiAgICBASW5wdXQoKSBzaG93QWRkID0gdHJ1ZTtcbiAgICBASW5wdXQoKSBoaWRlQWN0aW9uID0gZmFsc2U7XG4gICAgQE91dHB1dCgpIGFjdGlvbkNsaWNrZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcblxuICAgIGNsaWNrQWN0aW9uKHZhbHVlOiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5hY3Rpb25DbGlja2VkLmVtaXQodmFsdWUpO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5cbiAgICAgICAgPHNwYW4+e3t0aXRsZX19PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJicmVhZFwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJsaW5lXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRhYnNcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIiBjbGFzcz1cInRhYlwiIFtyb3V0ZXJMaW5rXT1cInRhYi51cmxcIiBbaGlkZGVuXT1cInRhYi5oaWRkZW5cIj57e3RhYi5sYWJlbH19PC9kaXY+XG4gICAgPC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cInNob3dBZGRcIiBbbmdDbGFzc109XCJ7aGlkZUFjdGlvbjogaGlkZUFjdGlvbn1cIiAoY2xpY2spPVwiY2xpY2tBY3Rpb24oJ2FkZCcpXCJcbiAgICAgICAgIGNsYXNzPVwiYWN0aW9uIGljb24tcGx1cyBpY29uLWFkZFwiIGRhdGEtYWN0aW9uPVwiYWRkXCI+PC9kaXY+XG4gICAgPGRpdiAqbmdJZj1cIiFzaG93QWRkXCIgW25nQ2xhc3NdPVwie2hpZGVBY3Rpb246IGhpZGVBY3Rpb259XCIgKGNsaWNrKT1cImNsaWNrQWN0aW9uKCdkZWxldGUnKVwiXG4gICAgICAgICBjbGFzcz1cImFjdGlvbiBpY29uLW1pbnVzIGljb24tZGVsZXRlXCIgZGF0YS1hY3Rpb249XCJkZWxldGVcIj48L2Rpdj5cbjwvZGl2PlxuIl19
67
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1wYWdlLWhlYWRlci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvbGlzdC1wYWdlLWZlYXR1cmVzL2xpc3QtcGFnZS1oZWFkZXIvbGlzdC1wYWdlLWhlYWRlci5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy96aXRpLWNvbnNvbGUtbGliL3NyYy9saWIvZmVhdHVyZXMvbGlzdC1wYWdlLWZlYXR1cmVzL2xpc3QtcGFnZS1oZWFkZXIvbGlzdC1wYWdlLWhlYWRlci5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7Ozs7RUFjRTtBQUVGLE9BQU8sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUMsTUFBTSxlQUFlLENBQUM7Ozs7QUFFckUsTUFLYSx1QkFBdUI7SUFMcEM7UUFNYSxVQUFLLEdBQVcsRUFBRSxDQUFDO1FBRW5CLFlBQU8sR0FBRyxJQUFJLENBQUM7UUFDZixlQUFVLEdBQUcsS0FBSyxDQUFDO1FBQ2xCLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztLQXlCeEQ7SUF2QkcsV0FBVyxDQUFDLEtBQWE7UUFDckIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVELFdBQVcsQ0FBQyxHQUFHO1FBQ1gsTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNoRCxJQUFJLElBQUksR0FBRyxTQUFTLENBQUMsUUFBUSxDQUFDO1FBQzlCLElBQUksUUFBUSxDQUFDLE9BQU8sRUFBRTtZQUNsQixNQUFNLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ2hELElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRTtnQkFDdkIsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO2FBQ2xDO1NBQ0o7UUFDRCxJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDO1FBQ3JCLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7WUFDekIsTUFBTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzdCO1FBQ0QsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ3RCLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3hCO1FBQ0QscUNBQXFDO1FBQ3JDLE9BQU8sTUFBTSxLQUFLLElBQUksQ0FBQztJQUMzQixDQUFDOytHQTdCUSx1QkFBdUI7bUdBQXZCLHVCQUF1QixpTUN2QnBDLHd0QkFjQTs7U0RTYSx1QkFBdUI7NEZBQXZCLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxzQkFBc0I7OEJBS3JCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksYUFBYTtzQkFBdEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gICAgQ29weXJpZ2h0IE5ldEZvdW5kcnkgSW5jLlxuXG4gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG5cbiAgICBodHRwczovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG5cbiAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiovXG5cbmltcG9ydCB7Q29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXR9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdsaWItbGlzdC1wYWdlLWhlYWRlcicsXG4gIHRlbXBsYXRlVXJsOiAnLi9saXN0LXBhZ2UtaGVhZGVyLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vbGlzdC1wYWdlLWhlYWRlci5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIExpc3RQYWdlSGVhZGVyQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSB0aXRsZTogc3RyaW5nID0gJyc7XG4gICAgQElucHV0KCkgdGFicyE6IGFueVtdO1xuICAgIEBJbnB1dCgpIHNob3dBZGQgPSB0cnVlO1xuICAgIEBJbnB1dCgpIGhpZGVBY3Rpb24gPSBmYWxzZTtcbiAgICBAT3V0cHV0KCkgYWN0aW9uQ2xpY2tlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgY2xpY2tBY3Rpb24odmFsdWU6IHN0cmluZykge1xuICAgICAgICB0aGlzLmFjdGlvbkNsaWNrZWQuZW1pdCh2YWx1ZSk7XG4gICAgfVxuXG4gICAgdGFiU2VsZWN0ZWQodGFiKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZFVybCA9IG5ldyBVUkwod2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgICAgICBsZXQgcGF0aCA9IHBhcnNlZFVybC5wYXRobmFtZTtcbiAgICAgICAgaWYgKGRvY3VtZW50LmJhc2VVUkkpIHtcbiAgICAgICAgICAgIGNvbnN0IGJhc2UgPSBuZXcgVVJMKGRvY3VtZW50LmJhc2VVUkkpLnBhdGhuYW1lO1xuICAgICAgICAgICAgaWYgKHBhdGguc3RhcnRzV2l0aChiYXNlKSkge1xuICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoLnNsaWNlKGJhc2UubGVuZ3RoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgdGFiVXJsID0gdGFiLnVybDtcbiAgICAgICAgaWYgKHRhYi51cmwuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgICAgICB0YWJVcmwgPSB0YWIudXJsLnNsaWNlKDEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICAgICAgcGF0aCA9IHBhdGguc2xpY2UoMSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gUmV0dXJuIHRoZSBwYXRoIHdpdGhvdXQgcGFyYW1ldGVyc1xuICAgICAgICByZXR1cm4gdGFiVXJsID09PSBwYXRoO1xuICAgIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwidGl0bGVcIj5cbiAgICAgICAgPHNwYW4+e3t0aXRsZX19PC9zcGFuPlxuICAgIDwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJicmVhZFwiPjwvZGl2PlxuICAgIDxkaXYgY2xhc3M9XCJsaW5lXCI+PC9kaXY+XG4gICAgPGRpdiBjbGFzcz1cInRhYnNcIj5cbiAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgdGFiIG9mIHRhYnNcIiBjbGFzcz1cInRhYlwiIFtuZ0NsYXNzXT1cIntzZWxlY3RlZDogdGFiU2VsZWN0ZWQodGFiKX1cIiBbcm91dGVyTGlua109XCJ0YWIudXJsXCIgW2hpZGRlbl09XCJ0YWIuaGlkZGVuXCI+e3t0YWIubGFiZWx9fTwvZGl2PlxuICAgIDwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCJzaG93QWRkXCIgW25nQ2xhc3NdPVwie2hpZGVBY3Rpb246IGhpZGVBY3Rpb259XCIgKGNsaWNrKT1cImNsaWNrQWN0aW9uKCdhZGQnKVwiXG4gICAgICAgICBjbGFzcz1cImFjdGlvbiBpY29uLXBsdXMgaWNvbi1hZGRcIiBkYXRhLWFjdGlvbj1cImFkZFwiPjwvZGl2PlxuICAgIDxkaXYgKm5nSWY9XCIhc2hvd0FkZFwiIFtuZ0NsYXNzXT1cIntoaWRlQWN0aW9uOiBoaWRlQWN0aW9ufVwiIChjbGljayk9XCJjbGlja0FjdGlvbignZGVsZXRlJylcIlxuICAgICAgICAgY2xhc3M9XCJhY3Rpb24gaWNvbi1taW51cyBpY29uLWRlbGV0ZVwiIGRhdGEtYWN0aW9uPVwiZGVsZXRlXCI+PC9kaXY+XG48L2Rpdj5cbiJdfQ==