@hmcts/ccd-case-ui-toolkit 5.0.44-angular11-updgrade-welsh-release-v4 → 5.0.44-angular11-welsh-release-part1-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.
Files changed (34) hide show
  1. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js +139 -99
  2. package/bundles/hmcts-ccd-case-ui-toolkit.umd.js.map +1 -1
  3. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js +1 -1
  4. package/bundles/hmcts-ccd-case-ui-toolkit.umd.min.js.map +1 -1
  5. package/esm2015/lib/app.config.js +1 -1
  6. package/esm2015/lib/components/tabs/tabs.component.js +2 -1
  7. package/esm2015/lib/shared/components/palette/base-field/field-write.component.js +2 -1
  8. package/esm2015/lib/shared/components/palette/case-flag/components/case-flag-summary-list/case-flag-summary-list.component.js +31 -25
  9. package/esm2015/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.js +6 -1
  10. package/esm2015/lib/shared/components/palette/case-flag/read-case-flag-field.component.js +18 -12
  11. package/esm2015/lib/shared/components/palette/dynamic-list/read-dynamic-list-field.component.js +9 -7
  12. package/esm2015/lib/shared/components/palette/dynamic-list/write-dynamic-list-field.component.js +11 -7
  13. package/esm2015/lib/shared/components/palette/dynamic-radio-list/read-dynamic-radio-list-field.component.js +9 -7
  14. package/esm2015/lib/shared/components/palette/fixed-list/read-fixed-list-field.component.js +9 -7
  15. package/esm2015/lib/shared/components/palette/fixed-list/write-fixed-list-field.component.js +4 -3
  16. package/esm2015/lib/shared/components/palette/fixed-radio-list/read-fixed-radio-list-field.component.js +9 -7
  17. package/esm2015/lib/shared/components/palette/palette.module.js +6 -6
  18. package/esm2015/lib/shared/components/palette/text/read-text-field.component.js +7 -5
  19. package/esm2015/lib/shared/components/palette/text-area/read-text-area-field.component.js +7 -5
  20. package/esm2015/lib/shared/components/palette/yes-no/read-yes-no-field.component.js +7 -5
  21. package/esm2015/lib/shared/components/search-filters/search-filters.component.js +1 -1
  22. package/esm2015/lib/shared/components/search-result/search-result.component.js +17 -15
  23. package/esm2015/lib/shared/components/workbasket-filters/workbasket-filters.component.js +7 -5
  24. package/esm2015/lib/shared/services/request/request.options.builder.js +7 -1
  25. package/esm2015/lib/shared/services/window/window.service.js +1 -1
  26. package/fesm2015/hmcts-ccd-case-ui-toolkit.js +136 -96
  27. package/fesm2015/hmcts-ccd-case-ui-toolkit.js.map +1 -1
  28. package/lib/app.config.d.ts.map +1 -1
  29. package/lib/components/tabs/tabs.component.d.ts.map +1 -1
  30. package/lib/shared/components/palette/base-field/field-write.component.d.ts.map +1 -1
  31. package/lib/shared/components/palette/case-flag/components/manage-case-flags/manage-case-flags.component.d.ts.map +1 -1
  32. package/lib/shared/services/request/request.options.builder.d.ts.map +1 -1
  33. package/lib/shared/services/window/window.service.d.ts.map +1 -1
  34. package/package.json +1 -1
@@ -42,22 +42,24 @@ function WorkbasketFiltersComponent_option_16_Template(rf, ctx) { if (rf & 1) {
42
42
  function WorkbasketFiltersComponent_option_17_Template(rf, ctx) { if (rf & 1) {
43
43
  i0.ɵɵelementStart(0, "option", 11);
44
44
  i0.ɵɵtext(1);
45
+ i0.ɵɵpipe(2, "rpxTranslate");
45
46
  i0.ɵɵelementEnd();
46
47
  } if (rf & 2) {
47
48
  const ct_r7 = ctx.$implicit;
48
49
  i0.ɵɵproperty("ngValue", ct_r7);
49
50
  i0.ɵɵadvance(1);
50
- i0.ɵɵtextInterpolate(ct_r7.name);
51
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 2, ct_r7.name));
51
52
  } }
52
53
  function WorkbasketFiltersComponent_option_25_Template(rf, ctx) { if (rf & 1) {
53
54
  i0.ɵɵelementStart(0, "option", 11);
54
55
  i0.ɵɵtext(1);
56
+ i0.ɵɵpipe(2, "rpxTranslate");
55
57
  i0.ɵɵelementEnd();
56
58
  } if (rf & 2) {
57
59
  const cs_r8 = ctx.$implicit;
58
60
  i0.ɵɵproperty("ngValue", cs_r8);
59
61
  i0.ɵɵadvance(1);
60
- i0.ɵɵtextInterpolate(cs_r8.name);
62
+ i0.ɵɵtextInterpolate(i0.ɵɵpipeBind1(2, 2, cs_r8.name));
61
63
  } }
