@bitgo/sdk-coin-apt 2.6.3 → 2.6.5

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.
@@ -39,6 +39,29 @@ export declare class CustomTransaction extends Transaction {
39
39
  * Convert argument based on ABI type information
40
40
  */
41
41
  private convertArgumentByABI;
42
+ /**
43
+ * Convert primitive argument values based on parameter type
44
+ */
45
+ private convertPrimitiveArgument;
46
+ /**
47
+ * Convert primitive numeric arguments to string
48
+ * - Big numbers break JavaScript (precision loss)
49
+ * - String safer for large U64/U128/U256 values
50
+ * - Aptos SDK converts string to correct type automatically
51
+ */
52
+ private convertPrimitiveNumericArgument;
53
+ /**
54
+ * Convert BCS data argument with 'data' property
55
+ */
56
+ private convertBcsDataArgument;
57
+ /**
58
+ * Convert nested BCS argument with 'value' property
59
+ */
60
+ private convertNestedBcsArgument;
61
+ /**
62
+ * Extract bytes from BCS object with numeric keys
63
+ */
64
+ private extractBytesFromBcsObject;
42
65
  /**
43
66
  * Get custom transaction parameters
44
67
  */
@@ -56,7 +79,10 @@ export declare class CustomTransaction extends Transaction {
56
79
  */
57
80
  private isNumericType;
58
81
  /**
59
- * Convert numeric argument using consistent little-endian byte handling
82
+ * Convert byte arrays to string numbers
83
+ * - Small types (U8/U16/U32): 1-4 bytes, parse manually
84
+ * - Large types (U64/U128/U256): 8+ bytes, use existing utility
85
+ * - Both return string for consistency
60
86
  */
61
87
  private convertNumericArgument;
62
88
  }
@@ -1 +1 @@
1
- {"version":3,"file":"customTransaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/transaction/customTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EACL,gBAAgB,EAGhB,mCAAmC,EACnC,kBAAkB,EAWnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAInD;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,kBAAkB,CAA4E;IACtG,OAAO,CAAC,iBAAiB,CAAC,CAAmB;gBAEjC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK5C;;OAEG;IACH,0BAA0B,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI;IAWjE;;OAEG;IACH,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI;IAIhD;;OAEG;IACH,IAAI,gBAAgB,IAAI,MAAM,CAK7B;IAED;;;;;OAKG;IACH,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAyCpE;;OAEG;IACH,SAAS,CAAC,yBAAyB,IAAI,mCAAmC;IAc1E;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAsF5B;;OAEG;IACH,0BAA0B,IAAI,uBAAuB;IAUrD;;OAEG;IACH,IAAI,SAAS,IAAI,GAAG,CAQnB;IAED;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAiBpC;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAkB/B"}
1
+ {"version":3,"file":"customTransaction.d.ts","sourceRoot":"","sources":["../../../../src/lib/transaction/customTransaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAEL,gBAAgB,EAGhB,mCAAmC,EACnC,kBAAkB,EAUnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAInD;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,WAAW;IAChD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,kBAAkB,CAA4E;IACtG,OAAO,CAAC,iBAAiB,CAAC,CAAmB;gBAEjC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAK5C;;OAEG;IACH,0BAA0B,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI;IAWjE;;OAEG;IACH,mBAAmB,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI;IAIhD;;OAEG;IACH,IAAI,gBAAgB,IAAI,MAAM,CAK7B;IAED;;;;;OAKG;IACH,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAyCpE;;OAEG;IACH,SAAS,CAAC,yBAAyB,IAAI,mCAAmC;IAc1E;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoB5B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAoBhC;;;;;OAKG;IACH,OAAO,CAAC,+BAA+B;IAKvC;;OAEG;IACH,OAAO,CAAC,sBAAsB;IAO9B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAoChC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAUjC;;OAEG;IACH,0BAA0B,IAAI,uBAAuB;IAUrD;;OAEG;IACH,IAAI,SAAS,IAAI,GAAG,CAQnB;IAED;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAiBpC;;OAEG;IACH,OAAO,CAAC,aAAa;IAWrB;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;CAkB/B"}
@@ -103,82 +103,104 @@ class CustomTransaction extends transaction_1.Transaction {
103
103
  * Convert argument based on ABI type information
104
104
  */
105
105
  convertArgumentByABI(arg, paramType) {
106
- // Helper function to convert bytes to hex string
107
- const bytesToHex = (bytes) => {
108
- return '0x' + bytes.map((b) => b.toString(16).padStart(2, '0')).join('');
109
- };
110
- // Helper function to try converting a hex string to an AccountAddress
111
- const tryToAddress = (hexStr) => {
112
- try {
113
- return ts_sdk_1.AccountAddress.fromString(hexStr);
114
- }
115
- catch {
116
- return hexStr;
117
- }
118
- };
119
106
  // Handle primitive values (string, number, boolean)
120
107
  if (typeof arg === 'string' || typeof arg === 'number' || typeof arg === 'boolean') {
121
- // Address conversion for hex strings
122
- if (paramType instanceof ts_sdk_1.TypeTagAddress && typeof arg === 'string' && arg.startsWith('0x')) {
123
- return tryToAddress(arg);
124
- }
125
- // Type conversions based on parameter type
126
- if (paramType instanceof ts_sdk_1.TypeTagBool)
127
- return Boolean(arg);
128
- if (paramType instanceof ts_sdk_1.TypeTagU8 || paramType instanceof ts_sdk_1.TypeTagU16 || paramType instanceof ts_sdk_1.TypeTagU32)
129
- return Number(arg);
130
- if (paramType instanceof ts_sdk_1.TypeTagU64 || paramType instanceof ts_sdk_1.TypeTagU128 || paramType instanceof ts_sdk_1.TypeTagU256)
131
- return String(arg);
132
- return arg;
108
+ return this.convertPrimitiveArgument(arg, paramType);
133
109
  }
134
110
  // Handle BCS-encoded data with 'data' property
135
111
  if (arg && typeof arg === 'object' && 'data' in arg && arg.data) {
136
- const bytes = Array.from(arg.data);
137
- const hexString = bytesToHex(bytes);
138
- return paramType instanceof ts_sdk_1.TypeTagAddress ? tryToAddress(hexString) : hexString;
112
+ return this.convertBcsDataArgument(arg, paramType);
139
113
  }
140
114
  // Handle nested BCS structures with 'value' property
141
115
  if (arg && typeof arg === 'object' && 'value' in arg && arg.value) {
142
- // Check if inner value is a Uint8Array (common for U64 arguments)
143
- if (arg.value.value && arg.value.value instanceof Uint8Array) {
144
- const bytes = Array.from(arg.value.value);
145
- if (this.isNumericType(paramType)) {
146
- return this.convertNumericArgument(bytes, paramType);
147
- }
148
- // For non-numeric types, convert to hex string
149
- return bytesToHex(bytes);
150
- }
151
- // Simple value wrapper
152
- if (!('value' in arg.value) || typeof arg.value.value !== 'object') {
153
- return this.convertArgumentByABI(arg.value, paramType);
154
- }
155
- // Double nested structure with numeric keys
156
- const bytesObj = arg.value.value;
157
- const keys = Object.keys(bytesObj)
158
- .filter((k) => !isNaN(parseInt(k, 10)))
159
- .sort((a, b) => parseInt(a, 10) - parseInt(b, 10));
160
- if (keys.length === 0)
161
- return arg;
162
- const bytes = keys.map((k) => bytesObj[k]);
163
- let extractedValue;
164
- // Convert bytes based on parameter type using unified approach
165
- if (this.isNumericType(paramType)) {
166
- extractedValue = this.convertNumericArgument(bytes, paramType);
167
- }
168
- else if (paramType instanceof ts_sdk_1.TypeTagAddress) {
169
- extractedValue = bytesToHex(bytes);
170
- }
171
- else if (paramType instanceof ts_sdk_1.TypeTagBool) {
172
- extractedValue = bytes[0] === 1;
173
- }
174
- else {
175
- extractedValue = bytesToHex(bytes);
176
- }
177
- return this.convertArgumentByABI(extractedValue, paramType);
116
+ return this.convertNestedBcsArgument(arg, paramType);
178
117
  }
179
118
  // For anything else, return as-is
180
119
  return arg;
181
120
  }
121
+ /**
122
+ * Convert primitive argument values based on parameter type
123
+ */
124
+ convertPrimitiveArgument(arg, paramType) {
125
+ // Address conversion for hex strings
126
+ if (paramType instanceof ts_sdk_1.TypeTagAddress && typeof arg === 'string' && arg.startsWith('0x')) {
127
+ return utils_1.default.tryParseAccountAddress(arg);
128
+ }
129
+ // Type conversions based on parameter type
130
+ if (paramType instanceof ts_sdk_1.TypeTagBool)
131
+ return Boolean(arg);
132
+ // Use unified numeric type handling
133
+ if (this.isNumericType(paramType)) {
134
+ return this.convertPrimitiveNumericArgument(arg);
135
+ }
136
+ return arg;
137
+ }
138
+ /**
139
+ * Convert primitive numeric arguments to string
140
+ * - Big numbers break JavaScript (precision loss)
141
+ * - String safer for large U64/U128/U256 values
142
+ * - Aptos SDK converts string to correct type automatically
143
+ */
144
+ convertPrimitiveNumericArgument(arg) {
145
+ // Always string - safer for big numbers
146
+ return String(arg);
147
+ }
148
+ /**
149
+ * Convert BCS data argument with 'data' property
150
+ */
151
+ convertBcsDataArgument(arg, paramType) {
152
+ const bytes = Array.from(arg.data);
153
+ const hexString = utils_1.default.bytesToHex(bytes);
154
+ return paramType instanceof ts_sdk_1.TypeTagAddress ? utils_1.default.tryParseAccountAddress(hexString) : hexString;
155
+ }
156
+ /**
157
+ * Convert nested BCS argument with 'value' property
158
+ */
159
+ convertNestedBcsArgument(arg, paramType) {
160
+ // Check if inner value is a Uint8Array (common for U64 arguments)
161
+ if (arg.value.value && arg.value.value instanceof Uint8Array) {
162
+ const bytes = Array.from(arg.value.value);
163
+ if (this.isNumericType(paramType)) {
164
+ return this.convertNumericArgument(bytes, paramType);
165
+ }
166
+ // For non-numeric types, convert to hex string
167
+ return utils_1.default.bytesToHex(bytes);
168
+ }
169
+ // Simple value wrapper - fix the bug in original implementation
170
+ if (typeof arg.value !== 'object' || !('value' in arg.value)) {
171
+ return this.convertArgumentByABI(arg.value, paramType);
172
+ }
173
+ // Double nested structure with numeric keys
174
+ const bytes = this.extractBytesFromBcsObject(arg.value.value);
175
+ if (bytes.length === 0)
176
+ return arg;
177
+ let extractedValue;
178
+ // Convert bytes based on parameter type using unified approach
179
+ if (this.isNumericType(paramType)) {
180
+ extractedValue = this.convertNumericArgument(bytes, paramType);
181
+ }
182
+ else if (paramType instanceof ts_sdk_1.TypeTagAddress) {
183
+ extractedValue = utils_1.default.bytesToHex(bytes);
184
+ }
185
+ else if (paramType instanceof ts_sdk_1.TypeTagBool) {
186
+ extractedValue = bytes[0] === 1;
187
+ }
188
+ else {
189
+ extractedValue = utils_1.default.bytesToHex(bytes);
190
+ }
191
+ return this.convertArgumentByABI(extractedValue, paramType);
192
+ }
193
+ /**
194
+ * Extract bytes from BCS object with numeric keys
195
+ */
196
+ extractBytesFromBcsObject(bcsObject) {
197
+ const keys = Object.keys(bcsObject)
198
+ .filter((k) => !isNaN(parseInt(k, 10)))
199
+ .sort((a, b) => parseInt(a, 10) - parseInt(b, 10));
200
+ if (keys.length === 0)
201
+ return [];
202
+ return keys.map((k) => bcsObject[k]);
203
+ }
182
204
  /**
183
205
  * Get custom transaction parameters
184
206
  */
@@ -230,24 +252,27 @@ class CustomTransaction extends transaction_1.Transaction {
230
252
  paramType instanceof ts_sdk_1.TypeTagU256);
231
253
  }
232
254
  /**
233
- * Convert numeric argument using consistent little-endian byte handling
255
+ * Convert byte arrays to string numbers
256
+ * - Small types (U8/U16/U32): 1-4 bytes, parse manually
257
+ * - Large types (U64/U128/U256): 8+ bytes, use existing utility
258
+ * - Both return string for consistency
234
259
  */
235
260
  convertNumericArgument(bytes, paramType) {
236
261
  if (paramType instanceof ts_sdk_1.TypeTagU8 || paramType instanceof ts_sdk_1.TypeTagU16 || paramType instanceof ts_sdk_1.TypeTagU32) {
237
- // Small integers: use Number for compatibility
262
+ // Small types: parse bytes manually (1-4 bytes)
238
263
  let result = 0;
239
264
  for (let i = bytes.length - 1; i >= 0; i--) {
240
265
  result = result * 256 + bytes[i];
241
266
  }
242
- return result;
267
+ return result.toString();
243
268
  }
244
269
  if (paramType instanceof ts_sdk_1.TypeTagU64 || paramType instanceof ts_sdk_1.TypeTagU128 || paramType instanceof ts_sdk_1.TypeTagU256) {
245
- // Large integers: reuse the existing utility method
270
+ // Large types: use existing method (needs 8+ bytes)
246
271
  return utils_1.default.getAmountFromPayloadArgs(new Uint8Array(bytes));
247
272
  }
248
- // Fallback for unexpected numeric types
249
- return '0x' + bytes.map((b) => b.toString(16).padStart(2, '0')).join('');
273
+ // Unknown type: convert to hex
274
+ return utils_1.default.bytesToHex(bytes);
250
275
  }
251
276
  }
252
277
  exports.CustomTransaction = CustomTransaction;
253
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tVHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uL2N1c3RvbVRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLCtDQUE0QztBQUU1Qyw4Q0FBMkU7QUFDM0UsK0NBZ0I0QjtBQUU1QixvREFBK0U7QUFDL0UscURBQTZCO0FBRTdCOztHQUVHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSx5QkFBVztJQU9oRCxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUxaLG1CQUFjLEdBQWEsRUFBRSxDQUFDO1FBQzlCLHVCQUFrQixHQUF5RSxFQUFFLENBQUM7UUFLcEcsSUFBSSxDQUFDLEtBQUssR0FBRywwQkFBZSxDQUFDLFFBQVEsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCwwQkFBMEIsQ0FBQyxNQUErQjtRQUN4RCxJQUFBLCtCQUFrQixFQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0QyxJQUFBLGlDQUFvQixFQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUUxQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDdEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CLENBQUMsR0FBcUI7UUFDdkMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztJQUMvQixDQUFD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SUFBSSxTQUFTLFlBQVksb0JBQVcsRUFBRSxDQUFDO1lBQzVHLG9EQUFvRDtZQUNwRCxPQUFPLGVBQUssQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFFRCx3Q0FBd0M7UUFDeEMsT0FBTyxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7Q0FDRjtBQXJSRCw4Q0FxUkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby9zdGF0aWNzJztcbmltcG9ydCB7IEludmFsaWRUcmFuc2FjdGlvbkVycm9yLCBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgRW50cnlGdW5jdGlvbkFCSSxcbiAgRW50cnlGdW5jdGlvbkFyZ3VtZW50VHlwZXMsXG4gIFNpbXBsZUVudHJ5RnVuY3Rpb25Bcmd1bWVudFR5cGVzLFxuICBJbnB1dEdlbmVyYXRlVHJhbnNhY3Rpb25QYXlsb2FkRGF0YSxcbiAgVHJhbnNhY3Rpb25QYXlsb2FkLFxuICBUcmFuc2FjdGlvblBheWxvYWRFbnRyeUZ1bmN0aW9uLFxuICBBY2NvdW50QWRkcmVzcyxcbiAgVHlwZVRhZ0FkZHJlc3MsXG4gIFR5cGVUYWdCb29sLFxuICBUeXBlVGFnVTgsXG4gIFR5cGVUYWdVMTYsXG4gIFR5cGVUYWdVMzIsXG4gIFR5cGVUYWdVNjQsXG4gIFR5cGVUYWdVMTI4LFxuICBUeXBlVGFnVTI1Nixcbn0gZnJvbSAnQGFwdG9zLWxhYnMvdHMtc2RrJztcbmltcG9ydCB7IEN1c3RvbVRyYW5zYWN0aW9uUGFyYW1zIH0gZnJvbSAnLi4vaWZhY2UnO1xuaW1wb3J0IHsgdmFsaWRhdGVNb2R1bGVOYW1lLCB2YWxpZGF0ZUZ1bmN0aW9uTmFtZSB9IGZyb20gJy4uL3V0aWxzL3ZhbGlkYXRpb24nO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4uL3V0aWxzJztcblxuLyoqXG4gKiBUcmFuc2FjdGlvbiBjbGFzcyBmb3IgY3VzdG9tIEFwdG9zIHRyYW5zYWN0aW9ucy5cbiAqL1xuZXhwb3J0IGNsYXNzIEN1c3RvbVRyYW5zYWN0aW9uIGV4dGVuZHMgVHJhbnNhY3Rpb24ge1xuICBwcml2YXRlIF9tb2R1bGVOYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgX2Z1bmN0aW9uTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIF90eXBlQXJndW1lbnRzOiBzdHJpbmdbXSA9IFtdO1xuICBwcml2YXRlIF9mdW5jdGlvbkFyZ3VtZW50czogQXJyYXk8RW50cnlGdW5jdGlvbkFyZ3VtZW50VHlwZXMgfCBTaW1wbGVFbnRyeUZ1bmN0aW9uQXJndW1lbnRUeXBlcz4gPSBbXTtcbiAgcHJpdmF0ZSBfZW50cnlGdW5jdGlvbkFiaT86IEVudHJ5RnVuY3Rpb25BQkk7XG5cbiAgY29uc3RydWN0b3IoY29pbkNvbmZpZzogUmVhZG9ubHk8Q29pbkNvbmZpZz4pIHtcbiAgICBzdXBlcihjb2luQ29uZmlnKTtcbiAgICB0aGlzLl90eXBlID0gVHJhbnNhY3Rpb25UeXBlLkN1c3RvbVR4O1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgY3VzdG9tIHRyYW5zYWN0aW9uIHBhcmFtZXRlcnNcbiAgICovXG4gIHNldEN1c3RvbVRyYW5zYWN0aW9uUGFyYW1zKHBhcmFtczogQ3VzdG9tVHJhbnNhY3Rpb25QYXJhbXMpOiB2b2lkIHtcbiAgICB2YWxpZGF0ZU1vZHVsZU5hbWUocGFyYW1zLm1vZHVsZU5hbWUpO1xuICAgIHZhbGlkYXRlRnVuY3Rpb25OYW1lKHBhcmFtcy5mdW5jdGlvbk5hbWUpO1xuXG4gICAgdGhpcy5fbW9kdWxlTmFtZSA9IHBhcmFtcy5tb2R1bGVOYW1lO1xuICAgIHRoaXMuX2Z1bmN0aW9uTmFtZSA9IHBhcmFtcy5mdW5jdGlvbk5hbWU7XG4gICAgdGhpcy5fdHlwZUFyZ3VtZW50cyA9IHBhcmFtcy50eXBlQXJndW1lbnRzIHx8IFtdO1xuICAgIHRoaXMuX2Z1bmN0aW9uQXJndW1lbnRzID0gcGFyYW1zLmZ1bmN0aW9uQXJndW1lbnRzIHx8IFtdO1xuICAgIHRoaXMuX2VudHJ5RnVuY3Rpb25BYmkgPSBwYXJhbXMuYWJpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgZW50cnkgZnVuY3Rpb24gQUJJXG4gICAqL1xuICBzZXRFbnRyeUZ1bmN0aW9uQWJpKGFiaTogRW50cnlGdW5jdGlvbkFCSSk6IHZvaWQge1xuICAgIHRoaXMuX2VudHJ5RnVuY3Rpb25BYmkgPSBhYmk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBmdWxsIGZ1bmN0aW9uIG5hbWVcbiAgICovXG4gIGdldCBmdWxsRnVuY3Rpb25OYW1lKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9tb2R1bGVOYW1lIHx8ICF0aGlzLl9mdW5jdGlvbk5hbWUpIHtcbiAgICAgIHJldHVybiAnJztcbiAgICB9XG4gICAgcmV0dXJuIGAke3RoaXMuX21vZHVsZU5hbWV9Ojoke3RoaXMuX2Z1bmN0aW9uTmFtZX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhcnNlIGEgdHJhbnNhY3Rpb24gcGF5bG9hZCB0byBleHRyYWN0IHRoZSBjdXN0b20gdHJhbnNhY3Rpb24gZGF0YVxuICAgKiBSZXF1aXJlcyBBQkkgaW5mb3JtYXRpb24gZm9yIHByb3BlciB0eXBlLWF3YXJlIGNvbnZlcnNpb25cbiAgICpcbiAgICogQHBhcmFtIHtUcmFuc2FjdGlvblBheWxvYWR9IHBheWxvYWQgLSBUaGUgdHJhbnNhY3Rpb24gcGF5bG9hZCB0byBwYXJzZVxuICAgKi9cbiAgcHJvdGVjdGVkIHBhcnNlVHJhbnNhY3Rpb25QYXlsb2FkKHBheWxvYWQ6IFRyYW5zYWN0aW9uUGF5bG9hZCk6IHZvaWQge1xuICAgIGlmICghKHBheWxvYWQgaW5zdGFuY2VvZiBUcmFuc2FjdGlvblBheWxvYWRFbnRyeUZ1bmN0aW9uKSkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdFeHBlY3RlZCBlbnRyeSBmdW5jdGlvbiBwYXlsb2FkIGZvciBjdXN0b20gdHJhbnNhY3Rpb24nKTtcbiAgICB9XG5cbiAgICBjb25zdCBlbnRyeUZ1bmN0aW9uID0gcGF5bG9hZC5lbnRyeUZ1bmN0aW9uO1xuXG4gICAgLy8gRXh0cmFjdCBmdW5jdGlvbiBkYXRhXG4gICAgY29uc3QgbW9kdWxlQWRkcmVzcyA9IGVudHJ5RnVuY3Rpb24ubW9kdWxlX25hbWUuYWRkcmVzcy50b1N0cmluZygpO1xuICAgIGNvbnN0IG1vZHVsZUlkZW50aWZpZXIgPSBlbnRyeUZ1bmN0aW9uLm1vZHVsZV9uYW1lLm5hbWUuaWRlbnRpZmllcjtcbiAgICBjb25zdCBmdW5jdGlvbklkZW50aWZpZXIgPSBlbnRyeUZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUuaWRlbnRpZmllcjtcblxuICAgIGNvbnN0IG1vZHVsZU5hbWUgPSBgJHttb2R1bGVBZGRyZXNzfTo6JHttb2R1bGVJZGVudGlmaWVyfWA7XG5cbiAgICAvLyBWYWxpZGF0ZVxuICAgIHZhbGlkYXRlTW9kdWxlTmFtZShtb2R1bGVOYW1lKTtcbiAgICB2YWxpZGF0ZUZ1bmN0aW9uTmFtZShmdW5jdGlvbklkZW50aWZpZXIpO1xuXG4gICAgdGhpcy5fbW9kdWxlTmFtZSA9IG1vZHVsZU5hbWU7XG4gICAgdGhpcy5fZnVuY3Rpb25OYW1lID0gZnVuY3Rpb25JZGVudGlmaWVyO1xuICAgIHRoaXMuX3R5cGVBcmd1bWVudHMgPSBlbnRyeUZ1bmN0aW9uLnR5cGVfYXJncy5tYXAoKHR5cGVBcmcpID0+IHR5cGVBcmcudG9TdHJpbmcoKSk7XG5cbiAgICAvLyBQYXJzZSBhcmd1bWVudHMgdXNpbmcgQUJJIGluZm9ybWF0aW9uXG4gICAgLy8gSWYgQUJJIGlzIGF2YWlsYWJsZSwgcGFyc2Ugd2l0aCB0eXBlIGF3YXJlbmVzczsgb3RoZXJ3aXNlIHN0b3JlIHJhdyBhcmdzIGZvciBsYXRlciBwcm9jZXNzaW5nXG4gICAgaWYgKHRoaXMuX2VudHJ5RnVuY3Rpb25BYmk/LnBhcmFtZXRlcnMpIHtcbiAgICAgIHRoaXMuX2Z1bmN0aW9uQXJndW1lbnRzID0gZW50cnlGdW5jdGlvbi5hcmdzLm1hcCgoYXJnOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcbiAgICAgICAgY29uc3QgcGFyYW1UeXBlID0gdGhpcy5fZW50cnlGdW5jdGlvbkFiaT8ucGFyYW1ldGVycz8uW2luZGV4XTtcbiAgICAgICAgaWYgKCFwYXJhbVR5cGUpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgICAgICBgTWlzc2luZyBBQkkgcGFyYW1ldGVyIHR5cGUgZm9yIGFyZ3VtZW50ICR7aW5kZXh9IGluICR7dGhpcy5fbW9kdWxlTmFtZX06OiR7dGhpcy5fZnVuY3Rpb25OYW1lfS4gYCArXG4gICAgICAgICAgICAgICdBQkkgcGFyYW1ldGVyIGNvdW50IG1pc21hdGNoLidcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRBcmd1bWVudEJ5QUJJKGFyZywgcGFyYW1UeXBlKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTdG9yZSByYXcgYXJndW1lbnRzIHRlbXBvcmFyaWx5IC0gdHJhbnNhY3Rpb24gd2lsbCBiZSByZS1wYXJzZWQgd2hlbiBBQkkgaXMgcHJvdmlkZWRcbiAgICAgIHRoaXMuX2Z1bmN0aW9uQXJndW1lbnRzID0gZW50cnlGdW5jdGlvbi5hcmdzLm1hcCgoYXJnOiBhbnkpID0+IGFyZyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIHRyYW5zYWN0aW9uIHBheWxvYWQgZGF0YVxuICAgKi9cbiAgcHJvdGVjdGVkIGdldFRyYW5zYWN0aW9uUGF5bG9hZERhdGEoKTogSW5wdXRHZW5lcmF0ZVRyYW5zYWN0aW9uUGF5bG9hZERhdGEge1xuICAgIGNvbnN0IGZ1bmN0aW9uTmFtZSA9IHRoaXMuZ2V0VmFsaWRhdGVkRnVsbEZ1bmN0aW9uTmFtZSgpO1xuXG4gICAgLy8gQXJndW1lbnRzIGFyZSBwcmUtcHJvY2Vzc2VkIGR1cmluZyBwYXJzaW5nIHBoYXNlXG4gICAgY29uc3QgcHJvY2Vzc2VkQXJndW1lbnRzID0gdGhpcy5fZnVuY3Rpb25Bcmd1bWVudHM7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZnVuY3Rpb246IGZ1bmN0aW9uTmFtZSxcbiAgICAgIHR5cGVBcmd1bWVudHM6IHRoaXMuX3R5cGVBcmd1bWVudHMsXG4gICAgICBmdW5jdGlvbkFyZ3VtZW50czogcHJvY2Vzc2VkQXJndW1lbnRzLFxuICAgICAgYWJpOiB0aGlzLl9lbnRyeUZ1bmN0aW9uQWJpLFxuICAgIH0gYXMgSW5wdXRHZW5lcmF0ZVRyYW5zYWN0aW9uUGF5bG9hZERhdGE7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBhcmd1bWVudCBiYXNlZCBvbiBBQkkgdHlwZSBpbmZvcm1hdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0QXJndW1lbnRCeUFCSShhcmc6IGFueSwgcGFyYW1UeXBlOiBhbnkpOiBhbnkge1xuICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byBjb252ZXJ0IGJ5dGVzIHRvIGhleCBzdHJpbmdcbiAgICBjb25zdCBieXRlc1RvSGV4ID0gKGJ5dGVzOiBudW1iZXJbXSk6IHN0cmluZyA9PiB7XG4gICAgICByZXR1cm4gJzB4JyArIGJ5dGVzLm1hcCgoYikgPT4gYi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKSkuam9pbignJyk7XG4gICAgfTtcblxuICAgIC8vIEhlbHBlciBmdW5jdGlvbiB0byB0cnkgY29udmVydGluZyBhIGhleCBzdHJpbmcgdG8gYW4gQWNjb3VudEFkZHJlc3NcbiAgICBjb25zdCB0cnlUb0FkZHJlc3MgPSAoaGV4U3RyOiBzdHJpbmcpOiBhbnkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIEFjY291bnRBZGRyZXNzLmZyb21TdHJpbmcoaGV4U3RyKTtcbiAgICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gaGV4U3RyO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBIYW5kbGUgcHJpbWl0aXZlIHZhbHVlcyAoc3RyaW5nLCBudW1iZXIsIGJvb2xlYW4pXG4gICAgaWYgKHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBhcmcgPT09ICdudW1iZXInIHx8IHR5cGVvZiBhcmcgPT09ICdib29sZWFuJykge1xuICAgICAgLy8gQWRkcmVzcyBjb252ZXJzaW9uIGZvciBoZXggc3RyaW5nc1xuICAgICAgaWYgKHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdBZGRyZXNzICYmIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnICYmIGFyZy5zdGFydHNXaXRoKCcweCcpKSB7XG4gICAgICAgIHJldHVybiB0cnlUb0FkZHJlc3MoYXJnKTtcbiAgICAgIH1cblxuICAgICAgLy8gVHlwZSBjb252ZXJzaW9ucyBiYXNlZCBvbiBwYXJhbWV0ZXIgdHlwZVxuICAgICAgaWYgKHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdCb29sKSByZXR1cm4gQm9vbGVhbihhcmcpO1xuICAgICAgaWYgKHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdVOCB8fCBwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnVTE2IHx8IHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdVMzIpXG4gICAgICAgIHJldHVybiBOdW1iZXIoYXJnKTtcbiAgICAgIGlmIChwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnVTY0IHx8IHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdVMTI4IHx8IHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdVMjU2KVxuICAgICAgICByZXR1cm4gU3RyaW5nKGFyZyk7XG5cbiAgICAgIHJldHVybiBhcmc7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIEJDUy1lbmNvZGVkIGRhdGEgd2l0aCAnZGF0YScgcHJvcGVydHlcbiAgICBpZiAoYXJnICYmIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmICdkYXRhJyBpbiBhcmcgJiYgYXJnLmRhdGEpIHtcbiAgICAgIGNvbnN0IGJ5dGVzID0gQXJyYXkuZnJvbShhcmcuZGF0YSkgYXMgbnVtYmVyW107XG4gICAgICBjb25zdCBoZXhTdHJpbmcgPSBieXRlc1RvSGV4KGJ5dGVzKTtcblxuICAgICAgcmV0dXJuIHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdBZGRyZXNzID8gdHJ5VG9BZGRyZXNzKGhleFN0cmluZykgOiBoZXhTdHJpbmc7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIG5lc3RlZCBCQ1Mgc3RydWN0dXJlcyB3aXRoICd2YWx1ZScgcHJvcGVydHlcbiAgICBpZiAoYXJnICYmIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmICd2YWx1ZScgaW4gYXJnICYmIGFyZy52YWx1ZSkge1xuICAgICAgLy8gQ2hlY2sgaWYgaW5uZXIgdmFsdWUgaXMgYSBVaW50OEFycmF5IChjb21tb24gZm9yIFU2NCBhcmd1bWVudHMpXG4gICAgICBpZiAoYXJnLnZhbHVlLnZhbHVlICYmIGFyZy52YWx1ZS52YWx1ZSBpbnN0YW5jZW9mIFVpbnQ4QXJyYXkpIHtcbiAgICAgICAgY29uc3QgYnl0ZXMgPSBBcnJheS5mcm9tKGFyZy52YWx1ZS52YWx1ZSkgYXMgbnVtYmVyW107XG4gICAgICAgIGlmICh0aGlzLmlzTnVtZXJpY1R5cGUocGFyYW1UeXBlKSkge1xuICAgICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnROdW1lcmljQXJndW1lbnQoYnl0ZXMsIHBhcmFtVHlwZSk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRm9yIG5vbi1udW1lcmljIHR5cGVzLCBjb252ZXJ0IHRvIGhleCBzdHJpbmdcbiAgICAgICAgcmV0dXJuIGJ5dGVzVG9IZXgoYnl0ZXMpO1xuICAgICAgfVxuXG4gICAgICAvLyBTaW1wbGUgdmFsdWUgd3JhcHBlclxuICAgICAgaWYgKCEoJ3ZhbHVlJyBpbiBhcmcudmFsdWUpIHx8IHR5cGVvZiBhcmcudmFsdWUudmFsdWUgIT09ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRBcmd1bWVudEJ5QUJJKGFyZy52YWx1ZSwgcGFyYW1UeXBlKTtcbiAgICAgIH1cblxuICAgICAgLy8gRG91YmxlIG5lc3RlZCBzdHJ1Y3R1cmUgd2l0aCBudW1lcmljIGtleXNcbiAgICAgIGNvbnN0IGJ5dGVzT2JqID0gYXJnLnZhbHVlLnZhbHVlO1xuICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGJ5dGVzT2JqKVxuICAgICAgICAuZmlsdGVyKChrKSA9PiAhaXNOYU4ocGFyc2VJbnQoaywgMTApKSlcbiAgICAgICAgLnNvcnQoKGEsIGIpID0+IHBhcnNlSW50KGEsIDEwKSAtIHBhcnNlSW50KGIsIDEwKSk7XG5cbiAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIGFyZztcblxuICAgICAgY29uc3QgYnl0ZXMgPSBrZXlzLm1hcCgoaykgPT4gYnl0ZXNPYmpba10pO1xuICAgICAgbGV0IGV4dHJhY3RlZFZhbHVlOiBhbnk7XG5cbiAgICAgIC8vIENvbnZlcnQgYnl0ZXMgYmFzZWQgb24gcGFyYW1ldGVyIHR5cGUgdXNpbmcgdW5pZmllZCBhcHByb2FjaFxuICAgICAgaWYgKHRoaXMuaXNOdW1lcmljVHlwZShwYXJhbVR5cGUpKSB7XG4gICAgICAgIGV4dHJhY3RlZFZhbHVlID0gdGhpcy5jb252ZXJ0TnVtZXJpY0FyZ3VtZW50KGJ5dGVzLCBwYXJhbVR5cGUpO1xuICAgICAgfSBlbHNlIGlmIChwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnQWRkcmVzcykge1xuICAgICAgICBleHRyYWN0ZWRWYWx1ZSA9IGJ5dGVzVG9IZXgoYnl0ZXMpO1xuICAgICAgfSBlbHNlIGlmIChwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnQm9vbCkge1xuICAgICAgICBleHRyYWN0ZWRWYWx1ZSA9IGJ5dGVzWzBdID09PSAxO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXh0cmFjdGVkVmFsdWUgPSBieXRlc1RvSGV4KGJ5dGVzKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHRoaXMuY29udmVydEFyZ3VtZW50QnlBQkkoZXh0cmFjdGVkVmFsdWUsIHBhcmFtVHlwZSk7XG4gICAgfVxuXG4gICAgLy8gRm9yIGFueXRoaW5nIGVsc2UsIHJldHVybiBhcy1pc1xuICAgIHJldHVybiBhcmc7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGN1c3RvbSB0cmFuc2FjdGlvbiBwYXJhbWV0ZXJzXG4gICAqL1xuICBnZXRDdXN0b21UcmFuc2FjdGlvblBhcmFtcygpOiBDdXN0b21UcmFuc2FjdGlvblBhcmFtcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZHVsZU5hbWU6IHRoaXMuX21vZHVsZU5hbWUgfHwgJycsXG4gICAgICBmdW5jdGlvbk5hbWU6IHRoaXMuX2Z1bmN0aW9uTmFtZSB8fCAnJyxcbiAgICAgIHR5cGVBcmd1bWVudHM6IHRoaXMuX3R5cGVBcmd1bWVudHMsXG4gICAgICBmdW5jdGlvbkFyZ3VtZW50czogdGhpcy5fZnVuY3Rpb25Bcmd1bWVudHMsXG4gICAgICBhYmk6IHRoaXMuX2VudHJ5RnVuY3Rpb25BYmksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVycmlkZSByZWNpcGllbnQgZ2V0dGVyIGZvciBjdXN0b20gdHJhbnNhY3Rpb25zXG4gICAqL1xuICBnZXQgcmVjaXBpZW50KCk6IGFueSB7XG4gICAgaWYgKHRoaXMuX3JlY2lwaWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhZGRyZXNzOiAnJyxcbiAgICAgICAgYW1vdW50OiAnMCcsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcmVjaXBpZW50c1swXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdmFsaWRhdGVkIGZ1bGwgZnVuY3Rpb24gbmFtZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRWYWxpZGF0ZWRGdWxsRnVuY3Rpb25OYW1lKCk6IGAke3N0cmluZ306OiR7c3RyaW5nfTo6JHtzdHJpbmd9YCB7XG4gICAgaWYgKCF0aGlzLl9tb2R1bGVOYW1lIHx8ICF0aGlzLl9mdW5jdGlvbk5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTW9kdWxlIG5hbWUgYW5kIGZ1bmN0aW9uIG5hbWUgbXVzdCBiZSBzZXQgYmVmb3JlIGJ1aWxkaW5nIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbE5hbWUgPSBgJHt0aGlzLl9tb2R1bGVOYW1lfTo6JHt0aGlzLl9mdW5jdGlvbk5hbWV9YDtcblxuICAgIC8vIEJhc2ljIHZhbGlkYXRpb25cbiAgICBjb25zdCBmdWxsRnVuY3Rpb25QYXR0ZXJuID1cbiAgICAgIC9eKDB4W2EtZkEtRjAtOV17MSw2NH18W2EtekEtWl9dW2EtekEtWjAtOV9dKik6OlthLXpBLVpfXVthLXpBLVowLTlfXSo6OlthLXpBLVpfXVthLXpBLVowLTlfXSokLztcbiAgICBpZiAoIWZ1bGxGdW5jdGlvblBhdHRlcm4udGVzdChmdWxsTmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBmdWxsIGZ1bmN0aW9uIG5hbWUgZm9ybWF0OiBcIiR7ZnVsbE5hbWV9XCIuIEV4cGVjdGVkIGZvcm1hdDogXCJhZGRyZXNzOjptb2R1bGU6OmZ1bmN0aW9uXCJgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnVsbE5hbWUgYXMgYCR7c3RyaW5nfTo6JHtzdHJpbmd9Ojoke3N0cmluZ31gO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgcGFyYW1ldGVyIHR5cGUgaXMgYSBudW1lcmljIHR5cGVcbiAgICovXG4gIHByaXZhdGUgaXNOdW1lcmljVHlwZShwYXJhbVR5cGU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnVTggfHxcbiAgICAgIHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdVMTYgfHxcbiAgICAgIHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdVMzIgfHxcbiAgICAgIHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdVNjQgfHxcbiAgICAgIHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdVMTI4IHx8XG4gICAgICBwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnVTI1NlxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBudW1lcmljIGFyZ3VtZW50IHVzaW5nIGNvbnNpc3RlbnQgbGl0dGxlLWVuZGlhbiBieXRlIGhhbmRsaW5nXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnROdW1lcmljQXJndW1lbnQoYnl0ZXM6IG51bWJlcltdLCBwYXJhbVR5cGU6IGFueSk6IGFueSB7XG4gICAgaWYgKHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdVOCB8fCBwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnVTE2IHx8IHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdVMzIpIHtcbiAgICAgIC8vIFNtYWxsIGludGVnZXJzOiB1c2UgTnVtYmVyIGZvciBjb21wYXRpYmlsaXR5XG4gICAgICBsZXQgcmVzdWx0ID0gMDtcbiAgICAgIGZvciAobGV0IGkgPSBieXRlcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQgKiAyNTYgKyBieXRlc1tpXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgaWYgKHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdVNjQgfHwgcGFyYW1UeXBlIGluc3RhbmNlb2YgVHlwZVRhZ1UxMjggfHwgcGFyYW1UeXBlIGluc3RhbmNlb2YgVHlwZVRhZ1UyNTYpIHtcbiAgICAgIC8vIExhcmdlIGludGVnZXJzOiByZXVzZSB0aGUgZXhpc3RpbmcgdXRpbGl0eSBtZXRob2RcbiAgICAgIHJldHVybiB1dGlscy5nZXRBbW91bnRGcm9tUGF5bG9hZEFyZ3MobmV3IFVpbnQ4QXJyYXkoYnl0ZXMpKTtcbiAgICB9XG5cbiAgICAvLyBGYWxsYmFjayBmb3IgdW5leHBlY3RlZCBudW1lcmljIHR5cGVzXG4gICAgcmV0dXJuICcweCcgKyBieXRlcy5tYXAoKGIpID0+IGIudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJykpLmpvaW4oJycpO1xuICB9XG59XG4iXX0=
278
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tVHJhbnNhY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL3RyYW5zYWN0aW9uL2N1c3RvbVRyYW5zYWN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLCtDQUE0QztBQUU1Qyw4Q0FBMkU7QUFDM0UsK0NBZ0I0QjtBQUU1QixvREFBK0U7QUFDL0UscURBQTZCO0FBRTdCOztHQUVHO0FBQ0gsTUFBYSxpQkFBa0IsU0FBUSx5QkFBVztJQU9oRCxZQUFZLFVBQWdDO1FBQzFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUxaLG1CQUFjLEdBQWEsRUFBRSxDQUFDO1FBQzlCLHVCQUFrQixHQUF5RSxFQUFFLENBQUM7UUFLcEcsSUFBSSxDQUFDLEtBQUssR0FBRywwQkFBZSxDQUFDLFFBQVEsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCwwQkFBMEIsQ0FBQyxNQUErQjtRQUN4RCxJQUFBLCtCQUFrQixFQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0QyxJQUFBLGlDQUFvQixFQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUUxQyxJQUFJLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDckMsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLE1BQU0sQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUM7UUFDekQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDdEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsbUJBQW1CLENBQUMsR0FBcUI7UUFDdkMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEdBQUcsQ0FBQztJQUMvQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGdCQUFnQjtRQUNsQixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUM3QyxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7UUFDRCxPQUFPLEdBQUcsSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ08sdUJBQXVCLENBQUMsT0FBMkI7UUFDM0QsSUFBSSxDQUFDLENBQUMsT0FBTyxZQUFZLHdDQUErQixDQUFDLEVBQUUsQ0FBQztZQUMxRCxNQUFNLElBQUksa0NBQXVCLENBQUMsd0RBQXdELENBQUMsQ0FBQztRQUM5RixDQUFDO1FBRUQsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLGFBQWEsQ0FBQztRQUU1Qyx3QkFBd0I7UUFDeEIsTUFBTSxhQUFhLEdBQUcsYUFBYSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDbkUsTUFBTSxnQkFBZ0IsR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7UUFDbkUsTUFBTSxrQkFBa0IsR0FBRyxhQUFhLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQztRQUVsRSxNQUFNLFVBQVUsR0FBRyxHQUFHLGFBQWEsS0FBSyxnQkFBZ0IsRUFBRSxDQUFDO1FBRTNELFdBQVc7UUFDWCxJQUFBLCtCQUFrQixFQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQy9CLElBQUEsaUNBQW9CLEVBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUV6QyxJQUFJLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQztRQUM5QixJQUFJLENBQUMsYUFBYSxHQUFHLGtCQUFrQixDQUFDO1FBQ3hDLElBQUksQ0FBQyxjQUFjLEdBQUcsYUFBYSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBRW5GLHdDQUF3QztRQUN4QyxnR0FBZ0c7UUFDaEcsSUFBSSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBUSxFQUFFLEtBQWEsRUFBRSxFQUFFO2dCQUMzRSxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzlELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDZixNQUFNLElBQUksa0NBQXVCLENBQy9CLDJDQUEyQyxLQUFLLE9BQU8sSUFBSSxDQUFDLFdBQVcsS0FBSyxJQUFJLENBQUMsYUFBYSxJQUFJO3dCQUNoRywrQkFBK0IsQ0FDbEMsQ0FBQztnQkFDSixDQUFDO2dCQUNELE9BQU8sSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNuRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxDQUFDO1lBQ04sdUZBQXVGO1lBQ3ZGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQVEsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEUsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNPLHlCQUF5QjtRQUNqQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsNEJBQTRCLEVBQUUsQ0FBQztRQUV6RCxtREFBbUQ7UUFDbkQsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7UUFFbkQsT0FBTztZQUNMLFFBQVEsRUFBRSxZQUFZO1lBQ3RCLGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNsQyxpQkFBaUIsRUFBRSxrQkFBa0I7WUFDckMsR0FBRyxFQUFFLElBQUksQ0FBQyxpQkFBaUI7U0FDVyxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNLLG9CQUFvQixDQUFDLEdBQVEsRUFBRSxTQUFjO1FBQ25ELG9EQUFvRDtRQUNwRCxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksT0FBTyxHQUFHLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDbkYsT0FBTyxJQUFJLENBQUMsd0JBQXdCLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZELENBQUM7UUFFRCwrQ0FBK0M7UUFDL0MsSUFBSSxHQUFHLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hFLE9BQU8sSUFBSSxDQUFDLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBRUQscURBQXFEO1FBQ3JELElBQUksR0FBRyxJQUFJLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxPQUFPLElBQUksR0FBRyxJQUFJLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNsRSxPQUFPLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7UUFDdkQsQ0FBQztRQUVELGtDQUFrQztRQUNsQyxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRDs7T0FFRztJQUNLLHdCQUF3QixDQUM5QixHQUE4QixFQUM5QixTQUFjO1FBRWQscUNBQXFDO1FBQ3JDLElBQUksU0FBUyxZQUFZLHVCQUFjLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUMzRixPQUFPLGVBQUssQ0FBQyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBRUQsMkNBQTJDO1FBQzNDLElBQUksU0FBUyxZQUFZLG9CQUFXO1lBQUUsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFMUQsb0NBQW9DO1FBQ3BDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE9BQU8sSUFBSSxDQUFDLCtCQUErQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLCtCQUErQixDQUFDLEdBQThCO1FBQ3BFLHdDQUF3QztRQUN4QyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxzQkFBc0IsQ0FBQyxHQUFRLEVBQUUsU0FBYztRQUNyRCxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQWEsQ0FBQztRQUMvQyxNQUFNLFNBQVMsR0FBRyxlQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRTFDLE9BQU8sU0FBUyxZQUFZLHVCQUFjLENBQUMsQ0FBQyxDQUFDLGVBQUssQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ25HLENBQUM7SUFFRDs7T0FFRztJQUNLLHdCQUF3QixDQUFDLEdBQVEsRUFBRSxTQUFjO1FBQ3ZELGtFQUFrRTtRQUNsRSxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxZQUFZLFVBQVUsRUFBRSxDQUFDO1lBQzdELE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQWEsQ0FBQztZQUN0RCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztnQkFDbEMsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO1lBQ3ZELENBQUM7WUFDRCwrQ0FBK0M7WUFDL0MsT0FBTyxlQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxnRUFBZ0U7UUFDaEUsSUFBSSxPQUFPLEdBQUcsQ0FBQyxLQUFLLEtBQUssUUFBUSxJQUFJLENBQUMsQ0FBQyxPQUFPLElBQUksR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDN0QsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztRQUN6RCxDQUFDO1FBRUQsNENBQTRDO1FBQzVDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzlELElBQUksS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQUUsT0FBTyxHQUFHLENBQUM7UUFFbkMsSUFBSSxjQUFtQixDQUFDO1FBRXhCLCtEQUErRDtRQUMvRCxJQUFJLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxjQUFjLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLEtBQUssRUFBRSxTQUFTLENBQUMsQ0FBQztRQUNqRSxDQUFDO2FBQU0sSUFBSSxTQUFTLFlBQVksdUJBQWMsRUFBRSxDQUFDO1lBQy9DLGNBQWMsR0FBRyxlQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNDLENBQUM7YUFBTSxJQUFJLFNBQVMsWUFBWSxvQkFBVyxFQUFFLENBQUM7WUFDNUMsY0FBYyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEMsQ0FBQzthQUFNLENBQUM7WUFDTixjQUFjLEdBQUcsZUFBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzQyxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRDs7T0FFRztJQUNLLHlCQUF5QixDQUFDLFNBQWM7UUFDOUMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7YUFDaEMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDdEMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFckQsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUVqQyxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRDs7T0FFRztJQUNILDBCQUEwQjtRQUN4QixPQUFPO1lBQ0wsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLElBQUksRUFBRTtZQUNsQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWEsSUFBSSxFQUFFO1lBQ3RDLGFBQWEsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNsQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQzFDLEdBQUcsRUFBRSxJQUFJLENBQUMsaUJBQWlCO1NBQzVCLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFNBQVM7UUFDWCxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE9BQU87Z0JBQ0wsT0FBTyxFQUFFLEVBQUU7Z0JBQ1gsTUFBTSxFQUFFLEdBQUc7YUFDWixDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7O09BRUc7SUFDSyw0QkFBNEI7UUFDbEMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDN0MsTUFBTSxJQUFJLEtBQUssQ0FBQyx1RUFBdUUsQ0FBQyxDQUFDO1FBQzNGLENBQUM7UUFFRCxNQUFNLFFBQVEsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLEtBQUssSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRTlELG1CQUFtQjtRQUNuQixNQUFNLG1CQUFtQixHQUN2QixnR0FBZ0csQ0FBQztRQUNuRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDeEMsTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsUUFBUSxpREFBaUQsQ0FBQyxDQUFDO1FBQ3BILENBQUM7UUFFRCxPQUFPLFFBQTZDLENBQUM7SUFDdkQsQ0FBQztJQUVEOztPQUVHO0lBQ0ssYUFBYSxDQUFDLFNBQWM7UUFDbEMsT0FBTyxDQUNMLFNBQVMsWUFBWSxrQkFBUztZQUM5QixTQUFTLFlBQVksbUJBQVU7WUFDL0IsU0FBUyxZQUFZLG1CQUFVO1lBQy9CLFNBQVMsWUFBWSxtQkFBVTtZQUMvQixTQUFTLFlBQVksb0JBQVc7WUFDaEMsU0FBUyxZQUFZLG9CQUFXLENBQ2pDLENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSyxzQkFBc0IsQ0FBQyxLQUFlLEVBQUUsU0FBYztRQUM1RCxJQUFJLFNBQVMsWUFBWSxrQkFBUyxJQUFJLFNBQVMsWUFBWSxtQkFBVSxJQUFJLFNBQVMsWUFBWSxtQkFBVSxFQUFFLENBQUM7WUFDekcsZ0RBQWdEO1lBQ2hELElBQUksTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNmLEtBQUssSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUMzQyxNQUFNLEdBQUcsTUFBTSxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELE9BQU8sTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQzNCLENBQUM7UUFFRCxJQUFJLFNBQVMsWUFBWSxtQkFBVSxJQUFJLFNBQVMsWUFBWSxvQkFBVyxJQUFJLFNBQVMsWUFBWSxvQkFBVyxFQUFFLENBQUM7WUFDNUcsb0RBQW9EO1lBQ3BELE9BQU8sZUFBSyxDQUFDLHdCQUF3QixDQUFDLElBQUksVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDL0QsQ0FBQztRQUVELCtCQUErQjtRQUMvQixPQUFPLGVBQUssQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBdFRELDhDQXNUQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvL3N0YXRpY3MnO1xuaW1wb3J0IHsgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsIFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby9zZGstY29yZSc7XG5pbXBvcnQge1xuICBBY2NvdW50QWRkcmVzcyxcbiAgRW50cnlGdW5jdGlvbkFCSSxcbiAgRW50cnlGdW5jdGlvbkFyZ3VtZW50VHlwZXMsXG4gIFNpbXBsZUVudHJ5RnVuY3Rpb25Bcmd1bWVudFR5cGVzLFxuICBJbnB1dEdlbmVyYXRlVHJhbnNhY3Rpb25QYXlsb2FkRGF0YSxcbiAgVHJhbnNhY3Rpb25QYXlsb2FkLFxuICBUcmFuc2FjdGlvblBheWxvYWRFbnRyeUZ1bmN0aW9uLFxuICBUeXBlVGFnQWRkcmVzcyxcbiAgVHlwZVRhZ0Jvb2wsXG4gIFR5cGVUYWdVOCxcbiAgVHlwZVRhZ1UxNixcbiAgVHlwZVRhZ1UzMixcbiAgVHlwZVRhZ1U2NCxcbiAgVHlwZVRhZ1UxMjgsXG4gIFR5cGVUYWdVMjU2LFxufSBmcm9tICdAYXB0b3MtbGFicy90cy1zZGsnO1xuaW1wb3J0IHsgQ3VzdG9tVHJhbnNhY3Rpb25QYXJhbXMgfSBmcm9tICcuLi9pZmFjZSc7XG5pbXBvcnQgeyB2YWxpZGF0ZU1vZHVsZU5hbWUsIHZhbGlkYXRlRnVuY3Rpb25OYW1lIH0gZnJvbSAnLi4vdXRpbHMvdmFsaWRhdGlvbic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi4vdXRpbHMnO1xuXG4vKipcbiAqIFRyYW5zYWN0aW9uIGNsYXNzIGZvciBjdXN0b20gQXB0b3MgdHJhbnNhY3Rpb25zLlxuICovXG5leHBvcnQgY2xhc3MgQ3VzdG9tVHJhbnNhY3Rpb24gZXh0ZW5kcyBUcmFuc2FjdGlvbiB7XG4gIHByaXZhdGUgX21vZHVsZU5hbWU6IHN0cmluZztcbiAgcHJpdmF0ZSBfZnVuY3Rpb25OYW1lOiBzdHJpbmc7XG4gIHByaXZhdGUgX3R5cGVBcmd1bWVudHM6IHN0cmluZ1tdID0gW107XG4gIHByaXZhdGUgX2Z1bmN0aW9uQXJndW1lbnRzOiBBcnJheTxFbnRyeUZ1bmN0aW9uQXJndW1lbnRUeXBlcyB8IFNpbXBsZUVudHJ5RnVuY3Rpb25Bcmd1bWVudFR5cGVzPiA9IFtdO1xuICBwcml2YXRlIF9lbnRyeUZ1bmN0aW9uQWJpPzogRW50cnlGdW5jdGlvbkFCSTtcblxuICBjb25zdHJ1Y3Rvcihjb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPikge1xuICAgIHN1cGVyKGNvaW5Db25maWcpO1xuICAgIHRoaXMuX3R5cGUgPSBUcmFuc2FjdGlvblR5cGUuQ3VzdG9tVHg7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBjdXN0b20gdHJhbnNhY3Rpb24gcGFyYW1ldGVyc1xuICAgKi9cbiAgc2V0Q3VzdG9tVHJhbnNhY3Rpb25QYXJhbXMocGFyYW1zOiBDdXN0b21UcmFuc2FjdGlvblBhcmFtcyk6IHZvaWQge1xuICAgIHZhbGlkYXRlTW9kdWxlTmFtZShwYXJhbXMubW9kdWxlTmFtZSk7XG4gICAgdmFsaWRhdGVGdW5jdGlvbk5hbWUocGFyYW1zLmZ1bmN0aW9uTmFtZSk7XG5cbiAgICB0aGlzLl9tb2R1bGVOYW1lID0gcGFyYW1zLm1vZHVsZU5hbWU7XG4gICAgdGhpcy5fZnVuY3Rpb25OYW1lID0gcGFyYW1zLmZ1bmN0aW9uTmFtZTtcbiAgICB0aGlzLl90eXBlQXJndW1lbnRzID0gcGFyYW1zLnR5cGVBcmd1bWVudHMgfHwgW107XG4gICAgdGhpcy5fZnVuY3Rpb25Bcmd1bWVudHMgPSBwYXJhbXMuZnVuY3Rpb25Bcmd1bWVudHMgfHwgW107XG4gICAgdGhpcy5fZW50cnlGdW5jdGlvbkFiaSA9IHBhcmFtcy5hYmk7XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBlbnRyeSBmdW5jdGlvbiBBQklcbiAgICovXG4gIHNldEVudHJ5RnVuY3Rpb25BYmkoYWJpOiBFbnRyeUZ1bmN0aW9uQUJJKTogdm9pZCB7XG4gICAgdGhpcy5fZW50cnlGdW5jdGlvbkFiaSA9IGFiaTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGZ1bGwgZnVuY3Rpb24gbmFtZVxuICAgKi9cbiAgZ2V0IGZ1bGxGdW5jdGlvbk5hbWUoKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX21vZHVsZU5hbWUgfHwgIXRoaXMuX2Z1bmN0aW9uTmFtZSkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICByZXR1cm4gYCR7dGhpcy5fbW9kdWxlTmFtZX06OiR7dGhpcy5fZnVuY3Rpb25OYW1lfWA7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgYSB0cmFuc2FjdGlvbiBwYXlsb2FkIHRvIGV4dHJhY3QgdGhlIGN1c3RvbSB0cmFuc2FjdGlvbiBkYXRhXG4gICAqIFJlcXVpcmVzIEFCSSBpbmZvcm1hdGlvbiBmb3IgcHJvcGVyIHR5cGUtYXdhcmUgY29udmVyc2lvblxuICAgKlxuICAgKiBAcGFyYW0ge1RyYW5zYWN0aW9uUGF5bG9hZH0gcGF5bG9hZCAtIFRoZSB0cmFuc2FjdGlvbiBwYXlsb2FkIHRvIHBhcnNlXG4gICAqL1xuICBwcm90ZWN0ZWQgcGFyc2VUcmFuc2FjdGlvblBheWxvYWQocGF5bG9hZDogVHJhbnNhY3Rpb25QYXlsb2FkKTogdm9pZCB7XG4gICAgaWYgKCEocGF5bG9hZCBpbnN0YW5jZW9mIFRyYW5zYWN0aW9uUGF5bG9hZEVudHJ5RnVuY3Rpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IoJ0V4cGVjdGVkIGVudHJ5IGZ1bmN0aW9uIHBheWxvYWQgZm9yIGN1c3RvbSB0cmFuc2FjdGlvbicpO1xuICAgIH1cblxuICAgIGNvbnN0IGVudHJ5RnVuY3Rpb24gPSBwYXlsb2FkLmVudHJ5RnVuY3Rpb247XG5cbiAgICAvLyBFeHRyYWN0IGZ1bmN0aW9uIGRhdGFcbiAgICBjb25zdCBtb2R1bGVBZGRyZXNzID0gZW50cnlGdW5jdGlvbi5tb2R1bGVfbmFtZS5hZGRyZXNzLnRvU3RyaW5nKCk7XG4gICAgY29uc3QgbW9kdWxlSWRlbnRpZmllciA9IGVudHJ5RnVuY3Rpb24ubW9kdWxlX25hbWUubmFtZS5pZGVudGlmaWVyO1xuICAgIGNvbnN0IGZ1bmN0aW9uSWRlbnRpZmllciA9IGVudHJ5RnVuY3Rpb24uZnVuY3Rpb25fbmFtZS5pZGVudGlmaWVyO1xuXG4gICAgY29uc3QgbW9kdWxlTmFtZSA9IGAke21vZHVsZUFkZHJlc3N9Ojoke21vZHVsZUlkZW50aWZpZXJ9YDtcblxuICAgIC8vIFZhbGlkYXRlXG4gICAgdmFsaWRhdGVNb2R1bGVOYW1lKG1vZHVsZU5hbWUpO1xuICAgIHZhbGlkYXRlRnVuY3Rpb25OYW1lKGZ1bmN0aW9uSWRlbnRpZmllcik7XG5cbiAgICB0aGlzLl9tb2R1bGVOYW1lID0gbW9kdWxlTmFtZTtcbiAgICB0aGlzLl9mdW5jdGlvbk5hbWUgPSBmdW5jdGlvbklkZW50aWZpZXI7XG4gICAgdGhpcy5fdHlwZUFyZ3VtZW50cyA9IGVudHJ5RnVuY3Rpb24udHlwZV9hcmdzLm1hcCgodHlwZUFyZykgPT4gdHlwZUFyZy50b1N0cmluZygpKTtcblxuICAgIC8vIFBhcnNlIGFyZ3VtZW50cyB1c2luZyBBQkkgaW5mb3JtYXRpb25cbiAgICAvLyBJZiBBQkkgaXMgYXZhaWxhYmxlLCBwYXJzZSB3aXRoIHR5cGUgYXdhcmVuZXNzOyBvdGhlcndpc2Ugc3RvcmUgcmF3IGFyZ3MgZm9yIGxhdGVyIHByb2Nlc3NpbmdcbiAgICBpZiAodGhpcy5fZW50cnlGdW5jdGlvbkFiaT8ucGFyYW1ldGVycykge1xuICAgICAgdGhpcy5fZnVuY3Rpb25Bcmd1bWVudHMgPSBlbnRyeUZ1bmN0aW9uLmFyZ3MubWFwKChhcmc6IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICBjb25zdCBwYXJhbVR5cGUgPSB0aGlzLl9lbnRyeUZ1bmN0aW9uQWJpPy5wYXJhbWV0ZXJzPy5baW5kZXhdO1xuICAgICAgICBpZiAoIXBhcmFtVHlwZSkge1xuICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcihcbiAgICAgICAgICAgIGBNaXNzaW5nIEFCSSBwYXJhbWV0ZXIgdHlwZSBmb3IgYXJndW1lbnQgJHtpbmRleH0gaW4gJHt0aGlzLl9tb2R1bGVOYW1lfTo6JHt0aGlzLl9mdW5jdGlvbk5hbWV9LiBgICtcbiAgICAgICAgICAgICAgJ0FCSSBwYXJhbWV0ZXIgY291bnQgbWlzbWF0Y2guJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydEFyZ3VtZW50QnlBQkkoYXJnLCBwYXJhbVR5cGUpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFN0b3JlIHJhdyBhcmd1bWVudHMgdGVtcG9yYXJpbHkgLSB0cmFuc2FjdGlvbiB3aWxsIGJlIHJlLXBhcnNlZCB3aGVuIEFCSSBpcyBwcm92aWRlZFxuICAgICAgdGhpcy5fZnVuY3Rpb25Bcmd1bWVudHMgPSBlbnRyeUZ1bmN0aW9uLmFyZ3MubWFwKChhcmc6IGFueSkgPT4gYXJnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgdHJhbnNhY3Rpb24gcGF5bG9hZCBkYXRhXG4gICAqL1xuICBwcm90ZWN0ZWQgZ2V0VHJhbnNhY3Rpb25QYXlsb2FkRGF0YSgpOiBJbnB1dEdlbmVyYXRlVHJhbnNhY3Rpb25QYXlsb2FkRGF0YSB7XG4gICAgY29uc3QgZnVuY3Rpb25OYW1lID0gdGhpcy5nZXRWYWxpZGF0ZWRGdWxsRnVuY3Rpb25OYW1lKCk7XG5cbiAgICAvLyBBcmd1bWVudHMgYXJlIHByZS1wcm9jZXNzZWQgZHVyaW5nIHBhcnNpbmcgcGhhc2VcbiAgICBjb25zdCBwcm9jZXNzZWRBcmd1bWVudHMgPSB0aGlzLl9mdW5jdGlvbkFyZ3VtZW50cztcblxuICAgIHJldHVybiB7XG4gICAgICBmdW5jdGlvbjogZnVuY3Rpb25OYW1lLFxuICAgICAgdHlwZUFyZ3VtZW50czogdGhpcy5fdHlwZUFyZ3VtZW50cyxcbiAgICAgIGZ1bmN0aW9uQXJndW1lbnRzOiBwcm9jZXNzZWRBcmd1bWVudHMsXG4gICAgICBhYmk6IHRoaXMuX2VudHJ5RnVuY3Rpb25BYmksXG4gICAgfSBhcyBJbnB1dEdlbmVyYXRlVHJhbnNhY3Rpb25QYXlsb2FkRGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGFyZ3VtZW50IGJhc2VkIG9uIEFCSSB0eXBlIGluZm9ybWF0aW9uXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRBcmd1bWVudEJ5QUJJKGFyZzogYW55LCBwYXJhbVR5cGU6IGFueSk6IGFueSB7XG4gICAgLy8gSGFuZGxlIHByaW1pdGl2ZSB2YWx1ZXMgKHN0cmluZywgbnVtYmVyLCBib29sZWFuKVxuICAgIGlmICh0eXBlb2YgYXJnID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgYXJnID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgYXJnID09PSAnYm9vbGVhbicpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRQcmltaXRpdmVBcmd1bWVudChhcmcsIHBhcmFtVHlwZSk7XG4gICAgfVxuXG4gICAgLy8gSGFuZGxlIEJDUy1lbmNvZGVkIGRhdGEgd2l0aCAnZGF0YScgcHJvcGVydHlcbiAgICBpZiAoYXJnICYmIHR5cGVvZiBhcmcgPT09ICdvYmplY3QnICYmICdkYXRhJyBpbiBhcmcgJiYgYXJnLmRhdGEpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRCY3NEYXRhQXJndW1lbnQoYXJnLCBwYXJhbVR5cGUpO1xuICAgIH1cblxuICAgIC8vIEhhbmRsZSBuZXN0ZWQgQkNTIHN0cnVjdHVyZXMgd2l0aCAndmFsdWUnIHByb3BlcnR5XG4gICAgaWYgKGFyZyAmJiB0eXBlb2YgYXJnID09PSAnb2JqZWN0JyAmJiAndmFsdWUnIGluIGFyZyAmJiBhcmcudmFsdWUpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnROZXN0ZWRCY3NBcmd1bWVudChhcmcsIHBhcmFtVHlwZSk7XG4gICAgfVxuXG4gICAgLy8gRm9yIGFueXRoaW5nIGVsc2UsIHJldHVybiBhcy1pc1xuICAgIHJldHVybiBhcmc7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBwcmltaXRpdmUgYXJndW1lbnQgdmFsdWVzIGJhc2VkIG9uIHBhcmFtZXRlciB0eXBlXG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRQcmltaXRpdmVBcmd1bWVudChcbiAgICBhcmc6IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4sXG4gICAgcGFyYW1UeXBlOiBhbnlcbiAgKTogc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IEFjY291bnRBZGRyZXNzIHtcbiAgICAvLyBBZGRyZXNzIGNvbnZlcnNpb24gZm9yIGhleCBzdHJpbmdzXG4gICAgaWYgKHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdBZGRyZXNzICYmIHR5cGVvZiBhcmcgPT09ICdzdHJpbmcnICYmIGFyZy5zdGFydHNXaXRoKCcweCcpKSB7XG4gICAgICByZXR1cm4gdXRpbHMudHJ5UGFyc2VBY2NvdW50QWRkcmVzcyhhcmcpO1xuICAgIH1cblxuICAgIC8vIFR5cGUgY29udmVyc2lvbnMgYmFzZWQgb24gcGFyYW1ldGVyIHR5cGVcbiAgICBpZiAocGFyYW1UeXBlIGluc3RhbmNlb2YgVHlwZVRhZ0Jvb2wpIHJldHVybiBCb29sZWFuKGFyZyk7XG5cbiAgICAvLyBVc2UgdW5pZmllZCBudW1lcmljIHR5cGUgaGFuZGxpbmdcbiAgICBpZiAodGhpcy5pc051bWVyaWNUeXBlKHBhcmFtVHlwZSkpIHtcbiAgICAgIHJldHVybiB0aGlzLmNvbnZlcnRQcmltaXRpdmVOdW1lcmljQXJndW1lbnQoYXJnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXJnO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgcHJpbWl0aXZlIG51bWVyaWMgYXJndW1lbnRzIHRvIHN0cmluZ1xuICAgKiAtIEJpZyBudW1iZXJzIGJyZWFrIEphdmFTY3JpcHQgKHByZWNpc2lvbiBsb3NzKVxuICAgKiAtIFN0cmluZyBzYWZlciBmb3IgbGFyZ2UgVTY0L1UxMjgvVTI1NiB2YWx1ZXNcbiAgICogLSBBcHRvcyBTREsgY29udmVydHMgc3RyaW5nIHRvIGNvcnJlY3QgdHlwZSBhdXRvbWF0aWNhbGx5XG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnRQcmltaXRpdmVOdW1lcmljQXJndW1lbnQoYXJnOiBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuKTogc3RyaW5nIHtcbiAgICAvLyBBbHdheXMgc3RyaW5nIC0gc2FmZXIgZm9yIGJpZyBudW1iZXJzXG4gICAgcmV0dXJuIFN0cmluZyhhcmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgQkNTIGRhdGEgYXJndW1lbnQgd2l0aCAnZGF0YScgcHJvcGVydHlcbiAgICovXG4gIHByaXZhdGUgY29udmVydEJjc0RhdGFBcmd1bWVudChhcmc6IGFueSwgcGFyYW1UeXBlOiBhbnkpOiBzdHJpbmcgfCBBY2NvdW50QWRkcmVzcyB7XG4gICAgY29uc3QgYnl0ZXMgPSBBcnJheS5mcm9tKGFyZy5kYXRhKSBhcyBudW1iZXJbXTtcbiAgICBjb25zdCBoZXhTdHJpbmcgPSB1dGlscy5ieXRlc1RvSGV4KGJ5dGVzKTtcblxuICAgIHJldHVybiBwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnQWRkcmVzcyA/IHV0aWxzLnRyeVBhcnNlQWNjb3VudEFkZHJlc3MoaGV4U3RyaW5nKSA6IGhleFN0cmluZztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IG5lc3RlZCBCQ1MgYXJndW1lbnQgd2l0aCAndmFsdWUnIHByb3BlcnR5XG4gICAqL1xuICBwcml2YXRlIGNvbnZlcnROZXN0ZWRCY3NBcmd1bWVudChhcmc6IGFueSwgcGFyYW1UeXBlOiBhbnkpOiBhbnkge1xuICAgIC8vIENoZWNrIGlmIGlubmVyIHZhbHVlIGlzIGEgVWludDhBcnJheSAoY29tbW9uIGZvciBVNjQgYXJndW1lbnRzKVxuICAgIGlmIChhcmcudmFsdWUudmFsdWUgJiYgYXJnLnZhbHVlLnZhbHVlIGluc3RhbmNlb2YgVWludDhBcnJheSkge1xuICAgICAgY29uc3QgYnl0ZXMgPSBBcnJheS5mcm9tKGFyZy52YWx1ZS52YWx1ZSkgYXMgbnVtYmVyW107XG4gICAgICBpZiAodGhpcy5pc051bWVyaWNUeXBlKHBhcmFtVHlwZSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydE51bWVyaWNBcmd1bWVudChieXRlcywgcGFyYW1UeXBlKTtcbiAgICAgIH1cbiAgICAgIC8vIEZvciBub24tbnVtZXJpYyB0eXBlcywgY29udmVydCB0byBoZXggc3RyaW5nXG4gICAgICByZXR1cm4gdXRpbHMuYnl0ZXNUb0hleChieXRlcyk7XG4gICAgfVxuXG4gICAgLy8gU2ltcGxlIHZhbHVlIHdyYXBwZXIgLSBmaXggdGhlIGJ1ZyBpbiBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvblxuICAgIGlmICh0eXBlb2YgYXJnLnZhbHVlICE9PSAnb2JqZWN0JyB8fCAhKCd2YWx1ZScgaW4gYXJnLnZhbHVlKSkge1xuICAgICAgcmV0dXJuIHRoaXMuY29udmVydEFyZ3VtZW50QnlBQkkoYXJnLnZhbHVlLCBwYXJhbVR5cGUpO1xuICAgIH1cblxuICAgIC8vIERvdWJsZSBuZXN0ZWQgc3RydWN0dXJlIHdpdGggbnVtZXJpYyBrZXlzXG4gICAgY29uc3QgYnl0ZXMgPSB0aGlzLmV4dHJhY3RCeXRlc0Zyb21CY3NPYmplY3QoYXJnLnZhbHVlLnZhbHVlKTtcbiAgICBpZiAoYnl0ZXMubGVuZ3RoID09PSAwKSByZXR1cm4gYXJnO1xuXG4gICAgbGV0IGV4dHJhY3RlZFZhbHVlOiBhbnk7XG5cbiAgICAvLyBDb252ZXJ0IGJ5dGVzIGJhc2VkIG9uIHBhcmFtZXRlciB0eXBlIHVzaW5nIHVuaWZpZWQgYXBwcm9hY2hcbiAgICBpZiAodGhpcy5pc051bWVyaWNUeXBlKHBhcmFtVHlwZSkpIHtcbiAgICAgIGV4dHJhY3RlZFZhbHVlID0gdGhpcy5jb252ZXJ0TnVtZXJpY0FyZ3VtZW50KGJ5dGVzLCBwYXJhbVR5cGUpO1xuICAgIH0gZWxzZSBpZiAocGFyYW1UeXBlIGluc3RhbmNlb2YgVHlwZVRhZ0FkZHJlc3MpIHtcbiAgICAgIGV4dHJhY3RlZFZhbHVlID0gdXRpbHMuYnl0ZXNUb0hleChieXRlcyk7XG4gICAgfSBlbHNlIGlmIChwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnQm9vbCkge1xuICAgICAgZXh0cmFjdGVkVmFsdWUgPSBieXRlc1swXSA9PT0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXh0cmFjdGVkVmFsdWUgPSB1dGlscy5ieXRlc1RvSGV4KGJ5dGVzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5jb252ZXJ0QXJndW1lbnRCeUFCSShleHRyYWN0ZWRWYWx1ZSwgcGFyYW1UeXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0IGJ5dGVzIGZyb20gQkNTIG9iamVjdCB3aXRoIG51bWVyaWMga2V5c1xuICAgKi9cbiAgcHJpdmF0ZSBleHRyYWN0Qnl0ZXNGcm9tQmNzT2JqZWN0KGJjc09iamVjdDogYW55KTogbnVtYmVyW10ge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhiY3NPYmplY3QpXG4gICAgICAuZmlsdGVyKChrKSA9PiAhaXNOYU4ocGFyc2VJbnQoaywgMTApKSlcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBwYXJzZUludChhLCAxMCkgLSBwYXJzZUludChiLCAxMCkpO1xuXG4gICAgaWYgKGtleXMubGVuZ3RoID09PSAwKSByZXR1cm4gW107XG5cbiAgICByZXR1cm4ga2V5cy5tYXAoKGspID0+IGJjc09iamVjdFtrXSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGN1c3RvbSB0cmFuc2FjdGlvbiBwYXJhbWV0ZXJzXG4gICAqL1xuICBnZXRDdXN0b21UcmFuc2FjdGlvblBhcmFtcygpOiBDdXN0b21UcmFuc2FjdGlvblBhcmFtcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1vZHVsZU5hbWU6IHRoaXMuX21vZHVsZU5hbWUgfHwgJycsXG4gICAgICBmdW5jdGlvbk5hbWU6IHRoaXMuX2Z1bmN0aW9uTmFtZSB8fCAnJyxcbiAgICAgIHR5cGVBcmd1bWVudHM6IHRoaXMuX3R5cGVBcmd1bWVudHMsXG4gICAgICBmdW5jdGlvbkFyZ3VtZW50czogdGhpcy5fZnVuY3Rpb25Bcmd1bWVudHMsXG4gICAgICBhYmk6IHRoaXMuX2VudHJ5RnVuY3Rpb25BYmksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBPdmVycmlkZSByZWNpcGllbnQgZ2V0dGVyIGZvciBjdXN0b20gdHJhbnNhY3Rpb25zXG4gICAqL1xuICBnZXQgcmVjaXBpZW50KCk6IGFueSB7XG4gICAgaWYgKHRoaXMuX3JlY2lwaWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBhZGRyZXNzOiAnJyxcbiAgICAgICAgYW1vdW50OiAnMCcsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcmVjaXBpZW50c1swXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdmFsaWRhdGVkIGZ1bGwgZnVuY3Rpb24gbmFtZVxuICAgKi9cbiAgcHJpdmF0ZSBnZXRWYWxpZGF0ZWRGdWxsRnVuY3Rpb25OYW1lKCk6IGAke3N0cmluZ306OiR7c3RyaW5nfTo6JHtzdHJpbmd9YCB7XG4gICAgaWYgKCF0aGlzLl9tb2R1bGVOYW1lIHx8ICF0aGlzLl9mdW5jdGlvbk5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTW9kdWxlIG5hbWUgYW5kIGZ1bmN0aW9uIG5hbWUgbXVzdCBiZSBzZXQgYmVmb3JlIGJ1aWxkaW5nIHRyYW5zYWN0aW9uJyk7XG4gICAgfVxuXG4gICAgY29uc3QgZnVsbE5hbWUgPSBgJHt0aGlzLl9tb2R1bGVOYW1lfTo6JHt0aGlzLl9mdW5jdGlvbk5hbWV9YDtcblxuICAgIC8vIEJhc2ljIHZhbGlkYXRpb25cbiAgICBjb25zdCBmdWxsRnVuY3Rpb25QYXR0ZXJuID1cbiAgICAgIC9eKDB4W2EtZkEtRjAtOV17MSw2NH18W2EtekEtWl9dW2EtekEtWjAtOV9dKik6OlthLXpBLVpfXVthLXpBLVowLTlfXSo6OlthLXpBLVpfXVthLXpBLVowLTlfXSokLztcbiAgICBpZiAoIWZ1bGxGdW5jdGlvblBhdHRlcm4udGVzdChmdWxsTmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBmdWxsIGZ1bmN0aW9uIG5hbWUgZm9ybWF0OiBcIiR7ZnVsbE5hbWV9XCIuIEV4cGVjdGVkIGZvcm1hdDogXCJhZGRyZXNzOjptb2R1bGU6OmZ1bmN0aW9uXCJgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZnVsbE5hbWUgYXMgYCR7c3RyaW5nfTo6JHtzdHJpbmd9Ojoke3N0cmluZ31gO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGEgcGFyYW1ldGVyIHR5cGUgaXMgYSBudW1lcmljIHR5cGVcbiAgICovXG4gIHByaXZhdGUgaXNOdW1lcmljVHlwZShwYXJhbVR5cGU6IGFueSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICBwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnVTggfHxcbiAgICAgIHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdVMTYgfHxcbiAgICAgIHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdVMzIgfHxcbiAgICAgIHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdVNjQgfHxcbiAgICAgIHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdVMTI4IHx8XG4gICAgICBwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnVTI1NlxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBieXRlIGFycmF5cyB0byBzdHJpbmcgbnVtYmVyc1xuICAgKiAtIFNtYWxsIHR5cGVzIChVOC9VMTYvVTMyKTogMS00IGJ5dGVzLCBwYXJzZSBtYW51YWxseVxuICAgKiAtIExhcmdlIHR5cGVzIChVNjQvVTEyOC9VMjU2KTogOCsgYnl0ZXMsIHVzZSBleGlzdGluZyB1dGlsaXR5XG4gICAqIC0gQm90aCByZXR1cm4gc3RyaW5nIGZvciBjb25zaXN0ZW5jeVxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0TnVtZXJpY0FyZ3VtZW50KGJ5dGVzOiBudW1iZXJbXSwgcGFyYW1UeXBlOiBhbnkpOiBzdHJpbmcge1xuICAgIGlmIChwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnVTggfHwgcGFyYW1UeXBlIGluc3RhbmNlb2YgVHlwZVRhZ1UxNiB8fCBwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnVTMyKSB7XG4gICAgICAvLyBTbWFsbCB0eXBlczogcGFyc2UgYnl0ZXMgbWFudWFsbHkgKDEtNCBieXRlcylcbiAgICAgIGxldCByZXN1bHQgPSAwO1xuICAgICAgZm9yIChsZXQgaSA9IGJ5dGVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgIHJlc3VsdCA9IHJlc3VsdCAqIDI1NiArIGJ5dGVzW2ldO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJlc3VsdC50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGlmIChwYXJhbVR5cGUgaW5zdGFuY2VvZiBUeXBlVGFnVTY0IHx8IHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdVMTI4IHx8IHBhcmFtVHlwZSBpbnN0YW5jZW9mIFR5cGVUYWdVMjU2KSB7XG4gICAgICAvLyBMYXJnZSB0eXBlczogdXNlIGV4aXN0aW5nIG1ldGhvZCAobmVlZHMgOCsgYnl0ZXMpXG4gICAgICByZXR1cm4gdXRpbHMuZ2V0QW1vdW50RnJvbVBheWxvYWRBcmdzKG5ldyBVaW50OEFycmF5KGJ5dGVzKSk7XG4gICAgfVxuXG4gICAgLy8gVW5rbm93biB0eXBlOiBjb252ZXJ0IHRvIGhleFxuICAgIHJldHVybiB1dGlscy5ieXRlc1RvSGV4KGJ5dGVzKTtcbiAgfVxufVxuIl19
@@ -1,4 +1,4 @@
1
- import { EntryFunctionArgument, FeePayerRawTransaction, SignedTransaction, TransactionPayload } from '@aptos-labs/ts-sdk';
1
+ import { AccountAddress, EntryFunctionArgument, FeePayerRawTransaction, SignedTransaction, TransactionPayload } from '@aptos-labs/ts-sdk';
2
2
  import { BaseUtils, TransactionRecipient, TransactionType } from '@bitgo/sdk-core';
3
3
  import { RecipientsValidationResult } from './iface';
4
4
  export declare class Utils implements BaseUtils {
@@ -37,6 +37,14 @@ export declare class Utils implements BaseUtils {
37
37
  * It is set to 1 week from now.
38
38
  */
39
39
  getTxnExpirationTimestamp(): number;
40
+ /**
41
+ * Convert bytes array to hex string with 0x prefix
42
+ */
43
+ bytesToHex(bytes: number[]): string;
44
+ /**
45
+ * Try to convert hex string to AccountAddress, return original string if conversion fails
46
+ */
47
+ tryParseAccountAddress(hexStr: string): AccountAddress | string;
40
48
  }
41
49
  declare const utils: Utils;
42
50
  export default utils;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,qBAAqB,EACrB,sBAAsB,EAEtB,iBAAiB,EACjB,kBAAkB,EAGnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,SAAS,EAIT,oBAAoB,EACpB,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAgBzB,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAErD,qBAAa,KAAM,YAAW,SAAS;IACrC,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,kBAAkB;IAClB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC,kBAAkB;IAClB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIvC,kBAAkB;IAClB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAItC,kBAAkB;IAClB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C,kBAAkB;IAClB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAKlD,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAOlD,wCAAwC,CAAC,OAAO,EAAE,kBAAkB,GAAG,eAAe;IAwBtF,0BAA0B,CACxB,UAAU,EAAE,qBAAqB,EACjC,SAAS,EAAE,qBAAqB,GAC/B,0BAA0B;IA0B7B,eAAe,CAAC,UAAU,EAAE,qBAAqB,EAAE,SAAS,EAAE,qBAAqB,GAAG,oBAAoB,EAAE;IAW5G,4BAA4B,CAAC,cAAc,EAAE,MAAM,GAAG,iBAAiB;IAMvE,iCAAiC,CAAC,cAAc,EAAE,MAAM,GAAG,sBAAsB;IAMjF,+BAA+B,CAAC,eAAe,EAAE,UAAU,GAAG,MAAM,EAAE;IAMtE,oBAAoB,CAAC,eAAe,EAAE,UAAU,GAAG,UAAU,EAAE;IAM/D,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAIjD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAInC,wBAAwB,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM;IAQvD;;;OAGG;IACH,yBAAyB,IAAI,MAAM;CAGpC;AAED,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/lib/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EAId,qBAAqB,EACrB,sBAAsB,EAEtB,iBAAiB,EACjB,kBAAkB,EAGnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,SAAS,EAIT,oBAAoB,EACpB,eAAe,EAChB,MAAM,iBAAiB,CAAC;AAgBzB,OAAO,EAAE,0BAA0B,EAAE,MAAM,SAAS,CAAC;AAErD,qBAAa,KAAM,YAAW,SAAS;IACrC,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIxC,kBAAkB;IAClB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIrC,kBAAkB;IAClB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIvC,kBAAkB;IAClB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAItC,kBAAkB;IAClB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAI5C,kBAAkB;IAClB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI3C,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAKlD,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAOlD,wCAAwC,CAAC,OAAO,EAAE,kBAAkB,GAAG,eAAe;IAwBtF,0BAA0B,CACxB,UAAU,EAAE,qBAAqB,EACjC,SAAS,EAAE,qBAAqB,GAC/B,0BAA0B;IA0B7B,eAAe,CAAC,UAAU,EAAE,qBAAqB,EAAE,SAAS,EAAE,qBAAqB,GAAG,oBAAoB,EAAE;IAW5G,4BAA4B,CAAC,cAAc,EAAE,MAAM,GAAG,iBAAiB;IAMvE,iCAAiC,CAAC,cAAc,EAAE,MAAM,GAAG,sBAAsB;IAMjF,+BAA+B,CAAC,eAAe,EAAE,UAAU,GAAG,MAAM,EAAE;IAMtE,oBAAoB,CAAC,eAAe,EAAE,UAAU,GAAG,UAAU,EAAE;IAM/D,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAIjD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAInC;;;;OAIG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAInC,wBAAwB,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM;IAQvD;;;OAGG;IACH,yBAAyB,IAAI,MAAM;IAInC;;OAEG;IACH,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM;IAInC;;OAEG;IACH,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,MAAM;CAOhE;AAED,QAAA,MAAM,KAAK,OAAc,CAAC;AAE1B,eAAe,KAAK,CAAC"}
@@ -148,8 +148,25 @@ class Utils {
148
148
  getTxnExpirationTimestamp() {
149
149
  return Math.floor(Date.now() / 1e3) + constants_1.SECONDS_PER_WEEK;
150
150
  }
151
+ /**
152
+ * Convert bytes array to hex string with 0x prefix
153
+ */
154
+ bytesToHex(bytes) {
155
+ return '0x' + bytes.map((b) => b.toString(16).padStart(2, '0')).join('');
156
+ }
157
+ /**
158
+ * Try to convert hex string to AccountAddress, return original string if conversion fails
159
+ */
160
+ tryParseAccountAddress(hexStr) {
161
+ try {
162
+ return ts_sdk_1.AccountAddress.fromString(hexStr);
163
+ }
164
+ catch {
165
+ return hexStr;
166
+ }
167
+ }
151
168
  }
152
169
  exports.Utils = Utils;
153
170
  const utils = new Utils();
154
171
  exports.default = utils;
155
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLCtDQVk0QjtBQUM1Qiw4Q0FPeUI7QUFDekIsMkNBYXFCO0FBQ3JCLGdFQUFxQztBQUdyQyxNQUFhLEtBQUs7SUFDaEIsa0JBQWtCO0lBQ2xCLGNBQWMsQ0FBQyxPQUFlO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsOEJBQWtCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsK0JBQW1CLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGlCQUFpQixDQUFDLEdBQVc7UUFDM0IsT0FBTyxJQUFBLGtDQUF1QixFQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsZ0JBQWdCLENBQUMsR0FBVztRQUMxQixPQUFPLElBQUEsa0NBQXVCLEVBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixnQkFBZ0IsQ0FBQyxTQUFpQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLGdDQUFvQixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixvQkFBb0IsQ0FBQyxJQUFZO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUscUNBQXlCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWEsRUFBRSxNQUFjO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLHVCQUF1QixNQUFNLElBQUksQ0FBQyxDQUFDO1FBQzVELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxL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QUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3BELENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsY0FBYyxDQUFDLEdBQVc7UUFDeEIsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsd0JBQXdCLENBQUMsU0FBcUI7UUFDNUMsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM1QyxNQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDaEQsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNsRCxNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDMUMsT0FBTyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDM0IsQ0FBQztJQUVEOzs7T0FHRztJQUNILHlCQUF5QjtRQUN2QixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxHQUFHLDRCQUFnQixDQUFDO0lBQ3pELENBQUM7Q0FDRjtBQW5LRCxzQkFtS0M7QUFFRCxNQUFNLEtBQUssR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO0FBRTFCLGtCQUFlLEtBQUssQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFjY291bnRBZGRyZXNzLFxuICBBdXRoZW50aWNhdGlvbktleSxcbiAgRGVzZXJpYWxpemVyLFxuICBFZDI1NTE5UHVibGljS2V5LFxuICBFbnRyeUZ1bmN0aW9uQXJndW1lbnQsXG4gIEZlZVBheWVyUmF3VHJhbnNhY3Rpb24sXG4gIEhleCxcbiAgU2lnbmVkVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uUGF5bG9hZCxcbiAgVHJhbnNhY3Rpb25QYXlsb2FkRW50cnlGdW5jdGlvbixcbiAgVTY0LFxufSBmcm9tICdAYXB0b3MtbGFicy90cy1zZGsnO1xuaW1wb3J0IHtcbiAgQmFzZVV0aWxzLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXksXG4gIGlzVmFsaWRFZDI1NTE5U2VjcmV0S2V5LFxuICBUcmFuc2FjdGlvblJlY2lwaWVudCxcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28vc2RrLWNvcmUnO1xuaW1wb3J0IHtcbiAgQUREUkVTU19CWVRFU19MRU5HVEgsXG4gIEFNT1VOVF9CWVRFU19MRU5HVEgsXG4gIEFQVF9BRERSRVNTX0xFTkdUSCxcbiAgQVBUX0JMT0NLX0lEX0xFTkdUSCxcbiAgQVBUX1NJR05BVFVSRV9MRU5HVEgsXG4gIEFQVF9UUkFOU0FDVElPTl9JRF9MRU5HVEgsXG4gIENPSU5fQkFUQ0hfVFJBTlNGRVJfRlVOQ1RJT04sXG4gIENPSU5fVFJBTlNGRVJfRlVOQ1RJT04sXG4gIERJR0lUQUxfQVNTRVRfVFJBTlNGRVJfRlVOQ1RJT04sXG4gIEZVTkdJQkxFX0FTU0VUX0JBVENIX1RSQU5TRkVSX0ZVTkNUSU9OLFxuICBGVU5HSUJMRV9BU1NFVF9UUkFOU0ZFUl9GVU5DVElPTixcbiAgU0VDT05EU19QRVJfV0VFSyxcbn0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgUmVjaXBpZW50c1ZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICcuL2lmYWNlJztcblxuZXhwb3J0IGNsYXNzIFV0aWxzIGltcGxlbWVudHMgQmFzZVV0aWxzIHtcbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRIZXgoYWRkcmVzcywgQVBUX0FERFJFU1NfTEVOR1RIKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQmxvY2tJZChoYXNoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkSGV4KGhhc2gsIEFQVF9CTE9DS19JRF9MRU5HVEgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRQcml2YXRlS2V5KGtleTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGlzVmFsaWRFZDI1NTE5U2VjcmV0S2V5KGtleSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZFB1YmxpY0tleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1ZhbGlkRWQyNTUxOVB1YmxpY0tleShrZXkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRTaWduYXR1cmUoc2lnbmF0dXJlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkSGV4KHNpZ25hdHVyZSwgQVBUX1NJR05BVFVSRV9MRU5HVEgpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRUcmFuc2FjdGlvbklkKHR4SWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzVmFsaWRIZXgodHhJZCwgQVBUX1RSQU5TQUNUSU9OX0lEX0xFTkdUSCk7XG4gIH1cblxuICBpc1ZhbGlkSGV4KHZhbHVlOiBzdHJpbmcsIGxlbmd0aDogbnVtYmVyKTogYm9vbGVhbiB7XG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKGBeKDB4fDBYKVthLWZBLUYwLTldeyR7bGVuZ3RofX0kYCk7XG4gICAgcmV0dXJuIHJlZ2V4LnRlc3QodmFsdWUpO1xuICB9XG5cbiAgZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHVibGljS2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGFwdG9zUHVibGljS2V5ID0gbmV3IEVkMjU1MTlQdWJsaWNLZXkoQnVmZmVyLmZyb20ocHVibGljS2V5LCAnaGV4JykpO1xuICAgIGNvbnN0IGF1dGhLZXkgPSBBdXRoZW50aWNhdGlvbktleS5mcm9tUHVibGljS2V5KHsgcHVibGljS2V5OiBhcHRvc1B1YmxpY0tleSB9KTtcbiAgICBjb25zdCBhY2NvdW50QWRkcmVzcyA9IGF1dGhLZXkuZGVyaXZlZEFkZHJlc3MoKTtcbiAgICByZXR1cm4gYWNjb3VudEFkZHJlc3MudG9TdHJpbmcoKTtcbiAgfVxuXG4gIGdldFRyYW5zYWN0aW9uVHlwZUZyb21UcmFuc2FjdGlvblBheWxvYWQocGF5bG9hZDogVHJhbnNhY3Rpb25QYXlsb2FkKTogVHJhbnNhY3Rpb25UeXBlIHtcbiAgICBpZiAoIShwYXlsb2FkIGluc3RhbmNlb2YgVHJhbnNhY3Rpb25QYXlsb2FkRW50cnlGdW5jdGlvbikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBQYXlsb2FkOiBFeHBlY3RlZCBUcmFuc2FjdGlvblBheWxvYWRFbnRyeUZ1bmN0aW9uJyk7XG4gICAgfVxuICAgIGNvbnN0IGVudHJ5RnVuY3Rpb24gPSBwYXlsb2FkLmVudHJ5RnVuY3Rpb247XG4gICAgY29uc3QgbW9kdWxlQWRkcmVzcyA9IGVudHJ5RnVuY3Rpb24ubW9kdWxlX25hbWUuYWRkcmVzcy50b1N0cmluZygpO1xuICAgIGNvbnN0IG1vZHVsZUlkZW50aWZpZXIgPSBlbnRyeUZ1bmN0aW9uLm1vZHVsZV9uYW1lLm5hbWUuaWRlbnRpZmllcjtcbiAgICBjb25zdCBmdW5jdGlvbklkZW50aWZpZXIgPSBlbnRyeUZ1bmN0aW9uLmZ1bmN0aW9uX25hbWUuaWRlbnRpZmllcjtcbiAgICBjb25zdCB1bmlxdWVJZGVudGlmaWVyID0gYCR7bW9kdWxlQWRkcmVzc306OiR7bW9kdWxlSWRlbnRpZmllcn06OiR7ZnVuY3Rpb25JZGVudGlmaWVyfWA7XG4gICAgc3dpdGNoICh1bmlxdWVJZGVudGlmaWVyKSB7XG4gICAgICBjYXNlIENPSU5fVFJBTlNGRVJfRlVOQ1RJT046XG4gICAgICBjYXNlIENPSU5fQkFUQ0hfVFJBTlNGRVJfRlVOQ1RJT046XG4gICAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZDtcbiAgICAgIGNhc2UgRlVOR0lCTEVfQVNTRVRfVFJBTlNGRVJfRlVOQ1RJT046XG4gICAgICBjYXNlIEZVTkdJQkxFX0FTU0VUX0JBVENIX1RSQU5TRkVSX0ZVTkNUSU9OOlxuICAgICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlNlbmRUb2tlbjtcbiAgICAgIGNhc2UgRElHSVRBTF9BU1NFVF9UUkFOU0ZFUl9GVU5DVElPTjpcbiAgICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kTkZUO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gRm9yIGFueSBvdGhlciBmdW5jdGlvbiBjYWxscywgdHJlYXQgYXMgYSBjdXN0b20gdHJhbnNhY3Rpb25cbiAgICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5DdXN0b21UeDtcbiAgICB9XG4gIH1cblxuICBmZXRjaEFuZFZhbGlkYXRlUmVjaXBpZW50cyhcbiAgICBhZGRyZXNzQXJnOiBFbnRyeUZ1bmN0aW9uQXJndW1lbnQsXG4gICAgYW1vdW50QXJnOiBFbnRyeUZ1bmN0aW9uQXJndW1lbnRcbiAgKTogUmVjaXBpZW50c1ZhbGlkYXRpb25SZXN1bHQge1xuICAgIGNvbnN0IGFkZHJlc3NCeXRlcyA9IGFkZHJlc3NBcmcuYmNzVG9CeXRlcygpO1xuICAgIGNvbnN0IGFtb3VudEJ5dGVzID0gYW1vdW50QXJnLmJjc1RvQnl0ZXMoKTtcbiAgICBsZXQgZGVzZXJpYWxpemVkQWRkcmVzc2VzOiBzdHJpbmdbXTtcbiAgICBsZXQgZGVzZXJpYWxpemVkQW1vdW50czogVWludDhBcnJheTxBcnJheUJ1ZmZlcj5bXTtcbiAgICBpZiAoYWRkcmVzc0J5dGVzLmxlbmd0aCA+IEFERFJFU1NfQllURVNfTEVOR1RIIHx8IGFtb3VudEJ5dGVzLmxlbmd0aCA+IEFNT1VOVF9CWVRFU19MRU5HVEgpIHtcbiAgICAgIGRlc2VyaWFsaXplZEFkZHJlc3NlcyA9IHV0aWxzLmRlc2VyaWFsaXplQWNjb3VudEFkZHJlc3NWZWN0b3IoYWRkcmVzc0J5dGVzKTtcbiAgICAgIGRlc2VyaWFsaXplZEFtb3VudHMgPSB1dGlscy5kZXNlcmlhbGl6ZVU2NFZlY3RvcihhbW91bnRCeXRlcyk7XG4gICAgICBpZiAoZGVzZXJpYWxpemVkQWRkcmVzc2VzLmxlbmd0aCAhPT0gZGVzZXJpYWxpemVkQW1vdW50cy5sZW5ndGgpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcignaW52YWxpZCBwYXlsb2FkIGVudHJ5IGZ1bmN0aW9uIGFyZ3VtZW50cyA6IGFkZHJlc3NlcyBhbmQgYW1vdW50cyBsZW5ndGggbWlzbWF0Y2gnKTtcbiAgICAgICAgcmV0dXJuIHsgcmVjaXBpZW50czogeyBkZXNlcmlhbGl6ZWRBZGRyZXNzZXM6IFtdLCBkZXNlcmlhbGl6ZWRBbW91bnRzOiBbXSB9LCBpc1ZhbGlkOiBmYWxzZSB9O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBkZXNlcmlhbGl6ZWRBZGRyZXNzZXMgPSBbYWRkcmVzc0FyZy50b1N0cmluZygpXTtcbiAgICAgIGRlc2VyaWFsaXplZEFtb3VudHMgPSBbYW1vdW50Qnl0ZXNdO1xuICAgIH1cbiAgICBjb25zdCBhbGxBZGRyZXNzZXNWYWxpZCA9IGRlc2VyaWFsaXplZEFkZHJlc3Nlcy5ldmVyeSgoYWRkcmVzcykgPT4gdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcy50b1N0cmluZygpKSk7XG4gICAgY29uc3QgYWxsQW1vdW50c1ZhbGlkID0gZGVzZXJpYWxpemVkQW1vdW50cy5ldmVyeSgoYW1vdW50KSA9PlxuICAgICAgbmV3IEJpZ051bWJlcih1dGlscy5nZXRBbW91bnRGcm9tUGF5bG9hZEFyZ3MoYW1vdW50KSkuaXNHcmVhdGVyVGhhbigwKVxuICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlY2lwaWVudHM6IHsgZGVzZXJpYWxpemVkQWRkcmVzc2VzLCBkZXNlcmlhbGl6ZWRBbW91bnRzIH0sXG4gICAgICBpc1ZhbGlkOiBhbGxBZGRyZXNzZXNWYWxpZCAmJiBhbGxBbW91bnRzVmFsaWQsXG4gICAgfTtcbiAgfVxuXG4gIHBhcnNlUmVjaXBpZW50cyhhZGRyZXNzQXJnOiBFbnRyeUZ1bmN0aW9uQXJndW1lbnQsIGFtb3VudEFyZzogRW50cnlGdW5jdGlvbkFyZ3VtZW50KTogVHJhbnNhY3Rpb25SZWNpcGllbnRbXSB7XG4gICAgY29uc3QgeyByZWNpcGllbnRzLCBpc1ZhbGlkIH0gPSB1dGlscy5mZXRjaEFuZFZhbGlkYXRlUmVjaXBpZW50cyhhZGRyZXNzQXJnLCBhbW91bnRBcmcpO1xuICAgIGlmICghaXNWYWxpZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRUcmFuc2FjdGlvbkVycm9yKCdJbnZhbGlkIHRyYW5zYWN0aW9uIHJlY2lwaWVudHMnKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlY2lwaWVudHMuZGVzZXJpYWxpemVkQWRkcmVzc2VzLm1hcCgoYWRkcmVzcywgaW5kZXgpID0+ICh7XG4gICAgICBhZGRyZXNzLFxuICAgICAgYW1vdW50OiB1dGlscy5nZXRBbW91bnRGcm9tUGF5bG9hZEFyZ3MocmVjaXBpZW50cy5kZXNlcmlhbGl6ZWRBbW91bnRzW2luZGV4XSksXG4gICAgfSkpIGFzIFRyYW5zYWN0aW9uUmVjaXBpZW50W107XG4gIH1cblxuICBkZXNlcmlhbGl6ZVNpZ25lZFRyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBTaWduZWRUcmFuc2FjdGlvbiB7XG4gICAgY29uc3QgdHhuQnl0ZXMgPSBIZXguZnJvbUhleFN0cmluZyhyYXdUcmFuc2FjdGlvbikudG9VaW50OEFycmF5KCk7XG4gICAgY29uc3QgZGVzZXJpYWxpemVyID0gbmV3IERlc2VyaWFsaXplcih0eG5CeXRlcyk7XG4gICAgcmV0dXJuIGRlc2VyaWFsaXplci5kZXNlcmlhbGl6ZShTaWduZWRUcmFuc2FjdGlvbik7XG4gIH1cblxuICBkZXNlcmlhbGl6ZUZlZVBheWVyUmF3VHJhbnNhY3Rpb24ocmF3VHJhbnNhY3Rpb246IHN0cmluZyk6IEZlZVBheWVyUmF3VHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHR4bkJ5dGVzID0gSGV4LmZyb21IZXhTdHJpbmcocmF3VHJhbnNhY3Rpb24pLnRvVWludDhBcnJheSgpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplciA9IG5ldyBEZXNlcmlhbGl6ZXIodHhuQnl0ZXMpO1xuICAgIHJldHVybiBGZWVQYXllclJhd1RyYW5zYWN0aW9uLmxvYWQoZGVzZXJpYWxpemVyKTtcbiAgfVxuXG4gIGRlc2VyaWFsaXplQWNjb3VudEFkZHJlc3NWZWN0b3Ioc2VyaWFsaXplZEJ5dGVzOiBVaW50OEFycmF5KTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGRlc2VyaWFsaXplciA9IG5ldyBEZXNlcmlhbGl6ZXIoc2VyaWFsaXplZEJ5dGVzKTtcbiAgICBjb25zdCBkZXNlcmlhbGl6ZWRBZGRyZXNzZXMgPSBkZXNlcmlhbGl6ZXIuZGVzZXJpYWxpemVWZWN0b3IoQWNjb3VudEFkZHJlc3MpO1xuICAgIHJldHVybiBkZXNlcmlhbGl6ZWRBZGRyZXNzZXMubWFwKChhZGRyZXNzKSA9PiBhZGRyZXNzLnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgZGVzZXJpYWxpemVVNjRWZWN0b3Ioc2VyaWFsaXplZEJ5dGVzOiBVaW50OEFycmF5KTogVWludDhBcnJheVtdIHtcbiAgICBjb25zdCBkZXNlcmlhbGl6ZXIgPSBuZXcgRGVzZXJpYWxpemVyKHNlcmlhbGl6ZWRCeXRlcyk7XG4gICAgY29uc3QgZGVzZXJpYWxpemVkQW1vdW50cyA9IGRlc2VyaWFsaXplci5kZXNlcmlhbGl6ZVZlY3RvcihVNjQpO1xuICAgIHJldHVybiBkZXNlcmlhbGl6ZWRBbW91bnRzLm1hcCgoYW1vdW50KSA9PiBhbW91bnQuYmNzVG9CeXRlcygpKTtcbiAgfVxuXG4gIGdldEJ1ZmZlckZyb21IZXhTdHJpbmcoaGV4U3RyaW5nOiBzdHJpbmcpOiBCdWZmZXIge1xuICAgIHJldHVybiBCdWZmZXIuZnJvbShIZXguZnJvbUhleFN0cmluZyhoZXhTdHJpbmcpLnRvVWludDhBcnJheSgpKTtcbiAgfVxuXG4gIGNhc3RUb051bWJlcih2YWx1ZTogYmlnaW50KTogbnVtYmVyIHtcbiAgICByZXR1cm4gbmV3IEJpZ051bWJlcih2YWx1ZS50b1N0cmluZygpKS50b051bWJlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0cmlwIGhleCBwcmVmaXhcbiAgICogQHBhcmFtIHN0clxuICAgKiBAcmV0dXJucyBoZXggc3RyaW5nIHdpdGhvdXQgMHggcHJlZml4XG4gICAqL1xuICBzdHJpcEhleFByZWZpeChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9eMHgvaSwgJycpO1xuICB9XG5cbiAgZ2V0QW1vdW50RnJvbVBheWxvYWRBcmdzKGFtb3VudEFyZzogVWludDhBcnJheSk6IHN0cmluZyB7XG4gICAgY29uc3QgYW1vdW50QnVmZmVyID0gQnVmZmVyLmZyb20oYW1vdW50QXJnKTtcbiAgICBjb25zdCBsb3cgPSBCaWdJbnQoYW1vdW50QnVmZmVyLnJlYWRVaW50MzJMRSgpKTtcbiAgICBjb25zdCBoaWdoID0gQmlnSW50KGFtb3VudEJ1ZmZlci5yZWFkVWludDMyTEUoNCkpO1xuICAgIGNvbnN0IGFtb3VudCA9IChoaWdoIDw8IEJpZ0ludCgzMikpICsgbG93O1xuICAgIHJldHVybiBhbW91bnQudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBBcHRvcyB0cmFuc2FjdGlvbiBleHBpcmF0aW9uIHRpbWVzdGFtcCBpbiBzZWNvbmRzLlxuICAgKiBJdCBpcyBzZXQgdG8gMSB3ZWVrIGZyb20gbm93LlxuICAgKi9cbiAgZ2V0VHhuRXhwaXJhdGlvblRpbWVzdGFtcCgpOiBudW1iZXIge1xuICAgIHJldHVybiBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxZTMpICsgU0VDT05EU19QRVJfV0VFSztcbiAgfVxufVxuXG5jb25zdCB1dGlscyA9IG5ldyBVdGlscygpO1xuXG5leHBvcnQgZGVmYXVsdCB1dGlscztcbiJdfQ==
172
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3V0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLCtDQVk0QjtBQUM1Qiw4Q0FPeUI7QUFDekIsMkNBYXFCO0FBQ3JCLGdFQUFxQztBQUdyQyxNQUFhLEtBQUs7SUFDaEIsa0JBQWtCO0lBQ2xCLGNBQWMsQ0FBQyxPQUFlO1FBQzVCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsOEJBQWtCLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGNBQWMsQ0FBQyxJQUFZO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsK0JBQW1CLENBQUMsQ0FBQztJQUNwRCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGlCQUFpQixDQUFDLEdBQVc7UUFDM0IsT0FBTyxJQUFBLGtDQUF1QixFQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsZ0JBQWdCLENBQUMsR0FBVztRQUMxQixPQUFPLElBQUEsa0NBQXVCLEVBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixnQkFBZ0IsQ0FBQyxTQUFpQjtRQUNoQyxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFLGdDQUFvQixDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixvQkFBb0IsQ0FBQyxJQUFZO1FBQy9CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUscUNBQXlCLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsVUFBVSxDQUFDLEtBQWEsRUFBRSxNQUFjO1FBQ3RDLE1BQU0sS0FBSyxHQUFHLElBQUksTUFBTSxDQUFDLHVCQUF1QixNQUFNLElBQUksQ0FBQyxDQUFDO1FBQzVELE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxL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LE1BQU0sQ0FBQztZQUNQLE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFyTEQsc0JBcUxDO0FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztBQUUxQixrQkFBZSxLQUFLLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBY2NvdW50QWRkcmVzcyxcbiAgQXV0aGVudGljYXRpb25LZXksXG4gIERlc2VyaWFsaXplcixcbiAgRWQyNTUxOVB1YmxpY0tleSxcbiAgRW50cnlGdW5jdGlvbkFyZ3VtZW50LFxuICBGZWVQYXllclJhd1RyYW5zYWN0aW9uLFxuICBIZXgsXG4gIFNpZ25lZFRyYW5zYWN0aW9uLFxuICBUcmFuc2FjdGlvblBheWxvYWQsXG4gIFRyYW5zYWN0aW9uUGF5bG9hZEVudHJ5RnVuY3Rpb24sXG4gIFU2NCxcbn0gZnJvbSAnQGFwdG9zLWxhYnMvdHMtc2RrJztcbmltcG9ydCB7XG4gIEJhc2VVdGlscyxcbiAgSW52YWxpZFRyYW5zYWN0aW9uRXJyb3IsXG4gIGlzVmFsaWRFZDI1NTE5UHVibGljS2V5LFxuICBpc1ZhbGlkRWQyNTUxOVNlY3JldEtleSxcbiAgVHJhbnNhY3Rpb25SZWNpcGllbnQsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbn0gZnJvbSAnQGJpdGdvL3Nkay1jb3JlJztcbmltcG9ydCB7XG4gIEFERFJFU1NfQllURVNfTEVOR1RILFxuICBBTU9VTlRfQllURVNfTEVOR1RILFxuICBBUFRfQUREUkVTU19MRU5HVEgsXG4gIEFQVF9CTE9DS19JRF9MRU5HVEgsXG4gIEFQVF9TSUdOQVRVUkVfTEVOR1RILFxuICBBUFRfVFJBTlNBQ1RJT05fSURfTEVOR1RILFxuICBDT0lOX0JBVENIX1RSQU5TRkVSX0ZVTkNUSU9OLFxuICBDT0lOX1RSQU5TRkVSX0ZVTkNUSU9OLFxuICBESUdJVEFMX0FTU0VUX1RSQU5TRkVSX0ZVTkNUSU9OLFxuICBGVU5HSUJMRV9BU1NFVF9CQVRDSF9UUkFOU0ZFUl9GVU5DVElPTixcbiAgRlVOR0lCTEVfQVNTRVRfVFJBTlNGRVJfRlVOQ1RJT04sXG4gIFNFQ09ORFNfUEVSX1dFRUssXG59IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IFJlY2lwaWVudHNWYWxpZGF0aW9uUmVzdWx0IH0gZnJvbSAnLi9pZmFjZSc7XG5cbmV4cG9ydCBjbGFzcyBVdGlscyBpbXBsZW1lbnRzIEJhc2VVdGlscyB7XG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkSGV4KGFkZHJlc3MsIEFQVF9BRERSRVNTX0xFTkdUSCk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgaXNWYWxpZEJsb2NrSWQoaGFzaDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZEhleChoYXNoLCBBUFRfQkxPQ0tfSURfTEVOR1RIKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkUHJpdmF0ZUtleShrZXk6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBpc1ZhbGlkRWQyNTUxOVNlY3JldEtleShrZXkpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGlzVmFsaWRQdWJsaWNLZXkoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gaXNWYWxpZEVkMjU1MTlQdWJsaWNLZXkoa2V5KTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkU2lnbmF0dXJlKHNpZ25hdHVyZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaXNWYWxpZEhleChzaWduYXR1cmUsIEFQVF9TSUdOQVRVUkVfTEVOR1RIKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBpc1ZhbGlkVHJhbnNhY3Rpb25JZCh0eElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5pc1ZhbGlkSGV4KHR4SWQsIEFQVF9UUkFOU0FDVElPTl9JRF9MRU5HVEgpO1xuICB9XG5cbiAgaXNWYWxpZEhleCh2YWx1ZTogc3RyaW5nLCBsZW5ndGg6IG51bWJlcik6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgXigweHwwWClbYS1mQS1GMC05XXske2xlbmd0aH19JGApO1xuICAgIHJldHVybiByZWdleC50ZXN0KHZhbHVlKTtcbiAgfVxuXG4gIGdldEFkZHJlc3NGcm9tUHVibGljS2V5KHB1YmxpY0tleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBhcHRvc1B1YmxpY0tleSA9IG5ldyBFZDI1NTE5UHVibGljS2V5KEJ1ZmZlci5mcm9tKHB1YmxpY0tleSwgJ2hleCcpKTtcbiAgICBjb25zdCBhdXRoS2V5ID0gQXV0aGVudGljYXRpb25LZXkuZnJvbVB1YmxpY0tleSh7IHB1YmxpY0tleTogYXB0b3NQdWJsaWNLZXkgfSk7XG4gICAgY29uc3QgYWNjb3VudEFkZHJlc3MgPSBhdXRoS2V5LmRlcml2ZWRBZGRyZXNzKCk7XG4gICAgcmV0dXJuIGFjY291bnRBZGRyZXNzLnRvU3RyaW5nKCk7XG4gIH1cblxuICBnZXRUcmFuc2FjdGlvblR5cGVGcm9tVHJhbnNhY3Rpb25QYXlsb2FkKHBheWxvYWQ6IFRyYW5zYWN0aW9uUGF5bG9hZCk6IFRyYW5zYWN0aW9uVHlwZSB7XG4gICAgaWYgKCEocGF5bG9hZCBpbnN0YW5jZW9mIFRyYW5zYWN0aW9uUGF5bG9hZEVudHJ5RnVuY3Rpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgUGF5bG9hZDogRXhwZWN0ZWQgVHJhbnNhY3Rpb25QYXlsb2FkRW50cnlGdW5jdGlvbicpO1xuICAgIH1cbiAgICBjb25zdCBlbnRyeUZ1bmN0aW9uID0gcGF5bG9hZC5lbnRyeUZ1bmN0aW9uO1xuICAgIGNvbnN0IG1vZHVsZUFkZHJlc3MgPSBlbnRyeUZ1bmN0aW9uLm1vZHVsZV9uYW1lLmFkZHJlc3MudG9TdHJpbmcoKTtcbiAgICBjb25zdCBtb2R1bGVJZGVudGlmaWVyID0gZW50cnlGdW5jdGlvbi5tb2R1bGVfbmFtZS5uYW1lLmlkZW50aWZpZXI7XG4gICAgY29uc3QgZnVuY3Rpb25JZGVudGlmaWVyID0gZW50cnlGdW5jdGlvbi5mdW5jdGlvbl9uYW1lLmlkZW50aWZpZXI7XG4gICAgY29uc3QgdW5pcXVlSWRlbnRpZmllciA9IGAke21vZHVsZUFkZHJlc3N9Ojoke21vZHVsZUlkZW50aWZpZXJ9Ojoke2Z1bmN0aW9uSWRlbnRpZmllcn1gO1xuICAgIHN3aXRjaCAodW5pcXVlSWRlbnRpZmllcikge1xuICAgICAgY2FzZSBDT0lOX1RSQU5TRkVSX0ZVTkNUSU9OOlxuICAgICAgY2FzZSBDT0lOX0JBVENIX1RSQU5TRkVSX0ZVTkNUSU9OOlxuICAgICAgICByZXR1cm4gVHJhbnNhY3Rpb25UeXBlLlNlbmQ7XG4gICAgICBjYXNlIEZVTkdJQkxFX0FTU0VUX1RSQU5TRkVSX0ZVTkNUSU9OOlxuICAgICAgY2FzZSBGVU5HSUJMRV9BU1NFVF9CQVRDSF9UUkFOU0ZFUl9GVU5DVElPTjpcbiAgICAgICAgcmV0dXJuIFRyYW5zYWN0aW9uVHlwZS5TZW5kVG9rZW47XG4gICAgICBjYXNlIERJR0lUQUxfQVNTRVRfVFJBTlNGRVJfRlVOQ1RJT046XG4gICAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuU2VuZE5GVDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIEZvciBhbnkgb3RoZXIgZnVuY3Rpb24gY2FsbHMsIHRyZWF0IGFzIGEgY3VzdG9tIHRyYW5zYWN0aW9uXG4gICAgICAgIHJldHVybiBUcmFuc2FjdGlvblR5cGUuQ3VzdG9tVHg7XG4gICAgfVxuICB9XG5cbiAgZmV0Y2hBbmRWYWxpZGF0ZVJlY2lwaWVudHMoXG4gICAgYWRkcmVzc0FyZzogRW50cnlGdW5jdGlvbkFyZ3VtZW50LFxuICAgIGFtb3VudEFyZzogRW50cnlGdW5jdGlvbkFyZ3VtZW50XG4gICk6IFJlY2lwaWVudHNWYWxpZGF0aW9uUmVzdWx0IHtcbiAgICBjb25zdCBhZGRyZXNzQnl0ZXMgPSBhZGRyZXNzQXJnLmJjc1RvQnl0ZXMoKTtcbiAgICBjb25zdCBhbW91bnRCeXRlcyA9IGFtb3VudEFyZy5iY3NUb0J5dGVzKCk7XG4gICAgbGV0IGRlc2VyaWFsaXplZEFkZHJlc3Nlczogc3RyaW5nW107XG4gICAgbGV0IGRlc2VyaWFsaXplZEFtb3VudHM6IFVpbnQ4QXJyYXk8QXJyYXlCdWZmZXI+W107XG4gICAgaWYgKGFkZHJlc3NCeXRlcy5sZW5ndGggPiBBRERSRVNTX0JZVEVTX0xFTkdUSCB8fCBhbW91bnRCeXRlcy5sZW5ndGggPiBBTU9VTlRfQllURVNfTEVOR1RIKSB7XG4gICAgICBkZXNlcmlhbGl6ZWRBZGRyZXNzZXMgPSB1dGlscy5kZXNlcmlhbGl6ZUFjY291bnRBZGRyZXNzVmVjdG9yKGFkZHJlc3NCeXRlcyk7XG4gICAgICBkZXNlcmlhbGl6ZWRBbW91bnRzID0gdXRpbHMuZGVzZXJpYWxpemVVNjRWZWN0b3IoYW1vdW50Qnl0ZXMpO1xuICAgICAgaWYgKGRlc2VyaWFsaXplZEFkZHJlc3Nlcy5sZW5ndGggIT09IGRlc2VyaWFsaXplZEFtb3VudHMubGVuZ3RoKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ2ludmFsaWQgcGF5bG9hZCBlbnRyeSBmdW5jdGlvbiBhcmd1bWVudHMgOiBhZGRyZXNzZXMgYW5kIGFtb3VudHMgbGVuZ3RoIG1pc21hdGNoJyk7XG4gICAgICAgIHJldHVybiB7IHJlY2lwaWVudHM6IHsgZGVzZXJpYWxpemVkQWRkcmVzc2VzOiBbXSwgZGVzZXJpYWxpemVkQW1vdW50czogW10gfSwgaXNWYWxpZDogZmFsc2UgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZGVzZXJpYWxpemVkQWRkcmVzc2VzID0gW2FkZHJlc3NBcmcudG9TdHJpbmcoKV07XG4gICAgICBkZXNlcmlhbGl6ZWRBbW91bnRzID0gW2Ftb3VudEJ5dGVzXTtcbiAgICB9XG4gICAgY29uc3QgYWxsQWRkcmVzc2VzVmFsaWQgPSBkZXNlcmlhbGl6ZWRBZGRyZXNzZXMuZXZlcnkoKGFkZHJlc3MpID0+IHV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MudG9TdHJpbmcoKSkpO1xuICAgIGNvbnN0IGFsbEFtb3VudHNWYWxpZCA9IGRlc2VyaWFsaXplZEFtb3VudHMuZXZlcnkoKGFtb3VudCkgPT5cbiAgICAgIG5ldyBCaWdOdW1iZXIodXRpbHMuZ2V0QW1vdW50RnJvbVBheWxvYWRBcmdzKGFtb3VudCkpLmlzR3JlYXRlclRoYW4oMClcbiAgICApO1xuICAgIHJldHVybiB7XG4gICAgICByZWNpcGllbnRzOiB7IGRlc2VyaWFsaXplZEFkZHJlc3NlcywgZGVzZXJpYWxpemVkQW1vdW50cyB9LFxuICAgICAgaXNWYWxpZDogYWxsQWRkcmVzc2VzVmFsaWQgJiYgYWxsQW1vdW50c1ZhbGlkLFxuICAgIH07XG4gIH1cblxuICBwYXJzZVJlY2lwaWVudHMoYWRkcmVzc0FyZzogRW50cnlGdW5jdGlvbkFyZ3VtZW50LCBhbW91bnRBcmc6IEVudHJ5RnVuY3Rpb25Bcmd1bWVudCk6IFRyYW5zYWN0aW9uUmVjaXBpZW50W10ge1xuICAgIGNvbnN0IHsgcmVjaXBpZW50cywgaXNWYWxpZCB9ID0gdXRpbHMuZmV0Y2hBbmRWYWxpZGF0ZVJlY2lwaWVudHMoYWRkcmVzc0FyZywgYW1vdW50QXJnKTtcbiAgICBpZiAoIWlzVmFsaWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbiByZWNpcGllbnRzJyk7XG4gICAgfVxuICAgIHJldHVybiByZWNpcGllbnRzLmRlc2VyaWFsaXplZEFkZHJlc3Nlcy5tYXAoKGFkZHJlc3MsIGluZGV4KSA9PiAoe1xuICAgICAgYWRkcmVzcyxcbiAgICAgIGFtb3VudDogdXRpbHMuZ2V0QW1vdW50RnJvbVBheWxvYWRBcmdzKHJlY2lwaWVudHMuZGVzZXJpYWxpemVkQW1vdW50c1tpbmRleF0pLFxuICAgIH0pKSBhcyBUcmFuc2FjdGlvblJlY2lwaWVudFtdO1xuICB9XG5cbiAgZGVzZXJpYWxpemVTaWduZWRUcmFuc2FjdGlvbihyYXdUcmFuc2FjdGlvbjogc3RyaW5nKTogU2lnbmVkVHJhbnNhY3Rpb24ge1xuICAgIGNvbnN0IHR4bkJ5dGVzID0gSGV4LmZyb21IZXhTdHJpbmcocmF3VHJhbnNhY3Rpb24pLnRvVWludDhBcnJheSgpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplciA9IG5ldyBEZXNlcmlhbGl6ZXIodHhuQnl0ZXMpO1xuICAgIHJldHVybiBkZXNlcmlhbGl6ZXIuZGVzZXJpYWxpemUoU2lnbmVkVHJhbnNhY3Rpb24pO1xuICB9XG5cbiAgZGVzZXJpYWxpemVGZWVQYXllclJhd1RyYW5zYWN0aW9uKHJhd1RyYW5zYWN0aW9uOiBzdHJpbmcpOiBGZWVQYXllclJhd1RyYW5zYWN0aW9uIHtcbiAgICBjb25zdCB0eG5CeXRlcyA9IEhleC5mcm9tSGV4U3RyaW5nKHJhd1RyYW5zYWN0aW9uKS50b1VpbnQ4QXJyYXkoKTtcbiAgICBjb25zdCBkZXNlcmlhbGl6ZXIgPSBuZXcgRGVzZXJpYWxpemVyKHR4bkJ5dGVzKTtcbiAgICByZXR1cm4gRmVlUGF5ZXJSYXdUcmFuc2FjdGlvbi5sb2FkKGRlc2VyaWFsaXplcik7XG4gIH1cblxuICBkZXNlcmlhbGl6ZUFjY291bnRBZGRyZXNzVmVjdG9yKHNlcmlhbGl6ZWRCeXRlczogVWludDhBcnJheSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBkZXNlcmlhbGl6ZXIgPSBuZXcgRGVzZXJpYWxpemVyKHNlcmlhbGl6ZWRCeXRlcyk7XG4gICAgY29uc3QgZGVzZXJpYWxpemVkQWRkcmVzc2VzID0gZGVzZXJpYWxpemVyLmRlc2VyaWFsaXplVmVjdG9yKEFjY291bnRBZGRyZXNzKTtcbiAgICByZXR1cm4gZGVzZXJpYWxpemVkQWRkcmVzc2VzLm1hcCgoYWRkcmVzcykgPT4gYWRkcmVzcy50b1N0cmluZygpKTtcbiAgfVxuXG4gIGRlc2VyaWFsaXplVTY0VmVjdG9yKHNlcmlhbGl6ZWRCeXRlczogVWludDhBcnJheSk6IFVpbnQ4QXJyYXlbXSB7XG4gICAgY29uc3QgZGVzZXJpYWxpemVyID0gbmV3IERlc2VyaWFsaXplcihzZXJpYWxpemVkQnl0ZXMpO1xuICAgIGNvbnN0IGRlc2VyaWFsaXplZEFtb3VudHMgPSBkZXNlcmlhbGl6ZXIuZGVzZXJpYWxpemVWZWN0b3IoVTY0KTtcbiAgICByZXR1cm4gZGVzZXJpYWxpemVkQW1vdW50cy5tYXAoKGFtb3VudCkgPT4gYW1vdW50LmJjc1RvQnl0ZXMoKSk7XG4gIH1cblxuICBnZXRCdWZmZXJGcm9tSGV4U3RyaW5nKGhleFN0cmluZzogc3RyaW5nKTogQnVmZmVyIHtcbiAgICByZXR1cm4gQnVmZmVyLmZyb20oSGV4LmZyb21IZXhTdHJpbmcoaGV4U3RyaW5nKS50b1VpbnQ4QXJyYXkoKSk7XG4gIH1cblxuICBjYXN0VG9OdW1iZXIodmFsdWU6IGJpZ2ludCk6IG51bWJlciB7XG4gICAgcmV0dXJuIG5ldyBCaWdOdW1iZXIodmFsdWUudG9TdHJpbmcoKSkudG9OdW1iZXIoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdHJpcCBoZXggcHJlZml4XG4gICAqIEBwYXJhbSBzdHJcbiAgICogQHJldHVybnMgaGV4IHN0cmluZyB3aXRob3V0IDB4IHByZWZpeFxuICAgKi9cbiAgc3RyaXBIZXhQcmVmaXgoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBzdHIucmVwbGFjZSgvXjB4L2ksICcnKTtcbiAgfVxuXG4gIGdldEFtb3VudEZyb21QYXlsb2FkQXJncyhhbW91bnRBcmc6IFVpbnQ4QXJyYXkpOiBzdHJpbmcge1xuICAgIGNvbnN0IGFtb3VudEJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGFtb3VudEFyZyk7XG4gICAgY29uc3QgbG93ID0gQmlnSW50KGFtb3VudEJ1ZmZlci5yZWFkVWludDMyTEUoKSk7XG4gICAgY29uc3QgaGlnaCA9IEJpZ0ludChhbW91bnRCdWZmZXIucmVhZFVpbnQzMkxFKDQpKTtcbiAgICBjb25zdCBhbW91bnQgPSAoaGlnaCA8PCBCaWdJbnQoMzIpKSArIGxvdztcbiAgICByZXR1cm4gYW1vdW50LnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgQXB0b3MgdHJhbnNhY3Rpb24gZXhwaXJhdGlvbiB0aW1lc3RhbXAgaW4gc2Vjb25kcy5cbiAgICogSXQgaXMgc2V0IHRvIDEgd2VlayBmcm9tIG5vdy5cbiAgICovXG4gIGdldFR4bkV4cGlyYXRpb25UaW1lc3RhbXAoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMWUzKSArIFNFQ09ORFNfUEVSX1dFRUs7XG4gIH1cblxuICAvKipcbiAgICogQ29udmVydCBieXRlcyBhcnJheSB0byBoZXggc3RyaW5nIHdpdGggMHggcHJlZml4XG4gICAqL1xuICBieXRlc1RvSGV4KGJ5dGVzOiBudW1iZXJbXSk6IHN0cmluZyB7XG4gICAgcmV0dXJuICcweCcgKyBieXRlcy5tYXAoKGIpID0+IGIudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJykpLmpvaW4oJycpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byBjb252ZXJ0IGhleCBzdHJpbmcgdG8gQWNjb3VudEFkZHJlc3MsIHJldHVybiBvcmlnaW5hbCBzdHJpbmcgaWYgY29udmVyc2lvbiBmYWlsc1xuICAgKi9cbiAgdHJ5UGFyc2VBY2NvdW50QWRkcmVzcyhoZXhTdHI6IHN0cmluZyk6IEFjY291bnRBZGRyZXNzIHwgc3RyaW5nIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEFjY291bnRBZGRyZXNzLmZyb21TdHJpbmcoaGV4U3RyKTtcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBoZXhTdHI7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IHV0aWxzID0gbmV3IFV0aWxzKCk7XG5cbmV4cG9ydCBkZWZhdWx0IHV0aWxzO1xuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=customTransaction.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customTransaction.test.d.ts","sourceRoot":"","sources":["../../../test/unit/customTransaction.test.ts"],"names":[],"mappings":""}