geonetwork-ui 2.4.0-dev.00c93bef → 2.4.0-dev.42a43a29

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 (51) hide show
  1. package/esm2022/libs/api/metadata-converter/src/index.mjs +2 -1
  2. package/esm2022/libs/api/repository/src/lib/gn4/gn4-repository.mjs +12 -1
  3. package/esm2022/libs/common/domain/src/lib/repository/records-repository.interface.mjs +1 -1
  4. package/esm2022/libs/data-access/gn4/src/openapi/api/records.api.service.mjs +2 -6
  5. package/esm2022/libs/feature/search/src/lib/results-table/results-table-container.component.mjs +9 -3
  6. package/esm2022/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.mjs +29 -0
  7. package/esm2022/libs/ui/search/src/lib/results-table/results-table.component.mjs +15 -7
  8. package/esm2022/translations/de.json +1 -0
  9. package/esm2022/translations/en.json +1 -0
  10. package/esm2022/translations/es.json +1 -0
  11. package/esm2022/translations/fr.json +1 -0
  12. package/esm2022/translations/it.json +1 -0
  13. package/esm2022/translations/nl.json +1 -0
  14. package/esm2022/translations/pt.json +1 -0
  15. package/fesm2022/geonetwork-ui.mjs +64 -15
  16. package/fesm2022/geonetwork-ui.mjs.map +1 -1
  17. package/libs/api/metadata-converter/src/index.d.ts +1 -0
  18. package/libs/api/metadata-converter/src/index.d.ts.map +1 -1
  19. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts +1 -0
  20. package/libs/api/repository/src/lib/gn4/gn4-repository.d.ts.map +1 -1
  21. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts +9 -0
  22. package/libs/common/domain/src/lib/repository/records-repository.interface.d.ts.map +1 -1
  23. package/libs/data-access/gn4/src/openapi/api/records.api.service.d.ts.map +1 -1
  24. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts +3 -1
  25. package/libs/feature/search/src/lib/results-table/results-table-container.component.d.ts.map +1 -1
  26. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts +11 -0
  27. package/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.d.ts.map +1 -0
  28. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts +4 -2
  29. package/libs/ui/search/src/lib/results-table/results-table.component.d.ts.map +1 -1
  30. package/package.json +1 -1
  31. package/src/libs/api/metadata-converter/src/index.ts +1 -0
  32. package/src/libs/api/repository/src/lib/gn4/gn4-repository.ts +20 -0
  33. package/src/libs/common/domain/src/lib/repository/records-repository.interface.ts +12 -0
  34. package/src/libs/data-access/gn4/src/openapi/api/records.api.service.ts +1 -5
  35. package/src/libs/data-access/gn4/src/spec.yaml +0 -8
  36. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.html +1 -0
  37. package/src/libs/feature/search/src/lib/results-table/results-table-container.component.ts +5 -0
  38. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.css +0 -0
  39. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.html +17 -0
  40. package/src/libs/ui/search/src/lib/results-table/action-menu/action-menu.component.ts +22 -0
  41. package/src/libs/ui/search/src/lib/results-table/results-table.component.html +9 -0
  42. package/src/libs/ui/search/src/lib/results-table/results-table.component.ts +26 -12
  43. package/tailwind.base.css +2 -1
  44. package/translations/de.json +1 -0
  45. package/translations/en.json +1 -0
  46. package/translations/es.json +1 -0
  47. package/translations/fr.json +1 -0
  48. package/translations/it.json +1 -0
  49. package/translations/nl.json +1 -0
  50. package/translations/pt.json +1 -0
  51. package/translations/sk.json +1 -0
@@ -1,5 +1,6 @@
1
+ export * from './lib/base.converter';
1
2
  export * from './lib/iso19139';
2
3
  export * from './lib/iso19115-3';
3
4
  export * from './lib/find-converter';
4
5
  export * from './lib/gn4';
5
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsZ0JBQWdCLENBQUE7QUFDOUIsY0FBYyxrQkFBa0IsQ0FBQTtBQUNoQyxjQUFjLHNCQUFzQixDQUFBO0FBQ3BDLGNBQWMsV0FBVyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWIvaXNvMTkxMzknXG5leHBvcnQgKiBmcm9tICcuL2xpYi9pc28xOTExNS0zJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZmluZC1jb252ZXJ0ZXInXG5leHBvcnQgKiBmcm9tICcuL2xpYi9nbjQnXG4iXX0=
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyxnQkFBZ0IsQ0FBQTtBQUM5QixjQUFjLGtCQUFrQixDQUFBO0FBQ2hDLGNBQWMsc0JBQXNCLENBQUE7QUFDcEMsY0FBYyxXQUFXLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9iYXNlLmNvbnZlcnRlcidcbmV4cG9ydCAqIGZyb20gJy4vbGliL2lzbzE5MTM5J1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaXNvMTkxMTUtMydcbmV4cG9ydCAqIGZyb20gJy4vbGliL2ZpbmQtY29udmVydGVyJ1xuZXhwb3J0ICogZnJvbSAnLi9saWIvZ240J1xuIl19
@@ -84,6 +84,17 @@ export class Gn4Repository {
84
84
  .then((record) => [record, xml, isSavedAlready]);
85
85
  }));
86
86
  }
