Skip to content

Commit

Permalink
Move files out of lib/ (#45506)
Browse files Browse the repository at this point in the history
  • Loading branch information
heiskr authored Nov 2, 2023
1 parent bea0299 commit d4f345e
Show file tree
Hide file tree
Showing 155 changed files with 186 additions and 184 deletions.
4 changes: 1 addition & 3 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ RUN npm prune --production
FROM all_deps as builder

COPY components ./components
COPY lib ./lib
COPY src ./src
# The star is because it's an optional directory
COPY .remotejson-cache* ./.remotejson-cache
Expand Down Expand Up @@ -88,7 +87,6 @@ ENV BUILD_SHA=$BUILD_SHA
COPY --chown=node:node package.json ./
COPY --chown=node:node assets ./assets
COPY --chown=node:node content ./content
COPY --chown=node:node lib ./lib
COPY --chown=node:node src ./src
COPY --chown=node:node .remotejson-cache* ./.remotejson-cache
COPY --chown=node:node middleware ./middleware
Expand All @@ -107,7 +105,7 @@ CMD ["node", "server.js"]
FROM preview as production

# Override what was set for previews
# Make this match the default of `Object.keys(languages)` in lib/languages.js
# Make this match the default of `Object.keys(languages)` in src/languages/lib/languages.js
ENV ENABLED_LANGUAGES "en,zh,es,pt,ru,ja,fr,de,ko"

# Copy in all translations
Expand Down
2 changes: 1 addition & 1 deletion middleware/block-robots.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { productMap } from '../lib/all-products.js'
import { productMap } from '#src/products/lib/all-products.js'
import { deprecated } from '#src/versions/lib/enterprise-server-releases.js'

const pathRegExps = [
Expand Down
10 changes: 5 additions & 5 deletions middleware/context.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
import languages from '#src/languages/lib/languages.js'
import enterpriseServerReleases from '#src/versions/lib/enterprise-server-releases.js'
import { allVersions } from '#src/versions/lib/all-versions.js'
import { productMap } from '../lib/all-products.js'
import { productMap } from '#src/products/lib/all-products.js'
import {
getVersionStringFromPath,
getProductStringFromPath,
getCategoryStringFromPath,
getPathWithoutLanguage,
getPathWithoutVersion,
} from '../lib/path-utils.js'
import productNames from '../lib/product-names.js'
import warmServer from '../lib/warm-server.js'
} from '#src/frame/lib/path-utils.js'
import productNames from '#src/products/lib/product-names.js'
import warmServer from '#src/frame/lib/warm-server.js'
import searchVersions from '#src/search/lib/versions.js'
import nonEnterpriseDefaultVersion from '#src/versions/lib/non-enterprise-default-version.js'
import { getDataByLanguage, getUIDataMerged } from '../lib/get-data.js'
import { getDataByLanguage, getUIDataMerged } from '#src/data-directory/lib/get-data.js'

// This doesn't change just because the request changes, so compute it once.
const enterpriseServerVersions = Object.keys(allVersions).filter((version) =>
Expand Down
4 changes: 2 additions & 2 deletions middleware/contextualizers/current-product-tree.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import path from 'path'
import { liquid } from '#src/content-render/index.js'
import findPageInSiteTree from '../../lib/find-page-in-site-tree.js'
import findPageInSiteTree from '#src/frame/lib/find-page-in-site-tree.js'
import removeFPTFromPath from '#src/versions/lib/remove-fpt-from-path.js'
import { executeWithFallback } from '../../lib/render-with-fallback.js'
import { executeWithFallback } from '#src/languages/lib/render-with-fallback.js'

// This module adds currentProductTree to the context object for use in layouts.
export default async function currentProductTree(req, res, next) {
Expand Down
2 changes: 1 addition & 1 deletion middleware/contextualizers/generic-toc.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import findPageInSiteTree from '../../lib/find-page-in-site-tree.js'
import findPageInSiteTree from '#src/frame/lib/find-page-in-site-tree.js'

// This module adds either flatTocItems or nestedTocItems to the context object for
// product, categorie, and map topic TOCs that don't have other layouts specified.
Expand Down
6 changes: 3 additions & 3 deletions middleware/contextualizers/glossaries.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { getDataByLanguage } from '../../lib/get-data.js'
import { getDataByLanguage } from '#src/data-directory/lib/get-data.js'
import { liquid } from '#src/content-render/index.js'
import { executeWithFallback } from '../../lib/render-with-fallback.js'
import { correctTranslatedContentStrings } from '../../lib/correct-translation-content.js'
import { executeWithFallback } from '#src/languages/lib/render-with-fallback.js'
import { correctTranslatedContentStrings } from '#src/languages/lib/correct-translation-content.js'

export default async function glossaries(req, res, next) {
if (!req.pagePath.endsWith('get-started/quickstart/github-glossary')) return next()
Expand Down
2 changes: 1 addition & 1 deletion middleware/contextualizers/product-examples.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getDataByLanguage } from '../../lib/get-data.js'
import { getDataByLanguage } from '#src/data-directory/lib/get-data.js'

function getProductExampleData(product, key, language) {
// Because getDataByLanguage() depends on reading data files from
Expand Down
4 changes: 2 additions & 2 deletions middleware/contextualizers/product-groups.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { getProductGroups } from '../../lib/get-product-groups.js'
import warmServer from '../../lib/warm-server.js'
import { getProductGroups } from '#src/products/lib/get-product-groups.js'
import warmServer from '#src/frame/lib/warm-server.js'
import { languageKeys } from '#src/languages/lib/languages.js'
import { allVersionKeys } from '#src/versions/lib/all-versions.js'

Expand Down
2 changes: 1 addition & 1 deletion middleware/contextualizers/whats-new-changelog.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { getChangelogItems } from '../../lib/changelog.js'
import { getChangelogItems } from '#src/changelogs/lib/changelog.js'
import getApplicableVersions from '#src/versions/lib/get-applicable-versions.js'

export default async function whatsNewChangelog(req, res, next) {
Expand Down
2 changes: 1 addition & 1 deletion middleware/cookie-parser.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
import cookieParser from 'cookie-parser'
import cookieSettings from '../lib/cookie-settings.js'
import cookieSettings from '#src/frame/lib/cookie-settings.js'
export default cookieParser(process.env.COOKIE_SECRET, cookieSettings)
4 changes: 2 additions & 2 deletions middleware/find-page.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import path from 'path'
import { existsSync } from 'fs'

import { ROOT } from '../lib/constants.js'
import Page from '../lib/page.js'
import { ROOT } from '#src/frame/lib/constants.js'
import Page from '#src/frame/lib/page.js'
import { languagePrefixPathRegex } from '#src/languages/lib/languages.js'

const englishPrefixRegex = /^\/en(\/|$)/
Expand Down
6 changes: 3 additions & 3 deletions middleware/reload-tree.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@
import path from 'path'

import languages, { languageKeys } from '#src/languages/lib/languages.js'
import createTree from '../lib/create-tree.js'
import warmServer from '../lib/warm-server.js'
import { loadSiteTree, loadPages, loadPageMap } from '../lib/page-data.js'
import createTree from '#src/frame/lib/create-tree.js'
import warmServer from '#src/frame/lib/warm-server.js'
import { loadSiteTree, loadPages, loadPageMap } from '#src/frame/lib/page-data.js'
import loadRedirects from '#src/redirects/lib/precompile.js'

const languagePrefixRegex = new RegExp(`^/(${languageKeys.join('|')})(/|$)`)
Expand Down
4 changes: 2 additions & 2 deletions middleware/render-page.js
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { get } from 'lodash-es'

import FailBot from '#src/observability/lib/failbot.js'
import patterns from '../lib/patterns.js'
import getMiniTocItems from '../lib/get-mini-toc-items.js'
import patterns from '#src/frame/lib/patterns.js'
import getMiniTocItems from '#src/frame/lib/get-mini-toc-items.js'
import { pathLanguagePrefixed } from '#src/languages/lib/languages.js'
import statsd from '#src/observability/lib/statsd.js'
import { allVersions } from '#src/versions/lib/all-versions.js'
Expand Down
2 changes: 1 addition & 1 deletion middleware/timeout.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import timeout from 'express-timeout-handler'

import statsd from '#src/observability/lib/statsd.js'
import { MAX_REQUEST_TIMEOUT } from '../lib/constants.js'
import { MAX_REQUEST_TIMEOUT } from '#src/frame/lib/constants.js'

export default timeout.handler({
// Default timeout for all endpoints
Expand Down
2 changes: 1 addition & 1 deletion next.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import path from 'path'

import frontmatter from 'gray-matter'
import { languageKeys } from '#src/languages/lib/languages.js'
import { ROOT } from './lib/constants.js'
import { ROOT } from '#src/frame/lib/constants.js'

const homepage = path.posix.join(ROOT, 'content/index.md')
const { data } = frontmatter(fs.readFileSync(homepage, 'utf8'))
Expand Down
2 changes: 1 addition & 1 deletion src/archives/lib/is-archived-version.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import patterns from '../../../lib/patterns.js'
import patterns from '#src/frame/lib/patterns.js'
import { deprecated } from '#src/versions/lib/enterprise-server-releases.js'

export default function isArchivedVersion(req) {
Expand Down
2 changes: 1 addition & 1 deletion src/archives/lib/old-versions-utils.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import path from 'path'
import { supported, latest } from '#src/versions/lib/enterprise-server-releases.js'
import patterns from '../../../lib/patterns.js'
import patterns from '#src/frame/lib/patterns.js'
import nonEnterpriseDefaultVersion from '#src/versions/lib/non-enterprise-default-version.js'
import { allVersions } from '#src/versions/lib/all-versions.js'
const latestNewVersion = `enterprise-server@${latest}`
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import path from 'path'

import got from 'got'

import patterns from '../../../lib/patterns.js'
import patterns from '#src/frame/lib/patterns.js'
import isArchivedVersion from '#src/archives/lib/is-archived-version.js'
import {
setFastlySurrogateKey,
Expand Down
4 changes: 2 additions & 2 deletions src/archives/middleware/archived-enterprise-versions.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,15 @@ import {
deprecatedWithFunctionalRedirects,
firstReleaseStoredInBlobStorage,
} from '#src/versions/lib/enterprise-server-releases.js'
import patterns from '../../../lib/patterns.js'
import patterns from '#src/frame/lib/patterns.js'
import versionSatisfiesRange from '#src/versions/lib/version-satisfies-range.js'
import isArchivedVersion from '#src/archives/lib/is-archived-version.js'
import {
setFastlySurrogateKey,
SURROGATE_ENUMS,
} from '../../../middleware/set-fastly-surrogate-key.js'
import got from 'got'
import { readCompressedJsonFileFallbackLazily } from '../../../lib/read-json-file.js'
import { readCompressedJsonFileFallbackLazily } from '#src/frame/lib/read-json-file.js'
import { archivedCacheControl, languageCacheControl } from '../../../middleware/cache-control.js'
import { pathLanguagePrefixed, languagePrefixPathRegex } from '#src/languages/lib/languages.js'
import getRedirect, { splitPathByLanguage } from '#src/redirects/lib/get-redirect.js'
Expand Down
2 changes: 1 addition & 1 deletion src/audit-logs/lib/index.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import path from 'path'

import { readCompressedJsonFileFallback } from '../../../lib/read-json-file.js'
import { readCompressedJsonFileFallback } from '#src/frame/lib/read-json-file.js'
import { getOpenApiVersion } from '#src/versions/lib/all-versions.js'

export const AUDIT_LOG_DATA_DIR = 'src/audit-logs/data'
Expand Down
2 changes: 1 addition & 1 deletion src/audit-logs/pages/audit-log-events.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ export default function AuditLogEvents({
}

export const getServerSideProps: GetServerSideProps<Props> = async (context) => {
const { getAutomatedPageMiniTocItems } = await import('lib/get-mini-toc-items')
const { getAutomatedPageMiniTocItems } = await import('src/frame/lib/get-mini-toc-items')
const { getAuditLogEvents } = await import('src/audit-logs/lib')

const req = context.req as object
Expand Down
2 changes: 1 addition & 1 deletion src/automated-pipelines/tests/rendering.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { readFileSync } from 'fs'
import cheerio from 'cheerio'
import { jest, test } from '@jest/globals'

import { loadPages } from '../../../lib/page-data.js'
import { loadPages } from '#src/frame/lib/page-data.js'
import { get } from '../../../tests/helpers/e2etest.js'

// Get a list of the autogenerated pages
Expand Down
File renamed without changes.
2 changes: 1 addition & 1 deletion src/content-linter/lib/feature-versions-schema.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { schema } from '../../../lib/frontmatter.js'
import { schema } from '#src/frame/lib/frontmatter.js'

// Copy the properties from the frontmatter schema.
const featureVersions = {
Expand Down
4 changes: 2 additions & 2 deletions src/content-linter/lib/linting-rules/frontmatter-schema.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import { intersection } from 'lodash-es'

import { getFrontmatter } from '../helpers/utils.js'
import { formatAjvErrors } from '../helpers/schema-utils.js'
import { frontmatter, deprecatedProperties } from '../../../../lib/frontmatter.js'
import readFrontmatter from '../../../../lib/read-frontmatter.js'
import { frontmatter, deprecatedProperties } from '#src/frame/lib/frontmatter.js'
import readFrontmatter from '#src/frame/lib/read-frontmatter.js'

export const frontmatterSchema = {
names: ['GHD012', 'frontmatter-schema'],
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { addError, ellipsify } from 'markdownlint-rule-helpers'

import { getRange } from '../helpers/utils.js'
import frontmatter from '../../../../lib/read-frontmatter.js'
import frontmatter from '#src/frame/lib/read-frontmatter.js'

/*
This rule currently only checks for one hardcoded string but
Expand Down
2 changes: 1 addition & 1 deletion src/content-linter/lib/linting-rules/liquid-data-tags.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { TokenKind } from 'liquidjs'
import { addError } from 'markdownlint-rule-helpers'

import { getDataByLanguage } from '../../../../lib/get-data.js'
import { getDataByLanguage } from '#src/data-directory/lib/get-data.js'
import { getLiquidTokens, getPositionData } from '../helpers/liquid-utils.js'

/*
Expand Down
2 changes: 1 addition & 1 deletion src/content-linter/lib/linting-rules/liquid-syntax.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import { addError } from 'markdownlint-rule-helpers'

import { getFrontmatter } from '../helpers/utils.js'
import { liquid } from '#src/content-render/index.js'
import { isLiquidError } from '../../../../lib/render-with-fallback.js'
import { isLiquidError } from '#src/languages/lib/render-with-fallback.js'

/*
Attempts to parse all liquid in the frontmatter of a file
Expand Down
2 changes: 1 addition & 1 deletion src/content-linter/lib/linting-rules/liquid-versioning.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ import {
deprecated,
} from '#src/versions/lib/enterprise-server-releases.js'
import allowedVersionOperators from '#src/content-render/liquid/ifversion-supported-operators.js'
import { getDeepDataByLanguage } from '../../../../lib/get-data.js'
import { getDeepDataByLanguage } from '#src/data-directory/lib/get-data.js'
import { getLiquidTokens, getPositionData } from '../helpers/liquid-utils.js'

const getAllPossibleVersionNames = memoize(() => {
Expand Down
4 changes: 2 additions & 2 deletions src/content-linter/tests/category-pages.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@ import { zip, difference } from 'lodash-es'
import GithubSlugger from 'github-slugger'
import { decode } from 'html-entities'

import matter from '../../../lib/read-frontmatter.js'
import matter from '#src/frame/lib/read-frontmatter.js'
import { renderContent } from '#src/content-render/index.js'
import getApplicableVersions from '#src/versions/lib/get-applicable-versions.js'
import contextualize from '../../../middleware/context.js'
import shortVersions from '#src/versions/middleware/short-versions.js'
import { ROOT } from '../../../lib/constants.js'
import { ROOT } from '#src/frame/lib/constants.js'

const slugger = new GithubSlugger()

Expand Down
2 changes: 1 addition & 1 deletion src/content-linter/tests/lint-frontmatter.js
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { loadPages, loadPageMap } from '../../../lib/page-data.js'
import { loadPages, loadPageMap } from '#src/frame/lib/page-data.js'
import loadRedirects from '#src/redirects/lib/precompile.js'
import { checkURL } from '../../../tests/helpers/check-url.js'

Expand Down
2 changes: 1 addition & 1 deletion src/content-linter/tests/lint-versioning.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import addErrors from 'ajv-errors'
import semver from 'semver'

import featureVersionsSchema from '../lib/feature-versions-schema.js'
import { getDeepDataByLanguage } from '../../../lib/get-data.js'
import { getDeepDataByLanguage } from '#src/data-directory/lib/get-data.js'
import { formatAjvErrors } from '../../../tests/helpers/schemas.js'

/*
Expand Down
4 changes: 2 additions & 2 deletions src/content-linter/tests/site-data-references.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ import path from 'path'
import { isEqual, uniqWith } from 'lodash-es'
import { jest } from '@jest/globals'

import patterns from '../../../lib/patterns.js'
import { getDataByLanguage, getDeepDataByLanguage } from '../../../lib/get-data.js'
import patterns from '#src/frame/lib/patterns.js'
import { getDataByLanguage, getDeepDataByLanguage } from '#src/data-directory/lib/get-data.js'

// Given syntax like {% data foo.bar %} or {% indented_data_reference foo.bar spaces=3 %},
// the following regex returns just the dotted path: foo.bar
Expand Down
2 changes: 1 addition & 1 deletion src/content-render/liquid/data.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { TokenizationError } from 'liquidjs'

import { THROW_ON_EMPTY, DataReferenceError } from './error-handling.js'
import { getDataByLanguage } from '../../../lib/get-data.js'
import { getDataByLanguage } from '#src/data-directory/lib/get-data.js'

const Syntax = /([a-z0-9/\\_.\-[\]]+)/i
const SyntaxHelp = "Syntax Error in 'data' - Valid syntax: data [path]"
Expand Down
2 changes: 1 addition & 1 deletion src/content-render/liquid/indented-data-reference.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import assert from 'assert'

import { THROW_ON_EMPTY, IndentedDataReferenceError } from './error-handling.js'
import { getDataByLanguage } from '../../../lib/get-data.js'
import { getDataByLanguage } from '#src/data-directory/lib/get-data.js'

// This class supports a tag that expects two parameters, a data reference and `spaces=NUMBER`:
//
Expand Down
2 changes: 1 addition & 1 deletion src/content-render/scripts/move-category-to-product.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import path from 'path'
import { mkdirp } from 'mkdirp'
import { program } from 'commander'
import { execSync } from 'child_process'
import frontmatter from '../../../lib/read-frontmatter.js'
import frontmatter from '#src/frame/lib/read-frontmatter.js'
import addRedirectToFrontmatter from '#src/redirects/scripts/helpers/add-redirect-to-frontmatter.js'
import walkFiles from '#src/workflows/walk-files.js'

Expand Down
4 changes: 2 additions & 2 deletions src/content-render/scripts/move-content.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@ import chalk from 'chalk'
import walk from 'walk-sync'
import yaml from 'js-yaml'

import fm from '../../../lib/frontmatter.js'
import readFrontmatter from '../../../lib/read-frontmatter.js'
import fm from '#src/frame/lib/frontmatter.js'
import readFrontmatter from '#src/frame/lib/read-frontmatter.js'

const CONTENT_ROOT = path.resolve('content')
const DATA_ROOT = path.resolve('data')
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ import chalk from 'chalk'
import GithubSlugger from 'github-slugger'
import { decode } from 'html-entities'

import frontmatter from '../../../lib/read-frontmatter.js'
import frontmatter from '#src/frame/lib/read-frontmatter.js'
import { renderContent } from '#src/content-render/index.js'
import { allVersions } from '#src/versions/lib/all-versions.js'
import { ROOT } from '../../../lib/constants.js'
import { ROOT } from '#src/frame/lib/constants.js'

const slugger = new GithubSlugger()

Expand Down
2 changes: 1 addition & 1 deletion src/content-render/scripts/reconcile-filenames-with-ids.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import path from 'path'
import walk from 'walk-sync'
import GithubSlugger from 'github-slugger'
import { decode } from 'html-entities'
import frontmatter from '../../../lib/read-frontmatter.js'
import frontmatter from '#src/frame/lib/read-frontmatter.js'
import { execSync } from 'child_process'
import addRedirectToFrontmatter from '#src/redirects/scripts/helpers/add-redirect-to-frontmatter.js'

Expand Down
2 changes: 1 addition & 1 deletion src/content-render/scripts/render-content-markdown.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { execSync } from 'child_process'
import { renderLiquid } from '#src/content-render/liquid/index.js'
import shortVersionsMiddleware from '#src/versions/middleware/short-versions.js'

const { loadPages } = await import('../../../lib/page-data.js')
const { loadPages } = await import('#src/frame/lib/page-data.js')
const { allVersions } = await import('#src/versions/lib/all-versions.js')

const contentCopilotDir = path.join(process.cwd(), 'content-copilot')
Expand Down
2 changes: 1 addition & 1 deletion src/content-render/tests/data.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { afterAll, beforeAll, expect, describe, it } from '@jest/globals'

import Page from '../../../lib/page.js'
import Page from '#src/frame/lib/page.js'
import languages from '#src/languages/lib/languages.js'
import nonEnterpriseDefaultVersion from '#src/versions/lib/non-enterprise-default-version.js'
import { DataDirectory } from '../../../tests/helpers/data-directory.js'
Expand Down
Loading

0 comments on commit d4f345e

Please sign in to comment.