@csmart/ngc-smart-victim 0.1.6 → 1.13.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (107) hide show
  1. package/csmart-ngc-smart-victim.d.ts +1 -15
  2. package/esm2020/csmart-ngc-smart-victim.mjs +5 -0
  3. package/esm2020/lib/caseNote/caseNote.component.mjs +185 -0
  4. package/esm2020/lib/common-dialog/common-dialog.component.mjs +23 -0
  5. package/esm2020/lib/common-dialog/common-dialog.module.mjs +38 -0
  6. package/esm2020/lib/common-dialog/common-dialog.service.mjs +33 -0
  7. package/esm2020/lib/contact/contact.component.mjs +140 -0
  8. package/esm2020/lib/intake.service.mjs +57 -0
  9. package/esm2020/lib/safetyPlan/serviceProvider.component.mjs +115 -0
  10. package/esm2020/lib/safetyPlan/victimSafetyPlan.component.mjs +116 -0
  11. package/esm2020/lib/safetyPlan/victimSafetyPlanDetail.component.mjs +340 -0
  12. package/esm2020/lib/shared/app.shared.module.mjs +213 -0
  13. package/esm2020/lib/shared/directives/phone-mask.directive.mjs +114 -0
  14. package/esm2020/lib/shared/validators/date.validator.mjs +59 -0
  15. package/esm2020/lib/shared/validators/index.mjs +2 -0
  16. package/esm2020/lib/smart-victim-delete-confirm.component.mjs +53 -0
  17. package/esm2020/lib/smart-victim-detail/smart-victim-detail.component.mjs +961 -0
  18. package/esm2020/lib/smart-victim.component.mjs +310 -0
  19. package/esm2020/lib/smart-victim.model.mjs +133 -0
  20. package/esm2020/lib/smart-victim.module.mjs +138 -0
  21. package/esm2020/lib/smart-victim.service.mjs +347 -0
  22. package/esm2020/lib/victim-routing.module.mjs +42 -0
  23. package/esm2020/lib/victimSearch/VictimSearchFilter.mjs +3 -0
  24. package/esm2020/lib/victimSearch/victimSearchForm.component.mjs +38 -0
  25. package/esm2020/public-api.mjs +12 -0
  26. package/fesm2015/csmart-ngc-smart-victim.mjs +3225 -0
  27. package/fesm2015/csmart-ngc-smart-victim.mjs.map +1 -0
  28. package/fesm2020/csmart-ngc-smart-victim.mjs +3214 -0
  29. package/fesm2020/csmart-ngc-smart-victim.mjs.map +1 -0
  30. package/lib/caseNote/caseNote.component.d.ts +6 -2
  31. package/lib/common-dialog/common-dialog.component.d.ts +4 -1
  32. package/lib/common-dialog/common-dialog.module.d.ts +6 -0
  33. package/lib/common-dialog/common-dialog.service.d.ts +4 -1
  34. package/lib/contact/contact.component.d.ts +4 -1
  35. package/lib/intake.service.d.ts +3 -0
  36. package/lib/safetyPlan/serviceProvider.component.d.ts +4 -1
  37. package/lib/safetyPlan/victimSafetyPlan.component.d.ts +7 -2
  38. package/lib/safetyPlan/victimSafetyPlanDetail.component.d.ts +7 -2
  39. package/lib/shared/app.shared.module.d.ts +30 -0
  40. package/lib/shared/directives/phone-mask.directive.d.ts +5 -2
  41. package/lib/smart-victim-delete-confirm.component.d.ts +3 -0
  42. package/lib/smart-victim-detail/smart-victim-detail.component.d.ts +9 -4
  43. package/lib/smart-victim.component.d.ts +8 -3
  44. package/lib/smart-victim.model.d.ts +2 -1
  45. package/lib/smart-victim.module.d.ts +47 -0
  46. package/lib/smart-victim.service.d.ts +3 -0
  47. package/lib/victim-routing.module.d.ts +5 -0
  48. package/lib/victimSearch/victimSearchForm.component.d.ts +3 -0
  49. package/package.json +28 -18
  50. package/public-api.d.ts +4 -0
  51. package/bundles/csmart-ngc-smart-victim.umd.js +0 -6430
  52. package/bundles/csmart-ngc-smart-victim.umd.js.map +0 -1
  53. package/bundles/csmart-ngc-smart-victim.umd.min.js +0 -16
  54. package/bundles/csmart-ngc-smart-victim.umd.min.js.map +0 -1
  55. package/csmart-ngc-smart-victim.metadata.json +0 -1
  56. package/esm2015/csmart-ngc-smart-victim.js +0 -25
  57. package/esm2015/lib/caseNote/caseNote.component.js +0 -349
  58. package/esm2015/lib/common-dialog/common-dialog.component.js +0 -46
  59. package/esm2015/lib/common-dialog/common-dialog.module.js +0 -32
  60. package/esm2015/lib/common-dialog/common-dialog.service.js +0 -63
  61. package/esm2015/lib/contact/contact.component.js +0 -232
  62. package/esm2015/lib/intake.service.js +0 -183
  63. package/esm2015/lib/safetyPlan/serviceProvider.component.js +0 -130
  64. package/esm2015/lib/safetyPlan/victimSafetyPlan.component.js +0 -257
  65. package/esm2015/lib/safetyPlan/victimSafetyPlanDetail.component.js +0 -556
  66. package/esm2015/lib/shared/app.shared.module.js +0 -81
  67. package/esm2015/lib/shared/directives/phone-mask.directive.js +0 -168
  68. package/esm2015/lib/shared/validators/date.validator.js +0 -108
  69. package/esm2015/lib/shared/validators/index.js +0 -7
  70. package/esm2015/lib/smart-victim-delete-confirm.component.js +0 -61
  71. package/esm2015/lib/smart-victim-detail/smart-victim-detail.component.js +0 -1406
  72. package/esm2015/lib/smart-victim.component.js +0 -476
  73. package/esm2015/lib/smart-victim.model.js +0 -631
  74. package/esm2015/lib/smart-victim.module.js +0 -84
  75. package/esm2015/lib/smart-victim.service.js +0 -792
  76. package/esm2015/lib/victim-routing.module.js +0 -40
  77. package/esm2015/lib/victimSearch/VictimSearchFilter.js +0 -20
  78. package/esm2015/lib/victimSearch/victimSearchForm.component.js +0 -59
  79. package/esm2015/public-api.js +0 -13
  80. package/esm5/csmart-ngc-smart-victim.js +0 -25
  81. package/esm5/lib/caseNote/caseNote.component.js +0 -372
  82. package/esm5/lib/common-dialog/common-dialog.component.js +0 -48
  83. package/esm5/lib/common-dialog/common-dialog.module.js +0 -36
  84. package/esm5/lib/common-dialog/common-dialog.service.js +0 -75
  85. package/esm5/lib/contact/contact.component.js +0 -285
  86. package/esm5/lib/intake.service.js +0 -194
  87. package/esm5/lib/safetyPlan/serviceProvider.component.js +0 -99
  88. package/esm5/lib/safetyPlan/victimSafetyPlan.component.js +0 -306
  89. package/esm5/lib/safetyPlan/victimSafetyPlanDetail.component.js +0 -628
  90. package/esm5/lib/shared/app.shared.module.js +0 -85
  91. package/esm5/lib/shared/directives/phone-mask.directive.js +0 -184
  92. package/esm5/lib/shared/validators/date.validator.js +0 -108
  93. package/esm5/lib/shared/validators/index.js +0 -7
  94. package/esm5/lib/smart-victim-delete-confirm.component.js +0 -51
  95. package/esm5/lib/smart-victim-detail/smart-victim-detail.component.js +0 -1498
  96. package/esm5/lib/smart-victim.component.js +0 -528
  97. package/esm5/lib/smart-victim.model.js +0 -541
  98. package/esm5/lib/smart-victim.module.js +0 -84
  99. package/esm5/lib/smart-victim.service.js +0 -1063
  100. package/esm5/lib/victim-routing.module.js +0 -44
  101. package/esm5/lib/victimSearch/VictimSearchFilter.js +0 -24
  102. package/esm5/lib/victimSearch/victimSearchForm.component.js +0 -70
  103. package/esm5/public-api.js +0 -13
  104. package/fesm2015/csmart-ngc-smart-victim.js +0 -5686
  105. package/fesm2015/csmart-ngc-smart-victim.js.map +0 -1
  106. package/fesm5/csmart-ngc-smart-victim.js +0 -6207
  107. package/fesm5/csmart-ngc-smart-victim.js.map +0 -1
