rooibos-roku 5.10.0 → 5.12.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.
@@ -267,7 +267,7 @@ namespace rooibos
267
267
  if m.catchCrashes and not test.noCatch and not m.noCatch
268
268
  try
269
269
  test.run()
270
- if m.isAutoAssertingMocks = true
270
+ if m.isAutoAssertingMocks = true and not test.isAsync
271
271
  m.AssertMocks()
272
272
  m.CleanMocks()
273
273
  m.CleanStubs()
@@ -278,7 +278,7 @@ namespace rooibos
278
278
  end try
279
279
  else
280
280
  test.run()
281
- if m.isAutoAssertingMocks = true
281
+ if m.isAutoAssertingMocks = true and not test.isAsync
282
282
  m.AssertMocks()
283
283
  m.CleanMocks()
284
284
  m.CleanStubs()
@@ -313,6 +313,28 @@ namespace rooibos
313
313
  return false
314
314
  end function
315
315
 
316
+ ' /**
317
+ ' * @memberof module:BaseTestSuite
318
+ ' * @name failCrash
319
+ ' * @function
320
+ ' * @instance
321
+ ' * @description Fail immediately, with the given exception
322
+ ' * @param {Dynamic} [error] - exception to fail on
323
+ ' * @param {Dynamic} [msg=""] - message to display in the test report
324
+ ' * @returns {boolean} - true if failure was set, false if the test is already failed
325
+ ' */
326
+ function failCrash(error as dynamic, msg = "Error" as string) as dynamic
327
+ if m.currentResult.isFail
328
+ if m.throwOnFailedAssertion
329
+ throw m.currentResult.getMessage()
330
+ end if
331
+ return false
332
+ end if
333
+ m.currentResult.fail(msg, m.currentAssertLineNumber)
334
+ m.currentResult.crash(msg, error)
335
+ return true
336
+ end function
337
+
316
338
  function failBecauseOfTimeOut() as dynamic
317
339
  if m.currentResult.isFail
318
340
  return false
@@ -1802,8 +1824,25 @@ namespace rooibos
1802
1824
  return invalid
1803
1825
  end function
1804
1826
 
1805
- function stubCall(invocation as dynamic, returnValue = invalid as dynamic) as object
1806
- 'mock function body - the plugin replaces this
1827
+ function stubCall(invocation as dynamic, stubOrReturnValue = invalid as dynamic, functionName = "" as string) as object
1828
+ ' When stubbing global functions this will be called. Other wise the test code will be updated to call m._stubCall()
1829
+ if type(invocation).endsWith("Function") and functionName = ""
1830
+ functionName = invocation.toStr().tokenize(" ").peek()
1831
+ else
1832
+ throw "Did not provide a function to be stubbed"
1833
+ end if
1834
+
1835
+ if not type(stubOrReturnValue).endsWith("Function")
1836
+ throw "Did not provide a stub function"
1837
+ end if
1838
+
1839
+ ' Store the stub on the component scope
1840
+ globalAa = getGlobalAa()
1841
+ if type(globalAa?.__globalStubs) <> "roAssociativeArray"
1842
+ globalAa.__globalStubs = {}
1843
+ end if
1844
+
1845
+ globalAa.__globalStubs[lCase(functionName)] = stubOrReturnValue
1807
1846
  return invalid
1808
1847
  end function
1809
1848
 
@@ -2262,6 +2301,7 @@ namespace rooibos
2262
2301
  rooibos.resetMocksByFunctionName()
2263
2302
  end function
2264
2303
 
2304
+
2265
2305
  ' /**
2266
2306
  ' * @memberof module:BaseTestSuite
2267
2307
  ' * @name cleanStubs
@@ -2270,6 +2310,10 @@ namespace rooibos
2270
2310
  ' * @description Cleans up all tracking data associated with stubs
2271
2311
  ' */
2272
2312
  function cleanStubs() as void
2313
+ ' Clean up the global functions mocks as well
2314
+ globalAa = getGlobalAa()
2315
+ globalAa.__globalStubs = invalid
2316
+
2273
2317
  if m.stubs = invalid
2274
2318
  return
2275
2319
  end if
@@ -2,33 +2,37 @@ function init()
2
2
  m.resolvedMap = {}
