mintlify 1.1.9 → 1.1.10

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 (164) hide show
  1. package/README.md +3 -1
  2. package/bin/local-preview/index.js +1 -1
  3. package/bin/local-preview/index.js.map +1 -1
  4. package/bin/local-preview/injectNav.js +94 -0
  5. package/bin/local-preview/injectNav.js.map +1 -0
  6. package/bin/mint/client/.babel-plugin-macrosrc.json +5 -0
  7. package/bin/mint/client/.babelrc +4 -0
  8. package/bin/mint/client/.editorconfig +12 -0
  9. package/bin/mint/client/.eslintrc.json +7 -0
  10. package/bin/mint/client/.prettierignore +4 -0
  11. package/bin/mint/client/.prettierrc +14 -0
  12. package/bin/mint/client/.vscode/launch.json +28 -0
  13. package/bin/mint/client/README.md +44 -0
  14. package/bin/mint/client/jest.config.ts +195 -0
  15. package/bin/mint/client/next-env.d.ts +4 -0
  16. package/bin/mint/client/next.config.js +152 -0
  17. package/bin/mint/client/package.json +139 -0
  18. package/bin/mint/client/postcss.config.cjs +9 -0
  19. package/bin/mint/client/prebuild/faviconConfig.js +35 -0
  20. package/bin/mint/client/prebuild/getOpenApiContext.js +53 -0
  21. package/bin/mint/client/prebuild/index.js +117 -0
  22. package/bin/mint/client/prebuild/injectNav.js +115 -0
  23. package/bin/mint/client/prebuild/slugToTitle.js +7 -0
  24. package/bin/mint/client/rehype/withApiComponents.js +60 -0
  25. package/bin/mint/client/rehype/withCodeBlocks.js +54 -0
  26. package/bin/mint/client/rehype/withLayouts.js +113 -0
  27. package/bin/mint/client/rehype/withLinkRoles.js +13 -0
  28. package/bin/mint/client/rehype/withRawComponents.js +13 -0
  29. package/bin/mint/client/rehype/withStaticProps.js +25 -0
  30. package/bin/mint/client/rehype/withSyntaxHighlighting.js +60 -0
  31. package/bin/mint/client/remark/utils.js +369 -0
  32. package/bin/mint/client/remark/withFrames.js +55 -0
  33. package/bin/mint/client/remark/withImportsInjected.js +36 -0
  34. package/bin/mint/client/remark/withNextLinks.js +37 -0
  35. package/bin/mint/client/remark/withTableOfContents.js +71 -0
  36. package/bin/mint/client/scripts/local.js +177 -0
  37. package/bin/mint/client/sentry.client.config.js +15 -0
  38. package/bin/mint/client/sentry.properties +4 -0
  39. package/bin/mint/client/sentry.server.config.js +15 -0
  40. package/bin/mint/client/src/analytics/AbstractAnalyticsImplementation.ts +50 -0
  41. package/bin/mint/client/src/analytics/AnalyticsContext.ts +5 -0
  42. package/bin/mint/client/src/analytics/AnalyticsMediator.ts +101 -0
  43. package/bin/mint/client/src/analytics/FakeAnalyticsMediator.ts +9 -0
  44. package/bin/mint/client/src/analytics/GA4Script.tsx +33 -0
  45. package/bin/mint/client/src/analytics/implementations/amplitude.ts +26 -0
  46. package/bin/mint/client/src/analytics/implementations/fathom.ts +38 -0
  47. package/bin/mint/client/src/analytics/implementations/ga4.ts +33 -0
  48. package/bin/mint/client/src/analytics/implementations/hotjar.ts +53 -0
  49. package/bin/mint/client/src/analytics/implementations/mixpanel-browser.d.ts +1 -0
  50. package/bin/mint/client/src/analytics/implementations/mixpanel.ts +52 -0
  51. package/bin/mint/client/src/analytics/implementations/posthog.ts +37 -0
  52. package/bin/mint/client/src/components/Accordion/Accordion.tsx +43 -0
  53. package/bin/mint/client/src/components/Accordion/index.ts +4 -0
  54. package/bin/mint/client/src/components/ApiExample.tsx +9 -0
  55. package/bin/mint/client/src/components/Card.tsx +51 -0
  56. package/bin/mint/client/src/components/CodeGroup.tsx +132 -0
  57. package/bin/mint/client/src/components/Editor.tsx +12 -0
  58. package/bin/mint/client/src/components/Expandable.tsx +40 -0
  59. package/bin/mint/client/src/components/Heading.tsx +84 -0
  60. package/bin/mint/client/src/components/Param.tsx +56 -0
  61. package/bin/mint/client/src/components/Request.tsx +19 -0
  62. package/bin/mint/client/src/components/ResponseField.tsx +33 -0
  63. package/bin/mint/client/src/components/TabBar.tsx +61 -0
  64. package/bin/mint/client/src/config.ts +115 -0
  65. package/bin/mint/client/src/css/bar-of-progress.css +10 -0
  66. package/bin/mint/client/src/css/base.css +29 -0
  67. package/bin/mint/client/src/css/font-awesome.css +7 -0
  68. package/bin/mint/client/src/css/fonts.css +44 -0
  69. package/bin/mint/client/src/css/main.css +11 -0
  70. package/bin/mint/client/src/css/prism.css +270 -0
  71. package/bin/mint/client/src/css/utilities.css +43 -0
  72. package/bin/mint/client/src/enums/components.ts +8 -0
  73. package/bin/mint/client/src/fonts/FiraCode-VF.woff +0 -0
  74. package/bin/mint/client/src/fonts/FiraCode-VF.woff2 +0 -0
  75. package/bin/mint/client/src/fonts/IBMPlexMono-Regular.ttf +0 -0
  76. package/bin/mint/client/src/fonts/IBMPlexMono-SemiBold.ttf +0 -0
  77. package/bin/mint/client/src/fonts/Inter-italic-latin.var.woff2 +0 -0
  78. package/bin/mint/client/src/fonts/Inter-roman-latin.var.woff2 +0 -0
  79. package/bin/mint/client/src/fonts/Pally-Variable.ttf +0 -0
  80. package/bin/mint/client/src/fonts/SourceSansPro-Regular.otf +0 -0
  81. package/bin/mint/client/src/fonts/SourceSerifPro-Regular.ttf +0 -0
  82. package/bin/mint/client/src/fonts/Synonym-Variable.ttf +0 -0
  83. package/bin/mint/client/src/fonts/Ubuntu-Mono-bold.woff2 +0 -0
  84. package/bin/mint/client/src/fonts/generated/IBMPlexMono-Regular-subset.woff2 +0 -0
  85. package/bin/mint/client/src/fonts/generated/IBMPlexMono-Regular-subset.zopfli.woff +0 -0
  86. package/bin/mint/client/src/fonts/generated/IBMPlexMono-Regular.module.css +11 -0
  87. package/bin/mint/client/src/fonts/generated/IBMPlexMono-SemiBold-subset.woff2 +0 -0
  88. package/bin/mint/client/src/fonts/generated/IBMPlexMono-SemiBold-subset.zopfli.woff +0 -0
  89. package/bin/mint/client/src/fonts/generated/IBMPlexMono-SemiBold.module.css +11 -0
  90. package/bin/mint/client/src/fonts/generated/Pally-Variable-subset.woff2 +0 -0
  91. package/bin/mint/client/src/fonts/generated/Pally-Variable-subset.zopfli.woff +0 -0
  92. package/bin/mint/client/src/fonts/generated/Pally-Variable.module.css +11 -0
  93. package/bin/mint/client/src/fonts/generated/SourceSerifPro-Regular-subset.woff2 +0 -0
  94. package/bin/mint/client/src/fonts/generated/SourceSerifPro-Regular-subset.zopfli.woff +0 -0
  95. package/bin/mint/client/src/fonts/generated/SourceSerifPro-Regular.module.css +11 -0
  96. package/bin/mint/client/src/fonts/generated/Synonym-Variable-subset.woff2 +0 -0
  97. package/bin/mint/client/src/fonts/generated/Synonym-Variable-subset.zopfli.woff +0 -0
  98. package/bin/mint/client/src/fonts/generated/Synonym-Variable.module.css +11 -0
  99. package/bin/mint/client/src/fonts/generated/TenorSans-Regular-subset.woff2 +0 -0
  100. package/bin/mint/client/src/fonts/generated/TenorSans-Regular-subset.zopfli.woff +0 -0
  101. package/bin/mint/client/src/fonts/generated/TenorSans-Regular.module.css +11 -0
  102. package/bin/mint/client/src/hooks/useActionKey.ts +20 -0
  103. package/bin/mint/client/src/hooks/useIsomorphicLayoutEffect.ts +3 -0
  104. package/bin/mint/client/src/hooks/useMedia.ts +27 -0
  105. package/bin/mint/client/src/hooks/usePrevNext.ts +34 -0
  106. package/bin/mint/client/src/hooks/useTop.ts +15 -0
  107. package/bin/mint/client/src/icons/CopyToClipboard.tsx +33 -0
  108. package/bin/mint/client/src/index.d.ts +1 -0
  109. package/bin/mint/client/src/layouts/ApiSupplemental.tsx +173 -0
  110. package/bin/mint/client/src/layouts/ContentsLayout.tsx +256 -0
  111. package/bin/mint/client/src/layouts/DocumentationLayout.tsx +44 -0
  112. package/bin/mint/client/src/layouts/OpenApiContent.tsx +301 -0
  113. package/bin/mint/client/src/layouts/SidebarLayout.tsx +412 -0
  114. package/bin/mint/client/src/layouts/UserFeedback.tsx +73 -0
  115. package/bin/mint/client/src/layouts/getGroupsInDivision.ts +25 -0
  116. package/bin/mint/client/src/layouts/isPathInGroupPages.ts +10 -0
  117. package/bin/mint/client/src/metadata.ts +58 -0
  118. package/bin/mint/client/src/nav.json +219 -0
  119. package/bin/mint/client/src/openapi.ts +3 -0
  120. package/bin/mint/client/src/pages/404.tsx +73 -0
  121. package/bin/mint/client/src/pages/_app.tsx +138 -0
  122. package/bin/mint/client/src/pages/_document.tsx +57 -0
  123. package/bin/mint/client/src/pages/api/issue.ts +10 -0
  124. package/bin/mint/client/src/pages/api/name.ts +8 -0
  125. package/bin/mint/client/src/pages/api/request.ts +31 -0
  126. package/bin/mint/client/src/pages/api/suggest.ts +10 -0
  127. package/bin/mint/client/src/pages/api/syntax-highlighted-json.ts +13 -0
  128. package/bin/mint/client/src/pages/api/utils.ts +6 -0
  129. package/bin/mint/client/src/pages/index.tsx +31 -0
  130. package/bin/mint/client/src/ui/Api.tsx +359 -0
  131. package/bin/mint/client/src/ui/Footer.tsx +124 -0
  132. package/bin/mint/client/src/ui/Header.tsx +370 -0
  133. package/bin/mint/client/src/ui/Logo.tsx +55 -0
  134. package/bin/mint/client/src/ui/PageHeader.tsx +51 -0
  135. package/bin/mint/client/src/ui/Search.tsx +386 -0
  136. package/bin/mint/client/src/ui/ThemeToggle.tsx +285 -0
  137. package/bin/mint/client/src/ui/Title.tsx +22 -0
  138. package/bin/mint/client/src/ui/TopLevelLink.tsx +122 -0
  139. package/bin/mint/client/src/utils/api.ts +252 -0
  140. package/bin/mint/client/src/utils/brands.ts +217 -0
  141. package/bin/mint/client/src/utils/castArray.ts +3 -0
  142. package/bin/mint/client/src/utils/childrenArray.ts +3 -0
  143. package/bin/mint/client/src/utils/fit.ts +27 -0
  144. package/bin/mint/client/src/utils/fontAwesome.ts +577 -0
  145. package/bin/mint/client/src/utils/getAnalyticsConfig.ts +14 -0
  146. package/bin/mint/client/src/utils/getLogoHref.ts +9 -0
  147. package/bin/mint/client/src/utils/getOpenApiContext.ts +26 -0
  148. package/bin/mint/client/src/utils/importAll.ts +6 -0
  149. package/bin/mint/client/src/utils/isObject.ts +3 -0
  150. package/bin/mint/client/src/utils/kebabToTitleCase.ts +3 -0
  151. package/bin/mint/client/src/utils/loadImage.ts +8 -0
  152. package/bin/mint/client/src/utils/slugToTitle.ts +7 -0
  153. package/bin/mint/client/src/utils/wait.ts +5 -0
  154. package/bin/mint/client/tailwind.config.cjs +323 -0
  155. package/bin/mint/client/test/test.test.ts +5 -0
  156. package/bin/mint/client/tsconfig.json +36 -0
  157. package/bin/mint/client/yarn.lock +9702 -0
  158. package/bin/scraping/site-scrapers/openNestedGitbookMenus.js +9 -28
  159. package/bin/scraping/site-scrapers/openNestedGitbookMenus.js.map +1 -1
  160. package/package.json +1 -1
  161. package/src/local-preview/index.ts +3 -1
  162. package/src/scraping/site-scrapers/openNestedGitbookMenus.ts +17 -42
  163. package/bin/local-preview/helper-commands/cleanCommand.js +0 -8
  164. package/bin/local-preview/helper-commands/cleanCommand.js.map +0 -1
