@indigina/dcm-api 0.0.28 → 0.0.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/api/api.d.ts +7 -1
- package/api/auditLogs.service.d.ts +43 -0
- package/api/containers.service.d.ts +27 -0
- package/api/documents.service.d.ts +43 -0
- package/api/notes.service.d.ts +43 -0
- package/api/shipments.service.d.ts +15 -118
- package/esm2022/api/api.mjs +8 -2
- package/esm2022/api/auditLogs.service.mjs +162 -0
- package/esm2022/api/containers.service.mjs +66 -2
- package/esm2022/api/documents.service.mjs +162 -0
- package/esm2022/api/notes.service.mjs +162 -0
- package/esm2022/api/shipments.service.mjs +8 -247
- package/esm2022/model/containerTypes.mjs +16 -0
- package/esm2022/model/journeySegmentTypes.mjs +15 -0
- package/esm2022/model/models.mjs +4 -2
- package/esm2022/model/shipmentContainer.mjs +1 -1
- package/esm2022/model/shipmentProduct.mjs +1 -1
- package/esm2022/model/shipmentRouting.mjs +1 -11
- package/esm2022/model/shipmentTimelineItem.mjs +1 -11
- package/esm2022/model/timelineEventTypes.mjs +26 -0
- package/fesm2022/indigina-dcm-api.mjs +496 -193
- package/fesm2022/indigina-dcm-api.mjs.map +1 -1
- package/model/containerTypes.d.ts +16 -0
- package/model/{containerType.d.ts → journeySegmentTypes.d.ts} +4 -5
- package/model/models.d.ts +3 -1
- package/model/shipmentContainer.d.ts +4 -4
- package/model/shipmentProduct.d.ts +4 -5
- package/model/shipmentRouting.d.ts +4 -0
- package/model/shipmentTimelineItem.d.ts +4 -1
- package/model/timelineEventTypes.d.ts +26 -0
- package/package.json +1 -1
- package/esm2022/model/containerType.mjs +0 -16
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
## @indigina/dcm-api@0.0.
|
|
1
|
+
## @indigina/dcm-api@0.0.30
|
|
2
2
|
|
|
3
3
|
The version of the OpenAPI document: v1
|
|
4
4
|
|
|
@@ -21,7 +21,7 @@ Navigate to the folder of your consuming project and run one of next commands.
|
|
|
21
21
|
_published:_
|
|
22
22
|
|
|
23
23
|
```
|
|
24
|
-
npm install @indigina/dcm-api@0.0.
|
|
24
|
+
npm install @indigina/dcm-api@0.0.30 --save
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
_without publishing (not recommended):_
|
package/api/api.d.ts
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
|
+
export * from './auditLogs.service';
|
|
2
|
+
import { AuditLogsService } from './auditLogs.service';
|
|
1
3
|
export * from './bookings.service';
|
|
2
4
|
import { BookingsService } from './bookings.service';
|
|
3
5
|
export * from './containers.service';
|
|
4
6
|
import { ContainersService } from './containers.service';
|
|
7
|
+
export * from './documents.service';
|
|
8
|
+
import { DocumentsService } from './documents.service';
|
|
5
9
|
export * from './health.service';
|
|
6
10
|
import { HealthService } from './health.service';
|
|
11
|
+
export * from './notes.service';
|
|
12
|
+
import { NotesService } from './notes.service';
|
|
7
13
|
export * from './permissions.service';
|
|
8
14
|
import { PermissionsService } from './permissions.service';
|
|
9
15
|
export * from './reports.service';
|
|
@@ -12,4 +18,4 @@ export * from './shipments.service';
|
|
|
12
18
|
import { ShipmentsService } from './shipments.service';
|
|
13
19
|
export * from './user.service';
|
|
14
20
|
import { UserService } from './user.service';
|
|
15
|
-
export declare const APIS: (typeof BookingsService | typeof ContainersService | typeof HealthService | typeof PermissionsService | typeof ReportsService | typeof ShipmentsService | typeof UserService)[];
|
|
21
|
+
export declare const APIS: (typeof AuditLogsService | typeof BookingsService | typeof ContainersService | typeof DocumentsService | typeof HealthService | typeof NotesService | typeof PermissionsService | typeof ReportsService | typeof ShipmentsService | typeof UserService)[];
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { HttpClient, HttpHeaders, HttpResponse, HttpEvent, HttpParameterCodec, HttpContext } from '@angular/common/http';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { AuditLogs } from '../model/auditLogs';
|
|
4
|
+
import { Configuration } from '../configuration';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class AuditLogsService {
|
|
7
|
+
protected httpClient: HttpClient;
|
|
8
|
+
protected basePath: string;
|
|
9
|
+
defaultHeaders: HttpHeaders;
|
|
10
|
+
configuration: Configuration;
|
|
11
|
+
encoder: HttpParameterCodec;
|
|
12
|
+
constructor(httpClient: HttpClient, basePath: string | string[], configuration: Configuration);
|
|
13
|
+
private addToHttpParams;
|
|
14
|
+
private addToHttpParamsRecursive;
|
|
15
|
+
/**
|
|
16
|
+
* Getting a shipment logs
|
|
17
|
+
* @param id
|
|
18
|
+
* @param $skip
|
|
19
|
+
* @param $top
|
|
20
|
+
* @param $orderby
|
|
21
|
+
* @param $filter
|
|
22
|
+
* @param $search
|
|
23
|
+
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
|
24
|
+
* @param reportProgress flag to report request and response progress.
|
|
25
|
+
*/
|
|
26
|
+
getShipmentLogs(id: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'body', reportProgress?: boolean, options?: {
|
|
27
|
+
httpHeaderAccept?: 'application/json';
|
|
28
|
+
context?: HttpContext;
|
|
29
|
+
transferCache?: boolean;
|
|
30
|
+
}): Observable<AuditLogs>;
|
|
31
|
+
getShipmentLogs(id: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'response', reportProgress?: boolean, options?: {
|
|
32
|
+
httpHeaderAccept?: 'application/json';
|
|
33
|
+
context?: HttpContext;
|
|
34
|
+
transferCache?: boolean;
|
|
35
|
+
}): Observable<HttpResponse<AuditLogs>>;
|
|
36
|
+
getShipmentLogs(id: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'events', reportProgress?: boolean, options?: {
|
|
37
|
+
httpHeaderAccept?: 'application/json';
|
|
38
|
+
context?: HttpContext;
|
|
39
|
+
transferCache?: boolean;
|
|
40
|
+
}): Observable<HttpEvent<AuditLogs>>;
|
|
41
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<AuditLogsService, [null, { optional: true; }, { optional: true; }]>;
|
|
42
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<AuditLogsService>;
|
|
43
|
+
}
|
|
@@ -2,6 +2,7 @@ import { HttpClient, HttpHeaders, HttpResponse, HttpEvent, HttpParameterCodec, H
|
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
3
|
import { ContainersCount } from '../model/containersCount';
|
|
4
4
|
import { ContainersToDeliverCount } from '../model/containersToDeliverCount';
|
|
5
|
+
import { ShipmentContainers } from '../model/shipmentContainers';
|
|
5
6
|
import { Configuration } from '../configuration';
|
|
6
7
|
import * as i0 from "@angular/core";
|
|
7
8
|
export declare class ContainersService {
|
|
@@ -153,6 +154,32 @@ export declare class ContainersService {
|
|
|
153
154
|
context?: HttpContext;
|
|
154
155
|
transferCache?: boolean;
|
|
155
156
|
}): Observable<HttpEvent<ContainersCount>>;
|
|
157
|
+
/**
|
|
158
|
+
* Getting a shipment containers
|
|
159
|
+
* @param shipmentId
|
|
160
|
+
* @param $skip
|
|
161
|
+
* @param $top
|
|
162
|
+
* @param $orderby
|
|
163
|
+
* @param $filter
|
|
164
|
+
* @param $search
|
|
165
|
+
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
|
166
|
+
* @param reportProgress flag to report request and response progress.
|
|
167
|
+
*/
|
|
168
|
+
getShipmentContainers(shipmentId: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'body', reportProgress?: boolean, options?: {
|
|
169
|
+
httpHeaderAccept?: 'application/json';
|
|
170
|
+
context?: HttpContext;
|
|
171
|
+
transferCache?: boolean;
|
|
172
|
+
}): Observable<ShipmentContainers>;
|
|
173
|
+
getShipmentContainers(shipmentId: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'response', reportProgress?: boolean, options?: {
|
|
174
|
+
httpHeaderAccept?: 'application/json';
|
|
175
|
+
context?: HttpContext;
|
|
176
|
+
transferCache?: boolean;
|
|
177
|
+
}): Observable<HttpResponse<ShipmentContainers>>;
|
|
178
|
+
getShipmentContainers(shipmentId: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'events', reportProgress?: boolean, options?: {
|
|
179
|
+
httpHeaderAccept?: 'application/json';
|
|
180
|
+
context?: HttpContext;
|
|
181
|
+
transferCache?: boolean;
|
|
182
|
+
}): Observable<HttpEvent<ShipmentContainers>>;
|
|
156
183
|
static ɵfac: i0.ɵɵFactoryDeclaration<ContainersService, [null, { optional: true; }, { optional: true; }]>;
|
|
157
184
|
static ɵprov: i0.ɵɵInjectableDeclaration<ContainersService>;
|
|
158
185
|
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { HttpClient, HttpHeaders, HttpResponse, HttpEvent, HttpParameterCodec, HttpContext } from '@angular/common/http';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { Documents } from '../model/documents';
|
|
4
|
+
import { Configuration } from '../configuration';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class DocumentsService {
|
|
7
|
+
protected httpClient: HttpClient;
|
|
8
|
+
protected basePath: string;
|
|
9
|
+
defaultHeaders: HttpHeaders;
|
|
10
|
+
configuration: Configuration;
|
|
11
|
+
encoder: HttpParameterCodec;
|
|
12
|
+
constructor(httpClient: HttpClient, basePath: string | string[], configuration: Configuration);
|
|
13
|
+
private addToHttpParams;
|
|
14
|
+
private addToHttpParamsRecursive;
|
|
15
|
+
/**
|
|
16
|
+
* Getting a shipment documents
|
|
17
|
+
* @param id
|
|
18
|
+
* @param $skip
|
|
19
|
+
* @param $top
|
|
20
|
+
* @param $orderby
|
|
21
|
+
* @param $filter
|
|
22
|
+
* @param $search
|
|
23
|
+
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
|
24
|
+
* @param reportProgress flag to report request and response progress.
|
|
25
|
+
*/
|
|
26
|
+
getShipmentDocuments(id: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'body', reportProgress?: boolean, options?: {
|
|
27
|
+
httpHeaderAccept?: 'application/json';
|
|
28
|
+
context?: HttpContext;
|
|
29
|
+
transferCache?: boolean;
|
|
30
|
+
}): Observable<Documents>;
|
|
31
|
+
getShipmentDocuments(id: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'response', reportProgress?: boolean, options?: {
|
|
32
|
+
httpHeaderAccept?: 'application/json';
|
|
33
|
+
context?: HttpContext;
|
|
34
|
+
transferCache?: boolean;
|
|
35
|
+
}): Observable<HttpResponse<Documents>>;
|
|
36
|
+
getShipmentDocuments(id: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'events', reportProgress?: boolean, options?: {
|
|
37
|
+
httpHeaderAccept?: 'application/json';
|
|
38
|
+
context?: HttpContext;
|
|
39
|
+
transferCache?: boolean;
|
|
40
|
+
}): Observable<HttpEvent<Documents>>;
|
|
41
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<DocumentsService, [null, { optional: true; }, { optional: true; }]>;
|
|
42
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<DocumentsService>;
|
|
43
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { HttpClient, HttpHeaders, HttpResponse, HttpEvent, HttpParameterCodec, HttpContext } from '@angular/common/http';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { Notes } from '../model/notes';
|
|
4
|
+
import { Configuration } from '../configuration';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
export declare class NotesService {
|
|
7
|
+
protected httpClient: HttpClient;
|
|
8
|
+
protected basePath: string;
|
|
9
|
+
defaultHeaders: HttpHeaders;
|
|
10
|
+
configuration: Configuration;
|
|
11
|
+
encoder: HttpParameterCodec;
|
|
12
|
+
constructor(httpClient: HttpClient, basePath: string | string[], configuration: Configuration);
|
|
13
|
+
private addToHttpParams;
|
|
14
|
+
private addToHttpParamsRecursive;
|
|
15
|
+
/**
|
|
16
|
+
* Getting a shipment notes
|
|
17
|
+
* @param id
|
|
18
|
+
* @param $skip
|
|
19
|
+
* @param $top
|
|
20
|
+
* @param $orderby
|
|
21
|
+
* @param $filter
|
|
22
|
+
* @param $search
|
|
23
|
+
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
|
24
|
+
* @param reportProgress flag to report request and response progress.
|
|
25
|
+
*/
|
|
26
|
+
getShipmentNotes(id: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'body', reportProgress?: boolean, options?: {
|
|
27
|
+
httpHeaderAccept?: 'application/json';
|
|
28
|
+
context?: HttpContext;
|
|
29
|
+
transferCache?: boolean;
|
|
30
|
+
}): Observable<Notes>;
|
|
31
|
+
getShipmentNotes(id: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'response', reportProgress?: boolean, options?: {
|
|
32
|
+
httpHeaderAccept?: 'application/json';
|
|
33
|
+
context?: HttpContext;
|
|
34
|
+
transferCache?: boolean;
|
|
35
|
+
}): Observable<HttpResponse<Notes>>;
|
|
36
|
+
getShipmentNotes(id: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'events', reportProgress?: boolean, options?: {
|
|
37
|
+
httpHeaderAccept?: 'application/json';
|
|
38
|
+
context?: HttpContext;
|
|
39
|
+
transferCache?: boolean;
|
|
40
|
+
}): Observable<HttpEvent<Notes>>;
|
|
41
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NotesService, [null, { optional: true; }, { optional: true; }]>;
|
|
42
|
+
static ɵprov: i0.ɵɵInjectableDeclaration<NotesService>;
|
|
43
|
+
}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import { HttpClient, HttpHeaders, HttpResponse, HttpEvent, HttpParameterCodec, HttpContext } from '@angular/common/http';
|
|
2
2
|
import { Observable } from 'rxjs';
|
|
3
|
-
import { AuditLogs } from '../model/auditLogs';
|
|
4
|
-
import { Documents } from '../model/documents';
|
|
5
|
-
import { Notes } from '../model/notes';
|
|
6
|
-
import { ShipmentContainers } from '../model/shipmentContainers';
|
|
7
3
|
import { ShipmentItems } from '../model/shipmentItems';
|
|
8
4
|
import { ShipmentProducts } from '../model/shipmentProducts';
|
|
9
5
|
import { ShipmentRouting } from '../model/shipmentRouting';
|
|
@@ -25,79 +21,6 @@ export declare class ShipmentsService {
|
|
|
25
21
|
constructor(httpClient: HttpClient, basePath: string | string[], configuration: Configuration);
|
|
26
22
|
private addToHttpParams;
|
|
27
23
|
private addToHttpParamsRecursive;
|
|
28
|
-
/**
|
|
29
|
-
* Getting a shipment routing by id
|
|
30
|
-
* @param id
|
|
31
|
-
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
|
32
|
-
* @param reportProgress flag to report request and response progress.
|
|
33
|
-
*/
|
|
34
|
-
getSShipmentRouting(id: string, observe?: 'body', reportProgress?: boolean, options?: {
|
|
35
|
-
httpHeaderAccept?: 'application/json';
|
|
36
|
-
context?: HttpContext;
|
|
37
|
-
transferCache?: boolean;
|
|
38
|
-
}): Observable<ShipmentRouting>;
|
|
39
|
-
getSShipmentRouting(id: string, observe?: 'response', reportProgress?: boolean, options?: {
|
|
40
|
-
httpHeaderAccept?: 'application/json';
|
|
41
|
-
context?: HttpContext;
|
|
42
|
-
transferCache?: boolean;
|
|
43
|
-
}): Observable<HttpResponse<ShipmentRouting>>;
|
|
44
|
-
getSShipmentRouting(id: string, observe?: 'events', reportProgress?: boolean, options?: {
|
|
45
|
-
httpHeaderAccept?: 'application/json';
|
|
46
|
-
context?: HttpContext;
|
|
47
|
-
transferCache?: boolean;
|
|
48
|
-
}): Observable<HttpEvent<ShipmentRouting>>;
|
|
49
|
-
/**
|
|
50
|
-
* Getting a shipment containers
|
|
51
|
-
* @param id
|
|
52
|
-
* @param $skip
|
|
53
|
-
* @param $top
|
|
54
|
-
* @param $orderby
|
|
55
|
-
* @param $filter
|
|
56
|
-
* @param $search
|
|
57
|
-
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
|
58
|
-
* @param reportProgress flag to report request and response progress.
|
|
59
|
-
*/
|
|
60
|
-
getShipmentContainers(id: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'body', reportProgress?: boolean, options?: {
|
|
61
|
-
httpHeaderAccept?: 'application/json';
|
|
62
|
-
context?: HttpContext;
|
|
63
|
-
transferCache?: boolean;
|
|
64
|
-
}): Observable<ShipmentContainers>;
|
|
65
|
-
getShipmentContainers(id: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'response', reportProgress?: boolean, options?: {
|
|
66
|
-
httpHeaderAccept?: 'application/json';
|
|
67
|
-
context?: HttpContext;
|
|
68
|
-
transferCache?: boolean;
|
|
69
|
-
}): Observable<HttpResponse<ShipmentContainers>>;
|
|
70
|
-
getShipmentContainers(id: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'events', reportProgress?: boolean, options?: {
|
|
71
|
-
httpHeaderAccept?: 'application/json';
|
|
72
|
-
context?: HttpContext;
|
|
73
|
-
transferCache?: boolean;
|
|
74
|
-
}): Observable<HttpEvent<ShipmentContainers>>;
|
|
75
|
-
/**
|
|
76
|
-
* Getting a shipment documents
|
|
77
|
-
* @param id
|
|
78
|
-
* @param $skip
|
|
79
|
-
* @param $top
|
|
80
|
-
* @param $orderby
|
|
81
|
-
* @param $filter
|
|
82
|
-
* @param $search
|
|
83
|
-
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
|
84
|
-
* @param reportProgress flag to report request and response progress.
|
|
85
|
-
*/
|
|
86
|
-
getShipmentDocuments(id: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'body', reportProgress?: boolean, options?: {
|
|
87
|
-
httpHeaderAccept?: 'application/json';
|
|
88
|
-
context?: HttpContext;
|
|
89
|
-
transferCache?: boolean;
|
|
90
|
-
}): Observable<Documents>;
|
|
91
|
-
getShipmentDocuments(id: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'response', reportProgress?: boolean, options?: {
|
|
92
|
-
httpHeaderAccept?: 'application/json';
|
|
93
|
-
context?: HttpContext;
|
|
94
|
-
transferCache?: boolean;
|
|
95
|
-
}): Observable<HttpResponse<Documents>>;
|
|
96
|
-
getShipmentDocuments(id: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'events', reportProgress?: boolean, options?: {
|
|
97
|
-
httpHeaderAccept?: 'application/json';
|
|
98
|
-
context?: HttpContext;
|
|
99
|
-
transferCache?: boolean;
|
|
100
|
-
}): Observable<HttpEvent<Documents>>;
|
|
101
24
|
/**
|
|
102
25
|
* Shipment items list
|
|
103
26
|
* @param id
|
|
@@ -120,7 +43,7 @@ export declare class ShipmentsService {
|
|
|
120
43
|
transferCache?: boolean;
|
|
121
44
|
}): Observable<HttpEvent<ShipmentItems>>;
|
|
122
45
|
/**
|
|
123
|
-
* Getting a shipment
|
|
46
|
+
* Getting a shipment products
|
|
124
47
|
* @param id
|
|
125
48
|
* @param $skip
|
|
126
49
|
* @param $top
|
|
@@ -130,68 +53,42 @@ export declare class ShipmentsService {
|
|
|
130
53
|
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
|
131
54
|
* @param reportProgress flag to report request and response progress.
|
|
132
55
|
*/
|
|
133
|
-
|
|
134
|
-
httpHeaderAccept?: 'application/json';
|
|
135
|
-
context?: HttpContext;
|
|
136
|
-
transferCache?: boolean;
|
|
137
|
-
}): Observable<AuditLogs>;
|
|
138
|
-
getShipmentLogs(id: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'response', reportProgress?: boolean, options?: {
|
|
139
|
-
httpHeaderAccept?: 'application/json';
|
|
140
|
-
context?: HttpContext;
|
|
141
|
-
transferCache?: boolean;
|
|
142
|
-
}): Observable<HttpResponse<AuditLogs>>;
|
|
143
|
-
getShipmentLogs(id: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'events', reportProgress?: boolean, options?: {
|
|
144
|
-
httpHeaderAccept?: 'application/json';
|
|
145
|
-
context?: HttpContext;
|
|
146
|
-
transferCache?: boolean;
|
|
147
|
-
}): Observable<HttpEvent<AuditLogs>>;
|
|
148
|
-
/**
|
|
149
|
-
* Getting a shipment notes
|
|
150
|
-
* @param id
|
|
151
|
-
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
|
152
|
-
* @param reportProgress flag to report request and response progress.
|
|
153
|
-
*/
|
|
154
|
-
getShipmentNotes(id: string, observe?: 'body', reportProgress?: boolean, options?: {
|
|
56
|
+
getShipmentProducts(id: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'body', reportProgress?: boolean, options?: {
|
|
155
57
|
httpHeaderAccept?: 'application/json';
|
|
156
58
|
context?: HttpContext;
|
|
157
59
|
transferCache?: boolean;
|
|
158
|
-
}): Observable<
|
|
159
|
-
|
|
60
|
+
}): Observable<ShipmentProducts>;
|
|
61
|
+
getShipmentProducts(id: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'response', reportProgress?: boolean, options?: {
|
|
160
62
|
httpHeaderAccept?: 'application/json';
|
|
161
63
|
context?: HttpContext;
|
|
162
64
|
transferCache?: boolean;
|
|
163
|
-
}): Observable<HttpResponse<
|
|
164
|
-
|
|
65
|
+
}): Observable<HttpResponse<ShipmentProducts>>;
|
|
66
|
+
getShipmentProducts(id: string, $skip?: number, $top?: number, $orderby?: string, $filter?: string, $search?: string, observe?: 'events', reportProgress?: boolean, options?: {
|
|
165
67
|
httpHeaderAccept?: 'application/json';
|
|
166
68
|
context?: HttpContext;
|
|
167
69
|
transferCache?: boolean;
|
|
168
|
-
}): Observable<HttpEvent<
|
|
70
|
+
}): Observable<HttpEvent<ShipmentProducts>>;
|
|
169
71
|
/**
|
|
170
|
-
* Getting a shipment
|
|
171
|
-
* @param
|
|
172
|
-
* @param $skip
|
|
173
|
-
* @param $top
|
|
174
|
-
* @param $orderby
|
|
175
|
-
* @param $filter
|
|
176
|
-
* @param $search
|
|
72
|
+
* Getting a shipment routing by shipmentId
|
|
73
|
+
* @param shipmentId
|
|
177
74
|
* @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.
|
|
178
75
|
* @param reportProgress flag to report request and response progress.
|
|
179
76
|
*/
|
|
180
|
-
|
|
77
|
+
getShipmentRouting(shipmentId: string, observe?: 'body', reportProgress?: boolean, options?: {
|
|
181
78
|
httpHeaderAccept?: 'application/json';
|
|
182
79
|
context?: HttpContext;
|
|
183
80
|
transferCache?: boolean;
|
|
184
|
-
}): Observable<
|
|
185
|
-
|
|
81
|
+
}): Observable<Array<ShipmentRouting>>;
|
|
82
|
+
getShipmentRouting(shipmentId: string, observe?: 'response', reportProgress?: boolean, options?: {
|
|
186
83
|
httpHeaderAccept?: 'application/json';
|
|
187
84
|
context?: HttpContext;
|
|
188
85
|
transferCache?: boolean;
|
|
189
|
-
}): Observable<HttpResponse<
|
|
190
|
-
|
|
86
|
+
}): Observable<HttpResponse<Array<ShipmentRouting>>>;
|
|
87
|
+
getShipmentRouting(shipmentId: string, observe?: 'events', reportProgress?: boolean, options?: {
|
|
191
88
|
httpHeaderAccept?: 'application/json';
|
|
192
89
|
context?: HttpContext;
|
|
193
90
|
transferCache?: boolean;
|
|
194
|
-
}): Observable<HttpEvent<
|
|
91
|
+
}): Observable<HttpEvent<Array<ShipmentRouting>>>;
|
|
195
92
|
/**
|
|
196
93
|
* Getting a shipment summary by id
|
|
197
94
|
* @param id
|
package/esm2022/api/api.mjs
CHANGED
|
@@ -1,9 +1,15 @@
|
|
|
1
|
+
export * from './auditLogs.service';
|
|
2
|
+
import { AuditLogsService } from './auditLogs.service';
|
|
1
3
|
export * from './bookings.service';
|
|
2
4
|
import { BookingsService } from './bookings.service';
|
|
3
5
|
export * from './containers.service';
|
|
4
6
|
import { ContainersService } from './containers.service';
|
|
7
|
+
export * from './documents.service';
|
|
8
|
+
import { DocumentsService } from './documents.service';
|
|
5
9
|
export * from './health.service';
|
|
6
10
|
import { HealthService } from './health.service';
|
|
11
|
+
export * from './notes.service';
|
|
12
|
+
import { NotesService } from './notes.service';
|
|
7
13
|
export * from './permissions.service';
|
|
8
14
|
import { PermissionsService } from './permissions.service';
|
|
9
15
|
export * from './reports.service';
|
|
@@ -12,5 +18,5 @@ export * from './shipments.service';
|
|
|
12
18
|
import { ShipmentsService } from './shipments.service';
|
|
13
19
|
export * from './user.service';
|
|
14
20
|
import { UserService } from './user.service';
|
|
15
|
-
export const APIS = [BookingsService, ContainersService, HealthService, PermissionsService, ReportsService, ShipmentsService, UserService];
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
export const APIS = [AuditLogsService, BookingsService, ContainersService, DocumentsService, HealthService, NotesService, PermissionsService, ReportsService, ShipmentsService, UserService];
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vYXBpL2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHFCQUFxQixDQUFDO0FBQ3BDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ3JELGNBQWMsc0JBQXNCLENBQUM7QUFDckMsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDekQsY0FBYyxxQkFBcUIsQ0FBQztBQUNwQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxjQUFjLHVCQUF1QixDQUFDO0FBQ3RDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQzNELGNBQWMsbUJBQW1CLENBQUM7QUFDbEMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ25ELGNBQWMscUJBQXFCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdkQsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxFQUFFLGlCQUFpQixFQUFFLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLFdBQVcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9hdWRpdExvZ3Muc2VydmljZSc7XG5pbXBvcnQgeyBBdWRpdExvZ3NTZXJ2aWNlIH0gZnJvbSAnLi9hdWRpdExvZ3Muc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2Jvb2tpbmdzLnNlcnZpY2UnO1xuaW1wb3J0IHsgQm9va2luZ3NTZXJ2aWNlIH0gZnJvbSAnLi9ib29raW5ncy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vY29udGFpbmVycy5zZXJ2aWNlJztcbmltcG9ydCB7IENvbnRhaW5lcnNTZXJ2aWNlIH0gZnJvbSAnLi9jb250YWluZXJzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9kb2N1bWVudHMuc2VydmljZSc7XG5pbXBvcnQgeyBEb2N1bWVudHNTZXJ2aWNlIH0gZnJvbSAnLi9kb2N1bWVudHMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL2hlYWx0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEhlYWx0aFNlcnZpY2UgfSBmcm9tICcuL2hlYWx0aC5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vbm90ZXMuc2VydmljZSc7XG5pbXBvcnQgeyBOb3Rlc1NlcnZpY2UgfSBmcm9tICcuL25vdGVzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9wZXJtaXNzaW9ucy5zZXJ2aWNlJztcbmltcG9ydCB7IFBlcm1pc3Npb25zU2VydmljZSB9IGZyb20gJy4vcGVybWlzc2lvbnMuc2VydmljZSc7XG5leHBvcnQgKiBmcm9tICcuL3JlcG9ydHMuc2VydmljZSc7XG5pbXBvcnQgeyBSZXBvcnRzU2VydmljZSB9IGZyb20gJy4vcmVwb3J0cy5zZXJ2aWNlJztcbmV4cG9ydCAqIGZyb20gJy4vc2hpcG1lbnRzLnNlcnZpY2UnO1xuaW1wb3J0IHsgU2hpcG1lbnRzU2VydmljZSB9IGZyb20gJy4vc2hpcG1lbnRzLnNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi91c2VyLnNlcnZpY2UnO1xuaW1wb3J0IHsgVXNlclNlcnZpY2UgfSBmcm9tICcuL3VzZXIuc2VydmljZSc7XG5leHBvcnQgY29uc3QgQVBJUyA9IFtBdWRpdExvZ3NTZXJ2aWNlLCBCb29raW5nc1NlcnZpY2UsIENvbnRhaW5lcnNTZXJ2aWNlLCBEb2N1bWVudHNTZXJ2aWNlLCBIZWFsdGhTZXJ2aWNlLCBOb3Rlc1NlcnZpY2UsIFBlcm1pc3Npb25zU2VydmljZSwgUmVwb3J0c1NlcnZpY2UsIFNoaXBtZW50c1NlcnZpY2UsIFVzZXJTZXJ2aWNlXTtcbiJdfQ==
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dcm.API.Client
|
|
3
|
+
* DCM API Client for Angular applications
|
|
4
|
+
*
|
|
5
|
+
*
|
|
6
|
+
*
|
|
7
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
8
|
+
* https://openapi-generator.tech
|
|
9
|
+
* Do not edit the class manually.
|
|
10
|
+
*/
|
|
11
|
+
/* tslint:disable:no-unused-variable member-ordering */
|
|
12
|
+
import { Inject, Injectable, Optional } from '@angular/core';
|
|
13
|
+
import { HttpHeaders, HttpParams, HttpContext } from '@angular/common/http';
|
|
14
|
+
import { CustomHttpParameterCodec } from '../encoder';
|
|
15
|
+
// @ts-ignore
|
|
16
|
+
import { BASE_PATH } from '../variables';
|
|
17
|
+
import { Configuration } from '../configuration';
|
|
18
|
+
import * as i0 from "@angular/core";
|
|
19
|
+
import * as i1 from "@angular/common/http";
|
|
20
|
+
import * as i2 from "../configuration";
|
|
21
|
+
export class AuditLogsService {
|
|
22
|
+
httpClient;
|
|
23
|
+
basePath = 'http://localhost';
|
|
24
|
+
defaultHeaders = new HttpHeaders();
|
|
25
|
+
configuration = new Configuration();
|
|
26
|
+
encoder;
|
|
27
|
+
constructor(httpClient, basePath, configuration) {
|
|
28
|
+
this.httpClient = httpClient;
|
|
29
|
+
if (configuration) {
|
|
30
|
+
this.configuration = configuration;
|
|
31
|
+
}
|
|
32
|
+
if (typeof this.configuration.basePath !== 'string') {
|
|
33
|
+
const firstBasePath = Array.isArray(basePath) ? basePath[0] : undefined;
|
|
34
|
+
if (firstBasePath != undefined) {
|
|
35
|
+
basePath = firstBasePath;
|
|
36
|
+
}
|
|
37
|
+
if (typeof basePath !== 'string') {
|
|
38
|
+
basePath = this.basePath;
|
|
39
|
+
}
|
|
40
|
+
this.configuration.basePath = basePath;
|
|
41
|
+
}
|
|
42
|
+
this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();
|
|
43
|
+
}
|
|
44
|
+
// @ts-ignore
|
|
45
|
+
addToHttpParams(httpParams, value, key) {
|
|
46
|
+
if (typeof value === "object" && value instanceof Date === false) {
|
|
47
|
+
httpParams = this.addToHttpParamsRecursive(httpParams, value);
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
httpParams = this.addToHttpParamsRecursive(httpParams, value, key);
|
|
51
|
+
}
|
|
52
|
+
return httpParams;
|
|
53
|
+
}
|
|
54
|
+
addToHttpParamsRecursive(httpParams, value, key) {
|
|
55
|
+
if (value == null) {
|
|
56
|
+
return httpParams;
|
|
57
|
+
}
|
|
58
|
+
if (typeof value === "object") {
|
|
59
|
+
if (Array.isArray(value)) {
|
|
60
|
+
value.forEach(elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));
|
|
61
|
+
}
|
|
62
|
+
else if (value instanceof Date) {
|
|
63
|
+
if (key != null) {
|
|
64
|
+
httpParams = httpParams.append(key, value.toISOString().substring(0, 10));
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
throw Error("key may not be null if value is Date");
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
Object.keys(value).forEach(k => httpParams = this.addToHttpParamsRecursive(httpParams, value[k], key != null ? `${key}.${k}` : k));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
else if (key != null) {
|
|
75
|
+
httpParams = httpParams.append(key, value);
|
|
76
|
+
}
|
|
77
|
+
else {
|
|
78
|
+
throw Error("key may not be null if value is not object or array");
|
|
79
|
+
}
|
|
80
|
+
return httpParams;
|
|
81
|
+
}
|
|
82
|
+
getShipmentLogs(id, $skip, $top, $orderby, $filter, $search, observe = 'body', reportProgress = false, options) {
|
|
83
|
+
if (id === null || id === undefined) {
|
|
84
|
+
throw new Error('Required parameter id was null or undefined when calling getShipmentLogs.');
|
|
85
|
+
}
|
|
86
|
+
let localVarQueryParameters = new HttpParams({ encoder: this.encoder });
|
|
87
|
+
if ($skip !== undefined && $skip !== null) {
|
|
88
|
+
localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, $skip, '$skip');
|
|
89
|
+
}
|
|
90
|
+
if ($top !== undefined && $top !== null) {
|
|
91
|
+
localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, $top, '$top');
|
|
92
|
+
}
|
|
93
|
+
if ($orderby !== undefined && $orderby !== null) {
|
|
94
|
+
localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, $orderby, '$orderby');
|
|
95
|
+
}
|
|
96
|
+
if ($filter !== undefined && $filter !== null) {
|
|
97
|
+
localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, $filter, '$filter');
|
|
98
|
+
}
|
|
99
|
+
if ($search !== undefined && $search !== null) {
|
|
100
|
+
localVarQueryParameters = this.addToHttpParams(localVarQueryParameters, $search, '$search');
|
|
101
|
+
}
|
|
102
|
+
let localVarHeaders = this.defaultHeaders;
|
|
103
|
+
let localVarHttpHeaderAcceptSelected = options && options.httpHeaderAccept;
|
|
104
|
+
if (localVarHttpHeaderAcceptSelected === undefined) {
|
|
105
|
+
// to determine the Accept header
|
|
106
|
+
const httpHeaderAccepts = [
|
|
107
|
+
'application/json'
|
|
108
|
+
];
|
|
109
|
+
localVarHttpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
|
|
110
|
+
}
|
|
111
|
+
if (localVarHttpHeaderAcceptSelected !== undefined) {
|
|
112
|
+
localVarHeaders = localVarHeaders.set('Accept', localVarHttpHeaderAcceptSelected);
|
|
113
|
+
}
|
|
114
|
+
let localVarHttpContext = options && options.context;
|
|
115
|
+
if (localVarHttpContext === undefined) {
|
|
116
|
+
localVarHttpContext = new HttpContext();
|
|
117
|
+
}
|
|
118
|
+
let localVarTransferCache = options && options.transferCache;
|
|
119
|
+
if (localVarTransferCache === undefined) {
|
|
120
|
+
localVarTransferCache = true;
|
|
121
|
+
}
|
|
122
|
+
let responseType_ = 'json';
|
|
123
|
+
if (localVarHttpHeaderAcceptSelected) {
|
|
124
|
+
if (localVarHttpHeaderAcceptSelected.startsWith('text')) {
|
|
125
|
+
responseType_ = 'text';
|
|
126
|
+
}
|
|
127
|
+
else if (this.configuration.isJsonMime(localVarHttpHeaderAcceptSelected)) {
|
|
128
|
+
responseType_ = 'json';
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
responseType_ = 'blob';
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
let localVarPath = `/auditLogs/${this.configuration.encodeParam({ name: "id", value: id, in: "path", style: "simple", explode: false, dataType: "string", dataFormat: undefined })}`;
|
|
135
|
+
return this.httpClient.request('get', `${this.configuration.basePath}${localVarPath}`, {
|
|
136
|
+
context: localVarHttpContext,
|
|
137
|
+
params: localVarQueryParameters,
|
|
138
|
+
responseType: responseType_,
|
|
139
|
+
withCredentials: this.configuration.withCredentials,
|
|
140
|
+
headers: localVarHeaders,
|
|
141
|
+
observe: observe,
|
|
142
|
+
transferCache: localVarTransferCache,
|
|
143
|
+
reportProgress: reportProgress
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AuditLogsService, deps: [{ token: i1.HttpClient }, { token: BASE_PATH, optional: true }, { token: i2.Configuration, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
147
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AuditLogsService, providedIn: 'root' });
|
|
148
|
+
}
|
|
149
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.6", ngImport: i0, type: AuditLogsService, decorators: [{
|
|
150
|
+
type: Injectable,
|
|
151
|
+
args: [{
|
|
152
|
+
providedIn: 'root'
|
|
153
|
+
}]
|
|
154
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: undefined, decorators: [{
|
|
155
|
+
type: Optional
|
|
156
|
+
}, {
|
|
157
|
+
type: Inject,
|
|
158
|
+
args: [BASE_PATH]
|
|
159
|
+
}] }, { type: i2.Configuration, decorators: [{
|
|
160
|
+
type: Optional
|
|
161
|
+
}] }] });
|
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaXRMb2dzLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcGkvYXVkaXRMb2dzLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7OztHQVNHO0FBQ0gsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUEyQixlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFjLFdBQVcsRUFBRSxVQUFVLEVBQ1UsV0FBVyxFQUN4RCxNQUFZLHNCQUFzQixDQUFDO0FBQzVDLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUErQixZQUFZLENBQUM7QUFNL0UsYUFBYTtBQUNiLE9BQU8sRUFBRSxTQUFTLEVBQXNCLE1BQTBCLGNBQWMsQ0FBQztBQUNqRixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQTBDLGtCQUFrQixDQUFDOzs7O0FBT3JGLE1BQU0sT0FBTyxnQkFBZ0I7SUFPSDtJQUxaLFFBQVEsR0FBRyxrQkFBa0IsQ0FBQztJQUNqQyxjQUFjLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztJQUNuQyxhQUFhLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztJQUNwQyxPQUFPLENBQXFCO0lBRW5DLFlBQXNCLFVBQXNCLEVBQWdDLFFBQXlCLEVBQWMsYUFBNEI7UUFBekgsZUFBVSxHQUFWLFVBQVUsQ0FBWTtRQUN4QyxJQUFJLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ3ZDLENBQUM7UUFDRCxJQUFJLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDbEQsTUFBTSxhQUFhLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDeEUsSUFBSSxhQUFh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QztnQkFDSixhQUFhLEdBQUcsTUFBTSxDQUFDO1lBQzNCLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxZQUFZLEdBQUcsY0FBYyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxFQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUMsQ0FBQyxFQUFFLENBQUM7UUFDbkwsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBWSxLQUFLLEVBQUUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxZQUFZLEVBQUUsRUFDNUY7WUFDSSxPQUFPLEVBQUUsbUJBQW1CO1lBQzVCLE1BQU0sRUFBRSx1QkFBdUI7WUFDL0IsWUFBWSxFQUFPLGFBQWE7WUFDaEMsZUFBZSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZTtZQUNuRCxPQUFPLEVBQUUsZUFBZTtZQUN4QixPQUFPLEVBQUUsT0FBTztZQUNoQixhQUFhLEVBQUUscUJBQXFCO1lBQ3BDLGNBQWMsRUFBRSxjQUFjO1NBQ2pDLENBQ0osQ0FBQztJQUNOLENBQUM7dUdBeEpRLGdCQUFnQiw0Q0FPd0MsU0FBUzsyR0FQakUsZ0JBQWdCLGNBRmYsTUFBTTs7MkZBRVAsZ0JBQWdCO2tCQUg1QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQjs7MEJBUWtELFFBQVE7OzBCQUFHLE1BQU07MkJBQUMsU0FBUzs7MEJBQThCLFFBQVEiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIERjbS5BUEkuQ2xpZW50XG4gKiBEQ00gQVBJIENsaWVudCBmb3IgQW5ndWxhciBhcHBsaWNhdGlvbnNcbiAqXG4gKiBcbiAqXG4gKiBOT1RFOiBUaGlzIGNsYXNzIGlzIGF1dG8gZ2VuZXJhdGVkIGJ5IE9wZW5BUEkgR2VuZXJhdG9yIChodHRwczovL29wZW5hcGktZ2VuZXJhdG9yLnRlY2gpLlxuICogaHR0cHM6Ly9vcGVuYXBpLWdlbmVyYXRvci50ZWNoXG4gKiBEbyBub3QgZWRpdCB0aGUgY2xhc3MgbWFudWFsbHkuXG4gKi9cbi8qIHRzbGludDpkaXNhYmxlOm5vLXVudXNlZC12YXJpYWJsZSBtZW1iZXItb3JkZXJpbmcgKi9cblxuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlLCBPcHRpb25hbCB9ICAgICAgICAgICAgICAgICAgICAgIGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMsXG4gICAgICAgICBIdHRwUmVzcG9uc2UsIEh0dHBFdmVudCwgSHR0cFBhcmFtZXRlckNvZGVjLCBIdHRwQ29udGV4dCBcbiAgICAgICAgfSAgICAgICBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBDdXN0b21IdHRwUGFyYW1ldGVyQ29kZWMgfSAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAnLi4vZW5jb2Rlcic7XG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSAncnhqcyc7XG5cbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IEF1ZGl0TG9ncyB9IGZyb20gJy4uL21vZGVsL2F1ZGl0TG9ncyc7XG5cbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IEJBU0VfUEFUSCwgQ09MTEVDVElPTl9GT1JNQVRTIH0gICAgICAgICAgICAgICAgICAgICBmcm9tICcuLi92YXJpYWJsZXMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvbiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20gJy4uL2NvbmZpZ3VyYXRpb24nO1xuXG5cblxuQEluamVjdGFibGUoe1xuICBwcm92aWRlZEluOiAncm9vdCdcbn0pXG5leHBvcnQgY2xhc3MgQXVkaXRMb2dzU2VydmljZSB7XG5cbiAgICBwcm90ZWN0ZWQgYmFzZVBhdGggPSAnaHR0cDovL2xvY2FsaG9zdCc7XG4gICAgcHVibGljIGRlZmF1bHRIZWFkZXJzID0gbmV3IEh0dHBIZWFkZXJzKCk7XG4gICAgcHVibGljIGNvbmZpZ3VyYXRpb24gPSBuZXcgQ29uZmlndXJhdGlvbigpO1xuICAgIHB1YmxpYyBlbmNvZGVyOiBIdHRwUGFyYW1ldGVyQ29kZWM7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgaHR0cENsaWVudDogSHR0cENsaWVudCwgQE9wdGlvbmFsKClASW5qZWN0KEJBU0VfUEFUSCkgYmFzZVBhdGg6IHN0cmluZ3xzdHJpbmdbXSwgQE9wdGlvbmFsKCkgY29uZmlndXJhdGlvbjogQ29uZmlndXJhdGlvbikge1xuICAgICAgICBpZiAoY29uZmlndXJhdGlvbikge1xuICAgICAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29uZmlndXJhdGlvbi5iYXNlUGF0aCAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnN0IGZpcnN0QmFzZVBhdGggPSBBcnJheS5pc0FycmF5KGJhc2VQYXRoKSA/IGJhc2VQYXRoWzBdIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKGZpcnN0QmFzZVBhdGggIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgYmFzZVBhdGggPSBmaXJzdEJhc2VQYXRoO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodHlwZW9mIGJhc2VQYXRoICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgIGJhc2VQYXRoID0gdGhpcy5iYXNlUGF0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY29uZmlndXJhdGlvbi5iYXNlUGF0aCA9IGJhc2VQYXRoO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZW5jb2RlciA9IHRoaXMuY29uZmlndXJhdGlvbi5lbmNvZGVyIHx8IG5ldyBDdXN0b21IdHRwUGFyYW1ldGVyQ29kZWMoKTtcbiAgICB9XG5cblxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBwcml2YXRlIGFkZFRvSHR0cFBhcmFtcyhodHRwUGFyYW1zOiBIdHRwUGFyYW1zLCB2YWx1ZTogYW55LCBrZXk/OiBzdHJpbmcpOiBIdHRwUGFyYW1zIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIiAmJiB2YWx1ZSBpbnN0YW5jZW9mIERhdGUgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICBodHRwUGFyYW1zID0gdGhpcy5hZGRUb0h0dHBQYXJhbXNSZWN1cnNpdmUoaHR0cFBhcmFtcywgdmFsdWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaHR0cFBhcmFtcyA9IHRoaXMuYWRkVG9IdHRwUGFyYW1zUmVjdXJzaXZlKGh0dHBQYXJhbXMsIHZhbHVlLCBrZXkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBodHRwUGFyYW1zO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkVG9IdHRwUGFyYW1zUmVjdXJzaXZlKGh0dHBQYXJhbXM6IEh0dHBQYXJhbXMsIHZhbHVlPzogYW55LCBrZXk/OiBzdHJpbmcpOiBIdHRwUGFyYW1zIHtcbiAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBodHRwUGFyYW1zO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgKHZhbHVlIGFzIGFueVtdKS5mb3JFYWNoKCBlbGVtID0+IGh0dHBQYXJhbXMgPSB0aGlzLmFkZFRvSHR0cFBhcmFtc1JlY3Vyc2l2ZShodHRwUGFyYW1zLCBlbGVtLCBrZXkpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICAgICAgaWYgKGtleSAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLmFwcGVuZChrZXksICh2YWx1ZSBhcyBEYXRlKS50b0lTT1N0cmluZygpLnN1YnN0cmluZygwLCAxMCkpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoXCJrZXkgbWF5IG5vdCBiZSBudWxsIGlmIHZhbHVlIGlzIERhdGVcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBPYmplY3Qua2V5cyh2YWx1ZSkuZm9yRWFjaCggayA9PiBodHRwUGFyYW1zID0gdGhpcy5hZGRUb0h0dHBQYXJhbXNSZWN1cnNpdmUoXG4gICAgICAgICAgICAgICAgICAgIGh0dHBQYXJhbXMsIHZhbHVlW2tdLCBrZXkgIT0gbnVsbCA/IGAke2tleX0uJHtrfWAgOiBrKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGh0dHBQYXJhbXMgPSBodHRwUGFyYW1zLmFwcGVuZChrZXksIHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IEVycm9yKFwia2V5IG1heSBub3QgYmUgbnVsbCBpZiB2YWx1ZSBpcyBub3Qgb2JqZWN0IG9yIGFycmF5XCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBodHRwUGFyYW1zO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHRpbmcgYSBzaGlwbWVudCBsb2dzXG4gICAgICogQHBhcmFtIGlkIFxuICAgICAqIEBwYXJhbSAkc2tpcCBcbiAgICAgKiBAcGFyYW0gJHRvcCBcbiAgICAgKiBAcGFyYW0gJG9yZGVyYnkgXG4gICAgICogQHBhcmFtICRmaWx0ZXIgXG4gICAgICogQHBhcmFtICRzZWFyY2ggXG4gICAgICogQHBhcmFtIG9ic2VydmUgc2V0IHdoZXRoZXIgb3Igbm90IHRvIHJldHVybiB0aGUgZGF0YSBPYnNlcnZhYmxlIGFzIHRoZSBib2R5LCByZXNwb25zZSBvciBldmVudHMuIGRlZmF1bHRzIHRvIHJldHVybmluZyB0aGUgYm9keS5cbiAgICAgKiBAcGFyYW0gcmVwb3J0UHJvZ3Jlc3MgZmxhZyB0byByZXBvcnQgcmVxdWVzdCBhbmQgcmVzcG9uc2UgcHJvZ3Jlc3MuXG4gICAgICovXG4gICAgcHVibGljIGdldFNoaXBtZW50TG9ncyhpZDogc3RyaW5nLCAkc2tpcD86IG51bWJlciwgJHRvcD86IG51bWJlciwgJG9yZGVyYnk/OiBzdHJpbmcsICRmaWx0ZXI/OiBzdHJpbmcsICRzZWFyY2g/OiBzdHJpbmcsIG9ic2VydmU/OiAnYm9keScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHQsIHRyYW5zZmVyQ2FjaGU/OiBib29sZWFufSk6IE9ic2VydmFibGU8QXVkaXRMb2dzPjtcbiAgICBwdWJsaWMgZ2V0U2hpcG1lbnRMb2dzKGlkOiBzdHJpbmcsICRza2lwPzogbnVtYmVyLCAkdG9wPzogbnVtYmVyLCAkb3JkZXJieT86IHN0cmluZywgJGZpbHRlcj86IHN0cmluZywgJHNlYXJjaD86IHN0cmluZywgb2JzZXJ2ZT86ICdyZXNwb25zZScsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHQsIHRyYW5zZmVyQ2FjaGU/OiBib29sZWFufSk6IE9ic2VydmFibGU8SHR0cFJlc3BvbnNlPEF1ZGl0TG9ncz4+O1xuICAgIHB1YmxpYyBnZXRTaGlwbWVudExvZ3MoaWQ6IHN0cmluZywgJHNraXA/OiBudW1iZXIsICR0b3A/OiBudW1iZXIsICRvcmRlcmJ5Pzogc3RyaW5nLCAkZmlsdGVyPzogc3RyaW5nLCAkc2VhcmNoPzogc3RyaW5nLCBvYnNlcnZlPzogJ2V2ZW50cycsIHJlcG9ydFByb2dyZXNzPzogYm9vbGVhbiwgb3B0aW9ucz86IHtodHRwSGVhZGVyQWNjZXB0PzogJ2FwcGxpY2F0aW9uL2pzb24nLCBjb250ZXh0PzogSHR0cENvbnRleHQsIHRyYW5zZmVyQ2FjaGU/OiBib29sZWFufSk6IE9ic2VydmFibGU8SHR0cEV2ZW50PEF1ZGl0TG9ncz4+O1xuICAgIHB1YmxpYyBnZXRTaGlwbWVudExvZ3MoaWQ6IHN0cmluZywgJHNraXA/OiBudW1iZXIsICR0b3A/OiBudW1iZXIsICRvcmRlcmJ5Pzogc3RyaW5nLCAkZmlsdGVyPzogc3RyaW5nLCAkc2VhcmNoPzogc3RyaW5nLCBvYnNlcnZlOiBhbnkgPSAnYm9keScsIHJlcG9ydFByb2dyZXNzOiBib29sZWFuID0gZmFsc2UsIG9wdGlvbnM/OiB7aHR0cEhlYWRlckFjY2VwdD86ICdhcHBsaWNhdGlvbi9qc29uJywgY29udGV4dD86IEh0dHBDb250ZXh0LCB0cmFuc2ZlckNhY2hlPzogYm9vbGVhbn0pOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgICAgICBpZiAoaWQgPT09IG51bGwgfHwgaWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZXF1aXJlZCBwYXJhbWV0ZXIgaWQgd2FzIG51bGwgb3IgdW5kZWZpbmVkIHdoZW4gY2FsbGluZyBnZXRTaGlwbWVudExvZ3MuJyk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYWxWYXJRdWVyeVBhcmFtZXRlcnMgPSBuZXcgSHR0cFBhcmFtcyh7ZW5jb2RlcjogdGhpcy5lbmNvZGVyfSk7XG4gICAgICAgIGlmICgkc2tpcCAhPT0gdW5kZWZpbmVkICYmICRza2lwICE9PSBudWxsKSB7XG4gICAgICAgICAgbG9jYWxWYXJRdWVyeVBhcmFtZXRlcnMgPSB0aGlzLmFkZFRvSHR0cFBhcmFtcyhsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyxcbiAgICAgICAgICAgIDxhbnk+JHNraXAsICckc2tpcCcpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgkdG9wICE9PSB1bmRlZmluZWQgJiYgJHRvcCAhPT0gbnVsbCkge1xuICAgICAgICAgIGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzID0gdGhpcy5hZGRUb0h0dHBQYXJhbXMobG9jYWxWYXJRdWVyeVBhcmFtZXRlcnMsXG4gICAgICAgICAgICA8YW55PiR0b3AsICckdG9wJyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCRvcmRlcmJ5ICE9PSB1bmRlZmluZWQgJiYgJG9yZGVyYnkgIT09IG51bGwpIHtcbiAgICAgICAgICBsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyA9IHRoaXMuYWRkVG9IdHRwUGFyYW1zKGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgICAgICAgPGFueT4kb3JkZXJieSwgJyRvcmRlcmJ5Jyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCRmaWx0ZXIgIT09IHVuZGVmaW5lZCAmJiAkZmlsdGVyICE9PSBudWxsKSB7XG4gICAgICAgICAgbG9jYWxWYXJRdWVyeVBhcmFtZXRlcnMgPSB0aGlzLmFkZFRvSHR0cFBhcmFtcyhsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyxcbiAgICAgICAgICAgIDxhbnk+JGZpbHRlciwgJyRmaWx0ZXInKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoJHNlYXJjaCAhPT0gdW5kZWZpbmVkICYmICRzZWFyY2ggIT09IG51bGwpIHtcbiAgICAgICAgICBsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyA9IHRoaXMuYWRkVG9IdHRwUGFyYW1zKGxvY2FsVmFyUXVlcnlQYXJhbWV0ZXJzLFxuICAgICAgICAgICAgPGFueT4kc2VhcmNoLCAnJHNlYXJjaCcpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxvY2FsVmFySGVhZGVycyA9IHRoaXMuZGVmYXVsdEhlYWRlcnM7XG5cbiAgICAgICAgbGV0IGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkOiBzdHJpbmcgfCB1bmRlZmluZWQgPSBvcHRpb25zICYmIG9wdGlvbnMuaHR0cEhlYWRlckFjY2VwdDtcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIC8vIHRvIGRldGVybWluZSB0aGUgQWNjZXB0IGhlYWRlclxuICAgICAgICAgICAgY29uc3QgaHR0cEhlYWRlckFjY2VwdHM6IHN0cmluZ1tdID0gW1xuICAgICAgICAgICAgICAgICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICAgICAgXTtcbiAgICAgICAgICAgIGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkID0gdGhpcy5jb25maWd1cmF0aW9uLnNlbGVjdEhlYWRlckFjY2VwdChodHRwSGVhZGVyQWNjZXB0cyk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGxvY2FsVmFySGVhZGVycyA9IGxvY2FsVmFySGVhZGVycy5zZXQoJ0FjY2VwdCcsIGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhckh0dHBDb250ZXh0OiBIdHRwQ29udGV4dCB8IHVuZGVmaW5lZCA9IG9wdGlvbnMgJiYgb3B0aW9ucy5jb250ZXh0O1xuICAgICAgICBpZiAobG9jYWxWYXJIdHRwQ29udGV4dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBsb2NhbFZhckh0dHBDb250ZXh0ID0gbmV3IEh0dHBDb250ZXh0KCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbG9jYWxWYXJUcmFuc2ZlckNhY2hlOiBib29sZWFuIHwgdW5kZWZpbmVkID0gb3B0aW9ucyAmJiBvcHRpb25zLnRyYW5zZmVyQ2FjaGU7XG4gICAgICAgIGlmIChsb2NhbFZhclRyYW5zZmVyQ2FjaGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgbG9jYWxWYXJUcmFuc2ZlckNhY2hlID0gdHJ1ZTtcbiAgICAgICAgfVxuXG5cbiAgICAgICAgbGV0IHJlc3BvbnNlVHlwZV86ICd0ZXh0JyB8ICdqc29uJyB8ICdibG9iJyA9ICdqc29uJztcbiAgICAgICAgaWYgKGxvY2FsVmFySHR0cEhlYWRlckFjY2VwdFNlbGVjdGVkKSB7XG4gICAgICAgICAgICBpZiAobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQuc3RhcnRzV2l0aCgndGV4dCcpKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICd0ZXh0JztcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWd1cmF0aW9uLmlzSnNvbk1pbWUobG9jYWxWYXJIdHRwSGVhZGVyQWNjZXB0U2VsZWN0ZWQpKSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICdqc29uJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmVzcG9uc2VUeXBlXyA9ICdibG9iJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsb2NhbFZhclBhdGggPSBgL2F1ZGl0TG9ncy8ke3RoaXMuY29uZmlndXJhdGlvbi5lbmNvZGVQYXJhbSh7bmFtZTogXCJpZFwiLCB2YWx1ZTogaWQsIGluOiBcInBhdGhcIiwgc3R5bGU6IFwic2ltcGxlXCIsIGV4cGxvZGU6IGZhbHNlLCBkYXRhVHlwZTogXCJzdHJpbmdcIiwgZGF0YUZvcm1hdDogdW5kZWZpbmVkfSl9YDtcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cENsaWVudC5yZXF1ZXN0PEF1ZGl0TG9ncz4oJ2dldCcsIGAke3RoaXMuY29uZmlndXJhdGlvbi5iYXNlUGF0aH0ke2xvY2FsVmFyUGF0aH1gLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGNvbnRleHQ6IGxvY2FsVmFySHR0cENvbnRleHQsXG4gICAgICAgICAgICAgICAgcGFyYW1zOiBsb2NhbFZhclF1ZXJ5UGFyYW1ldGVycyxcbiAgICAgICAgICAgICAgICByZXNwb25zZVR5cGU6IDxhbnk+cmVzcG9uc2VUeXBlXyxcbiAgICAgICAgICAgICAgICB3aXRoQ3JlZGVudGlhbHM6IHRoaXMuY29uZmlndXJhdGlvbi53aXRoQ3JlZGVudGlhbHMsXG4gICAgICAgICAgICAgICAgaGVhZGVyczogbG9jYWxWYXJIZWFkZXJzLFxuICAgICAgICAgICAgICAgIG9ic2VydmU6IG9ic2VydmUsXG4gICAgICAgICAgICAgICAgdHJhbnNmZXJDYWNoZTogbG9jYWxWYXJUcmFuc2ZlckNhY2hlLFxuICAgICAgICAgICAgICAgIHJlcG9ydFByb2dyZXNzOiByZXBvcnRQcm9ncmVzc1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xuICAgIH1cblxufVxuIl19
|