3
3
  m.top.observeField("entry", "onEntryChange")
4
4
  m.top.observeField("save", "onSave")
5
-
5
+ m.results = []
6
6
  end function
7
7
 
8
8
  function setExpectedMap()
9
- m.top.expectedMap = #EXPECTED_MAP#
9
+ m.top.expectedMap = "#EXPECTED_MAP#"
10
10
  end function
11
11
 
12
12
  function setFilePathMap()
13
- m.top.filePathMap = #FILE_PATH_MAP#
13
+ m.top.filePathMap = "#FILE_PATH_MAP#"
14
14
  end function
15
15
 
16
16
  function onEntryChange()
17
- entry = m.top.entry
18
- if entry <> invalid
19
- lineMap = m.resolvedMap[entry.f]
20
-
21
- if lineMap = invalid
22
- lineMap = {}
23
- end if
24
- lineMap[entry.l] = entry.r
25
-
26
- m.resolvedMap[entry.f] = lineMap
27
- end if
17
+ entry = m.top.entry
18
+ ' defer till later
19
+ m.results.push(entry)
28
20
  end function
29
21
 
30
22
  function onSave()
31
23
  ? "saving data"
24
+ for each entry in m.results
25
+ if entry <> invalid
26
+ fileId = entry.f
27
+ lineMap = m.resolvedMap[fileId]
28
+
29
+ if lineMap = invalid
30
+ lineMap = {}
31
+ m.resolvedMap[fileId] = lineMap
32
+ end if
33
+ lineMap[entry.l] = entry.r
34
+ end if
35
+ end for
32
36
  m.top.resolvedMap = m.resolvedMap
33
37
  setExpectedMap()
34
38
  setFilePathMap()
@@ -22,7 +22,7 @@ function RBS_ReportCodeCoverage() as void
22
22
  resolvedCount = cc.resolvedMap[key].count()
23
23
  allLinesHit += resolvedCount
24
24
  resolvedPercent = (resolvedCount / expectedCount) * 100
25
- hitFiles.push({percent:resolvedPercent, text:filename + ": " +str(resolvedPercent).trim() + "% (" + stri(resolvedCount).trim() + "/" + stri(expectedCount).trim() + ")"})
25
+ hitFiles.push({ percent: resolvedPercent, text: filename + ": " + str(resolvedPercent).trim() + "% (" + stri(resolvedCount).trim() + "/" + stri(expectedCount).trim() + ")" })
26
26
  else
27
27
  missFiles.push(filename + ": MISS!")
28
28
  end if
@@ -41,13 +41,13 @@ function RBS_ReportCodeCoverage() as void
41
41
  ? "HIT FILES"
42
42
  ? "---------"
43
43
  hitFiles.SortBy("percent")
44
- for i = 0 to hitFiles.count() -1
44
+ for i = 0 to hitFiles.count() - 1
45
45
  ? hitFiles[i].text
46
46
  end for
47
47
  ? ""
48
48
  ? "MISSED FILES"
49
49
  ? "------------"
50
- for i = 0 to missFiles.count() -1
50
+ for i = 0 to missFiles.count() - 1
51
51
  ? missFiles[i]
52
52
  end for
53
53
 
@@ -5,31 +5,46 @@ namespace rooibos.Coverage
5
5
  ? "There was no rooibos code coverage component - not generating coverage report"
6
6
  return
7
7
  end if
8
+ t = createObject("roTimespan")
8
9
  ? ""
9
10
  ? "...Generating code coverage report"
10
11
  ? ""
11
12
  m.global._rbs_ccn.save = true
12
13
  cc = m.global._rbs_ccn
14
+ expectedMap = cc.expectedMap
15
+ filePathMap = cc.filePathMap
16
+ resolvedMap = cc.resolvedMap
17
+
13
18
  hitFiles = []
14
19
  missFiles = []
15
20
  allLinesCount = 0
16
21
  allLinesHit = 0
17
- for each key in cc.expectedMap
18
- filename = cc.filePathMap[key]
19
- expectedCount = cc.expectedMap[key].count()
22
+ for each key in expectedMap
23
+ filename = filePathMap[key]
24
+ expectedCount = expectedMap[key].count()
20
25
  allLinesCount += expectedCount
