@generaltranslation/compiler 1.3.17 → 1.3.19

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 (120) hide show
  1. package/dist/index.d.ts.map +1 -1
  2. package/dist/index.js +1 -0
  3. package/dist/index.js.map +1 -1
  4. package/dist/processing/collection/processCallExpression.js +11 -10
  5. package/dist/processing/collection/processCallExpression.js.map +1 -1
  6. package/dist/processing/collection/processTaggedTemplateExpression.d.ts.map +1 -1
  7. package/dist/processing/collection/processTaggedTemplateExpression.js +5 -1
  8. package/dist/processing/collection/processTaggedTemplateExpression.js.map +1 -1
  9. package/dist/processing/macro-expansion/processTaggedTemplateExpression.d.ts.map +1 -1
  10. package/dist/processing/macro-expansion/processTaggedTemplateExpression.js +5 -1
  11. package/dist/processing/macro-expansion/processTaggedTemplateExpression.js.map +1 -1
  12. package/dist/state/ScopeTracker.d.ts.map +1 -1
  13. package/dist/state/ScopeTracker.js.map +1 -1
  14. package/dist/transform/injection/callbacks/injectUseGTCallbackParameters.js +2 -2
  15. package/dist/transform/injection/callbacks/injectUseGTCallbackParameters.js.map +1 -1
  16. package/dist/transform/injection/callbacks/injectUseMessagesCallbackParameters.d.ts +1 -1
  17. package/dist/transform/injection/callbacks/injectUseMessagesCallbackParameters.d.ts.map +1 -1
  18. package/dist/transform/injection/callbacks/injectUseMessagesCallbackParameters.js +1 -1
  19. package/dist/transform/injection/callbacks/injectUseMessagesCallbackParameters.js.map +1 -1
  20. package/dist/transform/injection/callbacks/injectUseTranslationsCallbackParameters.d.ts +1 -1
  21. package/dist/transform/injection/callbacks/injectUseTranslationsCallbackParameters.d.ts.map +1 -1
  22. package/dist/transform/injection/callbacks/injectUseTranslationsCallbackParameters.js +1 -1
  23. package/dist/transform/injection/callbacks/injectUseTranslationsCallbackParameters.js.map +1 -1
  24. package/dist/transform/injection/injectStandaloneTFunctionParameters.js +2 -2
  25. package/dist/transform/injection/injectStandaloneTFunctionParameters.js.map +1 -1
  26. package/dist/transform/jsx-children/constructJsxChildren.d.ts +10 -5
  27. package/dist/transform/jsx-children/constructJsxChildren.d.ts.map +1 -1
  28. package/dist/transform/jsx-children/constructJsxChildren.js +42 -30
  29. package/dist/transform/jsx-children/constructJsxChildren.js.map +1 -1
  30. package/dist/transform/jsx-children/index.d.ts +1 -1
  31. package/dist/transform/jsx-children/index.d.ts.map +1 -1
  32. package/dist/transform/jsx-children/index.js +1 -1
  33. package/dist/transform/jsx-children/index.js.map +1 -1
  34. package/dist/transform/jsx-children/utils/getBranchComponentParameters.d.ts +3 -2
  35. package/dist/transform/jsx-children/utils/getBranchComponentParameters.d.ts.map +1 -1
  36. package/dist/transform/jsx-children/utils/getBranchComponentParameters.js +12 -10
  37. package/dist/transform/jsx-children/utils/getBranchComponentParameters.js.map +1 -1
  38. package/dist/transform/jsx-children/validation/validateChildrenFromArgs.d.ts +4 -3
  39. package/dist/transform/jsx-children/validation/validateChildrenFromArgs.d.ts.map +1 -1
  40. package/dist/transform/jsx-children/validation/validateChildrenFromArgs.js +13 -3
  41. package/dist/transform/jsx-children/validation/validateChildrenFromArgs.js.map +1 -1
  42. package/dist/transform/macro-expansion/transformTemplateLiteral.d.ts +4 -2
  43. package/dist/transform/macro-expansion/transformTemplateLiteral.d.ts.map +1 -1
  44. package/dist/transform/macro-expansion/transformTemplateLiteral.js +8 -4
  45. package/dist/transform/macro-expansion/transformTemplateLiteral.js.map +1 -1
  46. package/dist/transform/registration/callbacks/registerUseMessagesCallback.d.ts +1 -1
  47. package/dist/transform/registration/callbacks/registerUseMessagesCallback.d.ts.map +1 -1
  48. package/dist/transform/registration/callbacks/registerUseMessagesCallback.js +1 -1
  49. package/dist/transform/registration/callbacks/registerUseMessagesCallback.js.map +1 -1
  50. package/dist/transform/registration/callbacks/registerUseTranslationsCallback.d.ts +1 -1
  51. package/dist/transform/registration/callbacks/registerUseTranslationsCallback.d.ts.map +1 -1
  52. package/dist/transform/registration/callbacks/registerUseTranslationsCallback.js +2 -2
  53. package/dist/transform/registration/callbacks/registerUseTranslationsCallback.js.map +1 -1
  54. package/dist/transform/tracking/trackAssignmentExpression.js +1 -1
  55. package/dist/transform/tracking/trackAssignmentExpression.js.map +1 -1
  56. package/dist/transform/validation/validateTranslationComponentArgs.d.ts +3 -2
  57. package/dist/transform/validation/validateTranslationComponentArgs.d.ts.map +1 -1
  58. package/dist/transform/validation/validateTranslationComponentArgs.js +17 -8
  59. package/dist/transform/validation/validateTranslationComponentArgs.js.map +1 -1
  60. package/dist/transform/validation/{validateTranslationFunctionCallback.d.ts → validateTranslationFunction.d.ts} +3 -3
  61. package/dist/transform/validation/validateTranslationFunction.d.ts.map +1 -0
  62. package/dist/transform/validation/{validateTranslationFunctionCallback.js → validateTranslationFunction.js} +34 -14
  63. package/dist/transform/validation/validateTranslationFunction.js.map +1 -0
  64. package/dist/utils/constants/gt/constants.d.ts +0 -8
  65. package/dist/utils/constants/gt/constants.d.ts.map +1 -1
  66. package/dist/utils/constants/gt/constants.js +1 -10
  67. package/dist/utils/constants/gt/constants.js.map +1 -1
  68. package/dist/utils/constants/gt/helpers.d.ts +0 -6
  69. package/dist/utils/constants/gt/helpers.d.ts.map +1 -1
  70. package/dist/utils/constants/gt/helpers.js +1 -10
  71. package/dist/utils/constants/gt/helpers.js.map +1 -1
  72. package/dist/utils/constants/resolveIdentifier/isReactJsxFunction.js +1 -1
  73. package/dist/utils/constants/resolveIdentifier/isReactJsxFunction.js.map +1 -1
  74. package/dist/utils/multiplication/multiply.d.ts +26 -0
  75. package/dist/utils/multiplication/multiply.d.ts.map +1 -0
  76. package/dist/utils/multiplication/multiply.js +43 -0
  77. package/dist/utils/multiplication/multiply.js.map +1 -0
  78. package/dist/utils/multiplication/types.d.ts +26 -0
  79. package/dist/utils/multiplication/types.d.ts.map +1 -0
  80. package/dist/utils/multiplication/types.js +3 -0
  81. package/dist/utils/multiplication/types.js.map +1 -0
  82. package/dist/utils/parsing/getObjectPropertyFromObjectExpression.d.ts +5 -0
  83. package/dist/utils/parsing/getObjectPropertyFromObjectExpression.d.ts.map +1 -1
  84. package/dist/utils/parsing/getObjectPropertyFromObjectExpression.js +22 -12
  85. package/dist/utils/parsing/getObjectPropertyFromObjectExpression.js.map +1 -1
  86. package/dist/utils/string-expressions/flattenExpressionToParts.d.ts +10 -3
  87. package/dist/utils/string-expressions/flattenExpressionToParts.d.ts.map +1 -1
  88. package/dist/utils/string-expressions/flattenExpressionToParts.js +42 -8
  89. package/dist/utils/string-expressions/flattenExpressionToParts.js.map +1 -1
  90. package/dist/utils/string-expressions/resolveStaticExpression.d.ts +10 -5
  91. package/dist/utils/string-expressions/resolveStaticExpression.d.ts.map +1 -1
  92. package/dist/utils/string-expressions/resolveStaticExpression.js +23 -13
  93. package/dist/utils/string-expressions/resolveStaticExpression.js.map +1 -1
  94. package/dist/utils/validation/validateChildrenFromObjectExpression.d.ts +4 -3
  95. package/dist/utils/validation/validateChildrenFromObjectExpression.d.ts.map +1 -1
  96. package/dist/utils/validation/validateChildrenFromObjectExpression.js +8 -41
  97. package/dist/utils/validation/validateChildrenFromObjectExpression.js.map +1 -1
  98. package/package.json +2 -5
  99. package/dist/transform/tracking/trackLabeledStatement.d.ts +0 -8
  100. package/dist/transform/tracking/trackLabeledStatement.d.ts.map +0 -1
  101. package/dist/transform/tracking/trackLabeledStatement.js +0 -13
  102. package/dist/transform/tracking/trackLabeledStatement.js.map +0 -1
  103. package/dist/transform/validation/validateTranslationFunctionCallback.d.ts.map +0 -1
  104. package/dist/transform/validation/validateTranslationFunctionCallback.js.map +0 -1
  105. package/dist/utils/parsing/getAttr.d.ts +0 -6
  106. package/dist/utils/parsing/getAttr.d.ts.map +0 -1
  107. package/dist/utils/parsing/getAttr.js +0 -71
  108. package/dist/utils/parsing/getAttr.js.map +0 -1
  109. package/dist/utils/parsing/getStringLiteralFromObjectExpression.d.ts +0 -6
  110. package/dist/utils/parsing/getStringLiteralFromObjectExpression.d.ts.map +0 -1
  111. package/dist/utils/parsing/getStringLiteralFromObjectExpression.js +0 -64
  112. package/dist/utils/parsing/getStringLiteralFromObjectExpression.js.map +0 -1
  113. package/dist/utils/parsing/getTag.d.ts +0 -8
  114. package/dist/utils/parsing/getTag.d.ts.map +0 -1
  115. package/dist/utils/parsing/getTag.js +0 -81
  116. package/dist/utils/parsing/getTag.js.map +0 -1
  117. package/dist/utils/string-expressions/mergeAdjacentStaticParts.d.ts +0 -6
  118. package/dist/utils/string-expressions/mergeAdjacentStaticParts.d.ts.map +0 -1
  119. package/dist/utils/string-expressions/mergeAdjacentStaticParts.js +0 -22
  120. package/dist/utils/string-expressions/mergeAdjacentStaticParts.js.map +0 -1
