@rockcarver/frodo-lib 2.0.0-56 → 2.0.0-58
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/build.zip +0 -0
- package/cjs/api/NodeApi.js.map +1 -1
- package/cjs/ops/AgentOps.js +112 -89
- package/cjs/ops/AgentOps.js.map +1 -1
- package/cjs/ops/AgentOps.test.js +84 -28
- package/cjs/ops/AgentOps.test.js.map +1 -1
- package/cjs/ops/ApplicationOps.js +6 -0
- package/cjs/ops/ApplicationOps.js.map +1 -1
- package/cjs/ops/ConfigOps.js +279 -31
- package/cjs/ops/ConfigOps.js.map +1 -1
- package/cjs/ops/ConfigOps.test.js +26 -5
- package/cjs/ops/ConfigOps.test.js.map +1 -1
- package/cjs/ops/EmailTemplateOps.js +67 -8
- package/cjs/ops/EmailTemplateOps.js.map +1 -1
- package/cjs/ops/EmailTemplateOps.test.js +19 -0
- package/cjs/ops/EmailTemplateOps.test.js.map +1 -1
- package/cjs/ops/IdmConfigOps.js +90 -9
- package/cjs/ops/IdmConfigOps.js.map +1 -1
- package/cjs/ops/IdmConfigOps.test.js +39 -0
- package/cjs/ops/IdmConfigOps.test.js.map +1 -1
- package/cjs/ops/IdpOps.js +31 -16
- package/cjs/ops/IdpOps.js.map +1 -1
- package/cjs/ops/IdpOps.test.js +67 -18
- package/cjs/ops/IdpOps.test.js.map +1 -1
- package/cjs/ops/JourneyOps.js +154 -71
- package/cjs/ops/JourneyOps.js.map +1 -1
- package/cjs/ops/JourneyOps.test.js +160 -4
- package/cjs/ops/JourneyOps.test.js.map +1 -1
- package/cjs/ops/Saml2Ops.js +38 -13
- package/cjs/ops/Saml2Ops.js.map +1 -1
- package/cjs/ops/Saml2Ops.test.js +36 -5
- package/cjs/ops/Saml2Ops.test.js.map +1 -1
- package/cjs/ops/ServiceOps.js +131 -74
- package/cjs/ops/ServiceOps.js.map +1 -1
- package/cjs/ops/ThemeOps.js +55 -12
- package/cjs/ops/ThemeOps.js.map +1 -1
- package/cjs/ops/ThemeOps.test.js +45 -0
- package/cjs/ops/ThemeOps.test.js.map +1 -1
- package/cjs/test/mocks/JourneyOps/importJourney/FrodoTestJourney10.journey.json +37 -0
- package/cjs/test/mocks/JourneyOps/importJourney/FrodoTestJourney10NoCoords.journey.json +27 -0
- package/cjs/test/mocks/JourneyOps/importJourney/FrodoTestJourney11.journey.json +22 -0
- package/cjs/utils/ExportImportUtils.js +11 -11
- package/cjs/utils/ExportImportUtils.js.map +1 -1
- package/esm/api/NodeApi.js.map +1 -1
- package/esm/ops/AgentOps.js +34 -12
- package/esm/ops/AgentOps.js.map +1 -1
- package/esm/ops/AgentOps.test.js +84 -28
- package/esm/ops/AgentOps.test.js.map +1 -1
- package/esm/ops/ApplicationOps.js +6 -0
- package/esm/ops/ApplicationOps.js.map +1 -1
- package/esm/ops/ConfigOps.js +287 -49
- package/esm/ops/ConfigOps.js.map +1 -1
- package/esm/ops/ConfigOps.test.js +26 -6
- package/esm/ops/ConfigOps.test.js.map +1 -1
- package/esm/ops/EmailTemplateOps.js +52 -0
- package/esm/ops/EmailTemplateOps.js.map +1 -1
- package/esm/ops/EmailTemplateOps.test.js +19 -0
- package/esm/ops/EmailTemplateOps.test.js.map +1 -1
- package/esm/ops/IdmConfigOps.js +71 -0
- package/esm/ops/IdmConfigOps.js.map +1 -1
- package/esm/ops/IdmConfigOps.test.js +39 -0
- package/esm/ops/IdmConfigOps.test.js.map +1 -1
- package/esm/ops/IdpOps.js +18 -9
- package/esm/ops/IdpOps.js.map +1 -1
- package/esm/ops/IdpOps.test.js +67 -18
- package/esm/ops/IdpOps.test.js.map +1 -1
- package/esm/ops/JourneyOps.js +84 -12
- package/esm/ops/JourneyOps.js.map +1 -1
- package/esm/ops/JourneyOps.test.js +160 -4
- package/esm/ops/JourneyOps.test.js.map +1 -1
- package/esm/ops/Saml2Ops.js +38 -15
- package/esm/ops/Saml2Ops.js.map +1 -1
- package/esm/ops/Saml2Ops.test.js +36 -5
- package/esm/ops/Saml2Ops.test.js.map +1 -1
- package/esm/ops/ServiceOps.js +104 -46
- package/esm/ops/ServiceOps.js.map +1 -1
- package/esm/ops/ThemeOps.js +34 -0
- package/esm/ops/ThemeOps.js.map +1 -1
- package/esm/ops/ThemeOps.test.js +42 -0
- package/esm/ops/ThemeOps.test.js.map +1 -1
- package/esm/test/mocks/JourneyOps/importJourney/FrodoTestJourney10.journey.json +37 -0
- package/esm/test/mocks/JourneyOps/importJourney/FrodoTestJourney10NoCoords.journey.json +27 -0
- package/esm/test/mocks/JourneyOps/importJourney/FrodoTestJourney11.journey.json +22 -0
- package/esm/utils/ExportImportUtils.js +6 -6
- package/esm/utils/ExportImportUtils.js.map +1 -1
- package/package.json +1 -1
- package/types/api/NodeApi.d.ts +4 -0
- package/types/api/NodeApi.d.ts.map +1 -1
- package/types/ops/AgentOps.d.ts +4 -2
- package/types/ops/AgentOps.d.ts.map +1 -1
- package/types/ops/ApplicationOps.d.ts.map +1 -1
- package/types/ops/ConfigOps.d.ts +50 -0
- package/types/ops/ConfigOps.d.ts.map +1 -1
- package/types/ops/EmailTemplateOps.d.ts +15 -0
- package/types/ops/EmailTemplateOps.d.ts.map +1 -1
- package/types/ops/IdmConfigOps.d.ts +21 -0
- package/types/ops/IdmConfigOps.d.ts.map +1 -1
- package/types/ops/IdpOps.d.ts +11 -5
- package/types/ops/IdpOps.d.ts.map +1 -1
- package/types/ops/JourneyOps.d.ts +21 -4
- package/types/ops/JourneyOps.d.ts.map +1 -1
- package/types/ops/Saml2Ops.d.ts +21 -4
- package/types/ops/Saml2Ops.d.ts.map +1 -1
- package/types/ops/ServiceOps.d.ts +35 -20
- package/types/ops/ServiceOps.d.ts.map +1 -1
- package/types/ops/ThemeOps.d.ts +17 -0
- package/types/ops/ThemeOps.d.ts.map +1 -1
- package/types/utils/ExportImportUtils.d.ts +6 -6
- package/types/utils/ExportImportUtils.d.ts.map +1 -1
package/build.zip
CHANGED
|
Binary file
|
package/cjs/api/NodeApi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NodeApi.js","names":["_util","_interopRequireDefault","require","_ForgeRockUtils","_JsonUtils","_BaseApi","obj","__esModule","default","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","queryAllNodeTypesURLTemplate","queryAllNodesByTypeURLTemplate","queryAllNodesURLTemplate","nodeURLTemplate","createNodeURLTemplate","apiVersion","getNodeApiConfig","getNodeTypes","_x","_getNodeTypes","_ref","state","urlString","util","format","getHost","getCurrentRealmPath","data","generateAmApi","resource","post","withCredentials","headers","getNodes","_x2","_getNodes","_ref2","getNodesByType","_x3","_getNodesByType","_ref3","nodeType","get","getNode","_x4","_getNode","_ref4","nodeId","createNode","_x5","_createNode","_ref5","nodeData","putNode","_x6","_putNode","_ref6","cleanData","deleteDeepByKey","put","deleteNode","_x7","_deleteNode","_ref7","delete"],"sources":["../../src/api/NodeApi.ts"],"sourcesContent":["import util from 'util';\n\nimport { State } from '../shared/State';\nimport { getCurrentRealmPath } from '../utils/ForgeRockUtils';\nimport { deleteDeepByKey } from '../utils/JsonUtils';\nimport {\n type IdObjectSkeletonInterface,\n type NoIdObjectSkeletonInterface,\n type PagedResult,\n type QueryResult,\n} from './ApiTypes';\nimport { generateAmApi } from './BaseApi';\nimport { type AmServiceType } from './ServiceApi';\n\nconst queryAllNodeTypesURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/nodes?_action=getAllTypes';\nconst queryAllNodesByTypeURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/nodes/%s?_queryFilter=true';\nconst queryAllNodesURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/nodes?_action=nextdescendents';\nconst nodeURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/nodes/%s/%s';\nconst createNodeURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/nodes/%s?_action=create';\n\nconst apiVersion = 'protocol=2.1,resource=1.0';\nconst getNodeApiConfig = () => {\n return {\n apiVersion,\n };\n};\n\nexport interface NodeRefSkeletonInterface {\n connections: Record<string, string>;\n displayName: string;\n nodeType: string;\n x: number;\n y: number;\n}\n\nexport interface InnerNodeRefSkeletonInterface {\n _id: string;\n displayName: string;\n nodeType: string;\n}\n\nexport type NodeSkeleton = IdObjectSkeletonInterface & {\n _type: AmServiceType;\n nodes?: InnerNodeRefSkeletonInterface[];\n tree?: string;\n identityResource?: string;\n script?: string;\n emailTemplateName?: string;\n filteredProviders?: string[];\n useScript?: boolean;\n};\n\nexport type NodeTypeSkeleton = IdObjectSkeletonInterface & {\n name: string;\n collection: boolean;\n tags: string[];\n metadata: {\n tags: string[];\n [k: string]: string | number | boolean | string[];\n };\n help: string;\n};\n\n/**\n * Get all node types\n * @returns {Promise<QueryResult<NodeTypeSkeleton>>} a promise that resolves to an array of node type objects\n */\nexport async function getNodeTypes({\n state,\n}: {\n state: State;\n}): Promise<QueryResult<NodeTypeSkeleton>> {\n const urlString = util.format(\n queryAllNodeTypesURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state)\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).post(\n urlString,\n {},\n {\n withCredentials: true,\n headers: { 'Accept-Encoding': 'gzip, deflate, br' },\n }\n );\n return data;\n}\n\n/**\n * Get all nodes\n * @returns {Promise} a promise that resolves to an object containing an array of node objects\n */\nexport async function getNodes({\n state,\n}: {\n state: State;\n}): Promise<QueryResult<NodeSkeleton>> {\n const urlString = util.format(\n queryAllNodesURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state)\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).post(\n urlString,\n {},\n {\n withCredentials: true,\n headers: { 'Accept-Encoding': 'gzip, deflate, br' },\n }\n );\n return data;\n}\n\n/**\n * Get all nodes by type\n * @param {string} nodeType node type\n * @returns {Promise<PagedResult<NodeSkeleton>>} a promise that resolves to an object containing an array of node objects of the requested type\n */\nexport async function getNodesByType({\n nodeType,\n state,\n}: {\n nodeType: string;\n state: State;\n}): Promise<PagedResult<NodeSkeleton>> {\n const urlString = util.format(\n queryAllNodesByTypeURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n nodeType\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Get node by uuid and type\n * @param {string} nodeId node uuid\n * @param {string} nodeType node type\n * @returns {Promise<NodeSkeleton>} a promise that resolves to a node object\n */\nexport async function getNode({\n nodeId,\n nodeType,\n state,\n}: {\n nodeId: string;\n nodeType: string;\n state: State;\n}): Promise<NodeSkeleton> {\n const urlString = util.format(\n nodeURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n nodeType,\n nodeId\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Create node by type\n * @param {string} nodeType node type\n * @param {object} nodeData node object\n * @returns {Promise<NodeSkeleton>} a promise that resolves to a node object\n */\nexport async function createNode({\n nodeType,\n nodeData,\n state,\n}: {\n nodeType: string;\n nodeData: NodeSkeleton;\n state: State;\n}): Promise<NodeSkeleton> {\n const urlString = util.format(\n createNodeURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n nodeType\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).post(urlString, nodeData, {\n withCredentials: true,\n headers: { 'Accept-Encoding': 'gzip, deflate, br' },\n });\n return data;\n}\n\n/**\n * Put node by uuid and type\n * @param {string} nodeId node uuid\n * @param {string} nodeType node type\n * @param {object} nodeData node object\n * @returns {Promise} a promise that resolves to an object containing a node object\n */\nexport async function putNode({\n nodeId,\n nodeType,\n nodeData,\n state,\n}: {\n nodeId: string;\n nodeType: string;\n nodeData: NodeSkeleton | NoIdObjectSkeletonInterface;\n state: State;\n}) {\n // until we figure out a way to use transport keys in Frodo,\n // we'll have to drop those encrypted attributes.\n const cleanData = deleteDeepByKey(nodeData, '-encrypted');\n const urlString = util.format(\n nodeURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n nodeType,\n nodeId\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).put(urlString, cleanData, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Delete node by uuid and type\n * @param {String} nodeId node uuid\n * @param {String} nodeType node type\n * @returns {Promise} a promise that resolves to an object containing a node object\n */\nexport async function deleteNode({\n nodeId,\n nodeType,\n state,\n}: {\n nodeId: string;\n nodeType: string;\n state: State;\n}) {\n const urlString = util.format(\n nodeURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n nodeType,\n nodeId\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).delete(urlString, {\n withCredentials: true,\n });\n return data;\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NodeApi.js","names":["_util","_interopRequireDefault","require","_ForgeRockUtils","_JsonUtils","_BaseApi","obj","__esModule","default","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","err","undefined","queryAllNodeTypesURLTemplate","queryAllNodesByTypeURLTemplate","queryAllNodesURLTemplate","nodeURLTemplate","createNodeURLTemplate","apiVersion","getNodeApiConfig","getNodeTypes","_x","_getNodeTypes","_ref","state","urlString","util","format","getHost","getCurrentRealmPath","data","generateAmApi","resource","post","withCredentials","headers","getNodes","_x2","_getNodes","_ref2","getNodesByType","_x3","_getNodesByType","_ref3","nodeType","get","getNode","_x4","_getNode","_ref4","nodeId","createNode","_x5","_createNode","_ref5","nodeData","putNode","_x6","_putNode","_ref6","cleanData","deleteDeepByKey","put","deleteNode","_x7","_deleteNode","_ref7","delete"],"sources":["../../src/api/NodeApi.ts"],"sourcesContent":["import util from 'util';\n\nimport { State } from '../shared/State';\nimport { getCurrentRealmPath } from '../utils/ForgeRockUtils';\nimport { deleteDeepByKey } from '../utils/JsonUtils';\nimport {\n type IdObjectSkeletonInterface,\n type NoIdObjectSkeletonInterface,\n type PagedResult,\n type QueryResult,\n} from './ApiTypes';\nimport { generateAmApi } from './BaseApi';\nimport { type AmServiceType } from './ServiceApi';\n\nconst queryAllNodeTypesURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/nodes?_action=getAllTypes';\nconst queryAllNodesByTypeURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/nodes/%s?_queryFilter=true';\nconst queryAllNodesURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/nodes?_action=nextdescendents';\nconst nodeURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/nodes/%s/%s';\nconst createNodeURLTemplate =\n '%s/json%s/realm-config/authentication/authenticationtrees/nodes/%s?_action=create';\n\nconst apiVersion = 'protocol=2.1,resource=1.0';\nconst getNodeApiConfig = () => {\n return {\n apiVersion,\n };\n};\n\nexport interface NodeRefSkeletonInterface {\n connections: Record<string, string>;\n displayName: string;\n nodeType: string;\n x: number;\n y: number;\n}\n\nexport interface StaticNodeRefSkeletonInterface {\n x: number;\n y: number;\n}\n\nexport interface InnerNodeRefSkeletonInterface {\n _id: string;\n displayName: string;\n nodeType: string;\n}\n\nexport type NodeSkeleton = IdObjectSkeletonInterface & {\n _type: AmServiceType;\n nodes?: InnerNodeRefSkeletonInterface[];\n tree?: string;\n identityResource?: string;\n script?: string;\n emailTemplateName?: string;\n filteredProviders?: string[];\n useScript?: boolean;\n};\n\nexport type NodeTypeSkeleton = IdObjectSkeletonInterface & {\n name: string;\n collection: boolean;\n tags: string[];\n metadata: {\n tags: string[];\n [k: string]: string | number | boolean | string[];\n };\n help: string;\n};\n\n/**\n * Get all node types\n * @returns {Promise<QueryResult<NodeTypeSkeleton>>} a promise that resolves to an array of node type objects\n */\nexport async function getNodeTypes({\n state,\n}: {\n state: State;\n}): Promise<QueryResult<NodeTypeSkeleton>> {\n const urlString = util.format(\n queryAllNodeTypesURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state)\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).post(\n urlString,\n {},\n {\n withCredentials: true,\n headers: { 'Accept-Encoding': 'gzip, deflate, br' },\n }\n );\n return data;\n}\n\n/**\n * Get all nodes\n * @returns {Promise} a promise that resolves to an object containing an array of node objects\n */\nexport async function getNodes({\n state,\n}: {\n state: State;\n}): Promise<QueryResult<NodeSkeleton>> {\n const urlString = util.format(\n queryAllNodesURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state)\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).post(\n urlString,\n {},\n {\n withCredentials: true,\n headers: { 'Accept-Encoding': 'gzip, deflate, br' },\n }\n );\n return data;\n}\n\n/**\n * Get all nodes by type\n * @param {string} nodeType node type\n * @returns {Promise<PagedResult<NodeSkeleton>>} a promise that resolves to an object containing an array of node objects of the requested type\n */\nexport async function getNodesByType({\n nodeType,\n state,\n}: {\n nodeType: string;\n state: State;\n}): Promise<PagedResult<NodeSkeleton>> {\n const urlString = util.format(\n queryAllNodesByTypeURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n nodeType\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Get node by uuid and type\n * @param {string} nodeId node uuid\n * @param {string} nodeType node type\n * @returns {Promise<NodeSkeleton>} a promise that resolves to a node object\n */\nexport async function getNode({\n nodeId,\n nodeType,\n state,\n}: {\n nodeId: string;\n nodeType: string;\n state: State;\n}): Promise<NodeSkeleton> {\n const urlString = util.format(\n nodeURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n nodeType,\n nodeId\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).get(urlString, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Create node by type\n * @param {string} nodeType node type\n * @param {object} nodeData node object\n * @returns {Promise<NodeSkeleton>} a promise that resolves to a node object\n */\nexport async function createNode({\n nodeType,\n nodeData,\n state,\n}: {\n nodeType: string;\n nodeData: NodeSkeleton;\n state: State;\n}): Promise<NodeSkeleton> {\n const urlString = util.format(\n createNodeURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n nodeType\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).post(urlString, nodeData, {\n withCredentials: true,\n headers: { 'Accept-Encoding': 'gzip, deflate, br' },\n });\n return data;\n}\n\n/**\n * Put node by uuid and type\n * @param {string} nodeId node uuid\n * @param {string} nodeType node type\n * @param {object} nodeData node object\n * @returns {Promise} a promise that resolves to an object containing a node object\n */\nexport async function putNode({\n nodeId,\n nodeType,\n nodeData,\n state,\n}: {\n nodeId: string;\n nodeType: string;\n nodeData: NodeSkeleton | NoIdObjectSkeletonInterface;\n state: State;\n}) {\n // until we figure out a way to use transport keys in Frodo,\n // we'll have to drop those encrypted attributes.\n const cleanData = deleteDeepByKey(nodeData, '-encrypted');\n const urlString = util.format(\n nodeURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n nodeType,\n nodeId\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).put(urlString, cleanData, {\n withCredentials: true,\n });\n return data;\n}\n\n/**\n * Delete node by uuid and type\n * @param {String} nodeId node uuid\n * @param {String} nodeType node type\n * @returns {Promise} a promise that resolves to an object containing a node object\n */\nexport async function deleteNode({\n nodeId,\n nodeType,\n state,\n}: {\n nodeId: string;\n nodeType: string;\n state: State;\n}) {\n const urlString = util.format(\n nodeURLTemplate,\n state.getHost(),\n getCurrentRealmPath(state),\n nodeType,\n nodeId\n );\n const { data } = await generateAmApi({\n resource: getNodeApiConfig(),\n state,\n }).delete(urlString, {\n withCredentials: true,\n });\n return data;\n}\n"],"mappings":"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"}
|