21
26
  if expectedCount > 0
22
- if cc.resolvedMap[key] <> invalid
23
- resolvedCount = cc.resolvedMap[key].count()
27
+ if resolvedMap[key] <> invalid
28
+ resolvedCount = resolvedMap[key].count()
24
29
  allLinesHit += resolvedCount
25
- resolvedPercent = (resolvedCount / expectedCount) * 100
30
+ if resolvedCount = 0
31
+ resolvedPercent = 0
32
+ else
33
+ resolvedPercent = (resolvedCount / expectedCount) * 100
34
+ end if
26
35
  hitFiles.push({ percent: resolvedPercent, text: filename + ": " + str(resolvedPercent).trim() + "% (" + stri(resolvedCount).trim() + "/" + stri(expectedCount).trim() + ")" })
27
36
  else
28
37
  missFiles.push(filename + ": MISS!")
29
38
  end if
39
+ else
40
+ missFiles.push(filename + ": MISS!")
30
41
  end if
31
42
  end for
32
- allLinesPercent = (allLinesHit / allLinesCount) * 100
43
+ if allLinesHit = 0
44
+ allLinesPercent = 0
45
+ else
46
+ allLinesPercent = (allLinesHit / allLinesCount) * 100
47
+ end if
33
48
  ? ""
34
49
  ? ""
35
50
  ? "+++++++++++++++++++++++++++++++++++++++++++"
@@ -37,7 +52,7 @@ namespace rooibos.Coverage
37
52
  ? "+++++++++++++++++++++++++++++++++++++++++++"
38
53
  ? ""
39
54
  ? "Total Coverage: " ; str(allLinesPercent).trim() ; "% (" ; stri(allLinesHit).trim() ; "/" + stri(allLinesCount).trim() ; ")"
40
- ? "Files: " ; cc.resolvedMap.count(); "/" ; cc.expectedMap.count()
55
+ ? "Files: " ; resolvedMap.count(); "/" ; expectedMap.count()
41
56
  ? ""
42
57
  ? "HIT FILES"
43
58
  ? "---------"
@@ -51,10 +66,13 @@ namespace rooibos.Coverage
51
66
  for i = 0 to missFiles.count() - 1
52
67
  ? missFiles[i]
53
68
  end for
54
-
69
+ ? ""
70
+ ? "+++++++++++++++++++++++++++++++++++++++++++"
71
+ ? "Code Coverage Report Complete"; t.totalMilliseconds(); "ms"
72
+ ? "+++++++++++++++++++++++++++++++++++++++++++"
55
73
  end function
56
74
 
57
- function createLCovOutput()
75
+ function createLCovOutput(logToConsole = true as boolean)
58
76
  ? "Generating lcov.info file..."
59
77
 
60
78
  cc = m.global._rbs_ccn
@@ -62,9 +80,10 @@ namespace rooibos.Coverage
62
80
  filePathMap = cc.filePathMap
63
81
  resolvedMap = cc.resolvedMap
64
82
 
65
- buffer = ""
83
+ results = []
66
84
 
67
85
  for each module in filePathMap.items()
86
+ buffer = ""
68
87
  moduleNumber = module.key
69
88
  filePath = module.value
70
89
  packageName = "."
@@ -72,33 +91,51 @@ namespace rooibos.Coverage
72
91
  relativePath = filePath.replace("pkg:", packageName)
73
92
  sanitizedPath = relativePath.replace("\\", "/")
74
93
 
75
- buffer = buffer + "TN:" + chr(10)
76
- buffer = buffer + "SF:" + sanitizedPath + chr(10)
94
+ buffer += "TN:" + chr(10)
95
+ buffer += "SF:" + sanitizedPath + chr(10)
77
96
 
78
97
  for each expected in expectedMap[moduleNumber]
79
- lineNumber = expected[0]
98
+ lineNumber = val(expected)
80
99
  SHIFT = 1
81
100
 
82
- if resolvedMap[moduleNumber] <> invalid and resolvedMap[moduleNumber].doesExist(str(lineNumber))
83
- buffer = buffer + "DA:" + str(lineNumber + SHIFT) + ",1" + chr(10)
101
+ if resolvedMap[moduleNumber] <> invalid and resolvedMap[moduleNumber].doesExist(expected)
102
+ buffer += "DA:" + str(lineNumber + SHIFT).trim() + "," + str(resolvedMap[moduleNumber][expected]).trim() + chr(10)
84
103
  else