@@ -1,36 +1,17 @@
1
1
  export default async function openNestedGitbookMenus(page) {
2
- let prevEncountered = [];
3
- let encounteredHref = ["fake-href-to-make-loop-run-at-least-once"];
4
- // Loop until we've encountered every link
5
- while (!encounteredHref.every((href) => prevEncountered.includes(href))) {
6
- prevEncountered = encounteredHref;
7
- encounteredHref = await page.evaluate((encounteredHref) => {
2
+ let clickedAny = true;
3
+ // Loop until we've encountered every closed menu
4
+ while (clickedAny) {
5
+ clickedAny = await page.evaluate(() => {
6
+ // Right pointing arrow. Only closed menus have this icon
8
7
  const icons = Array.from(document.querySelectorAll('path[d="M9 18l6-6-6-6"]'));
9
- const linksFound = [];
10
8
  icons.forEach(async (icon) => {
11
- var _a, _b;
9
+ var _a;
12
10
  const toClick = (_a = icon === null || icon === void 0 ? void 0 : icon.parentElement) === null || _a === void 0 ? void 0 : _a.parentElement;
13
- const link = (_b = toClick === null || toClick === void 0 ? void 0 : toClick.parentElement) === null || _b === void 0 ? void 0 : _b.parentElement;
14
- // Skip icons not in the side navigation
15
- if (!(link === null || link === void 0 ? void 0 : link.hasAttribute("href"))) {
16
- return;
17
- }
18
- const href = link.getAttribute("href");
19
- // Should never occur but we keep it as a fail-safe
20
- if ((href === null || href === void 0 ? void 0 : href.startsWith("https://")) || (href === null || href === void 0 ? void 0 : href.startsWith("http://"))) {
21
- return;
22
- }
23
- // Click any links we haven't seen before
24
- if (href && !encounteredHref.includes(href)) {
25
- toClick === null || toClick === void 0 ? void 0 : toClick.click();
26
- }
27
- if (href) {
28
- linksFound.push(href);
29
- }
11
+ toClick.click();
30
12
  });
31
- return linksFound;
32
- }, encounteredHref // Need to pass array into the browser
33
- );
13
+ return icons.length > 0;
14
+ });
34
15
  }
35
16
  return await page.content();
36
17
  }
@@ -1 +1 @@
1
- {"version":3,"file":"openNestedGitbookMenus.js","sourceRoot":"","sources":["../../../src/scraping/site-scrapers/openNestedGitbookMenus.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAU;IAC7D,IAAI,eAAe,GAAa,EAAE,CAAC;IACnC,IAAI,eAAe,GAAG,CAAC,0CAA0C,CAAC,CAAC;IAEnE,0CAA0C;IAC1C,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE;QACvE,eAAe,GAAG,eAAe,CAAC;QAClC,eAAe,GAAG,MAAM,IAAI,CAAC,QAAQ,CACnC,CAAC,eAAe,EAAE,EAAE;YAClB,MAAM,KAAK,GAAkB,KAAK,CAAC,IAAI,CACrC,QAAQ,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,CACrD,CAAC;YAEF,MAAM,UAAU,GAAa,EAAE,CAAC;YAChC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAiB,EAAE,EAAE;;gBACxC,MAAM,OAAO,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,0CAAE,aAAa,CAAC;gBACnD,MAAM,IAAI,GAAG,MAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,aAAa,0CAAE,aAAa,CAAC;gBAEnD,wCAAwC;gBACxC,IAAI,CAAC,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,YAAY,CAAC,MAAM,CAAC,CAAA,EAAE;oBAC/B,OAAO;iBACR;gBAED,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBAEvC,mDAAmD;gBACnD,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,CAAC,UAAU,CAAC,MAAI,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,UAAU,CAAC,SAAS,CAAC,CAAA,EAAE;oBAC/D,OAAO;iBACR;gBAED,yCAAyC;gBACzC,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;oBAC3C,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,KAAK,EAAE,CAAC;iBAClB;gBACD,IAAI,IAAI,EAAE;oBACR,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACvB;YACH,CAAC,CAAC,CAAC;YAEH,OAAO,UAAU,CAAC;QACpB,CAAC,EACD,eAAe,CAAC,sCAAsC;SACvD,CAAC;KACH;IAED,OAAO,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AAC9B,CAAC"}
1
+ {"version":3,"file":"openNestedGitbookMenus.js","sourceRoot":"","sources":["../../../src/scraping/site-scrapers/openNestedGitbookMenus.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAU;IAC7D,IAAI,UAAU,GAAG,IAAI,CAAC;IAEtB,iDAAiD;IACjD,OAAO,UAAU,EAAE;QACjB,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACpC,yDAAyD;YACzD,MAAM,KAAK,GAAkB,KAAK,CAAC,IAAI,CACrC,QAAQ,CAAC,gBAAgB,CAAC,yBAAyB,CAAC,CACrD,CAAC;YAEF,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAiB,EAAE,EAAE;;gBACxC,MAAM,OAAO,GAAG,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,aAAa,0CAAE,aAAa,CAAC;gBACnD,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,CAAC,CAAC,CAAC;YAEH,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;KACJ;IAED,OAAO,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;AAC9B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mintlify",
3
- "version": "1.1.9",
3
+ "version": "1.1.10",
4
4
  "description": "The Mintlify CLI",
5
5
  "engines": {
6
6
  "node": ">=14.16"
@@ -144,7 +144,9 @@ const dev = async () => {
144
144
  if (internet && gitInstalled) {
145
145
  shellExec("git config core.sparseCheckout true");
146
146
  shellExec('echo "client/" >> .git/info/sparse-checkout');
147
- pullOutput = shellExec("git pull mint-origin main").stdout;
147
+ pullOutput = shellExec(
148
+ "git pull mint-origin legacy-components-import"
149
+ ).stdout;
148
150
  shellExec("git config core.sparseCheckout false");
149
151
  shellExec("rm .git/info/sparse-checkout");
150
152
  }
@@ -1,48 +1,23 @@
1
1
  import { Page } from "puppeteer";
2
2
 
3
3
  export default async function openNestedGitbookMenus(page: Page) {
4
- let prevEncountered: string[] = [];
5
- let encounteredHref = ["fake-href-to-make-loop-run-at-least-once"];
6
-
7
- // Loop until we've encountered every link
8
- while (!encounteredHref.every((href) => prevEncountered.includes(href))) {
9
- prevEncountered = encounteredHref;
10
- encounteredHref = await page.evaluate(
11
- (encounteredHref) => {
12
- const icons: HTMLElement[] = Array.from(
13
- document.querySelectorAll('path[d="M9 18l6-6-6-6"]')
14
- );
15
-
16
- const linksFound: string[] = [];
17
- icons.forEach(async (icon: HTMLElement) => {
18
- const toClick = icon?.parentElement?.parentElement;
19
- const link = toClick?.parentElement?.parentElement;
20
-
21
- // Skip icons not in the side navigation
22
- if (!link?.hasAttribute("href")) {
23
- return;
24
- }
25
-
26
- const href = link.getAttribute("href");
27
-
28
- // Should never occur but we keep it as a fail-safe
29
- if (href?.startsWith("https://") || href?.startsWith("http://")) {
30
- return;
31
- }
32
-
33
- // Click any links we haven't seen before
34
- if (href && !encounteredHref.includes(href)) {
35
- toClick?.click();
36
- }
37
- if (href) {
38
- linksFound.push(href);
39
- }
40
- });
41
-
42
- return linksFound;
43
- },
44
- encounteredHref // Need to pass array into the browser
45
- );
4
+ let clickedAny = true;
5
+
6
+ // Loop until we've encountered every closed menu
7
+ while (clickedAny) {
8
+ clickedAny = await page.evaluate(() => {
9
+ // Right pointing arrow. Only closed menus have this icon
10
+ const icons: HTMLElement[] = Array.from(
11
+ document.querySelectorAll('path[d="M9 18l6-6-6-6"]')
12
+ );
13
+
14
+ icons.forEach(async (icon: HTMLElement) => {
15
+ const toClick = icon?.parentElement?.parentElement;
16
+ toClick.click();
17
+ });
18
+
19
+ return icons.length > 0;
20
+ });
46
21
  }
47
22
 
48
23
  return await page.content();
@@ -1,8 +0,0 @@
1
- import shell from "shelljs";
2
- import { CLIENT_PATH } from "../../constants.js";
3
- const cleanCommand = () => {
4
- shell.cd(CLIENT_PATH);
5
- shell.exec("git clean -d -x -e node_modules -n");
6
- };
7
- export default cleanCommand;
8
- //# sourceMappingURL=cleanCommand.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cleanCommand.js","sourceRoot":"","sources":["../../../src/local-preview/helper-commands/cleanCommand.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,SAAS,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,MAAM,YAAY,GAAG,GAAG,EAAE;IACxB,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;IACtB,KAAK,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;AACnD,CAAC,CAAC;AAEF,eAAe,YAAY,CAAC"}