@@ -1,64 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.getStringLiteralFromObjectExpression = getStringLiteralFromObjectExpression;
37
- const t = __importStar(require("@babel/types"));
38
- const validateExpressionIsStringLiteral_1 = require("../validation/validateExpressionIsStringLiteral");
39
- const getStringLiteralFromExpression_1 = require("./getStringLiteralFromExpression");
40
- /**
41
- * Given an expression, return the object property
42
- */
43
- function getStringLiteralFromObjectExpression(objExpr, name) {
44
- for (const property of objExpr.properties) {
45
- // Skip spread elements and methods
46
- if (t.isSpreadElement(property) || t.isMethod(property)) {
47
- continue;
48
- }
49
- // Skip non-string literals
50
- // TODO: switch this over to error extraction format
51
- if (!t.isExpression(property.value) ||
52
- !(0, validateExpressionIsStringLiteral_1.validateExpressionIsStringLiteral)(property.value)) {
53
- continue;
54
- }
55
- // Skip non-matching keys
56
- if (t.isIdentifier(property.key) && property.key.name === name) {
57
- return (0, getStringLiteralFromExpression_1.getStringLiteralFromExpression)(property.value);
58
- }
59
- if (t.isStringLiteral(property.key) && property.key.value === name) {
60
- return (0, getStringLiteralFromExpression_1.getStringLiteralFromExpression)(property.value);
61
- }
62
- }
63
- }
64
- //# sourceMappingURL=getStringLiteralFromObjectExpression.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getStringLiteralFromObjectExpression.js","sourceRoot":"","sources":["../../../src/utils/parsing/getStringLiteralFromObjectExpression.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,oFAyBC;AA/BD,gDAAkC;AAClC,uGAAoG;AACpG,qFAAkF;AAClF;;GAEG;AACH,SAAgB,oCAAoC,CAClD,OAA2B,EAC3B,IAAY;IAEZ,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QAC1C,mCAAmC;QACnC,IAAI,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxD,SAAS;QACX,CAAC;QACD,2BAA2B;QAC3B,oDAAoD;QACpD,IACE,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC/B,CAAC,IAAA,qEAAiC,EAAC,QAAQ,CAAC,KAAK,CAAC,EAClD,CAAC;YACD,SAAS;QACX,CAAC;QACD,yBAAyB;QACzB,IAAI,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC/D,OAAO,IAAA,+DAA8B,EAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxD,CAAC;QACD,IAAI,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACnE,OAAO,IAAA,+DAA8B,EAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,8 +0,0 @@
1
- import * as t from '@babel/types';
2
- /**
3
- * Get the tag name from a JSX element or fragment, eg "div" from <div>
4
- * @param element - The element to get the tag name from
5
- * @returns The tag name
6
- */
7
- export declare function getTag(element: t.JSXElement | t.JSXFragment): string;
8
- //# sourceMappingURL=getTag.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getTag.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/getTag.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,cAAc,CAAC;AAElC;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,WAAW,GAAG,MAAM,CAMpE"}
@@ -1,81 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.getTag = getTag;
37
- const t = __importStar(require("@babel/types"));
38
- /**
39
- * Get the tag name from a JSX element or fragment, eg "div" from <div>
40
- * @param element - The element to get the tag name from
41
- * @returns The tag name
42
- */
43
- function getTag(element) {
44
- if (t.isJSXElement(element)) {
45
- return handleOpeningElement(element.openingElement);
46
- }
47
- else {
48
- return 'fragment';
49
- }
50
- }
51
- /**
52
- * Handle the opening element of a JSX element
53
- * @param element - The opening element to handle
54
- * @returns The tag name
55
- */
56
- function handleOpeningElement(element) {
57
- if (t.isJSXIdentifier(element.name)) {
58
- return element.name.name;
59
- }
60
- else if (t.isJSXMemberExpression(element.name)) {
61
- return handleJsxMemberExpression(element.name);
62
- }
63
- else {
64
- // JSXNamespacedName
65
- throw new Error('JSXNamespacedName is not supported');
66
- }
67
- }
68
- /**
69
- * Handle the member expression of a JSX element
70
- * @param element - The member expression to handle
71
- * @returns The tag name
72
- */
73
- function handleJsxMemberExpression(element) {
74
- if (t.isJSXIdentifier(element.object)) {
75
- return `${element.object.name}.${element.property.name}`;
76
- }
77
- else {
78
- return `${handleJsxMemberExpression(element.object)}.${element.property.name}`;
79
- }
80
- }
81
- //# sourceMappingURL=getTag.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getTag.js","sourceRoot":"","sources":["../../../src/utils/parsing/getTag.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,wBAMC;AAbD,gDAAkC;AAElC;;;;GAIG;AACH,SAAgB,MAAM,CAAC,OAAqC;IAC1D,IAAI,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,OAAO,oBAAoB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,OAAO,UAAU,CAAC;IACpB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAAC,OAA4B;IACxD,IAAI,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,OAAO,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;IAC3B,CAAC;SAAM,IAAI,CAAC,CAAC,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,OAAO,yBAAyB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;SAAM,CAAC;QACN,oBAAoB;QACpB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,yBAAyB,CAAC,OAA8B;IAC/D,IAAI,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC3D,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,yBAAyB,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACjF,CAAC;AACH,CAAC"}
@@ -1,6 +0,0 @@
1
- import { Part } from './flattenExpressionToParts';
2
- /**
3
- * Collapse consecutive static parts by concatenating their values.
4
- */
5
- export declare function mergeAdjacentStaticParts(parts: Part[]): Part[];
6
- //# sourceMappingURL=mergeAdjacentStaticParts.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mergeAdjacentStaticParts.d.ts","sourceRoot":"","sources":["../../../src/utils/string-expressions/mergeAdjacentStaticParts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,4BAA4B,CAAC;AAElD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAe9D"}
@@ -1,22 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mergeAdjacentStaticParts = mergeAdjacentStaticParts;
4
- /**
5
- * Collapse consecutive static parts by concatenating their values.
6
- */
7
- function mergeAdjacentStaticParts(parts) {
8
- const merged = [];
9
- for (const part of parts) {
10
- if (part.type === 'static' &&
11
- merged.length > 0 &&
12
- merged[merged.length - 1].type === 'static') {
13
- merged[merged.length - 1].value +=
14
- part.value;
15
- }
16
- else {
17
- merged.push(part);
18
- }
19
- }
20
- return merged;
21
- }
22
- //# sourceMappingURL=mergeAdjacentStaticParts.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"mergeAdjacentStaticParts.js","sourceRoot":"","sources":["../../../src/utils/string-expressions/mergeAdjacentStaticParts.ts"],"names":[],"mappings":";;AAKA,4DAeC;AAlBD;;GAEG;AACH,SAAgB,wBAAwB,CAAC,KAAa;IACpD,MAAM,MAAM,GAAW,EAAE,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IACE,IAAI,CAAC,IAAI,KAAK,QAAQ;YACtB,MAAM,CAAC,MAAM,GAAG,CAAC;YACjB,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,EAC3C,CAAC;YACA,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAuC,CAAC,KAAK;gBACpE,IAAI,CAAC,KAAK,CAAC;QACf,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}