# Graph Report - juzi (2026-10-12) ## Corpus Check - 104 files · ~4,904,196 words - Verdict: corpus is large enough that graph structure adds value. ## Summary - 1444 nodes · 2892 edges · 117 communities (92 shown, 25 thin omitted) - Extraction: 93% EXTRACTED · 7% INFERRED · 0% AMBIGUOUS · INFERRED: 209 edges (avg confidence: 0.57) - Token cost: 0 input · 0 output ## Graph Freshness - Built from commit: `63c9e065` - Run `git rev-parse HEAD` and compare to check if the graph is stale. - Run `graphify update .` after code changes (no API cost). ## Community Hubs (Navigation) - face-api.js - 线上闭环测试(不含真实微信授权) - app.js - skin-score.js - customer-feedback-second.js - n - f - test/profile-store.js - admin.js - __awaiter - wechat-browser.mjs - lib/accounts.js - server.js - files - .draw - extractFaces - 巨子测肤 · 1'me 在线肌肤测试 — UI 设计规范 - report-persistence.mjs - 1'me肌肤状态检测 H5 - customer-feedback-fourth.js - build_fixtures.py - AgeGenderNet - .loadFromDisk - facepp-skinanalyze(旷视皮肤分析专业版调用技能) - 巨子测肤 · 1'me 语音播报内容设计文档 V1.0 - mobile-select.iife.min.js - NeuralNetwork - gen_voice.py - C - face-api.js 本地化依赖(h5/vendor/faceapi/) - ui-20261009/manifest.json - browser-failures.mjs - FaceMatcher - build-fixture.py - customer-feedback.js - UI 外发版 10.09 图片资源 - FaceLandmark68Net - UI交互界面调整 - 第四轮反馈修改与验收 - SsdMobilenetv1 - layer_at - height - start-local.sh - PredictAllAgeAndGenderWithFaceAlignmentTask - PredictAllFaceExpressionsWithFaceAlignmentTask - recommendation.js - 已修改 - mobile-select/README.md - call_skinanalyze_3view.sh - 护理建议(全量文本,按需求摘抄) - UI 对齐 10.09 设计稿:调研与实施计划 - FaceLandmarks68 - report-ui.js - regression.js - .forwardInput - call_skinanalyze.sh - 报告布局与跟手交互调整 - 提交前 Review(2026-10-11) - e2e-browser.mjs - start - 微信登录接入与公网部署说明 - normalize - ui-20261009.mjs - analyze-timeout.js - misans/README.md - scan-placeholder.mjs - .predictAgeAndGender - build_report_copy.py - onPhotoCaptured - .runAndExtendWithFaceDetections - .toString - 登录反馈与加载优化(2026-10-12) - 线上微信登录部署记录 - wechat-production.mjs - 拍摄约束放宽与标题更新 - 10.09 新版 H5 实施与验收 - 微信登录联调:2026-10-12 - test/accounts.js - report-touch-layout.mjs - 产品推荐规则:肤龄基准与边界调整 - ui-20261012/manifest.json - 傅艳NEW与项思炼的会话 2026年10月12日.md - wi - 客户反馈修改(2026-10-12) - .runAndExtendWithFaceDetection - 第三轮反馈:PSD 对齐、验收及上线记录 - login-performance.mjs - production-loop.mjs - PredictSingleAgeAndGenderWithFaceAlignmentTask - PredictSingleFaceExpressionsWithFaceAlignmentTask - DetectSingleFaceLandmarksTask - ComputeSingleFaceDescriptorTask - PredictSingleFaceExpressionsTask - Box - 第四轮反馈/傅艳NEW与项思炼的会话 2026年10月12日.md - 第三轮反馈20261012/傅艳NEW与项思炼的会话 2026年10月12日.md - 基础信息记忆与肤质拖动 - profile-interaction.mjs - submitPhotos - doCapture - i - showScreen - TinyYolov2 - 报告等待页实拍背景-2026-10-12.md ## God Nodes (most connected - your core abstractions) 1. `__awaiter()` - 59 edges 2. `__generator()` - 59 edges 3. `n()` - 37 edges 4. `r()` - 35 edges 5. `i()` - 33 edges 6. `t()` - 32 edges 7. `C()` - 32 edges 8. `toNetInput()` - 27 edges 9. `e()` - 22 edges 10. `loadRecords()` - 21 edges ## Surprising Connections (you probably didn't know these) - `actualLines()` --indirect_call--> `el()` [INFERRED] h5/test/customer-feedback-third.mjs → h5/js/admin.js - `loadRecords()` --indirect_call--> `it()` [INFERRED] h5/js/admin.js → h5/vendor/faceapi/face-api.js - `bind()` --indirect_call--> `a()` [INFERRED] h5/js/admin.js → h5/vendor/faceapi/face-api.js - `checkStill()` --indirect_call--> `d()` [INFERRED] h5/js/app.js → h5/vendor/faceapi/face-api.js - `detectFrame()` --indirect_call--> `d()` [INFERRED] h5/js/app.js → h5/vendor/faceapi/face-api.js ## Import Cycles - None detected. ## Communities (117 total, 25 thin omitted) ### Community 0 - "face-api.js" Cohesion: 0.02 Nodes (33): bgrToRgbTensor(), cn(), createBrowserEnv(), createFileSystem(), createNodejsEnv(), Dimensions(), dr(), en() (+25 more) ### Community 1 - "线上闭环测试(不含真实微信授权)" Cohesion: 0.25 Nodes (7): 发现并修复, 可复现命令, 已通过的检查, 线上闭环测试(不含真实微信授权), 结论, 话术及仓库同步, 验证边界 ### Community 2 - "app.js" Cohesion: 0.11 Nodes (22): cancelSkinDrag(), esc(), goSkin(), openHistory(), renderHistoryList(), renderReport(), renderViz(), restartScanCycle() (+14 more) ### Community 3 - "skin-score.js" Cohesion: 0.12 Nodes (45): acneGrade(), buildViewModel(), calcAcne(), calcContour(), calcSens(), calcSmooth(), calcTone(), calcWrinkles() (+37 more) ### Community 4 - "customer-feedback-second.js" Cohesion: 0.17 Nodes (10): assert, context, face, fs, geometry, original, path, source (+2 more) ### Community 5 - "n" Cohesion: 0.12 Nodes (37): ae(), be(), bf(), bi(), ce(), de(), e(), Ef() (+29 more) ### Community 6 - "f" Cohesion: 0.21 Nodes (23): a(), cf(), d(), drawContour(), dt(), ea(), f(), g() (+15 more) ### Community 7 - "test/profile-store.js" Cohesion: 0.12 Nodes (21): browser(), init(), read(), rememberKind(), request(), clean(), create(), key() (+13 more) ### Community 8 - "admin.js" Cohesion: 0.20 Nodes (29): ageText(), api(), bind(), captureQualityHtml(), closeDetail(), collectFilters(), dimsHtml(), doRetry() (+21 more) ### Community 9 - "__awaiter" Cohesion: 0.13 Nodes (14): __awaiter(), bufferToImage(), extendWithFaceExpressions(), extractAllFacesAndComputeResults(), extractSingleFaceAndComputeResult(), FaceRecognitionNet(), fetchImage(), fetchJson() (+6 more) ### Community 10 - "wechat-browser.mjs" Cohesion: 0.22 Nodes (6): createAccounts, h5, ReportUI, require, root, SkinScore ### Community 11 - "lib/accounts.js" Cohesion: 0.17 Nodes (20): atomic(), body(), cookie(), cookies(), crypto, fs, json(), login() (+12 more) ### Community 12 - "server.js" Cohesion: 0.08 Nodes (52): accounts, appendRecord(), callFacepp(), CaptureDiagnostics, CRED, crypto, csvCell(), DATA_DIR (+44 more) ### Community 13 - "files" Cohesion: 0.12 Nodes (15): files, analyze-fail, analyzing, countdown-321, hint-far, hint-front, hint-hold, hint-near (+7 more) ### Community 15 - "extractFaces" Cohesion: 0.16 Nodes (20): awaitMediaLoaded(), createCanvas(), createCanvasFromMedia(), extractFaces(), extractFaceTensors(), extractImagePatches(), getContext2dOrThrow(), getEnv() (+12 more) ### Community 16 - "巨子测肤 · 1'me 在线肌肤测试 — UI 设计规范" Cohesion: 0.15 Nodes (12): 1. 基准与尺寸换算, 2. 色彩规范, 3. 字体规范, 4. 组件切图(assets/svg/), 5. 图片素材(assets/images/,共 15 张), 6. 页面清单(design/ 下有整屏 PNG 预览), 7. 目录结构, 8. 还原建议 (+4 more) ### Community 17 - "report-persistence.mjs" Cohesion: 0.29 Nodes (6): child, dataRoot, fx, h5, ReportUI, require ### Community 18 - "1'me肌肤状态检测 H5" Cohesion: 0.13 Nodes (15): 10.09 更新, 1'me肌肤状态检测 H5, Admin API(统一返回 `{ok:false,message}` 错误), Windows 本机部署(提测用), 后台查看(admin.html), 密钥配置, 已知占位清单, 技术说明 (+7 more) ### Community 19 - "customer-feedback-fourth.js" Cohesion: 0.06 Nodes (37): evaluate(), finite(), assertPoints(), check(), clamp(), dist(), estimate(), makeFrontal() (+29 more) ### Community 20 - "build_fixtures.py" Cohesion: 0.40 Nodes (9): build_case1(), build_case2(), build_truth(), col(), dump(), main(), parse_value(), set_path() (+1 more) ### Community 21 - "AgeGenderNet" Cohesion: 0.05 Nodes (28): AgeGenderNet(), disposeUnusedWeightTensors(), extractorsFactory$3(), extractorsFactory$5(), extractorsFactory$7(), extractorsFactory$9(), extractParams$1(), extractParamsFromWeigthMap() (+20 more) ### Community 22 - ".loadFromDisk" Cohesion: 0.24 Nodes (5): ComposableTask(), getModelUris(), Gf(), loadWeightMap(), TinyFaceDetector() ### Community 23 - "facepp-skinanalyze(旷视皮肤分析专业版调用技能)" Cohesion: 0.20 Nodes (9): 1. 凭据(统一管理), 2. 标准调用模板(全可选参数,每次都带), 2b. 三视图调用模板(正脸 + 双侧脸 → 下颌线), 3.1 本轮踩过的坑(务必避复), 3. 三维度 × 6 分类 P/S 计算(2026-09-26 生效,取代旧六维), 4. 产品分组公式, 5. Excel 报告铁律(必须遵守), 6. 其他 Agent 调用约定 (+1 more) ### Community 24 - "巨子测肤 · 1'me 语音播报内容设计文档 V1.0" Cohesion: 0.22 Nodes (8): 1. 音频格式约定(已定), 2. 播报清单(14 条), 3. 播放策略(前端已实现侧约定), 4. 生成验收, A. 步骤引导(进入每个拍照步骤时播,与屏幕步骤文案一致), B. 姿态提示(实时检测不通过时播,同一提示 4 秒内不重复), C. 拍摄与流程, 巨子测肤 · 1'me 语音播报内容设计文档 V1.0 ### Community 25 - "mobile-select.iife.min.js" Cohesion: 0.20 Nodes (16): _arrayLikeToArray(), _arrayWithHoles(), _arrayWithoutHoles(), _classCallCheck(), _createClass(), _defineProperties(), h(), _iterableToArray() (+8 more) ### Community 26 - "NeuralNetwork" Cohesion: 0.07 Nodes (25): createFaceDetectionNet(), createFaceRecognitionNet(), createMtcnn(), createSsdMobilenetv1(), createTinyFaceDetector(), createTinyYolov2(), extractConvParamsFactory(), extractFCParamsFactory() (+17 more) ### Community 27 - "gen_voice.py" Cohesion: 0.30 Nodes (11): ndarray, Path, gen_countdown(), main(), normalize_clip(), 倒计时单独按字生成再拼接,避免「三、二、一」整句被读成播报腔、与提示音气质漂移。 与提示音共用同一 speaker + instruct;句间留约…, 裁掉过长首尾静音,保留 ≤150ms 边沿,避免提示显迟钝。, 响度归一 −16 LUFS + 转 MP3 48k CBR mono 22050Hz。 (+3 more) ### Community 28 - "C" Cohesion: 0.09 Nodes (31): ao(), Bo(), C(), cd(), co(), Do(), eo(), fo() (+23 more) ### Community 29 - "face-api.js 本地化依赖(h5/vendor/faceapi/)" Cohesion: 0.29 Nodes (6): face-api.js 本地化依赖(h5/vendor/faceapi/), 为什么本地化, 文件清单与体积, 来源与版本, 用法, 许可证 ### Community 30 - "ui-20261009/manifest.json" Cohesion: 0.33 Nodes (5): assets, document_size, layers, pages, source ### Community 33 - "build-fixture.py" Cohesion: 0.60 Nodes (4): main(), 递归缩放 result 内全部坐标:{left,top,width,height} 矩形与 {x,y} 点,与原数据同为整数。, scale_coords(), to_data_url() ### Community 35 - "customer-feedback.js" Cohesion: 0.06 Nodes (27): alternate, approved, assert, crop, details, excellent, fs, model (+19 more) ### Community 37 - "UI 外发版 10.09 图片资源" Cohesion: 0.40 Nodes (4): UI 外发版 10.09 图片资源, 前端素材对应, 文件位置, 重新导出 ### Community 39 - "UI交互界面调整" Cohesion: 0.40 Nodes (4): 1meAI测肤旷视UI问题反馈, UI交互界面调整, 交互, **设计** ### Community 40 - "第四轮反馈修改与验收" Cohesion: 0.22 Nodes (8): PSD 来源, 前端参数及限制, 后台校准留痕, 已确认并实现, 生产部署及只读验收, 皱纹(紧塑力)原文, 第四轮反馈修改与验收, 验证 ### Community 41 - "SsdMobilenetv1" Cohesion: 0.18 Nodes (10): boxPredictionLayer(), decodeBoxesLayer(), depthwiseConvLayer(), getCenterCoordinatesAndSizesLayer(), getStridesForLayerIdx(), mobileNetV1(), outputLayer(), pointwiseConvLayer() (+2 more) ### Community 42 - "layer_at" Cohesion: 0.18 Nodes (11): list, bounds(), layer_at(), main(), save_image(), composite(), main(), sha256() (+3 more) ### Community 43 - "height" Cohesion: 0.27 Nodes (5): height(), FaceLandmark68NetBase(), sigmoid(), TinyYolov2Base(), validateConfig() ### Community 44 - "start-local.sh" Cohesion: 0.50 Nodes (3): HOST, PORT, start-local.sh script ### Community 47 - "recommendation.js" Cohesion: 0.38 Nodes (6): assert, check(), missing, raw, SS, UI ### Community 48 - "已修改" Cohesion: 0.22 Nodes (8): 12 日第二批:明确项修改, 公网部署与复核(2026-10-12,北京时间), 准备捕捉提醒, 字重, 已修改, 拍照展示, 首页高清批注, 验证与状态 ### Community 53 - "护理建议(全量文本,按需求摘抄)" Cohesion: 0.10 Nodes (19): 5\.1 轮廓(紧塑力), 5\.2 皱纹(紧塑力), 5\.3 肤色(透亮感), 5\.4 平滑度(透亮感), 5\.5 水分(透亮感), 5\.6 泛红(稳韧力), 5\.7 痘痘(稳韧力), 6\.1 轮廓 (+11 more) ### Community 54 - "UI 对齐 10.09 设计稿:调研与实施计划" Cohesion: 0.11 Nodes (17): 1. 结论和依据, 2. 统一比较口径, 3. 逐页差异和调整内容, 4. 报告数据如何接到新 UI, 5. 登录与“我的报告”的真实能力缺口, 6. 原稿中需要整理的内容, 7. 实施顺序与交付物, 8. 验收定义 (+9 more) ### Community 56 - "report-ui.js" Cohesion: 0.50 Nodes (7): build(), count(), fill(), focusOf(), numeric(), scalar(), wrinkleDetails() ### Community 57 - "regression.js" Cohesion: 0.60 Nodes (5): diffCtx(), loadJSON(), main(), okNum(), okStr() ### Community 58 - ".forwardInput" Cohesion: 0.14 Nodes (15): computeReshapedDimensions(), extractBoundingBoxes(), getSizesForScale(), iou(), isEven(), nonMaxSuppression(), nonMaxSuppression$1(), normalize$1() (+7 more) ### Community 61 - "报告布局与跟手交互调整" Cohesion: 0.40 Nodes (4): 报告布局与跟手交互调整, 本次范围, 资源体积, 验证 ### Community 62 - "提交前 Review(2026-10-11)" Cohesion: 0.40 Nodes (4): 仍需公网/业务确认, 已发现并修复, 提交前 Review(2026-10-11), 验证 ### Community 63 - "e2e-browser.mjs" Cohesion: 0.29 Nodes (4): EXPECTED, fails, pageErrors, pwRoot ### Community 64 - "start" Cohesion: 0.29 Nodes (7): decode(), drain(), load(), preload(), start(), stopCur(), unlock() ### Community 65 - "微信登录接入与公网部署说明" Cohesion: 0.29 Nodes (7): 公网服务器配置, 公网真机验收清单, 反向代理与后台保护, 已完成的链路, 微信登录接入与公网部署说明, 数据、迁移与备份, 本机开发环境限制(不代表线上状态) ### Community 66 - "normalize" Cohesion: 0.08 Nodes (28): conv(), conv$1(), convDown(), convLayer(), convLayer$1(), convNoRelu(), convWithBatchNorm(), denseBlock3() (+20 more) ### Community 68 - "analyze-timeout.js" Cohesion: 0.20 Nodes (7): assert, end, fs, path, source, start, vm ### Community 70 - "scan-placeholder.mjs" Cohesion: 0.29 Nodes (3): errors, samples, unexpectedWrites ### Community 71 - ".predictAgeAndGender" Cohesion: 0.29 Nodes (5): age(), extendWithAge(), extendWithGender(), PredictAllAgeAndGenderTask(), PredictSingleAgeAndGenderTask() ### Community 76 - "onPhotoCaptured" Cohesion: 0.18 Nodes (15): busyWithFlow(), captureHaptic(), checkStill(), dropHint(), faceLuma(), faceOffsetX(), handleCamVisible(), hideCamStatus() (+7 more) ### Community 77 - ".runAndExtendWithFaceDetections" Cohesion: 0.15 Nodes (11): DetectAllFacesTask(), DrawBox(), drawDetections(), drawFaceExpressions(), DrawFaceLandmarks(), extendWithFaceDetection(), FaceExpressions(), isWithFaceDetection() (+3 more) ### Community 78 - ".toString" Cohesion: 0.12 Nodes (11): FaceLandmarks5(), FaceMatch(), getCenterPoint(), la(), Point(), pr(), pt(), vt() (+3 more) ### Community 79 - "登录反馈与加载优化(2026-10-12)" Cohesion: 0.33 Nodes (5): 体验变化, 公网部署后复测, 慢的原因与处理, 登录反馈与加载优化(2026-10-12), 验证 ### Community 80 - "线上微信登录部署记录" Cohesion: 0.33 Nodes (6): 初次部署时的凭据查找记录(现已由用户提供), 初次部署的线上检查(历史结果), 后续更新:已配置真实凭据, 已执行, 用户确认加入白名单后的复测, 线上微信登录部署记录 ### Community 81 - "wechat-production.mjs" Cohesion: 0.60 Nodes (4): api(), base, callback(), start() ### Community 82 - "拍摄约束放宽与标题更新" Cohesion: 0.40 Nodes (4): 参数对照, 拍摄约束放宽与标题更新, 标题, 验证与发布 ### Community 83 - "10.09 新版 H5 实施与验收" Cohesion: 0.29 Nodes (5): 10.09 新版 H5 实施与验收, 按确认项实现, 文档未定义部分的实施口径, 素材再生成, 验证命令 ### Community 84 - "微信登录联调:2026-10-12" Cohesion: 0.22 Nodes (6): 后续真机确认与体验优化, 微信登录联调:2026-10-12, 本轮修正, 白名单与凭据, 真实微信验收与排查, 自动验证 ### Community 85 - "test/accounts.js" Cohesion: 0.22 Nodes (9): assert, create, fs, http, os, path, ReportUI, SkinScore (+1 more) ### Community 87 - "产品推荐规则:肤龄基准与边界调整" Cohesion: 0.33 Nodes (6): 产品推荐规则:肤龄基准与边界调整, 决策顺序, 后台与前端一致性, 实施与验证范围, 已明确的要求, 已确认的三个条件 ### Community 88 - "ui-20261012/manifest.json" Cohesion: 0.22 Nodes (8): assets, design_scale, document_size, native_header_px, shape_metrics, source, source_sha256, text_styles ### Community 91 - "wi" Cohesion: 0.28 Nodes (9): Ci(), Ei(), Fi(), Ii(), ki(), pe(), ri(), wi() (+1 more) ### Community 92 - "客户反馈修改(2026-10-12)" Cohesion: 0.33 Nodes (5): 公网部署与复测, 客户反馈修改(2026-10-12), 皱纹数据说明, 逐项处理, 验证 ### Community 93 - ".runAndExtendWithFaceDetection" Cohesion: 0.23 Nodes (6): allFacesMtcnn(), allFacesSsdMobilenetv1(), allFacesTinyYolov2(), DetectAllFaceLandmarksTask(), detectAllFaces(), DetectSingleFaceTask() ### Community 94 - "第三轮反馈:PSD 对齐、验收及上线记录" Cohesion: 0.33 Nodes (5): 原稿与导出可追溯性, 已完成, 本地验证, 生产部署及只读验收, 第三轮反馈:PSD 对齐、验收及上线记录 ### Community 96 - "production-loop.mjs" Cohesion: 0.50 Nodes (3): artifacts, errors, samples ### Community 102 - "Box" Cohesion: 0.11 Nodes (8): Box(), ComputeAllFaceDescriptorsTask(), extendWithFaceDescriptor(), extendWithFaceLandmarks(), FaceLandmarks(), isDimensions(), minBbox(), ObjectDetection() ### Community 107 - "基础信息记忆与肤质拖动" Cohesion: 0.33 Nodes (4): 回归命令, 基础信息记忆与肤质拖动, 肤质交互, 范围 ### Community 108 - "profile-interaction.mjs" Cohesion: 0.40 Nodes (3): dragBy(), h5, touch() ### Community 109 - "submitPhotos" Cohesion: 0.17 Nodes (16): applyMirror(), bindBackdropClose(), closeLoginSuccess(), closeOverlay(), effMirror(), getCamStream(), handleCamHidden(), leaveCamera() (+8 more) ### Community 110 - "doCapture" Cohesion: 0.17 Nodes (19): armNudge(), beginDetect(), captureFromVideo(), detectFrame(), detTick(), doCapture(), enableFallback(), hideNudge() (+11 more) ### Community 111 - "i" Cohesion: 0.07 Nodes (36): b(), ba(), bn(), ca(), cl(), da(), dn(), ee() (+28 more) ### Community 112 - "showScreen" Cohesion: 0.22 Nodes (11): loadAppFont(), loginAllowed(), loginBrowser(), loginSucceeded(), loginWechat(), openOverlay(), prepareScanArtwork(), renderAccountStatus() (+3 more) ## Knowledge Gaps - **314 isolated node(s):** `source`, `document_size`, `pages`, `assets`, `layers` (+309 more) These have ≤1 connection - possible missing edges or undocumented components. - **25 thin communities (<3 nodes) omitted from report** — run `graphify query` to explore isolated nodes. ## Suggested Questions _Questions this graph is uniquely positioned to answer:_ - **Why does `v()` connect `f` to `report-ui.js`, `face-api.js`, `app.js`, `C`?** _High betweenness centrality (0.046) - this node is a cross-community bridge._ - **Why does `height()` connect `height` to `app.js`, `customer-feedback.js`, `scan-placeholder.mjs`, `extractFaces`, `showScreen`, `.forwardInput`?** _High betweenness centrality (0.045) - this node is a cross-community bridge._ - **Why does `k()` connect `i` to `face-api.js`, `app.js`, `n`, `f`, `lib/accounts.js`, `C`?** _High betweenness centrality (0.040) - this node is a cross-community bridge._ - **Are the 24 inferred relationships involving `n()` (e.g. with `newRecordId()` and `ae()`) actually correct?** _`n()` has 24 INFERRED edges - model-reasoned connections that need verification._ - **Are the 27 inferred relationships involving `r()` (e.g. with `handleExport()` and `handleRecordsQuery()`) actually correct?** _`r()` has 27 INFERRED edges - model-reasoned connections that need verification._ - **Are the 9 inferred relationships involving `i()` (e.g. with `da()` and `f()`) actually correct?** _`i()` has 9 INFERRED edges - model-reasoned connections that need verification._ - **What connects `source`, `document_size`, `pages` to the rest of the system?** _314 weakly-connected nodes found - possible documentation gaps or missing edges._