@pie-element/hotspot 9.1.0 → 9.2.0-mui-update.0
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/CHANGELOG.md +66 -0
- package/configure/CHANGELOG.md +66 -0
- package/configure/lib/DeleteWidget.js +31 -44
- package/configure/lib/DeleteWidget.js.map +1 -1
- package/configure/lib/__tests__/DeleteWidget.test.js +60 -0
- package/configure/lib/__tests__/hotspot-container.test.js +377 -0
- package/configure/lib/__tests__/hotspot-drawable.test.js +233 -0
- package/configure/lib/__tests__/index.test.js +211 -0
- package/configure/lib/__tests__/root.test.js +440 -0
- package/configure/lib/__tests__/utils.test.js +287 -0
- package/configure/lib/button.js +27 -46
- package/configure/lib/button.js.map +1 -1
- package/configure/lib/buttons/circle.js +21 -28
- package/configure/lib/buttons/circle.js.map +1 -1
- package/configure/lib/buttons/polygon.js +27 -34
- package/configure/lib/buttons/polygon.js.map +1 -1
- package/configure/lib/buttons/rectangle.js +27 -34
- package/configure/lib/buttons/rectangle.js.map +1 -1
- package/configure/lib/defaults.js +3 -4
- package/configure/lib/defaults.js.map +1 -1
- package/configure/lib/hotspot-circle.js +133 -199
- package/configure/lib/hotspot-circle.js.map +1 -1
- package/configure/lib/hotspot-container.js +251 -356
- package/configure/lib/hotspot-container.js.map +1 -1
- package/configure/lib/hotspot-drawable.js +361 -473
- package/configure/lib/hotspot-drawable.js.map +1 -1
- package/configure/lib/hotspot-palette.js +93 -140
- package/configure/lib/hotspot-palette.js.map +1 -1
- package/configure/lib/hotspot-polygon.js +213 -318
- package/configure/lib/hotspot-polygon.js.map +1 -1
- package/configure/lib/hotspot-rectangle.js +129 -193
- package/configure/lib/hotspot-rectangle.js.map +1 -1
- package/configure/lib/icons.js +1 -1
- package/configure/lib/icons.js.map +1 -1
- package/configure/lib/image-konva.js +47 -87
- package/configure/lib/image-konva.js.map +1 -1
- package/configure/lib/index.js +163 -223
- package/configure/lib/index.js.map +1 -1
- package/configure/lib/root.js +302 -394
- package/configure/lib/root.js.map +1 -1
- package/configure/lib/shapes/circle.js +70 -102
- package/configure/lib/shapes/circle.js.map +1 -1
- package/configure/lib/shapes/index.js +5 -13
- package/configure/lib/shapes/index.js.map +1 -1
- package/configure/lib/shapes/polygon.js +65 -97
- package/configure/lib/shapes/polygon.js.map +1 -1
- package/configure/lib/shapes/rectagle.js +70 -102
- package/configure/lib/shapes/rectagle.js.map +1 -1
- package/configure/lib/shapes/utils.js +3 -9
- package/configure/lib/shapes/utils.js.map +1 -1
- package/configure/lib/upload-control.js +26 -53
- package/configure/lib/upload-control.js.map +1 -1
- package/configure/lib/utils.js +85 -138
- package/configure/lib/utils.js.map +1 -1
- package/configure/package.json +11 -10
- package/configure/src/__tests__/index.test.js +11 -5
- package/configure/src/button.jsx +12 -20
- package/configure/src/hotspot-circle.jsx +5 -18
- package/configure/src/hotspot-container.jsx +82 -98
- package/configure/src/hotspot-drawable.jsx +43 -45
- package/configure/src/hotspot-palette.jsx +45 -37
- package/configure/src/hotspot-polygon.jsx +4 -20
- package/configure/src/hotspot-rectangle.jsx +4 -17
- package/configure/src/index.js +12 -2
- package/configure/src/root.jsx +85 -79
- package/configure/src/upload-control.jsx +6 -16
- package/controller/CHANGELOG.md +52 -0
- package/controller/lib/__tests__/index.test.js +586 -0
- package/controller/lib/__tests__/utils.test.js +8 -0
- package/controller/lib/defaults.js +3 -4
- package/controller/lib/defaults.js.map +1 -1
- package/controller/lib/index.js +152 -206
- package/controller/lib/index.js.map +1 -1
- package/controller/lib/utils.js +15 -35
- package/controller/lib/utils.js.map +1 -1
- package/controller/package.json +2 -2
- package/docs/demo/pie.manifest.json +11 -0
- package/lib/__tests__/container.test.js +221 -0
- package/lib/__tests__/index.test.js +113 -0
- package/lib/__tests__/polygon.test.js +245 -0
- package/lib/__tests__/rectangle.test.js +236 -0
- package/lib/__tests__/session-updater.test.js +69 -0
- package/lib/hotspot/circle.js +111 -170
- package/lib/hotspot/circle.js.map +1 -1
- package/lib/hotspot/container.js +175 -261
- package/lib/hotspot/container.js.map +1 -1
- package/lib/hotspot/icons.js +1 -1
- package/lib/hotspot/icons.js.map +1 -1
- package/lib/hotspot/image-konva-tooltip.js +66 -113
- package/lib/hotspot/image-konva-tooltip.js.map +1 -1
- package/lib/hotspot/index.js +136 -199
- package/lib/hotspot/index.js.map +1 -1
- package/lib/hotspot/polygon.js +151 -215
- package/lib/hotspot/polygon.js.map +1 -1
- package/lib/hotspot/rectangle.js +130 -186
- package/lib/hotspot/rectangle.js.map +1 -1
- package/lib/index.js +188 -257
- package/lib/index.js.map +1 -1
- package/lib/session-updater.js +13 -19
- package/lib/session-updater.js.map +1 -1
- package/package.json +14 -11
- package/src/hotspot/circle.jsx +2 -13
- package/src/hotspot/container.jsx +35 -50
- package/src/hotspot/index.jsx +16 -28
- package/src/hotspot/polygon.jsx +4 -13
- package/src/hotspot/rectangle.jsx +4 -13
- package/src/index.js +21 -12
- package/LICENSE.md +0 -5
- package/configure/node_modules/debug/CHANGELOG.md +0 -395
- package/configure/node_modules/debug/LICENSE +0 -19
- package/configure/node_modules/debug/README.md +0 -437
- package/configure/node_modules/debug/node.js +0 -1
- package/configure/node_modules/debug/package.json +0 -51
- package/configure/node_modules/debug/src/browser.js +0 -180
- package/configure/node_modules/debug/src/common.js +0 -249
- package/configure/node_modules/debug/src/index.js +0 -12
- package/configure/node_modules/debug/src/node.js +0 -177
package/controller/lib/utils.js
CHANGED
|
@@ -1,54 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.isResponseCorrect = exports.getCorrectResponse = void 0;
|
|
9
|
-
|
|
10
|
-
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
|
|
11
|
-
|
|
12
8
|
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
|
|
13
|
-
|
|
14
9
|
var _isEmpty = _interopRequireDefault(require("lodash/isEmpty"));
|
|
15
|
-
|
|
16
|
-
var getCorrectResponse = function getCorrectResponse(choices) {
|
|
17
|
-
return choices.filter(function (c) {
|
|
18
|
-
return c.correct;
|
|
19
|
-
}).map(function (c) {
|
|
20
|
-
return c.id;
|
|
21
|
-
}).sort();
|
|
22
|
-
};
|
|
23
|
-
|
|
10
|
+
const getCorrectResponse = choices => choices.filter(c => c.correct).map(c => c.id).sort();
|
|
24
11
|
exports.getCorrectResponse = getCorrectResponse;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
if (!session || (0, _isEmpty["default"])(session)) {
|
|
12
|
+
const isResponseCorrect = (question, session) => {
|
|
13
|
+
const {
|
|
14
|
+
shapes: {
|
|
15
|
+
rectangles = [],
|
|
16
|
+
polygons = [],
|
|
17
|
+
circles = []
|
|
18
|
+
}
|
|
19
|
+
} = question;
|
|
20
|
+
const choices = [...rectangles, ...polygons, ...circles];
|
|
21
|
+
let correctResponseIds = getCorrectResponse(choices);
|
|
22
|
+
if (!session || (0, _isEmpty.default)(session)) {
|
|
38
23
|
return false;
|
|
39
24
|
}
|
|
40
|
-
|
|
41
25
|
if (session.answers && session.answers.length) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
});
|
|
45
|
-
return (0, _isEqual["default"])(answerIds.sort(), correctResponseIds);
|
|
26
|
+
let answerIds = (session.answers || []).map(a => a.id);
|
|
27
|
+
return (0, _isEqual.default)(answerIds.sort(), correctResponseIds);
|
|
46
28
|
} else if (!(correctResponseIds && correctResponseIds.length)) {
|
|
47
29
|
return true;
|
|
48
30
|
}
|
|
49
|
-
|
|
50
31
|
return false;
|
|
51
32
|
};
|
|
52
|
-
|
|
53
33
|
exports.isResponseCorrect = isResponseCorrect;
|
|
54
|
-
//# sourceMappingURL=
|
|
34
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfaXNFcXVhbCIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiX2lzRW1wdHkiLCJnZXRDb3JyZWN0UmVzcG9uc2UiLCJjaG9pY2VzIiwiZmlsdGVyIiwiYyIsImNvcnJlY3QiLCJtYXAiLCJpZCIsInNvcnQiLCJleHBvcnRzIiwiaXNSZXNwb25zZUNvcnJlY3QiLCJxdWVzdGlvbiIsInNlc3Npb24iLCJzaGFwZXMiLCJyZWN0YW5nbGVzIiwicG9seWdvbnMiLCJjaXJjbGVzIiwiY29ycmVjdFJlc3BvbnNlSWRzIiwiaXNFbXB0eSIsImFuc3dlcnMiLCJsZW5ndGgiLCJhbnN3ZXJJZHMiLCJhIiwiaXNFcXVhbCJdLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gvaXNFcXVhbCc7XG5pbXBvcnQgaXNFbXB0eSBmcm9tICdsb2Rhc2gvaXNFbXB0eSc7XG5cbmV4cG9ydCBjb25zdCBnZXRDb3JyZWN0UmVzcG9uc2UgPSAoY2hvaWNlcykgPT5cbiAgY2hvaWNlc1xuICAgIC5maWx0ZXIoKGMpID0+IGMuY29ycmVjdClcbiAgICAubWFwKChjKSA9PiBjLmlkKVxuICAgIC5zb3J0KCk7XG5cbmV4cG9ydCBjb25zdCBpc1Jlc3BvbnNlQ29ycmVjdCA9IChxdWVzdGlvbiwgc2Vzc2lvbikgPT4ge1xuICBjb25zdCB7XG4gICAgc2hhcGVzOiB7IHJlY3RhbmdsZXMgPSBbXSwgcG9seWdvbnMgPSBbXSwgY2lyY2xlcyA9IFtdIH0sXG4gIH0gPSBxdWVzdGlvbjtcbiAgY29uc3QgY2hvaWNlcyA9IFsuLi5yZWN0YW5nbGVzLCAuLi5wb2x5Z29ucywgLi4uY2lyY2xlc107XG4gIGxldCBjb3JyZWN0UmVzcG9uc2VJZHMgPSBnZXRDb3JyZWN0UmVzcG9uc2UoY2hvaWNlcyk7XG5cbiAgaWYgKCFzZXNzaW9uIHx8IGlzRW1wdHkoc2Vzc2lvbikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoc2Vzc2lvbi5hbnN3ZXJzICYmIHNlc3Npb24uYW5zd2Vycy5sZW5ndGgpIHtcbiAgICBsZXQgYW5zd2VySWRzID0gKHNlc3Npb24uYW5zd2VycyB8fCBbXSkubWFwKChhKSA9PiBhLmlkKTtcblxuICAgIHJldHVybiBpc0VxdWFsKGFuc3dlcklkcy5zb3J0KCksIGNvcnJlY3RSZXNwb25zZUlkcyk7XG4gIH0gZWxzZSBpZiAoIShjb3JyZWN0UmVzcG9uc2VJZHMgJiYgY29ycmVjdFJlc3BvbnNlSWRzLmxlbmd0aCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFFTyxNQUFNRSxrQkFBa0IsR0FBSUMsT0FBTyxJQUN4Q0EsT0FBTyxDQUNKQyxNQUFNLENBQUVDLENBQUMsSUFBS0EsQ0FBQyxDQUFDQyxPQUFPLENBQUMsQ0FDeEJDLEdBQUcsQ0FBRUYsQ0FBQyxJQUFLQSxDQUFDLENBQUNHLEVBQUUsQ0FBQyxDQUNoQkMsSUFBSSxDQUFDLENBQUM7QUFBQ0MsT0FBQSxDQUFBUixrQkFBQSxHQUFBQSxrQkFBQTtBQUVMLE1BQU1TLGlCQUFpQixHQUFHQSxDQUFDQyxRQUFRLEVBQUVDLE9BQU8sS0FBSztFQUN0RCxNQUFNO0lBQ0pDLE1BQU0sRUFBRTtNQUFFQyxVQUFVLEdBQUcsRUFBRTtNQUFFQyxRQUFRLEdBQUcsRUFBRTtNQUFFQyxPQUFPLEdBQUc7SUFBRztFQUN6RCxDQUFDLEdBQUdMLFFBQVE7RUFDWixNQUFNVCxPQUFPLEdBQUcsQ0FBQyxHQUFHWSxVQUFVLEVBQUUsR0FBR0MsUUFBUSxFQUFFLEdBQUdDLE9BQU8sQ0FBQztFQUN4RCxJQUFJQyxrQkFBa0IsR0FBR2hCLGtCQUFrQixDQUFDQyxPQUFPLENBQUM7RUFFcEQsSUFBSSxDQUFDVSxPQUFPLElBQUksSUFBQU0sZ0JBQU8sRUFBQ04sT0FBTyxDQUFDLEVBQUU7SUFDaEMsT0FBTyxLQUFLO0VBQ2Q7RUFFQSxJQUFJQSxPQUFPLENBQUNPLE9BQU8sSUFBSVAsT0FBTyxDQUFDTyxPQUFPLENBQUNDLE1BQU0sRUFBRTtJQUM3QyxJQUFJQyxTQUFTLEdBQUcsQ0FBQ1QsT0FBTyxDQUFDTyxPQUFPLElBQUksRUFBRSxFQUFFYixHQUFHLENBQUVnQixDQUFDLElBQUtBLENBQUMsQ0FBQ2YsRUFBRSxDQUFDO0lBRXhELE9BQU8sSUFBQWdCLGdCQUFPLEVBQUNGLFNBQVMsQ0FBQ2IsSUFBSSxDQUFDLENBQUMsRUFBRVMsa0JBQWtCLENBQUM7RUFDdEQsQ0FBQyxNQUFNLElBQUksRUFBRUEsa0JBQWtCLElBQUlBLGtCQUFrQixDQUFDRyxNQUFNLENBQUMsRUFBRTtJQUM3RCxPQUFPLElBQUk7RUFDYjtFQUVBLE9BQU8sS0FBSztBQUNkLENBQUM7QUFBQ1gsT0FBQSxDQUFBQyxpQkFBQSxHQUFBQSxpQkFBQSIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"file":"utils.js","names":["_isEqual","_interopRequireDefault","require","_isEmpty","getCorrectResponse","choices","filter","c","correct","map","id","sort","exports","isResponseCorrect","question","session","shapes","rectangles","polygons","circles","correctResponseIds","isEmpty","answers","length","answerIds","a","isEqual"],"sources":["../src/utils.js"],"sourcesContent":["import isEqual from 'lodash/isEqual';\nimport isEmpty from 'lodash/isEmpty';\n\nexport const getCorrectResponse = (choices) =>\n choices\n .filter((c) => c.correct)\n .map((c) => c.id)\n .sort();\n\nexport const isResponseCorrect = (question, session) => {\n const {\n shapes: { rectangles = [], polygons = [], circles = [] },\n } = question;\n const choices = [...rectangles, ...polygons, ...circles];\n let correctResponseIds = getCorrectResponse(choices);\n\n if (!session || isEmpty(session)) {\n return false;\n }\n\n if (session.answers && session.answers.length) {\n let answerIds = (session.answers || []).map((a) => a.id);\n\n return isEqual(answerIds.sort(), correctResponseIds);\n } else if (!(correctResponseIds && correctResponseIds.length)) {\n return true;\n }\n\n return false;\n};\n"],"mappings":";;;;;;;AAAA,IAAAA,QAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,QAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEO,MAAME,kBAAkB,GAAIC,OAAO,IACxCA,OAAO,CACJC,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACC,OAAO,CAAC,CACxBC,GAAG,CAAEF,CAAC,IAAKA,CAAC,CAACG,EAAE,CAAC,CAChBC,IAAI,CAAC,CAAC;AAACC,OAAA,CAAAR,kBAAA,GAAAA,kBAAA;AAEL,MAAMS,iBAAiB,GAAGA,CAACC,QAAQ,EAAEC,OAAO,KAAK;EACtD,MAAM;IACJC,MAAM,EAAE;MAAEC,UAAU,GAAG,EAAE;MAAEC,QAAQ,GAAG,EAAE;MAAEC,OAAO,GAAG;IAAG;EACzD,CAAC,GAAGL,QAAQ;EACZ,MAAMT,OAAO,GAAG,CAAC,GAAGY,UAAU,EAAE,GAAGC,QAAQ,EAAE,GAAGC,OAAO,CAAC;EACxD,IAAIC,kBAAkB,GAAGhB,kBAAkB,CAACC,OAAO,CAAC;EAEpD,IAAI,CAACU,OAAO,IAAI,IAAAM,gBAAO,EAACN,OAAO,CAAC,EAAE;IAChC,OAAO,KAAK;EACd;EAEA,IAAIA,OAAO,CAACO,OAAO,IAAIP,OAAO,CAACO,OAAO,CAACC,MAAM,EAAE;IAC7C,IAAIC,SAAS,GAAG,CAACT,OAAO,CAACO,OAAO,IAAI,EAAE,EAAEb,GAAG,CAAEgB,CAAC,IAAKA,CAAC,CAACf,EAAE,CAAC;IAExD,OAAO,IAAAgB,gBAAO,EAACF,SAAS,CAACb,IAAI,CAAC,CAAC,EAAES,kBAAkB,CAAC;EACtD,CAAC,MAAM,IAAI,EAAEA,kBAAkB,IAAIA,kBAAkB,CAACG,MAAM,CAAC,EAAE;IAC7D,OAAO,IAAI;EACb;EAEA,OAAO,KAAK;AACd,CAAC;AAACX,OAAA,CAAAC,iBAAA,GAAAA,iBAAA","ignoreList":[]}
|
package/controller/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pie-element/hotspot-controller",
|
|
3
3
|
"private": true,
|
|
4
|
-
"version": "6.
|
|
4
|
+
"version": "6.2.0",
|
|
5
5
|
"description": "",
|
|
6
6
|
"scripts": {
|
|
7
7
|
"test": "echo \"Error: no test specified\" && exit 1"
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"main": "lib/index.js",
|
|
12
12
|
"module": "src/index.js",
|
|
13
13
|
"dependencies": {
|
|
14
|
-
"@pie-lib/controller-utils": "
|
|
14
|
+
"@pie-lib/controller-utils": "0.34.0-mui-update.0",
|
|
15
15
|
"debug": "^4.1.1",
|
|
16
16
|
"lodash": "^4.17.15"
|
|
17
17
|
}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
5
|
+
var _react = _interopRequireDefault(require("react"));
|
|
6
|
+
var _enzyme = require("enzyme");
|
|
7
|
+
var _enzymeToJson = _interopRequireDefault(require("enzyme-to-json"));
|
|
8
|
+
var _konva = _interopRequireDefault(require("konva"));
|
|
9
|
+
var _testUtils = require("@pie-lib/test-utils");
|
|
10
|
+
var _correctAnswerToggle = _interopRequireDefault(require("@pie-lib/correct-answer-toggle"));
|
|
11
|
+
var _container = _interopRequireWildcard(require("../hotspot/container"));
|
|
12
|
+
var _index = _interopRequireDefault(require("../hotspot/index"));
|
|
13
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14
|
+
global.MutationObserver = class {
|
|
15
|
+
constructor(callback) {}
|
|
16
|
+
disconnect() {}
|
|
17
|
+
observe(element, initObject) {}
|
|
18
|
+
};
|
|
19
|
+
_konva.default.isBrowser = false;
|
|
20
|
+
describe('HotspotComponent', () => {
|
|
21
|
+
describe('renders', () => {
|
|
22
|
+
let wrapper;
|
|
23
|
+
beforeEach(() => {
|
|
24
|
+
wrapper = props => (0, _enzyme.shallow)(/*#__PURE__*/_react.default.createElement(_index.default, props));
|
|
25
|
+
});
|
|
26
|
+
it('snapshot', () => {
|
|
27
|
+
let w = wrapper();
|
|
28
|
+
expect(w).toMatchSnapshot();
|
|
29
|
+
});
|
|
30
|
+
it('snapshot with rationale', () => {
|
|
31
|
+
let w = wrapper({
|
|
32
|
+
rationale: 'This is rationale'
|
|
33
|
+
});
|
|
34
|
+
expect(w).toMatchSnapshot();
|
|
35
|
+
});
|
|
36
|
+
it('snapshot with padding having a size accordingly to strokeWidth', () => {
|
|
37
|
+
let w = (0, _enzyme.shallow)(/*#__PURE__*/_react.default.createElement(_container.Container, {
|
|
38
|
+
strokeWidth: 50,
|
|
39
|
+
classes: {},
|
|
40
|
+
dimensions: {
|
|
41
|
+
width: 100,
|
|
42
|
+
height: 100
|
|
43
|
+
},
|
|
44
|
+
onSelectChoice: jest.fn(),
|
|
45
|
+
disabled: false,
|
|
46
|
+
hotspotColor: "#000",
|
|
47
|
+
outlineColor: "#FAFAFA",
|
|
48
|
+
imageUrl: "data:image/jpeg;base64,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",
|
|
49
|
+
isEvaluateMode: false,
|
|
50
|
+
session: {
|
|
51
|
+
answers: [{
|
|
52
|
+
id: '1'
|
|
53
|
+
}, {
|
|
54
|
+
id: '2'
|
|
55
|
+
}]
|
|
56
|
+
},
|
|
57
|
+
shapes: {
|
|
58
|
+
rectangles: [{
|
|
59
|
+
id: '1',
|
|
60
|
+
correct: true,
|
|
61
|
+
x: 0,
|
|
62
|
+
y: 0,
|
|
63
|
+
width: 80,
|
|
64
|
+
height: 80
|
|
65
|
+
}],
|
|
66
|
+
polygons: []
|
|
67
|
+
}
|
|
68
|
+
}));
|
|
69
|
+
expect(w).toMatchSnapshot();
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
describe('CorrectAnswerToggle', () => {
|
|
74
|
+
let testWrapper, component, toggle;
|
|
75
|
+
const model = {
|
|
76
|
+
mode: 'evaluate',
|
|
77
|
+
responseCorrect: false
|
|
78
|
+
};
|
|
79
|
+
const testWrapperFn = props => (0, _testUtils.shallowChild)(_index.default, {
|
|
80
|
+
model: {
|
|
81
|
+
...model,
|
|
82
|
+
...props
|
|
83
|
+
}
|
|
84
|
+
}, 1);
|
|
85
|
+
beforeEach(() => {
|
|
86
|
+
testWrapper = testWrapperFn({});
|
|
87
|
+
component = testWrapper();
|
|
88
|
+
toggle = component.find(_correctAnswerToggle.default);
|
|
89
|
+
});
|
|
90
|
+
it('renders when the mode is evaluate and the response is incorrect', () => {
|
|
91
|
+
expect(toggle.length).toEqual(1);
|
|
92
|
+
expect(toggle.prop('show')).toEqual(true);
|
|
93
|
+
});
|
|
94
|
+
it('does not render outside of evaluate mode', () => {
|
|
95
|
+
const tw = testWrapperFn({
|
|
96
|
+
mode: 'gather'
|
|
97
|
+
});
|
|
98
|
+
const c = tw();
|
|
99
|
+
const t = c.find(_correctAnswerToggle.default);
|
|
100
|
+
expect(t.length).toEqual(0);
|
|
101
|
+
});
|
|
102
|
+
it('does not render if the response is correct', () => {
|
|
103
|
+
const tw = testWrapperFn({
|
|
104
|
+
responseCorrect: true
|
|
105
|
+
});
|
|
106
|
+
const c = tw();
|
|
107
|
+
const t = c.find(_correctAnswerToggle.default);
|
|
108
|
+
expect(t.length).toEqual(0);
|
|
109
|
+
});
|
|
110
|
+
it('toggles the state', () => {
|
|
111
|
+
component.setState({
|
|
112
|
+
showCorrect: false
|
|
113
|
+
});
|
|
114
|
+
expect(component.state('showCorrect')).toEqual(false);
|
|
115
|
+
expect(toggle.prop('toggled')).toEqual(false);
|
|
116
|
+
component.instance().onToggle();
|
|
117
|
+
expect(component.state('showCorrect')).toEqual(true);
|
|
118
|
+
expect(component.find(_correctAnswerToggle.default).prop('toggled')).toEqual(true);
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
describe('Container', () => {
|
|
122
|
+
let onSelectChoice, wrapper;
|
|
123
|
+
const mkWrapper = (opts = {}) => {
|
|
124
|
+
opts = {
|
|
125
|
+
classes: {
|
|
126
|
+
base: 'base'
|
|
127
|
+
},
|
|
128
|
+
dimensions: {
|
|
129
|
+
height: 0,
|
|
130
|
+
width: 0
|
|
131
|
+
},
|
|
132
|
+
disabled: false,
|
|
133
|
+
hotspotColor: 'rgba(137, 183, 244, 0.65)',
|
|
134
|
+
imageUrl: '',
|
|
135
|
+
isEvaluateMode: false,
|
|
136
|
+
outlineColor: 'blue',
|
|
137
|
+
session: {
|
|
138
|
+
answers: []
|
|
139
|
+
},
|
|
140
|
+
shapes: {
|
|
141
|
+
rectangles: [],
|
|
142
|
+
polygons: []
|
|
143
|
+
},
|
|
144
|
+
...opts
|
|
145
|
+
};
|
|
146
|
+
return (0, _enzyme.shallow)(/*#__PURE__*/_react.default.createElement(_container.default, (0, _extends2.default)({}, opts, {
|
|
147
|
+
onSelectChoice: onSelectChoice
|
|
148
|
+
})));
|
|
149
|
+
};
|
|
150
|
+
beforeEach(() => {
|
|
151
|
+
onSelectChoice = jest.fn();
|
|
152
|
+
wrapper = mkWrapper();
|
|
153
|
+
});
|
|
154
|
+
describe('snapshots', () => {
|
|
155
|
+
describe('outline color', () => {
|
|
156
|
+
it('renders', () => {
|
|
157
|
+
const wrapper = mkWrapper({
|
|
158
|
+
outlineColor: 'red'
|
|
159
|
+
});
|
|
160
|
+
expect((0, _enzymeToJson.default)(wrapper)).toMatchSnapshot();
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
describe('hotspot color', () => {
|
|
164
|
+
it('renders', () => {
|
|
165
|
+
const wrapper = mkWrapper({
|
|
166
|
+
hotspotColor: 'rgba(217, 30, 24, 0.65)'
|
|
167
|
+
});
|
|
168
|
+
expect((0, _enzymeToJson.default)(wrapper)).toMatchSnapshot();
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
describe('image', () => {
|
|
172
|
+
it('renders', () => {
|
|
173
|
+
const wrapper = mkWrapper({
|
|
174
|
+
imageUrl: 'https://picsum.photos/id/102/200/300'
|
|
175
|
+
});
|
|
176
|
+
expect((0, _enzymeToJson.default)(wrapper)).toMatchSnapshot();
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
describe('shapes', () => {
|
|
180
|
+
it('renders', () => {
|
|
181
|
+
const wrapper = mkWrapper({
|
|
182
|
+
shapes: {
|
|
183
|
+
rectangles: [{
|
|
184
|
+
id: '1',
|
|
185
|
+
x: 5,
|
|
186
|
+
y: 5,
|
|
187
|
+
width: 5,
|
|
188
|
+
height: 5
|
|
189
|
+
}, {
|
|
190
|
+
id: '2',
|
|
191
|
+
x: 25,
|
|
192
|
+
y: 25,
|
|
193
|
+
width: 5,
|
|
194
|
+
height: 5
|
|
195
|
+
}],
|
|
196
|
+
polygons: [{
|
|
197
|
+
id: '3',
|
|
198
|
+
points: [{
|
|
199
|
+
x: 94,
|
|
200
|
+
y: 4
|
|
201
|
+
}, {
|
|
202
|
+
x: 89,
|
|
203
|
+
y: 4
|
|
204
|
+
}, {
|
|
205
|
+
x: 36,
|
|
206
|
+
y: 40
|
|
207
|
+
}]
|
|
208
|
+
}]
|
|
209
|
+
},
|
|
210
|
+
imageUrl: 'https://picsum.photos/id/102/200/300',
|
|
211
|
+
dimensions: {
|
|
212
|
+
width: 200,
|
|
213
|
+
height: 300
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
expect((0, _enzymeToJson.default)(wrapper)).toMatchSnapshot();
|
|
217
|
+
});
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9lbnp5bWUiLCJfZW56eW1lVG9Kc29uIiwiX2tvbnZhIiwiX3Rlc3RVdGlscyIsIl9jb3JyZWN0QW5zd2VyVG9nZ2xlIiwiX2NvbnRhaW5lciIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwiX2luZGV4IiwiZSIsInQiLCJXZWFrTWFwIiwiciIsIm4iLCJfX2VzTW9kdWxlIiwibyIsImkiLCJmIiwiX19wcm90b19fIiwiZGVmYXVsdCIsImhhcyIsImdldCIsInNldCIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZ2xvYmFsIiwiTXV0YXRpb25PYnNlcnZlciIsImNvbnN0cnVjdG9yIiwiY2FsbGJhY2siLCJkaXNjb25uZWN0Iiwib2JzZXJ2ZSIsImVsZW1lbnQiLCJpbml0T2JqZWN0IiwiS29udmEiLCJpc0Jyb3dzZXIiLCJkZXNjcmliZSIsIndyYXBwZXIiLCJiZWZvcmVFYWNoIiwicHJvcHMiLCJzaGFsbG93IiwiY3JlYXRlRWxlbWVudCIsIml0IiwidyIsImV4cGVjdCIsInRvTWF0Y2hTbmFwc2hvdCIsInJhdGlvbmFsZSIsIkNvbnRhaW5lciIsInN0cm9rZVdpZHRoIiwiY2xhc3NlcyIsImRpbWVuc2lvbnMiLCJ3aWR0aCIsImhlaWdodCIsIm9uU2VsZWN0Q2hvaWNlIiwiamVzdCIsImZuIiwiZGlzYWJsZWQiLCJob3RzcG90Q29sb3IiLCJvdXRsaW5lQ29sb3IiLCJpbWFnZVVybCIsImlzRXZhbHVhdGVNb2RlIiwic2Vzc2lvbiIsImFuc3dlcnMiLCJpZCIsInNoYXBlcyIsInJlY3RhbmdsZXMiLCJjb3JyZWN0IiwieCIsInkiLCJwb2x5Z29ucyIsInRlc3RXcmFwcGVyIiwiY29tcG9uZW50IiwidG9nZ2xlIiwibW9kZWwiLCJtb2RlIiwicmVzcG9uc2VDb3JyZWN0IiwidGVzdFdyYXBwZXJGbiIsInNoYWxsb3dDaGlsZCIsIkhvdHNwb3RDb21wb25lbnQiLCJmaW5kIiwiQ29ycmVjdEFuc3dlclRvZ2dsZSIsImxlbmd0aCIsInRvRXF1YWwiLCJwcm9wIiwidHciLCJjIiwic2V0U3RhdGUiLCJzaG93Q29ycmVjdCIsInN0YXRlIiwiaW5zdGFuY2UiLCJvblRvZ2dsZSIsIm1rV3JhcHBlciIsIm9wdHMiLCJiYXNlIiwiX2V4dGVuZHMyIiwidG9Kc29uIiwicG9pbnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL19fdGVzdHNfXy9jb250YWluZXIudGVzdC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHNoYWxsb3cgfSBmcm9tICdlbnp5bWUnO1xuaW1wb3J0IHRvSnNvbiBmcm9tICdlbnp5bWUtdG8tanNvbic7XG5pbXBvcnQgS29udmEgZnJvbSAna29udmEnO1xuXG5pbXBvcnQgeyBzaGFsbG93Q2hpbGQgfSBmcm9tICdAcGllLWxpYi90ZXN0LXV0aWxzJztcbmltcG9ydCBDb3JyZWN0QW5zd2VyVG9nZ2xlIGZyb20gJ0BwaWUtbGliL2NvcnJlY3QtYW5zd2VyLXRvZ2dsZSc7XG5cbmltcG9ydCBDb250YWluZXIsIHsgQ29udGFpbmVyIGFzIENvbnRhaW5lckNvbXAgfSBmcm9tICcuLi9ob3RzcG90L2NvbnRhaW5lcic7XG5pbXBvcnQgSG90c3BvdENvbXBvbmVudCBmcm9tICcuLi9ob3RzcG90L2luZGV4JztcblxuZ2xvYmFsLk11dGF0aW9uT2JzZXJ2ZXIgPSBjbGFzcyB7XG4gIGNvbnN0cnVjdG9yKGNhbGxiYWNrKSB7fVxuICBkaXNjb25uZWN0KCkge31cbiAgb2JzZXJ2ZShlbGVtZW50LCBpbml0T2JqZWN0KSB7fVxufTtcblxuS29udmEuaXNCcm93c2VyID0gZmFsc2U7XG5cbmRlc2NyaWJlKCdIb3RzcG90Q29tcG9uZW50JywgKCkgPT4ge1xuICBkZXNjcmliZSgncmVuZGVycycsICgpID0+IHtcbiAgICBsZXQgd3JhcHBlcjtcblxuICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgd3JhcHBlciA9IChwcm9wcykgPT4gc2hhbGxvdyg8SG90c3BvdENvbXBvbmVudCB7Li4ucHJvcHN9IC8+KTtcbiAgICB9KTtcblxuICAgIGl0KCdzbmFwc2hvdCcsICgpID0+IHtcbiAgICAgIGxldCB3ID0gd3JhcHBlcigpO1xuXG4gICAgICBleHBlY3QodykudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc25hcHNob3Qgd2l0aCByYXRpb25hbGUnLCAoKSA9PiB7XG4gICAgICBsZXQgdyA9IHdyYXBwZXIoeyByYXRpb25hbGU6ICdUaGlzIGlzIHJhdGlvbmFsZScgfSk7XG5cbiAgICAgIGV4cGVjdCh3KS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzbmFwc2hvdCB3aXRoIHBhZGRpbmcgaGF2aW5nIGEgc2l6ZSBhY2NvcmRpbmdseSB0byBzdHJva2VXaWR0aCcsICgpID0+IHtcbiAgICAgIGxldCB3ID0gc2hhbGxvdyhcbiAgICAgICAgPENvbnRhaW5lckNvbXBcbiAgICAgICAgICBzdHJva2VXaWR0aD17NTB9XG4gICAgICAgICAgY2xhc3Nlcz17e319XG4gICAgICAgICAgZGltZW5zaW9ucz17eyB3aWR0aDogMTAwLCBoZWlnaHQ6IDEwMCB9fVxuICAgICAgICAgIG9uU2VsZWN0Q2hvaWNlPXtqZXN0LmZuKCl9XG4gICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgIGhvdHNwb3RDb2xvcj1cIiMwMDBcIlxuICAgICAgICAgIG91dGxpbmVDb2xvcj1cIiNGQUZBRkFcIlxuICAgICAgICAgIGltYWdlVXJsPVwiZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFBQUFRQUJBQUQvMndDRUFBa0dCdzhQRUE4UER3OFBEeEFQRGc4UER3MFBEdzhQRHc4UUZSRVdGaFVSRlJVWUhTZ2dHQm9tSFJVVklURWhKU2tyTGk0dUZ4OHpPRE1zTnlndEx5c0JDZ29LRGcwT0Z4QVFGeTBkSFIwdExTc3RMUzB0S3kwdExTMHRMU3N0TFMwdEt5MHRMUzB0TFNzdEt5MHRMUzB0TFMwdExTMHRMUzB0TFMwdExTMHRLLy9BQUJFSUFLZ0JMQU1CRVFBQ0VRRURFUUgveEFBYkFBQUNBd0VCQVFBQUFBQUFBQUFBQUFBQkFnQURCQVVHQi8vRUFEb1FBQUlDQVFNQ0JBUUVCUU1EQlFFQUFBRUNBQU1SQkJJaE1VRUZFMUZoSWpKeGdRWVVRcEVqVXFHeDBXSnl3VVBoOEJVa00xUHhCLy9FQUJvQkFRRUFBd0VCQUFBQUFBQUFBQUFBQUFBQkFnTUVCUWIveEFBeEVRRUFBZ0lCQXdJRUJBWURBUUVBQUFBQUFRSURFUVFTSVRGQlVRVVRNbUVpY1lHUlFxR3gwZUh3RkRQQjhTUC8yZ0FNQXdFQUFoRURFUUEvQUxzenc1YzQ1a0V6Q0ptVVRNeUJ6TWhNeWdFd0ZKbFFNd0ZKaENrd0JJQVRJQVRBWE1DWmtBSmxDNWtUWVFnWmhBTW9XQkpRUVlWQ1lDRXlnWmhRekNnV2xDbHBWTHVrUUNZVXVaQ0FKaFNscE5BRXdGM1JvZWt6TlNwbUVTQkpsQU9aWUVFb09aUXBNb1VtRUxLSkloVEFFZ2tnV0FESUZ6QUVJRUlCTUlFQVNvRUNTcUVva0JZVUNZVWhNQkNaVktUS0lEQWhNaWhtQXBNZ1FtVUxtTkNRUFNabWxrR1lRY3k2QnpNZ0pRY3dJVEtnWmdLWUVsUUpRRE1RcGtFa0NreUFVQnJYYXVwSHVzUmQ3MTFEZXlMNnQ2WjdBOG50TjFPUGU4YjhNb3BNc2VsMTlkdWRqY3FjTXBCVmdmVEIraG1OOE42ZVlTYXpEUk5iQkNZUUlFZ1NWQU1BWWxFTUtVeWhTWUNtRklUS0syaFNreWdib1VRWVVDWkFwTW9XQUpRWkI2S2FXU1M2QmxFbEVsQnpDQm1FQXdKS0JLZ0V3RkptTWdaa0ZUM3FNakpKVmR6QlZkOWkvd0F6N1FkZzl6aWJLNGIyamNReWlrNjJ6NnpYTFhVYmdRd0FHM0JCRE1lRkdmVFAvTVlzVTJ2MHorcFd1NTFMeWxPc1lGTDdVZEtOejEyMjZWL0l1dmNnTVVaaGtaNUI1WEdPSjZycFZVZUpLRXJyRkZlMUxUWTdockZ1dEhaR2RUd0FPbUFPZVlUVHVlRmVOcTdlVTV3U1Q1VE1RU3d6d3BQR1d4M3dNK2duQm40K3Z4VjhOR1RIcnZEczVuSTBvSURTSWdsRXhBVXloVEtFSmhTa3lnR0ZJWUZaaFNtVUtZVU13b0V3Qm1BTXlvR1pWVGRBOUpOREpKUVpSSlJNd0pDSktpRXdnU2hTWUNrd0ZKa0ZkMW9SV1k5RlVzZm9CbVdsZXEwUXNSdWRQTmVHZU1XSmNQS3RHamE3ekJmcVJ1ZFhVblB4cHlQaDZaVURyUFUwNldmZnB4cDlwdUJjMDN2c2F1M2F0NGVzSUt5RGdrcnZPU01ldnRZZ3JEcTZEOEVhanhMVVhpcGFOSXRhVlBnTzFpQmJFM0lGSXlUa2NrLy9BSktwRS84QTV2NG1MenAyRklKVW11NDJmd3JTUDBxY1ozZXhBNlJzMjVldS9BbmlTYW44cUtHTm0xcksyVmxDTXFrWlpISkE0SkhIWGtRTzE0THFMaldxNmxIUzBCc015RlJhRmJhV0dlcEI0T084ODdrWWVpZHg0YzJTblQzaDBnWnpOUmhBSWtRWlFqU2hHaFNHVUxLb0dBaGhTTVlDR0ZLeGxDWmdTVlFnTEtpRXlxWGRBOVBORElaUkpSSUVsUk13Z0V5Z1poQUpnTG1FQW1BcE1ETHJrVjFWSHh0c3RxUTVzRlErSndQbklJSDNFMjhmNjJ6SDlUeTF0THVxVTZkYjNOaUs5dE8zZUh1UXVDeUJlcWpuQitzNzI5cjhHb3NHbDE3L0FKYXF3S2RLaE54SXVxYzNIQzFMdCtJc1Jnakk2ZDVsQ3crcWZnOFVhdGJkWHA5T2ZEcjY3VzA5bGRSQTZCV0lzcnh0WTVZOVZ5SkpTWjA1Yi9qN1N2cUxOTnFDTmdjcU5WczIwbGxiR0dYY1NuSTRicDM0bDBydCtKK09hZlNyV05UcUUyc3hOTmhKZTVDRnoxR2R3d2NaUHJnNXptU0NPN3htdi9Hdmh1cGJWMVdLMjFhL00wZXJSRzNMcStqNFhnaEd3bVFldUg5UkZxeGFOU2xxN2hrMGVvRnFLNDZNTTQ5RDNIN3p5YjBtbHBpWEhhTlRwb0V3WW1FQ1FGSWdLUktwQ0lDN1kyb0ZaZHJwV3l3SzJFcXF6S0VNS0Vva29CZ0taVVZzWUNaZ2Vyek5UTVlFbEVoRUpoQzVsRXpDRkpoQ2t3RnpLZ0V3RkpnVlhWVnVhMXRyc3RyTjFRZXVvWnNaUzRCQ2pQWG1iY0gxdG1QNm5XL0F0Vlg4RnRMY1d2MDM1bGJ0RGVNYmFtdHdkcmJjcXh3aHdjak9lbVRPNlhSTHpuNDV1b1RXMmFscnRSNXRsbHJDaFZWVHA3YVFnMCs3Y2RwWE80bkdjZHVzeWhsRHpGK3QxaVBZejJhaXR0UVZ1dEFaNnZOenlIS2pBSTU0K3N1bDFMQTJjNTllcDZaRWFrNlo5Ui9MbE92b01IMjlQdE03VW12bG5mRmFzYnREcitIZUk2SmRMcWRPK21SdFRmdEZHdEo1b2JjT2VlZ3dEMDU1STZUVzFQUWFUVmFJR3F2VGtvOXFGck5QdTNwWGFnMnNFSjVHU2pIbnFDcEhlY3ZLeDdqcTltckxUY2JkRVR6M01ZUURBbUlDa1FwZHNiRTJSdFNzc0txWVNpcGhMQXFjU3FySWxBSWdLWlF1WmtBWUNOQVhFSTlUbWEyYVpoRXpLSm1SQUpoQ2t5Z1poQUpsUXBNYVVNeW9CTUJDWkJWWWw3bEJwbVZiUTRzVm14Z2VVRGIzL3dCazNjZjYyekY5VG1hRDhUUG9iNmJhMG90c0ZkdjVpd1BsZFNMMkZ2eFlBMnVoT08vVEU3WFJNT0o0OXJ0VmU2RFVFdnpkWlNQaEoyMjJzNU9WNTY1NFBURTJSRXoyaUcydFptZFZqYmRaNHY4QW1HVnRZekd4VVZGWjFDamFNNEhBQTduclBSd3ppcnFMUjB6OTN2OEFEdnhhUkZjdGVpZnZEYSttcWRlaWtZNDRIOURPMmFWdEd0YmUzYkJoeTExcUpoeWZFUER5aWtvZHlqa29lbytrNDgzSG1LL2g4UjZQRjV2dythVTNTZDFqdnIreXJWK0ZLNkxaVndjQTQ3RVlqSnhLMnJFMFk1L2hkTW1PTDRuT3FxYW14V0h3dXBES2ZjSDNubTN4ekc0czhISml0U2VtMFBvbWx1RmlLNDZNQWZwNmllTmV2VGFZZWZhTlRwZE1XSWlSVFFEaVRhNkRFaWhpQlc4cXFXRXlGVExBUmxsTkt5c29VaUJVMHlDbVVLWlFwTUFRUFRabXRkaG1WRWdUTUlCTUJTWVFDWlVBbVhRVW1VRE1JQk1CRElySDRscVJVb2MwcmV1L0RWTm5hd0t0ejlqZy9hYnVQSDRtM0ZIZDU3d3Q2RFZiUzlhbTJ4cXpYcUMrRFdGNnFCamtINi8ybnBZYVJlZFRMMCtKaHBtdjAydHBjdHVscXRWQ2pWMmJiQmM3dGxIWXZsSFgwRzNnL1FlODZlUGF1UEpOYjlub2ZEOG1QamNtMU0zYjAzL3Z1NlQ2WldIWmdleDVFOUtheGFQZDlMYkRUSlgwbUovVmxPZzJuTmJOVzNwMVUrMkpxK1RGZTlKMS9Sd3p3SXh6dkRNMG4rWDdBZFl5Y1hKeC93RFl2Sy9jZHBsOHkxZnJqOVZqa1pNZmJOWHQ3eDRVZUhhaFE3VTVCWDVxem45SjZqN1RIRmFJdE5QMmF1SmxyVzlzTVR1UE5meTl2MER4blNoMDNBZkd1U1BmMUVjakZGNi9kajhRNDBaY2U5ZDRhL3dYci9NcnNyT2MxTUNNL3dBckQvSVA3ejVmbDExTVMrTnp4MzI5S0p5TkJwQTRrVVpGQW1SUzRsQ3NJMnFzcktLMkVvcUlsRmJDVUkwQ3BoTEFyTXlRalN3RWxFZ2Vsek1CTXdCbUVBbUVETXVnQ1pkSVVtVUFtVkF6Q2xKZ0RNZ0JNZ28xZ3loeXpvQVZKZXJQbUtvSTNGZmZidTRtM0RPcncyWTUxWng5SG82SFRDRmJBR1lic1lMWVBEZW95TUg3ejZERFRIZWtkbjJIQzQvSHo4ZU5SRXo2Kyt5YTN3Wm5RRGF6cUNkbVFTNm5qSVIvMjRtdkxTa2RwdC9mOTNKek1PS240SnliMTZUNWo4cC84bHo2TkRyYXNtbExyRVg1OXRidDVmZjR3QVF2MW1tdVMyUDZiT0RIeU12SG5lTEoyOXY4Tk9sOGRCK0d3RC9jSjI0dVpFOXJ2WjQzeG1MZmh6UnI3dzZPNVhHUVF3TTY5eFBlSHJSYWw0M0U3aHkvRWZEOXY4V3JoMU9kbzdqdnhPWExqMVBYVHpEeXVYeGVpZm5ZdTB4M2FkSnFSZldHSFhvdzlET25Ga2pKWGNPdkJucnlNZlZINnNmZ0o4alg3T2kzbzZqNmo0ditQNnp3dmlXTFcvM2ZMZkU4UHk3ejkrNzJ4YkF6NlR4ZFBKaEtTMjBiOGJzWmJIeWp2ajZEMWlkYjdNdEhwdERqY3VjSE9DUVJuM0dlM3ZNYlJxZEdsaGtFQWtWRENrYUJXVExBcmFaQ3N3cXRwUlMwcUVNQ3BqTW9GVFN3RmxFZ2Vqek1FVE1xQm1BTjBxRkxTb0daUkNaUXVZQUpsQzVnVE1nR1pCSkYwd3BWVG9kVjV1N1JONXVsTjZvNHQxRlFjOHJXNlZzTnJuSHVPZnZQVHg5Vlk4dTdITnFSMm1ZY3VyeFM1Z3RpbS96YXJ6ZFVBMmRQVnp1K0NvZzRPNzN4N1RiWEhhM2lHN0hneVpJbWExMnhpZzNPV3RjN2kyNDd6eVd6blBQdk5tUEhFenFaMDM0T05HUzNUYTNUK2FhM3c0Z0RPQ28vVW9ISHVSTGt3VFR2Nk0rVHdMNE8vbXZ2REp0MUdteFlCdXE3dVBpVWY3aDFIM2xwZStQdjZKaXk1c0g0bytuL0FIOW5TMC9pcVBqZDhKN0hzVDdHZHRNOWJlWHM0ZWRXOGF2MlpiUC9BR3RubkxscWJPTFZITzMvQUZUQ2YveHYxeDlNK1dpOGY4VEw4NnZlbHZNZit0V3VVTGZwTFZ3ZjQ5WXo2cXgvN1RYOFJwRTA2bUh4ckZXY2NaSS8zY1BYOS9wei9pZkx2azRNRnoxL2J0OTVQSGhWb21JTWlwSW9FeG9Wc1pkS1F5aERLS25sUldaVlZ0QXFhRVV2TW9GWmdRQ1VHQjM4ekZBSmxRTXdGSm1URU13Qm1VQW1VQW1BTXlpWmtVQ1lBekFWZk1kelZwckVkck5KWTlndXEySlJqSmI0bkhPVUhERHV3N1R0eDQ0ckgzZFZLUkVQUDJhUWFobVpYUUJsUm5DVStTdGRoR1dxVmZRZE1qZ3p0dzRKeWI3NmVyd3ZoOStWdVluVVEyYWZUMlZEQzdHQTlWSUovYWR0S1h4eHFOUzkvQnh1VHhxOU5Kck1mZUpqKzZNeGJpeWpQdXBCL3ZpV2JUUDFVMnQ3NUw5czNIaTM1VEUvMTBBMDZkQjVpWjdmOXBqOHV2cEV3MDI0ZUdZN1Z0WGZwSC8yWVZKVGFtU3BIT2ZoOVI3OXBxcmh2SGVKY2RQaC9JckhWV1kvSnpOWG8xenVDTlEzZmF1K2x2cXZiN1RDY2RxOTlhL281NzhmSmo3eldhL2xHNG44NFUxOUN1NEx4eUIvRXBJNmRPcXkxdjZlUDV4L2hjV1QrSGV2dDVyKzNtRitucmJZaTRPSzdxblU1M3FvRGdrYmgxR04zdnhNTTFvK1ZPUDltdms1S3hnbkJQbVBIci9QMmV4ME9zcHY4MDFQdmFwbHlBUGhaRzREcVQyei9lZUxmanpYSDFUTHhadzZ4OVcrOGVmeWExUHIvbWMydCtHalI1aUptR1VGTFFGM1JvSVRLb1FBUktLbUVxS3lJVlc0Z1ZNSVJVNnloQ3NBRVRJSVRBNzJaaWlabFFwTUFTb0VxSktCQUVxaEFHWVVNd0VzYkFKempBUEk2ampyTXErWVdQTU9lVG8vTnZTNzh5SzBydVdsM0xIVVdPUC9BSVZzQjRVQUVlZzRFOUNIWXpWNmErcG1xUldWbEE4MWJjZkJaam5HQU1BOGNIUDFuWHg3Wk5URklleDhNeWNycHRUQkVUSDM5RC9sdFFmK3FvOWdNem82YzAveFBTbmovRWJlY2tSL3Y1RTFEWFZESnNSaDNVRUs1R2VnbXU5c2xQTnR1UFBuNVdEdGZMRnZ0SGxlbmpGQkhJZFBiYVd4KzAyVjVGWGJpK0xZZGQ0bVAwTGQ0dnA4WjNuNmJXSDk1ZjhBa1U5MmMvRnVOSGZjL3N5SHhsVzRwcXRzUDB3djdqTXgvd0NWRS9UV1phSStNUmVkWXNjMkZhYnJTRDVLQmgwRzdMbi9BRS9lWTN5VDVtSWhyejhpMFIxNUtWck1lTys1L2swYVRTb3I0Vnp5MW9Mc2lzdm1lV1dVTDFHTStXTjNPQzQ0YnR3ejd2QjF2dTlIVFh0VTRPZHhCYzVCWjJDaGR4NEdlQjF3QlBOejN0ZWUzaHlaYld0NDhMRm5NMERtUlVKa0ZiR1ZVVVN4RXlEdFBwTW9wTStpcmpwSHhuRTZaNGVTSzcwS3JLbVhxTVRSZkZhbjFRS2lzMWhTa29xZXVCVVVnVldDRVZHVVZQS0tpWlI2QXlJRUlrb0JsUUpBSlFEQ2daa0JtQUlDbUZWMmdsV0E2bFNCOWNTMW5VeEpIYVZWMnNXdThXYWhhOWZaYlM3V2duNW10ckNxbTNId1dJUm5qT1FPTWRaNkZaaVkyNjQxTU10UnQwM21ycUtyVkl0S01XSC9BRk5vYllUNjR3ZnZPemo1NHh4TVREMlBobnhLbkZyYXQ2ek8rL1pXNzNYZkwvQ1QxN242VGROc21YeDJoMjJ5Y3puZlIrQ2hsME5WZnhPU2NkMjVKKzBmS3BqamRteWVEeGVKWHJ5enVmdi9BR0FYMjM1V2hSV25UekQxSTlwaDFXdjlQYUhOODNOeXYrdU9tdnVkZEZScHh1c3d6SDlUOGtuMkV2Uld2ZVd5T0xnd1Y2cjkvdkpzV1B3RkZTNHlFT0E1WCtZOWtYM1A3R1l6ZWZUczEzNVZ0YXh4MHgvdm91MFdsYmN4SllMbkg2Z3pldlh0Nzlad2Nya1JUOE5lOC8wZVB6TThVM1NPOXA4ejdmNWRCZE5YOFJ3TWtJaFRqRzBic0hIYnNQdDdUejV2YWErZlY1M1hicDgrcmNxZkFRRHdxcXpJaElVZ3Rqb09Bd1BKK29QMTZhVW0wZGN6dlViMTd4L2oxWnhhWjc3ZERUYURkVTVBM0ZobFdBK1hidVkvWWdEN2tUZFhoUjhxWTh6Yng5dGYzaGowOW1QVjZmWnlPbkMrKzdhQzM5VE9UbGNiNVU5dkhqOWRSTXNaalRQT05BMndycWVHYUxQUFgybnRjTGpSNWtpSGQwM2dlN25HQjZZbnB4aHhVOUdVVmF6NFlvR01UZDFWbU5hWmFjN3hUdzhiYzRBNTVQMG5MeXNkYjFZMmg1elUxZ0hpZlBaNlJXZXpGUVJOQ3EzV0JRNndNOWl5aWdpVVZXQ0JRWUhwU3NtelJHV1hiSFJjVExhRHRrMkFSQVVpVUtaUXBsQ2t3QVRDaG1BSVJFcE5uOEVIVDFDeG1mOEFNMmpheXY1VEpzMy9BS1F3STVQUWdISW5UZ3lSclV0Mk8zb1RYcWJOTSt1MU5sZXB1MURHaXlwaTFkMm1zd2ZMdkFCd3lsVTQ0eGdqM25VMnFIMVlSRUxxNmxrREp1UmdISFRLRTlSN3owNjhtblQzOHcrc3cvR01GY01iMzFSRExWcFRjUlpka0wraWtjRSs1OUJOY1k3Wko2N3VmRnhjdkx0OC9QNG54SCsram8yWGJTS2FsRDJFWkNqaEVIOHpIc0puYTJ1MGVYVG56UmoxanBHN2UzdCtmdEN0S2xRbDhtMjNCemR0QjJrZFZwVThaLzFIcC9TYUxURVQzbnU4N0xhdExmam5xdC9LUHlocldvRlJ1NnRobVQ1bCtKYzh0K3B1UjhXZnNKemNyUDhBTGpVZVpjZk41RVlxeFd2ZTAveVdnZW43VHg1N3ozZUZNN25icDZHb29XSzdiVlpFR2NaL216VTQvVG5QN2djejFPTldhUjIxYUovM1UrMi82dGtlSHRQdzcrSGtwVlRZQVhKRmlidHdLRGNwWkNPNTQvck9qNVVZNC9CNy90RStqYld2cTdKVmNGdUZ5VHZBK1UrNUgybStQdzdXWEkvSTZUVVdaS3FUV2R4VkNNUGsvcUFubmN6Tmp2TVZpZHo1VHAyeitLZUNVZVZZNFVWNExXWkhYZ0g0UjdUejVtSmp2R2lhdzhhaVpJSHJOZEs5VTZhbnFmQnRGdEFQYWZSWUs5RllobFdIb1BQVlJ3WnRtVytLc2xtdFh2TDh5RHBZZkVOV2hVakkrc3h5WmF4SGVXdTBQSzZwQm5JUFdlRHlLeDFicjZ0WkRwTEIrZ252d014UEV6Ui9Ec2FOZjRlZHFXS3B5d3d5NDZHZHVmaDJ2anJrcEhmMWduM2MvV2FmWnRCK2JHV0hwT0hQaGpGcU45L1VZYlVtZ1pYRUNseEtLQ0pCNmdpWWJVaFNYYWFUWkwxSm91Mk5tZ0tTN1hSQ3N1MDBxWVRLSlRTcHBRcE1BWmdDRFNRQkNMdE5xM3J2cjFMS3VvYWlzVjAxV2hkZ1FINU00NUdDd0dlbVIyR0owMDVHdTFtMnVUMGxmNGF6V3JUYnFVcHZyMDFyVVVlRUFBM3RYYTM2Y2ZNUmtZSi9rNXhpZFVXaWZFdDBURStHSzZsdmdWR0JzWU10cWxiTTZRcWZpRm9LakhzZStQVG1kMGNyOE92VjlEVDR4SHl0YTFieDl2ei9BTUtobzJRYkZjWWY0ckxWWU96ZzlEdUhIVHNPQUp5NXVYVEhHcTk1bHhaL2lHUERTWXhUMVd0NW1Xb1VydDI0NHdCMUk0SHVKNVU1cnpicTMzZUZPVzgyNnBudWV0QW9DZ1lBR0FKaGEwMm5jc0xXbTA3bFlKaWpwK0VhcXVsMXNQbUVqNWd1QU1mdnovNTZUczQrWEhpMWJ2djE5bVZaMDlSby93QVNobldzYzd5UW5YZ2tkTXp0eGM2bVRKMDJqVzIvY2EzREgrSWZIckVYWUVaQ2NnTVZJNmR1WjQzUCtJNUptMktzYSs2Mm5UaCtFZUtQVnVaV3kzeExaem5rSFA4QWJFOFROYTI2OU02MTYrKzJOYjZidGY4QWlCdFNCVjhvd054ejFuUlhOZTk2OWM5bzhFMzNHb1lhWDJuUFdlbml2MHp0cmRLbnhabDdjVHRqblN5aTJtSFVlTldxMmUyZVpxajRqYXR2eGVHNnRsVnZpTmw1d21STk9YbTVNMlRweFF0ckxia1lLRGtrWTU5ak5tV0w2aWQ3YWJCb1UzV0lPZVRqaVk4Zi9zcWtlWHVkRm9RZ08vYVdIUmU1bjBWYlRyVGIwcnRYUXB4aFFNZFpzcGFZMmt3OHo0bG9ha0RPeTd1U2Y4Q2E4dUhGRlp0YXUvVnJtSWlIa2RkWVhZbkczMjlCUG5zOTV2ZVptTmZaR0p4Tkl6UEtLakE5VnRtamJQUmdrbXpTZVhMczBVcExFbWlGSmxzMHJkWllsTk03aVp4S003eXBwV1prZ0V5S21ZQXpDSkNhR1FFZHUyQ0NDTWdnOWlEMk1zVE1lRTNwYlRZNkN4VmV3QzA1dEhtT2ZNSjRPL0orTDd6T2MxNTlXWFhZVkUxTUJnTUlEZ1FMRmtIZDhIcTJnV2c3R0J3YzRaSEhiNkdjK2JrL0ptTngyYjZWM0cyM1dlTzEza3BZb0czOUpHZjZHZVR5c3VUTlBWTWE5cGhudVBEemV2cHFyRFcwREN0eFlvSnh6K3IybHhUZStxMzlQRFhiWG94NkU3dmk5T1A4VHZ3NC93QVcvWmc2Q21kZ2ZNQ2VTYkNGWHFlSmpPS2NreEVNcXpMMVBnSDRlU2xkMWhETWVvOUo3UEU0c1lZM1Bsdml2dTdOL2hlbklJSUEzVHFtSzI3VENUU0htOWJvUlM1YWtjZzRRbHVobUZ1SldzZGRZN3NacjdOS2VMNFlWc3lzeTdkeC93QmZwT2JEelkrYk9LZSt1MzZ0dFlpWWFidFpuOVlCSTNkd3dIZkkrczlTbDRpZFNrd3gzMmNaNElIUE0zOWJDMFBLK0wzbzVPRUt0bnZqR1BiRThIbTVzZDUrblZ2ZHBjaDU1NHkyQ1VWbVZYcmdzNDlzMXFwSnRsRUNWbDJhVXZNb1JXWmx0RlR5eEl6MkNad2tzdHMyUXhVRXlvQk1BWmtCRUFpUkJFckV3Z01JRGlRU0E0Z09KRU9EQ3I2ck51ZXZJN0hIUFl6VGx4UmtycVdWYmFaM1F1d0xnNS9uVThpY1h5TDBpWTF0bjFSTE1ydm0xQ2ZpVldKSFpsQXovYVg1UGYyWXpMWHB2a1RISHc5dnJPekY5TUl2Qm13SGRLT2o0UzZvM21NY0JaMjhPS1JicXMyNHE3bDZBZUtBdHVCeldSOFgxbnFWdFcwN2llem8xMkZ2RmExVWd0dTI4bmtjRC93ek84MXJERFV1QitJTmFoUjJxT2VjN2dma0k3VGo1T2FJeHpxU2JSRVBLZjhBcVRoQ1E1Vm1JNmRUOTU4N2l5NU1lNHJPdHNOOWwrajhjMWpyc1RhRlVGUzVISjV6eWU4NzZjdk5GWWlzblZwM3RGclhzQnJjS1NWUHhEanQzbmR4K1RmSitDekdiYjdPTnFNNUlPY2ppZWZmZlZNUzFzYnlLejJRaXFWWHNsRTgvYmFmTUtER1dCUzB6aEZaRXlnVnVKbENTeldUT0dMSGROa01aWjJtU0Z6QW1aQVFZUTRNZ2dNcUdCaERDUU5tQWN3R1dBNE1CMWtGaXlLY1NMcFJxdE1HSVljTU9QcXZjVFZscnVEVzE5TkcydE8vWG1hdUxlTFJNZmRmUTRFNmtIRUNlM2IwbDhNb21ZOE0rdDFkbENONVorQnZtVTlQdE00ejN4MW1LejVaMXZMaDZQeGl5dkpRRERkY2pPZVpJNUY0bHNuTE14cDBsMWU5TGJuQUhtSDVSMDZZL3dDSmhreTlXN1Q2dE5wVHd6d0pyY08zd3IvTDNNdUxqemFOeXc2M1V2MDZWRGFvQTl2K1p0eVJGZTBHOXM5ZHBVNUhXWTB2TkozQ3FMVG5rekdabVozSXkyU3F6V1Npck1EMldaNXpjbVlBTFRLQWhtU0ZNeWdVdk1vU1dTNXB0aGpMSGFac2hpb0psUWhNQ1pnRUdRSE1JYk1JSU1nZUVFR0EyWURLWUZna0ZpaVFXckl5T0lCa0YxTGdjSG9lczgvUGp0anQ4Mm42cUZsZTM2SG9aMTRjMWNrYmcwV2JnQktGMUZJZFNwN2lZMmpjRVM4OCtnSWRhejBKNnpWWHZaWmwwMDB3ZXhLVitWZVQ3ektJNjhrVmE3UzlmVW9yVDdUMXUxWVl3OC9xM0xNU1p3M25jdGxmRE8wd1ZTNWwwTTlobFZsc21RcWdldzNUenRObXdMUm8yR1prbTBNcWtZektCbnNhYklSa3RhWndrc2RobXlHS29tVkNFd0ptQk13Q0RJaGdZRHFaRU5tRUVHQThCbGdYTE1WV0NRV0NSUnpDam1Bd01nc1czSERjaiswOC9MaHRpdDE0d1dUSEk1SHJPdkRucmtqN2hCTjRkUnlNUWlyeGJTWUN2NkdjbWFKck8xTjROUUFkM1V6cDRWZjQ1YTdUNk8zZmFNWW5vMnREQ1hCMU5tV1BwT1N6WlR3ek0weFpxWE1xcUhNb29zbEZjYUgvMlE9PVwiXG4gICAgICAgICAgaXNFdmFsdWF0ZU1vZGU9e2ZhbHNlfVxuICAgICAgICAgIHNlc3Npb249e3sgYW5zd2VyczogW3sgaWQ6ICcxJyB9LCB7IGlkOiAnMicgfV0gfX1cbiAgICAgICAgICBzaGFwZXM9e3tcbiAgICAgICAgICAgIHJlY3RhbmdsZXM6IFtcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGlkOiAnMScsXG4gICAgICAgICAgICAgICAgY29ycmVjdDogdHJ1ZSxcbiAgICAgICAgICAgICAgICB4OiAwLFxuICAgICAgICAgICAgICAgIHk6IDAsXG4gICAgICAgICAgICAgICAgd2lkdGg6IDgwLFxuICAgICAgICAgICAgICAgIGhlaWdodDogODAsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdLFxuICAgICAgICAgICAgcG9seWdvbnM6IFtdLFxuICAgICAgICAgIH19XG4gICAgICAgIC8+LFxuICAgICAgKTtcblxuICAgICAgZXhwZWN0KHcpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgnQ29ycmVjdEFuc3dlclRvZ2dsZScsICgpID0+IHtcbiAgbGV0IHRlc3RXcmFwcGVyLCBjb21wb25lbnQsIHRvZ2dsZTtcbiAgY29uc3QgbW9kZWwgPSB7XG4gICAgbW9kZTogJ2V2YWx1YXRlJyxcbiAgICByZXNwb25zZUNvcnJlY3Q6IGZhbHNlLFxuICB9O1xuICBjb25zdCB0ZXN0V3JhcHBlckZuID0gKHByb3BzKSA9PlxuICAgIHNoYWxsb3dDaGlsZChcbiAgICAgIEhvdHNwb3RDb21wb25lbnQsXG4gICAgICB7XG4gICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgLi4ubW9kZWwsXG4gICAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgMSxcbiAgICApO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIHRlc3RXcmFwcGVyID0gdGVzdFdyYXBwZXJGbih7fSk7XG4gICAgY29tcG9uZW50ID0gdGVzdFdyYXBwZXIoKTtcbiAgICB0b2dnbGUgPSBjb21wb25lbnQuZmluZChDb3JyZWN0QW5zd2VyVG9nZ2xlKTtcbiAgfSk7XG5cbiAgaXQoJ3JlbmRlcnMgd2hlbiB0aGUgbW9kZSBpcyBldmFsdWF0ZSBhbmQgdGhlIHJlc3BvbnNlIGlzIGluY29ycmVjdCcsICgpID0+IHtcbiAgICBleHBlY3QodG9nZ2xlLmxlbmd0aCkudG9FcXVhbCgxKTtcbiAgICBleHBlY3QodG9nZ2xlLnByb3AoJ3Nob3cnKSkudG9FcXVhbCh0cnVlKTtcbiAgfSk7XG5cbiAgaXQoJ2RvZXMgbm90IHJlbmRlciBvdXRzaWRlIG9mIGV2YWx1YXRlIG1vZGUnLCAoKSA9PiB7XG4gICAgY29uc3QgdHcgPSB0ZXN0V3JhcHBlckZuKHsgbW9kZTogJ2dhdGhlcicgfSk7XG4gICAgY29uc3QgYyA9IHR3KCk7XG4gICAgY29uc3QgdCA9IGMuZmluZChDb3JyZWN0QW5zd2VyVG9nZ2xlKTtcbiAgICBleHBlY3QodC5sZW5ndGgpLnRvRXF1YWwoMCk7XG4gIH0pO1xuXG4gIGl0KCdkb2VzIG5vdCByZW5kZXIgaWYgdGhlIHJlc3BvbnNlIGlzIGNvcnJlY3QnLCAoKSA9PiB7XG4gICAgY29uc3QgdHcgPSB0ZXN0V3JhcHBlckZuKHsgcmVzcG9uc2VDb3JyZWN0OiB0cnVlIH0pO1xuICAgIGNvbnN0IGMgPSB0dygpO1xuICAgIGNvbnN0IHQgPSBjLmZpbmQoQ29ycmVjdEFuc3dlclRvZ2dsZSk7XG4gICAgZXhwZWN0KHQubGVuZ3RoKS50b0VxdWFsKDApO1xuICB9KTtcblxuICBpdCgndG9nZ2xlcyB0aGUgc3RhdGUnLCAoKSA9PiB7XG4gICAgY29tcG9uZW50LnNldFN0YXRlKHsgc2hvd0NvcnJlY3Q6IGZhbHNlIH0pO1xuICAgIGV4cGVjdChjb21wb25lbnQuc3RhdGUoJ3Nob3dDb3JyZWN0JykpLnRvRXF1YWwoZmFsc2UpO1xuICAgIGV4cGVjdCh0b2dnbGUucHJvcCgndG9nZ2xlZCcpKS50b0VxdWFsKGZhbHNlKTtcbiAgICBjb21wb25lbnQuaW5zdGFuY2UoKS5vblRvZ2dsZSgpO1xuICAgIGV4cGVjdChjb21wb25lbnQuc3RhdGUoJ3Nob3dDb3JyZWN0JykpLnRvRXF1YWwodHJ1ZSk7XG4gICAgZXhwZWN0KGNvbXBvbmVudC5maW5kKENvcnJlY3RBbnN3ZXJUb2dnbGUpLnByb3AoJ3RvZ2dsZWQnKSkudG9FcXVhbCh0cnVlKTtcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ0NvbnRhaW5lcicsICgpID0+IHtcbiAgbGV0IG9uU2VsZWN0Q2hvaWNlLCB3cmFwcGVyO1xuXG4gIGNvbnN0IG1rV3JhcHBlciA9IChvcHRzID0ge30pID0+IHtcbiAgICBvcHRzID0ge1xuICAgICAgY2xhc3NlczogeyBiYXNlOiAnYmFzZScgfSxcbiAgICAgIGRpbWVuc2lvbnM6IHsgaGVpZ2h0OiAwLCB3aWR0aDogMCB9LFxuICAgICAgZGlzYWJsZWQ6IGZhbHNlLFxuICAgICAgaG90c3BvdENvbG9yOiAncmdiYSgxMzcsIDE4MywgMjQ0LCAwLjY1KScsXG4gICAgICBpbWFnZVVybDogJycsXG4gICAgICBpc0V2YWx1YXRlTW9kZTogZmFsc2UsXG4gICAgICBvdXRsaW5lQ29sb3I6ICdibHVlJyxcbiAgICAgIHNlc3Npb246IHsgYW5zd2VyczogW10gfSxcbiAgICAgIHNoYXBlczoge1xuICAgICAgICByZWN0YW5nbGVzOiBbXSxcbiAgICAgICAgcG9seWdvbnM6IFtdLFxuICAgICAgfSxcbiAgICAgIC4uLm9wdHMsXG4gICAgfTtcblxuICAgIHJldHVybiBzaGFsbG93KDxDb250YWluZXIgey4uLm9wdHN9IG9uU2VsZWN0Q2hvaWNlPXtvblNlbGVjdENob2ljZX0gLz4pO1xuICB9O1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIG9uU2VsZWN0Q2hvaWNlID0gamVzdC5mbigpO1xuICAgIHdyYXBwZXIgPSBta1dyYXBwZXIoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NuYXBzaG90cycsICgpID0+IHtcbiAgICBkZXNjcmliZSgnb3V0bGluZSBjb2xvcicsICgpID0+IHtcbiAgICAgIGl0KCdyZW5kZXJzJywgKCkgPT4ge1xuICAgICAgICBjb25zdCB3cmFwcGVyID0gbWtXcmFwcGVyKHsgb3V0bGluZUNvbG9yOiAncmVkJyB9KTtcbiAgICAgICAgZXhwZWN0KHRvSnNvbih3cmFwcGVyKSkudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdob3RzcG90IGNvbG9yJywgKCkgPT4ge1xuICAgICAgaXQoJ3JlbmRlcnMnLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IHdyYXBwZXIgPSBta1dyYXBwZXIoeyBob3RzcG90Q29sb3I6ICdyZ2JhKDIxNywgMzAsIDI0LCAwLjY1KScgfSk7XG4gICAgICAgIGV4cGVjdCh0b0pzb24od3JhcHBlcikpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnaW1hZ2UnLCAoKSA9PiB7XG4gICAgICBpdCgncmVuZGVycycsICgpID0+IHtcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IG1rV3JhcHBlcih7IGltYWdlVXJsOiAnaHR0cHM6Ly9waWNzdW0ucGhvdG9zL2lkLzEwMi8yMDAvMzAwJyB9KTtcbiAgICAgICAgZXhwZWN0KHRvSnNvbih3cmFwcGVyKSkudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdzaGFwZXMnLCAoKSA9PiB7XG4gICAgICBpdCgncmVuZGVycycsICgpID0+IHtcbiAgICAgICAgY29uc3Qgd3JhcHBlciA9IG1rV3JhcHBlcih7XG4gICAgICAgICAgc2hhcGVzOiB7XG4gICAgICAgICAgICByZWN0YW5nbGVzOiBbXG4gICAgICAgICAgICAgIHsgaWQ6ICcxJywgeDogNSwgeTogNSwgd2lkdGg6IDUsIGhlaWdodDogNSB9LFxuICAgICAgICAgICAgICB7IGlkOiAnMicsIHg6IDI1LCB5OiAyNSwgd2lkdGg6IDUsIGhlaWdodDogNSB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIHBvbHlnb25zOiBbXG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICBpZDogJzMnLFxuICAgICAgICAgICAgICAgIHBvaW50czogW1xuICAgICAgICAgICAgICAgICAgeyB4OiA5NCwgeTogNCB9LFxuICAgICAgICAgICAgICAgICAgeyB4OiA4OSwgeTogNCB9LFxuICAgICAgICAgICAgICAgICAgeyB4OiAzNiwgeTogNDAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgXSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGltYWdlVXJsOiAnaHR0cHM6Ly9waWNzdW0ucGhvdG9zL2lkLzEwMi8yMDAvMzAwJyxcbiAgICAgICAgICBkaW1lbnNpb25zOiB7XG4gICAgICAgICAgICB3aWR0aDogMjAwLFxuICAgICAgICAgICAgaGVpZ2h0OiAzMDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGV4cGVjdCh0b0pzb24od3JhcHBlcikpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxPQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxhQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxNQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFFQSxJQUFBSSxVQUFBLEdBQUFKLE9BQUE7QUFDQSxJQUFBSyxvQkFBQSxH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M0MsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUZULFFBQVEsQ0FBQyxPQUFPLEVBQUUsTUFBTTtNQUN0Qk0sRUFBRSxDQUFDLFNBQVMsRUFBRSxNQUFNO1FBQ2xCLE1BQU1MLE9BQU8sR0FBR3NELFNBQVMsQ0FBQztVQUFFaEMsUUFBUSxFQUFFO1FBQXVDLENBQUMsQ0FBQztRQUMvRWYsTUFBTSxDQUFDLElBQUFtRCxxQkFBTSxFQUFDMUQsT0FBTyxDQUFDLENBQUMsQ0FBQ1EsZUFBZSxDQUFDLENBQUM7TUFDM0MsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxDQUFDO0lBRUZULFFBQVEsQ0FBQyxRQUFRLEVBQUUsTUFBTTtNQUN2Qk0sRUFBRSxDQUFDLFNBQVMsRUFBRSxNQUFNO1FBQ2xCLE1BQU1MLE9BQU8sR0FBR3NELFNBQVMsQ0FBQztVQUN4QjNCLE1BQU0sRUFBRTtZQUNOQyxVQUFVLEVBQUUsQ0FDVjtjQUFFRixFQUFFLEVBQUUsR0FBRztjQUFFSSxDQUFDLEVBQUUsQ0FBQztjQUFFQyxDQUFDLEVBQUUsQ0FBQztjQUFFakIsS0FBSyxFQUFFLENBQUM7Y0FBRUMsTUFBTSxFQUFFO1lBQUUsQ0FBQyxFQUM1QztjQUFFVyxFQUFFLEVBQUUsR0FBRztjQUFFSSxDQUFDLEVBQUUsRUFBRTtjQUFFQyxDQUFDLEVBQUUsRUFBRTtjQUFFakIsS0FBSyxFQUFFLENBQUM7Y0FBRUMsTUFBTSxFQUFFO1lBQUUsQ0FBQyxDQUMvQztZQUNEaUIsUUFBUSxFQUFFLENBQ1I7Y0FDRU4sRUFBRSxFQUFFLEdBQUc7Y0FDUGlDLE1BQU0sRUFBRSxDQUNOO2dCQUFFN0IsQ0FBQyxFQUFFLEVBQUU7Z0JBQUVDLENBQUMsRUFBRTtjQUFFLENBQUMsRUFDZjtnQkFBRUQsQ0FBQyxFQUFFLEVBQUU7Z0JBQUVDLENBQUMsRUFBRTtjQUFFLENBQUMsRUFDZjtnQkFBRUQsQ0FBQyxFQUFFLEVBQUU7Z0JBQUVDLENBQUMsRUFBRTtjQUFHLENBQUM7WUFFcEIsQ0FBQztVQUVMLENBQUM7VUFDRFQsUUFBUSxFQUFFLHNDQUFzQztVQUNoRFQsVUFBVSxFQUFFO1lBQ1ZDLEtBQUssRUFBRSxHQUFHO1lBQ1ZDLE1BQU0sRUFBRTtVQUNWO1FBQ0YsQ0FBQyxDQUFDO1FBQ0ZSLE1BQU0sQ0FBQyxJQUFBbUQscUJBQU0sRUFBQzFELE9BQU8sQ0FBQyxDQUFDLENBQUNRLGVBQWUsQ0FBQyxDQUFDO01BQzNDLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
var _react = _interopRequireDefault(require("react"));
|
|
5
|
+
var _enzyme = require("enzyme");
|
|
6
|
+
var _piePlayerEvents = require("@pie-framework/pie-player-events");
|
|
7
|
+
var _hotspot = _interopRequireDefault(require("../hotspot"));
|
|
8
|
+
var _index = _interopRequireDefault(require("../index"));
|
|
9
|
+
jest.mock('@pie-lib/math-rendering', () => ({
|
|
10
|
+
renderMath: jest.fn()
|
|
11
|
+
}));
|
|
12
|
+
describe('hotspot', () => {
|
|
13
|
+
describe('renders', () => {
|
|
14
|
+
let wrapper = props => {
|
|
15
|
+
let defaultProps = {
|
|
16
|
+
model: {
|
|
17
|
+
dimensions: {
|
|
18
|
+
height: 0,
|
|
19
|
+
width: 0
|
|
20
|
+
},
|
|
21
|
+
shapes: {
|
|
22
|
+
rectangles: [],
|
|
23
|
+
polygons: [],
|
|
24
|
+
circles: []
|
|
25
|
+
},
|
|
26
|
+
...props
|
|
27
|
+
},
|
|
28
|
+
session: {},
|
|
29
|
+
classes: {}
|
|
30
|
+
};
|
|
31
|
+
return (0, _enzyme.shallow)(/*#__PURE__*/_react.default.createElement(_hotspot.default, defaultProps));
|
|
32
|
+
};
|
|
33
|
+
it('snapshot', () => {
|
|
34
|
+
const w = wrapper();
|
|
35
|
+
expect(w).toMatchSnapshot();
|
|
36
|
+
});
|
|
37
|
+
it('snapshot with rationale', () => {
|
|
38
|
+
const w = wrapper({
|
|
39
|
+
rationale: 'This is rationale'
|
|
40
|
+
});
|
|
41
|
+
expect(w).toMatchSnapshot();
|
|
42
|
+
});
|
|
43
|
+
it('snapshot with teacherInstructions', () => {
|
|
44
|
+
const w = wrapper({
|
|
45
|
+
teacherInstructions: 'These are teacher instructions'
|
|
46
|
+
});
|
|
47
|
+
expect(w).toMatchSnapshot();
|
|
48
|
+
});
|
|
49
|
+
});
|
|
50
|
+
describe('events', () => {
|
|
51
|
+
describe('model', () => {
|
|
52
|
+
it('dispatches model set event', () => {
|
|
53
|
+
const el = new _index.default();
|
|
54
|
+
el.tagName = 'hotspot-el';
|
|
55
|
+
el.model = {};
|
|
56
|
+
expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.ModelSetEvent('hotspot-el', false, true));
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
describe('onSelectChoice', () => {
|
|
60
|
+
it('dispatches session changed event - add answer', () => {
|
|
61
|
+
const el = new _index.default();
|
|
62
|
+
el.tagName = 'hotspot-el';
|
|
63
|
+
el.session = {
|
|
64
|
+
answers: []
|
|
65
|
+
};
|
|
66
|
+
el.onSelectChoice({
|
|
67
|
+
id: '1',
|
|
68
|
+
selected: true
|
|
69
|
+
});
|
|
70
|
+
expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent('hotspot-el', true));
|
|
71
|
+
});
|
|
72
|
+
it('dispatches session changed event - remove answer', () => {
|
|
73
|
+
const el = new _index.default();
|
|
74
|
+
el.tagName = 'hotspot-el';
|
|
75
|
+
el.session = {
|
|
76
|
+
answers: [{
|
|
77
|
+
id: '1'
|
|
78
|
+
}]
|
|
79
|
+
};
|
|
80
|
+
el.onSelectChoice({
|
|
81
|
+
id: '1',
|
|
82
|
+
selected: false
|
|
83
|
+
});
|
|
84
|
+
expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent('hotspot-el', false));
|
|
85
|
+
});
|
|
86
|
+
it('dispatches session changed event - add/remove answer', () => {
|
|
87
|
+
const el = new _index.default();
|
|
88
|
+
el.tagName = 'hotspot-el';
|
|
89
|
+
el.session = {
|
|
90
|
+
answers: [{
|
|
91
|
+
id: '1'
|
|
92
|
+
}]
|
|
93
|
+
};
|
|
94
|
+
el.onSelectChoice({
|
|
95
|
+
id: '2',
|
|
96
|
+
selected: true
|
|
97
|
+
});
|
|
98
|
+
expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent('hotspot-el', true));
|
|
99
|
+
el.onSelectChoice({
|
|
100
|
+
id: '1',
|
|
101
|
+
selected: false
|
|
102
|
+
});
|
|
103
|
+
expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent('hotspot-el', true));
|
|
104
|
+
el.onSelectChoice({
|
|
105
|
+
id: '2',
|
|
106
|
+
selected: false
|
|
107
|
+
});
|
|
108
|
+
expect(el.dispatchEvent).toBeCalledWith(new _piePlayerEvents.SessionChangedEvent('hotspot-el', false));
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9lbnp5bWUiLCJfcGllUGxheWVyRXZlbnRzIiwiX2hvdHNwb3QiLCJfaW5kZXgiLCJqZXN0IiwibW9jayIsInJlbmRlck1hdGgiLCJmbiIsImRlc2NyaWJlIiwid3JhcHBlciIsInByb3BzIiwiZGVmYXVsdFByb3BzIiwibW9kZWwiLCJkaW1lbnNpb25zIiwiaGVpZ2h0Iiwid2lkdGgiLCJzaGFwZXMiLCJyZWN0YW5nbGVzIiwicG9seWdvbnMiLCJjaXJjbGVzIiwic2Vzc2lvbiIsImNsYXNzZXMiLCJzaGFsbG93IiwiZGVmYXVsdCIsImNyZWF0ZUVsZW1lbnQiLCJpdCIsInciLCJleHBlY3QiLCJ0b01hdGNoU25hcHNob3QiLCJyYXRpb25hbGUiLCJ0ZWFjaGVySW5zdHJ1Y3Rpb25zIiwiZWwiLCJIb3RzcG90IiwidGFnTmFtZSIsImRpc3BhdGNoRXZlbnQiLCJ0b0JlQ2FsbGVkV2l0aCIsIk1vZGVsU2V0RXZlbnQiLCJhbnN3ZXJzIiwib25TZWxlY3RDaG9pY2UiLCJpZCIsInNlbGVjdGVkIiwiU2Vzc2lvbkNoYW5nZWRFdmVudCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9fX3Rlc3RzX18vaW5kZXgudGVzdC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgc2hhbGxvdyB9IGZyb20gJ2VuenltZSc7XG5pbXBvcnQgeyBNb2RlbFNldEV2ZW50LCBTZXNzaW9uQ2hhbmdlZEV2ZW50IH0gZnJvbSAnQHBpZS1mcmFtZXdvcmsvcGllLXBsYXllci1ldmVudHMnO1xuaW1wb3J0IEhvdHNwb3RDb21wb25lbnQgZnJvbSAnLi4vaG90c3BvdCc7XG5pbXBvcnQgSG90c3BvdCBmcm9tICcuLi9pbmRleCc7XG5cbmplc3QubW9jaygnQHBpZS1saWIvbWF0aC1yZW5kZXJpbmcnLCAoKSA9PiAoeyByZW5kZXJNYXRoOiBqZXN0LmZuKCkgfSkpO1xuXG5kZXNjcmliZSgnaG90c3BvdCcsICgpID0+IHtcbiAgZGVzY3JpYmUoJ3JlbmRlcnMnLCAoKSA9PiB7XG4gICAgbGV0IHdyYXBwZXIgPSAocHJvcHMpID0+IHtcbiAgICAgIGxldCBkZWZhdWx0UHJvcHMgPSB7XG4gICAgICAgIG1vZGVsOiB7XG4gICAgICAgICAgZGltZW5zaW9uczogeyBoZWlnaHQ6IDAsIHdpZHRoOiAwIH0sXG4gICAgICAgICAgc2hhcGVzOiB7IHJlY3RhbmdsZXM6IFtdLCBwb2x5Z29uczogW10sIGNpcmNsZXM6IFtdIH0sXG4gICAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIH0sXG4gICAgICAgIHNlc3Npb246IHt9LFxuICAgICAgICBjbGFzc2VzOiB7fSxcbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBzaGFsbG93KDxIb3RzcG90Q29tcG9uZW50IHsuLi5kZWZhdWx0UHJvcHN9IC8+KTtcbiAgICB9O1xuXG4gICAgaXQoJ3NuYXBzaG90JywgKCkgPT4ge1xuICAgICAgY29uc3QgdyA9IHdyYXBwZXIoKTtcbiAgICAgIGV4cGVjdCh3KS50b01hdGNoU25hcHNob3QoKTtcbiAgICB9KTtcblxuICAgIGl0KCdzbmFwc2hvdCB3aXRoIHJhdGlvbmFsZScsICgpID0+IHtcbiAgICAgIGNvbnN0IHcgPSB3cmFwcGVyKHsgcmF0aW9uYWxlOiAnVGhpcyBpcyByYXRpb25hbGUnIH0pO1xuICAgICAgZXhwZWN0KHcpLnRvTWF0Y2hTbmFwc2hvdCgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3NuYXBzaG90IHdpdGggdGVhY2hlckluc3RydWN0aW9ucycsICgpID0+IHtcbiAgICAgIGNvbnN0IHcgPSB3cmFwcGVyKHsgdGVhY2hlckluc3RydWN0aW9uczogJ1RoZXNlIGFyZSB0ZWFjaGVyIGluc3RydWN0aW9ucycgfSk7XG4gICAgICBleHBlY3QodykudG9NYXRjaFNuYXBzaG90KCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdldmVudHMnLCAoKSA9PiB7XG4gICAgZGVzY3JpYmUoJ21vZGVsJywgKCkgPT4ge1xuICAgICAgaXQoJ2Rpc3BhdGNoZXMgbW9kZWwgc2V0IGV2ZW50JywgKCkgPT4ge1xuICAgICAgICBjb25zdCBlbCA9IG5ldyBIb3RzcG90KCk7XG4gICAgICAgIGVsLnRhZ05hbWUgPSAnaG90c3BvdC1lbCc7XG4gICAgICAgIGVsLm1vZGVsID0ge307XG4gICAgICAgIGV4cGVjdChlbC5kaXNwYXRjaEV2ZW50KS50b0JlQ2FsbGVkV2l0aChuZXcgTW9kZWxTZXRFdmVudCgnaG90c3BvdC1lbCcsIGZhbHNlLCB0cnVlKSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdvblNlbGVjdENob2ljZScsICgpID0+IHtcbiAgICAgIGl0KCdkaXNwYXRjaGVzIHNlc3Npb24gY2hhbmdlZCBldmVudCAtIGFkZCBhbnN3ZXInLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsID0gbmV3IEhvdHNwb3QoKTtcbiAgICAgICAgZWwudGFnTmFtZSA9ICdob3RzcG90LWVsJztcbiAgICAgICAgZWwuc2Vzc2lvbiA9IHsgYW5zd2VyczogW10gfTtcbiAgICAgICAgZWwub25TZWxlY3RDaG9pY2UoeyBpZDogJzEnLCBzZWxlY3RlZDogdHJ1ZSB9KTtcbiAgICAgICAgZXhwZWN0KGVsLmRpc3BhdGNoRXZlbnQpLnRvQmVDYWxsZWRXaXRoKG5ldyBTZXNzaW9uQ2hhbmdlZEV2ZW50KCdob3RzcG90LWVsJywgdHJ1ZSkpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdkaXNwYXRjaGVzIHNlc3Npb24gY2hhbmdlZCBldmVudCAtIHJlbW92ZSBhbnN3ZXInLCAoKSA9PiB7XG4gICAgICAgIGNvbnN0IGVsID0gbmV3IEhvdHNwb3QoKTtcbiAgICAgICAgZWwudGFnTmFtZSA9ICdob3RzcG90LWVsJztcbiAgICAgICAgZWwuc2Vzc2lvbiA9IHsgYW5zd2VyczogW3sgaWQ6ICcxJyB9XSB9O1xuICAgICAgICBlbC5vblNlbGVjdENob2ljZSh7IGlkOiAnMScsIHNlbGVjdGVkOiBmYWxzZSB9KTtcbiAgICAgICAgZXhwZWN0KGVsLmRpc3BhdGNoRXZlbnQpLnRvQmVDYWxsZWRXaXRoKG5ldyBTZXNzaW9uQ2hhbmdlZEV2ZW50KCdob3RzcG90LWVsJywgZmFsc2UpKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnZGlzcGF0Y2hlcyBzZXNzaW9uIGNoYW5nZWQgZXZlbnQgLSBhZGQvcmVtb3ZlIGFuc3dlcicsICgpID0+IHtcbiAgICAgICAgY29uc3QgZWwgPSBuZXcgSG90c3BvdCgpO1xuICAgICAgICBlbC50YWdOYW1lID0gJ2hvdHNwb3QtZWwnO1xuICAgICAgICBlbC5zZXNzaW9uID0geyBhbnN3ZXJzOiBbeyBpZDogJzEnIH1dIH07XG4gICAgICAgIGVsLm9uU2VsZWN0Q2hvaWNlKHsgaWQ6ICcyJywgc2VsZWN0ZWQ6IHRydWUgfSk7XG4gICAgICAgIGV4cGVjdChlbC5kaXNwYXRjaEV2ZW50KS50b0JlQ2FsbGVkV2l0aChuZXcgU2Vzc2lvbkNoYW5nZWRFdmVudCgnaG90c3BvdC1lbCcsIHRydWUpKTtcblxuICAgICAgICBlbC5vblNlbGVjdENob2ljZSh7IGlkOiAnMScsIHNlbGVjdGVkOiBmYWxzZSB9KTtcbiAgICAgICAgZXhwZWN0KGVsLmRpc3BhdGNoRXZlbnQpLnRvQmVDYWxsZWRXaXRoKG5ldyBTZXNzaW9uQ2hhbmdlZEV2ZW50KCdob3RzcG90LWVsJywgdHJ1ZSkpO1xuXG4gICAgICAgIGVsLm9uU2VsZWN0Q2hvaWNlKHsgaWQ6ICcyJywgc2VsZWN0ZWQ6IGZhbHNlIH0pO1xuICAgICAgICBleHBlY3QoZWwuZGlzcGF0Y2hFdmVudCkudG9CZUNhbGxlZFdpdGgobmV3IFNlc3Npb25DaGFuZ2VkRXZlbnQoJ2hvdHNwb3QtZWwnLCBmYWxzZSkpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLE9BQUEsR0FB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
|