tango-app-ui-manage-billing 3.3.26 → 3.3.28

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.
@@ -24,6 +24,11 @@ export class BillingGroupFormComponent {
24
24
  // Group currently being edited — captured before this.groupId is cleared, so
25
25
  // selected-first ordering can read its selected stores.
26
26
  editingGroupId = '';
27
+ // FormArray index of the group whose Store Selection tab is currently open.
28
+ // The shared store list (subscribedStoreList) is loaded + selected-first
29
+ // ordered for THIS group, so expanding a different group's Store Selection
30
+ // reloads the list scoped to that group (not always the default group).
31
+ activeGroupIndex = 0;
27
32
  filterCountries = [];
28
33
  filterStates = [];
29
34
  filterCities = [];
@@ -132,6 +137,12 @@ export class BillingGroupFormComponent {
132
137
  // Remember which group is being edited so selected-first ordering can
133
138
  // read its stores even after this.groupId is cleared below.
134
139
  this.editingGroupId = this.groupId || this.billingGroups.controls[0]?.get('_id')?.value || '';
140
+ // Point the active group at the one the modal opened for, so the
141
+ // initial store load is scoped to it (not always index 0 / default).
142
+ const openedIdx = this.groupId
143
+ ? this.billingGroups.controls.findIndex((c) => c.get('_id')?.value === this.groupId)
144
+ : 0;
145
+ this.activeGroupIndex = openedIdx >= 0 ? openedIdx : 0;
135
146
  setTimeout(() => {
136
147
  if (this.groupId) {
137
148
  this.billingGroups.controls.forEach((control, idx) => {
@@ -264,6 +275,14 @@ export class BillingGroupFormComponent {
264
275
  }
265
276
  onTabChange(idx, val) {
266
277
  this.billingGroups.at(idx).get('currentTab')?.setValue(val);
278
+ // Opening a group's Store Selection makes it the active group and reloads
279
+ // the shared store list scoped to THAT group (selected-first ordering +
280
+ // isSelected reflect the group being edited, not the default group).
281
+ if (val === 'store-selection') {
282
+ this.activeGroupIndex = idx;
283
+ this.currentPage = 1;
284
+ this.getSubscribedStores({});
285
+ }
267
286
  }
268
287
  onDeleteGroup(idx) {
269
288
  if (this.billingGroups.at(idx).get('_id')?.value) {
@@ -304,7 +323,10 @@ export class BillingGroupFormComponent {
304
323
  getFilters: getFilters,
305
324
  // Backend resolves this group's selected stores, tags each row with
306
325
  // isSelected and floats selected stores to the top across all pages.
307
- groupId: this.editingGroupId || this.groupId || this.billingGroups?.controls?.[0]?.get('_id')?.value || '',
326
+ // Scope to the group whose Store Selection tab is open (activeGroupIndex)
327
+ // so expanding a non-default group shows THAT group's context.
328
+ groupId: this.billingGroups?.controls?.[this.activeGroupIndex]?.get('_id')?.value
329
+ || this.editingGroupId || this.groupId || this.billingGroups?.controls?.[0]?.get('_id')?.value || '',
308
330
  // Also send the live selection (covers a brand-new unsaved group whose
309
331
  // stores aren't yet persisted to the billing doc).
310
332
  selectedStoreIds: this.selectedStoreIdsForSort()
@@ -384,15 +406,12 @@ export class BillingGroupFormComponent {
384
406
  }
385
407
  // Selected storeIds sent to the backend so it can sort selected stores first.
386
408
  // Read straight from the live form (the same source as the checkboxes), so it
387
- // always matches the UI. The shared store list is rendered per group, so we
388
- // union every group's selection — for a single-group edit this is exactly
389
- // that group's stores; for multi-group it floats anything selected anywhere.
409
+ // always matches the UI. Scope to the active group (the one whose Store
410
+ // Selection tab is open) so selected-first ordering reflects THAT group's
411
+ // selection, not a union across all groups.
390
412
  selectedStoreIdsForSort() {
391
- const ids = new Set();
392
- (this.billingGroups?.controls || []).forEach(g => {
393
- (g.get('stores')?.value || []).forEach((s) => ids.add(s));
394
- });
395
- return [...ids];
413
+ const active = this.billingGroups?.controls?.[this.activeGroupIndex];
414
+ return [...(active?.get('stores')?.value || [])];
396
415
  }
397
416
  isAllStoresSelectedInGroup(formArrayIndex) {
398
417
  return this.subscribedStoreList.every(item => this.billingGroups.at(formArrayIndex).get('stores')?.value.includes(item.storeId)) && this.subscribedStoreList.length;
@@ -713,4 +732,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImpo
713
732
  type: ViewChild,
714
733
  args: [NgbAccordionDirective]
715
734
  }] } });
716
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlsbGluZy1ncm91cC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9iaWxsaW5nLWdyb3Vwcy9iaWxsaW5nLWdyb3VwLWZvcm0vYmlsbGluZy1ncm91cC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9iaWxsaW5nLWdyb3Vwcy9iaWxsaW5nLWdyb3VwLWZvcm0vYmlsbGluZy1ncm91cC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBMEIsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0YsT0FBTyxFQUFFLHFCQUFxQixFQUFrQixNQUFNLDRCQUE0QixDQUFDOzs7Ozs7OztBQVNuRixNQUFNLE9BQU8seUJBQXlCO0lBcUYxQjtJQUNBO0lBQ0Q7SUFDQztJQXRGRCxRQUFRLENBQVM7SUFDakIsT0FBTyxDQUFTO0lBQ2hCLFVBQVUsQ0FBUztJQUM1QixXQUFXLENBQVk7SUFDdkIsU0FBUyxDQUFVO0lBQ25CLFVBQVUsR0FBMEIsRUFBRSxDQUFDO0lBQ3ZDLG1CQUFtQixHQUFVLEVBQUUsQ0FBQztJQUNoQyw2RUFBNkU7SUFDN0Usd0RBQXdEO0lBQ3hELGNBQWMsR0FBVyxFQUFFLENBQUM7SUFDNUIsZUFBZSxHQUFVLEVBQUUsQ0FBQztJQUM1QixZ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RTtnQkFDbEIsbUVBQW1FO2dCQUNuRSwrREFBK0Q7Z0JBQy9ELFlBQVk7Z0JBQ1osSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsR0FBRyxHQUFHLEVBQUUsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUM7WUFDbkYsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7d0dBanRCVSx5QkFBeUI7NEZBQXpCLHlCQUF5Qix5TEE0RXpCLHFCQUFxQixnREN4RmxDLG90MURBK3lCTTs7NEZEbnlCTyx5QkFBeUI7a0JBTHJDLFNBQVM7K0JBQ0Usd0JBQXdCO3FLQU16QixRQUFRO3NCQUFoQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQXdFNEIsU0FBUztzQkFBMUMsU0FBUzt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCB0YWtlVW50aWwsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5nYkFjY29yZGlvbkRpcmVjdGl2ZSwgTmdiQWN0aXZlTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcbmltcG9ydCB7IEJpbGxpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYmlsbGluZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWJpbGxpbmctZ3JvdXAtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9iaWxsaW5nLWdyb3VwLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYmlsbGluZy1ncm91cC1mb3JtLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQmlsbGluZ0dyb3VwRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25Jbml0IHtcblxuICBASW5wdXQoKSBjbGllbnRJZDogc3RyaW5nO1xuICBASW5wdXQoKSBncm91cElkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGN1cnJlbnRUYWI6IHN0cmluZztcbiAgYmlsbGluZ0Zvcm06IEZvcm1Hcm91cDtcbiAgc3VibWl0dGVkOiBib29sZWFuO1xuICBmaWx0ZXJEYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+W10gPSBbXTtcbiAgc3Vic2NyaWJlZFN0b3JlTGlzdDogYW55W10gPSBbXTtcbiAgLy8gR3JvdXAgY3VycmVudGx5IGJlaW5nIGVkaXRlZCDigJQgY2FwdHVyZWQgYmVmb3JlIHRoaXMuZ3JvdXBJZCBpcyBjbGVhcmVkLCBzb1xuICAvLyBzZWxlY3RlZC1maXJzdCBvcmRlcmluZyBjYW4gcmVhZCBpdHMgc2VsZWN0ZWQgc3RvcmVzLlxuICBlZGl0aW5nR3JvdXBJZDogc3RyaW5nID0gJyc7XG4gIGZpbHRlckNvdW50cmllczogYW55W10gPSBbXTtcbiAgZmlsdGVyU3RhdGVzOiBhbnlbXSA9IFtdO1xuICBmaWx0ZXJDaXRpZXM6IGFueVtdID0gW107XG4gIHNlYXJjaElucHV0ID0gbmV3IEZvcm1Db250cm9sKCcnKTtcbiAgc2VhcmNoVGVybTogc3RyaW5nO1xuICBzb3J0ZWRDb2x1bW46IHN0cmluZztcbiAgc29ydERpcmVjdGlvbjogbnVtYmVyO1xuICBzdWJzY3JpYmVkU3RvcmVzQXBpU3RhdGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PCdpbml0aWFsJyB8ICdsb2FkaW5nJyB8ICdsb2FkZWQnPignaW5pdGlhbCcpO1xuICBzdWJzY3JpYmVkUHJvZHVjdHM6IGFueVtdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIC8vIEdTVElOIGxvb2t1cCBzdGF0ZSBwZXIgYmlsbGluZy1ncm91cCByb3csIGtleWVkIGJ5IEZvcm1BcnJheSBpbmRleC5cbiAgLy8gJ2lkbGUnID0gbm8gbG9va3VwIHlldCAob3IgR1NUSU4gdG9vIHNob3J0IHRvIHRyaWdnZXIgb25lKS5cbiAgLy8gJ2xvYWRpbmcnID0gcmVxdWVzdCBpbiBmbGlnaHQuXG4gIC8vICdmb3VuZCcgPSBiYWNrZW5kIHJldHVybmVkIGFuIGFkZHJlc3MsIGZpZWxkcyBhdXRvLWZpbGxlZC5cbiAgLy8gJ25vdGZvdW5kJyA9IGJhY2tlbmQgcmV0dXJuZWQgNDA0IC8gdW5rbm93biBHU1RJTi5cbiAgLy8gJ2Vycm9yJyA9IG5ldHdvcmsgb3IgdW5leHBlY3RlZCBlcnJvci5cbiAgZ3N0TG9va3VwU3RhdGU6IFJlY29yZDxudW1iZXIsICdpZGxlJyB8ICdsb2FkaW5nJyB8ICdmb3VuZCcgfCAnbm90Zm91bmQnIHwgJ2Vycm9yJz4gPSB7fTtcbiAgLy8gVHJhY2sgdGhlIGxhc3QgR1NUSU4gd2Ugc3VjY2Vzc2Z1bGx5IGxvb2tlZCB1cCBwZXIgcm93IHNvIHJlLXR5cGluZyB0aGVcbiAgLy8gc2FtZSB2YWx1ZSBkb2Vzbid0IHJlZmlyZSB0aGUgcmVxdWVzdCAoYW5kIGF2b2lkIGNsb2JiZXJpbmcgbWFudWFsIGVkaXRzXG4gIC8vIHRoZSB1c2VyIG1heSBoYXZlIG1hZGUgYWZ0ZXIgdGhlIGF1dG8tZmlsbCkuXG4gIHByaXZhdGUgbGFzdExvb2tlZFVwR3N0aW46IFJlY29yZDxudW1iZXIsIHN0cmluZz4gPSB7fTtcblxuICBncm91cFRhZ09wdGlvbnMgPSBbXG4gICAgeyB2YWx1ZTogJ3N0b3JlJywgbGFiZWw6ICdTdG9yZScgfSxcbiAgICB7IHZhbHVlOiAnZ3N0JywgbGFiZWw6ICdHU1QnIH1cbiAgXTtcbiAgY3VycmVuY3lPcHRpb25zID0gW1xuICAgIHsgdmFsdWU6ICdkb2xsYXInLCBsYWJlbDogJ0RvbGxhciAoJCknIH0sXG4gICAgeyB2YWx1ZTogJ2lucicsIGxhYmVsOiAnSU5SICjigrkpJyB9LFxuICAgIHsgdmFsdWU6ICdzaW5nYXBvcmVkb2xsYXInLCBsYWJlbDogJ1NpbmdhcG9yZSBEb2xsYXIgKFMkKScgfSxcbiAgICB7IHZhbHVlOiAnZXVybycsIGxhYmVsOiAnRXVybyAo4oKsKScgfSxcbiAgICB7IHZhbHVlOiAnYWVkJywgbGFiZWw6ICdBRUQgKEFFRCknIH0sXG4gIF07XG4gIC8vIEFkdmFuY2UtaW52b2ljZSBob3Jpem9uOiBob3cgZmFyIGFoZWFkIHRoZSBhZHZhbmNlIGludm9pY2UgaXMgZ2VuZXJhdGVkLlxuICBhZHZhbmNlUGVyaW9kT3B0aW9ucyA9IFtcbiAgICB7IHZhbHVlOiAnbW9udGhseScsIGxhYmVsOiAnTW9udGhseSAobmV4dCBtb250aCknLCBtb250aHM6IDEgfSxcbiAgICB7IHZhbHVlOiAncXVhcnRlcmx5JywgbGFiZWw6ICdRdWFydGVybHkgKG5leHQgMyBtb250aHMpJywgbW9udGhzOiAzIH0sXG4gICAgeyB2YWx1ZTogJ2hhbGZ5ZWFybHknLCBsYWJlbDogJ0hhbGYteWVhcmx5IChuZXh0IDYgbW9udGhzKScsIG1vbnRoczogNiB9LFxuICAgIHsgdmFsdWU6ICd5ZWFybHknLCBsYWJlbDogJ1llYXJseSAobmV4dCAxMiBtb250aHMpJywgbW9udGhzOiAxMiB9LFxuICBdO1xuICAvLyBEcml2ZXMgd2hldGhlciB0aGUgYmFja2VuZCB3aWxsIGNhbGN1bGF0ZSBHU1QvSUdTVCBvbiBpbnZvaWNlcyBmb3IgdGhpc1xuICAvLyBncm91cC4gJ2ludGVybmF0aW9uYWwnIHNraXBzIHRheGVzIGVudGlyZWx5IHNvIHRoZSB0b3RhbEFtb3VudCBlcXVhbHNcbiAgLy8gdGhlIHN1YnRvdGFsLiBTZWUgZ3N0aW5Mb29rdXAg4oaSIGludm9pY2VDb250cm9sbGVyLmNyZWF0ZUludm9pY2UuXG4gIHRheENhbGN1bGF0aW9uVHlwZU9wdGlvbnMgPSBbXG4gICAgeyB2YWx1ZTogJ2RvbWVzdGljJywgbGFiZWw6ICdEb21lc3RpYycgfSxcbiAgICB7IHZhbHVlOiAnaW50ZXJuYXRpb25hbCcsIGxhYmVsOiAnSW50ZXJuYXRpb25hbCcgfSxcbiAgXTtcbiAgcGF5bWVudEN5Y2xlT3B0aW9ucyA9IFtcbiAgICB7IHZhbHVlOiAnbW9udGhseScsIGxhYmVsOiAnTW9udGhseScgfSxcbiAgICB7IHZhbHVlOiAncXVhcnRlcicsIGxhYmVsOiAnUXVhcnRlcmx5JyB9LFxuICAgIHsgdmFsdWU6ICdoYWxmWWVhcmx5JywgbGFiZWw6ICdIYWxmIHllYXJseScgfSxcbiAgICB7IHZhbHVlOiAneWVhcmx5JywgbGFiZWw6ICdZZWFybHknIH1cbiAgXTtcbiAgcGF5bWVudFRlcm1PcHRpb25zID0gW1xuICAgIHsgdmFsdWU6IDMwLCBsYWJlbDogJzMwJyB9LFxuICAgIHsgdmFsdWU6IDQ1LCBsYWJlbDogJzQ1JyB9LFxuICAgIHsgdmFsdWU6IDYwLCBsYWJlbDogJzYwJyB9LFxuICAgIHsgdmFsdWU6IDkwLCBsYWJlbDogJzkwJyB9XG4gIF07XG4gIGJpbGxpbmdNZXRob2RPcHRpb25zID0gW1xuICAgIHsgdmFsdWU6ICdlYWNoU3RvcmUnLCBsYWJlbDogJ1N0b3JlIFdpc2UnIH0sXG4gICAgeyB2YWx1ZTogJ292ZXJhbGxTdG9yZScsIGxhYmVsOiAnQnJhbmQgV2lzZScgfVxuICBdO1xuICBAVmlld0NoaWxkKE5nYkFjY29yZGlvbkRpcmVjdGl2ZSkgYWNjb3JkaW9uOiBOZ2JBY2NvcmRpb25EaXJlY3RpdmU7XG5cbiAgaXRlbXNQZXJQYWdlID0gMTA7XG4gIGN1cnJlbnRQYWdlID0gMTtcbiAgdG90YWxJdGVtcyA9IDA7XG4gIHBhZ2luYXRpb25TaXplcyA9IFsxMCwgMjAsIDMwXTtcbiAgcGFnZVNpemUgPSAxMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGJpbGxpbmdTZXJ2aWNlOiBCaWxsaW5nU2VydmljZSxcbiAgICBwdWJsaWMgbW9kYWxSZWY6IE5nYkFjdGl2ZU1vZGFsLFxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmdldEJpbGxpbmdHcm91cHMoKTtcbiAgICB0aGlzLmdldENsaWVudFByb2R1Y3RzKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gSW5pdGlhbCBzdG9yZSBsb2FkIGlzIHRyaWdnZXJlZCBmcm9tIGdldEJpbGxpbmdHcm91cHMoKSAoYWZ0ZXIgdGhlXG4gICAgLy8gc2VsZWN0ZWQgc3RvcmVzIGFyZSBwYXRjaGVkIGluKSBzbyBzZWxlY3RlZC1maXJzdCBvcmRlcmluZyB3b3Jrcy5cbiAgICB0aGlzLnNlYXJjaElucHV0LnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICkuc3Vic2NyaWJlKCh2YWwpID0+IHtcbiAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHJldHVybjtcbiAgICAgIHRoaXMuc2VhcmNoVGVybSA9IHZhbDtcbiAgICAgIHRoaXMuZ2V0U3Vic2NyaWJlZFN0b3Jlcyh7fSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgY3JlYXRlRm9ybSgpIHtcbiAgICB0aGlzLmJpbGxpbmdGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBncm91cHM6IHRoaXMuZmIuYXJyYXkoW10pLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0QmlsbGluZ0dyb3VwcygpIHtcbiAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLmdldEFsbEJpbGxpbmdHcm91cHModGhpcy5jbGllbnRJZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlcz8uZGF0YT8ubGVuZ3RoKSB7XG4gICAgICAgICAgcmVzLmRhdGEuZm9yRWFjaCgoZ3JvdXA6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wYXRjaEZvcm1JdGVtKHsgLi4uZ3JvdXAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gUmVtZW1iZXIgd2hpY2ggZ3JvdXAgaXMgYmVpbmcgZWRpdGVkIHNvIHNlbGVjdGVkLWZpcnN0IG9yZGVyaW5nIGNhblxuICAgICAgICAgIC8vIHJlYWQgaXRzIHN0b3JlcyBldmVuIGFmdGVyIHRoaXMuZ3JvdXBJZCBpcyBjbGVhcmVkIGJlbG93LlxuICAgICAgICAgIHRoaXMuZWRpdGluZ0dyb3VwSWQgPSB0aGlzLmdyb3VwSWQgfHwgdGhpcy5iaWxsaW5nR3JvdXBzLmNvbnRyb2xzWzBdPy5nZXQoJ19pZCcpPy52YWx1ZSB8fCAnJztcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmdyb3VwSWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmNvbnRyb2xzLmZvckVhY2goKGNvbnRyb2wsIGlkeCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChjb250cm9sLmdldCgnX2lkJyk/LnZhbHVlID09PSB0aGlzLmdyb3VwSWQpIHtcbiAgICAgICAgICAgICAgICAgIHRoaXMuYWNjb3JkaW9uLnRvZ2dsZShpZHgudG9TdHJpbmcoKSk7XG4gICAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50VGFiKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChpZHgpLmdldCgnY3VycmVudFRhYicpPy5zZXRWYWx1ZSh0aGlzLmN1cnJlbnRUYWIpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRUYWIgPSAnJztcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIHRoaXMuZ3JvdXBJZCA9ICcnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5kYXRhLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgdGhpcy5hY2NvcmRpb24udG9nZ2xlKCcwJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgMCk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gTG9hZCB0aGUgc3RvcmUgbGlzdCBBRlRFUiBncm91cHMgYXJlIHBhdGNoZWQgc28gdGhlIHNlbGVjdGVkIHN0b3JlSWRzXG4gICAgICAgIC8vIGFyZSBhdmFpbGFibGUgZm9yIHRoZSBiYWNrZW5kIHNlbGVjdGVkLWZpcnN0IG9yZGVyaW5nLiAoZ2V0RmlsdGVycyBvblxuICAgICAgICAvLyB0aGlzIGZpcnN0IGNhbGwgdG8gYWxzbyBwb3B1bGF0ZSB0aGUgY291bnRyeS9zdGF0ZS9jaXR5IGZpbHRlcnMuKVxuICAgICAgICB0aGlzLmdldFN1YnNjcmliZWRTdG9yZXMoeyBnZXRGaWx0ZXJzOiB0cnVlIH0pO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgIC8vIFN0aWxsIGxvYWQgc3RvcmVzIGV2ZW4gaWYgZ3JvdXBzIGZhaWwsIHNvIHRoZSBzZWN0aW9uIGlzbid0IGVtcHR5LlxuICAgICAgICB0aGlzLmdldFN1YnNjcmliZWRTdG9yZXMoeyBnZXRGaWx0ZXJzOiB0cnVlIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcGF0Y2hGb3JtSXRlbSh7IGdyb3VwTmFtZSwgZ3JvdXBUYWcsIHJlZ2lzdGVyZWRDb21wYW55TmFtZSwgZ3N0LCBhZGRyZXNzTGluZU9uZSwgYWRkcmVzc0xpbmVUd28sIGNpdHksIHN0YXRlLCBjb3VudHJ5LFxuICAgIHBpbkNvZGUsIHBsYWNlT2ZTdXBwbHksIHBvLCBzdG9yZXMsIHByb1JhdGEsIHBheW1lbnRDYXRlZ29yeSwgY3VycmVuY3ksIHRheENhbGN1bGF0aW9uVHlwZSwgaXNJbnN0YWxsYXRpb25PbmVUaW1lLCBpbnN0YWxsYXRpb25GZWUsIHBheW1lbnRDeWNsZSxcbiAgICBwYXltZW50VGVybSwgZ2VuZXJhdGVJbnZvaWNlVG8sIGF0dGFjaEFubmV4dXJlLCBpc1ByaW1hcnksIGFkdmFuY2VJbnZvaWNlLCBhZHZhbmNlUGVyaW9kLCBwcm9kdWN0cywgX2lkIH06IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBncm91cE5hbWU6IFtncm91cE5hbWUgfHwgJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBncm91cFRhZzogW2dyb3VwVGFnIHx8ICdzdG9yZScsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICByZWdpc3RlcmVkQ29tcGFueU5hbWU6IFsocmVnaXN0ZXJlZENvbXBhbnlOYW1lIHx8ICcnKS50b1VwcGVyQ2FzZSgpLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgZ3N0OiBbZ3N0IHx8ICcnXSxcbiAgICAgIGFkZHJlc3NMaW5lT25lOiBbYWRkcmVzc0xpbmVPbmUgfHwgJyddLFxuICAgICAgYWRkcmVzc0xpbmVUd286IFthZGRyZXNzTGluZVR3byB8fCAnJ10sXG4gICAgICBjaXR5OiBbY2l0eSB8fCAnJ10sXG4gICAgICBzdGF0ZTogW3N0YXRlIHx8ICcnXSxcbiAgICAgIGNvdW50cnk6IFtjb3VudHJ5IHx8ICcnXSxcbiAgICAgIHBpbkNvZGU6IFtwaW5Db2RlIHx8ICcnXSxcbiAgICAgIHBsYWNlT2ZTdXBwbHk6IFtwbGFjZU9mU3VwcGx5IHx8ICcnXSxcbiAgICAgIHBvOiBbcG8gfHwgJyddLFxuICAgICAgc3RvcmVzOiBbc3RvcmVzIHx8IFtdXSxcbiAgICAgIC8vIFByaWNpbmcgbWV0aG9kOiAncHJvcmF0ZScgKGFjdHVhbCB3b3JraW5nIGRheXMpIG9yICdmbGF0JyAoZnVsbFxuICAgICAgLy8gbW9udGgpLiBEZWZhdWx0IHRvICdwcm9yYXRlJyBmb3IgcmVjb3JkcyB3aXRob3V0IGEgdmFsdWUuXG4gICAgICBwcm9SYXRhOiBbcHJvUmF0YSA9PT0gJ2ZsYXQnID8gJ2ZsYXQnIDogJ3Byb3JhdGUnXSxcbiAgICAgIHBheW1lbnRDYXRlZ29yeTogW3BheW1lbnRDYXRlZ29yeSB8fCAncG9zdCddLFxuICAgICAgY3VycmVuY3k6IFtjdXJyZW5jeSB8fCAnZG9sbGFyJ10sXG4gICAgICAvLyBEZWZhdWx0IHRvICdkb21lc3RpYycgc28gZXhpc3RpbmcgcmVjb3JkcyAod2hpY2ggd29uJ3QgaGF2ZSB0aGlzXG4gICAgICAvLyBmaWVsZCkgYmVoYXZlIGV4YWN0bHkgYXMgdG9kYXkg4oCUIEdTVC9JR1NUIHN0aWxsIGFwcGxpZWQgZm9yIElOUi5cbiAgICAgIHRheENhbGN1bGF0aW9uVHlwZTogW3RheENhbGN1bGF0aW9uVHlwZSB8fCAnZG9tZXN0aWMnXSxcbiAgICAgIGlzSW5zdGFsbGF0aW9uT25lVGltZTogW2lzSW5zdGFsbGF0aW9uT25lVGltZSB8fCBmYWxzZV0sXG4gICAgICBpbnN0YWxsYXRpb25GZWU6IFt7IHZhbHVlOiBpbnN0YWxsYXRpb25GZWUgfHwgJycsIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgcGF5bWVudEN5Y2xlOiBbcGF5bWVudEN5Y2xlIHx8ICdtb250aGx5J10sXG4gICAgICBwYXltZW50VGVybTogW3BheW1lbnRUZXJtIHx8IDMwXSxcbiAgICAgIGdlbmVyYXRlSW52b2ljZVRvOiBbZ2VuZXJhdGVJbnZvaWNlVG8gfHwgW11dLFxuICAgICAgYXR0YWNoQW5uZXh1cmU6IFthdHRhY2hBbm5leHVyZSB8fCBmYWxzZV0sXG4gICAgICBpc1ByaW1hcnk6IFtpc1ByaW1hcnkgfHwgZmFsc2VdLFxuICAgICAgYWR2YW5jZUludm9pY2U6IFthZHZhbmNlSW52b2ljZSB8fCBmYWxzZV0sXG4gICAgICBhZHZhbmNlUGVyaW9kOiBbYWR2YW5jZVBlcmlvZCB8fCAnbW9udGhseSddLFxuICAgICAgcHJvZHVjdHM6IFtwcm9kdWN0cyB8fCBbXV0sXG4gICAgICBjdXJyZW50VGFiOiBbJ2Jhc2ljLWluZm8nXSxcbiAgICAgIGNsaWVudElkOiBbdGhpcy5jbGllbnRJZF0sXG4gICAgICBfaWQ6IFtfaWRdXG4gICAgfSk7XG4gICAgdGhpcy5iaWxsaW5nR3JvdXBzLnB1c2goaXRlbSk7XG4gIH1cblxuICBhZGRGb3JtSXRlbSh7IGlzUHJpbWFyeSwgZ3JvdXBOYW1lIH06IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4gfCBzdHJpbmc+KSB7XG4gICAgY29uc3QgaXRlbSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgZ3JvdXBOYW1lOiBbZ3JvdXBOYW1lLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgZ3JvdXBUYWc6IFsnc3RvcmUnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZF1dLFxuICAgICAgcmVnaXN0ZXJlZENvbXBhbnlOYW1lOiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBnc3Q6IFsnJ10sXG4gICAgICBhZGRyZXNzTGluZU9uZTogWycnXSxcbiAgICAgIGFkZHJlc3NMaW5lVHdvOiBbJyddLFxuICAgICAgY2l0eTogWycnXSxcbiAgICAgIHN0YXRlOiBbJyddLFxuICAgICAgY291bnRyeTogWycnXSxcbiAgICAgIHBpbkNvZGU6IFsnJ10sXG4gICAgICBwbGFjZU9mU3VwcGx5OiBbJyddLFxuICAgICAgcG86IFsnJ10sXG4gICAgICBzdG9yZXM6IFtbXV0sXG4gICAgICAvLyBOZXcgcmVjb3JkcyBhbHdheXMgc3RhcnQgd2l0aCAncHJvcmF0ZSc7IGZsYXQgaXMgb3B0LWluLlxuICAgICAgcHJvUmF0YTogWydwcm9yYXRlJ10sXG4gICAgICBwYXltZW50Q2F0ZWdvcnk6IFsncG9zdCddLFxuICAgICAgY3VycmVuY3k6IFsnZG9sbGFyJ10sXG4gICAgICAvLyBEZWZhdWx0ICdkb21lc3RpYycgc28gdGhlIGV4aXN0aW5nIEdTVC9JR1NUIGxvZ2ljIHN0aWxsIGFwcGxpZXNcbiAgICAgIC8vIHVubGVzcyB0aGUgdXNlciBleHBsaWNpdGx5IHN3aXRjaGVzIHRvIGludGVybmF0aW9uYWwuXG4gICAgICB0YXhDYWxjdWxhdGlvblR5cGU6IFsnZG9tZXN0aWMnXSxcbiAgICAgIGlzSW5zdGFsbGF0aW9uT25lVGltZTogW2ZhbHNlXSxcbiAgICAgIGluc3RhbGxhdGlvbkZlZTogW3sgdmFsdWU6ICcnLCBkaXNhYmxlZDogdHJ1ZSB9XSxcbiAgICAgIHBheW1lbnRDeWNsZTogWydtb250aGx5J10sXG4gICAgICBwYXltZW50VGVybTogWzMwXSxcbiAgICAgIGdlbmVyYXRlSW52b2ljZVRvOiBbW11dLFxuICAgICAgYXR0YWNoQW5uZXh1cmU6IFtmYWxzZV0sXG4gICAgICBpc1ByaW1hcnk6IFtpc1ByaW1hcnldLFxuICAgICAgYWR2YW5jZUludm9pY2U6IFtmYWxzZV0sXG4gICAgICBhZHZhbmNlUGVyaW9kOiBbJ21vbnRobHknXSxcbiAgICAgIHByb2R1Y3RzOiBbW11dLFxuICAgICAgY3VycmVudFRhYjogWydiYXNpYy1pbmZvJ10sXG4gICAgICBjbGllbnRJZDogW3RoaXMuY2xpZW50SWRdXG4gICAgfSk7XG4gICAgdGhpcy5iaWxsaW5nR3JvdXBzLnB1c2goaXRlbSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0aGlzLmFjY29yZGlvbi50b2dnbGUoYCR7dGhpcy5iaWxsaW5nR3JvdXBzLmxlbmd0aCAtIDF9YCk7XG4gICAgfSwgMCk7XG4gIH1cblxuICBnZXQgYmlsbGluZ0dyb3VwcygpIHtcbiAgICByZXR1cm4gdGhpcy5iaWxsaW5nRm9ybS5nZXQoJ2dyb3VwcycpIGFzIEZvcm1BcnJheTtcbiAgfVxuXG4gIC8vIFN0YXJ0IG1vbnRoIHRoZSBhZHZhbmNlIGludm9pY2Ugd2lsbCBjb3ZlciDigJQgdGhlIGZpcnN0IGRheSBvZiBuZXh0IG1vbnRoLFxuICAvLyBtYXRjaGluZyB0aGUgYmFja2VuZCAoZGF5anMoKS5hZGQoMSwnbW9udGgnKS5zdGFydE9mKCdtb250aCcpKS5cbiAgZ2V0IGFkdmFuY2VJbnZvaWNlRGF0ZSgpOiBzdHJpbmcge1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKG5vdy5nZXRGdWxsWWVhcigpLCBub3cuZ2V0TW9udGgoKSArIDEsIDEpO1xuICAgIHJldHVybiBkLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tR0InLCB7IGRheTogJzItZGlnaXQnLCBtb250aDogJ3Nob3J0JywgeWVhcjogJ251bWVyaWMnIH0pO1xuICB9XG5cbiAgLy8gSHVtYW4gbGFiZWwgZm9yIHRoZSBwZXJpb2QgYSBjaG9zZW4gYWR2YW5jZSBmcmVxdWVuY3kgY292ZXJzLCBzaG93biBuZXh0XG4gIC8vIHRvIHRoZSBkcm9wZG93biAoZS5nLiBcIkp1bCAyMDI2IOKAkyBEZWMgMjAyNlwiIGZvciBoYWxmLXllYXJseSkuXG4gIGFkdmFuY2VJbnZvaWNlUmFuZ2UocGVyaW9kOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IG1vbnRocyA9IHRoaXMuYWR2YW5jZVBlcmlvZE9wdGlvbnMuZmluZChvID0+IG8udmFsdWUgPT09IHBlcmlvZCk/Lm1vbnRocyB8fCAxO1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3Qgc3RhcnQgPSBuZXcgRGF0ZShub3cuZ2V0RnVsbFllYXIoKSwgbm93LmdldE1vbnRoKCkgKyAxLCAxKTtcbiAgICBjb25zdCBmbXQgPSAoZDogRGF0ZSkgPT4gZC50b0xvY2FsZURhdGVTdHJpbmcoJ2VuLUdCJywgeyBtb250aDogJ3Nob3J0JywgeWVhcjogJ251bWVyaWMnIH0pO1xuICAgIGlmIChtb250aHMgPD0gMSkgcmV0dXJuIGZtdChzdGFydCk7XG4gICAgY29uc3QgZW5kID0gbmV3IERhdGUobm93LmdldEZ1bGxZZWFyKCksIG5vdy5nZXRNb250aCgpICsgbW9udGhzLCAxKTtcbiAgICByZXR1cm4gYCR7Zm10KHN0YXJ0KX0g4oCTICR7Zm10KGVuZCl9YDtcbiAgfVxuXG4gIG9uVGFiQ2hhbmdlKGlkeDogbnVtYmVyLCB2YWw6IHN0cmluZykge1xuICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChpZHgpLmdldCgnY3VycmVudFRhYicpPy5zZXRWYWx1ZSh2YWwpO1xuICB9XG5cbiAgb25EZWxldGVHcm91cChpZHg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmJpbGxpbmdHcm91cHMuYXQoaWR4KS5nZXQoJ19pZCcpPy52YWx1ZSkge1xuICAgICAgdGhpcy5iaWxsaW5nU2VydmljZS5kZWxldGVCaWxsaW5nR3JvdXAodGhpcy5iaWxsaW5nR3JvdXBzLmF0KGlkeCkuZ2V0KCdfaWQnKT8udmFsdWUpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXM/LmRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5jb250cm9scy5mb3JFYWNoKGdyb3VwID0+IHtcbiAgICAgICAgICAgICAgaWYgKGdyb3VwLmdldCgnaXNQcmltYXJ5Jyk/LnZhbHVlKSB7XG4gICAgICAgICAgICAgICAgZ3JvdXAuZ2V0KCdzdG9yZXMnKT8uc2V0VmFsdWUoWy4uLmdyb3VwLmdldCgnc3RvcmVzJyk/LnZhbHVlLCAuLi50aGlzLmJpbGxpbmdHcm91cHMuYXQoaWR4KS5nZXQoJ3N0b3JlcycpPy52YWx1ZV0pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5yZW1vdmVBdChpZHgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5jb250cm9scy5mb3JFYWNoKGdyb3VwID0+IHtcbiAgICAgICAgaWYgKGdyb3VwLmdldCgnaXNQcmltYXJ5Jyk/LnZhbHVlKSB7XG4gICAgICAgICAgZ3JvdXAuZ2V0KCdzdG9yZXMnKT8uc2V0VmFsdWUoWy4uLmdyb3VwLmdldCgnc3RvcmVzJyk/LnZhbHVlLCAuLi50aGlzLmJpbGxpbmdHcm91cHMuYXQoaWR4KS5nZXQoJ3N0b3JlcycpPy52YWx1ZV0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5yZW1vdmVBdChpZHgpO1xuICAgIH1cbiAgfVxuXG4gIGdldFN1YnNjcmliZWRTdG9yZXMoeyBnZXRGaWx0ZXJzIH06IFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+KSB7XG4gICAgdGhpcy5zdWJzY3JpYmVkU3RvcmVzQXBpU3RhdGUubmV4dCgnbG9hZGluZycpO1xuICAgIGNvbnN0IGRhdGE6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7XG4gICAgICBsaW1pdDogdGhpcy5wYWdlU2l6ZSxcbiAgICAgIG9mZnNldDogdGhpcy5jdXJyZW50UGFnZSxcbiAgICAgIGNsaWVudElkOiB0aGlzLmNsaWVudElkLFxuICAgICAgc29ydENvbHVtbjogdGhpcy5zb3J0ZWRDb2x1bW4sXG4gICAgICBzb3J0Qnk6IHRoaXMuc29ydERpcmVjdGlvbixcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnNlYXJjaFRlcm0sXG4gICAgICBjb3VudHJ5OiB0aGlzLmZpbHRlckNvdW50cmllcyxcbiAgICAgIHN0YXRlOiB0aGlzLmZpbHRlclN0YXRlcyxcbiAgICAgIGNpdHk6IHRoaXMuZmlsdGVyQ2l0aWVzLFxuICAgICAgZ2V0RmlsdGVyczogZ2V0RmlsdGVycyxcbiAgICAgIC8vIEJhY2tlbmQgcmVzb2x2ZXMgdGhpcyBncm91cCdzIHNlbGVjdGVkIHN0b3JlcywgdGFncyBlYWNoIHJvdyB3aXRoXG4gICAgICAvLyBpc1NlbGVjdGVkIGFuZCBmbG9hdHMgc2VsZWN0ZWQgc3RvcmVzIHRvIHRoZSB0b3AgYWNyb3NzIGFsbCBwYWdlcy5cbiAgICAgIGdyb3VwSWQ6IHRoaXMuZWRpdGluZ0dyb3VwSWQgfHwgdGhpcy5ncm91cElkIHx8IHRoaXMuYmlsbGluZ0dyb3Vwcz8uY29udHJvbHM/LlswXT8uZ2V0KCdfaWQnKT8udmFsdWUgfHwgJycsXG4gICAgICAvLyBBbHNvIHNlbmQgdGhlIGxpdmUgc2VsZWN0aW9uIChjb3ZlcnMgYSBicmFuZC1uZXcgdW5zYXZlZCBncm91cCB3aG9zZVxuICAgICAgLy8gc3RvcmVzIGFyZW4ndCB5ZXQgcGVyc2lzdGVkIHRvIHRoZSBiaWxsaW5nIGRvYykuXG4gICAgICBzZWxlY3RlZFN0b3JlSWRzOiB0aGlzLnNlbGVjdGVkU3RvcmVJZHNGb3JTb3J0KClcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZGF0YSkge1xuICAgICAgaWYgKGRhdGEuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBpZiAoZGF0YVtrZXldID09PSB1bmRlZmluZWQgfHwgZGF0YVtrZXldID09PSAnJykgZGVsZXRlIGRhdGFba2V5XTtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZGF0YVtrZXldKSAmJiAhZGF0YVtrZXldLmxlbmd0aCkgZGVsZXRlIGRhdGFba2V5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLmdldFN1YnNjcmliZWRTdG9yZXMoZGF0YSkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5zdWJzY3JpYmVkU3RvcmVzQXBpU3RhdGUubmV4dCgnbG9hZGVkJyk7XG4gICAgICAgIGlmIChnZXRGaWx0ZXJzKSB7XG4gICAgICAgICAgaWYgKHJlcz8uZGF0YT8uY291bnRyaWVzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyRGF0YS5wdXNoKHsgRGVzY3JpcHRpb246ICdDb3VudHJ5JywgSXNzdWVzOiByZXMuZGF0YS5jb3VudHJpZXMubWFwKCh2YWw6IGFueSkgPT4gKHsgdGV4dDogdmFsLl9pZCwgaWQ6IHZhbC5faWQgfSkpIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmVzPy5kYXRhPy5zdGF0ZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJEYXRhLnB1c2goeyBEZXNjcmlwdGlvbjogJ1N0YXRlJywgSXNzdWVzOiByZXMuZGF0YS5zdGF0ZXMubWFwKCh2YWw6IGFueSkgPT4gKHsgdGV4dDogdmFsLl9pZCwgaWQ6IHZhbC5faWQgfSkpIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAocmVzPy5kYXRhPy5jaXRpZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJEYXRhLnB1c2goeyBEZXNjcmlwdGlvbjogJ0NpdHknLCBJc3N1ZXM6IHJlcy5kYXRhLmNpdGllcy5tYXAoKHZhbDogYW55KSA9PiAoeyB0ZXh0OiB2YWwuX2lkLCBpZDogdmFsLl9pZCB9KSkgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMudG90YWxJdGVtcyA9IHJlcz8uZGF0YT8ucGFnZUluZm8/LmNvdW50IHx8IDA7XG4gICAgICAgIC8vIEJhY2tlbmQgcmV0dXJucyBzZWxlY3RlZCBzdG9yZXMgZmlyc3QgKHNlbGVjdGVkLWZpcnN0IG9yZGVyaW5nKS5cbiAgICAgICAgdGhpcy5zdWJzY3JpYmVkU3RvcmVMaXN0ID0gcmVzPy5kYXRhPy5kYXRhIHx8IFtdO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZTogYW55KSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25TdG9yZUNoZWNrKGV2ZW50OiBhbnksIGZvcm1BcnJheUluZGV4OiBudW1iZXIsIHN0b3JlSWQ6IHN0cmluZykge1xuICAgIGlmIChldmVudC50YXJnZXQuY2hlY2tlZCkge1xuICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmNvbnRyb2xzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGlmIChpdGVtLmdldCgnc3RvcmVzJyk/LnZhbHVlLmluY2x1ZGVzKHN0b3JlSWQpKSB7XG4gICAgICAgICAgaXRlbS5nZXQoJ3N0b3JlcycpPy5zZXRWYWx1ZShpdGVtLmdldCgnc3RvcmVzJyk/LnZhbHVlLmZpbHRlcigodmFsOiBzdHJpbmcpID0+IHZhbCAhPT0gc3RvcmVJZCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdzdG9yZXMnKT8uc2V0VmFsdWUoWy4uLnRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdzdG9yZXMnKT8udmFsdWUsIHN0b3JlSWRdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ3N0b3JlcycpPy5zZXRWYWx1ZShcbiAgICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ3N0b3JlcycpPy52YWx1ZS5maWx0ZXIoKHZhbDogc3RyaW5nKSA9PiB2YWwgIT09IHN0b3JlSWQpXG4gICAgICApO1xuICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmNvbnRyb2xzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGlmIChpdGVtLmdldCgnaXNQcmltYXJ5Jyk/LnZhbHVlKSB7XG4gICAgICAgICAgaXRlbS5nZXQoJ3N0b3JlcycpPy5zZXRWYWx1ZShbLi4uaXRlbS5nZXQoJ3N0b3JlcycpPy52YWx1ZSwgc3RvcmVJZF0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBvblNlbGVjdEFsbFN0b3JlcyhldmVudDogYW55LCBmb3JtQXJyYXlJbmRleDogbnVtYmVyKSB7XG4gICAgY29uc3Qgc3Vic2NyaWJlZFN0b3JlSWRzID0gdGhpcy5zdWJzY3JpYmVkU3RvcmVMaXN0Lm1hcChpdGVtID0+IGl0ZW0uc3RvcmVJZCk7XG4gICAgaWYgKGV2ZW50LnRhcmdldC5jaGVja2VkKSB7XG4gICAgICB0aGlzLmJpbGxpbmdHcm91cHMuY29udHJvbHMuZm9yRWFjaCgoZ3JvdXApID0+IHtcbiAgICAgICAgZ3JvdXAuZ2V0KCdzdG9yZXMnKT8udmFsdWUuZm9yRWFjaCgoc3RvcmU6IHN0cmluZykgPT4ge1xuICAgICAgICAgIGlmIChzdWJzY3JpYmVkU3RvcmVJZHMuaW5jbHVkZXMoc3RvcmUpKSB7XG4gICAgICAgICAgICBncm91cC5nZXQoJ3N0b3JlcycpPy5zZXRWYWx1ZShncm91cC5nZXQoJ3N0b3JlcycpPy52YWx1ZS5maWx0ZXIoKGl0ZW06IHN0cmluZykgPT4gaXRlbSAhPT0gc3RvcmUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnc3RvcmVzJyk/LnNldFZhbHVlKFsuLi50aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnc3RvcmVzJyk/LnZhbHVlLCAuLi5zdWJzY3JpYmVkU3RvcmVJZHNdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ3N0b3JlcycpPy5zZXRWYWx1ZShcbiAgICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ3N0b3JlcycpPy52YWx1ZS5maWx0ZXIoKGl0ZW06IGFueSkgPT4gIXN1YnNjcmliZWRTdG9yZUlkcy5pbmNsdWRlcyhpdGVtKSlcbiAgICAgICk7XG4gICAgICB0aGlzLmJpbGxpbmdHcm91cHMuY29udHJvbHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uZ2V0KCdpc1ByaW1hcnknKT8udmFsdWUpIHtcbiAgICAgICAgICBpdGVtLmdldCgnc3RvcmVzJyk/LnNldFZhbHVlKFsuLi5pdGVtLmdldCgnc3RvcmVzJyk/LnZhbHVlLCAuLi5zdWJzY3JpYmVkU3RvcmVJZHNdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgaXNTdG9yZVNlbGVjdGVkSW5Hcm91cChmb3JtQXJyYXlJbmRleDogbnVtYmVyLCBzdG9yZUlkOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ3N0b3JlcycpPy52YWx1ZS5pbmNsdWRlcyhzdG9yZUlkKTtcbiAgfVxuXG4gIC8vIFNlbGVjdGVkIHN0b3JlSWRzIHNlbnQgdG8gdGhlIGJhY2tlbmQgc28gaXQgY2FuIHNvcnQgc2VsZWN0ZWQgc3RvcmVzIGZpcnN0LlxuICAvLyBSZWFkIHN0cmFpZ2h0IGZyb20gdGhlIGxpdmUgZm9ybSAodGhlIHNhbWUgc291cmNlIGFzIHRoZSBjaGVja2JveGVzKSwgc28gaXRcbiAgLy8gYWx3YXlzIG1hdGNoZXMgdGhlIFVJLiBUaGUgc2hhcmVkIHN0b3JlIGxpc3QgaXMgcmVuZGVyZWQgcGVyIGdyb3VwLCBzbyB3ZVxuICAvLyB1bmlvbiBldmVyeSBncm91cCdzIHNlbGVjdGlvbiDigJQgZm9yIGEgc2luZ2xlLWdyb3VwIGVkaXQgdGhpcyBpcyBleGFjdGx5XG4gIC8vIHRoYXQgZ3JvdXAncyBzdG9yZXM7IGZvciBtdWx0aS1ncm91cCBpdCBmbG9hdHMgYW55dGhpbmcgc2VsZWN0ZWQgYW55d2hlcmUuXG4gIHByaXZhdGUgc2VsZWN0ZWRTdG9yZUlkc0ZvclNvcnQoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGlkcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgICh0aGlzLmJpbGxpbmdHcm91cHM/LmNvbnRyb2xzIHx8IFtdKS5mb3JFYWNoKGcgPT4ge1xuICAgICAgKGcuZ2V0KCdzdG9yZXMnKT8udmFsdWUgfHwgW10pLmZvckVhY2goKHM6IHN0cmluZykgPT4gaWRzLmFkZChzKSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIFsuLi5pZHNdO1xuICB9XG5cbiAgaXNBbGxTdG9yZXNTZWxlY3RlZEluR3JvdXAoZm9ybUFycmF5SW5kZXg6IG51bWJlcikge1xuICAgIHJldHVybiB0aGlzLnN1YnNjcmliZWRTdG9yZUxpc3QuZXZlcnkoaXRlbSA9PiB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnc3RvcmVzJyk/LnZhbHVlLmluY2x1ZGVzKGl0ZW0uc3RvcmVJZCkpICYmIHRoaXMuc3Vic2NyaWJlZFN0b3JlTGlzdC5sZW5ndGg7XG4gIH1cblxuICBvblBhZ2VDaGFuZ2UoZXZlbnQ6IG51bWJlcikge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSBldmVudDtcbiAgICB0aGlzLmdldFN1YnNjcmliZWRTdG9yZXMoe30pO1xuICB9XG5cbiAgb25QYWdlU2l6ZUNoYW5nZShldmVudDogbnVtYmVyKSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgdGhpcy5wYWdlU2l6ZSA9IGV2ZW50O1xuICAgIHRoaXMuaXRlbXNQZXJQYWdlID0gZXZlbnQ7XG4gICAgdGhpcy5nZXRTdWJzY3JpYmVkU3RvcmVzKHt9KTtcbiAgfVxuXG4gIG9taXRfc3BlY2lhbF9jaGFyKGV2ZW50OiBhbnkpIHtcbiAgICB2YXIgayA9IGV2ZW50LmNoYXJDb2RlO1xuICAgIHJldHVybiAoayA9PSA4IHx8IGsgPT0gMzIgfHwgKGsgPj0gNDggJiYgayA8PSA1NykpO1xuICB9XG5cbiAgZm9yY2VVcHBlcmNhc2UoZXZlbnQ6IGFueSwgaWR4OiBudW1iZXIpIHtcbiAgICBjb25zdCBpbnB1dCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MSW5wdXRFbGVtZW50O1xuICAgIGNvbnN0IHVwcGVyID0gaW5wdXQudmFsdWUudG9VcHBlckNhc2UoKTtcbiAgICBpZiAoaW5wdXQudmFsdWUgIT09IHVwcGVyKSB7XG4gICAgICBjb25zdCBjYXJldCA9IGlucHV0LnNlbGVjdGlvblN0YXJ0O1xuICAgICAgaW5wdXQudmFsdWUgPSB1cHBlcjtcbiAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKGNhcmV0LCBjYXJldCk7XG4gICAgfVxuICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChpZHgpLmdldCgncmVnaXN0ZXJlZENvbXBhbnlOYW1lJyk/LnNldFZhbHVlKHVwcGVyLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XG4gIH1cblxuICBhcHBseUZpbHRlcnMoZXZlbnQ6IGFueSkge1xuICAgIHRoaXMuY3VycmVudFBhZ2UgPSAxO1xuICAgIGV2ZW50LmZvckVhY2goKHZhbDogYW55KSA9PiB7XG4gICAgICBpZiAodmFsLkRlc2NyaXB0aW9uID09PSAnQ291bnRyeScpIHRoaXMuZmlsdGVyQ291bnRyaWVzID0gdmFsLklzc3Vlcy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbS5pZCk7XG4gICAgICBpZiAodmFsLkRlc2NyaXB0aW9uID09PSAnU3RhdGUnKSB0aGlzLmZpbHRlclN0YXRlcyA9IHZhbC5Jc3N1ZXMubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0uaWQpO1xuICAgICAgaWYgKHZhbC5EZXNjcmlwdGlvbiA9PT0gJ0NpdHknKSB0aGlzLmZpbHRlckNpdGllcyA9IHZhbC5Jc3N1ZXMubWFwKChpdGVtOiBhbnkpID0+IGl0ZW0uaWQpO1xuICAgIH0pO1xuICAgIHRoaXMuZ2V0U3Vic2NyaWJlZFN0b3Jlcyh7fSk7XG4gIH1cblxuICBvbkVtYWlsS2V5RG93bihldmVudDogYW55LCBmb3JtQXJyYXlJbmRleDogbnVtYmVyKSB7XG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgaWYgKGV2ZW50LmNvZGUgPT0gJ0JhY2tzcGFjZScgJiYgZXZlbnQudGFyZ2V0LnZhbHVlID09ICcnKSB7XG4gICAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnZ2VuZXJhdGVJbnZvaWNlVG8nKT8uc2V0VmFsdWUoXG4gICAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdnZW5lcmF0ZUludm9pY2VUbycpPy52YWx1ZS5zbGljZSgwLCAtMSlcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChldmVudC5jb2RlID09ICdFbnRlcicpIHtcbiAgICAgIGNvbnN0IGVtYWlsUmVnZXggPSAvXlthLXpBLVowLTkuXyUrLV0rQFthLXpBLVowLTkuLV0rXFwuW2EtekEtWl17Mix9JC87XG4gICAgICBpZiAoZW1haWxSZWdleC50ZXN0KGV2ZW50LnRhcmdldC52YWx1ZSkpIHtcbiAgICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ2dlbmVyYXRlSW52b2ljZVRvJyk/LnNldFZhbHVlKFxuICAgICAgICAgIFsuLi50aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnZ2VuZXJhdGVJbnZvaWNlVG8nKT8udmFsdWUsIGV2ZW50LnRhcmdldC52YWx1ZV1cbiAgICAgICAgKTtcbiAgICAgICAgZXZlbnQudGFyZ2V0LnZhbHVlID0gJyc7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlRW1haWxDaGlwKGVtYWlsOiBzdHJpbmcsIGZvcm1BcnJheUluZGV4OiBudW1iZXIpIHtcbiAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnZ2VuZXJhdGVJbnZvaWNlVG8nKT8uc2V0VmFsdWUoXG4gICAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnZ2VuZXJhdGVJbnZvaWNlVG8nKT8udmFsdWUuZmlsdGVyKCh2YWw6IHN0cmluZykgPT4gdmFsICE9PSBlbWFpbClcbiAgICApO1xuICB9XG5cbiAgb25Tb3J0KGNvbHVtbjogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuc29ydGVkQ29sdW1uID09PSBjb2x1bW4pIHtcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IHRoaXMuc29ydERpcmVjdGlvbiA9PT0gMSA/IC0xIDogMTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zb3J0ZWRDb2x1bW4gPSBjb2x1bW47XG4gICAgICB0aGlzLnNvcnREaXJlY3Rpb24gPSAxO1xuICAgIH1cbiAgICB0aGlzLmdldFN1YnNjcmliZWRTdG9yZXMoe30pO1xuICB9XG5cbiAgbmF2aWdhdGUoZm9ybUFycmF5SW5kZXg6IG51bWJlcikge1xuICAgIGlmICh0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnaXNQcmltYXJ5Jyk/LnZhbHVlKSB7XG4gICAgICBpZiAodGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgPT09ICdiYXNpYy1pbmZvJykge1xuICAgICAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnY3VycmVudFRhYicpPy5zZXRWYWx1ZSgnc2V0dGluZ3MnKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlID09PSAnYmFzaWMtaW5mbycpIHtcbiAgICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ2N1cnJlbnRUYWInKT8uc2V0VmFsdWUoJ3N0b3JlLXNlbGVjdGlvbicpO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSA9PT0gJ3N0b3JlLXNlbGVjdGlvbicpIHtcbiAgICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ2N1cnJlbnRUYWInKT8uc2V0VmFsdWUoJ3NldHRpbmdzJyk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYWRkQmlsbGluZ0dyb3VwKCkge1xuICAgIHRoaXMuYWRkRm9ybUl0ZW0oeyBncm91cE5hbWU6IGBHcm91cCAke3RoaXMuYmlsbGluZ0dyb3Vwcy5sZW5ndGggKyAxfWAsIGlzUHJpbWFyeTogZmFsc2UgfSk7XG4gIH1cblxuICBvblN1Ym1pdChmb3JtVmFsdWVzOiBhbnksIGlkeDogbnVtYmVyKSB7XG4gICAgdGhpcy5zdWJtaXR0ZWQgPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChpZHgpLmdldCgncmVnaXN0ZXJlZENvbXBhbnlOYW1lJyk/LmludmFsaWQpIHtcbiAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChpZHgpLmdldCgnY3VycmVudFRhYicpPy5zZXRWYWx1ZSgnYmFzaWMtaW5mbycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGlkeCkuZ2V0KCdnZW5lcmF0ZUludm9pY2VUbycpPy52YWx1ZS5sZW5ndGgpIHtcbiAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoJ1BsZWFzZSBhZGQgYXQgbGVhc3Qgb25lIGVtYWlsIGluIEdlbmVyYXRlIEludm9pY2UgVG8nKTtcbiAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChpZHgpLmdldCgnY3VycmVudFRhYicpPy5zZXRWYWx1ZSgnc2V0dGluZ3MnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBkZWxldGUgZm9ybVZhbHVlcy5jdXJyZW50VGFiO1xuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gZm9ybVZhbHVlcykge1xuICAgICAgaWYgKGZvcm1WYWx1ZXMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICBpZiAoZm9ybVZhbHVlc1trZXldID09PSB1bmRlZmluZWQpIGRlbGV0ZSBmb3JtVmFsdWVzW2tleV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZvcm1WYWx1ZXMuX2lkKSB7XG4gICAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLnVwZGF0ZUJpbGxpbmdHcm91cChmb3JtVmFsdWVzKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzPy5kYXRhKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGFsUmVmLmNsb3NlKCdzdWNjZXNzJyk7XG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRQcmltYXJ5VG9hc3QoJ0JpbGxpbmcgZ3JvdXAgdXBkYXRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoZXJyLmVycm9yPy5jb2RlID09PSA0MDApIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoZXJyLmVycm9yLmVycm9yKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdCgnRmFpbGVkIHRvIHVwZGF0ZSBiaWxsaW5nIGdyb3VwJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5iaWxsaW5nU2VydmljZS5jcmVhdGVCaWxsaW5nR3JvdXAoZm9ybVZhbHVlcykuc3Vic2NyaWJlKHtcbiAgICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKHJlcz8uZGF0YSkge1xuICAgICAgICAgICAgdGhpcy5tb2RhbFJlZi5jbG9zZSgnc3VjY2VzcycpO1xuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0UHJpbWFyeVRvYXN0KCdCaWxsaW5nIGdyb3VwIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKGVycjogYW55KSA9PiB7XG4gICAgICAgICAgaWYgKGVyci5lcnJvcj8uY29kZSA9PT0gNDAwKSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KGVyci5lcnJvci5lcnJvcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoJ0ZhaWxlZCB0byBjcmVhdGUgYmlsbGluZyBncm91cCcpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZ2V0Q2xpZW50UHJvZHVjdHMoKSB7XG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS5nZXRDbGllbnRQcm9kdWN0cyh0aGlzLmNsaWVudElkKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICBpZiAocmVzPy5kYXRhPy5wbGFuRGV0YWlscz8ucHJvZHVjdD8ubGVuZ3RoKSB7XG4gICAgICAgICAgdGhpcy5zdWJzY3JpYmVkUHJvZHVjdHMgPSByZXMuZGF0YS5wbGFuRGV0YWlscy5wcm9kdWN0LmZpbHRlcigocDogYW55KSA9PiBwLnN0YXR1cyA9PT0gJ2xpdmUnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgb25DYW5jZWwoaWR4OiBudW1iZXIpIHtcbiAgICB0aGlzLmFjY29yZGlvbi50b2dnbGUoaWR4LnRvU3RyaW5nKCkpO1xuICB9XG5cbiAgcHJldmVudEVudGVyKGV2ZW50OiBhbnkpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICB9XG5cbiAgZ2V0UHJvZHVjdEJpbGxpbmdNZXRob2QoZm9ybUFycmF5SW5kZXg6IG51bWJlciwgcHJvZHVjdE5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcHJvZHVjdHMgPSB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgncHJvZHVjdHMnKT8udmFsdWUgfHwgW107XG4gICAgY29uc3QgZm91bmQgPSBwcm9kdWN0cy5maW5kKChwOiBhbnkpID0+IHAucHJvZHVjdE5hbWUgPT09IHByb2R1Y3ROYW1lKTtcbiAgICByZXR1cm4gZm91bmQ/LmJpbGxpbmdNZXRob2QgfHwgJ292ZXJhbGxTdG9yZSc7XG4gIH1cblxuICBvbkJpbGxpbmdNZXRob2RDaGFuZ2UoZm9ybUFycmF5SW5kZXg6IG51bWJlciwgcHJvZHVjdE5hbWU6IHN0cmluZywgZXZlbnQ6IGFueSkge1xuICAgIGNvbnN0IHByb2R1Y3RzID0gdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ3Byb2R1Y3RzJyk/LnZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gcHJvZHVjdHMuZmluZCgocDogYW55KSA9PiBwLnByb2R1Y3ROYW1lID09PSBwcm9kdWN0TmFtZSk7XG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICBleGlzdGluZy5iaWxsaW5nTWV0aG9kID0gZXZlbnQudGFyZ2V0LnZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9kdWN0cy5wdXNoKHsgcHJvZHVjdE5hbWUsIGJpbGxpbmdNZXRob2Q6IGV2ZW50LnRhcmdldC52YWx1ZSB9KTtcbiAgICB9XG4gICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ3Byb2R1Y3RzJyk/LnNldFZhbHVlKFsuLi5wcm9kdWN0c10pO1xuICB9XG5cbiAgb25CaWxsaW5nTWV0aG9kU2VsZWN0Q2hhbmdlKGZvcm1BcnJheUluZGV4OiBudW1iZXIsIHByb2R1Y3ROYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcm9kdWN0cyA9IHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdwcm9kdWN0cycpPy52YWx1ZSB8fCBbXTtcbiAgICBjb25zdCBleGlzdGluZyA9IHByb2R1Y3RzLmZpbmQoKHA6IGFueSkgPT4gcC5wcm9kdWN0TmFtZSA9PT0gcHJvZHVjdE5hbWUpO1xuICAgIGlmIChleGlzdGluZykge1xuICAgICAgZXhpc3RpbmcuYmlsbGluZ01ldGhvZCA9IHZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICBwcm9kdWN0cy5wdXNoKHsgcHJvZHVjdE5hbWUsIGJpbGxpbmdNZXRob2Q6IHZhbHVlIH0pO1xuICAgIH1cbiAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgncHJvZHVjdHMnKT8uc2V0VmFsdWUoWy4uLnByb2R1Y3RzXSk7XG4gIH1cblxuICBmb3JtYXRQcm9kdWN0TmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghbmFtZSkgcmV0dXJuICcnO1xuICAgIHJldHVybiBuYW1lLnJlcGxhY2UoLyhbYS16XSkoW0EtWl0pL2csICckMSAkMicpXG4gICAgICAucmVwbGFjZSgvXi4vLCAoc3RyKSA9PiBzdHIudG9VcHBlckNhc2UoKSk7XG4gIH1cblxuICAvLyBHU1RJTiBzdGF0ZS1jb2RlIHByZWZpeCDihpIgU3RhdGUgKFBsYWNlIG9mIFN1cHBseSlcbiAgcHJpdmF0ZSByZWFkb25seSBnc3RTdGF0ZUNvZGVNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgJzAxJzogJ0phbW11IGFuZCBLYXNobWlyJyxcbiAgICAnMDInOiAnSGltYWNoYWwgUHJhZGVzaCcsXG4gICAgJzAzJzogJ1B1bmphYicsXG4gICAgJzA0JzogJ0NoYW5kaWdhcmgnLFxuICAgICcwNSc6ICdVdHRhcmFraGFuZCcsXG4gICAgJzA2JzogJ0hhcnlhbmEnLFxuICAgICcwNyc6ICdEZWxoaScsXG4gICAgJzA4JzogJ1JhamFzdGhhbicsXG4gICAgJzA5JzogJ1V0dGFyIFByYWRlc2gnLFxuICAgICcxMCc6ICdCaWhhcicsXG4gICAgJzExJzogJ1Npa2tpbScsXG4gICAgJzEyJzogJ0FydW5hY2hhbCBQcmFkZXNoJyxcbiAgICAnMTMnOiAnTmFnYWxhbmQnLFxuICAgICcxNCc6ICdNYW5pcHVyJyxcbiAgICAnMTUnOiAnTWl6b3JhbScsXG4gICAgJzE2JzogJ1RyaXB1cmEnLFxuICAgICcxNyc6ICdNZWdoYWxheWEnLFxuICAgICcxOCc6ICdBc3NhbScsXG4gICAgJzE5JzogJ1dlc3QgQmVuZ2FsJyxcbiAgICAnMjAnOiAnSmhhcmtoYW5kJyxcbiAgICAnMjEnOiAnT2Rpc2hhJyxcbiAgICAnMjInOiAnQ2hoYXR0aXNnYXJoJyxcbiAgICAnMjMnOiAnTWFkaHlhIFByYWRlc2gnLFxuICAgICcyNCc6ICdHdWphcmF0JyxcbiAgICAnMjUnOiAnRGFtYW4gYW5kIERpdScsXG4gICAgJzI2JzogJ0RhZHJhIGFuZCBOYWdhciBIYXZlbGkgYW5kIERhbWFuIGFuZCBEaXUnLFxuICAgICcyNyc6ICdNYWhhcmFzaHRyYScsXG4gICAgJzI4JzogJ0FuZGhyYSBQcmFkZXNoIChPbGQpJyxcbiAgICAnMjknOiAnS2FybmF0YWthJyxcbiAgICAnMzAnOiAnR29hJyxcbiAgICAnMzEnOiAnTGFrc2hhZHdlZXAnLFxuICAgICczMic6ICdLZXJhbGEnLFxuICAgICczMyc6ICdUYW1pbCBOYWR1JyxcbiAgICAnMzQnOiAnUHVkdWNoZXJyeScsXG4gICAgJzM1JzogJ0FuZGFtYW4gYW5kIE5pY29iYXIgSXNsYW5kcycsXG4gICAgJzM2JzogJ1RlbGFuZ2FuYScsXG4gICAgJzM3JzogJ0FuZGhyYSBQcmFkZXNoJyxcbiAgICAnMzgnOiAnTGFkYWtoJyxcbiAgICAnOTcnOiAnT3RoZXIgVGVycml0b3J5JyxcbiAgICAnOTknOiAnQ2VudHJlIEp1cmlzZGljdGlvbidcbiAgfTtcblxuICBvbkdzdENoYW5nZShmb3JtQXJyYXlJbmRleDogbnVtYmVyLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgY29uc3QgZ3N0ID0gKHZhbHVlIHx8ICcnKS50cmltKCkudG9VcHBlckNhc2UoKTtcbiAgICBjb25zdCBwbGFjZU9mU3VwcGx5Q3RybCA9IHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdwbGFjZU9mU3VwcGx5Jyk7XG4gICAgaWYgKGdzdC5sZW5ndGggPCAyKSB7XG4gICAgICBwbGFjZU9mU3VwcGx5Q3RybD8uc2V0VmFsdWUoJycpO1xuICAgICAgdGhpcy5nc3RMb29rdXBTdGF0ZVtmb3JtQXJyYXlJbmRleF0gPSAnaWRsZSc7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGNvZGUgPSBnc3Quc3Vic3RyaW5nKDAsIDIpO1xuICAgIGNvbnN0IHN0YXRlTmFtZSA9IHRoaXMuZ3N0U3RhdGVDb2RlTWFwW2NvZGVdO1xuICAgIGlmIChzdGF0ZU5hbWUpIHtcbiAgICAgIHBsYWNlT2ZTdXBwbHlDdHJsPy5zZXRWYWx1ZShgJHtzdGF0ZU5hbWV9ICgke2NvZGV9KWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBwbGFjZU9mU3VwcGx5Q3RybD8uc2V0VmFsdWUoJycpO1xuICAgIH1cblxuICAgIC8vIEZ1bGwgR1NUSU4gaXMgMTUgY2hhcnMgKDE1LWNoYXIgYWxwaGFudW1lcmljKS4gVHJpZ2dlciB0aGUgYWRkcmVzc1xuICAgIC8vIGxvb2t1cCBvbmNlIHRoZSB1c2VyIGhhcyB0eXBlZCBhbGwgMTUuIFNraXAgaWYgd2UgYWxyZWFkeSBsb29rZWQgdGhpc1xuICAgIC8vIGV4YWN0IHZhbHVlIHVwIGZvciB0aGlzIHJvdyDigJQgb3RoZXJ3aXNlIHRoZSAoaW5wdXQpIGV2ZW50IHdvdWxkIHJlZmlyZVxuICAgIC8vIG9uIGZvY3VzL2JsdXIgYW5kIGNsb2JiZXIgYW55IG1hbnVhbCB0d2Vha3MgdGhlIHVzZXIgbWFkZS5cbiAgICBpZiAoZ3N0Lmxlbmd0aCA9PT0gMTUgJiYgdGhpcy5sYXN0TG9va2VkVXBHc3Rpbltmb3JtQXJyYXlJbmRleF0gIT09IGdzdCkge1xuICAgICAgdGhpcy5sb29rdXBBbmRGaWxsQWRkcmVzcyhmb3JtQXJyYXlJbmRleCwgZ3N0KTtcbiAgICB9IGVsc2UgaWYgKGdzdC5sZW5ndGggPCAxNSkge1xuICAgICAgLy8gUmVzZXQgc3RhdGUgc28gYSBwcmV2aW91cyBcImZvdW5kXCIgaW5kaWNhdG9yIGRvZXNuJ3Qgc3RpY2sgYXJvdW5kXG4gICAgICAvLyB3aGlsZSB0aGUgdXNlciBpcyBlZGl0aW5nIHRoZSBudW1iZXIgdG8gYSBuZXcgdmFsdWUuXG4gICAgICB0aGlzLmdzdExvb2t1cFN0YXRlW2Zvcm1BcnJheUluZGV4XSA9ICdpZGxlJztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGxvb2t1cEFuZEZpbGxBZGRyZXNzKGZvcm1BcnJheUluZGV4OiBudW1iZXIsIGdzdDogc3RyaW5nKSB7XG4gICAgdGhpcy5nc3RMb29rdXBTdGF0ZVtmb3JtQXJyYXlJbmRleF0gPSAnbG9hZGluZyc7XG4gICAgdGhpcy5iaWxsaW5nU2VydmljZS5sb29rdXBHc3Rpbihnc3QpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIC8vIEJhY2tlbmQgd3JhcDogeyBjb2RlLCBzdGF0dXMsIGRhdGE6IDxwYXlsb2FkPiB9LiBQYXlsb2FkIGl0c2VsZlxuICAgICAgICAvLyBtYXkgYWxzbyBiZSBuZXN0ZWQgdW5kZXIgYGRhdGFgIGlmIHRoZSByZXNwb25zZSBtaWRkbGV3YXJlIGRvdWJsZS1cbiAgICAgICAgLy8gd3JhcHMgaXQ7IGhhbmRsZSBib3RoIHNoYXBlcyB0byBiZSBzYWZlLlxuICAgICAgICBjb25zdCBwYXlsb2FkID0gcmVzPy5kYXRhPy5kYXRhIHx8IHJlcz8uZGF0YSB8fCB7fTtcbiAgICAgICAgaWYgKCFwYXlsb2FkIHx8ICFwYXlsb2FkLmdzdGluKSB7XG4gICAgICAgICAgdGhpcy5nc3RMb29rdXBTdGF0ZVtmb3JtQXJyYXlJbmRleF0gPSAnbm90Zm91bmQnO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCk7XG4gICAgICAgIC8vIFBhdGNoIG9ubHkgdGhlIGFkZHJlc3MtcmVsYXRlZCBmaWVsZHMuIERvbid0IG92ZXJ3cml0ZSBncm91cE5hbWUsXG4gICAgICAgIC8vIGdyb3VwVGFnLCBzdG9yZXMsIGN1cnJlbmN5LCBwYXltZW50VGVybSDigJQgdGhvc2UgYXJlIHVzZXIgY2hvaWNlcyxcbiAgICAgICAgLy8gbm90IGRlcml2ZWQgZnJvbSBHU1RJTi5cbiAgICAgICAgY29uc3QgcGF0Y2g6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICAgICAgaWYgKHBheWxvYWQubGVnYWxOYW1lKSBwYXRjaFsncmVnaXN0ZXJlZENvbXBhbnlOYW1lJ10gPSBTdHJpbmcocGF5bG9hZC5sZWdhbE5hbWUpLnRvVXBwZXJDYXNlKCk7XG4gICAgICAgIGlmIChwYXlsb2FkLmFkZHJlc3NMaW5lT25lKSBwYXRjaFsnYWRkcmVzc0xpbmVPbmUnXSA9IHBheWxvYWQuYWRkcmVzc0xpbmVPbmU7XG4gICAgICAgIGlmIChwYXlsb2FkLmFkZHJlc3NMaW5lVHdvKSBwYXRjaFsnYWRkcmVzc0xpbmVUd28nXSA9IHBheWxvYWQuYWRkcmVzc0xpbmVUd287XG4gICAgICAgIGlmIChwYXlsb2FkLmNpdHkpIHBhdGNoWydjaXR5J10gPSBwYXlsb2FkLmNpdHk7XG4gICAgICAgIGlmIChwYXlsb2FkLnN0YXRlKSBwYXRjaFsnc3RhdGUnXSA9IHBheWxvYWQuc3RhdGU7XG4gICAgICAgIGlmIChwYXlsb2FkLmNvdW50cnkpIHBhdGNoWydjb3VudHJ5J10gPSBwYXlsb2FkLmNvdW50cnk7XG4gICAgICAgIGlmIChwYXlsb2FkLnBpbkNvZGUpIHBhdGNoWydwaW5Db2RlJ10gPSBwYXlsb2FkLnBpbkNvZGU7XG4gICAgICAgIGlmIChwYXlsb2FkLnBsYWNlT2ZTdXBwbHkpIHBhdGNoWydwbGFjZU9mU3VwcGx5J10gPSBwYXlsb2FkLnBsYWNlT2ZTdXBwbHk7XG4gICAgICAgIGdyb3VwLnBhdGNoVmFsdWUocGF0Y2gpO1xuICAgICAgICB0aGlzLmxhc3RMb29rZWRVcEdzdGluW2Zvcm1BcnJheUluZGV4XSA9IGdzdDtcbiAgICAgICAgdGhpcy5nc3RMb29rdXBTdGF0ZVtmb3JtQXJyYXlJbmRleF0gPSAnZm91bmQnO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgLy8gNDA0ID0gdW5rbm93biBHU1RJTjsgZXZlcnl0aGluZyBlbHNlIHN1cmZhY2VzIGFzIGFuIGVycm9yIHNvIHRoZVxuICAgICAgICAvLyB1c2VyIGtub3dzIHRoZSBhdXRvLWZpbGwgZGlkbid0IGhhcHBlbiBhbmQgdGhleSBzaG91bGQgZW50ZXJcbiAgICAgICAgLy8gbWFudWFsbHkuXG4gICAgICAgIHRoaXMuZ3N0TG9va3VwU3RhdGVbZm9ybUFycmF5SW5kZXhdID0gZXJyPy5zdGF0dXMgPT09IDQwNCA/ICdub3Rmb3VuZCcgOiAnZXJyb3InO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG59IiwiPGRpdiBjbGFzcz1cIm1vZGFsLWJvZHlcIj5cbjxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuIG1iLTVcIj5cbiAgICA8ZGl2IGNsYXNzPVwiaGVhZGVyXCI+XG4gICAgICAgIFVwZGF0ZSBCaWxsaW5nIEluZm9ybWF0aW9uXG4gICAgPC9kaXY+XG4gICAgPGRpdj5cbiAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwiYWRkQmlsbGluZ0dyb3VwKClcIiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidG4tb3V0bGluZSBidG4gYWxpZ24taXRlbXMtZW5kIG5lZWRoZWxwXCI+PHNwYW5cbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1lLTJcIj5cbiAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk0xMC4wMDEzIDQuMTY2MDJWMTUuODMyN000LjE2Nzk3IDkuOTk5MzVIMTUuODM0NlwiIHN0cm9rZT1cIiMzNDQwNTRcIiBzdHJva2Utd2lkdGg9XCIxLjY3XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICA8L3NwYW4+QWRkIEJpbGxpbmcgR3JvdXA8L2J1dHRvbj5cbiAgICA8L2Rpdj5cbjwvZGl2PlxuXG5cbjxmb3JtIFtmb3JtR3JvdXBdPVwiYmlsbGluZ0Zvcm1cIj5cbiAgICA8ZGl2ICpuZ0lmPVwiYmlsbGluZ0dyb3Vwcy5sZW5ndGggPiAxXCIgZm9ybUFycmF5TmFtZT1cImdyb3Vwc1wiIG5nYkFjY29yZGlvbiBhY2NvcmRpb249XCJOZ2JBY2NvcmRpb25cIlxuICAgICAgICBbY2xvc2VPdGhlcnNdPVwidHJ1ZVwiPlxuICAgICAgICA8ZGl2ICpuZ0Zvcj1cImxldCBncm91cCBvZiBiaWxsaW5nR3JvdXBzLmNvbnRyb2xzOyBsZXQgaSA9IGluZGV4O1wiIFtmb3JtR3JvdXBOYW1lXT1cImlcIlxuICAgICAgICAgICAgW25nYkFjY29yZGlvbkl0ZW1dPVwiaS50b1N0cmluZygpXCIgY2xhc3M9XCJtYi01XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCIgbmdiQWNjb3JkaW9uSGVhZGVyPlxuICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwibWFpbmhlYWRpbmcgcC0wXCIgbmdiQWNjb3JkaW9uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTJcIj57e2dyb3VwLmdldCgnZ3JvdXBOYW1lJyk/LnZhbHVlfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ3JvdXAuZ2V0KCdpc1ByaW1hcnknKT8udmFsdWVcIiBjbGFzcz1cInByaW1hcnktYmFkZ2VcIj5QcmltYXJ5PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFncm91cC5nZXQoJ2lzUHJpbWFyeScpPy52YWx1ZVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9uRGVsZXRlR3JvdXAoaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIyMFwiIGhlaWdodD1cIjIwXCIgdmlld0JveD1cIjAgMCAyMCAyMFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0yLjUgNC45OTkzNUg0LjE2NjY3TTQuMTY2NjcgNC45OTkzNUwxNy41IDQuOTk5MzVNNC4xNjY2NyA0Ljk5OTM1TDQuMTY2NjcgMTYuNjY2QzQuMTY2NjcgMTcuMTA4IDQuMzQyMjYgMTcuNTMyIDQuNjU0ODIgMTcuODQ0NUM0Ljk2NzM4IDE4LjE1NzEgNS4zOTEzMSAxOC4zMzI3IDUuODMzMzMgMTguMzMyN0gxNC4xNjY3QzE0LjYwODcgMTguMzMyNyAxNS4wMzI2IDE4LjE1NzEgMTUuMzQ1MiAxNy44NDQ1QzE1LjY1NzcgMTcuNTMyIDE1LjgzMzMgMTcuMTA4IDE1LjgzMzMgMTYuNjY2TDE1LjgzMzMgNC45OTkzNUw0LjE2NjY3IDQuOTk5MzVaTTYuNjY2NjcgNC45OTkzNVYzLjMzMjY4QzYuNjY2NjcgMi44OTA2NSA2Ljg0MjI2IDIuNDY2NzMgNy4xNTQ4MiAyLjE1NDE3QzcuNDY3MzggMS44NDE2MSA3Ljg5MTMxIDEuNjY2MDIgOC4zMzMzMyAxLjY2NjAyTDExLjY2NjcgMS42NjYwMkMxMi4xMDg3IDEuNjY2MDIgMTIuNTMyNiAxLjg0MTYxIDEyLjg0NTIgMi4xNTQxN0MxMy4xNTc3IDIuNDY2NzMgMTMuMzMzMyAyLjg5MDY1IDEzLjMzMzMgMy4zMzI2OFY0Ljk5OTM1TTguMzMzMzMgOS4xNjYwMkw4LjMzMzMzIDE0LjE2Nk0xMS42NjY3IDkuMTY2MDJWMTQuMTY2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRpdmlkZXJcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGRpdiBuZ2JBY2NvcmRpb25Db2xsYXBzZT5cbiAgICAgICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkJvZHkgY2xhc3M9XCJwcy0wIHBlLTBcIj5cbiAgICAgICAgICAgICAgICAgICAgPCEtLSBbbmdDbGFzc109XCJncm91cC5nZXQoJ2lzUHJpbWFyeScpPy52YWx1ZSA/ICdyb3ctY29scy0yJyA6ICcnXCIgLS0+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWIgcm93IHJvdy1jb2xzLTMgIGctMCBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25UYWJDaGFuZ2UoaSwgJ2Jhc2ljLWluZm8nKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdyb3VwLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSA9PT0gJ2Jhc2ljLWluZm8nID8gJ3NlbGVjdGVkJyA6ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpdGVtXCI+QmFzaWMgSW5mbzwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25UYWJDaGFuZ2UoaSwgJ3N0b3JlLXNlbGVjdGlvbicpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ3JvdXAuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlID09PSAnc3RvcmUtc2VsZWN0aW9uJyA/ICdzZWxlY3RlZCcgOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXRlbVwiPlN0b3JlIFNlbGVjdGlvbjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25UYWJDaGFuZ2UoaSwgJ3NldHRpbmdzJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgPT09ICdzZXR0aW5ncycgPyAnc2VsZWN0ZWQnIDogJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIml0ZW1cIj5TZXR0aW5nczwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImdyb3VwLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSAhPT0gJ2Jhc2ljLWluZm8nID8gJ2Qtbm9uZScgOiAnJ1wiIGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZ3JvdXBOYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+R3JvdXAgTmFtZSo8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImdyb3VwTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImdyb3VwTmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ2dyb3VwTmFtZScpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgnZ3JvdXBOYW1lJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdncm91cE5hbWUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgnZ3JvdXBOYW1lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIG5hbWUgaXMgcmVxdWlyZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiZ3JvdXBUYWdcIiBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCIgW2RhdGFdPVwiZ3JvdXBUYWdPcHRpb25zXCIgW2xhYmVsXT1cIidHcm91cCBUYWcqJ1wiPjwvbGliLXJlYWN0aXZlLXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdncm91cFRhZycpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdncm91cFRhZycpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHcm91cCB0YWcgaXMgcmVxdWlyZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInJlZ2lzdGVyZWRDb21wYW55TmFtZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlJlZ2lzdGVyZWQgQ29tcGFueSBOYW1lKjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgKGlucHV0KT1cImZvcmNlVXBwZXJjYXNlKCRldmVudCwgaSlcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJyZWdpc3RlcmVkQ29tcGFueU5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJyZWdpc3RlcmVkQ29tcGFueU5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgncmVnaXN0ZXJlZENvbXBhbnlOYW1lJyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdyZWdpc3RlcmVkQ29tcGFueU5hbWUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ3JlZ2lzdGVyZWRDb21wYW55TmFtZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdyZWdpc3RlcmVkQ29tcGFueU5hbWUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZCBjb21wYW55IG5hbWUgaXMgcmVxdWlyZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImdzdFwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkdTVDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgKGlucHV0KT1cIm9uR3N0Q2hhbmdlKGksICRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiZ3N0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZ3N0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgnZ3N0Jyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdnc3QnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ2dzdCcpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdnc3QnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NUIGlzIHJlcXVpcmVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBHU1RJTiBhZGRyZXNzLWxvb2t1cCBmZWVkYmFjay4gU3RhdGUgbWFjaGluZSBkcml2ZW4gYnkgbG9va3VwQW5kRmlsbEFkZHJlc3MoKS4gLS0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZ3N0LWxvb2t1cC1tc2cgdGV4dC1tdXRlZFwiICpuZ0lmPVwiZ3N0TG9va3VwU3RhdGVbaV0gPT09ICdsb2FkaW5nJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb29raW5nIHVwIHJlZ2lzdGVyZWQgYWRkcmVzc+KAplxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZ3N0LWxvb2t1cC1tc2cgdGV4dC1zdWNjZXNzXCIgKm5nSWY9XCJnc3RMb29rdXBTdGF0ZVtpXSA9PT0gJ2ZvdW5kJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcmVkIGFkZHJlc3MgYXV0by1maWxsZWQuIEVkaXQgaWYgbmVlZGVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZ3N0LWxvb2t1cC1tc2cgdGV4dC13YXJuaW5nXCIgKm5nSWY9XCJnc3RMb29rdXBTdGF0ZVtpXSA9PT0gJ25vdGZvdW5kJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBObyByZWdpc3RlcmVkIGFkZHJlc3MgZm91bmQgZm9yIHRoaXMgR1NUSU4uIEVudGVyIG1hbnVhbGx5LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZ3N0LWxvb2t1cC1tc2cgdGV4dC1kYW5nZXJcIiAqbmdJZj1cImdzdExvb2t1cFN0YXRlW2ldID09PSAnZXJyb3InXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MgbG9va3VwIGZhaWxlZC4gRW50ZXIgbWFudWFsbHkuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi01IHN1Yi1oZWFkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzIERldGFpbHNcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImFkZHJlc3NMaW5lT25lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QWRkcmVzcyBsaW5lIDE8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImFkZHJlc3NMaW5lT25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWRkcmVzc0xpbmVPbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZU9uZScpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgnYWRkcmVzc0xpbmVPbmUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ2FkZHJlc3NMaW5lT25lJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ2FkZHJlc3NMaW5lT25lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MgaXMgcmVxdWlyZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImFkZHJlc3NMaW5lVHdvXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QWRkcmVzcyBsaW5lIDI8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImFkZHJlc3NMaW5lVHdvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWRkcmVzc0xpbmVUd29cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZVR3bycpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgnYWRkcmVzc0xpbmVUd28nKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ2FkZHJlc3NMaW5lVHdvJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ2FkZHJlc3NMaW5lVHdvJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MgaXMgcmVxdWlyZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImNpdHlcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5DaXR5PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJjaXR5XCIgZm9ybUNvbnRyb2xOYW1lPVwiY2l0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ2NpdHknKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ2NpdHknKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ2NpdHknKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgnY2l0eScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaXR5IGlzIHJlcXVpcmVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJzdGF0ZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlN0YXRlL3Byb3ZpbmNlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJzdGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInN0YXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgnc3RhdGUnKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ3N0YXRlJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdzdGF0ZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdzdGF0ZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY291bnRyeVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNvdW50cnk8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImNvdW50cnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb3VudHJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgnY291bnRyeScpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgnY291bnRyeScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgnY291bnRyeScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdjb3VudHJ5Jyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50cnkgaXMgcmVxdWlyZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBpbkNvZGVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5QaW4gY29kZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJwaW5Db2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGluQ29kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ3BpbkNvZGUnKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ3BpbkNvZGUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ3BpbkNvZGUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgncGluQ29kZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaW4gY29kZSBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGxhY2VPZlN1cHBseVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlBsYWNlIG9mIFN1cHBseTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwicGxhY2VPZlN1cHBseVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBsYWNlT2ZTdXBwbHlcIiByZWFkb25seVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdwbGFjZU9mU3VwcGx5Jyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdwbGFjZU9mU3VwcGx5Jyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdwbGFjZU9mU3VwcGx5Jyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ3BsYWNlT2ZTdXBwbHknKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxhY2Ugb2Ygc3VwcGx5IGlzIHJlcXVpcmVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwb1wiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlBPPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJwb1wiIGZvcm1Db250cm9sTmFtZT1cInBvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgncG8nKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ3BvJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdwbycpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdwbycpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdXJjaGFzZSBvcmRlciBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZ3JvdXAuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlICE9PSAnc3RvcmUtc2VsZWN0aW9uJyA/ICdkLW5vbmUnIDogJydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtaW5wdXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaWNvblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTggMThcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZD1cIk0xMS41IDEwTDExLjQzIDEwLjczQzEyLjQxIDkuNTkgMTMgOC4xMSAxMyA2LjVDMTMgMi45MSAxMC4wOSAwIDYuNSAwQzIuOTEgMCAwIDIuOTEgMCA2LjVDMCAxMC4wOSAyLjkxIDEzIDYuNSAxM0M4LjExIDEzIDkuNTkgMTIuNDEgMTAuNzMgMTEuNDNMMTAuMjc2MiAxMS43MUwxNiAxNy40OUwxNy40OSAxNkwxMS41IDEwWk02LjUgMTFDNC4wMSAxMSAyIDguOTkgMiA2LjVDMiA0LjAxIDQuMDEgMiA2LjUgMkM4Ljk5IDIgMTEgNC4wMSAxMSA2LjVDMTEgOC45OSA4Ljk5IDExIDYuNSAxMVpcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsbD1cImJsYWNrXCIgZmlsbC1vcGFjaXR5PVwiMC41NFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBbZm9ybUNvbnRyb2xdPVwic2VhcmNoSW5wdXRcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sIHBzLTE0IG1lLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIFN0b3JlXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1maWx0ZXJzICpuZ0lmPVwiZmlsdGVyRGF0YS5sZW5ndGhcIiBjbGFzcz1cIm1lLTJcIiBbZGF0YU9iamVjdF09XCJmaWx0ZXJEYXRhXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhcHBsaWVkRmlsdGVycyk9XCJhcHBseUZpbHRlcnMoJGV2ZW50KVwiPjwvbGliLWZpbHRlcnM+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIoc3Vic2NyaWJlZFN0b3Jlc0FwaVN0YXRlIHwgYXN5bmMpID09PSAnbG9hZGVkJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJzdWJzY3JpYmVkU3RvcmVMaXN0Py5sZW5ndGhcIiA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmUgc3RvcmUtdGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPVwidGFibGUgYm90dG9tLWJvcmRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW2NoZWNrZWRdPVwiaXNBbGxTdG9yZXNTZWxlY3RlZEluR3JvdXAoaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ3JvdXAuZ2V0KCdpc1ByaW1hcnknKT8udmFsdWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uU2VsZWN0QWxsU3RvcmVzKCRldmVudCwgaSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXIgbWUtNFwiIHR5cGU9XCJjaGVja2JveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBmb3I9XCJmbGV4Q2hlY2tEZWZhdWx0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPlN0b3JlIE5hbWU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdzdG9yZU5hbWUnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ3N0b3JlTmFtZScgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxNiAxNlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjMzMzMzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlN0b3JlIElkXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIGNsYXNzPVwiY3Vyc29yLXBvaW50ZXJcIiAoY2xpY2spPVwib25Tb3J0KCdzdG9yZUlkJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInNvcnRlZENvbHVtbiA9PT0gJ3N0b3JlSWQnICYmIHNvcnREaXJlY3Rpb24gPT09IDEgPyAncm90YXRlJyA6ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNlwiIGhlaWdodD1cIjE2XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTguMDAwMTYgMy4zMzMzN1YxMi42NjY3TTguMDAwMTYgMTIuNjY2N0wxMi42NjY4IDguMDAwMDRNOC4wMDAxNiAxMi42NjY3TDMuMzMzNSA4LjAwMDA0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Qcm9kdWN0czwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBkYXRhIG9mIHN1YnNjcmliZWRTdG9yZUxpc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgW2NoZWNrZWRdPVwiaXNTdG9yZVNlbGVjdGVkSW5Hcm91cChpLCBkYXRhPy5zdG9yZUlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJncm91cC5nZXQoJ2lzUHJpbWFyeScpPy52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25TdG9yZUNoZWNrKCRldmVudCwgaSwgZGF0YT8uc3RvcmVJZClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgY3Vyc29yLXBvaW50ZXIgbWUtNFwiIHR5cGU9XCJjaGVja2JveFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZS1uYW1lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHt7ZGF0YT8uc3RvcmVOYW1lfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3RvcmUtaWRcIj5JRCA6IHt7ZGF0YT8uc3RvcmVJZH19PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInByb2R1Y3RzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgcHJvZHVjdCBvZiBkYXRhPy5wcm9kdWN0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicHJvZHVjdCA9PT0gJ3RhbmdvVHJhZmZpYydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwIG1lLTIgbWItMlwiPlRyYWZmaWM8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicHJvZHVjdCA9PT0gJ3RhbmdvWm9uZSdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwIG1lLTIgbWItMlwiPlpvbmU8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwicHJvZHVjdCA9PT0gJ3RhbmdvVHJheCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJjaGlwIG1lLTIgbWItMlwiPlRyYXg8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwic3Vic2NyaWJlZFN0b3JlTGlzdC5sZW5ndGhcIiBjbGFzcz1cIm15LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1wYWdpbmF0aW9uIFtpdGVtc1BlclBhZ2VdPVwiaXRlbXNQZXJQYWdlXCIgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0b3RhbEl0ZW1zXT1cInRvdGFsSXRlbXNcIiBbcGFnaW5hdGlvblNpemVzXT1cInBhZ2luYXRpb25TaXplc1wiIFtwYWdlU2l6ZV09XCJwYWdlU2l6ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocGFnZVNpemVDaGFuZ2UpPVwib25QYWdlU2l6ZUNoYW5nZSgkZXZlbnQpXCI+PC9saWItcGFnaW5hdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4gICAgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXN1YnNjcmliZWRTdG9yZUxpc3Q/Lmxlbmd0aFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1sZy0xMiBtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNhcmQtYm9keSBkLWZsZXgganVzdGlmeS1jb250ZW50LWNlbnRlciBhbGlnbi1pdGVtcy1jZW50ZXIgZmxleC1jb2x1bW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBjbGFzcz1cImltZy1zcmMgdy0yNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmM9XCIuL2Fzc2V0cy90YW5nby9JY29ucy9Ob2RhdGEuc3ZnXCIgYWx0PVwiXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihzdWJzY3JpYmVkU3RvcmVzQXBpU3RhdGUgfCBhc3luYykgPT09ICdsb2FkaW5nJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyLWNhcmQgdy0xMDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvdyBsb2FkZXIgIGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZ3JvdXAuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlICE9PSAnc2V0dGluZ3MnID8gJ2Qtbm9uZScgOiAnJ1wiIGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+UHJpY2luZyBNZXRob2Q8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicHJvUmF0YVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCIgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ3Byb3JhdGUtJyArIGlcIiB2YWx1ZT1cInByb3JhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWUtMlwiIFtmb3JdPVwiJ3Byb3JhdGUtJyArIGlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9yYXRlIOKAlCBiaWxsIGZvciBhY3R1YWwgd29ya2luZyBkYXlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJwcm9SYXRhXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIiB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCInZmxhdC0nICsgaVwiIHZhbHVlPVwiZmxhdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtZS0yXCIgW2Zvcl09XCInZmxhdC0nICsgaVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsYXQg4oCUIGJpbGwgZm9yIHRoZSB3aG9sZSBtb250aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5BZHZhbmNlIEludm9pY2U8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMVwiIG5nYlRvb2x0aXA9XCJDcmVhdGVzIGFuIGludm9pY2UgZm9yIHRoZSBuZXh0IG1vbnRoIGF1dG9tYXRpY2FsbHkgdXBvbiBzYXZpbmdcIiBwbGFjZW1lbnQ9XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxNFwiIGhlaWdodD1cIjE0XCIgdmlld0JveD1cIjAgMCAxNCAxNFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTcgMTNDMTAuMzEzNyAxMyAxMyAxMC4zMTM3IDEzIDdDMTMgMy42ODYyOSAxMC4zMTM3IDEgNyAxQzMuNjg2MjkgMSAxIDMuNjg2MjkgMSA3QzEgMTAuMzEzNyAzLjY4NjI5IDEzIDcgMTNaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNyA5LjRWN003IDQuNkg3LjAwNlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1jaGVjayBmb3JtLXN3aXRjaFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidhZHZhbmNlSW52b2ljZV8nICsgaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWR2YW5jZUludm9pY2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBbZm9yXT1cIidhZHZhbmNlSW52b2ljZV8nICsgaVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIGluIGFkdmFuY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYmlsbGluZ0dyb3Vwcy5hdChpKS5nZXQoJ2FkdmFuY2VJbnZvaWNlJyk/LnZhbHVlXCIgY2xhc3M9XCJtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsIHNtYWxsIGZ3LXNlbWlib2xkXCI+QWR2YW5jZSBmcmVxdWVuY3k8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwiYWR2YW5jZVBlcmlvZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdCBvZiBhZHZhbmNlUGVyaW9kT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHQudmFsdWVcIj57eyBvcHQubGFiZWwgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGwgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkdmFuY2UgaW52b2ljZSB3aWxsIGNvdmVyIHt7IGFkdmFuY2VJbnZvaWNlUmFuZ2UoYmlsbGluZ0dyb3Vwcy5hdChpKS5nZXQoJ2FkdmFuY2VQZXJpb2QnKT8udmFsdWUpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbWItNVwiICpuZ0lmPVwic3Vic2NyaWJlZFByb2R1Y3RzLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItM1wiPlByb2R1Y3QgQmlsbGluZyBNZXRob2Q8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gTm90ZTogbm8gLnRhYmxlLXJlc3BvbnNpdmUgd3JhcHBlciBoZXJlLiBJdHMgb3ZlcmZsb3cteDphdXRvXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwcyB0aGUgQmlsbGluZyBNZXRob2QgZHJvcGRvd24gb3B0aW9ucyBwYW5lbC4gVGhlIHRhYmxlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmx5IGhhcyB0d28gY29sdW1ucywgc28gaG9yaXpvbnRhbCBzY3JvbGwgaXNuJ3QgbmVlZGVkLiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zbSBib3R0b20tYm9yZGVyIGJpbGxpbmctbWV0aG9kLXRhYmxlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+UHJvZHVjdDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkJpbGxpbmcgTWV0aG9kPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcHJvZCBvZiBzdWJzY3JpYmVkUHJvZHVjdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeVwiPnt7IGZvcm1hdFByb2R1Y3ROYW1lKHByb2QucHJvZHVjdE5hbWUpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0UHJvZHVjdEJpbGxpbmdNZXRob2QoaSwgcHJvZC5wcm9kdWN0TmFtZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkJpbGxpbmdNZXRob2RTZWxlY3RDaGFuZ2UoaSwgcHJvZC5wcm9kdWN0TmFtZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImJpbGxpbmdNZXRob2RPcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLXJlYWN0aXZlLXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJjdXJyZW5jeVwiIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJjdXJyZW5jeU9wdGlvbnNcIiBbbGFiZWxdPVwiJ0N1cnJlbmN5J1wiPjwvbGliLXJlYWN0aXZlLXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwidGF4Q2FsY3VsYXRpb25UeXBlXCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiIFtkYXRhXT1cInRheENhbGN1bGF0aW9uVHlwZU9wdGlvbnNcIiBbbGFiZWxdPVwiJ1RheCBDYWxjdWxhdGlvbidcIj48L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInBheW1lbnRDeWNsZVwiIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJwYXltZW50Q3ljbGVPcHRpb25zXCIgW2xhYmVsXT1cIidQYXltZW50IEN5Y2xlJ1wiPjwvbGliLXJlYWN0aXZlLXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwicGF5bWVudFRlcm1cIiBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCIgW2RhdGFdPVwicGF5bWVudFRlcm1PcHRpb25zXCIgW2xhYmVsXT1cIidQYXltZW50IFRlcm0nXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy0xMiBjb2wteGwtMTIgY29sLXh4bC0xMiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIFtmb3JdPVwiJ2VtYWlsJyArIGlcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5HZW5lcmF0ZSBJbnZvaWNlIFRvKiA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhbGVydC1yZXF1aXJlZFwiPjwvc3Bhbj48L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXRlci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImlucHV0LWNvbnRhaW5lciBmb3JtLWNvbnRyb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVtYWlsIG9mIGdyb3VwLmdldCgnZ2VuZXJhdGVJbnZvaWNlVG8nKT8udmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS0zXCI+e3sgZW1haWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJyZW1vdmVFbWFpbENoaXAoZW1haWwsIGkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTIgMTJcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAzTDMgOU0zIDNMOSA5XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgc3R5bGU9XCJtaW4taGVpZ2h0OiA0NHB4O1wiIChrZXlkb3duKT1cIm9uRW1haWxLZXlEb3duKCRldmVudCwgaSlcIiB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlbWFpbFZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtaW5wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ2dlbmVyYXRlSW52b2ljZVRvJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiAhZ3JvdXAuZ2V0KCdnZW5lcmF0ZUludm9pY2VUbycpPy52YWx1ZT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW52b2ljZSBlbWFpbCBpcyByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctMTIgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+U3RvcmUgTGlzdCBBbm5leHVyZSBBdHRhY2hlZCBXaXRoIEludm9pY2U8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZS00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJhdHRhY2hBbm5leHVyZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiIGlkPVwieWVzXCIgW3ZhbHVlXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtZS0yXCIgZm9yPVwieWVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBZZXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiYXR0YWNoQW5uZXh1cmVcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIiBpZD1cIm5vXCIgW3ZhbHVlXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWUtMlwiIGZvcj1cIm5vXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggYWxpZ24taXRlbXMtZW5kIGp1c3RpZnktY29udGVudC1lbmQgbXQtNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25DYW5jZWwoaSlcIiBjbGFzcz1cImJ0biBidG4tb3V0bGluZSB3LTEwMFwiPkNhbmNlbDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiZ3JvdXAuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlID09PSAnYmFzaWMtaW5mbycgfHwgZ3JvdXAuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlID09PSAnc3RvcmUtc2VsZWN0aW9uJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm5hdmlnYXRlKGkpXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDBcIj5OZXh0PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiZ3JvdXAuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlID09PSAnc2V0dGluZ3MnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25TdWJtaXQoZ3JvdXAudmFsdWUsIGkpXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDBcIj5TYXZlIENoYW5nZXM8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cblxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJiaWxsaW5nR3JvdXBzLmxlbmd0aCA9PT0gMVwiIGZvcm1BcnJheU5hbWU9XCJncm91cHNcIj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZ3JvdXAgb2YgYmlsbGluZ0dyb3Vwcy5jb250cm9sczsgbGV0IGkgPSBpbmRleDtcIiBbZm9ybUdyb3VwTmFtZV09XCJpXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0YWIgcm93IHJvdy1jb2xzLTIgZy0wIG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25UYWJDaGFuZ2UoaSwgJ2Jhc2ljLWluZm8nKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ3JvdXAuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlID09PSAnYmFzaWMtaW5mbycgPyAnc2VsZWN0ZWQnIDogJydcIiBjbGFzcz1cIml0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCYXNpY1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluZm88L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiAoY2xpY2spPVwib25UYWJDaGFuZ2UoaSwgJ3NldHRpbmdzJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdyb3VwLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSA9PT0gJ3NldHRpbmdzJyA/ICdzZWxlY3RlZCcgOiAnJ1wiIGNsYXNzPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgIT09ICdiYXNpYy1pbmZvJyA/ICdkLW5vbmUnIDogJydcIiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJyZWdpc3RlcmVkQ29tcGFueU5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5SZWdpc3RlcmVkIENvbXBhbnkgTmFtZSo8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgKGlucHV0KT1cImZvcmNlVXBwZXJjYXNlKCRldmVudCwgaSlcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJyZWdpc3RlcmVkQ29tcGFueU5hbWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlZ2lzdGVyZWRDb21wYW55TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9XCJ0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgncmVnaXN0ZXJlZENvbXBhbnlOYW1lJyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdyZWdpc3RlcmVkQ29tcGFueU5hbWUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdyZWdpc3RlcmVkQ29tcGFueU5hbWUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgncmVnaXN0ZXJlZENvbXBhbnlOYW1lJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZCBjb21wYW55IG5hbWUgaXMgcmVxdWlyZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZ3N0XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+R1NUPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIChpbnB1dCk9XCJvbkdzdENoYW5nZShpLCAkYW55KCRldmVudC50YXJnZXQpLnZhbHVlKVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImdzdFwiIGZvcm1Db250cm9sTmFtZT1cImdzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgnZ3N0Jyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdnc3QnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdnc3QnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgnZ3N0Jyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZCBjb21wYW55IG5hbWUgaXMgcmVxdWlyZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZ3N0LWxvb2t1cC1tc2cgdGV4dC1tdXRlZFwiICpuZ0lmPVwiZ3N0TG9va3VwU3RhdGVbaV0gPT09ICdsb2FkaW5nJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvb2tpbmcgdXAgcmVnaXN0ZXJlZCBhZGRyZXNz4oCmXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZ3N0LWxvb2t1cC1tc2cgdGV4dC1zdWNjZXNzXCIgKm5nSWY9XCJnc3RMb29rdXBTdGF0ZVtpXSA9PT0gJ2ZvdW5kJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWQgYWRkcmVzcyBhdXRvLWZpbGxlZC4gRWRpdCBpZiBuZWVkZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZ3N0LWxvb2t1cC1tc2cgdGV4dC13YXJuaW5nXCIgKm5nSWY9XCJnc3RMb29rdXBTdGF0ZVtpXSA9PT0gJ25vdGZvdW5kJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vIHJlZ2lzdGVyZWQgYWRkcmVzcyBmb3VuZCBmb3IgdGhpcyBHU1RJTi4gRW50ZXIgbWFudWFsbHkuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiZ3N0LWxvb2t1cC1tc2cgdGV4dC1kYW5nZXJcIiAqbmdJZj1cImdzdExvb2t1cFN0YXRlW2ldID09PSAnZXJyb3InXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcyBsb29rdXAgZmFpbGVkLiBFbnRlciBtYW51YWxseS5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTUgc3ViLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcyBEZXRhaWxzXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJhZGRyZXNzTGluZU9uZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkFkZHJlc3MgbGluZSAxPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImFkZHJlc3NMaW5lT25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZGRyZXNzTGluZU9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgnYWRkcmVzc0xpbmVPbmUnKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ2FkZHJlc3NMaW5lT25lJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgnYWRkcmVzc0xpbmVPbmUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgnYWRkcmVzc0xpbmVPbmUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzIGlzIHJlcXVpcmVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImFkZHJlc3NMaW5lVHdvXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QWRkcmVzcyBsaW5lIDI8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiYWRkcmVzc0xpbmVUd29cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFkZHJlc3NMaW5lVHdvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZVR3bycpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgnYWRkcmVzc0xpbmVUd28nKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZVR3bycpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZVR3bycpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MgaXMgcmVxdWlyZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY2l0eVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNpdHk8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiY2l0eVwiIGZvcm1Db250cm9sTmFtZT1cImNpdHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ2NpdHknKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ2NpdHknKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdjaXR5Jyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ2NpdHknKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaXR5IGlzIHJlcXVpcmVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN0YXRlXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+U3RhdGUvcHJvdmluY2U8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwic3RhdGVcIiBmb3JtQ29udHJvbE5hbWU9XCJzdGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgnc3RhdGUnKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ3N0YXRlJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgnc3RhdGUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgnc3RhdGUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0ZSBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjb3VudHJ5XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q291bnRyeTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJjb3VudHJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJjb3VudHJ5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdjb3VudHJ5Jyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdjb3VudHJ5Jyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgnY291bnRyeScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdjb3VudHJ5Jyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRyeSBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwaW5Db2RlXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UGluIGNvZGU8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgKGtleXByZXNzKT1cIm9taXRfc3BlY2lhbF9jaGFyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJwaW5Db2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwaW5Db2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdwaW5Db2RlJyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdwaW5Db2RlJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgncGluQ29kZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdwaW5Db2RlJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUGluIGNvZGUgaXMgcmVxdWlyZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGxhY2VPZlN1cHBseVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlBsYWNlIG9mIFN1cHBseTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJwbGFjZU9mU3VwcGx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwbGFjZU9mU3VwcGx5XCIgcmVhZG9ubHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdwbGFjZU9mU3VwcGx5Jyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdwbGFjZU9mU3VwcGx5Jyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgncGxhY2VPZlN1cHBseScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdwbGFjZU9mU3VwcGx5Jyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUGxhY2Ugb2Ygc3VwcGx5IGlzIHJlcXVpcmVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBvXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UE88L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwicG9cIiBmb3JtQ29udHJvbE5hbWU9XCJwb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgncG8nKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ3BvJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgncG8nKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgncG8nKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdXJjaGFzZSBvcmRlciBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgIT09ICdzZXR0aW5ncycgPyAnZC1ub25lJyA6ICcnXCIgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+UHJpY2luZyBNZXRob2Q8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibWItM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwicHJvUmF0YVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCIgdHlwZT1cInJhZGlvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCIncHJvcmF0ZS1lZGl0LScgKyBpXCIgdmFsdWU9XCJwcm9yYXRlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWUtMlwiIFtmb3JdPVwiJ3Byb3JhdGUtZWRpdC0nICsgaVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvcmF0ZSDigJQgYmlsbCBmb3IgYWN0dWFsIHdvcmtpbmcgZGF5c1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJwcm9SYXRhXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIiB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidmbGF0LWVkaXQtJyArIGlcIiB2YWx1ZT1cImZsYXRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtZS0yXCIgW2Zvcl09XCInZmxhdC1lZGl0LScgKyBpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGbGF0IOKAlCBiaWxsIGZvciB0aGUgd2hvbGUgbW9udGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+QWR2YW5jZSBJbnZvaWNlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibXMtMVwiIG5nYlRvb2x0aXA9XCJDcmVhdGVzIGFuIGludm9pY2UgZm9yIHRoZSBuZXh0IG1vbnRoIGF1dG9tYXRpY2FsbHkgdXBvbiBzYXZpbmdcIiBwbGFjZW1lbnQ9XCJ0b3BcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk03IDEzQzEwLjMxMzcgMTMgMTMgMTAuMzEzNyAxMyA3QzEzIDMuNjg2MjkgMTAuMzEzNyAxIDcgMUMzLjY4NjI5IDEgMSAzLjY4NjI5IDEgN0MxIDEwLjMxMzcgMy42ODYyOSAxMyA3IDEzWlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNyA5LjRWN003IDQuNkg3LjAwNlwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjJcIiBzdHJva2UtbGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlLWxpbmVqb2luPVwicm91bmRcIi8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBjbGFzcz1cImZvcm0tY2hlY2staW5wdXRcIiB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidhZHZhbmNlSW52b2ljZVNpbmdsZV8nICsgaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZHZhbmNlSW52b2ljZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCIgW2Zvcl09XCInYWR2YW5jZUludm9pY2VTaW5nbGVfJyArIGlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIGluIGFkdmFuY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiYmlsbGluZ0dyb3Vwcy5hdChpKS5nZXQoJ2FkdmFuY2VJbnZvaWNlJyk/LnZhbHVlXCIgY2xhc3M9XCJtdC0yXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgc21hbGwgZnctc2VtaWJvbGRcIj5BZHZhbmNlIGZyZXF1ZW5jeTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLXNlbGVjdFwiIGZvcm1Db250cm9sTmFtZT1cImFkdmFuY2VQZXJpb2RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IG9wdCBvZiBhZHZhbmNlUGVyaW9kT3B0aW9uc1wiIFt2YWx1ZV09XCJvcHQudmFsdWVcIj57eyBvcHQubGFiZWwgfX08L29wdGlvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ0ZXh0LW11dGVkIHNtYWxsIG10LTFcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkdmFuY2UgaW52b2ljZSB3aWxsIGNvdmVyIHt7IGFkdmFuY2VJbnZvaWNlUmFuZ2UoYmlsbGluZ0dyb3Vwcy5hdChpKS5nZXQoJ2FkdmFuY2VQZXJpb2QnKT8udmFsdWUpIH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIG1iLTVcIiAqbmdJZj1cInN1YnNjcmliZWRQcm9kdWN0cy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWwgbWItM1wiPlByb2R1Y3QgQmlsbGluZyBNZXRob2Q8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYmxlLXJlc3BvbnNpdmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSB0YWJsZS1zbSBib3R0b20tYm9yZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+UHJvZHVjdDwvdGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPkJpbGxpbmcgTWV0aG9kPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ciAqbmdGb3I9XCJsZXQgcHJvZCBvZiBzdWJzY3JpYmVkUHJvZHVjdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYmFkZ2UgYmFkZ2UtbGlnaHQtcHJpbWFyeVwiPnt7IGZvcm1hdFByb2R1Y3ROYW1lKHByb2QucHJvZHVjdE5hbWUpIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxdPVwiZ2V0UHJvZHVjdEJpbGxpbmdNZXRob2QoaSwgcHJvZC5wcm9kdWN0TmFtZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nTW9kZWxPcHRpb25zXT1cIntzdGFuZGFsb25lOiB0cnVlfVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmdNb2RlbENoYW5nZSk9XCJvbkJpbGxpbmdNZXRob2RTZWxlY3RDaGFuZ2UoaSwgcHJvZC5wcm9kdWN0TmFtZSwgJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkYXRhXT1cImJpbGxpbmdNZXRob2RPcHRpb25zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGliLXJlYWN0aXZlLXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RhYmxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImN1cnJlbmN5XCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiIFtkYXRhXT1cImN1cnJlbmN5T3B0aW9uc1wiIFtsYWJlbF09XCInQ3VycmVuY3knXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJ0YXhDYWxjdWxhdGlvblR5cGVcIiBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCIgW2RhdGFdPVwidGF4Q2FsY3VsYXRpb25UeXBlT3B0aW9uc1wiIFtsYWJlbF09XCInVGF4IENhbGN1bGF0aW9uJ1wiPjwvbGliLXJlYWN0aXZlLXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwicGF5bWVudEN5Y2xlXCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiIFtkYXRhXT1cInBheW1lbnRDeWNsZU9wdGlvbnNcIiBbbGFiZWxdPVwiJ1BheW1lbnQgQ3ljbGUnXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJwYXltZW50VGVybVwiIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJwYXltZW50VGVybU9wdGlvbnNcIiBbbGFiZWxdPVwiJ1BheW1lbnQgVGVybSdcIj48L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy0xMiBjb2wteGwtMTIgY29sLXh4bC0xMiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCInZW1haWwnICsgaVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkdlbmVyYXRlIEludm9pY2UgVG8qIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiYWxlcnQtcmVxdWlyZWRcIj48L3NwYW4+PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJvdXRlci1jb250YWluZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyIGZvcm0tY29udHJvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBlbWFpbCBvZiBncm91cC5nZXQoJ2dlbmVyYXRlSW52b2ljZVRvJyk/LnZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNoaXBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTNcIj57eyBlbWFpbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAoY2xpY2spPVwicmVtb3ZlRW1haWxDaGlwKGVtYWlsLCBpKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjEyXCIgaGVpZ2h0PVwiMTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTkgM0wzIDlNMyAzTDkgOVwiIHN0cm9rZT1cIiM2NjcwODVcIiBzdHJva2Utd2lkdGg9XCIxLjVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIHN0eWxlPVwibWluLWhlaWdodDogNDRweDtcIiAoa2V5ZG93bik9XCJvbkVtYWlsS2V5RG93bigkZXZlbnQsIGkpXCIgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9XCJlbWFpbFZhbHVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtaW5wXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ2dlbmVyYXRlSW52b2ljZVRvJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiAhZ3JvdXAuZ2V0KCdnZW5lcmF0ZUludm9pY2VUbycpPy52YWx1ZT8ubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW52b2ljZSBlbWFpbCBpcyByZXF1aXJlZFxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTEyIG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPlN0b3JlIExpc3QgQW5uZXh1cmUgQXR0YWNoZWQgV2l0aCBJbnZvaWNlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZS00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImF0dGFjaEFubmV4dXJlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIiBpZD1cInllc1wiIFt2YWx1ZV09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtZS0yXCIgZm9yPVwieWVzXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFllc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImF0dGFjaEFubmV4dXJlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwicmFkaW9cIiBpZD1cIm5vXCIgW3ZhbHVlXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtZS0yXCIgZm9yPVwibm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1lbmQganVzdGlmeS1jb250ZW50LWVuZCBtdC01XCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtNFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwibW9kYWxSZWYuY2xvc2UoKVwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHctMTAwXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgPT09ICdiYXNpYy1pbmZvJyB8fCBncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgPT09ICdzdG9yZS1zZWxlY3Rpb24nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJuYXZpZ2F0ZShpKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwXCI+TmV4dDwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgPT09ICdzZXR0aW5ncydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm9uU3VibWl0KGdyb3VwLnZhbHVlLCBpKVwiIGNsYXNzPVwiYnRuIGJ0bi1wcmltYXJ5IHctMTAwXCI+U2F2ZSBDaGFuZ2VzPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cblxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cblxuPC9mb3JtPlxuPC9kaXY+Il19
735
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmlsbGluZy1ncm91cC1mb3JtLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9iaWxsaW5nLWdyb3Vwcy9iaWxsaW5nLWdyb3VwLWZvcm0vYmlsbGluZy1ncm91cC1mb3JtLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RhbmdvLW1hbmFnZS1iaWxsaW5nL3NyYy9saWIvY29tcG9uZW50cy9iaWxsaW5nLWdyb3Vwcy9iaWxsaW5nLWdyb3VwLWZvcm0vYmlsbGluZy1ncm91cC1mb3JtLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsU0FBUyxFQUFFLEtBQUssRUFBcUIsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzlGLE9BQU8sRUFBMEIsV0FBVyxFQUFhLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzVGLE9BQU8sRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDL0YsT0FBTyxFQUFFLHFCQUFxQixFQUFrQixNQUFNLDRCQUE0QixDQUFDOzs7Ozs7OztBQVNuRixNQUFNLE9BQU8seUJBQXlCO0lBMEYxQjtJQUNBO0lBQ0Q7SUFDQztJQTNGRCxRQUFRLENBQVM7SUFDakIsT0FBTyxDQUFTO0lBQ2hCLFVBQVUsQ0FBUztJQUM1QixXQUFXLENBQVk7SUFDdkIsU0FBUyxDQUFVO0lBQ25CLFVBQVUsR0FBMEIsRUFBRSxDQUFDO0lBQ3ZDLG1CQUFtQixHQUFVLEVBQUUsQ0FBQztJQUNoQyw2RUFBNkU7SUFDN0Usd0RBQXdEO0lBQ3hELGNBQWMsR0FBVyxFQUFFLENBQUM7SUFDNUIsNEVBQTRFO0lBQzVFLHlFQUF5RTtJQUN6RSwy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QU87c0JBQWYsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQTZFNEIsU0FBUztzQkFBMUMsU0FBUzt1QkFBQyxxQkFBcUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDb21wb25lbnQsIElucHV0LCBPbkRlc3Ryb3ksIE9uSW5pdCwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQXJyYXksIEZvcm1CdWlsZGVyLCBGb3JtQ29udHJvbCwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgQmVoYXZpb3JTdWJqZWN0LCBTdWJqZWN0LCB0YWtlVW50aWwsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IE5nYkFjY29yZGlvbkRpcmVjdGl2ZSwgTmdiQWN0aXZlTW9kYWwgfSBmcm9tICdAbmctYm9vdHN0cmFwL25nLWJvb3RzdHJhcCc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICd0YW5nby1hcHAtdWktc2hhcmVkJztcbmltcG9ydCB7IEJpbGxpbmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYmlsbGluZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbGliLWJpbGxpbmctZ3JvdXAtZm9ybScsXG4gIHRlbXBsYXRlVXJsOiAnLi9iaWxsaW5nLWdyb3VwLWZvcm0uY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybDogJy4vYmlsbGluZy1ncm91cC1mb3JtLmNvbXBvbmVudC5zY3NzJyxcbn0pXG5leHBvcnQgY2xhc3MgQmlsbGluZ0dyb3VwRm9ybUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSwgT25Jbml0IHtcblxuICBASW5wdXQoKSBjbGllbnRJZDogc3RyaW5nO1xuICBASW5wdXQoKSBncm91cElkOiBzdHJpbmc7XG4gIEBJbnB1dCgpIGN1cnJlbnRUYWI6IHN0cmluZztcbiAgYmlsbGluZ0Zvcm06IEZvcm1Hcm91cDtcbiAgc3VibWl0dGVkOiBib29sZWFuO1xuICBmaWx0ZXJEYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+W10gPSBbXTtcbiAgc3Vic2NyaWJlZFN0b3JlTGlzdDogYW55W10gPSBbXTtcbiAgLy8gR3JvdXAgY3VycmVudGx5IGJlaW5nIGVkaXRlZCDigJQgY2FwdHVyZWQgYmVmb3JlIHRoaXMuZ3JvdXBJZCBpcyBjbGVhcmVkLCBzb1xuICAvLyBzZWxlY3RlZC1maXJzdCBvcmRlcmluZyBjYW4gcmVhZCBpdHMgc2VsZWN0ZWQgc3RvcmVzLlxuICBlZGl0aW5nR3JvdXBJZDogc3RyaW5nID0gJyc7XG4gIC8vIEZvcm1BcnJheSBpbmRleCBvZiB0aGUgZ3JvdXAgd2hvc2UgU3RvcmUgU2VsZWN0aW9uIHRhYiBpcyBjdXJyZW50bHkgb3Blbi5cbiAgLy8gVGhlIHNoYXJlZCBzdG9yZSBsaXN0IChzdWJzY3JpYmVkU3RvcmVMaXN0KSBpcyBsb2FkZWQgKyBzZWxlY3RlZC1maXJzdFxuICAvLyBvcmRlcmVkIGZvciBUSElTIGdyb3VwLCBzbyBleHBhbmRpbmcgYSBkaWZmZXJlbnQgZ3JvdXAncyBTdG9yZSBTZWxlY3Rpb25cbiAgLy8gcmVsb2FkcyB0aGUgbGlzdCBzY29wZWQgdG8gdGhhdCBncm91cCAobm90IGFsd2F5cyB0aGUgZGVmYXVsdCBncm91cCkuXG4gIGFjdGl2ZUdyb3VwSW5kZXg6IG51bWJlciA9IDA7XG4gIGZpbHRlckNvdW50cmllczogYW55W10gPSBbXTtcbiAgZmlsdGVyU3RhdGVzOiBhbnlbXSA9IFtdO1xuICBmaWx0ZXJDaXRpZXM6IGFueVtdID0gW107XG4gIHNlYXJjaElucHV0ID0gbmV3IEZvcm1Db250cm9sKCcnKTtcbiAgc2VhcmNoVGVybTogc3RyaW5nO1xuICBzb3J0ZWRDb2x1bW46IHN0cmluZztcbiAgc29ydERpcmVjdGlvbjogbnVtYmVyO1xuICBzdWJzY3JpYmVkU3RvcmVzQXBpU3RhdGUgPSBuZXcgQmVoYXZpb3JTdWJqZWN0PCdpbml0aWFsJyB8ICdsb2FkaW5nJyB8ICdsb2FkZWQnPignaW5pdGlhbCcpO1xuICBzdWJzY3JpYmVkUHJvZHVjdHM6IGFueVtdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgZGVzdHJveSQgPSBuZXcgU3ViamVjdCgpO1xuXG4gIC8vIEdTVElOIGxvb2t1cCBzdGF0ZSBwZXIgYmlsbGluZy1ncm91cCByb3csIGtleWVkIGJ5IEZvcm1BcnJheSBpbmRleC5cbiAgLy8gJ2lkbGUnID0gbm8gbG9va3VwIHlldCAob3IgR1NUSU4gdG9vIHNob3J0IHRvIHRyaWdnZXIgb25lKS5cbiAgLy8gJ2xvYWRpbmcnID0gcmVxdWVzdCBpbiBmbGlnaHQuXG4gIC8vICdmb3VuZCcgPSBiYWNrZW5kIHJldHVybmVkIGFuIGFkZHJlc3MsIGZpZWxkcyBhdXRvLWZpbGxlZC5cbiAgLy8gJ25vdGZvdW5kJyA9IGJhY2tlbmQgcmV0dXJuZWQgNDA0IC8gdW5rbm93biBHU1RJTi5cbiAgLy8gJ2Vycm9yJyA9IG5ldHdvcmsgb3IgdW5leHBlY3RlZCBlcnJvci5cbiAgZ3N0TG9va3VwU3RhdGU6IFJlY29yZDxudW1iZXIsICdpZGxlJyB8ICdsb2FkaW5nJyB8ICdmb3VuZCcgfCAnbm90Zm91bmQnIHwgJ2Vycm9yJz4gPSB7fTtcbiAgLy8gVHJhY2sgdGhlIGxhc3QgR1NUSU4gd2Ugc3VjY2Vzc2Z1bGx5IGxvb2tlZCB1cCBwZXIgcm93IHNvIHJlLXR5cGluZyB0aGVcbiAgLy8gc2FtZSB2YWx1ZSBkb2Vzbid0IHJlZmlyZSB0aGUgcmVxdWVzdCAoYW5kIGF2b2lkIGNsb2JiZXJpbmcgbWFudWFsIGVkaXRzXG4gIC8vIHRoZSB1c2VyIG1heSBoYXZlIG1hZGUgYWZ0ZXIgdGhlIGF1dG8tZmlsbCkuXG4gIHByaXZhdGUgbGFzdExvb2tlZFVwR3N0aW46IFJlY29yZDxudW1iZXIsIHN0cmluZz4gPSB7fTtcblxuICBncm91cFRhZ09wdGlvbnMgPSBbXG4gICAgeyB2YWx1ZTogJ3N0b3JlJywgbGFiZWw6ICdTdG9yZScgfSxcbiAgICB7IHZhbHVlOiAnZ3N0JywgbGFiZWw6ICdHU1QnIH1cbiAgXTtcbiAgY3VycmVuY3lPcHRpb25zID0gW1xuICAgIHsgdmFsdWU6ICdkb2xsYXInLCBsYWJlbDogJ0RvbGxhciAoJCknIH0sXG4gICAgeyB2YWx1ZTogJ2lucicsIGxhYmVsOiAnSU5SICjigrkpJyB9LFxuICAgIHsgdmFsdWU6ICdzaW5nYXBvcmVkb2xsYXInLCBsYWJlbDogJ1NpbmdhcG9yZSBEb2xsYXIgKFMkKScgfSxcbiAgICB7IHZhbHVlOiAnZXVybycsIGxhYmVsOiAnRXVybyAo4oKsKScgfSxcbiAgICB7IHZhbHVlOiAnYWVkJywgbGFiZWw6ICdBRUQgKEFFRCknIH0sXG4gIF07XG4gIC8vIEFkdmFuY2UtaW52b2ljZSBob3Jpem9uOiBob3cgZmFyIGFoZWFkIHRoZSBhZHZhbmNlIGludm9pY2UgaXMgZ2VuZXJhdGVkLlxuICBhZHZhbmNlUGVyaW9kT3B0aW9ucyA9IFtcbiAgICB7IHZhbHVlOiAnbW9udGhseScsIGxhYmVsOiAnTW9udGhseSAobmV4dCBtb250aCknLCBtb250aHM6IDEgfSxcbiAgICB7IHZhbHVlOiAncXVhcnRlcmx5JywgbGFiZWw6ICdRdWFydGVybHkgKG5leHQgMyBtb250aHMpJywgbW9udGhzOiAzIH0sXG4gICAgeyB2YWx1ZTogJ2hhbGZ5ZWFybHknLCBsYWJlbDogJ0hhbGYteWVhcmx5IChuZXh0IDYgbW9udGhzKScsIG1vbnRoczogNiB9LFxuICAgIHsgdmFsdWU6ICd5ZWFybHknLCBsYWJlbDogJ1llYXJseSAobmV4dCAxMiBtb250aHMpJywgbW9udGhzOiAxMiB9LFxuICBdO1xuICAvLyBEcml2ZXMgd2hldGhlciB0aGUgYmFja2VuZCB3aWxsIGNhbGN1bGF0ZSBHU1QvSUdTVCBvbiBpbnZvaWNlcyBmb3IgdGhpc1xuICAvLyBncm91cC4gJ2ludGVybmF0aW9uYWwnIHNraXBzIHRheGVzIGVudGlyZWx5IHNvIHRoZSB0b3RhbEFtb3VudCBlcXVhbHNcbiAgLy8gdGhlIHN1YnRvdGFsLiBTZWUgZ3N0aW5Mb29rdXAg4oaSIGludm9pY2VDb250cm9sbGVyLmNyZWF0ZUludm9pY2UuXG4gIHRheENhbGN1bGF0aW9uVHlwZU9wdGlvbnMgPSBbXG4gICAgeyB2YWx1ZTogJ2RvbWVzdGljJywgbGFiZWw6ICdEb21lc3RpYycgfSxcbiAgICB7IHZhbHVlOiAnaW50ZXJuYXRpb25hbCcsIGxhYmVsOiAnSW50ZXJuYXRpb25hbCcgfSxcbiAgXTtcbiAgcGF5bWVudEN5Y2xlT3B0aW9ucyA9IFtcbiAgICB7IHZhbHVlOiAnbW9udGhseScsIGxhYmVsOiAnTW9udGhseScgfSxcbiAgICB7IHZhbHVlOiAncXVhcnRlcicsIGxhYmVsOiAnUXVhcnRlcmx5JyB9LFxuICAgIHsgdmFsdWU6ICdoYWxmWWVhcmx5JywgbGFiZWw6ICdIYWxmIHllYXJseScgfSxcbiAgICB7IHZhbHVlOiAneWVhcmx5JywgbGFiZWw6ICdZZWFybHknIH1cbiAgXTtcbiAgcGF5bWVudFRlcm1PcHRpb25zID0gW1xuICAgIHsgdmFsdWU6IDMwLCBsYWJlbDogJzMwJyB9LFxuICAgIHsgdmFsdWU6IDQ1LCBsYWJlbDogJzQ1JyB9LFxuICAgIHsgdmFsdWU6IDYwLCBsYWJlbDogJzYwJyB9LFxuICAgIHsgdmFsdWU6IDkwLCBsYWJlbDogJzkwJyB9XG4gIF07XG4gIGJpbGxpbmdNZXRob2RPcHRpb25zID0gW1xuICAgIHsgdmFsdWU6ICdlYWNoU3RvcmUnLCBsYWJlbDogJ1N0b3JlIFdpc2UnIH0sXG4gICAgeyB2YWx1ZTogJ292ZXJhbGxTdG9yZScsIGxhYmVsOiAnQnJhbmQgV2lzZScgfVxuICBdO1xuICBAVmlld0NoaWxkKE5nYkFjY29yZGlvbkRpcmVjdGl2ZSkgYWNjb3JkaW9uOiBOZ2JBY2NvcmRpb25EaXJlY3RpdmU7XG5cbiAgaXRlbXNQZXJQYWdlID0gMTA7XG4gIGN1cnJlbnRQYWdlID0gMTtcbiAgdG90YWxJdGVtcyA9IDA7XG4gIHBhZ2luYXRpb25TaXplcyA9IFsxMCwgMjAsIDMwXTtcbiAgcGFnZVNpemUgPSAxMDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGZiOiBGb3JtQnVpbGRlcixcbiAgICBwcml2YXRlIGJpbGxpbmdTZXJ2aWNlOiBCaWxsaW5nU2VydmljZSxcbiAgICBwdWJsaWMgbW9kYWxSZWY6IE5nYkFjdGl2ZU1vZGFsLFxuICAgIHByaXZhdGUgdG9hc3RTZXJ2aWNlOiBUb2FzdFNlcnZpY2VcbiAgKSB7XG4gICAgdGhpcy5jcmVhdGVGb3JtKCk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmdldEJpbGxpbmdHcm91cHMoKTtcbiAgICB0aGlzLmdldENsaWVudFByb2R1Y3RzKCk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgLy8gSW5pdGlhbCBzdG9yZSBsb2FkIGlzIHRyaWdnZXJlZCBmcm9tIGdldEJpbGxpbmdHcm91cHMoKSAoYWZ0ZXIgdGhlXG4gICAgLy8gc2VsZWN0ZWQgc3RvcmVzIGFyZSBwYXRjaGVkIGluKSBzbyBzZWxlY3RlZC1maXJzdCBvcmRlcmluZyB3b3Jrcy5cbiAgICB0aGlzLnNlYXJjaElucHV0LnZhbHVlQ2hhbmdlcy5waXBlKFxuICAgICAgdGFrZVVudGlsKHRoaXMuZGVzdHJveSQpLFxuICAgICAgZGVib3VuY2VUaW1lKDEwMDApLFxuICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKVxuICAgICkuc3Vic2NyaWJlKCh2YWwpID0+IHtcbiAgICAgIGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHJldHVybjtcbiAgICAgIHRoaXMuc2VhcmNoVGVybSA9IHZhbDtcbiAgICAgIHRoaXMuZ2V0U3Vic2NyaWJlZFN0b3Jlcyh7fSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmRlc3Ryb3kkLm5leHQodHJ1ZSk7XG4gICAgdGhpcy5kZXN0cm95JC5jb21wbGV0ZSgpO1xuICB9XG5cbiAgY3JlYXRlRm9ybSgpIHtcbiAgICB0aGlzLmJpbGxpbmdGb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBncm91cHM6IHRoaXMuZmIuYXJyYXkoW10pLFxuICAgIH0pO1xuICB9XG5cbiAgZ2V0QmlsbGluZ0dyb3VwcygpIHtcbiAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLmdldEFsbEJpbGxpbmdHcm91cHModGhpcy5jbGllbnRJZCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHJlcz8uZGF0YT8ubGVuZ3RoKSB7XG4gICAgICAgICAgcmVzLmRhdGEuZm9yRWFjaCgoZ3JvdXA6IGFueSkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wYXRjaEZvcm1JdGVtKHsgLi4uZ3JvdXAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgLy8gUmVtZW1iZXIgd2hpY2ggZ3JvdXAgaXMgYmVpbmcgZWRpdGVkIHNvIHNlbGVjdGVkLWZpcnN0IG9yZGVyaW5nIGNhblxuICAgICAgICAgIC8vIHJlYWQgaXRzIHN0b3JlcyBldmVuIGFmdGVyIHRoaXMuZ3JvdXBJZCBpcyBjbGVhcmVkIGJlbG93LlxuICAgICAgICAgIHRoaXMuZWRpdGluZ0dyb3VwSWQgPSB0aGlzLmdyb3VwSWQgfHwgdGhpcy5iaWxsaW5nR3JvdXBzLmNvbnRyb2xzWzBdPy5nZXQoJ19pZCcpPy52YWx1ZSB8fCAnJztcbiAgICAgICAgICAvLyBQb2ludCB0aGUgYWN0aXZlIGdyb3VwIGF0IHRoZSBvbmUgdGhlIG1vZGFsIG9wZW5lZCBmb3IsIHNvIHRoZVxuICAgICAgICAgIC8vIGluaXRpYWwgc3RvcmUgbG9hZCBpcyBzY29wZWQgdG8gaXQgKG5vdCBhbHdheXMgaW5kZXggMCAvIGRlZmF1bHQpLlxuICAgICAgICAgIGNvbnN0IG9wZW5lZElkeCA9IHRoaXMuZ3JvdXBJZFxuICAgICAgICAgICAgPyB0aGlzLmJpbGxpbmdHcm91cHMuY29udHJvbHMuZmluZEluZGV4KChjKSA9PiBjLmdldCgnX2lkJyk/LnZhbHVlID09PSB0aGlzLmdyb3VwSWQpXG4gICAgICAgICAgICA6IDA7XG4gICAgICAgICAgdGhpcy5hY3RpdmVHcm91cEluZGV4ID0gb3BlbmVkSWR4ID49IDAgPyBvcGVuZWRJZHggOiAwO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgaWYgKHRoaXMuZ3JvdXBJZCkge1xuICAgICAgICAgICAgICB0aGlzLmJpbGxpbmdHcm91cHMuY29udHJvbHMuZm9yRWFjaCgoY29udHJvbCwgaWR4KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRyb2wuZ2V0KCdfaWQnKT8udmFsdWUgPT09IHRoaXMuZ3JvdXBJZCkge1xuICAgICAgICAgICAgICAgICAgdGhpcy5hY2NvcmRpb24udG9nZ2xlKGlkeC50b1N0cmluZygpKTtcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRUYWIpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGlkeCkuZ2V0KCdjdXJyZW50VGFiJyk/LnNldFZhbHVlKHRoaXMuY3VycmVudFRhYik7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFRhYiA9ICcnO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgdGhpcy5ncm91cElkID0gJyc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocmVzLmRhdGEubGVuZ3RoID4gMSkge1xuICAgICAgICAgICAgICB0aGlzLmFjY29yZGlvbi50b2dnbGUoJzAnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCAwKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBMb2FkIHRoZSBzdG9yZSBsaXN0IEFGVEVSIGdyb3VwcyBhcmUgcGF0Y2hlZCBzbyB0aGUgc2VsZWN0ZWQgc3RvcmVJZHNcbiAgICAgICAgLy8gYXJlIGF2YWlsYWJsZSBmb3IgdGhlIGJhY2tlbmQgc2VsZWN0ZWQtZmlyc3Qgb3JkZXJpbmcuIChnZXRGaWx0ZXJzIG9uXG4gICAgICAgIC8vIHRoaXMgZmlyc3QgY2FsbCB0byBhbHNvIHBvcHVsYXRlIHRoZSBjb3VudHJ5L3N0YXRlL2NpdHkgZmlsdGVycy4pXG4gICAgICAgIHRoaXMuZ2V0U3Vic2NyaWJlZFN0b3Jlcyh7IGdldEZpbHRlcnM6IHRydWUgfSk7XG4gICAgICB9LFxuICAgICAgZXJyb3I6ICgpID0+IHtcbiAgICAgICAgLy8gU3RpbGwgbG9hZCBzdG9yZXMgZXZlbiBpZiBncm91cHMgZmFpbCwgc28gdGhlIHNlY3Rpb24gaXNuJ3QgZW1wdHkuXG4gICAgICAgIHRoaXMuZ2V0U3Vic2NyaWJlZFN0b3Jlcyh7IGdldEZpbHRlcnM6IHRydWUgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwYXRjaEZvcm1JdGVtKHsgZ3JvdXBOYW1lLCBncm91cFRhZywgcmVnaXN0ZXJlZENvbXBhbnlOYW1lLCBnc3QsIGFkZHJlc3NMaW5lT25lLCBhZGRyZXNzTGluZVR3bywgY2l0eSwgc3RhdGUsIGNvdW50cnksXG4gICAgcGluQ29kZSwgcGxhY2VPZlN1cHBseSwgcG8sIHN0b3JlcywgcHJvUmF0YSwgcGF5bWVudENhdGVnb3J5LCBjdXJyZW5jeSwgdGF4Q2FsY3VsYXRpb25UeXBlLCBpc0luc3RhbGxhdGlvbk9uZVRpbWUsIGluc3RhbGxhdGlvbkZlZSwgcGF5bWVudEN5Y2xlLFxuICAgIHBheW1lbnRUZXJtLCBnZW5lcmF0ZUludm9pY2VUbywgYXR0YWNoQW5uZXh1cmUsIGlzUHJpbWFyeSwgYWR2YW5jZUludm9pY2UsIGFkdmFuY2VQZXJpb2QsIHByb2R1Y3RzLCBfaWQgfTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmZiLmdyb3VwKHtcbiAgICAgIGdyb3VwTmFtZTogW2dyb3VwTmFtZSB8fCAnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGdyb3VwVGFnOiBbZ3JvdXBUYWcgfHwgJ3N0b3JlJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIHJlZ2lzdGVyZWRDb21wYW55TmFtZTogWyhyZWdpc3RlcmVkQ29tcGFueU5hbWUgfHwgJycpLnRvVXBwZXJDYXNlKCksIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBnc3Q6IFtnc3QgfHwgJyddLFxuICAgICAgYWRkcmVzc0xpbmVPbmU6IFthZGRyZXNzTGluZU9uZSB8fCAnJ10sXG4gICAgICBhZGRyZXNzTGluZVR3bzogW2FkZHJlc3NMaW5lVHdvIHx8ICcnXSxcbiAgICAgIGNpdHk6IFtjaXR5IHx8ICcnXSxcbiAgICAgIHN0YXRlOiBbc3RhdGUgfHwgJyddLFxuICAgICAgY291bnRyeTogW2NvdW50cnkgfHwgJyddLFxuICAgICAgcGluQ29kZTogW3BpbkNvZGUgfHwgJyddLFxuICAgICAgcGxhY2VPZlN1cHBseTogW3BsYWNlT2ZTdXBwbHkgfHwgJyddLFxuICAgICAgcG86IFtwbyB8fCAnJ10sXG4gICAgICBzdG9yZXM6IFtzdG9yZXMgfHwgW11dLFxuICAgICAgLy8gUHJpY2luZyBtZXRob2Q6ICdwcm9yYXRlJyAoYWN0dWFsIHdvcmtpbmcgZGF5cykgb3IgJ2ZsYXQnIChmdWxsXG4gICAgICAvLyBtb250aCkuIERlZmF1bHQgdG8gJ3Byb3JhdGUnIGZvciByZWNvcmRzIHdpdGhvdXQgYSB2YWx1ZS5cbiAgICAgIHByb1JhdGE6IFtwcm9SYXRhID09PSAnZmxhdCcgPyAnZmxhdCcgOiAncHJvcmF0ZSddLFxuICAgICAgcGF5bWVudENhdGVnb3J5OiBbcGF5bWVudENhdGVnb3J5IHx8ICdwb3N0J10sXG4gICAgICBjdXJyZW5jeTogW2N1cnJlbmN5IHx8ICdkb2xsYXInXSxcbiAgICAgIC8vIERlZmF1bHQgdG8gJ2RvbWVzdGljJyBzbyBleGlzdGluZyByZWNvcmRzICh3aGljaCB3b24ndCBoYXZlIHRoaXNcbiAgICAgIC8vIGZpZWxkKSBiZWhhdmUgZXhhY3RseSBhcyB0b2RheSDigJQgR1NUL0lHU1Qgc3RpbGwgYXBwbGllZCBmb3IgSU5SLlxuICAgICAgdGF4Q2FsY3VsYXRpb25UeXBlOiBbdGF4Q2FsY3VsYXRpb25UeXBlIHx8ICdkb21lc3RpYyddLFxuICAgICAgaXNJbnN0YWxsYXRpb25PbmVUaW1lOiBbaXNJbnN0YWxsYXRpb25PbmVUaW1lIHx8IGZhbHNlXSxcbiAgICAgIGluc3RhbGxhdGlvbkZlZTogW3sgdmFsdWU6IGluc3RhbGxhdGlvbkZlZSB8fCAnJywgZGlzYWJsZWQ6IHRydWUgfV0sXG4gICAgICBwYXltZW50Q3ljbGU6IFtwYXltZW50Q3ljbGUgfHwgJ21vbnRobHknXSxcbiAgICAgIHBheW1lbnRUZXJtOiBbcGF5bWVudFRlcm0gfHwgMzBdLFxuICAgICAgZ2VuZXJhdGVJbnZvaWNlVG86IFtnZW5lcmF0ZUludm9pY2VUbyB8fCBbXV0sXG4gICAgICBhdHRhY2hBbm5leHVyZTogW2F0dGFjaEFubmV4dXJlIHx8IGZhbHNlXSxcbiAgICAgIGlzUHJpbWFyeTogW2lzUHJpbWFyeSB8fCBmYWxzZV0sXG4gICAgICBhZHZhbmNlSW52b2ljZTogW2FkdmFuY2VJbnZvaWNlIHx8IGZhbHNlXSxcbiAgICAgIGFkdmFuY2VQZXJpb2Q6IFthZHZhbmNlUGVyaW9kIHx8ICdtb250aGx5J10sXG4gICAgICBwcm9kdWN0czogW3Byb2R1Y3RzIHx8IFtdXSxcbiAgICAgIGN1cnJlbnRUYWI6IFsnYmFzaWMtaW5mbyddLFxuICAgICAgY2xpZW50SWQ6IFt0aGlzLmNsaWVudElkXSxcbiAgICAgIF9pZDogW19pZF1cbiAgICB9KTtcbiAgICB0aGlzLmJpbGxpbmdHcm91cHMucHVzaChpdGVtKTtcbiAgfVxuXG4gIGFkZEZvcm1JdGVtKHsgaXNQcmltYXJ5LCBncm91cE5hbWUgfTogUmVjb3JkPHN0cmluZywgYm9vbGVhbiB8IHN0cmluZz4pIHtcbiAgICBjb25zdCBpdGVtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBncm91cE5hbWU6IFtncm91cE5hbWUsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICBncm91cFRhZzogWydzdG9yZScsIFtWYWxpZGF0b3JzLnJlcXVpcmVkXV0sXG4gICAgICByZWdpc3RlcmVkQ29tcGFueU5hbWU6IFsnJywgW1ZhbGlkYXRvcnMucmVxdWlyZWRdXSxcbiAgICAgIGdzdDogWycnXSxcbiAgICAgIGFkZHJlc3NMaW5lT25lOiBbJyddLFxuICAgICAgYWRkcmVzc0xpbmVUd286IFsnJ10sXG4gICAgICBjaXR5OiBbJyddLFxuICAgICAgc3RhdGU6IFsnJ10sXG4gICAgICBjb3VudHJ5OiBbJyddLFxuICAgICAgcGluQ29kZTogWycnXSxcbiAgICAgIHBsYWNlT2ZTdXBwbHk6IFsnJ10sXG4gICAgICBwbzogWycnXSxcbiAgICAgIHN0b3JlczogW1tdXSxcbiAgICAgIC8vIE5ldyByZWNvcmRzIGFsd2F5cyBzdGFydCB3aXRoICdwcm9yYXRlJzsgZmxhdCBpcyBvcHQtaW4uXG4gICAgICBwcm9SYXRhOiBbJ3Byb3JhdGUnXSxcbiAgICAgIHBheW1lbnRDYXRlZ29yeTogWydwb3N0J10sXG4gICAgICBjdXJyZW5jeTogWydkb2xsYXInXSxcbiAgICAgIC8vIERlZmF1bHQgJ2RvbWVzdGljJyBzbyB0aGUgZXhpc3RpbmcgR1NUL0lHU1QgbG9naWMgc3RpbGwgYXBwbGllc1xuICAgICAgLy8gdW5sZXNzIHRoZSB1c2VyIGV4cGxpY2l0bHkgc3dpdGNoZXMgdG8gaW50ZXJuYXRpb25hbC5cbiAgICAgIHRheENhbGN1bGF0aW9uVHlwZTogWydkb21lc3RpYyddLFxuICAgICAgaXNJbnN0YWxsYXRpb25PbmVUaW1lOiBbZmFsc2VdLFxuICAgICAgaW5zdGFsbGF0aW9uRmVlOiBbeyB2YWx1ZTogJycsIGRpc2FibGVkOiB0cnVlIH1dLFxuICAgICAgcGF5bWVudEN5Y2xlOiBbJ21vbnRobHknXSxcbiAgICAgIHBheW1lbnRUZXJtOiBbMzBdLFxuICAgICAgZ2VuZXJhdGVJbnZvaWNlVG86IFtbXV0sXG4gICAgICBhdHRhY2hBbm5leHVyZTogW2ZhbHNlXSxcbiAgICAgIGlzUHJpbWFyeTogW2lzUHJpbWFyeV0sXG4gICAgICBhZHZhbmNlSW52b2ljZTogW2ZhbHNlXSxcbiAgICAgIGFkdmFuY2VQZXJpb2Q6IFsnbW9udGhseSddLFxuICAgICAgcHJvZHVjdHM6IFtbXV0sXG4gICAgICBjdXJyZW50VGFiOiBbJ2Jhc2ljLWluZm8nXSxcbiAgICAgIGNsaWVudElkOiBbdGhpcy5jbGllbnRJZF1cbiAgICB9KTtcbiAgICB0aGlzLmJpbGxpbmdHcm91cHMucHVzaChpdGVtKTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuYWNjb3JkaW9uLnRvZ2dsZShgJHt0aGlzLmJpbGxpbmdHcm91cHMubGVuZ3RoIC0gMX1gKTtcbiAgICB9LCAwKTtcbiAgfVxuXG4gIGdldCBiaWxsaW5nR3JvdXBzKCkge1xuICAgIHJldHVybiB0aGlzLmJpbGxpbmdGb3JtLmdldCgnZ3JvdXBzJykgYXMgRm9ybUFycmF5O1xuICB9XG5cbiAgLy8gU3RhcnQgbW9udGggdGhlIGFkdmFuY2UgaW52b2ljZSB3aWxsIGNvdmVyIOKAlCB0aGUgZmlyc3QgZGF5IG9mIG5leHQgbW9udGgsXG4gIC8vIG1hdGNoaW5nIHRoZSBiYWNrZW5kIChkYXlqcygpLmFkZCgxLCdtb250aCcpLnN0YXJ0T2YoJ21vbnRoJykpLlxuICBnZXQgYWR2YW5jZUludm9pY2VEYXRlKCk6IHN0cmluZyB7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBkID0gbmV3IERhdGUobm93LmdldEZ1bGxZZWFyKCksIG5vdy5nZXRNb250aCgpICsgMSwgMSk7XG4gICAgcmV0dXJuIGQudG9Mb2NhbGVEYXRlU3RyaW5nKCdlbi1HQicsIHsgZGF5OiAnMi1kaWdpdCcsIG1vbnRoOiAnc2hvcnQnLCB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gIH1cblxuICAvLyBIdW1hbiBsYWJlbCBmb3IgdGhlIHBlcmlvZCBhIGNob3NlbiBhZHZhbmNlIGZyZXF1ZW5jeSBjb3ZlcnMsIHNob3duIG5leHRcbiAgLy8gdG8gdGhlIGRyb3Bkb3duIChlLmcuIFwiSnVsIDIwMjYg4oCTIERlYyAyMDI2XCIgZm9yIGhhbGYteWVhcmx5KS5cbiAgYWR2YW5jZUludm9pY2VSYW5nZShwZXJpb2Q6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbW9udGhzID0gdGhpcy5hZHZhbmNlUGVyaW9kT3B0aW9ucy5maW5kKG8gPT4gby52YWx1ZSA9PT0gcGVyaW9kKT8ubW9udGhzIHx8IDE7XG4gICAgY29uc3Qgbm93ID0gbmV3IERhdGUoKTtcbiAgICBjb25zdCBzdGFydCA9IG5ldyBEYXRlKG5vdy5nZXRGdWxsWWVhcigpLCBub3cuZ2V0TW9udGgoKSArIDEsIDEpO1xuICAgIGNvbnN0IGZtdCA9IChkOiBEYXRlKSA9PiBkLnRvTG9jYWxlRGF0ZVN0cmluZygnZW4tR0InLCB7IG1vbnRoOiAnc2hvcnQnLCB5ZWFyOiAnbnVtZXJpYycgfSk7XG4gICAgaWYgKG1vbnRocyA8PSAxKSByZXR1cm4gZm10KHN0YXJ0KTtcbiAgICBjb25zdCBlbmQgPSBuZXcgRGF0ZShub3cuZ2V0RnVsbFllYXIoKSwgbm93LmdldE1vbnRoKCkgKyBtb250aHMsIDEpO1xuICAgIHJldHVybiBgJHtmbXQoc3RhcnQpfSDigJMgJHtmbXQoZW5kKX1gO1xuICB9XG5cbiAgb25UYWJDaGFuZ2UoaWR4OiBudW1iZXIsIHZhbDogc3RyaW5nKSB7XG4gICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGlkeCkuZ2V0KCdjdXJyZW50VGFiJyk/LnNldFZhbHVlKHZhbCk7XG4gICAgLy8gT3BlbmluZyBhIGdyb3VwJ3MgU3RvcmUgU2VsZWN0aW9uIG1ha2VzIGl0IHRoZSBhY3RpdmUgZ3JvdXAgYW5kIHJlbG9hZHNcbiAgICAvLyB0aGUgc2hhcmVkIHN0b3JlIGxpc3Qgc2NvcGVkIHRvIFRIQVQgZ3JvdXAgKHNlbGVjdGVkLWZpcnN0IG9yZGVyaW5nICtcbiAgICAvLyBpc1NlbGVjdGVkIHJlZmxlY3QgdGhlIGdyb3VwIGJlaW5nIGVkaXRlZCwgbm90IHRoZSBkZWZhdWx0IGdyb3VwKS5cbiAgICBpZiAodmFsID09PSAnc3RvcmUtc2VsZWN0aW9uJykge1xuICAgICAgdGhpcy5hY3RpdmVHcm91cEluZGV4ID0gaWR4O1xuICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgICB0aGlzLmdldFN1YnNjcmliZWRTdG9yZXMoe30pO1xuICAgIH1cbiAgfVxuXG4gIG9uRGVsZXRlR3JvdXAoaWR4OiBudW1iZXIpIHtcbiAgICBpZiAodGhpcy5iaWxsaW5nR3JvdXBzLmF0KGlkeCkuZ2V0KCdfaWQnKT8udmFsdWUpIHtcbiAgICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UuZGVsZXRlQmlsbGluZ0dyb3VwKHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChpZHgpLmdldCgnX2lkJyk/LnZhbHVlKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzPy5kYXRhKSB7XG4gICAgICAgICAgICB0aGlzLmJpbGxpbmdHcm91cHMuY29udHJvbHMuZm9yRWFjaChncm91cCA9PiB7XG4gICAgICAgICAgICAgIGlmIChncm91cC5nZXQoJ2lzUHJpbWFyeScpPy52YWx1ZSkge1xuICAgICAgICAgICAgICAgIGdyb3VwLmdldCgnc3RvcmVzJyk/LnNldFZhbHVlKFsuLi5ncm91cC5nZXQoJ3N0b3JlcycpPy52YWx1ZSwgLi4udGhpcy5iaWxsaW5nR3JvdXBzLmF0KGlkeCkuZ2V0KCdzdG9yZXMnKT8udmFsdWVdKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLmJpbGxpbmdHcm91cHMucmVtb3ZlQXQoaWR4KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJpbGxpbmdHcm91cHMuY29udHJvbHMuZm9yRWFjaChncm91cCA9PiB7XG4gICAgICAgIGlmIChncm91cC5nZXQoJ2lzUHJpbWFyeScpPy52YWx1ZSkge1xuICAgICAgICAgIGdyb3VwLmdldCgnc3RvcmVzJyk/LnNldFZhbHVlKFsuLi5ncm91cC5nZXQoJ3N0b3JlcycpPy52YWx1ZSwgLi4udGhpcy5iaWxsaW5nR3JvdXBzLmF0KGlkeCkuZ2V0KCdzdG9yZXMnKT8udmFsdWVdKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICB0aGlzLmJpbGxpbmdHcm91cHMucmVtb3ZlQXQoaWR4KTtcbiAgICB9XG4gIH1cblxuICBnZXRTdWJzY3JpYmVkU3RvcmVzKHsgZ2V0RmlsdGVycyB9OiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPikge1xuICAgIHRoaXMuc3Vic2NyaWJlZFN0b3Jlc0FwaVN0YXRlLm5leHQoJ2xvYWRpbmcnKTtcbiAgICBjb25zdCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge1xuICAgICAgbGltaXQ6IHRoaXMucGFnZVNpemUsXG4gICAgICBvZmZzZXQ6IHRoaXMuY3VycmVudFBhZ2UsXG4gICAgICBjbGllbnRJZDogdGhpcy5jbGllbnRJZCxcbiAgICAgIHNvcnRDb2x1bW46IHRoaXMuc29ydGVkQ29sdW1uLFxuICAgICAgc29ydEJ5OiB0aGlzLnNvcnREaXJlY3Rpb24sXG4gICAgICBzZWFyY2hWYWx1ZTogdGhpcy5zZWFyY2hUZXJtLFxuICAgICAgY291bnRyeTogdGhpcy5maWx0ZXJDb3VudHJpZXMsXG4gICAgICBzdGF0ZTogdGhpcy5maWx0ZXJTdGF0ZXMsXG4gICAgICBjaXR5OiB0aGlzLmZpbHRlckNpdGllcyxcbiAgICAgIGdldEZpbHRlcnM6IGdldEZpbHRlcnMsXG4gICAgICAvLyBCYWNrZW5kIHJlc29sdmVzIHRoaXMgZ3JvdXAncyBzZWxlY3RlZCBzdG9yZXMsIHRhZ3MgZWFjaCByb3cgd2l0aFxuICAgICAgLy8gaXNTZWxlY3RlZCBhbmQgZmxvYXRzIHNlbGVjdGVkIHN0b3JlcyB0byB0aGUgdG9wIGFjcm9zcyBhbGwgcGFnZXMuXG4gICAgICAvLyBTY29wZSB0byB0aGUgZ3JvdXAgd2hvc2UgU3RvcmUgU2VsZWN0aW9uIHRhYiBpcyBvcGVuIChhY3RpdmVHcm91cEluZGV4KVxuICAgICAgLy8gc28gZXhwYW5kaW5nIGEgbm9uLWRlZmF1bHQgZ3JvdXAgc2hvd3MgVEhBVCBncm91cCdzIGNvbnRleHQuXG4gICAgICBncm91cElkOiB0aGlzLmJpbGxpbmdHcm91cHM/LmNvbnRyb2xzPy5bdGhpcy5hY3RpdmVHcm91cEluZGV4XT8uZ2V0KCdfaWQnKT8udmFsdWVcbiAgICAgICAgfHwgdGhpcy5lZGl0aW5nR3JvdXBJZCB8fCB0aGlzLmdyb3VwSWQgfHwgdGhpcy5iaWxsaW5nR3JvdXBzPy5jb250cm9scz8uWzBdPy5nZXQoJ19pZCcpPy52YWx1ZSB8fCAnJyxcbiAgICAgIC8vIEFsc28gc2VuZCB0aGUgbGl2ZSBzZWxlY3Rpb24gKGNvdmVycyBhIGJyYW5kLW5ldyB1bnNhdmVkIGdyb3VwIHdob3NlXG4gICAgICAvLyBzdG9yZXMgYXJlbid0IHlldCBwZXJzaXN0ZWQgdG8gdGhlIGJpbGxpbmcgZG9jKS5cbiAgICAgIHNlbGVjdGVkU3RvcmVJZHM6IHRoaXMuc2VsZWN0ZWRTdG9yZUlkc0ZvclNvcnQoKVxuICAgIH07XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBkYXRhKSB7XG4gICAgICBpZiAoZGF0YS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGlmIChkYXRhW2tleV0gPT09IHVuZGVmaW5lZCB8fCBkYXRhW2tleV0gPT09ICcnKSBkZWxldGUgZGF0YVtrZXldO1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShkYXRhW2tleV0pICYmICFkYXRhW2tleV0ubGVuZ3RoKSBkZWxldGUgZGF0YVtrZXldO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UuZ2V0U3Vic2NyaWJlZFN0b3JlcyhkYXRhKS5waXBlKHRha2VVbnRpbCh0aGlzLmRlc3Ryb3kkKSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLnN1YnNjcmliZWRTdG9yZXNBcGlTdGF0ZS5uZXh0KCdsb2FkZWQnKTtcbiAgICAgICAgaWYgKGdldEZpbHRlcnMpIHtcbiAgICAgICAgICBpZiAocmVzPy5kYXRhPy5jb3VudHJpZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJEYXRhLnB1c2goeyBEZXNjcmlwdGlvbjogJ0NvdW50cnknLCBJc3N1ZXM6IHJlcy5kYXRhLmNvdW50cmllcy5tYXAoKHZhbDogYW55KSA9PiAoeyB0ZXh0OiB2YWwuX2lkLCBpZDogdmFsLl9pZCB9KSkgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXM/LmRhdGE/LnN0YXRlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckRhdGEucHVzaCh7IERlc2NyaXB0aW9uOiAnU3RhdGUnLCBJc3N1ZXM6IHJlcy5kYXRhLnN0YXRlcy5tYXAoKHZhbDogYW55KSA9PiAoeyB0ZXh0OiB2YWwuX2lkLCBpZDogdmFsLl9pZCB9KSkgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChyZXM/LmRhdGE/LmNpdGllcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLmZpbHRlckRhdGEucHVzaCh7IERlc2NyaXB0aW9uOiAnQ2l0eScsIElzc3VlczogcmVzLmRhdGEuY2l0aWVzLm1hcCgodmFsOiBhbnkpID0+ICh7IHRleHQ6IHZhbC5faWQsIGlkOiB2YWwuX2lkIH0pKSB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy50b3RhbEl0ZW1zID0gcmVzPy5kYXRhPy5wYWdlSW5mbz8uY291bnQgfHwgMDtcbiAgICAgICAgLy8gQmFja2VuZCByZXR1cm5zIHNlbGVjdGVkIHN0b3JlcyBmaXJzdCAoc2VsZWN0ZWQtZmlyc3Qgb3JkZXJpbmcpLlxuICAgICAgICB0aGlzLnN1YnNjcmliZWRTdG9yZUxpc3QgPSByZXM/LmRhdGE/LmRhdGEgfHwgW107XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlOiBhbnkpID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvblN0b3JlQ2hlY2soZXZlbnQ6IGFueSwgZm9ybUFycmF5SW5kZXg6IG51bWJlciwgc3RvcmVJZDogc3RyaW5nKSB7XG4gICAgaWYgKGV2ZW50LnRhcmdldC5jaGVja2VkKSB7XG4gICAgICB0aGlzLmJpbGxpbmdHcm91cHMuY29udHJvbHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uZ2V0KCdzdG9yZXMnKT8udmFsdWUuaW5jbHVkZXMoc3RvcmVJZCkpIHtcbiAgICAgICAgICBpdGVtLmdldCgnc3RvcmVzJyk/LnNldFZhbHVlKGl0ZW0uZ2V0KCdzdG9yZXMnKT8udmFsdWUuZmlsdGVyKCh2YWw6IHN0cmluZykgPT4gdmFsICE9PSBzdG9yZUlkKSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ3N0b3JlcycpPy5zZXRWYWx1ZShbLi4udGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ3N0b3JlcycpPy52YWx1ZSwgc3RvcmVJZF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnc3RvcmVzJyk/LnNldFZhbHVlKFxuICAgICAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnc3RvcmVzJyk/LnZhbHVlLmZpbHRlcigodmFsOiBzdHJpbmcpID0+IHZhbCAhPT0gc3RvcmVJZClcbiAgICAgICk7XG4gICAgICB0aGlzLmJpbGxpbmdHcm91cHMuY29udHJvbHMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uZ2V0KCdpc1ByaW1hcnknKT8udmFsdWUpIHtcbiAgICAgICAgICBpdGVtLmdldCgnc3RvcmVzJyk/LnNldFZhbHVlKFsuLi5pdGVtLmdldCgnc3RvcmVzJyk/LnZhbHVlLCBzdG9yZUlkXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG9uU2VsZWN0QWxsU3RvcmVzKGV2ZW50OiBhbnksIGZvcm1BcnJheUluZGV4OiBudW1iZXIpIHtcbiAgICBjb25zdCBzdWJzY3JpYmVkU3RvcmVJZHMgPSB0aGlzLnN1YnNjcmliZWRTdG9yZUxpc3QubWFwKGl0ZW0gPT4gaXRlbS5zdG9yZUlkKTtcbiAgICBpZiAoZXZlbnQudGFyZ2V0LmNoZWNrZWQpIHtcbiAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5jb250cm9scy5mb3JFYWNoKChncm91cCkgPT4ge1xuICAgICAgICBncm91cC5nZXQoJ3N0b3JlcycpPy52YWx1ZS5mb3JFYWNoKChzdG9yZTogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgaWYgKHN1YnNjcmliZWRTdG9yZUlkcy5pbmNsdWRlcyhzdG9yZSkpIHtcbiAgICAgICAgICAgIGdyb3VwLmdldCgnc3RvcmVzJyk/LnNldFZhbHVlKGdyb3VwLmdldCgnc3RvcmVzJyk/LnZhbHVlLmZpbHRlcigoaXRlbTogc3RyaW5nKSA9PiBpdGVtICE9PSBzdG9yZSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdzdG9yZXMnKT8uc2V0VmFsdWUoWy4uLnRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdzdG9yZXMnKT8udmFsdWUsIC4uLnN1YnNjcmliZWRTdG9yZUlkc10pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnc3RvcmVzJyk/LnNldFZhbHVlKFxuICAgICAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnc3RvcmVzJyk/LnZhbHVlLmZpbHRlcigoaXRlbTogYW55KSA9PiAhc3Vic2NyaWJlZFN0b3JlSWRzLmluY2x1ZGVzKGl0ZW0pKVxuICAgICAgKTtcbiAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5jb250cm9scy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICBpZiAoaXRlbS5nZXQoJ2lzUHJpbWFyeScpPy52YWx1ZSkge1xuICAgICAgICAgIGl0ZW0uZ2V0KCdzdG9yZXMnKT8uc2V0VmFsdWUoWy4uLml0ZW0uZ2V0KCdzdG9yZXMnKT8udmFsdWUsIC4uLnN1YnNjcmliZWRTdG9yZUlkc10pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBpc1N0b3JlU2VsZWN0ZWRJbkdyb3VwKGZvcm1BcnJheUluZGV4OiBudW1iZXIsIHN0b3JlSWQ6IHN0cmluZykge1xuICAgIHJldHVybiB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnc3RvcmVzJyk/LnZhbHVlLmluY2x1ZGVzKHN0b3JlSWQpO1xuICB9XG5cbiAgLy8gU2VsZWN0ZWQgc3RvcmVJZHMgc2VudCB0byB0aGUgYmFja2VuZCBzbyBpdCBjYW4gc29ydCBzZWxlY3RlZCBzdG9yZXMgZmlyc3QuXG4gIC8vIFJlYWQgc3RyYWlnaHQgZnJvbSB0aGUgbGl2ZSBmb3JtICh0aGUgc2FtZSBzb3VyY2UgYXMgdGhlIGNoZWNrYm94ZXMpLCBzbyBpdFxuICAvLyBhbHdheXMgbWF0Y2hlcyB0aGUgVUkuIFNjb3BlIHRvIHRoZSBhY3RpdmUgZ3JvdXAgKHRoZSBvbmUgd2hvc2UgU3RvcmVcbiAgLy8gU2VsZWN0aW9uIHRhYiBpcyBvcGVuKSBzbyBzZWxlY3RlZC1maXJzdCBvcmRlcmluZyByZWZsZWN0cyBUSEFUIGdyb3VwJ3NcbiAgLy8gc2VsZWN0aW9uLCBub3QgYSB1bmlvbiBhY3Jvc3MgYWxsIGdyb3Vwcy5cbiAgcHJpdmF0ZSBzZWxlY3RlZFN0b3JlSWRzRm9yU29ydCgpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgYWN0aXZlID0gdGhpcy5iaWxsaW5nR3JvdXBzPy5jb250cm9scz8uW3RoaXMuYWN0aXZlR3JvdXBJbmRleF07XG4gICAgcmV0dXJuIFsgLi4uKGFjdGl2ZT8uZ2V0KCdzdG9yZXMnKT8udmFsdWUgfHwgW10pIF07XG4gIH1cblxuICBpc0FsbFN0b3Jlc1NlbGVjdGVkSW5Hcm91cChmb3JtQXJyYXlJbmRleDogbnVtYmVyKSB7XG4gICAgcmV0dXJuIHRoaXMuc3Vic2NyaWJlZFN0b3JlTGlzdC5ldmVyeShpdGVtID0+IHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdzdG9yZXMnKT8udmFsdWUuaW5jbHVkZXMoaXRlbS5zdG9yZUlkKSkgJiYgdGhpcy5zdWJzY3JpYmVkU3RvcmVMaXN0Lmxlbmd0aDtcbiAgfVxuXG4gIG9uUGFnZUNoYW5nZShldmVudDogbnVtYmVyKSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IGV2ZW50O1xuICAgIHRoaXMuZ2V0U3Vic2NyaWJlZFN0b3Jlcyh7fSk7XG4gIH1cblxuICBvblBhZ2VTaXplQ2hhbmdlKGV2ZW50OiBudW1iZXIpIHtcbiAgICB0aGlzLmN1cnJlbnRQYWdlID0gMTtcbiAgICB0aGlzLnBhZ2VTaXplID0gZXZlbnQ7XG4gICAgdGhpcy5pdGVtc1BlclBhZ2UgPSBldmVudDtcbiAgICB0aGlzLmdldFN1YnNjcmliZWRTdG9yZXMoe30pO1xuICB9XG5cbiAgb21pdF9zcGVjaWFsX2NoYXIoZXZlbnQ6IGFueSkge1xuICAgIHZhciBrID0gZXZlbnQuY2hhckNvZGU7XG4gICAgcmV0dXJuIChrID09IDggfHwgayA9PSAzMiB8fCAoayA+PSA0OCAmJiBrIDw9IDU3KSk7XG4gIH1cblxuICBmb3JjZVVwcGVyY2FzZShldmVudDogYW55LCBpZHg6IG51bWJlcikge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgdXBwZXIgPSBpbnB1dC52YWx1ZS50b1VwcGVyQ2FzZSgpO1xuICAgIGlmIChpbnB1dC52YWx1ZSAhPT0gdXBwZXIpIHtcbiAgICAgIGNvbnN0IGNhcmV0ID0gaW5wdXQuc2VsZWN0aW9uU3RhcnQ7XG4gICAgICBpbnB1dC52YWx1ZSA9IHVwcGVyO1xuICAgICAgaW5wdXQuc2V0U2VsZWN0aW9uUmFuZ2UoY2FyZXQsIGNhcmV0KTtcbiAgICB9XG4gICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGlkeCkuZ2V0KCdyZWdpc3RlcmVkQ29tcGFueU5hbWUnKT8uc2V0VmFsdWUodXBwZXIsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcbiAgfVxuXG4gIGFwcGx5RmlsdGVycyhldmVudDogYW55KSB7XG4gICAgdGhpcy5jdXJyZW50UGFnZSA9IDE7XG4gICAgZXZlbnQuZm9yRWFjaCgodmFsOiBhbnkpID0+IHtcbiAgICAgIGlmICh2YWwuRGVzY3JpcHRpb24gPT09ICdDb3VudHJ5JykgdGhpcy5maWx0ZXJDb3VudHJpZXMgPSB2YWwuSXNzdWVzLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLmlkKTtcbiAgICAgIGlmICh2YWwuRGVzY3JpcHRpb24gPT09ICdTdGF0ZScpIHRoaXMuZmlsdGVyU3RhdGVzID0gdmFsLklzc3Vlcy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbS5pZCk7XG4gICAgICBpZiAodmFsLkRlc2NyaXB0aW9uID09PSAnQ2l0eScpIHRoaXMuZmlsdGVyQ2l0aWVzID0gdmFsLklzc3Vlcy5tYXAoKGl0ZW06IGFueSkgPT4gaXRlbS5pZCk7XG4gICAgfSk7XG4gICAgdGhpcy5nZXRTdWJzY3JpYmVkU3RvcmVzKHt9KTtcbiAgfVxuXG4gIG9uRW1haWxLZXlEb3duKGV2ZW50OiBhbnksIGZvcm1BcnJheUluZGV4OiBudW1iZXIpIHtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBpZiAoZXZlbnQuY29kZSA9PSAnQmFja3NwYWNlJyAmJiBldmVudC50YXJnZXQudmFsdWUgPT0gJycpIHtcbiAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdnZW5lcmF0ZUludm9pY2VUbycpPy5zZXRWYWx1ZShcbiAgICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ2dlbmVyYXRlSW52b2ljZVRvJyk/LnZhbHVlLnNsaWNlKDAsIC0xKVxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKGV2ZW50LmNvZGUgPT0gJ0VudGVyJykge1xuICAgICAgY29uc3QgZW1haWxSZWdleCA9IC9eW2EtekEtWjAtOS5fJSstXStAW2EtekEtWjAtOS4tXStcXC5bYS16QS1aXXsyLH0kLztcbiAgICAgIGlmIChlbWFpbFJlZ2V4LnRlc3QoZXZlbnQudGFyZ2V0LnZhbHVlKSkge1xuICAgICAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnZ2VuZXJhdGVJbnZvaWNlVG8nKT8uc2V0VmFsdWUoXG4gICAgICAgICAgWy4uLnRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdnZW5lcmF0ZUludm9pY2VUbycpPy52YWx1ZSwgZXZlbnQudGFyZ2V0LnZhbHVlXVxuICAgICAgICApO1xuICAgICAgICBldmVudC50YXJnZXQudmFsdWUgPSAnJztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZW1vdmVFbWFpbENoaXAoZW1haWw6IHN0cmluZywgZm9ybUFycmF5SW5kZXg6IG51bWJlcikge1xuICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdnZW5lcmF0ZUludm9pY2VUbycpPy5zZXRWYWx1ZShcbiAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdnZW5lcmF0ZUludm9pY2VUbycpPy52YWx1ZS5maWx0ZXIoKHZhbDogc3RyaW5nKSA9PiB2YWwgIT09IGVtYWlsKVxuICAgICk7XG4gIH1cblxuICBvblNvcnQoY29sdW1uOiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5zb3J0ZWRDb2x1bW4gPT09IGNvbHVtbikge1xuICAgICAgdGhpcy5zb3J0RGlyZWN0aW9uID0gdGhpcy5zb3J0RGlyZWN0aW9uID09PSAxID8gLTEgOiAxO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNvcnRlZENvbHVtbiA9IGNvbHVtbjtcbiAgICAgIHRoaXMuc29ydERpcmVjdGlvbiA9IDE7XG4gICAgfVxuICAgIHRoaXMuZ2V0U3Vic2NyaWJlZFN0b3Jlcyh7fSk7XG4gIH1cblxuICBuYXZpZ2F0ZShmb3JtQXJyYXlJbmRleDogbnVtYmVyKSB7XG4gICAgaWYgKHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdpc1ByaW1hcnknKT8udmFsdWUpIHtcbiAgICAgIGlmICh0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSA9PT0gJ2Jhc2ljLWluZm8nKSB7XG4gICAgICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdjdXJyZW50VGFiJyk/LnNldFZhbHVlKCdzZXR0aW5ncycpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgPT09ICdiYXNpYy1pbmZvJykge1xuICAgICAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnY3VycmVudFRhYicpPy5zZXRWYWx1ZSgnc3RvcmUtc2VsZWN0aW9uJyk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlID09PSAnc3RvcmUtc2VsZWN0aW9uJykge1xuICAgICAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgnY3VycmVudFRhYicpPy5zZXRWYWx1ZSgnc2V0dGluZ3MnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhZGRCaWxsaW5nR3JvdXAoKSB7XG4gICAgdGhpcy5hZGRGb3JtSXRlbSh7IGdyb3VwTmFtZTogYEdyb3VwICR7dGhpcy5iaWxsaW5nR3JvdXBzLmxlbmd0aCArIDF9YCwgaXNQcmltYXJ5OiBmYWxzZSB9KTtcbiAgfVxuXG4gIG9uU3VibWl0KGZvcm1WYWx1ZXM6IGFueSwgaWR4OiBudW1iZXIpIHtcbiAgICB0aGlzLnN1Ym1pdHRlZCA9IHRydWU7XG5cbiAgICBpZiAodGhpcy5iaWxsaW5nR3JvdXBzLmF0KGlkeCkuZ2V0KCdyZWdpc3RlcmVkQ29tcGFueU5hbWUnKT8uaW52YWxpZCkge1xuICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGlkeCkuZ2V0KCdjdXJyZW50VGFiJyk/LnNldFZhbHVlKCdiYXNpYy1pbmZvJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmJpbGxpbmdHcm91cHMuYXQoaWR4KS5nZXQoJ2dlbmVyYXRlSW52b2ljZVRvJyk/LnZhbHVlLmxlbmd0aCkge1xuICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdCgnUGxlYXNlIGFkZCBhdCBsZWFzdCBvbmUgZW1haWwgaW4gR2VuZXJhdGUgSW52b2ljZSBUbycpO1xuICAgICAgdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGlkeCkuZ2V0KCdjdXJyZW50VGFiJyk/LnNldFZhbHVlKCdzZXR0aW5ncycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGRlbGV0ZSBmb3JtVmFsdWVzLmN1cnJlbnRUYWI7XG5cbiAgICBmb3IgKGNvbnN0IGtleSBpbiBmb3JtVmFsdWVzKSB7XG4gICAgICBpZiAoZm9ybVZhbHVlcy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIGlmIChmb3JtVmFsdWVzW2tleV0gPT09IHVuZGVmaW5lZCkgZGVsZXRlIGZvcm1WYWx1ZXNba2V5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoZm9ybVZhbHVlcy5faWQpIHtcbiAgICAgIHRoaXMuYmlsbGluZ1NlcnZpY2UudXBkYXRlQmlsbGluZ0dyb3VwKGZvcm1WYWx1ZXMpLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IChyZXM6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChyZXM/LmRhdGEpIHtcbiAgICAgICAgICAgIHRoaXMubW9kYWxSZWYuY2xvc2UoJ3N1Y2Nlc3MnKTtcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldFByaW1hcnlUb2FzdCgnQmlsbGluZyBncm91cCB1cGRhdGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAgIGlmIChlcnIuZXJyb3I/LmNvZGUgPT09IDQwMCkge1xuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdChlcnIuZXJyb3IuZXJyb3IpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRFcnJvclRvYXN0KCdGYWlsZWQgdG8gdXBkYXRlIGJpbGxpbmcgZ3JvdXAnKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLmNyZWF0ZUJpbGxpbmdHcm91cChmb3JtVmFsdWVzKS5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAocmVzPy5kYXRhKSB7XG4gICAgICAgICAgICB0aGlzLm1vZGFsUmVmLmNsb3NlKCdzdWNjZXNzJyk7XG4gICAgICAgICAgICB0aGlzLnRvYXN0U2VydmljZS5nZXRQcmltYXJ5VG9hc3QoJ0JpbGxpbmcgZ3JvdXAgY3JlYXRlZCBzdWNjZXNzZnVsbHknKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoZXJyOiBhbnkpID0+IHtcbiAgICAgICAgICBpZiAoZXJyLmVycm9yPy5jb2RlID09PSA0MDApIHtcbiAgICAgICAgICAgIHRoaXMudG9hc3RTZXJ2aWNlLmdldEVycm9yVG9hc3QoZXJyLmVycm9yLmVycm9yKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50b2FzdFNlcnZpY2UuZ2V0RXJyb3JUb2FzdCgnRmFpbGVkIHRvIGNyZWF0ZSBiaWxsaW5nIGdyb3VwJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBnZXRDbGllbnRQcm9kdWN0cygpIHtcbiAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLmdldENsaWVudFByb2R1Y3RzKHRoaXMuY2xpZW50SWQpLnBpcGUodGFrZVVudGlsKHRoaXMuZGVzdHJveSQpKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlczogYW55KSA9PiB7XG4gICAgICAgIGlmIChyZXM/LmRhdGE/LnBsYW5EZXRhaWxzPy5wcm9kdWN0Py5sZW5ndGgpIHtcbiAgICAgICAgICB0aGlzLnN1YnNjcmliZWRQcm9kdWN0cyA9IHJlcy5kYXRhLnBsYW5EZXRhaWxzLnByb2R1Y3QuZmlsdGVyKChwOiBhbnkpID0+IHAuc3RhdHVzID09PSAnbGl2ZScpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvbkNhbmNlbChpZHg6IG51bWJlcikge1xuICAgIHRoaXMuYWNjb3JkaW9uLnRvZ2dsZShpZHgudG9TdHJpbmcoKSk7XG4gIH1cblxuICBwcmV2ZW50RW50ZXIoZXZlbnQ6IGFueSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBnZXRQcm9kdWN0QmlsbGluZ01ldGhvZChmb3JtQXJyYXlJbmRleDogbnVtYmVyLCBwcm9kdWN0TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBwcm9kdWN0cyA9IHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdwcm9kdWN0cycpPy52YWx1ZSB8fCBbXTtcbiAgICBjb25zdCBmb3VuZCA9IHByb2R1Y3RzLmZpbmQoKHA6IGFueSkgPT4gcC5wcm9kdWN0TmFtZSA9PT0gcHJvZHVjdE5hbWUpO1xuICAgIHJldHVybiBmb3VuZD8uYmlsbGluZ01ldGhvZCB8fCAnb3ZlcmFsbFN0b3JlJztcbiAgfVxuXG4gIG9uQmlsbGluZ01ldGhvZENoYW5nZShmb3JtQXJyYXlJbmRleDogbnVtYmVyLCBwcm9kdWN0TmFtZTogc3RyaW5nLCBldmVudDogYW55KSB7XG4gICAgY29uc3QgcHJvZHVjdHMgPSB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgncHJvZHVjdHMnKT8udmFsdWUgfHwgW107XG4gICAgY29uc3QgZXhpc3RpbmcgPSBwcm9kdWN0cy5maW5kKChwOiBhbnkpID0+IHAucHJvZHVjdE5hbWUgPT09IHByb2R1Y3ROYW1lKTtcbiAgICBpZiAoZXhpc3RpbmcpIHtcbiAgICAgIGV4aXN0aW5nLmJpbGxpbmdNZXRob2QgPSBldmVudC50YXJnZXQudmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb2R1Y3RzLnB1c2goeyBwcm9kdWN0TmFtZSwgYmlsbGluZ01ldGhvZDogZXZlbnQudGFyZ2V0LnZhbHVlIH0pO1xuICAgIH1cbiAgICB0aGlzLmJpbGxpbmdHcm91cHMuYXQoZm9ybUFycmF5SW5kZXgpLmdldCgncHJvZHVjdHMnKT8uc2V0VmFsdWUoWy4uLnByb2R1Y3RzXSk7XG4gIH1cblxuICBvbkJpbGxpbmdNZXRob2RTZWxlY3RDaGFuZ2UoZm9ybUFycmF5SW5kZXg6IG51bWJlciwgcHJvZHVjdE5hbWU6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIGNvbnN0IHByb2R1Y3RzID0gdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ3Byb2R1Y3RzJyk/LnZhbHVlIHx8IFtdO1xuICAgIGNvbnN0IGV4aXN0aW5nID0gcHJvZHVjdHMuZmluZCgocDogYW55KSA9PiBwLnByb2R1Y3ROYW1lID09PSBwcm9kdWN0TmFtZSk7XG4gICAgaWYgKGV4aXN0aW5nKSB7XG4gICAgICBleGlzdGluZy5iaWxsaW5nTWV0aG9kID0gdmFsdWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHByb2R1Y3RzLnB1c2goeyBwcm9kdWN0TmFtZSwgYmlsbGluZ01ldGhvZDogdmFsdWUgfSk7XG4gICAgfVxuICAgIHRoaXMuYmlsbGluZ0dyb3Vwcy5hdChmb3JtQXJyYXlJbmRleCkuZ2V0KCdwcm9kdWN0cycpPy5zZXRWYWx1ZShbLi4ucHJvZHVjdHNdKTtcbiAgfVxuXG4gIGZvcm1hdFByb2R1Y3ROYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFuYW1lKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIG5hbWUucmVwbGFjZSgvKFthLXpdKShbQS1aXSkvZywgJyQxICQyJylcbiAgICAgIC5yZXBsYWNlKC9eLi8sIChzdHIpID0+IHN0ci50b1VwcGVyQ2FzZSgpKTtcbiAgfVxuXG4gIC8vIEdTVElOIHN0YXRlLWNvZGUgcHJlZml4IOKGkiBTdGF0ZSAoUGxhY2Ugb2YgU3VwcGx5KVxuICBwcml2YXRlIHJlYWRvbmx5IGdzdFN0YXRlQ29kZU1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAnMDEnOiAnSmFtbXUgYW5kIEthc2htaXInLFxuICAgICcwMic6ICdIaW1hY2hhbCBQcmFkZXNoJyxcbiAgICAnMDMnOiAnUHVuamFiJyxcbiAgICAnMDQnOiAnQ2hhbmRpZ2FyaCcsXG4gICAgJzA1JzogJ1V0dGFyYWtoYW5kJyxcbiAgICAnMDYnOiAnSGFyeWFuYScsXG4gICAgJzA3JzogJ0RlbGhpJyxcbiAgICAnMDgnOiAnUmFqYXN0aGFuJyxcbiAgICAnMDknOiAnVXR0YXIgUHJhZGVzaCcsXG4gICAgJzEwJzogJ0JpaGFyJyxcbiAgICAnMTEnOiAnU2lra2ltJyxcbiAgICAnMTInOiAnQXJ1bmFjaGFsIFByYWRlc2gnLFxuICAgICcxMyc6ICdOYWdhbGFuZCcsXG4gICAgJzE0JzogJ01hbmlwdXInLFxuICAgICcxNSc6ICdNaXpvcmFtJyxcbiAgICAnMTYnOiAnVHJpcHVyYScsXG4gICAgJzE3JzogJ01lZ2hhbGF5YScsXG4gICAgJzE4JzogJ0Fzc2FtJyxcbiAgICAnMTknOiAnV2VzdCBCZW5nYWwnLFxuICAgICcyMCc6ICdKaGFya2hhbmQnLFxuICAgICcyMSc6ICdPZGlzaGEnLFxuICAgICcyMic6ICdDaGhhdHRpc2dhcmgnLFxuICAgICcyMyc6ICdNYWRoeWEgUHJhZGVzaCcsXG4gICAgJzI0JzogJ0d1amFyYXQnLFxuICAgICcyNSc6ICdEYW1hbiBhbmQgRGl1JyxcbiAgICAnMjYnOiAnRGFkcmEgYW5kIE5hZ2FyIEhhdmVsaSBhbmQgRGFtYW4gYW5kIERpdScsXG4gICAgJzI3JzogJ01haGFyYXNodHJhJyxcbiAgICAnMjgnOiAnQW5kaHJhIFByYWRlc2ggKE9sZCknLFxuICAgICcyOSc6ICdLYXJuYXRha2EnLFxuICAgICczMCc6ICdHb2EnLFxuICAgICczMSc6ICdMYWtzaGFkd2VlcCcsXG4gICAgJzMyJzogJ0tlcmFsYScsXG4gICAgJzMzJzogJ1RhbWlsIE5hZHUnLFxuICAgICczNCc6ICdQdWR1Y2hlcnJ5JyxcbiAgICAnMzUnOiAnQW5kYW1hbiBhbmQgTmljb2JhciBJc2xhbmRzJyxcbiAgICAnMzYnOiAnVGVsYW5nYW5hJyxcbiAgICAnMzcnOiAnQW5kaHJhIFByYWRlc2gnLFxuICAgICczOCc6ICdMYWRha2gnLFxuICAgICc5Nyc6ICdPdGhlciBUZXJyaXRvcnknLFxuICAgICc5OSc6ICdDZW50cmUgSnVyaXNkaWN0aW9uJ1xuICB9O1xuXG4gIG9uR3N0Q2hhbmdlKGZvcm1BcnJheUluZGV4OiBudW1iZXIsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBnc3QgPSAodmFsdWUgfHwgJycpLnRyaW0oKS50b1VwcGVyQ2FzZSgpO1xuICAgIGNvbnN0IHBsYWNlT2ZTdXBwbHlDdHJsID0gdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KS5nZXQoJ3BsYWNlT2ZTdXBwbHknKTtcbiAgICBpZiAoZ3N0Lmxlbmd0aCA8IDIpIHtcbiAgICAgIHBsYWNlT2ZTdXBwbHlDdHJsPy5zZXRWYWx1ZSgnJyk7XG4gICAgICB0aGlzLmdzdExvb2t1cFN0YXRlW2Zvcm1BcnJheUluZGV4XSA9ICdpZGxlJztcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29kZSA9IGdzdC5zdWJzdHJpbmcoMCwgMik7XG4gICAgY29uc3Qgc3RhdGVOYW1lID0gdGhpcy5nc3RTdGF0ZUNvZGVNYXBbY29kZV07XG4gICAgaWYgKHN0YXRlTmFtZSkge1xuICAgICAgcGxhY2VPZlN1cHBseUN0cmw/LnNldFZhbHVlKGAke3N0YXRlTmFtZX0gKCR7Y29kZX0pYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBsYWNlT2ZTdXBwbHlDdHJsPy5zZXRWYWx1ZSgnJyk7XG4gICAgfVxuXG4gICAgLy8gRnVsbCBHU1RJTiBpcyAxNSBjaGFycyAoMTUtY2hhciBhbHBoYW51bWVyaWMpLiBUcmlnZ2VyIHRoZSBhZGRyZXNzXG4gICAgLy8gbG9va3VwIG9uY2UgdGhlIHVzZXIgaGFzIHR5cGVkIGFsbCAxNS4gU2tpcCBpZiB3ZSBhbHJlYWR5IGxvb2tlZCB0aGlzXG4gICAgLy8gZXhhY3QgdmFsdWUgdXAgZm9yIHRoaXMgcm93IOKAlCBvdGhlcndpc2UgdGhlIChpbnB1dCkgZXZlbnQgd291bGQgcmVmaXJlXG4gICAgLy8gb24gZm9jdXMvYmx1ciBhbmQgY2xvYmJlciBhbnkgbWFudWFsIHR3ZWFrcyB0aGUgdXNlciBtYWRlLlxuICAgIGlmIChnc3QubGVuZ3RoID09PSAxNSAmJiB0aGlzLmxhc3RMb29rZWRVcEdzdGluW2Zvcm1BcnJheUluZGV4XSAhPT0gZ3N0KSB7XG4gICAgICB0aGlzLmxvb2t1cEFuZEZpbGxBZGRyZXNzKGZvcm1BcnJheUluZGV4LCBnc3QpO1xuICAgIH0gZWxzZSBpZiAoZ3N0Lmxlbmd0aCA8IDE1KSB7XG4gICAgICAvLyBSZXNldCBzdGF0ZSBzbyBhIHByZXZpb3VzIFwiZm91bmRcIiBpbmRpY2F0b3IgZG9lc24ndCBzdGljayBhcm91bmRcbiAgICAgIC8vIHdoaWxlIHRoZSB1c2VyIGlzIGVkaXRpbmcgdGhlIG51bWJlciB0byBhIG5ldyB2YWx1ZS5cbiAgICAgIHRoaXMuZ3N0TG9va3VwU3RhdGVbZm9ybUFycmF5SW5kZXhdID0gJ2lkbGUnO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgbG9va3VwQW5kRmlsbEFkZHJlc3MoZm9ybUFycmF5SW5kZXg6IG51bWJlciwgZ3N0OiBzdHJpbmcpIHtcbiAgICB0aGlzLmdzdExvb2t1cFN0YXRlW2Zvcm1BcnJheUluZGV4XSA9ICdsb2FkaW5nJztcbiAgICB0aGlzLmJpbGxpbmdTZXJ2aWNlLmxvb2t1cEdzdGluKGdzdCkucGlwZSh0YWtlVW50aWwodGhpcy5kZXN0cm95JCkpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzOiBhbnkpID0+IHtcbiAgICAgICAgLy8gQmFja2VuZCB3cmFwOiB7IGNvZGUsIHN0YXR1cywgZGF0YTogPHBheWxvYWQ+IH0uIFBheWxvYWQgaXRzZWxmXG4gICAgICAgIC8vIG1heSBhbHNvIGJlIG5lc3RlZCB1bmRlciBgZGF0YWAgaWYgdGhlIHJlc3BvbnNlIG1pZGRsZXdhcmUgZG91YmxlLVxuICAgICAgICAvLyB3cmFwcyBpdDsgaGFuZGxlIGJvdGggc2hhcGVzIHRvIGJlIHNhZmUuXG4gICAgICAgIGNvbnN0IHBheWxvYWQgPSByZXM/LmRhdGE/LmRhdGEgfHwgcmVzPy5kYXRhIHx8IHt9O1xuICAgICAgICBpZiAoIXBheWxvYWQgfHwgIXBheWxvYWQuZ3N0aW4pIHtcbiAgICAgICAgICB0aGlzLmdzdExvb2t1cFN0YXRlW2Zvcm1BcnJheUluZGV4XSA9ICdub3Rmb3VuZCc7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGdyb3VwID0gdGhpcy5iaWxsaW5nR3JvdXBzLmF0KGZvcm1BcnJheUluZGV4KTtcbiAgICAgICAgLy8gUGF0Y2ggb25seSB0aGUgYWRkcmVzcy1yZWxhdGVkIGZpZWxkcy4gRG9uJ3Qgb3ZlcndyaXRlIGdyb3VwTmFtZSxcbiAgICAgICAgLy8gZ3JvdXBUYWcsIHN0b3JlcywgY3VycmVuY3ksIHBheW1lbnRUZXJtIOKAlCB0aG9zZSBhcmUgdXNlciBjaG9pY2VzLFxuICAgICAgICAvLyBub3QgZGVyaXZlZCBmcm9tIEdTVElOLlxuICAgICAgICBjb25zdCBwYXRjaDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICBpZiAocGF5bG9hZC5sZWdhbE5hbWUpIHBhdGNoWydyZWdpc3RlcmVkQ29tcGFueU5hbWUnXSA9IFN0cmluZyhwYXlsb2FkLmxlZ2FsTmFtZSkudG9VcHBlckNhc2UoKTtcbiAgICAgICAgaWYgKHBheWxvYWQuYWRkcmVzc0xpbmVPbmUpIHBhdGNoWydhZGRyZXNzTGluZU9uZSddID0gcGF5bG9hZC5hZGRyZXNzTGluZU9uZTtcbiAgICAgICAgaWYgKHBheWxvYWQuYWRkcmVzc0xpbmVUd28pIHBhdGNoWydhZGRyZXNzTGluZVR3byddID0gcGF5bG9hZC5hZGRyZXNzTGluZVR3bztcbiAgICAgICAgaWYgKHBheWxvYWQuY2l0eSkgcGF0Y2hbJ2NpdHknXSA9IHBheWxvYWQuY2l0eTtcbiAgICAgICAgaWYgKHBheWxvYWQuc3RhdGUpIHBhdGNoWydzdGF0ZSddID0gcGF5bG9hZC5zdGF0ZTtcbiAgICAgICAgaWYgKHBheWxvYWQuY291bnRyeSkgcGF0Y2hbJ2NvdW50cnknXSA9IHBheWxvYWQuY291bnRyeTtcbiAgICAgICAgaWYgKHBheWxvYWQucGluQ29kZSkgcGF0Y2hbJ3BpbkNvZGUnXSA9IHBheWxvYWQucGluQ29kZTtcbiAgICAgICAgaWYgKHBheWxvYWQucGxhY2VPZlN1cHBseSkgcGF0Y2hbJ3BsYWNlT2ZTdXBwbHknXSA9IHBheWxvYWQucGxhY2VPZlN1cHBseTtcbiAgICAgICAgZ3JvdXAucGF0Y2hWYWx1ZShwYXRjaCk7XG4gICAgICAgIHRoaXMubGFzdExvb2tlZFVwR3N0aW5bZm9ybUFycmF5SW5kZXhdID0gZ3N0O1xuICAgICAgICB0aGlzLmdzdExvb2t1cFN0YXRlW2Zvcm1BcnJheUluZGV4XSA9ICdmb3VuZCc7XG4gICAgICB9LFxuICAgICAgZXJyb3I6IChlcnI6IGFueSkgPT4ge1xuICAgICAgICAvLyA0MDQgPSB1bmtub3duIEdTVElOOyBldmVyeXRoaW5nIGVsc2Ugc3VyZmFjZXMgYXMgYW4gZXJyb3Igc28gdGhlXG4gICAgICAgIC8vIHVzZXIga25vd3MgdGhlIGF1dG8tZmlsbCBkaWRuJ3QgaGFwcGVuIGFuZCB0aGV5IHNob3VsZCBlbnRlclxuICAgICAgICAvLyBtYW51YWxseS5cbiAgICAgICAgdGhpcy5nc3RMb29rdXBTdGF0ZVtmb3JtQXJyYXlJbmRleF0gPSBlcnI/LnN0YXR1cyA9PT0gNDA0ID8gJ25vdGZvdW5kJyA6ICdlcnJvcic7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn0iLCI8ZGl2IGNsYXNzPVwibW9kYWwtYm9keVwiPlxuPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW4gbWItNVwiPlxuICAgIDxkaXYgY2xhc3M9XCJoZWFkZXJcIj5cbiAgICAgICAgVXBkYXRlIEJpbGxpbmcgSW5mb3JtYXRpb25cbiAgICA8L2Rpdj5cbiAgICA8ZGl2PlxuICAgICAgICA8YnV0dG9uIChjbGljayk9XCJhZGRCaWxsaW5nR3JvdXAoKVwiIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1vdXRsaW5lIGJ0biBhbGlnbi1pdGVtcy1lbmQgbmVlZGhlbHBcIj48c3BhblxuICAgICAgICAgICAgICAgIGNsYXNzPVwibWUtMlwiPlxuICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMjBcIiBoZWlnaHQ9XCIyMFwiIHZpZXdCb3g9XCIwIDAgMjAgMjBcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTEwLjAwMTMgNC4xNjYwMlYxNS44MzI3TTQuMTY3OTcgOS45OTkzNUgxNS44MzQ2XCIgc3Ryb2tlPVwiIzM0NDA1NFwiIHN0cm9rZS13aWR0aD1cIjEuNjdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgIDwvc3Bhbj5BZGQgQmlsbGluZyBHcm91cDwvYnV0dG9uPlxuICAgIDwvZGl2PlxuPC9kaXY+XG5cblxuPGZvcm0gW2Zvcm1Hcm91cF09XCJiaWxsaW5nRm9ybVwiPlxuICAgIDxkaXYgKm5nSWY9XCJiaWxsaW5nR3JvdXBzLmxlbmd0aCA+IDFcIiBmb3JtQXJyYXlOYW1lPVwiZ3JvdXBzXCIgbmdiQWNjb3JkaW9uIGFjY29yZGlvbj1cIk5nYkFjY29yZGlvblwiXG4gICAgICAgIFtjbG9zZU90aGVyc109XCJ0cnVlXCI+XG4gICAgICAgIDxkaXYgKm5nRm9yPVwibGV0IGdyb3VwIG9mIGJpbGxpbmdHcm91cHMuY29udHJvbHM7IGxldCBpID0gaW5kZXg7XCIgW2Zvcm1Hcm91cE5hbWVdPVwiaVwiXG4gICAgICAgICAgICBbbmdiQWNjb3JkaW9uSXRlbV09XCJpLnRvU3RyaW5nKClcIiBjbGFzcz1cIm1iLTVcIj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXhcIiBuZ2JBY2NvcmRpb25IZWFkZXI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJtYWluaGVhZGluZyBwLTBcIiBuZ2JBY2NvcmRpb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtMlwiPnt7Z3JvdXAuZ2V0KCdncm91cE5hbWUnKT8udmFsdWV9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJncm91cC5nZXQoJ2lzUHJpbWFyeScpPy52YWx1ZVwiIGNsYXNzPVwicHJpbWFyeS1iYWRnZVwiPlByaW1hcnk8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiIWdyb3VwLmdldCgnaXNQcmltYXJ5Jyk/LnZhbHVlXCIgKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKTsgb25EZWxldGVHcm91cChpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImN1cnNvci1wb2ludGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDIwIDIwXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTIuNSA0Ljk5OTM1SDQuMTY2NjdNNC4xNjY2NyA0Ljk5OTM1TDE3LjUgNC45OTkzNU00LjE2NjY3IDQuOTk5MzVMNC4xNjY2NyAxNi42NjZDNC4xNjY2NyAxNy4xMDggNC4zNDIyNiAxNy41MzIgNC42NTQ4MiAxNy44NDQ1QzQuOTY3MzggMTguMTU3MSA1LjM5MTMxIDE4LjMzMjcgNS44MzMzMyAxOC4zMzI3SDE0LjE2NjdDMTQuNjA4NyAxOC4zMzI3IDE1LjAzMjYgMTguMTU3MSAxNS4zNDUyIDE3Ljg0NDVDMTUuNjU3NyAxNy41MzIgMTUuODMzMyAxNy4xMDggMTUuODMzMyAxNi42NjZMMTUuODMzMyA0Ljk5OTM1TDQuMTY2NjcgNC45OTkzNVpNNi42NjY2NyA0Ljk5OTM1VjMuMzMyNjhDNi42NjY2NyAyLjg5MDY1IDYuODQyMjYgMi40NjY3MyA3LjE1NDgyIDIuMTU0MTdDNy40NjczOCAxLjg0MTYxIDcuODkxMzEgMS42NjYwMiA4LjMzMzMzIDEuNjY2MDJMMTEuNjY2NyAxLjY2NjAyQzEyLjEwODcgMS42NjYwMiAxMi41MzI2IDEuODQxNjEgMTIuODQ1MiAyLjE1NDE3QzEzLjE1NzcgMi40NjY3MyAxMy4zMzMzIDIuODkwNjUgMTMuMzMzMyAzLjMzMjY4VjQuOTk5MzVNOC4zMzMzMyA5LjE2NjAyTDguMzMzMzMgMTQuMTY2TTExLjY2NjcgOS4xNjYwMlYxNC4xNjZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS42N1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZGl2aWRlclwiPjwvZGl2PlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IG5nYkFjY29yZGlvbkNvbGxhcHNlPlxuICAgICAgICAgICAgICAgIDxkaXYgbmdiQWNjb3JkaW9uQm9keSBjbGFzcz1cInBzLTAgcGUtMFwiPlxuICAgICAgICAgICAgICAgICAgICA8IS0tIFtuZ0NsYXNzXT1cImdyb3VwLmdldCgnaXNQcmltYXJ5Jyk/LnZhbHVlID8gJ3Jvdy1jb2xzLTInIDogJydcIiAtLT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYiByb3cgcm93LWNvbHMtMyAgZy0wIG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJvblRhYkNoYW5nZShpLCAnYmFzaWMtaW5mbycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ3JvdXAuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlID09PSAnYmFzaWMtaW5mbycgPyAnc2VsZWN0ZWQnIDogJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cIml0ZW1cIj5CYXNpYyBJbmZvPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJvblRhYkNoYW5nZShpLCAnc3RvcmUtc2VsZWN0aW9uJylcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgPT09ICdzdG9yZS1zZWxlY3Rpb24nID8gJ3NlbGVjdGVkJyA6ICcnXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJpdGVtXCI+U3RvcmUgU2VsZWN0aW9uPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2xcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJvblRhYkNoYW5nZShpLCAnc2V0dGluZ3MnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cImdyb3VwLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSA9PT0gJ3NldHRpbmdzJyA/ICdzZWxlY3RlZCcgOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiaXRlbVwiPlNldHRpbmdzPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwiZ3JvdXAuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlICE9PSAnYmFzaWMtaW5mbycgPyAnZC1ub25lJyA6ICcnXCIgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJncm91cE5hbWVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5Hcm91cCBOYW1lKjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiZ3JvdXBOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiZ3JvdXBOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgnZ3JvdXBOYW1lJyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdncm91cE5hbWUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ2dyb3VwTmFtZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdncm91cE5hbWUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXAgbmFtZSBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJncm91cFRhZ1wiIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJncm91cFRhZ09wdGlvbnNcIiBbbGFiZWxdPVwiJ0dyb3VwIFRhZyonXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ2dyb3VwVGFnJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ2dyb3VwVGFnJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyb3VwIHRhZyBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicmVnaXN0ZXJlZENvbXBhbnlOYW1lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UmVnaXN0ZXJlZCBDb21wYW55IE5hbWUqPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiAoaW5wdXQpPVwiZm9yY2VVcHBlcmNhc2UoJGV2ZW50LCBpKVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInJlZ2lzdGVyZWRDb21wYW55TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInJlZ2lzdGVyZWRDb21wYW55TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPVwidGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdyZWdpc3RlcmVkQ29tcGFueU5hbWUnKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ3JlZ2lzdGVyZWRDb21wYW55TmFtZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgncmVnaXN0ZXJlZENvbXBhbnlOYW1lJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ3JlZ2lzdGVyZWRDb21wYW55TmFtZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcmVkIGNvbXBhbnkgbmFtZSBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiZ3N0XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+R1NUPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiAoaW5wdXQpPVwib25Hc3RDaGFuZ2UoaSwgJGFueSgkZXZlbnQudGFyZ2V0KS52YWx1ZSlcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJnc3RcIiBmb3JtQ29udHJvbE5hbWU9XCJnc3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdnc3QnKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ2dzdCcpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgnZ3N0Jyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ2dzdCcpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHU1QgaXMgcmVxdWlyZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tIEdTVElOIGFkZHJlc3MtbG9va3VwIGZlZWRiYWNrLiBTdGF0ZSBtYWNoaW5lIGRyaXZlbiBieSBsb29rdXBBbmRGaWxsQWRkcmVzcygpLiAtLT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJnc3QtbG9va3VwLW1zZyB0ZXh0LW11dGVkXCIgKm5nSWY9XCJnc3RMb29rdXBTdGF0ZVtpXSA9PT0gJ2xvYWRpbmcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvb2tpbmcgdXAgcmVnaXN0ZXJlZCBhZGRyZXNz4oCmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJnc3QtbG9va3VwLW1zZyB0ZXh0LXN1Y2Nlc3NcIiAqbmdJZj1cImdzdExvb2t1cFN0YXRlW2ldID09PSAnZm91bmQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZ2lzdGVyZWQgYWRkcmVzcyBhdXRvLWZpbGxlZC4gRWRpdCBpZiBuZWVkZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJnc3QtbG9va3VwLW1zZyB0ZXh0LXdhcm5pbmdcIiAqbmdJZj1cImdzdExvb2t1cFN0YXRlW2ldID09PSAnbm90Zm91bmQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vIHJlZ2lzdGVyZWQgYWRkcmVzcyBmb3VuZCBmb3IgdGhpcyBHU1RJTi4gRW50ZXIgbWFudWFsbHkuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJnc3QtbG9va3VwLW1zZyB0ZXh0LWRhbmdlclwiICpuZ0lmPVwiZ3N0TG9va3VwU3RhdGVbaV0gPT09ICdlcnJvcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcyBsb29rdXAgZmFpbGVkLiBFbnRlciBtYW51YWxseS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTUgc3ViLWhlYWRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MgRGV0YWlsc1xuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYWRkcmVzc0xpbmVPbmVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5BZGRyZXNzIGxpbmUgMTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiYWRkcmVzc0xpbmVPbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZGRyZXNzTGluZU9uZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ2FkZHJlc3NMaW5lT25lJyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZU9uZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgnYWRkcmVzc0xpbmVPbmUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgnYWRkcmVzc0xpbmVPbmUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcyBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYWRkcmVzc0xpbmVUd29cIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5BZGRyZXNzIGxpbmUgMjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiYWRkcmVzc0xpbmVUd29cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZGRyZXNzTGluZVR3b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ2FkZHJlc3NMaW5lVHdvJyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZVR3bycpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgnYWRkcmVzc0xpbmVUd28nKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgnYWRkcmVzc0xpbmVUd28nKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcyBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiY2l0eVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkNpdHk8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImNpdHlcIiBmb3JtQ29udHJvbE5hbWU9XCJjaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgnY2l0eScpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgnY2l0eScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgnY2l0eScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdjaXR5Jyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENpdHkgaXMgcmVxdWlyZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInN0YXRlXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+U3RhdGUvcHJvdmluY2U8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInN0YXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwic3RhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdzdGF0ZScpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgnc3RhdGUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ3N0YXRlJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ3N0YXRlJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlIGlzIHJlcXVpcmVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjb3VudHJ5XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q291bnRyeTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiY291bnRyeVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvdW50cnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdjb3VudHJ5Jyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdjb3VudHJ5Jyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKX1cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdjb3VudHJ5Jyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ2NvdW50cnknKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRyeSBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicGluQ29kZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlBpbiBjb2RlPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInBpbkNvZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJwaW5Db2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgncGluQ29kZScpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgncGluQ29kZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgncGluQ29kZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdwaW5Db2RlJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBpbiBjb2RlIGlzIHJlcXVpcmVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwbGFjZU9mU3VwcGx5XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UGxhY2Ugb2YgU3VwcGx5PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJwbGFjZU9mU3VwcGx5XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicGxhY2VPZlN1cHBseVwiIHJlYWRvbmx5XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ3BsYWNlT2ZTdXBwbHknKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ3BsYWNlT2ZTdXBwbHknKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ3BsYWNlT2ZTdXBwbHknKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgncGxhY2VPZlN1cHBseScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGFjZSBvZiBzdXBwbHkgaXMgcmVxdWlyZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBvXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UE88L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInBvXCIgZm9ybUNvbnRyb2xOYW1lPVwicG9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdwbycpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgncG8nKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzbWFsbCBjbGFzcz1cImludmFsaWQtZmVlZGJhY2tcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ3BvJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ3BvJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1cmNoYXNlIG9yZGVyIGlzIHJlcXVpcmVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgIT09ICdzdG9yZS1zZWxlY3Rpb24nID8gJ2Qtbm9uZScgOiAnJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlYXJjaC1pbnB1dFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpY29uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxOCAxOFwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkPVwiTTExLjUgMTBMMTEuNDMgMTAuNzNDMTIuNDEgOS41OSAxMyA4LjExIDEzIDYuNUMxMyAyLjkxIDEwLjA5IDAgNi41IDBDMi45MSAwIDAgMi45MSAwIDYuNUMwIDEwLjA5IDIuOTEgMTMgNi41IDEzQzguMTEgMTMgOS41OSAxMi40MSAxMC43MyAxMS40M0wxMC4yNzYyIDExLjcxTDE2IDE3LjQ5TDE3LjQ5IDE2TDExLjUgMTBaTTYuNSAxMUM0LjAxIDExIDIgOC45OSAyIDYuNUMyIDQuMDEgNC4wMSAyIDYuNSAyQzguOTkgMiAxMSA0LjAxIDExIDYuNUMxMSA4Ljk5IDguOTkgMTEgNi41IDExWlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxsPVwiYmxhY2tcIiBmaWxsLW9wYWNpdHk9XCIwLjU0XCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIFtmb3JtQ29udHJvbF09XCJzZWFyY2hJbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2wgcHMtMTQgbWUtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJTZWFyY2ggU3RvcmVcIiBhdXRvY29tcGxldGU9XCJvZmZcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMlwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLWZpbHRlcnMgKm5nSWY9XCJmaWx0ZXJEYXRhLmxlbmd0aFwiIGNsYXNzPVwibWUtMlwiIFtkYXRhT2JqZWN0XT1cImZpbHRlckRhdGFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFwcGxpZWRGaWx0ZXJzKT1cImFwcGx5RmlsdGVycygkZXZlbnQpXCI+PC9saWItZmlsdGVycz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIihzdWJzY3JpYmVkU3RvcmVzQXBpU3RhdGUgfCBhc3luYykgPT09ICdsb2FkZWQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInN1YnNjcmliZWRTdG9yZUxpc3Q/Lmxlbmd0aFwiID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZSBzdG9yZS10YWJsZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3M9XCJ0YWJsZSBib3R0b20tYm9yZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbY2hlY2tlZF09XCJpc0FsbFN0b3Jlc1NlbGVjdGVkSW5Hcm91cChpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJncm91cC5nZXQoJ2lzUHJpbWFyeScpPy52YWx1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25TZWxlY3RBbGxTdG9yZXMoJGV2ZW50LCBpKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlciBtZS00XCIgdHlwZT1cImNoZWNrYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIGZvcj1cImZsZXhDaGVja0RlZmF1bHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+U3RvcmUgTmFtZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ3N0b3JlTmFtZScpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnc3RvcmVOYW1lJyAmJiBzb3J0RGlyZWN0aW9uID09PSAxID8gJ3JvdGF0ZScgOiAnJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMzMzMzNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+U3RvcmUgSWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgY2xhc3M9XCJjdXJzb3ItcG9pbnRlclwiIChjbGljayk9XCJvblNvcnQoJ3N0b3JlSWQnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwic29ydGVkQ29sdW1uID09PSAnc3RvcmVJZCcgJiYgc29ydERpcmVjdGlvbiA9PT0gMSA/ICdyb3RhdGUnIDogJydcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE2XCIgaGVpZ2h0PVwiMTZcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ9XCJNOC4wMDAxNiAzLjMzMzM3VjEyLjY2NjdNOC4wMDAxNiAxMi42NjY3TDEyLjY2NjggOC4wMDAwNE04LjAwMDE2IDEyLjY2NjdMMy4zMzM1IDguMDAwMDRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4zMzMzM1wiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoPlByb2R1Y3RzPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHIgKm5nRm9yPVwibGV0IGRhdGEgb2Ygc3Vic2NyaWJlZFN0b3JlTGlzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBbY2hlY2tlZF09XCJpc1N0b3JlU2VsZWN0ZWRJbkdyb3VwKGksIGRhdGE/LnN0b3JlSWQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdyb3VwLmdldCgnaXNQcmltYXJ5Jyk/LnZhbHVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvblN0b3JlQ2hlY2soJGV2ZW50LCBpLCBkYXRhPy5zdG9yZUlkKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBjdXJzb3ItcG9pbnRlciBtZS00XCIgdHlwZT1cImNoZWNrYm94XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0b3JlLW5hbWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3tkYXRhPy5zdG9yZU5hbWV9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdG9yZS1pZFwiPklEIDoge3tkYXRhPy5zdG9yZUlkfX08L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicHJvZHVjdHNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBwcm9kdWN0IG9mIGRhdGE/LnByb2R1Y3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwcm9kdWN0ID09PSAndGFuZ29UcmFmZmljJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXAgbWUtMiBtYi0yXCI+VHJhZmZpYzwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwcm9kdWN0ID09PSAndGFuZ29ab25lJ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXAgbWUtMiBtYi0yXCI+Wm9uZTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJwcm9kdWN0ID09PSAndGFuZ29UcmF4J1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImNoaXAgbWUtMiBtYi0yXCI+VHJheDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90Ym9keT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90YWJsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJzdWJzY3JpYmVkU3RvcmVMaXN0Lmxlbmd0aFwiIGNsYXNzPVwibXktM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXBhZ2luYXRpb24gW2l0ZW1zUGVyUGFnZV09XCJpdGVtc1BlclBhZ2VcIiBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RvdGFsSXRlbXNdPVwidG90YWxJdGVtc1wiIFtwYWdpbmF0aW9uU2l6ZXNdPVwicGFnaW5hdGlvblNpemVzXCIgW3BhZ2VTaXplXT1cInBhZ2VTaXplXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlU2l6ZUNoYW5nZSk9XCJvblBhZ2VTaXplQ2hhbmdlKCRldmVudClcIj48L2xpYi1wYWdpbmF0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PiAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhc3Vic2NyaWJlZFN0b3JlTGlzdD8ubGVuZ3RoXCIgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLWxnLTEyIG1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPVwiY2FyZC1ib2R5IGQtZmxleCBqdXN0aWZ5LWNvbnRlbnQtY2VudGVyIGFsaWduLWl0ZW1zLWNlbnRlciBmbGV4LWNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIGNsYXNzPVwiaW1nLXNyYyB3LTI1XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYz1cIi4vYXNzZXRzL3RhbmdvL0ljb25zL05vZGF0YS5zdmdcIiBhbHQ9XCJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiKHN1YnNjcmliZWRTdG9yZXNBcGlTdGF0ZSB8IGFzeW5jKSA9PT0gJ2xvYWRpbmcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXItY2FyZCB3LTEwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicm93IGxvYWRlciAgZC1mbGV4IGp1c3RpZnktY29udGVudC1jZW50ZXIgYWxpZ24taXRlbXMtY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNoaW1tZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwid3JhcHBlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgdGl0bGVcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGxpbmtcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIGRlc2NyaXB0aW9uXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzaGltbWVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIndyYXBwZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInN0cm9rZSBhbmltYXRlIHRpdGxlXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBsaW5rXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSBkZXNjcmlwdGlvblwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2hpbW1lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3cmFwcGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzdHJva2UgYW5pbWF0ZSB0aXRsZVwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgbGlua1wiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic3Ryb2tlIGFuaW1hdGUgZGVzY3JpcHRpb25cIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBbbmdDbGFzc109XCJncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgIT09ICdzZXR0aW5ncycgPyAnZC1ub25lJyA6ICcnXCIgY2xhc3M9XCJyb3dcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5QcmljaW5nIE1ldGhvZDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm10LTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1iLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJwcm9SYXRhXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIiB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZF09XCIncHJvcmF0ZS0nICsgaVwiIHZhbHVlPVwicHJvcmF0ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtZS0yXCIgW2Zvcl09XCIncHJvcmF0ZS0nICsgaVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb3JhdGUg4oCUIGJpbGwgZm9yIGFjdHVhbCB3b3JraW5nIGRheXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cInByb1JhdGFcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidmbGF0LScgKyBpXCIgdmFsdWU9XCJmbGF0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1lLTJcIiBbZm9yXT1cIidmbGF0LScgKyBpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxhdCDigJQgYmlsbCBmb3IgdGhlIHdob2xlIG1vbnRoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiPkFkdmFuY2UgSW52b2ljZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0xXCIgbmdiVG9vbHRpcD1cIkNyZWF0ZXMgYW4gaW52b2ljZSBmb3IgdGhlIG5leHQgbW9udGggYXV0b21hdGljYWxseSB1cG9uIHNhdmluZ1wiIHBsYWNlbWVudD1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB3aWR0aD1cIjE0XCIgaGVpZ2h0PVwiMTRcIiB2aWV3Qm94PVwiMCAwIDE0IDE0XCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNNyAxM0MxMC4zMTM3IDEzIDEzIDEwLjMxMzcgMTMgN0MxMyAzLjY4NjI5IDEwLjMxMzcgMSA3IDFDMy42ODYyOSAxIDEgMy42ODYyOSAxIDdDMSAxMC4zMTM3IDMuNjg2MjkgMTMgNyAxM1pcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS4yXCIgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk03IDkuNFY3TTcgNC42SDcuMDA2XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWNoZWNrIGZvcm0tc3dpdGNoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0XCIgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2FkdmFuY2VJbnZvaWNlXycgKyBpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJhZHZhbmNlSW52b2ljZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbFwiIFtmb3JdPVwiJ2FkdmFuY2VJbnZvaWNlXycgKyBpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGUgaW4gYWR2YW5jZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJiaWxsaW5nR3JvdXBzLmF0KGkpLmdldCgnYWR2YW5jZUludm9pY2UnKT8udmFsdWVcIiBjbGFzcz1cIm10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWwgc21hbGwgZnctc2VtaWJvbGRcIj5BZHZhbmNlIGZyZXF1ZW5jeTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1zZWxlY3RcIiBmb3JtQ29udHJvbE5hbWU9XCJhZHZhbmNlUGVyaW9kXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0IG9mIGFkdmFuY2VQZXJpb2RPcHRpb25zXCIgW3ZhbHVlXT1cIm9wdC52YWx1ZVwiPnt7IG9wdC5sYWJlbCB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGV4dC1tdXRlZCBzbWFsbCBtdC0xXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWR2YW5jZSBpbnZvaWNlIHdpbGwgY292ZXIge3sgYWR2YW5jZUludm9pY2VSYW5nZShiaWxsaW5nR3JvdXBzLmF0KGkpLmdldCgnYWR2YW5jZVBlcmlvZCcpPy52YWx1ZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBtYi01XCIgKm5nSWY9XCJzdWJzY3JpYmVkUHJvZHVjdHMubGVuZ3RoXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0zXCI+UHJvZHVjdCBCaWxsaW5nIE1ldGhvZDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPCEtLSBOb3RlOiBubyAudGFibGUtcmVzcG9uc2l2ZSB3cmFwcGVyIGhlcmUuIEl0cyBvdmVyZmxvdy14OmF1dG9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaXBzIHRoZSBCaWxsaW5nIE1ldGhvZCBkcm9wZG93biBvcHRpb25zIHBhbmVsLiBUaGUgdGFibGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ubHkgaGFzIHR3byBjb2x1bW5zLCBzbyBob3Jpem9udGFsIHNjcm9sbCBpc24ndCBuZWVkZWQuIC0tPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXNtIGJvdHRvbS1ib3JkZXIgYmlsbGluZy1tZXRob2QtdGFibGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Qcm9kdWN0PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+QmlsbGluZyBNZXRob2Q8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBwcm9kIG9mIHN1YnNjcmliZWRQcm9kdWN0c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5XCI+e3sgZm9ybWF0UHJvZHVjdE5hbWUocHJvZC5wcm9kdWN0TmFtZSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXRQcm9kdWN0QmlsbGluZ01ldGhvZChpLCBwcm9kLnByb2R1Y3ROYW1lKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQmlsbGluZ01ldGhvZFNlbGVjdENoYW5nZShpLCBwcm9kLnByb2R1Y3ROYW1lLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiYmlsbGluZ01ldGhvZE9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saWItcmVhY3RpdmUtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cImN1cnJlbmN5XCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiIFtkYXRhXT1cImN1cnJlbmN5T3B0aW9uc1wiIFtsYWJlbF09XCInQ3VycmVuY3knXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJ0YXhDYWxjdWxhdGlvblR5cGVcIiBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCIgW2RhdGFdPVwidGF4Q2FsY3VsYXRpb25UeXBlT3B0aW9uc1wiIFtsYWJlbF09XCInVGF4IENhbGN1bGF0aW9uJ1wiPjwvbGliLXJlYWN0aXZlLXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwicGF5bWVudEN5Y2xlXCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiIFtkYXRhXT1cInBheW1lbnRDeWNsZU9wdGlvbnNcIiBbbGFiZWxdPVwiJ1BheW1lbnQgQ3ljbGUnXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJwYXltZW50VGVybVwiIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJwYXltZW50VGVybU9wdGlvbnNcIiBbbGFiZWxdPVwiJ1BheW1lbnQgVGVybSdcIj48L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTEyIGNvbC14bC0xMiBjb2wteHhsLTEyIG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgW2Zvcl09XCInZW1haWwnICsgaVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPkdlbmVyYXRlIEludm9pY2UgVG8qIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cImFsZXJ0LXJlcXVpcmVkXCI+PC9zcGFuPjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dGVyLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5wdXQtY29udGFpbmVyIGZvcm0tY29udHJvbFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdGb3I9XCJsZXQgZW1haWwgb2YgZ3JvdXAuZ2V0KCdnZW5lcmF0ZUludm9pY2VUbycpPy52YWx1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTNcIj57eyBlbWFpbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKGNsaWNrKT1cInJlbW92ZUVtYWlsQ2hpcChlbWFpbCwgaSlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAxMiAxMlwiIGZpbGw9XCJub25lXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk05IDNMMyA5TTMgM0w5IDlcIiBzdHJva2U9XCIjNjY3MDg1XCIgc3Ryb2tlLXdpZHRoPVwiMS41XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBzdHlsZT1cIm1pbi1oZWlnaHQ6IDQ0cHg7XCIgKGtleWRvd24pPVwib25FbWFpbEtleURvd24oJGV2ZW50LCBpKVwiIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVtYWlsVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1pbnBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgnZ2VuZXJhdGVJbnZvaWNlVG8nKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmICFncm91cC5nZXQoJ2dlbmVyYXRlSW52b2ljZVRvJyk/LnZhbHVlPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnZvaWNlIGVtYWlsIGlzIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy0xMiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5TdG9yZSBMaXN0IEFubmV4dXJlIEF0dGFjaGVkIFdpdGggSW52b2ljZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cImF0dGFjaEFubmV4dXJlXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInJhZGlvXCIgaWQ9XCJ5ZXNcIiBbdmFsdWVdPVwidHJ1ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1lLTJcIiBmb3I9XCJ5ZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFllc1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJhdHRhY2hBbm5leHVyZVwiIGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dCBtZS0yXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiIGlkPVwibm9cIiBbdmFsdWVdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtZS0yXCIgZm9yPVwibm9cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBhbGlnbi1pdGVtcy1lbmQganVzdGlmeS1jb250ZW50LWVuZCBtdC01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm1lLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvbkNhbmNlbChpKVwiIGNsYXNzPVwiYnRuIGJ0bi1vdXRsaW5lIHctMTAwXCI+Q2FuY2VsPC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgPT09ICdiYXNpYy1pbmZvJyB8fCBncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgPT09ICdzdG9yZS1zZWxlY3Rpb24nXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwibmF2aWdhdGUoaSlcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMFwiPk5leHQ8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgPT09ICdzZXR0aW5ncydcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJvblN1Ym1pdChncm91cC52YWx1ZSwgaSlcIiBjbGFzcz1cImJ0biBidG4tcHJpbWFyeSB3LTEwMFwiPlNhdmUgQ2hhbmdlczwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuXG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJpbGxpbmdHcm91cHMubGVuZ3RoID09PSAxXCIgZm9ybUFycmF5TmFtZT1cImdyb3Vwc1wiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0Zvcj1cImxldCBncm91cCBvZiBiaWxsaW5nR3JvdXBzLmNvbnRyb2xzOyBsZXQgaSA9IGluZGV4O1wiIFtmb3JtR3JvdXBOYW1lXT1cImlcIj5cbiAgICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRhYiByb3cgcm93LWNvbHMtMiBnLTAgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJvblRhYkNoYW5nZShpLCAnYmFzaWMtaW5mbycpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJncm91cC5nZXQoJ2N1cnJlbnRUYWInKT8udmFsdWUgPT09ICdiYXNpYy1pbmZvJyA/ICdzZWxlY3RlZCcgOiAnJ1wiIGNsYXNzPVwiaXRlbVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2ljXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5mbzwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IChjbGljayk9XCJvblRhYkNoYW5nZShpLCAnc2V0dGluZ3MnKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwiZ3JvdXAuZ2V0KCdjdXJyZW50VGFiJyk/LnZhbHVlID09PSAnc2V0dGluZ3MnID8gJ3NlbGVjdGVkJyA6ICcnXCIgY2xhc3M9XCJpdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3NcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImdyb3VwLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSAhPT0gJ2Jhc2ljLWluZm8nID8gJ2Qtbm9uZScgOiAnJ1wiIGNsYXNzPVwicm93XCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInJlZ2lzdGVyZWRDb21wYW55TmFtZVwiIGNsYXNzPVwiZm9ybS1sYWJlbFwiPlJlZ2lzdGVyZWQgQ29tcGFueSBOYW1lKjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiAoaW5wdXQpPVwiZm9yY2VVcHBlcmNhc2UoJGV2ZW50LCBpKVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInJlZ2lzdGVyZWRDb21wYW55TmFtZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwicmVnaXN0ZXJlZENvbXBhbnlOYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT1cInRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdyZWdpc3RlcmVkQ29tcGFueU5hbWUnKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ3JlZ2lzdGVyZWRDb21wYW55TmFtZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ3JlZ2lzdGVyZWRDb21wYW55TmFtZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdyZWdpc3RlcmVkQ29tcGFueU5hbWUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcmVkIGNvbXBhbnkgbmFtZSBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLTEyIG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJnc3RcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5HU1Q8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgKGlucHV0KT1cIm9uR3N0Q2hhbmdlKGksICRhbnkoJGV2ZW50LnRhcmdldCkudmFsdWUpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiZ3N0XCIgZm9ybUNvbnRyb2xOYW1lPVwiZ3N0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdnc3QnKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ2dzdCcpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ2dzdCcpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdnc3QnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWdpc3RlcmVkIGNvbXBhbnkgbmFtZSBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJnc3QtbG9va3VwLW1zZyB0ZXh0LW11dGVkXCIgKm5nSWY9XCJnc3RMb29rdXBTdGF0ZVtpXSA9PT0gJ2xvYWRpbmcnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9va2luZyB1cCByZWdpc3RlcmVkIGFkZHJlc3PigKZcbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJnc3QtbG9va3VwLW1zZyB0ZXh0LXN1Y2Nlc3NcIiAqbmdJZj1cImdzdExvb2t1cFN0YXRlW2ldID09PSAnZm91bmQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVnaXN0ZXJlZCBhZGRyZXNzIGF1dG8tZmlsbGVkLiBFZGl0IGlmIG5lZWRlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJnc3QtbG9va3VwLW1zZyB0ZXh0LXdhcm5pbmdcIiAqbmdJZj1cImdzdExvb2t1cFN0YXRlW2ldID09PSAnbm90Zm91bmQnXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTm8gcmVnaXN0ZXJlZCBhZGRyZXNzIGZvdW5kIGZvciB0aGlzIEdTVElOLiBFbnRlciBtYW51YWxseS5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJnc3QtbG9va3VwLW1zZyB0ZXh0LWRhbmdlclwiICpuZ0lmPVwiZ3N0TG9va3VwU3RhdGVbaV0gPT09ICdlcnJvcidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzIGxvb2t1cCBmYWlsZWQuIEVudGVyIG1hbnVhbGx5LlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItNSBzdWItaGVhZGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICBBZGRyZXNzIERldGFpbHNcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImFkZHJlc3NMaW5lT25lXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+QWRkcmVzcyBsaW5lIDE8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgYXV0b2NvbXBsZXRlPVwib2ZmXCIgdHlwZT1cInRleHRcIiBjbGFzcz1cImZvcm0tY29udHJvbFwiIGlkPVwiYWRkcmVzc0xpbmVPbmVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFkZHJlc3NMaW5lT25lXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZU9uZScpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgnYWRkcmVzc0xpbmVPbmUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZU9uZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZU9uZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFkZHJlc3MgaXMgcmVxdWlyZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC0xMiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwiYWRkcmVzc0xpbmVUd29cIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5BZGRyZXNzIGxpbmUgMjwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJhZGRyZXNzTGluZVR3b1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybUNvbnRyb2xOYW1lPVwiYWRkcmVzc0xpbmVUd29cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ2FkZHJlc3NMaW5lVHdvJyk/LmludmFsaWQgKSAmJiAoZ3JvdXAuZ2V0KCdhZGRyZXNzTGluZVR3bycpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ2FkZHJlc3NMaW5lVHdvJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ2FkZHJlc3NMaW5lVHdvJyk/Lmhhc0Vycm9yKCdyZXF1aXJlZCcpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRkcmVzcyBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJjaXR5XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+Q2l0eTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJjaXR5XCIgZm9ybUNvbnRyb2xOYW1lPVwiY2l0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieyAnaXMtaW52YWxpZCc6KGdyb3VwLmdldCgnY2l0eScpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgnY2l0eScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCl9XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c21hbGwgY2xhc3M9XCJpbnZhbGlkLWZlZWRiYWNrXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIihncm91cC5nZXQoJ2NpdHknKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmIGdyb3VwLmdldCgnY2l0eScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENpdHkgaXMgcmVxdWlyZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwic3RhdGVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5TdGF0ZS9wcm92aW5jZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJzdGF0ZVwiIGZvcm1Db250cm9sTmFtZT1cInN0YXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdzdGF0ZScpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgnc3RhdGUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdzdGF0ZScpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdzdGF0ZScpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRlIGlzIHJlcXVpcmVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cImNvdW50cnlcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5Db3VudHJ5PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cImNvdW50cnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImNvdW50cnlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ2NvdW50cnknKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ2NvdW50cnknKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdjb3VudHJ5Jyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ2NvdW50cnknKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3VudHJ5IGlzIHJlcXVpcmVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj1cInBpbkNvZGVcIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5QaW4gY29kZTwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiAoa2V5cHJlc3MpPVwib21pdF9zcGVjaWFsX2NoYXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInBpbkNvZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBpbkNvZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ3BpbkNvZGUnKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ3BpbkNvZGUnKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdwaW5Db2RlJyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ3BpbkNvZGUnKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaW4gY29kZSBpcyByZXF1aXJlZC5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc21hbGw+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9XCJwbGFjZU9mU3VwcGx5XCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+UGxhY2Ugb2YgU3VwcGx5PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCAoa2V5ZG93bi5lbnRlcik9XCJwcmV2ZW50RW50ZXIoJGV2ZW50KVwiIGF1dG9jb21wbGV0ZT1cIm9mZlwiIHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmb3JtLWNvbnRyb2xcIiBpZD1cInBsYWNlT2ZTdXBwbHlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cInBsYWNlT2ZTdXBwbHlcIiByZWFkb25seVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsgJ2lzLWludmFsaWQnOihncm91cC5nZXQoJ3BsYWNlT2ZTdXBwbHknKT8uaW52YWxpZCApICYmIChncm91cC5nZXQoJ3BsYWNlT2ZTdXBwbHknKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdwbGFjZU9mU3VwcGx5Jyk/LnRvdWNoZWQgfHwgc3VibWl0dGVkKSAmJiBncm91cC5nZXQoJ3BsYWNlT2ZTdXBwbHknKT8uaGFzRXJyb3IoJ3JlcXVpcmVkJylcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQbGFjZSBvZiBzdXBwbHkgaXMgcmVxdWlyZWQuXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPVwicG9cIiBjbGFzcz1cImZvcm0tbGFiZWxcIj5QTzwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgKGtleWRvd24uZW50ZXIpPVwicHJldmVudEVudGVyKCRldmVudClcIiBhdXRvY29tcGxldGU9XCJvZmZcIiB0eXBlPVwidGV4dFwiIGNsYXNzPVwiZm9ybS1jb250cm9sXCIgaWQ9XCJwb1wiIGZvcm1Db250cm9sTmFtZT1cInBvXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdDbGFzc109XCJ7ICdpcy1pbnZhbGlkJzooZ3JvdXAuZ2V0KCdwbycpPy5pbnZhbGlkICkgJiYgKGdyb3VwLmdldCgncG8nKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpfVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1mZWVkYmFja1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIoZ3JvdXAuZ2V0KCdwbycpPy50b3VjaGVkIHx8IHN1Ym1pdHRlZCkgJiYgZ3JvdXAuZ2V0KCdwbycpPy5oYXNFcnJvcigncmVxdWlyZWQnKVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1cmNoYXNlIG9yZGVyIGlzIHJlcXVpcmVkLlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zbWFsbD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cImdyb3VwLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSAhPT0gJ3NldHRpbmdzJyA/ICdkLW5vbmUnIDogJydcIiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5QcmljaW5nIE1ldGhvZDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwibXQtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtYi0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCBmb3JtQ29udHJvbE5hbWU9XCJwcm9SYXRhXCIgY2xhc3M9XCJmb3JtLWNoZWNrLWlucHV0IG1lLTJcIiB0eXBlPVwicmFkaW9cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lkXT1cIidwcm9yYXRlLWVkaXQtJyArIGlcIiB2YWx1ZT1cInByb3JhdGVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtZS0yXCIgW2Zvcl09XCIncHJvcmF0ZS1lZGl0LScgKyBpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9yYXRlIOKAlCBiaWxsIGZvciBhY3R1YWwgd29ya2luZyBkYXlzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGZvcm1Db250cm9sTmFtZT1cInByb1JhdGFcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiIHR5cGU9XCJyYWRpb1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2ZsYXQtZWRpdC0nICsgaVwiIHZhbHVlPVwiZmxhdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1lLTJcIiBbZm9yXT1cIidmbGF0LWVkaXQtJyArIGlcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZsYXQg4oCUIGJpbGwgZm9yIHRoZSB3aG9sZSBtb250aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIj5BZHZhbmNlIEludm9pY2U8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtcy0xXCIgbmdiVG9vbHRpcD1cIkNyZWF0ZXMgYW4gaW52b2ljZSBmb3IgdGhlIG5leHQgbW9udGggYXV0b21hdGljYWxseSB1cG9uIHNhdmluZ1wiIHBsYWNlbWVudD1cInRvcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTRcIiBoZWlnaHQ9XCIxNFwiIHZpZXdCb3g9XCIwIDAgMTQgMTRcIiBmaWxsPVwibm9uZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPVwiTTcgMTNDMTAuMzEzNyAxMyAxMyAxMC4zMTM3IDEzIDdDMTMgMy42ODYyOSAxMC4zMTM3IDEgNyAxQzMuNjg2MjkgMSAxIDMuNjg2MjkgMSA3QzEgMTAuMzEzNyAzLjY4NjI5IDEzIDcgMTNaXCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHBhdGggZD1cIk03IDkuNFY3TTcgNC42SDcuMDA2XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuMlwiIHN0cm9rZS1saW5lY2FwPVwicm91bmRcIiBzdHJva2UtbGluZWpvaW49XCJyb3VuZFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtdC0zXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImZvcm0tY2hlY2sgZm9ybS1zd2l0Y2hcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1jaGVjay1pbnB1dFwiIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaWRdPVwiJ2FkdmFuY2VJbnZvaWNlU2luZ2xlXycgKyBpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1Db250cm9sTmFtZT1cImFkdmFuY2VJbnZvaWNlXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tY2hlY2stbGFiZWxcIiBbZm9yXT1cIidhZHZhbmNlSW52b2ljZVNpbmdsZV8nICsgaVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2VuZXJhdGUgaW4gYWR2YW5jZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJiaWxsaW5nR3JvdXBzLmF0KGkpLmdldCgnYWR2YW5jZUludm9pY2UnKT8udmFsdWVcIiBjbGFzcz1cIm10LTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbCBzbWFsbCBmdy1zZW1pYm9sZFwiPkFkdmFuY2UgZnJlcXVlbmN5PC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tc2VsZWN0XCIgZm9ybUNvbnRyb2xOYW1lPVwiYWR2YW5jZVBlcmlvZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgb3B0IG9mIGFkdmFuY2VQZXJpb2RPcHRpb25zXCIgW3ZhbHVlXT1cIm9wdC52YWx1ZVwiPnt7IG9wdC5sYWJlbCB9fTwvb3B0aW9uPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbXV0ZWQgc21hbGwgbXQtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWR2YW5jZSBpbnZvaWNlIHdpbGwgY292ZXIge3sgYWR2YW5jZUludm9pY2VSYW5nZShiaWxsaW5nR3JvdXBzLmF0KGkpLmdldCgnYWR2YW5jZVBlcmlvZCcpPy52YWx1ZSkgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgbWItNVwiICpuZ0lmPVwic3Vic2NyaWJlZFByb2R1Y3RzLmxlbmd0aFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1jaGVjay1sYWJlbCBtYi0zXCI+UHJvZHVjdCBCaWxsaW5nIE1ldGhvZDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwidGFibGUtcmVzcG9uc2l2ZVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBjbGFzcz1cInRhYmxlIHRhYmxlLXNtIGJvdHRvbS1ib3JkZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoZWFkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5Qcm9kdWN0PC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGg+QmlsbGluZyBNZXRob2Q8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRib2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyICpuZ0Zvcj1cImxldCBwcm9kIG9mIHN1YnNjcmliZWRQcm9kdWN0c1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJiYWRnZSBiYWRnZS1saWdodC1wcmltYXJ5XCI+e3sgZm9ybWF0UHJvZHVjdE5hbWUocHJvZC5wcm9kdWN0TmFtZSkgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbF09XCJnZXRQcm9kdWN0QmlsbGluZ01ldGhvZChpLCBwcm9kLnByb2R1Y3ROYW1lKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbmdNb2RlbE9wdGlvbnNdPVwie3N0YW5kYWxvbmU6IHRydWV9XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZ01vZGVsQ2hhbmdlKT1cIm9uQmlsbGluZ01ldGhvZFNlbGVjdENoYW5nZShpLCBwcm9kLnByb2R1Y3ROYW1lLCAkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2RhdGFdPVwiYmlsbGluZ01ldGhvZE9wdGlvbnNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saWItcmVhY3RpdmUtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3Rib2R5PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTYgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGxpYi1yZWFjdGl2ZS1zZWxlY3QgZm9ybUNvbnRyb2xOYW1lPVwiY3VycmVuY3lcIiBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCIgW2RhdGFdPVwiY3VycmVuY3lPcHRpb25zXCIgW2xhYmVsXT1cIidDdXJyZW5jeSdcIj48L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInRheENhbGN1bGF0aW9uVHlwZVwiIFtpZEZpZWxkXT1cIid2YWx1ZSdcIiBbbmFtZUZpZWxkXT1cIidsYWJlbCdcIiBbZGF0YV09XCJ0YXhDYWxjdWxhdGlvblR5cGVPcHRpb25zXCIgW2xhYmVsXT1cIidUYXggQ2FsY3VsYXRpb24nXCI+PC9saWItcmVhY3RpdmUtc2VsZWN0PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctNiBtYi01XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bGliLXJlYWN0aXZlLXNlbGVjdCBmb3JtQ29udHJvbE5hbWU9XCJwYXltZW50Q3ljbGVcIiBbaWRGaWVsZF09XCIndmFsdWUnXCIgW25hbWVGaWVsZF09XCInbGFiZWwnXCIgW2RhdGFdPVwicGF5bWVudEN5Y2xlT3B0aW9uc1wiIFtsYWJlbF09XCInUGF5bWVudCBDeWNsZSdcIj48L2xpYi1yZWFjdGl2ZS1zZWxlY3Q+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29sLW1kLTEyIGNvbC1sZy02IG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsaWItcmVhY3RpdmUtc2VsZWN0IGZvcm1Db250cm9sTmFtZT1cInBheW1lbnRUZXJtXCIgW2lkRmllbGRdPVwiJ3ZhbHVlJ1wiIFtuYW1lRmllbGRdPVwiJ2xhYmVsJ1wiIFtkYXRhXT1cInBheW1lbnRUZXJtT3B0aW9uc1wiIFtsYWJlbF09XCInUGF5bWVudCBUZXJtJ1wiPjwvbGliLXJlYWN0aXZlLXNlbGVjdD5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtbWQtMTIgY29sLWxnLTEyIGNvbC14bC0xMiBjb2wteHhsLTEyIG1iLTVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBbZm9yXT1cIidlbWFpbCcgKyBpXCIgY2xhc3M9XCJmb3JtLWxhYmVsXCI+R2VuZXJhdGUgSW52b2ljZSBUbyogPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJhbGVydC1yZXF1aXJlZFwiPjwvc3Bhbj48L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm91dGVyLWNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbnB1dC1jb250YWluZXIgZm9ybS1jb250cm9sXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IGVtYWlsIG9mIGdyb3VwLmdldCgnZ2VuZXJhdGVJbnZvaWNlVG8nKT8udmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2hpcFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibWUtM1wiPnt7IGVtYWlsIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIChjbGljayk9XCJyZW1vdmVFbWFpbENoaXAoZW1haWwsIGkpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIHdpZHRoPVwiMTJcIiBoZWlnaHQ9XCIxMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDEyIDEyXCIgZmlsbD1cIm5vbmVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwYXRoIGQ9XCJNOSAzTDMgOU0zIDNMOSA5XCIgc3Ryb2tlPVwiIzY2NzA4NVwiIHN0cm9rZS13aWR0aD1cIjEuNVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Ryb2tlLWxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZS1saW5lam9pbj1cInJvdW5kXCIgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IChrZXlkb3duLmVudGVyKT1cInByZXZlbnRFbnRlcigkZXZlbnQpXCIgc3R5bGU9XCJtaW4taGVpZ2h0OiA0NHB4O1wiIChrZXlkb3duKT1cIm9uRW1haWxLZXlEb3duKCRldmVudCwgaSlcIiB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZD1cImVtYWlsVmFsdWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNtYWxsIGNsYXNzPVwiaW52YWxpZC1pbnBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiKGdyb3VwLmdldCgnZ2VuZXJhdGVJbnZvaWNlVG8nKT8udG91Y2hlZCB8fCBzdWJtaXR0ZWQpICYmICFncm91cC5nZXQoJ2dlbmVyYXRlSW52b2ljZVRvJyk/LnZhbHVlPy5sZW5ndGhcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnZvaWNlIGVtYWlsIGlzIHJlcXVpcmVkXG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NtYWxsPlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNvbC1tZC0xMiBjb2wtbGctMTIgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJvd1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgbWItNVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsXCI+U3RvcmUgTGlzdCBBbm5leHVyZSBBdHRhY2hlZCBXaXRoIEludm9pY2U8L2xhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1lLTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiYXR0YWNoQW5uZXh1cmVcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiIGlkPVwieWVzXCIgW3ZhbHVlXT1cInRydWVcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1lLTJcIiBmb3I9XCJ5ZXNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWWVzXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgZm9ybUNvbnRyb2xOYW1lPVwiYXR0YWNoQW5uZXh1cmVcIiBjbGFzcz1cImZvcm0tY2hlY2staW5wdXQgbWUtMlwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJyYWRpb1wiIGlkPVwibm9cIiBbdmFsdWVdPVwiZmFsc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWNoZWNrLWxhYmVsIG1lLTJcIiBmb3I9XCJub1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGFsaWduLWl0ZW1zLWVuZCBqdXN0aWZ5LWNvbnRlbnQtZW5kIG10LTVcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJtZS00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIChjbGljayk9XCJtb2RhbFJlZi5jbG9zZSgpXCIgY2xhc3M9XCJidG4gYnRuLW91dGxpbmUgdy0xMDBcIj5DYW5jZWw8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImdyb3VwLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSA9PT0gJ2Jhc2ljLWluZm8nIHx8IGdyb3VwLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSA9PT0gJ3N0b3JlLXNlbGVjdGlvbidcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gKGNsaWNrKT1cIm5hdmlnYXRlKGkpXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDBcIj5OZXh0PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImdyb3VwLmdldCgnY3VycmVudFRhYicpPy52YWx1ZSA9PT0gJ3NldHRpbmdzJ1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiAoY2xpY2spPVwib25TdWJtaXQoZ3JvdXAudmFsdWUsIGkpXCIgY2xhc3M9XCJidG4gYnRuLXByaW1hcnkgdy0xMDBcIj5TYXZlIENoYW5nZXM8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuXG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuXG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuXG48L2Zvcm0+XG48L2Rpdj4iXX0=