@alauda-fe/crd-form 0.0.1 → 0.0.2

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.
@@ -8,7 +8,7 @@ import { FormControl, Validators } from '@angular/forms';
8
8
  import { decode, encode } from 'ab64';
9
9
  import { isImmutable } from 'immutable';
10
10
  import { get, identity, map as $map, template } from 'lodash-es';
11
- import { combineLatest, map, filter, Observable, Subject, debounceTime, distinctUntilChanged, shareReplay, takeUntil, BehaviorSubject, switchMap, of, finalize, isObservable, take, } from 'rxjs';
11
+ import { combineLatest, map, filter, Observable, Subject, debounceTime, distinctUntilChanged, shareReplay, takeUntil, BehaviorSubject, switchMap, of, finalize, isObservable, take, tap, } from 'rxjs';
12
12
  import { CrdFormComponent } from '../crd-form/component';
13
13
  import { SpecCapability, Validations, } from '../types';
14
14
  import { convertBooleanSwitchValue, convertValue, CrdFormCustomDescriptionDirective, getDefaultValue, getDisplayByCapability, getFieldDescription, getFieldDisplayName, getFieldType, getFormData, getRadioOptions, normalizePath, } from '../utils';
@@ -601,7 +601,14 @@ export class OperandFieldComponent {
601
601
  return combineLatest([
602
602
  this.crdForm.formContext$,
603
603
  this.formDataState$,
604
- ]).pipe(debounceTime(100), distinctUntilChanged((p, n) => compareWithSubscribedPaths(dynamicExpression, p, n)), switchMap(([formContext, formDataState]) => {
604
+ ]).pipe(debounceTime(100), distinctUntilChanged((p, n) => compareWithSubscribedPaths(dynamicExpression, p, n)), tap(([formContext, formDataState]) => {
605
+ if (this.crdForm.debug) {
606
+ /* eslint-disable no-console */
607
+ console.log('field: ', field);
608
+ console.log('formContext: ', formContext);
609
+ console.log('formDataState: ', formDataState.toJS());
610
+ }
611
+ }), switchMap(([formContext, formDataState]) => {
605
612
  let result = [];
606
613
  const { api, labelPath, valuePath, expression } = dynamicExpression.options;
607
614
  const stringExpressionContext = this.getStringExpressionContext(formContext, formDataState);
@@ -650,10 +657,14 @@ export class OperandFieldComponent {
650
657
  }));
651
658
  this.getStringExpressionContext = (formContext, formDataState) => ({
652
659
  fetchResourceList: this.fetchResourceList,
653
- context: formContext,
660
+ context: formContext || {},
654
661
  formData: formDataState.toJS()?.spec || {},
655
662
  });
656
663
  this.fetchResourceList = (url, callback) => {
664
+ // 例如 '/kubernetes/global/api/v1/namespaces//secrets' 表示 formData.namespace 没有插值
665
+ if (url.includes('//')) {
666
+ return of([]);
667
+ }
657
668
  this.loading$.next(true);
658
669
  return this.http
659
670
  .get(`${API_GATEWAY}${url}`)
@@ -866,5 +877,5 @@ __decorate([
866
877
  type: HostBinding,
867
878
  args: ['hidden']
868
879
  }] }); })();