85
- buffer = buffer + "DA:" + str(lineNumber + SHIFT) + ",0" + chr(10)
104
+ buffer += "DA:" + str(lineNumber + SHIFT).trim() + ",0" + chr(10)
86
105
  end if
87
106
  end for
88
107
 
89
- buffer = buffer + "end_of_record" + chr(10)
108
+ buffer += "LF:" + str(expectedMap[moduleNumber].count()).trim() + chr(10)
109
+
110
+ if resolvedMap[moduleNumber] <> invalid
111
+ buffer += "LH:" + str(resolvedMap[moduleNumber].count()).trim() + chr(10)
112
+ else
113
+ buffer += "LH:0" + chr(10)
114
+ end if
115
+
116
+ buffer += "end_of_record"
117
+ if logToConsole
118
+ ? buffer
119
+ ' When logging to the console it is very possible to flood the buffer and cause the application to exit.
120
+ ' Sleep for a short amount of time so as to give console scrapers time to empty the buffer
121
+ sleep(30)
122
+ else
123
+ results.push(buffer)
124
+ end if
90
125
  end for
91
- return buffer
126
+
127
+ return results.join(chr(10))
92
128
  end function
93
129
 
94
130
  function printLCovInfo()
131
+
95
132
  ?
96
133
  ? "+++++++++++++++++++++++++++++++++++++++++++"
97
134
  ? "LCOV.INFO FILE"
98
135
  ? "+++++++++++++++++++++++++++++++++++++++++++"
99
136
  ?
100
137
  ? "+-=-coverage:start"
101
- ? rooibos.coverage.createLCovOutput()
138
+ rooibos.coverage.createLCovOutput()
102
139
  ? "+-=-coverage:end"
103
140
  end function
104
141
 
@@ -18,7 +18,10 @@ namespace rooibos
18
18
  screen.show()
19
19
 
20
20
  m.global = screen.getGlobalNode()
21
- m.global.addFields({ "testsScene": scene })
21
+ m.global.addFields({
22
+ "testsScene": scene
23
+ "_rbs_ccn": createObject("roSGNode", "CodeCoverage")' bs:disable-line
24
+ })
22
25
 
23
26
  if scene.hasField("isReadyToStartTests") and scene.isReadyToStartTests = false
24
27
  ? "The scene is not ready yet - waiting for it to set isReadyToStartTests to true"
@@ -31,7 +34,9 @@ namespace rooibos
31
34
 
32
35
  if runner.config.keepAppOpen = false
33
36
  ? "keepAppOpen is false; exiting Rooibos"
34
- return
37
+ ' End statement will also exit the caller of this function
38
+ ' leading to an instant exit of the application
39
+ end
35
40
  end if
36
41
  end if
37
42
 
@@ -40,7 +40,7 @@ namespace rooibos
40
40
  end if
41
41
  end if
42
42
  if m.throwOnFailedAssertion
43
- throw m.getMessage()
43
+ throw m.getMessage()
44
44
  end if
45
45
  end function
46
46
 
@@ -111,9 +111,7 @@ namespace rooibos
111
111
  }
112
112
  m.nodeContext.global.testsScene.rooibosTestResult = rooibosResult
113
113
 
114
- 'bs:disable-next-line
115
- if rooibos.common.isFunction(rooibos.Coverage.reportCodeCoverage)
116
- 'bs:disable-next-line
114
+ if m.config.isRecordingCodeCoverage
117
115
  rooibos.Coverage.reportCodeCoverage()
118
116
 
119
117
  if m.config.printLcov = true
@@ -252,7 +250,13 @@ namespace rooibos
252
250
  timeout = testSuite.asyncTimeout = invalid ? 60000 : testSuite.asyncTimeout
253
251
 
254
252
  ? "Waiting max " timeout "ms for the test suite to finish"
255
- m.waitForField(node, "rooibosSuiteFinished", 10, timeout / 10)
253
+ t = createObject("roTimespan")
254
+ while node.rooibosSuiteFinished = false
255
+ m.wait(10)
256
+ if t.totalMilliseconds() >= timeout
257
+ exit while
258
+ end if
259
+ end while
256
260
  end if
