ngx-render-material-forms 2.5.5 → 2.5.6

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.
@@ -126,6 +126,7 @@ export class CommonService {
126
126
  }
127
127
  }
128
128
  loadProducts(pageNumber, pazeSize, search = '', onlyActive = true, description = false, levelOneId, levelTwoId, levelThreeId, levelFourId) {
129
+ this.paramsData = JSON.parse(localStorage.getItem('productPickerParams'));
129
130
  const baseApiUrl = this.getBaseApiUrl();
130
131
  const vendorId = this.getValueByKey(this.paramsData, 'vendorId');
131
132
  const programId = this.getValueByKey(this.paramsData, 'programId');
@@ -136,6 +137,7 @@ export class CommonService {
136
137
  return this.http.get(apiUrl);
137
138
  }
138
139
  listSubCategory(category) {
140
+ this.paramsData = JSON.parse(localStorage.getItem('productPickerParams'));
139
141
  const vendorId = this.getValueByKey(this.paramsData, 'vendorId');
140
142
  const baseApiUrl = this.getBaseApiUrl();
141
143
  return this.http.get(`${baseApiUrl}/api/VendorFormBuilder/GetProductsSubCategory?vendorId=${vendorId}&categoryName=${category}`);
@@ -157,26 +159,31 @@ export class CommonService {
157
159
  return queryString;
158
160
  }
159
161
  listProductCategory() {
162
+ this.paramsData = JSON.parse(localStorage.getItem('productPickerParams'));
160
163
  const vendorId = this.getValueByKey(this.paramsData, 'vendorId');
161
164
  const baseApiUrl = this.getBaseApiUrl();
162
165
  return this.http.get(`${baseApiUrl}/api/VendorFormBuilder/GetProductsCategory?vendorId=${vendorId}`);
163
166
  }
164
167
  productLevelOne() {
168
+ this.paramsData = JSON.parse(localStorage.getItem('productPickerParams'));
165
169
  const baseApiUrl = this.getBaseApiUrl();
166
170
  const vendorId = this.getValueByKey(this.paramsData, 'vendorId');
167
171
  return this.http.get(`${baseApiUrl}/api/VendorFormBuilder/GetProductLevelOne?vendorId=${vendorId}`);
168
172
  }
169
173
  productLevelTwo(levelOneId) {
174
+ this.paramsData = JSON.parse(localStorage.getItem('productPickerParams'));
170
175
  const baseApiUrl = this.getBaseApiUrl();
171
176
  const vendorId = this.getValueByKey(this.paramsData, 'vendorId');
172
177
  return this.http.get(`${baseApiUrl}/api/VendorFormBuilder/GetProductLevelTwo?levelOneId=${levelOneId}&vendorId=${vendorId}`);
173
178
  }
174
179
  productLevelThree(levelOneId, levelTwoId) {
180
+ this.paramsData = JSON.parse(localStorage.getItem('productPickerParams'));
175
181
  const baseApiUrl = this.getBaseApiUrl();
176
182
  const vendorId = this.getValueByKey(this.paramsData, 'vendorId');
177
183
  return this.http.get(`${baseApiUrl}/api/VendorFormBuilder/GetProductLevelThree?levelOneId=${levelOneId}&levelTwoId=${levelTwoId}&vendorId=${vendorId}`);
178
184
  }
179
185
  productLevelFour(levelOneId, levelTwoId, levelThreeId) {
186
+ this.paramsData = JSON.parse(localStorage.getItem('productPickerParams'));
180
187
  const baseApiUrl = this.getBaseApiUrl();
181
188
  const vendorId = this.getValueByKey(this.paramsData, 'vendorId');
182
189
  return this.http.get(`${baseApiUrl}/api/VendorFormBuilder/GetProductLevelFour?levelOneId=${levelOneId}&levelTwoId=${levelTwoId}&levelThreeId=${levelThreeId}&vendorId=${vendorId}`);
@@ -210,12 +217,8 @@ export class CommonService {
210
217
  }
211
218
  /*Funtion to check if property is matched with given attributes in formBuilder or not */
212
219
  checkIsAttributeTrue(newProductPickerFlag, attributeName) {
213
- // return newProductPickerFlag && Object.keys(newProductPickerFlag).some(key =>
214
- // key.toLocaleLowerCase() === attributeName.toLowerCase() &&
215
- // newProductPickerFlag[key].toLowerCase() === "true"
216
- // );
217
- return newProductPickerFlag && Object.keys(newProductPickerFlag).some(key => key.trim().toLowerCase() === attributeName.trim().toLowerCase() &&
218
- String(newProductPickerFlag[key]).trim().toLowerCase() === "true");
220
+ return newProductPickerFlag && Object.keys(newProductPickerFlag).some(key => key.toLocaleLowerCase() === attributeName.toLowerCase() &&
221
+ newProductPickerFlag[key].toLowerCase() === "true");
219
222
  }
220
223
  getglobedata() {
221
224
  const hostMappings = {
@@ -250,4 +253,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.3", ngImpor
250
253
  providedIn: 'root'
251
254
  }]
252
255
  }], ctorParameters: function () { return [{ type: i1.HttpClient }]; } });
