@touchpoll/tp-survey 0.0.23 → 0.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/fesm2022/touchpoll-tp-survey.mjs +202 -150
  2. package/fesm2022/touchpoll-tp-survey.mjs.map +1 -1
  3. package/lib/component/answer/answer.ms/answer.ms.component.d.ts +3 -3
  4. package/lib/component/answer/answer.sl/answer.sl.component.d.ts +3 -3
  5. package/lib/component/survey.play/survey.play.component.d.ts +2 -2
  6. package/lib/pipe/get.question.image.background.size/get.question.image.background.css.size.pipe.d.ts +12 -0
  7. package/lib/tp.survey.interface.d.ts +4 -4
  8. package/package.json +1 -3
  9. package/styles/platform/component/survey.checkbox.scss +5 -5
  10. package/styles/platform/component/survey.radio.button.scss +3 -3
  11. package/styles/platform/survey.mixins.desktop.scss +9 -9
  12. package/styles/platform/survey.mixins.tablet.scss +3 -3
  13. package/styles/survey.mixins.scss +4 -3
  14. package/styles/survey.themes.scss +5 -2
  15. package/styles/theme/azure.blue.scss +3 -2
  16. package/styles/theme/cyan.orange.scss +4 -2
  17. package/styles/theme/rose.red.scss +3 -2
  18. package/esm2022/lib/component/answer/answer.additional/answer.additional.component.mjs +0 -49
  19. package/esm2022/lib/component/answer/answer.additional/directive/additional.answer.caption.position/additional.answer.caption.position.directive.mjs +0 -61
  20. package/esm2022/lib/component/answer/answer.end/answer.end.component.mjs +0 -30
  21. package/esm2022/lib/component/answer/answer.info/answer.info.component.mjs +0 -30
  22. package/esm2022/lib/component/answer/answer.lang/answer.lang.component.mjs +0 -22
  23. package/esm2022/lib/component/answer/answer.master/answer.master.component.mjs +0 -57
  24. package/esm2022/lib/component/answer/answer.ms/answer.ms.component.mjs +0 -106
  25. package/esm2022/lib/component/answer/answer.od/answer.od.component.mjs +0 -39
  26. package/esm2022/lib/component/answer/answer.ol/answer.ol.component.mjs +0 -40
  27. package/esm2022/lib/component/answer/answer.sl/answer.sl.component.mjs +0 -131
  28. package/esm2022/lib/component/answer/answer.sl/pipe/as.form.array/as.form.array.pipe.mjs +0 -17
  29. package/esm2022/lib/component/answer/answer.sl/pipe/as.form.control/as.form.control.pipe.mjs +0 -17
  30. package/esm2022/lib/component/answer/answer.ss/answer.ss.component.mjs +0 -51
  31. package/esm2022/lib/component/answer/container.answer/container.answer.component.mjs +0 -319
  32. package/esm2022/lib/component/answer/container.answer/container.answer.validator.mjs +0 -130
  33. package/esm2022/lib/component/navigation.button/navigation.button.component.mjs +0 -21
  34. package/esm2022/lib/component/question.caption/question.caption.component.mjs +0 -15
  35. package/esm2022/lib/component/survey.play/survey.play.component.mjs +0 -126
  36. package/esm2022/lib/component/survey.question.preview/survey.question.preview.component.mjs +0 -60
  37. package/esm2022/lib/core/tp.servey.quota/tp.survey.quota.mjs +0 -105
  38. package/esm2022/lib/core/tp.survey.answer/tp.survey.answer.mjs +0 -27
  39. package/esm2022/lib/core/tp.survey.core/tp.survey.core.service.mjs +0 -455
  40. package/esm2022/lib/core/tp.survey.interview/tp.survey.interview.service.mjs +0 -68
  41. package/esm2022/lib/core/tp.survey.logic/tp.survey.logic.service.mjs +0 -42
  42. package/esm2022/lib/directive/alternatives.container/alternatives.container.directive.mjs +0 -130
  43. package/esm2022/lib/directive/focus.and.select/focus.and.select.directive.mjs +0 -27
  44. package/esm2022/lib/directive/survey.theme/survey.theme.directive.mjs +0 -53
  45. package/esm2022/lib/directive/update.font.size/update.font.size.directive.mjs +0 -28
  46. package/esm2022/lib/icons/default.icons/default.icons.mjs +0 -15
  47. package/esm2022/lib/icons/default.icons/default.icons.module.mjs +0 -31
  48. package/esm2022/lib/pipe/get.active.language/get.active.language.pipe.mjs +0 -17
  49. package/esm2022/lib/pipe/get.additional.value.by.value/get.additional.value.by.value.pipe.mjs +0 -18
  50. package/esm2022/lib/pipe/key.values/key.values.pipe.mjs +0 -20
  51. package/esm2022/lib/pipe/multi.lang.object.to.html/multi.lang.object.to.html.pipe.mjs +0 -48
  52. package/esm2022/lib/tp.survey.config.mjs +0 -8
  53. package/esm2022/lib/tp.survey.const.mjs +0 -28
  54. package/esm2022/lib/tp.survey.enum.mjs +0 -50
  55. package/esm2022/lib/tp.survey.interface.mjs +0 -2
  56. package/esm2022/lib/tp.survey.method.mjs +0 -5
  57. package/esm2022/lib/tp.survey.module.mjs +0 -27
  58. package/esm2022/lib/tp.survey.type.mjs +0 -2
  59. package/esm2022/public-api.mjs +0 -14
  60. package/esm2022/touchpoll-tp-survey.mjs +0 -5
