valtech-components 4.0.942 → 4.0.944
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.
- package/esm2022/lib/components/organisms/about-view/about-view.component.mjs +3 -3
- package/esm2022/lib/components/organisms/account-view/account-view.component.mjs +3 -3
- package/esm2022/lib/components/organisms/api-keys-view/api-keys-view.component.mjs +3 -3
- package/esm2022/lib/components/organisms/comment-thread/comment-thread.component.mjs +280 -0
- package/esm2022/lib/components/organisms/notification-preferences-view/notification-preferences-view.component.mjs +3 -3
- package/esm2022/lib/components/organisms/notifications-view/notifications-view.component.mjs +3 -3
- package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +3 -3
- package/esm2022/lib/components/organisms/permissions-view/permissions-view.component.mjs +3 -3
- package/esm2022/lib/components/organisms/preferences-view/preferences-view.component.mjs +5 -11
- package/esm2022/lib/components/organisms/profile-view/profile-content.component.mjs +3 -3
- package/esm2022/lib/components/organisms/security-view/security-view.component.mjs +3 -3
- package/esm2022/lib/components/organisms/settings-hub/settings-hub.component.mjs +3 -3
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/valtech-components.mjs +299 -31
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/comment-thread/comment-thread.component.d.ts +52 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -242,7 +242,7 @@ export class ApiKeysViewComponent {
|
|
|
242
242
|
</div>
|
|
243
243
|
}
|
|
244
244
|
</div>
|
|
245
|
-
`, isInline: true, styles: [".apikeys{max-width:720px;margin:0 auto;padding:8px 0 24px}.apikeys__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}.apikeys__text{flex:1;min-width:0}.apikeys__text val-display{display:block;margin-bottom:4px}.apikeys__cta{flex-shrink:0}.apikeys__list{display:flex;flex-direction:column;gap:10px}.apikey-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:12px;border:1px solid var(--val-border-color, rgba(0, 0, 0, .1))}.apikey-row__main{display:flex;flex-direction:column;gap:4px;min-width:0}.apikey-row__name{font-weight:600;color:var(--ion-color-dark)}.apikey-row__meta{font-size:.78rem;color:var(--ion-color-medium)}.apikey-row__creator{display:flex;align-items:center;gap:6px;font-size:.78rem;color:var(--ion-color-medium)}.apikey-row__creator-text{min-width:0}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: UserAvatarComponent, selector: "val-user-avatar", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: EmptyStateComponent, selector: "val-empty-state", inputs: ["props"] }, { kind: "component", type: SkeletonLayoutComponent, selector: "val-skeleton-layout", inputs: ["props"] }] }); }
|
|
245
|
+
`, isInline: true, styles: [".apikeys{max-width:720px;margin:0 auto;padding:8px 0 24px}:host-context([data-menu=\"collapsed\"]) .apikeys{@media (min-width: 1200px){max-width:900px}}.apikeys__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}.apikeys__text{flex:1;min-width:0}.apikeys__text val-display{display:block;margin-bottom:4px}.apikeys__cta{flex-shrink:0}.apikeys__list{display:flex;flex-direction:column;gap:10px}.apikey-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:12px;border:1px solid var(--val-border-color, rgba(0, 0, 0, .1))}.apikey-row__main{display:flex;flex-direction:column;gap:4px;min-width:0}.apikey-row__name{font-weight:600;color:var(--ion-color-dark)}.apikey-row__meta{font-size:.78rem;color:var(--ion-color-medium)}.apikey-row__creator{display:flex;align-items:center;gap:6px;font-size:.78rem;color:var(--ion-color-medium)}.apikey-row__creator-text{min-width:0}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: UserAvatarComponent, selector: "val-user-avatar", inputs: ["props"], outputs: ["onClick"] }, { kind: "component", type: EmptyStateComponent, selector: "val-empty-state", inputs: ["props"] }, { kind: "component", type: SkeletonLayoutComponent, selector: "val-skeleton-layout", inputs: ["props"] }] }); }
|
|
246
246
|
}
|
|
247
247
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ApiKeysViewComponent, decorators: [{
|
|
248
248
|
type: Component,
|
|
@@ -306,8 +306,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
306
306
|
</div>
|
|
307
307
|
}
|
|
308
308
|
</div>
|
|
309
|
-
`, styles: [".apikeys{max-width:720px;margin:0 auto;padding:8px 0 24px}.apikeys__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}.apikeys__text{flex:1;min-width:0}.apikeys__text val-display{display:block;margin-bottom:4px}.apikeys__cta{flex-shrink:0}.apikeys__list{display:flex;flex-direction:column;gap:10px}.apikey-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:12px;border:1px solid var(--val-border-color, rgba(0, 0, 0, .1))}.apikey-row__main{display:flex;flex-direction:column;gap:4px;min-width:0}.apikey-row__name{font-weight:600;color:var(--ion-color-dark)}.apikey-row__meta{font-size:.78rem;color:var(--ion-color-medium)}.apikey-row__creator{display:flex;align-items:center;gap:6px;font-size:.78rem;color:var(--ion-color-medium)}.apikey-row__creator-text{min-width:0}\n"] }]
|
|
309
|
+
`, styles: [".apikeys{max-width:720px;margin:0 auto;padding:8px 0 24px}:host-context([data-menu=\"collapsed\"]) .apikeys{@media (min-width: 1200px){max-width:900px}}.apikeys__header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}.apikeys__text{flex:1;min-width:0}.apikeys__text val-display{display:block;margin-bottom:4px}.apikeys__cta{flex-shrink:0}.apikeys__list{display:flex;flex-direction:column;gap:10px}.apikey-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:12px;border:1px solid var(--val-border-color, rgba(0, 0, 0, .1))}.apikey-row__main{display:flex;flex-direction:column;gap:4px;min-width:0}.apikey-row__name{font-weight:600;color:var(--ion-color-dark)}.apikey-row__meta{font-size:.78rem;color:var(--ion-color-medium)}.apikey-row__creator{display:flex;align-items:center;gap:6px;font-size:.78rem;color:var(--ion-color-medium)}.apikey-row__creator-text{min-width:0}\n"] }]
|
|
310
310
|
}], ctorParameters: () => [], propDecorators: { config: [{
|
|
311
311
|
type: Input
|
|
312
312
|
}] } });
|
|
313
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWtleXMtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2FwaS1rZXlzLXZpZXcvYXBpLWtleXMtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRXhGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBa0IsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTlELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRDQUE0QyxD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LE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM1RyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLEVBQUUsQ0FBQyxHQUFXO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDOytHQXRLVSxvQkFBb0I7bUdBQXBCLG9CQUFvQiwyR0F2SHJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0RULHU3QkE1REMsZUFBZSwwR0FDZixnQkFBZ0IsMkVBRWhCLGNBQWMseUVBQ2QsbUJBQW1CLHFHQUNuQixtQkFBbUIsK0VBQ25CLHVCQUF1Qjs7NEZBeUhkLG9CQUFvQjtrQkFuSWhDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUDt3QkFDUCxlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQix1QkFBdUI7cUJBQ3hCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvRFQ7d0RBZ0ZRLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgSW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRmlyZXN0b3JlLCBkb2MsIGdldERvYyB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvZmlyZXN0b3JlJztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlckF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3VzZXItYXZhdGFyL3VzZXItYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlRXJyb3JTdGF0ZVByb3BzIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2ZhY3RvcnknO1xuaW1wb3J0IHsgU2tlbGV0b25MYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi9za2VsZXRvbi1sYXlvdXQvc2tlbGV0b24tbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSwgQ29tcG9uZW50U3RhdGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBcGlLZXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXBpa2V5cy9hcGkta2V5cy5zZXJ2aWNlJztcbmltcG9ydCB7IENsaWVudEFwaUtleSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwaWtleXMvdHlwZXMnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uL25hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbHRlY2hFcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lcnJvcnMvdmFsdGVjaC1lcnJvci5zZXJ2aWNlJztcbmltcG9ydCB7IGludGVycHJldEVycm9yIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXJyb3JzL2ludGVycHJldC1lcnJvcic7XG5pbXBvcnQgeyBjb25uZWN0UGFnZVJlZnJlc2ggfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wYWdlLXJlZnJlc2gvcGFnZS1yZWZyZXNoLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBBcGlLZXlDcmVhdGVNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL2FwaS1rZXktY3JlYXRlLW1vZGFsL2FwaS1rZXktY3JlYXRlLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBUElfS0VZU19WSUVXX0kxOE4gfSBmcm9tICcuL2FwaS1rZXlzLXZpZXcuaTE4bic7XG5pbXBvcnQgeyBBcGlLZXlzVmlld0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdTZXR0aW5ncy5BcGlLZXlzJztcblxuLyoqIEtleSBlbnJpcXVlY2lkYSBjb24gZWwgcGVyZmlsIHDDumJsaWNvIChoYW5kbGUvYXZhdGFyL25hbWUpIGRlIHN1IGNyZWFkb3IuICovXG5pbnRlcmZhY2UgQXBpS2V5Um93IGV4dGVuZHMgQ2xpZW50QXBpS2V5IHtcbiAgY3JlYXRvck5hbWU/OiBzdHJpbmc7XG4gIGNyZWF0b3JIYW5kbGU/OiBzdHJpbmc7XG4gIGNyZWF0b3JBdmF0YXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogYHZhbC1hcGkta2V5cy12aWV3YCDigJQgdmlzdGEgZnVsbC1mZWF0dXJlIGRlIGdlc3Rpw7NuIGRlIENsaWVudCBBUEkgS2V5cyAoQURSLTAyMSkuXG4gKlxuICogUmVlbXBsYXphIGFsIGB2YWwtYXBpLWtleXMtbW9kYWxgIGNvbW8gcGFudGFsbGEgcHJvcGlhOiBvZnJlY2UgKipjcmVhcioqIGFycmliYVxuICogKENUQSBxdWUgYWJyZSBgdmFsLWFwaS1rZXktY3JlYXRlLW1vZGFsYCkgeSAqKmxpc3RhKiogYWJham8sIGNvbiBxdWnDqW4gbGEgY3Jlw7NcbiAqIChhdmF0YXIgKyBoYW5kbGUsIHJlc3VlbHRvIGRlIGAvcHJvZmlsZXNgKSB5IGxhIGZlY2hhIGRlIGNyZWFjacOzbi4gUmV2b2NhciBjb25cbiAqIGNvbmZpcm1hY2nDs24gZGVzdHJ1Y3RpdmEuIEVzdGFkb3MgbG9hZGluZyAvIGVycm9yIC8gZW1wdHkgKENhcGEgNCkuXG4gKlxuICogTk8gcmVuZGVyaXphIGlvbi1jb250ZW50IOKAlCB2aXZlIGRlbnRybyBkZSBgdmFsLXBhZ2Utd3JhcHBlcmAuIEhlYWRlciB2w61hXG4gKiBgTmF2aWdhdGlvblNlcnZpY2Uuc2V0QmFja0hlYWRlcmAuIGkxOG4gYXV0by1yZWdpc3RyYWRvIGJham8gYGkxOG5OYW1lc3BhY2VgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtYXBpLWtleXMtdmlldycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBUZXh0Q29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICAgIFVzZXJBdmF0YXJDb21wb25lbnQsXG4gICAgRW1wdHlTdGF0ZUNvbXBvbmVudCxcbiAgICBTa2VsZXRvbkxheW91dENvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiYXBpa2V5c1wiPlxuICAgICAgPGhlYWRlciBjbGFzcz1cImFwaWtleXNfX2hlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBpa2V5c19fdGV4dFwiPlxuICAgICAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieyBjb250ZW50OiB0dCgndGl0bGUnKSwgc2l6ZTogJ3NtYWxsJywgY29sb3I6ICdkYXJrJyB9XCIgLz5cbiAgICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHR0KCdzdWJ0aXRsZScpLCBzaXplOiAnbGFyZ2UnLCBjb2xvcjogJ2RhcmsnLCBib2xkOiBmYWxzZSB9XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDx2YWwtYnV0dG9uIGNsYXNzPVwiYXBpa2V5c19fY3RhXCIgW3Byb3BzXT1cIm5ld0tleUJ1dHRvbigpXCIgKG9uQ2xpY2spPVwib3BlbkNyZWF0ZSgpXCIgLz5cbiAgICAgIDwvaGVhZGVyPlxuXG4gICAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgICA8dmFsLXNrZWxldG9uLWxheW91dCBbcHJvcHNdPVwieyBwcmVzZXQ6ICdsaXN0Jywgcm93czogMyB9XCIgLz5cbiAgICAgIH0gQGVsc2UgaWYgKGVycm9yU3RhdGUoKSkge1xuICAgICAgICA8dmFsLWVtcHR5LXN0YXRlIFtwcm9wc109XCJlcnJvclN0YXRlKCkhXCIgLz5cbiAgICAgIH0gQGVsc2UgaWYgKGtleXMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgPHZhbC1lbXB0eS1zdGF0ZSBbcHJvcHNdPVwiZW1wdHlTdGF0ZSgpXCIgLz5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBpa2V5c19fbGlzdFwiPlxuICAgICAgICAgIEBmb3IgKGsgb2Yga2V5cygpOyB0cmFjayBrLmtleUlkKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBpa2V5LXJvd1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBpa2V5LXJvd19fbWFpblwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXBpa2V5LXJvd19fbmFtZVwiPnt7IGsubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFwaWtleS1yb3dfX21ldGFcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGsucGVybWlzc2lvbnMubGVuZ3RoIH19IHt7IHR0KCdwZXJtc0NvdW50JykgfX0gwrdcbiAgICAgICAgICAgICAgICAgIHt7IGsuc3RhdHVzID09PSAncmV2b2tlZCcgPyB0dCgnc3RhdHVzUmV2b2tlZCcpIDogdHQoJ3N0YXR1c0FjdGl2ZScpIH19IMK3IHt7IHR0KCdsYXN0VXNlZCcpIH19OlxuICAgICAgICAgICAgICAgICAge3sgZm9ybWF0RGF0ZShrLmxhc3RVc2VkQXQpIHx8IHR0KCduZXZlcicpIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXBpa2V5LXJvd19fY3JlYXRvclwiPlxuICAgICAgICAgICAgICAgICAgPHZhbC11c2VyLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGsuY3JlYXRvck5hbWUgfHwgay5jcmVhdG9ySGFuZGxlIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgIGF2YXRhclVybDogay5jcmVhdG9yQXZhdGFyLFxuICAgICAgICAgICAgICAgICAgICAgIHNpemU6ICd4c21hbGwnLFxuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFwaWtleS1yb3dfX2NyZWF0b3ItdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyB0dCgnY3JlYXRlZEJ5JykgfX1cbiAgICAgICAgICAgICAgICAgICAge3sgY3JlYXRvckxhYmVsKGspIH19XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZm9ybWF0RGF0ZShrLmNyZWF0ZWRBdCk7IGFzIGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICDCtyB7eyB0dCgnY3JlYXRlZE9uJykgfX0ge3sgZCB9fVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgQGlmIChrLnN0YXR1cyAhPT0gJ3Jldm9rZWQnKSB7XG4gICAgICAgICAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cInJldm9rZUJ1dHRvbihrKVwiIChvbkNsaWNrKT1cInJldm9rZShrKVwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5hcGlrZXlzIHtcbiAgICAgICAgbWF4LXdpZHRoOiA3MjBweDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIHBhZGRpbmc6IDhweCAwIDI0cHg7XG4gICAgICB9XG4gICAgICAuYXBpa2V5c19faGVhZGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiAxNnB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgICAgfVxuICAgICAgLmFwaWtleXNfX3RleHQge1xuICAgICAgICBmbGV4OiAxO1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG4gICAgICAuYXBpa2V5c19fdGV4dCB2YWwtZGlzcGxheSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICB9XG4gICAgICAuYXBpa2V5c19fY3RhIHtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG4gICAgICAuYXBpa2V5c19fbGlzdCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgIH1cbiAgICAgIC5hcGlrZXktcm93IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDEycHg7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMTRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tdmFsLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjEpKTtcbiAgICAgIH1cbiAgICAgIC5hcGlrZXktcm93X19tYWluIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIG1pbi13aWR0aDogMDtcbiAgICAgIH1cbiAgICAgIC5hcGlrZXktcm93X19uYW1lIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgIH1cbiAgICAgIC5hcGlrZXktcm93X19tZXRhIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICB9XG4gICAgICAuYXBpa2V5LXJvd19fY3JlYXRvciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgIH1cbiAgICAgIC5hcGlrZXktcm93X19jcmVhdG9yLXRleHQge1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgQXBpS2V5c1ZpZXdDb21wb25lbnQge1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIGFwaUtleXMgPSBpbmplY3QoQXBpS2V5U2VydmljZSk7XG4gIHByaXZhdGUgZmlyZXN0b3JlID0gaW5qZWN0KEZpcmVzdG9yZSk7XG4gIHByaXZhdGUgbmF2ID0gaW5qZWN0KE5hdmlnYXRpb25TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBtb2RhbFNlcnZpY2UgPSBpbmplY3QoTW9kYWxTZXJ2aWNlKTtcbiAgcHJpdmF0ZSB0b2FzdCA9IGluamVjdChUb2FzdFNlcnZpY2UpO1xuICBwcml2YXRlIGNvbmZpcm1EaWFsb2cgPSBpbmplY3QoQ29uZmlybWF0aW9uRGlhbG9nU2VydmljZSk7XG4gIHByaXZhdGUgZXJyb3JzID0gaW5qZWN0KFZhbHRlY2hFcnJvclNlcnZpY2UpO1xuICBwcml2YXRlIHJvdXRlID0gaW5qZWN0KEFjdGl2YXRlZFJvdXRlLCB7IG9wdGlvbmFsOiB0cnVlIH0pO1xuXG4gIC8qKiBDb25maWcgdsOtYSBASW5wdXQgKG9iamVjdC1maXJzdCk7IGZhbGxiYWNrIGFsIHJvdXRlIGRhdGEgYGFwaUtleXNDb25maWdgLiAqL1xuICBASW5wdXQoKSBjb25maWc/OiBBcGlLZXlzVmlld0NvbmZpZztcblxuICByZWFkb25seSByZXNvbHZlZENvbmZpZyA9IGNvbXB1dGVkPFJlcXVpcmVkPEFwaUtleXNWaWV3Q29uZmlnPj4oKCkgPT4ge1xuICAgIGNvbnN0IGZyb21Sb3V0ZSA9ICh0aGlzLnJvdXRlPy5zbmFwc2hvdC5kYXRhWydhcGlLZXlzQ29uZmlnJ10gPz8ge30pIGFzIEFwaUtleXNWaWV3Q29uZmlnO1xuICAgIGNvbnN0IG1lcmdlZDogQXBpS2V5c1ZpZXdDb25maWcgPSB7IC4uLmZyb21Sb3V0ZSwgLi4uKHRoaXMuY29uZmlnID8/IHt9KSB9O1xuICAgIHJldHVybiB7IGkxOG5OYW1lc3BhY2U6IG1lcmdlZC5pMThuTmFtZXNwYWNlID8/IERFRkFVTFRfTkFNRVNQQUNFIH07XG4gIH0pO1xuXG4gIHByaXZhdGUgZ2V0IG5zKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb2x2ZWRDb25maWcoKS5pMThuTmFtZXNwYWNlO1xuICB9XG5cbiAgcmVhZG9ubHkga2V5cyA9IHNpZ25hbDxBcGlLZXlSb3dbXT4oW10pO1xuICByZWFkb25seSBsb2FkaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgbG9hZEVycm9yID0gc2lnbmFsPHVua25vd24gfCBudWxsPihudWxsKTtcblxuICByZWFkb25seSBhY3RpdmVPcmdJZCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCB1ID0gdGhpcy5hdXRoLnVzZXIoKSBhcyB7IGFjdGl2ZU9yZ0lkPzogc3RyaW5nOyBhY3RpdmVPcmc/OiBzdHJpbmcgfSB8IG51bGw7XG4gICAgcmV0dXJuIHU/LmFjdGl2ZU9yZ0lkID8/IHU/LmFjdGl2ZU9yZyA/PyAnJztcbiAgfSk7XG5cbiAgcmVhZG9ubHkgbmV3S2V5QnV0dG9uID0gY29tcHV0ZWQ8UGFydGlhbDxCdXR0b25NZXRhZGF0YT4+KCgpID0+ICh7XG4gICAgdGV4dDogdGhpcy50dCgnbmV3S2V5JyksXG4gICAgY29sb3I6ICdkYXJrJyxcbiAgICBmaWxsOiAnc29saWQnLFxuICAgIHNoYXBlOiAncm91bmQnLFxuICAgIHNpemU6ICdzbWFsbCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgZXJyb3JTdGF0ZSA9IGNvbXB1dGVkPEVtcHR5U3RhdGVNZXRhZGF0YSB8IG51bGw+KCgpID0+IHtcbiAgICB0aGlzLmkxOG4ubGFuZygpO1xuICAgIGNvbnN0IGVyciA9IHRoaXMubG9hZEVycm9yKCk7XG4gICAgaWYgKCFlcnIpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBjcmVhdGVFcnJvclN0YXRlUHJvcHMoZXJyLCB7XG4gICAgICB0aXRsZTogeyBvZmZsaW5lOiB0aGlzLnR0KCdvZmZsaW5lVGl0bGUnKSwgZXJyb3I6IHRoaXMudHQoJ2Vycm9yVGl0bGUnKSB9LFxuICAgICAgZGVzY3JpcHRpb246IHsgb2ZmbGluZTogdGhpcy50dCgnb2ZmbGluZUhpbnQnKSwgZXJyb3I6IGludGVycHJldEVycm9yKGVycikubWVzc2FnZSB9LFxuICAgICAgcmV0cnlMYWJlbDogdGhpcy50dCgncmV0cnknKSxcbiAgICAgIG9uUmV0cnk6ICgpID0+IHRoaXMubG9hZCgpLFxuICAgICAgcmV0cnlpbmc6IHRoaXMubG9hZGluZygpLFxuICAgIH0pO1xuICB9KTtcblxuICByZWFkb25seSBlbXB0eVN0YXRlID0gY29tcHV0ZWQ8RW1wdHlTdGF0ZU1ldGFkYXRhPigoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICByZXR1cm4geyB2YXJpYW50OiAnZW1wdHknLCB0aXRsZTogdGhpcy50dCgnZW1wdHknKSwgZGVzY3JpcHRpb246IHRoaXMudHQoJ2VtcHR5SGludCcpIH07XG4gIH0pO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuaTE4bi5yZWdpc3RlckRlZmF1bHRzKHRoaXMubnMsIEFQSV9LRVlTX1ZJRVdfSTE4Tik7XG4gICAgdGhpcy5uYXYuc2V0QmFja0hlYWRlcigncGFnZVRpdGxlJywgdGhpcy5ucywgeyB3aXRoTWVudTogdHJ1ZSB9KTtcbiAgICB0aGlzLmxvYWQoKTtcbiAgICBjb25uZWN0UGFnZVJlZnJlc2goKCkgPT4gdGhpcy5sb2FkKCkpO1xuICB9XG5cbiAgcmV2b2tlQnV0dG9uKGs6IEFwaUtleVJvdyk6IFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+IHtcbiAgICByZXR1cm4ge1xuICAgICAgdGV4dDogdGhpcy50dCgncmV2b2tlJyksXG4gICAgICBjb2xvcjogJ2RhbmdlcicsXG4gICAgICBmaWxsOiAnY2xlYXInLFxuICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgIHR5cGU6ICdidXR0b24nLFxuICAgICAgc3RhdGU6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICAgICAgdG9rZW46IGsua2V5SWQsXG4gICAgfTtcbiAgfVxuXG4gIGxvYWQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFjdGl2ZU9yZ0lkKCkpIHJldHVybjtcbiAgICB0aGlzLmxvYWRpbmcuc2V0KHRydWUpO1xuICAgIHRoaXMubG9hZEVycm9yLnNldChudWxsKTtcbiAgICB0aGlzLmFwaUtleXMubGlzdCgpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiBhc3luYyBrZXlzID0+IHtcbiAgICAgICAgdGhpcy5rZXlzLnNldChhd2FpdCB0aGlzLmVucmljaFdpdGhDcmVhdG9ycyhrZXlzKSk7XG4gICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICB0aGlzLmxvYWRFcnJvci5zZXQoZXJyKTtcbiAgICAgICAgdGhpcy5sb2FkaW5nLnNldChmYWxzZSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgLyoqIFJlc3VlbHZlIGhhbmRsZS9hdmF0YXIvbmFtZSBkZWwgY3JlYWRvciAoYGNyZWF0ZWRCeWApIGRlc2RlIGAvcHJvZmlsZXNgLiAqL1xuICBwcml2YXRlIGFzeW5jIGVucmljaFdpdGhDcmVhdG9ycyhrZXlzOiBDbGllbnRBcGlLZXlbXSk6IFByb21pc2U8QXBpS2V5Um93W10+IHtcbiAgICBjb25zdCBpZHMgPSBBcnJheS5mcm9tKG5ldyBTZXQoa2V5cy5tYXAoayA9PiBrLmNyZWF0ZWRCeSkuZmlsdGVyKEJvb2xlYW4pKSk7XG4gICAgY29uc3QgcHJvZmlsZXMgPSBuZXcgTWFwPHN0cmluZywgeyBuYW1lPzogc3RyaW5nOyBoYW5kbGU/OiBzdHJpbmc7IGF2YXRhcj86IHN0cmluZyB9PigpO1xuICAgIGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIGlkcy5tYXAoYXN5bmMgaWQgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHNuYXAgPSBhd2FpdCBnZXREb2MoZG9jKHRoaXMuZmlyZXN0b3JlLCBgcHJvZmlsZXMvJHtpZH1gKSk7XG4gICAgICAgICAgY29uc3QgcCA9IHNuYXAuZXhpc3RzKCkgPyBzbmFwLmRhdGEoKSA6IHt9O1xuICAgICAgICAgIHByb2ZpbGVzLnNldChpZCwge1xuICAgICAgICAgICAgbmFtZTogcFsnbmFtZSddIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGhhbmRsZTogcFsnaGFuZGxlJ10gYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgYXZhdGFyOiAocFsnYXZhdGFyVXJsJ10gPz8gcFsnYXZhdGFyJ10pIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gcGVyZmlsIG5vIGFjY2VzaWJsZSDihpIgc2UgY2FlIGFsIGZhbGxiYWNrICh1bmtub3duVXNlci9jcmVhdGVkQnkpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgKTtcbiAgICByZXR1cm4ga2V5cy5tYXAoayA9PiB7XG4gICAgICBjb25zdCBwID0gcHJvZmlsZXMuZ2V0KGsuY3JlYXRlZEJ5KTtcbiAgICAgIHJldHVybiB7IC4uLmssIGNyZWF0b3JOYW1lOiBwPy5uYW1lLCBjcmVhdG9ySGFuZGxlOiBwPy5oYW5kbGUsIGNyZWF0b3JBdmF0YXI6IHA/LmF2YXRhciB9O1xuICAgIH0pO1xuICB9XG5cbiAgY3JlYXRvckxhYmVsKGs6IEFwaUtleVJvdyk6IHN0cmluZyB7XG4gICAgaWYgKGsuY3JlYXRvckhhbmRsZSkgcmV0dXJuICdAJyArIGsuY3JlYXRvckhhbmRsZTtcbiAgICBpZiAoay5jcmVhdG9yTmFtZSkgcmV0dXJuIGsuY3JlYXRvck5hbWU7XG4gICAgcmV0dXJuIHRoaXMudHQoJ3Vua25vd25Vc2VyJyk7XG4gIH1cblxuICBmb3JtYXREYXRlKGlzbz86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKCFpc28pIHJldHVybiAnJztcbiAgICBjb25zdCBkID0gbmV3IERhdGUoaXNvKTtcbiAgICBpZiAoaXNOYU4oZC5nZXRUaW1lKCkpKSByZXR1cm4gJyc7XG4gICAgcmV0dXJuIGQudG9Mb2NhbGVEYXRlU3RyaW5nKHRoaXMuaTE4bi5sYW5nKCksIHsgeWVhcjogJ251bWVyaWMnLCBtb250aDogJ3Nob3J0JywgZGF5OiAnbnVtZXJpYycgfSk7XG4gIH1cblxuICBvcGVuQ3JlYXRlKCk6IHZvaWQge1xuICAgIHZvaWQgdGhpcy5tb2RhbFNlcnZpY2Uub3BlbkFkYXB0aXZlKHtcbiAgICAgIGNvbXBvbmVudDogQXBpS2V5Q3JlYXRlTW9kYWxDb21wb25lbnQsXG4gICAgICBjb21wb25lbnRQcm9wczoge1xuICAgICAgICBvbkNyZWF0ZWQ6ICgpID0+IHRoaXMubG9hZCgpLFxuICAgICAgfSxcbiAgICAgIGJhY2tkcm9wRGlzbWlzczogdHJ1ZSxcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJldm9rZShrOiBBcGlLZXlSb3cpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCB0aGlzLmNvbmZpcm1EaWFsb2cuY29uZmlybURlc3RydWN0aXZlKHtcbiAgICAgIHRpdGxlOiB0aGlzLnR0KCdyZXZva2VDb25maXJtVGl0bGUnKSxcbiAgICAgIG1lc3NhZ2U6IHRoaXMudHQoJ3Jldm9rZUNvbmZpcm1NZXNzYWdlJyksXG4gICAgICBjb25maXJtQnV0dG9uOiB7IHRleHQ6IHRoaXMudHQoJ3Jldm9rZUNvbmZpcm1PaycpIH0sXG4gICAgICBjYW5jZWxCdXR0b246IHsgdGV4dDogdGhpcy50dCgnY2FuY2VsJykgfSxcbiAgICB9KTtcbiAgICBpZiAoIXJlc3VsdC5jb25maXJtZWQpIHJldHVybjtcbiAgICB0aGlzLmFwaUtleXMucmV2b2tlKGsua2V5SWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMudG9hc3Quc2hvdyh7IG1lc3NhZ2U6IHRoaXMudHQoJ3Jldm9rZVN1Y2Nlc3MnKSwgY29sb3I6ICdkYXJrJywgZHVyYXRpb246IDMwMDAgfSk7XG4gICAgICAgIHRoaXMubG9hZCgpO1xuICAgICAgfSxcbiAgICAgIGVycm9yOiBlcnIgPT4ge1xuICAgICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7IGNvbnRleHQ6ICdhcGlLZXlzLnJldm9rZScsIGZhbGxiYWNrS2V5OiAnZXJyb3JUaXRsZScsIGkxOG5OYW1lc3BhY2U6IHRoaXMubnMgfSk7XG4gICAgICB9LFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIHR0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCB0aGlzLm5zKTtcbiAgfVxufVxuIl19
|
|
313
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLWtleXMtdmlldy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2FwaS1rZXlzLXZpZXcvYXBpLWtleXMtdmlldy5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBRWpFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBRXhGLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQzVFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBQ3ZGLE9BQU8sRUFBa0IsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTlELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRDQUE0QyxDQUFDO0FBRTNFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGlEQUFpRCxDQUFDO0FBQ3BGLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDL0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLE1BQU0sbUVBQW1FLENBQUM7QUFDOUcsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDckYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzFFLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRXpGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQ3BHLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHNCQUFzQixDQUFDOztBQUcxRCxNQUFNLGlCQUFpQixHQUFHLGtCQUFrQixDQUFDO0FBUzdDOzs7Ozs7Ozs7O0dBVUc7QUE0SUgsTUFBTSxPQUFPLG9CQUFvQjtJQXFCL0IsSUFBWSxFQUFFO1FBQ1osT0FBTyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsYUFBYSxDQUFDO0lBQzdDLENBQUM7SUF1Q0Q7UUE3RFEsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQixTQUFJLEdBQUcsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQzNCLFlBQU8sR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDaEMsY0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QixRQUFHLEdBQUcsTUFBTSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDaEMsaUJBQVksR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDcEMsVUFBSyxHQUFHLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM3QixrQkFBYSxHQUFHLE1BQU0sQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ2xELFdBQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNyQyxVQUFLLEdBQUcsTUFBTSxDQUFDLGNBQWMsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBS2xELG1CQUFjLEdBQUcsUUFBUSxDQUE4QixHQUFHLEVBQUU7WUFDbkUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxDQUFzQixDQUFDO1lBQzFGLE1BQU0sTUFBTSxHQUFzQixFQUFFLEdBQUcsU0FBUyxFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDM0UsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLENBQUMsYUFBYSxJQUFJLGlCQUFpQixFQUFFLENBQUM7UUFDdEUsQ0FBQyxDQUFDLENBQUM7UUFNTSxTQUFJLEdBQUcsTUFBTSxDQUFjLEVBQUUsQ0FBQyxDQUFDO1FBQy9CLFlBQU8sR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEIsY0FBUyxHQUFHLE1BQU0sQ0FBaUIsSUFBSSxDQUFDLENBQUM7UUFFekMsZ0JBQVcsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFO1lBQ25DLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUF5RCxDQUFDO1lBQ2xGLE9BQU8sQ0FBQyxFQUFFLFdBQVcsSUFBSSxDQUFDLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQztRQUM5QyxDQUFDLENBQUMsQ0FBQztRQUVNLGlCQUFZLEdBQUcsUUFBUSxDQUEwQixHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQy9ELElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQztZQUN2QixLQUFLLEVBQUUsTUFBTTtZQUNiLElBQUksRUFBRSxPQUFPO1lBQ2IsS0FBSyxFQUFFLE9BQU87WUFDZCxJQUFJLEVBQUUsT0FBTztZQUNiLElBQUksRUFBRSxRQUFRO1lBQ2QsS0FBSyxFQUFFLGVBQWUsQ0FBQyxPQUFPO1NBQy9CLENBQUMsQ0FBQyxDQUFDO1FBRUssZUFBVSxHQUFHLFFBQVEsQ0FBNEIsR0FBRyxFQUFFO1lBQzdELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQzdCLElBQUksQ0FBQyxHQUFHO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1lBQ3RCLE9BQU8scUJBQXFCLENBQUMsR0FBRyxFQUFFO2dCQUNoQyxLQUFLLEVBQUUsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsRUFBRTtnQkFDekUsV0FBVyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsS0FBSyxFQUFFLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUU7Z0JBQ3BGLFVBQVUsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQztnQkFDNUIsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQzFCLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFO2FBQ3pCLENBQUMsQ0FBQztRQUNMLENBQUMsQ0FBQyxDQUFDO1FBRU0sZUFBVSxHQUFHLFFBQVEsQ0FBcUIsR0FBRyxFQUFFO1lBQ3RELElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDakIsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUMxRixDQUFDLENBQUMsQ0FBQztRQUdELElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3hELElBQUksQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDakUsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ1osa0JBQWtCLENBQUMsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELFlBQVksQ0FBQyxDQUFZO1FBQ3ZCLE9BQU87WUFDTCxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUM7WUFDdkIsS0FBSyxFQUFFLFFBQVE7WUFDZixJQUFJLEVBQUUsT0FBTztZQUNiLElBQUksRUFBRSxPQUFPO1lBQ2IsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsZUFBZSxDQUFDLE9BQU87WUFDOUIsS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLO1NBQ2YsQ0FBQztJQUNKLENBQUM7SUFFRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFBRSxPQUFPO1FBQ2hDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUMsU0FBUyxDQUFDO1lBQzVCLElBQUksRUFBRSxLQUFLLEVBQUMsSUFBSSxFQUFDLEVBQUU7Z0JBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7Z0JBQ25ELElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUU7Z0JBQ1gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsK0VBQStFO0lBQ3ZFLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxJQUFvQjtRQUNuRCxNQUFNLEdBQUcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RSxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBK0QsQ0FBQztRQUN4RixNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQ3RCLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLEVBQUUsRUFBQyxFQUFFO1lBQ2pCLElBQUksQ0FBQztnQkFDSCxNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDakUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztnQkFDM0MsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUU7b0JBQ2YsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQXVCO29CQUNyQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBdUI7b0JBQ3pDLE1BQU0sRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQXVCO2lCQUM5RCxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQUMsTUFBTSxDQUFDO2dCQUNQLG1FQUFtRTtZQUNyRSxDQUFDO1FBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNGLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNsQixNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNwQyxPQUFPLEVBQUUsR0FBRyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQztRQUM1RixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxZQUFZLENBQUMsQ0FBWTtRQUN2QixJQUFJLENBQUMsQ0FBQyxhQUFhO1lBQUUsT0FBTyxHQUFHLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQztRQUNsRCxJQUFJLENBQUMsQ0FBQyxXQUFXO1lBQUUsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBRUQsVUFBVSxDQUFDLEdBQVk7UUFDckIsSUFBSSxDQUFDLEdBQUc7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNwQixNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN4QixJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUNsQyxPQUFPLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO0lBQ3JHLENBQUM7SUFFRCxVQUFVO1FBQ1IsS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVksQ0FBQztZQUNsQyxTQUFTLEVBQUUsMEJBQTBCO1lBQ3JDLGNBQWMsRUFBRTtnQkFDZCxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTthQUM3QjtZQUNELGVBQWUsRUFBRSxJQUFJO1NBQ3RCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTSxDQUFDLENBQVk7UUFDdkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLGtCQUFrQixDQUFDO1lBQ3pELEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLG9CQUFvQixDQUFDO1lBQ3BDLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLHNCQUFzQixDQUFDO1lBQ3hDLGFBQWEsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7WUFDbkQsWUFBWSxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLEVBQUU7U0FDMUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTO1lBQUUsT0FBTztRQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3JDLElBQUksRUFBRSxHQUFHLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO2dCQUN0RixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDZCxDQUFDO1lBQ0QsS0FBSyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNYLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUM1RyxDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLEVBQUUsQ0FBQyxHQUFXO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDOytHQXRLVSxvQkFBb0I7bUdBQXBCLG9CQUFvQiwyR0EvSHJCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0RULHFoQ0E1REMsZUFBZSwwR0FDZixnQkFBZ0IsMkVBRWhCLGNBQWMseUVBQ2QsbUJBQW1CLHFHQUNuQixtQkFBbUIsK0VBQ25CLHVCQUF1Qjs7NEZBaUlkLG9CQUFvQjtrQkEzSWhDLFNBQVM7K0JBQ0UsbUJBQW1CLGNBQ2pCLElBQUksV0FDUDt3QkFDUCxlQUFlO3dCQUNmLGdCQUFnQjt3QkFDaEIsYUFBYTt3QkFDYixjQUFjO3dCQUNkLG1CQUFtQjt3QkFDbkIsbUJBQW1CO3dCQUNuQix1QkFBdUI7cUJBQ3hCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FvRFQ7d0RBd0ZRLE1BQU07c0JBQWQsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgSW5wdXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQWN0aXZhdGVkUm91dGUgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRmlyZXN0b3JlLCBkb2MsIGdldERvYyB9IGZyb20gJ0Bhbmd1bGFyL2ZpcmUvZmlyZXN0b3JlJztcblxuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGlzcGxheUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2Rpc3BsYXkvZGlzcGxheS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGV4dENvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RleHQvdGV4dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgVGl0bGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90aXRsZS90aXRsZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlckF2YXRhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3VzZXItYXZhdGFyL3VzZXItYXZhdGFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlTWV0YWRhdGEgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlRXJyb3JTdGF0ZVByb3BzIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2ZhY3RvcnknO1xuaW1wb3J0IHsgU2tlbGV0b25MYXlvdXRDb21wb25lbnQgfSBmcm9tICcuLi9za2VsZXRvbi1sYXlvdXQvc2tlbGV0b24tbGF5b3V0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSwgQ29tcG9uZW50U3RhdGVzIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hdXRoL2F1dGguc2VydmljZSc7XG5pbXBvcnQgeyBBcGlLZXlTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXBpa2V5cy9hcGkta2V5cy5zZXJ2aWNlJztcbmltcG9ydCB7IENsaWVudEFwaUtleSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwaWtleXMvdHlwZXMnO1xuaW1wb3J0IHsgTmF2aWdhdGlvblNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9uYXZpZ2F0aW9uL25hdmlnYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBNb2RhbFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tb2RhbC9tb2RhbC5zZXJ2aWNlJztcbmltcG9ydCB7IFRvYXN0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3RvYXN0LnNlcnZpY2UnO1xuaW1wb3J0IHsgQ29uZmlybWF0aW9uRGlhbG9nU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2NvbmZpcm1hdGlvbi1kaWFsb2cvY29uZmlybWF0aW9uLWRpYWxvZy5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbHRlY2hFcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lcnJvcnMvdmFsdGVjaC1lcnJvci5zZXJ2aWNlJztcbmltcG9ydCB7IGludGVycHJldEVycm9yIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXJyb3JzL2ludGVycHJldC1lcnJvcic7XG5pbXBvcnQgeyBjb25uZWN0UGFnZVJlZnJlc2ggfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9wYWdlLXJlZnJlc2gvcGFnZS1yZWZyZXNoLnNlcnZpY2UnO1xuXG5pbXBvcnQgeyBBcGlLZXlDcmVhdGVNb2RhbENvbXBvbmVudCB9IGZyb20gJy4uL2FwaS1rZXktY3JlYXRlLW1vZGFsL2FwaS1rZXktY3JlYXRlLW1vZGFsLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBBUElfS0VZU19WSUVXX0kxOE4gfSBmcm9tICcuL2FwaS1rZXlzLXZpZXcuaTE4bic7XG5pbXBvcnQgeyBBcGlLZXlzVmlld0NvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdTZXR0aW5ncy5BcGlLZXlzJztcblxuLyoqIEtleSBlbnJpcXVlY2lkYSBjb24gZWwgcGVyZmlsIHDDumJsaWNvIChoYW5kbGUvYXZhdGFyL25hbWUpIGRlIHN1IGNyZWFkb3IuICovXG5pbnRlcmZhY2UgQXBpS2V5Um93IGV4dGVuZHMgQ2xpZW50QXBpS2V5IHtcbiAgY3JlYXRvck5hbWU/OiBzdHJpbmc7XG4gIGNyZWF0b3JIYW5kbGU/OiBzdHJpbmc7XG4gIGNyZWF0b3JBdmF0YXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogYHZhbC1hcGkta2V5cy12aWV3YCDigJQgdmlzdGEgZnVsbC1mZWF0dXJlIGRlIGdlc3Rpw7NuIGRlIENsaWVudCBBUEkgS2V5cyAoQURSLTAyMSkuXG4gKlxuICogUmVlbXBsYXphIGFsIGB2YWwtYXBpLWtleXMtbW9kYWxgIGNvbW8gcGFudGFsbGEgcHJvcGlhOiBvZnJlY2UgKipjcmVhcioqIGFycmliYVxuICogKENUQSBxdWUgYWJyZSBgdmFsLWFwaS1rZXktY3JlYXRlLW1vZGFsYCkgeSAqKmxpc3RhKiogYWJham8sIGNvbiBxdWnDqW4gbGEgY3Jlw7NcbiAqIChhdmF0YXIgKyBoYW5kbGUsIHJlc3VlbHRvIGRlIGAvcHJvZmlsZXNgKSB5IGxhIGZlY2hhIGRlIGNyZWFjacOzbi4gUmV2b2NhciBjb25cbiAqIGNvbmZpcm1hY2nDs24gZGVzdHJ1Y3RpdmEuIEVzdGFkb3MgbG9hZGluZyAvIGVycm9yIC8gZW1wdHkgKENhcGEgNCkuXG4gKlxuICogTk8gcmVuZGVyaXphIGlvbi1jb250ZW50IOKAlCB2aXZlIGRlbnRybyBkZSBgdmFsLXBhZ2Utd3JhcHBlcmAuIEhlYWRlciB2w61hXG4gKiBgTmF2aWdhdGlvblNlcnZpY2Uuc2V0QmFja0hlYWRlcmAuIGkxOG4gYXV0by1yZWdpc3RyYWRvIGJham8gYGkxOG5OYW1lc3BhY2VgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtYXBpLWtleXMtdmlldycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBUZXh0Q29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICAgIFVzZXJBdmF0YXJDb21wb25lbnQsXG4gICAgRW1wdHlTdGF0ZUNvbXBvbmVudCxcbiAgICBTa2VsZXRvbkxheW91dENvbXBvbmVudCxcbiAgXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiYXBpa2V5c1wiPlxuICAgICAgPGhlYWRlciBjbGFzcz1cImFwaWtleXNfX2hlYWRlclwiPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBpa2V5c19fdGV4dFwiPlxuICAgICAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieyBjb250ZW50OiB0dCgndGl0bGUnKSwgc2l6ZTogJ3NtYWxsJywgY29sb3I6ICdkYXJrJyB9XCIgLz5cbiAgICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHR0KCdzdWJ0aXRsZScpLCBzaXplOiAnbGFyZ2UnLCBjb2xvcjogJ2RhcmsnLCBib2xkOiBmYWxzZSB9XCIgLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDx2YWwtYnV0dG9uIGNsYXNzPVwiYXBpa2V5c19fY3RhXCIgW3Byb3BzXT1cIm5ld0tleUJ1dHRvbigpXCIgKG9uQ2xpY2spPVwib3BlbkNyZWF0ZSgpXCIgLz5cbiAgICAgIDwvaGVhZGVyPlxuXG4gICAgICBAaWYgKGxvYWRpbmcoKSkge1xuICAgICAgICA8dmFsLXNrZWxldG9uLWxheW91dCBbcHJvcHNdPVwieyBwcmVzZXQ6ICdsaXN0Jywgcm93czogMyB9XCIgLz5cbiAgICAgIH0gQGVsc2UgaWYgKGVycm9yU3RhdGUoKSkge1xuICAgICAgICA8dmFsLWVtcHR5LXN0YXRlIFtwcm9wc109XCJlcnJvclN0YXRlKCkhXCIgLz5cbiAgICAgIH0gQGVsc2UgaWYgKGtleXMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgPHZhbC1lbXB0eS1zdGF0ZSBbcHJvcHNdPVwiZW1wdHlTdGF0ZSgpXCIgLz5cbiAgICAgIH0gQGVsc2Uge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiYXBpa2V5c19fbGlzdFwiPlxuICAgICAgICAgIEBmb3IgKGsgb2Yga2V5cygpOyB0cmFjayBrLmtleUlkKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBpa2V5LXJvd1wiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXBpa2V5LXJvd19fbWFpblwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXBpa2V5LXJvd19fbmFtZVwiPnt7IGsubmFtZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFwaWtleS1yb3dfX21ldGFcIj5cbiAgICAgICAgICAgICAgICAgIHt7IGsucGVybWlzc2lvbnMubGVuZ3RoIH19IHt7IHR0KCdwZXJtc0NvdW50JykgfX0gwrdcbiAgICAgICAgICAgICAgICAgIHt7IGsuc3RhdHVzID09PSAncmV2b2tlZCcgPyB0dCgnc3RhdHVzUmV2b2tlZCcpIDogdHQoJ3N0YXR1c0FjdGl2ZScpIH19IMK3IHt7IHR0KCdsYXN0VXNlZCcpIH19OlxuICAgICAgICAgICAgICAgICAge3sgZm9ybWF0RGF0ZShrLmxhc3RVc2VkQXQpIHx8IHR0KCduZXZlcicpIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXBpa2V5LXJvd19fY3JlYXRvclwiPlxuICAgICAgICAgICAgICAgICAgPHZhbC11c2VyLWF2YXRhclxuICAgICAgICAgICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGsuY3JlYXRvck5hbWUgfHwgay5jcmVhdG9ySGFuZGxlIHx8ICcnLFxuICAgICAgICAgICAgICAgICAgICAgIGF2YXRhclVybDogay5jcmVhdG9yQXZhdGFyLFxuICAgICAgICAgICAgICAgICAgICAgIHNpemU6ICd4c21hbGwnLFxuICAgICAgICAgICAgICAgICAgICB9XCJcbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImFwaWtleS1yb3dfX2NyZWF0b3ItdGV4dFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyB0dCgnY3JlYXRlZEJ5JykgfX1cbiAgICAgICAgICAgICAgICAgICAge3sgY3JlYXRvckxhYmVsKGspIH19XG4gICAgICAgICAgICAgICAgICAgIEBpZiAoZm9ybWF0RGF0ZShrLmNyZWF0ZWRBdCk7IGFzIGQpIHtcbiAgICAgICAgICAgICAgICAgICAgICDCtyB7eyB0dCgnY3JlYXRlZE9uJykgfX0ge3sgZCB9fVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgQGlmIChrLnN0YXR1cyAhPT0gJ3Jldm9rZWQnKSB7XG4gICAgICAgICAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cInJldm9rZUJ1dHRvbihrKVwiIChvbkNsaWNrKT1cInJldm9rZShrKVwiIC8+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIC5hcGlrZXlzIHtcbiAgICAgICAgbWF4LXdpZHRoOiA3MjBweDtcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XG4gICAgICAgIHBhZGRpbmc6IDhweCAwIDI0cHg7XG4gICAgICB9XG5cbiAgICAgIC8qIFNlZ3VuZG8gYW5jaG8sIGRlc2t0b3AgY29uIGVsIHJhaWwgcmV0cmHDrWRvLiBWZXIgc2V0dGluZ3MtaHViIHBhcmEgbGFcbiAgICAgICAgIGV4cGxpY2FjacOzbiBjb21wbGV0YSBkZWwgbWVjYW5pc21vLiAqL1xuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS1tZW51PSdjb2xsYXBzZWQnXSkgLmFwaWtleXMge1xuICAgICAgICBAbWVkaWEgKG1pbi13aWR0aDogMTIwMHB4KSB7XG4gICAgICAgICAgbWF4LXdpZHRoOiA5MDBweDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLmFwaWtleXNfX2hlYWRlciB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XG4gICAgICAgIGdhcDogMTZweDtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICAgIH1cbiAgICAgIC5hcGlrZXlzX190ZXh0IHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuICAgICAgLmFwaWtleXNfX3RleHQgdmFsLWRpc3BsYXkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgfVxuICAgICAgLmFwaWtleXNfX2N0YSB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgfVxuICAgICAgLmFwaWtleXNfX2xpc3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICB9XG4gICAgICAuYXBpa2V5LXJvdyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiAxMnB4O1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDE0cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLXZhbC1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4xKSk7XG4gICAgICB9XG4gICAgICAuYXBpa2V5LXJvd19fbWFpbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBtaW4td2lkdGg6IDA7XG4gICAgICB9XG4gICAgICAuYXBpa2V5LXJvd19fbmFtZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICB9XG4gICAgICAuYXBpa2V5LXJvd19fbWV0YSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0pO1xuICAgICAgfVxuICAgICAgLmFwaWtleS1yb3dfX2NyZWF0b3Ige1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDZweDtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICB9XG4gICAgICAuYXBpa2V5LXJvd19fY3JlYXRvci10ZXh0IHtcbiAgICAgICAgbWluLXdpZHRoOiAwO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEFwaUtleXNWaWV3Q29tcG9uZW50IHtcbiAgcHJpdmF0ZSBpMThuID0gaW5qZWN0KEkxOG5TZXJ2aWNlKTtcbiAgcHJpdmF0ZSBhdXRoID0gaW5qZWN0KEF1dGhTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBhcGlLZXlzID0gaW5qZWN0KEFwaUtleVNlcnZpY2UpO1xuICBwcml2YXRlIGZpcmVzdG9yZSA9IGluamVjdChGaXJlc3RvcmUpO1xuICBwcml2YXRlIG5hdiA9IGluamVjdChOYXZpZ2F0aW9uU2VydmljZSk7XG4gIHByaXZhdGUgbW9kYWxTZXJ2aWNlID0gaW5qZWN0KE1vZGFsU2VydmljZSk7XG4gIHByaXZhdGUgdG9hc3QgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBjb25maXJtRGlhbG9nID0gaW5qZWN0KENvbmZpcm1hdGlvbkRpYWxvZ1NlcnZpY2UpO1xuICBwcml2YXRlIGVycm9ycyA9IGluamVjdChWYWx0ZWNoRXJyb3JTZXJ2aWNlKTtcbiAgcHJpdmF0ZSByb3V0ZSA9IGluamVjdChBY3RpdmF0ZWRSb3V0ZSwgeyBvcHRpb25hbDogdHJ1ZSB9KTtcblxuICAvKiogQ29uZmlnIHbDrWEgQElucHV0IChvYmplY3QtZmlyc3QpOyBmYWxsYmFjayBhbCByb3V0ZSBkYXRhIGBhcGlLZXlzQ29uZmlnYC4gKi9cbiAgQElucHV0KCkgY29uZmlnPzogQXBpS2V5c1ZpZXdDb25maWc7XG5cbiAgcmVhZG9ubHkgcmVzb2x2ZWRDb25maWcgPSBjb21wdXRlZDxSZXF1aXJlZDxBcGlLZXlzVmlld0NvbmZpZz4+KCgpID0+IHtcbiAgICBjb25zdCBmcm9tUm91dGUgPSAodGhpcy5yb3V0ZT8uc25hcHNob3QuZGF0YVsnYXBpS2V5c0NvbmZpZyddID8/IHt9KSBhcyBBcGlLZXlzVmlld0NvbmZpZztcbiAgICBjb25zdCBtZXJnZWQ6IEFwaUtleXNWaWV3Q29uZmlnID0geyAuLi5mcm9tUm91dGUsIC4uLih0aGlzLmNvbmZpZyA/PyB7fSkgfTtcbiAgICByZXR1cm4geyBpMThuTmFtZXNwYWNlOiBtZXJnZWQuaTE4bk5hbWVzcGFjZSA/PyBERUZBVUxUX05BTUVTUEFDRSB9O1xuICB9KTtcblxuICBwcml2YXRlIGdldCBucygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc29sdmVkQ29uZmlnKCkuaTE4bk5hbWVzcGFjZTtcbiAgfVxuXG4gIHJlYWRvbmx5IGtleXMgPSBzaWduYWw8QXBpS2V5Um93W10+KFtdKTtcbiAgcmVhZG9ubHkgbG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHJlYWRvbmx5IGxvYWRFcnJvciA9IHNpZ25hbDx1bmtub3duIHwgbnVsbD4obnVsbCk7XG5cbiAgcmVhZG9ubHkgYWN0aXZlT3JnSWQgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgdSA9IHRoaXMuYXV0aC51c2VyKCkgYXMgeyBhY3RpdmVPcmdJZD86IHN0cmluZzsgYWN0aXZlT3JnPzogc3RyaW5nIH0gfCBudWxsO1xuICAgIHJldHVybiB1Py5hY3RpdmVPcmdJZCA/PyB1Py5hY3RpdmVPcmcgPz8gJyc7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IG5ld0tleUJ1dHRvbiA9IGNvbXB1dGVkPFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIHRleHQ6IHRoaXMudHQoJ25ld0tleScpLFxuICAgIGNvbG9yOiAnZGFyaycsXG4gICAgZmlsbDogJ3NvbGlkJyxcbiAgICBzaGFwZTogJ3JvdW5kJyxcbiAgICBzaXplOiAnc21hbGwnLFxuICAgIHR5cGU6ICdidXR0b24nLFxuICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgfSkpO1xuXG4gIHJlYWRvbmx5IGVycm9yU3RhdGUgPSBjb21wdXRlZDxFbXB0eVN0YXRlTWV0YWRhdGEgfCBudWxsPigoKSA9PiB7XG4gICAgdGhpcy5pMThuLmxhbmcoKTtcbiAgICBjb25zdCBlcnIgPSB0aGlzLmxvYWRFcnJvcigpO1xuICAgIGlmICghZXJyKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gY3JlYXRlRXJyb3JTdGF0ZVByb3BzKGVyciwge1xuICAgICAgdGl0bGU6IHsgb2ZmbGluZTogdGhpcy50dCgnb2ZmbGluZVRpdGxlJyksIGVycm9yOiB0aGlzLnR0KCdlcnJvclRpdGxlJykgfSxcbiAgICAgIGRlc2NyaXB0aW9uOiB7IG9mZmxpbmU6IHRoaXMudHQoJ29mZmxpbmVIaW50JyksIGVycm9yOiBpbnRlcnByZXRFcnJvcihlcnIpLm1lc3NhZ2UgfSxcbiAgICAgIHJldHJ5TGFiZWw6IHRoaXMudHQoJ3JldHJ5JyksXG4gICAgICBvblJldHJ5OiAoKSA9PiB0aGlzLmxvYWQoKSxcbiAgICAgIHJldHJ5aW5nOiB0aGlzLmxvYWRpbmcoKSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgcmVhZG9ubHkgZW1wdHlTdGF0ZSA9IGNvbXB1dGVkPEVtcHR5U3RhdGVNZXRhZGF0YT4oKCkgPT4ge1xuICAgIHRoaXMuaTE4bi5sYW5nKCk7XG4gICAgcmV0dXJuIHsgdmFyaWFudDogJ2VtcHR5JywgdGl0bGU6IHRoaXMudHQoJ2VtcHR5JyksIGRlc2NyaXB0aW9uOiB0aGlzLnR0KCdlbXB0eUhpbnQnKSB9O1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmkxOG4ucmVnaXN0ZXJEZWZhdWx0cyh0aGlzLm5zLCBBUElfS0VZU19WSUVXX0kxOE4pO1xuICAgIHRoaXMubmF2LnNldEJhY2tIZWFkZXIoJ3BhZ2VUaXRsZScsIHRoaXMubnMsIHsgd2l0aE1lbnU6IHRydWUgfSk7XG4gICAgdGhpcy5sb2FkKCk7XG4gICAgY29ubmVjdFBhZ2VSZWZyZXNoKCgpID0+IHRoaXMubG9hZCgpKTtcbiAgfVxuXG4gIHJldm9rZUJ1dHRvbihrOiBBcGlLZXlSb3cpOiBQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRleHQ6IHRoaXMudHQoJ3Jldm9rZScpLFxuICAgICAgY29sb3I6ICdkYW5nZXInLFxuICAgICAgZmlsbDogJ2NsZWFyJyxcbiAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICAgIHRva2VuOiBrLmtleUlkLFxuICAgIH07XG4gIH1cblxuICBsb2FkKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hY3RpdmVPcmdJZCgpKSByZXR1cm47XG4gICAgdGhpcy5sb2FkaW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLmxvYWRFcnJvci5zZXQobnVsbCk7XG4gICAgdGhpcy5hcGlLZXlzLmxpc3QoKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogYXN5bmMga2V5cyA9PiB7XG4gICAgICAgIHRoaXMua2V5cy5zZXQoYXdhaXQgdGhpcy5lbnJpY2hXaXRoQ3JlYXRvcnMoa2V5cykpO1xuICAgICAgICB0aGlzLmxvYWRpbmcuc2V0KGZhbHNlKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy5sb2FkRXJyb3Iuc2V0KGVycik7XG4gICAgICAgIHRoaXMubG9hZGluZy5zZXQoZmFsc2UpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBSZXN1ZWx2ZSBoYW5kbGUvYXZhdGFyL25hbWUgZGVsIGNyZWFkb3IgKGBjcmVhdGVkQnlgKSBkZXNkZSBgL3Byb2ZpbGVzYC4gKi9cbiAgcHJpdmF0ZSBhc3luYyBlbnJpY2hXaXRoQ3JlYXRvcnMoa2V5czogQ2xpZW50QXBpS2V5W10pOiBQcm9taXNlPEFwaUtleVJvd1tdPiB7XG4gICAgY29uc3QgaWRzID0gQXJyYXkuZnJvbShuZXcgU2V0KGtleXMubWFwKGsgPT4gay5jcmVhdGVkQnkpLmZpbHRlcihCb29sZWFuKSkpO1xuICAgIGNvbnN0IHByb2ZpbGVzID0gbmV3IE1hcDxzdHJpbmcsIHsgbmFtZT86IHN0cmluZzsgaGFuZGxlPzogc3RyaW5nOyBhdmF0YXI/OiBzdHJpbmcgfT4oKTtcbiAgICBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICBpZHMubWFwKGFzeW5jIGlkID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBzbmFwID0gYXdhaXQgZ2V0RG9jKGRvYyh0aGlzLmZpcmVzdG9yZSwgYHByb2ZpbGVzLyR7aWR9YCkpO1xuICAgICAgICAgIGNvbnN0IHAgPSBzbmFwLmV4aXN0cygpID8gc25hcC5kYXRhKCkgOiB7fTtcbiAgICAgICAgICBwcm9maWxlcy5zZXQoaWQsIHtcbiAgICAgICAgICAgIG5hbWU6IHBbJ25hbWUnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICBoYW5kbGU6IHBbJ2hhbmRsZSddIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIGF2YXRhcjogKHBbJ2F2YXRhclVybCddID8/IHBbJ2F2YXRhciddKSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIHBlcmZpbCBubyBhY2Nlc2libGUg4oaSIHNlIGNhZSBhbCBmYWxsYmFjayAodW5rbm93blVzZXIvY3JlYXRlZEJ5KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICk7XG4gICAgcmV0dXJuIGtleXMubWFwKGsgPT4ge1xuICAgICAgY29uc3QgcCA9IHByb2ZpbGVzLmdldChrLmNyZWF0ZWRCeSk7XG4gICAgICByZXR1cm4geyAuLi5rLCBjcmVhdG9yTmFtZTogcD8ubmFtZSwgY3JlYXRvckhhbmRsZTogcD8uaGFuZGxlLCBjcmVhdG9yQXZhdGFyOiBwPy5hdmF0YXIgfTtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0b3JMYWJlbChrOiBBcGlLZXlSb3cpOiBzdHJpbmcge1xuICAgIGlmIChrLmNyZWF0b3JIYW5kbGUpIHJldHVybiAnQCcgKyBrLmNyZWF0b3JIYW5kbGU7XG4gICAgaWYgKGsuY3JlYXRvck5hbWUpIHJldHVybiBrLmNyZWF0b3JOYW1lO1xuICAgIHJldHVybiB0aGlzLnR0KCd1bmtub3duVXNlcicpO1xuICB9XG5cbiAgZm9ybWF0RGF0ZShpc28/OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghaXNvKSByZXR1cm4gJyc7XG4gICAgY29uc3QgZCA9IG5ldyBEYXRlKGlzbyk7XG4gICAgaWYgKGlzTmFOKGQuZ2V0VGltZSgpKSkgcmV0dXJuICcnO1xuICAgIHJldHVybiBkLnRvTG9jYWxlRGF0ZVN0cmluZyh0aGlzLmkxOG4ubGFuZygpLCB7IHllYXI6ICdudW1lcmljJywgbW9udGg6ICdzaG9ydCcsIGRheTogJ251bWVyaWMnIH0pO1xuICB9XG5cbiAgb3BlbkNyZWF0ZSgpOiB2b2lkIHtcbiAgICB2b2lkIHRoaXMubW9kYWxTZXJ2aWNlLm9wZW5BZGFwdGl2ZSh7XG4gICAgICBjb21wb25lbnQ6IEFwaUtleUNyZWF0ZU1vZGFsQ29tcG9uZW50LFxuICAgICAgY29tcG9uZW50UHJvcHM6IHtcbiAgICAgICAgb25DcmVhdGVkOiAoKSA9PiB0aGlzLmxvYWQoKSxcbiAgICAgIH0sXG4gICAgICBiYWNrZHJvcERpc21pc3M6IHRydWUsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyByZXZva2UoazogQXBpS2V5Um93KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5jb25maXJtRGlhbG9nLmNvbmZpcm1EZXN0cnVjdGl2ZSh7XG4gICAgICB0aXRsZTogdGhpcy50dCgncmV2b2tlQ29uZmlybVRpdGxlJyksXG4gICAgICBtZXNzYWdlOiB0aGlzLnR0KCdyZXZva2VDb25maXJtTWVzc2FnZScpLFxuICAgICAgY29uZmlybUJ1dHRvbjogeyB0ZXh0OiB0aGlzLnR0KCdyZXZva2VDb25maXJtT2snKSB9LFxuICAgICAgY2FuY2VsQnV0dG9uOiB7IHRleHQ6IHRoaXMudHQoJ2NhbmNlbCcpIH0sXG4gICAgfSk7XG4gICAgaWYgKCFyZXN1bHQuY29uZmlybWVkKSByZXR1cm47XG4gICAgdGhpcy5hcGlLZXlzLnJldm9rZShrLmtleUlkKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKCkgPT4ge1xuICAgICAgICB0aGlzLnRvYXN0LnNob3coeyBtZXNzYWdlOiB0aGlzLnR0KCdyZXZva2VTdWNjZXNzJyksIGNvbG9yOiAnZGFyaycsIGR1cmF0aW9uOiAzMDAwIH0pO1xuICAgICAgICB0aGlzLmxvYWQoKTtcbiAgICAgIH0sXG4gICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwgeyBjb250ZXh0OiAnYXBpS2V5cy5yZXZva2UnLCBmYWxsYmFja0tleTogJ2Vycm9yVGl0bGUnLCBpMThuTmFtZXNwYWNlOiB0aGlzLm5zIH0pO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCB0dChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgdGhpcy5ucyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
import { Component, Input, Output, EventEmitter, signal, computed } from '@angular/core';
|
|
2
|
+
import { CommonModule } from '@angular/common';
|
|
3
|
+
import { FormsModule, ReactiveFormsModule, Validators } from '@angular/forms';
|
|
4
|
+
import { trigger, transition, style, animate } from '@angular/animations';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "@angular/forms";
|
|
7
|
+
import * as i2 from "@angular/common";
|
|
8
|
+
export class ValCommentThreadComponent {
|
|
9
|
+
set data(value) {
|
|
10
|
+
this._comments.set(value.comments || []);
|
|
11
|
+
this._isLoading.set(value.isLoading ?? false);
|
|
12
|
+
this._currentUserId.set(value.currentUserId ?? '');
|
|
13
|
+
}
|
|
14
|
+
constructor(fb) {
|
|
15
|
+
this.fb = fb;
|
|
16
|
+
this.title = 'Comentarios';
|
|
17
|
+
this.canComment = true;
|
|
18
|
+
this.canDelete = false;
|
|
19
|
+
this.commentAdded = new EventEmitter();
|
|
20
|
+
this.commentDeleted = new EventEmitter();
|
|
21
|
+
this.maxChars = 1000;
|
|
22
|
+
this._comments = signal([]);
|
|
23
|
+
this._isLoading = signal(false);
|
|
24
|
+
this._isSubmitting = signal(false);
|
|
25
|
+
this._currentUserId = signal('');
|
|
26
|
+
this.comments = this._comments.asReadonly();
|
|
27
|
+
this.isLoading = this._isLoading.asReadonly();
|
|
28
|
+
this.isSubmitting = this._isSubmitting.asReadonly();
|
|
29
|
+
this.commentCount = computed(() => this._comments().length);
|
|
30
|
+
this.charCount = computed(() => this.form.get('body')?.value?.length ?? 0);
|
|
31
|
+
this.form = this.fb.group({
|
|
32
|
+
body: ['', [Validators.required, Validators.maxLength(this.maxChars)]],
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
ngOnInit() { }
|
|
36
|
+
isOwnComment(comment) {
|
|
37
|
+
return comment.author.userId === this._currentUserId();
|
|
38
|
+
}
|
|
39
|
+
getInitials(name) {
|
|
40
|
+
return name
|
|
41
|
+
.split(' ')
|
|
42
|
+
.map(w => w[0])
|
|
43
|
+
.join('')
|
|
44
|
+
.toUpperCase()
|
|
45
|
+
.slice(0, 2);
|
|
46
|
+
}
|
|
47
|
+
roleLabel(role) {
|
|
48
|
+
const labels = {
|
|
49
|
+
submitter: 'Postulante',
|
|
50
|
+
reviewer: 'Revisor',
|
|
51
|
+
admin: 'Administrador',
|
|
52
|
+
};
|
|
53
|
+
return labels[role] || role;
|
|
54
|
+
}
|
|
55
|
+
formatTime(isoString) {
|
|
56
|
+
const date = new Date(isoString);
|
|
57
|
+
const now = new Date();
|
|
58
|
+
const diffMs = now.getTime() - date.getTime();
|
|
59
|
+
const diffMins = Math.floor(diffMs / 60000);
|
|
60
|
+
const diffHours = Math.floor(diffMs / 3600000);
|
|
61
|
+
const diffDays = Math.floor(diffMs / 86400000);
|
|
62
|
+
if (diffMins < 1)
|
|
63
|
+
return 'hace unos segundos';
|
|
64
|
+
if (diffMins < 60)
|
|
65
|
+
return `hace ${diffMins}m`;
|
|
66
|
+
if (diffHours < 24)
|
|
67
|
+
return `hace ${diffHours}h`;
|
|
68
|
+
if (diffDays < 7)
|
|
69
|
+
return `hace ${diffDays}d`;
|
|
70
|
+
return date.toLocaleDateString('es-CL', { month: 'short', day: 'numeric' });
|
|
71
|
+
}
|
|
72
|
+
onSubmit() {
|
|
73
|
+
if (!this.form.valid)
|
|
74
|
+
return;
|
|
75
|
+
this._isSubmitting.set(true);
|
|
76
|
+
const body = this.form.get('body')?.value;
|
|
77
|
+
this.commentAdded.emit(body);
|
|
78
|
+
// Reset form after short delay
|
|
79
|
+
setTimeout(() => {
|
|
80
|
+
this.form.reset();
|
|
81
|
+
this._isSubmitting.set(false);
|
|
82
|
+
}, 300);
|
|
83
|
+
}
|
|
84
|
+
onDeleteComment(commentId) {
|
|
85
|
+
if (confirm('¿Eliminar este comentario?')) {
|
|
86
|
+
this.commentDeleted.emit(commentId);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ValCommentThreadComponent, deps: [{ token: i1.FormBuilder }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
90
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: ValCommentThreadComponent, isStandalone: true, selector: "val-comment-thread", inputs: { title: "title", canComment: "canComment", canDelete: "canDelete", data: "data" }, outputs: { commentAdded: "commentAdded", commentDeleted: "commentDeleted" }, ngImport: i0, template: `
|
|
91
|
+
<div class="comment-thread">
|
|
92
|
+
<!-- Header -->
|
|
93
|
+
<div class="comment-header">
|
|
94
|
+
<h3>{{ title }}</h3>
|
|
95
|
+
<span class="comment-count" *ngIf="commentCount() > 0">
|
|
96
|
+
{{ commentCount() }} {{ commentCount() === 1 ? 'comentario' : 'comentarios' }}
|
|
97
|
+
</span>
|
|
98
|
+
</div>
|
|
99
|
+
|
|
100
|
+
<!-- Comments list -->
|
|
101
|
+
<div class="comments-list" @fadeIn *ngIf="!isLoading()">
|
|
102
|
+
<div *ngIf="comments().length === 0" class="empty-state">
|
|
103
|
+
<p>Sin comentarios aún. Sé el primero en comentar.</p>
|
|
104
|
+
</div>
|
|
105
|
+
|
|
106
|
+
<div
|
|
107
|
+
*ngFor="let comment of comments(); let last = last"
|
|
108
|
+
class="comment-item"
|
|
109
|
+
[class.is-own]="isOwnComment(comment)"
|
|
110
|
+
@slideIn
|
|
111
|
+
>
|
|
112
|
+
<!-- Avatar + header -->
|
|
113
|
+
<div class="comment-header-row">
|
|
114
|
+
<div class="avatar">{{ getInitials(comment.author.name) }}</div>
|
|
115
|
+
<div class="meta">
|
|
116
|
+
<div class="author-line">
|
|
117
|
+
<span class="author-name">{{ comment.author.name }}</span>
|
|
118
|
+
<span *ngIf="comment.author.role" class="author-role"> ({{ roleLabel(comment.author.role) }}) </span>
|
|
119
|
+
</div>
|
|
120
|
+
<time class="timestamp">{{ formatTime(comment.createdAt) }}</time>
|
|
121
|
+
</div>
|
|
122
|
+
<button
|
|
123
|
+
*ngIf="isOwnComment(comment) && canDelete"
|
|
124
|
+
class="btn-delete"
|
|
125
|
+
(click)="onDeleteComment(comment.commentId)"
|
|
126
|
+
aria-label="Eliminar comentario"
|
|
127
|
+
>
|
|
128
|
+
✕
|
|
129
|
+
</button>
|
|
130
|
+
</div>
|
|
131
|
+
|
|
132
|
+
<!-- Body -->
|
|
133
|
+
<div class="comment-body">{{ comment.body }}</div>
|
|
134
|
+
|
|
135
|
+
<!-- Divider (not on last) -->
|
|
136
|
+
<div *ngIf="!last" class="comment-divider"></div>
|
|
137
|
+
</div>
|
|
138
|
+
</div>
|
|
139
|
+
|
|
140
|
+
<!-- Loading -->
|
|
141
|
+
<div *ngIf="isLoading()" class="loading-state">
|
|
142
|
+
<div class="spinner"></div>
|
|
143
|
+
<p>Cargando comentarios...</p>
|
|
144
|
+
</div>
|
|
145
|
+
|
|
146
|
+
<!-- New comment form -->
|
|
147
|
+
<div *ngIf="canComment" class="comment-form" [formGroup]="form">
|
|
148
|
+
<textarea
|
|
149
|
+
formControlName="body"
|
|
150
|
+
placeholder="Escribe un comentario..."
|
|
151
|
+
class="textarea"
|
|
152
|
+
rows="3"
|
|
153
|
+
(keydown.ctrl.enter)="onSubmit()"
|
|
154
|
+
(keydown.meta.enter)="onSubmit()"
|
|
155
|
+
>
|
|
156
|
+
</textarea>
|
|
157
|
+
<div class="form-actions">
|
|
158
|
+
<span class="char-count" [class.near-limit]="charCount() > maxChars * 0.9">
|
|
159
|
+
{{ charCount() }} / {{ maxChars }}
|
|
160
|
+
</span>
|
|
161
|
+
<button type="button" class="btn-submit" [disabled]="!form.valid || isSubmitting()" (click)="onSubmit()">
|
|
162
|
+
{{ isSubmitting() ? 'Enviando...' : 'Comentar' }}
|
|
163
|
+
</button>
|
|
164
|
+
</div>
|
|
165
|
+
<div *ngIf="form.get('body')?.hasError('maxlength')" class="error-msg">Máximo {{ maxChars }} caracteres</div>
|
|
166
|
+
</div>
|
|
167
|
+
</div>
|
|
168
|
+
`, isInline: true, styles: [".comment-thread{display:flex;flex-direction:column;gap:1.5rem;padding:1.5rem;border-radius:.75rem;background:var(--color-bg-secondary, #f9f9f9);border:1px solid var(--color-border, #e0e0e0)}.comment-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;h3{margin:0;font-size:1rem;font-weight:700;color:var(--color-text-primary, #090f1b)}}.comment-count{font-size:.875rem;color:var(--color-text-muted, #6b7280);background:var(--color-bg-tertiary, #f3f3f3);padding:.25rem .75rem;border-radius:999px}.comments-list{display:flex;flex-direction:column;gap:0}.empty-state{text-align:center;padding:2rem 1rem;color:var(--color-text-muted, #6b7280);p{margin:0}}.comment-item{padding:1rem 0;display:flex;flex-direction:column;gap:.75rem;&.is-own{background:var(--color-bg-highlight, rgba(112, 38, 223, .05));padding:.75rem;border-radius:.5rem}}.comment-header-row{display:flex;align-items:flex-start;gap:.75rem}.avatar{width:2rem;height:2rem;border-radius:50%;background:var(--color-primary, #7026df);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;flex-shrink:0}.meta{flex:1}.author-line{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.author-name{font-weight:600;color:var(--color-text-primary, #090f1b);font-size:.95rem}.author-role{font-size:.8rem;color:var(--color-text-muted, #6b7280);background:var(--color-bg-tertiary, #f3f3f3);padding:.125rem .5rem;border-radius:.25rem}.timestamp{display:block;font-size:.8rem;color:var(--color-text-muted, #6b7280);margin-top:.25rem}.btn-delete{background:transparent;border:none;color:var(--color-text-muted, #6b7280);cursor:pointer;font-size:1.25rem;padding:.25rem .5rem;transition:color .2s;&:hover{color:var(--color-error, #ef4444)}}.comment-body{color:var(--color-text-primary, #090f1b);line-height:1.6;word-wrap:break-word;white-space:pre-wrap;font-size:.95rem;padding-left:2.75rem}.comment-divider{height:1px;background:var(--color-border, #e0e0e0);margin:.75rem 0}.loading-state{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:2rem 1rem;color:var(--color-text-muted, #6b7280);p{margin:0}}.spinner{width:1.5rem;height:1.5rem;border:2px solid var(--color-border, #e0e0e0);border-top-color:var(--color-primary, #7026df);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.comment-form{display:flex;flex-direction:column;gap:.75rem;padding:1rem;background:#fff;border:1px solid var(--color-border, #e0e0e0);border-radius:.5rem}.textarea{width:100%;padding:.75rem;border:1px solid var(--color-border, #e0e0e0);border-radius:.5rem;font-family:inherit;font-size:.95rem;resize:vertical;min-height:3rem;&:focus{outline:none;border-color:var(--color-primary, #7026df);box-shadow:0 0 0 3px var(--color-primary-light, rgba(112, 38, 223, .1))}}.form-actions{display:flex;align-items:center;justify-content:space-between;gap:1rem}.char-count{font-size:.8rem;color:var(--color-text-muted, #6b7280);&.near-limit{color:var(--color-warning, #f59e0b)}}.btn-submit{background:var(--color-primary, #7026df);color:#fff;border:none;padding:.5rem 1.5rem;border-radius:.5rem;font-weight:600;cursor:pointer;transition:background .2s,opacity .2s;&:hover:not(:disabled){background:var(--color-primary-dark, #5a1fb5)}&:disabled{opacity:.5;cursor:not-allowed}}.error-msg{font-size:.8rem;color:var(--color-error, #ef4444);margin-top:.25rem}@media (max-width: 640px){.comment-thread{padding:1rem}.comment-body{padding-left:0;margin-top:.5rem}.form-actions{flex-direction:column-reverse}.btn-submit{width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }], animations: [
|
|
169
|
+
trigger('fadeIn', [transition(':enter', [style({ opacity: 0 }), animate('200ms ease-in', style({ opacity: 1 }))])]),
|
|
170
|
+
trigger('slideIn', [
|
|
171
|
+
transition(':enter', [
|
|
172
|
+
style({ opacity: 0, transform: 'translateY(-0.5rem)' }),
|
|
173
|
+
animate('200ms ease-out', style({ opacity: 1, transform: 'translateY(0)' })),
|
|
174
|
+
]),
|
|
175
|
+
]),
|
|
176
|
+
] }); }
|
|
177
|
+
}
|
|
178
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ValCommentThreadComponent, decorators: [{
|
|
179
|
+
type: Component,
|
|
180
|
+
args: [{ selector: 'val-comment-thread', standalone: true, imports: [CommonModule, FormsModule, ReactiveFormsModule], template: `
|
|
181
|
+
<div class="comment-thread">
|
|
182
|
+
<!-- Header -->
|
|
183
|
+
<div class="comment-header">
|
|
184
|
+
<h3>{{ title }}</h3>
|
|
185
|
+
<span class="comment-count" *ngIf="commentCount() > 0">
|
|
186
|
+
{{ commentCount() }} {{ commentCount() === 1 ? 'comentario' : 'comentarios' }}
|
|
187
|
+
</span>
|
|
188
|
+
</div>
|
|
189
|
+
|
|
190
|
+
<!-- Comments list -->
|
|
191
|
+
<div class="comments-list" @fadeIn *ngIf="!isLoading()">
|
|
192
|
+
<div *ngIf="comments().length === 0" class="empty-state">
|
|
193
|
+
<p>Sin comentarios aún. Sé el primero en comentar.</p>
|
|
194
|
+
</div>
|
|
195
|
+
|
|
196
|
+
<div
|
|
197
|
+
*ngFor="let comment of comments(); let last = last"
|
|
198
|
+
class="comment-item"
|
|
199
|
+
[class.is-own]="isOwnComment(comment)"
|
|
200
|
+
@slideIn
|
|
201
|
+
>
|
|
202
|
+
<!-- Avatar + header -->
|
|
203
|
+
<div class="comment-header-row">
|
|
204
|
+
<div class="avatar">{{ getInitials(comment.author.name) }}</div>
|
|
205
|
+
<div class="meta">
|
|
206
|
+
<div class="author-line">
|
|
207
|
+
<span class="author-name">{{ comment.author.name }}</span>
|
|
208
|
+
<span *ngIf="comment.author.role" class="author-role"> ({{ roleLabel(comment.author.role) }}) </span>
|
|
209
|
+
</div>
|
|
210
|
+
<time class="timestamp">{{ formatTime(comment.createdAt) }}</time>
|
|
211
|
+
</div>
|
|
212
|
+
<button
|
|
213
|
+
*ngIf="isOwnComment(comment) && canDelete"
|
|
214
|
+
class="btn-delete"
|
|
215
|
+
(click)="onDeleteComment(comment.commentId)"
|
|
216
|
+
aria-label="Eliminar comentario"
|
|
217
|
+
>
|
|
218
|
+
✕
|
|
219
|
+
</button>
|
|
220
|
+
</div>
|
|
221
|
+
|
|
222
|
+
<!-- Body -->
|
|
223
|
+
<div class="comment-body">{{ comment.body }}</div>
|
|
224
|
+
|
|
225
|
+
<!-- Divider (not on last) -->
|
|
226
|
+
<div *ngIf="!last" class="comment-divider"></div>
|
|
227
|
+
</div>
|
|
228
|
+
</div>
|
|
229
|
+
|
|
230
|
+
<!-- Loading -->
|
|
231
|
+
<div *ngIf="isLoading()" class="loading-state">
|
|
232
|
+
<div class="spinner"></div>
|
|
233
|
+
<p>Cargando comentarios...</p>
|
|
234
|
+
</div>
|
|
235
|
+
|
|
236
|
+
<!-- New comment form -->
|
|
237
|
+
<div *ngIf="canComment" class="comment-form" [formGroup]="form">
|
|
238
|
+
<textarea
|
|
239
|
+
formControlName="body"
|
|
240
|
+
placeholder="Escribe un comentario..."
|
|
241
|
+
class="textarea"
|
|
242
|
+
rows="3"
|
|
243
|
+
(keydown.ctrl.enter)="onSubmit()"
|
|
244
|
+
(keydown.meta.enter)="onSubmit()"
|
|
245
|
+
>
|
|
246
|
+
</textarea>
|
|
247
|
+
<div class="form-actions">
|
|
248
|
+
<span class="char-count" [class.near-limit]="charCount() > maxChars * 0.9">
|
|
249
|
+
{{ charCount() }} / {{ maxChars }}
|
|
250
|
+
</span>
|
|
251
|
+
<button type="button" class="btn-submit" [disabled]="!form.valid || isSubmitting()" (click)="onSubmit()">
|
|
252
|
+
{{ isSubmitting() ? 'Enviando...' : 'Comentar' }}
|
|
253
|
+
</button>
|
|
254
|
+
</div>
|
|
255
|
+
<div *ngIf="form.get('body')?.hasError('maxlength')" class="error-msg">Máximo {{ maxChars }} caracteres</div>
|
|
256
|
+
</div>
|
|
257
|
+
</div>
|
|
258
|
+
`, animations: [
|
|
259
|
+
trigger('fadeIn', [transition(':enter', [style({ opacity: 0 }), animate('200ms ease-in', style({ opacity: 1 }))])]),
|
|
260
|
+
trigger('slideIn', [
|
|
261
|
+
transition(':enter', [
|
|
262
|
+
style({ opacity: 0, transform: 'translateY(-0.5rem)' }),
|
|
263
|
+
animate('200ms ease-out', style({ opacity: 1, transform: 'translateY(0)' })),
|
|
264
|
+
]),
|
|
265
|
+
]),
|
|
266
|
+
], styles: [".comment-thread{display:flex;flex-direction:column;gap:1.5rem;padding:1.5rem;border-radius:.75rem;background:var(--color-bg-secondary, #f9f9f9);border:1px solid var(--color-border, #e0e0e0)}.comment-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;h3{margin:0;font-size:1rem;font-weight:700;color:var(--color-text-primary, #090f1b)}}.comment-count{font-size:.875rem;color:var(--color-text-muted, #6b7280);background:var(--color-bg-tertiary, #f3f3f3);padding:.25rem .75rem;border-radius:999px}.comments-list{display:flex;flex-direction:column;gap:0}.empty-state{text-align:center;padding:2rem 1rem;color:var(--color-text-muted, #6b7280);p{margin:0}}.comment-item{padding:1rem 0;display:flex;flex-direction:column;gap:.75rem;&.is-own{background:var(--color-bg-highlight, rgba(112, 38, 223, .05));padding:.75rem;border-radius:.5rem}}.comment-header-row{display:flex;align-items:flex-start;gap:.75rem}.avatar{width:2rem;height:2rem;border-radius:50%;background:var(--color-primary, #7026df);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.75rem;font-weight:700;flex-shrink:0}.meta{flex:1}.author-line{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.author-name{font-weight:600;color:var(--color-text-primary, #090f1b);font-size:.95rem}.author-role{font-size:.8rem;color:var(--color-text-muted, #6b7280);background:var(--color-bg-tertiary, #f3f3f3);padding:.125rem .5rem;border-radius:.25rem}.timestamp{display:block;font-size:.8rem;color:var(--color-text-muted, #6b7280);margin-top:.25rem}.btn-delete{background:transparent;border:none;color:var(--color-text-muted, #6b7280);cursor:pointer;font-size:1.25rem;padding:.25rem .5rem;transition:color .2s;&:hover{color:var(--color-error, #ef4444)}}.comment-body{color:var(--color-text-primary, #090f1b);line-height:1.6;word-wrap:break-word;white-space:pre-wrap;font-size:.95rem;padding-left:2.75rem}.comment-divider{height:1px;background:var(--color-border, #e0e0e0);margin:.75rem 0}.loading-state{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:2rem 1rem;color:var(--color-text-muted, #6b7280);p{margin:0}}.spinner{width:1.5rem;height:1.5rem;border:2px solid var(--color-border, #e0e0e0);border-top-color:var(--color-primary, #7026df);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.comment-form{display:flex;flex-direction:column;gap:.75rem;padding:1rem;background:#fff;border:1px solid var(--color-border, #e0e0e0);border-radius:.5rem}.textarea{width:100%;padding:.75rem;border:1px solid var(--color-border, #e0e0e0);border-radius:.5rem;font-family:inherit;font-size:.95rem;resize:vertical;min-height:3rem;&:focus{outline:none;border-color:var(--color-primary, #7026df);box-shadow:0 0 0 3px var(--color-primary-light, rgba(112, 38, 223, .1))}}.form-actions{display:flex;align-items:center;justify-content:space-between;gap:1rem}.char-count{font-size:.8rem;color:var(--color-text-muted, #6b7280);&.near-limit{color:var(--color-warning, #f59e0b)}}.btn-submit{background:var(--color-primary, #7026df);color:#fff;border:none;padding:.5rem 1.5rem;border-radius:.5rem;font-weight:600;cursor:pointer;transition:background .2s,opacity .2s;&:hover:not(:disabled){background:var(--color-primary-dark, #5a1fb5)}&:disabled{opacity:.5;cursor:not-allowed}}.error-msg{font-size:.8rem;color:var(--color-error, #ef4444);margin-top:.25rem}@media (max-width: 640px){.comment-thread{padding:1rem}.comment-body{padding-left:0;margin-top:.5rem}.form-actions{flex-direction:column-reverse}.btn-submit{width:100%}}\n"] }]
|
|
267
|
+
}], ctorParameters: () => [{ type: i1.FormBuilder }], propDecorators: { title: [{
|
|
268
|
+
type: Input
|
|
269
|
+
}], canComment: [{
|
|
270
|
+
type: Input
|
|
271
|
+
}], canDelete: [{
|
|
272
|
+
type: Input
|
|
273
|
+
}], data: [{
|
|
274
|
+
type: Input
|
|
275
|
+
}], commentAdded: [{
|
|
276
|
+
type: Output
|
|
277
|
+
}], commentDeleted: [{
|
|
278
|
+
type: Output
|
|
279
|
+
}] } });
|
|
280
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC10aHJlYWQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL29yZ2FuaXNtcy9jb21tZW50LXRocmVhZC9jb21tZW50LXRocmVhZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLFlBQVksRUFBVSxNQUFNLEVBQUUsUUFBUSxFQUFVLE1BQU0sZUFBZSxDQUFDO0FBQ3pHLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUEwQixVQUFVLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN0RyxPQUFPLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE1BQU0scUJBQXFCLENBQUM7Ozs7QUF3WDFFLE1BQU0sT0FBTyx5QkFBeUI7SUFJcEMsSUFBYSxJQUFJLENBQUMsS0FBb0I7UUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFFBQVEsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUN6QyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxhQUFhLElBQUksRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQztJQW9CRCxZQUFvQixFQUFlO1FBQWYsT0FBRSxHQUFGLEVBQUUsQ0FBYTtRQTNCMUIsVUFBSyxHQUFHLGFBQWEsQ0FBQztRQUN0QixlQUFVLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLGNBQVMsR0FBRyxLQUFLLENBQUM7UUFPakIsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVSxD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QUFFLHFCQUFxQixFQUFFLENBQUM7Z0NBQ3ZELE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDOzZCQUM3RSxDQUFDO3lCQUNILENBQUM7cUJBQ0g7Z0ZBR1EsS0FBSztzQkFBYixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDTyxJQUFJO3NCQUFoQixLQUFLO2dCQU1JLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgSW5wdXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBPbkluaXQsIHNpZ25hbCwgY29tcHV0ZWQsIGVmZmVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3JtQnVpbGRlciwgRm9ybUdyb3VwLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgdHJpZ2dlciwgdHJhbnNpdGlvbiwgc3R5bGUsIGFuaW1hdGUgfSBmcm9tICdAYW5ndWxhci9hbmltYXRpb25zJztcblxuZXhwb3J0IGludGVyZmFjZSBDb21tZW50VGhyZWFkIHtcbiAgcmVxdWVzdElkOiBzdHJpbmc7XG4gIGNvbW1lbnRzOiBDb21tZW50W107XG4gIGlzTG9hZGluZz86IGJvb2xlYW47XG4gIGNhbkNvbW1lbnQ/OiBib29sZWFuO1xuICBjdXJyZW50VXNlcklkPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbW1lbnQge1xuICBjb21tZW50SWQ6IHN0cmluZztcbiAgcmVxdWVzdElkOiBzdHJpbmc7XG4gIGF1dGhvcjoge1xuICAgIHVzZXJJZD86IHN0cmluZztcbiAgICBvcmdJZD86IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgcm9sZT86IHN0cmluZzsgLy8gJ3N1Ym1pdHRlcicgfCAncmV2aWV3ZXInIHwgJ2FkbWluJ1xuICB9O1xuICBib2R5OiBzdHJpbmc7XG4gIGNyZWF0ZWRBdDogc3RyaW5nO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY29tbWVudC10aHJlYWQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdiBjbGFzcz1cImNvbW1lbnQtdGhyZWFkXCI+XG4gICAgICA8IS0tIEhlYWRlciAtLT5cbiAgICAgIDxkaXYgY2xhc3M9XCJjb21tZW50LWhlYWRlclwiPlxuICAgICAgICA8aDM+e3sgdGl0bGUgfX08L2gzPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImNvbW1lbnQtY291bnRcIiAqbmdJZj1cImNvbW1lbnRDb3VudCgpID4gMFwiPlxuICAgICAgICAgIHt7IGNvbW1lbnRDb3VudCgpIH19IHt7IGNvbW1lbnRDb3VudCgpID09PSAxID8gJ2NvbWVudGFyaW8nIDogJ2NvbWVudGFyaW9zJyB9fVxuICAgICAgICA8L3NwYW4+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBDb21tZW50cyBsaXN0IC0tPlxuICAgICAgPGRpdiBjbGFzcz1cImNvbW1lbnRzLWxpc3RcIiBAZmFkZUluICpuZ0lmPVwiIWlzTG9hZGluZygpXCI+XG4gICAgICAgIDxkaXYgKm5nSWY9XCJjb21tZW50cygpLmxlbmd0aCA9PT0gMFwiIGNsYXNzPVwiZW1wdHktc3RhdGVcIj5cbiAgICAgICAgICA8cD5TaW4gY29tZW50YXJpb3MgYcO6bi4gU8OpIGVsIHByaW1lcm8gZW4gY29tZW50YXIuPC9wPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgKm5nRm9yPVwibGV0IGNvbW1lbnQgb2YgY29tbWVudHMoKTsgbGV0IGxhc3QgPSBsYXN0XCJcbiAgICAgICAgICBjbGFzcz1cImNvbW1lbnQtaXRlbVwiXG4gICAgICAgICAgW2NsYXNzLmlzLW93bl09XCJpc093bkNvbW1lbnQoY29tbWVudClcIlxuICAgICAgICAgIEBzbGlkZUluXG4gICAgICAgID5cbiAgICAgICAgICA8IS0tIEF2YXRhciArIGhlYWRlciAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC1oZWFkZXItcm93XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiYXZhdGFyXCI+e3sgZ2V0SW5pdGlhbHMoY29tbWVudC5hdXRob3IubmFtZSkgfX08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJtZXRhXCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJhdXRob3ItbGluZVwiPlxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiYXV0aG9yLW5hbWVcIj57eyBjb21tZW50LmF1dGhvci5uYW1lIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwiY29tbWVudC5hdXRob3Iucm9sZVwiIGNsYXNzPVwiYXV0aG9yLXJvbGVcIj4gKHt7IHJvbGVMYWJlbChjb21tZW50LmF1dGhvci5yb2xlKSB9fSkgPC9zcGFuPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPHRpbWUgY2xhc3M9XCJ0aW1lc3RhbXBcIj57eyBmb3JtYXRUaW1lKGNvbW1lbnQuY3JlYXRlZEF0KSB9fTwvdGltZT5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAqbmdJZj1cImlzT3duQ29tbWVudChjb21tZW50KSAmJiBjYW5EZWxldGVcIlxuICAgICAgICAgICAgICBjbGFzcz1cImJ0bi1kZWxldGVcIlxuICAgICAgICAgICAgICAoY2xpY2spPVwib25EZWxldGVDb21tZW50KGNvbW1lbnQuY29tbWVudElkKVwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJFbGltaW5hciBjb21lbnRhcmlvXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAg4pyVXG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgIDwhLS0gQm9keSAtLT5cbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiY29tbWVudC1ib2R5XCI+e3sgY29tbWVudC5ib2R5IH19PC9kaXY+XG5cbiAgICAgICAgICA8IS0tIERpdmlkZXIgKG5vdCBvbiBsYXN0KSAtLT5cbiAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIWxhc3RcIiBjbGFzcz1cImNvbW1lbnQtZGl2aWRlclwiPjwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8IS0tIExvYWRpbmcgLS0+XG4gICAgICA8ZGl2ICpuZ0lmPVwiaXNMb2FkaW5nKClcIiBjbGFzcz1cImxvYWRpbmctc3RhdGVcIj5cbiAgICAgICAgPGRpdiBjbGFzcz1cInNwaW5uZXJcIj48L2Rpdj5cbiAgICAgICAgPHA+Q2FyZ2FuZG8gY29tZW50YXJpb3MuLi48L3A+XG4gICAgICA8L2Rpdj5cblxuICAgICAgPCEtLSBOZXcgY29tbWVudCBmb3JtIC0tPlxuICAgICAgPGRpdiAqbmdJZj1cImNhbkNvbW1lbnRcIiBjbGFzcz1cImNvbW1lbnQtZm9ybVwiIFtmb3JtR3JvdXBdPVwiZm9ybVwiPlxuICAgICAgICA8dGV4dGFyZWFcbiAgICAgICAgICBmb3JtQ29udHJvbE5hbWU9XCJib2R5XCJcbiAgICAgICAgICBwbGFjZWhvbGRlcj1cIkVzY3JpYmUgdW4gY29tZW50YXJpby4uLlwiXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0YXJlYVwiXG4gICAgICAgICAgcm93cz1cIjNcIlxuICAgICAgICAgIChrZXlkb3duLmN0cmwuZW50ZXIpPVwib25TdWJtaXQoKVwiXG4gICAgICAgICAgKGtleWRvd24ubWV0YS5lbnRlcik9XCJvblN1Ym1pdCgpXCJcbiAgICAgICAgPlxuICAgICAgICA8L3RleHRhcmVhPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiZm9ybS1hY3Rpb25zXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjaGFyLWNvdW50XCIgW2NsYXNzLm5lYXItbGltaXRdPVwiY2hhckNvdW50KCkgPiBtYXhDaGFycyAqIDAuOVwiPlxuICAgICAgICAgICAge3sgY2hhckNvdW50KCkgfX0gLyB7eyBtYXhDaGFycyB9fVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cImJ0bi1zdWJtaXRcIiBbZGlzYWJsZWRdPVwiIWZvcm0udmFsaWQgfHwgaXNTdWJtaXR0aW5nKClcIiAoY2xpY2spPVwib25TdWJtaXQoKVwiPlxuICAgICAgICAgICAge3sgaXNTdWJtaXR0aW5nKCkgPyAnRW52aWFuZG8uLi4nIDogJ0NvbWVudGFyJyB9fVxuICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiAqbmdJZj1cImZvcm0uZ2V0KCdib2R5Jyk/Lmhhc0Vycm9yKCdtYXhsZW5ndGgnKVwiIGNsYXNzPVwiZXJyb3ItbXNnXCI+TcOheGltbyB7eyBtYXhDaGFycyB9fSBjYXJhY3RlcmVzPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgLmNvbW1lbnQtdGhyZWFkIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxLjVyZW07XG4gICAgICAgIHBhZGRpbmc6IDEuNXJlbTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMC43NXJlbTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmctc2Vjb25kYXJ5LCAjZjlmOWY5KTtcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tY29sb3ItYm9yZGVyLCAjZTBlMGUwKTtcbiAgICAgIH1cblxuICAgICAgLmNvbW1lbnQtaGVhZGVyIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICAgICAgICBnYXA6IDFyZW07XG4gICAgICAgIGgzIHtcbiAgICAgICAgICBtYXJnaW46IDA7XG4gICAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICAgICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtcHJpbWFyeSwgIzA5MGYxYik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmNvbW1lbnQtY291bnQge1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCwgIzZiNzI4MCk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLXRlcnRpYXJ5LCAjZjNmM2YzKTtcbiAgICAgICAgcGFkZGluZzogMC4yNXJlbSAwLjc1cmVtO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA5OTlweDtcbiAgICAgIH1cblxuICAgICAgLmNvbW1lbnRzLWxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDA7XG4gICAgICB9XG5cbiAgICAgIC5lbXB0eS1zdGF0ZSB7XG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMnJlbSAxcmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCwgIzZiNzI4MCk7XG4gICAgICAgIHAge1xuICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY29tbWVudC1pdGVtIHtcbiAgICAgICAgcGFkZGluZzogMXJlbSAwO1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG5cbiAgICAgICAgJi5pcy1vd24ge1xuICAgICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJnLWhpZ2hsaWdodCwgcmdiYSgxMTIsIDM4LCAyMjMsIDAuMDUpKTtcbiAgICAgICAgICBwYWRkaW5nOiAwLjc1cmVtO1xuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuY29tbWVudC1oZWFkZXItcm93IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGdhcDogMC43NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmF2YXRhciB7XG4gICAgICAgIHdpZHRoOiAycmVtO1xuICAgICAgICBoZWlnaHQ6IDJyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeSwgIzcwMjZkZik7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG5cbiAgICAgIC5tZXRhIHtcbiAgICAgICAgZmxleDogMTtcbiAgICAgIH1cblxuICAgICAgLmF1dGhvci1saW5lIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgZ2FwOiAwLjVyZW07XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgIH1cblxuICAgICAgLmF1dGhvci1uYW1lIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWNvbG9yLXRleHQtcHJpbWFyeSwgIzA5MGYxYik7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgIH1cblxuICAgICAgLmF1dGhvci1yb2xlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkLCAjNmI3MjgwKTtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItYmctdGVydGlhcnksICNmM2YzZjMpO1xuICAgICAgICBwYWRkaW5nOiAwLjEyNXJlbSAwLjVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuMjVyZW07XG4gICAgICB9XG5cbiAgICAgIC50aW1lc3RhbXAge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci10ZXh0LW11dGVkLCAjNmI3MjgwKTtcbiAgICAgICAgbWFyZ2luLXRvcDogMC4yNXJlbTtcbiAgICAgIH1cblxuICAgICAgLmJ0bi1kZWxldGUge1xuICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgYm9yZGVyOiBub25lO1xuICAgICAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCwgIzZiNzI4MCk7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAxLjI1cmVtO1xuICAgICAgICBwYWRkaW5nOiAwLjI1cmVtIDAuNXJlbTtcbiAgICAgICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycztcblxuICAgICAgICAmOmhvdmVyIHtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tY29sb3ItZXJyb3IsICNlZjQ0NDQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jb21tZW50LWJvZHkge1xuICAgICAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1wcmltYXJ5LCAjMDkwZjFiKTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgICAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45NXJlbTtcbiAgICAgICAgcGFkZGluZy1sZWZ0OiAyLjc1cmVtO1xuICAgICAgfVxuXG4gICAgICAuY29tbWVudC1kaXZpZGVyIHtcbiAgICAgICAgaGVpZ2h0OiAxcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWNvbG9yLWJvcmRlciwgI2UwZTBlMCk7XG4gICAgICAgIG1hcmdpbjogMC43NXJlbSAwO1xuICAgICAgfVxuXG4gICAgICAubG9hZGluZy1zdGF0ZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMXJlbTtcbiAgICAgICAgcGFkZGluZzogMnJlbSAxcmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCwgIzZiNzI4MCk7XG4gICAgICAgIHAge1xuICAgICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuc3Bpbm5lciB7XG4gICAgICAgIHdpZHRoOiAxLjVyZW07XG4gICAgICAgIGhlaWdodDogMS41cmVtO1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIsICNlMGUwZTApO1xuICAgICAgICBib3JkZXItdG9wLWNvbG9yOiB2YXIoLS1jb2xvci1wcmltYXJ5LCAjNzAyNmRmKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBhbmltYXRpb246IHNwaW4gMC44cyBsaW5lYXIgaW5maW5pdGU7XG4gICAgICB9XG5cbiAgICAgIEBrZXlmcmFtZXMgc3BpbiB7XG4gICAgICAgIHRvIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5jb21tZW50LWZvcm0ge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDAuNzVyZW07XG4gICAgICAgIHBhZGRpbmc6IDFyZW07XG4gICAgICAgIGJhY2tncm91bmQ6IHdoaXRlO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIsICNlMGUwZTApO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gICAgICB9XG5cbiAgICAgIC50ZXh0YXJlYSB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nOiAwLjc1cmVtO1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1jb2xvci1ib3JkZXIsICNlMGUwZTApO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwLjVyZW07XG4gICAgICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIHJlc2l6ZTogdmVydGljYWw7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDNyZW07XG5cbiAgICAgICAgJjpmb2N1cyB7XG4gICAgICAgICAgb3V0bGluZTogbm9uZTtcbiAgICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWNvbG9yLXByaW1hcnksICM3MDI2ZGYpO1xuICAgICAgICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCB2YXIoLS1jb2xvci1wcmltYXJ5LWxpZ2h0LCByZ2JhKDExMiwgMzgsIDIyMywgMC4xKSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmZvcm0tYWN0aW9ucyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgICAgICAgZ2FwOiAxcmVtO1xuICAgICAgfVxuXG4gICAgICAuY2hhci1jb3VudCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0tY29sb3ItdGV4dC1tdXRlZCwgIzZiNzI4MCk7XG5cbiAgICAgICAgJi5uZWFyLWxpbWl0IHtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tY29sb3Itd2FybmluZywgI2Y1OWUwYik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLmJ0bi1zdWJtaXQge1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1jb2xvci1wcmltYXJ5LCAjNzAyNmRmKTtcbiAgICAgICAgY29sb3I6IHdoaXRlO1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIHBhZGRpbmc6IDAuNXJlbSAxLjVyZW07XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIGJhY2tncm91bmQgMC4ycyxcbiAgICAgICAgICBvcGFjaXR5IDAuMnM7XG5cbiAgICAgICAgJjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tY29sb3ItcHJpbWFyeS1kYXJrLCAjNWExZmI1KTtcbiAgICAgICAgfVxuXG4gICAgICAgICY6ZGlzYWJsZWQge1xuICAgICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICAgICAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC5lcnJvci1tc2cge1xuICAgICAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWNvbG9yLWVycm9yLCAjZWY0NDQ0KTtcbiAgICAgICAgbWFyZ2luLXRvcDogMC4yNXJlbTtcbiAgICAgIH1cblxuICAgICAgQG1lZGlhIChtYXgtd2lkdGg6IDY0MHB4KSB7XG4gICAgICAgIC5jb21tZW50LXRocmVhZCB7XG4gICAgICAgICAgcGFkZGluZzogMXJlbTtcbiAgICAgICAgfVxuXG4gICAgICAgIC5jb21tZW50LWJvZHkge1xuICAgICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgICAgICBtYXJnaW4tdG9wOiAwLjVyZW07XG4gICAgICAgIH1cblxuICAgICAgICAuZm9ybS1hY3Rpb25zIHtcbiAgICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XG4gICAgICAgIH1cblxuICAgICAgICAuYnRuLXN1Ym1pdCB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICBgLFxuICBdLFxuICBhbmltYXRpb25zOiBbXG4gICAgdHJpZ2dlcignZmFkZUluJywgW3RyYW5zaXRpb24oJzplbnRlcicsIFtzdHlsZSh7IG9wYWNpdHk6IDAgfSksIGFuaW1hdGUoJzIwMG1zIGVhc2UtaW4nLCBzdHlsZSh7IG9wYWNpdHk6IDEgfSkpXSldKSxcbiAgICB0cmlnZ2VyKCdzbGlkZUluJywgW1xuICAgICAgdHJhbnNpdGlvbignOmVudGVyJywgW1xuICAgICAgICBzdHlsZSh7IG9wYWNpdHk6IDAsIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVkoLTAuNXJlbSknIH0pLFxuICAgICAgICBhbmltYXRlKCcyMDBtcyBlYXNlLW91dCcsIHN0eWxlKHsgb3BhY2l0eTogMSwgdHJhbnNmb3JtOiAndHJhbnNsYXRlWSgwKScgfSkpLFxuICAgICAgXSksXG4gICAgXSksXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIFZhbENvbW1lbnRUaHJlYWRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBASW5wdXQoKSB0aXRsZSA9ICdDb21lbnRhcmlvcyc7XG4gIEBJbnB1dCgpIGNhbkNvbW1lbnQgPSB0cnVlO1xuICBASW5wdXQoKSBjYW5EZWxldGUgPSBmYWxzZTtcbiAgQElucHV0KCkgc2V0IGRhdGEodmFsdWU6IENvbW1lbnRUaHJlYWQpIHtcbiAgICB0aGlzLl9jb21tZW50cy5zZXQodmFsdWUuY29tbWVudHMgfHwgW10pO1xuICAgIHRoaXMuX2lzTG9hZGluZy5zZXQodmFsdWUuaXNMb2FkaW5nID8/IGZhbHNlKTtcbiAgICB0aGlzLl9jdXJyZW50VXNlcklkLnNldCh2YWx1ZS5jdXJyZW50VXNlcklkID8/ICcnKTtcbiAgfVxuXG4gIEBPdXRwdXQoKSBjb21tZW50QWRkZWQgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgQE91dHB1dCgpIGNvbW1lbnREZWxldGVkID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgZm9ybTogRm9ybUdyb3VwO1xuICBtYXhDaGFycyA9IDEwMDA7XG5cbiAgcHJpdmF0ZSBfY29tbWVudHMgPSBzaWduYWw8Q29tbWVudFtdPihbXSk7XG4gIHByaXZhdGUgX2lzTG9hZGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgX2lzU3VibWl0dGluZyA9IHNpZ25hbChmYWxzZSk7XG4gIHByaXZhdGUgX2N1cnJlbnRVc2VySWQgPSBzaWduYWwoJycpO1xuXG4gIGNvbW1lbnRzID0gdGhpcy5fY29tbWVudHMuYXNSZWFkb25seSgpO1xuICBpc0xvYWRpbmcgPSB0aGlzLl9pc0xvYWRpbmcuYXNSZWFkb25seSgpO1xuICBpc1N1Ym1pdHRpbmcgPSB0aGlzLl9pc1N1Ym1pdHRpbmcuYXNSZWFkb25seSgpO1xuXG4gIGNvbW1lbnRDb3VudCA9IGNvbXB1dGVkKCgpID0+IHRoaXMuX2NvbW1lbnRzKCkubGVuZ3RoKTtcbiAgY2hhckNvdW50ID0gY29tcHV0ZWQoKCkgPT4gdGhpcy5mb3JtLmdldCgnYm9keScpPy52YWx1ZT8ubGVuZ3RoID8/IDApO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyKSB7XG4gICAgdGhpcy5mb3JtID0gdGhpcy5mYi5ncm91cCh7XG4gICAgICBib2R5OiBbJycsIFtWYWxpZGF0b3JzLnJlcXVpcmVkLCBWYWxpZGF0b3JzLm1heExlbmd0aCh0aGlzLm1heENoYXJzKV1dLFxuICAgIH0pO1xuICB9XG5cbiAgbmdPbkluaXQoKSB7fVxuXG4gIGlzT3duQ29tbWVudChjb21tZW50OiBDb21tZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIGNvbW1lbnQuYXV0aG9yLnVzZXJJZCA9PT0gdGhpcy5fY3VycmVudFVzZXJJZCgpO1xuICB9XG5cbiAgZ2V0SW5pdGlhbHMobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmFtZVxuICAgICAgLnNwbGl0KCcgJylcbiAgICAgIC5tYXAodyA9PiB3WzBdKVxuICAgICAgLmpvaW4oJycpXG4gICAgICAudG9VcHBlckNhc2UoKVxuICAgICAgLnNsaWNlKDAsIDIpO1xuICB9XG5cbiAgcm9sZUxhYmVsKHJvbGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbGFiZWxzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgc3VibWl0dGVyOiAnUG9zdHVsYW50ZScsXG4gICAgICByZXZpZXdlcjogJ1Jldmlzb3InLFxuICAgICAgYWRtaW46ICdBZG1pbmlzdHJhZG9yJyxcbiAgICB9O1xuICAgIHJldHVybiBsYWJlbHNbcm9sZV0gfHwgcm9sZTtcbiAgfVxuXG4gIGZvcm1hdFRpbWUoaXNvU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShpc29TdHJpbmcpO1xuICAgIGNvbnN0IG5vdyA9IG5ldyBEYXRlKCk7XG4gICAgY29uc3QgZGlmZk1zID0gbm93LmdldFRpbWUoKSAtIGRhdGUuZ2V0VGltZSgpO1xuICAgIGNvbnN0IGRpZmZNaW5zID0gTWF0aC5mbG9vcihkaWZmTXMgLyA2MDAwMCk7XG4gICAgY29uc3QgZGlmZkhvdXJzID0gTWF0aC5mbG9vcihkaWZmTXMgLyAzNjAwMDAwKTtcbiAgICBjb25zdCBkaWZmRGF5cyA9IE1hdGguZmxvb3IoZGlmZk1zIC8gODY0MDAwMDApO1xuXG4gICAgaWYgKGRpZmZNaW5zIDwgMSkgcmV0dXJuICdoYWNlIHVub3Mgc2VndW5kb3MnO1xuICAgIGlmIChkaWZmTWlucyA8IDYwKSByZXR1cm4gYGhhY2UgJHtkaWZmTWluc31tYDtcbiAgICBpZiAoZGlmZkhvdXJzIDwgMjQpIHJldHVybiBgaGFjZSAke2RpZmZIb3Vyc31oYDtcbiAgICBpZiAoZGlmZkRheXMgPCA3KSByZXR1cm4gYGhhY2UgJHtkaWZmRGF5c31kYDtcblxuICAgIHJldHVybiBkYXRlLnRvTG9jYWxlRGF0ZVN0cmluZygnZXMtQ0wnLCB7IG1vbnRoOiAnc2hvcnQnLCBkYXk6ICdudW1lcmljJyB9KTtcbiAgfVxuXG4gIG9uU3VibWl0KCkge1xuICAgIGlmICghdGhpcy5mb3JtLnZhbGlkKSByZXR1cm47XG5cbiAgICB0aGlzLl9pc1N1Ym1pdHRpbmcuc2V0KHRydWUpO1xuICAgIGNvbnN0IGJvZHkgPSB0aGlzLmZvcm0uZ2V0KCdib2R5Jyk/LnZhbHVlO1xuXG4gICAgdGhpcy5jb21tZW50QWRkZWQuZW1pdChib2R5KTtcblxuICAgIC8vIFJlc2V0IGZvcm0gYWZ0ZXIgc2hvcnQgZGVsYXlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZm9ybS5yZXNldCgpO1xuICAgICAgdGhpcy5faXNTdWJtaXR0aW5nLnNldChmYWxzZSk7XG4gICAgfSwgMzAwKTtcbiAgfVxuXG4gIG9uRGVsZXRlQ29tbWVudChjb21tZW50SWQ6IHN0cmluZykge1xuICAgIGlmIChjb25maXJtKCfCv0VsaW1pbmFyIGVzdGUgY29tZW50YXJpbz8nKSkge1xuICAgICAgdGhpcy5jb21tZW50RGVsZXRlZC5lbWl0KGNvbW1lbnRJZCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|