valtech-components 4.0.14 → 4.0.16
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/invite-member-modal/invite-member-modal.component.mjs +3 -9
- package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.component.mjs +20 -12
- package/esm2022/lib/components/organisms/organization-view/organization-view.component.mjs +2 -2
- package/esm2022/lib/services/app-version/app-version.service.mjs +10 -4
- package/esm2022/lib/services/app-version/config.mjs +6 -1
- package/esm2022/lib/services/app-version/index.mjs +2 -2
- package/esm2022/lib/services/app-version/types.mjs +1 -1
- package/esm2022/lib/services/org/types.mjs +9 -2
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +1 -1
- package/fesm2022/valtech-components.mjs +43 -23
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/member-import-modal/member-import-modal.component.d.ts +3 -3
- package/lib/services/app-version/app-version.service.d.ts +4 -2
- package/lib/services/app-version/config.d.ts +6 -1
- package/lib/services/app-version/index.d.ts +1 -1
- package/lib/services/app-version/types.d.ts +20 -0
- package/lib/services/org/types.d.ts +12 -1
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -1
- package/src/lib/components/styles/overrides.scss +8 -0
package/esm2022/lib/components/organisms/invite-member-modal/invite-member-modal.component.mjs
CHANGED
|
@@ -17,6 +17,7 @@ import { ComponentStates, InputType } from '../../types';
|
|
|
17
17
|
import { AuthService } from '../../../services/auth/auth.service';
|
|
18
18
|
import { I18nService } from '../../../services/i18n';
|
|
19
19
|
import { OrgService } from '../../../services/org/org.service';
|
|
20
|
+
import { resolveRoleLabel } from '../../../services/org/types';
|
|
20
21
|
import { ToastService } from '../../../services/toast.service';
|
|
21
22
|
import { ValtechErrorService } from '../../../services/errors/valtech-error.service';
|
|
22
23
|
import { INVITE_MEMBER_MODAL_I18N } from './invite-member-modal.i18n';
|
|
@@ -177,14 +178,7 @@ export class InviteMemberModalComponent {
|
|
|
177
178
|
});
|
|
178
179
|
}
|
|
179
180
|
roleDisplayName(role) {
|
|
180
|
-
|
|
181
|
-
viewer: 'roleViewer',
|
|
182
|
-
editor: 'roleEditor',
|
|
183
|
-
admin: 'roleAdmin',
|
|
184
|
-
};
|
|
185
|
-
const key = keyMap[role.name] ?? role.name;
|
|
186
|
-
const label = this.t(key);
|
|
187
|
-
return label && !label.startsWith('[') ? label : role.name;
|
|
181
|
+
return resolveRoleLabel(role, this.i18n.lang());
|
|
188
182
|
}
|
|
189
183
|
async onInviteByEmail() {
|
|
190
184
|
const email = this.query().trim();
|
|
@@ -528,4 +522,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
528
522
|
}], i18nNamespace: [{
|
|
529
523
|
type: Input
|
|
530
524
|
}] } });
|
|
531
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52aXRlLW1lbWJlci1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2ludml0ZS1tZW1iZXItbW9kYWwvaW52aXRlLW1lbWJlci1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxJQUFJLE9BQU8sRUFDaEIsT0FBTyxFQUNQLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLE9BQU8sR0FDUixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixTQUFTLEVBQ1QsT0FBTyxFQUNQLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFB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Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1IVDt3REErTFEsU0FBUztzQkFBakIsS0FBSztnQkFHRyxLQUFLO3NCQUFiLEtBQUs7Z0JBR0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgSW5wdXQsIE9uRGVzdHJveSwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgUmVhY3RpdmVGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IGZpcnN0VmFsdWVGcm9tLCBmb3JrSm9pbiwgZnJvbSwgU3ViamVjdCwgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBkaXN0aW5jdFVudGlsQ2hhbmdlZCwgbWFwLCBzd2l0Y2hNYXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5pbXBvcnQge1xuICBGaXJlc3RvcmUsXG4gIGNvbGxlY3Rpb24sXG4gIHF1ZXJ5IGFzIGZzUXVlcnksXG4gIG9yZGVyQnksXG4gIHN0YXJ0QXQsXG4gIGVuZEF0LFxuICBsaW1pdCxcbiAgZ2V0RG9jcyxcbn0gZnJvbSAnQGFuZ3VsYXIvZmlyZS9maXJlc3RvcmUnO1xuaW1wb3J0IHtcbiAgSW9uQnV0dG9uLFxuICBJb25CdXR0b25zLFxuICBJb25Db250ZW50LFxuICBJb25IZWFkZXIsXG4gIElvbkljb24sXG4gIElvblNwaW5uZXIsXG4gIElvblRvb2xiYXIsXG59IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBjaGVja21hcmtDaXJjbGVPdXRsaW5lLCBjbG9zZU91dGxpbmUsIG1haWxPdXRsaW5lLCBwZXJzb25PdXRsaW5lIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5pbXBvcnQgeyBCdXR0b25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9idXR0b24vYnV0dG9uLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbXB0eVN0YXRlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2VtcHR5LXN0YXRlL2VtcHR5LXN0YXRlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hiYXJDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvc2VhcmNoYmFyL3NlYXJjaGJhci5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VhcmNoU2VsZWN0b3JDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvc2VsZWN0LWlucHV0L3NlbGVjdC1pbnB1dC5jb21wb25lbnQnO1xuaW1wb3J0IHsgQnV0dG9uTWV0YWRhdGEsIENvbXBvbmVudFN0YXRlcywgSW5wdXRNZXRhZGF0YSwgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2F1dGgvYXV0aC5zZXJ2aWNlJztcbmltcG9ydCB7IEkxOG5TZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvaTE4bic7XG5pbXBvcnQgeyBPcmdTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvb3JnL29yZy5zZXJ2aWNlJztcbmltcG9ydCB7IE9yZ1JvbGUgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmcvdHlwZXMnO1xuaW1wb3J0IHsgVG9hc3RTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdG9hc3Quc2VydmljZSc7XG5pbXBvcnQgeyBWYWx0ZWNoRXJyb3JTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvZXJyb3JzL3ZhbHRlY2gtZXJyb3Iuc2VydmljZSc7XG5cbmltcG9ydCB7IElOVklURV9NRU1CRVJfTU9EQUxfSTE4TiB9IGZyb20gJy4vaW52aXRlLW1lbWJlci1tb2RhbC5pMThuJztcblxuY29uc3QgREVGQVVMVF9OQU1FU1BBQ0UgPSAnSW52aXRlTW9kYWwnO1xuXG5pbnRlcmZhY2UgUHVibGljVXNlclByb2ZpbGUge1xuICB1c2VySWQ6IHN0cmluZztcbiAgaGFuZGxlPzogc3RyaW5nO1xuICBuYW1lPzogc3RyaW5nO1xufVxuXG5hZGRJY29ucyh7IHBlcnNvbk91dGxpbmUsIG1haWxPdXRsaW5lLCBjbG9zZU91dGxpbmUsIGNoZWNrbWFya0NpcmNsZU91dGxpbmUgfSk7XG5cbi8qKlxuICogYHZhbC1pbnZpdGUtbWVtYmVyLW1vZGFsYCDigJQgaW52aXRhY2nDs24gZGUgbWllbWJyb3MgYSB1bmEgb3JnYW5pemFjacOzbi5cbiAqIFByb21vdmlkbyBkZXNkZSBgc2hvd2Nhc2VgIGJham8gZWwgcHJvY2VzbyBkZSBBRFItMDIxLlxuICpcbiAqIEJ1c2NhIHVzdWFyaW9zIHBvciBoYW5kbGUgZW4gRmlyZXN0b3JlIGAvcHJvZmlsZXNgIChtdWx0aS1zZWxlY3QpIG8gaW52aXRhIHBvclxuICogZW1haWwgY3VhbmRvIGVsIHF1ZXJ5IGVzIHVuIGNvcnJlbyB2w6FsaWRvLiBBc2lnbmEgZWwgcm9sIHNlbGVjY2lvbmFkbyB5IGVudsOtYSBsYVxuICogaW52aXRhY2nDs24gdsOtYSBgT3JnU2VydmljZS5pbnZpdGVVc2VyYC4gRXhjbHV5ZSBhbCB1c3VhcmlvIGFjdHVhbCB5IGEgbG9zXG4gKiBgZXhpc3RpbmdNZW1iZXJJZHNgIGRlIGxvcyByZXN1bHRhZG9zLlxuICpcbiAqIEFiaWVydG8gdsOtYSBgTW9kYWxTZXJ2aWNlYCDigJQgcmVjaWJlIGBfbW9kYWxSZWZgIHBvciBgY29tcG9uZW50UHJvcHNgICsgY2FsbGJhY2tcbiAqIGBvblN1Y2Nlc3NgLiBIZWFkZXIgY2Fuw7NuaWNvIChSZWdsYSAjNSk6IHNpbiBgaW9uLXRpdGxlYCwgYm90w7NuIENlcnJhciB0ZXh0byBlblxuICogYHNsb3Q9ZW5kYCwgdMOtdHVsby9zdWJ0w610dWxvIGVuIGVsIGJvZHkgY29uIGB2YWwtZGlzcGxheWAvYHZhbC10aXRsZWAuXG4gKlxuICogQXV0by1yZWdpc3RyYSBzdXMgZGVmYXVsdHMgaTE4biAoZXMvZW4pIHNpIGVsIGNvbnN1bWVyIG5vIHByb3ZlecOzIGVsIG5hbWVzcGFjZVxuICogYEludml0ZU1vZGFsYC5cbiAqL1xuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWludml0ZS1tZW1iZXItbW9kYWwnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbXG4gICAgSW9uSGVhZGVyLFxuICAgIElvblRvb2xiYXIsXG4gICAgSW9uQnV0dG9ucyxcbiAgICBJb25CdXR0b24sXG4gICAgSW9uQ29udGVudCxcbiAgICBJb25TcGlubmVyLFxuICAgIElvbkljb24sXG4gICAgUmVhY3RpdmVGb3Jtc01vZHVsZSxcbiAgICBCdXR0b25Db21wb25lbnQsXG4gICAgRGlzcGxheUNvbXBvbmVudCxcbiAgICBFbXB0eVN0YXRlQ29tcG9uZW50LFxuICAgIFNlYXJjaGJhckNvbXBvbmVudCxcbiAgICBTZWFyY2hTZWxlY3RvckNvbXBvbmVudCxcbiAgICBUZXh0Q29tcG9uZW50LFxuICAgIFRpdGxlQ29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJkaXNtaXNzKClcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2xvc2UnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24taGVhZGVyPlxuXG4gICAgPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCd0aXRsZScpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnIH1cIiAvPlxuICAgICAgPHZhbC10aXRsZVxuICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgIGNvbnRlbnQ6IHQoJ3N1YnRpdGxlJyksXG4gICAgICAgICAgc2l6ZTogJ2xhcmdlJyxcbiAgICAgICAgICBjb2xvcjogJycsXG4gICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgIH1cIlxuICAgICAgLz5cblxuICAgICAgPGRpdiBjbGFzcz1cInJvbGUtc2VsZWN0LXdyYXBcIj5cbiAgICAgICAgPHZhbC10aXRsZVxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICBjb250ZW50OiB0KCdyb2xlTGFiZWwnKSxcbiAgICAgICAgICAgIHNpemU6ICdzbWFsbCcsXG4gICAgICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICAgICAgYm9sZDogZmFsc2UsXG4gICAgICAgICAgfVwiXG4gICAgICAgIC8+XG4gICAgICAgIDx2YWwtc2VsZWN0LWlucHV0IGRhdGEtdGVzdGlkPVwiaW52aXRlLXJvbGUtc2VsZWN0XCIgW3Byb3BzXT1cInJvbGVTZWxlY3RQcm9wcygpXCIgLz5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLXNlY3Rpb25cIj5cbiAgICAgICAgPHZhbC1zZWFyY2hiYXJcbiAgICAgICAgICBkYXRhLXRlc3RpZD1cImludml0ZS1zZWFyY2hcIlxuICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogdCgnc2VhcmNoUGxhY2Vob2xkZXInKSxcbiAgICAgICAgICAgIGRlYm91bmNlOiAzNTAsXG4gICAgICAgICAgICBzaG93Q2FuY2VsQnV0dG9uOiAnbmV2ZXInLFxuICAgICAgICAgIH1cIlxuICAgICAgICAgIChmaWx0ZXJFdmVudCk9XCJvblF1ZXJ5Q2hhbmdlKCRldmVudClcIlxuICAgICAgICAvPlxuXG4gICAgICAgIEBpZiAoc2VhcmNoaW5nKCkpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VhcmNoLXN0YXRlXCI+XG4gICAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImNyZXNjZW50XCIgLz5cbiAgICAgICAgICAgIDxzcGFuPnt7IHQoJ3NlYXJjaGluZ0xhYmVsJykgfX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH0gQGVsc2UgaWYgKGlzRW1haWwoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJlbWFpbC1pbnZpdGUtY2FyZFwiPlxuICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJtYWlsLW91dGxpbmVcIiBjbGFzcz1cImVtYWlsLWljb25cIiAvPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImVtYWlsLWludml0ZS10ZXh0XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZW1haWwtaW52aXRlLWxhYmVsXCI+e3sgdCgnaW52aXRlQnlFbWFpbCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImVtYWlsLWludml0ZS1hZGRyZXNzXCI+e3sgcXVlcnkoKS50cmltKCkgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwic2VuZEJ1dHRvblByb3BzKClcIiAoY2xpY2spPVwib25JbnZpdGVCeUVtYWlsKClcIiAvPlxuICAgICAgICB9IEBlbHNlIGlmIChxdWVyeSgpLmxlbmd0aCA+PSAyICYmIHNlYXJjaFJlc3VsdHMoKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICA8dmFsLWVtcHR5LXN0YXRlXG4gICAgICAgICAgICBbcHJvcHNdPVwie1xuICAgICAgICAgICAgICB2YXJpYW50OiAnZW1wdHknLFxuICAgICAgICAgICAgICB0aXRsZTogdCgnbm9SZXN1bHRzJyksXG4gICAgICAgICAgICAgIGljb246ICdwZXJzb24tb3V0bGluZScsXG4gICAgICAgICAgICB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICB9IEBlbHNlIGlmIChzZWFyY2hSZXN1bHRzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHRzLWxpc3RcIj5cbiAgICAgICAgICAgIEBmb3IgKHVzZXIgb2Ygc2VhcmNoUmVzdWx0cygpOyB0cmFjayB1c2VyLnVzZXJJZCkge1xuICAgICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgICAgY2xhc3M9XCJyZXN1bHQtY2FyZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuZGF0YS10ZXN0aWRdPVwiJ2ludml0ZS1yZXN1bHQtJyArIHVzZXIudXNlcklkXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MucmVzdWx0LWNhcmQtLXNlbGVjdGVkXT1cImlzU2VsZWN0ZWQodXNlci51c2VySWQpXCJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwidG9nZ2xlVXNlcih1c2VyKVwiXG4gICAgICAgICAgICAgICAgcm9sZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBbYXR0ci5hcmlhLWNoZWNrZWRdPVwiaXNTZWxlY3RlZCh1c2VyLnVzZXJJZClcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1jYXJkX19hdmF0YXJcIj5cbiAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwicGVyc29uLW91dGxpbmVcIiAvPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtY2FyZF9fYm9keVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXN1bHQtY2FyZF9fbmFtZVwiPnt7IHVzZXIubmFtZSB8fCB1c2VyLmhhbmRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIEBpZiAodXNlci5oYW5kbGUpIHtcbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJyZXN1bHQtY2FyZF9faGFuZGxlXCI+JiM2NDt7eyB1c2VyLmhhbmRsZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWNhcmRfX2NoZWNrXCI+XG4gICAgICAgICAgICAgICAgICBAaWYgKGlzU2VsZWN0ZWQodXNlci51c2VySWQpKSB7XG4gICAgICAgICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2hlY2ttYXJrLWNpcmNsZS1vdXRsaW5lXCIgY2xhc3M9XCJjaGVjay1vblwiIC8+XG4gICAgICAgICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImNoZWNrLW9mZlwiPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoc2VsZWN0ZWRVc2VycygpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtc2VjdGlvblwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJzZWxlY3RlZC1zZWN0aW9uX19sYWJlbFwiPnt7IHQoJ3NlbGVjdGVkTGFiZWwnKSB9fSAoe3sgc2VsZWN0ZWRVc2VycygpLmxlbmd0aCB9fSk8L3NwYW4+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtY2hpcHNcIj5cbiAgICAgICAgICAgICAgQGZvciAodXNlciBvZiBzZWxlY3RlZFVzZXJzKCk7IHRyYWNrIHVzZXIudXNlcklkKSB7XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInNlbGVjdGVkLWNoaXBcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPnt7IHVzZXIuaGFuZGxlID8gJ0AnICsgdXNlci5oYW5kbGUgOiB1c2VyLm5hbWUgfHwgdXNlci51c2VySWQgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICA8YnV0dG9uIGNsYXNzPVwic2VsZWN0ZWQtY2hpcF9fcmVtb3ZlXCIgKGNsaWNrKT1cInRvZ2dsZVVzZXIodXNlcilcIiBhcmlhLWxhYmVsPVwiUXVpdGFyXCI+JnRpbWVzOzwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJzZW5kU2VsZWN0ZWRQcm9wcygpXCIgKGNsaWNrKT1cIm9uU2VuZFNlbGVjdGVkKClcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cbiAgICA8L2lvbi1jb250ZW50PlxuICBgLFxuICBzdHlsZXM6IFtcbiAgICBgXG4gICAgICBpb24tY29udGVudCB7XG4gICAgICAgIC0tcGFkZGluZy1ib3R0b206IDI0cHg7XG4gICAgICB9XG4gICAgICB2YWwtZGlzcGxheSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgICB2YWwtdGl0bGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgfVxuICAgICAgLnJvbGUtc2VsZWN0LXdyYXAge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMnB4O1xuICAgICAgfVxuICAgICAgLnJvbGUtc2VsZWN0IHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICB9XG4gICAgICB2YWwtc2VhcmNoYmFyIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAgIH1cbiAgICAgIC5zZWFyY2gtc2VjdGlvbiB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMTRweDtcbiAgICAgIH1cbiAgICAgIC5zZWFyY2gtc3RhdGUge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0pO1xuICAgICAgICBmb250LXNpemU6IDAuODhyZW07XG4gICAgICB9XG4gICAgICAuZW1haWwtaW52aXRlLWNhcmQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDE0cHg7XG4gICAgICAgIHBhZGRpbmc6IDE0cHggMTZweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSkgOCUsIHRyYW5zcGFyZW50KTtcbiAgICAgIH1cbiAgICAgIC5lbWFpbC1pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAyNHB4O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgIH1cbiAgICAgIC5lbWFpbC1pbnZpdGUtdGV4dCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICAgIGdhcDogMnB4O1xuICAgICAgfVxuICAgICAgLmVtYWlsLWludml0ZS1sYWJlbCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43OHJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDAuMDRlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0pO1xuICAgICAgfVxuICAgICAgLmVtYWlsLWludml0ZS1hZGRyZXNzIHtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjk1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XG4gICAgICB9XG4gICAgICAucmVzdWx0cy1saXN0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA4cHg7XG4gICAgICB9XG4gICAgICAucmVzdWx0LWNhcmQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDE0cHg7XG4gICAgICAgIHBhZGRpbmc6IDEycHggMTRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0LCAjZjRmNWY4KTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMTVzO1xuICAgICAgfVxuICAgICAgLnJlc3VsdC1jYXJkOmFjdGl2ZSB7XG4gICAgICAgIG9wYWNpdHk6IDAuNztcbiAgICAgIH1cbiAgICAgIDpob3N0LWNvbnRleHQoYm9keS5kYXJrKSAucmVzdWx0LWNhcmQsXG4gICAgICA6aG9zdC1jb250ZXh0KGh0bWwuaW9uLXBhbGV0dGUtZGFyaykgLnJlc3VsdC1jYXJkLFxuICAgICAgOmhvc3QtY29udGV4dChbZGF0YS10aGVtZT0nZGFyayddKSAucmVzdWx0LWNhcmQge1xuICAgICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMDUpO1xuICAgICAgfVxuICAgICAgLnJlc3VsdC1jYXJkX19hdmF0YXIge1xuICAgICAgICB3aWR0aDogNDBweDtcbiAgICAgICAgaGVpZ2h0OiA0MHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJhY2tncm91bmQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSkgMTUlLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgICAgICBmb250LXNpemU6IDIwcHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgfVxuICAgICAgLnJlc3VsdC1jYXJkX19ib2R5IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAycHg7XG4gICAgICB9XG4gICAgICAucmVzdWx0LWNhcmRfX25hbWUge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBmb250LXNpemU6IDAuOXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgIH1cbiAgICAgIC5yZXN1bHQtY2FyZF9faGFuZGxlIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICB9XG4gICAgICAucmVzdWx0LWNhcmQtLXNlbGVjdGVkIHtcbiAgICAgICAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGJhY2tncm91bmQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSkgOCUsIHRyYW5zcGFyZW50KTtcbiAgICAgIH1cbiAgICAgIC5yZXN1bHQtY2FyZF9fY2hlY2sge1xuICAgICAgICBmbGV4LXNocmluazogMDtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XG4gICAgICB9XG4gICAgICAuY2hlY2stb24ge1xuICAgICAgICBmb250LXNpemU6IDIycHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICB9XG4gICAgICAuY2hlY2stb2ZmIHtcbiAgICAgICAgd2lkdGg6IDIycHg7XG4gICAgICAgIGhlaWdodDogMjJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgIH1cbiAgICAgIC5zZWxlY3RlZC1zZWN0aW9uIHtcbiAgICAgICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHZhcigtLXZhbC1ib3JkZXItY29sb3IsIHJnYmEoMCwgMCwgMCwgMC4wOCkpO1xuICAgICAgICBwYWRkaW5nLXRvcDogMTRweDtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxMHB4O1xuICAgICAgfVxuICAgICAgLnNlbGVjdGVkLXNlY3Rpb25fX2xhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICB9XG4gICAgICAuc2VsZWN0ZWQtY2hpcHMge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgfVxuICAgICAgLnNlbGVjdGVkLWNoaXAge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDRweDtcbiAgICAgICAgcGFkZGluZzogNHB4IDEwcHggNHB4IDEycHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIGJhY2tncm91bmQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSkgMTIlLCB0cmFuc3BhcmVudCk7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MnJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgIH1cbiAgICAgIC5zZWxlY3RlZC1jaGlwX19yZW1vdmUge1xuICAgICAgICBib3JkZXI6IG5vbmU7XG4gICAgICAgIGJhY2tncm91bmQ6IG5vbmU7XG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAgICAgZm9udC1zaXplOiAxcmVtO1xuICAgICAgICBsaW5lLWhlaWdodDogMTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgcGFkZGluZzogMCAycHg7XG4gICAgICAgIG9wYWNpdHk6IDAuNztcbiAgICAgIH1cbiAgICAgIC5zZWxlY3RlZC1jaGlwX19yZW1vdmU6aG92ZXIge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgIGAsXG4gIF0sXG59KVxuZXhwb3J0IGNsYXNzIEludml0ZU1lbWJlck1vZGFsQ29tcG9uZW50IGltcGxlbWVudHMgT25EZXN0cm95IHtcbiAgcHJpdmF0ZSBvcmdTZXJ2aWNlID0gaW5qZWN0KE9yZ1NlcnZpY2UpO1xuICBwcml2YXRlIGF1dGggPSBpbmplY3QoQXV0aFNlcnZpY2UpO1xuICBwcml2YXRlIHRvYXN0ID0gaW5qZWN0KFRvYXN0U2VydmljZSk7XG4gIHByaXZhdGUgZXJyb3JzID0gaW5qZWN0KFZhbHRlY2hFcnJvclNlcnZpY2UpO1xuICBwcml2YXRlIGZpcmVzdG9yZSA9IGluamVjdChGaXJlc3RvcmUpO1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuXG4gIC8qKiBJbnllY3RhZG8gcG9yIGBNb2RhbFNlcnZpY2Uub3BlbmAg4oCUIHJlZmVyZW5jaWEgcGFyYSBjZXJyYXIgZGVzZGUgZGVudHJvLiAqL1xuICBASW5wdXQoKSBfbW9kYWxSZWY/OiB7IGRpc21pc3M6IChkYXRhPzogdW5rbm93biwgcm9sZT86IHN0cmluZykgPT4gdm9pZCB9O1xuXG4gIC8qKiBPcmdhbml6YWNpw7NuIGEgbGEgcXVlIHNlIGludml0YS4gKi9cbiAgQElucHV0KCkgb3JnSWQgPSAnJztcblxuICAvKiogSWRzIGRlIG1pZW1icm9zIHlhIGV4aXN0ZW50ZXMgKGV4Y2x1aWRvcyBkZSBsb3MgcmVzdWx0YWRvcykuICovXG4gIEBJbnB1dCgpIGV4aXN0aW5nTWVtYmVySWRzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKiBDYWxsYmFjayB0cmFzIGVudmlhciBsYShzKSBpbnZpdGFjacOzbihlcykgKHBhc2FkbyBwb3IgYGNvbXBvbmVudFByb3BzYCkuICovXG4gIEBJbnB1dCgpIG9uU3VjY2Vzcz86ICgpID0+IHZvaWQ7XG5cbiAgLyoqIE5hbWVzcGFjZSBpMThuIGNvbiBxdWUgbGEgdmlzdGEgcmVzdWVsdmUgc3VzIHRleHRvcy4gKi9cbiAgQElucHV0KCkgaTE4bk5hbWVzcGFjZSA9IERFRkFVTFRfTkFNRVNQQUNFO1xuXG4gIHJlYWRvbmx5IHF1ZXJ5ID0gc2lnbmFsKCcnKTtcbiAgcmVhZG9ubHkgc2VhcmNoaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgc2VhcmNoUmVzdWx0cyA9IHNpZ25hbDxQdWJsaWNVc2VyUHJvZmlsZVtdPihbXSk7XG4gIHJlYWRvbmx5IHNlbGVjdGVkVXNlcnMgPSBzaWduYWw8UHVibGljVXNlclByb2ZpbGVbXT4oW10pO1xuICByZWFkb25seSBzZW5kaW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRSb2xlID0gc2lnbmFsPHN0cmluZz4oJ3ZpZXdlcicpO1xuICByZWFkb25seSBhdmFpbGFibGVSb2xlcyA9IHNpZ25hbDxPcmdSb2xlW10+KFtcbiAgICB7IGlkOiAndmlld2VyJywgbmFtZTogJ3ZpZXdlcicgfSxcbiAgICB7IGlkOiAnZWRpdG9yJywgbmFtZTogJ2VkaXRvcicgfSxcbiAgICB7IGlkOiAnYWRtaW4nLCBuYW1lOiAnYWRtaW4nIH0sXG4gIF0pO1xuXG4gIHJlYWRvbmx5IHJvbGVDb250cm9sID0gbmV3IEZvcm1Db250cm9sPHN0cmluZz4oJ3ZpZXdlcicpO1xuXG4gIHJlYWRvbmx5IHJvbGVTZWxlY3RQcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8SW5wdXRNZXRhZGF0YT4+KCgpID0+ICh7XG4gICAgY29udHJvbDogdGhpcy5yb2xlQ29udHJvbCBhcyBGb3JtQ29udHJvbCxcbiAgICBsYWJlbDogJycsXG4gICAgcGxhY2Vob2xkZXI6IHRoaXMudCgncm9sZUxhYmVsJyksXG4gICAgdHlwZTogSW5wdXRUeXBlLlNFTEVDVCxcbiAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgb3B0aW9uczogdGhpcy5hdmFpbGFibGVSb2xlcygpLm1hcChyID0+ICh7XG4gICAgICBpZDogci5pZCxcbiAgICAgIG5hbWU6IHRoaXMucm9sZURpc3BsYXlOYW1lKHIpLFxuICAgICAgb3JkZXI6IDAsXG4gICAgfSkpLFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgaXNFbWFpbCA9IGNvbXB1dGVkKCgpID0+IC9eW15cXHNAXStAW15cXHNAXStcXC5bXlxcc0BdKyQvLnRlc3QodGhpcy5xdWVyeSgpLnRyaW0oKSkpO1xuXG4gIHJlYWRvbmx5IHNlbmRCdXR0b25Qcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8QnV0dG9uTWV0YWRhdGE+PigoKSA9PiAoe1xuICAgIHRleHQ6IHRoaXMudCgnc2VuZEludml0ZScpLFxuICAgIHRva2VuOiAnaW52aXRlLXN1Ym1pdC1lbWFpbCcsXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBmaWxsOiAnc29saWQnLFxuICAgIGV4cGFuZDogJ2Jsb2NrJyxcbiAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gICAgc3RhdGU6IHRoaXMuc2VuZGluZygpID8gQ29tcG9uZW50U3RhdGVzLldPUktJTkcgOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgfSkpO1xuXG4gIHJlYWRvbmx5IHNlbmRTZWxlY3RlZFByb3BzID0gY29tcHV0ZWQ8UGFydGlhbDxCdXR0b25NZXRhZGF0YT4+KCgpID0+ICh7XG4gICAgdGV4dDogYCR7dGhpcy50KCdzZW5kU2VsZWN0ZWQnKX0gKCR7dGhpcy5zZWxlY3RlZFVzZXJzKCkubGVuZ3RofSlgLFxuICAgIHRva2VuOiAnaW52aXRlLXN1Ym1pdCcsXG4gICAgY29sb3I6ICdwcmltYXJ5JyxcbiAgICBmaWxsOiAnc29saWQnLFxuICAgIGV4cGFuZDogJ2Jsb2NrJyxcbiAgICBzaXplOiAnZGVmYXVsdCcsXG4gICAgdHlwZTogJ2J1dHRvbicsXG4gICAgc3RhdGU6IHRoaXMuc2VuZGluZygpID8gQ29tcG9uZW50U3RhdGVzLldPUktJTkcgOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgfSkpO1xuXG4gIHByaXZhdGUgc2VhcmNoU3ViamVjdCA9IG5ldyBTdWJqZWN0PHN0cmluZz4oKTtcbiAgcHJpdmF0ZSByb2xlU3ViPzogU3Vic2NyaXB0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZShERUZBVUxUX05BTUVTUEFDRSkpIHtcbiAgICAgIHRoaXMuaTE4bi5yZWdpc3RlckNvbnRlbnQoREVGQVVMVF9OQU1FU1BBQ0UsIElOVklURV9NRU1CRVJfTU9EQUxfSTE4Tik7XG4gICAgfVxuICAgIHRoaXMubG9hZFJvbGVzKCk7XG4gICAgdGhpcy5yb2xlU3ViID0gdGhpcy5yb2xlQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHYgPT4ge1xuICAgICAgaWYgKHYpIHRoaXMuc2VsZWN0ZWRSb2xlLnNldCh2KTtcbiAgICB9KTtcblxuICAgIC8vIHZhbC1zZWFyY2hiYXIgYWxyZWFkeSBkZWJvdW5jZXMgLS0gcGlwZWxpbmUgb25seSBuZWVkcyBkaXN0aW5jdFVudGlsQ2hhbmdlZCArIHN3aXRjaE1hcFxuICAgIHRoaXMuc2VhcmNoU3ViamVjdFxuICAgICAgLnBpcGUoXG4gICAgICAgIGRpc3RpbmN0VW50aWxDaGFuZ2VkKCksXG4gICAgICAgIHN3aXRjaE1hcChxID0+IHtcbiAgICAgICAgICBpZiAoIXEgfHwgcS5sZW5ndGggPCAyIHx8IHRoaXMuaXNFbWFpbCgpKSB7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHRzLnNldChbXSk7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgfVxuICAgICAgICAgIC8vIELDunNxdWVkYSBwb3IgcHJlZmlqbyBzb2JyZSBET1MgY2FtcG9zOiBgaGFuZGxlYCB5IGBuYW1lTG93ZXJgLiBGaXJlc3RvcmVcbiAgICAgICAgICAvLyBubyBzb3BvcnRhIE9SIGVudHJlIGNhbXBvcyBlbiB1bmEgcXVlcnksIGFzw60gcXVlIHNlIGxhbnphbiBkb3MgcXVlcmllcyBlblxuICAgICAgICAgIC8vIHBhcmFsZWxvIHkgc2UgbWV6Y2xhbiAoZGVkdXAgcG9yIGlkKS4gRWwgc2VudGluZWwgYWx0byDvo78gY2llcnJhIGVsXG4gICAgICAgICAgLy8gcmFuZ28gZGVsIHByZWZpam8uIGBuYW1lTG93ZXJgIGxvIGVzY3JpYmUgZWwgYmFja2VuZCBlbiAvcHJvZmlsZXNcbiAgICAgICAgICAvLyAoTm9ybWFsaXplTmFtZUZvclNlYXJjaDogbG93ZXJjYXNlICsgY29sYXBzbyBkZSBlc3BhY2lvcyk7IG5vcm1hbGl6YW1vcyBlbFxuICAgICAgICAgIC8vIHF1ZXJ5IGlndWFsIHBhcmEgcXVlIGVsIHByZWZpam8gbWF0Y2hlZS5cbiAgICAgICAgICBjb25zdCBwcm9maWxlcyA9IGNvbGxlY3Rpb24odGhpcy5maXJlc3RvcmUsICdwcm9maWxlcycpO1xuICAgICAgICAgIGNvbnN0IGhhbmRsZVEgPSAocS5zdGFydHNXaXRoKCdAJykgPyBxLnNsaWNlKDEpIDogcSkudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICBjb25zdCBuYW1lUSA9IHEudHJpbSgpLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCAnICcpO1xuXG4gICAgICAgICAgY29uc3QgYnlIYW5kbGUkID0gZnJvbShcbiAgICAgICAgICAgIGdldERvY3MoZnNRdWVyeShwcm9maWxlcywgb3JkZXJCeSgnaGFuZGxlJyksIHN0YXJ0QXQoaGFuZGxlUSksIGVuZEF0KGhhbmRsZVEgKyAnXFx1ZjhmZicpLCBsaW1pdCg4KSkpXG4gICAgICAgICAgKTtcbiAgICAgICAgICBjb25zdCBieU5hbWUkID0gZnJvbShcbiAgICAgICAgICAgIGdldERvY3MoZnNRdWVyeShwcm9maWxlcywgb3JkZXJCeSgnbmFtZUxvd2VyJyksIHN0YXJ0QXQobmFtZVEpLCBlbmRBdChuYW1lUSArICdcXHVmOGZmJyksIGxpbWl0KDgpKSlcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgcmV0dXJuIGZvcmtKb2luKFtieUhhbmRsZSQsIGJ5TmFtZSRdKS5waXBlKFxuICAgICAgICAgICAgbWFwKChbaGFuZGxlU25hcCwgbmFtZVNuYXBdKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGJ5SWQgPSBuZXcgTWFwPHN0cmluZywgUHVibGljVXNlclByb2ZpbGU+KCk7XG4gICAgICAgICAgICAgIGZvciAoY29uc3QgZCBvZiBbLi4uaGFuZGxlU25hcC5kb2NzLCAuLi5uYW1lU25hcC5kb2NzXSkge1xuICAgICAgICAgICAgICAgIGlmIChieUlkLmhhcyhkLmlkKSkgY29udGludWU7XG4gICAgICAgICAgICAgICAgYnlJZC5zZXQoZC5pZCwge1xuICAgICAgICAgICAgICAgICAgdXNlcklkOiBkLmlkLFxuICAgICAgICAgICAgICAgICAgaGFuZGxlOiBkLmRhdGEoKVsnaGFuZGxlJ10gYXMgc3RyaW5nIHwgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgbmFtZTogZC5kYXRhKClbJ25hbWUnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIHsgdXNlcnM6IEFycmF5LmZyb20oYnlJZC52YWx1ZXMoKSkuc2xpY2UoMCwgOCkgfTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgIClcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiByZXMgPT4ge1xuICAgICAgICAgIGlmIChyZXMgJiYgJ3VzZXJzJyBpbiByZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRVc2VySWQgPSB0aGlzLmF1dGgudXNlcigpPy51c2VySWQ7XG4gICAgICAgICAgICBjb25zdCBleGNsdWRlZCA9IG5ldyBTZXQoWy4uLihjdXJyZW50VXNlcklkID8gW2N1cnJlbnRVc2VySWRdIDogW10pLCAuLi50aGlzLmV4aXN0aW5nTWVtYmVySWRzXSk7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdHMuc2V0KHJlcy51c2Vycy5maWx0ZXIodSA9PiAhZXhjbHVkZWQuaGFzKHUudXNlcklkKSkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLnNlYXJjaGluZy5zZXQoZmFsc2UpO1xuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogKCkgPT4ge1xuICAgICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0cy5zZXQoW10pO1xuICAgICAgICAgIHRoaXMuc2VhcmNoaW5nLnNldChmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgfVxuXG4gIG9uUXVlcnlDaGFuZ2UodmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIHRoaXMucXVlcnkuc2V0KHZhbHVlID8/ICcnKTtcbiAgICBpZiAoIXRoaXMuaXNFbWFpbCgpICYmICh2YWx1ZSA/PyAnJykubGVuZ3RoID49IDIpIHtcbiAgICAgIHRoaXMuc2VhcmNoaW5nLnNldCh0cnVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zZWFyY2hpbmcuc2V0KGZhbHNlKTtcbiAgICAgIHRoaXMuc2VhcmNoUmVzdWx0cy5zZXQoW10pO1xuICAgIH1cbiAgICB0aGlzLnNlYXJjaFN1YmplY3QubmV4dCh2YWx1ZSA/PyAnJyk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRSb2xlcygpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMub3JnSWQpIHJldHVybjtcbiAgICB0aGlzLm9yZ1NlcnZpY2UubGlzdE9yZ1JvbGVzKHRoaXMub3JnSWQpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiByb2xlcyA9PiB7XG4gICAgICAgIGlmIChyb2xlcy5sZW5ndGgpIHRoaXMuYXZhaWxhYmxlUm9sZXMuc2V0KHJvbGVzKTtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICByb2xlRGlzcGxheU5hbWUocm9sZTogT3JnUm9sZSk6IHN0cmluZyB7XG4gICAgY29uc3Qga2V5TWFwOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICAgdmlld2VyOiAncm9sZVZpZXdlcicsXG4gICAgICBlZGl0b3I6ICdyb2xlRWRpdG9yJyxcbiAgICAgIGFkbWluOiAncm9sZUFkbWluJyxcbiAgICB9O1xuICAgIGNvbnN0IGtleSA9IGtleU1hcFtyb2xlLm5hbWVdID8/IHJvbGUubmFtZTtcbiAgICBjb25zdCBsYWJlbCA9IHRoaXMudChrZXkpO1xuICAgIHJldHVybiBsYWJlbCAmJiAhbGFiZWwuc3RhcnRzV2l0aCgnWycpID8gbGFiZWwgOiByb2xlLm5hbWU7XG4gIH1cblxuICBhc3luYyBvbkludml0ZUJ5RW1haWwoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgZW1haWwgPSB0aGlzLnF1ZXJ5KCkudHJpbSgpO1xuICAgIGlmICghZW1haWwgfHwgdGhpcy5zZW5kaW5nKCkpIHJldHVybjtcbiAgICB0aGlzLnNlbmRpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgdGhpcy5vcmdTZXJ2aWNlLmludml0ZVVzZXIodGhpcy5vcmdJZCwge1xuICAgICAgICAgIGVtYWlsLFxuICAgICAgICAgIHJvbGVJZDogdGhpcy5zZWxlY3RlZFJvbGUoKSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB0aGlzLnQoJ3N1Y2Nlc3MnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgZHVyYXRpb246IDM1MDAsXG4gICAgICB9KTtcbiAgICAgIHRoaXMub25TdWNjZXNzPy4oKTtcbiAgICAgIHRoaXMuZGlzbWlzcygpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5lcnJvcnMuaGFuZGxlKGVyciwge1xuICAgICAgICBjb250ZXh0OiAnaW52aXRlLmJ5RW1haWwnLFxuICAgICAgICBmYWxsYmFja0tleTogJ3NlbmRJbnZpdGUnLFxuICAgICAgICBpMThuTmFtZXNwYWNlOiB0aGlzLmkxOG5OYW1lc3BhY2UsXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5zZW5kaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgaXNTZWxlY3RlZCh1c2VySWQ6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdGVkVXNlcnMoKS5zb21lKHUgPT4gdS51c2VySWQgPT09IHVzZXJJZCk7XG4gIH1cblxuICB0b2dnbGVVc2VyKHVzZXI6IFB1YmxpY1VzZXJQcm9maWxlKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaXNTZWxlY3RlZCh1c2VyLnVzZXJJZCkpIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRVc2Vycy51cGRhdGUobGlzdCA9PiBsaXN0LmZpbHRlcih1ID0+IHUudXNlcklkICE9PSB1c2VyLnVzZXJJZCkpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlbGVjdGVkVXNlcnMudXBkYXRlKGxpc3QgPT4gWy4uLmxpc3QsIHVzZXJdKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBvblNlbmRTZWxlY3RlZCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCB1c2VycyA9IHRoaXMuc2VsZWN0ZWRVc2VycygpO1xuICAgIGlmICghdXNlcnMubGVuZ3RoIHx8IHRoaXMuc2VuZGluZygpKSByZXR1cm47XG4gICAgdGhpcy5zZW5kaW5nLnNldCh0cnVlKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIHVzZXJzLm1hcCh1ID0+XG4gICAgICAgICAgZmlyc3RWYWx1ZUZyb20oXG4gICAgICAgICAgICB0aGlzLm9yZ1NlcnZpY2UuaW52aXRlVXNlcih0aGlzLm9yZ0lkLCB7XG4gICAgICAgICAgICAgIHVzZXJJZDogdS51c2VySWQsXG4gICAgICAgICAgICAgIHJvbGVJZDogdGhpcy5zZWxlY3RlZFJvbGUoKSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICApO1xuICAgICAgdGhpcy50b2FzdC5zaG93KHtcbiAgICAgICAgbWVzc2FnZTogdXNlcnMubGVuZ3RoID09PSAxID8gdGhpcy50KCdzdWNjZXNzJykgOiB0aGlzLnQoJ3N1Y2Nlc3NQbHVyYWwnKSxcbiAgICAgICAgY29sb3I6ICdkYXJrJyxcbiAgICAgICAgZHVyYXRpb246IDM1MDAsXG4gICAgICB9KTtcbiAgICAgIHRoaXMuc2VsZWN0ZWRVc2Vycy5zZXQoW10pO1xuICAgICAgdGhpcy5vblN1Y2Nlc3M/LigpO1xuICAgICAgdGhpcy5kaXNtaXNzKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdpbnZpdGUuYnlVc2VySWQnLFxuICAgICAgICBmYWxsYmFja0tleTogJ3NlbmRJbnZpdGUnLFxuICAgICAgICBpMThuTmFtZXNwYWNlOiB0aGlzLmkxOG5OYW1lc3BhY2UsXG4gICAgICB9KTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgdGhpcy5zZW5kaW5nLnNldChmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5yb2xlU3ViPy51bnN1YnNjcmliZSgpO1xuICB9XG5cbiAgZGlzbWlzcygpOiB2b2lkIHtcbiAgICB0aGlzLl9tb2RhbFJlZj8uZGlzbWlzcyhudWxsLCAnY2FuY2VsJyk7XG4gIH1cblxuICB0KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5pMThuLnQoa2V5LCB0aGlzLmkxOG5OYW1lc3BhY2UpO1xuICB9XG59XG4iXX0=
|
|
525
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52aXRlLW1lbWJlci1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL2ludml0ZS1tZW1iZXItbW9kYWwvaW52aXRlLW1lbWJlci1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBYSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQWdCLE1BQU0sTUFBTSxDQUFDO0FBQzdFLE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDdEUsT0FBTyxFQUNMLFNBQVMsRUFDVCxVQUFVLEVBQ1YsS0FBSyxJQUFJLE9BQU8sRUFDaEIsT0FBTyxFQUNQLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLE9BQU8sR0FDUixNQUFNLHlCQUF5QixDQUFDO0FBQ2pDLE9BQU8sRUFDTCxTQUFTLEVBQ1QsVUFBVSxFQUNWLFVBQVUsRUFDVixTQUFTLEVBQ1QsT0FBTyxFQUNQLFVBQVUsRUFDVixVQUFVLEdBQ1gsTUFBTSwyQkFBMkIsQ0FBQztBQUNuQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBQ3BDLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUN6RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDaEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLG1EQUFtRCxDQUFDO0FBQ3hGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ25GLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBQzlGLE9BQU8sRUFBa0IsZUFBZSxFQUFpQixTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEYsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNyRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDL0QsT0FBTyxFQUFXLGdCQUFnQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDeEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQy9ELE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDO0FBRXJGLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDRCQUE0QixDQUFDOztBQUV0RSxNQUFNLGlCQUFpQixHQUFHLGFBQWEsQ0FBQztBQVF4QyxRQUFRLENBQUMsRUFBRSxhQUFhLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxzQkFBc0IsRUFBRSxDQUFDLENBQUM7QUFFL0U7Ozs7Ozs7Ozs7Ozs7OztHQWVHO0FBOFRILE1BQU0sT0FBTywwQkFBMEI7SUE2RXJDO1FBNUVRLGVBQVUsR0FBRyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDaEMsU0FBSSxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUMzQixVQUFLLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdCLFdBQU0sR0FBRyxNQUFNLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUNyQyxjQUFTLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzlCLFNBQUksR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7UUFLbkMsdUNBQXVDO1FBQzlCLFVBQUssR0FBRyxFQUFFLENBQUM7UUFFcEIsbUVBQW1FO1FBQzFELHNCQUFpQixHQUFhLEVBQUUsQ0FBQztRQUsxQywyREFBMkQ7UUFDbEQsa0JBQWEsR0FBRyxpQkFBaUIsQ0FBQztRQUVsQyxVQUFLLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ25CLGNBQVMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsa0JBQWEsR0FBRyxNQUFNLENBQXNCLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELGtCQUFhLEdBQUcsTUFBTSxDQUFzQixFQUFFLENBQUMsQ0FBQztRQUNoRCxZQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3hCLGlCQUFZLEdBQUcsTUFBTSxDQUFTLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLG1CQUFjLEdBQUcsTUFBTSxDQUFZO1lBQzFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQ2hDLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQ2hDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO1NBQy9CLENBQUMsQ0FBQztRQUVNLGdCQUFXLEdBQUcsSUFBSSxXQUFXLENBQVMsUUFBUSxDQUFDLENBQUM7UUFFaEQsb0JBQWUsR0FBRyxRQUFRLENBQXlCLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDakUsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUEwQjtZQUN4QyxLQUFLLEVBQUUsRUFBRTtZQUNULFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQztZQUNoQyxJQUFJLEVBQUUsU0FBUyxDQUFDLE1BQU07WUFDdEIsS0FBSyxFQUFFLGVBQWUsQ0FBQyxPQUFPO1lBQzlCLE9BQU8sRUFBRSxJQUFJLENBQUMsY0FBYyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDdkMsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFO2dCQUNSLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQztnQkFDN0IsS0FBSyxFQUFFLENBQUM7YUFDVCxDQUFDLENBQUM7U0FDSixDQUFDLENBQUMsQ0FBQztRQUVLLFlBQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsNEJBQTRCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7UUFFakYsb0JBQWUsR0FBRyxRQUFRLENBQTBCLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDbEUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDO1lBQzFCLEtBQUssRUFBRSxxQkFBcUI7WUFDNUIsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLE9BQU87WUFDYixNQUFNLEVBQUUsT0FBTztZQUNmLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTztTQUMxRSxDQUFDLENBQUMsQ0FBQztRQUVLLHNCQUFpQixHQUFHLFFBQVEsQ0FBMEIsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNwRSxJQUFJLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxLQUFLLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQyxNQUFNLEdBQUc7WUFDbEUsS0FBSyxFQUFFLGVBQWU7WUFDdEIsS0FBSyxFQUFFLFNBQVM7WUFDaEIsSUFBSSxFQUFFLE9BQU87WUFDYixNQUFNLEVBQUUsT0FBTztZQUNmLElBQUksRUFBRSxTQUFTO1lBQ2YsSUFBSSxFQUFFLFFBQVE7WUFDZCxLQUFLLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFlLENBQUMsT0FBTztTQUMxRSxDQUFDLENBQUMsQ0FBQztRQUVJLGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQVUsQ0FBQztRQUk1QyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUMsRUFBRSxDQUFDO1lBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLGlCQUFpQixFQUFFLHdCQUF3QixDQUFDLENBQUM7UUFDekUsQ0FBQztRQUNELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUNqQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUN6RCxJQUFJLENBQUM7Z0JBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFFSCwwRkFBMEY7UUFDMUYsSUFBSSxDQUFDLGFBQWE7YUFDZixJQUFJLENBQ0gsb0JBQW9CLEVBQUUsRUFDdEIsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ1osSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQztnQkFDekMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQixPQUFPLEVBQUUsQ0FBQztZQUNaLENBQUM7WUFDRCwyRUFBMkU7WUFDM0UsNEVBQTRFO1lBQzVFLHFFQUFxRTtZQUNyRSxvRUFBb0U7WUFDcEUsNkVBQTZFO1lBQzdFLDJDQUEyQztZQUMzQyxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUN4RCxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDO1lBQ25FLE1BQU0sS0FBSyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBRTFELE1BQU0sU0FBUyxHQUFHLElBQUksQ0FDcEIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUMsT0FBTyxHQUFHLFFBQVEsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQ3JHLENBQUM7WUFDRixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQ2xCLE9BQU8sQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxDQUFDLEtBQUssR0FBRyxRQUFRLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNwRyxDQUFDO1lBRUYsT0FBTyxRQUFRLENBQUMsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQ3hDLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUU7Z0JBQzdCLE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxFQUE2QixDQUFDO2dCQUNsRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7b0JBQ3ZELElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUFFLFNBQVM7b0JBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTt3QkFDYixNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUU7d0JBQ1osTUFBTSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQXVCO3dCQUNoRCxJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBdUI7cUJBQzdDLENBQUMsQ0FBQztnQkFDTCxDQUFDO2dCQUNELE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDMUQsQ0FBQyxDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUNIO2FBQ0EsU0FBUyxDQUFDO1lBQ1QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUNWLElBQUksR0FBRyxJQUFJLE9BQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQztvQkFDMUIsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxNQUFNLENBQUM7b0JBQy9DLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO29CQUNqRyxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN6RSxDQUFDO2dCQUNELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzVCLENBQUM7WUFDRCxLQUFLLEVBQUUsR0FBRyxFQUFFO2dCQUNWLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO2dCQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUM1QixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFhO1FBQ3pCLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNqRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzdCLENBQUM7UUFDRCxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVPLFNBQVM7UUFDZixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPO1FBQ3hCLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDakQsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFO2dCQUNaLElBQUksS0FBSyxDQUFDLE1BQU07b0JBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkQsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxlQUFlLENBQUMsSUFBYTtRQUMzQixPQUFPLGdCQUFnQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELEtBQUssQ0FBQyxlQUFlO1FBQ25CLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFBRSxPQUFPO1FBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQztZQUNILE1BQU0sY0FBYyxDQUNsQixJQUFJLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO2dCQUNyQyxLQUFLO2dCQUNMLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxFQUFFO2FBQzVCLENBQUMsQ0FDSCxDQUFDO1lBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO2dCQUMxQixLQUFLLEVBQUUsTUFBTTtnQkFDYixRQUFRLEVBQUUsSUFBSTthQUNmLENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ25CLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixDQUFDO1FBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQztZQUNiLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRTtnQkFDdEIsT0FBTyxFQUFFLGdCQUFnQjtnQkFDekIsV0FBVyxFQUFFLFlBQVk7Z0JBQ3pCLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTthQUNsQyxDQUFDLENBQUM7UUFDTCxDQUFDO2dCQUFTLENBQUM7WUFDVCxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxNQUFjO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUM7SUFDN0QsQ0FBQztJQUVELFVBQVUsQ0FBQyxJQUF1QjtRQUNoQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDakMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUNoRixDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3JELENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLGNBQWM7UUFDbEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ25DLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7WUFBRSxPQUFPO1FBQzVDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQztZQUNILE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDZixLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ1osY0FBYyxDQUNaLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUU7Z0JBQ3JDLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTTtnQkFDaEIsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUU7YUFDNUIsQ0FBQyxDQUNILENBQ0YsQ0FDRixDQUFDO1lBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsT0FBTyxFQUFFLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLGVBQWUsQ0FBQztnQkFDekUsS0FBSyxFQUFFLE1BQU07Z0JBQ2IsUUFBUSxFQUFFLElBQUk7YUFDZixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzQixJQUFJLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDakIsQ0FBQztRQUFDLE9BQU8sR0FBRyxFQUFFLENBQUM7WUFDYixJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUU7Z0JBQ3RCLE9BQU8sRUFBRSxpQkFBaUI7Z0JBQzFCLFdBQVcsRUFBRSxZQUFZO2dCQUN6QixhQUFhLEVBQUUsSUFBSSxDQUFDLGFBQWE7YUFDbEMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztnQkFBUyxDQUFDO1lBQ1QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsQ0FBQztJQUNILENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRUQsT0FBTztRQUNMLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQsQ0FBQyxDQUFDLEdBQVc7UUFDWCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDOUMsQ0FBQzsrR0E5UFUsMEJBQTBCO21HQUExQiwwQkFBMEIsdU9BelMzQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1IVCxvOUZBbklDLFNBQVMsb0dBQ1QsVUFBVSxtRkFDVixVQUFVLDhFQUNWLFNBQVMsb1BBQ1QsVUFBVSx3S0FDVixVQUFVLHlHQUNWLE9BQU8sMEpBQ1AsbUJBQW1CLCtCQUNuQixlQUFlLDBHQUNmLGdCQUFnQiwyRUFDaEIsbUJBQW1CLCtFQUNuQixrQkFBa0IsNElBQ2xCLHVCQUF1QiwwRkFFdkIsY0FBYzs7NEZBMlNMLDBCQUEwQjtrQkE3VHRDLFNBQVM7K0JBQ0UseUJBQXlCLGNBQ3ZCLElBQUksV0FDUDt3QkFDUCxTQUFTO3dCQUNULFVBQVU7d0JBQ1YsVUFBVTt3QkFDVixTQUFTO3dCQUNULFVBQVU7d0JBQ1YsVUFBVTt3QkFDVixPQUFPO3dCQUNQLG1CQUFtQjt3QkFDbkIsZUFBZTt3QkFDZixnQkFBZ0I7d0JBQ2hCLG1CQUFtQjt3QkFDbkIsa0JBQWtCO3dCQUNsQix1QkFBdUI7d0JBQ3ZCLGFBQWE7d0JBQ2IsY0FBYztxQkFDZixZQUNTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBbUhUO3dEQStMUSxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLEtBQUs7c0JBQWIsS0FBSztnQkFHRyxpQkFBaUI7c0JBQXpCLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxhQUFhO3NCQUFyQixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBjb21wdXRlZCwgaW5qZWN0LCBJbnB1dCwgT25EZXN0cm95LCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgZmlyc3RWYWx1ZUZyb20sIGZvcmtKb2luLCBmcm9tLCBTdWJqZWN0LCBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IGRpc3RpbmN0VW50aWxDaGFuZ2VkLCBtYXAsIHN3aXRjaE1hcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7XG4gIEZpcmVzdG9yZSxcbiAgY29sbGVjdGlvbixcbiAgcXVlcnkgYXMgZnNRdWVyeSxcbiAgb3JkZXJCeSxcbiAgc3RhcnRBdCxcbiAgZW5kQXQsXG4gIGxpbWl0LFxuICBnZXREb2NzLFxufSBmcm9tICdAYW5ndWxhci9maXJlL2ZpcmVzdG9yZSc7XG5pbXBvcnQge1xuICBJb25CdXR0b24sXG4gIElvbkJ1dHRvbnMsXG4gIElvbkNvbnRlbnQsXG4gIElvbkhlYWRlcixcbiAgSW9uSWNvbixcbiAgSW9uU3Bpbm5lcixcbiAgSW9uVG9vbGJhcixcbn0gZnJvbSAnQGlvbmljL2FuZ3VsYXIvc3RhbmRhbG9uZSc7XG5pbXBvcnQgeyBhZGRJY29ucyB9IGZyb20gJ2lvbmljb25zJztcbmltcG9ydCB7IGNoZWNrbWFya0NpcmNsZU91dGxpbmUsIGNsb3NlT3V0bGluZSwgbWFpbE91dGxpbmUsIHBlcnNvbk91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5cbmltcG9ydCB7IEJ1dHRvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL2J1dHRvbi9idXR0b24uY29tcG9uZW50JztcbmltcG9ydCB7IERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9kaXNwbGF5L2Rpc3BsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90ZXh0L3RleHQuY29tcG9uZW50JztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGl0bGUvdGl0bGUuY29tcG9uZW50JztcbmltcG9ydCB7IEVtcHR5U3RhdGVDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvZW1wdHktc3RhdGUvZW1wdHktc3RhdGUuY29tcG9uZW50JztcbmltcG9ydCB7IFNlYXJjaGJhckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9zZWFyY2hiYXIvc2VhcmNoYmFyLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9zZWxlY3QtaW5wdXQvc2VsZWN0LWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBCdXR0b25NZXRhZGF0YSwgQ29tcG9uZW50U3RhdGVzLCBJbnB1dE1ldGFkYXRhLCBJbnB1dFR5cGUgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbmltcG9ydCB7IEF1dGhTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXV0aC9hdXRoLnNlcnZpY2UnO1xuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE9yZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmcvb3JnLnNlcnZpY2UnO1xuaW1wb3J0IHsgT3JnUm9sZSwgcmVzb2x2ZVJvbGVMYWJlbCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy90eXBlcyc7XG5pbXBvcnQgeyBUb2FzdFNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy90b2FzdC5zZXJ2aWNlJztcbmltcG9ydCB7IFZhbHRlY2hFcnJvclNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9lcnJvcnMvdmFsdGVjaC1lcnJvci5zZXJ2aWNlJztcblxuaW1wb3J0IHsgSU5WSVRFX01FTUJFUl9NT0RBTF9JMThOIH0gZnJvbSAnLi9pbnZpdGUtbWVtYmVyLW1vZGFsLmkxOG4nO1xuXG5jb25zdCBERUZBVUxUX05BTUVTUEFDRSA9ICdJbnZpdGVNb2RhbCc7XG5cbmludGVyZmFjZSBQdWJsaWNVc2VyUHJvZmlsZSB7XG4gIHVzZXJJZDogc3RyaW5nO1xuICBoYW5kbGU/OiBzdHJpbmc7XG4gIG5hbWU/OiBzdHJpbmc7XG59XG5cbmFkZEljb25zKHsgcGVyc29uT3V0bGluZSwgbWFpbE91dGxpbmUsIGNsb3NlT3V0bGluZSwgY2hlY2ttYXJrQ2lyY2xlT3V0bGluZSB9KTtcblxuLyoqXG4gKiBgdmFsLWludml0ZS1tZW1iZXItbW9kYWxgIOKAlCBpbnZpdGFjacOzbiBkZSBtaWVtYnJvcyBhIHVuYSBvcmdhbml6YWNpw7NuLlxuICogUHJvbW92aWRvIGRlc2RlIGBzaG93Y2FzZWAgYmFqbyBlbCBwcm9jZXNvIGRlIEFEUi0wMjEuXG4gKlxuICogQnVzY2EgdXN1YXJpb3MgcG9yIGhhbmRsZSBlbiBGaXJlc3RvcmUgYC9wcm9maWxlc2AgKG11bHRpLXNlbGVjdCkgbyBpbnZpdGEgcG9yXG4gKiBlbWFpbCBjdWFuZG8gZWwgcXVlcnkgZXMgdW4gY29ycmVvIHbDoWxpZG8uIEFzaWduYSBlbCByb2wgc2VsZWNjaW9uYWRvIHkgZW52w61hIGxhXG4gKiBpbnZpdGFjacOzbiB2w61hIGBPcmdTZXJ2aWNlLmludml0ZVVzZXJgLiBFeGNsdXllIGFsIHVzdWFyaW8gYWN0dWFsIHkgYSBsb3NcbiAqIGBleGlzdGluZ01lbWJlcklkc2AgZGUgbG9zIHJlc3VsdGFkb3MuXG4gKlxuICogQWJpZXJ0byB2w61hIGBNb2RhbFNlcnZpY2VgIOKAlCByZWNpYmUgYF9tb2RhbFJlZmAgcG9yIGBjb21wb25lbnRQcm9wc2AgKyBjYWxsYmFja1xuICogYG9uU3VjY2Vzc2AuIEhlYWRlciBjYW7Ds25pY28gKFJlZ2xhICM1KTogc2luIGBpb24tdGl0bGVgLCBib3TDs24gQ2VycmFyIHRleHRvIGVuXG4gKiBgc2xvdD1lbmRgLCB0w610dWxvL3N1YnTDrXR1bG8gZW4gZWwgYm9keSBjb24gYHZhbC1kaXNwbGF5YC9gdmFsLXRpdGxlYC5cbiAqXG4gKiBBdXRvLXJlZ2lzdHJhIHN1cyBkZWZhdWx0cyBpMThuIChlcy9lbikgc2kgZWwgY29uc3VtZXIgbm8gcHJvdmV5w7MgZWwgbmFtZXNwYWNlXG4gKiBgSW52aXRlTW9kYWxgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtaW52aXRlLW1lbWJlci1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBJb25IZWFkZXIsXG4gICAgSW9uVG9vbGJhcixcbiAgICBJb25CdXR0b25zLFxuICAgIElvbkJ1dHRvbixcbiAgICBJb25Db250ZW50LFxuICAgIElvblNwaW5uZXIsXG4gICAgSW9uSWNvbixcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIEJ1dHRvbkNvbXBvbmVudCxcbiAgICBEaXNwbGF5Q29tcG9uZW50LFxuICAgIEVtcHR5U3RhdGVDb21wb25lbnQsXG4gICAgU2VhcmNoYmFyQ29tcG9uZW50LFxuICAgIFNlYXJjaFNlbGVjdG9yQ29tcG9uZW50LFxuICAgIFRleHRDb21wb25lbnQsXG4gICAgVGl0bGVDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1oZWFkZXI+XG4gICAgICA8aW9uLXRvb2xiYXI+XG4gICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImRpc21pc3MoKVwiPlxuICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjbG9zZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgICAgPC9pb24tdG9vbGJhcj5cbiAgICA8L2lvbi1oZWFkZXI+XG5cbiAgICA8aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ3RpdGxlJyksIHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycgfVwiIC8+XG4gICAgICA8dmFsLXRpdGxlXG4gICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgY29udGVudDogdCgnc3VidGl0bGUnKSxcbiAgICAgICAgICBzaXplOiAnbGFyZ2UnLFxuICAgICAgICAgIGNvbG9yOiAnJyxcbiAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgfVwiXG4gICAgICAvPlxuXG4gICAgICA8ZGl2IGNsYXNzPVwicm9sZS1zZWxlY3Qtd3JhcFwiPlxuICAgICAgICA8dmFsLXRpdGxlXG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIGNvbnRlbnQ6IHQoJ3JvbGVMYWJlbCcpLFxuICAgICAgICAgICAgc2l6ZTogJ3NtYWxsJyxcbiAgICAgICAgICAgIGNvbG9yOiAnZGFyaycsXG4gICAgICAgICAgICBib2xkOiBmYWxzZSxcbiAgICAgICAgICB9XCJcbiAgICAgICAgLz5cbiAgICAgICAgPHZhbC1zZWxlY3QtaW5wdXQgZGF0YS10ZXN0aWQ9XCJpbnZpdGUtcm9sZS1zZWxlY3RcIiBbcHJvcHNdPVwicm9sZVNlbGVjdFByb3BzKClcIiAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtc2VjdGlvblwiPlxuICAgICAgICA8dmFsLXNlYXJjaGJhclxuICAgICAgICAgIGRhdGEtdGVzdGlkPVwiaW52aXRlLXNlYXJjaFwiXG4gICAgICAgICAgW3Byb3BzXT1cIntcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiB0KCdzZWFyY2hQbGFjZWhvbGRlcicpLFxuICAgICAgICAgICAgZGVib3VuY2U6IDM1MCxcbiAgICAgICAgICAgIHNob3dDYW5jZWxCdXR0b246ICduZXZlcicsXG4gICAgICAgICAgfVwiXG4gICAgICAgICAgKGZpbHRlckV2ZW50KT1cIm9uUXVlcnlDaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgIC8+XG5cbiAgICAgICAgQGlmIChzZWFyY2hpbmcoKSkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWFyY2gtc3RhdGVcIj5cbiAgICAgICAgICAgIDxpb24tc3Bpbm5lciBuYW1lPVwiY3Jlc2NlbnRcIiAvPlxuICAgICAgICAgICAgPHNwYW4+e3sgdCgnc2VhcmNoaW5nTGFiZWwnKSB9fTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfSBAZWxzZSBpZiAoaXNFbWFpbCgpKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImVtYWlsLWludml0ZS1jYXJkXCI+XG4gICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cIm1haWwtb3V0bGluZVwiIGNsYXNzPVwiZW1haWwtaWNvblwiIC8+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZW1haWwtaW52aXRlLXRleHRcIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJlbWFpbC1pbnZpdGUtbGFiZWxcIj57eyB0KCdpbnZpdGVCeUVtYWlsJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiZW1haWwtaW52aXRlLWFkZHJlc3NcIj57eyBxdWVyeSgpLnRyaW0oKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDx2YWwtYnV0dG9uIFtwcm9wc109XCJzZW5kQnV0dG9uUHJvcHMoKVwiIChjbGljayk9XCJvbkludml0ZUJ5RW1haWwoKVwiIC8+XG4gICAgICAgIH0gQGVsc2UgaWYgKHF1ZXJ5KCkubGVuZ3RoID49IDIgJiYgc2VhcmNoUmVzdWx0cygpLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIDx2YWwtZW1wdHktc3RhdGVcbiAgICAgICAgICAgIFtwcm9wc109XCJ7XG4gICAgICAgICAgICAgIHZhcmlhbnQ6ICdlbXB0eScsXG4gICAgICAgICAgICAgIHRpdGxlOiB0KCdub1Jlc3VsdHMnKSxcbiAgICAgICAgICAgICAgaWNvbjogJ3BlcnNvbi1vdXRsaW5lJyxcbiAgICAgICAgICAgIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgIH0gQGVsc2UgaWYgKHNlYXJjaFJlc3VsdHMoKS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdHMtbGlzdFwiPlxuICAgICAgICAgICAgQGZvciAodXNlciBvZiBzZWFyY2hSZXN1bHRzKCk7IHRyYWNrIHVzZXIudXNlcklkKSB7XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzcz1cInJlc3VsdC1jYXJkXCJcbiAgICAgICAgICAgICAgICBbYXR0ci5kYXRhLXRlc3RpZF09XCInaW52aXRlLXJlc3VsdC0nICsgdXNlci51c2VySWRcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5yZXN1bHQtY2FyZC0tc2VsZWN0ZWRdPVwiaXNTZWxlY3RlZCh1c2VyLnVzZXJJZClcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJ0b2dnbGVVc2VyKHVzZXIpXCJcbiAgICAgICAgICAgICAgICByb2xlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtY2hlY2tlZF09XCJpc1NlbGVjdGVkKHVzZXIudXNlcklkKVwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwicmVzdWx0LWNhcmRfX2F2YXRhclwiPlxuICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJwZXJzb24tb3V0bGluZVwiIC8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInJlc3VsdC1jYXJkX19ib2R5XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlc3VsdC1jYXJkX19uYW1lXCI+e3sgdXNlci5uYW1lIHx8IHVzZXIuaGFuZGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgQGlmICh1c2VyLmhhbmRsZSkge1xuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInJlc3VsdC1jYXJkX19oYW5kbGVcIj4mIzY0O3t7IHVzZXIuaGFuZGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJyZXN1bHQtY2FyZF9fY2hlY2tcIj5cbiAgICAgICAgICAgICAgICAgIEBpZiAoaXNTZWxlY3RlZCh1c2VyLnVzZXJJZCkpIHtcbiAgICAgICAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjaGVja21hcmstY2lyY2xlLW91dGxpbmVcIiBjbGFzcz1cImNoZWNrLW9uXCIgLz5cbiAgICAgICAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiY2hlY2stb2ZmXCI+PC9kaXY+XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgQGlmIChzZWxlY3RlZFVzZXJzKCkubGVuZ3RoID4gMCkge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1zZWN0aW9uXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInNlbGVjdGVkLXNlY3Rpb25fX2xhYmVsXCI+e3sgdCgnc2VsZWN0ZWRMYWJlbCcpIH19ICh7eyBzZWxlY3RlZFVzZXJzKCkubGVuZ3RoIH19KTwvc3Bhbj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3RlZC1jaGlwc1wiPlxuICAgICAgICAgICAgICBAZm9yICh1c2VyIG9mIHNlbGVjdGVkVXNlcnMoKTsgdHJhY2sgdXNlci51c2VySWQpIHtcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtY2hpcFwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+e3sgdXNlci5oYW5kbGUgPyAnQCcgKyB1c2VyLmhhbmRsZSA6IHVzZXIubmFtZSB8fCB1c2VyLnVzZXJJZCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxidXR0b24gY2xhc3M9XCJzZWxlY3RlZC1jaGlwX19yZW1vdmVcIiAoY2xpY2spPVwidG9nZ2xlVXNlcih1c2VyKVwiIGFyaWEtbGFiZWw9XCJRdWl0YXJcIj4mdGltZXM7PC9idXR0b24+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPHZhbC1idXR0b24gW3Byb3BzXT1cInNlbmRTZWxlY3RlZFByb3BzKClcIiAoY2xpY2spPVwib25TZW5kU2VsZWN0ZWQoKVwiIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cbiAgICAgIDwvZGl2PlxuICAgIDwvaW9uLWNvbnRlbnQ+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIGlvbi1jb250ZW50IHtcbiAgICAgICAgLS1wYWRkaW5nLWJvdHRvbTogMjRweDtcbiAgICAgIH1cbiAgICAgIHZhbC1kaXNwbGF5IHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIH1cbiAgICAgIHZhbC10aXRsZSB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB9XG4gICAgICAucm9sZS1zZWxlY3Qtd3JhcCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDEycHg7XG4gICAgICB9XG4gICAgICAucm9sZS1zZWxlY3Qge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgIH1cbiAgICAgIHZhbC1zZWFyY2hiYXIge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgfVxuICAgICAgLnNlYXJjaC1zZWN0aW9uIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAxNHB4O1xuICAgICAgfVxuICAgICAgLnNlYXJjaC1zdGF0ZSB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTBweDtcbiAgICAgICAgcGFkZGluZzogMTJweCAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44OHJlbTtcbiAgICAgIH1cbiAgICAgIC5lbWFpbC1pbnZpdGUtY2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTRweDtcbiAgICAgICAgcGFkZGluZzogMTRweCAxNnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KSA4JSwgdHJhbnNwYXJlbnQpO1xuICAgICAgfVxuICAgICAgLmVtYWlsLWljb24ge1xuICAgICAgICBmb250LXNpemU6IDI0cHg7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSk7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgfVxuICAgICAgLmVtYWlsLWludml0ZS10ZXh0IHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiAycHg7XG4gICAgICB9XG4gICAgICAuZW1haWwtaW52aXRlLWxhYmVsIHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc4cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xuICAgICAgICBsZXR0ZXItc3BhY2luZzogMC4wNGVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICB9XG4gICAgICAuZW1haWwtaW52aXRlLWFkZHJlc3Mge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBmb250LXNpemU6IDAuOTVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcbiAgICAgIH1cbiAgICAgIC5yZXN1bHRzLWxpc3Qge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgIH1cbiAgICAgIC5yZXN1bHQtY2FyZCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogMTRweDtcbiAgICAgICAgcGFkZGluZzogMTJweCAxNHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQsICNmNGY1ZjgpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4xNXM7XG4gICAgICB9XG4gICAgICAucmVzdWx0LWNhcmQ6YWN0aXZlIHtcbiAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgfVxuICAgICAgOmhvc3QtY29udGV4dChib2R5LmRhcmspIC5yZXN1bHQtY2FyZCxcbiAgICAgIDpob3N0LWNvbnRleHQoaHRtbC5pb24tcGFsZXR0ZS1kYXJrKSAucmVzdWx0LWNhcmQsXG4gICAgICA6aG9zdC1jb250ZXh0KFtkYXRhLXRoZW1lPSdkYXJrJ10pIC5yZXN1bHQtY2FyZCB7XG4gICAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4wNSk7XG4gICAgICB9XG4gICAgICAucmVzdWx0LWNhcmRfX2F2YXRhciB7XG4gICAgICAgIHdpZHRoOiA0MHB4O1xuICAgICAgICBoZWlnaHQ6IDQwcHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICAgICAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KSAxNSUsIHRyYW5zcGFyZW50KTtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgZmxleC1zaHJpbms6IDA7XG4gICAgICB9XG4gICAgICAucmVzdWx0LWNhcmRfX2JvZHkge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDJweDtcbiAgICAgIH1cbiAgICAgIC5yZXN1bHQtY2FyZF9fbmFtZSB7XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC45cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLnJlc3VsdC1jYXJkX19oYW5kbGUge1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgIH1cbiAgICAgIC5yZXN1bHQtY2FyZC0tc2VsZWN0ZWQge1xuICAgICAgICBib3JkZXI6IDEuNXB4IHNvbGlkIHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KSA4JSwgdHJhbnNwYXJlbnQpO1xuICAgICAgfVxuICAgICAgLnJlc3VsdC1jYXJkX19jaGVjayB7XG4gICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgIH1cbiAgICAgIC5jaGVjay1vbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMjJweDtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgIH1cbiAgICAgIC5jaGVjay1vZmYge1xuICAgICAgICB3aWR0aDogMjJweDtcbiAgICAgICAgaGVpZ2h0OiAyMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIHZhcigtLWlvbi1jb2xvci1tZWRpdW0pO1xuICAgICAgfVxuICAgICAgLnNlbGVjdGVkLXNlY3Rpb24ge1xuICAgICAgICBib3JkZXItdG9wOiAxcHggc29saWQgdmFyKC0tdmFsLWJvcmRlci1jb2xvciwgcmdiYSgwLCAwLCAwLCAwLjA4KSk7XG4gICAgICAgIHBhZGRpbmctdG9wOiAxNHB4O1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgICB9XG4gICAgICAuc2VsZWN0ZWQtc2VjdGlvbl9fbGFiZWwge1xuICAgICAgICBmb250LXNpemU6IDAuNzhyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAwLjA0ZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtKTtcbiAgICAgIH1cbiAgICAgIC5zZWxlY3RlZC1jaGlwcyB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICB9XG4gICAgICAuc2VsZWN0ZWQtY2hpcCB7XG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBwYWRkaW5nOiA0cHggMTBweCA0cHggMTJweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICAgICAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KSAxMiUsIHRyYW5zcGFyZW50KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5KTtcbiAgICAgICAgZm9udC1zaXplOiAwLjgycmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgfVxuICAgICAgLnNlbGVjdGVkLWNoaXBfX3JlbW92ZSB7XG4gICAgICAgIGJvcmRlcjogbm9uZTtcbiAgICAgICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICBmb250LXNpemU6IDFyZW07XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnkpO1xuICAgICAgICBwYWRkaW5nOiAwIDJweDtcbiAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgfVxuICAgICAgLnNlbGVjdGVkLWNoaXBfX3JlbW92ZTpob3ZlciB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgSW52aXRlTWVtYmVyTW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkRlc3Ryb3kge1xuICBwcml2YXRlIG9yZ1NlcnZpY2UgPSBpbmplY3QoT3JnU2VydmljZSk7XG4gIHByaXZhdGUgYXV0aCA9IGluamVjdChBdXRoU2VydmljZSk7XG4gIHByaXZhdGUgdG9hc3QgPSBpbmplY3QoVG9hc3RTZXJ2aWNlKTtcbiAgcHJpdmF0ZSBlcnJvcnMgPSBpbmplY3QoVmFsdGVjaEVycm9yU2VydmljZSk7XG4gIHByaXZhdGUgZmlyZXN0b3JlID0gaW5qZWN0KEZpcmVzdG9yZSk7XG4gIHByaXZhdGUgaTE4biA9IGluamVjdChJMThuU2VydmljZSk7XG5cbiAgLyoqIElueWVjdGFkbyBwb3IgYE1vZGFsU2VydmljZS5vcGVuYCDigJQgcmVmZXJlbmNpYSBwYXJhIGNlcnJhciBkZXNkZSBkZW50cm8uICovXG4gIEBJbnB1dCgpIF9tb2RhbFJlZj86IHsgZGlzbWlzczogKGRhdGE/OiB1bmtub3duLCByb2xlPzogc3RyaW5nKSA9PiB2b2lkIH07XG5cbiAgLyoqIE9yZ2FuaXphY2nDs24gYSBsYSBxdWUgc2UgaW52aXRhLiAqL1xuICBASW5wdXQoKSBvcmdJZCA9ICcnO1xuXG4gIC8qKiBJZHMgZGUgbWllbWJyb3MgeWEgZXhpc3RlbnRlcyAoZXhjbHVpZG9zIGRlIGxvcyByZXN1bHRhZG9zKS4gKi9cbiAgQElucHV0KCkgZXhpc3RpbmdNZW1iZXJJZHM6IHN0cmluZ1tdID0gW107XG5cbiAgLyoqIENhbGxiYWNrIHRyYXMgZW52aWFyIGxhKHMpIGludml0YWNpw7NuKGVzKSAocGFzYWRvIHBvciBgY29tcG9uZW50UHJvcHNgKS4gKi9cbiAgQElucHV0KCkgb25TdWNjZXNzPzogKCkgPT4gdm9pZDtcblxuICAvKiogTmFtZXNwYWNlIGkxOG4gY29uIHF1ZSBsYSB2aXN0YSByZXN1ZWx2ZSBzdXMgdGV4dG9zLiAqL1xuICBASW5wdXQoKSBpMThuTmFtZXNwYWNlID0gREVGQVVMVF9OQU1FU1BBQ0U7XG5cbiAgcmVhZG9ubHkgcXVlcnkgPSBzaWduYWwoJycpO1xuICByZWFkb25seSBzZWFyY2hpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBzZWFyY2hSZXN1bHRzID0gc2lnbmFsPFB1YmxpY1VzZXJQcm9maWxlW10+KFtdKTtcbiAgcmVhZG9ubHkgc2VsZWN0ZWRVc2VycyA9IHNpZ25hbDxQdWJsaWNVc2VyUHJvZmlsZVtdPihbXSk7XG4gIHJlYWRvbmx5IHNlbmRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBzZWxlY3RlZFJvbGUgPSBzaWduYWw8c3RyaW5nPigndmlld2VyJyk7XG4gIHJlYWRvbmx5IGF2YWlsYWJsZVJvbGVzID0gc2lnbmFsPE9yZ1JvbGVbXT4oW1xuICAgIHsgaWQ6ICd2aWV3ZXInLCBuYW1lOiAndmlld2VyJyB9LFxuICAgIHsgaWQ6ICdlZGl0b3InLCBuYW1lOiAnZWRpdG9yJyB9LFxuICAgIHsgaWQ6ICdhZG1pbicsIG5hbWU6ICdhZG1pbicgfSxcbiAgXSk7XG5cbiAgcmVhZG9ubHkgcm9sZUNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPigndmlld2VyJyk7XG5cbiAgcmVhZG9ubHkgcm9sZVNlbGVjdFByb3BzID0gY29tcHV0ZWQ8UGFydGlhbDxJbnB1dE1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICBjb250cm9sOiB0aGlzLnJvbGVDb250cm9sIGFzIEZvcm1Db250cm9sLFxuICAgIGxhYmVsOiAnJyxcbiAgICBwbGFjZWhvbGRlcjogdGhpcy50KCdyb2xlTGFiZWwnKSxcbiAgICB0eXBlOiBJbnB1dFR5cGUuU0VMRUNULFxuICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICBvcHRpb25zOiB0aGlzLmF2YWlsYWJsZVJvbGVzKCkubWFwKHIgPT4gKHtcbiAgICAgIGlkOiByLmlkLFxuICAgICAgbmFtZTogdGhpcy5yb2xlRGlzcGxheU5hbWUociksXG4gICAgICBvcmRlcjogMCxcbiAgICB9KSksXG4gIH0pKTtcblxuICByZWFkb25seSBpc0VtYWlsID0gY29tcHV0ZWQoKCkgPT4gL15bXlxcc0BdK0BbXlxcc0BdK1xcLlteXFxzQF0rJC8udGVzdCh0aGlzLnF1ZXJ5KCkudHJpbSgpKSk7XG5cbiAgcmVhZG9ubHkgc2VuZEJ1dHRvblByb3BzID0gY29tcHV0ZWQ8UGFydGlhbDxCdXR0b25NZXRhZGF0YT4+KCgpID0+ICh7XG4gICAgdGV4dDogdGhpcy50KCdzZW5kSW52aXRlJyksXG4gICAgdG9rZW46ICdpbnZpdGUtc3VibWl0LWVtYWlsJyxcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIGZpbGw6ICdzb2xpZCcsXG4gICAgZXhwYW5kOiAnYmxvY2snLFxuICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICBzdGF0ZTogdGhpcy5zZW5kaW5nKCkgPyBDb21wb25lbnRTdGF0ZXMuV09SS0lORyA6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgc2VuZFNlbGVjdGVkUHJvcHMgPSBjb21wdXRlZDxQYXJ0aWFsPEJ1dHRvbk1ldGFkYXRhPj4oKCkgPT4gKHtcbiAgICB0ZXh0OiBgJHt0aGlzLnQoJ3NlbmRTZWxlY3RlZCcpfSAoJHt0aGlzLnNlbGVjdGVkVXNlcnMoKS5sZW5ndGh9KWAsXG4gICAgdG9rZW46ICdpbnZpdGUtc3VibWl0JyxcbiAgICBjb2xvcjogJ3ByaW1hcnknLFxuICAgIGZpbGw6ICdzb2xpZCcsXG4gICAgZXhwYW5kOiAnYmxvY2snLFxuICAgIHNpemU6ICdkZWZhdWx0JyxcbiAgICB0eXBlOiAnYnV0dG9uJyxcbiAgICBzdGF0ZTogdGhpcy5zZW5kaW5nKCkgPyBDb21wb25lbnRTdGF0ZXMuV09SS0lORyA6IENvbXBvbmVudFN0YXRlcy5FTkFCTEVELFxuICB9KSk7XG5cbiAgcHJpdmF0ZSBzZWFyY2hTdWJqZWN0ID0gbmV3IFN1YmplY3Q8c3RyaW5nPigpO1xuICBwcml2YXRlIHJvbGVTdWI/OiBTdWJzY3JpcHRpb247XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmkxOG4uaGFzTmFtZXNwYWNlKERFRkFVTFRfTkFNRVNQQUNFKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudChERUZBVUxUX05BTUVTUEFDRSwgSU5WSVRFX01FTUJFUl9NT0RBTF9JMThOKTtcbiAgICB9XG4gICAgdGhpcy5sb2FkUm9sZXMoKTtcbiAgICB0aGlzLnJvbGVTdWIgPSB0aGlzLnJvbGVDb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUodiA9PiB7XG4gICAgICBpZiAodikgdGhpcy5zZWxlY3RlZFJvbGUuc2V0KHYpO1xuICAgIH0pO1xuXG4gICAgLy8gdmFsLXNlYXJjaGJhciBhbHJlYWR5IGRlYm91bmNlcyAtLSBwaXBlbGluZSBvbmx5IG5lZWRzIGRpc3RpbmN0VW50aWxDaGFuZ2VkICsgc3dpdGNoTWFwXG4gICAgdGhpcy5zZWFyY2hTdWJqZWN0XG4gICAgICAucGlwZShcbiAgICAgICAgZGlzdGluY3RVbnRpbENoYW5nZWQoKSxcbiAgICAgICAgc3dpdGNoTWFwKHEgPT4ge1xuICAgICAgICAgIGlmICghcSB8fCBxLmxlbmd0aCA8IDIgfHwgdGhpcy5pc0VtYWlsKCkpIHtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoaW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgICB0aGlzLnNlYXJjaFJlc3VsdHMuc2V0KFtdKTtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gQsO6c3F1ZWRhIHBvciBwcmVmaWpvIHNvYnJlIERPUyBjYW1wb3M6IGBoYW5kbGVgIHkgYG5hbWVMb3dlcmAuIEZpcmVzdG9yZVxuICAgICAgICAgIC8vIG5vIHNvcG9ydGEgT1IgZW50cmUgY2FtcG9zIGVuIHVuYSBxdWVyeSwgYXPDrSBxdWUgc2UgbGFuemFuIGRvcyBxdWVyaWVzIGVuXG4gICAgICAgICAgLy8gcGFyYWxlbG8geSBzZSBtZXpjbGFuIChkZWR1cCBwb3IgaWQpLiBFbCBzZW50aW5lbCBhbHRvIO+jvyBjaWVycmEgZWxcbiAgICAgICAgICAvLyByYW5nbyBkZWwgcHJlZmlqby4gYG5hbWVMb3dlcmAgbG8gZXNjcmliZSBlbCBiYWNrZW5kIGVuIC9wcm9maWxlc1xuICAgICAgICAgIC8vIChOb3JtYWxpemVOYW1lRm9yU2VhcmNoOiBsb3dlcmNhc2UgKyBjb2xhcHNvIGRlIGVzcGFjaW9zKTsgbm9ybWFsaXphbW9zIGVsXG4gICAgICAgICAgLy8gcXVlcnkgaWd1YWwgcGFyYSBxdWUgZWwgcHJlZmlqbyBtYXRjaGVlLlxuICAgICAgICAgIGNvbnN0IHByb2ZpbGVzID0gY29sbGVjdGlvbih0aGlzLmZpcmVzdG9yZSwgJ3Byb2ZpbGVzJyk7XG4gICAgICAgICAgY29uc3QgaGFuZGxlUSA9IChxLnN0YXJ0c1dpdGgoJ0AnKSA/IHEuc2xpY2UoMSkgOiBxKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgIGNvbnN0IG5hbWVRID0gcS50cmltKCkudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMrL2csICcgJyk7XG5cbiAgICAgICAgICBjb25zdCBieUhhbmRsZSQgPSBmcm9tKFxuICAgICAgICAgICAgZ2V0RG9jcyhmc1F1ZXJ5KHByb2ZpbGVzLCBvcmRlckJ5KCdoYW5kbGUnKSwgc3RhcnRBdChoYW5kbGVRKSwgZW5kQXQoaGFuZGxlUSArICdcXHVmOGZmJyksIGxpbWl0KDgpKSlcbiAgICAgICAgICApO1xuICAgICAgICAgIGNvbnN0IGJ5TmFtZSQgPSBmcm9tKFxuICAgICAgICAgICAgZ2V0RG9jcyhmc1F1ZXJ5KHByb2ZpbGVzLCBvcmRlckJ5KCduYW1lTG93ZXInKSwgc3RhcnRBdChuYW1lUSksIGVuZEF0KG5hbWVRICsgJ1xcdWY4ZmYnKSwgbGltaXQoOCkpKVxuICAgICAgICAgICk7XG5cbiAgICAgICAgICByZXR1cm4gZm9ya0pvaW4oW2J5SGFuZGxlJCwgYnlOYW1lJF0pLnBpcGUoXG4gICAgICAgICAgICBtYXAoKFtoYW5kbGVTbmFwLCBuYW1lU25hcF0pID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgYnlJZCA9IG5ldyBNYXA8c3RyaW5nLCBQdWJsaWNVc2VyUHJvZmlsZT4oKTtcbiAgICAgICAgICAgICAgZm9yIChjb25zdCBkIG9mIFsuLi5oYW5kbGVTbmFwLmRvY3MsIC4uLm5hbWVTbmFwLmRvY3NdKSB7XG4gICAgICAgICAgICAgICAgaWYgKGJ5SWQuaGFzKGQuaWQpKSBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBieUlkLnNldChkLmlkLCB7XG4gICAgICAgICAgICAgICAgICB1c2VySWQ6IGQuaWQsXG4gICAgICAgICAgICAgICAgICBoYW5kbGU6IGQuZGF0YSgpWydoYW5kbGUnXSBhcyBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICBuYW1lOiBkLmRhdGEoKVsnbmFtZSddIGFzIHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4geyB1c2VyczogQXJyYXkuZnJvbShieUlkLnZhbHVlcygpKS5zbGljZSgwLCA4KSB9O1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgKVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IHJlcyA9PiB7XG4gICAgICAgICAgaWYgKHJlcyAmJiAndXNlcnMnIGluIHJlcykge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFVzZXJJZCA9IHRoaXMuYXV0aC51c2VyKCk/LnVzZXJJZDtcbiAgICAgICAgICAgIGNvbnN0IGV4Y2x1ZGVkID0gbmV3IFNldChbLi4uKGN1cnJlbnRVc2VySWQgPyBbY3VycmVudFVzZXJJZF0gOiBbXSksIC4uLnRoaXMuZXhpc3RpbmdNZW1iZXJJZHNdKTtcbiAgICAgICAgICAgIHRoaXMuc2VhcmNoUmVzdWx0cy5zZXQocmVzLnVzZXJzLmZpbHRlcih1ID0+ICFleGNsdWRlZC5oYXModS51c2VySWQpKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuc2VhcmNoaW5nLnNldChmYWxzZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGVycm9yOiAoKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZWFyY2hSZXN1bHRzLnNldChbXSk7XG4gICAgICAgICAgdGhpcy5zZWFyY2hpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgb25RdWVyeUNoYW5nZSh2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5xdWVyeS5zZXQodmFsdWUgPz8gJycpO1xuICAgIGlmICghdGhpcy5pc0VtYWlsKCkgJiYgKHZhbHVlID8/ICcnKS5sZW5ndGggPj0gMikge1xuICAgICAgdGhpcy5zZWFyY2hpbmcuc2V0KHRydWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNlYXJjaGluZy5zZXQoZmFsc2UpO1xuICAgICAgdGhpcy5zZWFyY2hSZXN1bHRzLnNldChbXSk7XG4gICAgfVxuICAgIHRoaXMuc2VhcmNoU3ViamVjdC5uZXh0KHZhbHVlID8/ICcnKTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFJvbGVzKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5vcmdJZCkgcmV0dXJuO1xuICAgIHRoaXMub3JnU2VydmljZS5saXN0T3JnUm9sZXModGhpcy5vcmdJZCkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IHJvbGVzID0+IHtcbiAgICAgICAgaWYgKHJvbGVzLmxlbmd0aCkgdGhpcy5hdmFpbGFibGVSb2xlcy5zZXQocm9sZXMpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfVxuXG4gIHJvbGVEaXNwbGF5TmFtZShyb2xlOiBPcmdSb2xlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gcmVzb2x2ZVJvbGVMYWJlbChyb2xlLCB0aGlzLmkxOG4ubGFuZygpKTtcbiAgfVxuXG4gIGFzeW5jIG9uSW52aXRlQnlFbWFpbCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBjb25zdCBlbWFpbCA9IHRoaXMucXVlcnkoKS50cmltKCk7XG4gICAgaWYgKCFlbWFpbCB8fCB0aGlzLnNlbmRpbmcoKSkgcmV0dXJuO1xuICAgIHRoaXMuc2VuZGluZy5zZXQodHJ1ZSk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IGZpcnN0VmFsdWVGcm9tKFxuICAgICAgICB0aGlzLm9yZ1NlcnZpY2UuaW52aXRlVXNlcih0aGlzLm9yZ0lkLCB7XG4gICAgICAgICAgZW1haWwsXG4gICAgICAgICAgcm9sZUlkOiB0aGlzLnNlbGVjdGVkUm9sZSgpLFxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICAgIHRoaXMudG9hc3Quc2hvdyh7XG4gICAgICAgIG1lc3NhZ2U6IHRoaXMudCgnc3VjY2VzcycpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBkdXJhdGlvbjogMzUwMCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5vblN1Y2Nlc3M/LigpO1xuICAgICAgdGhpcy5kaXNtaXNzKCk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aGlzLmVycm9ycy5oYW5kbGUoZXJyLCB7XG4gICAgICAgIGNvbnRleHQ6ICdpbnZpdGUuYnlFbWFpbCcsXG4gICAgICAgIGZhbGxiYWNrS2V5OiAnc2VuZEludml0ZScsXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMuaTE4bk5hbWVzcGFjZSxcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnNlbmRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBpc1NlbGVjdGVkKHVzZXJJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRVc2VycygpLnNvbWUodSA9PiB1LnVzZXJJZCA9PT0gdXNlcklkKTtcbiAgfVxuXG4gIHRvZ2dsZVVzZXIodXNlcjogUHVibGljVXNlclByb2ZpbGUpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pc1NlbGVjdGVkKHVzZXIudXNlcklkKSkge1xuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJzLnVwZGF0ZShsaXN0ID0+IGxpc3QuZmlsdGVyKHUgPT4gdS51c2VySWQgIT09IHVzZXIudXNlcklkKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2VsZWN0ZWRVc2Vycy51cGRhdGUobGlzdCA9PiBbLi4ubGlzdCwgdXNlcl0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uU2VuZFNlbGVjdGVkKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHVzZXJzID0gdGhpcy5zZWxlY3RlZFVzZXJzKCk7XG4gICAgaWYgKCF1c2Vycy5sZW5ndGggfHwgdGhpcy5zZW5kaW5nKCkpIHJldHVybjtcbiAgICB0aGlzLnNlbmRpbmcuc2V0KHRydWUpO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCBQcm9taXNlLmFsbChcbiAgICAgICAgdXNlcnMubWFwKHUgPT5cbiAgICAgICAgICBmaXJzdFZhbHVlRnJvbShcbiAgICAgICAgICAgIHRoaXMub3JnU2VydmljZS5pbnZpdGVVc2VyKHRoaXMub3JnSWQsIHtcbiAgICAgICAgICAgICAgdXNlcklkOiB1LnVzZXJJZCxcbiAgICAgICAgICAgICAgcm9sZUlkOiB0aGlzLnNlbGVjdGVkUm9sZSgpLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgICB0aGlzLnRvYXN0LnNob3coe1xuICAgICAgICBtZXNzYWdlOiB1c2Vycy5sZW5ndGggPT09IDEgPyB0aGlzLnQoJ3N1Y2Nlc3MnKSA6IHRoaXMudCgnc3VjY2Vzc1BsdXJhbCcpLFxuICAgICAgICBjb2xvcjogJ2RhcmsnLFxuICAgICAgICBkdXJhdGlvbjogMzUwMCxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zZWxlY3RlZFVzZXJzLnNldChbXSk7XG4gICAgICB0aGlzLm9uU3VjY2Vzcz8uKCk7XG4gICAgICB0aGlzLmRpc21pc3MoKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMuZXJyb3JzLmhhbmRsZShlcnIsIHtcbiAgICAgICAgY29udGV4dDogJ2ludml0ZS5ieVVzZXJJZCcsXG4gICAgICAgIGZhbGxiYWNrS2V5OiAnc2VuZEludml0ZScsXG4gICAgICAgIGkxOG5OYW1lc3BhY2U6IHRoaXMuaTE4bk5hbWVzcGFjZSxcbiAgICAgIH0pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0aGlzLnNlbmRpbmcuc2V0KGZhbHNlKTtcbiAgICB9XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJvbGVTdWI/LnVuc3Vic2NyaWJlKCk7XG4gIH1cblxuICBkaXNtaXNzKCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsUmVmPy5kaXNtaXNzKG51bGwsICdjYW5jZWwnKTtcbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksIHRoaXMuaTE4bk5hbWVzcGFjZSk7XG4gIH1cbn1cbiJdfQ==
|
package/esm2022/lib/components/organisms/member-import-modal/member-import-modal.component.mjs
CHANGED
|
@@ -7,10 +7,11 @@ import { DisplayComponent } from '../../atoms/display/display.component';
|
|
|
7
7
|
import { TextComponent } from '../../atoms/text/text.component';
|
|
8
8
|
import { TitleComponent } from '../../atoms/title/title.component';
|
|
9
9
|
import { CheckInputComponent } from '../../molecules/check-input/check-input.component';
|
|
10
|
-
import {
|
|
10
|
+
import { SearchSelectorComponent } from '../../molecules/select-input/select-input.component';
|
|
11
11
|
import { ComponentStates, InputType } from '../../types';
|
|
12
12
|
import { I18nService } from '../../../services/i18n';
|
|
13
13
|
import { OrgService } from '../../../services/org/org.service';
|
|
14
|
+
import { resolveRoleLabel, } from '../../../services/org/types';
|
|
14
15
|
import { MEMBER_IMPORT_MODAL_I18N } from './member-import-modal.i18n';
|
|
15
16
|
import * as i0 from "@angular/core";
|
|
16
17
|
import * as i1 from "@angular/forms";
|
|
@@ -39,10 +40,11 @@ export class MemberImportModalComponent {
|
|
|
39
40
|
this.importMode = signal('file');
|
|
40
41
|
this.onConflictControl = new FormControl('assignRole');
|
|
41
42
|
this.sendActivationControl = new FormControl(true);
|
|
42
|
-
this.
|
|
43
|
+
this.conflictSelectProps = computed(() => ({
|
|
43
44
|
control: this.onConflictControl,
|
|
44
45
|
label: '',
|
|
45
|
-
|
|
46
|
+
placeholder: this.t('onConflictLabel'),
|
|
47
|
+
type: InputType.SELECT,
|
|
46
48
|
state: ComponentStates.ENABLED,
|
|
47
49
|
options: [
|
|
48
50
|
{ id: 'assignRole', name: this.t('conflictAssign'), order: 0 },
|
|
@@ -62,7 +64,13 @@ export class MemberImportModalComponent {
|
|
|
62
64
|
this.results = signal(null);
|
|
63
65
|
/** Nombre del archivo CSV cargado (vacío si se pegó manualmente). */
|
|
64
66
|
this.fileName = signal('');
|
|
65
|
-
this.rolesHint = computed(() =>
|
|
67
|
+
this.rolesHint = computed(() => {
|
|
68
|
+
if (!this.availableRoles.length)
|
|
69
|
+
return '';
|
|
70
|
+
const lang = this.i18n.lang();
|
|
71
|
+
const names = this.availableRoles.map(r => resolveRoleLabel(r, lang)).join(', ');
|
|
72
|
+
return `${this.t('rolesAvailable')} ${names}`;
|
|
73
|
+
});
|
|
66
74
|
this.summaryLabel = computed(() => {
|
|
67
75
|
const s = this.results()?.summary;
|
|
68
76
|
if (!s)
|
|
@@ -251,10 +259,10 @@ export class MemberImportModalComponent {
|
|
|
251
259
|
</div>
|
|
252
260
|
}
|
|
253
261
|
|
|
254
|
-
<!-- Conflicto:
|
|
262
|
+
<!-- Conflicto: select -->
|
|
255
263
|
<div class="import-section">
|
|
256
264
|
<val-title [props]="{ content: t('onConflictLabel'), size: 'small', color: 'dark', bold: true }" />
|
|
257
|
-
<val-
|
|
265
|
+
<val-select-input [props]="conflictSelectProps()" />
|
|
258
266
|
</div>
|
|
259
267
|
|
|
260
268
|
<!-- Activación: val-check-input -->
|
|
@@ -297,7 +305,7 @@ export class MemberImportModalComponent {
|
|
|
297
305
|
</div>
|
|
298
306
|
}
|
|
299
307
|
</ion-content>
|
|
300
|
-
`, isInline: true, styles: ["val-display{display:block;margin-bottom:4px}val-title{display:block;margin-bottom:8px}.import-roles-hint{display:block;margin-bottom:24px}.import-section{margin-bottom:28px}.import-section val-title{margin-bottom:10px}.import-method-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px}.import-method-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:14px 16px;border:1.5px solid var(--ion-color-light-shade, #d7d8da);border-radius:12px;background:var(--ion-color-light);cursor:pointer;text-align:left;transition:border-color .15s ease,background .15s ease}.import-method-card:hover{border-color:var(--ion-color-medium, #92949c)}.import-method-card--active{border-color:var(--ion-color-primary, #7026df);background:color-mix(in srgb,var(--ion-color-primary, #7026df) 6%,var(--ion-color-light))}.import-method-card__icon{font-size:1.375rem;color:var(--ion-color-medium-shade, #6b6e76);margin-bottom:4px}.import-method-card--active .import-method-card__icon{color:var(--ion-color-primary, #7026df)}.import-method-card__title{font-size:.875rem;font-weight:600;color:var(--ion-color-dark)}.import-method-card__hint{font-size:.75rem;color:var(--ion-color-medium, #92949c);line-height:1.3}.import-upload__btn{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border:1px solid var(--ion-color-medium, #92949c);border-radius:10px;background:var(--ion-color-light);color:var(--ion-color-dark);font-size:.875rem;font-weight:600;cursor:pointer;transition:border-color .15s ease}.import-upload__btn:hover{border-color:var(--ion-color-primary, #7026df)}.import-upload__btn ion-icon{font-size:1.25rem}.import-upload__btn input[type=file]{display:none}.import-file-loaded{margin:10px 0 0;font-size:.8125rem;color:var(--ion-color-medium-shade, #6b6e76)}.import-csv{--background:
|
|
308
|
+
`, isInline: true, styles: ["val-display{display:block;margin-bottom:4px}val-title{display:block;margin-bottom:8px}.import-roles-hint{display:block;margin-bottom:24px}.import-section{margin-bottom:28px}.import-section val-title{margin-bottom:10px}.import-method-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px}.import-method-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:14px 16px;border:1.5px solid var(--ion-color-light-shade, #d7d8da);border-radius:12px;background:var(--ion-color-light);cursor:pointer;text-align:left;transition:border-color .15s ease,background .15s ease}.import-method-card:hover{border-color:var(--ion-color-medium, #92949c)}.import-method-card--active{border-color:var(--ion-color-primary, #7026df);background:color-mix(in srgb,var(--ion-color-primary, #7026df) 6%,var(--ion-color-light))}.import-method-card__icon{font-size:1.375rem;color:var(--ion-color-medium-shade, #6b6e76);margin-bottom:4px}.import-method-card--active .import-method-card__icon{color:var(--ion-color-primary, #7026df)}.import-method-card__title{font-size:.875rem;font-weight:600;color:var(--ion-color-dark)}.import-method-card__hint{font-size:.75rem;color:var(--ion-color-medium, #92949c);line-height:1.3}.import-upload__btn{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border:1px solid var(--ion-color-medium, #92949c);border-radius:10px;background:var(--ion-color-light);color:var(--ion-color-dark);font-size:.875rem;font-weight:600;cursor:pointer;transition:border-color .15s ease}.import-upload__btn:hover{border-color:var(--ion-color-primary, #7026df)}.import-upload__btn ion-icon{font-size:1.25rem}.import-upload__btn input[type=file]{display:none}.import-file-loaded{margin:10px 0 0;font-size:.8125rem;color:var(--ion-color-medium-shade, #6b6e76)}.import-csv{--background: transparent;border-radius:10px;font-family:monospace;font-size:.8125rem}.import-error{margin:0 0 12px;font-size:.875rem;color:var(--ion-color-danger, #c0392b)}.import-actions{margin-top:8px}.import-results{display:flex;flex-direction:column;gap:6px;margin:12px 0}.import-row{display:grid;grid-template-columns:1fr auto;grid-row-gap:2px;align-items:center;padding:10px 12px;border-radius:8px;border-left:3px solid var(--ion-color-medium);background:var(--ion-color-light);font-size:.875rem}.import-row--created{border-left-color:var(--ion-color-success, #2dd36f)}.import-row--assigned{border-left-color:var(--ion-color-primary, #7026df)}.import-row--skipped{border-left-color:var(--ion-color-medium, #92949c)}.import-row--error{border-left-color:var(--ion-color-danger, #c0392b)}.import-row__email{font-weight:600;color:var(--ion-color-dark)}.import-row__status{text-align:right;color:var(--ion-color-medium-shade, #6b6e76)}.import-row__reason{grid-column:1 / -1;font-size:.75rem;color:var(--ion-color-danger, #c0392b)}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonTextarea, selector: "ion-textarea", inputs: ["autoGrow", "autocapitalize", "autofocus", "clearOnEdit", "color", "cols", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "maxlength", "minlength", "mode", "name", "placeholder", "readonly", "required", "rows", "shape", "spellcheck", "value", "wrap"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: DisplayComponent, selector: "val-display", inputs: ["props"] }, { kind: "component", type: TextComponent, selector: "val-text", inputs: ["props"] }, { kind: "component", type: TitleComponent, selector: "val-title", inputs: ["props"] }, { kind: "component", type: SearchSelectorComponent, selector: "val-select-input", inputs: ["preset", "props"] }, { kind: "component", type: CheckInputComponent, selector: "val-check-input", inputs: ["preset", "props"] }] }); }
|
|
301
309
|
}
|
|
302
310
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: MemberImportModalComponent, decorators: [{
|
|
303
311
|
type: Component,
|
|
@@ -315,7 +323,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
315
323
|
DisplayComponent,
|
|
316
324
|
TextComponent,
|
|
317
325
|
TitleComponent,
|
|
318
|
-
|
|
326
|
+
SearchSelectorComponent,
|
|
319
327
|
CheckInputComponent,
|
|
320
328
|
], template: `
|
|
321
329
|
<ion-header>
|
|
@@ -403,10 +411,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
403
411
|
</div>
|
|
404
412
|
}
|
|
405
413
|
|
|
406
|
-
<!-- Conflicto:
|
|
414
|
+
<!-- Conflicto: select -->
|
|
407
415
|
<div class="import-section">
|
|
408
416
|
<val-title [props]="{ content: t('onConflictLabel'), size: 'small', color: 'dark', bold: true }" />
|
|
409
|
-
<val-
|
|
417
|
+
<val-select-input [props]="conflictSelectProps()" />
|
|
410
418
|
</div>
|
|
411
419
|
|
|
412
420
|
<!-- Activación: val-check-input -->
|
|
@@ -449,7 +457,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
449
457
|
</div>
|
|
450
458
|
}
|
|
451
459
|
</ion-content>
|
|
452
|
-
`, styles: ["val-display{display:block;margin-bottom:4px}val-title{display:block;margin-bottom:8px}.import-roles-hint{display:block;margin-bottom:24px}.import-section{margin-bottom:28px}.import-section val-title{margin-bottom:10px}.import-method-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px}.import-method-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:14px 16px;border:1.5px solid var(--ion-color-light-shade, #d7d8da);border-radius:12px;background:var(--ion-color-light);cursor:pointer;text-align:left;transition:border-color .15s ease,background .15s ease}.import-method-card:hover{border-color:var(--ion-color-medium, #92949c)}.import-method-card--active{border-color:var(--ion-color-primary, #7026df);background:color-mix(in srgb,var(--ion-color-primary, #7026df) 6%,var(--ion-color-light))}.import-method-card__icon{font-size:1.375rem;color:var(--ion-color-medium-shade, #6b6e76);margin-bottom:4px}.import-method-card--active .import-method-card__icon{color:var(--ion-color-primary, #7026df)}.import-method-card__title{font-size:.875rem;font-weight:600;color:var(--ion-color-dark)}.import-method-card__hint{font-size:.75rem;color:var(--ion-color-medium, #92949c);line-height:1.3}.import-upload__btn{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border:1px solid var(--ion-color-medium, #92949c);border-radius:10px;background:var(--ion-color-light);color:var(--ion-color-dark);font-size:.875rem;font-weight:600;cursor:pointer;transition:border-color .15s ease}.import-upload__btn:hover{border-color:var(--ion-color-primary, #7026df)}.import-upload__btn ion-icon{font-size:1.25rem}.import-upload__btn input[type=file]{display:none}.import-file-loaded{margin:10px 0 0;font-size:.8125rem;color:var(--ion-color-medium-shade, #6b6e76)}.import-csv{--background:
|
|
460
|
+
`, styles: ["val-display{display:block;margin-bottom:4px}val-title{display:block;margin-bottom:8px}.import-roles-hint{display:block;margin-bottom:24px}.import-section{margin-bottom:28px}.import-section val-title{margin-bottom:10px}.import-method-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px}.import-method-card{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:14px 16px;border:1.5px solid var(--ion-color-light-shade, #d7d8da);border-radius:12px;background:var(--ion-color-light);cursor:pointer;text-align:left;transition:border-color .15s ease,background .15s ease}.import-method-card:hover{border-color:var(--ion-color-medium, #92949c)}.import-method-card--active{border-color:var(--ion-color-primary, #7026df);background:color-mix(in srgb,var(--ion-color-primary, #7026df) 6%,var(--ion-color-light))}.import-method-card__icon{font-size:1.375rem;color:var(--ion-color-medium-shade, #6b6e76);margin-bottom:4px}.import-method-card--active .import-method-card__icon{color:var(--ion-color-primary, #7026df)}.import-method-card__title{font-size:.875rem;font-weight:600;color:var(--ion-color-dark)}.import-method-card__hint{font-size:.75rem;color:var(--ion-color-medium, #92949c);line-height:1.3}.import-upload__btn{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border:1px solid var(--ion-color-medium, #92949c);border-radius:10px;background:var(--ion-color-light);color:var(--ion-color-dark);font-size:.875rem;font-weight:600;cursor:pointer;transition:border-color .15s ease}.import-upload__btn:hover{border-color:var(--ion-color-primary, #7026df)}.import-upload__btn ion-icon{font-size:1.25rem}.import-upload__btn input[type=file]{display:none}.import-file-loaded{margin:10px 0 0;font-size:.8125rem;color:var(--ion-color-medium-shade, #6b6e76)}.import-csv{--background: transparent;border-radius:10px;font-family:monospace;font-size:.8125rem}.import-error{margin:0 0 12px;font-size:.875rem;color:var(--ion-color-danger, #c0392b)}.import-actions{margin-top:8px}.import-results{display:flex;flex-direction:column;gap:6px;margin:12px 0}.import-row{display:grid;grid-template-columns:1fr auto;grid-row-gap:2px;align-items:center;padding:10px 12px;border-radius:8px;border-left:3px solid var(--ion-color-medium);background:var(--ion-color-light);font-size:.875rem}.import-row--created{border-left-color:var(--ion-color-success, #2dd36f)}.import-row--assigned{border-left-color:var(--ion-color-primary, #7026df)}.import-row--skipped{border-left-color:var(--ion-color-medium, #92949c)}.import-row--error{border-left-color:var(--ion-color-danger, #c0392b)}.import-row__email{font-weight:600;color:var(--ion-color-dark)}.import-row__status{text-align:right;color:var(--ion-color-medium-shade, #6b6e76)}.import-row__reason{grid-column:1 / -1;font-size:.75rem;color:var(--ion-color-danger, #c0392b)}\n"] }]
|
|
453
461
|
}], ctorParameters: () => [], propDecorators: { orgId: [{
|
|
454
462
|
type: Input
|
|
455
463
|
}], availableRoles: [{
|
|
@@ -461,4 +469,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
461
469
|
}], i18nNamespace: [{
|
|
462
470
|
type: Input
|
|
463
471
|
}] } });
|
|
464
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLWltcG9ydC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21lbWJlci1pbXBvcnQtbW9kYWwvbWVtYmVyLWltcG9ydC1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFDUCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFVBQVUsR0FDWCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsZUFBZSxFQUFpQixTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxV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QUFVO3dCQUNWLFNBQVM7d0JBQ1QsVUFBVTt3QkFDVixXQUFXO3dCQUNYLFVBQVU7d0JBQ1YsT0FBTzt3QkFDUCxnQkFBZ0I7d0JBQ2hCLGFBQWE7d0JBQ2IsY0FBYzt3QkFDZCxtQkFBbUI7d0JBQ25CLG1CQUFtQjtxQkFDcEIsWUFDUzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBb0lUO3dEQThKUSxLQUFLO3NCQUFiLEtBQUs7Z0JBR0csY0FBYztzQkFBdEIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBR0csYUFBYTtzQkFBckIsS0FBSyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGluamVjdCwgSW5wdXQsIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBGb3JtQ29udHJvbCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQge1xuICBJb25CdXR0b24sXG4gIElvbkJ1dHRvbnMsXG4gIElvbkNvbnRlbnQsXG4gIElvbkhlYWRlcixcbiAgSW9uSWNvbixcbiAgSW9uU3Bpbm5lcixcbiAgSW9uVGV4dGFyZWEsXG4gIElvblRvb2xiYXIsXG59IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgYWRkSWNvbnMgfSBmcm9tICdpb25pY29ucyc7XG5pbXBvcnQgeyBjbG91ZFVwbG9hZE91dGxpbmUsIGRvY3VtZW50VGV4dE91dGxpbmUgfSBmcm9tICdpb25pY29ucy9pY29ucyc7XG5cbmltcG9ydCB7IERpc3BsYXlDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy9kaXNwbGF5L2Rpc3BsYXkuY29tcG9uZW50JztcbmltcG9ydCB7IFRleHRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9hdG9tcy90ZXh0L3RleHQuY29tcG9uZW50JztcbmltcG9ydCB7IFRpdGxlQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGl0bGUvdGl0bGUuY29tcG9uZW50JztcbmltcG9ydCB7IENoZWNrSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvY2hlY2staW5wdXQvY2hlY2staW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IFJhZGlvSW5wdXRDb21wb25lbnQgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvcmFkaW8taW5wdXQvcmFkaW8taW5wdXQuY29tcG9uZW50JztcbmltcG9ydCB7IENvbXBvbmVudFN0YXRlcywgSW5wdXRNZXRhZGF0YSwgSW5wdXRUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuXG5pbXBvcnQgeyBJMThuU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2kxOG4nO1xuaW1wb3J0IHsgT3JnU2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy9vcmcuc2VydmljZSc7XG5pbXBvcnQgeyBJbXBvcnRNZW1iZXJzUmVzcG9uc2UsIEltcG9ydE9uQ29uZmxpY3QsIEltcG9ydFJvd1Jlc3VsdCwgSW1wb3J0VXNlclJvdyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy90eXBlcyc7XG5cbmltcG9ydCB7IE1FTUJFUl9JTVBPUlRfTU9EQUxfSTE4TiB9IGZyb20gJy4vbWVtYmVyLWltcG9ydC1tb2RhbC5pMThuJztcblxuY29uc3QgREVGQVVMVF9OQU1FU1BBQ0UgPSAnU2V0dGluZ3MuSW1wb3J0TW9kYWwnO1xuXG5hZGRJY29ucyh7IGNsb3VkVXBsb2FkT3V0bGluZSwgZG9jdW1lbnRUZXh0T3V0bGluZSB9KTtcblxuLyoqXG4gKiBgdmFsLW1lbWJlci1pbXBvcnQtbW9kYWxgIOKAlCBwYW5lbCBkZSBjYXJnYSBtYXNpdmEgZGUgbWllbWJyb3MgKEFEUi0wMjMgZmFzZSA2KS5cbiAqXG4gKiBFbCBhZG1pbiBwZWdhIHVuIENTViAoYGVtYWlsLG5vbWJyZSxyb2xgKTsgZWwgbW9kYWwgbG8gcGFyc2VhIGEgZmlsYXMgeSBsbGFtYVxuICogYE9yZ1NlcnZpY2UuaW1wb3J0TWVtYmVyc2AuIE11ZXN0cmEgZWwgcmVzdWx0YWRvIHBvci1maWxhIChwYXJ0aWFsIHN1Y2Nlc3MpOlxuICogYGNyZWF0ZWRgIC8gYGFzc2lnbmVkYCAvIGBza2lwcGVkYCAvIGBlcnJvcmAuIEhlYWRlciBjYW7Ds25pY28gKFJlZ2xhICM1KS5cbiAqXG4gKiBBdXRvLXJlZ2lzdHJhIGRlZmF1bHRzIGkxOG4gKGVzL2VuKSBlbiBgU2V0dGluZ3MuSW1wb3J0TW9kYWxgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbWVtYmVyLWltcG9ydC1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIElvbkhlYWRlcixcbiAgICBJb25Ub29sYmFyLFxuICAgIElvbkJ1dHRvbnMsXG4gICAgSW9uQnV0dG9uLFxuICAgIElvbkNvbnRlbnQsXG4gICAgSW9uVGV4dGFyZWEsXG4gICAgSW9uU3Bpbm5lcixcbiAgICBJb25JY29uLFxuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgICBUaXRsZUNvbXBvbmVudCxcbiAgICBSYWRpb0lucHV0Q29tcG9uZW50LFxuICAgIENoZWNrSW5wdXRDb21wb25lbnQsXG4gIF0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGlvbi1oZWFkZXI+XG4gICAgICA8aW9uLXRvb2xiYXI+XG4gICAgICAgIDxpb24tYnV0dG9ucyBzbG90PVwiZW5kXCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gZmlsbD1cImNsZWFyXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cImRpc21pc3MoKVwiPlxuICAgICAgICAgICAgPHN0cm9uZz57eyB0KCdjbG9zZScpIH19PC9zdHJvbmc+XG4gICAgICAgICAgPC9pb24tYnV0dG9uPlxuICAgICAgICA8L2lvbi1idXR0b25zPlxuICAgICAgPC9pb24tdG9vbGJhcj5cbiAgICA8L2lvbi1oZWFkZXI+XG5cbiAgICA8aW9uLWNvbnRlbnQgY2xhc3M9XCJpb24tcGFkZGluZ1wiPlxuICAgICAgPHZhbC1kaXNwbGF5IFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ3RpdGxlJyksIHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycgfVwiIC8+XG4gICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ3N1YnRpdGxlJyksIHNpemU6ICdsYXJnZScsIGNvbG9yOiAnJywgYm9sZDogZmFsc2UgfVwiIC8+XG5cbiAgICAgIEBpZiAoIXJlc3VsdHMoKSkge1xuICAgICAgICBAaWYgKHJvbGVzSGludCgpKSB7XG4gICAgICAgICAgPHZhbC10ZXh0XG4gICAgICAgICAgICBjbGFzcz1cImltcG9ydC1yb2xlcy1oaW50XCJcbiAgICAgICAgICAgIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHJvbGVzSGludCgpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ21lZGl1bScsIGJvbGQ6IGZhbHNlIH1cIlxuICAgICAgICAgIC8+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIFNlbGVjdG9yIGRlIG3DqXRvZG8gZGUgaW1wb3J0YWNpw7NuIC0tPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1wb3J0LXNlY3Rpb25cIj5cbiAgICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHQoJ2ltcG9ydE1ldGhvZExhYmVsJyksIHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IHRydWUgfVwiIC8+XG4gICAgICAgICAgPGRpdiBjbGFzcz1cImltcG9ydC1tZXRob2QtY2FyZHNcIj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiaW1wb3J0LW1ldGhvZC1jYXJkXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmltcG9ydC1tZXRob2QtY2FyZC0tYWN0aXZlXT1cImltcG9ydE1vZGUoKSA9PT0gJ2ZpbGUnXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImltcG9ydE1vZGUuc2V0KCdmaWxlJylcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3VkLXVwbG9hZC1vdXRsaW5lXCIgY2xhc3M9XCJpbXBvcnQtbWV0aG9kLWNhcmRfX2ljb25cIiAvPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltcG9ydC1tZXRob2QtY2FyZF9fdGl0bGVcIj57eyB0KCdpbXBvcnRNZXRob2RGaWxlJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1wb3J0LW1ldGhvZC1jYXJkX19oaW50XCI+e3sgdCgnaW1wb3J0TWV0aG9kRmlsZUhpbnQnKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgY2xhc3M9XCJpbXBvcnQtbWV0aG9kLWNhcmRcIlxuICAgICAgICAgICAgICBbY2xhc3MuaW1wb3J0LW1ldGhvZC1jYXJkLS1hY3RpdmVdPVwiaW1wb3J0TW9kZSgpID09PSAncGFzdGUnXCJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cImltcG9ydE1vZGUuc2V0KCdwYXN0ZScpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJkb2N1bWVudC10ZXh0LW91dGxpbmVcIiBjbGFzcz1cImltcG9ydC1tZXRob2QtY2FyZF9faWNvblwiIC8+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1wb3J0LW1ldGhvZC1jYXJkX190aXRsZVwiPnt7IHQoJ2ltcG9ydE1ldGhvZFBhc3RlJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1wb3J0LW1ldGhvZC1jYXJkX19oaW50XCI+e3sgdCgnaW1wb3J0TWV0aG9kUGFzdGVIaW50JykgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgPCEtLSBTdWJpZGEgZGUgYXJjaGl2byAobGFiZWwgdHJpY2sg4oCUIGdlc3RvIGNvbmZpYWJsZSBlbiBpT1MvUFdBKSAtLT5cbiAgICAgICAgQGlmIChpbXBvcnRNb2RlKCkgPT09ICdmaWxlJykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbXBvcnQtc2VjdGlvblwiPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwiaW1wb3J0LXVwbG9hZF9fYnRuXCI+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiY2xvdWQtdXBsb2FkLW91dGxpbmVcIiAvPlxuICAgICAgICAgICAgICA8c3Bhbj57eyB0KCd1cGxvYWRGaWxlJykgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwiZmlsZVwiIGFjY2VwdD1cIi5jc3YsdGV4dC9jc3YsdGV4dC9wbGFpblwiIChjaGFuZ2UpPVwib25GaWxlU2VsZWN0ZWQoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICAgICAgQGlmIChmaWxlTmFtZSgpKSB7XG4gICAgICAgICAgICAgIDxwIGNsYXNzPVwiaW1wb3J0LWZpbGUtbG9hZGVkXCI+XG4gICAgICAgICAgICAgICAge3sgdCgnZmlsZUxvYWRlZCcpLnJlcGxhY2UoJ3tuYW1lfScsIGZpbGVOYW1lKCkpIH19XG4gICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gUGVnYXIgQ1NWIC0tPlxuICAgICAgICBAaWYgKGltcG9ydE1vZGUoKSA9PT0gJ3Bhc3RlJykge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbXBvcnQtc2VjdGlvblwiPlxuICAgICAgICAgICAgPGlvbi10ZXh0YXJlYVxuICAgICAgICAgICAgICBjbGFzcz1cImltcG9ydC1jc3ZcIlxuICAgICAgICAgICAgICBbYXV0b0dyb3ddPVwidHJ1ZVwiXG4gICAgICAgICAgICAgIFtyb3dzXT1cIjZcIlxuICAgICAgICAgICAgICBbcGxhY2Vob2xkZXJdPVwidCgnY3N2UGxhY2Vob2xkZXInKVwiXG4gICAgICAgICAgICAgIFsobmdNb2RlbCldPVwiY3N2XCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIFNpIGh1Ym8gY2FyZ2EgZGUgYXJjaGl2bywgbW9zdHJhciB0ZXh0YXJlYSBkZSBzb2xvIGxlY3R1cmEgcGFyYSByZXZpc2FyIC0tPlxuICAgICAgICBAaWYgKGltcG9ydE1vZGUoKSA9PT0gJ2ZpbGUnICYmIGNzdikge1xuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbXBvcnQtc2VjdGlvblwiPlxuICAgICAgICAgICAgPGlvbi10ZXh0YXJlYSBjbGFzcz1cImltcG9ydC1jc3ZcIiBbYXV0b0dyb3ddPVwidHJ1ZVwiIFtyb3dzXT1cIjRcIiBbcmVhZG9ubHldPVwidHJ1ZVwiIFt2YWx1ZV09XCJjc3ZcIiAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBDb25mbGljdG86IHJhZGlvIGJ1dHRvbnMgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbXBvcnQtc2VjdGlvblwiPlxuICAgICAgICAgIDx2YWwtdGl0bGUgW3Byb3BzXT1cInsgY29udGVudDogdCgnb25Db25mbGljdExhYmVsJyksIHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IHRydWUgfVwiIC8+XG4gICAgICAgICAgPHZhbC1yYWRpby1pbnB1dCBbcHJvcHNdPVwiY29uZmxpY3RSYWRpb1Byb3BzKClcIiAvPlxuICAgICAgICA8L2Rpdj5cblxuICAgICAgICA8IS0tIEFjdGl2YWNpw7NuOiB2YWwtY2hlY2staW5wdXQgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbXBvcnQtc2VjdGlvblwiPlxuICAgICAgICAgIDx2YWwtY2hlY2staW5wdXQgW3Byb3BzXT1cInNlbmRBY3RpdmF0aW9uUHJvcHMoKVwiIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIEBpZiAoZXJyb3JNc2coKSkge1xuICAgICAgICAgIDxwIGNsYXNzPVwiaW1wb3J0LWVycm9yXCI+e3sgZXJyb3JNc2coKSB9fTwvcD5cbiAgICAgICAgfVxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbXBvcnQtYWN0aW9uc1wiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgY29sb3I9XCJkYXJrXCIgW2Rpc2FibGVkXT1cInN1Ym1pdHRpbmcoKVwiIChjbGljayk9XCJzdWJtaXQoKVwiPlxuICAgICAgICAgICAgQGlmIChzdWJtaXR0aW5nKCkpIHtcbiAgICAgICAgICAgICAgPGlvbi1zcGlubmVyIG5hbWU9XCJkb3RzXCIgLz5cbiAgICAgICAgICAgICAgJm5ic3A7e3sgdCgnc3VibWl0dGluZycpIH19XG4gICAgICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICAge3sgdCgnc3VibWl0JykgfX1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfSBAZWxzZSB7XG4gICAgICAgIDwhLS0gUmVzdWx0YWRvcyAtLT5cbiAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiBzdW1tYXJ5TGFiZWwoKSwgc2l6ZTogJ2xhcmdlJywgY29sb3I6ICcnLCBib2xkOiB0cnVlIH1cIiAvPlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1wb3J0LXJlc3VsdHNcIj5cbiAgICAgICAgICBAZm9yIChyIG9mIHJlc3VsdHMoKSEucmVzdWx0czsgdHJhY2sgci5lbWFpbCkge1xuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImltcG9ydC1yb3cgaW1wb3J0LXJvdy0te3sgci5zdGF0dXMgfX1cIj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbXBvcnQtcm93X19lbWFpbFwiPnt7IHIuZW1haWwgfX08L3NwYW4+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1wb3J0LXJvd19fc3RhdHVzXCI+e3sgc3RhdHVzTGFiZWwocikgfX08L3NwYW4+XG4gICAgICAgICAgICAgIEBpZiAoci5yZWFzb24pIHtcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltcG9ydC1yb3dfX3JlYXNvblwiPnt7IHIucmVhc29uIH19PC9zcGFuPlxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzPVwiaW1wb3J0LWFjdGlvbnNcIj5cbiAgICAgICAgICA8aW9uLWJ1dHRvbiBleHBhbmQ9XCJibG9ja1wiIGZpbGw9XCJvdXRsaW5lXCIgY29sb3I9XCJkYXJrXCIgKGNsaWNrKT1cInJlc2V0KClcIj5cbiAgICAgICAgICAgIHt7IHQoJ2FnYWluJykgfX1cbiAgICAgICAgICA8L2lvbi1idXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvaW9uLWNvbnRlbnQ+XG4gIGAsXG4gIHN0eWxlczogW1xuICAgIGBcbiAgICAgIHZhbC1kaXNwbGF5IHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICAgIH1cbiAgICAgIHZhbC10aXRsZSB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvbGVzLWhpbnQge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtc2VjdGlvbiB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDI4cHg7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXNlY3Rpb24gdmFsLXRpdGxlIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtbWV0aG9kLWNhcmRzIHtcbiAgICAgICAgZGlzcGxheTogZ3JpZDtcbiAgICAgICAgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiAxZnIgMWZyO1xuICAgICAgICBnYXA6IDEycHg7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LW1ldGhvZC1jYXJkIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgICAgIGdhcDogNHB4O1xuICAgICAgICBwYWRkaW5nOiAxNHB4IDE2cHg7XG4gICAgICAgIGJvcmRlcjogMS41cHggc29saWQgdmFyKC0taW9uLWNvbG9yLWxpZ2h0LXNoYWRlLCAjZDdkOGRhKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0KTtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLFxuICAgICAgICAgIGJhY2tncm91bmQgMC4xNXMgZWFzZTtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtbWV0aG9kLWNhcmQ6aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM5Mjk0OWMpO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1tZXRob2QtY2FyZC0tYWN0aXZlIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSwgIzcwMjZkZik7XG4gICAgICAgIGJhY2tncm91bmQ6IGNvbG9yLW1peChpbiBzcmdiLCB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSwgIzcwMjZkZikgNiUsIHZhcigtLWlvbi1jb2xvci1saWdodCkpO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1tZXRob2QtY2FyZF9faWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4zNzVyZW07XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItbWVkaXVtLXNoYWRlLCAjNmI2ZTc2KTtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgfVxuICAgICAgLmltcG9ydC1tZXRob2QtY2FyZC0tYWN0aXZlIC5pbXBvcnQtbWV0aG9kLWNhcmRfX2ljb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICM3MDI2ZGYpO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1tZXRob2QtY2FyZF9fdGl0bGUge1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1tZXRob2QtY2FyZF9faGludCB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC43NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM5Mjk0OWMpO1xuICAgICAgICBsaW5lLWhlaWdodDogMS4zO1xuICAgICAgfVxuICAgICAgLmltcG9ydC11cGxvYWRfX2J0biB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAgICBnYXA6IDhweDtcbiAgICAgICAgcGFkZGluZzogMTBweCAxNnB4O1xuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pb24tY29sb3ItbWVkaXVtLCAjOTI5NDljKTtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0taW9uLWNvbG9yLWxpZ2h0KTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYXJrKTtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xuICAgICAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZTtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtdXBsb2FkX19idG46aG92ZXIge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LCAjNzAyNmRmKTtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtdXBsb2FkX19idG4gaW9uLWljb24ge1xuICAgICAgICBmb250LXNpemU6IDEuMjVyZW07XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXVwbG9hZF9fYnRuIGlucHV0W3R5cGU9J2ZpbGUnXSB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LWZpbGUtbG9hZGVkIHtcbiAgICAgICAgbWFyZ2luOiAxMHB4IDAgMCAwO1xuICAgICAgICBmb250LXNpemU6IDAuODEyNXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0tc2hhZGUsICM2YjZlNzYpO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1jc3Yge1xuICAgICAgICAtLWJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCk7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1lcnJvciB7XG4gICAgICAgIG1hcmdpbjogMCAwIDEycHggMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNjMDM5MmIpO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1hY3Rpb25zIHtcbiAgICAgICAgbWFyZ2luLXRvcDogOHB4O1xuICAgICAgfVxuICAgICAgLmltcG9ydC1yZXN1bHRzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIG1hcmdpbjogMTJweCAwO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1yb3cge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciBhdXRvO1xuICAgICAgICBncmlkLXJvdy1nYXA6IDJweDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMTBweCAxMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvdy0tY3JlYXRlZCB7XG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1pb24tY29sb3Itc3VjY2VzcywgIzJkZDM2Zik7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvdy0tYXNzaWduZWQge1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICM3MDI2ZGYpO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1yb3ctLXNraXBwZWQge1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvdy0tZXJyb3Ige1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2MwMzkyYik7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvd19fZW1haWwge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1yb3dfX3N0YXR1cyB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bS1zaGFkZSwgIzZiNmU3Nik7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvd19fcmVhc29uIHtcbiAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2MwMzkyYik7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVtYmVySW1wb3J0TW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIG9yZ1NlcnZpY2UgPSBpbmplY3QoT3JnU2VydmljZSk7XG5cbiAgLyoqIE9yZyBkZXN0aW5vIGRlbCBpbXBvcnQuICovXG4gIEBJbnB1dCgpIG9yZ0lkID0gJyc7XG5cbiAgLyoqIE5vbWJyZXMgZGUgcm9sZXMgZGlzcG9uaWJsZXMgKHBhcmEgZWwgaGludCkuIE9wY2lvbmFsLiAqL1xuICBASW5wdXQoKSBhdmFpbGFibGVSb2xlczogc3RyaW5nW10gPSBbXTtcblxuICAvKiogQ2FsbGJhY2sgdHJhcyB1bmEgaW1wb3J0YWNpw7NuIGV4aXRvc2EgKOKJpTEgZmlsYSBwcm9jZXNhZGEpIOKAlCByZWZyZXNjYSBsYSBsaXN0YS4gKi9cbiAgQElucHV0KCkgb25TdWNjZXNzPzogKCkgPT4gdm9pZDtcblxuICAvKiogSW55ZWN0YWRvIHBvciBgTW9kYWxTZXJ2aWNlLm9wZW5gLiAqL1xuICBASW5wdXQoKSBfbW9kYWxSZWY/OiB7IGRpc21pc3M6IChkYXRhPzogdW5rbm93biwgcm9sZT86IHN0cmluZykgPT4gdm9pZCB9O1xuXG4gIC8qKiBOYW1lc3BhY2UgaTE4bi4gKi9cbiAgQElucHV0KCkgaTE4bk5hbWVzcGFjZSA9IERFRkFVTFRfTkFNRVNQQUNFO1xuXG4gIGNzdiA9ICcnO1xuXG4gIHJlYWRvbmx5IGltcG9ydE1vZGUgPSBzaWduYWw8J2ZpbGUnIHwgJ3Bhc3RlJz4oJ2ZpbGUnKTtcblxuICByZWFkb25seSBvbkNvbmZsaWN0Q29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KCdhc3NpZ25Sb2xlJyk7XG4gIHJlYWRvbmx5IHNlbmRBY3RpdmF0aW9uQ29udHJvbCA9IG5ldyBGb3JtQ29udHJvbDxib29sZWFuPih0cnVlKTtcblxuICByZWFkb25seSBjb25mbGljdFJhZGlvUHJvcHMgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgKHtcbiAgICAgICAgY29udHJvbDogdGhpcy5vbkNvbmZsaWN0Q29udHJvbCBhcyBGb3JtQ29udHJvbCxcbiAgICAgICAgbGFiZWw6ICcnLFxuICAgICAgICB0eXBlOiBJbnB1dFR5cGUuUkFESU8sXG4gICAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICAgICAgb3B0aW9uczogW1xuICAgICAgICAgIHsgaWQ6ICdhc3NpZ25Sb2xlJywgbmFtZTogdGhpcy50KCdjb25mbGljdEFzc2lnbicpLCBvcmRlcjogMCB9LFxuICAgICAgICAgIHsgaWQ6ICdza2lwJywgbmFtZTogdGhpcy50KCdjb25mbGljdFNraXAnKSwgb3JkZXI6IDEgfSxcbiAgICAgICAgICB7IGlkOiAnZXJyb3InLCBuYW1lOiB0aGlzLnQoJ2NvbmZsaWN0RXJyb3InKSwgb3JkZXI6IDIgfSxcbiAgICAgICAgXSxcbiAgICAgIH0pIGFzIElucHV0TWV0YWRhdGFcbiAgKTtcblxuICByZWFkb25seSBzZW5kQWN0aXZhdGlvblByb3BzID0gY29tcHV0ZWQoXG4gICAgKCkgPT5cbiAgICAgICh7XG4gICAgICAgIGNvbnRyb2w6IHRoaXMuc2VuZEFjdGl2YXRpb25Db250cm9sIGFzIEZvcm1Db250cm9sLFxuICAgICAgICBsYWJlbDogdGhpcy50KCdzZW5kQWN0aXZhdGlvbicpLFxuICAgICAgICB0eXBlOiBJbnB1dFR5cGUuQ0hFQ0ssXG4gICAgICAgIHN0YXRlOiBDb21wb25lbnRTdGF0ZXMuRU5BQkxFRCxcbiAgICAgICAgbGFiZWxQbGFjZW1lbnQ6ICdlbmQnLFxuICAgICAgfSkgYXMgSW5wdXRNZXRhZGF0YVxuICApO1xuXG4gIHJlYWRvbmx5IHN1Ym1pdHRpbmcgPSBzaWduYWwoZmFsc2UpO1xuICByZWFkb25seSBlcnJvck1zZyA9IHNpZ25hbCgnJyk7XG4gIHJlYWRvbmx5IHJlc3VsdHMgPSBzaWduYWw8SW1wb3J0TWVtYmVyc1Jlc3BvbnNlIHwgbnVsbD4obnVsbCk7XG4gIC8qKiBOb21icmUgZGVsIGFyY2hpdm8gQ1NWIGNhcmdhZG8gKHZhY8OtbyBzaSBzZSBwZWfDsyBtYW51YWxtZW50ZSkuICovXG4gIHJlYWRvbmx5IGZpbGVOYW1lID0gc2lnbmFsKCcnKTtcblxuICByZWFkb25seSByb2xlc0hpbnQgPSBjb21wdXRlZCgoKSA9PlxuICAgIHRoaXMuYXZhaWxhYmxlUm9sZXMubGVuZ3RoID8gYCR7dGhpcy50KCdyb2xlc0F2YWlsYWJsZScpfSAke3RoaXMuYXZhaWxhYmxlUm9sZXMuam9pbignLCAnKX1gIDogJydcbiAgKTtcblxuICByZWFkb25seSBzdW1tYXJ5TGFiZWwgPSBjb21wdXRlZCgoKSA9PiB7XG4gICAgY29uc3QgcyA9IHRoaXMucmVzdWx0cygpPy5zdW1tYXJ5O1xuICAgIGlmICghcykgcmV0dXJuIHRoaXMudCgnc3VtbWFyeScpO1xuICAgIHJldHVybiBgJHt0aGlzLnQoJ3N1bW1hcnknKX06ICR7cy5jcmVhdGVkfSAke3RoaXMudCgnY3JlYXRlZCcpfSDCtyAke3MuYXNzaWduZWR9ICR7dGhpcy50KFxuICAgICAgJ2Fzc2lnbmVkJ1xuICAgICl9IMK3ICR7cy5za2lwcGVkfSAke3RoaXMudCgnc2tpcHBlZCcpfSDCtyAke3MuZmFpbGVkfSAke3RoaXMudCgnZmFpbGVkJyl9YDtcbiAgfSk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgaWYgKCF0aGlzLmkxOG4uaGFzTmFtZXNwYWNlKERFRkFVTFRfTkFNRVNQQUNFKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudChERUZBVUxUX05BTUVTUEFDRSwgTUVNQkVSX0lNUE9SVF9NT0RBTF9JMThOKTtcbiAgICB9XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UodGhpcy5pMThuTmFtZXNwYWNlKSkge1xuICAgICAgdGhpcy5pMThuLnJlZ2lzdGVyQ29udGVudCh0aGlzLmkxOG5OYW1lc3BhY2UsIE1FTUJFUl9JTVBPUlRfTU9EQUxfSTE4Tik7XG4gICAgfVxuICB9XG5cbiAgLyoqIENhcmdhIHVuIGFyY2hpdm8gQ1NWIHNlbGVjY2lvbmFkbzogbGVlIHN1IHRleHRvIGFsIHRleHRhcmVhIChgY3N2YCkuICovXG4gIG9uRmlsZVNlbGVjdGVkKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgIGNvbnN0IGlucHV0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgY29uc3QgZmlsZSA9IGlucHV0LmZpbGVzPy5bMF07XG4gICAgaWYgKCFmaWxlKSByZXR1cm47XG4gICAgdGhpcy5lcnJvck1zZy5zZXQoJycpO1xuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7XG4gICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHtcbiAgICAgIHRoaXMuY3N2ID0gU3RyaW5nKHJlYWRlci5yZXN1bHQgPz8gJycpO1xuICAgICAgdGhpcy5maWxlTmFtZS5zZXQoZmlsZS5uYW1lKTtcbiAgICB9O1xuICAgIHJlYWRlci5vbmVycm9yID0gKCkgPT4gdGhpcy5lcnJvck1zZy5zZXQodGhpcy50KCdmaWxlUmVhZEVycm9yJykpO1xuICAgIHJlYWRlci5yZWFkQXNUZXh0KGZpbGUpO1xuICAgIC8vIFBlcm1pdGUgcmUtc2VsZWNjaW9uYXIgZWwgbWlzbW8gYXJjaGl2byAoZWwgY2hhbmdlIG5vIGRpc3BhcmEgc2kgbm8gc2UgbGltcGlhKS5cbiAgICBpbnB1dC52YWx1ZSA9ICcnO1xuICB9XG5cbiAgLyoqIFBhcnNlYSBlbCBDU1YgcGVnYWRvIGEgZmlsYXMge2VtYWlsLG5hbWUscm9sZU5hbWV9LiBUb2xlcmEgaGVhZGVyLiAqL1xuICBwcml2YXRlIHBhcnNlQ3N2KCk6IEltcG9ydFVzZXJSb3dbXSB7XG4gICAgY29uc3Qgcm93czogSW1wb3J0VXNlclJvd1tdID0gW107XG4gICAgZm9yIChjb25zdCByYXcgb2YgdGhpcy5jc3Yuc3BsaXQoL1xccj9cXG4vKSkge1xuICAgICAgY29uc3QgbGluZSA9IHJhdy50cmltKCk7XG4gICAgICBpZiAoIWxpbmUpIGNvbnRpbnVlO1xuICAgICAgY29uc3QgY29scyA9IGxpbmUuc3BsaXQoJywnKS5tYXAoYyA9PiBjLnRyaW0oKSk7XG4gICAgICBjb25zdCBlbWFpbCA9IChjb2xzWzBdID8/ICcnKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgLy8gU2FsdGFyIGhlYWRlciAocHJpbWVyYSBjb2wgXCJlbWFpbFwiKSBvIGzDrW5lYXMgc2luIEAuXG4gICAgICBpZiAoIWVtYWlsIHx8ICFlbWFpbC5pbmNsdWRlcygnQCcpKSBjb250aW51ZTtcbiAgICAgIHJvd3MucHVzaCh7IGVtYWlsLCBuYW1lOiBjb2xzWzFdID8/ICcnLCByb2xlTmFtZTogY29sc1syXSA/PyAnJyB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJvd3M7XG4gIH1cblxuICBzdWJtaXQoKTogdm9pZCB7XG4gICAgdGhpcy5lcnJvck1zZy5zZXQoJycpO1xuICAgIGNvbnN0IHVzZXJzID0gdGhpcy5wYXJzZUNzdigpO1xuICAgIGlmICh1c2Vycy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMuZXJyb3JNc2cuc2V0KHRoaXMudCgnbm9Sb3dzJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodXNlcnMuc29tZSh1ID0+ICF1LnJvbGVOYW1lKSkge1xuICAgICAgdGhpcy5lcnJvck1zZy5zZXQodGhpcy50KCdwYXJzZUVycm9yJykpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuc3VibWl0dGluZy5zZXQodHJ1ZSk7XG4gICAgdGhpcy5vcmdTZXJ2aWNlXG4gICAgICAuaW1wb3J0TWVtYmVycyh0aGlzLm9yZ0lkLCB7XG4gICAgICAgIHVzZXJzLFxuICAgICAgICBvbkNvbmZsaWN0OiAodGhpcy5vbkNvbmZsaWN0Q29udHJvbC52YWx1ZSA/PyAnYXNzaWduUm9sZScpIGFzIEltcG9ydE9uQ29uZmxpY3QsXG4gICAgICAgIHNlbmRBY3RpdmF0aW9uOiB0aGlzLnNlbmRBY3RpdmF0aW9uQ29udHJvbC52YWx1ZSA/PyB0cnVlLFxuICAgICAgfSlcbiAgICAgIC5zdWJzY3JpYmUoe1xuICAgICAgICBuZXh0OiByZXMgPT4ge1xuICAgICAgICAgIHRoaXMuc3VibWl0dGluZy5zZXQoZmFsc2UpO1xuICAgICAgICAgIHRoaXMucmVzdWx0cy5zZXQocmVzKTtcbiAgICAgICAgICAvLyBSZWZyZXNjYXIgbGlzdGEgZGVsIGNvbnN1bWVyIHNpIGh1Ym8gYWx0YXMvYXNpZ25hY2lvbmVzIGVmZWN0aXZhcy5cbiAgICAgICAgICBpZiAocmVzLnN1bW1hcnkuY3JlYXRlZCArIHJlcy5zdW1tYXJ5LmFzc2lnbmVkID4gMCkge1xuICAgICAgICAgICAgdGhpcy5vblN1Y2Nlc3M/LigpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgZXJyb3I6IGVyciA9PiB7XG4gICAgICAgICAgdGhpcy5zdWJtaXR0aW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5lcnJvck1zZy5zZXQoZXJyPy5lcnJvcj8ubWVzc2FnZSA/PyB0aGlzLnQoJ2dlbmVyaWNFcnJvcicpKTtcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICB9XG5cbiAgc3RhdHVzTGFiZWwocjogSW1wb3J0Um93UmVzdWx0KTogc3RyaW5nIHtcbiAgICBjb25zdCBiYXNlID0gdGhpcy50KHIuc3RhdHVzID09PSAnZXJyb3InID8gJ2ZhaWxlZCcgOiByLnN0YXR1cyk7XG4gICAgaWYgKHIuc3RhdHVzID09PSAnY3JlYXRlZCcgJiYgci5hY3RpdmF0aW9uKSB7XG4gICAgICByZXR1cm4gYCR7YmFzZX0gwrcgJHt0aGlzLnQoci5hY3RpdmF0aW9uID09PSAnc2VudCcgPyAnYWN0aXZhdGlvblNlbnQnIDogJ2FjdGl2YXRpb25QZW5kaW5nJyl9YDtcbiAgICB9XG4gICAgcmV0dXJuIGJhc2U7XG4gIH1cblxuICByZXNldCgpOiB2b2lkIHtcbiAgICB0aGlzLmNzdiA9ICcnO1xuICAgIHRoaXMuZmlsZU5hbWUuc2V0KCcnKTtcbiAgICB0aGlzLmVycm9yTXNnLnNldCgnJyk7XG4gICAgdGhpcy5yZXN1bHRzLnNldChudWxsKTtcbiAgICB0aGlzLmltcG9ydE1vZGUuc2V0KCdmaWxlJyk7XG4gIH1cblxuICBkaXNtaXNzKCk6IHZvaWQge1xuICAgIHRoaXMuX21vZGFsUmVmPy5kaXNtaXNzKG51bGwsICdjYW5jZWwnKTtcbiAgfVxuXG4gIHQoa2V5OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmkxOG4udChrZXksIHRoaXMuaTE4bk5hbWVzcGFjZSk7XG4gIH1cbn1cbiJdfQ==
|
|
472
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLWltcG9ydC1tb2RhbC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvb3JnYW5pc21zL21lbWJlci1pbXBvcnQtbW9kYWwvbWVtYmVyLWltcG9ydC1tb2RhbC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBVSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbkYsT0FBTyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUMvRSxPQUFPLEVBQ0wsU0FBUyxFQUNULFVBQVUsRUFDVixVQUFVLEVBQ1YsU0FBUyxFQUNULE9BQU8sRUFDUCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFVBQVUsR0FDWCxNQUFNLDJCQUEyQixDQUFDO0FBQ25DLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFDcEMsT0FBTyxFQUFFLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFekUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDekUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ2hFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNuRSxPQUFPLEVBQUUsbUJBQW1CLEVBQUUsTUFBTSxtREFBbUQsQ0FBQztBQUN4RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsZUFBZSxFQUFpQixTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFeEUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3JELE9BQU8sRUFBRSxV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QUNYLG1CQUFtQiwrQkFDbkIsU0FBUyxvR0FDVCxVQUFVLG1GQUNWLFVBQVUsOEVBQ1YsU0FBUyxvUEFDVCxVQUFVLHdLQUNWLFdBQVcsaWFBQ1gsVUFBVSx5R0FDVixPQUFPLDJKQUNQLGdCQUFnQiwyRUFDaEIsYUFBYSx3RUFDYixjQUFjLHlFQUNkLHVCQUF1QiwwRkFDdkIsbUJBQW1COzs0RkErUlYsMEJBQTBCO2tCQWpUdEMsU0FBUzsrQkFDRSx5QkFBeUIsY0FDdkIsSUFBSSxXQUNQO3dCQUNQLFdBQVc7d0JBQ1gsbUJBQW1CO3dCQUNuQixTQUFTO3dCQUNULFVBQVU7d0JBQ1YsVUFBVTt3QkFDVixTQUFTO3dCQUNULFVBQVU7d0JBQ1YsV0FBVzt3QkFDWCxVQUFVO3dCQUNWLE9BQU87d0JBQ1AsZ0JBQWdCO3dCQUNoQixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsdUJBQXVCO3dCQUN2QixtQkFBbUI7cUJBQ3BCLFlBQ1M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW9JVDt3REE4SlEsS0FBSztzQkFBYixLQUFLO2dCQUdHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBR0csU0FBUztzQkFBakIsS0FBSztnQkFHRyxTQUFTO3NCQUFqQixLQUFLO2dCQUdHLGFBQWE7c0JBQXJCLEtBQUsiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbmplY3QsIElucHV0LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHtcbiAgSW9uQnV0dG9uLFxuICBJb25CdXR0b25zLFxuICBJb25Db250ZW50LFxuICBJb25IZWFkZXIsXG4gIElvbkljb24sXG4gIElvblNwaW5uZXIsXG4gIElvblRleHRhcmVhLFxuICBJb25Ub29sYmFyLFxufSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFkZEljb25zIH0gZnJvbSAnaW9uaWNvbnMnO1xuaW1wb3J0IHsgY2xvdWRVcGxvYWRPdXRsaW5lLCBkb2N1bWVudFRleHRPdXRsaW5lIH0gZnJvbSAnaW9uaWNvbnMvaWNvbnMnO1xuXG5pbXBvcnQgeyBEaXNwbGF5Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvZGlzcGxheS9kaXNwbGF5LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUZXh0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvdGV4dC90ZXh0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBUaXRsZUNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2F0b21zL3RpdGxlL3RpdGxlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDaGVja0lucHV0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL2NoZWNrLWlucHV0L2NoZWNrLWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBTZWFyY2hTZWxlY3RvckNvbXBvbmVudCB9IGZyb20gJy4uLy4uL21vbGVjdWxlcy9zZWxlY3QtaW5wdXQvc2VsZWN0LWlucHV0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBDb21wb25lbnRTdGF0ZXMsIElucHV0TWV0YWRhdGEsIElucHV0VHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuaW1wb3J0IHsgSTE4blNlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9pMThuJztcbmltcG9ydCB7IE9yZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9vcmcvb3JnLnNlcnZpY2UnO1xuaW1wb3J0IHtcbiAgSW1wb3J0TWVtYmVyc1Jlc3BvbnNlLFxuICBJbXBvcnRPbkNvbmZsaWN0LFxuICBJbXBvcnRSb3dSZXN1bHQsXG4gIEltcG9ydFVzZXJSb3csXG4gIE9yZ1JvbGUsXG4gIHJlc29sdmVSb2xlTGFiZWwsXG59IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL29yZy90eXBlcyc7XG5cbmltcG9ydCB7IE1FTUJFUl9JTVBPUlRfTU9EQUxfSTE4TiB9IGZyb20gJy4vbWVtYmVyLWltcG9ydC1tb2RhbC5pMThuJztcblxuY29uc3QgREVGQVVMVF9OQU1FU1BBQ0UgPSAnU2V0dGluZ3MuSW1wb3J0TW9kYWwnO1xuXG5hZGRJY29ucyh7IGNsb3VkVXBsb2FkT3V0bGluZSwgZG9jdW1lbnRUZXh0T3V0bGluZSB9KTtcblxuLyoqXG4gKiBgdmFsLW1lbWJlci1pbXBvcnQtbW9kYWxgIOKAlCBwYW5lbCBkZSBjYXJnYSBtYXNpdmEgZGUgbWllbWJyb3MgKEFEUi0wMjMgZmFzZSA2KS5cbiAqXG4gKiBFbCBhZG1pbiBwZWdhIHVuIENTViAoYGVtYWlsLG5vbWJyZSxyb2xgKTsgZWwgbW9kYWwgbG8gcGFyc2VhIGEgZmlsYXMgeSBsbGFtYVxuICogYE9yZ1NlcnZpY2UuaW1wb3J0TWVtYmVyc2AuIE11ZXN0cmEgZWwgcmVzdWx0YWRvIHBvci1maWxhIChwYXJ0aWFsIHN1Y2Nlc3MpOlxuICogYGNyZWF0ZWRgIC8gYGFzc2lnbmVkYCAvIGBza2lwcGVkYCAvIGBlcnJvcmAuIEhlYWRlciBjYW7Ds25pY28gKFJlZ2xhICM1KS5cbiAqXG4gKiBBdXRvLXJlZ2lzdHJhIGRlZmF1bHRzIGkxOG4gKGVzL2VuKSBlbiBgU2V0dGluZ3MuSW1wb3J0TW9kYWxgLlxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtbWVtYmVyLWltcG9ydC1tb2RhbCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtcbiAgICBGb3Jtc01vZHVsZSxcbiAgICBSZWFjdGl2ZUZvcm1zTW9kdWxlLFxuICAgIElvbkhlYWRlcixcbiAgICBJb25Ub29sYmFyLFxuICAgIElvbkJ1dHRvbnMsXG4gICAgSW9uQnV0dG9uLFxuICAgIElvbkNvbnRlbnQsXG4gICAgSW9uVGV4dGFyZWEsXG4gICAgSW9uU3Bpbm5lcixcbiAgICBJb25JY29uLFxuICAgIERpc3BsYXlDb21wb25lbnQsXG4gICAgVGV4dENvbXBvbmVudCxcbiAgICBUaXRsZUNvbXBvbmVudCxcbiAgICBTZWFyY2hTZWxlY3RvckNvbXBvbmVudCxcbiAgICBDaGVja0lucHV0Q29tcG9uZW50LFxuICBdLFxuICB0ZW1wbGF0ZTogYFxuICAgIDxpb24taGVhZGVyPlxuICAgICAgPGlvbi10b29sYmFyPlxuICAgICAgICA8aW9uLWJ1dHRvbnMgc2xvdD1cImVuZFwiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGZpbGw9XCJjbGVhclwiIGNvbG9yPVwiZGFya1wiIChjbGljayk9XCJkaXNtaXNzKClcIj5cbiAgICAgICAgICAgIDxzdHJvbmc+e3sgdCgnY2xvc2UnKSB9fTwvc3Ryb25nPlxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9pb24tYnV0dG9ucz5cbiAgICAgIDwvaW9uLXRvb2xiYXI+XG4gICAgPC9pb24taGVhZGVyPlxuXG4gICAgPGlvbi1jb250ZW50IGNsYXNzPVwiaW9uLXBhZGRpbmdcIj5cbiAgICAgIDx2YWwtZGlzcGxheSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCd0aXRsZScpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnIH1cIiAvPlxuICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCdzdWJ0aXRsZScpLCBzaXplOiAnbGFyZ2UnLCBjb2xvcjogJycsIGJvbGQ6IGZhbHNlIH1cIiAvPlxuXG4gICAgICBAaWYgKCFyZXN1bHRzKCkpIHtcbiAgICAgICAgQGlmIChyb2xlc0hpbnQoKSkge1xuICAgICAgICAgIDx2YWwtdGV4dFxuICAgICAgICAgICAgY2xhc3M9XCJpbXBvcnQtcm9sZXMtaGludFwiXG4gICAgICAgICAgICBbcHJvcHNdPVwieyBjb250ZW50OiByb2xlc0hpbnQoKSwgc2l6ZTogJ3NtYWxsJywgY29sb3I6ICdtZWRpdW0nLCBib2xkOiBmYWxzZSB9XCJcbiAgICAgICAgICAvPlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBTZWxlY3RvciBkZSBtw6l0b2RvIGRlIGltcG9ydGFjacOzbiAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImltcG9ydC1zZWN0aW9uXCI+XG4gICAgICAgICAgPHZhbC10aXRsZSBbcHJvcHNdPVwieyBjb250ZW50OiB0KCdpbXBvcnRNZXRob2RMYWJlbCcpLCBzaXplOiAnc21hbGwnLCBjb2xvcjogJ2RhcmsnLCBib2xkOiB0cnVlIH1cIiAvPlxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJpbXBvcnQtbWV0aG9kLWNhcmRzXCI+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICBjbGFzcz1cImltcG9ydC1tZXRob2QtY2FyZFwiXG4gICAgICAgICAgICAgIFtjbGFzcy5pbXBvcnQtbWV0aG9kLWNhcmQtLWFjdGl2ZV09XCJpbXBvcnRNb2RlKCkgPT09ICdmaWxlJ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJpbXBvcnRNb2RlLnNldCgnZmlsZScpXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGlvbi1pY29uIG5hbWU9XCJjbG91ZC11cGxvYWQtb3V0bGluZVwiIGNsYXNzPVwiaW1wb3J0LW1ldGhvZC1jYXJkX19pY29uXCIgLz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbXBvcnQtbWV0aG9kLWNhcmRfX3RpdGxlXCI+e3sgdCgnaW1wb3J0TWV0aG9kRmlsZScpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltcG9ydC1tZXRob2QtY2FyZF9faGludFwiPnt7IHQoJ2ltcG9ydE1ldGhvZEZpbGVIaW50JykgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgIGNsYXNzPVwiaW1wb3J0LW1ldGhvZC1jYXJkXCJcbiAgICAgICAgICAgICAgW2NsYXNzLmltcG9ydC1tZXRob2QtY2FyZC0tYWN0aXZlXT1cImltcG9ydE1vZGUoKSA9PT0gJ3Bhc3RlJ1wiXG4gICAgICAgICAgICAgIChjbGljayk9XCJpbXBvcnRNb2RlLnNldCgncGFzdGUnKVwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxpb24taWNvbiBuYW1lPVwiZG9jdW1lbnQtdGV4dC1vdXRsaW5lXCIgY2xhc3M9XCJpbXBvcnQtbWV0aG9kLWNhcmRfX2ljb25cIiAvPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltcG9ydC1tZXRob2QtY2FyZF9fdGl0bGVcIj57eyB0KCdpbXBvcnRNZXRob2RQYXN0ZScpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltcG9ydC1tZXRob2QtY2FyZF9faGludFwiPnt7IHQoJ2ltcG9ydE1ldGhvZFBhc3RlSGludCcpIH19PC9zcGFuPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gU3ViaWRhIGRlIGFyY2hpdm8gKGxhYmVsIHRyaWNrIOKAlCBnZXN0byBjb25maWFibGUgZW4gaU9TL1BXQSkgLS0+XG4gICAgICAgIEBpZiAoaW1wb3J0TW9kZSgpID09PSAnZmlsZScpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1wb3J0LXNlY3Rpb25cIj5cbiAgICAgICAgICAgIDxsYWJlbCBjbGFzcz1cImltcG9ydC11cGxvYWRfX2J0blwiPlxuICAgICAgICAgICAgICA8aW9uLWljb24gbmFtZT1cImNsb3VkLXVwbG9hZC1vdXRsaW5lXCIgLz5cbiAgICAgICAgICAgICAgPHNwYW4+e3sgdCgndXBsb2FkRmlsZScpIH19PC9zcGFuPlxuICAgICAgICAgICAgICA8aW5wdXQgdHlwZT1cImZpbGVcIiBhY2NlcHQ9XCIuY3N2LHRleHQvY3N2LHRleHQvcGxhaW5cIiAoY2hhbmdlKT1cIm9uRmlsZVNlbGVjdGVkKCRldmVudClcIiAvPlxuICAgICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICAgIEBpZiAoZmlsZU5hbWUoKSkge1xuICAgICAgICAgICAgICA8cCBjbGFzcz1cImltcG9ydC1maWxlLWxvYWRlZFwiPlxuICAgICAgICAgICAgICAgIHt7IHQoJ2ZpbGVMb2FkZWQnKS5yZXBsYWNlKCd7bmFtZX0nLCBmaWxlTmFtZSgpKSB9fVxuICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIH1cblxuICAgICAgICA8IS0tIFBlZ2FyIENTViAtLT5cbiAgICAgICAgQGlmIChpbXBvcnRNb2RlKCkgPT09ICdwYXN0ZScpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1wb3J0LXNlY3Rpb25cIj5cbiAgICAgICAgICAgIDxpb24tdGV4dGFyZWFcbiAgICAgICAgICAgICAgY2xhc3M9XCJpbXBvcnQtY3N2XCJcbiAgICAgICAgICAgICAgW2F1dG9Hcm93XT1cInRydWVcIlxuICAgICAgICAgICAgICBbcm93c109XCI2XCJcbiAgICAgICAgICAgICAgW3BsYWNlaG9sZGVyXT1cInQoJ2NzdlBsYWNlaG9sZGVyJylcIlxuICAgICAgICAgICAgICBbKG5nTW9kZWwpXT1cImNzdlwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICB9XG5cbiAgICAgICAgPCEtLSBTaSBodWJvIGNhcmdhIGRlIGFyY2hpdm8sIG1vc3RyYXIgdGV4dGFyZWEgZGUgc29sbyBsZWN0dXJhIHBhcmEgcmV2aXNhciAtLT5cbiAgICAgICAgQGlmIChpbXBvcnRNb2RlKCkgPT09ICdmaWxlJyAmJiBjc3YpIHtcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1wb3J0LXNlY3Rpb25cIj5cbiAgICAgICAgICAgIDxpb24tdGV4dGFyZWEgY2xhc3M9XCJpbXBvcnQtY3N2XCIgW2F1dG9Hcm93XT1cInRydWVcIiBbcm93c109XCI0XCIgW3JlYWRvbmx5XT1cInRydWVcIiBbdmFsdWVdPVwiY3N2XCIgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgfVxuXG4gICAgICAgIDwhLS0gQ29uZmxpY3RvOiBzZWxlY3QgLS0+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbXBvcnQtc2VjdGlvblwiPlxuICAgICAgICAgIDx2YWwtdGl0bGUgW3Byb3BzXT1cInsgY29udGVudDogdCgnb25Db25mbGljdExhYmVsJyksIHNpemU6ICdzbWFsbCcsIGNvbG9yOiAnZGFyaycsIGJvbGQ6IHRydWUgfVwiIC8+XG4gICAgICAgICAgPHZhbC1zZWxlY3QtaW5wdXQgW3Byb3BzXT1cImNvbmZsaWN0U2VsZWN0UHJvcHMoKVwiIC8+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDwhLS0gQWN0aXZhY2nDs246IHZhbC1jaGVjay1pbnB1dCAtLT5cbiAgICAgICAgPGRpdiBjbGFzcz1cImltcG9ydC1zZWN0aW9uXCI+XG4gICAgICAgICAgPHZhbC1jaGVjay1pbnB1dCBbcHJvcHNdPVwic2VuZEFjdGl2YXRpb25Qcm9wcygpXCIgLz5cbiAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgQGlmIChlcnJvck1zZygpKSB7XG4gICAgICAgICAgPHAgY2xhc3M9XCJpbXBvcnQtZXJyb3JcIj57eyBlcnJvck1zZygpIH19PC9wPlxuICAgICAgICB9XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImltcG9ydC1hY3Rpb25zXCI+XG4gICAgICAgICAgPGlvbi1idXR0b24gZXhwYW5kPVwiYmxvY2tcIiBjb2xvcj1cImRhcmtcIiBbZGlzYWJsZWRdPVwic3VibWl0dGluZygpXCIgKGNsaWNrKT1cInN1Ym1pdCgpXCI+XG4gICAgICAgICAgICBAaWYgKHN1Ym1pdHRpbmcoKSkge1xuICAgICAgICAgICAgICA8aW9uLXNwaW5uZXIgbmFtZT1cImRvdHNcIiAvPlxuICAgICAgICAgICAgICAmbmJzcDt7eyB0KCdzdWJtaXR0aW5nJykgfX1cbiAgICAgICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgICB7eyB0KCdzdWJtaXQnKSB9fVxuICAgICAgICAgICAgfVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9IEBlbHNlIHtcbiAgICAgICAgPCEtLSBSZXN1bHRhZG9zIC0tPlxuICAgICAgICA8dmFsLXRpdGxlIFtwcm9wc109XCJ7IGNvbnRlbnQ6IHN1bW1hcnlMYWJlbCgpLCBzaXplOiAnbGFyZ2UnLCBjb2xvcjogJycsIGJvbGQ6IHRydWUgfVwiIC8+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbXBvcnQtcmVzdWx0c1wiPlxuICAgICAgICAgIEBmb3IgKHIgb2YgcmVzdWx0cygpIS5yZXN1bHRzOyB0cmFjayByLmVtYWlsKSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW1wb3J0LXJvdyBpbXBvcnQtcm93LS17eyByLnN0YXR1cyB9fVwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImltcG9ydC1yb3dfX2VtYWlsXCI+e3sgci5lbWFpbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbXBvcnQtcm93X19zdGF0dXNcIj57eyBzdGF0dXNMYWJlbChyKSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgQGlmIChyLnJlYXNvbikge1xuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwiaW1wb3J0LXJvd19fcmVhc29uXCI+e3sgci5yZWFzb24gfX08L3NwYW4+XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIH1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxkaXYgY2xhc3M9XCJpbXBvcnQtYWN0aW9uc1wiPlxuICAgICAgICAgIDxpb24tYnV0dG9uIGV4cGFuZD1cImJsb2NrXCIgZmlsbD1cIm91dGxpbmVcIiBjb2xvcj1cImRhcmtcIiAoY2xpY2spPVwicmVzZXQoKVwiPlxuICAgICAgICAgICAge3sgdCgnYWdhaW4nKSB9fVxuICAgICAgICAgIDwvaW9uLWJ1dHRvbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICB9XG4gICAgPC9pb24tY29udGVudD5cbiAgYCxcbiAgc3R5bGVzOiBbXG4gICAgYFxuICAgICAgdmFsLWRpc3BsYXkge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4O1xuICAgICAgfVxuICAgICAgdmFsLXRpdGxlIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtcm9sZXMtaGludCB7XG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xuICAgICAgfVxuICAgICAgLmltcG9ydC1zZWN0aW9uIHtcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjhweDtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtc2VjdGlvbiB2YWwtdGl0bGUge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgICAgfVxuICAgICAgLmltcG9ydC1tZXRob2QtY2FyZHMge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciAxZnI7XG4gICAgICAgIGdhcDogMTJweDtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtbWV0aG9kLWNhcmQge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgICAgIHBhZGRpbmc6IDE0cHggMTZweDtcbiAgICAgICAgYm9yZGVyOiAxLjVweCBzb2xpZCB2YXIoLS1pb24tY29sb3ItbGlnaHQtc2hhZGUsICNkN2Q4ZGEpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQpO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UsXG4gICAgICAgICAgYmFja2dyb3VuZCAwLjE1cyBlYXNlO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1tZXRob2QtY2FyZDpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LW1ldGhvZC1jYXJkLS1hY3RpdmUge1xuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LCAjNzAyNmRmKTtcbiAgICAgICAgYmFja2dyb3VuZDogY29sb3ItbWl4KGluIHNyZ2IsIHZhcigtLWlvbi1jb2xvci1wcmltYXJ5LCAjNzAyNmRmKSA2JSwgdmFyKC0taW9uLWNvbG9yLWxpZ2h0KSk7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LW1ldGhvZC1jYXJkX19pY29uIHtcbiAgICAgICAgZm9udC1zaXplOiAxLjM3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1tZWRpdW0tc2hhZGUsICM2YjZlNzYpO1xuICAgICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LW1ldGhvZC1jYXJkLS1hY3RpdmUgLmltcG9ydC1tZXRob2QtY2FyZF9faWNvbiB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSwgIzcwMjZkZik7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LW1ldGhvZC1jYXJkX190aXRsZSB7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1pb24tY29sb3ItZGFyayk7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LW1ldGhvZC1jYXJkX19oaW50IHtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXVwbG9hZF9fYnRuIHtcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIGdhcDogOHB4O1xuICAgICAgICBwYWRkaW5nOiAxMHB4IDE2cHg7XG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWlvbi1jb2xvci1tZWRpdW0sICM5Mjk0OWMpO1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xuICAgICAgICBiYWNrZ3JvdW5kOiB2YXIoLS1pb24tY29sb3ItbGlnaHQpO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlO1xuICAgICAgfVxuICAgICAgLmltcG9ydC11cGxvYWRfX2J0bjpob3ZlciB7XG4gICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICM3MDI2ZGYpO1xuICAgICAgfVxuICAgICAgLmltcG9ydC11cGxvYWRfX2J0biBpb24taWNvbiB7XG4gICAgICAgIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtdXBsb2FkX19idG4gaW5wdXRbdHlwZT0nZmlsZSddIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICAgIC5pbXBvcnQtZmlsZS1sb2FkZWQge1xuICAgICAgICBtYXJnaW46IDEwcHggMCAwIDA7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bS1zaGFkZSwgIzZiNmU3Nik7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LWNzdiB7XG4gICAgICAgIC0tYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44MTI1cmVtO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1lcnJvciB7XG4gICAgICAgIG1hcmdpbjogMCAwIDEycHggMDtcbiAgICAgICAgZm9udC1zaXplOiAwLjg3NXJlbTtcbiAgICAgICAgY29sb3I6IHZhcigtLWlvbi1jb2xvci1kYW5nZXIsICNjMDM5MmIpO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1hY3Rpb25zIHtcbiAgICAgICAgbWFyZ2luLXRvcDogOHB4O1xuICAgICAgfVxuICAgICAgLmltcG9ydC1yZXN1bHRzIHtcbiAgICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICAgICAgZ2FwOiA2cHg7XG4gICAgICAgIG1hcmdpbjogMTJweCAwO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1yb3cge1xuICAgICAgICBkaXNwbGF5OiBncmlkO1xuICAgICAgICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IDFmciBhdXRvO1xuICAgICAgICBncmlkLXJvdy1nYXA6IDJweDtcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICAgICAgcGFkZGluZzogMTBweCAxMnB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgICAgIGJvcmRlci1sZWZ0OiAzcHggc29saWQgdmFyKC0taW9uLWNvbG9yLW1lZGl1bSk7XG4gICAgICAgIGJhY2tncm91bmQ6IHZhcigtLWlvbi1jb2xvci1saWdodCk7XG4gICAgICAgIGZvbnQtc2l6ZTogMC44NzVyZW07XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvdy0tY3JlYXRlZCB7XG4gICAgICAgIGJvcmRlci1sZWZ0LWNvbG9yOiB2YXIoLS1pb24tY29sb3Itc3VjY2VzcywgIzJkZDM2Zik7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvdy0tYXNzaWduZWQge1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLXByaW1hcnksICM3MDI2ZGYpO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1yb3ctLXNraXBwZWQge1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bSwgIzkyOTQ5Yyk7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvdy0tZXJyb3Ige1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2MwMzkyYik7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvd19fZW1haWwge1xuICAgICAgICBmb250LXdlaWdodDogNjAwO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhcmspO1xuICAgICAgfVxuICAgICAgLmltcG9ydC1yb3dfX3N0YXR1cyB7XG4gICAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLW1lZGl1bS1zaGFkZSwgIzZiNmU3Nik7XG4gICAgICB9XG4gICAgICAuaW1wb3J0LXJvd19fcmVhc29uIHtcbiAgICAgICAgZ3JpZC1jb2x1bW46IDEgLyAtMTtcbiAgICAgICAgZm9udC1zaXplOiAwLjc1cmVtO1xuICAgICAgICBjb2xvcjogdmFyKC0taW9uLWNvbG9yLWRhbmdlciwgI2MwMzkyYik7XG4gICAgICB9XG4gICAgYCxcbiAgXSxcbn0pXG5leHBvcnQgY2xhc3MgTWVtYmVySW1wb3J0TW9kYWxDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBwcml2YXRlIGkxOG4gPSBpbmplY3QoSTE4blNlcnZpY2UpO1xuICBwcml2YXRlIG9yZ1NlcnZpY2UgPSBpbmplY3QoT3JnU2VydmljZSk7XG5cbiAgLyoqIE9yZyBkZXN0aW5vIGRlbCBpbXBvcnQuICovXG4gIEBJbnB1dCgpIG9yZ0lkID0gJyc7XG5cbiAgLyoqIE5vbWJyZXMgZGUgcm9sZXMgZGlzcG9uaWJsZXMgKHBhcmEgZWwgaGludCkuIE9wY2lvbmFsLiAqL1xuICBASW5wdXQoKSBhdmFpbGFibGVSb2xlczogT3JnUm9sZVtdID0gW107XG5cbiAgLyoqIENhbGxiYWNrIHRyYXMgdW5hIGltcG9ydGFjacOzbiBleGl0b3NhICjiiaUxIGZpbGEgcHJvY2VzYWRhKSDigJQgcmVmcmVzY2EgbGEgbGlzdGEuICovXG4gIEBJbnB1dCgpIG9uU3VjY2Vzcz86ICgpID0+IHZvaWQ7XG5cbiAgLyoqIElueWVjdGFkbyBwb3IgYE1vZGFsU2VydmljZS5vcGVuYC4gKi9cbiAgQElucHV0KCkgX21vZGFsUmVmPzogeyBkaXNtaXNzOiAoZGF0YT86IHVua25vd24sIHJvbGU/OiBzdHJpbmcpID0+IHZvaWQgfTtcblxuICAvKiogTmFtZXNwYWNlIGkxOG4uICovXG4gIEBJbnB1dCgpIGkxOG5OYW1lc3BhY2UgPSBERUZBVUxUX05BTUVTUEFDRTtcblxuICBjc3YgPSAnJztcblxuICByZWFkb25seSBpbXBvcnRNb2RlID0gc2lnbmFsPCdmaWxlJyB8ICdwYXN0ZSc+KCdmaWxlJyk7XG5cbiAgcmVhZG9ubHkgb25Db25mbGljdENvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPignYXNzaWduUm9sZScpO1xuICByZWFkb25seSBzZW5kQWN0aXZhdGlvbkNvbnRyb2wgPSBuZXcgRm9ybUNvbnRyb2w8Ym9vbGVhbj4odHJ1ZSk7XG5cbiAgcmVhZG9ubHkgY29uZmxpY3RTZWxlY3RQcm9wcyA9IGNvbXB1dGVkPFBhcnRpYWw8SW5wdXRNZXRhZGF0YT4+KCgpID0+ICh7XG4gICAgY29udHJvbDogdGhpcy5vbkNvbmZsaWN0Q29udHJvbCBhcyBGb3JtQ29udHJvbCxcbiAgICBsYWJlbDogJycsXG4gICAgcGxhY2Vob2xkZXI6IHRoaXMudCgnb25Db25mbGljdExhYmVsJyksXG4gICAgdHlwZTogSW5wdXRUeXBlLlNFTEVDVCxcbiAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgb3B0aW9uczogW1xuICAgICAgeyBpZDogJ2Fzc2lnblJvbGUnLCBuYW1lOiB0aGlzLnQoJ2NvbmZsaWN0QXNzaWduJyksIG9yZGVyOiAwIH0sXG4gICAgICB7IGlkOiAnc2tpcCcsIG5hbWU6IHRoaXMudCgnY29uZmxpY3RTa2lwJyksIG9yZGVyOiAxIH0sXG4gICAgICB7IGlkOiAnZXJyb3InLCBuYW1lOiB0aGlzLnQoJ2NvbmZsaWN0RXJyb3InKSwgb3JkZXI6IDIgfSxcbiAgICBdLFxuICB9KSk7XG5cbiAgcmVhZG9ubHkgc2VuZEFjdGl2YXRpb25Qcm9wcyA9IGNvbXB1dGVkKFxuICAgICgpID0+XG4gICAgICAoe1xuICAgICAgICBjb250cm9sOiB0aGlzLnNlbmRBY3RpdmF0aW9uQ29udHJvbCBhcyBGb3JtQ29udHJvbCxcbiAgICAgICAgbGFiZWw6IHRoaXMudCgnc2VuZEFjdGl2YXRpb24nKSxcbiAgICAgICAgdHlwZTogSW5wdXRUeXBlLkNIRUNLLFxuICAgICAgICBzdGF0ZTogQ29tcG9uZW50U3RhdGVzLkVOQUJMRUQsXG4gICAgICAgIGxhYmVsUGxhY2VtZW50OiAnZW5kJyxcbiAgICAgIH0pIGFzIElucHV0TWV0YWRhdGFcbiAgKTtcblxuICByZWFkb25seSBzdWJtaXR0aW5nID0gc2lnbmFsKGZhbHNlKTtcbiAgcmVhZG9ubHkgZXJyb3JNc2cgPSBzaWduYWwoJycpO1xuICByZWFkb25seSByZXN1bHRzID0gc2lnbmFsPEltcG9ydE1lbWJlcnNSZXNwb25zZSB8IG51bGw+KG51bGwpO1xuICAvKiogTm9tYnJlIGRlbCBhcmNoaXZvIENTViBjYXJnYWRvICh2YWPDrW8gc2kgc2UgcGVnw7MgbWFudWFsbWVudGUpLiAqL1xuICByZWFkb25seSBmaWxlTmFtZSA9IHNpZ25hbCgnJyk7XG5cbiAgcmVhZG9ubHkgcm9sZXNIaW50ID0gY29tcHV0ZWQoKCkgPT4ge1xuICAgIGlmICghdGhpcy5hdmFpbGFibGVSb2xlcy5sZW5ndGgpIHJldHVybiAnJztcbiAgICBjb25zdCBsYW5nID0gdGhpcy5pMThuLmxhbmcoKTtcbiAgICBjb25zdCBuYW1lcyA9IHRoaXMuYXZhaWxhYmxlUm9sZXMubWFwKHIgPT4gcmVzb2x2ZVJvbGVMYWJlbChyLCBsYW5nKSkuam9pbignLCAnKTtcbiAgICByZXR1cm4gYCR7dGhpcy50KCdyb2xlc0F2YWlsYWJsZScpfSAke25hbWVzfWA7XG4gIH0pO1xuXG4gIHJlYWRvbmx5IHN1bW1hcnlMYWJlbCA9IGNvbXB1dGVkKCgpID0+IHtcbiAgICBjb25zdCBzID0gdGhpcy5yZXN1bHRzKCk/LnN1bW1hcnk7XG4gICAgaWYgKCFzKSByZXR1cm4gdGhpcy50KCdzdW1tYXJ5Jyk7XG4gICAgcmV0dXJuIGAke3RoaXMudCgnc3VtbWFyeScpfTogJHtzLmNyZWF0ZWR9ICR7dGhpcy50KCdjcmVhdGVkJyl9IMK3ICR7cy5hc3NpZ25lZH0gJHt0aGlzLnQoXG4gICAgICAnYXNzaWduZWQnXG4gICAgKX0gwrcgJHtzLnNraXBwZWR9ICR7dGhpcy50KCdza2lwcGVkJyl9IMK3ICR7cy5mYWlsZWR9ICR7dGhpcy50KCdmYWlsZWQnKX1gO1xuICB9KTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBpZiAoIXRoaXMuaTE4bi5oYXNOYW1lc3BhY2UoREVGQVVMVF9OQU1FU1BBQ0UpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KERFRkFVTFRfTkFNRVNQQUNFLCBNRU1CRVJfSU1QT1JUX01PREFMX0kxOE4pO1xuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pMThuLmhhc05hbWVzcGFjZSh0aGlzLmkxOG5OYW1lc3BhY2UpKSB7XG4gICAgICB0aGlzLmkxOG4ucmVnaXN0ZXJDb250ZW50KHRoaXMuaTE4bk5hbWVzcGFjZSwgTUVNQkVSX0lNUE9SVF9NT0RBTF9JMThOKTtcbiAgICB9XG4gIH1cblxuICAvKiogQ2FyZ2EgdW4gYXJjaGl2byBDU1Ygc2VsZWNjaW9uYWRvOiBsZWUgc3UgdGV4dG8gYWwgdGV4dGFyZWEgKGBjc3ZgKS4gKi9cbiAgb25GaWxlU2VsZWN0ZWQoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICBjb25zdCBmaWxlID0gaW5wdXQuZmlsZXM/LlswXTtcbiAgICBpZiAoIWZpbGUpIHJldHVybjtcbiAgICB0aGlzLmVycm9yTXNnLnNldCgnJyk7XG4gICAgY29uc3QgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKTtcbiAgICByZWFkZXIub25sb2FkID0gKCkgPT4ge1xuICAgICAgdGhpcy5jc3YgPSBTdHJpbmcocmVhZGVyLnJlc3VsdCA/PyAnJyk7XG4gICAgICB0aGlzLmZpbGVOYW1lLnNldChmaWxlLm5hbWUpO1xuICAgIH07XG4gICAgcmVhZGVyLm9uZXJyb3IgPSAoKSA9PiB0aGlzLmVycm9yTXNnLnNldCh0aGlzLnQoJ2ZpbGVSZWFkRXJyb3InKSk7XG4gICAgcmVhZGVyLnJlYWRBc1RleHQoZmlsZSk7XG4gICAgLy8gUGVybWl0ZSByZS1zZWxlY2Npb25hciBlbCBtaXNtbyBhcmNoaXZvIChlbCBjaGFuZ2Ugbm8gZGlzcGFyYSBzaSBubyBzZSBsaW1waWEpLlxuICAgIGlucHV0LnZhbHVlID0gJyc7XG4gIH1cblxuICAvKiogUGFyc2VhIGVsIENTViBwZWdhZG8gYSBmaWxhcyB7ZW1haWwsbmFtZSxyb2xlTmFtZX0uIFRvbGVyYSBoZWFkZXIuICovXG4gIHByaXZhdGUgcGFyc2VDc3YoKTogSW1wb3J0VXNlclJvd1tdIHtcbiAgICBjb25zdCByb3dzOiBJbXBvcnRVc2VyUm93W10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHJhdyBvZiB0aGlzLmNzdi5zcGxpdCgvXFxyP1xcbi8pKSB7XG4gICAgICBjb25zdCBsaW5lID0gcmF3LnRyaW0oKTtcbiAgICAgIGlmICghbGluZSkgY29udGludWU7XG4gICAgICBjb25zdCBjb2xzID0gbGluZS5zcGxpdCgnLCcpLm1hcChjID0+IGMudHJpbSgpKTtcbiAgICAgIGNvbnN0IGVtYWlsID0gKGNvbHNbMF0gPz8gJycpLnRvTG93ZXJDYXNlKCk7XG4gICAgICAvLyBTYWx0YXIgaGVhZGVyIChwcmltZXJhIGNvbCBcImVtYWlsXCIpIG8gbMOtbmVhcyBzaW4gQC5cbiAgICAgIGlmICghZW1haWwgfHwgIWVtYWlsLmluY2x1ZGVzKCdAJykpIGNvbnRpbnVlO1xuICAgICAgcm93cy5wdXNoKHsgZW1haWwsIG5hbWU6IGNvbHNbMV0gPz8gJycsIHJvbGVOYW1lOiBjb2xzWzJdID8/ICcnIH0pO1xuICAgIH1cbiAgICByZXR1cm4gcm93cztcbiAgfVxuXG4gIHN1Ym1pdCgpOiB2b2lkIHtcbiAgICB0aGlzLmVycm9yTXNnLnNldCgnJyk7XG4gICAgY29uc3QgdXNlcnMgPSB0aGlzLnBhcnNlQ3N2KCk7XG4gICAgaWYgKHVzZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5lcnJvck1zZy5zZXQodGhpcy50KCdub1Jvd3MnKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh1c2Vycy5zb21lKHUgPT4gIXUucm9sZU5hbWUpKSB7XG4gICAgICB0aGlzLmVycm9yTXNnLnNldCh0aGlzLnQoJ3BhcnNlRXJyb3InKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5zdWJtaXR0aW5nLnNldCh0cnVlKTtcbiAgICB0aGlzLm9yZ1NlcnZpY2VcbiAgICAgIC5pbXBvcnRNZW1iZXJzKHRoaXMub3JnSWQsIHtcbiAgICAgICAgdXNlcnMsXG4gICAgICAgIG9uQ29uZmxpY3Q6ICh0aGlzLm9uQ29uZmxpY3RDb250cm9sLnZhbHVlID8/ICdhc3NpZ25Sb2xlJykgYXMgSW1wb3J0T25Db25mbGljdCxcbiAgICAgICAgc2VuZEFjdGl2YXRpb246IHRoaXMuc2VuZEFjdGl2YXRpb25Db250cm9sLnZhbHVlID8/IHRydWUsXG4gICAgICB9KVxuICAgICAgLnN1YnNjcmliZSh7XG4gICAgICAgIG5leHQ6IHJlcyA9PiB7XG4gICAgICAgICAgdGhpcy5zdWJtaXR0aW5nLnNldChmYWxzZSk7XG4gICAgICAgICAgdGhpcy5yZXN1bHRzLnNldChyZXMpO1xuICAgICAgICAgIC8vIFJlZnJlc2NhciBsaXN0YSBkZWwgY29uc3VtZXIgc2kgaHVibyBhbHRhcy9hc2lnbmFjaW9uZXMgZWZlY3RpdmFzLlxuICAgICAgICAgIGlmIChyZXMuc3VtbWFyeS5jcmVhdGVkICsgcmVzLnN1bW1hcnkuYXNzaWduZWQgPiAwKSB7XG4gICAgICAgICAgICB0aGlzLm9uU3VjY2Vzcz8uKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBlcnJvcjogZXJyID0+IHtcbiAgICAgICAgICB0aGlzLnN1Ym1pdHRpbmcuc2V0KGZhbHNlKTtcbiAgICAgICAgICB0aGlzLmVycm9yTXNnLnNldChlcnI/LmVycm9yPy5tZXNzYWdlID8/IHRoaXMudCgnZ2VuZXJpY0Vycm9yJykpO1xuICAgICAgICB9LFxuICAgICAgfSk7XG4gIH1cblxuICBzdGF0dXNMYWJlbChyOiBJbXBvcnRSb3dSZXN1bHQpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJhc2UgPSB0aGlzLnQoci5zdGF0dXMgPT09ICdlcnJvcicgPyAnZmFpbGVkJyA6IHIuc3RhdHVzKTtcbiAgICBpZiAoci5zdGF0dXMgPT09ICdjcmVhdGVkJyAmJiByLmFjdGl2YXRpb24pIHtcbiAgICAgIHJldHVybiBgJHtiYXNlfSDCtyAke3RoaXMudChyLmFjdGl2YXRpb24gPT09ICdzZW50JyA/ICdhY3RpdmF0aW9uU2VudCcgOiAnYWN0aXZhdGlvblBlbmRpbmcnKX1gO1xuICAgIH1cbiAgICByZXR1cm4gYmFzZTtcbiAgfVxuXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMuY3N2ID0gJyc7XG4gICAgdGhpcy5maWxlTmFtZS5zZXQoJycpO1xuICAgIHRoaXMuZXJyb3JNc2cuc2V0KCcnKTtcbiAgICB0aGlzLnJlc3VsdHMuc2V0KG51bGwpO1xuICAgIHRoaXMuaW1wb3J0TW9kZS5zZXQoJ2ZpbGUnKTtcbiAgfVxuXG4gIGRpc21pc3MoKTogdm9pZCB7XG4gICAgdGhpcy5fbW9kYWxSZWY/LmRpc21pc3MobnVsbCwgJ2NhbmNlbCcpO1xuICB9XG5cbiAgdChrZXk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuaTE4bi50KGtleSwgdGhpcy5pMThuTmFtZXNwYWNlKTtcbiAgfVxufVxuIl19
|