valtech-components 2.0.458 → 2.0.459

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.
@@ -4,9 +4,10 @@
4
4
  * Servicio para operaciones de Firebase Storage.
5
5
  * Soporta upload con tracking de progreso, download y gestión de archivos.
6
6
  */
7
- import { Injectable } from '@angular/core';
7
+ import { inject, Injectable } from '@angular/core';
8
8
  import { deleteObject, getDownloadURL, getMetadata, listAll, ref, uploadBytesResumable, } from '@angular/fire/storage';
9
9
  import { BehaviorSubject } from 'rxjs';
10
+ import { VALTECH_FIREBASE_CONFIG } from './config';
10
11
  import * as i0 from "@angular/core";
11
12
  import * as i1 from "@angular/fire/storage";
12
13
  /**
@@ -40,6 +41,18 @@ import * as i1 from "@angular/fire/storage";
40
41
  export class StorageService {
41
42
  constructor(storage) {
42
43
  this.storage = storage;
44
+ this.config = inject(VALTECH_FIREBASE_CONFIG, { optional: true });
45
+ }
46
+ /**
47
+ * Prefija el path de storage con el appId si está configurado.
48
+ * Si no hay appId, retorna el path sin modificar (backward compatible).
49
+ *
50
+ * @internal
51
+ */
52
+ prefixStoragePath(path) {
53
+ if (!this.config?.appId)
54
+ return path;
55
+ return `${this.config.appId}/${path}`;
43
56
  }
44
57
  // ===========================================================================
45
58
  // UPLOAD