62
64
  function WorkbasketFiltersComponent_ng_container_26_div_2_Template(rf, ctx) { if (rf & 1) {
63
65
  const _r12 = i0.ɵɵgetCurrentView();
@@ -378,7 +380,7 @@ WorkbasketFiltersComponent.ɵcmp = i0.ɵɵdefineComponent({ type: WorkbasketFilt
378
380
  i0.ɵɵelementStart(15, "select", 8);
379
381
  i0.ɵɵlistener("ngModelChange", function WorkbasketFiltersComponent_Template_select_ngModelChange_15_listener($event) { return ctx.selected.caseType = $event; })("change", function WorkbasketFiltersComponent_Template_select_change_15_listener() { return ctx.onCaseTypeIdChange(); });
380
382
  i0.ɵɵtemplate(16, WorkbasketFiltersComponent_option_16_Template, 2, 1, "option", 5);
381
- i0.ɵɵtemplate(17, WorkbasketFiltersComponent_option_17_Template, 2, 2, "option", 6);
383
+ i0.ɵɵtemplate(17, WorkbasketFiltersComponent_option_17_Template, 3, 4, "option", 6);
382
384
  i0.ɵɵelementEnd();
383
385
  i0.ɵɵelementEnd();
384
386
  i0.ɵɵelementStart(18, "div", 2);
@@ -391,7 +393,7 @@ WorkbasketFiltersComponent.ɵcmp = i0.ɵɵdefineComponent({ type: WorkbasketFilt
391
393
  i0.ɵɵelementStart(23, "option", 11);
392
394
  i0.ɵɵtext(24, "Any");
393
395
  i0.ɵɵelementEnd();
394
- i0.ɵɵtemplate(25, WorkbasketFiltersComponent_option_25_Template, 2, 2, "option", 6);
396
+ i0.ɵɵtemplate(25, WorkbasketFiltersComponent_option_25_Template, 3, 4, "option", 6);
395
397
  i0.ɵɵelementEnd();
396
398
  i0.ɵɵelementEnd();
397
399
  i0.ɵɵtemplate(26, WorkbasketFiltersComponent_ng_container_26_Template, 3, 3, "ng-container", 12);
@@ -459,4 +461,4 @@ WorkbasketFiltersComponent.ɵcmp = i0.ɵɵdefineComponent({ type: WorkbasketFilt
459
461
  }], onReset: [{
460
462
  type: Output
461
463
  }] }); })();
462
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Jhc2tldC1maWx0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy93b3JrYmFza2V0LWZpbHRlcnMvd29ya2Jhc2tldC1maWx0ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy93b3JrYmFza2V0LWZpbHRlcnMvd29ya2Jhc2tldC1maWx0ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQTBCLE1BQU0saUJBQWlCLENBQUM7QUFDekUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTXRDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQzs7Ozs7Ozs7O0lDTm5HLGtDQUFxRDtJQUFBLDhCQUFjO0lBQUEsaUJBQVM7O0lBQXhDLDhCQUFnQjs7O0lBQ3BELGtDQUFzRDtJ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UUFFcEQsZUFBeUI7UUFBekIsOENBQXlCO1FBQ1osZUFBZ0I7UUFBaEIsMkNBQWdCO1FBS0ssZUFBOEI7UUFBOUIseURBQThCO1FBRWxELGVBQStCO1FBQS9CLCtDQUErQiwrQ0FBQTtRQUU3QyxlQUF5QjtRQUF6Qiw4Q0FBeUI7UUFDWCxlQUFnQztRQUFoQywyREFBZ0M7UUFLWCxlQUEwQjtRQUExQixxREFBMEI7UUFFbkQsZUFBZ0M7UUFBaEMsZ0RBQWdDLGdEQUFBO1FBRTNDLGVBQWdCO1FBQWhCLDhCQUFnQjtRQUNELGVBQXlCO1FBQXpCLG9EQUF5QjtRQUlkLGVBQTRDO1FBQTVDLGlFQUE0QztRQVFFLGVBQW9DO1FBQXBDLHNEQUFvQztRQUFnRCxlQUEwQjtRQUExQixxREFBMEI7UUFDM0UsZUFBMEI7UUFBMUIscURBQTBCOzt1RkRqQnRJLDBCQUEwQjtjQUx0QyxTQUFTO2VBQUM7Z0JBQ1QsUUFBUSxFQUFFLHdCQUF3QjtnQkFDbEMsV0FBVyxFQUFFLHFDQUFxQztnQkFDbEQsU0FBUyxFQUFFLENBQUMscUNBQXFDLENBQUM7YUFDbkQ7Z09BU1EsYUFBYTtrQkFEbkIsS0FBSztZQUlDLFFBQVE7a0JBRGQsS0FBSztZQUlDLE9BQU87a0JBRGIsTUFBTTtZQUlBLE9BQU87a0JBRGIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT25Jbml0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IEFjdGl2YXRlZFJvdXRlLCBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90IH0gZnJvbSAnQGFuZ3VsYXIvcm91dGVyJztcbmltcG9ydCB7IHRha2UgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQgeyBDYXNlRmllbGQgfSBmcm9tICcuLi8uLi9kb21haW4vZGVmaW5pdGlvbi9jYXNlLWZpZWxkLm1vZGVsJztcbmltcG9ydCB7IENhc2VTdGF0ZSB9IGZyb20gJy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2Nhc2Utc3RhdGUubW9kZWwnO1xuaW1wb3J0IHsgQ2FzZVR5cGVMaXRlIH0gZnJvbSAnLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS10eXBlLWxpdGUubW9kZWwnO1xuaW1wb3J0IHsgSnVyaXNkaWN0aW9uIH0gZnJvbSAnLi4vLi4vZG9tYWluL2RlZmluaXRpb24vanVyaXNkaWN0aW9uLm1vZGVsJztcbmltcG9ydCB7IFdvcmtiYXNrZXRJbnB1dE1vZGVsIH0gZnJvbSAnLi4vLi4vZG9tYWluL3dvcmtiYXNrZXQvd29ya2Jhc2tldC1pbnB1dC5tb2RlbCc7XG5pbXBvcnQgeyBBbGVydFNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9hbGVydC9hbGVydC5zZXJ2aWNlJztcbmltcG9ydCB7IEZpZWxkc1V0aWxzIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZmllbGRzL2ZpZWxkcy51dGlscyc7XG5pbXBvcnQgeyBKdXJpc2RpY3Rpb25TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvanVyaXNkaWN0aW9uL2p1cmlzZGljdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL29yZGVyL29yZGVyLnNlcnZpY2UnO1xuaW1wb3J0IHsgV2luZG93U2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3dpbmRvdy93aW5kb3cuc2VydmljZSc7XG5pbXBvcnQgeyBXb3JrYmFza2V0SW5wdXRGaWx0ZXJTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvd29ya2Jhc2tldC93b3JrYmFza2V0LWlucHV0LWZpbHRlci5zZXJ2aWNlJztcblxuY29uc3QgRk9STV9HUk9VUF9WQUxfTE9DX1NUT1JBR0UgPSAnd29ya2Jhc2tldC1maWx0ZXItZm9ybS1ncm91cC12YWx1ZSc7XG5jb25zdCBTQVZFRF9RVUVSWV9QQVJBTV9MT0NfU1RPUkFHRSA9ICdzYXZlZFF1ZXJ5UGFyYW1zJztcbmNvbnN0IFJFR0lPTl9MSVNUX0FORF9GUkNfRklMVEVSID0gJ3JlZ2lvbkxpc3QnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdjY2Qtd29ya2Jhc2tldC1maWx0ZXJzJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3dvcmtiYXNrZXQtZmlsdGVycy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3dvcmtiYXNrZXQtZmlsdGVycy5jb21wb25lbnQuc2NzcyddXG59KVxuZXhwb3J0IGNsYXNzIFdvcmtiYXNrZXRGaWx0ZXJzQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0IHtcblxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBBUkFNX0pVUklTRElDVElPTiA9ICdqdXJpc2RpY3Rpb24nO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBBUkFNX0NBU0VfVFlQRSA9ICdjYXNlLXR5cGUnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBBUkFNX0NBU0VfU1RBVEUgPSAnY2FzZS1zdGF0ZSc7XG4gIHB1YmxpYyBjYXNlRmllbGRzOiBDYXNlRmllbGRbXTtcblxuICBASW5wdXQoKVxuICBwdWJsaWMganVyaXNkaWN0aW9uczogSnVyaXNkaWN0aW9uW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGRlZmF1bHRzO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgb25BcHBseTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBvblJlc2V0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgd29ya2Jhc2tldElucHV0czogV29ya2Jhc2tldElucHV0TW9kZWxbXTtcbiAgcHVibGljIHdvcmtiYXNrZXRJbnB1dHNSZWFkeTogYm9vbGVhbjtcblxuICBwdWJsaWMgd29ya2Jhc2tldERlZmF1bHRzOiBib29sZWFuO1xuXG4gIHB1YmxpYyBzZWxlY3RlZDoge1xuICAgIGluaXQ/OiBib29sZWFuLFxuICAgIGp1cmlzZGljdGlvbj86IEp1cmlzZGljdGlvbixcbiAgICBjYXNlVHlwZT86IENhc2VUeXBlTGl0ZSxcbiAgICBjYXNlU3RhdGU/OiBDYXNlU3RhdGUsXG4gICAgZm9ybUdyb3VwPzogRm9ybUdyb3VwLFxuICAgIHBhZ2U/OiBudW1iZXIsXG4gICAgbWV0YWRhdGFGaWVsZHM/OiBzdHJpbmdbXVxuICB9O1xuXG4gIHB1YmxpYyBmb3JtR3JvdXA6IEZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuXG4gIHB1YmxpYyBzZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlcz86IENhc2VUeXBlTGl0ZVtdO1xuICBwdWJsaWMgc2VsZWN0ZWRDYXNlVHlwZVN0YXRlcz86IENhc2VTdGF0ZVtdO1xuXG4gIHB1YmxpYyBpbml0aWFsaXNlZCA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcm91dGU6IEFjdGl2YXRlZFJvdXRlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgd29ya2Jhc2tldElucHV0RmlsdGVyU2VydmljZTogV29ya2Jhc2tldElucHV0RmlsdGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9yZGVyU2VydmljZTogT3JkZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkganVyaXNkaWN0aW9uU2VydmljZTogSnVyaXNkaWN0aW9uU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsZXJ0U2VydmljZTogQWxlcnRTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgd2luZG93U2VydmljZTogV2luZG93U2VydmljZSkge1xuICB9XG5cbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIHRoaXMuc2VsZWN0ZWQgPSB7fTtcbiAgICB0aGlzLnJvdXRlLnF1ZXJ5UGFyYW1zLnN1YnNjcmliZShwYXJhbXMgPT4ge1xuICAgICAgaWYgKCF0aGlzLmluaXRpYWxpc2VkIHx8ICFwYXJhbXMgfHwgIU9iamVjdC5rZXlzKHBhcmFtcykubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuaW5pdEZpbHRlcnMoZmFsc2UpO1xuICAgICAgICB0aGlzLmluaXRpYWxpc2VkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhcHBseShpbml0KTogdm9pZCB7XG4gICAgLy8gU2F2ZSBmaWx0ZXJzIGFzIHF1ZXJ5IHBhcmFtZXRlcnMgZm9yIGN1cnJlbnQgcm91dGVcbiAgICBjb25zdCBxdWVyeVBhcmFtcyA9IHt9O1xuICAgIGlmICh0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbikge1xuICAgICAgcXVlcnlQYXJhbXNbV29ya2Jhc2tldEZpbHRlcnNDb21wb25lbnQuUEFSQU1fSlVSSVNESUNUSU9OXSA9IHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uLmlkO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZC5jYXNlVHlwZSkge1xuICAgICAgcXVlcnlQYXJhbXNbV29ya2Jhc2tldEZpbHRlcnNDb21wb25lbnQuUEFSQU1fQ0FTRV9UWVBFXSA9IHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUuaWQ7XG4gICAgfVxuICAgIGlmICh0aGlzLnNlbGVjdGVkLmNhc2VTdGF0ZSkge1xuICAgICAgcXVlcnlQYXJhbXNbV29ya2Jhc2tldEZpbHRlcnNDb21wb25lbnQuUEFSQU1fQ0FTRV9TVEFURV0gPSB0aGlzLnNlbGVjdGVkLmNhc2VTdGF0ZS5pZDtcbiAgICB9XG4gICAgLy8gd2l0aG91dCBleHBsaWNpdGx5IHByZXNlcnZpbmcgYWxlcnRzIGFueSBtZXNzYWdlIG9uIHRoZSBwYWdlXG4gICAgLy8gd291bGQgYmUgY2xlYXJlZCBvdXQgYmVjYXVzZSBvZiB0aGlzIGluaXRpYWwgbmF2aWdhdGlvbi5cbiAgICAvLyBUaGUgYWJvdmUgaXMgb25seSB0cnVlIGlmIG5vIGFsZXJ0cyB3ZXJlIHNldCBwcmlvciB0byBsb2FkaW5nIGNhc2UgbGlzdCBwYWdlLlxuICAgIGlmICghdGhpcy5hbGVydFNlcnZpY2UuaXNQcmVzZXJ2ZUFsZXJ0cygpKSB7XG4gICAgICB0aGlzLmFsZXJ0U2VydmljZS5zZXRQcmVzZXJ2ZUFsZXJ0cyghdGhpcy5pbml0aWFsaXNlZCk7XG4gICAgfVxuICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmZvcm1Hcm91cC5jb250cm9scykubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkLmZvcm1Hcm91cCA9IEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oRk9STV9HUk9VUF9WQUxfTE9DX1NUT1JBR0UpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVXBkYXRlIGZvcm0gZ3JvdXAgZmlsdGVyc1xuICAgICAgdGhpcy51cGRhdGVGb3JtR3JvdXBGaWx0ZXJzKCk7XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWQuZm9ybUdyb3VwID0gdGhpcy5mb3JtR3JvdXA7XG4gICAgfVxuICAgIHRoaXMuc2VsZWN0ZWQuaW5pdCA9IGluaXQ7XG4gICAgdGhpcy5zZWxlY3RlZC5wYWdlID0gMTtcbiAgICB0aGlzLnNlbGVjdGVkLm1ldGFkYXRhRmllbGRzID0gdGhpcy5nZXRNZXRhZGF0YUZpZWxkcygpO1xuICAgIGlmIChpbml0KSB7XG4gICAgICB0aGlzLndpbmRvd1NlcnZpY2Uuc2V0TG9jYWxTdG9yYWdlKFNBVkVEX1FVRVJZX1BBUkFNX0xPQ19TVE9SQUdFLCBKU09OLnN0cmluZ2lmeShxdWVyeVBhcmFtcykpO1xuICAgICAgaWYgKE9iamVjdC5rZXlzKHRoaXMuZm9ybUdyb3VwLmNvbnRyb2xzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMud2luZG93U2VydmljZS5zZXRMb2NhbFN0b3JhZ2UoRk9STV9HUk9VUF9WQUxfTE9DX1NUT1JBR0UsIEpTT04uc3RyaW5naWZ5KHRoaXMuZm9ybUdyb3VwLnZhbHVlKSk7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEFwcGx5IGZpbHRlcnNcbiAgICB0aGlzLm9uQXBwbHkuZW1pdCh7c2VsZWN0ZWQ6IHRoaXMuc2VsZWN0ZWQsIHF1ZXJ5UGFyYW1zfSk7XG4gICAgdGhpcy5zZXRGb2N1c1RvVG9wKCk7XG4gIH1cblxuICBwdWJsaWMgcmVzZXQoKTogdm9pZCB7XG4gICAgdGhpcy53aW5kb3dTZXJ2aWNlLnJlbW92ZUxvY2FsU3RvcmFnZShGT1JNX0dST1VQX1ZBTF9MT0NfU1RPUkFHRSk7XG4gICAgdGhpcy53aW5kb3dTZXJ2aWNlLnJlbW92ZUxvY2FsU3RvcmFnZShTQVZFRF9RVUVSWV9QQVJBTV9MT0NfU1RPUkFHRSk7XG4gICAgc2V0VGltZW91dCAoKCkgPT4ge1xuICAgICAgdGhpcy5yZXNldEZpZWxkc1doZW5Ob0RlZmF1bHRzKCk7XG4gICAgICB0aGlzLm9uUmVzZXQuZW1pdCh0cnVlKTtcbiAgICB9LCA1MDApO1xuICB9XG5cbiAgcHVibGljIGdldE1ldGFkYXRhRmllbGRzKCk6IHN0cmluZ1tdIHtcbiAgICBpZiAodGhpcy53b3JrYmFza2V0SW5wdXRzKSB7XG4gICAgICByZXR1cm4gdGhpcy53b3JrYmFza2V0SW5wdXRzXG4gICAgICAgIC5maWx0ZXIod29ya2Jhc2tldElucHV0ID0+IHdvcmtiYXNrZXRJbnB1dC5maWVsZC5tZXRhZGF0YSA9PT0gdHJ1ZSlcbiAgICAgICAgLm1hcCh3b3JrYmFza2V0SW5wdXQgPT4gd29ya2Jhc2tldElucHV0LmZpZWxkLmlkKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25KdXJpc2RpY3Rpb25JZENoYW5nZSgpIHtcbiAgICBpZiAodGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24pIHtcbiAgICAgIHRoaXMuanVyaXNkaWN0aW9uU2VydmljZS5hbm5vdW5jZVNlbGVjdGVkSnVyaXNkaWN0aW9uKHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uKTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRKdXJpc2RpY3Rpb25DYXNlVHlwZXMgPSB0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbi5jYXNlVHlwZXMubGVuZ3RoID4gMCA/IHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uLmNhc2VUeXBlcyA6IG51bGw7XG4gICAgICAvLyBMaW5lIHdhcyB0b28gbG9uZyBmb3IgbGludGluZyBzbyByZWZhY3RvcmVkIGl0LlxuICAgICAgaWYgKHRoaXMud29ya2Jhc2tldERlZmF1bHRzICYmIHRoaXMuc2VsZWN0ZWRKdXJpc2RpY3Rpb25DYXNlVHlwZXMpIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5jYXNlVHlwZSA9IHRoaXMuc2VsZWN0ZWRKdXJpc2RpY3Rpb25DYXNlVHlwZXNbMF07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnNlbGVjdGVkLmNhc2VUeXBlID0gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZWxlY3RlZC5jYXNlU3RhdGUgPSBudWxsO1xuICAgICAgdGhpcy5jbGVhcldvcmtiYXNrZXRJbnB1dHMoKTtcblxuICAgICAgaWYgKCF0aGlzLmlzQXBwbHlCdXR0b25EaXNhYmxlZCgpKSB7XG4gICAgICAgIHRoaXMub25DYXNlVHlwZUlkQ2hhbmdlKCk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzZXRDYXNlVHlwZSgpO1xuICAgICAgdGhpcy5yZXNldENhc2VTdGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvbkNhc2VUeXBlSWRDaGFuZ2UoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRDYXNlVHlwZVN0YXRlcyA9IHRoaXMuc29ydFN0YXRlcyh0aGlzLnNlbGVjdGVkLmNhc2VUeXBlLnN0YXRlcyk7XG4gICAgICB0aGlzLnNlbGVjdGVkLmNhc2VTdGF0ZSA9IG51bGw7XG4gICAgICB0aGlzLmZvcm1Hcm91cCA9IG5ldyBGb3JtR3JvdXAoe30pO1xuICAgICAgdGhpcy5jbGVhcldvcmtiYXNrZXRJbnB1dHMoKTtcbiAgICAgIGlmICghdGhpcy5pc0FwcGx5QnV0dG9uRGlzYWJsZWQoKSkge1xuICAgICAgICB0aGlzLndvcmtiYXNrZXRJbnB1dEZpbHRlclNlcnZpY2UuZ2V0V29ya2Jhc2tldElucHV0cyh0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbi5pZCwgdGhpcy5zZWxlY3RlZC5jYXNlVHlwZS5pZCkucGlwZShcbiAgICAgICAgICB0YWtlKDEpXG4gICAgICAgICkuc3Vic2NyaWJlKHdvcmtiYXNrZXRJbnB1dHMgPT4ge1xuICAgICAgICAgICAgdGhpcy53b3JrYmFza2V0SW5wdXRzUmVhZHkgPSB0cnVlO1xuICAgICAgICAgICAgdGhpcy53b3JrYmFza2V0SW5wdXRzID0gd29ya2Jhc2tldElucHV0c1xuICAgICAgICAgICAgICAuc29ydCh0aGlzLm9yZGVyU2VydmljZS5zb3J0QXNjKTtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMud2luZG93U2VydmljZS5nZXRMb2NhbFN0b3JhZ2UoRk9STV9HUk9VUF9WQUxfTE9DX1NUT1JBR0UpO1xuXG4gICAgICAgICAgICB3b3JrYmFza2V0SW5wdXRzLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgICAgICAgIGlmIChpdGVtLmZpZWxkLmVsZW1lbnRQYXRoKSB7XG4gICAgICAgICAgICAgICAgaXRlbS5maWVsZC5pZCA9IGl0ZW0uZmllbGQuaWQgKyAnLicgKyBpdGVtLmZpZWxkLmVsZW1lbnRQYXRoO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGl0ZW0uZmllbGQubGFiZWwgPSBpdGVtLmxhYmVsO1xuICAgICAgICAgICAgICBpZiAoZm9ybVZhbHVlKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VhcmNoRm9ybVZhbHVlT2JqZWN0ID0gSlNPTi5wYXJzZShmb3JtVmFsdWUpO1xuICAgICAgICAgICAgICAgIGl0ZW0uZmllbGQudmFsdWUgPSBzZWFyY2hGb3JtVmFsdWVPYmplY3RbaXRlbS5maWVsZC5pZF07XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5nZXRDYXNlRmllbGRzKCk7XG4gICAgICAgICAgfSwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ1dvcmtiYXNrZXQgaW5wdXQgZmllbGRzIHJlcXVlc3Qgd2lsbCBiZSBkaXNjYXJkZWQgcmVhc29uOiAnLCBlcnJvci5tZXNzYWdlKTtcbiAgICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZXNldENhc2VTdGF0ZSgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0Nhc2VUeXBlc0Ryb3Bkb3duRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnNlbGVjdGVkSnVyaXNkaWN0aW9uQ2FzZVR5cGVzO1xuICB9XG5cbiAgcHVibGljIGlzQ2FzZVN0YXRlc0Ryb3Bkb3duRGlzYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICF0aGlzLnNlbGVjdGVkLmNhc2VUeXBlIHx8ICEodGhpcy5zZWxlY3RlZC5jYXNlVHlwZS5zdGF0ZXMgJiYgdGhpcy5zZWxlY3RlZC5jYXNlVHlwZS5zdGF0ZXMubGVuZ3RoID4gMCk7XG4gIH1cblxuICBwdWJsaWMgaXNBcHBseUJ1dHRvbkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhKHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uICYmIHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUpO1xuICB9XG5cbiAgcHVibGljIGlzU2VhcmNoYWJsZUFuZFdvcmtiYXNrZXRJbnB1dHNSZWFkeSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24gJiYgdGhpcy5zZWxlY3RlZC5jYXNlVHlwZSAmJiB0aGlzLndvcmtiYXNrZXRJbnB1dHNSZWFkeTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCBpcyB1c2VkIHRvIGNsZWFyIHRoZSBwcmV2aW91c2x5IHVzZWRcbiAgICogZm9ybSBncm91cCBjb250cm9sIGZpbHRlciB2YWx1ZXMgdG8gbWFrZSBzdXJlIG9ubHkgdGhlXG4gICAqIGN1cnJlbnRseSBzZWxlY3RlZCBmb3JtIGdyb3VwIGNvbnRyb2wgZmlsdGVyIHZhbHVlcyBhcmUgcHJlc2VudC5cbiAgICpcbiAgICogSGFzIGJlZW4gaW1wbGVtZW50ZWQgZm9yICdSZWdpb24gYW5kIEZSQyBmaWx0ZXJzJyBhbmQgY2FuIGJlIGV4dGVuZGVkXG4gICAqIGluIGZ1dHVyZSB0byBpbmNvcnBvcmF0ZSBvdGhlciBkeW5hbWljIGZpbHRlcnMuXG4gICAqL1xuICAgcHVibGljIHVwZGF0ZUZvcm1Hcm91cEZpbHRlcnMoKTogdm9pZCB7XG4gICAgLy8gUmVhZCB0aGUgZm9ybSBncm91cCBsb2NhbCBzdG9yYWdlXG4gICAgY29uc3QgZm9ybUdyb3VwTFMgPSBKU09OLnBhcnNlKHRoaXMud2luZG93U2VydmljZS5nZXRMb2NhbFN0b3JhZ2UoRk9STV9HUk9VUF9WQUxfTE9DX1NUT1JBR0UpKTtcblxuICAgIC8vIEZvcm0gZ3JvdXAgbG9jYWwgc3RvcmFnZSBpcyBhdmFpbGFibGUgYW5kIGNvbnRhaW5zIHJlZ2lvbkxpc3QgcHJvcGVydHlcbiAgICBpZiAoISFmb3JtR3JvdXBMUyAmJiBmb3JtR3JvdXBMUy5oYXNPd25Qcm9wZXJ0eShSRUdJT05fTElTVF9BTkRfRlJDX0ZJTFRFUikpIHtcbiAgICAgIGlmICh0aGlzLmZvcm1Hcm91cC5nZXQoUkVHSU9OX0xJU1RfQU5EX0ZSQ19GSUxURVIpKSB7XG4gICAgICAgIC8vIElmIHJlZ2lvbkxpc3QgdmFsdWUgZG9lcyBub3QgbWF0Y2ggYmV0d2VlbiBsb2NhbCBzdG9yYWdlIGFuZCBmb3JtIGdyb3VwXG4gICAgICAgIC8vIHRoZW4gdGhlIGZpbHRlciB2YWx1ZSBoYXMgYmVlbiBjaGFuZ2VkIGFuZCB3ZSBuZWVkIHRvIGNsZWFyIHRoZSBvbGQgZmlsdGVyIHZhbHVlc1xuICAgICAgICBpZiAoZm9ybUdyb3VwTFNbUkVHSU9OX0xJU1RfQU5EX0ZSQ19GSUxURVJdICE9PSB0aGlzLmZvcm1Hcm91cC5nZXQoUkVHSU9OX0xJU1RfQU5EX0ZSQ19GSUxURVIpLnZhbHVlKSB7XG4gICAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gZm9ybUdyb3VwTFMpIHtcbiAgICAgICAgICAgIGlmIChmb3JtR3JvdXBMUy5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZm9ybUdyb3VwTFNba2V5XTtcbiAgICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIGZpbHRlciBmb3JtIGdyb3VwIGNvbnRyb2wgdmFsdWVzIGlmIGl0IGhhcyBhIHZhbHVlIGluIGxvY2FsIHN0b3JhZ2VcbiAgICAgICAgICAgICAgLy8gVGhlIHJlZ2lvbkxpc3QgZm9ybSBncm91cCBjb250cm9sIHZhbHVlIHNob3VsZCBiZSBpZ25vcmVkIGFzIGl0IGFsd2F5cyBjb250YWluIHRoZSBsYXRlc3QgdmFsdWVcbiAgICAgICAgICAgICAgaWYgKGtleSAhPT0gUkVHSU9OX0xJU1RfQU5EX0ZSQ19GSUxURVIgJiYgdmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuZm9ybUdyb3VwLmdldChrZXkpLnNldFZhbHVlKG51bGwpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzb3J0U3RhdGVzKHN0YXRlczogQ2FzZVN0YXRlW10pIHtcbiAgICByZXR1cm4gc3RhdGVzLnNvcnQodGhpcy5vcmRlclNlcnZpY2Uuc29ydEFzYyk7XG4gIH1cblxuICAvKipcbiAgICogVHJ5IHRvIGluaXRpYWxpc2UgZmlsdGVycyBiYXNlZCBvbiBxdWVyeSBwYXJhbWV0ZXJzIG9yIHdvcmtiYXNrZXQgZGVmYXVsdHMuXG4gICAqIFF1ZXJ5IHBhcmFtZXRlcnMsIHdoZW4gYXZhaWxhYmxlLCB0YWtlIHByZWNlZGVuY2Ugb3ZlciB3b3JrYmFza2V0IGRlZmF1bHRzLlxuICAgKi9cbiAgcHJpdmF0ZSBpbml0RmlsdGVycyhpbml0OiBib29sZWFuKSB7XG4gICAgY29uc3Qgc2F2ZWRRdWVyeVBhcmFtcyA9IHRoaXMud2luZG93U2VydmljZS5nZXRMb2NhbFN0b3JhZ2UoU0FWRURfUVVFUllfUEFSQU1fTE9DX1NUT1JBR0UpO1xuICAgIGNvbnN0IHJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QgPSB0aGlzLnJvdXRlLnNuYXBzaG90O1xuICAgIGlmIChzYXZlZFF1ZXJ5UGFyYW1zKSB7XG4gICAgICByb3V0ZVNuYXBzaG90LnF1ZXJ5UGFyYW1zID0gSlNPTi5wYXJzZShzYXZlZFF1ZXJ5UGFyYW1zKTtcbiAgICB9XG4gICAgY29uc3Qgc2VsZWN0ZWRKdXJpc2RpY3Rpb25JZCA9IHJvdXRlU25hcHNob3QucXVlcnlQYXJhbXNbV29ya2Jhc2tldEZpbHRlcnNDb21wb25lbnQuUEFSQU1fSlVSSVNESUNUSU9OXSB8fFxuICAgICAgKHRoaXMuZGVmYXVsdHMgJiYgdGhpcy5kZWZhdWx0cy5qdXJpc2RpY3Rpb25faWQpO1xuICAgIGlmIChzZWxlY3RlZEp1cmlzZGljdGlvbklkKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbiA9IHRoaXMuanVyaXNkaWN0aW9ucy5maW5kKGogPT4gc2VsZWN0ZWRKdXJpc2RpY3Rpb25JZCA9PT0gai5pZCk7XG4gICAgICBpZiAodGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24gJiYgdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24uY2FzZVR5cGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlcyA9IHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uLmNhc2VUeXBlcztcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5jYXNlVHlwZSA9IHRoaXMuc2VsZWN0Q2FzZVR5cGUodGhpcy5zZWxlY3RlZCwgdGhpcy5zZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlcywgcm91dGVTbmFwc2hvdCk7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkLmNhc2VUeXBlKSB7XG4gICAgICAgICAgdGhpcy5vbkNhc2VUeXBlSWRDaGFuZ2UoKTtcbiAgICAgICAgICB0aGlzLnNlbGVjdGVkLmNhc2VTdGF0ZSA9IHRoaXMuc2VsZWN0Q2FzZVN0YXRlKHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUsIHJvdXRlU25hcHNob3QpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMud29ya2Jhc2tldERlZmF1bHRzID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24gPSBudWxsO1xuICAgIH1cbiAgICB0aGlzLmFwcGx5KGluaXQpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RDYXNlU3RhdGUoY2FzZVR5cGU6IENhc2VUeXBlTGl0ZSwgcm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IENhc2VTdGF0ZSB7XG4gICAgbGV0IGNhc2VTdGF0ZTtcbiAgICBpZiAoY2FzZVR5cGUpIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkQ2FzZVN0YXRlSWQgPSB0aGlzLnNlbGVjdENhc2VTdGF0ZUlkRnJvbVF1ZXJ5T3JEZWZhdWx0cyhyb3V0ZVNuYXBzaG90LCAodGhpcy5kZWZhdWx0cyAmJiB0aGlzLmRlZmF1bHRzLnN0YXRlX2lkKSk7XG4gICAgICBjYXNlU3RhdGUgPSBjYXNlVHlwZS5zdGF0ZXMuZmluZChjdCA9PiBzZWxlY3RlZENhc2VTdGF0ZUlkID09PSBjdC5pZCk7XG4gICAgfVxuICAgIHJldHVybiBjYXNlU3RhdGUgPyBjYXNlU3RhdGUgOiBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RDYXNlU3RhdGVJZEZyb21RdWVyeU9yRGVmYXVsdHMocm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgZGVmYXVsdENhc2VTdGF0ZUlkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiByb3V0ZVNuYXBzaG90LnF1ZXJ5UGFyYW1zW1dvcmtiYXNrZXRGaWx0ZXJzQ29tcG9uZW50LlBBUkFNX0NBU0VfU1RBVEVdIHx8IGRlZmF1bHRDYXNlU3RhdGVJZDtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0Q2FzZVR5cGUoc2VsZWN0ZWQ6IGFueSwgY2FzZVR5cGVzOiBDYXNlVHlwZUxpdGVbXSwgcm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCk6IENhc2VUeXBlTGl0ZSB7XG4gICAgbGV0IGNhc2VUeXBlO1xuICAgIGlmIChzZWxlY3RlZC5qdXJpc2RpY3Rpb24pIHtcbiAgICAgIGNvbnN0IHNlbGVjdGVkQ2FzZVR5cGVJZCA9IHRoaXMuc2VsZWN0Q2FzZVR5cGVJZEZyb21RdWVyeU9yRGVmYXVsdHMocm91dGVTbmFwc2hvdCwgKHRoaXMuZGVmYXVsdHMgJiYgdGhpcy5kZWZhdWx0cy5jYXNlX3R5cGVfaWQpKTtcbiAgICAgIGNhc2VUeXBlID0gY2FzZVR5cGVzLmZpbmQoY3QgPT4gc2VsZWN0ZWRDYXNlVHlwZUlkID09PSBjdC5pZCk7XG4gICAgfVxuICAgIHJldHVybiBjYXNlVHlwZSA/IGNhc2VUeXBlIDogY2FzZVR5cGVzWzBdO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWxlY3RDYXNlVHlwZUlkRnJvbVF1ZXJ5T3JEZWZhdWx0cyhyb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90LCBkZWZhdWx0Q2FzZVR5cGVJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcm91dGVTbmFwc2hvdC5xdWVyeVBhcmFtc1tXb3JrYmFza2V0RmlsdGVyc0NvbXBvbmVudC5QQVJBTV9DQVNFX1RZUEVdIHx8IGRlZmF1bHRDYXNlVHlwZUlkO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldEZpZWxkc1doZW5Ob0RlZmF1bHRzKCkge1xuICAgIHRoaXMucmVzZXRDYXNlU3RhdGUoKTtcbiAgICB0aGlzLnJlc2V0Q2FzZVR5cGUoKTtcbiAgICB0aGlzLmNsZWFyV29ya2Jhc2tldElucHV0cygpO1xuICAgIHRoaXMud29ya2Jhc2tldERlZmF1bHRzID0gZmFsc2U7XG4gICAgdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24gPSBudWxsO1xuICAgIHRoaXMuaW5pdGlhbGlzZWQgPSBmYWxzZTtcbiAgICB0aGlzLmluaXRGaWx0ZXJzKHRydWUpO1xuICB9XG5cbiAgcHJpdmF0ZSBjbGVhcldvcmtiYXNrZXRJbnB1dHMoKSB7XG4gICAgdGhpcy53b3JrYmFza2V0SW5wdXRzUmVhZHkgPSBmYWxzZTtcbiAgICB0aGlzLndvcmtiYXNrZXRJbnB1dHMgPSBbXTtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRDYXNlU3RhdGUoKSB7XG4gICAgdGhpcy5kZWZhdWx0cy5zdGF0ZV9pZCA9IG51bGw7XG4gICAgdGhpcy5zZWxlY3RlZC5jYXNlU3RhdGUgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWRDYXNlVHlwZVN0YXRlcyA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0Q2FzZVR5cGUoKSB7XG4gICAgdGhpcy5zZWxlY3RlZC5jYXNlVHlwZSA9IHVuZGVmaW5lZDsgLy8gb3B0aW9uIHNob3VsZCBiZSBibGFuayByYXRoZXIgdGhhbiBcIlNlbGVjdCBhIHZhbHVlXCIgaW4gY2FzZSBvZiByZXNldC5cbiAgICB0aGlzLnNlbGVjdGVkSnVyaXNkaWN0aW9uQ2FzZVR5cGVzID0gbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc2V0Rm9jdXNUb1RvcCgpIHtcbiAgICB3aW5kb3cuc2Nyb2xsVG8oMCwgMCk7XG5cbiAgICBjb25zdCB0b3BDb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc2VhcmNoLXJlc3VsdC1oZWFkaW5nX190ZXh0Jyk7XG4gICAgaWYgKHRvcENvbnRhaW5lcikge1xuICAgICAgdG9wQ29udGFpbmVyLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBnZXRDYXNlRmllbGRzKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLndvcmtiYXNrZXRJbnB1dHMpIHtcbiAgICAgIHRoaXMuY2FzZUZpZWxkcyA9IHRoaXMud29ya2Jhc2tldElucHV0cy5tYXAoaXRlbSA9PiBGaWVsZHNVdGlscy5jb252ZXJ0VG9DYXNlRmllbGQoaXRlbS5maWVsZCkpO1xuICAgIH1cbiAgfVxufVxuIiwiXG48aDIgY2xhc3M9XCJoZWFkaW5nLWgyXCIgYXJpYS1sYWJlbD1cIkZpbHRlcnNcIj57eydGaWx0ZXJzJyB8IHJweFRyYW5zbGF0ZSB9fTwvaDI+XG48Zm9ybSBjbGFzcz1cImdsb2JhbC1kaXNwbGF5XCI+XG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cIndiLWp1cmlzZGljdGlvblwiPnt7J0p1cmlzZGljdGlvbicgfCBycHhUcmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtMy00IGNjZC1kcm9wZG93blwiIGlkPVwid2ItanVyaXNkaWN0aW9uXCJcbiAgICAgICAgICAgIG5hbWU9XCJqdXJpc2RpY3Rpb25cIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkLmp1cmlzZGljdGlvblwiIGFyaWEtY29udHJvbHM9XCJzZWFyY2gtcmVzdWx0XCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25KdXJpc2RpY3Rpb25JZENoYW5nZSgpXCI+XG4gICAgICA8b3B0aW9uICpuZ0lmPVwiIXdvcmtiYXNrZXREZWZhdWx0c1wiIFtuZ1ZhbHVlXT1cIm51bGxcIj5TZWxlY3QgYSB2YWx1ZTwvb3B0aW9uPlxuICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgaiBvZiBqdXJpc2RpY3Rpb25zXCIgW25nVmFsdWVdPVwialwiPnt7ai5uYW1lfX08L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbiAgPC9kaXY+XG5cbiAgPGRpdiBjbGFzcz1cImZvcm0tZ3JvdXBcIj5cbiAgICA8bGFiZWwgY2xhc3M9XCJmb3JtLWxhYmVsXCIgZm9yPVwid2ItY2FzZS10eXBlXCI+e3snQ2FzZSB0eXBlJyB8IHJweFRyYW5zbGF0ZX19PC9sYWJlbD5cbiAgICA8c2VsZWN0IGNsYXNzPVwiZm9ybS1jb250cm9sIGZvcm0tY29udHJvbC0zLTQgY2NkLWRyb3Bkb3duXCIgaWQ9XCJ3Yi1jYXNlLXR5cGVcIlxuICAgICAgICAgICAgbmFtZT1cImNhc2UtdHlwZVwiIFsobmdNb2RlbCldPVwic2VsZWN0ZWQuY2FzZVR5cGVcIiBbZGlzYWJsZWRdPVwiaXNDYXNlVHlwZXNEcm9wZG93bkRpc2FibGVkKClcIlxuICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNhc2VUeXBlSWRDaGFuZ2UoKVwiIGFyaWEtY29udHJvbHM9XCJzZWFyY2gtcmVzdWx0XCI+XG4gICAgICA8b3B0aW9uICpuZ0lmPVwiIXdvcmtiYXNrZXREZWZhdWx0c1wiIFtuZ1ZhbHVlXT1cIm51bGxcIj5TZWxlY3QgYSB2YWx1ZTwvb3B0aW9uPlxuICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgY3Qgb2Ygc2VsZWN0ZWRKdXJpc2RpY3Rpb25DYXNlVHlwZXNcIiBbbmdWYWx1ZV09XCJjdFwiPnt7Y3QubmFtZX19PC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cIndiLWNhc2Utc3RhdGVcIj57eydTdGF0ZScgfCBycHhUcmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtMy00IGNjZC1kcm9wZG93blwiIGlkPVwid2ItY2FzZS1zdGF0ZVwiXG4gICAgICAgICAgICBuYW1lPVwic3RhdGVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkLmNhc2VTdGF0ZVwiIFtkaXNhYmxlZF09XCJpc0Nhc2VTdGF0ZXNEcm9wZG93bkRpc2FibGVkKClcIlxuICAgICAgICAgICAgYXJpYS1jb250cm9scz1cInNlYXJjaC1yZXN1bHRcIj5cbiAgICAgIDxvcHRpb24gW25nVmFsdWVdPVwibnVsbFwiPkFueTwvb3B0aW9uPlxuICAgICAgPG9wdGlvbiAqbmdGb3I9XCJsZXQgY3Mgb2Ygc2VsZWN0ZWRDYXNlVHlwZVN0YXRlc1wiIFtuZ1ZhbHVlXT1cImNzXCI+e3tjcy5uYW1lfX08L29wdGlvbj5cbiAgICA8L3NlbGVjdD5cbiAgPC9kaXY+XG5cbiAgPG5nLWNvbnRhaW5lciBjY2RDb25kaXRpb25hbFNob3dGb3JtICpuZ0lmPVwiaXNTZWFyY2hhYmxlQW5kV29ya2Jhc2tldElucHV0c1JlYWR5KClcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIFtjb250ZXh0RmllbGRzXT1cImNhc2VGaWVsZHNcIj5cbiAgICA8ZGl2IGlkPVwiZHluYW1pY0ZpbHRlcnNcIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCIgKm5nRm9yPVwibGV0IHdvcmtiYXNrZXRJbnB1dCBvZiB3b3JrYmFza2V0SW5wdXRzXCI+XG4gICAgICAgIDxjY2QtZmllbGQtd3JpdGUgW2Nhc2VGaWVsZF09XCJ3b3JrYmFza2V0SW5wdXQuZmllbGRcIiBbZm9ybUdyb3VwXT1cImZvcm1Hcm91cFwiIFtpc0V4cGFuZGVkXT1cInRydWVcIiBbaXNJblNlYXJjaEJsb2NrXT1cInRydWVcIiAoa2V5dXAuZW50ZXIpPVwiYXBwbHkobnVsbClcIj48L2NjZC1maWVsZC13cml0ZT5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICA8L25nLWNvbnRhaW5lcj5cblxuICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ1dHRvbiB3b3JrYmFza2V0LWZpbHRlcnMtYXBwbHlcIiAoY2xpY2spPVwiYXBwbHkodHJ1ZSlcIiBbZGlzYWJsZWRdPVwiaXNBcHBseUJ1dHRvbkRpc2FibGVkKClcIiB0aXRsZT1cIkFwcGx5IGZpbHRlclwiIGFyaWEtbGFiZWw9XCJBcHBseSBmaWx0ZXJcIj57eydBcHBseScgfCBycHhUcmFuc2xhdGV9fTwvYnV0dG9uPiAmbmJzcDsmbmJzcDsmbmJzcDtcbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgKGNsaWNrKT1cInJlc2V0KClcIiBjbGFzcz1cImJ1dHRvbiBidXR0b24tc2Vjb25kYXJ5XCIgdGl0bGU9XCJSZXNldCBmaWx0ZXJcIiBhcmlhLWxhYmVsPVwiUmVzZXQgZmlsdGVyXCI+e3snUmVzZXQnIHwgcnB4VHJhbnNsYXRlfX08L2J1dHRvbj5cbjwvZm9ybT5cbiJdfQ==
464
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid29ya2Jhc2tldC1maWx0ZXJzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy93b3JrYmFza2V0LWZpbHRlcnMvd29ya2Jhc2tldC1maWx0ZXJzLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2NjZC1jYXNlLXVpLXRvb2xraXQvc3JjL2xpYi9zaGFyZWQvY29tcG9uZW50cy93b3JrYmFza2V0LWZpbHRlcnMvd29ya2Jhc2tldC1maWx0ZXJzLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDL0UsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxjQUFjLEVBQTBCLE1BQU0saUJBQWlCLENBQUM7QUFDekUsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTXRDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUNsRSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDakUsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sa0RBQWtELENBQUM7QUFDdkYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUNyRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwyREFBMkQsQ0FBQzs7Ozs7Ozs7O0lDTm5HLGtDQUFxRDtJQUFBLDhCQUFjO0lBQUEsaUJBQVM7O0lBQXhDLDhCQUFnQjs7O0lBQ3BELGtDQUFzRDtJ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bkMsbURBQW1DO1FBRXBELGVBQXlCO1FBQXpCLDhDQUF5QjtRQUNaLGVBQWdCO1FBQWhCLDJDQUFnQjtRQUtLLGVBQThCO1FBQTlCLHlEQUE4QjtRQUVsRCxlQUErQjtRQUEvQiwrQ0FBK0IsK0NBQUE7UUFFN0MsZUFBeUI7UUFBekIsOENBQXlCO1FBQ1gsZUFBZ0M7UUFBaEMsMkRBQWdDO1FBS1gsZUFBMEI7UUFBMUIscURBQTBCO1FBRW5ELGVBQWdDO1FBQWhDLGdEQUFnQyxnREFBQTtRQUUzQyxlQUFnQjtRQUFoQiw4QkFBZ0I7UUFDRCxlQUF5QjtRQUF6QixvREFBeUI7UUFJZCxlQUE0QztRQUE1QyxpRUFBNEM7UUFRRSxlQUFvQztRQUFwQyxzREFBb0M7UUFBZ0QsZUFBMEI7UUFBMUIscURBQTBCO1FBQzNFLGVBQTBCO1FBQTFCLHFEQUEwQjs7dUZEakJ0SSwwQkFBMEI7Y0FMdEMsU0FBUztlQUFDO2dCQUNULFFBQVEsRUFBRSx3QkFBd0I7Z0JBQ2xDLFdBQVcsRUFBRSxxQ0FBcUM7Z0JBQ2xELFNBQVMsRUFBRSxDQUFDLHFDQUFxQyxDQUFDO2FBQ25EO2dPQVNRLGFBQWE7a0JBRG5CLEtBQUs7WUFJQyxRQUFRO2tCQURkLEtBQUs7WUFJQyxPQUFPO2tCQURiLE1BQU07WUFJQSxPQUFPO2tCQURiLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uSW5pdCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtR3JvdXAgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBBY3RpdmF0ZWRSb3V0ZSwgQWN0aXZhdGVkUm91dGVTbmFwc2hvdCB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyB0YWtlIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuaW1wb3J0IHsgQ2FzZUZpZWxkIH0gZnJvbSAnLi4vLi4vZG9tYWluL2RlZmluaXRpb24vY2FzZS1maWVsZC5tb2RlbCc7XG5pbXBvcnQgeyBDYXNlU3RhdGUgfSBmcm9tICcuLi8uLi9kb21haW4vZGVmaW5pdGlvbi9jYXNlLXN0YXRlLm1vZGVsJztcbmltcG9ydCB7IENhc2VUeXBlTGl0ZSB9IGZyb20gJy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2Nhc2UtdHlwZS1saXRlLm1vZGVsJztcbmltcG9ydCB7IEp1cmlzZGljdGlvbiB9IGZyb20gJy4uLy4uL2RvbWFpbi9kZWZpbml0aW9uL2p1cmlzZGljdGlvbi5tb2RlbCc7XG5pbXBvcnQgeyBXb3JrYmFza2V0SW5wdXRNb2RlbCB9IGZyb20gJy4uLy4uL2RvbWFpbi93b3JrYmFza2V0L3dvcmtiYXNrZXQtaW5wdXQubW9kZWwnO1xuaW1wb3J0IHsgQWxlcnRTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvYWxlcnQvYWxlcnQuc2VydmljZSc7XG5pbXBvcnQgeyBGaWVsZHNVdGlscyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2ZpZWxkcy9maWVsZHMudXRpbHMnO1xuaW1wb3J0IHsgSnVyaXNkaWN0aW9uU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL2p1cmlzZGljdGlvbi9qdXJpc2RpY3Rpb24uc2VydmljZSc7XG5pbXBvcnQgeyBPcmRlclNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9vcmRlci9vcmRlci5zZXJ2aWNlJztcbmltcG9ydCB7IFdpbmRvd1NlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy93aW5kb3cvd2luZG93LnNlcnZpY2UnO1xuaW1wb3J0IHsgV29ya2Jhc2tldElucHV0RmlsdGVyU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3dvcmtiYXNrZXQvd29ya2Jhc2tldC1pbnB1dC1maWx0ZXIuc2VydmljZSc7XG5cbmNvbnN0IEZPUk1fR1JPVVBfVkFMX0xPQ19TVE9SQUdFID0gJ3dvcmtiYXNrZXQtZmlsdGVyLWZvcm0tZ3JvdXAtdmFsdWUnO1xuY29uc3QgU0FWRURfUVVFUllfUEFSQU1fTE9DX1NUT1JBR0UgPSAnc2F2ZWRRdWVyeVBhcmFtcyc7XG5jb25zdCBSRUdJT05fTElTVF9BTkRfRlJDX0ZJTFRFUiA9ICdyZWdpb25MaXN0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnY2NkLXdvcmtiYXNrZXQtZmlsdGVycycsXG4gIHRlbXBsYXRlVXJsOiAnLi93b3JrYmFza2V0LWZpbHRlcnMuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi93b3JrYmFza2V0LWZpbHRlcnMuY29tcG9uZW50LnNjc3MnXVxufSlcbmV4cG9ydCBjbGFzcyBXb3JrYmFza2V0RmlsdGVyc0NvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCB7XG5cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQQVJBTV9KVVJJU0RJQ1RJT04gPSAnanVyaXNkaWN0aW9uJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQQVJBTV9DQVNFX1RZUEUgPSAnY2FzZS10eXBlJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQQVJBTV9DQVNFX1NUQVRFID0gJ2Nhc2Utc3RhdGUnO1xuICBwdWJsaWMgY2FzZUZpZWxkczogQ2FzZUZpZWxkW107XG5cbiAgQElucHV0KClcbiAgcHVibGljIGp1cmlzZGljdGlvbnM6IEp1cmlzZGljdGlvbltdO1xuXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkZWZhdWx0cztcblxuICBAT3V0cHV0KClcbiAgcHVibGljIG9uQXBwbHk6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgb25SZXNldDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgcHVibGljIHdvcmtiYXNrZXRJbnB1dHM6IFdvcmtiYXNrZXRJbnB1dE1vZGVsW107XG4gIHB1YmxpYyB3b3JrYmFza2V0SW5wdXRzUmVhZHk6IGJvb2xlYW47XG5cbiAgcHVibGljIHdvcmtiYXNrZXREZWZhdWx0czogYm9vbGVhbjtcblxuICBwdWJsaWMgc2VsZWN0ZWQ6IHtcbiAgICBpbml0PzogYm9vbGVhbixcbiAgICBqdXJpc2RpY3Rpb24/OiBKdXJpc2RpY3Rpb24sXG4gICAgY2FzZVR5cGU/OiBDYXNlVHlwZUxpdGUsXG4gICAgY2FzZVN0YXRlPzogQ2FzZVN0YXRlLFxuICAgIGZvcm1Hcm91cD86IEZvcm1Hcm91cCxcbiAgICBwYWdlPzogbnVtYmVyLFxuICAgIG1ldGFkYXRhRmllbGRzPzogc3RyaW5nW11cbiAgfTtcblxuICBwdWJsaWMgZm9ybUdyb3VwOiBGb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcblxuICBwdWJsaWMgc2VsZWN0ZWRKdXJpc2RpY3Rpb25DYXNlVHlwZXM/OiBDYXNlVHlwZUxpdGVbXTtcbiAgcHVibGljIHNlbGVjdGVkQ2FzZVR5cGVTdGF0ZXM/OiBDYXNlU3RhdGVbXTtcblxuICBwdWJsaWMgaW5pdGlhbGlzZWQgPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJvdXRlOiBBY3RpdmF0ZWRSb3V0ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdvcmtiYXNrZXRJbnB1dEZpbHRlclNlcnZpY2U6IFdvcmtiYXNrZXRJbnB1dEZpbHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvcmRlclNlcnZpY2U6IE9yZGVyU2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGp1cmlzZGljdGlvblNlcnZpY2U6IEp1cmlzZGljdGlvblNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGVydFNlcnZpY2U6IEFsZXJ0U2VydmljZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHdpbmRvd1NlcnZpY2U6IFdpbmRvd1NlcnZpY2UpIHtcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdGVkID0ge307XG4gICAgdGhpcy5yb3V0ZS5xdWVyeVBhcmFtcy5zdWJzY3JpYmUocGFyYW1zID0+IHtcbiAgICAgIGlmICghdGhpcy5pbml0aWFsaXNlZCB8fCAhcGFyYW1zIHx8ICFPYmplY3Qua2V5cyhwYXJhbXMpLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmluaXRGaWx0ZXJzKGZhbHNlKTtcbiAgICAgICAgdGhpcy5pbml0aWFsaXNlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYXBwbHkoaW5pdCk6IHZvaWQge1xuICAgIC8vIFNhdmUgZmlsdGVycyBhcyBxdWVyeSBwYXJhbWV0ZXJzIGZvciBjdXJyZW50IHJvdXRlXG4gICAgY29uc3QgcXVlcnlQYXJhbXMgPSB7fTtcbiAgICBpZiAodGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24pIHtcbiAgICAgIHF1ZXJ5UGFyYW1zW1dvcmtiYXNrZXRGaWx0ZXJzQ29tcG9uZW50LlBBUkFNX0pVUklTRElDVElPTl0gPSB0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbi5pZDtcbiAgICB9XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUpIHtcbiAgICAgIHF1ZXJ5UGFyYW1zW1dvcmtiYXNrZXRGaWx0ZXJzQ29tcG9uZW50LlBBUkFNX0NBU0VfVFlQRV0gPSB0aGlzLnNlbGVjdGVkLmNhc2VUeXBlLmlkO1xuICAgIH1cbiAgICBpZiAodGhpcy5zZWxlY3RlZC5jYXNlU3RhdGUpIHtcbiAgICAgIHF1ZXJ5UGFyYW1zW1dvcmtiYXNrZXRGaWx0ZXJzQ29tcG9uZW50LlBBUkFNX0NBU0VfU1RBVEVdID0gdGhpcy5zZWxlY3RlZC5jYXNlU3RhdGUuaWQ7XG4gICAgfVxuICAgIC8vIHdpdGhvdXQgZXhwbGljaXRseSBwcmVzZXJ2aW5nIGFsZXJ0cyBhbnkgbWVzc2FnZSBvbiB0aGUgcGFnZVxuICAgIC8vIHdvdWxkIGJlIGNsZWFyZWQgb3V0IGJlY2F1c2Ugb2YgdGhpcyBpbml0aWFsIG5hdmlnYXRpb24uXG4gICAgLy8gVGhlIGFib3ZlIGlzIG9ubHkgdHJ1ZSBpZiBubyBhbGVydHMgd2VyZSBzZXQgcHJpb3IgdG8gbG9hZGluZyBjYXNlIGxpc3QgcGFnZS5cbiAgICBpZiAoIXRoaXMuYWxlcnRTZXJ2aWNlLmlzUHJlc2VydmVBbGVydHMoKSkge1xuICAgICAgdGhpcy5hbGVydFNlcnZpY2Uuc2V0UHJlc2VydmVBbGVydHMoIXRoaXMuaW5pdGlhbGlzZWQpO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmtleXModGhpcy5mb3JtR3JvdXAuY29udHJvbHMpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5zZWxlY3RlZC5mb3JtR3JvdXAgPSBKU09OLnBhcnNlKGxvY2FsU3RvcmFnZS5nZXRJdGVtKEZPUk1fR1JPVVBfVkFMX0xPQ19TVE9SQUdFKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFVwZGF0ZSBmb3JtIGdyb3VwIGZpbHRlcnNcbiAgICAgIHRoaXMudXBkYXRlRm9ybUdyb3VwRmlsdGVycygpO1xuXG4gICAgICB0aGlzLnNlbGVjdGVkLmZvcm1Hcm91cCA9IHRoaXMuZm9ybUdyb3VwO1xuICAgIH1cbiAgICB0aGlzLnNlbGVjdGVkLmluaXQgPSBpbml0O1xuICAgIHRoaXMuc2VsZWN0ZWQucGFnZSA9IDE7XG4gICAgdGhpcy5zZWxlY3RlZC5tZXRhZGF0YUZpZWxkcyA9IHRoaXMuZ2V0TWV0YWRhdGFGaWVsZHMoKTtcbiAgICBpZiAoaW5pdCkge1xuICAgICAgdGhpcy53aW5kb3dTZXJ2aWNlLnNldExvY2FsU3RvcmFnZShTQVZFRF9RVUVSWV9QQVJBTV9MT0NfU1RPUkFHRSwgSlNPTi5zdHJpbmdpZnkocXVlcnlQYXJhbXMpKTtcbiAgICAgIGlmIChPYmplY3Qua2V5cyh0aGlzLmZvcm1Hcm91cC5jb250cm9scykubGVuZ3RoID4gMCkge1xuICAgICAgICB0aGlzLndpbmRvd1NlcnZpY2Uuc2V0TG9jYWxTdG9yYWdlKEZPUk1fR1JPVVBfVkFMX0xPQ19TVE9SQUdFLCBKU09OLnN0cmluZ2lmeSh0aGlzLmZvcm1Hcm91cC52YWx1ZSkpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBBcHBseSBmaWx0ZXJzXG4gICAgdGhpcy5vbkFwcGx5LmVtaXQoe3NlbGVjdGVkOiB0aGlzLnNlbGVjdGVkLCBxdWVyeVBhcmFtc30pO1xuICAgIHRoaXMuc2V0Rm9jdXNUb1RvcCgpO1xuICB9XG5cbiAgcHVibGljIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMud2luZG93U2VydmljZS5yZW1vdmVMb2NhbFN0b3JhZ2UoRk9STV9HUk9VUF9WQUxfTE9DX1NUT1JBR0UpO1xuICAgIHRoaXMud2luZG93U2VydmljZS5yZW1vdmVMb2NhbFN0b3JhZ2UoU0FWRURfUVVFUllfUEFSQU1fTE9DX1NUT1JBR0UpO1xuICAgIHNldFRpbWVvdXQgKCgpID0+IHtcbiAgICAgIHRoaXMucmVzZXRGaWVsZHNXaGVuTm9EZWZhdWx0cygpO1xuICAgICAgdGhpcy5vblJlc2V0LmVtaXQodHJ1ZSk7XG4gICAgfSwgNTAwKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNZXRhZGF0YUZpZWxkcygpOiBzdHJpbmdbXSB7XG4gICAgaWYgKHRoaXMud29ya2Jhc2tldElucHV0cykge1xuICAgICAgcmV0dXJuIHRoaXMud29ya2Jhc2tldElucHV0c1xuICAgICAgICAuZmlsdGVyKHdvcmtiYXNrZXRJbnB1dCA9PiB3b3JrYmFza2V0SW5wdXQuZmllbGQubWV0YWRhdGEgPT09IHRydWUpXG4gICAgICAgIC5tYXAod29ya2Jhc2tldElucHV0ID0+IHdvcmtiYXNrZXRJbnB1dC5maWVsZC5pZCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uSnVyaXNkaWN0aW9uSWRDaGFuZ2UoKSB7XG4gICAgaWYgKHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uKSB7XG4gICAgICB0aGlzLmp1cmlzZGljdGlvblNlcnZpY2UuYW5ub3VuY2VTZWxlY3RlZEp1cmlzZGljdGlvbih0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbik7XG4gICAgICB0aGlzLnNlbGVjdGVkSnVyaXNkaWN0aW9uQ2FzZVR5cGVzID0gdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24uY2FzZVR5cGVzLmxlbmd0aCA+IDAgPyB0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbi5jYXNlVHlwZXMgOiBudWxsO1xuICAgICAgLy8gTGluZSB3YXMgdG9vIGxvbmcgZm9yIGxpbnRpbmcgc28gcmVmYWN0b3JlZCBpdC5cbiAgICAgIGlmICh0aGlzLndvcmtiYXNrZXREZWZhdWx0cyAmJiB0aGlzLnNlbGVjdGVkSnVyaXNkaWN0aW9uQ2FzZVR5cGVzKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUgPSB0aGlzLnNlbGVjdGVkSnVyaXNkaWN0aW9uQ2FzZVR5cGVzWzBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5zZWxlY3RlZC5jYXNlVHlwZSA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuc2VsZWN0ZWQuY2FzZVN0YXRlID0gbnVsbDtcbiAgICAgIHRoaXMuY2xlYXJXb3JrYmFza2V0SW5wdXRzKCk7XG5cbiAgICAgIGlmICghdGhpcy5pc0FwcGx5QnV0dG9uRGlzYWJsZWQoKSkge1xuICAgICAgICB0aGlzLm9uQ2FzZVR5cGVJZENoYW5nZSgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc2V0Q2FzZVR5cGUoKTtcbiAgICAgIHRoaXMucmVzZXRDYXNlU3RhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25DYXNlVHlwZUlkQ2hhbmdlKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNlbGVjdGVkLmNhc2VUeXBlKSB7XG4gICAgICB0aGlzLnNlbGVjdGVkQ2FzZVR5cGVTdGF0ZXMgPSB0aGlzLnNvcnRTdGF0ZXModGhpcy5zZWxlY3RlZC5jYXNlVHlwZS5zdGF0ZXMpO1xuICAgICAgdGhpcy5zZWxlY3RlZC5jYXNlU3RhdGUgPSBudWxsO1xuICAgICAgdGhpcy5mb3JtR3JvdXAgPSBuZXcgRm9ybUdyb3VwKHt9KTtcbiAgICAgIHRoaXMuY2xlYXJXb3JrYmFza2V0SW5wdXRzKCk7XG4gICAgICBpZiAoIXRoaXMuaXNBcHBseUJ1dHRvbkRpc2FibGVkKCkpIHtcbiAgICAgICAgdGhpcy53b3JrYmFza2V0SW5wdXRGaWx0ZXJTZXJ2aWNlLmdldFdvcmtiYXNrZXRJbnB1dHModGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24uaWQsIHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUuaWQpLnBpcGUoXG4gICAgICAgICAgdGFrZSgxKVxuICAgICAgICApLnN1YnNjcmliZSh3b3JrYmFza2V0SW5wdXRzID0+IHtcbiAgICAgICAgICAgIHRoaXMud29ya2Jhc2tldElucHV0c1JlYWR5ID0gdHJ1ZTtcbiAgICAgICAgICAgIHRoaXMud29ya2Jhc2tldElucHV0cyA9IHdvcmtiYXNrZXRJbnB1dHNcbiAgICAgICAgICAgICAgLnNvcnQodGhpcy5vcmRlclNlcnZpY2Uuc29ydEFzYyk7XG4gICAgICAgICAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLndpbmRvd1NlcnZpY2UuZ2V0TG9jYWxTdG9yYWdlKEZPUk1fR1JPVVBfVkFMX0xPQ19TVE9SQUdFKTtcblxuICAgICAgICAgICAgd29ya2Jhc2tldElucHV0cy5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgICAgICAgICBpZiAoaXRlbS5maWVsZC5lbGVtZW50UGF0aCkge1xuICAgICAgICAgICAgICAgIGl0ZW0uZmllbGQuaWQgPSBpdGVtLmZpZWxkLmlkICsgJy4nICsgaXRlbS5maWVsZC5lbGVtZW50UGF0aDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpdGVtLmZpZWxkLmxhYmVsID0gaXRlbS5sYWJlbDtcbiAgICAgICAgICAgICAgaWYgKGZvcm1WYWx1ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlYXJjaEZvcm1WYWx1ZU9iamVjdCA9IEpTT04ucGFyc2UoZm9ybVZhbHVlKTtcbiAgICAgICAgICAgICAgICBpdGVtLmZpZWxkLnZhbHVlID0gc2VhcmNoRm9ybVZhbHVlT2JqZWN0W2l0ZW0uZmllbGQuaWRdO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHRoaXMuZ2V0Q2FzZUZpZWxkcygpO1xuICAgICAgICAgIH0sIGVycm9yID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdXb3JrYmFza2V0IGlucHV0IGZpZWxkcyByZXF1ZXN0IHdpbGwgYmUgZGlzY2FyZGVkIHJlYXNvbjogJywgZXJyb3IubWVzc2FnZSk7XG4gICAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzZXRDYXNlU3RhdGUoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNDYXNlVHlwZXNEcm9wZG93bkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5zZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlcztcbiAgfVxuXG4gIHB1YmxpYyBpc0Nhc2VTdGF0ZXNEcm9wZG93bkRpc2FibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhdGhpcy5zZWxlY3RlZC5jYXNlVHlwZSB8fCAhKHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUuc3RhdGVzICYmIHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUuc3RhdGVzLmxlbmd0aCA+IDApO1xuICB9XG5cbiAgcHVibGljIGlzQXBwbHlCdXR0b25EaXNhYmxlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gISh0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbiAmJiB0aGlzLnNlbGVjdGVkLmNhc2VUeXBlKTtcbiAgfVxuXG4gIHB1YmxpYyBpc1NlYXJjaGFibGVBbmRXb3JrYmFza2V0SW5wdXRzUmVhZHkoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uICYmIHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUgJiYgdGhpcy53b3JrYmFza2V0SW5wdXRzUmVhZHk7XG4gIH1cblxuICAvKipcbiAgICogVGhpcyBtZXRob2QgaXMgdXNlZCB0byBjbGVhciB0aGUgcHJldmlvdXNseSB1c2VkXG4gICAqIGZvcm0gZ3JvdXAgY29udHJvbCBmaWx0ZXIgdmFsdWVzIHRvIG1ha2Ugc3VyZSBvbmx5IHRoZVxuICAgKiBjdXJyZW50bHkgc2VsZWN0ZWQgZm9ybSBncm91cCBjb250cm9sIGZpbHRlciB2YWx1ZXMgYXJlIHByZXNlbnQuXG4gICAqXG4gICAqIEhhcyBiZWVuIGltcGxlbWVudGVkIGZvciAnUmVnaW9uIGFuZCBGUkMgZmlsdGVycycgYW5kIGNhbiBiZSBleHRlbmRlZFxuICAgKiBpbiBmdXR1cmUgdG8gaW5jb3Jwb3JhdGUgb3RoZXIgZHluYW1pYyBmaWx0ZXJzLlxuICAgKi9cbiAgIHB1YmxpYyB1cGRhdGVGb3JtR3JvdXBGaWx0ZXJzKCk6IHZvaWQge1xuICAgIC8vIFJlYWQgdGhlIGZvcm0gZ3JvdXAgbG9jYWwgc3RvcmFnZVxuICAgIGNvbnN0IGZvcm1Hcm91cExTID0gSlNPTi5wYXJzZSh0aGlzLndpbmRvd1NlcnZpY2UuZ2V0TG9jYWxTdG9yYWdlKEZPUk1fR1JPVVBfVkFMX0xPQ19TVE9SQUdFKSk7XG5cbiAgICAvLyBGb3JtIGdyb3VwIGxvY2FsIHN0b3JhZ2UgaXMgYXZhaWxhYmxlIGFuZCBjb250YWlucyByZWdpb25MaXN0IHByb3BlcnR5XG4gICAgaWYgKCEhZm9ybUdyb3VwTFMgJiYgZm9ybUdyb3VwTFMuaGFzT3duUHJvcGVydHkoUkVHSU9OX0xJU1RfQU5EX0ZSQ19GSUxURVIpKSB7XG4gICAgICBpZiAodGhpcy5mb3JtR3JvdXAuZ2V0KFJFR0lPTl9MSVNUX0FORF9GUkNfRklMVEVSKSkge1xuICAgICAgICAvLyBJZiByZWdpb25MaXN0IHZhbHVlIGRvZXMgbm90IG1hdGNoIGJldHdlZW4gbG9jYWwgc3RvcmFnZSBhbmQgZm9ybSBncm91cFxuICAgICAgICAvLyB0aGVuIHRoZSBmaWx0ZXIgdmFsdWUgaGFzIGJlZW4gY2hhbmdlZCBhbmQgd2UgbmVlZCB0byBjbGVhciB0aGUgb2xkIGZpbHRlciB2YWx1ZXNcbiAgICAgICAgaWYgKGZvcm1Hcm91cExTW1JFR0lPTl9MSVNUX0FORF9GUkNfRklMVEVSXSAhPT0gdGhpcy5mb3JtR3JvdXAuZ2V0KFJFR0lPTl9MSVNUX0FORF9GUkNfRklMVEVSKS52YWx1ZSkge1xuICAgICAgICAgIGZvciAoY29uc3Qga2V5IGluIGZvcm1Hcm91cExTKSB7XG4gICAgICAgICAgICBpZiAoZm9ybUdyb3VwTFMuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGZvcm1Hcm91cExTW2tleV07XG4gICAgICAgICAgICAgIC8vIENsZWFyIHRoZSBmaWx0ZXIgZm9ybSBncm91cCBjb250cm9sIHZhbHVlcyBpZiBpdCBoYXMgYSB2YWx1ZSBpbiBsb2NhbCBzdG9yYWdlXG4gICAgICAgICAgICAgIC8vIFRoZSByZWdpb25MaXN0IGZvcm0gZ3JvdXAgY29udHJvbCB2YWx1ZSBzaG91bGQgYmUgaWdub3JlZCBhcyBpdCBhbHdheXMgY29udGFpbiB0aGUgbGF0ZXN0IHZhbHVlXG4gICAgICAgICAgICAgIGlmIChrZXkgIT09IFJFR0lPTl9MSVNUX0FORF9GUkNfRklMVEVSICYmIHZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmZvcm1Hcm91cC5nZXQoa2V5KS5zZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc29ydFN0YXRlcyhzdGF0ZXM6IENhc2VTdGF0ZVtdKSB7XG4gICAgcmV0dXJuIHN0YXRlcy5zb3J0KHRoaXMub3JkZXJTZXJ2aWNlLnNvcnRBc2MpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRyeSB0byBpbml0aWFsaXNlIGZpbHRlcnMgYmFzZWQgb24gcXVlcnkgcGFyYW1ldGVycyBvciB3b3JrYmFza2V0IGRlZmF1bHRzLlxuICAgKiBRdWVyeSBwYXJhbWV0ZXJzLCB3aGVuIGF2YWlsYWJsZSwgdGFrZSBwcmVjZWRlbmNlIG92ZXIgd29ya2Jhc2tldCBkZWZhdWx0cy5cbiAgICovXG4gIHByaXZhdGUgaW5pdEZpbHRlcnMoaW5pdDogYm9vbGVhbikge1xuICAgIGNvbnN0IHNhdmVkUXVlcnlQYXJhbXMgPSB0aGlzLndpbmRvd1NlcnZpY2UuZ2V0TG9jYWxTdG9yYWdlKFNBVkVEX1FVRVJZX1BBUkFNX0xPQ19TVE9SQUdFKTtcbiAgICBjb25zdCByb3V0ZVNuYXBzaG90OiBBY3RpdmF0ZWRSb3V0ZVNuYXBzaG90ID0gdGhpcy5yb3V0ZS5zbmFwc2hvdDtcbiAgICBpZiAoc2F2ZWRRdWVyeVBhcmFtcykge1xuICAgICAgcm91dGVTbmFwc2hvdC5xdWVyeVBhcmFtcyA9IEpTT04ucGFyc2Uoc2F2ZWRRdWVyeVBhcmFtcyk7XG4gICAgfVxuICAgIGNvbnN0IHNlbGVjdGVkSnVyaXNkaWN0aW9uSWQgPSByb3V0ZVNuYXBzaG90LnF1ZXJ5UGFyYW1zW1dvcmtiYXNrZXRGaWx0ZXJzQ29tcG9uZW50LlBBUkFNX0pVUklTRElDVElPTl0gfHxcbiAgICAgICh0aGlzLmRlZmF1bHRzICYmIHRoaXMuZGVmYXVsdHMuanVyaXNkaWN0aW9uX2lkKTtcbiAgICBpZiAoc2VsZWN0ZWRKdXJpc2RpY3Rpb25JZCkge1xuICAgICAgdGhpcy5zZWxlY3RlZC5qdXJpc2RpY3Rpb24gPSB0aGlzLmp1cmlzZGljdGlvbnMuZmluZChqID0+IHNlbGVjdGVkSnVyaXNkaWN0aW9uSWQgPT09IGouaWQpO1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uICYmIHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uLmNhc2VUeXBlcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWRKdXJpc2RpY3Rpb25DYXNlVHlwZXMgPSB0aGlzLnNlbGVjdGVkLmp1cmlzZGljdGlvbi5jYXNlVHlwZXM7XG4gICAgICAgIHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUgPSB0aGlzLnNlbGVjdENhc2VUeXBlKHRoaXMuc2VsZWN0ZWQsIHRoaXMuc2VsZWN0ZWRKdXJpc2RpY3Rpb25DYXNlVHlwZXMsIHJvdXRlU25hcHNob3QpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZC5jYXNlVHlwZSkge1xuICAgICAgICAgIHRoaXMub25DYXNlVHlwZUlkQ2hhbmdlKCk7XG4gICAgICAgICAgdGhpcy5zZWxlY3RlZC5jYXNlU3RhdGUgPSB0aGlzLnNlbGVjdENhc2VTdGF0ZSh0aGlzLnNlbGVjdGVkLmNhc2VUeXBlLCByb3V0ZVNuYXBzaG90KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLndvcmtiYXNrZXREZWZhdWx0cyA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uID0gbnVsbDtcbiAgICB9XG4gICAgdGhpcy5hcHBseShpbml0KTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0Q2FzZVN0YXRlKGNhc2VUeXBlOiBDYXNlVHlwZUxpdGUsIHJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBDYXNlU3RhdGUge1xuICAgIGxldCBjYXNlU3RhdGU7XG4gICAgaWYgKGNhc2VUeXBlKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZENhc2VTdGF0ZUlkID0gdGhpcy5zZWxlY3RDYXNlU3RhdGVJZEZyb21RdWVyeU9yRGVmYXVsdHMocm91dGVTbmFwc2hvdCwgKHRoaXMuZGVmYXVsdHMgJiYgdGhpcy5kZWZhdWx0cy5zdGF0ZV9pZCkpO1xuICAgICAgY2FzZVN0YXRlID0gY2FzZVR5cGUuc3RhdGVzLmZpbmQoY3QgPT4gc2VsZWN0ZWRDYXNlU3RhdGVJZCA9PT0gY3QuaWQpO1xuICAgIH1cbiAgICByZXR1cm4gY2FzZVN0YXRlID8gY2FzZVN0YXRlIDogbnVsbDtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0Q2FzZVN0YXRlSWRGcm9tUXVlcnlPckRlZmF1bHRzKHJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QsIGRlZmF1bHRDYXNlU3RhdGVJZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcm91dGVTbmFwc2hvdC5xdWVyeVBhcmFtc1tXb3JrYmFza2V0RmlsdGVyc0NvbXBvbmVudC5QQVJBTV9DQVNFX1NUQVRFXSB8fCBkZWZhdWx0Q2FzZVN0YXRlSWQ7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdENhc2VUeXBlKHNlbGVjdGVkOiBhbnksIGNhc2VUeXBlczogQ2FzZVR5cGVMaXRlW10sIHJvdXRlU25hcHNob3Q6IEFjdGl2YXRlZFJvdXRlU25hcHNob3QpOiBDYXNlVHlwZUxpdGUge1xuICAgIGxldCBjYXNlVHlwZTtcbiAgICBpZiAoc2VsZWN0ZWQuanVyaXNkaWN0aW9uKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZENhc2VUeXBlSWQgPSB0aGlzLnNlbGVjdENhc2VUeXBlSWRGcm9tUXVlcnlPckRlZmF1bHRzKHJvdXRlU25hcHNob3QsICh0aGlzLmRlZmF1bHRzICYmIHRoaXMuZGVmYXVsdHMuY2FzZV90eXBlX2lkKSk7XG4gICAgICBjYXNlVHlwZSA9IGNhc2VUeXBlcy5maW5kKGN0ID0+IHNlbGVjdGVkQ2FzZVR5cGVJZCA9PT0gY3QuaWQpO1xuICAgIH1cbiAgICByZXR1cm4gY2FzZVR5cGUgPyBjYXNlVHlwZSA6IGNhc2VUeXBlc1swXTtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0Q2FzZVR5cGVJZEZyb21RdWVyeU9yRGVmYXVsdHMocm91dGVTbmFwc2hvdDogQWN0aXZhdGVkUm91dGVTbmFwc2hvdCwgZGVmYXVsdENhc2VUeXBlSWQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHJvdXRlU25hcHNob3QucXVlcnlQYXJhbXNbV29ya2Jhc2tldEZpbHRlcnNDb21wb25lbnQuUEFSQU1fQ0FTRV9UWVBFXSB8fCBkZWZhdWx0Q2FzZVR5cGVJZDtcbiAgfVxuXG4gIHByaXZhdGUgcmVzZXRGaWVsZHNXaGVuTm9EZWZhdWx0cygpIHtcbiAgICB0aGlzLnJlc2V0Q2FzZVN0YXRlKCk7XG4gICAgdGhpcy5yZXNldENhc2VUeXBlKCk7XG4gICAgdGhpcy5jbGVhcldvcmtiYXNrZXRJbnB1dHMoKTtcbiAgICB0aGlzLndvcmtiYXNrZXREZWZhdWx0cyA9IGZhbHNlO1xuICAgIHRoaXMuc2VsZWN0ZWQuanVyaXNkaWN0aW9uID0gbnVsbDtcbiAgICB0aGlzLmluaXRpYWxpc2VkID0gZmFsc2U7XG4gICAgdGhpcy5pbml0RmlsdGVycyh0cnVlKTtcbiAgfVxuXG4gIHByaXZhdGUgY2xlYXJXb3JrYmFza2V0SW5wdXRzKCkge1xuICAgIHRoaXMud29ya2Jhc2tldElucHV0c1JlYWR5ID0gZmFsc2U7XG4gICAgdGhpcy53b3JrYmFza2V0SW5wdXRzID0gW107XG4gIH1cblxuICBwcml2YXRlIHJlc2V0Q2FzZVN0YXRlKCkge1xuICAgIHRoaXMuZGVmYXVsdHMuc3RhdGVfaWQgPSBudWxsO1xuICAgIHRoaXMuc2VsZWN0ZWQuY2FzZVN0YXRlID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdGVkQ2FzZVR5cGVTdGF0ZXMgPSBudWxsO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldENhc2VUeXBlKCkge1xuICAgIHRoaXMuc2VsZWN0ZWQuY2FzZVR5cGUgPSB1bmRlZmluZWQ7IC8vIG9wdGlvbiBzaG91bGQgYmUgYmxhbmsgcmF0aGVyIHRoYW4gXCJTZWxlY3QgYSB2YWx1ZVwiIGluIGNhc2Ugb2YgcmVzZXQuXG4gICAgdGhpcy5zZWxlY3RlZEp1cmlzZGljdGlvbkNhc2VUeXBlcyA9IG51bGw7XG4gIH1cblxuICBwcml2YXRlIHNldEZvY3VzVG9Ub3AoKSB7XG4gICAgd2luZG93LnNjcm9sbFRvKDAsIDApO1xuXG4gICAgY29uc3QgdG9wQ29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NlYXJjaC1yZXN1bHQtaGVhZGluZ19fdGV4dCcpO1xuICAgIGlmICh0b3BDb250YWluZXIpIHtcbiAgICAgIHRvcENvbnRhaW5lci5mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q2FzZUZpZWxkcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy53b3JrYmFza2V0SW5wdXRzKSB7XG4gICAgICB0aGlzLmNhc2VGaWVsZHMgPSB0aGlzLndvcmtiYXNrZXRJbnB1dHMubWFwKGl0ZW0gPT4gRmllbGRzVXRpbHMuY29udmVydFRvQ2FzZUZpZWxkKGl0ZW0uZmllbGQpKTtcbiAgICB9XG4gIH1cbn1cbiIsIlxuPGgyIGNsYXNzPVwiaGVhZGluZy1oMlwiIGFyaWEtbGFiZWw9XCJGaWx0ZXJzXCI+e3snRmlsdGVycycgfCBycHhUcmFuc2xhdGUgfX08L2gyPlxuPGZvcm0gY2xhc3M9XCJnbG9iYWwtZGlzcGxheVwiPlxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJ3Yi1qdXJpc2RpY3Rpb25cIj57eydKdXJpc2RpY3Rpb24nIHwgcnB4VHJhbnNsYXRlfX08L2xhYmVsPlxuICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLTMtNCBjY2QtZHJvcGRvd25cIiBpZD1cIndiLWp1cmlzZGljdGlvblwiXG4gICAgICAgICAgICBuYW1lPVwianVyaXNkaWN0aW9uXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZC5qdXJpc2RpY3Rpb25cIiBhcmlhLWNvbnRyb2xzPVwic2VhcmNoLXJlc3VsdFwiXG4gICAgICAgICAgICAoY2hhbmdlKT1cIm9uSnVyaXNkaWN0aW9uSWRDaGFuZ2UoKVwiPlxuICAgICAgPG9wdGlvbiAqbmdJZj1cIiF3b3JrYmFza2V0RGVmYXVsdHNcIiBbbmdWYWx1ZV09XCJudWxsXCI+U2VsZWN0IGEgdmFsdWU8L29wdGlvbj5cbiAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGogb2YganVyaXNkaWN0aW9uc1wiIFtuZ1ZhbHVlXT1cImpcIj57e2oubmFtZX19PC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gIDwvZGl2PlxuXG4gIDxkaXYgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XG4gICAgPGxhYmVsIGNsYXNzPVwiZm9ybS1sYWJlbFwiIGZvcj1cIndiLWNhc2UtdHlwZVwiPnt7J0Nhc2UgdHlwZScgfCBycHhUcmFuc2xhdGV9fTwvbGFiZWw+XG4gICAgPHNlbGVjdCBjbGFzcz1cImZvcm0tY29udHJvbCBmb3JtLWNvbnRyb2wtMy00IGNjZC1kcm9wZG93blwiIGlkPVwid2ItY2FzZS10eXBlXCJcbiAgICAgICAgICAgIG5hbWU9XCJjYXNlLXR5cGVcIiBbKG5nTW9kZWwpXT1cInNlbGVjdGVkLmNhc2VUeXBlXCIgW2Rpc2FibGVkXT1cImlzQ2FzZVR5cGVzRHJvcGRvd25EaXNhYmxlZCgpXCJcbiAgICAgICAgICAgIChjaGFuZ2UpPVwib25DYXNlVHlwZUlkQ2hhbmdlKClcIiBhcmlhLWNvbnRyb2xzPVwic2VhcmNoLXJlc3VsdFwiPlxuICAgICAgPG9wdGlvbiAqbmdJZj1cIiF3b3JrYmFza2V0RGVmYXVsdHNcIiBbbmdWYWx1ZV09XCJudWxsXCI+U2VsZWN0IGEgdmFsdWU8L29wdGlvbj5cbiAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGN0IG9mIHNlbGVjdGVkSnVyaXNkaWN0aW9uQ2FzZVR5cGVzXCIgW25nVmFsdWVdPVwiY3RcIj57e2N0Lm5hbWUgfCBycHhUcmFuc2xhdGV9fTwvb3B0aW9uPlxuICAgIDwvc2VsZWN0PlxuICA8L2Rpdj5cblxuICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxuICAgIDxsYWJlbCBjbGFzcz1cImZvcm0tbGFiZWxcIiBmb3I9XCJ3Yi1jYXNlLXN0YXRlXCI+e3snU3RhdGUnIHwgcnB4VHJhbnNsYXRlfX08L2xhYmVsPlxuICAgIDxzZWxlY3QgY2xhc3M9XCJmb3JtLWNvbnRyb2wgZm9ybS1jb250cm9sLTMtNCBjY2QtZHJvcGRvd25cIiBpZD1cIndiLWNhc2Utc3RhdGVcIlxuICAgICAgICAgICAgbmFtZT1cInN0YXRlXCIgWyhuZ01vZGVsKV09XCJzZWxlY3RlZC5jYXNlU3RhdGVcIiBbZGlzYWJsZWRdPVwiaXNDYXNlU3RhdGVzRHJvcGRvd25EaXNhYmxlZCgpXCJcbiAgICAgICAgICAgIGFyaWEtY29udHJvbHM9XCJzZWFyY2gtcmVzdWx0XCI+XG4gICAgICA8b3B0aW9uIFtuZ1ZhbHVlXT1cIm51bGxcIj5Bbnk8L29wdGlvbj5cbiAgICAgIDxvcHRpb24gKm5nRm9yPVwibGV0IGNzIG9mIHNlbGVjdGVkQ2FzZVR5cGVTdGF0ZXNcIiBbbmdWYWx1ZV09XCJjc1wiPnt7Y3MubmFtZSB8IHJweFRyYW5zbGF0ZX19PC9vcHRpb24+XG4gICAgPC9zZWxlY3Q+XG4gIDwvZGl2PlxuXG4gIDxuZy1jb250YWluZXIgY2NkQ29uZGl0aW9uYWxTaG93Rm9ybSAqbmdJZj1cImlzU2VhcmNoYWJsZUFuZFdvcmtiYXNrZXRJbnB1dHNSZWFkeSgpXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiBbY29udGV4dEZpZWxkc109XCJjYXNlRmllbGRzXCI+XG4gICAgPGRpdiBpZD1cImR5bmFtaWNGaWx0ZXJzXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1ncm91cFwiICpuZ0Zvcj1cImxldCB3b3JrYmFza2V0SW5wdXQgb2Ygd29ya2Jhc2tldElucHV0c1wiPlxuICAgICAgICA8Y2NkLWZpZWxkLXdyaXRlIFtjYXNlRmllbGRdPVwid29ya2Jhc2tldElucHV0LmZpZWxkXCIgW2Zvcm1Hcm91cF09XCJmb3JtR3JvdXBcIiBbaXNFeHBhbmRlZF09XCJ0cnVlXCIgW2lzSW5TZWFyY2hCbG9ja109XCJ0cnVlXCIgKGtleXVwLmVudGVyKT1cImFwcGx5KG51bGwpXCI+PC9jY2QtZmllbGQtd3JpdGU+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgY2xhc3M9XCJidXR0b24gd29ya2Jhc2tldC1maWx0ZXJzLWFwcGx5XCIgKGNsaWNrKT1cImFwcGx5KHRydWUpXCIgW2Rpc2FibGVkXT1cImlzQXBwbHlCdXR0b25EaXNhYmxlZCgpXCIgdGl0bGU9XCJBcHBseSBmaWx0ZXJcIiBhcmlhLWxhYmVsPVwiQXBwbHkgZmlsdGVyXCI+e3snQXBwbHknIHwgcnB4VHJhbnNsYXRlfX08L2J1dHRvbj4gJm5ic3A7Jm5ic3A7Jm5ic3A7XG4gIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIChjbGljayk9XCJyZXNldCgpXCIgY2xhc3M9XCJidXR0b24gYnV0dG9uLXNlY29uZGFyeVwiIHRpdGxlPVwiUmVzZXQgZmlsdGVyXCIgYXJpYS1sYWJlbD1cIlJlc2V0IGZpbHRlclwiPnt7J1Jlc2V0JyB8IHJweFRyYW5zbGF0ZX19PC9idXR0b24+XG48L2Zvcm0+XG4iXX0=
@@ -9,7 +9,9 @@ export class RequestOptionsBuilder {
9
9
  * @param value The value to be assessed.
10
10
  */
11
11
  static includeParam(value) {
12
+ /* istanbul ignore else */
12
13
  if (value) {
14
+ /* istanbul ignore else */
13
15
  if (typeof (value) === 'string') {
14
16
  return value.trim().length > 0;
15
17
  }
@@ -21,9 +23,11 @@ export class RequestOptionsBuilder {
21
23
  // TODO: This should probably be the now built-in URLSearchParams but it
22
24
  // requires a bigger refactor and there are bigger fish to fry right now.
23
25
  let params = new HttpParams();
26
+ /* istanbul ignore else */
24
27
  if (view) {
25
28
  params = params.set('view', view);
26
29
  }
30
+ /* istanbul ignore else */
27
31
  if (metaCriteria) {
28
32
  for (const criterion of Object.keys(metaCriteria)) {
29
33
  // EUI-3490. Make sure the parameter should be included for adding it.
@@ -33,8 +37,10 @@ export class RequestOptionsBuilder {
33
37
  }
34
38
  }
35
39
  }
40
+ /* istanbul ignore else */
36
41
  if (caseCriteria) {
37
42
  for (const criterion of Object.keys(caseCriteria)) {
43
+ /* istanbul ignore else */
38
44
  if (RequestOptionsBuilder.includeParam(caseCriteria[criterion])) {
39
45
  const key = RequestOptionsBuilder.FIELD_PREFIX + criterion;
40
46
  const value = caseCriteria[criterion].trim ? caseCriteria[criterion].trim() : caseCriteria[criterion];
@@ -52,4 +58,4 @@ RequestOptionsBuilder.ɵprov = i0.ɵɵdefineInjectable({ token: RequestOptionsBu
52
58
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(RequestOptionsBuilder, [{
53
59
  type: Injectable
54
60
  }], null, null); })();
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5vcHRpb25zLmJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL3JlcXVlc3QvcmVxdWVzdC5vcHRpb25zLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxxQkFBcUI7SUFJOUI7Ozs7O09BS0c7SUFDSyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQVU7UUFDcEMsSUFBSSxLQUFLLEVBQUU7WUFDVCxJQUFJLE9BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxRQUFRLEVBQUU7Z0JBQzlCLE9BQU8sS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7YUFDaEM7WUFDRCxPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRU0sWUFBWSxDQUFDLFlBQW9CLEVBQUUsWUFBb0IsRUFBRSxJQUFpQjtRQUMvRSx3RUFBd0U7UUFDeEUseUVBQXlFO1FBQ3pFLElBQUksTUFBTSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUM7UUFFOUIsSUFBSSxJQUFJLEVBQUU7WUFDUixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDbkM7UUFFRCxJQUFJLFlBQVksRUFBRTtZQUNoQixLQUFLLE1BQU0sU0FBUyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQ2pELHNFQUFzRTtnQkFDdEUsaUVBQWlFO2dCQUNqRSxJQUFJLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRTtvQkFDL0QsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO2lCQUN6RDthQUNGO1NBQ0Y7UUFFRCxJQUFJLFlBQVksRUFBRTtZQUNoQixLQUFLLE1BQU0sU0FBUyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7Z0JBQ2pELElBQUkscUJBQXFCLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFO29CQUMvRCxNQUFNLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQyxZQUFZLEdBQUcsU0FBUyxDQUFDO29CQUMzRCxNQUFNLEtBQUssR0FBRyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDdEcsTUFBTSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQ3BEO2FBQ0Y7U0FDRjtRQUVELE1BQU0sT0FBTyxHQUFnQixFQUFFLE1BQU0sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFDLENBQUM7UUFDeEQsT0FBTyxPQUFPLENBQUM7SUFDakIsQ0FBQzs7QUFqRHNCLGtDQUFZLEdBQUcsT0FBTyxDQUFDOzBGQUZyQyxxQkFBcUI7NkRBQXJCLHFCQUFxQixXQUFyQixxQkFBcUI7dUZBQXJCLHFCQUFxQjtjQURqQyxVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cFBhcmFtcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHsgT3B0aW9uc1R5cGUgfSBmcm9tICcuLic7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBSZXF1ZXN0T3B0aW9uc0J1aWxkZXIge1xuXG4gICAgcHVibGljIHN0YXRpYyByZWFkb25seSBGSUVMRF9QUkVGSVggPSAnY2FzZS4nO1xuXG4gICAgLyoqXG4gICAgICogQXNzZXNzIHRoZSB2YWx1ZSB0byBzZWUgaWYgaXQgc2hvdWxkIGJlIGluY2x1ZGVkIGluIHRoZSByZXF1ZXN0IG9wdGlvbnMuXG4gICAgICogSWYgaXQncyBudWxsIG9yIGFuIFwiZW1wdHlcIiBzdHJpbmcsIGl0IHNob3VsZG4ndCBiZS5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgdG8gYmUgYXNzZXNzZWQuXG4gICAgICovXG4gICAgcHJpdmF0ZSBzdGF0aWMgaW5jbHVkZVBhcmFtKHZhbHVlOiBhbnkpOiBib29sZWFuIHtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICBpZiAodHlwZW9mKHZhbHVlKSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICByZXR1cm4gdmFsdWUudHJpbSgpLmxlbmd0aCA+IDA7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcHVibGljIGJ1aWxkT3B0aW9ucyhtZXRhQ3JpdGVyaWE6IG9iamVjdCwgY2FzZUNyaXRlcmlhOiBvYmplY3QsIHZpZXc/OiBTZWFyY2hWaWV3KTogT3B0aW9uc1R5cGUge1xuICAgICAgLy8gVE9ETzogVGhpcyBzaG91bGQgcHJvYmFibHkgYmUgdGhlIG5vdyBidWlsdC1pbiBVUkxTZWFyY2hQYXJhbXMgYnV0IGl0XG4gICAgICAvLyByZXF1aXJlcyBhIGJpZ2dlciByZWZhY3RvciBhbmQgdGhlcmUgYXJlIGJpZ2dlciBmaXNoIHRvIGZyeSByaWdodCBub3cuXG4gICAgICBsZXQgcGFyYW1zID0gbmV3IEh0dHBQYXJhbXMoKTtcblxuICAgICAgaWYgKHZpZXcpIHtcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgndmlldycsIHZpZXcpO1xuICAgICAgfVxuXG4gICAgICBpZiAobWV0YUNyaXRlcmlhKSB7XG4gICAgICAgIGZvciAoY29uc3QgY3JpdGVyaW9uIG9mIE9iamVjdC5rZXlzKG1ldGFDcml0ZXJpYSkpIHtcbiAgICAgICAgICAvLyBFVUktMzQ5MC4gTWFrZSBzdXJlIHRoZSBwYXJhbWV0ZXIgc2hvdWxkIGJlIGluY2x1ZGVkIGZvciBhZGRpbmcgaXQuXG4gICAgICAgICAgLy8gVGhpcyB3YXMgYWxyZWFkeSBoYW5kbGVkIGJ5IHRoZSBvbGQgVVJMU2VhcmNoUGFyYW1zIG1lY2hhbmlzbS5cbiAgICAgICAgICBpZiAoUmVxdWVzdE9wdGlvbnNCdWlsZGVyLmluY2x1ZGVQYXJhbShtZXRhQ3JpdGVyaWFbY3JpdGVyaW9uXSkpIHtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoY3JpdGVyaW9uLCBtZXRhQ3JpdGVyaWFbY3JpdGVyaW9uXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChjYXNlQ3JpdGVyaWEpIHtcbiAgICAgICAgZm9yIChjb25zdCBjcml0ZXJpb24gb2YgT2JqZWN0LmtleXMoY2FzZUNyaXRlcmlhKSkge1xuICAgICAgICAgIGlmIChSZXF1ZXN0T3B0aW9uc0J1aWxkZXIuaW5jbHVkZVBhcmFtKGNhc2VDcml0ZXJpYVtjcml0ZXJpb25dKSkge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gUmVxdWVzdE9wdGlvbnNCdWlsZGVyLkZJRUxEX1BSRUZJWCArIGNyaXRlcmlvbjtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gY2FzZUNyaXRlcmlhW2NyaXRlcmlvbl0udHJpbSA/IGNhc2VDcml0ZXJpYVtjcml0ZXJpb25dLnRyaW0oKSA6IGNhc2VDcml0ZXJpYVtjcml0ZXJpb25dO1xuICAgICAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldChrZXksIHZhbHVlLnJlcGxhY2UoL+KAmS9pLCBgJ2ApKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3Qgb3B0aW9uczogT3B0aW9uc1R5cGUgPSB7IHBhcmFtcywgb2JzZXJ2ZTogJ2JvZHknfTtcbiAgICAgIHJldHVybiBvcHRpb25zO1xuICAgIH1cblxufVxuXG5leHBvcnQgdHlwZSBTZWFyY2hWaWV3ID0gJ1NFQVJDSCcgfCAnV09SS0JBU0tFVCc7XG4iXX0=
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdC5vcHRpb25zLmJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL3JlcXVlc3QvcmVxdWVzdC5vcHRpb25zLmJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7O0FBSzNDLE1BQU0sT0FBTyxxQkFBcUI7SUFJOUI7Ozs7O09BS0c7SUFDSyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQVU7UUFDcEMsMEJBQTBCO1FBQzFCLElBQUksS0FBSyxFQUFFO1lBQ1QsMEJBQTBCO1lBQzFCLElBQUksT0FBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLFFBQVEsRUFBRTtnQkFDOUIsT0FBTyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQzthQUNoQztZQUNELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFTSxZQUFZLENBQUMsWUFBb0IsRUFBRSxZQUFvQixFQUFFLElBQWlCO1FBQy9FLHdFQUF3RTtRQUN4RSx5RUFBeUU7UUFDekUsSUFBSSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUU5QiwwQkFBMEI7UUFDMUIsSUFBSSxJQUFJLEVBQUU7WUFDUixNQUFNLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDbkM7UUFFRCwwQkFBMEI7UUFDMUIsSUFBSSxZQUFZLEVBQUU7WUFDaEIsS0FBSyxNQUFNLFNBQVMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNqRCxzRUFBc0U7Z0JBQ3RFLGlFQUFpRTtnQkFDakUsSUFBSSxxQkFBcUIsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUU7b0JBQy9ELE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztpQkFDekQ7YUFDRjtTQUNGO1FBRUQsMEJBQTBCO1FBQzFCLElBQUksWUFBWSxFQUFFO1lBQ2hCLEtBQUssTUFBTSxTQUFTLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDakQsMEJBQTBCO2dCQUMxQixJQUFJLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRTtvQkFDL0QsTUFBTSxHQUFHLEdBQUcscUJBQXFCLENBQUMsWUFBWSxHQUFHLFNBQVMsQ0FBQztvQkFDM0QsTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7b0JBQ3RHLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO2lCQUNwRDthQUNGO1NBQ0Y7UUFFRCxNQUFNLE9BQU8sR0FBZ0IsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBQyxDQUFDO1FBQ3hELE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7O0FBdkRzQixrQ0FBWSxHQUFHLE9BQU8sQ0FBQzswRkFGckMscUJBQXFCOzZEQUFyQixxQkFBcUIsV0FBckIscUJBQXFCO3VGQUFyQixxQkFBcUI7Y0FEakMsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE9wdGlvbnNUeXBlIH0gZnJvbSAnLi4nO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgUmVxdWVzdE9wdGlvbnNCdWlsZGVyIHtcblxuICAgIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgRklFTERfUFJFRklYID0gJ2Nhc2UuJztcblxuICAgIC8qKlxuICAgICAqIEFzc2VzcyB0aGUgdmFsdWUgdG8gc2VlIGlmIGl0IHNob3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgcmVxdWVzdCBvcHRpb25zLlxuICAgICAqIElmIGl0J3MgbnVsbCBvciBhbiBcImVtcHR5XCIgc3RyaW5nLCBpdCBzaG91bGRuJ3QgYmUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRvIGJlIGFzc2Vzc2VkLlxuICAgICAqL1xuICAgIHByaXZhdGUgc3RhdGljIGluY2x1ZGVQYXJhbSh2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgIGlmICh0eXBlb2YodmFsdWUpID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHJldHVybiB2YWx1ZS50cmltKCkubGVuZ3RoID4gMDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYnVpbGRPcHRpb25zKG1ldGFDcml0ZXJpYTogb2JqZWN0LCBjYXNlQ3JpdGVyaWE6IG9iamVjdCwgdmlldz86IFNlYXJjaFZpZXcpOiBPcHRpb25zVHlwZSB7XG4gICAgICAvLyBUT0RPOiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSB0aGUgbm93IGJ1aWx0LWluIFVSTFNlYXJjaFBhcmFtcyBidXQgaXRcbiAgICAgIC8vIHJlcXVpcmVzIGEgYmlnZ2VyIHJlZmFjdG9yIGFuZCB0aGVyZSBhcmUgYmlnZ2VyIGZpc2ggdG8gZnJ5IHJpZ2h0IG5vdy5cbiAgICAgIGxldCBwYXJhbXMgPSBuZXcgSHR0cFBhcmFtcygpO1xuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKHZpZXcpIHtcbiAgICAgICAgcGFyYW1zID0gcGFyYW1zLnNldCgndmlldycsIHZpZXcpO1xuICAgICAgfVxuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG1ldGFDcml0ZXJpYSkge1xuICAgICAgICBmb3IgKGNvbnN0IGNyaXRlcmlvbiBvZiBPYmplY3Qua2V5cyhtZXRhQ3JpdGVyaWEpKSB7XG4gICAgICAgICAgLy8gRVVJLTM0OTAuIE1ha2Ugc3VyZSB0aGUgcGFyYW1ldGVyIHNob3VsZCBiZSBpbmNsdWRlZCBmb3IgYWRkaW5nIGl0LlxuICAgICAgICAgIC8vIFRoaXMgd2FzIGFscmVhZHkgaGFuZGxlZCBieSB0aGUgb2xkIFVSTFNlYXJjaFBhcmFtcyBtZWNoYW5pc20uXG4gICAgICAgICAgaWYgKFJlcXVlc3RPcHRpb25zQnVpbGRlci5pbmNsdWRlUGFyYW0obWV0YUNyaXRlcmlhW2NyaXRlcmlvbl0pKSB7XG4gICAgICAgICAgICBwYXJhbXMgPSBwYXJhbXMuc2V0KGNyaXRlcmlvbiwgbWV0YUNyaXRlcmlhW2NyaXRlcmlvbl0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKGNhc2VDcml0ZXJpYSkge1xuICAgICAgICBmb3IgKGNvbnN0IGNyaXRlcmlvbiBvZiBPYmplY3Qua2V5cyhjYXNlQ3JpdGVyaWEpKSB7XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAoUmVxdWVzdE9wdGlvbnNCdWlsZGVyLmluY2x1ZGVQYXJhbShjYXNlQ3JpdGVyaWFbY3JpdGVyaW9uXSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGtleSA9IFJlcXVlc3RPcHRpb25zQnVpbGRlci5GSUVMRF9QUkVGSVggKyBjcml0ZXJpb247XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IGNhc2VDcml0ZXJpYVtjcml0ZXJpb25dLnRyaW0gPyBjYXNlQ3JpdGVyaWFbY3JpdGVyaW9uXS50cmltKCkgOiBjYXNlQ3JpdGVyaWFbY3JpdGVyaW9uXTtcbiAgICAgICAgICAgIHBhcmFtcyA9IHBhcmFtcy5zZXQoa2V5LCB2YWx1ZS5yZXBsYWNlKC/igJkvaSwgYCdgKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9wdGlvbnM6IE9wdGlvbnNUeXBlID0geyBwYXJhbXMsIG9ic2VydmU6ICdib2R5J307XG4gICAgICByZXR1cm4gb3B0aW9ucztcbiAgICB9XG5cbn1cblxuZXhwb3J0IHR5cGUgU2VhcmNoVmlldyA9ICdTRUFSQ0gnIHwgJ1dPUktCQVNLRVQnO1xuIl19
@@ -37,4 +37,4 @@ WindowService.ɵprov = i0.ɵɵdefineInjectable({ token: WindowService, factory:
37
37
  (function () { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(WindowService, [{
38
38
  type: Injectable
39
39
  }], null, null); })();
40
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL3dpbmRvdy93aW5kb3cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQyxNQUFNLE9BQU8sYUFBYTtJQUNqQixjQUFjLENBQUMsR0FBVztRQUMvQixNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU0sZUFBZSxDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQy9DLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sZUFBZSxDQUFDLEdBQVc7UUFDaEMsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0saUJBQWlCO1FBQ3RCLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVNLGtCQUFrQixDQUFDLEdBQVc7UUFDbkMsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQ2pELE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU0saUJBQWlCLENBQUMsR0FBVztRQUNsQyxPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxZQUFZLENBQUMsR0FBVztRQUM3QixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0sT0FBTyxDQUFDLE9BQWU7UUFDNUIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRCxLQUFLLENBQUMsT0FBZTtRQUNuQixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0IsQ0FBQzs7MEVBdkNVLGFBQWE7cURBQWIsYUFBYSxXQUFiLGFBQWE7dUZBQWIsYUFBYTtjQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgV2luZG93U2VydmljZSB7XG4gIHB1YmxpYyBsb2NhdGlvbkFzc2lnbih1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRMb2NhbFN0b3JhZ2Uoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TG9jYWxTdG9yYWdlKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyTG9jYWxTdG9yYWdlKCkge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UuY2xlYXIoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVMb2NhbFN0b3JhZ2Uoa2V5OiBzdHJpbmcpIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTZXNzaW9uU3RvcmFnZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldFNlc3Npb25TdG9yYWdlKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gIH1cblxuICBwdWJsaWMgb3Blbk9uTmV3VGFiKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XG4gIH1cblxuICBwdWJsaWMgY29uZmlybShtZXNzYWdlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gd2luZG93LmNvbmZpcm0obWVzc2FnZSk7XG4gIH1cblxuICBhbGVydChtZXNzYWdlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICByZXR1cm4gd2luZG93LmFsZXJ0KG1lc3NhZ2UpO1xuICB9XG59XG4iXX0=
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93LnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jY2QtY2FzZS11aS10b29sa2l0L3NyYy9saWIvc2hhcmVkL3NlcnZpY2VzL3dpbmRvdy93aW5kb3cuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUczQyxNQUFNLE9BQU8sYUFBYTtJQUNqQixjQUFjLENBQUMsR0FBVztRQUMvQixNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU0sZUFBZSxDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQy9DLE1BQU0sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0sZUFBZSxDQUFDLEdBQVc7UUFDaEMsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRU0saUJBQWlCO1FBQ3RCLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVNLGtCQUFrQixDQUFDLEdBQVc7UUFDbkMsTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEdBQVcsRUFBRSxLQUFhO1FBQ2pELE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUM1QyxDQUFDO0lBRU0saUJBQWlCLENBQUMsR0FBVztRQUNsQyxPQUFPLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFTSxZQUFZLENBQUMsR0FBVztRQUM3QixNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRU0sT0FBTyxDQUFDLE9BQWU7UUFDNUIsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBZTtRQUMxQixPQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0IsQ0FBQzs7MEVBdkNVLGFBQWE7cURBQWIsYUFBYSxXQUFiLGFBQWE7dUZBQWIsYUFBYTtjQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgV2luZG93U2VydmljZSB7XG4gIHB1YmxpYyBsb2NhdGlvbkFzc2lnbih1cmw6IHN0cmluZyk6IHZvaWQge1xuICAgIHdpbmRvdy5sb2NhdGlvbi5hc3NpZ24odXJsKTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRMb2NhbFN0b3JhZ2Uoa2V5OiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0TG9jYWxTdG9yYWdlKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShrZXkpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyTG9jYWxTdG9yYWdlKCkge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UuY2xlYXIoKTtcbiAgfVxuXG4gIHB1YmxpYyByZW1vdmVMb2NhbFN0b3JhZ2Uoa2V5OiBzdHJpbmcpIHtcbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oa2V5KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRTZXNzaW9uU3RvcmFnZShrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZykge1xuICAgIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5zZXRJdGVtKGtleSwgdmFsdWUpO1xuICB9XG5cbiAgcHVibGljIGdldFNlc3Npb25TdG9yYWdlKGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5zZXNzaW9uU3RvcmFnZS5nZXRJdGVtKGtleSk7XG4gIH1cblxuICBwdWJsaWMgb3Blbk9uTmV3VGFiKHVybDogc3RyaW5nKTogdm9pZCB7XG4gICAgd2luZG93Lm9wZW4odXJsLCAnX2JsYW5rJyk7XG4gIH1cblxuICBwdWJsaWMgY29uZmlybShtZXNzYWdlOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gd2luZG93LmNvbmZpcm0obWVzc2FnZSk7XG4gIH1cblxuICBwdWJsaWMgYWxlcnQobWVzc2FnZTogc3RyaW5nKTogdm9pZCB7XG4gICAgcmV0dXJuIHdpbmRvdy5hbGVydChtZXNzYWdlKTtcbiAgfVxufVxuIl19