257
261
  end if
258
262
  nodeResults = node.asyncRooibosTestResult
@@ -95,82 +95,79 @@ class RooibosAnnotation {
95
95
  (0, Diagnostics_1.diagnosticMultipleDescribeAnnotations)(file, a);
96
96
  }
97
97
  }
98
- for (let annotation of statement.annotations) {
99
- const annotationType = getAnnotationType(annotation.name);
100
- switch (annotationType) {
101
- case AnnotationType.NoEarlyExit:
102
- noEarlyExit = true;
103
- break;
104
- case AnnotationType.Async:
105
- async = true;
106
- //ensure the arg is an integer, if not set to 2000
107
- asyncTimeout = annotation.getArguments().length === 1 ? parseInt(annotation.getArguments()[0]) : -1;
108
- break;
109
- case AnnotationType.NoCatch:
110
- noCatch = true;
111
- break;
112
- case AnnotationType.Solo:
113
- isSolo = true;
114
- break;
115
- case AnnotationType.NodeTest:
116
- nodeName = annotation.getArguments()[0];
117
- break;
118
- case AnnotationType.Tags:
119
- tags = annotation.getArguments().map((a) => a.toString());
120
- break;
121
- case AnnotationType.Ignore:
122
- isIgnore = true;
123
- break;
124
- case AnnotationType.BeforeEach:
125
- case AnnotationType.AfterEach:
126
- case AnnotationType.Setup:
127
- case AnnotationType.TearDown:
128
- testAnnotation = new RooibosAnnotation(file, annotation, annotationType, annotation.name, annotation.name);
129
- break;
130
- case AnnotationType.Describe:
131
- case AnnotationType.TestSuite:
132
- const groupName = annotation.getArguments()[0];
133
- blockAnnotation = new RooibosAnnotation(file, annotation, annotationType, annotation.name, groupName, isIgnore, isSolo, null, nodeName, tags, noCatch, noEarlyExit);
134
- blockAnnotation.isAsync = async;
135
- blockAnnotation.asyncTimeout = asyncTimeout === -1 ? 60000 : asyncTimeout;
136
- nodeName = null;
137
- isSolo = false;
138
- isIgnore = false;
139
- async = false;
140
- asyncTimeout = -1;
141
- break;
142
- case AnnotationType.It:
143
- const testName = annotation.getArguments()[0];
144
- if (!testName || testName.trim() === '') {
145
- (0, Diagnostics_1.diagnosticNoTestNameDefined)(file, annotation);
146
- }
147
- let newAnnotation = new RooibosAnnotation(file, annotation, annotationType, annotation.name, testName, isIgnore, isSolo, undefined, undefined, tags, noCatch);
148
- newAnnotation.isAsync = async;
149
- newAnnotation.asyncTimeout = asyncTimeout === -1 ? 2000 : asyncTimeout;
150
- if (testAnnotation) {
151
- (0, Diagnostics_1.diagnosticMultipleTestOnFunctionDefined)(file, newAnnotation.annotation);
152
- }
153
- else {
154
- testAnnotation = newAnnotation;
155
- }
156
- isSolo = false;
157
- isIgnore = false;
158
- async = false;
159
- asyncTimeout = -1;
160
- break;
161
- case AnnotationType.Params:
162
- case AnnotationType.SoloParams:
163
- case AnnotationType.IgnoreParams:
164
- if (testAnnotation) {
165
- testAnnotation.parseParams(file, annotation, annotationType, noCatch);
166
- }
167
- else {
168
- //error
169
- }
170
- break;
171
- case AnnotationType.None:
172
- default:
173
- continue;
98
+ // Break up the annotations grouped by Describes
99
+ let blocks = [];
100
+ let currentBlock = [];
101
+ for (const annotation of statement.annotations) {
102
+ currentBlock.push(annotation);
103
+ if (getAnnotationType(annotation.name) === AnnotationType.Describe) {
104
+ blocks.push(currentBlock);
105
+ currentBlock = [];
106
+ }
107
+ }
108
+ // Make sure to push the last block as the last annotation likely wasn't a Describe
109
+ if (blocks[blocks.length - 1] !== currentBlock) {
110
+ blocks.push(currentBlock);
111
+ }
112
+ for (const annotationBlock of blocks) {
113
+ // eslint-disable-next-line no-inner-declarations
114
+ function getAnnotationsOfType(...names) {
115
+ return annotationBlock.filter(a => names.includes(a.name.toLowerCase()));
116
+ }
117
+ noEarlyExit = getAnnotationsOfType(AnnotationType.NoEarlyExit).length > 0;
118
+ noCatch = getAnnotationsOfType(AnnotationType.NoCatch).length > 0;
119
+ isSolo = getAnnotationsOfType(AnnotationType.Solo).length > 0;
120
+ isIgnore = getAnnotationsOfType(AnnotationType.Ignore).length > 0;
121
+ for (const annotation of getAnnotationsOfType(AnnotationType.Async)) {
122
+ async = true;
123
+ asyncTimeout = annotation.getArguments().length === 1 ? parseInt(annotation.getArguments()[0]) : -1;
124
+ }
125
+ for (const annotation of getAnnotationsOfType(AnnotationType.NodeTest)) {
126
+ nodeName = annotation.getArguments()[0];
127
+ }
128
+ for (const annotation of getAnnotationsOfType(AnnotationType.Tags)) {
129
+ tags = annotation.getArguments().map((a) => a === null || a === void 0 ? void 0 : a.toString());
130
+ }
131
+ for (const annotation of getAnnotationsOfType(AnnotationType.BeforeEach, AnnotationType.AfterEach, AnnotationType.Setup, AnnotationType.TearDown)) {
132
+ testAnnotation = new RooibosAnnotation(file, annotation, getAnnotationType(annotation.name), annotation.name, annotation.name);
133
+ }
134
+ for (const annotation of getAnnotationsOfType(AnnotationType.Describe, AnnotationType.TestSuite)) {
135
+ const groupName = annotation.getArguments()[0];
136
+ blockAnnotation = new RooibosAnnotation(file, annotation, getAnnotationType(annotation.name), annotation.name, groupName, isIgnore, isSolo, null, nodeName, tags, noCatch, noEarlyExit);
137
+ blockAnnotation.isAsync = async;
138
+ blockAnnotation.asyncTimeout = asyncTimeout === -1 ? 60000 : asyncTimeout;
139
+ nodeName = null;
140
+ isSolo = false;
141
+ isIgnore = false;
142
+ async = false;
143
+ asyncTimeout = -1;
144
+ }
145
+ for (const annotation of getAnnotationsOfType(AnnotationType.It)) {
146
+ const testName = annotation.getArguments()[0];
147
+ if (!testName || testName.trim() === '') {
148
+ (0, Diagnostics_1.diagnosticNoTestNameDefined)(file, annotation);
149
+ }
150
+ let newAnnotation = new RooibosAnnotation(file, annotation, getAnnotationType(annotation.name), annotation.name, testName, isIgnore, isSolo, undefined, undefined, tags, noCatch);
151
+ newAnnotation.isAsync = async;
152
+ newAnnotation.asyncTimeout = asyncTimeout === -1 ? 2000 : asyncTimeout;
153
+ if (testAnnotation) {
154
+ (0, Diagnostics_1.diagnosticMultipleTestOnFunctionDefined)(file, newAnnotation.annotation);
155
+ }
156
+ else {
157
+ testAnnotation = newAnnotation;
158
+ }
159
+ isSolo = false;
160
+ isIgnore = false;
161
+ async = false;
162
+ asyncTimeout = -1;
163
+ }
164
+ for (const annotation of getAnnotationsOfType(AnnotationType.Params, AnnotationType.SoloParams, AnnotationType.IgnoreParams)) {
165
+ if (testAnnotation) {
166
+ testAnnotation.parseParams(file, annotation, getAnnotationType(annotation.name), noCatch);
167
+ }
168
+ else {
169
+ //error
170
+ }
174
171
  }
175
172
  }
176
173
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Annotation.js","sourceRoot":"","sources":["../../../src/lib/rooibos/Annotation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Annotation.js","sourceRoot":"","sources":["../../../src/lib/rooibos/Annotation.ts"],"names":[],"mappings":"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"}