869
- (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(OperandFieldComponent, { className: "OperandFieldComponent", filePath: "lib/field-controls/operand-field.component.ts", lineNumber: 115 }); })();
870
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmFuZC1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyZC1mb3JtL3NyYy9saWIvZmllbGQtY29udHJvbHMvb3BlcmFuZC1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyZC1mb3JtL3NyYy9saWIvZmllbGQtY29udHJvbHMvb3BlcmFuZC1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxhQUFhLEVBRWIsT0FBTyxFQUVQLGVBQWUsRUFDZixVQUFVLEVBQ1YsU0FBUyxFQUNULGtCQUFrQixFQUdsQixXQUFXLEVBQ1gsZUFBZSxFQUNmLGdCQUFnQixHQUNqQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxRQUFRLEVBQ1IsS0FBSyxFQUlMLE1BQU07QUFFTiwyQkFBMkI7QUFDM0IsZUFBZSxJQUFJLGNBQWMsR0FDbEMsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2pFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsR0FBRyxFQUNILE1BQU0sRUFDTixVQUFVLEVBQ1YsT0FBTyxFQUNQLFlBQVks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IEVuY29kaW5nLFxuICBpc0VxdWFsLFxuICBLdWJlcm5ldGVzUmVzb3VyY2UsXG4gIE9ic2VydmFibGVJbnB1dCxcbiAgcHVibGlzaFJlZixcbiAgc2tpcEVycm9yLFxuICBzdGFydFdpdGhDb25kaXRpb24sXG4gIFN0cmluZ01hcCxcbiAgVHJhbnNsYXRpb24sXG4gIHZpZXdBY3Rpb25zLFxuICB5YW1sUmVhZE9wdGlvbnMsXG4gIHlhbWxXcml0ZU9wdGlvbnMsXG59IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIC8vIGNzcGVsbDpkaXNhYmxlLW5leHQtbGluZVxuICDJtWNyZWF0ZUluamVjdG9yIGFzIGNyZWF0ZUluamVjdG9yLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlY29kZSwgZW5jb2RlIH0gZnJvbSAnYWI2NCc7XG5pbXBvcnQgeyBpc0ltbXV0YWJsZSB9IGZyb20gJ2ltbXV0YWJsZSc7XG5pbXBvcnQgeyBnZXQsIGlkZW50aXR5LCBtYXAgYXMgJG1hcCwgdGVtcGxhdGUgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtcbiAgY29tYmluZUxhdGVzdCxcbiAgbWFwLFxuICBmaWx0ZXIsXG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIGRlYm91bmNlVGltZSxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIHNoYXJlUmVwbGF5LFxuICB0YWtlVW50aWwsXG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgc3dpdGNoTWFwLFxuICBvZixcbiAgZmluYWxpemUsXG4gIGlzT2JzZXJ2YWJsZSxcbiAgdGFrZSxcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7IENyZEZvcm1Db21wb25lbnQgfSBmcm9tICcuLi9jcmQtZm9ybS9jb21wb25lbnQnO1xuaW1wb3J0IHsgUmVtb3RlV2lkZ2V0TW9kdWxlRGVmaW5pdGlvbiB9IGZyb20gJy4uL3JlbW90ZS13aWRnZXRzJztcbmltcG9ydCB7XG4gIEZpZWxkVmFsdWVDaGFuZ2VFdmVudCxcbiAgRm9ybURhdGFTdGF0ZSxcbiAgRm9ybUVycm9ycyxcbiAgT3BlcmFuZEZpZWxkLFxuICBTcGVjQ2FwYWJpbGl0eSxcbiAgVmFsaWRhdGlvbnMsXG59IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7XG4gIGNvbnZlcnRCb29sZWFuU3dpdGNoVmFsdWUsXG4gIGNvbnZlcnRWYWx1ZSxcbiAgQ3JkRm9ybUN1c3RvbURlc2NyaXB0aW9uRGlyZWN0aXZlLFxuICBnZXREZWZhdWx0VmFsdWUsXG4gIGdldERpc3BsYXlCeUNhcGFiaWxpdHksXG4gIGdldEZpZWxkRGVzY3JpcHRpb24sXG4gIGdldEZpZWxkRGlzcGxheU5hbWUsXG4gIGdldEZpZWxkVHlwZSxcbiAgZ2V0Rm9ybURhdGEsXG4gIGdldFJhZGlvT3B0aW9ucyxcbiAgbm9ybWFsaXplUGF0aCxcbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IHtcbiAgaXNBcnJheUZpZWxkLFxuICBpc0FycmF5RmllbGRUYWJsZSxcbiAgaXNDbGVhcmFibGUsXG4gIGlzQ3JlYXRhYmxlLFxuICBpc0dyb3VwRmllbGQsXG4gIGlzTXVsdGlwbGUsXG4gIGlzQWxsb3dDcmVhdGUsXG4gIGlzUmVtb3RlRmllbGQsXG4gIGlzUmVxdWlyZWQsXG4gIGV2YWxJbkNvbnRleHQsXG4gIGdldE9wZXJhbmRQYXRoLFxufSBmcm9tICcuLi91dGlscy9oZWxwZXInO1xuXG5pbXBvcnQge1xuICBjb21wYXJlV2l0aFN1YnNjcmliZWRQYXRocyxcbiAgUHJvcHNGaWVsZEV4cHJlc3Npb24sXG59IGZyb20gJy4vZXhwcmVzc2lvbnMvcHJvcHMtZXhwcmVzc2lvbic7XG5pbXBvcnQgeyBpc0xpbmsgfSBmcm9tICcuL3dpZGdldHMvbGluay9jb21wb25lbnQnO1xuXG5leHBvcnQgY29uc3QgUEFTU1dPUkRfUkVWRUFMID0gJyoqKioqKic7XG5cbmNvbnN0IEVOQ09ESU5HX01BUFBFUjogUmVjb3JkPHN0cmluZywgRW5jb2Rpbmc+ID0ge1xuICBiYXNlNjQ6IHtcbiAgICBkZWNvZGUsXG4gICAgZW5jb2RlLFxuICB9LFxufTtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYWNsLW9wZXJhbmQtZmllbGQnLFxuICB0ZW1wbGF0ZVVybDogJ29wZXJhbmQtZmllbGQuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnb3BlcmFuZC1maWVsZC5jb21wb25lbnQuc2NzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcbn0pXG5leHBvcnQgY2xhc3MgT3BlcmFuZEZpZWxkQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3ksIE9uQ2hhbmdlcywgQWZ0ZXJWaWV3SW5pdFxue1xuICBASW5wdXQoKVxuICBmaWVsZDogT3BlcmFuZEZpZWxkO1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICBmaWVsZCQhOiBPYnNlcnZhYmxlPE9wZXJhbmRGaWVsZD47XG5cbiAgQElucHV0KClcbiAgcmVtb3RlTW9kdWxlRGVmaW5pdGlvbjogUmVtb3RlV2lkZ2V0TW9kdWxlRGVmaW5pdGlvbjtcblxuICBAT2JzZXJ2YWJsZUlucHV0KClcbiAgcmVtb3RlTW9kdWxlRGVmaW5pdGlvbiQhOiBPYnNlcnZhYmxlPFJlbW90ZVdpZGdldE1vZHVsZURlZmluaXRpb24+O1xuXG4gIEBJbnB1dCgpXG4gIHJlYWRvbmx5ID0gZmFsc2U7XG5cbiAgZ2V0IGlzRGlzYWJsZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVhZG9ubHkgfHwgdGhpcy5maWVsZD8uZGlzYWJsZWQ7XG4gIH1cblxuICBnZXQgZWZmZWN0Q29udHJvbERlZmF1bHRWYWx1ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5jcmRGb3JtLmVmZmVjdENvbnRyb2xEZWZhdWx0VmFsdWU7XG4gIH1cblxuICBnZXQgaXNSZXF1aXJlZCgpIHtcbiAgICByZXR1cm4gaXNSZXF1aXJlZCh0aGlzLmZpZWxkKTtcbiAgfVxuXG4gIGdldCBpc0NyZWF0YWJsZSgpIHtcbiAgICByZXR1cm4gaXNDcmVhdGFibGUodGhpcy5maWVsZCk7XG4gIH1cblxuICBnZXQgaXNNdWx0aXBsZSgpIHtcbiAgICByZXR1cm4gaXNNdWx0aXBsZSh0aGlzLmZpZWxkKTtcbiAgfVxuXG4gIGdldCBpc0FsbG93Q3JlYXRlKCkge1xuICAgIHJldHVybiBpc0FsbG93Q3JlYXRlKHRoaXMuZmllbGQpO1xuICB9XG5cbiAgZ2V0IGlzQ2xlYXJhYmxlKCkge1xuICAgIHJldHVybiBpc0NsZWFyYWJsZSh0aGlzLmZpZWxkKTtcbiAgfVxuXG4gIEBJbnB1dCgpIGZpZWxkczogT3BlcmFuZEZpZWxkW107XG4gIEBJbnB1dCgpIGZvcm1EYXRhU3RhdGU6IEZvcm1EYXRhU3RhdGU7XG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICBmb3JtRGF0YVN0YXRlJCE6IE9ic2VydmFibGU8Rm9ybURhdGFTdGF0ZT47XG5cbiAgQElucHV0KCkgZm9ybUVycm9yczogRm9ybUVycm9ycztcbiAgQElucHV0KCkgY3VzdG9tRGVzY3JpcHRpb246IENyZEZvcm1DdXN0b21EZXNjcmlwdGlvbkRpcmVjdGl2ZTtcblxuICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPEZpZWxkVmFsdWVDaGFuZ2VFdmVudD4oKTtcbiAgQE91dHB1dCgpIGl0ZW1SZW1vdmUgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLy8g6YCa6L+HaGlkZGVu5bGe5oCn6ZqQ6JeP5LiN5b+F6KaB55qE5YWD57Sg77yM5ZKMIGFjbFNjcm9sbFRvRmlyc3RJbnZhbGlkIOaMh+S7pOi/h+a7pOmakOiXj+WFg+e0oOS/neaMgeS4gOiHtFxuICBASG9zdEJpbmRpbmcoJ2hpZGRlbicpXG4gIGdldCBpc0hpZGRlbigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgKHRoaXMuaGFzRmllbGREZXBlbmRlbmN5KCkgJiYgIXRoaXMuY2hlY2tGaWVsZERlcGVuZGVuY3kodGhpcy5maWVsZCkpIHx8XG4gICAgICB0aGlzLl9oaWRkZW5cbiAgICApO1xuICB9XG5cbiAgc2V0IGlzSGlkZGVuKGhpZGRlbikge1xuICAgIHRoaXMuX2hpZGRlbiA9IGhpZGRlbjtcbiAgICB0aGlzLmNkci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgX2hpZGRlbjogYm9vbGVhbjtcbiAgY29udHJvbCA9IG5ldyBGb3JtQ29udHJvbCgpO1xuICBvbkRlc3Ryb3kkID0gbmV3IFN1YmplY3Q8dm9pZD4oKTtcblxuICBnZXRGaWVsZFR5cGUgPSBnZXRGaWVsZFR5cGU7XG4gIGlzTGluayA9IGlzTGluaztcblxuICBTcGVjQ2FwYWJpbGl0eSA9IFNwZWNDYXBhYmlsaXR5O1xuXG4gIGdldEZpZWxkRGlzcGxheU5hbWUgPSBnZXRGaWVsZERpc3BsYXlOYW1lO1xuICBnZXRGaWVsZERlc2NyaXB0aW9uID0gZ2V0RmllbGREZXNjcmlwdGlvbjtcbiAgZ2V0UmFkaW9PcHRpb25zID0gZ2V0UmFkaW9PcHRpb25zO1xuICBnZXREaXNwbGF5QnlDYXBhYmlsaXR5ID0gZ2V0RGlzcGxheUJ5Q2FwYWJpbGl0eTtcblxuICBlZGl0b3JPcHRpb25zID0geWFtbFdyaXRlT3B0aW9ucztcbiAgZWRpdG9yQWN0aW9ucyA9IGNyZWF0ZUFjdGlvbnM7XG5cbiAgaXNHcm91cEZpZWxkID0gaXNHcm91cEZpZWxkO1xuICBpc0FycmF5RmllbGQgPSBpc0FycmF5RmllbGQ7XG4gIGlzUmVtb3RlRmllbGQgPSBpc1JlbW90ZUZpZWxkO1xuICBpc0FycmF5RmllbGRUYWJsZSA9IGlzQXJyYXlGaWVsZFRhYmxlO1xuICBjb252ZXJ0Qm9vbGVhblN3aXRjaFZhbHVlID0gY29udmVydEJvb2xlYW5Td2l0Y2hWYWx1ZTtcbiAgbG9hZGluZyQgPSBuZXcgQmVoYXZpb3JTdWJqZWN0KGZhbHNlKTtcblxuICBnZXQgaXNDdXN0b21FcnJvcnNNYXBwZXIoKSB7XG4gICAgcmV0dXJuIGdldEZpZWxkVHlwZSh0aGlzLmZpZWxkKSA9PT0gU3BlY0NhcGFiaWxpdHkucmVzb3VyY2VSZXF1aXJlbWVudHM7XG4gIH1cblxuICBQQVNTV09SRF9SRVZFQUwgPSBQQVNTV09SRF9SRVZFQUw7XG5cbiAgaXNCYXNpY1R5cGVGaWVsZCA9IChmaWxlZDogT3BlcmFuZEZpZWxkKSA9PlxuICAgICFbXG4gICAgICBTcGVjQ2FwYWJpbGl0eS5vYmplY3QsXG4gICAgICBTcGVjQ2FwYWJpbGl0eS5hcnJheSxcbiAgICAgIFNwZWNDYXBhYmlsaXR5LnBhc3N3b3JkLFxuICAgICAgU3BlY0NhcGFiaWxpdHkuY29uZmlybVBhc3N3b3JkLFxuICAgICAgU3BlY0NhcGFiaWxpdHkuZXh0ZXJuYWxQYXNzd29yZCxcbiAgICBdLmluY2x1ZGVzKGdldEZpZWxkVHlwZShmaWxlZCkpO1xuXG4gIHZpZXdBY3Rpb25zID0gdmlld0FjdGlvbnM7XG4gIHZpZXdPcHRpb25zID0geWFtbFJlYWRPcHRpb25zO1xuXG4gIHByaXZhdGUgX3ZhbGlkYXRvcnM6IFZhbGlkYXRvckZuW107XG5cbiAgcmVtb3RlTW9kdWxlJCA9IGNvbWJpbmVMYXRlc3QoW1xuICAgIHRoaXMuZmllbGQkLFxuICAgIHRoaXMucmVtb3RlTW9kdWxlRGVmaW5pdGlvbiQsXG4gIF0pLnBpcGUoXG4gICAgbWFwKChbZmllbGQsIHJlbW90ZU1vZHVsZURlZmluaXRpb25dKSA9PiB7XG4gICAgICBjb25zdCByZW1vdGVXaWRnZXQgPSB0aGlzLmdldFJlbW90ZVdpZGdldChmaWVsZCwgcmVtb3RlTW9kdWxlRGVmaW5pdGlvbik7XG4gICAgICByZXR1cm4gKFxuICAgICAgICByZW1vdGVXaWRnZXQgJiYge1xuICAgICAgICAgIGluamVjdG9yOiBjcmVhdGVJbmplY3RvcihcbiAgICAgICAgICAgIHJlbW90ZU1vZHVsZURlZmluaXRpb24ubW9kdWxlLFxuICAgICAgICAgICAgdGhpcy5pbmplY3RvcixcbiAgICAgICAgICApLFxuICAgICAgICAgIG1vZHVsZTogcmVtb3RlTW9kdWxlRGVmaW5pdGlvbi5tb2R1bGUsXG4gICAgICAgICAgY29tcG9uZW50OiByZW1vdGVXaWRnZXQuY29tcG9uZW50LFxuICAgICAgICB9XG4gICAgICApO1xuICAgIH0pLFxuICAgIGZpbHRlcihCb29sZWFuKSxcbiAgICB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSxcbiAgICBzaGFyZVJlcGxheSgxKSxcbiAgKTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgY3JkRm9ybTogQ3JkRm9ybUNvbXBvbmVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGluamVjdG9yOiBJbmplY3RvcixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGh0dHA6IEh0dHBDbGllbnQsXG4gICAgcHJpdmF0ZSByZWFkb25seSBjZHI6IENoYW5nZURldGVjdG9yUmVmLFxuICApIHt9XG5cbiAgcmVnaXN0ZXJDb250cm9sKCkge1xuICAgIHRoaXMuY3JkRm9ybS5jb250cm9sTWFwLnNldChnZXRPcGVyYW5kUGF0aCh0aGlzLmZpZWxkKSwgdGhpcy5jb250cm9sKTtcbiAgfVxuXG4gIHVuUmVnaXN0ZXJDb250cm9sKCkge1xuICAgIHRoaXMuY3JkRm9ybS5jb250cm9sTWFwLmRlbGV0ZShnZXRPcGVyYW5kUGF0aCh0aGlzLmZpZWxkKSk7XG4gIH1cblxuICBnZXRXaWRnZXRzID0gKGNhcGFiaWxpdGllczogU3BlY0NhcGFiaWxpdHlbXSkgPT4ge1xuICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBjYXBhYmlsaXRpZXMuZmluZChjID0+XG4gICAgICBjLnN0YXJ0c1dpdGgoU3BlY0NhcGFiaWxpdHkuY3VzdG9tKSxcbiAgICApO1xuICAgIHJldHVybiBkZXNjcmlwdG9yXG4gICAgICA/IHRoaXMuY3JkRm9ybS53aWRnZXRzPy5maW5kKFxuICAgICAgICAgIHcgPT4gdy5kZXNjcmlwdG9yID09PSBkZXNjcmlwdG9yLnNwbGl0KCc/PScpWzBdLFxuICAgICAgICApXG4gICAgICA6IG51bGw7XG4gIH07XG5cbiAgZ2V0UmVtb3RlV2lkZ2V0KFxuICAgIGZpZWxkOiBPcGVyYW5kRmllbGQsXG4gICAgcmVtb3RlRGVmaW5pdGlvbjogUmVtb3RlV2lkZ2V0TW9kdWxlRGVmaW5pdGlvbixcbiAgKSB7XG4gICAgY29uc3QgZGVzY3JpcHRvciA9IGZpZWxkLmNhcGFiaWxpdGllcy5maW5kKGMgPT5cbiAgICAgIGMuc3RhcnRzV2l0aChTcGVjQ2FwYWJpbGl0eS5yZW1vdGUpLFxuICAgICk7XG4gICAgcmV0dXJuIChcbiAgICAgIGRlc2NyaXB0b3IgJiZcbiAgICAgIHJlbW90ZURlZmluaXRpb24/LmNvbXBvbmVudHM/LmZpbmQoXG4gICAgICAgIHcgPT4gdy5kZXNjcmlwdG9yID09PSBkZXNjcmlwdG9yLnNwbGl0KCc/PScpWzBdLFxuICAgICAgKVxuICAgICk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmR5bmFtaWNIaWRkZW5WYWx1ZSQuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgIHRoaXMuaXNIaWRkZW4gPSB2YWx1ZTtcbiAgICB9KTtcbiAgICB0aGlzLnJlZ2lzdGVyQ29udHJvbCgpO1xuICAgIGlmICh0aGlzLmZpZWxkLnZhbGlkYXRpb25zKSB7XG4gICAgICBjb25zdCB2YWxpZGF0b3JzID0gJG1hcCh0aGlzLmZpZWxkLnZhbGlkYXRpb25zLCAodmFsLCBydWxlKSA9PiB7XG4gICAgICAgIHN3aXRjaCAocnVsZSkge1xuICAgICAgICAgIGNhc2UgVmFsaWRhdGlvbnMubWF4aW11bToge1xuICAgICAgICAgICAgcmV0dXJuIFZhbGlkYXRvcnMubWF4KHZhbCBhcyBudW1iZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIFZhbGlkYXRpb25zLm1pbmltdW06IHtcbiAgICAgICAgICAgIHJldHVybiBWYWxpZGF0b3JzLm1pbih2YWwgYXMgbnVtYmVyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBWYWxpZGF0aW9ucy5yZXF1aXJlZDoge1xuICAgICAgICAgICAgcmV0dXJuIFZhbGlkYXRvcnMucmVxdWlyZWQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgVmFsaWRhdGlvbnMubWF4TGVuZ3RoOiB7XG4gICAgICAgICAgICByZXR1cm4gVmFsaWRhdG9ycy5tYXhMZW5ndGgodmFsIGFzIG51bWJlcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgVmFsaWRhdGlvbnMubWluTGVuZ3RoOiB7XG4gICAgICAgICAgICByZXR1cm4gVmFsaWRhdG9ycy5taW5MZW5ndGgodmFsIGFzIG51bWJlcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgVmFsaWRhdGlvbnMucGF0dGVybjoge1xuICAgICAgICAgICAgcmV0dXJuIFZhbGlkYXRvcnMucGF0dGVybih2YWwgYXMgc3RyaW5nKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KS5maWx0ZXIodiA9PiAhIXYpO1xuICAgICAgaWYgKHZhbGlkYXRvcnMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuY29udHJvbC5hZGRWYWxpZGF0b3JzKCh0aGlzLl92YWxpZGF0b3JzID0gdmFsaWRhdG9ycykpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIOWwhiB2YWx1ZUNoYW5nZXMg55qE6YC76L6R56e75Yqo5YiwIG5nQWZ0ZXJWaWV3SW5pdCDkuK3vvIzkuLvopoHmmK/kuLrkuobpgb/lhY3lhajlsYAgVmFsaWRhdG9yc0RpcmVjdGl2ZeW4puadpeeahOW9seWTje+8jOmcgOimgeetieWIsFZhbGlkYXRvcnNEaXJlY3RpdmXnmoRuZ0FmdGVyVmlld0luaXTkuYvlkI7lho3orqLpmIVjb250cm9s55qEdmFsdWVDaGFuZ2VzXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpIHtcbiAgICB0aGlzLmNvbnRyb2wudmFsdWVDaGFuZ2VzXG4gICAgICAucGlwZShcbiAgICAgICAgc3RhcnRXaXRoQ29uZGl0aW9uKHRoaXMuZWZmZWN0Q29udHJvbERlZmF1bHRWYWx1ZSwgdGhpcy5jb250cm9sLnZhbHVlKSxcbiAgICAgICAgZGVib3VuY2VUaW1lKDUwKSxcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgdGFrZVVudGlsKHRoaXMub25EZXN0cm95JCksXG4gICAgICAgIGZpbHRlcih2ID0+XG4gICAgICAgICAgLy8gRklYTUU6IFRoaXMgaXMgaGFjay4geWFtbCB2YWx1ZSB3aWxsIG9ubHkgYmUgbnVsbCBpZiBmb3JtYXQgZXJyb3IoYmVjYXVzZSB0cnktY2F0Y2gpLCB0aGUgZGF0YSBmbG93IG5vdyBpcyBmcm9tIGNvbnRyb2wgPT4gZm9ybURhdGFTdGF0ZSA9PiBjb250cm9sKHdpbGwganVkZ2UgZXF1YWxpdHkp77yMdGhpcyB3aWxsIG1ha2UgY29udHJvbCBiZSBlbXB0eVxuICAgICAgICAgIGdldEZpZWxkVHlwZSh0aGlzLmZpZWxkKSA9PT0gU3BlY0NhcGFiaWxpdHkueWFtbCA/IHYgIT09IG51bGwgOiB0cnVlLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh2YWx1ZSA9PiB7XG4gICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgZmllbGQ6IHRoaXMuZmllbGQsXG4gICAgICAgICAgZGF0YTogdmFsdWUsXG4gICAgICAgICAgZXJyb3JzOiB0aGlzLmNvbnRyb2wuZXJyb3JzLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICB9XG5cbiAgbmdPbkRlc3Ryb3koKSB7XG4gICAgdGhpcy5vbkRlc3Ryb3kkLm5leHQoKTtcbiAgICB0aGlzLm9uRGVzdHJveSQuY29tcGxldGUoKTtcbiAgICB0aGlzLnVuUmVnaXN0ZXJDb250cm9sKCk7XG4gICAgaWYgKHRoaXMuX3ZhbGlkYXRvcnM/Lmxlbmd0aCkge1xuICAgICAgdGhpcy5jb250cm9sLnJlbW92ZVZhbGlkYXRvcnModGhpcy5fdmFsaWRhdG9ycyk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkNoYW5nZXMoeyBmb3JtRGF0YVN0YXRlIH06IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAodGhpcy5maWVsZCAmJiBmb3JtRGF0YVN0YXRlPy5maXJzdENoYW5nZSkge1xuICAgICAgdGhpcy5keW5hbWljRGVmYXVsdFZhbHVlJFxuICAgICAgICAucGlwZSh0YWtlKDEpKVxuICAgICAgICAuc3Vic2NyaWJlKCh7IHZhbHVlLCBpc0R5bmFtaWMgfSkgPT4ge1xuICAgICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZSh2YWx1ZSwgeyBlbWl0RXZlbnQ6IGlzRHluYW1pYyB9KTtcbiAgICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChmb3JtRGF0YVN0YXRlPy5jdXJyZW50VmFsdWUpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9IGdldEZvcm1EYXRhKFxuICAgICAgICBmb3JtRGF0YVN0YXRlLmN1cnJlbnRWYWx1ZSBhcyBGb3JtRGF0YVN0YXRlLFxuICAgICAgICB0aGlzLmZpZWxkLnBhdGgsXG4gICAgICAgIGZhbHNlLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHByZXZWYWx1ZSA9IGdldEZvcm1EYXRhKFxuICAgICAgICBmb3JtRGF0YVN0YXRlLnByZXZpb3VzVmFsdWUgYXMgRm9ybURhdGFTdGF0ZSxcbiAgICAgICAgdGhpcy5maWVsZC5wYXRoLFxuICAgICAgICBmYWxzZSxcbiAgICAgICk7XG4gICAgICBjb25zdCByYXdWYWx1ZSA9IGlzSW1tdXRhYmxlKGN1cnJlbnRWYWx1ZSlcbiAgICAgICAgPyBjdXJyZW50VmFsdWUudG9KUygpXG4gICAgICAgIDogY3VycmVudFZhbHVlO1xuICAgICAgaWYgKFxuICAgICAgICAhaXNFcXVhbChyYXdWYWx1ZSwgcHJldlZhbHVlKSAmJlxuICAgICAgICAhaXNFcXVhbChyYXdWYWx1ZSwgdGhpcy5jb250cm9sLnZhbHVlKVxuICAgICAgKSB7XG4gICAgICAgIHRoaXMuY29udHJvbC5zZXRWYWx1ZShyYXdWYWx1ZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0RmllbGRDdXJyZW50VmFsdWUoKSB7XG4gICAgbGV0IHZhbHVlID0gZ2V0Rm9ybURhdGEodGhpcy5mb3JtRGF0YVN0YXRlLCB0aGlzLmZpZWxkLnBhdGgsIGZhbHNlKTtcblxuICAgIC8vIOWmguaenOWAvOaYryBJbW11dGFibGUgb2JqZWN0IOexu+Wei++8jOmcgOimgei9rOaIkOWOn+WniyBKUyBPYmplY3RcbiAgICBpZiAoaXNJbW11dGFibGUodmFsdWUpKSB7XG4gICAgICB2YWx1ZSA9IHZhbHVlLnRvSlMoKSBhcyBGb3JtRGF0YVN0YXRlO1xuICAgIH1cbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cblxuICBnZXRGaWVsZFZhbHVlKHVzZURlZmF1bHQgPSB0cnVlKSB7XG4gICAgY29uc3QgY3VycmVudFZhbHVlID0gdGhpcy5nZXRGaWVsZEN1cnJlbnRWYWx1ZSgpO1xuXG4gICAgaWYgKGN1cnJlbnRWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIHVzZURlZmF1bHQpIHtcbiAgICAgIHJldHVybiBnZXREZWZhdWx0VmFsdWUodGhpcy5maWVsZCk7XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50VmFsdWU7XG4gIH1cblxuICBnZXRPcHRpb25EaXNwbGF5KFxuICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgb3B0aW9uczogQXJyYXk8eyB2YWx1ZTogc3RyaW5nOyBkaXNwbGF5OiBUcmFuc2xhdGlvbiB9PixcbiAgKSB7XG4gICAgcmV0dXJuIG9wdGlvbnMuZmluZChpdGVtID0+IGl0ZW0udmFsdWUgPT09IHZhbHVlKT8uZGlzcGxheTtcbiAgfVxuXG4gIGdldFNlbGVjdE9wdGlvbnMoZmllbGQ6IE9wZXJhbmRGaWVsZCkge1xuICAgIHJldHVybiBmaWVsZC5jYXBhYmlsaXRpZXNcbiAgICAgIC5maWx0ZXIoYyA9PiBjLnN0YXJ0c1dpdGgoU3BlY0NhcGFiaWxpdHkuc2VsZWN0KSlcbiAgICAgIC5tYXAoYyA9PiBjLnNwbGl0KFNwZWNDYXBhYmlsaXR5LnNlbGVjdCk/LlsxXSk7XG4gIH1cblxuICBnZXRFbmNvZGluZyhmaWVsZDogT3BlcmFuZEZpZWxkLCB0eXBlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBwcmVmaXggPSBgdXJuOmFsbTpkZXNjcmlwdG9yOiR7dHlwZX06ZW5jb2Rpbmc6YDtcbiAgICBjb25zdCBjYXBhYmlsaXR5ID0gZmllbGQuY2FwYWJpbGl0aWVzLmZpbmQoaXQgPT4gaXQuc3RhcnRzV2l0aChwcmVmaXgpKTtcbiAgICBsZXQgZW5jb2Rpbmc6IEVuY29kaW5nO1xuICAgIGlmIChjYXBhYmlsaXR5KSB7XG4gICAgICBlbmNvZGluZyA9IEVOQ09ESU5HX01BUFBFUltjYXBhYmlsaXR5LnNsaWNlKHByZWZpeC5sZW5ndGgpXTtcbiAgICB9XG4gICAgcmV0dXJuIChcbiAgICAgIGVuY29kaW5nIHx8IHtcbiAgICAgICAgZW5jb2RlOiBpZGVudGl0eSxcbiAgICAgICAgZGVjb2RlOiBpZGVudGl0eSxcbiAgICAgIH1cbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBoYXNGaWVsZERlcGVuZGVuY3koKSB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQuY2FwYWJpbGl0aWVzLnNvbWUoYyA9PlxuICAgICAgYy5zdGFydHNXaXRoKFNwZWNDYXBhYmlsaXR5LmZpZWxkRGVwZW5kZW5jeSksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGaWVsZERlcGVuZGVuY3koZmllbGQ6IE9wZXJhbmRGaWVsZCk6IGJvb2xlYW4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBkZXBlbmRlbmNpZXMgPSBmaWVsZD8uY2FwYWJpbGl0aWVzXG4gICAgICAgIC5maWx0ZXIoYyA9PiBjLnN0YXJ0c1dpdGgoU3BlY0NhcGFiaWxpdHkuZmllbGREZXBlbmRlbmN5KSlcbiAgICAgICAgLm1hcChpID0+IGkuc3BsaXQoU3BlY0NhcGFiaWxpdHkuZmllbGREZXBlbmRlbmN5KVsxXSk7XG4gICAgICBpZiAoIWRlcGVuZGVuY2llcz8ubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgY29uc3QgcGFyZW50UGF0aHMgPSBkZXBlbmRlbmNpZXMubWFwKGQgPT4gZC5zcGxpdCgnOicpKTtcbiAgICAgIGNvbnN0IHN0YXRlID0gcGFyZW50UGF0aHMuZXZlcnkoKFtwYXRoLCAuLi52YWx1ZXNdKSA9PiB7XG4gICAgICAgIC8vIFN1cHBvcnQgZGVwZW5kIG9uZSBvZiB2YWx1ZXNcbiAgICAgICAgY29uc3QgZGVwZW5kZW5jeUZpZWxkID0gdGhpcy5maWVsZHMuZmluZChcbiAgICAgICAgICBmID0+IGYucGF0aCA9PT0gbm9ybWFsaXplUGF0aChwYXRoKSxcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZGVwZW5kZW5jeURlZmF1bHRWYWx1ZSA9IGdldERlZmF1bHRWYWx1ZShkZXBlbmRlbmN5RmllbGQpO1xuICAgICAgICBjb25zdCBmb3JtU3RhdGVWYWx1ZSA9IGdldEZvcm1EYXRhKHRoaXMuZm9ybURhdGFTdGF0ZSwgcGF0aCk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWYWx1ZSA9XG4gICAgICAgICAgZm9ybVN0YXRlVmFsdWUgPT09IG51bGwgfHwgZm9ybVN0YXRlVmFsdWUgPT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgPyBkZXBlbmRlbmN5RGVmYXVsdFZhbHVlXG4gICAgICAgICAgICA6IGZvcm1TdGF0ZVZhbHVlO1xuICAgICAgICByZXR1cm4gdmFsdWVzLnNvbWUoXG4gICAgICAgICAgdmFsID0+IGNvbnZlcnRWYWx1ZSh2YWwsIGRlcGVuZGVuY3lGaWVsZC50eXBlKSA9PT0gY3VycmVudFZhbHVlLFxuICAgICAgICApO1xuICAgICAgfSk7XG5cbiAgICAgIC8qKlxuICAgICAgICog54i2IGZpZWxkIGRlcGVuZGVuY3kg5LiN5ruh6Laz5pe277yM5Y2z6ZqQ6JeP5pe277yM5pysIGZpZWxkIOS5n+W6lOW9k+makOiXj+OAglxuICAgICAgICog5Zug5Li65Zyo5aSn6YOo5YiG5oOF5b2i5LiL77yMZmllbGREZXBlbmRlbmN5IOS4jiBvbmVPZiDmkK3phY3mnaXmj4/ov7DkuIDnu4TlhbPogZTlhbPns7vvvIzlvojlsJHlj6rmnIkgYiDku4Xkvp3otZbkuo4gYe+8jOW9kyBhIOmakOiXj+WQju+8jOi/mOimgeagueaNriBhIOeahOm7mOiupOWAvOimgeaxguaYvuekuiBiIOeahOaDheWGte+8jFxuICAgICAgICog5a+55LqO6K+l5oOF5Ya177yM5Y+v5Lul5aSa5Yqg5LiA5Liq6YWN5aSH5LqG6aKd5aSWIGZpZWxkRGVwZW5kZW5jeSDnmoQgRGVzY3JpcHRvciDmnaXmj4/ov7AgYlxuICAgICAgICovXG4gICAgICByZXR1cm4gKFxuICAgICAgICBwYXJlbnRQYXRocy5ldmVyeSgoW3BhdGhdKSA9PlxuICAgICAgICAgIHRoaXMuY2hlY2tGaWVsZERlcGVuZGVuY3kodGhpcy5maWVsZHMuZmluZChpID0+IGkucGF0aCA9PT0gcGF0aCkpLFxuICAgICAgICApICYmIHN0YXRlXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICBkeW5hbWljT3B0aW9ucyQ6IE9ic2VydmFibGU8YW55PiA9IHRoaXMuZmllbGQkLnBpcGUoXG4gICAgc3dpdGNoTWFwKGZpZWxkID0+IHtcbiAgICAgIGNvbnN0IGR5bmFtaWNFeHByZXNzaW9uID0gbmV3IFByb3BzRmllbGRFeHByZXNzaW9uKGZpZWxkKS5leHByZXNzaW9ucztcbiAgICAgIGlmICghZHluYW1pY0V4cHJlc3Npb24ub3B0aW9ucykge1xuICAgICAgICByZXR1cm4gb2YoXG4gICAgICAgICAgdGhpcy5nZXRTZWxlY3RPcHRpb25zKGZpZWxkKS5tYXAodmFsdWUgPT4gKHtcbiAgICAgICAgICAgIGxhYmVsOiB2YWx1ZSxcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgIH0pKSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5jcmRGb3JtLmZvcm1Db250ZXh0JCxcbiAgICAgICAgdGhpcy5mb3JtRGF0YVN0YXRlJCxcbiAgICAgIF0pLnBpcGUoXG4gICAgICAgIGRlYm91bmNlVGltZSgxMDApLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocCwgbikgPT5cbiAgICAgICAgICBjb21wYXJlV2l0aFN1YnNjcmliZWRQYXRocyhkeW5hbWljRXhwcmVzc2lvbiwgcCwgbiksXG4gICAgICAgICksXG4gICAgICAgIHN3aXRjaE1hcCgoW2Zvcm1Db250ZXh0LCBmb3JtRGF0YVN0YXRlXSkgPT4ge1xuICAgICAgICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICAgICAgICBjb25zdCB7IGFwaSwgbGFiZWxQYXRoLCB2YWx1ZVBhdGgsIGV4cHJlc3Npb24gfSA9XG4gICAgICAgICAgICBkeW5hbWljRXhwcmVzc2lvbi5vcHRpb25zO1xuICAgICAgICAgIGNvbnN0IHN0cmluZ0V4cHJlc3Npb25Db250ZXh0ID0gdGhpcy5nZXRTdHJpbmdFeHByZXNzaW9uQ29udGV4dChcbiAgICAgICAgICAgIGZvcm1Db250ZXh0LFxuICAgICAgICAgICAgZm9ybURhdGFTdGF0ZSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICghYXBpICYmIGV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGV2YWxJbkNvbnRleHQoZXhwcmVzc2lvbiwgc3RyaW5nRXhwcmVzc2lvbkNvbnRleHQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nRXhwcmVzc2lvbkNvbnRleHQuZmV0Y2hSZXNvdXJjZUxpc3QoXG4gICAgICAgICAgICAgIHRlbXBsYXRlKGFwaSkoc3RyaW5nRXhwcmVzc2lvbkNvbnRleHQpLFxuICAgICAgICAgICAgICAoaXRlbTogU3RyaW5nTWFwKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXQoaXRlbSwgdmFsdWVQYXRoLCAnJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBnZXQoaXRlbSwgbGFiZWxQYXRoLCB2YWx1ZSksXG4gICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gaXNPYnNlcnZhYmxlKHJlc3VsdCkgPyByZXN1bHQgOiBvZihyZXN1bHQpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfSksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIGR5bmFtaWNEZWZhdWx0VmFsdWUkID0gdGhpcy5maWVsZCQucGlwZShcbiAgICBzd2l0Y2hNYXAoZmllbGQgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdFZhbHVlRXhwcmVzc2lvbiA9IG5ldyBQcm9wc0ZpZWxkRXhwcmVzc2lvbihmaWVsZClcbiAgICAgICAgLmV4cHJlc3Npb25zO1xuICAgICAgaWYgKFxuICAgICAgICAhZGVmYXVsdFZhbHVlRXhwcmVzc2lvbi5kZWZhdWx0IHx8XG4gICAgICAgIHRoaXMuZ2V0RmllbGRDdXJyZW50VmFsdWUoKSAhPT0gdW5kZWZpbmVkXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIG9mKHtcbiAgICAgICAgICB2YWx1ZTogdGhpcy5nZXRGaWVsZFZhbHVlKCksXG4gICAgICAgICAgaXNEeW5hbWljOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuY3JkRm9ybS5mb3JtQ29udGV4dCQsXG4gICAgICAgIHRoaXMuZm9ybURhdGFTdGF0ZSQsXG4gICAgICBdKS5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocCwgbikgPT5cbiAgICAgICAgICBjb21wYXJlV2l0aFN1YnNjcmliZWRQYXRocyhkZWZhdWx0VmFsdWVFeHByZXNzaW9uLCBwLCBuKSxcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKChbZm9ybUNvbnRleHQsIGZvcm1EYXRhU3RhdGVdKSA9PlxuICAgICAgICAgIHRlbXBsYXRlKGRlZmF1bHRWYWx1ZUV4cHJlc3Npb24uZGVmYXVsdCkoXG4gICAgICAgICAgICB0aGlzLmdldFN0cmluZ0V4cHJlc3Npb25Db250ZXh0KGZvcm1Db250ZXh0LCBmb3JtRGF0YVN0YXRlKSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgICBtYXAodmFsdWUgPT4gKHtcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICBpc0R5bmFtaWM6IHRydWUsXG4gICAgICAgIH0pKSxcbiAgICAgICk7XG4gICAgfSksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIGR5bmFtaWNIaWRkZW5WYWx1ZSQgPSB0aGlzLmZpZWxkJC5waXBlKFxuICAgIHN3aXRjaE1hcChmaWVsZCA9PiB7XG4gICAgICBjb25zdCB7IGV4cHJlc3Npb25zIH0gPSBuZXcgUHJvcHNGaWVsZEV4cHJlc3Npb24oZmllbGQpO1xuICAgICAgaWYgKCFleHByZXNzaW9ucy5oaWRkZW4pIHtcbiAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5jcmRGb3JtLmZvcm1Db250ZXh0JCxcbiAgICAgICAgdGhpcy5mb3JtRGF0YVN0YXRlJCxcbiAgICAgIF0pLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwLCBuKSA9PlxuICAgICAgICAgIGNvbXBhcmVXaXRoU3Vic2NyaWJlZFBhdGhzKGV4cHJlc3Npb25zLCBwLCBuKSxcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChbZm9ybUNvbnRleHQsIGZvcm1EYXRhU3RhdGVdKSA9PlxuICAgICAgICAgICAgdGVtcGxhdGUoZXhwcmVzc2lvbnMuaGlkZGVuKShcbiAgICAgICAgICAgICAgdGhpcy5nZXRTdHJpbmdFeHByZXNzaW9uQ29udGV4dChmb3JtQ29udGV4dCwgZm9ybURhdGFTdGF0ZSksXG4gICAgICAgICAgICApID09PSAndHJ1ZScsXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH0pLFxuICApO1xuXG4gIGdldFN0cmluZ0V4cHJlc3Npb25Db250ZXh0ID0gKFxuICAgIGZvcm1Db250ZXh0OiBhbnksXG4gICAgZm9ybURhdGFTdGF0ZTogRm9ybURhdGFTdGF0ZSxcbiAgKSA9PiAoe1xuICAgIGZldGNoUmVzb3VyY2VMaXN0OiB0aGlzLmZldGNoUmVzb3VyY2VMaXN0LFxuICAgIGNvbnRleHQ6IGZvcm1Db250ZXh0LFxuICAgIGZvcm1EYXRhOiBmb3JtRGF0YVN0YXRlLnRvSlMoKT8uc3BlYyB8fCB7fSxcbiAgfSk7XG5cbiAgZmV0Y2hSZXNvdXJjZUxpc3QgPSAoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgY2FsbGJhY2s6IChyZXNvdXJjZTogS3ViZXJuZXRlc1Jlc291cmNlKSA9PiB2b2lkLFxuICApID0+IHtcbiAgICB0aGlzLmxvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDx7IGl0ZW1zOiBLdWJlcm5ldGVzUmVzb3VyY2VbXSB9PihgJHtBUElfR0FURVdBWX0ke3VybH1gKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXMgPT4gcmVzLml0ZW1zLm1hcChpdGVtID0+IGNhbGxiYWNrLmNhbGwodGhpcywgaXRlbSkpKSxcbiAgICAgICAgc2tpcEVycm9yKFtdKSxcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfTtcbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZFwiPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJ7XG4gICAgICBmaWVsZFR5cGU6IGZpZWxkIHwgcHVyZTogZ2V0RmllbGRUeXBlLFxuICAgICAgaXNCYXNpY1R5cGVGaWVsZDogZmllbGQgfCBwdXJlOiBpc0Jhc2ljVHlwZUZpZWxkXG4gICAgfSBhcyBtZXRhXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXRhLmlzQmFzaWNUeXBlRmllbGQ7IGVsc2UgYWR2YW5jZWRGaWxlZFwiPlxuICAgICAgPGFjbC1jcmQtZm9ybS1pdGVtXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgIShmaWVsZC5jYXBhYmlsaXRpZXMgfCBwdXJlOiBnZXRXaWRnZXRzKSAmJlxuICAgICAgICAgICEoZmllbGQgfCBwdXJlOiBpc1JlbW90ZUZpZWxkKVxuICAgICAgICBcIlxuICAgICAgICBbbmdTd2l0Y2hdPVwibWV0YS5maWVsZFR5cGVcIlxuICAgICAgPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiU3BlY0NhcGFiaWxpdHkubnVtYmVyXCJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICBhdWktaW5wdXRcbiAgICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgIFthY2xSZWFkb25seUZpZWxkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAgIGZpZWxkLmNhcGFiaWxpdGllc1xuICAgICAgICAgICAgICB8IHB1cmU6IGdldERpc3BsYXlCeUNhcGFiaWxpdHk6U3BlY0NhcGFiaWxpdHkucGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICBcIlxuICAgICAgICAvPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJTcGVjQ2FwYWJpbGl0eS5ib29sZWFuU3dpdGNoXCI+XG4gICAgICAgICAgPGF1aS1zd2l0Y2hcbiAgICAgICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICAgICAgW2FjbFJlYWRvbmx5RmllbGRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICBbYWNsUmVhZG9ubHlGaWVsZFRlbXBsYXRlXT1cInN3aXRjaFJlYWRvbmx5XCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICA+PC9hdWktc3dpdGNoPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3dpdGNoUmVhZG9ubHk+e3tcbiAgICAgICAgICAgIChjb250cm9sLnZhbHVlIHwgcHVyZTogY29udmVydEJvb2xlYW5Td2l0Y2hWYWx1ZTogZmllbGQuY2FwYWJpbGl0aWVzKSB8IHRyYW5zbGF0ZVxuICAgICAgICAgIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIlNwZWNDYXBhYmlsaXR5LnNlbGVjdFwiPlxuICAgICAgICAgIDxhdWktbXVsdGktc2VsZWN0XG4gICAgICAgICAgICAqbmdJZj1cImlzTXVsdGlwbGVcIlxuICAgICAgICAgICAgW21heFJvd0NvdW50XT1cIjNcIlxuICAgICAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgICAgICBbY2xlYXJhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgW2ZpbHRlcmFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiXG4gICAgICAgICAgICBbYWNsUmVhZG9ubHlGaWVsZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmckIHwgYXN5bmNcIlxuICAgICAgICAgICAgW2FsbG93Q3JlYXRlXT1cImlzQWxsb3dDcmVhdGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhdWktb3B0aW9uXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZHluYW1pY09wdGlvbnMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIm9wdGlvbi5sYWJlbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgPC9hdWktb3B0aW9uPlxuICAgICAgICAgICAgPGF1aS1vcHRpb24tcGxhY2Vob2xkZXI+e3tcbiAgICAgICAgICAgICAgJ25vX2RhdGEnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB9fTwvYXVpLW9wdGlvbi1wbGFjZWhvbGRlcj5cbiAgICAgICAgICA8L2F1aS1tdWx0aS1zZWxlY3Q+XG5cbiAgICAgICAgICA8YXVpLXNlbGVjdFxuICAgICAgICAgICAgKm5nSWY9XCIhaXNNdWx0aXBsZVwiXG4gICAgICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgICAgIFtjbGVhcmFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbZmlsdGVyYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpc1JlcXVpcmVkXCJcbiAgICAgICAgICAgIFthY2xSZWFkb25seUZpZWxkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZyQgfCBhc3luY1wiXG4gICAgICAgICAgICBbYWxsb3dDcmVhdGVdPVwiaXNBbGxvd0NyZWF0ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGF1aS1vcHRpb25cbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBkeW5hbWljT3B0aW9ucyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICBbbGFiZWxdPVwib3B0aW9uLmxhYmVsIHwgYWNsUGFyc2VKc29uVHJhbnNsYXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIHwgYWNsUGFyc2VKc29uVHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2F1aS1vcHRpb24+XG4gICAgICAgICAgICA8YXVpLW9wdGlvbi1wbGFjZWhvbGRlcj57e1xuICAgICAgICAgICAgICAnbm9fZGF0YScgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgIH19PC9hdWktb3B0aW9uLXBsYWNlaG9sZGVyPlxuICAgICAgICAgIDwvYXVpLXNlbGVjdD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxhdWktcmFkaW8tZ3JvdXBcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiU3BlY0NhcGFiaWxpdHkucmFkaW9cIlxuICAgICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiXG4gICAgICAgICAgW2FjbFJlYWRvbmx5RmllbGRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgW2FjbFJlYWRvbmx5RmllbGRUZW1wbGF0ZV09XCJyYWRpb0xhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICA8YXVpLXJhZGlvLWJ1dHRvblxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpZWxkLmNhcGFiaWxpdGllcyB8IHB1cmU6IGdldFJhZGlvT3B0aW9uc1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBvcHRpb24uZGlzcGxheSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9hdWktcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNyYWRpb0xhYmVsPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIGNvbnRyb2wudmFsdWVcbiAgICAgICAgICAgICAgICAgIHwgcHVyZVxuICAgICAgICAgICAgICAgICAgICA6IGdldE9wdGlvbkRpc3BsYXlcbiAgICAgICAgICAgICAgICAgICAgOiAoZmllbGQuY2FwYWJpbGl0aWVzIHwgcHVyZTogZ2V0UmFkaW9PcHRpb25zKVxuICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYXVpLXJhZGlvLWdyb3VwPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJTcGVjQ2FwYWJpbGl0eS5yZXNvdXJjZVJlcXVpcmVtZW50c1wiPlxuICAgICAgICAgIDxhY2wtY3JkLXJlc291cmNlLXJlcXVpcmVtZW50c1xuICAgICAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgICBbYWNsUmVhZG9ubHlGaWVsZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICAgIFthY2xSZWFkb25seUZpZWxkVGVtcGxhdGVdPVwicmVzb3VyY2VSZXF1aXJlbWVudHNSZWFkb25seVwiXG4gICAgICAgICAgPjwvYWNsLWNyZC1yZXNvdXJjZS1yZXF1aXJlbWVudHM+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNyZXNvdXJjZVJlcXVpcmVtZW50c1JlYWRvbmx5PlxuICAgICAgICAgICAgPGFjbC1jcmQtcmVzb3VyY2UtcmVxdWlyZW1lbnRzXG4gICAgICAgICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJjb250cm9sLnZhbHVlXCJcbiAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgPjwvYWNsLWNyZC1yZXNvdXJjZS1yZXF1aXJlbWVudHM+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIlNwZWNDYXBhYmlsaXR5LnlhbWxcIj5cbiAgICAgICAgICA8YWNsLWNyZC15YW1sLWVkaXRvclxuICAgICAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiXG4gICAgICAgICAgICBbYWN0aW9uc0NvbmZpZ109XCJlZGl0b3JBY3Rpb25zXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cImVkaXRvck9wdGlvbnNcIlxuICAgICAgICAgICAgW2FjbFJlYWRvbmx5RmllbGRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICBbYWNsUmVhZG9ubHlGaWVsZFRlbXBsYXRlXT1cInlhbWxSZWFkb25seVwiXG4gICAgICAgICAgPjwvYWNsLWNyZC15YW1sLWVkaXRvcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3lhbWxSZWFkb25seT5cbiAgICAgICAgICAgIDxhY2wtY3JkLXlhbWwtZWRpdG9yXG4gICAgICAgICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJjb250cm9sLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2FjdGlvbnNDb25maWddPVwidmlld0FjdGlvbnNcIlxuICAgICAgICAgICAgICBbb3B0aW9uc109XCJ2aWV3T3B0aW9uc1wiXG4gICAgICAgICAgICA+PC9hY2wtY3JkLXlhbWwtZWRpdG9yPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJTcGVjQ2FwYWJpbGl0eS5rOHNSZXNvdXJjZVByZWZpeFwiPlxuICAgICAgICAgIDxhY2wtY3JkLXJlc291cmNlLXByZWZpeFxuICAgICAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgICAgICBbZm9ybUVycm9yc109XCJjb250cm9sLmVycm9yc1wiXG4gICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cImlzUmVxdWlyZWRcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgICAgW2FjbFJlYWRvbmx5RmllbGRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICBbYWNsUmVhZG9ubHlGaWVsZFRlbXBsYXRlXT1cInJlc291cmNlUHJlZml4UmVhZG9ubHlcIlxuICAgICAgICAgID48L2FjbC1jcmQtcmVzb3VyY2UtcHJlZml4PlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVzb3VyY2VQcmVmaXhSZWFkb25seT5cbiAgICAgICAgICAgIDxhY2wtY3JkLXJlc291cmNlLXByZWZpeFxuICAgICAgICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwiY29udHJvbC52YWx1ZVwiXG4gICAgICAgICAgICAgIFtyZWFkb25seV09XCJ0cnVlXCJcbiAgICAgICAgICAgID48L2FjbC1jcmQtcmVzb3VyY2UtcHJlZml4PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJTcGVjQ2FwYWJpbGl0eS5iYXNpY0F1dGhTZWNyZXRcIj5cbiAgICAgICAgICA8YWNsLWNyZC1iYXNpYy1hdXRoLXNlY3JldFxuICAgICAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cImlzUmVxdWlyZWRcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgICAgW2FjbFJlYWRvbmx5RmllbGRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgPjwvYWNsLWNyZC1iYXNpYy1hdXRoLXNlY3JldD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJTcGVjQ2FwYWJpbGl0eS50ZXh0YXJlYVwiXG4gICAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgICAgYXVpLWlucHV0XG4gICAgICAgICAgW3JlcXVpcmVkXT1cImlzUmVxdWlyZWRcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICBbYWNsUmVhZG9ubHlGaWVsZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgICBmaWVsZC5jYXBhYmlsaXRpZXNcbiAgICAgICAgICAgICAgfCBwdXJlOiBnZXREaXNwbGF5QnlDYXBhYmlsaXR5OlNwZWNDYXBhYmlsaXR5LnBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgIDxhdWktdGFncy1pbnB1dFxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJTcGVjQ2FwYWJpbGl0eS50YWdzSW5wdXRcIlxuICAgICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICAgIGNsYXNzPVwidHctZmxleC0xXCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAgIGZpZWxkLmNhcGFiaWxpdGllc1xuICAgICAgICAgICAgICB8IHB1cmU6IGdldERpc3BsYXlCeUNhcGFiaWxpdHk6U3BlY0NhcGFiaWxpdHkucGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICBcIlxuICAgICAgICAgIFthY2xSZWFkb25seUZpZWxkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgICAgIFtjbGVhcmFibGVdPVwiaXNDbGVhcmFibGVcIlxuICAgICAgICA+PC9hdWktdGFncy1pbnB1dD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgIDxhY2wtY3JkLWxpbmtcbiAgICAgICAgICAgICpuZ0lmPVwiKGZpZWxkIHwgcHVyZTogaXNMaW5rKSAmJiBpc0Rpc2FibGVkOyBlbHNlIHRleHRGaWVsZFwiXG4gICAgICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgPjwvYWNsLWNyZC1saW5rPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN0ZXh0RmllbGQ+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpc1JlcXVpcmVkXCJcbiAgICAgICAgICAgIGF1aS1pbnB1dFxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgZmllbGQuY2FwYWJpbGl0aWVzXG4gICAgICAgICAgICAgIHwgcHVyZTogZ2V0RGlzcGxheUJ5Q2FwYWJpbGl0eTpTcGVjQ2FwYWJpbGl0eS5wbGFjZWhvbGRlclxuICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgIFwiXG4gICAgICAgICAgICBbYWNsUmVhZG9ubHlGaWVsZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9hY2wtY3JkLWZvcm0taXRlbT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0dy1mbGV4IHR3LXctZnVsbCB0dy1mbGV4LWNvbFwiXG4gICAgICAgICpuZ0lmPVwiZmllbGQuY2FwYWJpbGl0aWVzIHwgcHVyZTogZ2V0V2lkZ2V0cyBhcyB3aWRnZXRcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cIndpZGdldC5jb21wb25lbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkIHwgcHVyZTogaXNSZW1vdGVGaWVsZFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVtb3RlTW9kdWxlJCB8IGFzeW5jIGFzIHJlbW90ZU1vZHVsZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiZmllbGQgfCBwdXJlOiBnZXRGaWVsZERpc3BsYXlOYW1lIGFzIGxhYmVsOyBlbHNlIHB1cmVSZW1vdGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhdWktZm9ybS1pdGVtIFtlbXB0eUFkZG9uXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGF1aUZvcm1JdGVtTGFiZWxcbiAgICAgICAgICAgICAgICAqbmdJZj1cImZpZWxkIHwgcHVyZTogZ2V0RmllbGREaXNwbGF5TmFtZSBhcyBsYWJlbFwiXG4gICAgICAgICAgICAgICAgPnt7IGxhYmVsIHwgdHJhbnNsYXRlIH19PC9sYWJlbFxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdDb21wb25lbnRPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW90ZU1vZHVsZS5jb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICBpbmplY3RvcjogcmVtb3RlTW9kdWxlLmluamVjdG9yXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8ZGl2IGF1aUZvcm1JdGVtSGludD5cbiAgICAgICAgICAgICAgICB7eyBmaWVsZCB8IHB1cmU6IGdldEZpZWxkRGVzY3JpcHRpb24gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2F1aS1mb3JtLWl0ZW0+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNwdXJlUmVtb3RlPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdDb21wb25lbnRPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICByZW1vdGVNb2R1bGUuY29tcG9uZW50O1xuICAgICAgICAgICAgICAgIGluamVjdG9yOiByZW1vdGVNb2R1bGUuaW5qZWN0b3JcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lclxuICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjYWR2YW5jZWRGaWxlZD5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBtZXRhLmZpZWxkVHlwZSA9PT0gU3BlY0NhcGFiaWxpdHkucGFzc3dvcmQgfHxcbiAgICAgICAgICBtZXRhLmZpZWxkVHlwZSA9PT0gU3BlY0NhcGFiaWxpdHkuY29uZmlybVBhc3N3b3JkIHx8XG4gICAgICAgICAgbWV0YS5maWVsZFR5cGUgPT09IFNwZWNDYXBhYmlsaXR5LmV4dGVybmFsUGFzc3dvcmRcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGFjbC1jcmQtZm9ybS1pdGVtXG4gICAgICAgICAgKm5nSWY9XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICBbcGxhaW5dPVwidHJ1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFzc3dvcmRWaWV3XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYWNsLWNyZC1mb3JtLWl0ZW0+XG4gICAgICAgIDxhY2wtcGFzc3dvcmQtaW5wdXRcbiAgICAgICAgICAqbmdJZj1cIiFpc0Rpc2FibGVkXCJcbiAgICAgICAgICBbaW5pdFBhc3N3b3JkXT1cImNvbnRyb2wudmFsdWVcIlxuICAgICAgICAgIFtsYWJlbF09XCJmaWVsZCB8IHB1cmU6IGdldEZpZWxkRGlzcGxheU5hbWUgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtoaW50XT1cIlxuICAgICAgICAgICAgY3VzdG9tRGVzY3JpcHRpb24/LnRlbXBsYXRlUmVmIHx8XG4gICAgICAgICAgICAoZmllbGQgfCBwdXJlOiBnZXRGaWVsZERlc2NyaXB0aW9uIHwgdHJhbnNsYXRlKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJpc1JlcXVpcmVkXCJcbiAgICAgICAgICBbcmVhZG9ubHldPVwiY3JkRm9ybS5yZWFkb25seVwiXG4gICAgICAgICAgW2lzVXBkYXRlXT1cIiEhY29udHJvbC52YWx1ZSAmJiAhY29udHJvbC5kaXJ0eVwiXG4gICAgICAgICAgW3N0cm9uZ1Bhc3N3b3JkXT1cIm1ldGEuZmllbGRUeXBlICE9PSBTcGVjQ2FwYWJpbGl0eS5leHRlcm5hbFBhc3N3b3JkXCJcbiAgICAgICAgICBbZW5hYmxlQ29uZmlybV09XCJtZXRhLmZpZWxkVHlwZSA9PT0gU3BlY0NhcGFiaWxpdHkuY29uZmlybVBhc3N3b3JkXCJcbiAgICAgICAgICB3aWR0aD1cImxhcmdlXCJcbiAgICAgICAgICBbZW5jb2RpbmddPVwiZmllbGQgfCBwdXJlOiBnZXRFbmNvZGluZzoncGFzc3dvcmQnXCJcbiAgICAgICAgICBbcGF0dGVybl09XCJmaWVsZC52YWxpZGF0aW9ucz8ucGF0dGVyblwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgZmllbGQuY2FwYWJpbGl0aWVzXG4gICAgICAgICAgICAgIHwgcHVyZTogZ2V0RGlzcGxheUJ5Q2FwYWJpbGl0eTpTcGVjQ2FwYWJpbGl0eS5wbGFjZWhvbGRlclxuICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgIFwiXG4gICAgICAgID48L2FjbC1wYXNzd29yZC1pbnB1dD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPCEtLSBncm91cCBmaWVsZCAgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNHcm91cEZpZWxkKGZpZWxkKSAmJiBmaWVsZC5maWVsZExpc3Q/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPGFjbC1vcGVyYW5kLWZpZWxkLWdyb3VwXG4gICAgICAgICAgW2ZpZWxkc109XCJmaWVsZHNcIlxuICAgICAgICAgIFtmaWVsZEdyb3VwXT1cImZpZWxkXCJcbiAgICAgICAgICBbcmVhZG9ubHldPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgW2Zvcm1EYXRhU3RhdGVdPVwiZm9ybURhdGFTdGF0ZVwiXG4gICAgICAgICAgW2Zvcm1FcnJvcnNdPVwiZm9ybUVycm9yc1wiXG4gICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPC9hY2wtb3BlcmFuZC1maWVsZC1ncm91cD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPCEtLSBhcnJheSBmaWVsZCBncm91cHMgLS0+XG4gICAgICA8IS0tIGFycmF5IGZpZWxkIHRhYmxlIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQXJyYXlGaWVsZChmaWVsZClcIj5cbiAgICAgICAgPGFjbC1jcmQtYXJyYXktdGFibGVcbiAgICAgICAgICAqbmdJZj1cImZpZWxkIHwgcHVyZTogaXNBcnJheUZpZWxkVGFibGU7IGVsc2UgZGVmYXVsdEFycmF5RmlsZWRcIlxuICAgICAgICAgIFthcnJheUZpZWxkR3JvdXBdPVwiZmllbGRcIlxuICAgICAgICAgIFtmb3JtRGF0YVN0YXRlXT1cImZvcm1EYXRhU3RhdGVcIlxuICAgICAgICAgIFtyZWFkb25seV09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmFsdWVDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2FjbC1jcmQtYXJyYXktdGFibGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEFycmF5RmlsZWQ+XG4gICAgICAgICAgPGFjbC1vcGVyYW5kLWFycmF5LWZpZWxkLWdyb3VwXG4gICAgICAgICAgICBbYXJyYXlGaWVsZEdyb3VwXT1cImZpZWxkXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICAgIFtmb3JtRGF0YVN0YXRlXT1cImZvcm1EYXRhU3RhdGVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvYWNsLW9wZXJhbmQtYXJyYXktZmllbGQtZ3JvdXA+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3Bhc3N3b3JkVmlldz5cbiAge3sgUEFTU1dPUkRfUkVWRUFMIH19XG48L25nLXRlbXBsYXRlPlxuIl19
880
+ (() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(OperandFieldComponent, { className: "OperandFieldComponent", filePath: "lib/field-controls/operand-field.component.ts", lineNumber: 116 }); })();
881
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlcmFuZC1maWVsZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyZC1mb3JtL3NyYy9saWIvZmllbGQtY29udHJvbHMvb3BlcmFuZC1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NyZC1mb3JtL3NyYy9saWIvZmllbGQtY29udHJvbHMvb3BlcmFuZC1maWVsZC5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxFQUNMLFdBQVcsRUFDWCxhQUFhLEVBRWIsT0FBTyxFQUVQLGVBQWUsRUFDZixVQUFVLEVBQ1YsU0FBUyxFQUNULGtCQUFrQixFQUdsQixXQUFXLEVBQ1gsZUFBZSxFQUNmLGdCQUFnQixHQUNqQixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBRUwsdUJBQXVCLEVBQ3ZCLGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxRQUFRLEVBQ1IsS0FBSyxFQUlMLE1BQU07QUFFTiwyQkFBMkI7QUFDM0IsZUFBZSxJQUFJLGNBQWMsR0FDbEMsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFdBQVcsRUFBZSxVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUN0QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ3hDLE9BQU8sRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQ2pFLE9BQU8sRUFDTCxhQUFhLEVBQ2IsR0FBRyxFQUNILE1BQU0sRUFDTixVQUFVLEVBQ1YsT0FBTyxFQUNQLFlBQVks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b0NuRTtJQURDLGVBQWUsRUFBRTs4QkFDRCxVQUFVOzZEQUFnQjtpRkFqRGhDLHFCQUFxQjtjQU5qQyxTQUFTOzJCQUNFLG1CQUFtQixtQkFHWix1QkFBdUIsQ0FBQyxNQUFNO2lJQU0vQyxLQUFLO2tCQURKLEtBQUs7WUFJTixNQUFNLE1BR04sc0JBQXNCO2tCQURyQixLQUFLO1lBSU4sdUJBQXVCLE1BR3ZCLFFBQVE7a0JBRFAsS0FBSztZQStCRyxNQUFNO2tCQUFkLEtBQUs7WUFDRyxhQUFhO2tCQUFyQixLQUFLO1lBRU4sY0FBYyxNQUVMLFVBQVU7a0JBQWxCLEtBQUs7WUFDRyxpQkFBaUI7a0JBQXpCLEtBQUs7WUFFSSxXQUFXO2tCQUFwQixNQUFNO1lBQ0csVUFBVTtrQkFBbkIsTUFBTTtZQUlILFFBQVE7a0JBRFgsV0FBVzttQkFBQyxRQUFROztrRkExRFYscUJBQXFCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQVBJX0dBVEVXQVksXG4gIGNyZWF0ZUFjdGlvbnMsXG4gIEVuY29kaW5nLFxuICBpc0VxdWFsLFxuICBLdWJlcm5ldGVzUmVzb3VyY2UsXG4gIE9ic2VydmFibGVJbnB1dCxcbiAgcHVibGlzaFJlZixcbiAgc2tpcEVycm9yLFxuICBzdGFydFdpdGhDb25kaXRpb24sXG4gIFN0cmluZ01hcCxcbiAgVHJhbnNsYXRpb24sXG4gIHZpZXdBY3Rpb25zLFxuICB5YW1sUmVhZE9wdGlvbnMsXG4gIHlhbWxXcml0ZU9wdGlvbnMsXG59IGZyb20gJ0BhbGF1ZGEtZmUvY29tbW9uJztcbmltcG9ydCB7IEh0dHBDbGllbnQgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRXZlbnRFbWl0dGVyLFxuICBIb3N0QmluZGluZyxcbiAgSW5qZWN0b3IsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIC8vIGNzcGVsbDpkaXNhYmxlLW5leHQtbGluZVxuICDJtWNyZWF0ZUluamVjdG9yIGFzIGNyZWF0ZUluamVjdG9yLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBWYWxpZGF0b3JGbiwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGRlY29kZSwgZW5jb2RlIH0gZnJvbSAnYWI2NCc7XG5pbXBvcnQgeyBpc0ltbXV0YWJsZSB9IGZyb20gJ2ltbXV0YWJsZSc7XG5pbXBvcnQgeyBnZXQsIGlkZW50aXR5LCBtYXAgYXMgJG1hcCwgdGVtcGxhdGUgfSBmcm9tICdsb2Rhc2gtZXMnO1xuaW1wb3J0IHtcbiAgY29tYmluZUxhdGVzdCxcbiAgbWFwLFxuICBmaWx0ZXIsXG4gIE9ic2VydmFibGUsXG4gIFN1YmplY3QsXG4gIGRlYm91bmNlVGltZSxcbiAgZGlzdGluY3RVbnRpbENoYW5nZWQsXG4gIHNoYXJlUmVwbGF5LFxuICB0YWtlVW50aWwsXG4gIEJlaGF2aW9yU3ViamVjdCxcbiAgc3dpdGNoTWFwLFxuICBvZixcbiAgZmluYWxpemUsXG4gIGlzT2JzZXJ2YWJsZSxcbiAgdGFrZSxcbiAgdGFwLFxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHsgQ3JkRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2NyZC1mb3JtL2NvbXBvbmVudCc7XG5pbXBvcnQgeyBSZW1vdGVXaWRnZXRNb2R1bGVEZWZpbml0aW9uIH0gZnJvbSAnLi4vcmVtb3RlLXdpZGdldHMnO1xuaW1wb3J0IHtcbiAgRmllbGRWYWx1ZUNoYW5nZUV2ZW50LFxuICBGb3JtRGF0YVN0YXRlLFxuICBGb3JtRXJyb3JzLFxuICBPcGVyYW5kRmllbGQsXG4gIFNwZWNDYXBhYmlsaXR5LFxuICBWYWxpZGF0aW9ucyxcbn0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHtcbiAgY29udmVydEJvb2xlYW5Td2l0Y2hWYWx1ZSxcbiAgY29udmVydFZhbHVlLFxuICBDcmRGb3JtQ3VzdG9tRGVzY3JpcHRpb25EaXJlY3RpdmUsXG4gIGdldERlZmF1bHRWYWx1ZSxcbiAgZ2V0RGlzcGxheUJ5Q2FwYWJpbGl0eSxcbiAgZ2V0RmllbGREZXNjcmlwdGlvbixcbiAgZ2V0RmllbGREaXNwbGF5TmFtZSxcbiAgZ2V0RmllbGRUeXBlLFxuICBnZXRGb3JtRGF0YSxcbiAgZ2V0UmFkaW9PcHRpb25zLFxuICBub3JtYWxpemVQYXRoLFxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQge1xuICBpc0FycmF5RmllbGQsXG4gIGlzQXJyYXlGaWVsZFRhYmxlLFxuICBpc0NsZWFyYWJsZSxcbiAgaXNDcmVhdGFibGUsXG4gIGlzR3JvdXBGaWVsZCxcbiAgaXNNdWx0aXBsZSxcbiAgaXNBbGxvd0NyZWF0ZSxcbiAgaXNSZW1vdGVGaWVsZCxcbiAgaXNSZXF1aXJlZCxcbiAgZXZhbEluQ29udGV4dCxcbiAgZ2V0T3BlcmFuZFBhdGgsXG59IGZyb20gJy4uL3V0aWxzL2hlbHBlcic7XG5cbmltcG9ydCB7XG4gIGNvbXBhcmVXaXRoU3Vic2NyaWJlZFBhdGhzLFxuICBQcm9wc0ZpZWxkRXhwcmVzc2lvbixcbn0gZnJvbSAnLi9leHByZXNzaW9ucy9wcm9wcy1leHByZXNzaW9uJztcbmltcG9ydCB7IGlzTGluayB9IGZyb20gJy4vd2lkZ2V0cy9saW5rL2NvbXBvbmVudCc7XG5cbmV4cG9ydCBjb25zdCBQQVNTV09SRF9SRVZFQUwgPSAnKioqKioqJztcblxuY29uc3QgRU5DT0RJTkdfTUFQUEVSOiBSZWNvcmQ8c3RyaW5nLCBFbmNvZGluZz4gPSB7XG4gIGJhc2U2NDoge1xuICAgIGRlY29kZSxcbiAgICBlbmNvZGUsXG4gIH0sXG59O1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhY2wtb3BlcmFuZC1maWVsZCcsXG4gIHRlbXBsYXRlVXJsOiAnb3BlcmFuZC1maWVsZC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWydvcGVyYW5kLWZpZWxkLmNvbXBvbmVudC5zY3NzJ10sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBPcGVyYW5kRmllbGRDb21wb25lbnRcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzLCBBZnRlclZpZXdJbml0XG57XG4gIEBJbnB1dCgpXG4gIGZpZWxkOiBPcGVyYW5kRmllbGQ7XG5cbiAgQE9ic2VydmFibGVJbnB1dCgpXG4gIGZpZWxkJCE6IE9ic2VydmFibGU8T3BlcmFuZEZpZWxkPjtcblxuICBASW5wdXQoKVxuICByZW1vdGVNb2R1bGVEZWZpbml0aW9uOiBSZW1vdGVXaWRnZXRNb2R1bGVEZWZpbml0aW9uO1xuXG4gIEBPYnNlcnZhYmxlSW5wdXQoKVxuICByZW1vdGVNb2R1bGVEZWZpbml0aW9uJCE6IE9ic2VydmFibGU8UmVtb3RlV2lkZ2V0TW9kdWxlRGVmaW5pdGlvbj47XG5cbiAgQElucHV0KClcbiAgcmVhZG9ubHkgPSBmYWxzZTtcblxuICBnZXQgaXNEaXNhYmxlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5yZWFkb25seSB8fCB0aGlzLmZpZWxkPy5kaXNhYmxlZDtcbiAgfVxuXG4gIGdldCBlZmZlY3RDb250cm9sRGVmYXVsdFZhbHVlKCkge1xuICAgIHJldHVybiB0aGlzLmNyZEZvcm0uZWZmZWN0Q29udHJvbERlZmF1bHRWYWx1ZTtcbiAgfVxuXG4gIGdldCBpc1JlcXVpcmVkKCkge1xuICAgIHJldHVybiBpc1JlcXVpcmVkKHRoaXMuZmllbGQpO1xuICB9XG5cbiAgZ2V0IGlzQ3JlYXRhYmxlKCkge1xuICAgIHJldHVybiBpc0NyZWF0YWJsZSh0aGlzLmZpZWxkKTtcbiAgfVxuXG4gIGdldCBpc011bHRpcGxlKCkge1xuICAgIHJldHVybiBpc011bHRpcGxlKHRoaXMuZmllbGQpO1xuICB9XG5cbiAgZ2V0IGlzQWxsb3dDcmVhdGUoKSB7XG4gICAgcmV0dXJuIGlzQWxsb3dDcmVhdGUodGhpcy5maWVsZCk7XG4gIH1cblxuICBnZXQgaXNDbGVhcmFibGUoKSB7XG4gICAgcmV0dXJuIGlzQ2xlYXJhYmxlKHRoaXMuZmllbGQpO1xuICB9XG5cbiAgQElucHV0KCkgZmllbGRzOiBPcGVyYW5kRmllbGRbXTtcbiAgQElucHV0KCkgZm9ybURhdGFTdGF0ZTogRm9ybURhdGFTdGF0ZTtcbiAgQE9ic2VydmFibGVJbnB1dCgpXG4gIGZvcm1EYXRhU3RhdGUkITogT2JzZXJ2YWJsZTxGb3JtRGF0YVN0YXRlPjtcblxuICBASW5wdXQoKSBmb3JtRXJyb3JzOiBGb3JtRXJyb3JzO1xuICBASW5wdXQoKSBjdXN0b21EZXNjcmlwdGlvbjogQ3JkRm9ybUN1c3RvbURlc2NyaXB0aW9uRGlyZWN0aXZlO1xuXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8RmllbGRWYWx1ZUNoYW5nZUV2ZW50PigpO1xuICBAT3V0cHV0KCkgaXRlbVJlbW92ZSA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvLyDpgJrov4doaWRkZW7lsZ7mgKfpmpDol4/kuI3lv4XopoHnmoTlhYPntKDvvIzlkowgYWNsU2Nyb2xsVG9GaXJzdEludmFsaWQg5oyH5Luk6L+H5ruk6ZqQ6JeP5YWD57Sg5L+d5oyB5LiA6Ie0XG4gIEBIb3N0QmluZGluZygnaGlkZGVuJylcbiAgZ2V0IGlzSGlkZGVuKCkge1xuICAgIHJldHVybiAoXG4gICAgICAodGhpcy5oYXNGaWVsZERlcGVuZGVuY3koKSAmJiAhdGhpcy5jaGVja0ZpZWxkRGVwZW5kZW5jeSh0aGlzLmZpZWxkKSkgfHxcbiAgICAgIHRoaXMuX2hpZGRlblxuICAgICk7XG4gIH1cblxuICBzZXQgaXNIaWRkZW4oaGlkZGVuKSB7XG4gICAgdGhpcy5faGlkZGVuID0gaGlkZGVuO1xuICAgIHRoaXMuY2RyLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBfaGlkZGVuOiBib29sZWFuO1xuICBjb250cm9sID0gbmV3IEZvcm1Db250cm9sKCk7XG4gIG9uRGVzdHJveSQgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuXG4gIGdldEZpZWxkVHlwZSA9IGdldEZpZWxkVHlwZTtcbiAgaXNMaW5rID0gaXNMaW5rO1xuXG4gIFNwZWNDYXBhYmlsaXR5ID0gU3BlY0NhcGFiaWxpdHk7XG5cbiAgZ2V0RmllbGREaXNwbGF5TmFtZSA9IGdldEZpZWxkRGlzcGxheU5hbWU7XG4gIGdldEZpZWxkRGVzY3JpcHRpb24gPSBnZXRGaWVsZERlc2NyaXB0aW9uO1xuICBnZXRSYWRpb09wdGlvbnMgPSBnZXRSYWRpb09wdGlvbnM7XG4gIGdldERpc3BsYXlCeUNhcGFiaWxpdHkgPSBnZXREaXNwbGF5QnlDYXBhYmlsaXR5O1xuXG4gIGVkaXRvck9wdGlvbnMgPSB5YW1sV3JpdGVPcHRpb25zO1xuICBlZGl0b3JBY3Rpb25zID0gY3JlYXRlQWN0aW9ucztcblxuICBpc0dyb3VwRmllbGQgPSBpc0dyb3VwRmllbGQ7XG4gIGlzQXJyYXlGaWVsZCA9IGlzQXJyYXlGaWVsZDtcbiAgaXNSZW1vdGVGaWVsZCA9IGlzUmVtb3RlRmllbGQ7XG4gIGlzQXJyYXlGaWVsZFRhYmxlID0gaXNBcnJheUZpZWxkVGFibGU7XG4gIGNvbnZlcnRCb29sZWFuU3dpdGNoVmFsdWUgPSBjb252ZXJ0Qm9vbGVhblN3aXRjaFZhbHVlO1xuICBsb2FkaW5nJCA9IG5ldyBCZWhhdmlvclN1YmplY3QoZmFsc2UpO1xuXG4gIGdldCBpc0N1c3RvbUVycm9yc01hcHBlcigpIHtcbiAgICByZXR1cm4gZ2V0RmllbGRUeXBlKHRoaXMuZmllbGQpID09PSBTcGVjQ2FwYWJpbGl0eS5yZXNvdXJjZVJlcXVpcmVtZW50cztcbiAgfVxuXG4gIFBBU1NXT1JEX1JFVkVBTCA9IFBBU1NXT1JEX1JFVkVBTDtcblxuICBpc0Jhc2ljVHlwZUZpZWxkID0gKGZpbGVkOiBPcGVyYW5kRmllbGQpID0+XG4gICAgIVtcbiAgICAgIFNwZWNDYXBhYmlsaXR5Lm9iamVjdCxcbiAgICAgIFNwZWNDYXBhYmlsaXR5LmFycmF5LFxuICAgICAgU3BlY0NhcGFiaWxpdHkucGFzc3dvcmQsXG4gICAgICBTcGVjQ2FwYWJpbGl0eS5jb25maXJtUGFzc3dvcmQsXG4gICAgICBTcGVjQ2FwYWJpbGl0eS5leHRlcm5hbFBhc3N3b3JkLFxuICAgIF0uaW5jbHVkZXMoZ2V0RmllbGRUeXBlKGZpbGVkKSk7XG5cbiAgdmlld0FjdGlvbnMgPSB2aWV3QWN0aW9ucztcbiAgdmlld09wdGlvbnMgPSB5YW1sUmVhZE9wdGlvbnM7XG5cbiAgcHJpdmF0ZSBfdmFsaWRhdG9yczogVmFsaWRhdG9yRm5bXTtcblxuICByZW1vdGVNb2R1bGUkID0gY29tYmluZUxhdGVzdChbXG4gICAgdGhpcy5maWVsZCQsXG4gICAgdGhpcy5yZW1vdGVNb2R1bGVEZWZpbml0aW9uJCxcbiAgXSkucGlwZShcbiAgICBtYXAoKFtmaWVsZCwgcmVtb3RlTW9kdWxlRGVmaW5pdGlvbl0pID0+IHtcbiAgICAgIGNvbnN0IHJlbW90ZVdpZGdldCA9IHRoaXMuZ2V0UmVtb3RlV2lkZ2V0KGZpZWxkLCByZW1vdGVNb2R1bGVEZWZpbml0aW9uKTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHJlbW90ZVdpZGdldCAmJiB7XG4gICAgICAgICAgaW5qZWN0b3I6IGNyZWF0ZUluamVjdG9yKFxuICAgICAgICAgICAgcmVtb3RlTW9kdWxlRGVmaW5pdGlvbi5tb2R1bGUsXG4gICAgICAgICAgICB0aGlzLmluamVjdG9yLFxuICAgICAgICAgICksXG4gICAgICAgICAgbW9kdWxlOiByZW1vdGVNb2R1bGVEZWZpbml0aW9uLm1vZHVsZSxcbiAgICAgICAgICBjb21wb25lbnQ6IHJlbW90ZVdpZGdldC5jb21wb25lbnQsXG4gICAgICAgIH1cbiAgICAgICk7XG4gICAgfSksXG4gICAgZmlsdGVyKEJvb2xlYW4pLFxuICAgIHRha2VVbnRpbCh0aGlzLm9uRGVzdHJveSQpLFxuICAgIHNoYXJlUmVwbGF5KDEpLFxuICApO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBjcmRGb3JtOiBDcmRGb3JtQ29tcG9uZW50LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5qZWN0b3I6IEluamVjdG9yLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaHR0cDogSHR0cENsaWVudCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICkge31cblxuICByZWdpc3RlckNvbnRyb2woKSB7XG4gICAgdGhpcy5jcmRGb3JtLmNvbnRyb2xNYXAuc2V0KGdldE9wZXJhbmRQYXRoKHRoaXMuZmllbGQpLCB0aGlzLmNvbnRyb2wpO1xuICB9XG5cbiAgdW5SZWdpc3RlckNvbnRyb2woKSB7XG4gICAgdGhpcy5jcmRGb3JtLmNvbnRyb2xNYXAuZGVsZXRlKGdldE9wZXJhbmRQYXRoKHRoaXMuZmllbGQpKTtcbiAgfVxuXG4gIGdldFdpZGdldHMgPSAoY2FwYWJpbGl0aWVzOiBTcGVjQ2FwYWJpbGl0eVtdKSA9PiB7XG4gICAgY29uc3QgZGVzY3JpcHRvciA9IGNhcGFiaWxpdGllcy5maW5kKGMgPT5cbiAgICAgIGMuc3RhcnRzV2l0aChTcGVjQ2FwYWJpbGl0eS5jdXN0b20pLFxuICAgICk7XG4gICAgcmV0dXJuIGRlc2NyaXB0b3JcbiAgICAgID8gdGhpcy5jcmRGb3JtLndpZGdldHM/LmZpbmQoXG4gICAgICAgICAgdyA9PiB3LmRlc2NyaXB0b3IgPT09IGRlc2NyaXB0b3Iuc3BsaXQoJz89JylbMF0sXG4gICAgICAgIClcbiAgICAgIDogbnVsbDtcbiAgfTtcblxuICBnZXRSZW1vdGVXaWRnZXQoXG4gICAgZmllbGQ6IE9wZXJhbmRGaWVsZCxcbiAgICByZW1vdGVEZWZpbml0aW9uOiBSZW1vdGVXaWRnZXRNb2R1bGVEZWZpbml0aW9uLFxuICApIHtcbiAgICBjb25zdCBkZXNjcmlwdG9yID0gZmllbGQuY2FwYWJpbGl0aWVzLmZpbmQoYyA9PlxuICAgICAgYy5zdGFydHNXaXRoKFNwZWNDYXBhYmlsaXR5LnJlbW90ZSksXG4gICAgKTtcbiAgICByZXR1cm4gKFxuICAgICAgZGVzY3JpcHRvciAmJlxuICAgICAgcmVtb3RlRGVmaW5pdGlvbj8uY29tcG9uZW50cz8uZmluZChcbiAgICAgICAgdyA9PiB3LmRlc2NyaXB0b3IgPT09IGRlc2NyaXB0b3Iuc3BsaXQoJz89JylbMF0sXG4gICAgICApXG4gICAgKTtcbiAgfVxuXG4gIG5nT25Jbml0KCkge1xuICAgIHRoaXMuZHluYW1pY0hpZGRlblZhbHVlJC5zdWJzY3JpYmUodmFsdWUgPT4ge1xuICAgICAgdGhpcy5pc0hpZGRlbiA9IHZhbHVlO1xuICAgIH0pO1xuICAgIHRoaXMucmVnaXN0ZXJDb250cm9sKCk7XG4gICAgaWYgKHRoaXMuZmllbGQudmFsaWRhdGlvbnMpIHtcbiAgICAgIGNvbnN0IHZhbGlkYXRvcnMgPSAkbWFwKHRoaXMuZmllbGQudmFsaWRhdGlvbnMsICh2YWwsIHJ1bGUpID0+IHtcbiAgICAgICAgc3dpdGNoIChydWxlKSB7XG4gICAgICAgICAgY2FzZSBWYWxpZGF0aW9ucy5tYXhpbXVtOiB7XG4gICAgICAgICAgICByZXR1cm4gVmFsaWRhdG9ycy5tYXgodmFsIGFzIG51bWJlcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNhc2UgVmFsaWRhdGlvbnMubWluaW11bToge1xuICAgICAgICAgICAgcmV0dXJuIFZhbGlkYXRvcnMubWluKHZhbCBhcyBudW1iZXIpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjYXNlIFZhbGlkYXRpb25zLnJlcXVpcmVkOiB7XG4gICAgICAgICAgICByZXR1cm4gVmFsaWRhdG9ycy5yZXF1aXJlZDtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBWYWxpZGF0aW9ucy5tYXhMZW5ndGg6IHtcbiAgICAgICAgICAgIHJldHVybiBWYWxpZGF0b3JzLm1heExlbmd0aCh2YWwgYXMgbnVtYmVyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBWYWxpZGF0aW9ucy5taW5MZW5ndGg6IHtcbiAgICAgICAgICAgIHJldHVybiBWYWxpZGF0b3JzLm1pbkxlbmd0aCh2YWwgYXMgbnVtYmVyKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY2FzZSBWYWxpZGF0aW9ucy5wYXR0ZXJuOiB7XG4gICAgICAgICAgICByZXR1cm4gVmFsaWRhdG9ycy5wYXR0ZXJuKHZhbCBhcyBzdHJpbmcpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pLmZpbHRlcih2ID0+ICEhdik7XG4gICAgICBpZiAodmFsaWRhdG9ycy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5jb250cm9sLmFkZFZhbGlkYXRvcnMoKHRoaXMuX3ZhbGlkYXRvcnMgPSB2YWxpZGF0b3JzKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8g5bCGIHZhbHVlQ2hhbmdlcyDnmoTpgLvovpHnp7vliqjliLAgbmdBZnRlclZpZXdJbml0IOS4re+8jOS4u+imgeaYr+S4uuS6humBv+WFjeWFqOWxgCBWYWxpZGF0b3JzRGlyZWN0aXZl5bim5p2l55qE5b2x5ZON77yM6ZyA6KaB562J5YiwVmFsaWRhdG9yc0RpcmVjdGl2ZeeahG5nQWZ0ZXJWaWV3SW5pdOS5i+WQjuWGjeiuoumYhWNvbnRyb2znmoR2YWx1ZUNoYW5nZXNcbiAgbmdBZnRlclZpZXdJbml0KCkge1xuICAgIHRoaXMuY29udHJvbC52YWx1ZUNoYW5nZXNcbiAgICAgIC5waXBlKFxuICAgICAgICBzdGFydFdpdGhDb25kaXRpb24odGhpcy5lZmZlY3RDb250cm9sRGVmYXVsdFZhbHVlLCB0aGlzLmNvbnRyb2wudmFsdWUpLFxuICAgICAgICBkZWJvdW5jZVRpbWUoNTApLFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgpLFxuICAgICAgICB0YWtlVW50aWwodGhpcy5vbkRlc3Ryb3kkKSxcbiAgICAgICAgZmlsdGVyKHYgPT5cbiAgICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBoYWNrLiB5YW1sIHZhbHVlIHdpbGwgb25seSBiZSBudWxsIGlmIGZvcm1hdCBlcnJvcihiZWNhdXNlIHRyeS1jYXRjaCksIHRoZSBkYXRhIGZsb3cgbm93IGlzIGZyb20gY29udHJvbCA9PiBmb3JtRGF0YVN0YXRlID0+IGNvbnRyb2wod2lsbCBqdWRnZSBlcXVhbGl0eSnvvIx0aGlzIHdpbGwgbWFrZSBjb250cm9sIGJlIGVtcHR5XG4gICAgICAgICAgZ2V0RmllbGRUeXBlKHRoaXMuZmllbGQpID09PSBTcGVjQ2FwYWJpbGl0eS55YW1sID8gdiAhPT0gbnVsbCA6IHRydWUsXG4gICAgICAgICksXG4gICAgICApXG4gICAgICAuc3Vic2NyaWJlKHZhbHVlID0+IHtcbiAgICAgICAgdGhpcy52YWx1ZUNoYW5nZS5lbWl0KHtcbiAgICAgICAgICBmaWVsZDogdGhpcy5maWVsZCxcbiAgICAgICAgICBkYXRhOiB2YWx1ZSxcbiAgICAgICAgICBlcnJvcnM6IHRoaXMuY29udHJvbC5lcnJvcnMsXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpIHtcbiAgICB0aGlzLm9uRGVzdHJveSQubmV4dCgpO1xuICAgIHRoaXMub25EZXN0cm95JC5jb21wbGV0ZSgpO1xuICAgIHRoaXMudW5SZWdpc3RlckNvbnRyb2woKTtcbiAgICBpZiAodGhpcy5fdmFsaWRhdG9ycz8ubGVuZ3RoKSB7XG4gICAgICB0aGlzLmNvbnRyb2wucmVtb3ZlVmFsaWRhdG9ycyh0aGlzLl92YWxpZGF0b3JzKTtcbiAgICB9XG4gIH1cblxuICBuZ09uQ2hhbmdlcyh7IGZvcm1EYXRhU3RhdGUgfTogU2ltcGxlQ2hhbmdlcykge1xuICAgIGlmICh0aGlzLmZpZWxkICYmIGZvcm1EYXRhU3RhdGU/LmZpcnN0Q2hhbmdlKSB7XG4gICAgICB0aGlzLmR5bmFtaWNEZWZhdWx0VmFsdWUkXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKHsgdmFsdWUsIGlzRHluYW1pYyB9KSA9PiB7XG4gICAgICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHZhbHVlLCB7IGVtaXRFdmVudDogaXNEeW5hbWljIH0pO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGZvcm1EYXRhU3RhdGU/LmN1cnJlbnRWYWx1ZSkge1xuICAgICAgY29uc3QgY3VycmVudFZhbHVlID0gZ2V0Rm9ybURhdGEoXG4gICAgICAgIGZvcm1EYXRhU3RhdGUuY3VycmVudFZhbHVlIGFzIEZvcm1EYXRhU3RhdGUsXG4gICAgICAgIHRoaXMuZmllbGQucGF0aCxcbiAgICAgICAgZmFsc2UsXG4gICAgICApO1xuICAgICAgY29uc3QgcHJldlZhbHVlID0gZ2V0Rm9ybURhdGEoXG4gICAgICAgIGZvcm1EYXRhU3RhdGUucHJldmlvdXNWYWx1ZSBhcyBGb3JtRGF0YVN0YXRlLFxuICAgICAgICB0aGlzLmZpZWxkLnBhdGgsXG4gICAgICAgIGZhbHNlLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IHJhd1ZhbHVlID0gaXNJbW11dGFibGUoY3VycmVudFZhbHVlKVxuICAgICAgICA/IGN1cnJlbnRWYWx1ZS50b0pTKClcbiAgICAgICAgOiBjdXJyZW50VmFsdWU7XG4gICAgICBpZiAoXG4gICAgICAgICFpc0VxdWFsKHJhd1ZhbHVlLCBwcmV2VmFsdWUpICYmXG4gICAgICAgICFpc0VxdWFsKHJhd1ZhbHVlLCB0aGlzLmNvbnRyb2wudmFsdWUpXG4gICAgICApIHtcbiAgICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHJhd1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBnZXRGaWVsZEN1cnJlbnRWYWx1ZSgpIHtcbiAgICBsZXQgdmFsdWUgPSBnZXRGb3JtRGF0YSh0aGlzLmZvcm1EYXRhU3RhdGUsIHRoaXMuZmllbGQucGF0aCwgZmFsc2UpO1xuXG4gICAgLy8g5aaC5p6c5YC85pivIEltbXV0YWJsZSBvYmplY3Qg57G75Z6L77yM6ZyA6KaB6L2s5oiQ5Y6f5aeLIEpTIE9iamVjdFxuICAgIGlmIChpc0ltbXV0YWJsZSh2YWx1ZSkpIHtcbiAgICAgIHZhbHVlID0gdmFsdWUudG9KUygpIGFzIEZvcm1EYXRhU3RhdGU7XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIGdldEZpZWxkVmFsdWUodXNlRGVmYXVsdCA9IHRydWUpIHtcbiAgICBjb25zdCBjdXJyZW50VmFsdWUgPSB0aGlzLmdldEZpZWxkQ3VycmVudFZhbHVlKCk7XG5cbiAgICBpZiAoY3VycmVudFZhbHVlID09PSB1bmRlZmluZWQgJiYgdXNlRGVmYXVsdCkge1xuICAgICAgcmV0dXJuIGdldERlZmF1bHRWYWx1ZSh0aGlzLmZpZWxkKTtcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRWYWx1ZTtcbiAgfVxuXG4gIGdldE9wdGlvbkRpc3BsYXkoXG4gICAgdmFsdWU6IHN0cmluZyxcbiAgICBvcHRpb25zOiBBcnJheTx7IHZhbHVlOiBzdHJpbmc7IGRpc3BsYXk6IFRyYW5zbGF0aW9uIH0+LFxuICApIHtcbiAgICByZXR1cm4gb3B0aW9ucy5maW5kKGl0ZW0gPT4gaXRlbS52YWx1ZSA9PT0gdmFsdWUpPy5kaXNwbGF5O1xuICB9XG5cbiAgZ2V0U2VsZWN0T3B0aW9ucyhmaWVsZDogT3BlcmFuZEZpZWxkKSB7XG4gICAgcmV0dXJuIGZpZWxkLmNhcGFiaWxpdGllc1xuICAgICAgLmZpbHRlcihjID0+IGMuc3RhcnRzV2l0aChTcGVjQ2FwYWJpbGl0eS5zZWxlY3QpKVxuICAgICAgLm1hcChjID0+IGMuc3BsaXQoU3BlY0NhcGFiaWxpdHkuc2VsZWN0KT8uWzFdKTtcbiAgfVxuXG4gIGdldEVuY29kaW5nKGZpZWxkOiBPcGVyYW5kRmllbGQsIHR5cGU6IHN0cmluZykge1xuICAgIGNvbnN0IHByZWZpeCA9IGB1cm46YWxtOmRlc2NyaXB0b3I6JHt0eXBlfTplbmNvZGluZzpgO1xuICAgIGNvbnN0IGNhcGFiaWxpdHkgPSBmaWVsZC5jYXBhYmlsaXRpZXMuZmluZChpdCA9PiBpdC5zdGFydHNXaXRoKHByZWZpeCkpO1xuICAgIGxldCBlbmNvZGluZzogRW5jb2Rpbmc7XG4gICAgaWYgKGNhcGFiaWxpdHkpIHtcbiAgICAgIGVuY29kaW5nID0gRU5DT0RJTkdfTUFQUEVSW2NhcGFiaWxpdHkuc2xpY2UocHJlZml4Lmxlbmd0aCldO1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgZW5jb2RpbmcgfHwge1xuICAgICAgICBlbmNvZGU6IGlkZW50aXR5LFxuICAgICAgICBkZWNvZGU6IGlkZW50aXR5LFxuICAgICAgfVxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIGhhc0ZpZWxkRGVwZW5kZW5jeSgpIHtcbiAgICByZXR1cm4gdGhpcy5maWVsZC5jYXBhYmlsaXRpZXMuc29tZShjID0+XG4gICAgICBjLnN0YXJ0c1dpdGgoU3BlY0NhcGFiaWxpdHkuZmllbGREZXBlbmRlbmN5KSxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0ZpZWxkRGVwZW5kZW5jeShmaWVsZDogT3BlcmFuZEZpZWxkKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRlcGVuZGVuY2llcyA9IGZpZWxkPy5jYXBhYmlsaXRpZXNcbiAgICAgICAgLmZpbHRlcihjID0+IGMuc3RhcnRzV2l0aChTcGVjQ2FwYWJpbGl0eS5maWVsZERlcGVuZGVuY3kpKVxuICAgICAgICAubWFwKGkgPT4gaS5zcGxpdChTcGVjQ2FwYWJpbGl0eS5maWVsZERlcGVuZGVuY3kpWzFdKTtcbiAgICAgIGlmICghZGVwZW5kZW5jaWVzPy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICBjb25zdCBwYXJlbnRQYXRocyA9IGRlcGVuZGVuY2llcy5tYXAoZCA9PiBkLnNwbGl0KCc6JykpO1xuICAgICAgY29uc3Qgc3RhdGUgPSBwYXJlbnRQYXRocy5ldmVyeSgoW3BhdGgsIC4uLnZhbHVlc10pID0+IHtcbiAgICAgICAgLy8gU3VwcG9ydCBkZXBlbmQgb25lIG9mIHZhbHVlc1xuICAgICAgICBjb25zdCBkZXBlbmRlbmN5RmllbGQgPSB0aGlzLmZpZWxkcy5maW5kKFxuICAgICAgICAgIGYgPT4gZi5wYXRoID09PSBub3JtYWxpemVQYXRoKHBhdGgpLFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBkZXBlbmRlbmN5RGVmYXVsdFZhbHVlID0gZ2V0RGVmYXVsdFZhbHVlKGRlcGVuZGVuY3lGaWVsZCk7XG4gICAgICAgIGNvbnN0IGZvcm1TdGF0ZVZhbHVlID0gZ2V0Rm9ybURhdGEodGhpcy5mb3JtRGF0YVN0YXRlLCBwYXRoKTtcbiAgICAgICAgY29uc3QgY3VycmVudFZhbHVlID1cbiAgICAgICAgICBmb3JtU3RhdGVWYWx1ZSA9PT0gbnVsbCB8fCBmb3JtU3RhdGVWYWx1ZSA9PT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IGRlcGVuZGVuY3lEZWZhdWx0VmFsdWVcbiAgICAgICAgICAgIDogZm9ybVN0YXRlVmFsdWU7XG4gICAgICAgIHJldHVybiB2YWx1ZXMuc29tZShcbiAgICAgICAgICB2YWwgPT4gY29udmVydFZhbHVlKHZhbCwgZGVwZW5kZW5jeUZpZWxkLnR5cGUpID09PSBjdXJyZW50VmFsdWUsXG4gICAgICAgICk7XG4gICAgICB9KTtcblxuICAgICAgLyoqXG4gICAgICAgKiDniLYgZmllbGQgZGVwZW5kZW5jeSDkuI3mu6HotrPml7bvvIzljbPpmpDol4/ml7bvvIzmnKwgZmllbGQg5Lmf5bqU5b2T6ZqQ6JeP44CCXG4gICAgICAgKiDlm6DkuLrlnKjlpKfpg6jliIbmg4XlvaLkuIvvvIxmaWVsZERlcGVuZGVuY3kg5LiOIG9uZU9mIOaQremFjeadpeaPj+i/sOS4gOe7hOWFs+iBlOWFs+ezu++8jOW+iOWwkeWPquaciSBiIOS7heS+nei1luS6jiBh77yM5b2TIGEg6ZqQ6JeP5ZCO77yM6L+Y6KaB5qC55o2uIGEg55qE6buY6K6k5YC86KaB5rGC5pi+56S6IGIg55qE5oOF5Ya177yMXG4gICAgICAgKiDlr7nkuo7or6Xmg4XlhrXvvIzlj6/ku6XlpJrliqDkuIDkuKrphY3lpIfkuobpop3lpJYgZmllbGREZXBlbmRlbmN5IOeahCBEZXNjcmlwdG9yIOadpeaPj+i/sCBiXG4gICAgICAgKi9cbiAgICAgIHJldHVybiAoXG4gICAgICAgIHBhcmVudFBhdGhzLmV2ZXJ5KChbcGF0aF0pID0+XG4gICAgICAgICAgdGhpcy5jaGVja0ZpZWxkRGVwZW5kZW5jeSh0aGlzLmZpZWxkcy5maW5kKGkgPT4gaS5wYXRoID09PSBwYXRoKSksXG4gICAgICAgICkgJiYgc3RhdGVcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIGR5bmFtaWNPcHRpb25zJDogT2JzZXJ2YWJsZTxhbnk+ID0gdGhpcy5maWVsZCQucGlwZShcbiAgICBzd2l0Y2hNYXAoZmllbGQgPT4ge1xuICAgICAgY29uc3QgZHluYW1pY0V4cHJlc3Npb24gPSBuZXcgUHJvcHNGaWVsZEV4cHJlc3Npb24oZmllbGQpLmV4cHJlc3Npb25zO1xuICAgICAgaWYgKCFkeW5hbWljRXhwcmVzc2lvbi5vcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBvZihcbiAgICAgICAgICB0aGlzLmdldFNlbGVjdE9wdGlvbnMoZmllbGQpLm1hcCh2YWx1ZSA9PiAoe1xuICAgICAgICAgICAgbGFiZWw6IHZhbHVlLFxuICAgICAgICAgICAgdmFsdWUsXG4gICAgICAgICAgfSkpLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW1xuICAgICAgICB0aGlzLmNyZEZvcm0uZm9ybUNvbnRleHQkLFxuICAgICAgICB0aGlzLmZvcm1EYXRhU3RhdGUkLFxuICAgICAgXSkucGlwZShcbiAgICAgICAgZGVib3VuY2VUaW1lKDEwMCksXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwLCBuKSA9PlxuICAgICAgICAgIGNvbXBhcmVXaXRoU3Vic2NyaWJlZFBhdGhzKGR5bmFtaWNFeHByZXNzaW9uLCBwLCBuKSxcbiAgICAgICAgKSxcbiAgICAgICAgdGFwKChbZm9ybUNvbnRleHQsIGZvcm1EYXRhU3RhdGVdKSA9PiB7XG4gICAgICAgICAgaWYgKHRoaXMuY3JkRm9ybS5kZWJ1Zykge1xuICAgICAgICAgICAgLyogZXNsaW50LWRpc2FibGUgIG5vLWNvbnNvbGUgKi9cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdmaWVsZDogJywgZmllbGQpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ2Zvcm1Db250ZXh0OiAnLCBmb3JtQ29udGV4dCk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnZm9ybURhdGFTdGF0ZTogJywgZm9ybURhdGFTdGF0ZS50b0pTKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIHN3aXRjaE1hcCgoW2Zvcm1Db250ZXh0LCBmb3JtRGF0YVN0YXRlXSkgPT4ge1xuICAgICAgICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICAgICAgICBjb25zdCB7IGFwaSwgbGFiZWxQYXRoLCB2YWx1ZVBhdGgsIGV4cHJlc3Npb24gfSA9XG4gICAgICAgICAgICBkeW5hbWljRXhwcmVzc2lvbi5vcHRpb25zO1xuICAgICAgICAgIGNvbnN0IHN0cmluZ0V4cHJlc3Npb25Db250ZXh0ID0gdGhpcy5nZXRTdHJpbmdFeHByZXNzaW9uQ29udGV4dChcbiAgICAgICAgICAgIGZvcm1Db250ZXh0LFxuICAgICAgICAgICAgZm9ybURhdGFTdGF0ZSxcbiAgICAgICAgICApO1xuICAgICAgICAgIGlmICghYXBpICYmIGV4cHJlc3Npb24pIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IGV2YWxJbkNvbnRleHQoZXhwcmVzc2lvbiwgc3RyaW5nRXhwcmVzc2lvbkNvbnRleHQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gc3RyaW5nRXhwcmVzc2lvbkNvbnRleHQuZmV0Y2hSZXNvdXJjZUxpc3QoXG4gICAgICAgICAgICAgIHRlbXBsYXRlKGFwaSkoc3RyaW5nRXhwcmVzc2lvbkNvbnRleHQpLFxuICAgICAgICAgICAgICAoaXRlbTogU3RyaW5nTWFwKSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBnZXQoaXRlbSwgdmFsdWVQYXRoLCAnJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiBnZXQoaXRlbSwgbGFiZWxQYXRoLCB2YWx1ZSksXG4gICAgICAgICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gaXNPYnNlcnZhYmxlKHJlc3VsdCkgPyByZXN1bHQgOiBvZihyZXN1bHQpO1xuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfSksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIGR5bmFtaWNEZWZhdWx0VmFsdWUkID0gdGhpcy5maWVsZCQucGlwZShcbiAgICBzd2l0Y2hNYXAoZmllbGQgPT4ge1xuICAgICAgY29uc3QgZGVmYXVsdFZhbHVlRXhwcmVzc2lvbiA9IG5ldyBQcm9wc0ZpZWxkRXhwcmVzc2lvbihmaWVsZClcbiAgICAgICAgLmV4cHJlc3Npb25zO1xuICAgICAgaWYgKFxuICAgICAgICAhZGVmYXVsdFZhbHVlRXhwcmVzc2lvbi5kZWZhdWx0IHx8XG4gICAgICAgIHRoaXMuZ2V0RmllbGRDdXJyZW50VmFsdWUoKSAhPT0gdW5kZWZpbmVkXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIG9mKHtcbiAgICAgICAgICB2YWx1ZTogdGhpcy5nZXRGaWVsZFZhbHVlKCksXG4gICAgICAgICAgaXNEeW5hbWljOiBmYWxzZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29tYmluZUxhdGVzdChbXG4gICAgICAgIHRoaXMuY3JkRm9ybS5mb3JtQ29udGV4dCQsXG4gICAgICAgIHRoaXMuZm9ybURhdGFTdGF0ZSQsXG4gICAgICBdKS5waXBlKFxuICAgICAgICBkaXN0aW5jdFVudGlsQ2hhbmdlZCgocCwgbikgPT5cbiAgICAgICAgICBjb21wYXJlV2l0aFN1YnNjcmliZWRQYXRocyhkZWZhdWx0VmFsdWVFeHByZXNzaW9uLCBwLCBuKSxcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKChbZm9ybUNvbnRleHQsIGZvcm1EYXRhU3RhdGVdKSA9PlxuICAgICAgICAgIHRlbXBsYXRlKGRlZmF1bHRWYWx1ZUV4cHJlc3Npb24uZGVmYXVsdCkoXG4gICAgICAgICAgICB0aGlzLmdldFN0cmluZ0V4cHJlc3Npb25Db250ZXh0KGZvcm1Db250ZXh0LCBmb3JtRGF0YVN0YXRlKSxcbiAgICAgICAgICApLFxuICAgICAgICApLFxuICAgICAgICBtYXAodmFsdWUgPT4gKHtcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICBpc0R5bmFtaWM6IHRydWUsXG4gICAgICAgIH0pKSxcbiAgICAgICk7XG4gICAgfSksXG4gICAgcHVibGlzaFJlZigpLFxuICApO1xuXG4gIGR5bmFtaWNIaWRkZW5WYWx1ZSQgPSB0aGlzLmZpZWxkJC5waXBlKFxuICAgIHN3aXRjaE1hcChmaWVsZCA9PiB7XG4gICAgICBjb25zdCB7IGV4cHJlc3Npb25zIH0gPSBuZXcgUHJvcHNGaWVsZEV4cHJlc3Npb24oZmllbGQpO1xuICAgICAgaWYgKCFleHByZXNzaW9ucy5oaWRkZW4pIHtcbiAgICAgICAgcmV0dXJuIG9mKGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtcbiAgICAgICAgdGhpcy5jcmRGb3JtLmZvcm1Db250ZXh0JCxcbiAgICAgICAgdGhpcy5mb3JtRGF0YVN0YXRlJCxcbiAgICAgIF0pLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKChwLCBuKSA9PlxuICAgICAgICAgIGNvbXBhcmVXaXRoU3Vic2NyaWJlZFBhdGhzKGV4cHJlc3Npb25zLCBwLCBuKSxcbiAgICAgICAgKSxcbiAgICAgICAgbWFwKFxuICAgICAgICAgIChbZm9ybUNvbnRleHQsIGZvcm1EYXRhU3RhdGVdKSA9PlxuICAgICAgICAgICAgdGVtcGxhdGUoZXhwcmVzc2lvbnMuaGlkZGVuKShcbiAgICAgICAgICAgICAgdGhpcy5nZXRTdHJpbmdFeHByZXNzaW9uQ29udGV4dChmb3JtQ29udGV4dCwgZm9ybURhdGFTdGF0ZSksXG4gICAgICAgICAgICApID09PSAndHJ1ZScsXG4gICAgICAgICksXG4gICAgICApO1xuICAgIH0pLFxuICApO1xuXG4gIGdldFN0cmluZ0V4cHJlc3Npb25Db250ZXh0ID0gKFxuICAgIGZvcm1Db250ZXh0OiBhbnksXG4gICAgZm9ybURhdGFTdGF0ZTogRm9ybURhdGFTdGF0ZSxcbiAgKSA9PiAoe1xuICAgIGZldGNoUmVzb3VyY2VMaXN0OiB0aGlzLmZldGNoUmVzb3VyY2VMaXN0LFxuICAgIGNvbnRleHQ6IGZvcm1Db250ZXh0IHx8IHt9LFxuICAgIGZvcm1EYXRhOiBmb3JtRGF0YVN0YXRlLnRvSlMoKT8uc3BlYyB8fCB7fSxcbiAgfSk7XG5cbiAgZmV0Y2hSZXNvdXJjZUxpc3QgPSAoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgY2FsbGJhY2s6IChyZXNvdXJjZTogS3ViZXJuZXRlc1Jlc291cmNlKSA9PiB2b2lkLFxuICApID0+IHtcbiAgICAvLyDkvovlpoIgJy9rdWJlcm5ldGVzL2dsb2JhbC9hcGkvdjEvbmFtZXNwYWNlcy8vc2VjcmV0cycg6KGo56S6IGZvcm1EYXRhLm5hbWVzcGFjZSDmsqHmnInmj5LlgLxcbiAgICBpZiAodXJsLmluY2x1ZGVzKCcvLycpKSB7XG4gICAgICByZXR1cm4gb2YoW10pO1xuICAgIH1cbiAgICB0aGlzLmxvYWRpbmckLm5leHQodHJ1ZSk7XG4gICAgcmV0dXJuIHRoaXMuaHR0cFxuICAgICAgLmdldDx7IGl0ZW1zOiBLdWJlcm5ldGVzUmVzb3VyY2VbXSB9PihgJHtBUElfR0FURVdBWX0ke3VybH1gKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcChyZXMgPT4gcmVzLml0ZW1zLm1hcChpdGVtID0+IGNhbGxiYWNrLmNhbGwodGhpcywgaXRlbSkpKSxcbiAgICAgICAgc2tpcEVycm9yKFtdKSxcbiAgICAgICAgZmluYWxpemUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMubG9hZGluZyQubmV4dChmYWxzZSk7XG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgfTtcbn1cbiIsIjxuZy1jb250YWluZXIgKm5nSWY9XCJmaWVsZFwiPlxuICA8bmctY29udGFpbmVyXG4gICAgKm5nSWY9XCJ7XG4gICAgICBmaWVsZFR5cGU6IGZpZWxkIHwgcHVyZTogZ2V0RmllbGRUeXBlLFxuICAgICAgaXNCYXNpY1R5cGVGaWVsZDogZmllbGQgfCBwdXJlOiBpc0Jhc2ljVHlwZUZpZWxkXG4gICAgfSBhcyBtZXRhXCJcbiAgPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJtZXRhLmlzQmFzaWNUeXBlRmllbGQ7IGVsc2UgYWR2YW5jZWRGaWxlZFwiPlxuICAgICAgPGFjbC1jcmQtZm9ybS1pdGVtXG4gICAgICAgICpuZ0lmPVwiXG4gICAgICAgICAgIShmaWVsZC5jYXBhYmlsaXRpZXMgfCBwdXJlOiBnZXRXaWRnZXRzKSAmJlxuICAgICAgICAgICEoZmllbGQgfCBwdXJlOiBpc1JlbW90ZUZpZWxkKVxuICAgICAgICBcIlxuICAgICAgICBbbmdTd2l0Y2hdPVwibWV0YS5maWVsZFR5cGVcIlxuICAgICAgPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiU3BlY0NhcGFiaWxpdHkubnVtYmVyXCJcbiAgICAgICAgICB0eXBlPVwibnVtYmVyXCJcbiAgICAgICAgICBhdWktaW5wdXRcbiAgICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgIFthY2xSZWFkb25seUZpZWxkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAgIGZpZWxkLmNhcGFiaWxpdGllc1xuICAgICAgICAgICAgICB8IHB1cmU6IGdldERpc3BsYXlCeUNhcGFiaWxpdHk6U3BlY0NhcGFiaWxpdHkucGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICBcIlxuICAgICAgICAvPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJTcGVjQ2FwYWJpbGl0eS5ib29sZWFuU3dpdGNoXCI+XG4gICAgICAgICAgPGF1aS1zd2l0Y2hcbiAgICAgICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICAgICAgW2FjbFJlYWRvbmx5RmllbGRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICBbYWNsUmVhZG9ubHlGaWVsZFRlbXBsYXRlXT1cInN3aXRjaFJlYWRvbmx5XCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICA+PC9hdWktc3dpdGNoPlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjc3dpdGNoUmVhZG9ubHk+e3tcbiAgICAgICAgICAgIChjb250cm9sLnZhbHVlIHwgcHVyZTogY29udmVydEJvb2xlYW5Td2l0Y2hWYWx1ZTogZmllbGQuY2FwYWJpbGl0aWVzKSB8IHRyYW5zbGF0ZVxuICAgICAgICAgIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIlNwZWNDYXBhYmlsaXR5LnNlbGVjdFwiPlxuICAgICAgICAgIDxhdWktbXVsdGktc2VsZWN0XG4gICAgICAgICAgICAqbmdJZj1cImlzTXVsdGlwbGVcIlxuICAgICAgICAgICAgW21heFJvd0NvdW50XT1cIjNcIlxuICAgICAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgICAgICBbY2xlYXJhYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgW2ZpbHRlcmFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiXG4gICAgICAgICAgICBbYWNsUmVhZG9ubHlGaWVsZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICAgIFtsb2FkaW5nXT1cImxvYWRpbmckIHwgYXN5bmNcIlxuICAgICAgICAgICAgW2FsbG93Q3JlYXRlXT1cImlzQWxsb3dDcmVhdGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhdWktb3B0aW9uXG4gICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBvcHRpb24gb2YgZHluYW1pY09wdGlvbnMkIHwgYXN5bmNcIlxuICAgICAgICAgICAgICBbdmFsdWVdPVwib3B0aW9uLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2xhYmVsXT1cIm9wdGlvbi5sYWJlbFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxuICAgICAgICAgICAgPC9hdWktb3B0aW9uPlxuICAgICAgICAgICAgPGF1aS1vcHRpb24tcGxhY2Vob2xkZXI+e3tcbiAgICAgICAgICAgICAgJ25vX2RhdGEnIHwgdHJhbnNsYXRlXG4gICAgICAgICAgICB9fTwvYXVpLW9wdGlvbi1wbGFjZWhvbGRlcj5cbiAgICAgICAgICA8L2F1aS1tdWx0aS1zZWxlY3Q+XG5cbiAgICAgICAgICA8YXVpLXNlbGVjdFxuICAgICAgICAgICAgKm5nSWY9XCIhaXNNdWx0aXBsZVwiXG4gICAgICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgICAgIFtjbGVhcmFibGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbZmlsdGVyYWJsZV09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpc1JlcXVpcmVkXCJcbiAgICAgICAgICAgIFthY2xSZWFkb25seUZpZWxkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgICAgICAgW2xvYWRpbmddPVwibG9hZGluZyQgfCBhc3luY1wiXG4gICAgICAgICAgICBbYWxsb3dDcmVhdGVdPVwiaXNBbGxvd0NyZWF0ZVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPGF1aS1vcHRpb25cbiAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBkeW5hbWljT3B0aW9ucyQgfCBhc3luY1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgICBbbGFiZWxdPVwib3B0aW9uLmxhYmVsIHwgYWNsUGFyc2VKc29uVHJhbnNsYXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAge3sgb3B0aW9uLmxhYmVsIHwgYWNsUGFyc2VKc29uVHJhbnNsYXRlIH19XG4gICAgICAgICAgICA8L2F1aS1vcHRpb24+XG4gICAgICAgICAgICA8YXVpLW9wdGlvbi1wbGFjZWhvbGRlcj57e1xuICAgICAgICAgICAgICAnbm9fZGF0YScgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgIH19PC9hdWktb3B0aW9uLXBsYWNlaG9sZGVyPlxuICAgICAgICAgIDwvYXVpLXNlbGVjdD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxhdWktcmFkaW8tZ3JvdXBcbiAgICAgICAgICAqbmdTd2l0Y2hDYXNlPVwiU3BlY0NhcGFiaWxpdHkucmFkaW9cIlxuICAgICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiXG4gICAgICAgICAgW2FjbFJlYWRvbmx5RmllbGRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgW2FjbFJlYWRvbmx5RmllbGRUZW1wbGF0ZV09XCJyYWRpb0xhYmVsXCJcbiAgICAgICAgPlxuICAgICAgICAgIDxuZy1jb250YWluZXI+XG4gICAgICAgICAgICA8YXVpLXJhZGlvLWJ1dHRvblxuICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgb3B0aW9uIG9mIGZpZWxkLmNhcGFiaWxpdGllcyB8IHB1cmU6IGdldFJhZGlvT3B0aW9uc1wiXG4gICAgICAgICAgICAgIFt2YWx1ZV09XCJvcHRpb24udmFsdWVcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7eyBvcHRpb24uZGlzcGxheSB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgPC9hdWktcmFkaW8tYnV0dG9uPlxuICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNyYWRpb0xhYmVsPlxuICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgIGNvbnRyb2wudmFsdWVcbiAgICAgICAgICAgICAgICAgIHwgcHVyZVxuICAgICAgICAgICAgICAgICAgICA6IGdldE9wdGlvbkRpc3BsYXlcbiAgICAgICAgICAgICAgICAgICAgOiAoZmllbGQuY2FwYWJpbGl0aWVzIHwgcHVyZTogZ2V0UmFkaW9PcHRpb25zKVxuICAgICAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYXVpLXJhZGlvLWdyb3VwPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJTcGVjQ2FwYWJpbGl0eS5yZXNvdXJjZVJlcXVpcmVtZW50c1wiPlxuICAgICAgICAgIDxhY2wtY3JkLXJlc291cmNlLXJlcXVpcmVtZW50c1xuICAgICAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgICBbYWNsUmVhZG9ubHlGaWVsZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICAgIFthY2xSZWFkb25seUZpZWxkVGVtcGxhdGVdPVwicmVzb3VyY2VSZXF1aXJlbWVudHNSZWFkb25seVwiXG4gICAgICAgICAgPjwvYWNsLWNyZC1yZXNvdXJjZS1yZXF1aXJlbWVudHM+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNyZXNvdXJjZVJlcXVpcmVtZW50c1JlYWRvbmx5PlxuICAgICAgICAgICAgPGFjbC1jcmQtcmVzb3VyY2UtcmVxdWlyZW1lbnRzXG4gICAgICAgICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJjb250cm9sLnZhbHVlXCJcbiAgICAgICAgICAgICAgW3JlYWRPbmx5XT1cInRydWVcIlxuICAgICAgICAgICAgPjwvYWNsLWNyZC1yZXNvdXJjZS1yZXF1aXJlbWVudHM+XG4gICAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nU3dpdGNoQ2FzZT1cIlNwZWNDYXBhYmlsaXR5LnlhbWxcIj5cbiAgICAgICAgICA8YWNsLWNyZC15YW1sLWVkaXRvclxuICAgICAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiXG4gICAgICAgICAgICBbYWN0aW9uc0NvbmZpZ109XCJlZGl0b3JBY3Rpb25zXCJcbiAgICAgICAgICAgIFtvcHRpb25zXT1cImVkaXRvck9wdGlvbnNcIlxuICAgICAgICAgICAgW2FjbFJlYWRvbmx5RmllbGRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICBbYWNsUmVhZG9ubHlGaWVsZFRlbXBsYXRlXT1cInlhbWxSZWFkb25seVwiXG4gICAgICAgICAgPjwvYWNsLWNyZC15YW1sLWVkaXRvcj5cbiAgICAgICAgICA8bmctdGVtcGxhdGUgI3lhbWxSZWFkb25seT5cbiAgICAgICAgICAgIDxhY2wtY3JkLXlhbWwtZWRpdG9yXG4gICAgICAgICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICAgICAgICBbbmdNb2RlbF09XCJjb250cm9sLnZhbHVlXCJcbiAgICAgICAgICAgICAgW2FjdGlvbnNDb25maWddPVwidmlld0FjdGlvbnNcIlxuICAgICAgICAgICAgICBbb3B0aW9uc109XCJ2aWV3T3B0aW9uc1wiXG4gICAgICAgICAgICA+PC9hY2wtY3JkLXlhbWwtZWRpdG9yPlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJTcGVjQ2FwYWJpbGl0eS5rOHNSZXNvdXJjZVByZWZpeFwiPlxuICAgICAgICAgIDxhY2wtY3JkLXJlc291cmNlLXByZWZpeFxuICAgICAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgICAgICBbZm9ybUVycm9yc109XCJjb250cm9sLmVycm9yc1wiXG4gICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cImlzUmVxdWlyZWRcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgICAgW2FjbFJlYWRvbmx5RmllbGRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgICBbYWNsUmVhZG9ubHlGaWVsZFRlbXBsYXRlXT1cInJlc291cmNlUHJlZml4UmVhZG9ubHlcIlxuICAgICAgICAgID48L2FjbC1jcmQtcmVzb3VyY2UtcHJlZml4PlxuICAgICAgICAgIDxuZy10ZW1wbGF0ZSAjcmVzb3VyY2VQcmVmaXhSZWFkb25seT5cbiAgICAgICAgICAgIDxhY2wtY3JkLXJlc291cmNlLXByZWZpeFxuICAgICAgICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgICAgICAgW2ZpZWxkXT1cImZpZWxkXCJcbiAgICAgICAgICAgICAgW25nTW9kZWxdPVwiY29udHJvbC52YWx1ZVwiXG4gICAgICAgICAgICAgIFtyZWFkb25seV09XCJ0cnVlXCJcbiAgICAgICAgICAgID48L2FjbC1jcmQtcmVzb3VyY2UtcHJlZml4PlxuICAgICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1N3aXRjaENhc2U9XCJTcGVjQ2FwYWJpbGl0eS5iYXNpY0F1dGhTZWNyZXRcIj5cbiAgICAgICAgICA8YWNsLWNyZC1iYXNpYy1hdXRoLXNlY3JldFxuICAgICAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgICAgICBbZmllbGRdPVwiZmllbGRcIlxuICAgICAgICAgICAgW3JlcXVpcmVkXT1cImlzUmVxdWlyZWRcIlxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgICAgW2FjbFJlYWRvbmx5RmllbGRdPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgPjwvYWNsLWNyZC1iYXNpYy1hdXRoLXNlY3JldD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJTcGVjQ2FwYWJpbGl0eS50ZXh0YXJlYVwiXG4gICAgICAgICAgYXVpRm9ybUl0ZW1Db250cm9sXG4gICAgICAgICAgYXVpLWlucHV0XG4gICAgICAgICAgW3JlcXVpcmVkXT1cImlzUmVxdWlyZWRcIlxuICAgICAgICAgIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCJcbiAgICAgICAgICBbYWNsUmVhZG9ubHlGaWVsZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwiXG4gICAgICAgICAgICBmaWVsZC5jYXBhYmlsaXRpZXNcbiAgICAgICAgICAgICAgfCBwdXJlOiBnZXREaXNwbGF5QnlDYXBhYmlsaXR5OlNwZWNDYXBhYmlsaXR5LnBsYWNlaG9sZGVyXG4gICAgICAgICAgICAgIHwgdHJhbnNsYXRlXG4gICAgICAgICAgXCJcbiAgICAgICAgPjwvdGV4dGFyZWE+XG4gICAgICAgIDxhdWktdGFncy1pbnB1dFxuICAgICAgICAgICpuZ1N3aXRjaENhc2U9XCJTcGVjQ2FwYWJpbGl0eS50YWdzSW5wdXRcIlxuICAgICAgICAgIGF1aUZvcm1JdGVtQ29udHJvbFxuICAgICAgICAgIGNsYXNzPVwidHctZmxleC0xXCJcbiAgICAgICAgICBbcmVxdWlyZWRdPVwiaXNSZXF1aXJlZFwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJcbiAgICAgICAgICAgIGZpZWxkLmNhcGFiaWxpdGllc1xuICAgICAgICAgICAgICB8IHB1cmU6IGdldERpc3BsYXlCeUNhcGFiaWxpdHk6U3BlY0NhcGFiaWxpdHkucGxhY2Vob2xkZXJcbiAgICAgICAgICAgICAgfCB0cmFuc2xhdGVcbiAgICAgICAgICBcIlxuICAgICAgICAgIFthY2xSZWFkb25seUZpZWxkXT1cImlzRGlzYWJsZWRcIlxuICAgICAgICAgIFtjbGVhcmFibGVdPVwiaXNDbGVhcmFibGVcIlxuICAgICAgICA+PC9hdWktdGFncy1pbnB1dD5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdTd2l0Y2hEZWZhdWx0PlxuICAgICAgICAgIDxhY2wtY3JkLWxpbmtcbiAgICAgICAgICAgICpuZ0lmPVwiKGZpZWxkIHwgcHVyZTogaXNMaW5rKSAmJiBpc0Rpc2FibGVkOyBlbHNlIHRleHRGaWVsZFwiXG4gICAgICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgICAgIFtmaWVsZF09XCJmaWVsZFwiXG4gICAgICAgICAgICBbZm9ybUNvbnRyb2xdPVwiY29udHJvbFwiXG4gICAgICAgICAgPjwvYWNsLWNyZC1saW5rPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPG5nLXRlbXBsYXRlICN0ZXh0RmllbGQ+XG4gICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICBhdWlGb3JtSXRlbUNvbnRyb2xcbiAgICAgICAgICAgIFtyZXF1aXJlZF09XCJpc1JlcXVpcmVkXCJcbiAgICAgICAgICAgIGF1aS1pbnB1dFxuICAgICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgZmllbGQuY2FwYWJpbGl0aWVzXG4gICAgICAgICAgICAgIHwgcHVyZTogZ2V0RGlzcGxheUJ5Q2FwYWJpbGl0eTpTcGVjQ2FwYWJpbGl0eS5wbGFjZWhvbGRlclxuICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgIFwiXG4gICAgICAgICAgICBbYWNsUmVhZG9ubHlGaWVsZF09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICAvPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgICAgPC9hY2wtY3JkLWZvcm0taXRlbT5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ0dy1mbGV4IHR3LXctZnVsbCB0dy1mbGV4LWNvbFwiXG4gICAgICAgICpuZ0lmPVwiZmllbGQuY2FwYWJpbGl0aWVzIHwgcHVyZTogZ2V0V2lkZ2V0cyBhcyB3aWRnZXRcIlxuICAgICAgPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0NvbXBvbmVudE91dGxldD1cIndpZGdldC5jb21wb25lbnRcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvZGl2PlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImZpZWxkIHwgcHVyZTogaXNSZW1vdGVGaWVsZFwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwicmVtb3RlTW9kdWxlJCB8IGFzeW5jIGFzIHJlbW90ZU1vZHVsZVwiPlxuICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICpuZ0lmPVwiZmllbGQgfCBwdXJlOiBnZXRGaWVsZERpc3BsYXlOYW1lIGFzIGxhYmVsOyBlbHNlIHB1cmVSZW1vdGVcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxhdWktZm9ybS1pdGVtIFtlbXB0eUFkZG9uXT1cImZhbHNlXCI+XG4gICAgICAgICAgICAgIDxsYWJlbFxuICAgICAgICAgICAgICAgIGF1aUZvcm1JdGVtTGFiZWxcbiAgICAgICAgICAgICAgICAqbmdJZj1cImZpZWxkIHwgcHVyZTogZ2V0RmllbGREaXNwbGF5TmFtZSBhcyBsYWJlbFwiXG4gICAgICAgICAgICAgICAgPnt7IGxhYmVsIHwgdHJhbnNsYXRlIH19PC9sYWJlbFxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAqbmdDb21wb25lbnRPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICAgIHJlbW90ZU1vZHVsZS5jb21wb25lbnQ7XG4gICAgICAgICAgICAgICAgICBpbmplY3RvcjogcmVtb3RlTW9kdWxlLmluamVjdG9yXG4gICAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICA8ZGl2IGF1aUZvcm1JdGVtSGludD5cbiAgICAgICAgICAgICAgICB7eyBmaWVsZCB8IHB1cmU6IGdldEZpZWxkRGVzY3JpcHRpb24gfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2F1aS1mb3JtLWl0ZW0+XG4gICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgPG5nLXRlbXBsYXRlICNwdXJlUmVtb3RlPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAqbmdDb21wb25lbnRPdXRsZXQ9XCJcbiAgICAgICAgICAgICAgICByZW1vdGVNb2R1bGUuY29tcG9uZW50O1xuICAgICAgICAgICAgICAgIGluamVjdG9yOiByZW1vdGVNb2R1bGUuaW5qZWN0b3JcbiAgICAgICAgICAgICAgXCJcbiAgICAgICAgICAgID48L25nLWNvbnRhaW5lclxuICAgICAgICAgID48L25nLXRlbXBsYXRlPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjYWR2YW5jZWRGaWxlZD5cbiAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgKm5nSWY9XCJcbiAgICAgICAgICBtZXRhLmZpZWxkVHlwZSA9PT0gU3BlY0NhcGFiaWxpdHkucGFzc3dvcmQgfHxcbiAgICAgICAgICBtZXRhLmZpZWxkVHlwZSA9PT0gU3BlY0NhcGFiaWxpdHkuY29uZmlybVBhc3N3b3JkIHx8XG4gICAgICAgICAgbWV0YS5maWVsZFR5cGUgPT09IFNwZWNDYXBhYmlsaXR5LmV4dGVybmFsUGFzc3dvcmRcbiAgICAgICAgXCJcbiAgICAgID5cbiAgICAgICAgPGFjbC1jcmQtZm9ybS1pdGVtXG4gICAgICAgICAgKm5nSWY9XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICBbcGxhaW5dPVwidHJ1ZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwicGFzc3dvcmRWaWV3XCI+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvYWNsLWNyZC1mb3JtLWl0ZW0+XG4gICAgICAgIDxhY2wtcGFzc3dvcmQtaW5wdXRcbiAgICAgICAgICAqbmdJZj1cIiFpc0Rpc2FibGVkXCJcbiAgICAgICAgICBbaW5pdFBhc3N3b3JkXT1cImNvbnRyb2wudmFsdWVcIlxuICAgICAgICAgIFtsYWJlbF09XCJmaWVsZCB8IHB1cmU6IGdldEZpZWxkRGlzcGxheU5hbWUgfCB0cmFuc2xhdGVcIlxuICAgICAgICAgIFtoaW50XT1cIlxuICAgICAgICAgICAgY3VzdG9tRGVzY3JpcHRpb24/LnRlbXBsYXRlUmVmIHx8XG4gICAgICAgICAgICAoZmllbGQgfCBwdXJlOiBnZXRGaWVsZERlc2NyaXB0aW9uIHwgdHJhbnNsYXRlKVxuICAgICAgICAgIFwiXG4gICAgICAgICAgW2Zvcm1Db250cm9sXT1cImNvbnRyb2xcIlxuICAgICAgICAgIFtyZXF1aXJlZF09XCJpc1JlcXVpcmVkXCJcbiAgICAgICAgICBbcmVhZG9ubHldPVwiY3JkRm9ybS5yZWFkb25seVwiXG4gICAgICAgICAgW2lzVXBkYXRlXT1cIiEhY29udHJvbC52YWx1ZSAmJiAhY29udHJvbC5kaXJ0eVwiXG4gICAgICAgICAgW3N0cm9uZ1Bhc3N3b3JkXT1cIm1ldGEuZmllbGRUeXBlICE9PSBTcGVjQ2FwYWJpbGl0eS5leHRlcm5hbFBhc3N3b3JkXCJcbiAgICAgICAgICBbZW5hYmxlQ29uZmlybV09XCJtZXRhLmZpZWxkVHlwZSA9PT0gU3BlY0NhcGFiaWxpdHkuY29uZmlybVBhc3N3b3JkXCJcbiAgICAgICAgICB3aWR0aD1cImxhcmdlXCJcbiAgICAgICAgICBbZW5jb2RpbmddPVwiZmllbGQgfCBwdXJlOiBnZXRFbmNvZGluZzoncGFzc3dvcmQnXCJcbiAgICAgICAgICBbcGF0dGVybl09XCJmaWVsZC52YWxpZGF0aW9ucz8ucGF0dGVyblwiXG4gICAgICAgICAgW3BsYWNlaG9sZGVyXT1cIlxuICAgICAgICAgICAgZmllbGQuY2FwYWJpbGl0aWVzXG4gICAgICAgICAgICAgIHwgcHVyZTogZ2V0RGlzcGxheUJ5Q2FwYWJpbGl0eTpTcGVjQ2FwYWJpbGl0eS5wbGFjZWhvbGRlclxuICAgICAgICAgICAgICB8IHRyYW5zbGF0ZVxuICAgICAgICAgIFwiXG4gICAgICAgID48L2FjbC1wYXNzd29yZC1pbnB1dD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPCEtLSBncm91cCBmaWVsZCAgLS0+XG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiaXNHcm91cEZpZWxkKGZpZWxkKSAmJiBmaWVsZC5maWVsZExpc3Q/Lmxlbmd0aCA+IDBcIj5cbiAgICAgICAgPGFjbC1vcGVyYW5kLWZpZWxkLWdyb3VwXG4gICAgICAgICAgW2ZpZWxkc109XCJmaWVsZHNcIlxuICAgICAgICAgIFtmaWVsZEdyb3VwXT1cImZpZWxkXCJcbiAgICAgICAgICBbcmVhZG9ubHldPVwiaXNEaXNhYmxlZFwiXG4gICAgICAgICAgW2Zvcm1EYXRhU3RhdGVdPVwiZm9ybURhdGFTdGF0ZVwiXG4gICAgICAgICAgW2Zvcm1FcnJvcnNdPVwiZm9ybUVycm9yc1wiXG4gICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgID5cbiAgICAgICAgPC9hY2wtb3BlcmFuZC1maWVsZC1ncm91cD5cbiAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgPCEtLSBhcnJheSBmaWVsZCBncm91cHMgLS0+XG4gICAgICA8IS0tIGFycmF5IGZpZWxkIHRhYmxlIC0tPlxuICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImlzQXJyYXlGaWVsZChmaWVsZClcIj5cbiAgICAgICAgPGFjbC1jcmQtYXJyYXktdGFibGVcbiAgICAgICAgICAqbmdJZj1cImZpZWxkIHwgcHVyZTogaXNBcnJheUZpZWxkVGFibGU7IGVsc2UgZGVmYXVsdEFycmF5RmlsZWRcIlxuICAgICAgICAgIFthcnJheUZpZWxkR3JvdXBdPVwiZmllbGRcIlxuICAgICAgICAgIFtmb3JtRGF0YVN0YXRlXT1cImZvcm1EYXRhU3RhdGVcIlxuICAgICAgICAgIFtyZWFkb25seV09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICAodmFsdWVDaGFuZ2UpPVwidmFsdWVDaGFuZ2UuZW1pdCgkZXZlbnQpXCJcbiAgICAgICAgPlxuICAgICAgICA8L2FjbC1jcmQtYXJyYXktdGFibGU+XG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjZGVmYXVsdEFycmF5RmlsZWQ+XG4gICAgICAgICAgPGFjbC1vcGVyYW5kLWFycmF5LWZpZWxkLWdyb3VwXG4gICAgICAgICAgICBbYXJyYXlGaWVsZEdyb3VwXT1cImZpZWxkXCJcbiAgICAgICAgICAgIFtyZWFkb25seV09XCJpc0Rpc2FibGVkXCJcbiAgICAgICAgICAgIFtmb3JtRGF0YVN0YXRlXT1cImZvcm1EYXRhU3RhdGVcIlxuICAgICAgICAgICAgKHZhbHVlQ2hhbmdlKT1cInZhbHVlQ2hhbmdlLmVtaXQoJGV2ZW50KVwiXG4gICAgICAgICAgPlxuICAgICAgICAgIDwvYWNsLW9wZXJhbmQtYXJyYXktZmllbGQtZ3JvdXA+XG4gICAgICAgIDwvbmctdGVtcGxhdGU+XG4gICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L25nLWNvbnRhaW5lcj5cbjwvbmctY29udGFpbmVyPlxuXG48bmctdGVtcGxhdGUgI3Bhc3N3b3JkVmlldz5cbiAge3sgUEFTU1dPUkRfUkVWRUFMIH19XG48L25nLXRlbXBsYXRlPlxuIl19
@@ -100,11 +100,11 @@ export declare class OperandFieldComponent implements OnInit, OnDestroy, OnChang
100
100
  }>;