@@ -1,257 +0,0 @@
1
- /**
2
- * @fileoverview added by tsickle
3
- * Generated from: lib/safetyPlan/victimSafetyPlan.component.ts
4
- * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
5
- */
6
- import { Component } from '@angular/core';
7
- import { NgcSmartVictimService } from '../smart-victim.service';
8
- import { MatDialog, MatTableDataSource, MatSnackBar } from '@angular/material';
9
- import { CommonDialogService } from '.././common-dialog/common-dialog.service';
10
- import { HttpClient } from '@angular/common/http';
11
- import { Router, ActivatedRoute } from '@angular/router';
12
- import { SmartAuthService } from '@csmart/ngc-smart-core';
13
- export class VictimSafetyPlanComponent {
14
- /**
15
- * @param {?} _victimServicesComponent
16
- * @param {?} commonDialogService
17
- * @param {?} http
18
- * @param {?} dialog
19
- * @param {?} route
20
- * @param {?} router
21
- * @param {?} snackBar
22
- * @param {?} smartAuthService
23
- */
24
- constructor(_victimServicesComponent, commonDialogService, http, dialog, route, router, snackBar, smartAuthService) {
25
- this._victimServicesComponent = _victimServicesComponent;
26
- this.commonDialogService = commonDialogService;
27
- this.http = http;
28
- this.dialog = dialog;
29
- this.route = route;
30
- this.router = router;
31
- this.snackBar = snackBar;
32
- this.smartAuthService = smartAuthService;
33
- this.editSafetyPlan = (/** @type {?} */ ({}));
34
- this.safetyPlanDataSource = new MatTableDataSource();
35
- }
36
- /**
37
- * @return {?}
38
- */
39
- ngAfterViewInit() {
40
- this.smartAuthService.setPermission('Victim', this.route.snapshot);
41
- }
42
- /**
43
- * @return {?}
44
- */
45
- ngOnInit() {
46
- /** @type {?} */
47
- var data = this.route.snapshot.data;
48
- this.loginStaff = data.loginStaff;
49
- this.staffId = this.loginStaff.staffId;
50
- this.sub = this.route.params.subscribe((/**
51
- * @param {?} params
52
- * @return {?}
53
- */
54
- params => {
55
- this.victimId = params['victimId'];
56
- }));
57
- this.hiddenAddNewFlag = false;
58
- this.victimName = this.victimName;
59
- this._victimServicesComponent.getSafetyPlans(this.victimId).subscribe((/**
60
- * @param {?} victimSafetyPlans
61
- * @return {?}
62
- */
63
- victimSafetyPlans => {
64
- this.victimSafetyPlans = victimSafetyPlans;
65
- this.safetyPlanDataSource.data = this.victimSafetyPlans;
66
- console.log('this.victimSafetyPlans');
67
- console.log(this.victimSafetyPlans);
68
- }));
69
- // this.myVictimServiceId =1;
70
- // this._victimServicesComponent.getVictimServiceDetail(this.myVictimServiceId).subscribe(
71
- // victimServiceDetail => {
72
- // this.victimServiceDetail = victimServiceDetail;
73
- // console.log('service detail');
74
- // console.log(this.victimServiceDetail);
75
- // }
76
- // );
77
- this._victimServicesComponent.getServiceStatusHistories(1).subscribe((/**
78
- * @param {?} victimServiceStatusHistories
79
- * @return {?}
80
- */
81
- victimServiceStatusHistories => {
82
- // this.victimServiceStatusHistories = victimServiceStatusHistories;
83
- }));
84
- }
85
- //---------------graphQL--------------------------------------
86
- // getVictimServiceTypeProgramProviders(): Observable<VictimServiceTypeProgramProviderModel[]> {
87
- // const queryString = `
88
- // {
89
- // findVictimServiceTypeProgramProviders {
90
- // data {
91
- // victimServiceTypeProgramProviderId
92
- // victimServiceType
93
- // victimProgramProvider
94
- // }
95
- // }
96
- // }`;
97
- // return this.http.post<any>(environment.smartApiUrl, { query: queryString })
98
- // .map(result => {
99
- // return result.data.findVictimServiceTypeProgramProviders.data;
100
- // });
101
- // }
102
- /**
103
- * @param {?} victimServiceId
104
- * @return {?}
105
- */
106
- goToSafetyPlanDetail(victimServiceId) {
107
- this.router.navigate(['saftyPlanDetail', victimServiceId, this.victimId]);
108
- }
109
- /**
110
- * @return {?}
111
- */
112
- onAddNew() {
113
- this.hiddenDetailFlag = false;
114
- }
115
- /**
116
- * @param {?} victimServiceId
117
- * @return {?}
118
- */
119
- onDeleteSafetyPlan(victimServiceId) {
120
- this.commonDialogService
121
- .confirm('', 'Do you want to delete this safety plan?', 'Yes', 'No')
122
- .subscribe((/**
123
- * @param {?} res
124
- * @return {?}
125
- */
126
- res => {
127
- this.result = res;
128
- if (this.result) {
129
- this._victimServicesComponent.deleteSafetyPlan(victimServiceId, this.staffId)
130
- .subscribe((/**
131
- * @param {?} result
132
- * @return {?}
133
- */
134
- result => {
135
- this.snackBar.open('delete safety plan Successfully !', '', { duration: 3000, });
136
- this._victimServicesComponent.getSafetyPlans(this.victimId).subscribe((/**
137
- * @param {?} victimSafetyPlans
138
- * @return {?}
139
- */
140
- victimSafetyPlans => {
141
- this.victimSafetyPlans = victimSafetyPlans;
142
- this.safetyPlanDataSource.data = this.victimSafetyPlans;
143
- }));
144
- }));
145
- }
146
- }));
147
- }
148
- /**
149
- * @return {?}
150
- */
151
- back() {
152
- this.router.navigate(['victimHome']);
153
- }
154
- }
155
- VictimSafetyPlanComponent.decorators = [
156
- { type: Component, args: [{
157
- template: "\r\n <mat-card>\r\n <mat-card-header>\r\n </mat-card-header>\r\n <mat-card-content>\r\n <mat-toolbar color=\"primary\">\r\n <h4 class=\"card-header\" style=\"display: inline-block;\">Safety Plan</h4>\r\n </mat-toolbar>\r\n <br>\r\n <button mat-raised-button color=\"primary\" (click)=\"goToSafetyPlanDetail(0)\" >Add Goal</button>\r\n &nbsp;&nbsp;<button mat-raised-button color=\"primary\" (click)=\"back()\">Back</button>\r\n <br>\r\n <br>\r\n <mat-table #table [dataSource]=\"safetyPlanDataSource\" class=\"example-table\">\r\n <ng-container matColumnDef=\"startDate\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Start Date</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.startDate | date}} </mat-cell>\r\n </ng-container>\r\n <ng-container matColumnDef=\"goal\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Goal</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.goal }} </mat-cell>\r\n </ng-container>\r\n <ng-container matColumnDef=\"victimServiceStatus\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Status</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.victimServiceStatus }} </mat-cell>\r\n </ng-container>\r\n <ng-container matColumnDef=\"comment\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\">Comment</mat-header-cell>\r\n <mat-cell *matCellDef=\"let row\" class=\"example-cell\"> {{row.comment }} </mat-cell>\r\n </ng-container>\r\n\r\n <ng-container matColumnDef=\"victimServiceId\">\r\n <mat-header-cell *matHeaderCellDef class=\"example-header-cell\"></mat-header-cell>\r\n <!-- <mat-cell *matCellDef=\"let row\" class=\"example-cell\">\r\n <button type=\"button\" mat-raised-button color=\"primary\" (click)=\"goToSafetyPlanDetail(row.victimServiceId)\"> \r\n <span class=\"glyphicon glyphicon-pencil\" ></span>&nbsp;\r\n <mat-icon>edit</mat-icon> \r\n </button> \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n &nbsp;&nbsp;\r\n <button type=\"button\" mat-raised-button color=\"primary\" (click)=\"onDeleteSafetyPlan(row.victimServiceId)\"> \r\n <span class=\"glyphicon glyphicon-trash\" ></span>&nbsp;Delete\r\n </button> \r\n </mat-cell> -->\r\n\r\n <mat-cell *matCellDef=\"let element\">\r\n \r\n <button class=\"edit-btn\" mat-icon-button color=\"primary\" matTooltip=\"Edit Safety Plan\" (click)=\"goToSafetyPlanDetail(element.victimServiceId)\">\r\n <i class=\"material-icons\">mode_edit</i>\r\n </button>\r\n\r\n &nbsp;&nbsp;\r\n \r\n <button\r\n class=\"delete-btn\"\r\n matTooltip=\"Delete Safety Plan\"\r\n mat-icon-button\r\n color=\"primary\"\r\n (click)=\"onDeleteSafetyPlan(element.victimServiceId)\">\r\n <i class=\"material-icons\">delete</i>\r\n </button>\r\n\r\n\r\n\r\n\r\n \r\n </mat-cell>\r\n\r\n \r\n \r\n </ng-container>\r\n\r\n <mat-header-row *matHeaderRowDef=\"['startDate', 'goal', 'victimServiceStatus', 'comment', 'victimServiceId']\" class=\"example-header-row\"></mat-header-row>\r\n <mat-row *matRowDef=\"let row; columns:['startDate', 'goal', 'victimServiceStatus', 'comment', 'victimServiceId'];\" class=\"example-row\"></mat-row>\r\n </mat-table>\r\n \r\n \r\n</mat-card-content>\r\n</mat-card>",
158
- providers: [CommonDialogService]
159
- }] }
160
- ];
161
- /** @nocollapse */
162
- VictimSafetyPlanComponent.ctorParameters = () => [
163
- { type: NgcSmartVictimService },
164
- { type: CommonDialogService },
165
- { type: HttpClient },
166
- { type: MatDialog },
167
- { type: ActivatedRoute },
168
- { type: Router },
169
- { type: MatSnackBar },
170
- { type: SmartAuthService }
171
- ];
172
- if (false) {
173
- /** @type {?} */
174
- VictimSafetyPlanComponent.prototype.loginStaff;
175
- /** @type {?} */
176
- VictimSafetyPlanComponent.prototype.offenderId;
177
- /** @type {?} */
178
- VictimSafetyPlanComponent.prototype.hiddenDetailFlag;
179
- /** @type {?} */
180
- VictimSafetyPlanComponent.prototype.hiddenAddNewFlag;
181
- /** @type {?} */
182
- VictimSafetyPlanComponent.prototype.safetyPlans;
183
- /** @type {?} */
184
- VictimSafetyPlanComponent.prototype.safetyPlan;
185
- /** @type {?} */
186
- VictimSafetyPlanComponent.prototype.editSafetyPlan;
187
- /** @type {?} */
188
- VictimSafetyPlanComponent.prototype.errorMessage;
189
- /** @type {?} */
190
- VictimSafetyPlanComponent.prototype.contactTypes;
191
- /** @type {?} */
192
- VictimSafetyPlanComponent.prototype.contactPurposes;
193
- /** @type {?} */
194
- VictimSafetyPlanComponent.prototype.victimServiceTypes;
195
- /** @type {?} */
196
- VictimSafetyPlanComponent.prototype.victimSafetyPlans;
197
- /** @type {?} */
198
- VictimSafetyPlanComponent.prototype.victimServiceStatus;
199
- /** @type {?} */
200
- VictimSafetyPlanComponent.prototype.victimServiceStatusHistories;
201
- /** @type {?} */
202
- VictimSafetyPlanComponent.prototype.queryString;
203
- /** @type {?} */
204
- VictimSafetyPlanComponent.prototype.victimServiceDetail;
205
- /** @type {?} */
206
- VictimSafetyPlanComponent.prototype.myVictimServiceId;
207
- /** @type {?} */
208
- VictimSafetyPlanComponent.prototype.result;
209
- /** @type {?} */
210
- VictimSafetyPlanComponent.prototype.victimName;
211
- /** @type {?} */
212
- VictimSafetyPlanComponent.prototype.staffId;
213
- /** @type {?} */
214
- VictimSafetyPlanComponent.prototype.victimId;
215
- /**
216
- * @type {?}
217
- * @private
218
- */
219
- VictimSafetyPlanComponent.prototype.sub;
220
- /** @type {?} */
221
- VictimSafetyPlanComponent.prototype.safetyPlanDataSource;
222
- /**
223
- * @type {?}
224
- * @private
225
- */
226
- VictimSafetyPlanComponent.prototype._victimServicesComponent;
227
- /**
228
- * @type {?}
229
- * @private
230
- */
231
- VictimSafetyPlanComponent.prototype.commonDialogService;
232
- /**
233
- * @type {?}
234
- * @private
235
- */
236
- VictimSafetyPlanComponent.prototype.http;
237
- /** @type {?} */
238
- VictimSafetyPlanComponent.prototype.dialog;
239
- /**
240
- * @type {?}
241
- * @private
242
- */
243
- VictimSafetyPlanComponent.prototype.route;
244
- /**
245
- * @type {?}
246
- * @private
247
- */
248
- VictimSafetyPlanComponent.prototype.router;
249
- /** @type {?} */
250
- VictimSafetyPlanComponent.prototype.snackBar;
251
- /**
252
- * @type {?}
253
- * @private
254
- */
255
- VictimSafetyPlanComponent.prototype.smartAuthService;
256
- }
257
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmljdGltU2FmZXR5UGxhbi5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AY3NtYXJ0L25nYy1zbWFydC12aWN0aW0vIiwic291cmNlcyI6WyJsaWIvc2FmZXR5UGxhbi92aWN0aW1TYWZldHlQbGFuLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQStCLE1BQU0sZUFBZSxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR2hFLE9BQU8sRUFBRSxTQUFTLEVBQWdDLGtCQUFrQixFQUFDLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVHLE9BQU8sRUFBRSxtQkFBbUIsRUFBQyxNQUFNLDBDQUEwQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUlsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBTzFELE1BQU0sT0FBTyx5QkFBeUI7Ozs7Ozs7Ozs7O0lBNEJwQyxZQUVVLHdCQUErQyxFQUMvQyxtQkFBd0MsRUFDeEMsSUFBZ0IsRUFDakIsTUFBaUIsRUFDaEIsS0FBcUIsRUFDckIsTUFBYyxFQUNmLFFBQXFCLEVBQ3BCLGdCQUFrQztRQVBsQyw2QkFBd0IsR0FBeEIsd0JBQXdCLENBQXVCO1FBQy9DLHdCQUFtQixHQUFuQixtQkFBbUIsQ0FBcUI7UUFDeEMsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUNqQixXQUFNLEdBQU4sTUFBTSxDQUFXO1FBQ2hCLFVBQUssR0FBTCxLQUFLLENBQWdCO1FBQ3JCLFdBQU0sR0FBTixNQUFNLENBQVE7UUFDZixhQUFRLEdBQVIsUUFBUSxDQUFhO1FBQ3BCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUEzQjVDLG1CQUFjLEdB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dEIsNkNBQTRCOzs7OztJQUM1QixxREFBMEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCxJbmplY3QsQWZ0ZXJWaWV3SW5pdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBOZ2NTbWFydFZpY3RpbVNlcnZpY2UgfSBmcm9tICcuLi9zbWFydC12aWN0aW0uc2VydmljZSc7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBGb3JtR3JvdXAsIEZvcm1CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBWaWN0aW1TYWZldHlQbGFuLFZpY3RpbVNlcnZpY2VEZXRhaWwsVmljdGltU2VydmljZVN0YXR1c0hpc3RvcnkgfSBmcm9tICcuLi9zbWFydC12aWN0aW0ubW9kZWwnO1xyXG5pbXBvcnQgeyBNYXREaWFsb2csIE1hdERpYWxvZ1JlZiwgTUFUX0RJQUxPR19EQVRBLE1hdFRhYmxlRGF0YVNvdXJjZSxNYXRTbmFja0JhciB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsJztcclxuaW1wb3J0IHsgQ29tbW9uRGlhbG9nU2VydmljZX0gZnJvbSAnLi4vLi9jb21tb24tZGlhbG9nL2NvbW1vbi1kaWFsb2cuc2VydmljZSc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuLy9pbXBvcnQgeyBWaWN0aW1TYWZldHlQbGFuRGV0YWlsQ29tcG9uZW50IH0gZnJvbSAnLi92aWN0aW1TYWZldHlQbGFuRGV0YWlsLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IFNlbGVjdGVkT2ZmZW5kZXIsIExvZ2luU3RhZmYgfSBmcm9tICdAY3NtYXJ0L25nYy1zbWFydC1jb3JlJztcclxuaW1wb3J0IHsgUm91dGVyLCBBY3RpdmF0ZWRSb3V0ZSB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IFNtYXJ0QXV0aFNlcnZpY2UgfSBmcm9tICdAY3NtYXJ0L25nYy1zbWFydC1jb3JlJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHRlbXBsYXRlVXJsOiAnLi92aWN0aW1TYWZldHlQbGFuLmNvbXBvbmVudC5odG1sJyxcclxuICBwcm92aWRlcnM6IFtDb21tb25EaWFsb2dTZXJ2aWNlXVxyXG59KVxyXG5cclxuZXhwb3J0IGNsYXNzIFZpY3RpbVNhZmV0eVBsYW5Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgLy9zZWxlY3RlZE9mZmVuZGVyOiBTZWxlY3RlZE9mZmVuZGVyO1xyXG4gIGxvZ2luU3RhZmY6IExvZ2luU3RhZmY7XHJcbiAgb2ZmZW5kZXJJZDogbnVtYmVyO1xyXG5cclxuXHJcbiAgaGlkZGVuRGV0YWlsRmxhZzpib29sZWFuO1xyXG4gIGhpZGRlbkFkZE5ld0ZsYWc6IGJvb2xlYW47XHJcbiAgc2FmZXR5UGxhbnM6IFZpY3RpbVNhZmV0eVBsYW5bXTtcclxuICBzYWZldHlQbGFuOiBWaWN0aW1TYWZldHlQbGFuO1xyXG4gIGVkaXRTYWZldHlQbGFuOiBWaWN0aW1TYWZldHlQbGFuID0gPFZpY3RpbVNhZmV0eVBsYW4+e307XHJcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmc7XHJcbiAgY29udGFjdFR5cGVzOiBhbnlbXTtcclxuICBjb250YWN0UHVycG9zZXM6IGFueVtdO1xyXG4gIHZpY3RpbVNlcnZpY2VUeXBlczogYW55W107XHJcbiAgdmljdGltU2FmZXR5UGxhbnM6IFZpY3RpbVNhZmV0eVBsYW5bXTtcclxuICB2aWN0aW1TZXJ2aWNlU3RhdHVzOiBhbnlbXTtcclxuICB2aWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yaWVzOiBWaWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yeVtdO1xyXG4gIHF1ZXJ5U3RyaW5nOiBzdHJpbmc7XHJcbiAgdmljdGltU2VydmljZURldGFpbDogVmljdGltU2VydmljZURldGFpbFtdO1xyXG4gIG15VmljdGltU2VydmljZUlkOiBudW1iZXI7XHJcbiAgcmVzdWx0OiBhbnk7XHJcbiAgdmljdGltTmFtZTogc3RyaW5nO1xyXG4gIHN0YWZmSWQ6IG51bWJlcjtcclxuICB2aWN0aW1JZDogbnVtYmVyO1xyXG4gIHByaXZhdGUgc3ViOiBhbnk7XHJcbiAgc2FmZXR5UGxhbkRhdGFTb3VyY2UgPSBuZXcgIE1hdFRhYmxlRGF0YVNvdXJjZSgpO1xyXG4gXHJcbiAgY29uc3RydWN0b3IoXHJcbiBcclxuICAgIHByaXZhdGUgX3ZpY3RpbVNlcnZpY2VzQ29tcG9uZW50OiBOZ2NTbWFydFZpY3RpbVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIGNvbW1vbkRpYWxvZ1NlcnZpY2U6IENvbW1vbkRpYWxvZ1NlcnZpY2UsXHJcbiAgICBwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsXHJcbiAgICBwdWJsaWMgZGlhbG9nOiBNYXREaWFsb2csXHJcbiAgICBwcml2YXRlIHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwdWJsaWMgc25hY2tCYXI6IE1hdFNuYWNrQmFyLFxyXG4gICAgcHJpdmF0ZSBzbWFydEF1dGhTZXJ2aWNlOiBTbWFydEF1dGhTZXJ2aWNlLFxyXG4gICAgIFxyXG4gICkge1xyXG4gICAgXHJcblxyXG4gICB9XHJcbiAgIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcclxuICAgIHRoaXMuc21hcnRBdXRoU2VydmljZS5zZXRQZXJtaXNzaW9uKCdWaWN0aW0nLCB0aGlzLnJvdXRlLnNuYXBzaG90KTtcclxuICB9XHJcbiBcclxuICBuZ09uSW5pdCgpIHtcclxuXHJcbiAgICB2YXIgZGF0YSA9IHRoaXMucm91dGUuc25hcHNob3QuZGF0YTtcclxuICAgIHRoaXMubG9naW5TdGFmZiA9IGRhdGEubG9naW5TdGFmZjtcclxuICAgIHRoaXMuc3RhZmZJZCA9ICB0aGlzLmxvZ2luU3RhZmYuc3RhZmZJZDtcclxuXHJcbiAgICB0aGlzLnN1YiA9IHRoaXMucm91dGUucGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xyXG4gICAgICB0aGlzLnZpY3RpbUlkID0gcGFyYW1zWyd2aWN0aW1JZCddO1xyXG5cclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuaGlkZGVuQWRkTmV3RmxhZyA9IGZhbHNlO1xyXG4gICAgdGhpcy52aWN0aW1OYW1lPSB0aGlzLnZpY3RpbU5hbWU7XHJcbiAgXHJcbiAgICB0aGlzLl92aWN0aW1TZXJ2aWNlc0NvbXBvbmVudC5nZXRTYWZldHlQbGFucyh0aGlzLnZpY3RpbUlkKS5zdWJzY3JpYmUoXHJcbiAgICAgIHZpY3RpbVNhZmV0eVBsYW5zID0+IHtcclxuICAgICAgICB0aGlzLnZpY3RpbVNhZmV0eVBsYW5zID0gdmljdGltU2FmZXR5UGxhbnM7IFxyXG4gICAgICAgIHRoaXMuc2FmZXR5UGxhbkRhdGFTb3VyY2UuZGF0YSA9IHRoaXMudmljdGltU2FmZXR5UGxhbnM7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ3RoaXMudmljdGltU2FmZXR5UGxhbnMnKTtcclxuICAgICAgICBjb25zb2xlLmxvZyh0aGlzLnZpY3RpbVNhZmV0eVBsYW5zKTtcclxuXHJcbiAgXHJcbiAgICAgIH1cclxuICAgICk7XHJcblxyXG4gICAgIFxyXG4gICAgLy8gIHRoaXMubXlWaWN0aW1TZXJ2aWNlSWQgPTE7XHJcbiAgICAvLyB0aGlzLl92aWN0aW1TZXJ2aWNlc0NvbXBvbmVudC5nZXRWaWN0aW1TZXJ2aWNlRGV0YWlsKHRoaXMubXlWaWN0aW1TZXJ2aWNlSWQpLnN1YnNjcmliZShcclxuICAgIC8vICAgdmljdGltU2VydmljZURldGFpbCA9PiB7XHJcbiAgICAvLyAgICAgdGhpcy52aWN0aW1TZXJ2aWNlRGV0YWlsID0gdmljdGltU2VydmljZURldGFpbDtcclxuICAgIC8vICAgICBjb25zb2xlLmxvZygnc2VydmljZSBkZXRhaWwnKTtcclxuICAgIC8vICAgICBjb25zb2xlLmxvZyh0aGlzLnZpY3RpbVNlcnZpY2VEZXRhaWwpOyBcclxuICAgIC8vICAgfVxyXG4gICAgLy8gKTtcclxuXHJcbiAgICB0aGlzLl92aWN0aW1TZXJ2aWNlc0NvbXBvbmVudC5nZXRTZXJ2aWNlU3RhdHVzSGlzdG9yaWVzKDEpLnN1YnNjcmliZShcclxuICAgICAgdmljdGltU2VydmljZVN0YXR1c0hpc3RvcmllcyA9PiB7XHJcbiAgICAgICAvLyB0aGlzLnZpY3RpbVNlcnZpY2VTdGF0dXNIaXN0b3JpZXMgPSB2aWN0aW1TZXJ2aWNlU3RhdHVzSGlzdG9yaWVzOyBcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgXHJcbi8vLS0tLS0tLS0tLS0tLS0tZ3JhcGhRTC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXHJcbi8vICAgZ2V0VmljdGltU2VydmljZVR5cGVQcm9ncmFtUHJvdmlkZXJzKCk6IE9ic2VydmFibGU8VmljdGltU2VydmljZVR5cGVQcm9ncmFtUHJvdmlkZXJNb2RlbFtdPiB7XHJcbi8vICAgICBjb25zdCBxdWVyeVN0cmluZyA9IGBcclxuLy8gICAgICAgICB7XHJcbi8vICAgICAgICAgICBmaW5kVmljdGltU2VydmljZVR5cGVQcm9ncmFtUHJvdmlkZXJzIHtcclxuLy8gICAgICAgICAgICAgICAgIGRhdGEge1xyXG4vLyAgICAgICAgICAgICAgICAgICB2aWN0aW1TZXJ2aWNlVHlwZVByb2dyYW1Qcm92aWRlcklkXHJcbi8vICAgICAgICAgICAgICAgICAgIHZpY3RpbVNlcnZpY2VUeXBlXHJcbi8vICAgICAgICAgICAgICAgICAgIHZpY3RpbVByb2dyYW1Qcm92aWRlclxyXG4vLyAgICAgICAgICAgICAgICAgfVxyXG4vLyAgICAgICAgICAgICAgIH1cclxuLy8gICAgICAgICB9YDtcclxuXHJcbiBcclxuLy8gICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxhbnk+KGVudmlyb25tZW50LnNtYXJ0QXBpVXJsLCB7IHF1ZXJ5OiBxdWVyeVN0cmluZyB9KVxyXG4vLyAgICAgICAgIC5tYXAocmVzdWx0ID0+IHtcclxuLy8gICAgICAgICByZXR1cm4gcmVzdWx0LmRhdGEuZmluZFZpY3RpbVNlcnZpY2VUeXBlUHJvZ3JhbVByb3ZpZGVycy5kYXRhO1xyXG4vLyAgICAgfSk7XHJcbi8vIH1cclxuXHJcbiAgZ29Ub1NhZmV0eVBsYW5EZXRhaWwodmljdGltU2VydmljZUlkOiBudW1iZXIpe1xyXG4gIFxyXG4gICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3NhZnR5UGxhbkRldGFpbCcsIHZpY3RpbVNlcnZpY2VJZCwgIHRoaXMudmljdGltSWQgXSk7IFxyXG5cclxuICB9XHJcbiAgb25BZGROZXcoKXtcclxuICAgIHRoaXMuaGlkZGVuRGV0YWlsRmxhZyA9IGZhbHNlO1xyXG5cclxuICB9XHJcbiAgb25EZWxldGVTYWZldHlQbGFuKHZpY3RpbVNlcnZpY2VJZDogbnVtYmVyKXtcclxuXHJcbiAgICB0aGlzLmNvbW1vbkRpYWxvZ1NlcnZpY2VcclxuICAgIC5jb25maXJtKCcnLCAnRG8geW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgc2FmZXR5IHBsYW4/JywgJ1llcycsICdObycpXHJcbiAgICAuc3Vic2NyaWJlKHJlcyA9PiB7dGhpcy5yZXN1bHQgPSAgcmVzO1xyXG4gICAgICAgIGlmICh0aGlzLnJlc3VsdCkge1xyXG5cclxuICAgICAgICAgICAgdGhpcy5fdmljdGltU2VydmljZXNDb21wb25lbnQuZGVsZXRlU2FmZXR5UGxhbih2aWN0aW1TZXJ2aWNlSWQsdGhpcy5zdGFmZklkKVxyXG4gICAgICAgICAgICAgLnN1YnNjcmliZShyZXN1bHQgPT4ge1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLnNuYWNrQmFyLm9wZW4oJ2RlbGV0ZSBzYWZldHkgcGxhbiBTdWNjZXNzZnVsbHkgIScsICcnLCB7IGR1cmF0aW9uOiAzMDAwLH0pO1xyXG5cclxuICAgICAgICAgICAgICB0aGlzLl92aWN0aW1TZXJ2aWNlc0NvbXBvbmVudC5nZXRTYWZldHlQbGFucyh0aGlzLnZpY3RpbUlkKS5zdWJzY3JpYmUoXHJcbiAgICAgICAgICAgICAgICB2aWN0aW1TYWZldHlQbGFucyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMudmljdGltU2FmZXR5UGxhbnMgPSB2aWN0aW1TYWZldHlQbGFuczsgXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2FmZXR5UGxhbkRhdGFTb3VyY2UuZGF0YSA9IHRoaXMudmljdGltU2FmZXR5UGxhbnM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgIFxyXG4gICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICBcclxuXHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBiYWNrKCl7XHJcbiAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbJ3ZpY3RpbUhvbWUnXSk7XHJcbiAgXHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuXHJcbn1cclxuXHJcbiJdfQ==