@vendasta/billing 12.9.0 → 12.10.0
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/esm2020/lib/_internal/enums/index.mjs +2 -1
- package/esm2020/lib/_internal/enums/subscription-relationship.enum.mjs +17 -0
- package/esm2020/lib/_internal/index.mjs +2 -1
- package/esm2020/lib/_internal/interfaces/billable-item.interface.mjs +1 -1
- package/esm2020/lib/_internal/interfaces/index.mjs +1 -1
- package/esm2020/lib/_internal/interfaces/subscription-relationship.interface.mjs +2 -0
- package/esm2020/lib/_internal/objects/billable-item.mjs +4 -1
- package/esm2020/lib/_internal/objects/index.mjs +2 -1
- package/esm2020/lib/_internal/objects/subscription-relationship.mjs +271 -0
- package/esm2020/lib/_internal/subscription-relationship.api.service.mjs +51 -0
- package/fesm2015/vendasta-billing.mjs +486 -159
- package/fesm2015/vendasta-billing.mjs.map +1 -1
- package/fesm2020/vendasta-billing.mjs +486 -159
- package/fesm2020/vendasta-billing.mjs.map +1 -1
- package/lib/_internal/enums/index.d.ts +1 -0
- package/lib/_internal/enums/subscription-relationship.enum.d.ts +8 -0
- package/lib/_internal/index.d.ts +1 -0
- package/lib/_internal/interfaces/billable-item.interface.d.ts +1 -0
- package/lib/_internal/interfaces/index.d.ts +1 -0
- package/lib/_internal/interfaces/subscription-relationship.interface.d.ts +45 -0
- package/lib/_internal/objects/billable-item.d.ts +1 -0
- package/lib/_internal/objects/index.d.ts +1 -0
- package/lib/_internal/objects/subscription-relationship.d.ts +71 -0
- package/lib/_internal/subscription-relationship.api.service.d.ts +18 -0
- package/package.json +1 -1
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
import { PagedRequestOptions, PagedResponseMetadata } from './common';
|
|
2
|
+
import * as e from '../enums';
|
|
3
|
+
export function enumStringToValue(enumRef, value) {
|
|
4
|
+
if (typeof value === 'number') {
|
|
5
|
+
return value;
|
|
6
|
+
}
|
|
7
|
+
return enumRef[value];
|
|
8
|
+
}
|
|
9
|
+
export class ListSubscriptionRelationshipsRequestFilters {
|
|
10
|
+
static fromProto(proto) {
|
|
11
|
+
let m = new ListSubscriptionRelationshipsRequestFilters();
|
|
12
|
+
m = Object.assign(m, proto);
|
|
13
|
+
if (proto.originType) {
|
|
14
|
+
m.originType = enumStringToValue(e.EntityType, proto.originType);
|
|
15
|
+
}
|
|
16
|
+
if (proto.targetType) {
|
|
17
|
+
m.targetType = enumStringToValue(e.EntityType, proto.targetType);
|
|
18
|
+
}
|
|
19
|
+
if (proto.relationshipType) {
|
|
20
|
+
m.relationshipType = enumStringToValue(e.RelationshipType, proto.relationshipType);
|
|
21
|
+
}
|
|
22
|
+
return m;
|
|
23
|
+
}
|
|
24
|
+
constructor(kwargs) {
|
|
25
|
+
if (!kwargs) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
Object.assign(this, kwargs);
|
|
29
|
+
}
|
|
30
|
+
toApiJson() {
|
|
31
|
+
const toReturn = {};
|
|
32
|
+
if (typeof this.merchantId !== 'undefined') {
|
|
33
|
+
toReturn['merchantId'] = this.merchantId;
|
|
34
|
+
}
|
|
35
|
+
if (typeof this.customerId !== 'undefined') {
|
|
36
|
+
toReturn['customerId'] = this.customerId;
|
|
37
|
+
}
|
|
38
|
+
if (typeof this.originId !== 'undefined') {
|
|
39
|
+
toReturn['originId'] = this.originId;
|
|
40
|
+
}
|
|
41
|
+
if (typeof this.originType !== 'undefined') {
|
|
42
|
+
toReturn['originType'] = this.originType;
|
|
43
|
+
}
|
|
44
|
+
if (typeof this.targetId !== 'undefined') {
|
|
45
|
+
toReturn['targetId'] = this.targetId;
|
|
46
|
+
}
|
|
47
|
+
if (typeof this.targetType !== 'undefined') {
|
|
48
|
+
toReturn['targetType'] = this.targetType;
|
|
49
|
+
}
|
|
50
|
+
if (typeof this.relationshipType !== 'undefined') {
|
|
51
|
+
toReturn['relationshipType'] = this.relationshipType;
|
|
52
|
+
}
|
|
53
|
+
return toReturn;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export class GetMultiSubscriptionRelationshipsRequest {
|
|
57
|
+
static fromProto(proto) {
|
|
58
|
+
let m = new GetMultiSubscriptionRelationshipsRequest();
|
|
59
|
+
m = Object.assign(m, proto);
|
|
60
|
+
return m;
|
|
61
|
+
}
|
|
62
|
+
constructor(kwargs) {
|
|
63
|
+
if (!kwargs) {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
Object.assign(this, kwargs);
|
|
67
|
+
}
|
|
68
|
+
toApiJson() {
|
|
69
|
+
const toReturn = {};
|
|
70
|
+
if (typeof this.subscriptionRelationshipIds !== 'undefined') {
|
|
71
|
+
toReturn['subscriptionRelationshipIds'] = this.subscriptionRelationshipIds;
|
|
72
|
+
}
|
|
73
|
+
return toReturn;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
export class GetMultiSubscriptionRelationshipsResponse {
|
|
77
|
+
static fromProto(proto) {
|
|
78
|
+
let m = new GetMultiSubscriptionRelationshipsResponse();
|
|
79
|
+
m = Object.assign(m, proto);
|
|
80
|
+
if (proto.subscriptionRelationships) {
|
|
81
|
+
m.subscriptionRelationships = proto.subscriptionRelationships.map(SubscriptionRelationship.fromProto);
|
|
82
|
+
}
|
|
83
|
+
return m;
|
|
84
|
+
}
|
|
85
|
+
constructor(kwargs) {
|
|
86
|
+
if (!kwargs) {
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
Object.assign(this, kwargs);
|
|
90
|
+
}
|
|
91
|
+
toApiJson() {
|
|
92
|
+
const toReturn = {};
|
|
93
|
+
if (typeof this.subscriptionRelationships !== 'undefined' && this.subscriptionRelationships !== null) {
|
|
94
|
+
toReturn['subscriptionRelationships'] = 'toApiJson' in this.subscriptionRelationships ? this.subscriptionRelationships.toApiJson() : this.subscriptionRelationships;
|
|
95
|
+
}
|
|
96
|
+
return toReturn;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
export class ListSubscriptionRelationshipsRequest {
|
|
100
|
+
static fromProto(proto) {
|
|
101
|
+
let m = new ListSubscriptionRelationshipsRequest();
|
|
102
|
+
m = Object.assign(m, proto);
|
|
103
|
+
if (proto.filters) {
|
|
104
|
+
m.filters = ListSubscriptionRelationshipsRequestFilters.fromProto(proto.filters);
|
|
105
|
+
}
|
|
106
|
+
if (proto.pagingOptions) {
|
|
107
|
+
m.pagingOptions = PagedRequestOptions.fromProto(proto.pagingOptions);
|
|
108
|
+
}
|
|
109
|
+
return m;
|
|
110
|
+
}
|
|
111
|
+
constructor(kwargs) {
|
|
112
|
+
if (!kwargs) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
Object.assign(this, kwargs);
|
|
116
|
+
}
|
|
117
|
+
toApiJson() {
|
|
118
|
+
const toReturn = {};
|
|
119
|
+
if (typeof this.filters !== 'undefined' && this.filters !== null) {
|
|
120
|
+
toReturn['filters'] = 'toApiJson' in this.filters ? this.filters.toApiJson() : this.filters;
|
|
121
|
+
}
|
|
122
|
+
if (typeof this.pagingOptions !== 'undefined' && this.pagingOptions !== null) {
|
|
123
|
+
toReturn['pagingOptions'] = 'toApiJson' in this.pagingOptions ? this.pagingOptions.toApiJson() : this.pagingOptions;
|
|
124
|
+
}
|
|
125
|
+
return toReturn;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
export class ListSubscriptionRelationshipsResponse {
|
|
129
|
+
static fromProto(proto) {
|
|
130
|
+
let m = new ListSubscriptionRelationshipsResponse();
|
|
131
|
+
m = Object.assign(m, proto);
|
|
132
|
+
if (proto.subscriptionRelationships) {
|
|
133
|
+
m.subscriptionRelationships = proto.subscriptionRelationships.map(SubscriptionRelationship.fromProto);
|
|
134
|
+
}
|
|
135
|
+
if (proto.pagingMetadata) {
|
|
136
|
+
m.pagingMetadata = PagedResponseMetadata.fromProto(proto.pagingMetadata);
|
|
137
|
+
}
|
|
138
|
+
return m;
|
|
139
|
+
}
|
|
140
|
+
constructor(kwargs) {
|
|
141
|
+
if (!kwargs) {
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
Object.assign(this, kwargs);
|
|
145
|
+
}
|
|
146
|
+
toApiJson() {
|
|
147
|
+
const toReturn = {};
|
|
148
|
+
if (typeof this.subscriptionRelationships !== 'undefined' && this.subscriptionRelationships !== null) {
|
|
149
|
+
toReturn['subscriptionRelationships'] = 'toApiJson' in this.subscriptionRelationships ? this.subscriptionRelationships.toApiJson() : this.subscriptionRelationships;
|
|
150
|
+
}
|
|
151
|
+
if (typeof this.pagingMetadata !== 'undefined' && this.pagingMetadata !== null) {
|
|
152
|
+
toReturn['pagingMetadata'] = 'toApiJson' in this.pagingMetadata ? this.pagingMetadata.toApiJson() : this.pagingMetadata;
|
|
153
|
+
}
|
|
154
|
+
return toReturn;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
export class ReplaceSubscriptionRelationshipsRequest {
|
|
158
|
+
static fromProto(proto) {
|
|
159
|
+
let m = new ReplaceSubscriptionRelationshipsRequest();
|
|
160
|
+
m = Object.assign(m, proto);
|
|
161
|
+
if (proto.toAdd) {
|
|
162
|
+
m.toAdd = proto.toAdd.map(SubscriptionRelationship.fromProto);
|
|
163
|
+
}
|
|
164
|
+
return m;
|
|
165
|
+
}
|
|
166
|
+
constructor(kwargs) {
|
|
167
|
+
if (!kwargs) {
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
Object.assign(this, kwargs);
|
|
171
|
+
}
|
|
172
|
+
toApiJson() {
|
|
173
|
+
const toReturn = {};
|
|
174
|
+
if (typeof this.toAdd !== 'undefined' && this.toAdd !== null) {
|
|
175
|
+
toReturn['toAdd'] = 'toApiJson' in this.toAdd ? this.toAdd.toApiJson() : this.toAdd;
|
|
176
|
+
}
|
|
177
|
+
if (typeof this.toRemove !== 'undefined') {
|
|
178
|
+
toReturn['toRemove'] = this.toRemove;
|
|
179
|
+
}
|
|
180
|
+
return toReturn;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
export class ReplaceSubscriptionRelationshipsResponse {
|
|
184
|
+
static fromProto(proto) {
|
|
185
|
+
let m = new ReplaceSubscriptionRelationshipsResponse();
|
|
186
|
+
m = Object.assign(m, proto);
|
|
187
|
+
return m;
|
|
188
|
+
}
|
|
189
|
+
constructor(kwargs) {
|
|
190
|
+
if (!kwargs) {
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
Object.assign(this, kwargs);
|
|
194
|
+
}
|
|
195
|
+
toApiJson() {
|
|
196
|
+
const toReturn = {};
|
|
197
|
+
if (typeof this.addedSubscriptionRelationshipIds !== 'undefined') {
|
|
198
|
+
toReturn['addedSubscriptionRelationshipIds'] = this.addedSubscriptionRelationshipIds;
|
|
199
|
+
}
|
|
200
|
+
return toReturn;
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
export class SubscriptionRelationship {
|
|
204
|
+
static fromProto(proto) {
|
|
205
|
+
let m = new SubscriptionRelationship();
|
|
206
|
+
m = Object.assign(m, proto);
|
|
207
|
+
if (proto.originType) {
|
|
208
|
+
m.originType = enumStringToValue(e.EntityType, proto.originType);
|
|
209
|
+
}
|
|
210
|
+
if (proto.targetType) {
|
|
211
|
+
m.targetType = enumStringToValue(e.EntityType, proto.targetType);
|
|
212
|
+
}
|
|
213
|
+
if (proto.relationshipType) {
|
|
214
|
+
m.relationshipType = enumStringToValue(e.RelationshipType, proto.relationshipType);
|
|
215
|
+
}
|
|
216
|
+
if (proto.created) {
|
|
217
|
+
m.created = new Date(proto.created);
|
|
218
|
+
}
|
|
219
|
+
if (proto.updated) {
|
|
220
|
+
m.updated = new Date(proto.updated);
|
|
221
|
+
}
|
|
222
|
+
if (proto.deleted) {
|
|
223
|
+
m.deleted = new Date(proto.deleted);
|
|
224
|
+
}
|
|
225
|
+
return m;
|
|
226
|
+
}
|
|
227
|
+
constructor(kwargs) {
|
|
228
|
+
if (!kwargs) {
|
|
229
|
+
return;
|
|
230
|
+
}
|
|
231
|
+
Object.assign(this, kwargs);
|
|
232
|
+
}
|
|
233
|
+
toApiJson() {
|
|
234
|
+
const toReturn = {};
|
|
235
|
+
if (typeof this.subscriptionRelationshipId !== 'undefined') {
|
|
236
|
+
toReturn['subscriptionRelationshipId'] = this.subscriptionRelationshipId;
|
|
237
|
+
}
|
|
238
|
+
if (typeof this.merchantId !== 'undefined') {
|
|
239
|
+
toReturn['merchantId'] = this.merchantId;
|
|
240
|
+
}
|
|
241
|
+
if (typeof this.customerId !== 'undefined') {
|
|
242
|
+
toReturn['customerId'] = this.customerId;
|
|
243
|
+
}
|
|
244
|
+
if (typeof this.originId !== 'undefined') {
|
|
245
|
+
toReturn['originId'] = this.originId;
|
|
246
|
+
}
|
|
247
|
+
if (typeof this.originType !== 'undefined') {
|
|
248
|
+
toReturn['originType'] = this.originType;
|
|
249
|
+
}
|
|
250
|
+
if (typeof this.targetId !== 'undefined') {
|
|
251
|
+
toReturn['targetId'] = this.targetId;
|
|
252
|
+
}
|
|
253
|
+
if (typeof this.targetType !== 'undefined') {
|
|
254
|
+
toReturn['targetType'] = this.targetType;
|
|
255
|
+
}
|
|
256
|
+
if (typeof this.relationshipType !== 'undefined') {
|
|
257
|
+
toReturn['relationshipType'] = this.relationshipType;
|
|
258
|
+
}
|
|
259
|
+
if (typeof this.created !== 'undefined' && this.created !== null) {
|
|
260
|
+
toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;
|
|
261
|
+
}
|
|
262
|
+
if (typeof this.updated !== 'undefined' && this.updated !== null) {
|
|
263
|
+
toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;
|
|
264
|
+
}
|
|
265
|
+
if (typeof this.deleted !== 'undefined' && this.deleted !== null) {
|
|
266
|
+
toReturn['deleted'] = 'toApiJson' in this.deleted ? this.deleted.toApiJson() : this.deleted;
|
|
267
|
+
}
|
|
268
|
+
return toReturn;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLXJlbGF0aW9uc2hpcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2JpbGxpbmdfc2RrL3NyYy9saWIvX2ludGVybmFsL29iamVjdHMvc3Vic2NyaXB0aW9uLXJlbGF0aW9uc2hpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDdEUsT0FBTyxLQUFLLENBQUMsTUFBTSxVQUFVLENBQUM7QUFFOUIsTUFBTSxVQUFVLGlCQUFpQixDQUFJLE9BQVksRUFBRSxLQUFhO0lBQzlELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxPQUFPLDJDQUEyQztJQVNwRCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSwyQ0FBMkMsRUFBRSxDQUFDO1FBQzFELENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFBQyxDQUFDLENBQUMsVUFBVSxHQUFHLGlCQUFpQixDQUFlLENBQUMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQUM7UUFDdkcsSUFBSSxLQUFLLENBQUMsVUFBVSxFQUFFO1lBQUMsQ0FBQyxDQUFDLFVBQVUsR0FBRyxpQkFBaUIsQ0FBZSxDQUFDLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUFDO1FBQ3ZHLElBQUksS0FBSyxDQUFDLGdCQUFnQixFQUFFO1lBQUMsQ0FBQyxDQUFDLGdCQUFnQixHQUFHLGlCQUFpQixDQUFxQixDQUFD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QUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBPYmplY3RzLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5pbXBvcnQgKiBhcyBpIGZyb20gJy4uL2ludGVyZmFjZXMnO1xuaW1wb3J0IHsgUGFnZWRSZXF1ZXN0T3B0aW9ucywgUGFnZWRSZXNwb25zZU1ldGFkYXRhIH0gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0ICogYXMgZSBmcm9tICcuLi9lbnVtcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnVtU3RyaW5nVG9WYWx1ZTxFPihlbnVtUmVmOiBhbnksIHZhbHVlOiBzdHJpbmcpOiBFIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgcmV0dXJuIGVudW1SZWZbdmFsdWVdO1xufVxuXG5leHBvcnQgY2xhc3MgTGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0RmlsdGVycyBpbXBsZW1lbnRzIGkuTGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZSB7XG4gICAgbWVyY2hhbnRJZDogc3RyaW5nO1xuICAgIGN1c3RvbWVySWQ6IHN0cmluZztcbiAgICBvcmlnaW5JZDogc3RyaW5nO1xuICAgIG9yaWdpblR5cGU6IGUuRW50aXR5VHlwZTtcbiAgICB0YXJnZXRJZDogc3RyaW5nO1xuICAgIHRhcmdldFR5cGU6IGUuRW50aXR5VHlwZTtcbiAgICByZWxhdGlvbnNoaXBUeXBlOiBlLlJlbGF0aW9uc2hpcFR5cGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBMaXN0U3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3RGaWx0ZXJzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0RmlsdGVycygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5vcmlnaW5UeXBlKSB7bS5vcmlnaW5UeXBlID0gZW51bVN0cmluZ1RvVmFsdWU8ZS5FbnRpdHlUeXBlPihlLkVudGl0eVR5cGUsIHByb3RvLm9yaWdpblR5cGUpO31cbiAgICAgICAgaWYgKHByb3RvLnRhcmdldFR5cGUpIHttLnRhcmdldFR5cGUgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLkVudGl0eVR5cGU+KGUuRW50aXR5VHlwZSwgcHJvdG8udGFyZ2V0VHlwZSk7fVxuICAgICAgICBpZiAocHJvdG8ucmVsYXRpb25zaGlwVHlwZSkge20ucmVsYXRpb25zaGlwVHlwZSA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuUmVsYXRpb25zaGlwVHlwZT4oZS5SZWxhdGlvbnNoaXBUeXBlLCBwcm90by5yZWxhdGlvbnNoaXBUeXBlKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0RmlsdGVyc0ludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm1lcmNoYW50SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ21lcmNoYW50SWQnXSA9IHRoaXMubWVyY2hhbnRJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jdXN0b21lcklkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydjdXN0b21lcklkJ10gPSB0aGlzLmN1c3RvbWVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3JpZ2luSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ29yaWdpbklkJ10gPSB0aGlzLm9yaWdpbklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm9yaWdpblR5cGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ29yaWdpblR5cGUnXSA9IHRoaXMub3JpZ2luVHlwZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50YXJnZXRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGFyZ2V0SWQnXSA9IHRoaXMudGFyZ2V0SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudGFyZ2V0VHlwZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndGFyZ2V0VHlwZSddID0gdGhpcy50YXJnZXRUeXBlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlbGF0aW9uc2hpcFR5cGUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3JlbGF0aW9uc2hpcFR5cGUnXSA9IHRoaXMucmVsYXRpb25zaGlwVHlwZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBHZXRNdWx0aVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0IGltcGxlbWVudHMgaS5HZXRNdWx0aVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0SW50ZXJmYWNlIHtcbiAgICBzdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBJZHM6IHN0cmluZ1tdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogR2V0TXVsdGlTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IEdldE11bHRpU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkdldE11bHRpU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBJZHMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3N1YnNjcmlwdGlvblJlbGF0aW9uc2hpcElkcyddID0gdGhpcy5zdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBJZHM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgR2V0TXVsdGlTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVzcG9uc2UgaW1wbGVtZW50cyBpLkdldE11bHRpU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1Jlc3BvbnNlSW50ZXJmYWNlIHtcbiAgICBzdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzOiBTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IEdldE11bHRpU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1Jlc3BvbnNlIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgR2V0TXVsdGlTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVzcG9uc2UoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwcykge20uc3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwcyA9IHByb3RvLnN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHMubWFwKFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcC5mcm9tUHJvdG8pO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5HZXRNdWx0aVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwcyAhPT0gbnVsbCkge3RvUmV0dXJuWydzdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHMgPyAodGhpcy5zdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0IGltcGxlbWVudHMgaS5MaXN0U3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3RJbnRlcmZhY2Uge1xuICAgIGZpbHRlcnM6IExpc3RTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdEZpbHRlcnM7XG4gICAgcGFnaW5nT3B0aW9uczogUGFnZWRSZXF1ZXN0T3B0aW9ucztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IExpc3RTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5maWx0ZXJzKSB7bS5maWx0ZXJzID0gTGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0RmlsdGVycy5mcm9tUHJvdG8ocHJvdG8uZmlsdGVycyk7fVxuICAgICAgICBpZiAocHJvdG8ucGFnaW5nT3B0aW9ucykge20ucGFnaW5nT3B0aW9ucyA9IFBhZ2VkUmVxdWVzdE9wdGlvbnMuZnJvbVByb3RvKHByb3RvLnBhZ2luZ09wdGlvbnMpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5MaXN0U3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5maWx0ZXJzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmZpbHRlcnMgIT09IG51bGwpIHt0b1JldHVyblsnZmlsdGVycyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5maWx0ZXJzID8gKHRoaXMuZmlsdGVycyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5maWx0ZXJzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBhZ2luZ09wdGlvbnMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucGFnaW5nT3B0aW9ucyAhPT0gbnVsbCkge3RvUmV0dXJuWydwYWdpbmdPcHRpb25zJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnBhZ2luZ09wdGlvbnMgPyAodGhpcy5wYWdpbmdPcHRpb25zIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnBhZ2luZ09wdGlvbnM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXNwb25zZSBpbXBsZW1lbnRzIGkuTGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXNwb25zZUludGVyZmFjZSB7XG4gICAgc3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwczogU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwW107XG4gICAgcGFnaW5nTWV0YWRhdGE6IFBhZ2VkUmVzcG9uc2VNZXRhZGF0YTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IExpc3RTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBMaXN0U3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHMpIHttLnN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHMgPSBwcm90by5zdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzLm1hcChTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXAuZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by5wYWdpbmdNZXRhZGF0YSkge20ucGFnaW5nTWV0YWRhdGEgPSBQYWdlZFJlc3BvbnNlTWV0YWRhdGEuZnJvbVByb3RvKHByb3RvLnBhZ2luZ01ldGFkYXRhKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXNwb25zZUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwcyAhPT0gbnVsbCkge3RvUmV0dXJuWydzdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHMgPyAodGhpcy5zdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHM7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucGFnaW5nTWV0YWRhdGEgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucGFnaW5nTWV0YWRhdGEgIT09IG51bGwpIHt0b1JldHVyblsncGFnaW5nTWV0YWRhdGEnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucGFnaW5nTWV0YWRhdGEgPyAodGhpcy5wYWdpbmdNZXRhZGF0YSBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wYWdpbmdNZXRhZGF0YTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZXBsYWNlU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3QgaW1wbGVtZW50cyBpLlJlcGxhY2VTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdEludGVyZmFjZSB7XG4gICAgdG9BZGQ6IFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcFtdO1xuICAgIHRvUmVtb3ZlOiBzdHJpbmdbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFJlcGxhY2VTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IFJlcGxhY2VTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by50b0FkZCkge20udG9BZGQgPSBwcm90by50b0FkZC5tYXAoU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlJlcGxhY2VTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRvQWRkICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnRvQWRkICE9PSBudWxsKSB7dG9SZXR1cm5bJ3RvQWRkJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnRvQWRkID8gKHRoaXMudG9BZGQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudG9BZGQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudG9SZW1vdmUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3RvUmVtb3ZlJ10gPSB0aGlzLnRvUmVtb3ZlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlcGxhY2VTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVzcG9uc2UgaW1wbGVtZW50cyBpLlJlcGxhY2VTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVzcG9uc2VJbnRlcmZhY2Uge1xuICAgIGFkZGVkU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwSWRzOiBzdHJpbmdbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFJlcGxhY2VTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVzcG9uc2Uge1xuICAgICAgICBsZXQgbSA9IG5ldyBSZXBsYWNlU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1Jlc3BvbnNlKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5SZXBsYWNlU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1Jlc3BvbnNlSW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWRkZWRTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBJZHMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FkZGVkU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwSWRzJ10gPSB0aGlzLmFkZGVkU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwSWRzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcCBpbXBsZW1lbnRzIGkuU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwSW50ZXJmYWNlIHtcbiAgICBzdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBJZDogc3RyaW5nO1xuICAgIG1lcmNoYW50SWQ6IHN0cmluZztcbiAgICBjdXN0b21lcklkOiBzdHJpbmc7XG4gICAgb3JpZ2luSWQ6IHN0cmluZztcbiAgICBvcmlnaW5UeXBlOiBlLkVudGl0eVR5cGU7XG4gICAgdGFyZ2V0SWQ6IHN0cmluZztcbiAgICB0YXJnZXRUeXBlOiBlLkVudGl0eVR5cGU7XG4gICAgcmVsYXRpb25zaGlwVHlwZTogZS5SZWxhdGlvbnNoaXBUeXBlO1xuICAgIGNyZWF0ZWQ6IERhdGU7XG4gICAgdXBkYXRlZDogRGF0ZTtcbiAgICBkZWxldGVkOiBEYXRlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLm9yaWdpblR5cGUpIHttLm9yaWdpblR5cGUgPSBlbnVtU3RyaW5nVG9WYWx1ZTxlLkVudGl0eVR5cGU+KGUuRW50aXR5VHlwZSwgcHJvdG8ub3JpZ2luVHlwZSk7fVxuICAgICAgICBpZiAocHJvdG8udGFyZ2V0VHlwZSkge20udGFyZ2V0VHlwZSA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuRW50aXR5VHlwZT4oZS5FbnRpdHlUeXBlLCBwcm90by50YXJnZXRUeXBlKTt9XG4gICAgICAgIGlmIChwcm90by5yZWxhdGlvbnNoaXBUeXBlKSB7bS5yZWxhdGlvbnNoaXBUeXBlID0gZW51bVN0cmluZ1RvVmFsdWU8ZS5SZWxhdGlvbnNoaXBUeXBlPihlLlJlbGF0aW9uc2hpcFR5cGUsIHByb3RvLnJlbGF0aW9uc2hpcFR5cGUpO31cbiAgICAgICAgaWYgKHByb3RvLmNyZWF0ZWQpIHttLmNyZWF0ZWQgPSBuZXcgRGF0ZShwcm90by5jcmVhdGVkKTt9XG4gICAgICAgIGlmIChwcm90by51cGRhdGVkKSB7bS51cGRhdGVkID0gbmV3IERhdGUocHJvdG8udXBkYXRlZCk7fVxuICAgICAgICBpZiAocHJvdG8uZGVsZXRlZCkge20uZGVsZXRlZCA9IG5ldyBEYXRlKHByb3RvLmRlbGV0ZWQpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5TdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnc3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwSWQnXSA9IHRoaXMuc3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubWVyY2hhbnRJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbWVyY2hhbnRJZCddID0gdGhpcy5tZXJjaGFudElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmN1c3RvbWVySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2N1c3RvbWVySWQnXSA9IHRoaXMuY3VzdG9tZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5vcmlnaW5JZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnb3JpZ2luSWQnXSA9IHRoaXMub3JpZ2luSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3JpZ2luVHlwZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnb3JpZ2luVHlwZSddID0gdGhpcy5vcmlnaW5UeXBlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnRhcmdldElkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0YXJnZXRJZCddID0gdGhpcy50YXJnZXRJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50YXJnZXRUeXBlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0YXJnZXRUeXBlJ10gPSB0aGlzLnRhcmdldFR5cGU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVsYXRpb25zaGlwVHlwZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmVsYXRpb25zaGlwVHlwZSddID0gdGhpcy5yZWxhdGlvbnNoaXBUeXBlO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmNyZWF0ZWQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuY3JlYXRlZCAhPT0gbnVsbCkge3RvUmV0dXJuWydjcmVhdGVkJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLmNyZWF0ZWQgPyAodGhpcy5jcmVhdGVkIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmNyZWF0ZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudXBkYXRlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy51cGRhdGVkICE9PSBudWxsKSB7dG9SZXR1cm5bJ3VwZGF0ZWQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudXBkYXRlZCA/ICh0aGlzLnVwZGF0ZWQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMudXBkYXRlZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kZWxldGVkICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmRlbGV0ZWQgIT09IG51bGwpIHt0b1JldHVyblsnZGVsZXRlZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5kZWxldGVkID8gKHRoaXMuZGVsZXRlZCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5kZWxldGVkO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuIl19
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// *********************************
|
|
2
|
+
// Code generated by sdkgen
|
|
3
|
+
// DO NOT EDIT!.
|
|
4
|
+
//
|
|
5
|
+
// API Service.
|
|
6
|
+
// *********************************
|
|
7
|
+
import { Injectable } from '@angular/core';
|
|
8
|
+
import { GetMultiSubscriptionRelationshipsRequest, GetMultiSubscriptionRelationshipsResponse, ListSubscriptionRelationshipsRequest, ListSubscriptionRelationshipsResponse, ReplaceSubscriptionRelationshipsRequest, ReplaceSubscriptionRelationshipsResponse, } from './objects/';
|
|
9
|
+
import { HttpHeaders, HttpClient } from '@angular/common/http';
|
|
10
|
+
import { HostService } from '../_generated/host.service';
|
|
11
|
+
import { map } from 'rxjs/operators';
|
|
12
|
+
import * as i0 from "@angular/core";
|
|
13
|
+
import * as i1 from "@angular/common/http";
|
|
14
|
+
import * as i2 from "../_generated/host.service";
|
|
15
|
+
export class SubscriptionRelationshipApiService {
|
|
16
|
+
constructor(http, hostService) {
|
|
17
|
+
this.http = http;
|
|
18
|
+
this.hostService = hostService;
|
|
19
|
+
this._host = this.hostService.hostWithScheme;
|
|
20
|
+
}
|
|
21
|
+
apiOptions() {
|
|
22
|
+
return {
|
|
23
|
+
headers: new HttpHeaders({
|
|
24
|
+
'Content-Type': 'application/json'
|
|
25
|
+
}),
|
|
26
|
+
withCredentials: true
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
replace(r) {
|
|
30
|
+
const request = (r.toApiJson) ? r : new ReplaceSubscriptionRelationshipsRequest(r);
|
|
31
|
+
return this.http.post(this._host + "/billing.v1.SubscriptionRelationshipService/Replace", request.toApiJson(), this.apiOptions())
|
|
32
|
+
.pipe(map(resp => ReplaceSubscriptionRelationshipsResponse.fromProto(resp)));
|
|
33
|
+
}
|
|
34
|
+
list(r) {
|
|
35
|
+
const request = (r.toApiJson) ? r : new ListSubscriptionRelationshipsRequest(r);
|
|
36
|
+
return this.http.post(this._host + "/billing.v1.SubscriptionRelationshipService/List", request.toApiJson(), this.apiOptions())
|
|
37
|
+
.pipe(map(resp => ListSubscriptionRelationshipsResponse.fromProto(resp)));
|
|
38
|
+
}
|
|
39
|
+
getMulti(r) {
|
|
40
|
+
const request = (r.toApiJson) ? r : new GetMultiSubscriptionRelationshipsRequest(r);
|
|
41
|
+
return this.http.post(this._host + "/billing.v1.SubscriptionRelationshipService/GetMulti", request.toApiJson(), this.apiOptions())
|
|
42
|
+
.pipe(map(resp => GetMultiSubscriptionRelationshipsResponse.fromProto(resp)));
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
SubscriptionRelationshipApiService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: SubscriptionRelationshipApiService, deps: [{ token: i1.HttpClient }, { token: i2.HostService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
46
|
+
SubscriptionRelationshipApiService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: SubscriptionRelationshipApiService, providedIn: 'root' });
|
|
47
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.3", ngImport: i0, type: SubscriptionRelationshipApiService, decorators: [{
|
|
48
|
+
type: Injectable,
|
|
49
|
+
args: [{ providedIn: 'root' }]
|
|
50
|
+
}], ctorParameters: function () { return [{ type: i1.HttpClient }, { type: i2.HostService }]; } });
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLXJlbGF0aW9uc2hpcC5hcGkuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2JpbGxpbmdfc2RrL3NyYy9saWIvX2ludGVybmFsL3N1YnNjcmlwdGlvbi1yZWxhdGlvbnNoaXAuYXBpLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsb0NBQW9DO0FBQ3BDLDJCQUEyQjtBQUMzQixnQkFBZ0I7QUFDaEIsRUFBRTtBQUNGLGVBQWU7QUFDZixvQ0FBb0M7QUFDcEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQ0Msd0NBQXdDLEVBQ3hDLHlDQUF5QyxFQUN6QyxvQ0FBb0MsRUFDcEMscUNBQXFDLEVBQ3JDLHVDQUF1QyxFQUN2Qyx3Q0FBd0MsR0FDL0MsTUFBTSxZQUFZLENBQUM7QUFTcEIsT0FBTyxFQUFDLFdBQVcsRUFBRSxVQUFVLEVBQWUsTUFBTSxzQkFBc0IsQ0FBQztBQUMzRSxPQUFPLEVBQUMsV0FBVyxFQUFDLE1BQU0sNEJBQTRCLENBQUM7QUFFdkQsT0FBTyxFQUFDLEdBQUcsRUFBQyxNQUFNLGdCQUFnQixDQUFDOzs7O0FBR25DLE1BQU0sT0FBTyxrQ0FBa0M7SUFHM0MsWUFBb0IsSUFBZ0IsRUFBVSxXQUF3QjtRQUFsRCxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWE7UUFGOUQsVUFBSyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxDQUFDO0lBR2hELENBQUM7SUFFTyxVQUFVO1FBQ2QsT0FBTztZQUNILE9BQU8sRUFBRSxJQUFJLFdBQVcsQ0FBQztnQkFDckIsY0FBYyxFQUFFLGtCQUFrQjthQUNyQyxDQUFDO1lBQ0YsZUFBZSxFQUFFLElBQUk7U0FDeEIsQ0FBQztJQUNOLENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBNkY7UUFDakcsTUFBTSxPQUFPLEdBQUcsQ0FBMkMsQ0FBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBMkMsQ0FBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLHVDQUF1QyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3pLLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQW9ELElBQUksQ0FBQyxLQUFLLEdBQUcscURBQXFELEVBQUUsT0FBTyxDQUFDLFNBQVMsRUFBRSxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUMvSyxJQUFJLENBQ0QsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsd0NBQXdDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQ3hFLENBQUM7SUFDVixDQUFDO0lBQ0QsSUFBSSxDQUFDLENBQXVGO1FBQ3hGLE1BQU0sT0FBTyxHQUFHLENBQXdDLENBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQXdDLENBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxvQ0FBb0MsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoSyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFpRCxJQUFJLENBQUMsS0FBSyxHQUFHLGtEQUFrRCxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7YUFDekssSUFBSSxDQUNELEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLHFDQUFxQyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUNyRSxDQUFDO0lBQ1YsQ0FBQztJQUNELFFBQVEsQ0FBQyxDQUErRjtRQUNwRyxNQUFNLE9BQU8sR0FBRyxDQUE0QyxDQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUE0QyxDQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksd0NBQXdDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUssT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBcUQsSUFBSSxDQUFDLEtBQUssR0FBRyxzREFBc0QsRUFBRSxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ2pMLElBQUksQ0FDRCxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyx5Q0FBeUMsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDekUsQ0FBQztJQUNWLENBQUM7OytIQW5DUSxrQ0FBa0M7bUlBQWxDLGtDQUFrQyxjQUR0QixNQUFNOzJGQUNsQixrQ0FBa0M7a0JBRDlDLFVBQVU7bUJBQUMsRUFBQyxVQUFVLEVBQUUsTUFBTSxFQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBBUEkgU2VydmljZS5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gICAgICAgIEdldE11bHRpU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3QsXG4gICAgICAgIEdldE11bHRpU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1Jlc3BvbnNlLFxuICAgICAgICBMaXN0U3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3QsXG4gICAgICAgIExpc3RTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVzcG9uc2UsXG4gICAgICAgIFJlcGxhY2VTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdCxcbiAgICAgICAgUmVwbGFjZVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXNwb25zZSxcbn0gZnJvbSAnLi9vYmplY3RzLyc7XG5pbXBvcnQge1xuICAgICAgICBHZXRNdWx0aVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBHZXRNdWx0aVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXNwb25zZUludGVyZmFjZSxcbiAgICAgICAgTGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0SW50ZXJmYWNlLFxuICAgICAgICBMaXN0U3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1Jlc3BvbnNlSW50ZXJmYWNlLFxuICAgICAgICBSZXBsYWNlU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3RJbnRlcmZhY2UsXG4gICAgICAgIFJlcGxhY2VTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVzcG9uc2VJbnRlcmZhY2UsXG59IGZyb20gJy4vaW50ZXJmYWNlcy8nO1xuaW1wb3J0IHtIdHRwSGVhZGVycywgSHR0cENsaWVudCwgSHR0cFJlc3BvbnNlfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge0hvc3RTZXJ2aWNlfSBmcm9tICcuLi9fZ2VuZXJhdGVkL2hvc3Quc2VydmljZSc7XG5pbXBvcnQge09ic2VydmFibGV9IGZyb20gJ3J4anMnO1xuaW1wb3J0IHttYXB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcblxuQEluamVjdGFibGUoe3Byb3ZpZGVkSW46ICdyb290J30pXG5leHBvcnQgY2xhc3MgU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwQXBpU2VydmljZSB7XG4gICAgcHJpdmF0ZSBfaG9zdCA9IHRoaXMuaG9zdFNlcnZpY2UuaG9zdFdpdGhTY2hlbWU7XG5cbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGh0dHA6IEh0dHBDbGllbnQsIHByaXZhdGUgaG9zdFNlcnZpY2U6IEhvc3RTZXJ2aWNlKSB7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhcGlPcHRpb25zKCk6IHtoZWFkZXJzOiBIdHRwSGVhZGVycywgd2l0aENyZWRlbnRpYWxzOiBib29sZWFufSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBoZWFkZXJzOiBuZXcgSHR0cEhlYWRlcnMoe1xuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgd2l0aENyZWRlbnRpYWxzOiB0cnVlXG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgcmVwbGFjZShyOiBSZXBsYWNlU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3QgfCBSZXBsYWNlU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3RJbnRlcmZhY2UpOiBPYnNlcnZhYmxlPFJlcGxhY2VTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVzcG9uc2U+IHtcbiAgICAgICAgY29uc3QgcmVxdWVzdCA9ICgoPFJlcGxhY2VTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxSZXBsYWNlU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3Q+cikgOiBuZXcgUmVwbGFjZVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0KHIpO1xuICAgICAgICByZXR1cm4gdGhpcy5odHRwLnBvc3Q8UmVwbGFjZVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwU2VydmljZS9SZXBsYWNlXCIsIHJlcXVlc3QudG9BcGlKc29uKCksIHRoaXMuYXBpT3B0aW9ucygpKVxuICAgICAgICAgICAgLnBpcGUoXG4gICAgICAgICAgICAgICAgbWFwKHJlc3AgPT4gUmVwbGFjZVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXNwb25zZS5mcm9tUHJvdG8ocmVzcCkpXG4gICAgICAgICAgICApO1xuICAgIH1cbiAgICBsaXN0KHI6IExpc3RTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdCB8IExpc3RTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdEludGVyZmFjZSk6IE9ic2VydmFibGU8TGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8TGlzdFN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0PnIpLnRvQXBpSnNvbikgPyAoPExpc3RTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdD5yKSA6IG5ldyBMaXN0U3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxMaXN0U3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1Jlc3BvbnNlSW50ZXJmYWNlPih0aGlzLl9ob3N0ICsgXCIvYmlsbGluZy52MS5TdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBTZXJ2aWNlL0xpc3RcIiwgcmVxdWVzdC50b0FwaUpzb24oKSwgdGhpcy5hcGlPcHRpb25zKCkpXG4gICAgICAgICAgICAucGlwZShcbiAgICAgICAgICAgICAgICBtYXAocmVzcCA9PiBMaXN0U3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1Jlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIGdldE11bHRpKHI6IEdldE11bHRpU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3QgfCBHZXRNdWx0aVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0SW50ZXJmYWNlKTogT2JzZXJ2YWJsZTxHZXRNdWx0aVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXNwb25zZT4ge1xuICAgICAgICBjb25zdCByZXF1ZXN0ID0gKCg8R2V0TXVsdGlTdWJzY3JpcHRpb25SZWxhdGlvbnNoaXBzUmVxdWVzdD5yKS50b0FwaUpzb24pID8gKDxHZXRNdWx0aVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXF1ZXN0PnIpIDogbmV3IEdldE11bHRpU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1JlcXVlc3Qocik7XG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxHZXRNdWx0aVN1YnNjcmlwdGlvblJlbGF0aW9uc2hpcHNSZXNwb25zZUludGVyZmFjZT4odGhpcy5faG9zdCArIFwiL2JpbGxpbmcudjEuU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwU2VydmljZS9HZXRNdWx0aVwiLCByZXF1ZXN0LnRvQXBpSnNvbigpLCB0aGlzLmFwaU9wdGlvbnMoKSlcbiAgICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgICAgIG1hcChyZXNwID0+IEdldE11bHRpU3Vic2NyaXB0aW9uUmVsYXRpb25zaGlwc1Jlc3BvbnNlLmZyb21Qcm90byhyZXNwKSlcbiAgICAgICAgICAgICk7XG4gICAgfVxuICAgIFxufVxuIl19
|