101
101
  dynamicHiddenValue$: Observable<boolean>;
102
102
  getStringExpressionContext: (formContext: any, formDataState: FormDataState) => {
103
- fetchResourceList: (url: string, callback: (resource: KubernetesResource) => void) => Observable<any[] | void[]>;
103
+ fetchResourceList: (url: string, callback: (resource: KubernetesResource) => void) => Observable<any[]>;
104
104
  context: any;
105
105
  formData: any;
106
106
  };
107
- fetchResourceList: (url: string, callback: (resource: KubernetesResource) => void) => Observable<any[] | void[]>;
107
+ fetchResourceList: (url: string, callback: (resource: KubernetesResource) => void) => Observable<any[]>;
108
108
  static ɵfac: i0.ɵɵFactoryDeclaration<OperandFieldComponent, never>;
109
109
  static ɵcmp: i0.ɵɵComponentDeclaration<OperandFieldComponent, "acl-operand-field", never, { "field": { "alias": "field"; "required": false; }; "remoteModuleDefinition": { "alias": "remoteModuleDefinition"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "fields": { "alias": "fields"; "required": false; }; "formDataState": { "alias": "formDataState"; "required": false; }; "formErrors": { "alias": "formErrors"; "required": false; }; "customDescription": { "alias": "customDescription"; "required": false; }; }, { "valueChange": "valueChange"; "itemRemove": "itemRemove"; }, never, never, false, never>;
110
110
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alauda-fe/crd-form",
3
- "version": "0.0.1",
3
+ "version": "0.0.2",
4
4
  "peerDependencies": {
5
5
  "@alauda-fe/i18n": "1.0.3",
6
6
  "@angular/common": "^13.2.0",