@@ -1,105 +0,0 @@
1
- import { executeLogicExpression } from '../../tp.survey.method';
2
- export class SurveyQuotas {
3
- #completedQuota = { name: null, guid: null, guid2d: null };
4
- #quotas = [];
5
- #quotas2d = [];
6
- #quotaLimitDestinationQuestionGuid = -1;
7
- #quotaLimitDestinationQuestionNum = -1;
8
- setQuotas(quotas1d = [], quotas2d = [], quotaLimitDestinationQuestionGuid = -1, destinationQuestionNum = -1) {
9
- this.#quotas = quotas1d;
10
- this.#quotas2d = quotas2d;
11
- this.#quotaLimitDestinationQuestionGuid = quotaLimitDestinationQuestionGuid;
12
- this.#quotaLimitDestinationQuestionNum = destinationQuestionNum;
13
- }
14
- guidIsDestinationQuestion(guid) {
15
- return this.#quotaLimitDestinationQuestionGuid === guid;
16
- }
17
- get quotaIsCompleted() {
18
- return this.#completedQuota && (!!this.#completedQuota.guid || !!this.#completedQuota.guid2d);
19
- }
20
- get destinationQuestionGuid() {
21
- return this.#quotaLimitDestinationQuestionGuid;
22
- }
23
- get quotaCount() {
24
- const quotas = this.#quotas && Array.isArray(this.#quotas) ? this.#quotas.length : 0;
25
- const quotas2d = this.#quotas2d && Array.isArray(this.#quotas2d) ? this.#quotas2d.length : 0;
26
- return quotas + quotas2d;
27
- }
28
- findFilledQuotas(currentQuestionNum, vars, interviewAnswers) {
29
- /*
30
- * Поиск заполненной квоты это очень дорогой процесс. Его нужно оптимизировать по максимуму.
31
- * Перед поиском нужно выполнить ряд проверок.
32
- * Проверка currentQuestionNum <= this.#quotaLimitDestinationQuestionNum Нужна для оптимизации.
33
- * DestinationQuestion Желательно располагать после последнего квотного вопроса, потому что нет смысла постоянно проверять квоты, если вопросы которые используются для расчёта квоты меняться не будут.
34
- * например Квота Q1 + Q2 <= 25. DestinationQuestion нужно делать номером 3 или 4. Потому что как бы респондент не отвечал на последующие вопросы, результат квот не измениться и каждый раз их пересчитывать смысла нет.
35
- */
36
- if ((this.destinationQuestionGuid > 0) && //Глобально в настройках анкеты должен быть указан вопрос который должен отобразиться при достижении квоты, если его нет, то и искать квоты смысла нет.
37
- (this.quotaCount > 0) && //проверим если у нас вообще квоты
38
- (currentQuestionNum <= this.#quotaLimitDestinationQuestionNum) && // номер текущий вопроса меньше номера вопроса для перехода по достижении квот
39
- (!this.quotaIsCompleted) //и на финал проверим если ли уже заполненная квота, повторно не запускаем
40
- ) {
41
- new Promise((resolve, reject) => {
42
- if (Array.isArray(this.#quotas)) {
43
- const completedQuota = this.#quotas.find(quota => executeLogicExpression(quota.expression, vars));
44
- if (!!completedQuota) {
45
- return resolve({ name: completedQuota.name, guid: completedQuota.quota_guid });
46
- }
47
- }
48
- if (Array.isArray(this.#quotas2d)) {
49
- const answers = this.#quotas2d.length > 0 ? interviewAnswers.map(a => ({ av: a.AnswerValue, qg: a.QuestionGUID })) : [];
50
- const filledQuota2dArray = this.#quotas2d.filter(quotaValues => {
51
- /*
52
- * 2d квоты это всегда таблица. Но может быть иерархия, когда одно значение ответа может включать в себя один или несколько других ответов. Например "Обл центр" это 1, а город или село это другой ответ, хотя город и село это разные альтернативы
53
- * */
54
- if (Array.isArray(quotaValues.cqv) && quotaValues.cqv.length > 0) {
55
- /*
56
- * это ветка для случая с иерархией. Тут будет 2 массива.
57
- * В первом будут контролироваться те ответы которое должны совпадать полностью arrayEveryValues
58
- * Во втором arraySomeValue будет проверяться совпадение хотя бы 1 ответа
59
- * */
60
- const questionGuid = quotaValues.cqv[0].guid;
61
- const masterQuestion = quotaValues.qs.find(q => q.guid === questionGuid);
62
- const arrayEveryValues = quotaValues.qs.filter(q => q.guid != questionGuid);
63
- const arraySomeValue = [...quotaValues.cqv, ...[masterQuestion]];
64
- const arrayEveryResult = arrayEveryValues.every(qvq => !!answers.find(intAnswer => intAnswer.qg === qvq.guid && intAnswer.av === qvq.value));
65
- const arraySomeResult = arraySomeValue.some(qvq => !!answers.find(intAnswer => intAnswer.qg === qvq.guid && intAnswer.av === qvq.value));
66
- //если в обоих массивах совпадают значения значит квота выполнилась
67
- return arrayEveryResult && arraySomeResult;
68
- }
69
- else {
70
- //обычный массив значений, в котором должны совпадать все значения
71
- return quotaValues.qs.every(qvq => !!answers.find(intAnswer => intAnswer.qg === qvq.guid && intAnswer.av === qvq.value));
72
- }
73
- });
74
- //если не нашли заполненных квот выходим
75
- if (filledQuota2dArray.length <= 0) {
76
- return;
77
- }
78
- //ищем квоту которая заполнена и у нее есть условие и оно выполняется.
79
- const quota2dWithExpression = filledQuota2dArray.find((q) => !!q.exp && executeLogicExpression(q.exp, vars));
80
- //если квота есть сообщим
81
- if (!!quota2dWithExpression) {
82
- return resolve({ name: null, guid2d: quota2dWithExpression.qvg });
83
- }
84
- //если квоты с Expression нет, ищем квоту которая заполнена и у нее нет условия
85
- const quota2dWithoutExpression = filledQuota2dArray.find((q) => !q.exp || (typeof q.exp === 'string' && q.exp.trim().length === 0));
86
- if (!!quota2dWithoutExpression) {
87
- return resolve({ name: null, guid2d: quota2dWithoutExpression.qvg });
88
- }
89
- }
90
- reject(null);
91
- }).then(quota => {
92
- if (!!quota) {
93
- this.#completedQuota = {
94
- name: quota.name,
95
- guid: 'guid' in quota ? quota.guid : null,
96
- guid2d: 'guid2d' in quota ? quota.guid2d : null,
97
- };
98
- }
99
- }).catch(err => {
100
- console.error(err);
101
- });
102
- }
103
- }
104
- }
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAuc3VydmV5LnF1b3RhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvdHAuc3VydmV5L3NyYy9saWIvY29yZS90cC5zZXJ2ZXkucXVvdGEvdHAuc3VydmV5LnF1b3RhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxzQkFBc0IsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBVzlELE1BQU0sT0FBTyxZQUFZO0lBQ3ZCLGVBQWUsR0FBb0UsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBQyxDQUFDO0lBQzFILE9BQU8sR0FBK0IsRUFBRSxDQUFDO0lBQ3pDLFNBQVMsR0FBdUMsRUFBRSxDQUFDO0lBQ25ELGtDQUFrQyxHQUFXLENBQUMsQ0FBQyxDQUFDO0lBQ2hELGlDQUFpQyxHQUFXLENBQUMsQ0FBQyxDQUFDO0lBRS9DLFNBQVMsQ0FBQyxXQUF1QyxFQUFFLEVBQUUsV0FBK0MsRUFBRSxFQUFFLG9DQUE0QyxDQUFDLENBQUMsRUFBRSx5QkFBaUMsQ0FBQyxDQUFDO1FBQ3pMLElBQUksQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLElBQUksQ0FBQyxrQ0FBa0MsR0FBRyxpQ0FBaUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsaUNBQWlDLEdBQUcsc0JBQXNCLENBQUM7SUFDbEUsQ0FBQztJQUVELHlCQUF5QixDQUFDLElBQVk7UUFDcEMsT0FBTyxJQUFJLENBQUMsa0NBQWtDLEtBQUssSUFBSSxDQUFDO0lBQzFELENBQUM7SUFHRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMs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QUc7d0JBQ3JCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTt3QkFDaEIsSUFBSSxFQUFFLE1BQU0sSUFBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUk7d0JBQzFDLE1BQU0sRUFBRSxRQUFRLElBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJO3FCQUNqRCxDQUFBO2dCQUNILENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNyQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lkYlF1ZXN0aW9uYXJ5UXVvdGEsIElkYlF1ZXN0aW9uYXJ5UXVvdGEyZE9iamVjdH0gZnJvbSAnLi4vLi4vdHAuc3VydmV5LmludGVyZmFjZSc7XHJcbmltcG9ydCB7QW5zd2VyfSBmcm9tICcuLi90cC5zdXJ2ZXkuYW5zd2VyL3RwLnN1cnZleS5hbnN3ZXInO1xyXG5pbXBvcnQge2V4ZWN1dGVMb2dpY0V4cHJlc3Npb259IGZyb20gJy4uLy4uL3RwLnN1cnZleS5tZXRob2QnO1xyXG5pbXBvcnQge0xvZ2ljT2JqZWN0fSBmcm9tICcuLi8uLi90cC5zdXJ2ZXkudHlwZSc7XHJcblxyXG50eXBlIFF1b3RhQ2FsY3VsYXRpb25SZXN1bHQgPSB7XHJcbiAgbmFtZTogc3RyaW5nO1xyXG4gIGd1aWQ6IG51bWJlcjtcclxufSB8IHtcclxuICBuYW1lOiBudWxsO1xyXG4gIGd1aWQyZDogbnVtYmVyO1xyXG59IHwgbnVsbDtcclxuXHJcbmV4cG9ydCBjbGFzcyBTdXJ2ZXlRdW90YXMge1xyXG4gICNjb21wbGV0ZWRRdW90YToge25hbWU6IHN0cmluZyB8IG51bGw7IGd1aWQ6IG51bWJlcnwgbnVsbDsgZ3VpZDJkOiBudW1iZXJ8IG51bGx9ID0ge25hbWU6IG51bGwsIGd1aWQ6IG51bGwsIGd1aWQyZDogbnVsbH07XHJcbiAgI3F1b3RhczogQXJyYXk8SWRiUXVlc3Rpb25hcnlRdW90YT4gPSBbXTtcclxuICAjcXVvdGFzMmQ6IEFycmF5PElkYlF1ZXN0aW9uYXJ5UXVvdGEyZE9iamVjdD4gPSBbXTtcclxuICAjcXVvdGFMaW1pdERlc3RpbmF0aW9uUXVlc3Rpb25HdWlkOiBudW1iZXIgPSAtMTtcclxuICAjcXVvdGFMaW1pdERlc3RpbmF0aW9uUXVlc3Rpb25OdW06IG51bWJlciA9IC0xO1xyXG5cclxuICBzZXRRdW90YXMocXVvdGFzMWQ6IEFycmF5PElkYlF1ZXN0aW9uYXJ5UXVvdGE+ID0gW10sIHF1b3RhczJkOiBBcnJheTxJZGJRdWVzdGlvbmFyeVF1b3RhMmRPYmplY3Q+ID0gW10sIHF1b3RhTGltaXREZXN0aW5hdGlvblF1ZXN0aW9uR3VpZDogbnVtYmVyID0gLTEsIGRlc3RpbmF0aW9uUXVlc3Rpb25OdW06IG51bWJlciA9IC0xKXtcclxuICAgIHRoaXMuI3F1b3RhcyA9IHF1b3RhczFkO1xyXG4gICAgdGhpcy4jcXVvdGFzMmQgPSBxdW90YXMyZDtcclxuICAgIHRoaXMuI3F1b3RhTGltaXREZXN0aW5hdGlvblF1ZXN0aW9uR3VpZCA9IHF1b3RhTGltaXREZXN0aW5hdGlvblF1ZXN0aW9uR3VpZDtcclxuICAgIHRoaXMuI3F1b3RhTGltaXREZXN0aW5hdGlvblF1ZXN0aW9uTnVtID0gZGVzdGluYXRpb25RdWVzdGlvbk51bTtcclxuICB9XHJcblxyXG4gIGd1aWRJc0Rlc3RpbmF0aW9uUXVlc3Rpb24oZ3VpZDogbnVtYmVyKTogYm9vbGVhbntcclxuICAgIHJldHVybiB0aGlzLiNxdW90YUxpbWl0RGVzdGluYXRpb25RdWVzdGlvbkd1aWQgPT09IGd1aWQ7XHJcbiAgfVxyXG5cclxuXHJcbiAgZ2V0IHF1b3RhSXNDb21wbGV0ZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy4jY29tcGxldGVkUXVvdGEgJiYgKCEhdGhpcy4jY29tcGxldGVkUXVvdGEuZ3VpZCB8fCAhIXRoaXMuI2NvbXBsZXRlZFF1b3RhLmd1aWQyZCkgIDtcclxuICB9XHJcblxyXG4gIGdldCBkZXN0aW5hdGlvblF1ZXN0aW9uR3VpZCgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIHRoaXMuI3F1b3RhTGltaXREZXN0aW5hdGlvblF1ZXN0aW9uR3VpZFxyXG4gIH1cclxuXHJcbiAgZ2V0IHF1b3RhQ291bnQoKTogbnVtYmVyIHtcclxuICAgIGNvbnN0IHF1b3RhcyAgID0gdGhpcy4jcXVvdGFzICYmICBBcnJheS5pc0FycmF5KHRoaXMuI3F1b3RhcykgPyB0aGlzLiNxdW90YXMubGVuZ3RoIDogMDtcclxuICAgIGNvbnN0IHF1b3RhczJkID0gdGhpcy4jcXVvdGFzMmQgJiYgIEFycmF5LmlzQXJyYXkodGhpcy4jcXVvdGFzMmQpID8gdGhpcy4jcXVvdGFzMmQubGVuZ3RoIDogMDtcclxuICAgIHJldHVybiBxdW90YXMgKyBxdW90YXMyZDtcclxuICB9XHJcblxyXG4gIGZpbmRGaWxsZWRRdW90YXMoY3VycmVudFF1ZXN0aW9uTnVtOiBudW1iZXIsIHZhcnM6IExvZ2ljT2JqZWN0LCBpbnRlcnZpZXdBbnN3ZXJzOiBBcnJheTxBbnN3ZXI+KTogdm9pZCB7XHJcbiAgICAvKlxyXG4gICAgKiDQn9C+0LjRgdC6INC30LDQv9C+0LvQvdC10L3QvdC+0Lkg0LrQstC+0YLRiyDRjdGC0L4g0L7Rh9C10L3RjCDQtNC+0YDQvtCz0L7QuSDQv9GA0L7RhtC10YHRgS4g0JXQs9C+INC90YPQttC90L4g0L7Qv9GC0LjQvNC40LfQuNGA0L7QstCw0YLRjCDQv9C+INC80LDQutGB0LjQvNGD0LzRgy5cclxuICAgICog0J/QtdGA0LXQtCDQv9C+0LjRgdC60L7QvCDQvdGD0LbQvdC+INCy0YvQv9C+0LvQvdC40YLRjCDRgNGP0LQg0L/RgNC+0LLQtdGA0L7Qui5cclxuICAgICog0J/RgNC+0LLQtdGA0LrQsCBjdXJyZW50UXVlc3Rpb25OdW0gPD0gdGhpcy4jcXVvdGFMaW1pdERlc3RpbmF0aW9uUXVlc3Rpb25OdW0g0J3Rg9C20L3QsCDQtNC70Y8g0L7Qv9GC0LjQvNC40LfQsNGG0LjQuC5cclxuICAgICogRGVzdGluYXRpb25RdWVzdGlvbiDQltC10LvQsNGC0LXQu9GM0L3QviDRgNCw0YHQv9C+0LvQsNCz0LDRgtGMINC/0L7RgdC70LUg0L/QvtGB0LvQtdC00L3QtdCz0L4g0LrQstC+0YLQvdC+0LPQviDQstC+0L/RgNC+0YHQsCwg0L/QvtGC0L7QvNGDINGH0YLQviDQvdC10YIg0YHQvNGL0YHQu9CwINC/0L7RgdGC0L7Rj9C90L3QviDQv9GA0L7QstC10YDRj9GC0Ywg0LrQstC+0YLRiywg0LXRgdC70Lgg0LLQvtC/0YDQvtGB0Ysg0LrQvtGC0L7RgNGL0LUg0LjRgdC/0L7Qu9GM0LfRg9GO0YLRgdGPINC00LvRjyDRgNCw0YHRh9GR0YLQsCDQutCy0L7RgtGLINC80LXQvdGP0YLRjNGB0Y8g0L3QtSDQsdGD0LTRg9GCLlxyXG4gICAgKiDQvdCw0L/RgNC40LzQtdGAINCa0LLQvtGC0LAgUTEgKyBRMiA8PSAyNS4gRGVzdGluYXRpb25RdWVzdGlvbiDQvdGD0LbQvdC+INC00LXQu9Cw0YLRjCDQvdC+0LzQtdGA0L7QvCAzINC40LvQuCA0LiDQn9C+0YLQvtC80YMg0YfRgtC+INC60LDQuiDQsdGLINGA0LXRgdC/0L7QvdC00LXQvdGCINC90LUg0L7RgtCy0LXRh9Cw0Lsg0L3QsCDQv9C+0YHQu9C10LTRg9GO0YnQuNC1INCy0L7Qv9GA0L7RgdGLLCDRgNC10LfRg9C70YzRgtCw0YIg0LrQstC+0YIg0L3QtSDQuNC30LzQtdC90LjRgtGM0YHRjyDQuCDQutCw0LbQtNGL0Lkg0YDQsNC3INC40YUg0L/QtdGA0LXRgdGH0LjRgtGL0LLQsNGC0Ywg0YHQvNGL0YHQu9CwINC90LXRgi5cclxuICAgICovXHJcbiAgICBpZiAoXHJcbiAgICAgKHRoaXMuZGVzdGluYXRpb25RdWVzdGlvbkd1aWQgPiAwKSAmJiAvL9CT0LvQvtCx0LDQu9GM0L3QviDQsiDQvdCw0YHRgtGA0L7QudC60LDRhSDQsNC90LrQtdGC0Ysg0LTQvtC70LbQtdC9INCx0YvRgtGMINGD0LrQsNC30LDQvSDQstC+0L/RgNC+0YEg0LrQvtGC0L7RgNGL0Lkg0LTQvtC70LbQtdC9INC+0YLQvtCx0YDQsNC30LjRgtGM0YHRjyDQv9GA0Lgg0LTQvtGB0YLQuNC20LXQvdC40Lgg0LrQstC+0YLRiywg0LXRgdC70Lgg0LXQs9C+INC90LXRgiwg0YLQviDQuCDQuNGB0LrQsNGC0Ywg0LrQstC+0YLRiyDRgdC80YvRgdC70LAg0L3QtdGCLlxyXG4gICAgICh0aGlzLnF1b3RhQ291bnQgPiAwKSAmJiAvL9C/0YDQvtCy0LXRgNC40Lwg0LXRgdC70Lgg0YMg0L3QsNGBINCy0L7QvtCx0YnQtSDQutCy0L7RgtGLXHJcbiAgICAgKGN1cnJlbnRRdWVzdGlvbk51bSA8PSB0aGlzLiNxdW90YUxpbWl0RGVzdGluYXRpb25RdWVzdGlvbk51bSkgJiYgLy8g0L3QvtC80LXRgCDRgtC10LrRg9GJ0LjQuSDQstC+0L/RgNC+0YHQsCDQvNC10L3RjNGI0LUg0L3QvtC80LXRgNCwINCy0L7Qv9GA0L7RgdCwINC00LvRjyDQv9C10YDQtdGF0L7QtNCwINC/0L4g0LTQvtGB0YLQuNC20LXQvdC40Lgg0LrQstC+0YJcclxuICAgICAoIXRoaXMucXVvdGFJc0NvbXBsZXRlZCkgLy/QuCDQvdCwINGE0LjQvdCw0Lsg0L/RgNC+0LLQtdGA0LjQvCDQtdGB0LvQuCDQu9C4INGD0LbQtSDQt9Cw0L/QvtC70L3QtdC90L3QsNGPINC60LLQvtGC0LAsINC/0L7QstGC0L7RgNC90L4g0L3QtSDQt9Cw0L/Rg9GB0LrQsNC10LxcclxuICAgICkge1xyXG5cclxuICAgICAgbmV3IFByb21pc2U8UXVvdGFDYWxjdWxhdGlvblJlc3VsdD4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuI3F1b3RhcykpIHtcclxuICAgICAgICAgIGNvbnN0IGNvbXBsZXRlZFF1b3RhID0gdGhpcy4jcXVvdGFzLmZpbmQocXVvdGEgPT4gZXhlY3V0ZUxvZ2ljRXhwcmVzc2lvbihxdW90YS5leHByZXNzaW9uLCB2YXJzKSk7XHJcbiAgICAgICAgICBpZiAoISFjb21wbGV0ZWRRdW90YSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcmVzb2x2ZSh7bmFtZTogY29tcGxldGVkUXVvdGEubmFtZSwgZ3VpZDogY29tcGxldGVkUXVvdGEucXVvdGFfZ3VpZH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy4jcXVvdGFzMmQpKSB7XHJcbiAgICAgICAgICBjb25zdCBhbnN3ZXJzID0gdGhpcy4jcXVvdGFzMmQubGVuZ3RoID4gMCA/IGludGVydmlld0Fuc3dlcnMubWFwKGEgPT4gKHthdjogYS5BbnN3ZXJWYWx1ZSwgcWc6IGEuUXVlc3Rpb25HVUlEfSkgKSA6IFtdO1xyXG5cclxuICAgICAgICAgIGNvbnN0IGZpbGxlZFF1b3RhMmRBcnJheSA9IHRoaXMuI3F1b3RhczJkLmZpbHRlcihxdW90YVZhbHVlcyA9PiB7XHJcbiAgICAgICAgICAgIC8qXHJcbiAgICAgICAgICAgICogMmQg0LrQstC+0YLRiyDRjdGC0L4g0LLRgdC10LPQtNCwINGC0LDQsdC70LjRhtCwLiDQndC+INC80L7QttC10YIg0LHRi9GC0Ywg0LjQtdGA0LDRgNGF0LjRjywg0LrQvtCz0LTQsCDQvtC00L3QviDQt9C90LDRh9C10L3QuNC1INC+0YLQstC10YLQsCDQvNC+0LbQtdGCINCy0LrQu9GO0YfQsNGC0Ywg0LIg0YHQtdCx0Y8g0L7QtNC40L0g0LjQu9C4INC90LXRgdC60L7Qu9GM0LrQviDQtNGA0YPQs9C40YUg0L7RgtCy0LXRgtC+0LIuINCd0LDQv9GA0LjQvNC10YAgXCLQntCx0Lsg0YbQtdC90YLRgFwiINGN0YLQviAxLCDQsCDQs9C+0YDQvtC0INC40LvQuCDRgdC10LvQviDRjdGC0L4g0LTRgNGD0LPQvtC5INC+0YLQstC10YIsINGF0L7RgtGPINCz0L7RgNC+0LQg0Lgg0YHQtdC70L4g0Y3RgtC+INGA0LDQt9C90YvQtSDQsNC70YzRgtC10YDQvdCw0YLQuNCy0YtcclxuICAgICAgICAgICAgKiAqL1xyXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShxdW90YVZhbHVlcy5jcXYpICYmIHF1b3RhVmFsdWVzLmNxdi5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgLypcclxuICAgICAgICAgICAgICAqINGN0YLQviDQstC10YLQutCwINC00LvRjyDRgdC70YPRh9Cw0Y8g0YEg0LjQtdGA0LDRgNGF0LjQtdC5LiDQotGD0YIg0LHRg9C00LXRgiAyINC80LDRgdGB0LjQstCwLlxyXG4gICAgICAgICAgICAgICog0JIg0L/QtdGA0LLQvtC8INCx0YPQtNGD0YIg0LrQvtC90YLRgNC+0LvQuNGA0L7QstCw0YLRjNGB0Y8g0YLQtSDQvtGC0LLQtdGC0Ysg0LrQvtGC0L7RgNC+0LUg0LTQvtC70LbQvdGLINGB0L7QstC/0LDQtNCw0YLRjCDQv9C+0LvQvdC+0YHRgtGM0Y4gYXJyYXlFdmVyeVZhbHVlc1xyXG4gICAgICAgICAgICAgICog0JLQviDQstGC0L7RgNC+0LwgYXJyYXlTb21lVmFsdWUg0LHRg9C00LXRgiDQv9GA0L7QstC10YDRj9GC0YzRgdGPINGB0L7QstC/0LDQtNC10L3QuNC1INGF0L7RgtGPINCx0YsgMSDQvtGC0LLQtdGC0LBcclxuICAgICAgICAgICAgICAqICovXHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uR3VpZCA9IHF1b3RhVmFsdWVzLmNxdlswXS5ndWlkO1xyXG5cclxuICAgICAgICAgICAgICBjb25zdCBtYXN0ZXJRdWVzdGlvbiA9IHF1b3RhVmFsdWVzLnFzLmZpbmQoIHEgPT4gcS5ndWlkID09PSBxdWVzdGlvbkd1aWQpO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGFycmF5RXZlcnlWYWx1ZXMgPSBxdW90YVZhbHVlcy5xcy5maWx0ZXIocSA9PiBxLmd1aWQgIT0gcXVlc3Rpb25HdWlkKTtcclxuXHJcbiAgICAgICAgICAgICAgY29uc3QgYXJyYXlTb21lVmFsdWUgPSBbLi4ucXVvdGFWYWx1ZXMuY3F2LCAuLi5bbWFzdGVyUXVlc3Rpb24hXV07XHJcblxyXG4gICAgICAgICAgICAgIGNvbnN0IGFycmF5RXZlcnlSZXN1bHQgPSBhcnJheUV2ZXJ5VmFsdWVzLmV2ZXJ5KHF2cSA9PiAhIWFuc3dlcnMuZmluZChpbnRBbnN3ZXIgPT4gaW50QW5zd2VyLnFnID09PSBxdnEuZ3VpZCAmJiBpbnRBbnN3ZXIuYXYgPT09IHF2cS52YWx1ZSkpXHJcbiAgICAgICAgICAgICAgY29uc3QgYXJyYXlTb21lUmVzdWx0ID0gYXJyYXlTb21lVmFsdWUuc29tZShxdnEgPT4gISFhbnN3ZXJzLmZpbmQoaW50QW5zd2VyID0+IGludEFuc3dlci5xZyA9PT0gcXZxLmd1aWQgJiYgaW50QW5zd2VyLmF2ID09PSBxdnEudmFsdWUpKVxyXG4gICAgICAgICAgICAgIC8v0LXRgdC70Lgg0LIg0L7QsdC+0LjRhSDQvNCw0YHRgdC40LLQsNGFINGB0L7QstC/0LDQtNCw0Y7RgiDQt9C90LDRh9C10L3QuNGPINC30L3QsNGH0LjRgiDQutCy0L7RgtCwINCy0YvQv9C+0LvQvdC40LvQsNGB0YxcclxuICAgICAgICAgICAgICByZXR1cm4gYXJyYXlFdmVyeVJlc3VsdCAmJiBhcnJheVNvbWVSZXN1bHQ7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgLy/QvtCx0YvRh9C90YvQuSDQvNCw0YHRgdC40LIg0LfQvdCw0YfQtdC90LjQuSwg0LIg0LrQvtGC0L7RgNC+0Lwg0LTQvtC70LbQvdGLINGB0L7QstC/0LDQtNCw0YLRjCDQstGB0LUg0LfQvdCw0YfQtdC90LjRj1xyXG4gICAgICAgICAgICAgIHJldHVybiBxdW90YVZhbHVlcy5xcy5ldmVyeShxdnEgPT4gISFhbnN3ZXJzLmZpbmQoaW50QW5zd2VyID0+IGludEFuc3dlci5xZyA9PT0gcXZxLmd1aWQgJiYgaW50QW5zd2VyLmF2ID09PSBxdnEudmFsdWUpKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICAgIC8v0LXRgdC70Lgg0L3QtSDQvdCw0YjQu9C4INC30LDQv9C+0LvQvdC10L3QvdGL0YUg0LrQstC+0YIg0LLRi9GF0L7QtNC40LxcclxuICAgICAgICAgIGlmIChmaWxsZWRRdW90YTJkQXJyYXkubGVuZ3RoIDw9IDApIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8v0LjRidC10Lwg0LrQstC+0YLRgyDQutC+0YLQvtGA0LDRjyDQt9Cw0L/QvtC70L3QtdC90LAg0Lgg0YMg0L3QtdC1INC10YHRgtGMINGD0YHQu9C+0LLQuNC1INC4INC+0L3QviDQstGL0L/QvtC70L3Rj9C10YLRgdGPLlxyXG4gICAgICAgICAgY29uc3QgcXVvdGEyZFdpdGhFeHByZXNzaW9uID0gZmlsbGVkUXVvdGEyZEFycmF5LmZpbmQoKHE6IElkYlF1ZXN0aW9uYXJ5UXVvdGEyZE9iamVjdCkgPT4gISFxLmV4cCAmJiBleGVjdXRlTG9naWNFeHByZXNzaW9uKHEuZXhwLCB2YXJzKSk7XHJcblxyXG4gICAgICAgICAgLy/QtdGB0LvQuCDQutCy0L7RgtCwINC10YHRgtGMINGB0L7QvtCx0YnQuNC8XHJcbiAgICAgICAgICBpZiAoISFxdW90YTJkV2l0aEV4cHJlc3Npb24pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHJlc29sdmUoe25hbWU6IG51bGwsIGd1aWQyZDogcXVvdGEyZFdpdGhFeHByZXNzaW9uLnF2Z30pO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC8v0LXRgdC70Lgg0LrQstC+0YLRiyDRgSBFeHByZXNzaW9uINC90LXRgiwg0LjRidC10Lwg0LrQstC+0YLRgyDQutC+0YLQvtGA0LDRjyDQt9Cw0L/QvtC70L3QtdC90LAg0Lgg0YMg0L3QtdC1INC90LXRgiDRg9GB0LvQvtCy0LjRj1xyXG4gICAgICAgICAgY29uc3QgcXVvdGEyZFdpdGhvdXRFeHByZXNzaW9uID0gZmlsbGVkUXVvdGEyZEFycmF5LmZpbmQoKHE6IElkYlF1ZXN0aW9uYXJ5UXVvdGEyZE9iamVjdCkgPT4gIXEuZXhwICB8fCAodHlwZW9mIHEuZXhwICA9PT0gJ3N0cmluZycgJiYgcS5leHAudHJpbSgpLmxlbmd0aCA9PT0gMCkpO1xyXG4gICAgICAgICAgaWYgKCEhcXVvdGEyZFdpdGhvdXRFeHByZXNzaW9uKSB7XHJcbiAgICAgICAgICAgIHJldHVybiByZXNvbHZlKHtuYW1lOiBudWxsLCBndWlkMmQ6IHF1b3RhMmRXaXRob3V0RXhwcmVzc2lvbi5xdmd9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmVqZWN0KG51bGwpXHJcbiAgICAgIH0pLnRoZW4ocXVvdGEgPT4ge1xyXG4gICAgICAgIGlmICghIXF1b3RhKSB7XHJcbiAgICAgICAgICB0aGlzLiNjb21wbGV0ZWRRdW90YSA9IHtcclxuICAgICAgICAgICAgbmFtZTogcXVvdGEubmFtZSxcclxuICAgICAgICAgICAgZ3VpZDogJ2d1aWQnIGluICBxdW90YSA/IHF1b3RhLmd1aWQgOiBudWxsLFxyXG4gICAgICAgICAgICBndWlkMmQ6ICdndWlkMmQnIGluICBxdW90YSA/IHF1b3RhLmd1aWQyZCA6IG51bGwsXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KS5jYXRjaChlcnIgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -1,27 +0,0 @@
1
- import { MISSING_VALUE } from '../../tp.survey.const';
2
- export class Answer {
3
- constructor(guid, version = -1) {
4
- this.AnswerAdditional = {};
5
- this.ViewedAlternativeValues = [];
6
- this.ViewedSectionGuids = [];
7
- this.AlternativeSequenceClicks = [];
8
- this.StartedAt = 0;
9
- this.FinishedAt = 0;
10
- this.AnswerValue = MISSING_VALUE;
11
- this.answerIsComplete = false;
12
- this.QuestionGUID = guid;
13
- this.QuestionVersion = version;
14
- }
15
- clear() {
16
- this.StartedAt = 0;
17
- this.FinishedAt = 0;
18
- this.AnswerValue = MISSING_VALUE;
19
- this.ViewedAlternativeValues.length = 0;
20
- this.ViewedSectionGuids.length = 0;
21
- this.AlternativeSequenceClicks.length = 0;
22
- for (const key of Object.keys(this.AnswerAdditional)) {
23
- this.AnswerAdditional[Number(key)] = null;
24
- }
25
- }
26
- }
27
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHAuc3VydmV5LmFuc3dlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RwLnN1cnZleS9zcmMvbGliL2NvcmUvdHAuc3VydmV5LmFuc3dlci90cC5zdXJ2ZXkuYW5zd2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxNQUFNLE9BQU8sTUFBTTtJQVdqQixZQUFZLElBQVksRUFBRSxVQUFrQixDQUFDLENBQUM7UUFSckMscUJBQWdCLEdBQXFDLEVBQUUsQ0FBQztRQUN4RCw0QkFBdUIsR0FBa0IsRUFBRSxDQUFDO1FBQzVDLHVCQUFrQixHQUFrQixFQUFFLENBQUM7UUFDdkMsOEJBQXlCLEdBQTRCLEVBQUUsQ0FBQztRQUNqRSxjQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsZUFBVSxHQUFHLENBQUMsQ0FBQztRQUNmLGdCQUFXLEdBQVEsYUFBYSxDQUFDO1FBQ2pDLHFCQUFnQixHQUFZLEtBQUssQ0FBQztRQUVoQyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUN6QixJQUFJLENBQUMsZUFBZSxHQUFHLE9BQU8sQ0FBQztJQUNqQyxDQUFDO0lBQ0QsS0FBSztRQUNILElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLElBQUksQ0FBQyxVQUFVLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLElBQUksQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFDO1FBQ2pDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ3hDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQ25DLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBQzFDLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDO1lBQ3JELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDNUMsQ0FBQztJQUNILENBQUM7Q0FLRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SVF1ZXN0aW9uQW5zd2VyfSBmcm9tICcuLi8uLi90cC5zdXJ2ZXkuaW50ZXJmYWNlJztcclxuaW1wb3J0IHtBZGRpdGlvbmFsQW5zd2VyfSBmcm9tICcuLi8uLi90cC5zdXJ2ZXkudHlwZSc7XHJcbmltcG9ydCB7TUlTU0lOR19WQUxVRX0gZnJvbSAnLi4vLi4vdHAuc3VydmV5LmNvbnN0JztcclxuXHJcbmV4cG9ydCBjbGFzcyBBbnN3ZXIgaW1wbGVtZW50cyBJUXVlc3Rpb25BbnN3ZXIge1xyXG4gIHJlYWRvbmx5IFF1ZXN0aW9uR1VJRDogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IFF1ZXN0aW9uVmVyc2lvbjogbnVtYmVyO1xyXG4gIHJlYWRvbmx5IEFuc3dlckFkZGl0aW9uYWw6IFJlY29yZDxzdHJpbmcsIEFkZGl0aW9uYWxBbnN3ZXI+ID0ge307XHJcbiAgcmVhZG9ubHkgVmlld2VkQWx0ZXJuYXRpdmVWYWx1ZXM6IEFycmF5PG51bWJlcj4gPSBbXTtcclxuICByZWFkb25seSBWaWV3ZWRTZWN0aW9uR3VpZHM6IEFycmF5PG51bWJlcj4gPSBbXTtcclxuICByZWFkb25seSBBbHRlcm5hdGl2ZVNlcXVlbmNlQ2xpY2tzOiBBcnJheTxbbnVtYmVyLCBudW1iZXJdPiA9IFtdO1xyXG4gIFN0YXJ0ZWRBdCA9IDA7XHJcbiAgRmluaXNoZWRBdCA9IDA7XHJcbiAgQW5zd2VyVmFsdWU6IGFueSA9IE1JU1NJTkdfVkFMVUU7XHJcbiAgYW5zd2VySXNDb21wbGV0ZTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIGNvbnN0cnVjdG9yKGd1aWQ6IG51bWJlciwgdmVyc2lvbjogbnVtYmVyID0gLTEpIHtcclxuICAgIHRoaXMuUXVlc3Rpb25HVUlEID0gZ3VpZDtcclxuICAgIHRoaXMuUXVlc3Rpb25WZXJzaW9uID0gdmVyc2lvbjtcclxuICB9XHJcbiAgY2xlYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLlN0YXJ0ZWRBdCA9IDA7XHJcbiAgICB0aGlzLkZpbmlzaGVkQXQgPSAwO1xyXG4gICAgdGhpcy5BbnN3ZXJWYWx1ZSA9IE1JU1NJTkdfVkFMVUU7XHJcbiAgICB0aGlzLlZpZXdlZEFsdGVybmF0aXZlVmFsdWVzLmxlbmd0aCA9IDA7XHJcbiAgICB0aGlzLlZpZXdlZFNlY3Rpb25HdWlkcy5sZW5ndGggPSAwO1xyXG4gICAgdGhpcy5BbHRlcm5hdGl2ZVNlcXVlbmNlQ2xpY2tzLmxlbmd0aCA9IDA7XHJcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0aGlzLkFuc3dlckFkZGl0aW9uYWwpKSB7XHJcbiAgICAgIHRoaXMuQW5zd2VyQWRkaXRpb25hbFtOdW1iZXIoa2V5KV0gPSBudWxsO1xyXG4gICAgfVxyXG4gIH1cclxuICAvLyBhZGRBbnN3ZXIoYW5zd2VyVmFsdWU6IHVua25vd24sIGFuc3dlckFkZGl0aW9uYWw6IExvZ2ljT2JqZWN0LCBhc0NvbXBsZXRlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgLy8gICB0aGlzLkFuc3dlclZhbHVlID0gYW5zd2VyVmFsdWU7XHJcbiAgLy8gfVxyXG5cclxufVxyXG4iXX0=