87
+ openRecordForDuplication(uniqueIdentifier) {
88
+ return this.loadRecordAsXml(uniqueIdentifier).pipe(switchMap(async (recordAsXml) => {
89
+ const converter = findConverterForDocument(recordAsXml);
90
+ const record = await converter.readRecord(recordAsXml);
91
+ record.uniqueIdentifier = `TEMP-ID-${Date.now()}`;
92
+ record.title = `${record.title} (Copy)`;
93
+ const xml = await converter.writeRecord(record, recordAsXml);
94
+ window.localStorage.setItem(this.getLocalStorageKeyForRecord(record.uniqueIdentifier), xml);
95
+ return [record, xml, false];
96
+ }));
97
+ }
87
98
  serializeRecordToXml(record, referenceRecordSource) {
88
99
  // if there's a reference record, use that standard; otherwise, use iso19139
89
100
  const converter = referenceRecordSource
@@ -123,4 +134,4 @@ export class Gn4Repository {
123
134
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: Gn4Repository, decorators: [{
124
135
  type: Injectable
125
136
  }], ctorParameters: function () { return [{ type: i1.SearchApiService }, { type: i2.ElasticsearchService }, { type: i3.Gn4Converter }, { type: i1.RecordsApiService }]; } });
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LXJlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9yZXBvc2l0b3J5L3NyYy9saWIvZ240L2duNC1yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixnQkFBZ0IsR0FDakIsTUFBTSw0Q0FBNEMsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN0RCxPQUFPLEVBQ0wsYUFBYSxFQUNiLElBQUksRUFFSixFQUFFLEVBQ0YsU0FBUyxFQUNULFVBQVUsR0FDWCxNQUFNLE1BQU0sQ0FBQTtBQVdiLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3JELE9BQU8sRUFDTCx3QkFBd0IsRUFDeEIsWUFBWSxFQUVaLGlCQUFpQixHQUNsQixNQUFNLG1EQUFtRCxDQUFBOzs7OztBQUsxRCxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUNVLFlBQThCLEVBQzlCLGVBQXFDLEVBQ3JDLFNBQXVCLEVBQ3ZCLGFBQWdDO1FBSGhDLGlCQUFZLEdBQVosWUFBWSxDQUFrQjtRQUM5QixvQkFBZSxHQUFmLGVBQWUsQ0FBc0I7UUFDckMsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7SUFDdkMsQ0FBQztJQUVKLE1BQU0sQ0FBQyxFQUNMLE9BQU8sRUFDUCxNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxJQUFJLEVBQ0osU0FBUyxFQUNULGNBQWMsR0FDRDtRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVk7YUFDckIsTUFBTSxDQUNMLFFBQVEsRUFDUixJQUFJLEVBQ0osSUFBSSxDQUFDLFNBQVMsQ0FDWixJQUFJLENB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QyxPQUFPLElBQUksQ0FDVCxPQUFPLENBQUMsR0FBRyxDQUNULE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLHdCQUF3QixDQUFDLEtBQUssQ0FBQyxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUN6RSxDQUNGLENBQUE7SUFDSCxDQUFDOytHQTFSVSxhQUFhO21IQUFiLGFBQWE7OzRGQUFiLGFBQWE7a0JBRHpCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSdcbmltcG9ydCB7XG4gIFJlY29yZHNBcGlTZXJ2aWNlLFxuICBTZWFyY2hBcGlTZXJ2aWNlLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RhdGEtYWNjZXNzL2duNC9zcmMnXG5pbXBvcnQgeyBFbGFzdGljc2VhcmNoU2VydmljZSB9IGZyb20gJy4vZWxhc3RpY3NlYXJjaCdcbmltcG9ydCB7XG4gIGNvbWJpbmVMYXRlc3QsXG4gIGZyb20sXG4gIE9ic2VydmFibGUsXG4gIG9mLFxuICBzd2l0Y2hNYXAsXG4gIHRocm93RXJyb3IsXG59IGZyb20gJ3J4anMnXG5pbXBvcnQgeyBSZWNvcmRzUmVwb3NpdG9yeUludGVyZmFjZSB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3JlcG9zaXRvcnkvcmVjb3Jkcy1yZXBvc2l0b3J5LmludGVyZmFjZSdcbmltcG9ydCB7XG4gIFNlYXJjaFBhcmFtcyxcbiAgU2VhcmNoUmVzdWx0cyxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvc2VhcmNoL3NlYXJjaC5tb2RlbCdcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0aW9ucyxcbiAgQWdncmVnYXRpb25zUGFyYW1zLFxuICBGaWVsZEZpbHRlcnMsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3NlYXJjaCdcbmltcG9ydCB7IGNhdGNoRXJyb3IsIG1hcCwgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnXG5pbXBvcnQge1xuICBmaW5kQ29udmVydGVyRm9yRG9jdW1lbnQsXG4gIEduNENvbnZlcnRlcixcbiAgR240U2VhcmNoUmVzdWx0cyxcbiAgSXNvMTkxMzlDb252ZXJ0ZXIsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvYXBpL21ldGFkYXRhLWNvbnZlcnRlci9zcmMnXG5pbXBvcnQgeyBDYXRhbG9nUmVjb3JkIH0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9jb21tb24vZG9tYWluL3NyYy9saWIvbW9kZWwvcmVjb3JkJ1xuaW1wb3J0IHsgSHR0cEVycm9yUmVzcG9uc2UgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCdcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEduNFJlcG9zaXRvcnkgaW1wbGVtZW50cyBSZWNvcmRzUmVwb3NpdG9yeUludGVyZmFjZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgZ240U2VhcmNoQXBpOiBTZWFyY2hBcGlTZXJ2aWNlLFxuICAgIHByaXZhdGUgZ240U2VhcmNoSGVscGVyOiBFbGFzdGljc2VhcmNoU2VydmljZSxcbiAgICBwcml2YXRlIGduNE1hcHBlcjogR240Q29udmVydGVyLFxuICAgIHByaXZhdGUgZ240UmVjb3Jkc0FwaTogUmVjb3Jkc0FwaVNlcnZpY2VcbiAgKSB7fVxuXG4gIHNlYXJjaCh7XG4gICAgZmlsdGVycyxcbiAgICBmaWVsZHMsXG4gICAgb2Zmc2V0LFxuICAgIGxpbWl0LFxuICAgIHNvcnQsXG4gICAgZmlsdGVySWRzLFxuICAgIGZpbHRlckdlb21ldHJ5LFxuICB9OiBTZWFyY2hQYXJhbXMpOiBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdHM+IHtcbiAgICByZXR1cm4gdGhpcy5nbjRTZWFyY2hBcGlcbiAgICAgIC5zZWFyY2goXG4gICAgICAgICdidWNrZXQnLFxuICAgICAgICBudWxsLFxuICAgICAgICBKU09OLnN0cmluZ2lmeShcbiAgICAgICAgICB0aGlzLmduNFNlYXJjaEhlbHBlci5nZXRTZWFyY2hSZXF1ZXN0Qm9keShcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICAgbGltaXQsXG4gICAgICAgICAgICBvZmZzZXQsXG4gICAgICAgICAgICBzb3J0LFxuICAgICAgICAgICAgZmllbGRzLFxuICAgICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGZpbHRlcklkcyxcbiAgICAgICAgICAgIGZpbHRlckdlb21ldHJ5XG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChyZXN1bHRzOiBHbjRTZWFyY2hSZXN1bHRzKSA9PlxuICAgICAgICAgIHRoaXMuZ240TWFwcGVyLnJlYWRSZWNvcmRzKHJlc3VsdHMuaGl0cy5oaXRzKS50aGVuKChyZWNvcmRzKSA9PiAoe1xuICAgICAgICAgICAgY291bnQ6IHJlc3VsdHMuaGl0cy50b3RhbD8udmFsdWUgfHwgMCxcbiAgICAgICAgICAgIHJlY29yZHMsXG4gICAgICAgICAgfSkpXG4gICAgICAgIClcbiAgICAgIClcbiAgfVxuXG4gIGdldE1hdGNoZXNDb3VudChmaWx0ZXJzOiBGaWVsZEZpbHRlcnMpOiBPYnNlcnZhYmxlPG51bWJlcj4ge1xuICAgIHJldHVybiB0aGlzLmduNFNlYXJjaEFwaVxuICAgICAgLnNlYXJjaChcbiAgICAgICAgJ3JlY29yZHMtY291bnQnLFxuICAgICAgICBudWxsLFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgLi4udGhpcy5nbjRTZWFyY2hIZWxwZXIuZ2V0U2VhcmNoUmVxdWVzdEJvZHkoXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIDAsXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgZmlsdGVyc1xuICAgICAgICAgICksXG4gICAgICAgICAgdHJhY2tfdG90YWxfaGl0czogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5waXBlKG1hcCgocmVzdWx0czogR240U2VhcmNoUmVzdWx0cykgPT4gcmVzdWx0cy5oaXRzLnRvdGFsPy52YWx1ZSB8fCAwKSlcbiAgfVxuXG4gIGdldFJlY29yZCh1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENhdGFsb2dSZWNvcmQgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuZ240U2VhcmNoQXBpXG4gICAgICAuc2VhcmNoKFxuICAgICAgICAnYnVja2V0JyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgdGhpcy5nbjRTZWFyY2hIZWxwZXIuZ2V0TWV0YWRhdGFCeUlkUGF5bG9hZCh1bmlxdWVJZGVudGlmaWVyKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgbWFwKChyZXN1bHRzOiBHbjRTZWFyY2hSZXN1bHRzKSA9PiByZXN1bHRzLmhpdHMuaGl0c1swXSksXG4gICAgICAgIHN3aXRjaE1hcCgocmVjb3JkKSA9PlxuICAgICAgICAgIHJlY29yZCA/IHRoaXMuZ240TWFwcGVyLnJlYWRSZWNvcmQocmVjb3JkKSA6IG9mKG51bGwpXG4gICAgICAgIClcbiAgICAgIClcbiAgfVxuXG4gIGdldFNpbWlsYXJSZWNvcmRzKHNpbWlsYXJUbzogQ2F0YWxvZ1JlY29yZCk6IE9ic2VydmFibGU8Q2F0YWxvZ1JlY29yZFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuZ240U2VhcmNoQXBpXG4gICAgICAuc2VhcmNoKFxuICAgICAgICAnYnVja2V0JyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgdGhpcy5nbjRTZWFyY2hIZWxwZXIuZ2V0UmVsYXRlZFJlY29yZFBheWxvYWQoXG4gICAgICAgICAgICBzaW1pbGFyVG8udGl0bGUsXG4gICAgICAgICAgICBzaW1pbGFyVG8udW5pcXVlSWRlbnRpZmllcixcbiAgICAgICAgICAgIDNcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHJlc3VsdHM6IEduNFNlYXJjaFJlc3VsdHMpID0+XG4gICAgICAgICAgdGhpcy5nbjRNYXBwZXIucmVhZFJlY29yZHMocmVzdWx0cy5oaXRzLmhpdHMpXG4gICAgICAgIClcbiAgICAgIClcbiAgfVxuICBhZ2dyZWdhdGUocGFyYW1zOiBBZ2dyZWdhdGlvbnNQYXJhbXMpOiBPYnNlcnZhYmxlPEFnZ3JlZ2F0aW9ucz4ge1xuICAgIC8vIGlmIGFnZ3JlZ2F0aW9ucyBhcmUgZW1wdHksIHJldHVybiBhbiBlbXB0eSBvYmplY3QgcmlnaHQgYXdheVxuICAgIGlmIChPYmplY3Qua2V5cyhwYXJhbXMpLmxlbmd0aCA9PT0gMCkgcmV0dXJuIG9mKHt9KVxuXG4gICAgY29uc3QgYWdncmVnYXRpb25zID0gdGhpcy5nbjRTZWFyY2hIZWxwZXIuYnVpbGRBZ2dyZWdhdGlvbnNQYXlsb2FkKHBhcmFtcylcbiAgICByZXR1cm4gdGhpcy5nbjRTZWFyY2hBcGlcbiAgICAgIC5zZWFyY2goXG4gICAgICAgICdidWNrZXQnLFxuICAgICAgICBudWxsLFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLmduNFNlYXJjaEhlbHBlci5nZXRTZWFyY2hSZXF1ZXN0Qm9keShhZ2dyZWdhdGlvbnMpKVxuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2U6IEduNFNlYXJjaFJlc3VsdHMpID0+XG4gICAgICAgICAgT2JqZWN0LmtleXMocmVzcG9uc2UuYWdncmVnYXRpb25zKS5yZWR1Y2UoXG4gICAgICAgICAgICAocHJldiwgY3VycikgPT4gKHtcbiAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgW2N1cnJdOiB0aGlzLmduNFNlYXJjaEhlbHBlci5wYXJzZUFnZ3JlZ2F0aW9uUmVzdWx0KFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlLmFnZ3JlZ2F0aW9uc1tjdXJyXSxcbiAgICAgICAgICAgICAgICBwYXJhbXNbY3Vycl1cbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge31cbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIClcbiAgfVxuXG4gIGZ1enp5U2VhcmNoKHF1ZXJ5OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFNlYXJjaFJlc3VsdHM+IHtcbiAgICByZXR1cm4gdGhpcy5nbjRTZWFyY2hBcGlcbiAgICAgIC5zZWFyY2goXG4gICAgICAgICdidWNrZXQnLFxuICAgICAgICBudWxsLFxuICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLmduNFNlYXJjaEhlbHBlci5idWlsZEF1dG9jb21wbGV0ZVBheWxvYWQocXVlcnkpKVxuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgocmVzdWx0czogR240U2VhcmNoUmVzdWx0cykgPT5cbiAgICAgICAgICB0aGlzLmduNE1hcHBlci5yZWFkUmVjb3JkcyhyZXN1bHRzLmhpdHMuaGl0cykudGhlbigocmVjb3JkcykgPT4gKHtcbiAgICAgICAgICAgIGNvdW50OiByZXN1bHRzLmhpdHMudG90YWw/LnZhbHVlIHx8IDAsXG4gICAgICAgICAgICByZWNvcmRzLFxuICAgICAgICAgIH0pKVxuICAgICAgICApXG4gICAgICApXG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBudWxsIGlmIHRoZSByZWNvcmQgaXMgbm90IGZvdW5kXG4gICAqL1xuICBwcml2YXRlIGxvYWRSZWNvcmRBc1htbCh1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmcpOiBPYnNlcnZhYmxlPHN0cmluZyB8IG51bGw+IHtcbiAgICByZXR1cm4gdGhpcy5nbjRSZWNvcmRzQXBpXG4gICAgICAuZ2V0UmVjb3JkQXMoXG4gICAgICAgIHVuaXF1ZUlkZW50aWZpZXIsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgZmFsc2UsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICdhcHBsaWNhdGlvbi94bWwnLFxuICAgICAgICAncmVzcG9uc2UnLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHsgaHR0cEhlYWRlckFjY2VwdDogJ3RleHQveG1sLGFwcGxpY2F0aW9uL3htbCcgYXMgJ2FwcGxpY2F0aW9uL3htbCcgfSAvLyB0aGlzIGlzIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSByZXNwb25zZSBpcyBwYXJzZWQgYXMgdGV4dFxuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzcG9uc2UpID0+IHJlc3BvbnNlLmJvZHkpLFxuICAgICAgICBjYXRjaEVycm9yKChlcnJvcjogSHR0cEVycm9yUmVzcG9uc2UpID0+XG4gICAgICAgICAgZXJyb3Iuc3RhdHVzID09PSA0MDQgPyBvZihudWxsKSA6IHRocm93RXJyb3IoKCkgPT4gZXJyb3IpXG4gICAgICAgIClcbiAgICAgIClcbiAgfVxuXG4gIHByaXZhdGUgZ2V0TG9jYWxTdG9yYWdlS2V5Rm9yUmVjb3JkKHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZykge1xuICAgIHJldHVybiBgZ2VvbmV0d29yay11aS1kcmFmdC0ke3VuaXF1ZUlkZW50aWZpZXJ9YFxuICB9XG5cbiAgb3BlblJlY29yZEZvckVkaXRpb24oXG4gICAgdW5pcXVlSWRlbnRpZmllcjogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8W0NhdGFsb2dSZWNvcmQsIHN0cmluZywgYm9vbGVhbl0gfCBudWxsPiB7XG4gICAgY29uc3QgZHJhZnQkID0gb2YoXG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oXG4gICAgICAgIHRoaXMuZ2V0TG9jYWxTdG9yYWdlS2V5Rm9yUmVjb3JkKHVuaXF1ZUlkZW50aWZpZXIpXG4gICAgICApXG4gICAgKVxuICAgIGNvbnN0IHJlY29yZEFzWG1sJCA9IHRoaXMubG9hZFJlY29yZEFzWG1sKHVuaXF1ZUlkZW50aWZpZXIpXG4gICAgcmV0dXJuIGNvbWJpbmVMYXRlc3QoW2RyYWZ0JCwgcmVjb3JkQXNYbWwkXSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgoW2RyYWZ0LCByZWNvcmRBc1htbF0pID0+IHtcbiAgICAgICAgY29uc3QgeG1sID0gZHJhZnQgPz8gcmVjb3JkQXNYbWxcbiAgICAgICAgY29uc3QgaXNTYXZlZEFscmVhZHkgPSByZWNvcmRBc1htbCAhPT0gbnVsbFxuICAgICAgICByZXR1cm4gZmluZENvbnZlcnRlckZvckRvY3VtZW50KHhtbClcbiAgICAgICAgICAucmVhZFJlY29yZCh4bWwpXG4gICAgICAgICAgLnRoZW4oXG4gICAgICAgICAgICAocmVjb3JkKSA9PlxuICAgICAgICAgICAgICBbcmVjb3JkLCB4bWwsIGlzU2F2ZWRBbHJlYWR5XSBhcyBbQ2F0YWxvZ1JlY29yZCwgc3RyaW5nLCBib29sZWFuXVxuICAgICAgICAgIClcbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBzZXJpYWxpemVSZWNvcmRUb1htbChcbiAgICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gICAgcmVmZXJlbmNlUmVjb3JkU291cmNlPzogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgLy8gaWYgdGhlcmUncyBhIHJlZmVyZW5jZSByZWNvcmQsIHVzZSB0aGF0IHN0YW5kYXJkOyBvdGhlcndpc2UsIHVzZSBpc28xOTEzOVxuICAgIGNvbnN0IGNvbnZlcnRlciA9IHJlZmVyZW5jZVJlY29yZFNvdXJjZVxuICAgICAgPyBmaW5kQ29udmVydGVyRm9yRG9jdW1lbnQocmVmZXJlbmNlUmVjb3JkU291cmNlKVxuICAgICAgOiBuZXcgSXNvMTkxMzlDb252ZXJ0ZXIoKVxuICAgIHJldHVybiBmcm9tKGNvbnZlcnRlci53cml0ZVJlY29yZChyZWNvcmQsIHJlZmVyZW5jZVJlY29yZFNvdXJjZSkpXG4gIH1cblxuICBzYXZlUmVjb3JkKFxuICAgIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgICByZWZlcmVuY2VSZWNvcmRTb3VyY2U/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemVSZWNvcmRUb1htbChyZWNvcmQsIHJlZmVyZW5jZVJlY29yZFNvdXJjZSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgocmVjb3JkWG1sKSA9PlxuICAgICAgICB0aGlzLmduNFJlY29yZHNBcGlcbiAgICAgICAgICAuaW5zZXJ0KFxuICAgICAgICAgICAgJ01FVEFEQVRBJyxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAnT1ZFUldSSVRFJyxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdfbm9uZV8nLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgcmVjb3JkWG1sXG4gICAgICAgICAgKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtZXRhZGF0YUlkID0gT2JqZWN0LmtleXMocmVzcG9uc2UubWV0YWRhdGFJbmZvcylbMF1cbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLm1ldGFkYXRhSW5mb3NbbWV0YWRhdGFJZF1bMF0udXVpZFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgc2F2ZVJlY29yZEFzRHJhZnQoXG4gICAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICAgIHJlZmVyZW5jZVJlY29yZFNvdXJjZT86IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZVJlY29yZFRvWG1sKHJlY29yZCwgcmVmZXJlbmNlUmVjb3JkU291cmNlKS5waXBlKFxuICAgICAgdGFwKChyZWNvcmRYbWwpID0+XG4gICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgICB0aGlzLmdldExvY2FsU3RvcmFnZUtleUZvclJlY29yZChyZWNvcmQudW5pcXVlSWRlbnRpZmllciksXG4gICAgICAgICAgcmVjb3JkWG1sXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBjbGVhclJlY29yZERyYWZ0KHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZyk6IHZvaWQge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcbiAgICAgIHRoaXMuZ2V0TG9jYWxTdG9yYWdlS2V5Rm9yUmVjb3JkKHVuaXF1ZUlkZW50aWZpZXIpXG4gICAgKVxuICB9XG5cbiAgcmVjb3JkSGFzRHJhZnQodW5pcXVlSWRlbnRpZmllcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcbiAgICAgICAgdGhpcy5nZXRMb2NhbFN0b3JhZ2VLZXlGb3JSZWNvcmQodW5pcXVlSWRlbnRpZmllcilcbiAgICAgICkgIT09IG51bGxcbiAgICApXG4gIH1cblxuICAvLyBnZW5lcmF0ZWQgYnkgY29waWxvdFxuICBnZXRBbGxEcmFmdHMoKTogT2JzZXJ2YWJsZTxDYXRhbG9nUmVjb3JkW10+IHtcbiAgICBjb25zdCBpdGVtcyA9IHsgLi4ud2luZG93LmxvY2FsU3RvcmFnZSB9XG4gICAgY29uc3QgZHJhZnRzID0gT2JqZWN0LmtleXMoaXRlbXMpXG4gICAgICAuZmlsdGVyKChrZXkpID0+IGtleS5zdGFydHNXaXRoKCdnZW9uZXR3b3JrLXVpLWRyYWZ0LScpKVxuICAgICAgLm1hcCgoa2V5KSA9PiB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSlcbiAgICAgIC5maWx0ZXIoKGRyYWZ0KSA9PiBkcmFmdCAhPT0gbnVsbClcbiAgICByZXR1cm4gZnJvbShcbiAgICAgIFByb21pc2UuYWxsKFxuICAgICAgICBkcmFmdHMubWFwKChkcmFmdCkgPT4gZmluZENvbnZlcnRlckZvckRvY3VtZW50KGRyYWZ0KS5yZWFkUmVjb3JkKGRyYWZ0KSlcbiAgICAgIClcbiAgICApXG4gIH1cbn1cbiJdfQ==
137
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ240LXJlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9yZXBvc2l0b3J5L3NyYy9saWIvZ240L2duNC1yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFDMUMsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixnQkFBZ0IsR0FDakIsTUFBTSw0Q0FBNEMsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUN0RCxPQUFPLEVBQ0wsYUFBYSxFQUNiLElBQUksRUFFSixFQUFFLEVBQ0YsU0FBUyxFQUNULFVBQVUsR0FDWCxNQUFNLE1BQU0sQ0FBQTtBQVdiLE9BQU8sRUFBRSxVQUFVLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQ3JELE9BQU8sRUFFTCx3QkFBd0IsRUFDeEIsWUFBWSxFQUVaLGlCQUFpQixHQUNsQixNQUFNLG1EQUFtRCxDQUFBOzs7OztBQUsxRCxNQUFNLE9BQU8sYUFBYTtJQUN4QixZQUNVLFlBQThCLEVBQzlCLGVBQXFDLEVBQ3JDLFNBQXVCLEVBQ3ZCLGFBQWdDO1FBSGhDLGlCQUFZLEdBQVosWUFBWSxDQUFrQjtRQUM5QixvQkFBZSxHQUFmLGVBQWUsQ0FBc0I7UUFDckMsY0FBUyxHQUFULFNBQVMsQ0FBYztRQUN2QixrQkFBYSxHQUFiLGFBQWEsQ0FBbUI7SUFDdkMsQ0FBQztJQUVKLE1BQU0sQ0FBQyxFQUNMLE9BQU8sRUFDUCxNQUFNLEVBQ04sTUFBTSxFQUNOLEtBQUssRUFDTCxJQUFJLEVBQ0osU0FBUyxFQUNULGNBQWMsR0FDRDtRQUNiLE9BQU8sSUFBSSxDQUFDLFlBQVk7YUFDckIsTUFBTSxDQUNMLFFBQVEsRUFDUixJQUFJLEVBQ0osSUFBSSxDQUFDLFNBQVMsQ0FDWixJQUFJLENB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LENBQUMsZ0JBQXdCO1FBQ3ZDLE1BQU0sQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUM1QixJQUFJLENBQUMsMkJBQTJCLENBQUMsZ0JBQWdCLENBQUMsQ0FDbkQsQ0FBQTtJQUNILENBQUM7SUFFRCxjQUFjLENBQUMsZ0JBQXdCO1FBQ3JDLE9BQU8sQ0FDTCxNQUFNLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FDekIsSUFBSSxDQUFDLDJCQUEyQixDQUFDLGdCQUFnQixDQUFDLENBQ25ELEtBQUssSUFBSSxDQUNYLENBQUE7SUFDSCxDQUFDO0lBRUQsdUJBQXVCO0lBQ3ZCLFlBQVk7UUFDVixNQUFNLEtBQUssR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDLFlBQVksRUFBRSxDQUFBO1FBQ3hDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDO2FBQzlCLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO2FBQ3ZELEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDOUMsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssSUFBSSxDQUFDLENBQUE7UUFDcEMsT0FBTyxJQUFJLENBQ1QsT0FBTyxDQUFDLEdBQUcsQ0FDVCxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FDekUsQ0FDRixDQUFBO0lBQ0gsQ0FBQzsrR0E3U1UsYUFBYTttSEFBYixhQUFhOzs0RkFBYixhQUFhO2tCQUR6QixVQUFVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnXG5pbXBvcnQge1xuICBSZWNvcmRzQXBpU2VydmljZSxcbiAgU2VhcmNoQXBpU2VydmljZSxcbn0gZnJvbSAnLi4vLi4vLi4vLi4vLi4vLi4vbGlicy9kYXRhLWFjY2Vzcy9nbjQvc3JjJ1xuaW1wb3J0IHsgRWxhc3RpY3NlYXJjaFNlcnZpY2UgfSBmcm9tICcuL2VsYXN0aWNzZWFyY2gnXG5pbXBvcnQge1xuICBjb21iaW5lTGF0ZXN0LFxuICBmcm9tLFxuICBPYnNlcnZhYmxlLFxuICBvZixcbiAgc3dpdGNoTWFwLFxuICB0aHJvd0Vycm9yLFxufSBmcm9tICdyeGpzJ1xuaW1wb3J0IHsgUmVjb3Jkc1JlcG9zaXRvcnlJbnRlcmZhY2UgfSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9yZXBvc2l0b3J5L3JlY29yZHMtcmVwb3NpdG9yeS5pbnRlcmZhY2UnXG5pbXBvcnQge1xuICBTZWFyY2hQYXJhbXMsXG4gIFNlYXJjaFJlc3VsdHMsXG59IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3NlYXJjaC9zZWFyY2gubW9kZWwnXG5pbXBvcnQge1xuICBBZ2dyZWdhdGlvbnMsXG4gIEFnZ3JlZ2F0aW9uc1BhcmFtcyxcbiAgRmllbGRGaWx0ZXJzLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2NvbW1vbi9kb21haW4vc3JjL2xpYi9tb2RlbC9zZWFyY2gnXG5pbXBvcnQgeyBjYXRjaEVycm9yLCBtYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJ1xuaW1wb3J0IHtcbiAgQmFzZUNvbnZlcnRlcixcbiAgZmluZENvbnZlcnRlckZvckRvY3VtZW50LFxuICBHbjRDb252ZXJ0ZXIsXG4gIEduNFNlYXJjaFJlc3VsdHMsXG4gIElzbzE5MTM5Q29udmVydGVyLFxufSBmcm9tICcuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2FwaS9tZXRhZGF0YS1jb252ZXJ0ZXIvc3JjJ1xuaW1wb3J0IHsgQ2F0YWxvZ1JlY29yZCB9IGZyb20gJy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL21vZGVsL3JlY29yZCdcbmltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnXG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBHbjRSZXBvc2l0b3J5IGltcGxlbWVudHMgUmVjb3Jkc1JlcG9zaXRvcnlJbnRlcmZhY2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGduNFNlYXJjaEFwaTogU2VhcmNoQXBpU2VydmljZSxcbiAgICBwcml2YXRlIGduNFNlYXJjaEhlbHBlcjogRWxhc3RpY3NlYXJjaFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBnbjRNYXBwZXI6IEduNENvbnZlcnRlcixcbiAgICBwcml2YXRlIGduNFJlY29yZHNBcGk6IFJlY29yZHNBcGlTZXJ2aWNlXG4gICkge31cblxuICBzZWFyY2goe1xuICAgIGZpbHRlcnMsXG4gICAgZmllbGRzLFxuICAgIG9mZnNldCxcbiAgICBsaW1pdCxcbiAgICBzb3J0LFxuICAgIGZpbHRlcklkcyxcbiAgICBmaWx0ZXJHZW9tZXRyeSxcbiAgfTogU2VhcmNoUGFyYW1zKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHRzPiB7XG4gICAgcmV0dXJuIHRoaXMuZ240U2VhcmNoQXBpXG4gICAgICAuc2VhcmNoKFxuICAgICAgICAnYnVja2V0JyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoXG4gICAgICAgICAgdGhpcy5nbjRTZWFyY2hIZWxwZXIuZ2V0U2VhcmNoUmVxdWVzdEJvZHkoXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICAgIGxpbWl0LFxuICAgICAgICAgICAgb2Zmc2V0LFxuICAgICAgICAgICAgc29ydCxcbiAgICAgICAgICAgIGZpZWxkcyxcbiAgICAgICAgICAgIGZpbHRlcnMsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICBmaWx0ZXJJZHMsXG4gICAgICAgICAgICBmaWx0ZXJHZW9tZXRyeVxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIHN3aXRjaE1hcCgocmVzdWx0czogR240U2VhcmNoUmVzdWx0cykgPT5cbiAgICAgICAgICB0aGlzLmduNE1hcHBlci5yZWFkUmVjb3JkcyhyZXN1bHRzLmhpdHMuaGl0cykudGhlbigocmVjb3JkcykgPT4gKHtcbiAgICAgICAgICAgIGNvdW50OiByZXN1bHRzLmhpdHMudG90YWw/LnZhbHVlIHx8IDAsXG4gICAgICAgICAgICByZWNvcmRzLFxuICAgICAgICAgIH0pKVxuICAgICAgICApXG4gICAgICApXG4gIH1cblxuICBnZXRNYXRjaGVzQ291bnQoZmlsdGVyczogRmllbGRGaWx0ZXJzKTogT2JzZXJ2YWJsZTxudW1iZXI+IHtcbiAgICByZXR1cm4gdGhpcy5nbjRTZWFyY2hBcGlcbiAgICAgIC5zZWFyY2goXG4gICAgICAgICdyZWNvcmRzLWNvdW50JyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIC4uLnRoaXMuZ240U2VhcmNoSGVscGVyLmdldFNlYXJjaFJlcXVlc3RCb2R5KFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgICAwLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGZpbHRlcnNcbiAgICAgICAgICApLFxuICAgICAgICAgIHRyYWNrX3RvdGFsX2hpdHM6IHRydWUsXG4gICAgICAgIH0pXG4gICAgICApXG4gICAgICAucGlwZShtYXAoKHJlc3VsdHM6IEduNFNlYXJjaFJlc3VsdHMpID0+IHJlc3VsdHMuaGl0cy50b3RhbD8udmFsdWUgfHwgMCkpXG4gIH1cblxuICBnZXRSZWNvcmQodW5pcXVlSWRlbnRpZmllcjogc3RyaW5nKTogT2JzZXJ2YWJsZTxDYXRhbG9nUmVjb3JkIHwgbnVsbD4ge1xuICAgIHJldHVybiB0aGlzLmduNFNlYXJjaEFwaVxuICAgICAgLnNlYXJjaChcbiAgICAgICAgJ2J1Y2tldCcsXG4gICAgICAgIG51bGwsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHRoaXMuZ240U2VhcmNoSGVscGVyLmdldE1ldGFkYXRhQnlJZFBheWxvYWQodW5pcXVlSWRlbnRpZmllcilcbiAgICAgICAgKVxuICAgICAgKVxuICAgICAgLnBpcGUoXG4gICAgICAgIG1hcCgocmVzdWx0czogR240U2VhcmNoUmVzdWx0cykgPT4gcmVzdWx0cy5oaXRzLmhpdHNbMF0pLFxuICAgICAgICBzd2l0Y2hNYXAoKHJlY29yZCkgPT5cbiAgICAgICAgICByZWNvcmQgPyB0aGlzLmduNE1hcHBlci5yZWFkUmVjb3JkKHJlY29yZCkgOiBvZihudWxsKVxuICAgICAgICApXG4gICAgICApXG4gIH1cblxuICBnZXRTaW1pbGFyUmVjb3JkcyhzaW1pbGFyVG86IENhdGFsb2dSZWNvcmQpOiBPYnNlcnZhYmxlPENhdGFsb2dSZWNvcmRbXT4ge1xuICAgIHJldHVybiB0aGlzLmduNFNlYXJjaEFwaVxuICAgICAgLnNlYXJjaChcbiAgICAgICAgJ2J1Y2tldCcsXG4gICAgICAgIG51bGwsXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KFxuICAgICAgICAgIHRoaXMuZ240U2VhcmNoSGVscGVyLmdldFJlbGF0ZWRSZWNvcmRQYXlsb2FkKFxuICAgICAgICAgICAgc2ltaWxhclRvLnRpdGxlLFxuICAgICAgICAgICAgc2ltaWxhclRvLnVuaXF1ZUlkZW50aWZpZXIsXG4gICAgICAgICAgICAzXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gICAgICAucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKChyZXN1bHRzOiBHbjRTZWFyY2hSZXN1bHRzKSA9PlxuICAgICAgICAgIHRoaXMuZ240TWFwcGVyLnJlYWRSZWNvcmRzKHJlc3VsdHMuaGl0cy5oaXRzKVxuICAgICAgICApXG4gICAgICApXG4gIH1cbiAgYWdncmVnYXRlKHBhcmFtczogQWdncmVnYXRpb25zUGFyYW1zKTogT2JzZXJ2YWJsZTxBZ2dyZWdhdGlvbnM+IHtcbiAgICAvLyBpZiBhZ2dyZWdhdGlvbnMgYXJlIGVtcHR5LCByZXR1cm4gYW4gZW1wdHkgb2JqZWN0IHJpZ2h0IGF3YXlcbiAgICBpZiAoT2JqZWN0LmtleXMocGFyYW1zKS5sZW5ndGggPT09IDApIHJldHVybiBvZih7fSlcblxuICAgIGNvbnN0IGFnZ3JlZ2F0aW9ucyA9IHRoaXMuZ240U2VhcmNoSGVscGVyLmJ1aWxkQWdncmVnYXRpb25zUGF5bG9hZChwYXJhbXMpXG4gICAgcmV0dXJuIHRoaXMuZ240U2VhcmNoQXBpXG4gICAgICAuc2VhcmNoKFxuICAgICAgICAnYnVja2V0JyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5nbjRTZWFyY2hIZWxwZXIuZ2V0U2VhcmNoUmVxdWVzdEJvZHkoYWdncmVnYXRpb25zKSlcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlOiBHbjRTZWFyY2hSZXN1bHRzKSA9PlxuICAgICAgICAgIE9iamVjdC5rZXlzKHJlc3BvbnNlLmFnZ3JlZ2F0aW9ucykucmVkdWNlKFxuICAgICAgICAgICAgKHByZXYsIGN1cnIpID0+ICh7XG4gICAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICAgIFtjdXJyXTogdGhpcy5nbjRTZWFyY2hIZWxwZXIucGFyc2VBZ2dyZWdhdGlvblJlc3VsdChcbiAgICAgICAgICAgICAgICByZXNwb25zZS5hZ2dyZWdhdGlvbnNbY3Vycl0sXG4gICAgICAgICAgICAgICAgcGFyYW1zW2N1cnJdXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9XG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApXG4gIH1cblxuICBmdXp6eVNlYXJjaChxdWVyeTogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHRzPiB7XG4gICAgcmV0dXJuIHRoaXMuZ240U2VhcmNoQXBpXG4gICAgICAuc2VhcmNoKFxuICAgICAgICAnYnVja2V0JyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5nbjRTZWFyY2hIZWxwZXIuYnVpbGRBdXRvY29tcGxldGVQYXlsb2FkKHF1ZXJ5KSlcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAoKHJlc3VsdHM6IEduNFNlYXJjaFJlc3VsdHMpID0+XG4gICAgICAgICAgdGhpcy5nbjRNYXBwZXIucmVhZFJlY29yZHMocmVzdWx0cy5oaXRzLmhpdHMpLnRoZW4oKHJlY29yZHMpID0+ICh7XG4gICAgICAgICAgICBjb3VudDogcmVzdWx0cy5oaXRzLnRvdGFsPy52YWx1ZSB8fCAwLFxuICAgICAgICAgICAgcmVjb3JkcyxcbiAgICAgICAgICB9KSlcbiAgICAgICAgKVxuICAgICAgKVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgbnVsbCBpZiB0aGUgcmVjb3JkIGlzIG5vdCBmb3VuZFxuICAgKi9cbiAgcHJpdmF0ZSBsb2FkUmVjb3JkQXNYbWwodW5pcXVlSWRlbnRpZmllcjogc3RyaW5nKTogT2JzZXJ2YWJsZTxzdHJpbmcgfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMuZ240UmVjb3Jkc0FwaVxuICAgICAgLmdldFJlY29yZEFzKFxuICAgICAgICB1bmlxdWVJZGVudGlmaWVyLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIGZhbHNlLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAnYXBwbGljYXRpb24veG1sJyxcbiAgICAgICAgJ3Jlc3BvbnNlJyxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICB7IGh0dHBIZWFkZXJBY2NlcHQ6ICd0ZXh0L3htbCxhcHBsaWNhdGlvbi94bWwnIGFzICdhcHBsaWNhdGlvbi94bWwnIH0gLy8gdGhpcyBpcyB0byBtYWtlIHN1cmUgdGhhdCB0aGUgcmVzcG9uc2UgaXMgcGFyc2VkIGFzIHRleHRcbiAgICAgIClcbiAgICAgIC5waXBlKFxuICAgICAgICBtYXAoKHJlc3BvbnNlKSA9PiByZXNwb25zZS5ib2R5KSxcbiAgICAgICAgY2F0Y2hFcnJvcigoZXJyb3I6IEh0dHBFcnJvclJlc3BvbnNlKSA9PlxuICAgICAgICAgIGVycm9yLnN0YXR1cyA9PT0gNDA0ID8gb2YobnVsbCkgOiB0aHJvd0Vycm9yKCgpID0+IGVycm9yKVxuICAgICAgICApXG4gICAgICApXG4gIH1cblxuICBwcml2YXRlIGdldExvY2FsU3RvcmFnZUtleUZvclJlY29yZCh1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gYGdlb25ldHdvcmstdWktZHJhZnQtJHt1bmlxdWVJZGVudGlmaWVyfWBcbiAgfVxuXG4gIG9wZW5SZWNvcmRGb3JFZGl0aW9uKFxuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPFtDYXRhbG9nUmVjb3JkLCBzdHJpbmcsIGJvb2xlYW5dIHwgbnVsbD4ge1xuICAgIGNvbnN0IGRyYWZ0JCA9IG9mKFxuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFxuICAgICAgICB0aGlzLmdldExvY2FsU3RvcmFnZUtleUZvclJlY29yZCh1bmlxdWVJZGVudGlmaWVyKVxuICAgICAgKVxuICAgIClcbiAgICBjb25zdCByZWNvcmRBc1htbCQgPSB0aGlzLmxvYWRSZWNvcmRBc1htbCh1bmlxdWVJZGVudGlmaWVyKVxuICAgIHJldHVybiBjb21iaW5lTGF0ZXN0KFtkcmFmdCQsIHJlY29yZEFzWG1sJF0pLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoKFtkcmFmdCwgcmVjb3JkQXNYbWxdKSA9PiB7XG4gICAgICAgIGNvbnN0IHhtbCA9IGRyYWZ0ID8/IHJlY29yZEFzWG1sXG4gICAgICAgIGNvbnN0IGlzU2F2ZWRBbHJlYWR5ID0gcmVjb3JkQXNYbWwgIT09IG51bGxcbiAgICAgICAgcmV0dXJuIGZpbmRDb252ZXJ0ZXJGb3JEb2N1bWVudCh4bWwpXG4gICAgICAgICAgLnJlYWRSZWNvcmQoeG1sKVxuICAgICAgICAgIC50aGVuKFxuICAgICAgICAgICAgKHJlY29yZCkgPT5cbiAgICAgICAgICAgICAgW3JlY29yZCwgeG1sLCBpc1NhdmVkQWxyZWFkeV0gYXMgW0NhdGFsb2dSZWNvcmQsIHN0cmluZywgYm9vbGVhbl1cbiAgICAgICAgICApXG4gICAgICB9KVxuICAgIClcbiAgfVxuXG4gIG9wZW5SZWNvcmRGb3JEdXBsaWNhdGlvbihcbiAgICB1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxbQ2F0YWxvZ1JlY29yZCwgc3RyaW5nLCBmYWxzZV0gfCBudWxsPiB7XG4gICAgcmV0dXJuIHRoaXMubG9hZFJlY29yZEFzWG1sKHVuaXF1ZUlkZW50aWZpZXIpLnBpcGUoXG4gICAgICBzd2l0Y2hNYXAoYXN5bmMgKHJlY29yZEFzWG1sKSA9PiB7XG4gICAgICAgIGNvbnN0IGNvbnZlcnRlciA9IGZpbmRDb252ZXJ0ZXJGb3JEb2N1bWVudChyZWNvcmRBc1htbClcbiAgICAgICAgY29uc3QgcmVjb3JkID0gYXdhaXQgY29udmVydGVyLnJlYWRSZWNvcmQocmVjb3JkQXNYbWwpXG4gICAgICAgIHJlY29yZC51bmlxdWVJZGVudGlmaWVyID0gYFRFTVAtSUQtJHtEYXRlLm5vdygpfWBcbiAgICAgICAgcmVjb3JkLnRpdGxlID0gYCR7cmVjb3JkLnRpdGxlfSAoQ29weSlgXG4gICAgICAgIGNvbnN0IHhtbCA9IGF3YWl0IGNvbnZlcnRlci53cml0ZVJlY29yZChyZWNvcmQsIHJlY29yZEFzWG1sKVxuICAgICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oXG4gICAgICAgICAgdGhpcy5nZXRMb2NhbFN0b3JhZ2VLZXlGb3JSZWNvcmQocmVjb3JkLnVuaXF1ZUlkZW50aWZpZXIpLFxuICAgICAgICAgIHhtbFxuICAgICAgICApXG4gICAgICAgIHJldHVybiBbcmVjb3JkLCB4bWwsIGZhbHNlXSBhcyBbQ2F0YWxvZ1JlY29yZCwgc3RyaW5nLCBmYWxzZV1cbiAgICAgIH0pXG4gICAgKVxuICB9XG5cbiAgcHJpdmF0ZSBzZXJpYWxpemVSZWNvcmRUb1htbChcbiAgICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gICAgcmVmZXJlbmNlUmVjb3JkU291cmNlPzogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPiB7XG4gICAgLy8gaWYgdGhlcmUncyBhIHJlZmVyZW5jZSByZWNvcmQsIHVzZSB0aGF0IHN0YW5kYXJkOyBvdGhlcndpc2UsIHVzZSBpc28xOTEzOVxuICAgIGNvbnN0IGNvbnZlcnRlciA9IHJlZmVyZW5jZVJlY29yZFNvdXJjZVxuICAgICAgPyBmaW5kQ29udmVydGVyRm9yRG9jdW1lbnQocmVmZXJlbmNlUmVjb3JkU291cmNlKVxuICAgICAgOiBuZXcgSXNvMTkxMzlDb252ZXJ0ZXIoKVxuICAgIHJldHVybiBmcm9tKGNvbnZlcnRlci53cml0ZVJlY29yZChyZWNvcmQsIHJlZmVyZW5jZVJlY29yZFNvdXJjZSkpXG4gIH1cblxuICBzYXZlUmVjb3JkKFxuICAgIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgICByZWZlcmVuY2VSZWNvcmRTb3VyY2U/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+IHtcbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemVSZWNvcmRUb1htbChyZWNvcmQsIHJlZmVyZW5jZVJlY29yZFNvdXJjZSkucGlwZShcbiAgICAgIHN3aXRjaE1hcCgocmVjb3JkWG1sKSA9PlxuICAgICAgICB0aGlzLmduNFJlY29yZHNBcGlcbiAgICAgICAgICAuaW5zZXJ0KFxuICAgICAgICAgICAgJ01FVEFEQVRBJyxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHRydWUsXG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAnT1ZFUldSSVRFJyxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICdfbm9uZV8nLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgcmVjb3JkWG1sXG4gICAgICAgICAgKVxuICAgICAgICAgIC5waXBlKFxuICAgICAgICAgICAgbWFwKChyZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBtZXRhZGF0YUlkID0gT2JqZWN0LmtleXMocmVzcG9uc2UubWV0YWRhdGFJbmZvcylbMF1cbiAgICAgICAgICAgICAgcmV0dXJuIHJlc3BvbnNlLm1ldGFkYXRhSW5mb3NbbWV0YWRhdGFJZF1bMF0udXVpZFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICApXG4gICAgKVxuICB9XG5cbiAgc2F2ZVJlY29yZEFzRHJhZnQoXG4gICAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICAgIHJlZmVyZW5jZVJlY29yZFNvdXJjZT86IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZVJlY29yZFRvWG1sKHJlY29yZCwgcmVmZXJlbmNlUmVjb3JkU291cmNlKS5waXBlKFxuICAgICAgdGFwKChyZWNvcmRYbWwpID0+XG4gICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShcbiAgICAgICAgICB0aGlzLmdldExvY2FsU3RvcmFnZUtleUZvclJlY29yZChyZWNvcmQudW5pcXVlSWRlbnRpZmllciksXG4gICAgICAgICAgcmVjb3JkWG1sXG4gICAgICAgIClcbiAgICAgIClcbiAgICApXG4gIH1cblxuICBjbGVhclJlY29yZERyYWZ0KHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZyk6IHZvaWQge1xuICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShcbiAgICAgIHRoaXMuZ2V0TG9jYWxTdG9yYWdlS2V5Rm9yUmVjb3JkKHVuaXF1ZUlkZW50aWZpZXIpXG4gICAgKVxuICB9XG5cbiAgcmVjb3JkSGFzRHJhZnQodW5pcXVlSWRlbnRpZmllcjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShcbiAgICAgICAgdGhpcy5nZXRMb2NhbFN0b3JhZ2VLZXlGb3JSZWNvcmQodW5pcXVlSWRlbnRpZmllcilcbiAgICAgICkgIT09IG51bGxcbiAgICApXG4gIH1cblxuICAvLyBnZW5lcmF0ZWQgYnkgY29waWxvdFxuICBnZXRBbGxEcmFmdHMoKTogT2JzZXJ2YWJsZTxDYXRhbG9nUmVjb3JkW10+IHtcbiAgICBjb25zdCBpdGVtcyA9IHsgLi4ud2luZG93LmxvY2FsU3RvcmFnZSB9XG4gICAgY29uc3QgZHJhZnRzID0gT2JqZWN0LmtleXMoaXRlbXMpXG4gICAgICAuZmlsdGVyKChrZXkpID0+IGtleS5zdGFydHNXaXRoKCdnZW9uZXR3b3JrLXVpLWRyYWZ0LScpKVxuICAgICAgLm1hcCgoa2V5KSA9PiB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oa2V5KSlcbiAgICAgIC5maWx0ZXIoKGRyYWZ0KSA9PiBkcmFmdCAhPT0gbnVsbClcbiAgICByZXR1cm4gZnJvbShcbiAgICAgIFByb21pc2UuYWxsKFxuICAgICAgICBkcmFmdHMubWFwKChkcmFmdCkgPT4gZmluZENvbnZlcnRlckZvckRvY3VtZW50KGRyYWZ0KS5yZWFkUmVjb3JkKGRyYWZ0KSlcbiAgICAgIClcbiAgICApXG4gIH1cbn1cbiJdfQ==
@@ -1,3 +1,3 @@
1
1
  export class RecordsRepositoryInterface {
2
2
  }
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3Jkcy1yZXBvc2l0b3J5LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3JlcG9zaXRvcnkvcmVjb3Jkcy1yZXBvc2l0b3J5LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLE9BQWdCLDBCQUEwQjtDQStDL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0aW9ucyxcbiAgQWdncmVnYXRpb25zUGFyYW1zLFxuICBGaWVsZEZpbHRlcnMsXG4gIFNlYXJjaFBhcmFtcyxcbiAgU2VhcmNoUmVzdWx0cyxcbn0gZnJvbSAnLi4vbW9kZWwvc2VhcmNoJ1xuaW1wb3J0IHsgQ2F0YWxvZ1JlY29yZCB9IGZyb20gJy4uL21vZGVsL3JlY29yZCdcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJlY29yZHNSZXBvc2l0b3J5SW50ZXJmYWNlIHtcbiAgYWJzdHJhY3Qgc2VhcmNoKHBhcmFtczogU2VhcmNoUGFyYW1zKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHRzPlxuICBhYnN0cmFjdCBnZXRNYXRjaGVzQ291bnQoZmlsdGVyczogRmllbGRGaWx0ZXJzKTogT2JzZXJ2YWJsZTxudW1iZXI+XG4gIGFic3RyYWN0IGdldFJlY29yZCh1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENhdGFsb2dSZWNvcmQgfCBudWxsPlxuICBhYnN0cmFjdCBhZ2dyZWdhdGUocGFyYW1zOiBBZ2dyZWdhdGlvbnNQYXJhbXMpOiBPYnNlcnZhYmxlPEFnZ3JlZ2F0aW9ucz5cbiAgYWJzdHJhY3QgZ2V0U2ltaWxhclJlY29yZHMoXG4gICAgc2ltaWxhclRvOiBDYXRhbG9nUmVjb3JkXG4gICk6IE9ic2VydmFibGU8Q2F0YWxvZ1JlY29yZFtdPlxuICBhYnN0cmFjdCBmdXp6eVNlYXJjaChxdWVyeTogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHRzPlxuXG4gIC8qKlxuICAgKiBUaGlzIGVtaXRzIG9uY2U6XG4gICAqIC0gcmVjb3JkIG9iamVjdDsgaWYgYSBkcmFmdCBleGlzdHMsIHRoaXMgd2lsbCByZXR1cm4gaXRcbiAgICogLSBzZXJpYWxpemVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZWNvcmQgYXMgdGV4dFxuICAgKiAtIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgcmVjb3JkIGhhcyBiZWVuIHNhdmVkIGF0IGxlYXN0IG9uY2UgaW4gYSBmaW5hbCB2ZXJzaW9uIChpLmUuIG5vdCBvbmx5IGFzIGRyYWZ0KVxuICAgKiBAcGFyYW0gdW5pcXVlSWRlbnRpZmllclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFtDYXRhbG9nUmVjb3JkLCBzdHJpbmcsIGJvb2xlYW5dIHwgbnVsbD5cbiAgICovXG4gIGFic3RyYWN0IG9wZW5SZWNvcmRGb3JFZGl0aW9uKFxuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPFtDYXRhbG9nUmVjb3JkLCBzdHJpbmcsIGJvb2xlYW5dIHwgbnVsbD5cblxuICAvKipcbiAgICogQHBhcmFtIHJlY29yZFxuICAgKiBAcGFyYW0gcmVmZXJlbmNlUmVjb3JkU291cmNlXG4gICAqIEByZXR1cm5zIE9ic2VydmFibGU8c3RyaW5nPiBSZXR1cm5zIHRoZSB1bmlxdWUgaWRlbnRpZmllciBvZiB0aGUgcmVjb3JkIGFzIGl0IHdhcyB3aGVuIHNhdmVkXG4gICAqL1xuICBhYnN0cmFjdCBzYXZlUmVjb3JkKFxuICAgIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgICByZWZlcmVuY2VSZWNvcmRTb3VyY2U/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+XG5cbiAgLyoqXG4gICAqIEBwYXJhbSByZWNvcmRcbiAgICogQHBhcmFtIHJlZmVyZW5jZVJlY29yZFNvdXJjZVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHN0cmluZz4gUmV0dXJucyB0aGUgc291cmNlIG9mIHRoZSByZWNvcmQgYXMgaXQgd2FzIHNlcmlhbGl6ZWQgd2hlbiBzYXZlZFxuICAgKi9cbiAgYWJzdHJhY3Qgc2F2ZVJlY29yZEFzRHJhZnQoXG4gICAgcmVjb3JkOiBDYXRhbG9nUmVjb3JkLFxuICAgIHJlZmVyZW5jZVJlY29yZFNvdXJjZT86IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPHN0cmluZz5cblxuICBhYnN0cmFjdCBjbGVhclJlY29yZERyYWZ0KHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZyk6IHZvaWRcbiAgYWJzdHJhY3QgcmVjb3JkSGFzRHJhZnQodW5pcXVlSWRlbnRpZmllcjogc3RyaW5nKTogYm9vbGVhblxuXG4gIC8qKiB3aWxsIHJldHVybiBhbGwgcGVuZGluZyBkcmFmdHMsIGJvdGggcHVibGlzaGVkIGFuZCBub3QgcHVibGlzaGVkICovXG4gIGFic3RyYWN0IGdldEFsbERyYWZ0cygpOiBPYnNlcnZhYmxlPENhdGFsb2dSZWNvcmRbXT5cbn1cbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3Jkcy1yZXBvc2l0b3J5LmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY29tbW9uL2RvbWFpbi9zcmMvbGliL3JlcG9zaXRvcnkvcmVjb3Jkcy1yZXBvc2l0b3J5LmludGVyZmFjZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLE9BQWdCLDBCQUEwQjtDQTJEL0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcydcbmltcG9ydCB7XG4gIEFnZ3JlZ2F0aW9ucyxcbiAgQWdncmVnYXRpb25zUGFyYW1zLFxuICBGaWVsZEZpbHRlcnMsXG4gIFNlYXJjaFBhcmFtcyxcbiAgU2VhcmNoUmVzdWx0cyxcbn0gZnJvbSAnLi4vbW9kZWwvc2VhcmNoJ1xuaW1wb3J0IHsgQ2F0YWxvZ1JlY29yZCB9IGZyb20gJy4uL21vZGVsL3JlY29yZCdcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJlY29yZHNSZXBvc2l0b3J5SW50ZXJmYWNlIHtcbiAgYWJzdHJhY3Qgc2VhcmNoKHBhcmFtczogU2VhcmNoUGFyYW1zKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHRzPlxuICBhYnN0cmFjdCBnZXRNYXRjaGVzQ291bnQoZmlsdGVyczogRmllbGRGaWx0ZXJzKTogT2JzZXJ2YWJsZTxudW1iZXI+XG4gIGFic3RyYWN0IGdldFJlY29yZCh1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmcpOiBPYnNlcnZhYmxlPENhdGFsb2dSZWNvcmQgfCBudWxsPlxuICBhYnN0cmFjdCBhZ2dyZWdhdGUocGFyYW1zOiBBZ2dyZWdhdGlvbnNQYXJhbXMpOiBPYnNlcnZhYmxlPEFnZ3JlZ2F0aW9ucz5cbiAgYWJzdHJhY3QgZ2V0U2ltaWxhclJlY29yZHMoXG4gICAgc2ltaWxhclRvOiBDYXRhbG9nUmVjb3JkXG4gICk6IE9ic2VydmFibGU8Q2F0YWxvZ1JlY29yZFtdPlxuICBhYnN0cmFjdCBmdXp6eVNlYXJjaChxdWVyeTogc3RyaW5nKTogT2JzZXJ2YWJsZTxTZWFyY2hSZXN1bHRzPlxuXG4gIC8qKlxuICAgKiBUaGlzIGVtaXRzIG9uY2U6XG4gICAqIC0gcmVjb3JkIG9iamVjdDsgaWYgYSBkcmFmdCBleGlzdHMsIHRoaXMgd2lsbCByZXR1cm4gaXRcbiAgICogLSBzZXJpYWxpemVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZWNvcmQgYXMgdGV4dFxuICAgKiAtIGJvb2xlYW4gaW5kaWNhdGluZyBpZiB0aGUgcmVjb3JkIGhhcyBiZWVuIHNhdmVkIGF0IGxlYXN0IG9uY2UgaW4gYSBmaW5hbCB2ZXJzaW9uIChpLmUuIG5vdCBvbmx5IGFzIGRyYWZ0KVxuICAgKiBAcGFyYW0gdW5pcXVlSWRlbnRpZmllclxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPFtDYXRhbG9nUmVjb3JkLCBzdHJpbmcsIGJvb2xlYW5dIHwgbnVsbD5cbiAgICovXG4gIGFic3RyYWN0IG9wZW5SZWNvcmRGb3JFZGl0aW9uKFxuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPFtDYXRhbG9nUmVjb3JkLCBzdHJpbmcsIGJvb2xlYW5dIHwgbnVsbD5cblxuICAvKipcbiAgICogVGhpcyBlbWl0cyBvbmNlOlxuICAgKiAtIHJlY29yZCBvYmplY3Qgd2l0aCBhIG5ldyB1bmlxdWUgaWRlbnRpZmllciBhbmQgc3VmZml4ZWQgdGl0bGVcbiAgICogLSBzZXJpYWxpemVkIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZWNvcmQgYXMgdGV4dFxuICAgKiAtIGZhbHNlLCBhcyB0aGUgZHVwbGljYXRlZCByZWNvcmQgaXMgYWx3YXlzIGEgZHJhZnRcbiAgICogQHBhcmFtIHVuaXF1ZUlkZW50aWZpZXJcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxbQ2F0YWxvZ1JlY29yZCwgc3RyaW5nLCBmYWxzZV0gfCBudWxsPlxuICAgKi9cbiAgYWJzdHJhY3Qgb3BlblJlY29yZEZvckR1cGxpY2F0aW9uKFxuICAgIHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZ1xuICApOiBPYnNlcnZhYmxlPFtDYXRhbG9nUmVjb3JkLCBzdHJpbmcsIGZhbHNlXSB8IG51bGw+XG5cbiAgLyoqXG4gICAqIEBwYXJhbSByZWNvcmRcbiAgICogQHBhcmFtIHJlZmVyZW5jZVJlY29yZFNvdXJjZVxuICAgKiBAcmV0dXJucyBPYnNlcnZhYmxlPHN0cmluZz4gUmV0dXJucyB0aGUgdW5pcXVlIGlkZW50aWZpZXIgb2YgdGhlIHJlY29yZCBhcyBpdCB3YXMgd2hlbiBzYXZlZFxuICAgKi9cbiAgYWJzdHJhY3Qgc2F2ZVJlY29yZChcbiAgICByZWNvcmQ6IENhdGFsb2dSZWNvcmQsXG4gICAgcmVmZXJlbmNlUmVjb3JkU291cmNlPzogc3RyaW5nXG4gICk6IE9ic2VydmFibGU8c3RyaW5nPlxuXG4gIC8qKlxuICAgKiBAcGFyYW0gcmVjb3JkXG4gICAqIEBwYXJhbSByZWZlcmVuY2VSZWNvcmRTb3VyY2VcbiAgICogQHJldHVybnMgT2JzZXJ2YWJsZTxzdHJpbmc+IFJldHVybnMgdGhlIHNvdXJjZSBvZiB0aGUgcmVjb3JkIGFzIGl0IHdhcyBzZXJpYWxpemVkIHdoZW4gc2F2ZWRcbiAgICovXG4gIGFic3RyYWN0IHNhdmVSZWNvcmRBc0RyYWZ0KFxuICAgIHJlY29yZDogQ2F0YWxvZ1JlY29yZCxcbiAgICByZWZlcmVuY2VSZWNvcmRTb3VyY2U/OiBzdHJpbmdcbiAgKTogT2JzZXJ2YWJsZTxzdHJpbmc+XG5cbiAgYWJzdHJhY3QgY2xlYXJSZWNvcmREcmFmdCh1bmlxdWVJZGVudGlmaWVyOiBzdHJpbmcpOiB2b2lkXG4gIGFic3RyYWN0IHJlY29yZEhhc0RyYWZ0KHVuaXF1ZUlkZW50aWZpZXI6IHN0cmluZyk6IGJvb2xlYW5cblxuICAvKiogd2lsbCByZXR1cm4gYWxsIHBlbmRpbmcgZHJhZnRzLCBib3RoIHB1Ymxpc2hlZCBhbmQgbm90IHB1Ymxpc2hlZCAqL1xuICBhYnN0cmFjdCBnZXRBbGxEcmFmdHMoKTogT2JzZXJ2YWJsZTxDYXRhbG9nUmVjb3JkW10+XG59XG4iXX0=