253
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVuZGVyLW1hdGVyaWFsLWZvcm1zL3NyYy9saWIvY29tcG9uZW50cy9jb21tb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUV0QyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7QUFVbkQsTUFBTSxPQUFPLGFBQWE7SUFzRXhCLFlBQW1CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFoRTNCLHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzlELG1CQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xELFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQyxDQUFDLHdCQUF3QjtRQUMvRSxrQkFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQywwQ0FBMEM7UUFDdkYsU0FBSSxHQUFRLEVBQUUsQ0FBQztRQUNmLFVBQUssR0FBUSxFQUFFLENBQUM7UUFDaEIsMEJBQTBCO1FBQ2xCLFdBQU0sR0FBRyxPQUFPLENBQUM7UUFDakIsWUFBTyxHQUFHLE9BQU8sQ0FBQztRQUNsQixZQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ2xCLFlBQU8sR0FBRyxPQUFPLENBQUM7UUFFMUIsNEJBQTRCO1FBQ3BCLFlBQU8sR0FBRyxRQUFRLENBQUM7UUFDbkIsYUFBUSxHQUFHLFFBQVEsQ0FBQztRQUNwQixhQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3BCLGFB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RyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPO1NBRXRHLENBQUM7UUFDRixNQUFNLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztRQUMxQyxPQUFPLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUMsQ0FBQzs7MEdBcFJVLGFBQWE7OEdBQWIsYUFBYSxjQUZaLE1BQU07MkZBRVAsYUFBYTtrQkFIekIsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGlzTnVsbE9yVW5kZWZpbmVkIH0gZnJvbSAndXRpbCc7XHJcbmltcG9ydCAqIGFzIENyeXB0b0pTIGZyb20gJ2NyeXB0by1qcyc7XHJcbmltcG9ydCB7IEh0dHBDbGllbnQsIEh0dHBIZWFkZXJzIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW50ZXJmYWNlIFZlbmRvclByb2R1Y3RzUmVzcG9uc2Uge1xyXG4gIGNvZGU6IG51bWJlcjtcclxuICBkYXRhOiBhbnk7XHJcbiAgbWVzc2FnZTogc3RyaW5nO1xyXG4gIHN0YXR1c0NvZGU6IG51bWJlcjtcclxufVxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBDb21tb25TZXJ2aWNlIHtcclxuICBwYXJhbXNEYXRhOiBhbnk7XHJcbiAgaW5jbHVkZURlc2NyaXB0aW9uOiBhbnk7XHJcbiAgdmVuZG9ySWQ6IGFueTtcclxuICBvbmx5QWN0aXZlOiBhbnk7XHJcbiAgY3VycmVudFVzZXI6IGFueTtcclxuICBwcml2YXRlIGRyb3Bkb3duSXRlbXNTdWJqZWN0ID0gbmV3IEJlaGF2aW9yU3ViamVjdDxhbnlbXT4oW10pO1xyXG4gIGRyb3Bkb3duSXRlbXMkID0gdGhpcy5kcm9wZG93bkl0ZW1zU3ViamVjdC5hc09ic2VydmFibGUoKTtcclxuICBwcml2YXRlIHNldEZsYWcgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGJvb2xlYW4+KGZhbHNlKTsgLy8gSW5pdGlhbGl6ZSB3aXRoIGZhbHNlXHJcbiAgZHJvcGRvd25mbGFnJCA9IHRoaXMuc2V0RmxhZy5hc09ic2VydmFibGUoKTsgLy8gT2JzZXJ2YWJsZSB0aGF0IGVtaXRzIHRoZSBib29sZWFuIHZhbHVlXHJcbiAgaG9seTogYW55ID0gJyc7XHJcbiAgZ3JhaWw6IGFueSA9ICcnO1xyXG4gIC8vc3RhdGljIHNvcnRfNSA9ICc0c3c9PSc7XHJcbiAgcHJpdmF0ZSBzb3J0XzUgPSAnb09BPT0nO1xyXG4gIHByaXZhdGUgTHNvcnRfNSA9ICdML3c9PSc7XHJcbiAgcHJpdmF0ZSBKc29ydF81ID0gJ0JhUT09JztcclxuICBwcml2YXRlIFBzb3J0XzUgPSAnV1ZRPT0nO1xyXG5cclxuICAvL3N0YXRpYyBzYWxlc18yID0gJzIrVDJOWCc7XHJcbiAgcHJpdmF0ZSBzYWxlc18yID0gJ2d1cFZDMSc7XHJcbiAgcHJpdmF0ZSBMc2FsZXNfMiA9ICdEeUxJK0cnO1xyXG4gIHByaXZhdGUgSnNhbGVzXzIgPSAnNWc2M2FrJztcclxuICBwcml2YXRlIFBzYWxlc18yID0gJ0hGUURnRSc7XHJcblxyXG4gIC8vc3RhdGljIE1vYmlsZV80ID0gJ1JSMTJSJztcclxuICBwcml2YXRlIE1vYmlsZV80ID0gJ05WOVZLJztcclxuICBwcml2YXRlIExNb2JpbGVfNCA9ICcrUDkxbCc7XHJcbiAgcHJpdmF0ZSBKTW9iaWxlXzQgPSAnTitCeHcnO1xyXG4gIHByaXZhdGUgUE1vYmlsZV80ID0gJ2o0VU10JztcclxuXHJcbiAgLy9zdGF0aWMgSWRfMiA9ICdxVUJRRSc7XHJcbiAgcHJpdmF0ZSBJZF8yID0gJ1c3VEp2JztcclxuICBwcml2YXRlIExJZF8yID0gJ2tBSjg3JztcclxuICBwcml2YXRlIEpJZF8yID0gJ0k0UE1CJztcclxuICBwcml2YXRlIFBJZF8yID0gJzRIYTRVJztcclxuXHJcbiAgLy8gc3RhdGljIE5hbWVfMSA9ICc4Ri8nO1xyXG4gIHByaXZhdGUgTmFtZV8xID0gJ2QzdSc7XHJcbiAgcHJpdmF0ZSBMTmFtZV8xID0gJ1V3WCc7XHJcbiAgcHJpdmF0ZSBKTmFtZV8xID0gJ21DYyc7XHJcbiAgcHJpdmF0ZSBQTmFtZV8xID0gJ255UCc7XHJcblxyXG4gIHByaXZhdGUgY2l0eSA9ICdWcSc7Ly8xXHJcbiAgcHJpdmF0ZSBzdGF0ZSA9ICdkckEyJzsvLzRcclxuICBwcml2YXRlIHJlZ2lvbiA9ICdFL2YnOy8vMlxyXG4gIHByaXZhdGUgdGVycml0b3J5ID0gJ2dabkE9PSc7Ly82XHJcbiAgcHJpdmF0ZSBjb3VudHJ5ID0gJzJzTUsnOy8vNVxyXG4gIHByaXZhdGUgY29udGluZW50ID0gJ1E1TjJYJzsvLzNcclxuICBwcml2YXRlIEpjaXR5ID0gJ2xrJzsvLzFcclxuICBwcml2YXRlIEpzdGF0ZSA9ICdyc3dMJzsvLzRcclxuICBwcml2YXRlIEpyZWdpb24gPSAneHNIJzsvLzJcclxuICBwcml2YXRlIEp0ZXJyaXRvcnkgPSAnWHNvdz09JzsvLzZcclxuICBwcml2YXRlIEpjb3VudHJ5ID0gJ24wYnMnOy8vNVxyXG4gIHByaXZhdGUgSmNvbnRpbmVudCA9ICdoUU9vSSc7Ly8zXHJcblxyXG4gIHByaXZhdGUgTGNpdHkgPSAnQXcnOy8vMVxyXG4gIHByaXZhdGUgTHN0YXRlID0gJ2hybXgnOy8vNFxyXG4gIHByaXZhdGUgTHJlZ2lvbiA9ICdNTUMnOy8vMlxyXG4gIHByaXZhdGUgTHRlcnJpdG9yeSA9ICd2VkdRPT0nOy8vNlxyXG4gIHByaXZhdGUgTGNvdW50cnkgPSAnSXFQYyc7Ly81XHJcbiAgcHJpdmF0ZSBMY29udGluZW50ID0gJ0N0dFIrJzsvLzNcclxuXHJcbiAgcHJpdmF0ZSBQY2l0eSA9ICc3aCc7Ly8xXHJcbiAgcHJpdmF0ZSBQc3RhdGUgPSAnSnROeic7Ly80XHJcbiAgcHJpdmF0ZSBQcmVnaW9uID0gJ0ZUbCc7Ly8yXHJcbiAgcHJpdmF0ZSBQdGVycml0b3J5ID0gJy92K2c9PSc7Ly82XHJcbiAgcHJpdmF0ZSBQY291bnRyeSA9ICdXRkRkJzsvLzVcclxuICBwcml2YXRlIFBjb250aW5lbnQgPSAnc0R0Nk4nOy8vM1xyXG5cclxuXHJcbiAgY29uc3RydWN0b3IocHVibGljIGh0dHA6IEh0dHBDbGllbnQpIHtcclxuICAgIHRoaXMuY3VycmVudFVzZXIgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdjdXJyZW50VXNlcicpKTtcclxuICAgIHRoaXMuaG9seSA9IENyeXB0b0pTLmVuYy5CYXNlNjQucGFyc2UodGhpcy5nZXRjb21ib2RlYWwoKSk7XHJcbiAgICB0aGlzLmdyYWlsID0gQ3J5cHRvSlMuZW5jLkJhc2U2NC5wYXJzZSh0aGlzLmdldGdsb2JlZGF0YSgpKTtcclxuXHJcbiAgICB0aGlzLnBhcmFtc0RhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwcm9kdWN0UGlja2VyUGFyYW1zJykpO1xyXG4gIH1cclxuXHJcbiAgZ2V0QmFzZUFwaVVybCgpOiBzdHJpbmcgfCBudWxsIHtcclxuICAgIGNvbnN0IGJhc2VVcmxNYXBwaW5nID0ge1xyXG4gICAgICAnYkc5allXeG9iM04wJzogJ2h0dHA6Ly9sb2NhbGhvc3Q6NTg1MDQnLFxyXG4gICAgICAnYkdsdVkyOXNiaTUyWVhKMGIzQnBZUzVqYjIwPSc6ICdodHRwczovL2xpbmNvbG4tYXBpLnZhcnRvcGlhLmNvbScsXHJcbiAgICAgICdjM1JoWjJVdWRtRnlkRzl3YVdFdVkyOXQnOiAnaHR0cHM6Ly9zdGFnZS1hcGkudmFydG9waWEuY29tJyxcclxuICAgICAgJ2JYa3VkbUZ5ZEc5d2FXRXVZMjl0JzogJ2h0dHBzOi8vcmVhZ2FuLWFwaS52YXJ0b3BpYS5jb20nLFxyXG4gICAgICAnYW1GamEzTnZiaTUyWVhKMGIzQnBZUzVqYjIwPSc6ICdodHRwczovL2phY2tzb24tYXBpLnZhcnRvcGlhLmNvbScsXHJcbiAgICAgICdkV0YwTG5aaGNuUnZjR2xoTG1OdmJRPT0nOiAnaHR0cHM6Ly91YXQtYXBpLnZhcnRvcGlhLmNvbSdcclxuICAgIH07XHJcblxyXG4gICAgLy8gR2V0IHRoZSBjdXJyZW50IGhvc3RuYW1lXHJcbiAgICBjb25zdCBob3N0bmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcclxuICAgIHJldHVybiBiYXNlVXJsTWFwcGluZ1tidG9hKGhvc3RuYW1lKV0gfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIHNjcnVtYmxlKG1zZykge1xyXG4gICAgaWYgKCFpc051bGxPclVuZGVmaW5lZChtc2cpKSB7XHJcbiAgICAgIHZhciBjb25jZWFsID0gdGhpcy5nZXRjYW1wYWlnbihtc2csIHRoaXMuaG9seSwgdGhpcy5ncmFpbCk7XHJcbiAgICAgIHZhciBzaGEyNTYgPSBDcnlwdG9KUy5IbWFjU0hBMjU2KENyeXB0b0pTLmVuYy5CYXNlNjQuc3RyaW5naWZ5KHRoaXMuZ3JhaWwpICsgY29uY2VhbC50b1N0cmluZygpLCBDcnlwdG9KUy5lbmMuQmFzZTY0LnN0cmluZ2lmeSh0aGlzLmhvbHkpKTtcclxuICAgICAgdmFyIGhhc2hJbkJhc2U2NCA9IENyeXB0b0pTLmVuYy5CYXNlNjQuc3RyaW5naWZ5KHNoYTI1Nik7XHJcbiAgICAgIGxldCBrZXlWYWx1ZSA9IHtcclxuICAgICAgICBcInZhbHVlXCI6IGNvbmNlYWwudG9TdHJpbmcoKSxcclxuICAgICAgICBcIm1hY1wiOiBoYXNoSW5CYXNlNjRcclxuICAgICAgfTtcclxuICAgICAgdmFyIHJlc3VsdCA9IEpTT04uc3RyaW5naWZ5KGtleVZhbHVlKTtcclxuICAgICAgdmFyIGp1bWJsZWQgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZShyZXN1bHQpO1xyXG4gICAgICByZXR1cm4gQ3J5cHRvSlMuZW5jLkJhc2U2NC5zdHJpbmdpZnkoanVtYmxlZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBnZXRjYW1wYWlnbihkYXRhOiBhbnksIGhvbHk6IGFueSwgZ3JhaWw6IGFueSkge1xyXG4gICAgcmV0dXJuIENyeXB0b0pTLkFFUy5lbmNyeXB0KGRhdGEudG9TdHJpbmcoKSwgaG9seSxcclxuICAgICAge1xyXG4gICAgICAgIGJsb2NrU2l6ZTogMTI4LFxyXG4gICAgICAgIGl2OiBncmFpbCxcclxuICAgICAgICBtb2RlOiBDcnlwdG9KUy5tb2RlLkNCQyxcclxuICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczdcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKiBJbnRpYWxpemF0aW9uIG9mIGFwaSBwYXRoIGFuZCBxdWVyeXBhcmFtcyAqL1xyXG4gIGluaXRpYWxpemVBcGlQYXRoKGdldFVybCwgcXVlcnlQYXJhbXM6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBpZiAocXVlcnlQYXJhbXM/Lmxlbmd0aCkge1xyXG4gICAgICBjb25zdCBjaGFuZ2VUb09iamVjdCA9IHRoaXMuY29udmVydFRvT2JqZWN0KHF1ZXJ5UGFyYW1zKTtcclxuICAgICAgaWYgKE9iamVjdC5rZXlzKGNoYW5nZVRvT2JqZWN0KS5sZW5ndGgpIHtcclxuICAgICAgICBjb25zdCBxdWVyeVN0cmluZyA9IHRoaXMuY29udmVydFRvUXVlcnlTdHJpbmcoY2hhbmdlVG9PYmplY3QpO1xyXG4gICAgICAgIGNvbnN0IGJhc2VBcGlVcmwgPSB0aGlzLmdldEJhc2VBcGlVcmwoKTtcclxuICAgICAgICB2YXIgYXBpVXJsID0gYCR7YmFzZUFwaVVybH0vYXBpL2AgKyBnZXRVcmw7XHJcbiAgICAgICAgYXBpVXJsICs9ICc/JyArIHF1ZXJ5U3RyaW5nO1xyXG4gICAgICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFZlbmRvclByb2R1Y3RzUmVzcG9uc2U+KGFwaVVybCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8qIEZ1bmN0b24gZm9yIGNvbnZlcnQgYXJyYXkgdG8gb2JqZWN0ICovXHJcbiAgY29udmVydFRvT2JqZWN0KHF1ZXJ5UGFyYW1zKSB7XHJcbiAgICBpZiAocXVlcnlQYXJhbXMubGVuZ3RoKSB7XHJcbiAgICAgIHZhciBvYmogPSB7fTtcclxuICAgICAgcXVlcnlQYXJhbXMuZm9yRWFjaChmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICAgIG9ialtpdGVtLmtleV0gPSBpdGVtLnZhbHVlO1xyXG4gICAgICB9KTtcclxuICAgICAgcmV0dXJuIG9iajtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGxvYWRQcm9kdWN0cyhwYWdlTnVtYmVyLCBwYXplU2l6ZSwgc2VhcmNoOiBzdHJpbmcgPSAnJywgb25seUFjdGl2ZTogYm9vbGVhbiA9IHRydWUsIGRlc2NyaXB0aW9uOiBib29sZWFuID0gZmFsc2UsIGxldmVsT25lSWQ6IGFueSwgbGV2ZWxUd29JZDogYW55LCBsZXZlbFRocmVlSWQ6IGFueSwgbGV2ZWxGb3VySWQ6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBiYXNlQXBpVXJsID0gdGhpcy5nZXRCYXNlQXBpVXJsKCk7XHJcbiAgICBjb25zdCB2ZW5kb3JJZCA9IHRoaXMuZ2V0VmFsdWVCeUtleSh0aGlzLnBhcmFtc0RhdGEsICd2ZW5kb3JJZCcpO1xyXG4gICAgY29uc3QgcHJvZ3JhbUlkID0gdGhpcy5nZXRWYWx1ZUJ5S2V5KHRoaXMucGFyYW1zRGF0YSwgJ3Byb2dyYW1JZCcpO1xyXG4gICAgbGV0IGFwaVVybCA9IGAke2Jhc2VBcGlVcmx9L2FwaS9WZW5kb3JGb3JtQnVpbGRlci9HZXRWZW5kb3JQcm9kdWN0c1YyP3ZlbmRvcklkPSR7dmVuZG9ySWR9JnBhZ2VOdW1iZXI9JHtwYWdlTnVtYmVyfSZwYWdlU2l6ZT0ke3BhemVTaXplfSZzZWFyY2g9JHtzZWFyY2h9Jm9ubHlBY3RpdmU9JHtvbmx5QWN0aXZlfSZpbmNsdWRlRGVzY3JpcHRpb249JHtkZXNjcmlwdGlvbn0mbGV2ZWxPbmU9JHtsZXZlbE9uZUlkfSZsZXZlbFR3bz0ke2xldmVsVHdvSWR9JmxldmVsVGhyZWU9JHtsZXZlbFRocmVlSWR9JmxldmVsRm91cj0ke2xldmVsRm91cklkfWA7XHJcbiAgICBpZiAocHJvZ3JhbUlkKSB7XHJcbiAgICAgIGFwaVVybCArPSBgJnByb2dyYW1JZD0ke3Byb2dyYW1JZH1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VmVuZG9yUHJvZHVjdHNSZXNwb25zZT4oYXBpVXJsKTtcclxuICB9XHJcblxyXG4gIGxpc3RTdWJDYXRlZ29yeShjYXRlZ29yeTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IHZlbmRvcklkID0gdGhpcy5nZXRWYWx1ZUJ5S2V5KHRoaXMucGFyYW1zRGF0YSwgJ3ZlbmRvcklkJyk7XHJcbiAgICBjb25zdCBiYXNlQXBpVXJsID0gdGhpcy5nZXRCYXNlQXBpVXJsKCk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxWZW5kb3JQcm9kdWN0c1Jlc3BvbnNlPihgJHtiYXNlQXBpVXJsfS9hcGkvVmVuZG9yRm9ybUJ1aWxkZXIvR2V0UHJvZHVjdHNTdWJDYXRlZ29yeT92ZW5kb3JJZD0ke3ZlbmRvcklkfSZjYXRlZ29yeU5hbWU9JHtjYXRlZ29yeX1gKVxyXG4gIH1cclxuXHJcbiAgLyogQXBwZW5kIGtleSBhbmQgdmFsdWUgdG8gcXVlcnkgc3RyaW5nICovXHJcbiAgY29udmVydFRvUXVlcnlTdHJpbmcocXVlcnlQYXJhbXMpIHtcclxuICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gT2JqZWN0LmtleXMocXVlcnlQYXJhbXMpXHJcbiAgICAgIC5tYXAoa2V5ID0+IHtcclxuICAgICAgICBpZiAocXVlcnlQYXJhbXNba2V5XSAhPT0gJycgJiYgcXVlcnlQYXJhbXNba2V5XSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgcmV0dXJuIGVuY29kZVVSSUNvbXBvbmVudChrZXkpICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHF1ZXJ5UGFyYW1zW2tleV0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAocXVlcnlQYXJhbXMuaGFzT3duUHJvcGVydHkoJ3NlYXJjaCcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoa2V5KSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChxdWVyeVBhcmFtc1trZXldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIC5qb2luKCcmJyk7XHJcbiAgICByZXR1cm4gcXVlcnlTdHJpbmc7XHJcbiAgfVxyXG5cclxuICBsaXN0UHJvZHVjdENhdGVnb3J5KCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCB2ZW5kb3JJZCA9IHRoaXMuZ2V0VmFsdWVCeUtleSh0aGlzLnBhcmFtc0RhdGEsICd2ZW5kb3JJZCcpO1xyXG4gICAgY29uc3QgYmFzZUFwaVVybCA9IHRoaXMuZ2V0QmFzZUFwaVVybCgpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VmVuZG9yUHJvZHVjdHNSZXNwb25zZT4oYCR7YmFzZUFwaVVybH0vYXBpL1ZlbmRvckZvcm1CdWlsZGVyL0dldFByb2R1Y3RzQ2F0ZWdvcnk/dmVuZG9ySWQ9JHt2ZW5kb3JJZH1gKTtcclxuICB9XHJcblxyXG4gIHByb2R1Y3RMZXZlbE9uZSgpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgYmFzZUFwaVVybCA9IHRoaXMuZ2V0QmFzZUFwaVVybCgpO1xyXG4gICAgY29uc3QgdmVuZG9ySWQgPSB0aGlzLmdldFZhbHVlQnlLZXkodGhpcy5wYXJhbXNEYXRhLCAndmVuZG9ySWQnKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFZlbmRvclByb2R1Y3RzUmVzcG9uc2U+KGAke2Jhc2VBcGlVcmx9L2FwaS9WZW5kb3JGb3JtQnVpbGRlci9HZXRQcm9kdWN0TGV2ZWxPbmU/dmVuZG9ySWQ9JHt2ZW5kb3JJZH1gKTtcclxuICB9XHJcblxyXG4gIHByb2R1Y3RMZXZlbFR3byhsZXZlbE9uZUlkOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgY29uc3QgYmFzZUFwaVVybCA9IHRoaXMuZ2V0QmFzZUFwaVVybCgpO1xyXG4gICAgY29uc3QgdmVuZG9ySWQgPSB0aGlzLmdldFZhbHVlQnlLZXkodGhpcy5wYXJhbXNEYXRhLCAndmVuZG9ySWQnKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFZlbmRvclByb2R1Y3RzUmVzcG9uc2U+KGAke2Jhc2VBcGlVcmx9L2FwaS9WZW5kb3JGb3JtQnVpbGRlci9HZXRQcm9kdWN0TGV2ZWxUd28/bGV2ZWxPbmVJZD0ke2xldmVsT25lSWR9JnZlbmRvcklkPSR7dmVuZG9ySWR9YCk7XHJcbiAgfVxyXG5cclxuICBwcm9kdWN0TGV2ZWxUaHJlZShsZXZlbE9uZUlkOiBhbnksIGxldmVsVHdvSWQ6IGFueSk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICBjb25zdCBiYXNlQXBpVXJsID0gdGhpcy5nZXRCYXNlQXBpVXJsKCk7XHJcbiAgICBjb25zdCB2ZW5kb3JJZCA9IHRoaXMuZ2V0VmFsdWVCeUtleSh0aGlzLnBhcmFtc0RhdGEsICd2ZW5kb3JJZCcpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VmVuZG9yUHJvZHVjdHNSZXNwb25zZT4oYCR7YmFzZUFwaVVybH0vYXBpL1ZlbmRvckZvcm1CdWlsZGVyL0dldFByb2R1Y3RMZXZlbFRocmVlP2xldmVsT25lSWQ9JHtsZXZlbE9uZUlkfSZsZXZlbFR3b0lkPSR7bGV2ZWxUd29JZH0mdmVuZG9ySWQ9JHt2ZW5kb3JJZH1gKTtcclxuICB9XHJcblxyXG4gIHByb2R1Y3RMZXZlbEZvdXIobGV2ZWxPbmVJZDogYW55LCBsZXZlbFR3b0lkOiBhbnksIGxldmVsVGhyZWVJZDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGNvbnN0IGJhc2VBcGlVcmwgPSB0aGlzLmdldEJhc2VBcGlVcmwoKTtcclxuICAgIGNvbnN0IHZlbmRvcklkID0gdGhpcy5nZXRWYWx1ZUJ5S2V5KHRoaXMucGFyYW1zRGF0YSwgJ3ZlbmRvcklkJyk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxWZW5kb3JQcm9kdWN0c1Jlc3BvbnNlPihgJHtiYXNlQXBpVXJsfS9hcGkvVmVuZG9yRm9ybUJ1aWxkZXIvR2V0UHJvZHVjdExldmVsRm91cj9sZXZlbE9uZUlkPSR7bGV2ZWxPbmVJZH0mbGV2ZWxUd29JZD0ke2xldmVsVHdvSWR9JmxldmVsVGhyZWVJZD0ke2xldmVsVGhyZWVJZH0mdmVuZG9ySWQ9JHt2ZW5kb3JJZH1gKTtcclxuICB9XHJcblxyXG4gIC8vIEZ1bmN0aW9uIHRvIGdldCB2YWx1ZSBieSBrZXkgZnJvbSB0aGUgYXJyYXlcclxuICBnZXRWYWx1ZUJ5S2V5KGRhdGEsIGtleSkge1xyXG4gICAgaWYgKCFkYXRhIHx8IGRhdGEubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaXRlbSA9IGRhdGEuZmluZChrdiA9PiBrdi5rZXkudG9Mb3dlckNhc2UoKSA9PT0ga2V5LnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgcmV0dXJuIGl0ZW0gPyBpdGVtLnZhbHVlIDogbnVsbDtcclxuICB9XHJcblxyXG4gIC8qIEZ1bmN0aW9uIGZvciB2ZXJpZnkgbnVtYmVycyBhbmQgbnVtYmVycyB3aXRoIGNvbW1hIHNlcGVyYXRlZCB2YWx1ZXMgKi9cclxuICBvbmx5TnVtYmVycyhzdHIpIHtcclxuICAgIGlmIChzdHIpIHtcclxuICAgICAgcmV0dXJuIC9eWzAtOS4sXSskLy50ZXN0KHN0cik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qIEVuZCAqL1xyXG5cclxuICBzZXREcm9wZG93bkl0ZW1zKGl0ZW1zOiBhbnlbXSkge1xyXG4gICAgdGhpcy5kcm9wZG93bkl0ZW1zU3ViamVjdC5uZXh0KGl0ZW1zKTtcclxuICB9XHJcblxyXG4gIGdldERyb3Bkb3duSXRlbXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kcm9wZG93bkl0ZW1zU3ViamVjdC5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0RHJvcERvd25GbGFnKGZsYWc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc2V0RmxhZy5uZXh0KGZsYWcpXHJcbiAgfVxyXG5cclxuICBnZXREcm9wRG93bkZsYWcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXRGbGFnLmdldFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICAvKkZ1bnRpb24gdG8gY2hlY2sgaWYgcHJvcGVydHkgaXMgbWF0Y2hlZCB3aXRoIGdpdmVuIGF0dHJpYnV0ZXMgaW4gZm9ybUJ1aWxkZXIgb3Igbm90ICovXHJcbiAgY2hlY2tJc0F0dHJpYnV0ZVRydWUobmV3UHJvZHVjdFBpY2tlckZsYWcsIGF0dHJpYnV0ZU5hbWUpIHtcclxuICAgIC8vIHJldHVybiBuZXdQcm9kdWN0UGlja2VyRmxhZyAmJiBPYmplY3Qua2V5cyhuZXdQcm9kdWN0UGlja2VyRmxhZykuc29tZShrZXkgPT5cclxuICAgIC8vICAga2V5LnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09IGF0dHJpYnV0ZU5hbWUudG9Mb3dlckNhc2UoKSAmJlxyXG4gICAgLy8gICBuZXdQcm9kdWN0UGlja2VyRmxhZ1trZXldLnRvTG93ZXJDYXNlKCkgPT09IFwidHJ1ZVwiXHJcbiAgICAvLyApO1xyXG4gICAgcmV0dXJuIG5ld1Byb2R1Y3RQaWNrZXJGbGFnICYmIE9iamVjdC5rZXlzKG5ld1Byb2R1Y3RQaWNrZXJGbGFnKS5zb21lKGtleSA9PlxyXG4gICAgICBrZXkudHJpbSgpLnRvTG93ZXJDYXNlKCkgPT09IGF0dHJpYnV0ZU5hbWUudHJpbSgpLnRvTG93ZXJDYXNlKCkgJiZcclxuICAgICAgU3RyaW5nKG5ld1Byb2R1Y3RQaWNrZXJGbGFnW2tleV0pLnRyaW0oKS50b0xvd2VyQ2FzZSgpID09PSBcInRydWVcIlxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldGdsb2JlZGF0YSgpOiBTdHJpbmcge1xyXG4gICAgY29uc3QgaG9zdE1hcHBpbmdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xyXG4gICAgICAnYzNSaFoyVXVkbUZ5ZEc5d2FXRXVZMjl0JzogdGhpcy5jaXR5ICsgdGhpcy5yZWdpb24gKyB0aGlzLmNvbnRpbmVudCArIHRoaXMuc3RhdGUgKyB0aGlzLmNvdW50cnkgKyB0aGlzLnRlcnJpdG9yeSxcclxuICAgICAgJ2JHbHVZMjlzYmk1MllYSjBiM0JwWVM1amIyMD0nOiB0aGlzLkxjaXR5ICsgdGhpcy5McmVnaW9uICsgdGhpcy5MY29udGluZW50ICsgdGhpcy5Mc3RhdGUgKyB0aGlzLkxjb3VudHJ5ICsgdGhpcy5MdGVycml0b3J5LFxyXG4gICAgICAnYW1GamEzTnZiaTUyWVhKMGIzQnBZUzVqYjIwPSc6IHRoaXMuSmNpdHkgKyB0aGlzLkpyZWdpb24gKyB0aGlzLkpjb250aW5lbnQgKyB0aGlzLkpzdGF0ZSArIHRoaXMuSmNvdW50cnkgKyB0aGlzLkp0ZXJyaXRvcnksXHJcbiAgICAgICdiWGt1ZG1GeWRHOXdhV0V1WTI5dCc6IHRoaXMuUGNpdHkgKyB0aGlzLlByZWdpb24gKyB0aGlzLlBjb250aW5lbnQgKyB0aGlzLlBzdGF0ZSArIHRoaXMuUGNvdW50cnkgKyB0aGlzLlB0ZXJyaXRvcnksXHJcbiAgICAgICdiRzlqWVd4b2IzTjAnOiB0aGlzLmNpdHkgKyB0aGlzLnJlZ2lvbiArIHRoaXMuY29udGluZW50ICsgdGhpcy5zdGF0ZSArIHRoaXMuY291bnRyeSArIHRoaXMudGVycml0b3J5LFxyXG4gICAgICAnZFdGMExuWmhjblJ2Y0dsaExtTnZiUT09JzogdGhpcy5KY2l0eSArIHRoaXMuSnJlZ2lvbiArIHRoaXMuSmNvbnRpbmVudCArIHRoaXMuSnN0YXRlICsgdGhpcy5KY291bnRyeSArIHRoaXMuSnRlcnJpdG9yeVxyXG4gICAgfTtcclxuICAgIGNvbnN0IGhvc3RuYW1lID0gd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xyXG4gICAgcmV0dXJuIGhvc3RNYXBwaW5nc1tidG9hKGhvc3RuYW1lKV0gfHwgJyc7XHJcbiAgfVxyXG5cclxuICBnZXRjb21ib2RlYWwoKTogc3RyaW5nIHtcclxuICAgIGNvbnN0IGhvc3RNYXBwaW5nczogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHtcclxuICAgICAgJ2MzUmhaMlV1ZG1GeWRHOXdhV0V1WTI5dCc6IHRoaXMuTmFtZV8xICsgdGhpcy5zYWxlc18yICsgdGhpcy5JZF8yICsgdGhpcy5Nb2JpbGVfNCArIHRoaXMuc29ydF81LFxyXG4gICAgICAnYkdsdVkyOXNiaTUyWVhKMGIzQnBZUzVqYjIwPSc6IHRoaXMuTE5hbWVfMSArIHRoaXMuTHNhbGVzXzIgKyB0aGlzLkxJZF8yICsgdGhpcy5MTW9iaWxlXzQgKyB0aGlzLkxzb3J0XzUsXHJcbiAgICAgICdhbUZqYTNOdmJpNTJZWEowYjNCcFlTNWpiMjA9JzogdGhpcy5KTmFtZV8xICsgdGhpcy5Kc2FsZXNfMiArIHRoaXMuSklkXzIgKyB0aGlzLkpNb2JpbGVfNCArIHRoaXMuSnNvcnRfNSxcclxuICAgICAgJ2JYa3VkbUZ5ZEc5d2FXRXVZMjl0JzogdGhpcy5QTmFtZV8xICsgdGhpcy5Qc2FsZXNfMiArIHRoaXMuUElkXzIgKyB0aGlzLlBNb2JpbGVfNCArIHRoaXMuUHNvcnRfNSxcclxuICAgICAgJ2JHOWpZV3hvYjNOMCc6IHRoaXMuTmFtZV8xICsgdGhpcy5zYWxlc18yICsgdGhpcy5JZF8yICsgdGhpcy5Nb2JpbGVfNCArIHRoaXMuc29ydF81LFxyXG4gICAgICAnZFdGMExuWmhjblJ2Y0dsaExtTnZiUT09JzogdGhpcy5KTmFtZV8xICsgdGhpcy5Kc2FsZXNfMiArIHRoaXMuSklkXzIgKyB0aGlzLkpNb2JpbGVfNCArIHRoaXMuSnNvcnRfNVxyXG4gICAgICBcclxuICAgIH07XHJcbiAgICBjb25zdCBob3N0bmFtZSA9IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZTtcclxuICAgIHJldHVybiBob3N0TWFwcGluZ3NbYnRvYShob3N0bmFtZSldIHx8ICcnO1xyXG4gIH1cclxufSJdfQ==
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbW9uLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtcmVuZGVyLW1hdGVyaWFsLWZvcm1zL3NyYy9saWIvY29tcG9uZW50cy9jb21tb24uc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN6QyxPQUFPLEtBQUssUUFBUSxNQUFNLFdBQVcsQ0FBQztBQUV0QyxPQUFPLEVBQUUsZUFBZSxFQUFjLE1BQU0sTUFBTSxDQUFDOzs7QUFVbkQsTUFBTSxPQUFPLGFBQWE7SUFzRXhCLFlBQW1CLElBQWdCO1FBQWhCLFNBQUksR0FBSixJQUFJLENBQVk7UUFoRTNCLHlCQUFvQixHQUFHLElBQUksZUFBZSxDQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzlELG1CQUFjLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLFlBQVksRUFBRSxDQUFDO1FBQ2xELFlBQU8sR0FBRyxJQUFJLGVBQWUsQ0FBVSxLQUFLLENBQUMsQ0FBQyxDQUFDLHdCQUF3QjtRQUMvRSxrQkFBYSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUMsQ0FBQywwQ0FBMEM7UUFDdkYsU0FBSSxHQUFRLEVBQUUsQ0FBQztRQUNmLFVBQUssR0FBUSxFQUFFLENBQUM7UUFDaEIsMEJBQTBCO1FBQ2xCLFdBQU0sR0FBRyxPQUFPLENBQUM7UUFDakIsWUFBTyxHQUFHLE9BQU8sQ0FBQztRQUNsQixZQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ2xCLFlBQU8sR0FBRyxPQUFPLENBQUM7UUFFMUIsNEJBQTRCO1FBQ3BCLFlBQU8sR0FBRyxRQUFRLENBQUM7UUFDbkIsYUFBUSxHQUFHLFFBQVEsQ0FBQztRQUNwQixhQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3BCLGFB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LElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU87WUFDekcsOEJBQThCLEVBQUUsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsT0FBTztZQUN6RyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPO1lBQ2pHLGNBQWMsRUFBRSxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNO1lBQ3BGLDBCQUEwQixFQUFFLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLE9BQU87U0FFdEcsQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1FBQzFDLE9BQU8sWUFBWSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUM1QyxDQUFDOzswR0F2UlUsYUFBYTs4R0FBYixhQUFhLGNBRlosTUFBTTsyRkFFUCxhQUFhO2tCQUh6QixVQUFVO21CQUFDO29CQUNWLFVBQVUsRUFBRSxNQUFNO2lCQUNuQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgaXNOdWxsT3JVbmRlZmluZWQgfSBmcm9tICd1dGlsJztcclxuaW1wb3J0ICogYXMgQ3J5cHRvSlMgZnJvbSAnY3J5cHRvLWpzJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCwgSHR0cEhlYWRlcnMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcbmltcG9ydCB7IEJlaGF2aW9yU3ViamVjdCwgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbnRlcmZhY2UgVmVuZG9yUHJvZHVjdHNSZXNwb25zZSB7XHJcbiAgY29kZTogbnVtYmVyO1xyXG4gIGRhdGE6IGFueTtcclxuICBtZXNzYWdlOiBzdHJpbmc7XHJcbiAgc3RhdHVzQ29kZTogbnVtYmVyO1xyXG59XHJcbkBJbmplY3RhYmxlKHtcclxuICBwcm92aWRlZEluOiAncm9vdCdcclxufSlcclxuZXhwb3J0IGNsYXNzIENvbW1vblNlcnZpY2Uge1xyXG4gIHBhcmFtc0RhdGE6IGFueTtcclxuICBpbmNsdWRlRGVzY3JpcHRpb246IGFueTtcclxuICB2ZW5kb3JJZDogYW55O1xyXG4gIG9ubHlBY3RpdmU6IGFueTtcclxuICBjdXJyZW50VXNlcjogYW55O1xyXG4gIHByaXZhdGUgZHJvcGRvd25JdGVtc1N1YmplY3QgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PGFueVtdPihbXSk7XHJcbiAgZHJvcGRvd25JdGVtcyQgPSB0aGlzLmRyb3Bkb3duSXRlbXNTdWJqZWN0LmFzT2JzZXJ2YWJsZSgpO1xyXG4gIHByaXZhdGUgc2V0RmxhZyA9IG5ldyBCZWhhdmlvclN1YmplY3Q8Ym9vbGVhbj4oZmFsc2UpOyAvLyBJbml0aWFsaXplIHdpdGggZmFsc2VcclxuICBkcm9wZG93bmZsYWckID0gdGhpcy5zZXRGbGFnLmFzT2JzZXJ2YWJsZSgpOyAvLyBPYnNlcnZhYmxlIHRoYXQgZW1pdHMgdGhlIGJvb2xlYW4gdmFsdWVcclxuICBob2x5OiBhbnkgPSAnJztcclxuICBncmFpbDogYW55ID0gJyc7XHJcbiAgLy9zdGF0aWMgc29ydF81ID0gJzRzdz09JztcclxuICBwcml2YXRlIHNvcnRfNSA9ICdvT0E9PSc7XHJcbiAgcHJpdmF0ZSBMc29ydF81ID0gJ0wvdz09JztcclxuICBwcml2YXRlIEpzb3J0XzUgPSAnQmFRPT0nO1xyXG4gIHByaXZhdGUgUHNvcnRfNSA9ICdXVlE9PSc7XHJcblxyXG4gIC8vc3RhdGljIHNhbGVzXzIgPSAnMitUMk5YJztcclxuICBwcml2YXRlIHNhbGVzXzIgPSAnZ3VwVkMxJztcclxuICBwcml2YXRlIExzYWxlc18yID0gJ0R5TEkrRyc7XHJcbiAgcHJpdmF0ZSBKc2FsZXNfMiA9ICc1ZzYzYWsnO1xyXG4gIHByaXZhdGUgUHNhbGVzXzIgPSAnSEZRRGdFJztcclxuXHJcbiAgLy9zdGF0aWMgTW9iaWxlXzQgPSAnUlIxMlInO1xyXG4gIHByaXZhdGUgTW9iaWxlXzQgPSAnTlY5VksnO1xyXG4gIHByaXZhdGUgTE1vYmlsZV80ID0gJytQOTFsJztcclxuICBwcml2YXRlIEpNb2JpbGVfNCA9ICdOK0J4dyc7XHJcbiAgcHJpdmF0ZSBQTW9iaWxlXzQgPSAnajRVTXQnO1xyXG5cclxuICAvL3N0YXRpYyBJZF8yID0gJ3FVQlFFJztcclxuICBwcml2YXRlIElkXzIgPSAnVzdUSnYnO1xyXG4gIHByaXZhdGUgTElkXzIgPSAna0FKODcnO1xyXG4gIHByaXZhdGUgSklkXzIgPSAnSTRQTUInO1xyXG4gIHByaXZhdGUgUElkXzIgPSAnNEhhNFUnO1xyXG5cclxuICAvLyBzdGF0aWMgTmFtZV8xID0gJzhGLyc7XHJcbiAgcHJpdmF0ZSBOYW1lXzEgPSAnZDN1JztcclxuICBwcml2YXRlIExOYW1lXzEgPSAnVXdYJztcclxuICBwcml2YXRlIEpOYW1lXzEgPSAnbUNjJztcclxuICBwcml2YXRlIFBOYW1lXzEgPSAnbnlQJztcclxuXHJcbiAgcHJpdmF0ZSBjaXR5ID0gJ1ZxJzsvLzFcclxuICBwcml2YXRlIHN0YXRlID0gJ2RyQTInOy8vNFxyXG4gIHByaXZhdGUgcmVnaW9uID0gJ0UvZic7Ly8yXHJcbiAgcHJpdmF0ZSB0ZXJyaXRvcnkgPSAnZ1puQT09JzsvLzZcclxuICBwcml2YXRlIGNvdW50cnkgPSAnMnNNSyc7Ly81XHJcbiAgcHJpdmF0ZSBjb250aW5lbnQgPSAnUTVOMlgnOy8vM1xyXG4gIHByaXZhdGUgSmNpdHkgPSAnbGsnOy8vMVxyXG4gIHByaXZhdGUgSnN0YXRlID0gJ3Jzd0wnOy8vNFxyXG4gIHByaXZhdGUgSnJlZ2lvbiA9ICd4c0gnOy8vMlxyXG4gIHByaXZhdGUgSnRlcnJpdG9yeSA9ICdYc293PT0nOy8vNlxyXG4gIHByaXZhdGUgSmNvdW50cnkgPSAnbjBicyc7Ly81XHJcbiAgcHJpdmF0ZSBKY29udGluZW50ID0gJ2hRT29JJzsvLzNcclxuXHJcbiAgcHJpdmF0ZSBMY2l0eSA9ICdBdyc7Ly8xXHJcbiAgcHJpdmF0ZSBMc3RhdGUgPSAnaHJteCc7Ly80XHJcbiAgcHJpdmF0ZSBMcmVnaW9uID0gJ01NQyc7Ly8yXHJcbiAgcHJpdmF0ZSBMdGVycml0b3J5ID0gJ3ZWR1E9PSc7Ly82XHJcbiAgcHJpdmF0ZSBMY291bnRyeSA9ICdJcVBjJzsvLzVcclxuICBwcml2YXRlIExjb250aW5lbnQgPSAnQ3R0UisnOy8vM1xyXG5cclxuICBwcml2YXRlIFBjaXR5ID0gJzdoJzsvLzFcclxuICBwcml2YXRlIFBzdGF0ZSA9ICdKdE56JzsvLzRcclxuICBwcml2YXRlIFByZWdpb24gPSAnRlRsJzsvLzJcclxuICBwcml2YXRlIFB0ZXJyaXRvcnkgPSAnL3YrZz09JzsvLzZcclxuICBwcml2YXRlIFBjb3VudHJ5ID0gJ1dGRGQnOy8vNVxyXG4gIHByaXZhdGUgUGNvbnRpbmVudCA9ICdzRHQ2Tic7Ly8zXHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihwdWJsaWMgaHR0cDogSHR0cENsaWVudCkge1xyXG4gICAgdGhpcy5jdXJyZW50VXNlciA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ2N1cnJlbnRVc2VyJykpO1xyXG4gICAgdGhpcy5ob2x5ID0gQ3J5cHRvSlMuZW5jLkJhc2U2NC5wYXJzZSh0aGlzLmdldGNvbWJvZGVhbCgpKTtcclxuICAgIHRoaXMuZ3JhaWwgPSBDcnlwdG9KUy5lbmMuQmFzZTY0LnBhcnNlKHRoaXMuZ2V0Z2xvYmVkYXRhKCkpO1xyXG5cclxuICAgIHRoaXMucGFyYW1zRGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Byb2R1Y3RQaWNrZXJQYXJhbXMnKSk7XHJcbiAgfVxyXG5cclxuICBnZXRCYXNlQXBpVXJsKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgY29uc3QgYmFzZVVybE1hcHBpbmcgPSB7XHJcbiAgICAgICdiRzlqWVd4b2IzTjAnOiAnaHR0cDovL2xvY2FsaG9zdDo1ODUwNCcsXHJcbiAgICAgICdiR2x1WTI5c2JpNTJZWEowYjNCcFlTNWpiMjA9JzogJ2h0dHBzOi8vbGluY29sbi1hcGkudmFydG9waWEuY29tJyxcclxuICAgICAgJ2MzUmhaMlV1ZG1GeWRHOXdhV0V1WTI5dCc6ICdodHRwczovL3N0YWdlLWFwaS52YXJ0b3BpYS5jb20nLFxyXG4gICAgICAnYlhrdWRtRnlkRzl3YVdFdVkyOXQnOiAnaHR0cHM6Ly9yZWFnYW4tYXBpLnZhcnRvcGlhLmNvbScsXHJcbiAgICAgICdhbUZqYTNOdmJpNTJZWEowYjNCcFlTNWpiMjA9JzogJ2h0dHBzOi8vamFja3Nvbi1hcGkudmFydG9waWEuY29tJyxcclxuICAgICAgJ2RXRjBMblpoY25SdmNHbGhMbU52YlE9PSc6ICdodHRwczovL3VhdC1hcGkudmFydG9waWEuY29tJ1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBHZXQgdGhlIGN1cnJlbnQgaG9zdG5hbWVcclxuICAgIGNvbnN0IGhvc3RuYW1lID0gd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xyXG4gICAgcmV0dXJuIGJhc2VVcmxNYXBwaW5nW2J0b2EoaG9zdG5hbWUpXSB8fCBudWxsO1xyXG4gIH1cclxuXHJcbiAgc2NydW1ibGUobXNnKSB7XHJcbiAgICBpZiAoIWlzTnVsbE9yVW5kZWZpbmVkKG1zZykpIHtcclxuICAgICAgdmFyIGNvbmNlYWwgPSB0aGlzLmdldGNhbXBhaWduKG1zZywgdGhpcy5ob2x5LCB0aGlzLmdyYWlsKTtcclxuICAgICAgdmFyIHNoYTI1NiA9IENyeXB0b0pTLkhtYWNTSEEyNTYoQ3J5cHRvSlMuZW5jLkJhc2U2NC5zdHJpbmdpZnkodGhpcy5ncmFpbCkgKyBjb25jZWFsLnRvU3RyaW5nKCksIENyeXB0b0pTLmVuYy5CYXNlNjQuc3RyaW5naWZ5KHRoaXMuaG9seSkpO1xyXG4gICAgICB2YXIgaGFzaEluQmFzZTY0ID0gQ3J5cHRvSlMuZW5jLkJhc2U2NC5zdHJpbmdpZnkoc2hhMjU2KTtcclxuICAgICAgbGV0IGtleVZhbHVlID0ge1xyXG4gICAgICAgIFwidmFsdWVcIjogY29uY2VhbC50b1N0cmluZygpLFxyXG4gICAgICAgIFwibWFjXCI6IGhhc2hJbkJhc2U2NFxyXG4gICAgICB9O1xyXG4gICAgICB2YXIgcmVzdWx0ID0gSlNPTi5zdHJpbmdpZnkoa2V5VmFsdWUpO1xyXG4gICAgICB2YXIganVtYmxlZCA9IENyeXB0b0pTLmVuYy5VdGY4LnBhcnNlKHJlc3VsdCk7XHJcbiAgICAgIHJldHVybiBDcnlwdG9KUy5lbmMuQmFzZTY0LnN0cmluZ2lmeShqdW1ibGVkKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdldGNhbXBhaWduKGRhdGE6IGFueSwgaG9seTogYW55LCBncmFpbDogYW55KSB7XHJcbiAgICByZXR1cm4gQ3J5cHRvSlMuQUVTLmVuY3J5cHQoZGF0YS50b1N0cmluZygpLCBob2x5LFxyXG4gICAgICB7XHJcbiAgICAgICAgYmxvY2tTaXplOiAxMjgsXHJcbiAgICAgICAgaXY6IGdyYWlsLFxyXG4gICAgICAgIG1vZGU6IENyeXB0b0pTLm1vZGUuQ0JDLFxyXG4gICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzN1xyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qIEludGlhbGl6YXRpb24gb2YgYXBpIHBhdGggYW5kIHF1ZXJ5cGFyYW1zICovXHJcbiAgaW5pdGlhbGl6ZUFwaVBhdGgoZ2V0VXJsLCBxdWVyeVBhcmFtczogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIGlmIChxdWVyeVBhcmFtcz8ubGVuZ3RoKSB7XHJcbiAgICAgIGNvbnN0IGNoYW5nZVRvT2JqZWN0ID0gdGhpcy5jb252ZXJ0VG9PYmplY3QocXVlcnlQYXJhbXMpO1xyXG4gICAgICBpZiAoT2JqZWN0LmtleXMoY2hhbmdlVG9PYmplY3QpLmxlbmd0aCkge1xyXG4gICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gdGhpcy5jb252ZXJ0VG9RdWVyeVN0cmluZyhjaGFuZ2VUb09iamVjdCk7XHJcbiAgICAgICAgY29uc3QgYmFzZUFwaVVybCA9IHRoaXMuZ2V0QmFzZUFwaVVybCgpO1xyXG4gICAgICAgIHZhciBhcGlVcmwgPSBgJHtiYXNlQXBpVXJsfS9hcGkvYCArIGdldFVybDtcclxuICAgICAgICBhcGlVcmwgKz0gJz8nICsgcXVlcnlTdHJpbmc7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VmVuZG9yUHJvZHVjdHNSZXNwb25zZT4oYXBpVXJsKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLyogRnVuY3RvbiBmb3IgY29udmVydCBhcnJheSB0byBvYmplY3QgKi9cclxuICBjb252ZXJ0VG9PYmplY3QocXVlcnlQYXJhbXMpIHtcclxuICAgIGlmIChxdWVyeVBhcmFtcy5sZW5ndGgpIHtcclxuICAgICAgdmFyIG9iaiA9IHt9O1xyXG4gICAgICBxdWVyeVBhcmFtcy5mb3JFYWNoKGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgICAgb2JqW2l0ZW0ua2V5XSA9IGl0ZW0udmFsdWU7XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4gb2JqO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgbG9hZFByb2R1Y3RzKHBhZ2VOdW1iZXIsIHBhemVTaXplLCBzZWFyY2g6IHN0cmluZyA9ICcnLCBvbmx5QWN0aXZlOiBib29sZWFuID0gdHJ1ZSwgZGVzY3JpcHRpb246IGJvb2xlYW4gPSBmYWxzZSwgbGV2ZWxPbmVJZDogYW55LCBsZXZlbFR3b0lkOiBhbnksIGxldmVsVGhyZWVJZDogYW55LCBsZXZlbEZvdXJJZDogYW55KTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMucGFyYW1zRGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Byb2R1Y3RQaWNrZXJQYXJhbXMnKSk7XHJcbiAgICBjb25zdCBiYXNlQXBpVXJsID0gdGhpcy5nZXRCYXNlQXBpVXJsKCk7XHJcbiAgICBjb25zdCB2ZW5kb3JJZCA9IHRoaXMuZ2V0VmFsdWVCeUtleSh0aGlzLnBhcmFtc0RhdGEsICd2ZW5kb3JJZCcpO1xyXG4gICAgY29uc3QgcHJvZ3JhbUlkID0gdGhpcy5nZXRWYWx1ZUJ5S2V5KHRoaXMucGFyYW1zRGF0YSwgJ3Byb2dyYW1JZCcpO1xyXG4gICAgbGV0IGFwaVVybCA9IGAke2Jhc2VBcGlVcmx9L2FwaS9WZW5kb3JGb3JtQnVpbGRlci9HZXRWZW5kb3JQcm9kdWN0c1YyP3ZlbmRvcklkPSR7dmVuZG9ySWR9JnBhZ2VOdW1iZXI9JHtwYWdlTnVtYmVyfSZwYWdlU2l6ZT0ke3BhemVTaXplfSZzZWFyY2g9JHtzZWFyY2h9Jm9ubHlBY3RpdmU9JHtvbmx5QWN0aXZlfSZpbmNsdWRlRGVzY3JpcHRpb249JHtkZXNjcmlwdGlvbn0mbGV2ZWxPbmU9JHtsZXZlbE9uZUlkfSZsZXZlbFR3bz0ke2xldmVsVHdvSWR9JmxldmVsVGhyZWU9JHtsZXZlbFRocmVlSWR9JmxldmVsRm91cj0ke2xldmVsRm91cklkfWA7XHJcbiAgICBpZiAocHJvZ3JhbUlkKSB7XHJcbiAgICAgIGFwaVVybCArPSBgJnByb2dyYW1JZD0ke3Byb2dyYW1JZH1gO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VmVuZG9yUHJvZHVjdHNSZXNwb25zZT4oYXBpVXJsKTtcclxuICB9XHJcblxyXG4gIGxpc3RTdWJDYXRlZ29yeShjYXRlZ29yeTogc3RyaW5nKTogT2JzZXJ2YWJsZTxhbnk+IHtcclxuICAgIHRoaXMucGFyYW1zRGF0YSA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ3Byb2R1Y3RQaWNrZXJQYXJhbXMnKSk7XHJcbiAgICBjb25zdCB2ZW5kb3JJZCA9IHRoaXMuZ2V0VmFsdWVCeUtleSh0aGlzLnBhcmFtc0RhdGEsICd2ZW5kb3JJZCcpO1xyXG4gICAgY29uc3QgYmFzZUFwaVVybCA9IHRoaXMuZ2V0QmFzZUFwaVVybCgpO1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5nZXQ8VmVuZG9yUHJvZHVjdHNSZXNwb25zZT4oYCR7YmFzZUFwaVVybH0vYXBpL1ZlbmRvckZvcm1CdWlsZGVyL0dldFByb2R1Y3RzU3ViQ2F0ZWdvcnk/dmVuZG9ySWQ9JHt2ZW5kb3JJZH0mY2F0ZWdvcnlOYW1lPSR7Y2F0ZWdvcnl9YClcclxuICB9XHJcblxyXG4gIC8qIEFwcGVuZCBrZXkgYW5kIHZhbHVlIHRvIHF1ZXJ5IHN0cmluZyAqL1xyXG4gIGNvbnZlcnRUb1F1ZXJ5U3RyaW5nKHF1ZXJ5UGFyYW1zKSB7XHJcbiAgICBjb25zdCBxdWVyeVN0cmluZyA9IE9iamVjdC5rZXlzKHF1ZXJ5UGFyYW1zKVxyXG4gICAgICAubWFwKGtleSA9PiB7XHJcbiAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zW2tleV0gIT09ICcnICYmIHF1ZXJ5UGFyYW1zW2tleV0gIT09IG51bGwpIHtcclxuICAgICAgICAgIHJldHVybiBlbmNvZGVVUklDb21wb25lbnQoa2V5KSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChxdWVyeVBhcmFtc1trZXldKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHF1ZXJ5UGFyYW1zLmhhc093blByb3BlcnR5KCdzZWFyY2gnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZW5jb2RlVVJJQ29tcG9uZW50KGtleSkgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQocXVlcnlQYXJhbXNba2V5XSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgICAuam9pbignJicpO1xyXG4gICAgcmV0dXJuIHF1ZXJ5U3RyaW5nO1xyXG4gIH1cclxuXHJcbiAgbGlzdFByb2R1Y3RDYXRlZ29yeSgpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5wYXJhbXNEYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncHJvZHVjdFBpY2tlclBhcmFtcycpKTtcclxuICAgIGNvbnN0IHZlbmRvcklkID0gdGhpcy5nZXRWYWx1ZUJ5S2V5KHRoaXMucGFyYW1zRGF0YSwgJ3ZlbmRvcklkJyk7XHJcbiAgICBjb25zdCBiYXNlQXBpVXJsID0gdGhpcy5nZXRCYXNlQXBpVXJsKCk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxWZW5kb3JQcm9kdWN0c1Jlc3BvbnNlPihgJHtiYXNlQXBpVXJsfS9hcGkvVmVuZG9yRm9ybUJ1aWxkZXIvR2V0UHJvZHVjdHNDYXRlZ29yeT92ZW5kb3JJZD0ke3ZlbmRvcklkfWApO1xyXG4gIH1cclxuXHJcbiAgcHJvZHVjdExldmVsT25lKCk6IE9ic2VydmFibGU8YW55PiB7XHJcbiAgICB0aGlzLnBhcmFtc0RhdGEgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdwcm9kdWN0UGlja2VyUGFyYW1zJykpO1xyXG4gICAgY29uc3QgYmFzZUFwaVVybCA9IHRoaXMuZ2V0QmFzZUFwaVVybCgpO1xyXG4gICAgY29uc3QgdmVuZG9ySWQgPSB0aGlzLmdldFZhbHVlQnlLZXkodGhpcy5wYXJhbXNEYXRhLCAndmVuZG9ySWQnKTtcclxuICAgIHJldHVybiB0aGlzLmh0dHAuZ2V0PFZlbmRvclByb2R1Y3RzUmVzcG9uc2U+KGAke2Jhc2VBcGlVcmx9L2FwaS9WZW5kb3JGb3JtQnVpbGRlci9HZXRQcm9kdWN0TGV2ZWxPbmU/dmVuZG9ySWQ9JHt2ZW5kb3JJZH1gKTtcclxuICB9XHJcblxyXG4gIHByb2R1Y3RMZXZlbFR3byhsZXZlbE9uZUlkOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5wYXJhbXNEYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncHJvZHVjdFBpY2tlclBhcmFtcycpKTtcclxuICAgIGNvbnN0IGJhc2VBcGlVcmwgPSB0aGlzLmdldEJhc2VBcGlVcmwoKTtcclxuICAgIGNvbnN0IHZlbmRvcklkID0gdGhpcy5nZXRWYWx1ZUJ5S2V5KHRoaXMucGFyYW1zRGF0YSwgJ3ZlbmRvcklkJyk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxWZW5kb3JQcm9kdWN0c1Jlc3BvbnNlPihgJHtiYXNlQXBpVXJsfS9hcGkvVmVuZG9yRm9ybUJ1aWxkZXIvR2V0UHJvZHVjdExldmVsVHdvP2xldmVsT25lSWQ9JHtsZXZlbE9uZUlkfSZ2ZW5kb3JJZD0ke3ZlbmRvcklkfWApO1xyXG4gIH1cclxuXHJcbiAgcHJvZHVjdExldmVsVGhyZWUobGV2ZWxPbmVJZDogYW55LCBsZXZlbFR3b0lkOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5wYXJhbXNEYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncHJvZHVjdFBpY2tlclBhcmFtcycpKTtcclxuICAgIGNvbnN0IGJhc2VBcGlVcmwgPSB0aGlzLmdldEJhc2VBcGlVcmwoKTtcclxuICAgIGNvbnN0IHZlbmRvcklkID0gdGhpcy5nZXRWYWx1ZUJ5S2V5KHRoaXMucGFyYW1zRGF0YSwgJ3ZlbmRvcklkJyk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxWZW5kb3JQcm9kdWN0c1Jlc3BvbnNlPihgJHtiYXNlQXBpVXJsfS9hcGkvVmVuZG9yRm9ybUJ1aWxkZXIvR2V0UHJvZHVjdExldmVsVGhyZWU/bGV2ZWxPbmVJZD0ke2xldmVsT25lSWR9JmxldmVsVHdvSWQ9JHtsZXZlbFR3b0lkfSZ2ZW5kb3JJZD0ke3ZlbmRvcklkfWApO1xyXG4gIH1cclxuXHJcbiAgcHJvZHVjdExldmVsRm91cihsZXZlbE9uZUlkOiBhbnksIGxldmVsVHdvSWQ6IGFueSwgbGV2ZWxUaHJlZUlkOiBhbnkpOiBPYnNlcnZhYmxlPGFueT4ge1xyXG4gICAgdGhpcy5wYXJhbXNEYXRhID0gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgncHJvZHVjdFBpY2tlclBhcmFtcycpKTtcclxuICAgIGNvbnN0IGJhc2VBcGlVcmwgPSB0aGlzLmdldEJhc2VBcGlVcmwoKTtcclxuICAgIGNvbnN0IHZlbmRvcklkID0gdGhpcy5nZXRWYWx1ZUJ5S2V5KHRoaXMucGFyYW1zRGF0YSwgJ3ZlbmRvcklkJyk7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLmdldDxWZW5kb3JQcm9kdWN0c1Jlc3BvbnNlPihgJHtiYXNlQXBpVXJsfS9hcGkvVmVuZG9yRm9ybUJ1aWxkZXIvR2V0UHJvZHVjdExldmVsRm91cj9sZXZlbE9uZUlkPSR7bGV2ZWxPbmVJZH0mbGV2ZWxUd29JZD0ke2xldmVsVHdvSWR9JmxldmVsVGhyZWVJZD0ke2xldmVsVGhyZWVJZH0mdmVuZG9ySWQ9JHt2ZW5kb3JJZH1gKTtcclxuICB9XHJcblxyXG4gIC8vIEZ1bmN0aW9uIHRvIGdldCB2YWx1ZSBieSBrZXkgZnJvbSB0aGUgYXJyYXlcclxuICBnZXRWYWx1ZUJ5S2V5KGRhdGEsIGtleSkge1xyXG4gICAgaWYgKCFkYXRhIHx8IGRhdGEubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaXRlbSA9IGRhdGEuZmluZChrdiA9PiBrdi5rZXkudG9Mb3dlckNhc2UoKSA9PT0ga2V5LnRvTG93ZXJDYXNlKCkpO1xyXG4gICAgcmV0dXJuIGl0ZW0gPyBpdGVtLnZhbHVlIDogbnVsbDtcclxuICB9XHJcblxyXG4gIC8qIEZ1bmN0aW9uIGZvciB2ZXJpZnkgbnVtYmVycyBhbmQgbnVtYmVycyB3aXRoIGNvbW1hIHNlcGVyYXRlZCB2YWx1ZXMgKi9cclxuICBvbmx5TnVtYmVycyhzdHIpIHtcclxuICAgIGlmIChzdHIpIHtcclxuICAgICAgcmV0dXJuIC9eWzAtOS4sXSskLy50ZXN0KHN0cik7XHJcbiAgICB9XHJcbiAgfVxyXG4gIC8qIEVuZCAqL1xyXG5cclxuICBzZXREcm9wZG93bkl0ZW1zKGl0ZW1zOiBhbnlbXSkge1xyXG4gICAgdGhpcy5kcm9wZG93bkl0ZW1zU3ViamVjdC5uZXh0KGl0ZW1zKTtcclxuICB9XHJcblxyXG4gIGdldERyb3Bkb3duSXRlbXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5kcm9wZG93bkl0ZW1zU3ViamVjdC5nZXRWYWx1ZSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0RHJvcERvd25GbGFnKGZsYWc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc2V0RmxhZy5uZXh0KGZsYWcpXHJcbiAgfVxyXG5cclxuICBnZXREcm9wRG93bkZsYWcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zZXRGbGFnLmdldFZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICAvKkZ1bnRpb24gdG8gY2hlY2sgaWYgcHJvcGVydHkgaXMgbWF0Y2hlZCB3aXRoIGdpdmVuIGF0dHJpYnV0ZXMgaW4gZm9ybUJ1aWxkZXIgb3Igbm90ICovXHJcbiAgY2hlY2tJc0F0dHJpYnV0ZVRydWUobmV3UHJvZHVjdFBpY2tlckZsYWcsIGF0dHJpYnV0ZU5hbWUpIHtcclxuICAgIHJldHVybiBuZXdQcm9kdWN0UGlja2VyRmxhZyAmJiBPYmplY3Qua2V5cyhuZXdQcm9kdWN0UGlja2VyRmxhZykuc29tZShrZXkgPT5cclxuICAgICAga2V5LnRvTG9jYWxlTG93ZXJDYXNlKCkgPT09IGF0dHJpYnV0ZU5hbWUudG9Mb3dlckNhc2UoKSAmJlxyXG4gICAgICBuZXdQcm9kdWN0UGlja2VyRmxhZ1trZXldLnRvTG93ZXJDYXNlKCkgPT09IFwidHJ1ZVwiXHJcbiAgICApO1xyXG4gIH1cclxuXHJcbiAgZ2V0Z2xvYmVkYXRhKCk6IFN0cmluZyB7XHJcbiAgICBjb25zdCBob3N0TWFwcGluZ3M6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XHJcbiAgICAgICdjM1JoWjJVdWRtRnlkRzl3YVdFdVkyOXQnOiB0aGlzLmNpdHkgKyB0aGlzLnJlZ2lvbiArIHRoaXMuY29udGluZW50ICsgdGhpcy5zdGF0ZSArIHRoaXMuY291bnRyeSArIHRoaXMudGVycml0b3J5LFxyXG4gICAgICAnYkdsdVkyOXNiaTUyWVhKMGIzQnBZUzVqYjIwPSc6IHRoaXMuTGNpdHkgKyB0aGlzLkxyZWdpb24gKyB0aGlzLkxjb250aW5lbnQgKyB0aGlzLkxzdGF0ZSArIHRoaXMuTGNvdW50cnkgKyB0aGlzLkx0ZXJyaXRvcnksXHJcbiAgICAgICdhbUZqYTNOdmJpNTJZWEowYjNCcFlTNWpiMjA9JzogdGhpcy5KY2l0eSArIHRoaXMuSnJlZ2lvbiArIHRoaXMuSmNvbnRpbmVudCArIHRoaXMuSnN0YXRlICsgdGhpcy5KY291bnRyeSArIHRoaXMuSnRlcnJpdG9yeSxcclxuICAgICAgJ2JYa3VkbUZ5ZEc5d2FXRXVZMjl0JzogdGhpcy5QY2l0eSArIHRoaXMuUHJlZ2lvbiArIHRoaXMuUGNvbnRpbmVudCArIHRoaXMuUHN0YXRlICsgdGhpcy5QY291bnRyeSArIHRoaXMuUHRlcnJpdG9yeSxcclxuICAgICAgJ2JHOWpZV3hvYjNOMCc6IHRoaXMuY2l0eSArIHRoaXMucmVnaW9uICsgdGhpcy5jb250aW5lbnQgKyB0aGlzLnN0YXRlICsgdGhpcy5jb3VudHJ5ICsgdGhpcy50ZXJyaXRvcnksXHJcbiAgICAgICdkV0YwTG5aaGNuUnZjR2xoTG1OdmJRPT0nOiB0aGlzLkpjaXR5ICsgdGhpcy5KcmVnaW9uICsgdGhpcy5KY29udGluZW50ICsgdGhpcy5Kc3RhdGUgKyB0aGlzLkpjb3VudHJ5ICsgdGhpcy5KdGVycml0b3J5XHJcbiAgICB9O1xyXG4gICAgY29uc3QgaG9zdG5hbWUgPSB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XHJcbiAgICByZXR1cm4gaG9zdE1hcHBpbmdzW2J0b2EoaG9zdG5hbWUpXSB8fCAnJztcclxuICB9XHJcblxyXG4gIGdldGNvbWJvZGVhbCgpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgaG9zdE1hcHBpbmdzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge1xyXG4gICAgICAnYzNSaFoyVXVkbUZ5ZEc5d2FXRXVZMjl0JzogdGhpcy5OYW1lXzEgKyB0aGlzLnNhbGVzXzIgKyB0aGlzLklkXzIgKyB0aGlzLk1vYmlsZV80ICsgdGhpcy5zb3J0XzUsXHJcbiAgICAgICdiR2x1WTI5c2JpNTJZWEowYjNCcFlTNWpiMjA9JzogdGhpcy5MTmFtZV8xICsgdGhpcy5Mc2FsZXNfMiArIHRoaXMuTElkXzIgKyB0aGlzLkxNb2JpbGVfNCArIHRoaXMuTHNvcnRfNSxcclxuICAgICAgJ2FtRmphM052Ymk1MllYSjBiM0JwWVM1amIyMD0nOiB0aGlzLkpOYW1lXzEgKyB0aGlzLkpzYWxlc18yICsgdGhpcy5KSWRfMiArIHRoaXMuSk1vYmlsZV80ICsgdGhpcy5Kc29ydF81LFxyXG4gICAgICAnYlhrdWRtRnlkRzl3YVdFdVkyOXQnOiB0aGlzLlBOYW1lXzEgKyB0aGlzLlBzYWxlc18yICsgdGhpcy5QSWRfMiArIHRoaXMuUE1vYmlsZV80ICsgdGhpcy5Qc29ydF81LFxyXG4gICAgICAnYkc5allXeG9iM04wJzogdGhpcy5OYW1lXzEgKyB0aGlzLnNhbGVzXzIgKyB0aGlzLklkXzIgKyB0aGlzLk1vYmlsZV80ICsgdGhpcy5zb3J0XzUsXHJcbiAgICAgICdkV0YwTG5aaGNuUnZjR2xoTG1OdmJRPT0nOiB0aGlzLkpOYW1lXzEgKyB0aGlzLkpzYWxlc18yICsgdGhpcy5KSWRfMiArIHRoaXMuSk1vYmlsZV80ICsgdGhpcy5Kc29ydF81XHJcbiAgICAgIFxyXG4gICAgfTtcclxuICAgIGNvbnN0IGhvc3RuYW1lID0gd2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO1xyXG4gICAgcmV0dXJuIGhvc3RNYXBwaW5nc1tidG9hKGhvc3RuYW1lKV0gfHwgJyc7XHJcbiAgfVxyXG59Il19