@@ -68,7 +81,8 @@ export class StorageService {
68
81
  * ```
69
82
  */
70
83
  upload(path, file, metadata) {
71
- const storageRef = ref(this.storage, path);
84
+ const prefixedPath = this.prefixStoragePath(path);
85
+ const storageRef = ref(this.storage, prefixedPath);
72
86
  const uploadMetadata = {
73
87
  contentType: metadata?.contentType || (file instanceof File ? file.type : undefined),
74
88
  customMetadata: metadata?.customMetadata,
@@ -122,11 +136,12 @@ export class StorageService {
122
136
  * ```
123
137
  */
124
138
  async uploadAndGetUrl(path, file, metadata) {
139
+ const prefixedPath = this.prefixStoragePath(path);
125
140
  return new Promise((resolve, reject) => {
126
141
  this.upload(path, file, metadata).subscribe({
127
142
  complete: async () => {
128
143
  try {
129
- const storageRef = ref(this.storage, path);
144
+ const storageRef = ref(this.storage, prefixedPath);
130
145
  const downloadUrl = await getDownloadURL(storageRef);
131
146
  const storedMetadata = await getMetadata(storageRef);
132
147
  resolve({
@@ -199,7 +214,8 @@ export class StorageService {
199
214
  */
200
215
  async getDownloadUrl(path) {
201
216
  try {
202
- const storageRef = ref(this.storage, path);
217
+ const prefixedPath = this.prefixStoragePath(path);
218
+ const storageRef = ref(this.storage, prefixedPath);
203
219
  return await getDownloadURL(storageRef);
204
220
  }
205
221
  catch (error) {
@@ -214,7 +230,8 @@ export class StorageService {
214
230
  */
215
231
  async getMetadata(path) {
216
232
  try {
217
- const storageRef = ref(this.storage, path);
233
+ const prefixedPath = this.prefixStoragePath(path);
234
+ const storageRef = ref(this.storage, prefixedPath);
218
235
  const metadata = await getMetadata(storageRef);
219
236
  return {
220
237
  contentType: metadata.contentType,
@@ -243,7 +260,8 @@ export class StorageService {
243
260
  */
244
261
  async delete(path) {
245
262
  try {
246
- const storageRef = ref(this.storage, path);
263
+ const prefixedPath = this.prefixStoragePath(path);
264
+ const storageRef = ref(this.storage, prefixedPath);
247
265
  await deleteObject(storageRef);
248
266
  }
249
267
  catch (error) {
@@ -283,7 +301,8 @@ export class StorageService {
283
301
  */
284
302
  async list(path) {
285
303
  try {
286
- const storageRef = ref(this.storage, path);
304
+ const prefixedPath = this.prefixStoragePath(path);
305
+ const storageRef = ref(this.storage, prefixedPath);
287
306
  const result = await listAll(storageRef);
288
307
  return {
289
308
  items: result.items.map((item) => item.fullPath),
@@ -419,4 +438,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
419
438
  type: Injectable,
420
439
  args: [{ providedIn: 'root' }]
421
440
  }], ctorParameters: () => [{ type: i1.Storage }] });
422
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9maXJlYmFzZS9zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFDTCxZQUFZLEVBQ1osY0FBYyxFQUNkLFdBQVcsRUFDWCxPQUFPLEVBQ1AsR0FBRyxFQUVILG9CQUFvQixHQUdyQixNQUFNLHVCQUF1QixDQUFDO0FBQy9CLE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxNQUFNLENBQUM7OztBQUluRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBMkJHO0FBRUgsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFBb0IsT0FBZ0I7UUFBaEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztJQUFHLENBQUM7SUFFeEMsOEVBQThFO0lBQzlFLFNBQVM7SUFDVCw4RUFBOEU7SUFFOUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FzQkc7SUFDSCxNQUFNLENBQUMsSUFBWSxFQUFFLElBQWlCLEVBQUUsUUFBMEI7UUFDaEUsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0MsTUFBTSxjQUFjLEdBQW1CO1lBQ3JDLFdBQVcsRUFBRSxRQUFRLEVBQUUsV0FBVyxJQUFJLENBQUMsSUFBSSxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3BGLGNBQWMsRUFBRSxRQUFRLEVBQUUsY0FBYztZQUN4QyxZQUFZLEVBQUUsUUFBUSxFQUFFLFlBQVk7U0FDckMsQ0FBQztRQUVGLE1BQU0sSUFBSSxHQUFHLG9CQUFvQixDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDcEUsTUFBTSxTQUFTLEdBQUcsSUFBSSxlQUFlLENBQWlCO1lBQ3BELGdCQUFnQixFQUFFLENBQUM7WUFDbkIsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJO1lBQ3JCLFVBQVUsRUFBRSxDQUFDO1lBQ2IsS0FBSyxFQUFFLFNBQVM7U0FDakIsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLEVBQUUsQ0FDTCxlQUFlLEVBQ2YsQ0FBQyxRQUE0QixFQUFFLEVBQUU7WUFDL0IsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDYixnQkFBZ0IsRUFBRSxRQUFRLENBQUMsZ0JBQWdCO2dCQUMzQyxVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVU7Z0JBQy9CLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLGdCQUFnQixHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUM7Z0JBQy9FLEtBQUssRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7YUFDekMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxFQUNELENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDUixTQUFTLENBQUMsSUFBSSxDQUFDO2dCQUNiLGdCQUFnQixFQUFFLENBQUM7Z0JBQ25CLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDckIsVUFBVSxFQUFFLENBQUM7Z0JBQ2IsS0FBSyxFQUFFLE9BQU87YUFDZixDQUFDLENBQUM7WUFDSCxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMvQyxDQUFDLEVBQ0QsR0FBRyxFQUFFO1lBQ0gsU0FBUyxDQUFDLElBQUksQ0FBQztnQkFDYixnQkFBZ0IsRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDM0IsVUFBVSxFQUFFLElBQUksQ0FBQyxJQUFJO2dCQUNyQixVQUFVLEVBQUUsR0FBRztnQkFDZixLQUFLLEVBQUUsU0FBUzthQUNqQixDQUFDLENBQUM7WUFDSCxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDdkIsQ0FBQyxDQUNGLENBQUM7UUFFRixPQUFPLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7T0FhRztJQUNILEtBQUssQ0FBQyxlQUFlLENBQ25CLElBQVksRUFDWixJQUFpQixFQUNqQixRQUEwQjtRQUUxQixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUM7Z0JBQzFDLFFBQVEsRUFBRSxLQUFLLElBQUksRUFBRTtvQkFDbkIsSUFBSSxDQUFDO3dCQUNILE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO3dCQUMzQyxNQUFNLFdBQVcsR0FBRyxNQUFNLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQzt3QkFDckQsTUFBTSxjQUFjLEdBQUcsTUFBTSxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUM7d0JBRXJELE9BQU8sQ0FBQzs0QkFDTixXQUFXOzRCQUNYLFFBQVEsRUFBRSxjQUFjLENBQUMsUUFBUTs0QkFDakMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxJQUFJOzRCQUN6QixJQUFJLEVBQUUsY0FBYyxDQUFDLElBQUk7NEJBQ3pCLFdBQVcsRUFBRSxjQUFjLENBQUMsV0FBVyxJQUFJLDBCQUEwQjs0QkFDckUsUUFBUSxFQUFFLGNBQWMsQ0FBQyxjQUFjLElBQUksRUFBRTt5QkFDOUMsQ0FBQyxDQUFDO29CQUNMLENBQUM7b0JBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQzt3QkFDZixNQUFNLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO29CQUN0QyxDQUFDO2dCQUNILENBQUM7Z0JBQ0QsS0FBSyxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDO2FBQ2hDLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7OztPQWNHO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQixDQUNyQixJQUFZLEVBQ1osT0FBZSxFQUNmLFFBQTBCO1FBRTFCLHNDQUFzQztRQUN0QyxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLDRCQUE0QixDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3ZDLENBQUM7UUFFRCxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDL0IsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTlCLDBCQUEwQjtRQUMxQixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDeEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JELEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDL0MsV0FBVyxDQUFDLENBQUMsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUNELE1BQU0sU0FBUyxHQUFHLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzlDLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUUxRCxPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtZQUN0QyxXQUFXO1lBQ1gsR0FBRyxRQUFRO1NBQ1osQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxXQUFXO0lBQ1gsOEVBQThFO0lBRTlFOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFZO1FBQy9CLElBQUksQ0FBQztZQUNILE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzNDLE9BQU8sTUFBTSxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLFdBQVcsQ0FBQyxJQUFZO1FBQzVCLElBQUksQ0FBQztZQUNILE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzNDLE1BQU0sUUFBUSxHQUFHLE1BQU0sV0FBVyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQy9DLE9BQU87Z0JBQ0wsV0FBVyxFQUFFLFFBQVEsQ0FBQyxXQUFXO2dCQUNqQyxjQUFjLEVBQUUsUUFBUSxDQUFDLGNBQWM7Z0JBQ3ZDLFlBQVksRUFBRSxRQUFRLENBQUMsWUFBWTtnQkFDbkMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJO2dCQUNuQixJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUk7YUFDcEIsQ0FBQztRQUNKLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsTUFBTSxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFDL0MsQ0FBQztJQUNILENBQUM7SUFFRCw4RUFBOEU7SUFDOUUsU0FBUztJQUNULDhFQUE4RTtJQUU5RTs7Ozs7Ozs7O09BU0c7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLElBQVk7UUFDdkIsSUFBSSxDQUFDO1lBQ0gsTUFBTSxVQUFVLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDM0MsTUFBTSxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILEtBQUssQ0FBQyxjQUFjLENBQUMsS0FBZTtRQUNsQyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxPQUFPO0lBQ1AsOEVBQThFO0lBRTlFOzs7Ozs7Ozs7OztPQVdHO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFZO1FBQ3JCLElBQUksQ0FBQztZQUNILE1BQU0sVUFBVSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzNDLE1BQU0sTUFBTSxHQUFHLE1BQU0sT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBRXpDLE9BQU87Z0JBQ0wsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDO2dCQUNoRCxhQUFhLEVBQUUsU0FBUyxFQUFFLGdDQUFnQzthQUMzRCxDQUFDO1FBQ0osQ0FBQztRQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7WUFDZixNQUFNLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUMvQyxDQUFDO0lBQ0gsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxhQUFhO0lBQ2IsOEVBQThFO0lBRTlFOzs7Ozs7Ozs7Ozs7T0FZRztJQUNILGdCQUFnQixDQUFDLFlBQW9CLEVBQUUsTUFBZTtRQUNwRCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDN0IsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUVuRSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsT0FBTyxHQUFHLE1BQU0sSUFBSSxTQUFTLElBQUksYUFBYSxFQUFFLENBQUM7UUFDbkQsQ0FBQztRQUNELE9BQU8sR0FBRyxTQUFTLElBQUksYUFBYSxFQUFFLENBQUM7SUFDekMsQ0FBQztJQUVEOzs7Ozs7Ozs7Ozs7O09BYUc7SUFDSCxZQUFZLENBQUMsU0FBaUIsRUFBRSxZQUFvQixFQUFFLE1BQWU7UUFDbkUsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsQ0FBQztRQUM3RCxNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLGtCQUFrQjtRQUNsRSxPQUFPLEdBQUcsUUFBUSxJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQ25DLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFlBQVksQ0FBQyxRQUFnQjtRQUMzQixNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2xDLE9BQU8sS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUcsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzVELENBQUM7SUFFRDs7T0FFRztJQUNILE9BQU8sQ0FBQyxRQUFnQjtRQUN0QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUVEOztPQUVHO0lBQ0gsVUFBVSxDQUFDLFFBQWdCO1FBQ3pCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkYsQ0FBQztJQUVELDhFQUE4RTtJQUM5RSxtQkFBbUI7SUFDbkIsOEVBQThFO0lBRTlFOztPQUVHO0lBQ0ssWUFBWSxDQUFDLEtBQWE7UUFDaEMsUUFBUSxLQUFLLEVBQUUsQ0FBQztZQUNkLEtBQUssU0FBUztnQkFDWixPQUFPLFNBQVMsQ0FBQztZQUNuQixLQUFLLFFBQVE7Z0JBQ1gsT0FBTyxRQUFRLENBQUM7WUFDbEIsS0FBSyxTQUFTO2dCQUNaLE9BQU8sU0FBUyxDQUFDO1lBQ25CLEtBQUssVUFBVTtnQkFDYixPQUFPLFVBQVUsQ0FBQztZQUNwQixLQUFLLE9BQU87Z0JBQ1YsT0FBTyxPQUFPLENBQUM7WUFDakI7Z0JBQ0UsT0FBTyxTQUFTLENBQUM7UUFDckIsQ0FBQztJQUNILENBQUM7SUFFRDs7T0FFRztJQUNLLGVBQWUsQ0FBQyxLQUFjO1FBQ3BDLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRSxDQUFDO1lBQzNCLE1BQU0sSUFBSSxHQUFJLEtBQTJCLENBQUMsSUFBSSxDQUFDO1lBRS9DLFFBQVEsSUFBSSxFQUFFLENBQUM7Z0JBQ2IsS0FBSywwQkFBMEI7b0JBQzdCLE9BQU8sc0JBQXNCLENBQUM7Z0JBQ2hDLEtBQUssc0JBQXNCO29CQUN6QixPQUFPLCtDQUErQyxDQUFDO2dCQUN6RCxLQUFLLGtCQUFrQjtvQkFDckIsT0FBTyw0QkFBNEIsQ0FBQztnQkFDdEMsS0FBSyx3QkFBd0I7b0JBQzNCLE9BQU8sMkNBQTJDLENBQUM7Z0JBQ3JELEtBQUssMEJBQTBCO29CQUM3QixPQUFPLDBCQUEwQixDQUFDO2dCQUNwQyxLQUFLLDhCQUE4QjtvQkFDakMsT0FBTyxxQ0FBcUMsQ0FBQztnQkFDL0MsS0FBSyxxQkFBcUI7b0JBQ3hCLE9BQU8seUJBQXlCLENBQUM7Z0JBQ25DLEtBQUssMEJBQTBCO29CQUM3QixPQUFPLG9CQUFvQixDQUFDO2dCQUM5QjtvQkFDRSxPQUFPLEtBQUssQ0FBQyxPQUFPLElBQUkscUNBQXFDLENBQUM7WUFDbEUsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLHFDQUFxQyxDQUFDO0lBQy9DLENBQUM7K0dBNVpVLGNBQWM7bUhBQWQsY0FBYyxjQURELE1BQU07OzRGQUNuQixjQUFjO2tCQUQxQixVQUFVO21CQUFDLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU3RvcmFnZSBTZXJ2aWNlXG4gKlxuICogU2VydmljaW8gcGFyYSBvcGVyYWNpb25lcyBkZSBGaXJlYmFzZSBTdG9yYWdlLlxuICogU29wb3J0YSB1cGxvYWQgY29uIHRyYWNraW5nIGRlIHByb2dyZXNvLCBkb3dubG9hZCB5IGdlc3Rpw7NuIGRlIGFyY2hpdm9zLlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7XG4gIGRlbGV0ZU9iamVjdCxcbiAgZ2V0RG93bmxvYWRVUkwsXG4gIGdldE1ldGFkYXRhLFxuICBsaXN0QWxsLFxuICByZWYsXG4gIFN0b3JhZ2UsXG4gIHVwbG9hZEJ5dGVzUmVzdW1hYmxlLFxuICBVcGxvYWRNZXRhZGF0YSxcbiAgVXBsb2FkVGFza1NuYXBzaG90LFxufSBmcm9tICdAYW5ndWxhci9maXJlL3N0b3JhZ2UnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IFN0b3JhZ2VMaXN0UmVzdWx0LCBTdG9yYWdlTWV0YWRhdGEsIFVwbG9hZFByb2dyZXNzLCBVcGxvYWRSZXN1bHQsIFVwbG9hZFN0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogU2VydmljaW8gcGFyYSBGaXJlYmFzZSBTdG9yYWdlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHsuLi59KVxuICogZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRDb21wb25lbnQge1xuICogICBwcml2YXRlIHN0b3JhZ2UgPSBpbmplY3QoU3RvcmFnZVNlcnZpY2UpO1xuICpcbiAqICAgdXBsb2FkUHJvZ3Jlc3MgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAqICAgZG93bmxvYWRVcmwgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gKlxuICogICBhc3luYyBvbkZpbGVTZWxlY3RlZChldmVudDogRXZlbnQpIHtcbiAqICAgICBjb25zdCBmaWxlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlcz8uWzBdO1xuICogICAgIGlmICghZmlsZSkgcmV0dXJuO1xuICpcbiAqICAgICAvLyBVcGxvYWQgY29uIHByb2dyZXNvXG4gKiAgICAgdGhpcy5zdG9yYWdlLnVwbG9hZChgdXBsb2Fkcy8ke2ZpbGUubmFtZX1gLCBmaWxlKS5zdWJzY3JpYmUoe1xuICogICAgICAgbmV4dDogKHByb2dyZXNzKSA9PiB0aGlzLnVwbG9hZFByb2dyZXNzLnNldChwcm9ncmVzcy5wZXJjZW50YWdlKSxcbiAqICAgICAgIGNvbXBsZXRlOiBhc3luYyAoKSA9PiB7XG4gKiAgICAgICAgIGNvbnN0IHVybCA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXREb3dubG9hZFVybChgdXBsb2Fkcy8ke2ZpbGUubmFtZX1gKTtcbiAqICAgICAgICAgdGhpcy5kb3dubG9hZFVybC5zZXQodXJsKTtcbiAqICAgICAgIH1cbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgU3RvcmFnZVNlcnZpY2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JhZ2U6IFN0b3JhZ2UpIHt9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFVQTE9BRFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogU3ViZSB1biBhcmNoaXZvIGNvbiB0cmFja2luZyBkZSBwcm9ncmVzby5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBSdXRhIGVuIFN0b3JhZ2UgZG9uZGUgZ3VhcmRhciBlbCBhcmNoaXZvXG4gICAqIEBwYXJhbSBmaWxlIC0gQXJjaGl2byBhIHN1YmlyIChGaWxlIG8gQmxvYilcbiAgICogQHBhcmFtIG1ldGFkYXRhIC0gTWV0YWRhdGEgb3BjaW9uYWwgKGNvbnRlbnRUeXBlLCBjdXN0b21NZXRhZGF0YSlcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBxdWUgZW1pdGUgZWwgcHJvZ3Jlc28geSBjb21wbGV0YSBjdWFuZG8gdGVybWluYVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIFVwbG9hZCBiw6FzaWNvXG4gICAqIHN0b3JhZ2UudXBsb2FkKCdpbWFnZXMvcGhvdG8uanBnJywgZmlsZSkuc3Vic2NyaWJlKHtcbiAgICogICBuZXh0OiAocHJvZ3Jlc3MpID0+IGNvbnNvbGUubG9nKGAke3Byb2dyZXNzLnBlcmNlbnRhZ2V9JWApLFxuICAgKiAgIGNvbXBsZXRlOiAoKSA9PiBjb25zb2xlLmxvZygnVXBsb2FkIGNvbXBsZXRhZG8nKVxuICAgKiB9KTtcbiAgICpcbiAgICogLy8gQ29uIG1ldGFkYXRhXG4gICAqIHN0b3JhZ2UudXBsb2FkKCdkb2NzL3JlcG9ydC5wZGYnLCBmaWxlLCB7XG4gICAqICAgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnLFxuICAgKiAgIGN1c3RvbU1ldGFkYXRhOiB7IHVwbG9hZGVkQnk6ICd1c2VyMTIzJyB9XG4gICAqIH0pLnN1YnNjcmliZSguLi4pO1xuICAgKiBgYGBcbiAgICovXG4gIHVwbG9hZChwYXRoOiBzdHJpbmcsIGZpbGU6IEZpbGUgfCBCbG9iLCBtZXRhZGF0YT86IFN0b3JhZ2VNZXRhZGF0YSk6IE9ic2VydmFibGU8VXBsb2FkUHJvZ3Jlc3M+IHtcbiAgICBjb25zdCBzdG9yYWdlUmVmID0gcmVmKHRoaXMuc3RvcmFnZSwgcGF0aCk7XG4gICAgY29uc3QgdXBsb2FkTWV0YWRhdGE6IFVwbG9hZE1ldGFkYXRhID0ge1xuICAgICAgY29udGVudFR5cGU6IG1ldGFkYXRhPy5jb250ZW50VHlwZSB8fCAoZmlsZSBpbnN0YW5jZW9mIEZpbGUgPyBmaWxlLnR5cGUgOiB1bmRlZmluZWQpLFxuICAgICAgY3VzdG9tTWV0YWRhdGE6IG1ldGFkYXRhPy5jdXN0b21NZXRhZGF0YSxcbiAgICAgIGNhY2hlQ29udHJvbDogbWV0YWRhdGE/LmNhY2hlQ29udHJvbCxcbiAgICB9O1xuXG4gICAgY29uc3QgdGFzayA9IHVwbG9hZEJ5dGVzUmVzdW1hYmxlKHN0b3JhZ2VSZWYsIGZpbGUsIHVwbG9hZE1ldGFkYXRhKTtcbiAgICBjb25zdCBwcm9ncmVzcyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PFVwbG9hZFByb2dyZXNzPih7XG4gICAgICBieXRlc1RyYW5zZmVycmVkOiAwLFxuICAgICAgdG90YWxCeXRlczogZmlsZS5zaXplLFxuICAgICAgcGVyY2VudGFnZTogMCxcbiAgICAgIHN0YXRlOiAncnVubmluZycsXG4gICAgfSk7XG5cbiAgICB0YXNrLm9uKFxuICAgICAgJ3N0YXRlX2NoYW5nZWQnLFxuICAgICAgKHNuYXBzaG90OiBVcGxvYWRUYXNrU25hcHNob3QpID0+IHtcbiAgICAgICAgcHJvZ3Jlc3MkLm5leHQoe1xuICAgICAgICAgIGJ5dGVzVHJhbnNmZXJyZWQ6IHNuYXBzaG90LmJ5dGVzVHJhbnNmZXJyZWQsXG4gICAgICAgICAgdG90YWxCeXRlczogc25hcHNob3QudG90YWxCeXRlcyxcbiAgICAgICAgICBwZXJjZW50YWdlOiBNYXRoLnJvdW5kKChzbmFwc2hvdC5ieXRlc1RyYW5zZmVycmVkIC8gc25hcHNob3QudG90YWxCeXRlcykgKiAxMDApLFxuICAgICAgICAgIHN0YXRlOiB0aGlzLm1hcFRhc2tTdGF0ZShzbmFwc2hvdC5zdGF0ZSksXG4gICAgICAgIH0pO1xuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICBwcm9ncmVzcyQubmV4dCh7XG4gICAgICAgICAgYnl0ZXNUcmFuc2ZlcnJlZDogMCxcbiAgICAgICAgICB0b3RhbEJ5dGVzOiBmaWxlLnNpemUsXG4gICAgICAgICAgcGVyY2VudGFnZTogMCxcbiAgICAgICAgICBzdGF0ZTogJ2Vycm9yJyxcbiAgICAgICAgfSk7XG4gICAgICAgIHByb2dyZXNzJC5lcnJvcih0aGlzLmdldEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgcHJvZ3Jlc3MkLm5leHQoe1xuICAgICAgICAgIGJ5dGVzVHJhbnNmZXJyZWQ6IGZpbGUuc2l6ZSxcbiAgICAgICAgICB0b3RhbEJ5dGVzOiBmaWxlLnNpemUsXG4gICAgICAgICAgcGVyY2VudGFnZTogMTAwLFxuICAgICAgICAgIHN0YXRlOiAnc3VjY2VzcycsXG4gICAgICAgIH0pO1xuICAgICAgICBwcm9ncmVzcyQuY29tcGxldGUoKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgcmV0dXJuIHByb2dyZXNzJC5hc09ic2VydmFibGUoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJlIHVuIGFyY2hpdm8geSByZXRvcm5hIGxhIFVSTCBkZSBkZXNjYXJnYSBhbCBjb21wbGV0YXIuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBlbiBTdG9yYWdlXG4gICAqIEBwYXJhbSBmaWxlIC0gQXJjaGl2byBhIHN1YmlyXG4gICAqIEBwYXJhbSBtZXRhZGF0YSAtIE1ldGFkYXRhIG9wY2lvbmFsXG4gICAqIEByZXR1cm5zIFJlc3VsdGFkbyBkZWwgdXBsb2FkIGNvbiBVUkwgZGUgZGVzY2FyZ2FcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCByZXN1bHQgPSBhd2FpdCBzdG9yYWdlLnVwbG9hZEFuZEdldFVybCgnYXZhdGFycy91c2VyMTIzLmpwZycsIGZpbGUpO1xuICAgKiBjb25zb2xlLmxvZygnVVJMOicsIHJlc3VsdC5kb3dubG9hZFVybCk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgdXBsb2FkQW5kR2V0VXJsKFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBmaWxlOiBGaWxlIHwgQmxvYixcbiAgICBtZXRhZGF0YT86IFN0b3JhZ2VNZXRhZGF0YVxuICApOiBQcm9taXNlPFVwbG9hZFJlc3VsdD4ge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnVwbG9hZChwYXRoLCBmaWxlLCBtZXRhZGF0YSkuc3Vic2NyaWJlKHtcbiAgICAgICAgY29tcGxldGU6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qgc3RvcmFnZVJlZiA9IHJlZih0aGlzLnN0b3JhZ2UsIHBhdGgpO1xuICAgICAgICAgICAgY29uc3QgZG93bmxvYWRVcmwgPSBhd2FpdCBnZXREb3dubG9hZFVSTChzdG9yYWdlUmVmKTtcbiAgICAgICAgICAgIGNvbnN0IHN0b3JlZE1ldGFkYXRhID0gYXdhaXQgZ2V0TWV0YWRhdGEoc3RvcmFnZVJlZik7XG5cbiAgICAgICAgICAgIHJlc29sdmUoe1xuICAgICAgICAgICAgICBkb3dubG9hZFVybCxcbiAgICAgICAgICAgICAgZnVsbFBhdGg6IHN0b3JlZE1ldGFkYXRhLmZ1bGxQYXRoLFxuICAgICAgICAgICAgICBuYW1lOiBzdG9yZWRNZXRhZGF0YS5uYW1lLFxuICAgICAgICAgICAgICBzaXplOiBzdG9yZWRNZXRhZGF0YS5zaXplLFxuICAgICAgICAgICAgICBjb250ZW50VHlwZTogc3RvcmVkTWV0YWRhdGEuY29udGVudFR5cGUgfHwgJ2FwcGxpY2F0aW9uL29jdGV0LXN0cmVhbScsXG4gICAgICAgICAgICAgIG1ldGFkYXRhOiBzdG9yZWRNZXRhZGF0YS5jdXN0b21NZXRhZGF0YSB8fCB7fSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZWplY3QodGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyb3IpID0+IHJlamVjdChlcnJvciksXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJlIHVuIGFyY2hpdm8gZGVzZGUgdW5hIERhdGEgVVJMIChiYXNlNjQpLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFJ1dGEgZW4gU3RvcmFnZVxuICAgKiBAcGFyYW0gZGF0YVVybCAtIERhdGEgVVJMIChlajogJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwuLi4nKVxuICAgKiBAcGFyYW0gbWV0YWRhdGEgLSBNZXRhZGF0YSBvcGNpb25hbFxuICAgKiBAcmV0dXJucyBSZXN1bHRhZG8gZGVsIHVwbG9hZFxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIERlc2RlIGNhbnZhc1xuICAgKiBjb25zdCBkYXRhVXJsID0gY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJyk7XG4gICAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHN0b3JhZ2UudXBsb2FkRnJvbURhdGFVcmwoJ2ltYWdlcy9kcmF3aW5nLnBuZycsIGRhdGFVcmwpO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIHVwbG9hZEZyb21EYXRhVXJsKFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBkYXRhVXJsOiBzdHJpbmcsXG4gICAgbWV0YWRhdGE/OiBTdG9yYWdlTWV0YWRhdGFcbiAgKTogUHJvbWlzZTxVcGxvYWRSZXN1bHQ+IHtcbiAgICAvLyBFeHRyYWVyIGNvbnRlbnQgdHlwZSB5IGRhdG9zIGJhc2U2NFxuICAgIGNvbnN0IG1hdGNoZXMgPSBkYXRhVXJsLm1hdGNoKC9eZGF0YTooW147XSspO2Jhc2U2NCwoLispJC8pO1xuICAgIGlmICghbWF0Y2hlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdEYXRhIFVSTCBpbnbDoWxpZGEnKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb250ZW50VHlwZSA9IG1hdGNoZXNbMV07XG4gICAgY29uc3QgYmFzZTY0RGF0YSA9IG1hdGNoZXNbMl07XG5cbiAgICAvLyBDb252ZXJ0aXIgYmFzZTY0IGEgQmxvYlxuICAgIGNvbnN0IGJ5dGVDaGFyYWN0ZXJzID0gYXRvYihiYXNlNjREYXRhKTtcbiAgICBjb25zdCBieXRlTnVtYmVycyA9IG5ldyBBcnJheShieXRlQ2hhcmFjdGVycy5sZW5ndGgpO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYnl0ZUNoYXJhY3RlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGJ5dGVOdW1iZXJzW2ldID0gYnl0ZUNoYXJhY3RlcnMuY2hhckNvZGVBdChpKTtcbiAgICB9XG4gICAgY29uc3QgYnl0ZUFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYnl0ZU51bWJlcnMpO1xuICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnl0ZUFycmF5XSwgeyB0eXBlOiBjb250ZW50VHlwZSB9KTtcblxuICAgIHJldHVybiB0aGlzLnVwbG9hZEFuZEdldFVybChwYXRoLCBibG9iLCB7XG4gICAgICBjb250ZW50VHlwZSxcbiAgICAgIC4uLm1ldGFkYXRhLFxuICAgIH0pO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIERPV05MT0FEXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGxhIFVSTCBkZSBkZXNjYXJnYSBkZSB1biBhcmNoaXZvLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFJ1dGEgZGVsIGFyY2hpdm8gZW4gU3RvcmFnZVxuICAgKiBAcmV0dXJucyBVUkwgZGUgZGVzY2FyZ2FcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCB1cmwgPSBhd2FpdCBzdG9yYWdlLmdldERvd25sb2FkVXJsKCdpbWFnZXMvcGhvdG8uanBnJyk7XG4gICAqIC8vIFVzYXIgZW4gPGltZyBbc3JjXT1cInVybFwiPlxuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGdldERvd25sb2FkVXJsKHBhdGg6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0b3JhZ2VSZWYgPSByZWYodGhpcy5zdG9yYWdlLCBwYXRoKTtcbiAgICAgIHJldHVybiBhd2FpdCBnZXREb3dubG9hZFVSTChzdG9yYWdlUmVmKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuZ2V0RXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE9idGllbmUgbGEgbWV0YWRhdGEgZGUgdW4gYXJjaGl2by5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBSdXRhIGRlbCBhcmNoaXZvXG4gICAqIEByZXR1cm5zIE1ldGFkYXRhIGRlbCBhcmNoaXZvXG4gICAqL1xuICBhc3luYyBnZXRNZXRhZGF0YShwYXRoOiBzdHJpbmcpOiBQcm9taXNlPFN0b3JhZ2VNZXRhZGF0YSAmIHsgc2l6ZTogbnVtYmVyOyBuYW1lOiBzdHJpbmcgfT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBzdG9yYWdlUmVmID0gcmVmKHRoaXMuc3RvcmFnZSwgcGF0aCk7XG4gICAgICBjb25zdCBtZXRhZGF0YSA9IGF3YWl0IGdldE1ldGFkYXRhKHN0b3JhZ2VSZWYpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgY29udGVudFR5cGU6IG1ldGFkYXRhLmNvbnRlbnRUeXBlLFxuICAgICAgICBjdXN0b21NZXRhZGF0YTogbWV0YWRhdGEuY3VzdG9tTWV0YWRhdGEsXG4gICAgICAgIGNhY2hlQ29udHJvbDogbWV0YWRhdGEuY2FjaGVDb250cm9sLFxuICAgICAgICBzaXplOiBtZXRhZGF0YS5zaXplLFxuICAgICAgICBuYW1lOiBtZXRhZGF0YS5uYW1lLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuZ2V0RXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIERFTEVURVxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogRWxpbWluYSB1biBhcmNoaXZvLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFJ1dGEgZGVsIGFyY2hpdm8gYSBlbGltaW5hclxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGF3YWl0IHN0b3JhZ2UuZGVsZXRlKCdpbWFnZXMvb2xkLXBob3RvLmpwZycpO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGRlbGV0ZShwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc3RvcmFnZVJlZiA9IHJlZih0aGlzLnN0b3JhZ2UsIHBhdGgpO1xuICAgICAgYXdhaXQgZGVsZXRlT2JqZWN0KHN0b3JhZ2VSZWYpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRWxpbWluYSBtw7psdGlwbGVzIGFyY2hpdm9zLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aHMgLSBBcnJheSBkZSBydXRhcyBhIGVsaW1pbmFyXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogYXdhaXQgc3RvcmFnZS5kZWxldGVNdWx0aXBsZShbXG4gICAqICAgJ2ltYWdlcy9waG90bzEuanBnJyxcbiAgICogICAnaW1hZ2VzL3Bob3RvMi5qcGcnXG4gICAqIF0pO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGRlbGV0ZU11bHRpcGxlKHBhdGhzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IFByb21pc2UuYWxsKHBhdGhzLm1hcCgocGF0aCkgPT4gdGhpcy5kZWxldGUocGF0aCkpKTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBMSVNUXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBMaXN0YSBhcmNoaXZvcyBlbiB1biBkaXJlY3RvcmlvLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFJ1dGEgZGVsIGRpcmVjdG9yaW9cbiAgICogQHJldHVybnMgTGlzdGEgZGUgcnV0YXMgZGUgYXJjaGl2b3NcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCByZXN1bHQgPSBhd2FpdCBzdG9yYWdlLmxpc3QoJ2ltYWdlcy8nKTtcbiAgICogY29uc29sZS5sb2cocmVzdWx0Lml0ZW1zKTsgLy8gWydpbWFnZXMvcGhvdG8xLmpwZycsICdpbWFnZXMvcGhvdG8yLmpwZyddXG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgbGlzdChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPFN0b3JhZ2VMaXN0UmVzdWx0PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0b3JhZ2VSZWYgPSByZWYodGhpcy5zdG9yYWdlLCBwYXRoKTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGxpc3RBbGwoc3RvcmFnZVJlZik7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGl0ZW1zOiByZXN1bHQuaXRlbXMubWFwKChpdGVtKSA9PiBpdGVtLmZ1bGxQYXRoKSxcbiAgICAgICAgbmV4dFBhZ2VUb2tlbjogdW5kZWZpbmVkLCAvLyBsaXN0QWxsIG5vIHNvcG9ydGEgcGFnaW5hY2nDs25cbiAgICAgIH07XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLmdldEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgIH1cbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBVVElMSURBREVTXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBHZW5lcmEgdW4gbm9tYnJlIGRlIGFyY2hpdm8gw7puaWNvIGNvbiB0aW1lc3RhbXAuXG4gICAqXG4gICAqIEBwYXJhbSBvcmlnaW5hbE5hbWUgLSBOb21icmUgb3JpZ2luYWwgZGVsIGFyY2hpdm9cbiAgICogQHBhcmFtIHByZWZpeCAtIFByZWZpam8gb3BjaW9uYWxcbiAgICogQHJldHVybnMgTm9tYnJlIMO6bmljb1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHVuaXF1ZU5hbWUgPSBzdG9yYWdlLmdlbmVyYXRlRmlsZU5hbWUoJ3Bob3RvLmpwZycsICd1c2VyMTIzJyk7XG4gICAqIC8vID0+ICd1c2VyMTIzXzE3MDMwOTEyMzQ1NjdfcGhvdG8uanBnJ1xuICAgKiBgYGBcbiAgICovXG4gIGdlbmVyYXRlRmlsZU5hbWUob3JpZ2luYWxOYW1lOiBzdHJpbmcsIHByZWZpeD86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgdGltZXN0YW1wID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBzYW5pdGl6ZWROYW1lID0gb3JpZ2luYWxOYW1lLnJlcGxhY2UoL1teYS16QS1aMC05Li1dL2csICdfJyk7XG5cbiAgICBpZiAocHJlZml4KSB7XG4gICAgICByZXR1cm4gYCR7cHJlZml4fV8ke3RpbWVzdGFtcH1fJHtzYW5pdGl6ZWROYW1lfWA7XG4gICAgfVxuICAgIHJldHVybiBgJHt0aW1lc3RhbXB9XyR7c2FuaXRpemVkTmFtZX1gO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYSB1bmEgcnV0YSDDum5pY2EgcGFyYSB1biBhcmNoaXZvLlxuICAgKlxuICAgKiBAcGFyYW0gZGlyZWN0b3J5IC0gRGlyZWN0b3JpbyBiYXNlXG4gICAqIEBwYXJhbSBvcmlnaW5hbE5hbWUgLSBOb21icmUgb3JpZ2luYWxcbiAgICogQHBhcmFtIHByZWZpeCAtIFByZWZpam8gb3BjaW9uYWxcbiAgICogQHJldHVybnMgUnV0YSBjb21wbGV0YSDDum5pY2FcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBwYXRoID0gc3RvcmFnZS5nZW5lcmF0ZVBhdGgoJ3VwbG9hZHMnLCAncGhvdG8uanBnJywgJ3VzZXIxMjMnKTtcbiAgICogLy8gPT4gJ3VwbG9hZHMvdXNlcjEyM18xNzAzMDkxMjM0NTY3X3Bob3RvLmpwZydcbiAgICogYGBgXG4gICAqL1xuICBnZW5lcmF0ZVBhdGgoZGlyZWN0b3J5OiBzdHJpbmcsIG9yaWdpbmFsTmFtZTogc3RyaW5nLCBwcmVmaXg/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGZpbGVOYW1lID0gdGhpcy5nZW5lcmF0ZUZpbGVOYW1lKG9yaWdpbmFsTmFtZSwgcHJlZml4KTtcbiAgICBjb25zdCBjbGVhbkRpciA9IGRpcmVjdG9yeS5yZXBsYWNlKC9cXC8rJC8sICcnKTsgLy8gUmVtb3ZlciAvIGZpbmFsXG4gICAgcmV0dXJuIGAke2NsZWFuRGlyfS8ke2ZpbGVOYW1lfWA7XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBsYSBleHRlbnNpw7NuIGRlIHVuIGFyY2hpdm8uXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlbmFtZSAtIE5vbWJyZSBkZWwgYXJjaGl2b1xuICAgKiBAcmV0dXJucyBFeHRlbnNpw7NuIChzaW4gZWwgcHVudG8pXG4gICAqL1xuICBnZXRFeHRlbnNpb24oZmlsZW5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcGFydHMgPSBmaWxlbmFtZS5zcGxpdCgnLicpO1xuICAgIHJldHVybiBwYXJ0cy5sZW5ndGggPiAxID8gcGFydHMucG9wKCkhLnRvTG93ZXJDYXNlKCkgOiAnJztcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzaSB1biBhcmNoaXZvIGVzIHVuYSBpbWFnZW4gYmFzw6FuZG9zZSBlbiBzdSBleHRlbnNpw7NuLlxuICAgKi9cbiAgaXNJbWFnZShmaWxlbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZXh0ID0gdGhpcy5nZXRFeHRlbnNpb24oZmlsZW5hbWUpO1xuICAgIHJldHVybiBbJ2pwZycsICdqcGVnJywgJ3BuZycsICdnaWYnLCAnd2VicCcsICdzdmcnLCAnYm1wJ10uaW5jbHVkZXMoZXh0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWZXJpZmljYSBzaSB1biBhcmNoaXZvIGVzIHVuIGRvY3VtZW50by5cbiAgICovXG4gIGlzRG9jdW1lbnQoZmlsZW5hbWU6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4dCA9IHRoaXMuZ2V0RXh0ZW5zaW9uKGZpbGVuYW1lKTtcbiAgICByZXR1cm4gWydwZGYnLCAnZG9jJywgJ2RvY3gnLCAneGxzJywgJ3hsc3gnLCAncHB0JywgJ3BwdHgnLCAndHh0J10uaW5jbHVkZXMoZXh0KTtcbiAgfVxuXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuICAvLyBNw4lUT0RPUyBQUklWQURPU1xuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogTWFwZWEgZWwgZXN0YWRvIGRlIGxhIHRhcmVhIGRlIHVwbG9hZFxuICAgKi9cbiAgcHJpdmF0ZSBtYXBUYXNrU3RhdGUoc3RhdGU6IHN0cmluZyk6IFVwbG9hZFN0YXRlIHtcbiAgICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICBjYXNlICdydW5uaW5nJzpcbiAgICAgICAgcmV0dXJuICdydW5uaW5nJztcbiAgICAgIGNhc2UgJ3BhdXNlZCc6XG4gICAgICAgIHJldHVybiAncGF1c2VkJztcbiAgICAgIGNhc2UgJ3N1Y2Nlc3MnOlxuICAgICAgICByZXR1cm4gJ3N1Y2Nlc3MnO1xuICAgICAgY2FzZSAnY2FuY2VsZWQnOlxuICAgICAgICByZXR1cm4gJ2NhbmNlbGVkJztcbiAgICAgIGNhc2UgJ2Vycm9yJzpcbiAgICAgICAgcmV0dXJuICdlcnJvcic7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gJ3J1bm5pbmcnO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252aWVydGUgZXJyb3JlcyBkZSBTdG9yYWdlIGEgbWVuc2FqZXMgZW4gZXNwYcOxb2xcbiAgICovXG4gIHByaXZhdGUgZ2V0RXJyb3JNZXNzYWdlKGVycm9yOiB1bmtub3duKTogc3RyaW5nIHtcbiAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgY29uc3QgY29kZSA9IChlcnJvciBhcyB7IGNvZGU/OiBzdHJpbmcgfSkuY29kZTtcblxuICAgICAgc3dpdGNoIChjb2RlKSB7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2Uvb2JqZWN0LW5vdC1mb3VuZCc6XG4gICAgICAgICAgcmV0dXJuICdFbCBhcmNoaXZvIG5vIGV4aXN0ZSc7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2UvdW5hdXRob3JpemVkJzpcbiAgICAgICAgICByZXR1cm4gJ05vIHRpZW5lcyBwZXJtaXNvIHBhcmEgYWNjZWRlciBhIGVzdGUgYXJjaGl2byc7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2UvY2FuY2VsZWQnOlxuICAgICAgICAgIHJldHVybiAnTGEgb3BlcmFjacOzbiBmdWUgY2FuY2VsYWRhJztcbiAgICAgICAgY2FzZSAnc3RvcmFnZS9xdW90YS1leGNlZWRlZCc6XG4gICAgICAgICAgcmV0dXJuICdTZSBoYSBleGNlZGlkbyBsYSBjdW90YSBkZSBhbG1hY2VuYW1pZW50byc7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2UvaW52YWxpZC1jaGVja3N1bSc6XG4gICAgICAgICAgcmV0dXJuICdFbCBhcmNoaXZvIGVzdMOhIGNvcnJ1cHRvJztcbiAgICAgICAgY2FzZSAnc3RvcmFnZS9yZXRyeS1saW1pdC1leGNlZWRlZCc6XG4gICAgICAgICAgcmV0dXJuICdFcnJvciBkZSBjb25leGnDs24uIEludGVudGEgZGUgbnVldm8nO1xuICAgICAgICBjYXNlICdzdG9yYWdlL2ludmFsaWQtdXJsJzpcbiAgICAgICAgICByZXR1cm4gJ1VSTCBkZSBhcmNoaXZvIGludsOhbGlkYSc7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2UvaW52YWxpZC1hcmd1bWVudCc6XG4gICAgICAgICAgcmV0dXJuICdBcmd1bWVudG8gaW52w6FsaWRvJztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gZXJyb3IubWVzc2FnZSB8fCAnRXJyb3IgZGUgYWxtYWNlbmFtaWVudG8gZGVzY29ub2NpZG8nO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAnRXJyb3IgZGUgYWxtYWNlbmFtaWVudG8gZGVzY29ub2NpZG8nO1xuICB9XG59XG4iXX0=
441
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9zZXJ2aWNlcy9maXJlYmFzZS9zdG9yYWdlLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0dBS0c7QUFFSCxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNuRCxPQUFPLEVBQ0wsWUFBWSxFQUNaLGNBQWMsRUFDZCxXQUFXLEVBQ1gsT0FBTyxFQUNQLEdBQUcsRUFFSCxvQkFBb0IsR0FHckIsTUFBTSx1QkFBdUIsQ0FBQztBQUMvQixPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDO0FBRW5ELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFVBQVUsQ0FBQzs7O0FBR25EOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7QUFFSCxNQUFNLE9BQU8sY0FBYztJQUd6QixZQUFvQixPQUFnQjtRQUFoQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBRjVCLFdBQU0sR0FBRyxNQUFNLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUU5QixDQUFDO0lBRXhDOzs7OztPQUtHO0lBQ0ssaUJBQWlCLENBQUMsSUFBWTtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxLQUFLO1lBQUUsT0FBTyxJQUFJLENBQUM7UUFDckMsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCw4RUFBOEU7SUFDOUUsU0FBUztJQUNULDhFQUE4RTtJQUU5RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXNCRztJQUNILE1BQU0sQ0FBQyxJQUFZLEVBQUUsSUFBaUIsRUFBRSxRQUEwQjtRQUNoRSxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMs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LE9BQU8sb0JBQW9CLENBQUM7Z0JBQzlCO29CQUNFLE9BQU8sS0FBSyxDQUFDLE9BQU8sSUFBSSxxQ0FBcUMsQ0FBQztZQUNsRSxDQUFDO1FBQ0gsQ0FBQztRQUVELE9BQU8scUNBQXFDLENBQUM7SUFDL0MsQ0FBQzsrR0EvYVUsY0FBYzttSEFBZCxjQUFjLGNBREQsTUFBTTs7NEZBQ25CLGNBQWM7a0JBRDFCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBTdG9yYWdlIFNlcnZpY2VcbiAqXG4gKiBTZXJ2aWNpbyBwYXJhIG9wZXJhY2lvbmVzIGRlIEZpcmViYXNlIFN0b3JhZ2UuXG4gKiBTb3BvcnRhIHVwbG9hZCBjb24gdHJhY2tpbmcgZGUgcHJvZ3Jlc28sIGRvd25sb2FkIHkgZ2VzdGnDs24gZGUgYXJjaGl2b3MuXG4gKi9cblxuaW1wb3J0IHsgaW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge1xuICBkZWxldGVPYmplY3QsXG4gIGdldERvd25sb2FkVVJMLFxuICBnZXRNZXRhZGF0YSxcbiAgbGlzdEFsbCxcbiAgcmVmLFxuICBTdG9yYWdlLFxuICB1cGxvYWRCeXRlc1Jlc3VtYWJsZSxcbiAgVXBsb2FkTWV0YWRhdGEsXG4gIFVwbG9hZFRhc2tTbmFwc2hvdCxcbn0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9zdG9yYWdlJztcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQgeyBWQUxURUNIX0ZJUkVCQVNFX0NPTkZJRyB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB7IFN0b3JhZ2VMaXN0UmVzdWx0LCBTdG9yYWdlTWV0YWRhdGEsIFVwbG9hZFByb2dyZXNzLCBVcGxvYWRSZXN1bHQsIFVwbG9hZFN0YXRlIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogU2VydmljaW8gcGFyYSBGaXJlYmFzZSBTdG9yYWdlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBAQ29tcG9uZW50KHsuLi59KVxuICogZXhwb3J0IGNsYXNzIEZpbGVVcGxvYWRDb21wb25lbnQge1xuICogICBwcml2YXRlIHN0b3JhZ2UgPSBpbmplY3QoU3RvcmFnZVNlcnZpY2UpO1xuICpcbiAqICAgdXBsb2FkUHJvZ3Jlc3MgPSBzaWduYWw8bnVtYmVyPigwKTtcbiAqICAgZG93bmxvYWRVcmwgPSBzaWduYWw8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gKlxuICogICBhc3luYyBvbkZpbGVTZWxlY3RlZChldmVudDogRXZlbnQpIHtcbiAqICAgICBjb25zdCBmaWxlID0gKGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50KS5maWxlcz8uWzBdO1xuICogICAgIGlmICghZmlsZSkgcmV0dXJuO1xuICpcbiAqICAgICAvLyBVcGxvYWQgY29uIHByb2dyZXNvXG4gKiAgICAgdGhpcy5zdG9yYWdlLnVwbG9hZChgdXBsb2Fkcy8ke2ZpbGUubmFtZX1gLCBmaWxlKS5zdWJzY3JpYmUoe1xuICogICAgICAgbmV4dDogKHByb2dyZXNzKSA9PiB0aGlzLnVwbG9hZFByb2dyZXNzLnNldChwcm9ncmVzcy5wZXJjZW50YWdlKSxcbiAqICAgICAgIGNvbXBsZXRlOiBhc3luYyAoKSA9PiB7XG4gKiAgICAgICAgIGNvbnN0IHVybCA9IGF3YWl0IHRoaXMuc3RvcmFnZS5nZXREb3dubG9hZFVybChgdXBsb2Fkcy8ke2ZpbGUubmFtZX1gKTtcbiAqICAgICAgICAgdGhpcy5kb3dubG9hZFVybC5zZXQodXJsKTtcbiAqICAgICAgIH1cbiAqICAgICB9KTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgU3RvcmFnZVNlcnZpY2Uge1xuICBwcml2YXRlIGNvbmZpZyA9IGluamVjdChWQUxURUNIX0ZJUkVCQVNFX0NPTkZJRywgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHN0b3JhZ2U6IFN0b3JhZ2UpIHt9XG5cbiAgLyoqXG4gICAqIFByZWZpamEgZWwgcGF0aCBkZSBzdG9yYWdlIGNvbiBlbCBhcHBJZCBzaSBlc3TDoSBjb25maWd1cmFkby5cbiAgICogU2kgbm8gaGF5IGFwcElkLCByZXRvcm5hIGVsIHBhdGggc2luIG1vZGlmaWNhciAoYmFja3dhcmQgY29tcGF0aWJsZSkuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJpdmF0ZSBwcmVmaXhTdG9yYWdlUGF0aChwYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5jb25maWc/LmFwcElkKSByZXR1cm4gcGF0aDtcbiAgICByZXR1cm4gYCR7dGhpcy5jb25maWcuYXBwSWR9LyR7cGF0aH1gO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFVQTE9BRFxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuICAvKipcbiAgICogU3ViZSB1biBhcmNoaXZvIGNvbiB0cmFja2luZyBkZSBwcm9ncmVzby5cbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSBSdXRhIGVuIFN0b3JhZ2UgZG9uZGUgZ3VhcmRhciBlbCBhcmNoaXZvXG4gICAqIEBwYXJhbSBmaWxlIC0gQXJjaGl2byBhIHN1YmlyIChGaWxlIG8gQmxvYilcbiAgICogQHBhcmFtIG1ldGFkYXRhIC0gTWV0YWRhdGEgb3BjaW9uYWwgKGNvbnRlbnRUeXBlLCBjdXN0b21NZXRhZGF0YSlcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZSBxdWUgZW1pdGUgZWwgcHJvZ3Jlc28geSBjb21wbGV0YSBjdWFuZG8gdGVybWluYVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIFVwbG9hZCBiw6FzaWNvXG4gICAqIHN0b3JhZ2UudXBsb2FkKCdpbWFnZXMvcGhvdG8uanBnJywgZmlsZSkuc3Vic2NyaWJlKHtcbiAgICogICBuZXh0OiAocHJvZ3Jlc3MpID0+IGNvbnNvbGUubG9nKGAke3Byb2dyZXNzLnBlcmNlbnRhZ2V9JWApLFxuICAgKiAgIGNvbXBsZXRlOiAoKSA9PiBjb25zb2xlLmxvZygnVXBsb2FkIGNvbXBsZXRhZG8nKVxuICAgKiB9KTtcbiAgICpcbiAgICogLy8gQ29uIG1ldGFkYXRhXG4gICAqIHN0b3JhZ2UudXBsb2FkKCdkb2NzL3JlcG9ydC5wZGYnLCBmaWxlLCB7XG4gICAqICAgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9wZGYnLFxuICAgKiAgIGN1c3RvbU1ldGFkYXRhOiB7IHVwbG9hZGVkQnk6ICd1c2VyMTIzJyB9XG4gICAqIH0pLnN1YnNjcmliZSguLi4pO1xuICAgKiBgYGBcbiAgICovXG4gIHVwbG9hZChwYXRoOiBzdHJpbmcsIGZpbGU6IEZpbGUgfCBCbG9iLCBtZXRhZGF0YT86IFN0b3JhZ2VNZXRhZGF0YSk6IE9ic2VydmFibGU8VXBsb2FkUHJvZ3Jlc3M+IHtcbiAgICBjb25zdCBwcmVmaXhlZFBhdGggPSB0aGlzLnByZWZpeFN0b3JhZ2VQYXRoKHBhdGgpO1xuICAgIGNvbnN0IHN0b3JhZ2VSZWYgPSByZWYodGhpcy5zdG9yYWdlLCBwcmVmaXhlZFBhdGgpO1xuICAgIGNvbnN0IHVwbG9hZE1ldGFkYXRhOiBVcGxvYWRNZXRhZGF0YSA9IHtcbiAgICAgIGNvbnRlbnRUeXBlOiBtZXRhZGF0YT8uY29udGVudFR5cGUgfHwgKGZpbGUgaW5zdGFuY2VvZiBGaWxlID8gZmlsZS50eXBlIDogdW5kZWZpbmVkKSxcbiAgICAgIGN1c3RvbU1ldGFkYXRhOiBtZXRhZGF0YT8uY3VzdG9tTWV0YWRhdGEsXG4gICAgICBjYWNoZUNvbnRyb2w6IG1ldGFkYXRhPy5jYWNoZUNvbnRyb2wsXG4gICAgfTtcblxuICAgIGNvbnN0IHRhc2sgPSB1cGxvYWRCeXRlc1Jlc3VtYWJsZShzdG9yYWdlUmVmLCBmaWxlLCB1cGxvYWRNZXRhZGF0YSk7XG4gICAgY29uc3QgcHJvZ3Jlc3MkID0gbmV3IEJlaGF2aW9yU3ViamVjdDxVcGxvYWRQcm9ncmVzcz4oe1xuICAgICAgYnl0ZXNUcmFuc2ZlcnJlZDogMCxcbiAgICAgIHRvdGFsQnl0ZXM6IGZpbGUuc2l6ZSxcbiAgICAgIHBlcmNlbnRhZ2U6IDAsXG4gICAgICBzdGF0ZTogJ3J1bm5pbmcnLFxuICAgIH0pO1xuXG4gICAgdGFzay5vbihcbiAgICAgICdzdGF0ZV9jaGFuZ2VkJyxcbiAgICAgIChzbmFwc2hvdDogVXBsb2FkVGFza1NuYXBzaG90KSA9PiB7XG4gICAgICAgIHByb2dyZXNzJC5uZXh0KHtcbiAgICAgICAgICBieXRlc1RyYW5zZmVycmVkOiBzbmFwc2hvdC5ieXRlc1RyYW5zZmVycmVkLFxuICAgICAgICAgIHRvdGFsQnl0ZXM6IHNuYXBzaG90LnRvdGFsQnl0ZXMsXG4gICAgICAgICAgcGVyY2VudGFnZTogTWF0aC5yb3VuZCgoc25hcHNob3QuYnl0ZXNUcmFuc2ZlcnJlZCAvIHNuYXBzaG90LnRvdGFsQnl0ZXMpICogMTAwKSxcbiAgICAgICAgICBzdGF0ZTogdGhpcy5tYXBUYXNrU3RhdGUoc25hcHNob3Quc3RhdGUpLFxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgcHJvZ3Jlc3MkLm5leHQoe1xuICAgICAgICAgIGJ5dGVzVHJhbnNmZXJyZWQ6IDAsXG4gICAgICAgICAgdG90YWxCeXRlczogZmlsZS5zaXplLFxuICAgICAgICAgIHBlcmNlbnRhZ2U6IDAsXG4gICAgICAgICAgc3RhdGU6ICdlcnJvcicsXG4gICAgICAgIH0pO1xuICAgICAgICBwcm9ncmVzcyQuZXJyb3IodGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICAgIH0sXG4gICAgICAoKSA9PiB7XG4gICAgICAgIHByb2dyZXNzJC5uZXh0KHtcbiAgICAgICAgICBieXRlc1RyYW5zZmVycmVkOiBmaWxlLnNpemUsXG4gICAgICAgICAgdG90YWxCeXRlczogZmlsZS5zaXplLFxuICAgICAgICAgIHBlcmNlbnRhZ2U6IDEwMCxcbiAgICAgICAgICBzdGF0ZTogJ3N1Y2Nlc3MnLFxuICAgICAgICB9KTtcbiAgICAgICAgcHJvZ3Jlc3MkLmNvbXBsZXRlKCk7XG4gICAgICB9XG4gICAgKTtcblxuICAgIHJldHVybiBwcm9ncmVzcyQuYXNPYnNlcnZhYmxlKCk7XG4gIH1cblxuICAvKipcbiAgICogU3ViZSB1biBhcmNoaXZvIHkgcmV0b3JuYSBsYSBVUkwgZGUgZGVzY2FyZ2EgYWwgY29tcGxldGFyLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFJ1dGEgZW4gU3RvcmFnZVxuICAgKiBAcGFyYW0gZmlsZSAtIEFyY2hpdm8gYSBzdWJpclxuICAgKiBAcGFyYW0gbWV0YWRhdGEgLSBNZXRhZGF0YSBvcGNpb25hbFxuICAgKiBAcmV0dXJucyBSZXN1bHRhZG8gZGVsIHVwbG9hZCBjb24gVVJMIGRlIGRlc2NhcmdhXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgcmVzdWx0ID0gYXdhaXQgc3RvcmFnZS51cGxvYWRBbmRHZXRVcmwoJ2F2YXRhcnMvdXNlcjEyMy5qcGcnLCBmaWxlKTtcbiAgICogY29uc29sZS5sb2coJ1VSTDonLCByZXN1bHQuZG93bmxvYWRVcmwpO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIHVwbG9hZEFuZEdldFVybChcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgZmlsZTogRmlsZSB8IEJsb2IsXG4gICAgbWV0YWRhdGE/OiBTdG9yYWdlTWV0YWRhdGFcbiAgKTogUHJvbWlzZTxVcGxvYWRSZXN1bHQ+IHtcbiAgICBjb25zdCBwcmVmaXhlZFBhdGggPSB0aGlzLnByZWZpeFN0b3JhZ2VQYXRoKHBhdGgpO1xuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLnVwbG9hZChwYXRoLCBmaWxlLCBtZXRhZGF0YSkuc3Vic2NyaWJlKHtcbiAgICAgICAgY29tcGxldGU6IGFzeW5jICgpID0+IHtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3Qgc3RvcmFnZVJlZiA9IHJlZih0aGlzLnN0b3JhZ2UsIHByZWZpeGVkUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBkb3dubG9hZFVybCA9IGF3YWl0IGdldERvd25sb2FkVVJMKHN0b3JhZ2VSZWYpO1xuICAgICAgICAgICAgY29uc3Qgc3RvcmVkTWV0YWRhdGEgPSBhd2FpdCBnZXRNZXRhZGF0YShzdG9yYWdlUmVmKTtcblxuICAgICAgICAgICAgcmVzb2x2ZSh7XG4gICAgICAgICAgICAgIGRvd25sb2FkVXJsLFxuICAgICAgICAgICAgICBmdWxsUGF0aDogc3RvcmVkTWV0YWRhdGEuZnVsbFBhdGgsXG4gICAgICAgICAgICAgIG5hbWU6IHN0b3JlZE1ldGFkYXRhLm5hbWUsXG4gICAgICAgICAgICAgIHNpemU6IHN0b3JlZE1ldGFkYXRhLnNpemUsXG4gICAgICAgICAgICAgIGNvbnRlbnRUeXBlOiBzdG9yZWRNZXRhZGF0YS5jb250ZW50VHlwZSB8fCAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJyxcbiAgICAgICAgICAgICAgbWV0YWRhdGE6IHN0b3JlZE1ldGFkYXRhLmN1c3RvbU1ldGFkYXRhIHx8IHt9LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJlamVjdCh0aGlzLmdldEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4gcmVqZWN0KGVycm9yKSxcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFN1YmUgdW4gYXJjaGl2byBkZXNkZSB1bmEgRGF0YSBVUkwgKGJhc2U2NCkuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBlbiBTdG9yYWdlXG4gICAqIEBwYXJhbSBkYXRhVXJsIC0gRGF0YSBVUkwgKGVqOiAnZGF0YTppbWFnZS9wbmc7YmFzZTY0LC4uLicpXG4gICAqIEBwYXJhbSBtZXRhZGF0YSAtIE1ldGFkYXRhIG9wY2lvbmFsXG4gICAqIEByZXR1cm5zIFJlc3VsdGFkbyBkZWwgdXBsb2FkXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gRGVzZGUgY2FudmFzXG4gICAqIGNvbnN0IGRhdGFVcmwgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcbiAgICogY29uc3QgcmVzdWx0ID0gYXdhaXQgc3RvcmFnZS51cGxvYWRGcm9tRGF0YVVybCgnaW1hZ2VzL2RyYXdpbmcucG5nJywgZGF0YVVybCk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgdXBsb2FkRnJvbURhdGFVcmwoXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGRhdGFVcmw6IHN0cmluZyxcbiAgICBtZXRhZGF0YT86IFN0b3JhZ2VNZXRhZGF0YVxuICApOiBQcm9taXNlPFVwbG9hZFJlc3VsdD4ge1xuICAgIC8vIEV4dHJhZXIgY29udGVudCB0eXBlIHkgZGF0b3MgYmFzZTY0XG4gICAgY29uc3QgbWF0Y2hlcyA9IGRhdGFVcmwubWF0Y2goL15kYXRhOihbXjtdKyk7YmFzZTY0LCguKykkLyk7XG4gICAgaWYgKCFtYXRjaGVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0RhdGEgVVJMIGludsOhbGlkYScpO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRlbnRUeXBlID0gbWF0Y2hlc1sxXTtcbiAgICBjb25zdCBiYXNlNjREYXRhID0gbWF0Y2hlc1syXTtcblxuICAgIC8vIENvbnZlcnRpciBiYXNlNjQgYSBCbG9iXG4gICAgY29uc3QgYnl0ZUNoYXJhY3RlcnMgPSBhdG9iKGJhc2U2NERhdGEpO1xuICAgIGNvbnN0IGJ5dGVOdW1iZXJzID0gbmV3IEFycmF5KGJ5dGVDaGFyYWN0ZXJzLmxlbmd0aCk7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlQ2hhcmFjdGVycy5sZW5ndGg7IGkrKykge1xuICAgICAgYnl0ZU51bWJlcnNbaV0gPSBieXRlQ2hhcmFjdGVycy5jaGFyQ29kZUF0KGkpO1xuICAgIH1cbiAgICBjb25zdCBieXRlQXJyYXkgPSBuZXcgVWludDhBcnJheShieXRlTnVtYmVycyk7XG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFtieXRlQXJyYXldLCB7IHR5cGU6IGNvbnRlbnRUeXBlIH0pO1xuXG4gICAgcmV0dXJuIHRoaXMudXBsb2FkQW5kR2V0VXJsKHBhdGgsIGJsb2IsIHtcbiAgICAgIGNvbnRlbnRUeXBlLFxuICAgICAgLi4ubWV0YWRhdGEsXG4gICAgfSk7XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gRE9XTkxPQURcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIE9idGllbmUgbGEgVVJMIGRlIGRlc2NhcmdhIGRlIHVuIGFyY2hpdm8uXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBkZWwgYXJjaGl2byBlbiBTdG9yYWdlXG4gICAqIEByZXR1cm5zIFVSTCBkZSBkZXNjYXJnYVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHVybCA9IGF3YWl0IHN0b3JhZ2UuZ2V0RG93bmxvYWRVcmwoJ2ltYWdlcy9waG90by5qcGcnKTtcbiAgICogLy8gVXNhciBlbiA8aW1nIFtzcmNdPVwidXJsXCI+XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0RG93bmxvYWRVcmwocGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcHJlZml4ZWRQYXRoID0gdGhpcy5wcmVmaXhTdG9yYWdlUGF0aChwYXRoKTtcbiAgICAgIGNvbnN0IHN0b3JhZ2VSZWYgPSByZWYodGhpcy5zdG9yYWdlLCBwcmVmaXhlZFBhdGgpO1xuICAgICAgcmV0dXJuIGF3YWl0IGdldERvd25sb2FkVVJMKHN0b3JhZ2VSZWYpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogT2J0aWVuZSBsYSBtZXRhZGF0YSBkZSB1biBhcmNoaXZvLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCAtIFJ1dGEgZGVsIGFyY2hpdm9cbiAgICogQHJldHVybnMgTWV0YWRhdGEgZGVsIGFyY2hpdm9cbiAgICovXG4gIGFzeW5jIGdldE1ldGFkYXRhKHBhdGg6IHN0cmluZyk6IFByb21pc2U8U3RvcmFnZU1ldGFkYXRhICYgeyBzaXplOiBudW1iZXI7IG5hbWU6IHN0cmluZyB9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHByZWZpeGVkUGF0aCA9IHRoaXMucHJlZml4U3RvcmFnZVBhdGgocGF0aCk7XG4gICAgICBjb25zdCBzdG9yYWdlUmVmID0gcmVmKHRoaXMuc3RvcmFnZSwgcHJlZml4ZWRQYXRoKTtcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gYXdhaXQgZ2V0TWV0YWRhdGEoc3RvcmFnZVJlZik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBjb250ZW50VHlwZTogbWV0YWRhdGEuY29udGVudFR5cGUsXG4gICAgICAgIGN1c3RvbU1ldGFkYXRhOiBtZXRhZGF0YS5jdXN0b21NZXRhZGF0YSxcbiAgICAgICAgY2FjaGVDb250cm9sOiBtZXRhZGF0YS5jYWNoZUNvbnRyb2wsXG4gICAgICAgIHNpemU6IG1ldGFkYXRhLnNpemUsXG4gICAgICAgIG5hbWU6IG1ldGFkYXRhLm5hbWUsXG4gICAgICB9O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IodGhpcy5nZXRFcnJvck1lc3NhZ2UoZXJyb3IpKTtcbiAgICB9XG4gIH1cblxuICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbiAgLy8gREVMRVRFXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBFbGltaW5hIHVuIGFyY2hpdm8uXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBkZWwgYXJjaGl2byBhIGVsaW1pbmFyXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogYXdhaXQgc3RvcmFnZS5kZWxldGUoJ2ltYWdlcy9vbGQtcGhvdG8uanBnJyk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZGVsZXRlKHBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBwcmVmaXhlZFBhdGggPSB0aGlzLnByZWZpeFN0b3JhZ2VQYXRoKHBhdGgpO1xuICAgICAgY29uc3Qgc3RvcmFnZVJlZiA9IHJlZih0aGlzLnN0b3JhZ2UsIHByZWZpeGVkUGF0aCk7XG4gICAgICBhd2FpdCBkZWxldGVPYmplY3Qoc3RvcmFnZVJlZik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcih0aGlzLmdldEVycm9yTWVzc2FnZShlcnJvcikpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbGltaW5hIG3Dumx0aXBsZXMgYXJjaGl2b3MuXG4gICAqXG4gICAqIEBwYXJhbSBwYXRocyAtIEFycmF5IGRlIHJ1dGFzIGEgZWxpbWluYXJcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBhd2FpdCBzdG9yYWdlLmRlbGV0ZU11bHRpcGxlKFtcbiAgICogICAnaW1hZ2VzL3Bob3RvMS5qcGcnLFxuICAgKiAgICdpbWFnZXMvcGhvdG8yLmpwZydcbiAgICogXSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZGVsZXRlTXVsdGlwbGUocGF0aHM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwocGF0aHMubWFwKChwYXRoKSA9PiB0aGlzLmRlbGV0ZShwYXRoKSkpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIExJU1RcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIExpc3RhIGFyY2hpdm9zIGVuIHVuIGRpcmVjdG9yaW8uXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIC0gUnV0YSBkZWwgZGlyZWN0b3Jpb1xuICAgKiBAcmV0dXJucyBMaXN0YSBkZSBydXRhcyBkZSBhcmNoaXZvc1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHN0b3JhZ2UubGlzdCgnaW1hZ2VzLycpO1xuICAgKiBjb25zb2xlLmxvZyhyZXN1bHQuaXRlbXMpOyAvLyBbJ2ltYWdlcy9waG90bzEuanBnJywgJ2ltYWdlcy9waG90bzIuanBnJ11cbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBsaXN0KHBhdGg6IHN0cmluZyk6IFByb21pc2U8U3RvcmFnZUxpc3RSZXN1bHQ+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcHJlZml4ZWRQYXRoID0gdGhpcy5wcmVmaXhTdG9yYWdlUGF0aChwYXRoKTtcbiAgICAgIGNvbnN0IHN0b3JhZ2VSZWYgPSByZWYodGhpcy5zdG9yYWdlLCBwcmVmaXhlZFBhdGgpO1xuICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgbGlzdEFsbChzdG9yYWdlUmVmKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXRlbXM6IHJlc3VsdC5pdGVtcy5tYXAoKGl0ZW0pID0+IGl0ZW0uZnVsbFBhdGgpLFxuICAgICAgICBuZXh0UGFnZVRva2VuOiB1bmRlZmluZWQsIC8vIGxpc3RBbGwgbm8gc29wb3J0YSBwYWdpbmFjacOzblxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKHRoaXMuZ2V0RXJyb3JNZXNzYWdlKGVycm9yKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIFVUSUxJREFERVNcbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiAgLyoqXG4gICAqIEdlbmVyYSB1biBub21icmUgZGUgYXJjaGl2byDDum5pY28gY29uIHRpbWVzdGFtcC5cbiAgICpcbiAgICogQHBhcmFtIG9yaWdpbmFsTmFtZSAtIE5vbWJyZSBvcmlnaW5hbCBkZWwgYXJjaGl2b1xuICAgKiBAcGFyYW0gcHJlZml4IC0gUHJlZmlqbyBvcGNpb25hbFxuICAgKiBAcmV0dXJucyBOb21icmUgw7puaWNvXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgdW5pcXVlTmFtZSA9IHN0b3JhZ2UuZ2VuZXJhdGVGaWxlTmFtZSgncGhvdG8uanBnJywgJ3VzZXIxMjMnKTtcbiAgICogLy8gPT4gJ3VzZXIxMjNfMTcwMzA5MTIzNDU2N19waG90by5qcGcnXG4gICAqIGBgYFxuICAgKi9cbiAgZ2VuZXJhdGVGaWxlTmFtZShvcmlnaW5hbE5hbWU6IHN0cmluZywgcHJlZml4Pzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB0aW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuICAgIGNvbnN0IHNhbml0aXplZE5hbWUgPSBvcmlnaW5hbE5hbWUucmVwbGFjZSgvW15hLXpBLVowLTkuLV0vZywgJ18nKTtcblxuICAgIGlmIChwcmVmaXgpIHtcbiAgICAgIHJldHVybiBgJHtwcmVmaXh9XyR7dGltZXN0YW1wfV8ke3Nhbml0aXplZE5hbWV9YDtcbiAgICB9XG4gICAgcmV0dXJuIGAke3RpbWVzdGFtcH1fJHtzYW5pdGl6ZWROYW1lfWA7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhIHVuYSBydXRhIMO6bmljYSBwYXJhIHVuIGFyY2hpdm8uXG4gICAqXG4gICAqIEBwYXJhbSBkaXJlY3RvcnkgLSBEaXJlY3RvcmlvIGJhc2VcbiAgICogQHBhcmFtIG9yaWdpbmFsTmFtZSAtIE5vbWJyZSBvcmlnaW5hbFxuICAgKiBAcGFyYW0gcHJlZml4IC0gUHJlZmlqbyBvcGNpb25hbFxuICAgKiBAcmV0dXJucyBSdXRhIGNvbXBsZXRhIMO6bmljYVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHBhdGggPSBzdG9yYWdlLmdlbmVyYXRlUGF0aCgndXBsb2FkcycsICdwaG90by5qcGcnLCAndXNlcjEyMycpO1xuICAgKiAvLyA9PiAndXBsb2Fkcy91c2VyMTIzXzE3MDMwOTEyMzQ1NjdfcGhvdG8uanBnJ1xuICAgKiBgYGBcbiAgICovXG4gIGdlbmVyYXRlUGF0aChkaXJlY3Rvcnk6IHN0cmluZywgb3JpZ2luYWxOYW1lOiBzdHJpbmcsIHByZWZpeD86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZmlsZU5hbWUgPSB0aGlzLmdlbmVyYXRlRmlsZU5hbWUob3JpZ2luYWxOYW1lLCBwcmVmaXgpO1xuICAgIGNvbnN0IGNsZWFuRGlyID0gZGlyZWN0b3J5LnJlcGxhY2UoL1xcLyskLywgJycpOyAvLyBSZW1vdmVyIC8gZmluYWxcbiAgICByZXR1cm4gYCR7Y2xlYW5EaXJ9LyR7ZmlsZU5hbWV9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBPYnRpZW5lIGxhIGV4dGVuc2nDs24gZGUgdW4gYXJjaGl2by5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVuYW1lIC0gTm9tYnJlIGRlbCBhcmNoaXZvXG4gICAqIEByZXR1cm5zIEV4dGVuc2nDs24gKHNpbiBlbCBwdW50bylcbiAgICovXG4gIGdldEV4dGVuc2lvbihmaWxlbmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBwYXJ0cyA9IGZpbGVuYW1lLnNwbGl0KCcuJyk7XG4gICAgcmV0dXJuIHBhcnRzLmxlbmd0aCA+IDEgPyBwYXJ0cy5wb3AoKSEudG9Mb3dlckNhc2UoKSA6ICcnO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNpIHVuIGFyY2hpdm8gZXMgdW5hIGltYWdlbiBiYXPDoW5kb3NlIGVuIHN1IGV4dGVuc2nDs24uXG4gICAqL1xuICBpc0ltYWdlKGZpbGVuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBleHQgPSB0aGlzLmdldEV4dGVuc2lvbihmaWxlbmFtZSk7XG4gICAgcmV0dXJuIFsnanBnJywgJ2pwZWcnLCAncG5nJywgJ2dpZicsICd3ZWJwJywgJ3N2ZycsICdibXAnXS5pbmNsdWRlcyhleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWNhIHNpIHVuIGFyY2hpdm8gZXMgdW4gZG9jdW1lbnRvLlxuICAgKi9cbiAgaXNEb2N1bWVudChmaWxlbmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZXh0ID0gdGhpcy5nZXRFeHRlbnNpb24oZmlsZW5hbWUpO1xuICAgIHJldHVybiBbJ3BkZicsICdkb2MnLCAnZG9jeCcsICd4bHMnLCAneGxzeCcsICdwcHQnLCAncHB0eCcsICd0eHQnXS5pbmNsdWRlcyhleHQpO1xuICB9XG5cbiAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4gIC8vIE3DiVRPRE9TIFBSSVZBRE9TXG4gIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4gIC8qKlxuICAgKiBNYXBlYSBlbCBlc3RhZG8gZGUgbGEgdGFyZWEgZGUgdXBsb2FkXG4gICAqL1xuICBwcml2YXRlIG1hcFRhc2tTdGF0ZShzdGF0ZTogc3RyaW5nKTogVXBsb2FkU3RhdGUge1xuICAgIHN3aXRjaCAoc3RhdGUpIHtcbiAgICAgIGNhc2UgJ3J1bm5pbmcnOlxuICAgICAgICByZXR1cm4gJ3J1bm5pbmcnO1xuICAgICAgY2FzZSAncGF1c2VkJzpcbiAgICAgICAgcmV0dXJuICdwYXVzZWQnO1xuICAgICAgY2FzZSAnc3VjY2Vzcyc6XG4gICAgICAgIHJldHVybiAnc3VjY2Vzcyc7XG4gICAgICBjYXNlICdjYW5jZWxlZCc6XG4gICAgICAgIHJldHVybiAnY2FuY2VsZWQnO1xuICAgICAgY2FzZSAnZXJyb3InOlxuICAgICAgICByZXR1cm4gJ2Vycm9yJztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAncnVubmluZyc7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIENvbnZpZXJ0ZSBlcnJvcmVzIGRlIFN0b3JhZ2UgYSBtZW5zYWplcyBlbiBlc3Bhw7FvbFxuICAgKi9cbiAgcHJpdmF0ZSBnZXRFcnJvck1lc3NhZ2UoZXJyb3I6IHVua25vd24pOiBzdHJpbmcge1xuICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICBjb25zdCBjb2RlID0gKGVycm9yIGFzIHsgY29kZT86IHN0cmluZyB9KS5jb2RlO1xuXG4gICAgICBzd2l0Y2ggKGNvZGUpIHtcbiAgICAgICAgY2FzZSAnc3RvcmFnZS9vYmplY3Qtbm90LWZvdW5kJzpcbiAgICAgICAgICByZXR1cm4gJ0VsIGFyY2hpdm8gbm8gZXhpc3RlJztcbiAgICAgICAgY2FzZSAnc3RvcmFnZS91bmF1dGhvcml6ZWQnOlxuICAgICAgICAgIHJldHVybiAnTm8gdGllbmVzIHBlcm1pc28gcGFyYSBhY2NlZGVyIGEgZXN0ZSBhcmNoaXZvJztcbiAgICAgICAgY2FzZSAnc3RvcmFnZS9jYW5jZWxlZCc6XG4gICAgICAgICAgcmV0dXJuICdMYSBvcGVyYWNpw7NuIGZ1ZSBjYW5jZWxhZGEnO1xuICAgICAgICBjYXNlICdzdG9yYWdlL3F1b3RhLWV4Y2VlZGVkJzpcbiAgICAgICAgICByZXR1cm4gJ1NlIGhhIGV4Y2VkaWRvIGxhIGN1b3RhIGRlIGFsbWFjZW5hbWllbnRvJztcbiAgICAgICAgY2FzZSAnc3RvcmFnZS9pbnZhbGlkLWNoZWNrc3VtJzpcbiAgICAgICAgICByZXR1cm4gJ0VsIGFyY2hpdm8gZXN0w6EgY29ycnVwdG8nO1xuICAgICAgICBjYXNlICdzdG9yYWdlL3JldHJ5LWxpbWl0LWV4Y2VlZGVkJzpcbiAgICAgICAgICByZXR1cm4gJ0Vycm9yIGRlIGNvbmV4acOzbi4gSW50ZW50YSBkZSBudWV2byc7XG4gICAgICAgIGNhc2UgJ3N0b3JhZ2UvaW52YWxpZC11cmwnOlxuICAgICAgICAgIHJldHVybiAnVVJMIGRlIGFyY2hpdm8gaW52w6FsaWRhJztcbiAgICAgICAgY2FzZSAnc3RvcmFnZS9pbnZhbGlkLWFyZ3VtZW50JzpcbiAgICAgICAgICByZXR1cm4gJ0FyZ3VtZW50byBpbnbDoWxpZG8nO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiBlcnJvci5tZXNzYWdlIHx8ICdFcnJvciBkZSBhbG1hY2VuYW1pZW50byBkZXNjb25vY2lkbyc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuICdFcnJvciBkZSBhbG1hY2VuYW1pZW50byBkZXNjb25vY2lkbyc7XG4gIH1cbn1cbiJdfQ==
@@ -5,4 +5,4 @@
5
5
  * Todos los modelos de Firestore deben extender FirestoreDocument.
6
6
  */
7
7
  export {};
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ZpcmViYXNlL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGaXJlYmFzZSBUeXBlc1xuICpcbiAqIFRpcG9zIGUgaW50ZXJmYWNlcyBwYXJhIGxhIGludGVncmFjacOzbiBkZSBGaXJlYmFzZSBlbiB2YWx0ZWNoLWNvbXBvbmVudHMuXG4gKiBUb2RvcyBsb3MgbW9kZWxvcyBkZSBGaXJlc3RvcmUgZGViZW4gZXh0ZW5kZXIgRmlyZXN0b3JlRG9jdW1lbnQuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09ORklHVVJBQ0nDk05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDb25maWd1cmFjacOzbiBkZSBGaXJlYmFzZSAodmFsb3JlcyBkZSBmaXJlYmFzZUNvbmZpZylcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlYmFzZUNvbmZpZyB7XG4gIGFwaUtleTogc3RyaW5nO1xuICBhdXRoRG9tYWluOiBzdHJpbmc7XG4gIHByb2plY3RJZDogc3RyaW5nO1xuICBzdG9yYWdlQnVja2V0OiBzdHJpbmc7XG4gIG1lc3NhZ2luZ1NlbmRlcklkOiBzdHJpbmc7XG4gIGFwcElkOiBzdHJpbmc7XG4gIG1lYXN1cmVtZW50SWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhY2nDs24gZGUgZW11bGFkb3JlcyBwYXJhIGRlc2Fycm9sbG8gbG9jYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbXVsYXRvckNvbmZpZyB7XG4gIGZpcmVzdG9yZT86IHtcbiAgICBob3N0OiBzdHJpbmc7XG4gICAgcG9ydDogbnVtYmVyO1xuICB9O1xuICBhdXRoPzoge1xuICAgIGhvc3Q6IHN0cmluZztcbiAgICBwb3J0OiBudW1iZXI7XG4gIH07XG4gIHN0b3JhZ2U/OiB7XG4gICAgaG9zdDogc3RyaW5nO1xuICAgIHBvcnQ6IG51bWJlcjtcbiAgfTtcbn1cblxuLyoqXG4gKiBDb25maWd1cmFjacOzbiBjb21wbGV0YSBkZSBWYWx0ZWNoIEZpcmViYXNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdGVjaEZpcmViYXNlQ29uZmlnIHtcbiAgLyoqIENvbmZpZ3VyYWNpw7NuIGRlIEZpcmViYXNlICovXG4gIGZpcmViYXNlOiBGaXJlYmFzZUNvbmZpZztcbiAgLyoqIENvbmZpZ3VyYWNpw7NuIGRlIGVtdWxhZG9yZXMgKG9wY2lvbmFsLCBwYXJhIGRlc2Fycm9sbG8pICovXG4gIGVtdWxhdG9yPzogRW11bGF0b3JDb25maWc7XG4gIC8qKiBIYWJpbGl0YXIgcGVyc2lzdGVuY2lhIG9mZmxpbmUgZGUgRmlyZXN0b3JlIChkZWZhdWx0OiBmYWxzZSkgKi9cbiAgcGVyc2lzdGVuY2U/OiBib29sZWFuO1xuICAvKiogSGFiaWxpdGFyIEZpcmViYXNlIENsb3VkIE1lc3NhZ2luZyAoZGVmYXVsdDogZmFsc2UpIC0gcmVxdWllcmUgU2VydmljZSBXb3JrZXIgKi9cbiAgZW5hYmxlTWVzc2FnaW5nPzogYm9vbGVhbjtcbiAgLyoqIFZBUElEIGtleSBwYXJhIEZpcmViYXNlIENsb3VkIE1lc3NhZ2luZyAqL1xuICBtZXNzYWdpbmdWYXBpZEtleT86IHN0cmluZztcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRklSRVNUT1JFIC0gRE9DVU1FTlRPU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEludGVyZmFjZSBiYXNlIHBhcmEgdG9kb3MgbG9zIGRvY3VtZW50b3MgZGUgRmlyZXN0b3JlLlxuICogVG9kb3MgbG9zIG1vZGVsb3MgZGViZW4gZXh0ZW5kZXIgZXN0YSBpbnRlcmZhY2UuXG4gKlxuICogQGV4YW1wbGVcbiAqIGludGVyZmFjZSBVc2VyIGV4dGVuZHMgRmlyZXN0b3JlRG9jdW1lbnQge1xuICogICBuYW1lOiBzdHJpbmc7XG4gKiAgIGVtYWlsOiBzdHJpbmc7XG4gKiB9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZXN0b3JlRG9jdW1lbnQge1xuICAvKiogSUQgZGVsIGRvY3VtZW50byAoYXNpZ25hZG8gcG9yIEZpcmVzdG9yZSkgKi9cbiAgaWQ/OiBzdHJpbmc7XG4gIC8qKiBGZWNoYSBkZSBjcmVhY2nDs24gKG1hbmVqYWRhIGF1dG9tw6F0aWNhbWVudGUpICovXG4gIGNyZWF0ZWRBdD86IERhdGU7XG4gIC8qKiBGZWNoYSBkZSDDumx0aW1hIGFjdHVhbGl6YWNpw7NuIChtYW5lamFkYSBhdXRvbcOhdGljYW1lbnRlKSAqL1xuICB1cGRhdGVkQXQ/OiBEYXRlO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBGSVJFU1RPUkUgLSBRVUVSSUVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogT3BlcmFkb3JlcyBkaXNwb25pYmxlcyBwYXJhIGNsw6F1c3VsYXMgd2hlcmVcbiAqL1xuZXhwb3J0IHR5cGUgV2hlcmVPcGVyYXRvciA9XG4gIHwgJz09J1xuICB8ICchPSdcbiAgfCAnPCdcbiAgfCAnPD0nXG4gIHwgJz4nXG4gIHwgJz49J1xuICB8ICdhcnJheS1jb250YWlucydcbiAgfCAnYXJyYXktY29udGFpbnMtYW55J1xuICB8ICdpbidcbiAgfCAnbm90LWluJztcblxuLyoqXG4gKiBDbMOhdXN1bGEgd2hlcmUgcGFyYSBmaWx0cmFyIGRvY3VtZW50b3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXaGVyZUNsYXVzZSB7XG4gIC8qKiBDYW1wbyBhIGZpbHRyYXIgKi9cbiAgZmllbGQ6IHN0cmluZztcbiAgLyoqIE9wZXJhZG9yIGRlIGNvbXBhcmFjacOzbiAqL1xuICBvcGVyYXRvcjogV2hlcmVPcGVyYXRvcjtcbiAgLyoqIFZhbG9yIGEgY29tcGFyYXIgKi9cbiAgdmFsdWU6IHVua25vd247XG59XG5cbi8qKlxuICogRGlyZWNjacOzbiBkZSBvcmRlbmFtaWVudG9cbiAqL1xuZXhwb3J0IHR5cGUgT3JkZXJEaXJlY3Rpb24gPSAnYXNjJyB8ICdkZXNjJztcblxuLyoqXG4gKiBDbMOhdXN1bGEgb3JkZXJCeSBwYXJhIG9yZGVuYXIgcmVzdWx0YWRvc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE9yZGVyQnlDbGF1c2Uge1xuICAvKiogQ2FtcG8gcG9yIGVsIGN1YWwgb3JkZW5hciAqL1xuICBmaWVsZDogc3RyaW5nO1xuICAvKiogRGlyZWNjacOzbiBkZWwgb3JkZW5hbWllbnRvICovXG4gIGRpcmVjdGlvbjogT3JkZXJEaXJlY3Rpb247XG59XG5cbi8qKlxuICogT3BjaW9uZXMgcGFyYSBxdWVyaWVzIGRlIEZpcmVzdG9yZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5T3B0aW9ucyB7XG4gIC8qKiBGaWx0cm9zIHdoZXJlIChBTkQgZW50cmUgdG9kb3MpICovXG4gIHdoZXJlPzogV2hlcmVDbGF1c2VbXTtcbiAgLyoqIE9yZGVuYW1pZW50byBkZSByZXN1bHRhZG9zICovXG4gIG9yZGVyQnk/OiBPcmRlckJ5Q2xhdXNlW107XG4gIC8qKiBMw61taXRlIGRlIGRvY3VtZW50b3MgYSByZXRvcm5hciAqL1xuICBsaW1pdD86IG51bWJlcjtcbiAgLyoqIEN1cnNvciBwYXJhIHBhZ2luYWNpw7NuOiBlbXBlemFyIGRlc3B1w6lzIGRlIGVzdGUgZG9jdW1lbnRvICovXG4gIHN0YXJ0QWZ0ZXI/OiB1bmtub3duO1xuICAvKiogQ3Vyc29yIHBhcmEgcGFnaW5hY2nDs246IGVtcGV6YXIgZW4gZXN0ZSBkb2N1bWVudG8gKi9cbiAgc3RhcnRBdD86IHVua25vd247XG4gIC8qKiBDdXJzb3IgcGFyYSBwYWdpbmFjacOzbjogdGVybWluYXIgYW50ZXMgZGUgZXN0ZSBkb2N1bWVudG8gKi9cbiAgZW5kQmVmb3JlPzogdW5rbm93bjtcbiAgLyoqIEN1cnNvciBwYXJhIHBhZ2luYWNpw7NuOiB0ZXJtaW5hciBlbiBlc3RlIGRvY3VtZW50byAqL1xuICBlbmRBdD86IHVua25vd247XG59XG5cbi8qKlxuICogT3BjaW9uZXMgYWRpY2lvbmFsZXMgcGFyYSBzdWJzY3JpcGNpb25lcyByZWFsLXRpbWVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJzY3JpcHRpb25PcHRpb25zIGV4dGVuZHMgUXVlcnlPcHRpb25zIHtcbiAgLyoqIEluY2x1aXIgY2FtYmlvcyBkZSBtZXRhZGF0YSAoZWo6IHBlbmRpbmdXcml0ZXMpICovXG4gIGluY2x1ZGVNZXRhZGF0YUNoYW5nZXM/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFJlc3VsdGFkbyBkZSB1bmEgcXVlcnkgcGFnaW5hZGFcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0ZWRSZXN1bHQ8VD4ge1xuICAvKiogRG9jdW1lbnRvcyBkZSBsYSBww6FnaW5hIGFjdHVhbCAqL1xuICBkYXRhOiBUW107XG4gIC8qKiBJbmRpY2Egc2kgaGF5IG3DoXMgcMOhZ2luYXMgZGlzcG9uaWJsZXMgKi9cbiAgaGFzTW9yZTogYm9vbGVhbjtcbiAgLyoqIEN1cnNvciBwYXJhIGxhIHNpZ3VpZW50ZSBww6FnaW5hIChwYXNhciBhIHN0YXJ0QWZ0ZXIpICovXG4gIGxhc3REb2M6IHVua25vd247XG4gIC8qKiBUb3RhbCBkZSBkb2N1bWVudG9zIChvcGNpb25hbCwgcmVxdWllcmUgcXVlcnkgYWRpY2lvbmFsKSAqL1xuICB0b3RhbD86IG51bWJlcjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU1RPUkFHRVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEVzdGFkbyBkZSB1bmEgb3BlcmFjacOzbiBkZSB1cGxvYWRcbiAqL1xuZXhwb3J0IHR5cGUgVXBsb2FkU3RhdGUgPSAncnVubmluZycgfCAncGF1c2VkJyB8ICdzdWNjZXNzJyB8ICdjYW5jZWxlZCcgfCAnZXJyb3InO1xuXG4vKipcbiAqIFByb2dyZXNvIGRlIHVwbG9hZCBkZSBhcmNoaXZvXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXBsb2FkUHJvZ3Jlc3Mge1xuICAvKiogQnl0ZXMgdHJhbnNmZXJpZG9zIGhhc3RhIGFob3JhICovXG4gIGJ5dGVzVHJhbnNmZXJyZWQ6IG51bWJlcjtcbiAgLyoqIFRvdGFsIGRlIGJ5dGVzIGEgdHJhbnNmZXJpciAqL1xuICB0b3RhbEJ5dGVzOiBudW1iZXI7XG4gIC8qKiBQb3JjZW50YWplIGNvbXBsZXRhZG8gKDAtMTAwKSAqL1xuICBwZXJjZW50YWdlOiBudW1iZXI7XG4gIC8qKiBFc3RhZG8gYWN0dWFsIGRlbCB1cGxvYWQgKi9cbiAgc3RhdGU6IFVwbG9hZFN0YXRlO1xufVxuXG4vKipcbiAqIFJlc3VsdGFkbyBkZSB1biB1cGxvYWQgY29tcGxldGFkb1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZFJlc3VsdCB7XG4gIC8qKiBVUkwgZGUgZGVzY2FyZ2EgZGVsIGFyY2hpdm8gKi9cbiAgZG93bmxvYWRVcmw6IHN0cmluZztcbiAgLyoqIFJ1dGEgY29tcGxldGEgZW4gU3RvcmFnZSAqL1xuICBmdWxsUGF0aDogc3RyaW5nO1xuICAvKiogTm9tYnJlIGRlbCBhcmNoaXZvICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIFRhbWHDsW8gZW4gYnl0ZXMgKi9cbiAgc2l6ZTogbnVtYmVyO1xuICAvKiogVGlwbyBNSU1FIGRlbCBhcmNoaXZvICovXG4gIGNvbnRlbnRUeXBlOiBzdHJpbmc7XG4gIC8qKiBNZXRhZGF0YSBwZXJzb25hbGl6YWRhICovXG4gIG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xufVxuXG4vKipcbiAqIE1ldGFkYXRhIHBhcmEgYXJjaGl2b3MgZW4gU3RvcmFnZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JhZ2VNZXRhZGF0YSB7XG4gIC8qKiBUaXBvIE1JTUUgZGVsIGFyY2hpdm8gKi9cbiAgY29udGVudFR5cGU/OiBzdHJpbmc7XG4gIC8qKiBNZXRhZGF0YSBwZXJzb25hbGl6YWRhIChrZXktdmFsdWUpICovXG4gIGN1c3RvbU1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqIENvbnRyb2wgZGUgY2FjaMOpIEhUVFAgKi9cbiAgY2FjaGVDb250cm9sPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFJlc3VsdGFkbyBkZSBsaXN0YXIgYXJjaGl2b3MgZW4gU3RvcmFnZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0b3JhZ2VMaXN0UmVzdWx0IHtcbiAgLyoqIFJ1dGFzIGRlIGxvcyBhcmNoaXZvcyBlbmNvbnRyYWRvcyAqL1xuICBpdGVtczogc3RyaW5nW107XG4gIC8qKiBUb2tlbiBwYXJhIGxhIHNpZ3VpZW50ZSBww6FnaW5hIChzaSBoYXkgbcOhcykgKi9cbiAgbmV4dFBhZ2VUb2tlbj86IHN0cmluZztcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQVVUSCAvIFNFU1NJT05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBJbmZvcm1hY2nDs24gZGVsIHVzdWFyaW8gZGUgRmlyZWJhc2UgKHNpbXBsaWZpY2FkYSlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlYmFzZVVzZXIge1xuICAvKiogVUlEIMO6bmljbyBkZWwgdXN1YXJpbyAqL1xuICB1aWQ6IHN0cmluZztcbiAgLyoqIEVtYWlsIGRlbCB1c3VhcmlvICovXG4gIGVtYWlsOiBzdHJpbmcgfCBudWxsO1xuICAvKiogTm9tYnJlIHBhcmEgbW9zdHJhciAqL1xuICBkaXNwbGF5TmFtZTogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIFVSTCBkZSBmb3RvIGRlIHBlcmZpbCAqL1xuICBwaG90b1VSTDogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIEVtYWlsIHZlcmlmaWNhZG8gKi9cbiAgZW1haWxWZXJpZmllZDogYm9vbGVhbjtcbiAgLyoqIFVzdWFyaW8gYW7Ds25pbW8gKi9cbiAgaXNBbm9ueW1vdXM6IGJvb2xlYW47XG4gIC8qKiBQcm92ZWVkb3IgZGUgYXV0ZW50aWNhY2nDs24gKi9cbiAgcHJvdmlkZXJJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEVzdGFkbyBkZSBsYSBzZXNpw7NuIGRlIEZpcmViYXNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2Vzc2lvblN0YXRlIHtcbiAgLyoqIFVzdWFyaW8gYWN0dWFsIChudWxsIHNpIG5vIGF1dGVudGljYWRvKSAqL1xuICB1c2VyOiBGaXJlYmFzZVVzZXIgfCBudWxsO1xuICAvKiogSW5kaWNhIHNpIGVsIHVzdWFyaW8gZXN0w6EgYXV0ZW50aWNhZG8gKi9cbiAgaXNBdXRoZW50aWNhdGVkOiBib29sZWFuO1xuICAvKiogSW5kaWNhIHNpIHNlIGVzdMOhIGNhcmdhbmRvIGVsIGVzdGFkbyBkZSBhdXRoICovXG4gIGlzTG9hZGluZzogYm9vbGVhbjtcbiAgLyoqIEVycm9yIGRlIGF1dGVudGljYWNpw7NuIChzaSBsbyBoYXkpICovXG4gIGVycm9yOiBFcnJvciB8IG51bGw7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIE1FU1NBR0lORyAoRkNNKVxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEVzdGFkbyBkZWwgcGVybWlzbyBkZSBub3RpZmljYWNpb25lc1xuICovXG5leHBvcnQgdHlwZSBOb3RpZmljYXRpb25QZXJtaXNzaW9uID0gJ2dyYW50ZWQnIHwgJ2RlbmllZCcgfCAnZGVmYXVsdCc7XG5cbi8qKlxuICogUGF5bG9hZCBkZSB1bmEgbm90aWZpY2FjacOzbiBwdXNoXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTm90aWZpY2F0aW9uUGF5bG9hZCB7XG4gIC8qKiBUw610dWxvIGRlIGxhIG5vdGlmaWNhY2nDs24gKi9cbiAgdGl0bGU/OiBzdHJpbmc7XG4gIC8qKiBDdWVycG8gZGVsIG1lbnNhamUgKi9cbiAgYm9keT86IHN0cmluZztcbiAgLyoqIFVSTCBkZSBpbWFnZW4gKi9cbiAgaW1hZ2U/OiBzdHJpbmc7XG4gIC8qKiBEYXRvcyBwZXJzb25hbGl6YWRvcyAqL1xuICBkYXRhPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqIElEIGRlbCBtZW5zYWplIGRlIEZDTSAqL1xuICBtZXNzYWdlSWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQWNjacOzbiBkZSBuYXZlZ2FjacOzbiBkZXNkZSB1bmEgbm90aWZpY2FjacOzblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkFjdGlvbiB7XG4gIC8qKiBSdXRhIGludGVybmEgZGUgbGEgYXBwIChlajogJy9vcmRlcnMvMTIzJykgKi9cbiAgcm91dGU/OiBzdHJpbmc7XG4gIC8qKiBVUkwgZXh0ZXJuYSAoZWo6ICdodHRwczovL2V4YW1wbGUuY29tJykgKi9cbiAgdXJsPzogc3RyaW5nO1xuICAvKiogUGFyw6FtZXRyb3MgZGUgcXVlcnkgc3RyaW5nICovXG4gIHF1ZXJ5UGFyYW1zPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqIFRpcG8gZGUgYWNjacOzbiBwZXJzb25hbGl6YWRhICovXG4gIGFjdGlvblR5cGU/OiBzdHJpbmc7XG4gIC8qKiBEYXRvcyBhZGljaW9uYWxlcyBwYXJhIGxhIGFjY2nDs24gKi9cbiAgYWN0aW9uRGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKipcbiAqIEV2ZW50byBkZSBjbGljayBlbiB1bmEgbm90aWZpY2FjacOzblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkNsaWNrRXZlbnQge1xuICAvKiogUGF5bG9hZCBvcmlnaW5hbCBkZSBsYSBub3RpZmljYWNpw7NuICovXG4gIG5vdGlmaWNhdGlvbjogTm90aWZpY2F0aW9uUGF5bG9hZDtcbiAgLyoqIEFjY2nDs24gZGUgbmF2ZWdhY2nDs24gZXh0cmHDrWRhICovXG4gIGFjdGlvbjogTm90aWZpY2F0aW9uQWN0aW9uO1xuICAvKiogVGltZXN0YW1wIGRlbCBjbGljayAqL1xuICB0aW1lc3RhbXA6IERhdGU7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVSUk9SRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDw7NkaWdvcyBkZSBlcnJvciBkZSBGaXJlYmFzZVxuICovXG5leHBvcnQgdHlwZSBGaXJlYmFzZUVycm9yQ29kZSA9XG4gIHwgJ3Blcm1pc3Npb24tZGVuaWVkJ1xuICB8ICdub3QtZm91bmQnXG4gIHwgJ2FscmVhZHktZXhpc3RzJ1xuICB8ICdyZXNvdXJjZS1leGhhdXN0ZWQnXG4gIHwgJ2NhbmNlbGxlZCdcbiAgfCAndW5rbm93bidcbiAgfCAnaW52YWxpZC1hcmd1bWVudCdcbiAgfCAnZGVhZGxpbmUtZXhjZWVkZWQnXG4gIHwgJ3VuYXV0aGVudGljYXRlZCc7XG5cbi8qKlxuICogRXJyb3IgZGUgRmlyZWJhc2UgdGlwYWRvXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZWJhc2VFcnJvciB7XG4gIC8qKiBDw7NkaWdvIGRlbCBlcnJvciAqL1xuICBjb2RlOiBGaXJlYmFzZUVycm9yQ29kZTtcbiAgLyoqIE1lbnNhamUgZGUgZXJyb3IgKGVuIGVzcGHDsW9sKSAqL1xuICBtZXNzYWdlOiBzdHJpbmc7XG4gIC8qKiBFcnJvciBvcmlnaW5hbCBkZSBGaXJlYmFzZSAqL1xuICBvcmlnaW5hbEVycm9yPzogdW5rbm93bjtcbn1cbiJdfQ==
8
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL3NlcnZpY2VzL2ZpcmViYXNlL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7OztHQUtHIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBGaXJlYmFzZSBUeXBlc1xuICpcbiAqIFRpcG9zIGUgaW50ZXJmYWNlcyBwYXJhIGxhIGludGVncmFjacOzbiBkZSBGaXJlYmFzZSBlbiB2YWx0ZWNoLWNvbXBvbmVudHMuXG4gKiBUb2RvcyBsb3MgbW9kZWxvcyBkZSBGaXJlc3RvcmUgZGViZW4gZXh0ZW5kZXIgRmlyZXN0b3JlRG9jdW1lbnQuXG4gKi9cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gQ09ORklHVVJBQ0nDk05cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDb25maWd1cmFjacOzbiBkZSBGaXJlYmFzZSAodmFsb3JlcyBkZSBmaXJlYmFzZUNvbmZpZylcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBGaXJlYmFzZUNvbmZpZyB7XG4gIGFwaUtleTogc3RyaW5nO1xuICBhdXRoRG9tYWluOiBzdHJpbmc7XG4gIHByb2plY3RJZDogc3RyaW5nO1xuICBzdG9yYWdlQnVja2V0OiBzdHJpbmc7XG4gIG1lc3NhZ2luZ1NlbmRlcklkOiBzdHJpbmc7XG4gIGFwcElkOiBzdHJpbmc7XG4gIG1lYXN1cmVtZW50SWQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhY2nDs24gZGUgZW11bGFkb3JlcyBwYXJhIGRlc2Fycm9sbG8gbG9jYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbXVsYXRvckNvbmZpZyB7XG4gIGZpcmVzdG9yZT86IHtcbiAgICBob3N0OiBzdHJpbmc7XG4gICAgcG9ydDogbnVtYmVyO1xuICB9O1xuICBhdXRoPzoge1xuICAgIGhvc3Q6IHN0cmluZztcbiAgICBwb3J0OiBudW1iZXI7XG4gIH07XG4gIHN0b3JhZ2U/OiB7XG4gICAgaG9zdDogc3RyaW5nO1xuICAgIHBvcnQ6IG51bWJlcjtcbiAgfTtcbn1cblxuLyoqXG4gKiBJZGVudGlmaWNhZG9yIGRlIGFwbGljYWNpw7NuIHBhcmEgbmFtZXNwYWNpbmcgYXV0b23DoXRpY28gZW4gRmlyZXN0b3JlIHkgU3RvcmFnZS5cbiAqIFBlcm1pdGUgYWlzbGFyIGRhdG9zIGRlIGRpZmVyZW50ZXMgYXBwcyBkZW50cm8gZGVsIG1pc21vIHByb3llY3RvIEZpcmViYXNlLlxuICpcbiAqIENhZGEgYXBwIGNvbnN1bWlkb3JhIGRlZmluZSBzdXMgcHJvcGlvcyB2YWxvcmVzIGRlIEFwcElkIGVuIHN1IGNvbmZpZ3VyYWNpw7NuIGxvY2FsLlxuICovXG5leHBvcnQgdHlwZSBBcHBJZCA9IHN0cmluZztcblxuLyoqXG4gKiBDb25maWd1cmFjacOzbiBjb21wbGV0YSBkZSBWYWx0ZWNoIEZpcmViYXNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVmFsdGVjaEZpcmViYXNlQ29uZmlnIHtcbiAgLyoqIENvbmZpZ3VyYWNpw7NuIGRlIEZpcmViYXNlICovXG4gIGZpcmViYXNlOiBGaXJlYmFzZUNvbmZpZztcbiAgLyoqIENvbmZpZ3VyYWNpw7NuIGRlIGVtdWxhZG9yZXMgKG9wY2lvbmFsLCBwYXJhIGRlc2Fycm9sbG8pICovXG4gIGVtdWxhdG9yPzogRW11bGF0b3JDb25maWc7XG4gIC8qKiBIYWJpbGl0YXIgcGVyc2lzdGVuY2lhIG9mZmxpbmUgZGUgRmlyZXN0b3JlIChkZWZhdWx0OiBmYWxzZSkgKi9cbiAgcGVyc2lzdGVuY2U/OiBib29sZWFuO1xuICAvKiogSGFiaWxpdGFyIEZpcmViYXNlIENsb3VkIE1lc3NhZ2luZyAoZGVmYXVsdDogZmFsc2UpIC0gcmVxdWllcmUgU2VydmljZSBXb3JrZXIgKi9cbiAgZW5hYmxlTWVzc2FnaW5nPzogYm9vbGVhbjtcbiAgLyoqIFZBUElEIGtleSBwYXJhIEZpcmViYXNlIENsb3VkIE1lc3NhZ2luZyAqL1xuICBtZXNzYWdpbmdWYXBpZEtleT86IHN0cmluZztcbiAgLyoqXG4gICAqIElEIGRlIGxhIGFwbGljYWNpw7NuIHBhcmEgbmFtZXNwYWNpbmcgYXV0b23DoXRpY28uXG4gICAqIFNpIHNlIHByb3BvcmNpb25hOlxuICAgKiAtIEZpcmVzdG9yZTogcHJlZmlqYSBjb2xlY2Npb25lcyBjb24gYGFwcHMve2FwcElkfS9gXG4gICAqIC0gU3RvcmFnZTogcHJlZmlqYSBwYXRocyBjb24gYHthcHBJZH0vYFxuICAgKiBTaSBubyBzZSBwcm9wb3JjaW9uYSwgbG9zIHBhdGhzIHF1ZWRhbiBzaW4gbW9kaWZpY2FyIChiYWNrd2FyZCBjb21wYXRpYmxlKS5cbiAgICovXG4gIGFwcElkPzogQXBwSWQ7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEZJUkVTVE9SRSAtIERPQ1VNRU5UT1Ncbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBJbnRlcmZhY2UgYmFzZSBwYXJhIHRvZG9zIGxvcyBkb2N1bWVudG9zIGRlIEZpcmVzdG9yZS5cbiAqIFRvZG9zIGxvcyBtb2RlbG9zIGRlYmVuIGV4dGVuZGVyIGVzdGEgaW50ZXJmYWNlLlxuICpcbiAqIEBleGFtcGxlXG4gKiBpbnRlcmZhY2UgVXNlciBleHRlbmRzIEZpcmVzdG9yZURvY3VtZW50IHtcbiAqICAgbmFtZTogc3RyaW5nO1xuICogICBlbWFpbDogc3RyaW5nO1xuICogfVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmVzdG9yZURvY3VtZW50IHtcbiAgLyoqIElEIGRlbCBkb2N1bWVudG8gKGFzaWduYWRvIHBvciBGaXJlc3RvcmUpICovXG4gIGlkPzogc3RyaW5nO1xuICAvKiogRmVjaGEgZGUgY3JlYWNpw7NuIChtYW5lamFkYSBhdXRvbcOhdGljYW1lbnRlKSAqL1xuICBjcmVhdGVkQXQ/OiBEYXRlO1xuICAvKiogRmVjaGEgZGUgw7psdGltYSBhY3R1YWxpemFjacOzbiAobWFuZWphZGEgYXV0b23DoXRpY2FtZW50ZSkgKi9cbiAgdXBkYXRlZEF0PzogRGF0ZTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRklSRVNUT1JFIC0gUVVFUklFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIE9wZXJhZG9yZXMgZGlzcG9uaWJsZXMgcGFyYSBjbMOhdXN1bGFzIHdoZXJlXG4gKi9cbmV4cG9ydCB0eXBlIFdoZXJlT3BlcmF0b3IgPVxuICB8ICc9PSdcbiAgfCAnIT0nXG4gIHwgJzwnXG4gIHwgJzw9J1xuICB8ICc+J1xuICB8ICc+PSdcbiAgfCAnYXJyYXktY29udGFpbnMnXG4gIHwgJ2FycmF5LWNvbnRhaW5zLWFueSdcbiAgfCAnaW4nXG4gIHwgJ25vdC1pbic7XG5cbi8qKlxuICogQ2zDoXVzdWxhIHdoZXJlIHBhcmEgZmlsdHJhciBkb2N1bWVudG9zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV2hlcmVDbGF1c2Uge1xuICAvKiogQ2FtcG8gYSBmaWx0cmFyICovXG4gIGZpZWxkOiBzdHJpbmc7XG4gIC8qKiBPcGVyYWRvciBkZSBjb21wYXJhY2nDs24gKi9cbiAgb3BlcmF0b3I6IFdoZXJlT3BlcmF0b3I7XG4gIC8qKiBWYWxvciBhIGNvbXBhcmFyICovXG4gIHZhbHVlOiB1bmtub3duO1xufVxuXG4vKipcbiAqIERpcmVjY2nDs24gZGUgb3JkZW5hbWllbnRvXG4gKi9cbmV4cG9ydCB0eXBlIE9yZGVyRGlyZWN0aW9uID0gJ2FzYycgfCAnZGVzYyc7XG5cbi8qKlxuICogQ2zDoXVzdWxhIG9yZGVyQnkgcGFyYSBvcmRlbmFyIHJlc3VsdGFkb3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBPcmRlckJ5Q2xhdXNlIHtcbiAgLyoqIENhbXBvIHBvciBlbCBjdWFsIG9yZGVuYXIgKi9cbiAgZmllbGQ6IHN0cmluZztcbiAgLyoqIERpcmVjY2nDs24gZGVsIG9yZGVuYW1pZW50byAqL1xuICBkaXJlY3Rpb246IE9yZGVyRGlyZWN0aW9uO1xufVxuXG4vKipcbiAqIE9wY2lvbmVzIHBhcmEgcXVlcmllcyBkZSBGaXJlc3RvcmVcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdWVyeU9wdGlvbnMge1xuICAvKiogRmlsdHJvcyB3aGVyZSAoQU5EIGVudHJlIHRvZG9zKSAqL1xuICB3aGVyZT86IFdoZXJlQ2xhdXNlW107XG4gIC8qKiBPcmRlbmFtaWVudG8gZGUgcmVzdWx0YWRvcyAqL1xuICBvcmRlckJ5PzogT3JkZXJCeUNsYXVzZVtdO1xuICAvKiogTMOtbWl0ZSBkZSBkb2N1bWVudG9zIGEgcmV0b3JuYXIgKi9cbiAgbGltaXQ/OiBudW1iZXI7XG4gIC8qKiBDdXJzb3IgcGFyYSBwYWdpbmFjacOzbjogZW1wZXphciBkZXNwdcOpcyBkZSBlc3RlIGRvY3VtZW50byAqL1xuICBzdGFydEFmdGVyPzogdW5rbm93bjtcbiAgLyoqIEN1cnNvciBwYXJhIHBhZ2luYWNpw7NuOiBlbXBlemFyIGVuIGVzdGUgZG9jdW1lbnRvICovXG4gIHN0YXJ0QXQ/OiB1bmtub3duO1xuICAvKiogQ3Vyc29yIHBhcmEgcGFnaW5hY2nDs246IHRlcm1pbmFyIGFudGVzIGRlIGVzdGUgZG9jdW1lbnRvICovXG4gIGVuZEJlZm9yZT86IHVua25vd247XG4gIC8qKiBDdXJzb3IgcGFyYSBwYWdpbmFjacOzbjogdGVybWluYXIgZW4gZXN0ZSBkb2N1bWVudG8gKi9cbiAgZW5kQXQ/OiB1bmtub3duO1xufVxuXG4vKipcbiAqIE9wY2lvbmVzIGFkaWNpb25hbGVzIHBhcmEgc3Vic2NyaXBjaW9uZXMgcmVhbC10aW1lXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3Vic2NyaXB0aW9uT3B0aW9ucyBleHRlbmRzIFF1ZXJ5T3B0aW9ucyB7XG4gIC8qKiBJbmNsdWlyIGNhbWJpb3MgZGUgbWV0YWRhdGEgKGVqOiBwZW5kaW5nV3JpdGVzKSAqL1xuICBpbmNsdWRlTWV0YWRhdGFDaGFuZ2VzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBSZXN1bHRhZG8gZGUgdW5hIHF1ZXJ5IHBhZ2luYWRhXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGVkUmVzdWx0PFQ+IHtcbiAgLyoqIERvY3VtZW50b3MgZGUgbGEgcMOhZ2luYSBhY3R1YWwgKi9cbiAgZGF0YTogVFtdO1xuICAvKiogSW5kaWNhIHNpIGhheSBtw6FzIHDDoWdpbmFzIGRpc3BvbmlibGVzICovXG4gIGhhc01vcmU6IGJvb2xlYW47XG4gIC8qKiBDdXJzb3IgcGFyYSBsYSBzaWd1aWVudGUgcMOhZ2luYSAocGFzYXIgYSBzdGFydEFmdGVyKSAqL1xuICBsYXN0RG9jOiB1bmtub3duO1xuICAvKiogVG90YWwgZGUgZG9jdW1lbnRvcyAob3BjaW9uYWwsIHJlcXVpZXJlIHF1ZXJ5IGFkaWNpb25hbCkgKi9cbiAgdG90YWw/OiBudW1iZXI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNUT1JBR0Vcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBFc3RhZG8gZGUgdW5hIG9wZXJhY2nDs24gZGUgdXBsb2FkXG4gKi9cbmV4cG9ydCB0eXBlIFVwbG9hZFN0YXRlID0gJ3J1bm5pbmcnIHwgJ3BhdXNlZCcgfCAnc3VjY2VzcycgfCAnY2FuY2VsZWQnIHwgJ2Vycm9yJztcblxuLyoqXG4gKiBQcm9ncmVzbyBkZSB1cGxvYWQgZGUgYXJjaGl2b1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFVwbG9hZFByb2dyZXNzIHtcbiAgLyoqIEJ5dGVzIHRyYW5zZmVyaWRvcyBoYXN0YSBhaG9yYSAqL1xuICBieXRlc1RyYW5zZmVycmVkOiBudW1iZXI7XG4gIC8qKiBUb3RhbCBkZSBieXRlcyBhIHRyYW5zZmVyaXIgKi9cbiAgdG90YWxCeXRlczogbnVtYmVyO1xuICAvKiogUG9yY2VudGFqZSBjb21wbGV0YWRvICgwLTEwMCkgKi9cbiAgcGVyY2VudGFnZTogbnVtYmVyO1xuICAvKiogRXN0YWRvIGFjdHVhbCBkZWwgdXBsb2FkICovXG4gIHN0YXRlOiBVcGxvYWRTdGF0ZTtcbn1cblxuLyoqXG4gKiBSZXN1bHRhZG8gZGUgdW4gdXBsb2FkIGNvbXBsZXRhZG9cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGxvYWRSZXN1bHQge1xuICAvKiogVVJMIGRlIGRlc2NhcmdhIGRlbCBhcmNoaXZvICovXG4gIGRvd25sb2FkVXJsOiBzdHJpbmc7XG4gIC8qKiBSdXRhIGNvbXBsZXRhIGVuIFN0b3JhZ2UgKi9cbiAgZnVsbFBhdGg6IHN0cmluZztcbiAgLyoqIE5vbWJyZSBkZWwgYXJjaGl2byAqL1xuICBuYW1lOiBzdHJpbmc7XG4gIC8qKiBUYW1hw7FvIGVuIGJ5dGVzICovXG4gIHNpemU6IG51bWJlcjtcbiAgLyoqIFRpcG8gTUlNRSBkZWwgYXJjaGl2byAqL1xuICBjb250ZW50VHlwZTogc3RyaW5nO1xuICAvKiogTWV0YWRhdGEgcGVyc29uYWxpemFkYSAqL1xuICBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbn1cblxuLyoqXG4gKiBNZXRhZGF0YSBwYXJhIGFyY2hpdm9zIGVuIFN0b3JhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlTWV0YWRhdGEge1xuICAvKiogVGlwbyBNSU1FIGRlbCBhcmNoaXZvICovXG4gIGNvbnRlbnRUeXBlPzogc3RyaW5nO1xuICAvKiogTWV0YWRhdGEgcGVyc29uYWxpemFkYSAoa2V5LXZhbHVlKSAqL1xuICBjdXN0b21NZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKiBDb250cm9sIGRlIGNhY2jDqSBIVFRQICovXG4gIGNhY2hlQ29udHJvbD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXN1bHRhZG8gZGUgbGlzdGFyIGFyY2hpdm9zIGVuIFN0b3JhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdG9yYWdlTGlzdFJlc3VsdCB7XG4gIC8qKiBSdXRhcyBkZSBsb3MgYXJjaGl2b3MgZW5jb250cmFkb3MgKi9cbiAgaXRlbXM6IHN0cmluZ1tdO1xuICAvKiogVG9rZW4gcGFyYSBsYSBzaWd1aWVudGUgcMOhZ2luYSAoc2kgaGF5IG3DoXMpICovXG4gIG5leHRQYWdlVG9rZW4/OiBzdHJpbmc7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEFVVEggLyBTRVNTSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogSW5mb3JtYWNpw7NuIGRlbCB1c3VhcmlvIGRlIEZpcmViYXNlIChzaW1wbGlmaWNhZGEpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlyZWJhc2VVc2VyIHtcbiAgLyoqIFVJRCDDum5pY28gZGVsIHVzdWFyaW8gKi9cbiAgdWlkOiBzdHJpbmc7XG4gIC8qKiBFbWFpbCBkZWwgdXN1YXJpbyAqL1xuICBlbWFpbDogc3RyaW5nIHwgbnVsbDtcbiAgLyoqIE5vbWJyZSBwYXJhIG1vc3RyYXIgKi9cbiAgZGlzcGxheU5hbWU6IHN0cmluZyB8IG51bGw7XG4gIC8qKiBVUkwgZGUgZm90byBkZSBwZXJmaWwgKi9cbiAgcGhvdG9VUkw6IHN0cmluZyB8IG51bGw7XG4gIC8qKiBFbWFpbCB2ZXJpZmljYWRvICovXG4gIGVtYWlsVmVyaWZpZWQ6IGJvb2xlYW47XG4gIC8qKiBVc3VhcmlvIGFuw7NuaW1vICovXG4gIGlzQW5vbnltb3VzOiBib29sZWFuO1xuICAvKiogUHJvdmVlZG9yIGRlIGF1dGVudGljYWNpw7NuICovXG4gIHByb3ZpZGVySWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBFc3RhZG8gZGUgbGEgc2VzacOzbiBkZSBGaXJlYmFzZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlc3Npb25TdGF0ZSB7XG4gIC8qKiBVc3VhcmlvIGFjdHVhbCAobnVsbCBzaSBubyBhdXRlbnRpY2FkbykgKi9cbiAgdXNlcjogRmlyZWJhc2VVc2VyIHwgbnVsbDtcbiAgLyoqIEluZGljYSBzaSBlbCB1c3VhcmlvIGVzdMOhIGF1dGVudGljYWRvICovXG4gIGlzQXV0aGVudGljYXRlZDogYm9vbGVhbjtcbiAgLyoqIEluZGljYSBzaSBzZSBlc3TDoSBjYXJnYW5kbyBlbCBlc3RhZG8gZGUgYXV0aCAqL1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIC8qKiBFcnJvciBkZSBhdXRlbnRpY2FjacOzbiAoc2kgbG8gaGF5KSAqL1xuICBlcnJvcjogRXJyb3IgfCBudWxsO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBNRVNTQUdJTkcgKEZDTSlcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBFc3RhZG8gZGVsIHBlcm1pc28gZGUgbm90aWZpY2FjaW9uZXNcbiAqL1xuZXhwb3J0IHR5cGUgTm90aWZpY2F0aW9uUGVybWlzc2lvbiA9ICdncmFudGVkJyB8ICdkZW5pZWQnIHwgJ2RlZmF1bHQnO1xuXG4vKipcbiAqIFBheWxvYWQgZGUgdW5hIG5vdGlmaWNhY2nDs24gcHVzaFxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvblBheWxvYWQge1xuICAvKiogVMOtdHVsbyBkZSBsYSBub3RpZmljYWNpw7NuICovXG4gIHRpdGxlPzogc3RyaW5nO1xuICAvKiogQ3VlcnBvIGRlbCBtZW5zYWplICovXG4gIGJvZHk/OiBzdHJpbmc7XG4gIC8qKiBVUkwgZGUgaW1hZ2VuICovXG4gIGltYWdlPzogc3RyaW5nO1xuICAvKiogRGF0b3MgcGVyc29uYWxpemFkb3MgKi9cbiAgZGF0YT86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKiBJRCBkZWwgbWVuc2FqZSBkZSBGQ00gKi9cbiAgbWVzc2FnZUlkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFjY2nDs24gZGUgbmF2ZWdhY2nDs24gZGVzZGUgdW5hIG5vdGlmaWNhY2nDs25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25BY3Rpb24ge1xuICAvKiogUnV0YSBpbnRlcm5hIGRlIGxhIGFwcCAoZWo6ICcvb3JkZXJzLzEyMycpICovXG4gIHJvdXRlPzogc3RyaW5nO1xuICAvKiogVVJMIGV4dGVybmEgKGVqOiAnaHR0cHM6Ly9leGFtcGxlLmNvbScpICovXG4gIHVybD86IHN0cmluZztcbiAgLyoqIFBhcsOhbWV0cm9zIGRlIHF1ZXJ5IHN0cmluZyAqL1xuICBxdWVyeVBhcmFtcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIC8qKiBUaXBvIGRlIGFjY2nDs24gcGVyc29uYWxpemFkYSAqL1xuICBhY3Rpb25UeXBlPzogc3RyaW5nO1xuICAvKiogRGF0b3MgYWRpY2lvbmFsZXMgcGFyYSBsYSBhY2Npw7NuICovXG4gIGFjdGlvbkRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqXG4gKiBFdmVudG8gZGUgY2xpY2sgZW4gdW5hIG5vdGlmaWNhY2nDs25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb3RpZmljYXRpb25DbGlja0V2ZW50IHtcbiAgLyoqIFBheWxvYWQgb3JpZ2luYWwgZGUgbGEgbm90aWZpY2FjacOzbiAqL1xuICBub3RpZmljYXRpb246IE5vdGlmaWNhdGlvblBheWxvYWQ7XG4gIC8qKiBBY2Npw7NuIGRlIG5hdmVnYWNpw7NuIGV4dHJhw61kYSAqL1xuICBhY3Rpb246IE5vdGlmaWNhdGlvbkFjdGlvbjtcbiAgLyoqIFRpbWVzdGFtcCBkZWwgY2xpY2sgKi9cbiAgdGltZXN0YW1wOiBEYXRlO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBFUlJPUkVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ8OzZGlnb3MgZGUgZXJyb3IgZGUgRmlyZWJhc2VcbiAqL1xuZXhwb3J0IHR5cGUgRmlyZWJhc2VFcnJvckNvZGUgPVxuICB8ICdwZXJtaXNzaW9uLWRlbmllZCdcbiAgfCAnbm90LWZvdW5kJ1xuICB8ICdhbHJlYWR5LWV4aXN0cydcbiAgfCAncmVzb3VyY2UtZXhoYXVzdGVkJ1xuICB8ICdjYW5jZWxsZWQnXG4gIHwgJ3Vua25vd24nXG4gIHwgJ2ludmFsaWQtYXJndW1lbnQnXG4gIHwgJ2RlYWRsaW5lLWV4Y2VlZGVkJ1xuICB8ICd1bmF1dGhlbnRpY2F0ZWQnO1xuXG4vKipcbiAqIEVycm9yIGRlIEZpcmViYXNlIHRpcGFkb1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEZpcmViYXNlRXJyb3Ige1xuICAvKiogQ8OzZGlnbyBkZWwgZXJyb3IgKi9cbiAgY29kZTogRmlyZWJhc2VFcnJvckNvZGU7XG4gIC8qKiBNZW5zYWplIGRlIGVycm9yIChlbiBlc3Bhw7FvbCkgKi9cbiAgbWVzc2FnZTogc3RyaW5nO1xuICAvKiogRXJyb3Igb3JpZ2luYWwgZGUgRmlyZWJhc2UgKi9cbiAgb3JpZ2luYWxFcnJvcj86IHVua25vd247XG59XG4iXX0=