From 9675e147a0be241a2b6a1f0fb0c60581006b6ec5 Mon Sep 17 00:00:00 2001 From: xsl Date: Thu, 9 Jul 2026 23:30:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5=E5=8F=A35=EF=BC=9A=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=20hairline=5Flevel=20=E6=A1=A3=E4=BD=8D(middle/high/low)?= =?UTF-8?q?=E8=B4=B4=E5=9B=BE=20+=20=E9=9B=86=E6=88=90=E6=8E=A5=E5=8F=A32?= =?UTF-8?q?=E7=94=9F=E5=8F=91=E8=83=BD=E5=8A=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - hairline_level: 可选 middle(默认)/high/low,选用不同高度档位发际线贴图; 新增 hairline_texture_high/low 两套贴图,get_texture_map 改为按档位缓存 - hair_style: 可选逗号分隔序号,对选中发际线类型同步生发(ComfyUI), 结果合并进 hairline_images[].grown_image_base64(未选中为 null); 生发黑模板固定取 middle(hairline_texture_black/),与档位无关 - 新增 use_mask/prompt 生发控制参数(同接口2) - 测试页/接口文档同步更新 Co-Authored-By: Claude Opus 4.8 --- app.py | 35 +++++++-- docs/接口文档.md | 17 +++-- hairline/service.py | 80 +++++++++++++++++---- hairline_texture_high/girl_ellipse.png | Bin 0 -> 5986 bytes hairline_texture_high/girl_flower.png | Bin 0 -> 6438 bytes hairline_texture_high/girl_heart.png | Bin 0 -> 6028 bytes hairline_texture_high/girl_straight.png | Bin 0 -> 5826 bytes hairline_texture_high/girl_wave.png | Bin 0 -> 6273 bytes hairline_texture_high/man_ inverse_arc.png | Bin 0 -> 5929 bytes hairline_texture_high/man_ellipse.png | Bin 0 -> 5648 bytes hairline_texture_high/man_m.png | Bin 0 -> 5578 bytes hairline_texture_high/man_straight.png | Bin 0 -> 4929 bytes hairline_texture_low/girl_ellipse.png | Bin 0 -> 5988 bytes hairline_texture_low/girl_flower.png | Bin 0 -> 6435 bytes hairline_texture_low/girl_heart.png | Bin 0 -> 6002 bytes hairline_texture_low/girl_straight.png | Bin 0 -> 5844 bytes hairline_texture_low/girl_wave.png | Bin 0 -> 6306 bytes hairline_texture_low/man_ inverse_arc.png | Bin 0 -> 5914 bytes hairline_texture_low/man_ellipse.png | Bin 0 -> 5602 bytes hairline_texture_low/man_m.png | Bin 0 -> 5572 bytes hairline_texture_low/man_straight.png | Bin 0 -> 4930 bytes static/test_interface5.html | 22 ++++-- 22 files changed, 127 insertions(+), 27 deletions(-) create mode 100644 hairline_texture_high/girl_ellipse.png create mode 100644 hairline_texture_high/girl_flower.png create mode 100644 hairline_texture_high/girl_heart.png create mode 100644 hairline_texture_high/girl_straight.png create mode 100644 hairline_texture_high/girl_wave.png create mode 100644 hairline_texture_high/man_ inverse_arc.png create mode 100644 hairline_texture_high/man_ellipse.png create mode 100644 hairline_texture_high/man_m.png create mode 100644 hairline_texture_high/man_straight.png create mode 100644 hairline_texture_low/girl_ellipse.png create mode 100644 hairline_texture_low/girl_flower.png create mode 100644 hairline_texture_low/girl_heart.png create mode 100644 hairline_texture_low/girl_straight.png create mode 100644 hairline_texture_low/girl_wave.png create mode 100644 hairline_texture_low/man_ inverse_arc.png create mode 100644 hairline_texture_low/man_ellipse.png create mode 100644 hairline_texture_low/man_m.png create mode 100644 hairline_texture_low/man_straight.png diff --git a/app.py b/app.py index a02e303..ddca5f9 100644 --- a/app.py +++ b/app.py @@ -979,13 +979,21 @@ async def face_features( --- -**入参**:新增必填 `gender`(`male`/`female`),决定返回的发际线集合(female 5 / male 4)。 +**入参**: +- 必填 `gender`(`male`/`female`),决定返回的发际线集合(female 5 / male 4)。 +- 可选 `hairline_level`(`middle`(默认) / `high` / `low`),选用不同档位的发际线贴图。 +- 可选 `hair_style`(发型序号,逗号分隔如 `1,2,3`):对选中的发际线类型额外**生发**(同接口2)。 + 留空则只返回发际线叠图、不生发。越界/非法返回 `1007`。 + `female`:1=ellipse,2=flower,3=heart,4=straight,5=wave;`male`:1=ellipse,2=inverse_arc,3=m,4=straight。 +- 可选 `use_mask` / `prompt`:同接口2 的生发控制参数。 + 注:生发的黑模板固定取 `hairline_texture_black/`(middle),与 `hairline_level` 无关。 **返回说明**: - `hairline_images`:发际线叠加图列表(发际线曲线叠加在用户照片上,同接口2预览), 数量 = 该性别的发际线类型数,本期按贴图顺序 `order=1..N`(暂不计算合适度)。 worker 返回 `image_base64`,网关落盘后改写为 `image_url`。 + 每项还含 `grown_image_base64`:当 `order` 在 `hair_style` 中时为该类型的**生发图**,否则为 `null`。 - `best_hairline_center_point`:最佳(`order=1`)发际线曲线的**面部中间点**坐标, 以**原图像素**为基准(左上角为原点,x 向右,y 向下)。 """, @@ -1000,8 +1008,8 @@ async def face_features( "request_id": "mock-request-id", "data": { "hairline_images": [ - {"image_base64": "iVBORw0KGgo...", "order": 1}, - {"image_base64": "iVBORw0KGgo...", "order": 2}, + {"image_base64": "iVBORw0KGgo...", "grown_image_base64": "iVBORw0KGgo...", "order": 1}, + {"image_base64": "iVBORw0KGgo...", "grown_image_base64": None, "order": 2}, ], "best_hairline_center_point": {"x": 540, "y": 430}, }, @@ -1024,9 +1032,23 @@ async def hairline_generate( image_url: Optional[str] = Form(default=None, description="图片 URL"), image_base64: Optional[str] = Form(default=None, description="图片 base64(需带 data:image/...;base64, 前缀)"), gender: Optional[str] = Form(default=None, description="性别 male/female(必填)"), + hairline_level: str = Form(default="middle", description="发际线贴图档位 middle(默认)/high/low"), + hair_style: Optional[str] = Form(default=None, description="生发发型序号逗号分隔(可选,如 1,2,3)。留空则只返回发际线叠图不生发。female:1-5 male:1-4"), + use_mask: bool = Form(default=True, description="生发是否启用 inpaint 遮罩(同接口2,测试对比用)"), + prompt: str = Form(default="补充遮罩区域的头发", description="ComfyUI 提示词(同接口2),会替换工作流节点60的文本"), ): if gender not in ("male", "female"): return err(1004, "gender 必填且只能为 male / female") + if hairline_level not in ("middle", "high", "low"): + return err(1004, "hairline_level 只能为 middle / high / low") + + # hair_style 可选:留空 → 不生发;非空但非法 → 1007 + hair_styles = None + if hair_style and hair_style.strip(): + max_styles = {"female": 5, "male": 4}[gender] + hair_styles = _parse_hair_styles(hair_style, max_styles) + if hair_styles is None: + return err(1007, f"hair_style 需为 1..{max_styles} 的整数(逗号分隔),收到 {hair_style!r}") raw, e = await resolve_image_bytes(image_file, image_url, image_base64) if e is not None: @@ -1040,14 +1062,17 @@ async def hairline_generate( from fastapi.concurrency import run_in_threadpool from hairline.service import generate_hairline_pngs - res = await run_in_threadpool(generate_hairline_pngs, image, gender) + res = await run_in_threadpool( + generate_hairline_pngs, image, gender, hairline_level, hair_styles, use_mask, prompt) if res is None: return err(1001, "无法识别人像") hairline_images = [] for it in res["images"]: hairline_images.append({ - "image_base64": _jpg_b64(it["image_bgr"]), # 发际线叠图 JPG + "image_base64": _jpg_b64(it["image_bgr"]), # 发际线叠图 JPG + "grown_image_base64": (_png_to_jpg_b64(it["grown_png"]) # 生发图 JPG(未生发为 null) + if it.get("grown_png") else None), "order": it["order"], }) c = res["best_center"] diff --git a/docs/接口文档.md b/docs/接口文档.md index 47829dc..4d91fd3 100644 --- a/docs/接口文档.md +++ b/docs/接口文档.md @@ -373,7 +373,7 @@ ## 接口 5:发际线 PNG 生成接口 -**说明**:输入用户照片,返回 N 张用户发际线的 PNG 图片,并返回「最合适发际线」的面部中间点坐标。 +**说明**:输入用户照片,返回 N 张用户发际线的 PNG 图片,并返回「最合适发际线」的面部中间点坐标。可选地对指定发际线类型**同步生发**(同接口2)。 **请求**:`POST /api/v1/hairline/generate` @@ -384,6 +384,12 @@ | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | gender | string | **是** | 性别:`male` / `female`。决定返回的发际线集合(female 5 / male 4) | +| hairline_level | string | 否 | 发际线贴图档位:`middle`(默认)/ `high` / `low`,选用不同高度档位的发际线贴图(仅影响发际线叠图)。非法返回 `1004` | +| hair_style | string | 否 | 生发发型序号,**逗号分隔多选**(如 `1,2,3`)。**留空则只返回发际线叠图、不生发**。female:1=ellipse, 2=flower, 3=heart, 4=straight, 5=wave;male:1=ellipse, 2=inverse_arc, 3=m, 4=straight。越界/非法返回 `1007` | +| use_mask | bool | 否 | 生发是否启用 inpaint 遮罩,默认 `true`。`false` 时用干净原图生成(空遮罩、不烧模板黑线),供测试对比 | +| prompt | string | 否 | ComfyUI 提示词,默认「补充遮罩区域的头发」,会替换工作流节点 60 的文本 | + +> ⚠️ 生发的黑模板固定取自 `hairline_texture_black/`(middle 档),与 `hairline_level` 无关:即 `high`/`low` 档下发际线叠图用对应档位贴图,但生发目标仍压到 middle 档。 ### 输出(data) @@ -397,6 +403,7 @@ | 字段 | 类型 | 说明 | |------|------|------| | image_url | string | 发际线叠加图 URL(worker 返回 `image_base64`,网关落盘后改写为 url) | +| grown_image_url | string \| null | **生发后图片** URL(ComfyUI「植发」效果图)。仅当该项 `order` 在 `hair_style` 中时有值,否则为 `null`(worker 返回 `grown_image_base64`,网关落盘后改写为 url) | | order | int | 排序序号(本期固定 `1..N`,暂不计算合适度) | ### 响应示例(当前 Mock 返回值) @@ -408,14 +415,16 @@ "request_id": "mock-request-id", "data": { "hairline_images": [ - { "image_url": "https://hair.xiangsilian.com/static/sample.jpg", "order": 1 }, - { "image_url": "https://hair.xiangsilian.com/static/sample.jpg", "order": 2 } + { "image_url": "https://hair.xiangsilian.com/static/annotations/uuid1.png", "grown_image_url": "https://hair.xiangsilian.com/static/annotations/grown1.png", "order": 1 }, + { "image_url": "https://hair.xiangsilian.com/static/annotations/uuid2.png", "grown_image_base64": null, "order": 2 } ], "best_hairline_center_point": { "x": 540, "y": 430 } } } ``` +> 说明:未生发的元素中,网关不改写 `null` 值,故字段名保持为 `grown_image_base64: null`(有值时才改写为 `grown_image_url`),与接口2生发失败项一致。 + --- ## 接口 7:C 端生发 v2 接口 @@ -480,7 +489,7 @@ | 2 C 端生发 | 用户照片 | 生发后图片 + 指定发际线预览(单/多张) | | 3 B 端生发 | 划线图片 | 最合适发际线图片 + 生发后图片 | | 4 用户特征 | 用户照片 | 6 个用户特征字段(脸形/眉形/年龄/动静/性别/基因风格) | -| 5 发际线 PNG | 用户照片 | N 张发际线 PNG + 最合适发际线面部中间点坐标 | +| 5 发际线 PNG | 用户照片 + gender(+ hairline_level 档位 / hair_style 生发) | N 张发际线 PNG(可含生发图)+ 最合适发际线面部中间点坐标 | | 7 C 端生发 v2 | 用户照片 + gender + hair_style | 同接口2,使用 add_hair2.json 工作流 | --- diff --git a/hairline/service.py b/hairline/service.py index a807167..af9200b 100644 --- a/hairline/service.py +++ b/hairline/service.py @@ -29,13 +29,20 @@ _REPO = os.path.dirname(os.path.dirname(__file__)) _TEXTURE_DIR = os.path.join(_REPO, "hairline_texture") _BLACK_TEXTURE_DIR = os.path.join(_REPO, "hairline_texture_black") +# 发际线贴图档位:middle=默认(hairline_texture/),high/low 各自独立文件夹。 +_TEXTURE_DIRS = { + "middle": _TEXTURE_DIR, + "high": os.path.join(_REPO, "hairline_texture_high"), + "low": os.path.join(_REPO, "hairline_texture_low"), +} + # ⚠️ 本 worker 是 RTX 5090(sm_120),torch 2.2.2(cu121) 只编到 sm_90,CUDA 跑算子会报 # "no kernel image"。SegFormer 默认走 CPU(~2.5s/张)。换 torch cu128 后可设 SEG_DEVICE=cuda。 _SEG_DEVICE = os.getenv("SEG_DEVICE", "cpu") _landmarker = None _parser = None -_texture_map = None +_texture_maps: dict = {} # {level: {gender: [(key, path)]}},按档位缓存 def get_landmarker() -> FaceLandmarker: @@ -61,24 +68,27 @@ def _gender_key(stem: str): return None, None -def get_texture_map() -> dict: - """扫描 hairline_texture/ 建 {gender: [(key, path)]},按 key 排序、缓存。 +def get_texture_map(level: str = "middle") -> dict: + """扫描指定档位贴图目录建 {gender: [(key, path)]},按 key 排序、按档位缓存。 + level:middle(默认) / high / low,分别对应 hairline_texture[/_high|/_low]。 文件名规范化去空格(如 `man_ inverse_arc.png` → key `inverse_arc`)。 """ - global _texture_map - if _texture_map is not None: - return _texture_map + if level not in _TEXTURE_DIRS: + raise ValueError(f"hairline_level 必须是 middle/high/low,收到 {level!r}") + cached = _texture_maps.get(level) + if cached is not None: + return cached mapping: dict[str, list] = {"female": [], "male": []} - for path in sorted(glob.glob(os.path.join(_TEXTURE_DIR, "*.png"))): + for path in sorted(glob.glob(os.path.join(_TEXTURE_DIRS[level], "*.png"))): stem = os.path.splitext(os.path.basename(path))[0] gender, key = _gender_key(stem) if gender: mapping[gender].append((key, path)) for g in mapping: mapping[g].sort(key=lambda kp: kp[0]) - _texture_map = mapping - return _texture_map + _texture_maps[level] = mapping + return mapping def extract_502(image_bgr: np.ndarray): @@ -190,10 +200,40 @@ def generate_grow_results(image_bgr: np.ndarray, gender: str, use_mask: bool = T return results -def generate_hairline_pngs(image_bgr: np.ndarray, gender: str): - """接口5:该性别全部发际线叠图(同接口2预览) + 最佳(order1)发际线曲线的面部中间点。 +def _grow_from_texture(image_bgr: np.ndarray, ctx: dict, white_path: str | None, + use_mask: bool, prompt: str | None): + """对单个发际线做生发(ComfyUI)。黑模板固定取 hairline_texture_black/(middle), + 与 hairline_level 无关(high/low 贴图与 middle 同名,basename 映射即落回 middle 黑模板)。 + use_mask=False 时用干净原图+空遮罩(与贴图无关,white_path 可为 None)。 + 失败返回 None,不抛异常。 + """ + try: + if use_mask: + black = load_texture_rgba(_black_texture_path(white_path)) + marked, mask = build_inpaint_mask( + image_bgr, ctx["landmarks"], ctx["parse_map"], ctx["points"], black) + else: + h, w = image_bgr.shape[:2] + marked, mask = image_bgr, np.zeros((h, w), np.uint8) + buf = io.BytesIO() + compose_comfy_rgba(marked, mask).save(buf, format="PNG") + return comfyui.run(buf.getvalue(), prompt=prompt) + except Exception as e: # noqa: BLE001 单张失败不拖垮整请求 + logger.warning("接口5 生发图失败:%s", e) + return None - Returns: {"images":[{hairline_type,order,image_bgr}], "best_center":(x,y)};无人脸 None。 + +def generate_hairline_pngs(image_bgr: np.ndarray, gender: str, hairline_level: str = "middle", + hair_styles: list[int] | None = None, use_mask: bool = True, + prompt: str | None = None): + """接口5:该性别全部发际线叠图(同接口2预览) + 最佳(order1)发际线曲线的面部中间点, + 并对 hair_styles 选中的类型生发(同接口2)。 + + hairline_level:middle(默认)/high/low,选用不同档位的发际线贴图(仅影响叠图)。 + hair_styles(1-indexed 列表,按贴图排序):指定对哪些类型生发;None/[] 时不生发。 + 生发黑模板固定取自 hairline_texture_black/(middle),与 hairline_level 无关。 + use_mask/prompt:同接口2 的生发参数。 + Returns: {"images":[{hairline_type,order,image_bgr,grown_png}], "best_center":(x,y)};无人脸 None。 """ if gender not in ("male", "female"): raise ValueError(f"gender 必须是 male/female,收到 {gender!r}") @@ -206,12 +246,24 @@ def generate_hairline_pngs(image_bgr: np.ndarray, gender: str): # 面部中轴 x = 眉心(9/151 中点) face_cx = float((lm[9, 0] + lm[151, 0]) / 2 * w) - textures = get_texture_map()[gender] + textures = get_texture_map(hairline_level)[gender] + grow_set = set(hair_styles or []) + + # use_mask=False:干净原图+空遮罩与贴图无关,只跑一次 ComfyUI,选中项复用 + shared_grown = None + if grow_set and not use_mask: + shared_grown = _grow_from_texture(image_bgr, ctx, None, use_mask=False, prompt=prompt) + images, best_center = [], None for order, (key, path) in enumerate(textures, start=1): white = load_texture_rgba(path) preview = render_hairline_overlay(image_bgr, ctx["points"], ext_faces, uv, white) - images.append({"hairline_type": key, "order": order, "image_bgr": preview}) + grown_png = None + if order in grow_set: + grown_png = shared_grown if not use_mask else \ + _grow_from_texture(image_bgr, ctx, path, use_mask=True, prompt=prompt) + images.append({"hairline_type": key, "order": order, + "image_bgr": preview, "grown_png": grown_png}) if order == 1: # 最佳发际线曲线的中点(面部中轴处的发际线 y) overlay = build_overlay_layer(h, w, ctx["points"], ext_faces, uv, white) ys, xs = np.where(overlay[:, :, 3] > 40) diff --git a/hairline_texture_high/girl_ellipse.png b/hairline_texture_high/girl_ellipse.png new file mode 100644 index 0000000000000000000000000000000000000000..1abbe93aa6246bd2afc1618f35d6fd60bdac5973 GIT binary patch literal 5986 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 Fe*n9LnG*m2 literal 0 HcmV?d00001 diff --git a/hairline_texture_high/girl_straight.png b/hairline_texture_high/girl_straight.png new file mode 100644 index 0000000000000000000000000000000000000000..4a8ac8ed7c84729f44e92baec418fabd77e83e6d GIT binary patch literal 5826 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 K^{m|=e)Ye>r0jz(W1mIpN@4o6P>GRACbAoD zBZgGdr3homWQ!~_mJwq#X8E{(#rKDAKb+U|Jm>Yi&Uu~Zyx-?J=Q)|@To6hMI~4!` zN)Glm=K+9js!$*&yD3%^nSxCrA7k$o3xJ~fzYPK&KhfIkgv6dloB@?x+H;$RbcnUH zH2^h4MPZ=KrmY-j>lx=39UPYs_~#X17Z!pJEUd{50zgyfU}No`2w50Ox^wg*3dS`# zW_M0*Prj9X;VlKZn^0)(8-u)WDqb>3#XA96f8SNz=2Wo{;;Zj;EU;#%>~6Jtnq%e# zxtqE2wGOHda@HEoejd5@AMMU0{u6=M!#F=;ODAS^{RIK; z3laV%3nbIzW&`$1O5LX|t!Z#@S6S}^olV>1yRx`L+u+hFd2^eK^rJ3QIR>R znyN2b+t~pP>)X(?E$|hDiCAWN*+eb_v4--JG<}Km2pE_t*v>m|4W_q(fI?HQB>a&D zm-xw?U6rFB5dxt(x7b}A_$%Y|e(nS%ff2CQR_jb9i`<;>QTRSrqq?(JBk}0+8l5X^ ztCHX`^64fysPSz8>fRDOU}Cq9;WWI5Pd4o5+|0+}#_58sL-QL#&r{LE@aEv~F3tD!%Zud6Sr7rjCbMxC&4d~}268H1S9R9=j%G7}WGH#m{IZdT!w zA+k`A_0GyoliPfpT|@q~(zSf?q7C){yO_cm=FHWLYRC;ZQAPt%m)16j`ZCpgnu675 zQ;$_+%d{^or<`tCMF`E`=lhtK!(SkHONT{8lFIc*RYzfBlX-ots+NXk)cV{)3cNcK ze68G=#_ws;I)^i6laYD0sNERbaswY!Kf3@)|Lmfs{ej=)#3Uj_IA#-BY{VY+7^Kp0 z%u(aAUF4PlHodq|2jlzY5@wu8d&WwcVR~JQm!>~}59UzrnXZ3Xt8WnJxEc}wxUfY* zuRaa``#SNgmCj}VxT18ipHTax>g#>%v-ebELC`==LU;n7G|zOwZ`D0pkdebdtlubh~b)K~0YpAq^p>?{n} z7ACTiT_M*A-e!%0NT$DyMdf^k>Fi+I>J!tV=*x0YUTi`xx`-1Z-8DQOvfyohs>RA> z0NnAhIG;Uz{dfunXFTx!JjfmBE4juOdFl|&Tuh^h&gawpER)P9tV z48M?c4*yrOLBm;(H>kr0ucGi>lID@&IY~YOT~S43=OVHD!xPGV5E!3wi+lUO&oRh_b~K#nWEJgGh*bQx4`;z1lIc3VR7pGujG19qtm}=r2o(G~zV8Vz))6uw0sJfw ziW5Hz2W_?1OKJU7ND7U&H)I`ePPI~of>$;${Kv~&(q9C(j%&9_qN~VgEg6DW z9q0qb1(3fnc7TFLS>VH&?VV7LfC>rek~ zo3Uwzvzn5&3^!&UjZnQ1Nd;DXRyr%u#zibIdh?R8Il45b; z#o)0oRXAY+(#YS->s3puHcFzMo;-^GduxCobaI*FRP47M6D33y_^*jm=0kNC^~)92 zGMbJnkC7WN$AX*lCo9*M4HJ$|?NJ4u$~+4EF`P*AXPw|&rIjKWNp@+?Omu3A)ef`) zdSgKP0g>?IL@ken= z%P}^;_+BbLP4tTAXK+lKxg8;RtS%%qH$V)-_r5N7$eXmN$i zv^wxS(gT6(KPDX(wfdJ{VBqO}Yecg8?{%%#1J|sSip)EQ+ft)p%h(air4M*^17!r+ zXou3~h196LZf;G60+zq|Fy5Q#is+9O^>xK0w@6-pqma%PRj5(;vWbrFSeG+OB`boy zF#o0qrZPvS%t?;~f4O(4$8vNwY0F8#Y{T;@6{Rr0tsCv|?Vblg4A-_aaV&K4YuQe5 zOJ(FjcAdurgT70HYf-&=`)9ZhOt_KTe`jE~~M zVaX8_@jnAamM0VEwN3NH+gdjh*;y;}m>R||b;&?c4ro(MhnBLEFEjahymD?S-p3&2 zr{ANMpsZyv0?EV_k>+(AVpjDjdGUL$0 zOtxXwH>UGnqU)|%eVO76G$;#0G^OBQ4c9suh?RMY{}E0Ic)t)4L`p*KHGvSY>N6$5`9R7JH30IQ3ug{ApS9Aq;Y&J z7&1qf(f!1$H+!Z(J)bpGfUSs8k6xRl77!Z+o^hTt+XLKc#s(e{?vWSW24DoiRh0gQ z&lxL6D9DdMh_(HJP zNoghqTIV9~yBl+UKFI&@<$a*KX7+cNtmgxEZmYca`z30;OiH&c;?J{?h6h7=oY>4`)C?%dD~A)=%o4LbCYuINkDew(GV4)@`f+K~C~wHj`VB1EZ%X ze-ShlAz^ahrDlOmK_T9jNgjS41}KPiqwJh-U!h0tHx$k&A^C?nnsPWxwo1^L*gNnG z2C+>mvunbo1YbW#yl<)PvJ~V;Tq8wtGv006h(ZOeL|j?eSrDkx#lJ6}@IJ5y81q<2 zm4_>%yT~hvEwRGtA#XVf2T~cH|2|OCb9E2*O2#4sY^UFUz!l|FwzeXD&bK zPl3}@lzUy|VbPedDX1~F`Aeh6*wmc9Bhm6$tU0}KV|de zk!8*%$x(#3ebT;KpJIliQysaGo)F>Xz!!2r{#}l+D75g{YwZgK;*_Tu*Q~;qZVDVX z5`S0c*3X(RUi91vwK~4wJDPd#Q@e{eI2}GU5G5rXBs)*?0DUX=gN~w;HL!oCBsMY> zeYZ#tZ0q(3Vn{Zi&or@ZA;n2!iEiafSpwdy)8aYLM5xu)n)XqP$C?lN+wiHJZdZn~ zqyhTbhQ!ScHPk`x6l87K6lh^PMidmCf&J#eu7?=GzGq>+FU`pWGz$W%^AS}Uj|fY* zPFo6cn=~|XLG{!nScO|W4+6(aG*soj3w~4jsvEu$sw4 z5^o6xDEsxO=4{s>MoT@IzcG6;Cv!RpnUF)Hu8KZ<_EYDr&AL?@9l7NKJdfAhvpoGc zxjo1H0gfxlbx1)oBQ7DDUxNAcc*o_RB`T0faE?`F*X$(@TrZ<5@Xeb_sxWgl!ScdT<)%Bcmp@5nXP;sRz_q`-o^7QgL{9V9%`^$= zFK-b14~x{LqK|UYt(uwZ=?iObB8{M}`!WkE4ChlK-LZQZG57IPS+srZuS0W&hky@d zbB>R_8HB)bU052Y*szwH$Wj9u*7E_FB1sEHSD#b5!Pr~07^j<~v+x=kbF-dm&r^7o zai3QQ+BqmB$!z~Cv>afed`A2=*ZbovUb1y%MaxWy3{p3VT51`4f#1BDjnmu%06$V46GxXLrjBA{Y( zK}Cc@#%)kN^0vzjwysn093h;H*x;NPPU>2bVmbR%xrZ1Mk8+IEwKJ~m1eIC1`S)+0 z{stoTYWkRZkvf_fMr}N|N>{gk*aAr+3jUZsF{Te#?yF&AI-jJR#_-Oruq+ns9M@pc z?N57oz_Ok{fN8Co5oB}lhaD%0jC@aTUJ9{9V6H0E8-4Ah_N;ajPV0ZxK$&^YFio zi*^k(kOLV`tQ~A6YP-OxfsBVuhHX^nRN)?lXQ@t-v^B-vM*>n%x zOiZ;8&F@?GD3_w%hc&vSVZZQ%R=+Lyfx-H|;lbGa|q! z!Atkfg(h3>r;6^EZsG*3(ZiAQkbv87b+3xZIv%UU?u9(0k0vekOB~$FNYFkJPS`2? z*T&O_YC}+HtHz7+3oNFjDBsmJ2q96V>TBo@ZAwKy9cT!v( zeF(%nl-oq^?h(cjD+F?) z{TToV*QEilxBsR53c@cW{9?f`7W`tt|2+#lifNnm_8*dCH0x}~bJK>KKLnf40~edh IGXdBB2NFQ&OaK4? literal 0 HcmV?d00001 diff --git a/hairline_texture_high/man_ inverse_arc.png b/hairline_texture_high/man_ inverse_arc.png new file mode 100644 index 0000000000000000000000000000000000000000..28625ef3f93b1e17d49d52e7ca4cfb9aeff77fb1 GIT binary patch literal 5929 zcmeHL`&W|L-hWUNwTz~VHm1@{_oJqbnN$K=mR)9|>0&vkXyp|zn3|TtgEcu*R?ay! z+C{~*v@|6}Ktl!dsAodOG6XTjB)lQw4N$HxbJqJeylcH{wbt{jz4zz&;rrR2=es}O zz4xt?CjxA39BcppuswRj{}ce2nYw0xm8Gd!NdKrYHP(b9LCFBHe9hl41bAGq-ULFD zPX!zRs=FO0OaqH3zn}a7peA>@E_|73yfWp``IOU%ktu26mm`3~F;Vg1MKyUB0l@Cr zQGdTP=@9u~%$PIK^f9_1}UT9F;UylrhIw2yn9_R*+Bj!Gpyy5eA(o8@u^p_ z&ClFm(cFU_N-53spg+LRG3%s#v-8*v=|PDcUXZ66Nj=_T?Y(j?H->vw^2WWl7#w2u zEm65Ll-NO_pMN5n>+9EuRzqExTY&QwO(&Iph9s{Qs@yp4?nTUrs`G-|JXSL|2H!@R z2%k|g8cVackHgs^>j}a1v6FCNxu0Q!=yDl@Ib~0QV_gy`VEn8sgD9UCryaEQBQV?q zj4?hoC&i5Hmr*l$L%&Hh_sqdkj}lU^1^>vzF-GvR3t^~5>g}v0@vJK8>P4Jrxd2?} z__O?KN?BENO?HdHCH7%6Tg#Pb4umEOno#ZrBGv^Js?rm)hvTrJ{Je9f2tOTifcz2X zxWKEEvhWYz;+S6SSWakWOOTh)U8{}FAIR4?p!UyXGa4D$8$Awko;pDFiWn}R-gFZb zH?oR&HLyvt_Fm%-MW!@CZ7P{#2BJwMXawiwB!+6e?{a?|n7gMsF!NOOiKlttFjCyX$-f6j$ErO09_Qvay-+^NVo%|B zah|Vds=&HzH-n4&Os?8b|EDR5qF}ON)~vCoH0*Z1vo))0<&U!D_^W~1e%zUY&1S=! zAKU7PL07&Qbdnu_rcb*cFSK7QQ(Xe1oN86Zadbv5Iq_Qo4qM6F`QjHOZPq^i>LD#! zf4s%{?u}6@UuCxt;+-oyOMTQkkw)wR`9CA|2|9L2NGl|#d<<8?r&)}>yTdv9J#gZ& z>ffYeSY(rl-d`0&714zaTc9RzWui6OzI|`oH;&WH#p1jUfyZ$VW{SxFY?ZObXPMR~R zbMe_ZFbO8x+FLC>DMgJ_dks7!&`i(%_IgLIw}Qb6`;faXy&(v)m6pYZ{VKaxMuG1Y zV@g@0&m8xPNzikG*DT48{C7FFKT*UzdD|NP(^InrxW`ic+5}?t{@CVHH??#A4!}+! zFfDc1z#3Io>f1ZJdeXkpowub~4A$Oo9Ahe<^DKOr`V*m{{tmE$j8I#1kU6b<4O`$P za+jZ&o471dJcG}qE8isIxl#CsXSH`#+WH2>2@6hAU(qw%U?3XXnsrqDQV!Gy6oM2( zJk}6>A3E!_<>CsT((Irt)TY`=*Xv7iqS}{YyBN=c{%|Kisdh6&z0xvlP#98U$}BDR z;ktTR**U`nkVm6G3#k|w<3A+=~Rf!IZ3eTPD3i-F>7g^vV73YZ-H?MqKV!GoR6Xh68^R_-h{}4%9 z6VpS187Ohw9NY6Ux>y4HsCvbz%>p%<*GLP4=DZlLOzw;*3M}}*lnlfo-s%N~lZ;R; z5mlKT^nk>8pJ_R)O42toe5iV7<4Z(^N%8kZ1o5Xpap1rWeI^Ao*5h86E7;9d!uzWI z`dWr&ma(w$d|ErlXZ5vUecmdBbDm>Ad&(v~L`*gAkH6ZC|E%b$#|~peb6#{$pez?B zBvHUn$3terFYuUJZJ)=C+T5TC1H~feMeT?3Va=fg!<+i;^0ZH|wNu~C$mzuRtO!r@ z`2j(JZ&bJHbe(Yw57^Aa`v*$&&I{T;kYOo<&vSa#%lm-DK4oi=$1_JsKi^h|- zH$K$vFp_Q!k!%KxYqb|XA!l;D3XnZjHsqsXWY5K7o=qbgapt(CA(fgKH88h(tOoaH zS4qYSkW`3X#B^9LEWf9Z)P{&d9oL!oI#90(prug$lDV<2nUQ_^Uk0i$O|CYk#w#Br zJ;GkO*%C8&aCl4PvXy=5XF&A6Cd#+Tk%s3t6APy+X;Oeq^mdNcb}}-FZWQbEG%Sg& zA3}#ZE;Ae6?m(3qiC!NUMux>v%R+mL{HZ(lBz&r!@H9hOjSAMD_xY1xAXyN%n%wQU zlLdXRq>m(KipweG%r7BJar<>~g+UbbW)3a1dXre|dt33qt+NzXqx zx8;0CsLno}r*K`F10arx)|A2J#%1*Rw6tm?=`{1ZdRS^2A-FXNX#nUU0COXSLuRacww#KEafEX@N4DInmw^ zc3pP=dYI#ksR#e6E=sfa`AYz_?HsWoHdwVLIe1{2t6m2^3OJU{9zYXk6af$2i>B37)pClXq?41@x5|uoRXD|Eb**+CVx+%n z(aDH}#;f5C;h$yn5ivG3!`M$PAo?`j7@C-sn4Al%dQ%(6!KGFkN@!le+PB5v9r~Cb z*d&W0xQ1>j4v^!6w~zapCi<~x1+G7ka&A9WX56Frl2%LCl5Db?eUd(Nxsldy&MLy{ zrzNT2^vBx@oK7^t387!(5}AVgO$kc%$-UUtV&k!1?Y4l7De$yy;=k$ZA$l`E;@08Q zZGNkO-y#}g`&#j1AB_QVpTB&2qZn?r?~tFkBGmDt`=zbLb_x6Gqdd7ve;oX>1;p{& z*hLFOj^Lh*wv(4pOYg`)4>rKHyV;irICkZr+LX=L0mKS_Ip3Wcj?5 z7KUTLL^>zz-18IQm^~XGt-y`3X*lpeWB2m!WOvGQRETju!kg^v>BEalb%`cTat1$8 z3{xZ3H!74=d+)A1)N8fu#f`mmu28HhR^_b&huE&169 zdszt8H!+dJ;-3lD?a9^U=E~~zXcSVLXHd3{X%i^wEM5DoDu%4+?m~IjC%1?sbY6n; z;!``G&A7d_#<%7uR_(g7GySC)>bCU3$r4nxhEr^;>`U0_!xE_AtLuTfoe%y<=~LmqAO~clf3~$-k#8g~)fe%A%o60H7z?zBOglW&b_bsxQou9wDLzC_ zian^i0Q1cNz!TWP(rz$J{SJ8!NKsTsq0hurp%sMSp;<7FOq};-OzIVX*V@ci*)G02 z4|9kEhaY(I_xJ*F!t|D$2zFEe-n>9Tj9*%qnvZFn7;0-?13XEiBq1pVwVxa^K&8E&x{Zgs0eMRVTN=>&=u}RkZyV|x;0fPd=ZXA% z8&PcBww&zLejHHWeb!d_(S}Ui3hcQQ{wCHL;%x`W7EYU?S%fEmFv=_}*-ngZVm0yQ zh08d{B(9vgnz~8bs(OF3FdD-S#jXN`IZHC>$g=A~s0kY7YbFBeOgn((;Qr4cdvjy9 z6}js%noy{M62cRxg;A$!FczH1F8FKaTEM;p%1QAke)QkyQK3~7M_4Q*ELS9pgzL0f zy$pl5NsDe>@wxzmd9Wjuvf+DR4}PD~czPM9ZJbtKX8im6P}Gk`^WXxNrXLDYpKjO) z?1>U-j42Spj?R(MtVikd6P3~&IQ~sO)$;UmXEeVbslu6Tw8K@9W zaZ~*X2wh?4$wZHCv)8#MmZtOcz0HuZ6r0bG?#ZkR+=ba&1hw4jZ<2h zj9F=piW{iO)`nw?fc(MFyit?a>&F1?Ir7$pBzw|NjdHJStvp2*Q$&?*AF6>2R4a zI3{rchXMegF3)Nq+SK6xaCzUU%g4~Mms6rIodK?=ZfJ08;-hkt&Fv-xb zcVpus+T_q$Sb)jvSli!BtYAxi+HkPNuIKfoeIK3;zPr>SJLpC4+VIW;P5-O8j(+#B zkSohWlv?Jt zr&-EkG46qq9#@%A1`y!}a`j24PXPWdFaXFjF(9`C0NVoq;J@nM7N}V-I?fvyXvPl@ zZ_~ZNei_1ze|(6uy4mn@3-Ci=(Op-bqfPv1X#-ZGQjBuGDpITc2$Csz4W*%)yc}-vPpj4Y=clt+1*rMtS|mX^g!HESY~g-#|IC=aA{E!Eg^d2dw23=I38=k7e ze{|OkMK*OOK0j5My~j1>{$Zld4j4Ni%lSh^8+Pf*QMHN@ngLpd{(2^@)HwR1+#?HJ;tZk0`MW; zTA}+4qK>e~I$s;p_O;QB#W!i*RkulEA*GemyCZQaC#r=WQQ@LO6?v zO~c|F4g*nJSdY$fIEjwK}jL5Q`^mb5aa z?s<9k>mFV?viZ=MvS)K0jdPh7N8g$n&v-QJH|5Gxj>~Un7bW004*yG;kHzEt_we8XC zZD~3Os{YT{FT1U}lf?-)ulw}an#5V_2gfK-GqOpCWbm*Nw4OzLZ_rZ z7G%`3%7SO^ar~R>vR0+0fhAYJm#!Fmv+P2asbi$<;oc{pR+At z-~&OX>Io4GQXVN<5v7EuBviscnKa0LH?B*NKfAdQ&%~ys&38SMe0^ztDnrLlfd9P8 zyt&H+*dI6e!BCHeM0gdeKS$cP0`?6z*L3HDPZMckx2ahb1C6fyw7hUc#Op2Soi8&z zF&Pt`Hl1W0fazOroLdNpFjP_;S;k_K$Q99Egdr1_Vqn3Dfe#QA@tdhxdsNc8IPU$e zzTuc-)<-bi--9?`Us_p)g}Md{UtnliWyWz4$NzD&2VCgbE-6lpjGXimpp*j&9P&@X zBwQoVWn1Oe$qxkB+=%NPU;kT9Xn&tleROfvE>zJL4DQt{JHX`*wu|+G7NQyY{`~z3cW#^vte9)E`Y|t*l#zuAk8lv^bp=-4AiV_?rL)HK0i2 zri-eIUZZ>(&b)v|v{Mk!1MDErJE6(3_-u@=!d%tv^hBiLsgIdXBH}SM2FzZL#-|s- z*m|n-6?+P9nUxJs4t^H*Ov^PdgVdo7jHp7hukEO%tuUdr@pZ%z4M{VH|pU$uvr#^cr5N}HJj2ma}|Pksu6gaIsGXKIeUU%{s#d6 z#CxwF0_DZt%*wt{O$NQ3#7gu~`&z>1IJT-Gr)j^`Hwuh3?6bRmJ@A~YeaG@rR2P@u z2H+&#`ys9r!Z?RkN$m9thY2i{5ZQQNGi3TUo_||kC)9u4tJ{^SpU7Mfj4#=|V#zly zqn1?Ayj*qM7AOxyJ#;<%=CQUU;>}tDgxx7ohvq{JkX}*!Hf5=Q1U*D#!%GeJG-EGa zq%(Sjx4GND)cqj<_vF3THaj7@p_@GXO@bwnX{XGaVN?Q+jbOW1(>rOuEU;9YpuXuJ zB^csJsgibrgZn)IZq2jQex#{Ncp5CT7ig{~5t2M6#g=E5fvsI@MCJVE8d{Y7W>0N= zW`7?hT*S)B-wPC<8x2#;C+oW7G-3ONlhPC^?pM@K=|*D41%9Fa@hX;pL+P10LYxre zv7(?1F8kJMAf%FZ7E$e4(#Z+y>&wxOFH_I))AcCSdZ-E5bc8SPqj}=Xv%2pD?Kgf- zhMtiMn!t{>oY4@VcssanYT5j51_@m$!D+jP^~@PvesVH9Ac0S2cFVItzj|89qQa4!p`k@FQJBcp*$E#OXH~K8mSfje&Op#}-ZZq5s z3*PPdKY3|3P_JC?Ef_di@3oY@B!OSK1qYX!M>A~&^n^WQ?Q)*GAnN}KCGIB_GfudjMEsqqFl_3M9m2v$H`+_ zQy)fU!Mp|+sC=R)8^IUxu1;!sBW=9Y1D?XY6@-oILm?I}Rz@PY6M8~hy(9e=_dA%b z9TNs=l2Espr+~HteEeLfxq`A%>bv>xW#%DUWE4<)B?$YI1#$FwwO>@HqYtfm}bok30C{ud!wO=X_?cH2N95EZR)(CZc{3YQikBm$p=aY zw#8>!ye{TC>%^PRkI$UVGU`cTO%h(*?Xv#?xjEPwX_!{oPMEvS!q*8=yn{1!M(_a6 zu}8WGUo*t96L?t0jI?|^GTh}S7{;a1VJs7rk9li`p^1z5V}Qb8%rR=jxcD6CtE{4_ zI>Hflm|;$U!PAdam=is~;ssWXw>zYEgP2DZyCLo}wnaZJB@dk=?!oM7h@T<5E=djJ z3m8psOXo0$u#c%1swlQ$6u;gZRfLb+F`Hs15I0{+Oa0Z_)oieEWeH;}5NuVw9XVh~ z{*=+KU8#>rG!!%JHbO0ooiPh3qD4&RLmv`V@MIsGO#Q4qe_n3!t~A+FWVzfOYU>#{ zCCs8{CYQC-`JUS{yD!qQpXaFQ5$wmHZ)zC!RIw2}VRVcTVQsHp8tFV**pc~gA@djo zoD>W=qNA>*?piHV(HQhn_;w@Fw>j>+NQNwxydahRj`06O-Wn`uksY_moD4Vddk$Y} zBr>P^%-l#Em}RLBTknTy+$c&zw!I*~-&mB}o82b=Mw8HM;20y(%{xAtYa-R8f-|jo zN+{QAjN5tMwPx&vHN@^0ozq7^XHCV3zXfs4W_*J%eTF5IHPhS1Y%p#{n(7YZ;Ua!p zPAF9_lds!gwij@zpU;v&9Gm5Y$A~Li)P+`h!_x$gJO<^jzU-L=$JexJ%Q1in+bsdz zgBVu&E__19?%c0P1%khKefgav0WFAk~+w4(m=+`<|HE#X3i%b@`>C%1+~mC zVl@G$whMOD5@5UqbN1z7#T!o9-=`Nr#O!nF$(v3jusXT!mc$iQa}}3%O1HXkB`ia$ z`D>)!ocN|8jY*i1&p+26h1D+8Jz;BOS)t@7FP}>;46&Ne8P2H|oK45LQ~Ln~U3MJ#{`+-y&{`n(7vz|iX(LPI~HA6{%t`_Y6wtbLNB2Yv{KmY!g(WJf~h z?SSmW7{3%#Hf(uH1>(eMZy2UISPz&b4c1+9p8K#C_<@@>s|T{5n-RgO^R__t+iL{k zn{Cr)GD;1|0iu08J@9VP-w}(l4+E=mQ0t8RSO43l(SP-*{U5o1uZ;3vZ~yD93CpBkKaB^4k2^JU<>t1l%J-u&)#$SDUv+$4?tDQ4f6E2<1zA`yjJ}i}e zAF3$#c9lk7k*?-&8#idqo|9|^Hu?d8PvL~kdf?aH0I=%;0FZqQ0mIh;fY~?yKMmg1 z!079ViHRB7;~7UgW~%s8VE6u3cHzYGRx*<3Lu}2@)zXB=b;6>7MNG3Ji$c)Kn>ll< z3vyLzyDJ*a>}YpH-D^fQixgWopsc)H+u>x(kMH(c=m3ll109%CTB`E>H=0?EU#}+x zOOWbe^qOc_2Ll6@9@nMOj##@RS4?%`^Jou9#<}T_y5SI?8I)a)+rP~W2#s^-?=&_b zN^7ErDD=fJWJ4J9WhiR=TyKQ^z)zY=W$mAg@xW{6!N}-h? zv{biKQ%Zhc8X-^B_I`tfM%}A+k z779#AHdfgOOBx|(u?dRd?u?^ur<#M5af;EA{mSPXY8zdR3;RUY$EJRkV1VQirnG_t zt;E$fiFWQW*|d)Qldu9pxLK%iVcb9wD-qR38rrIpdu2x{Ms*IIMEn570~58h=ZBmlIH0iUmJZ(T2#GCn{Rl2{f*MMBj~Y|Jqdsq zqN-*g$PR)CCHHZ~SG?SbSSkc53&7z*d=n&Wzhea7HQ+f*A|dni9^C2f_G{2qO`C61 z;vQwLPAH5A>-4i3(A+LC^jjs@B@Qauzka%z(0Z96$$J~{PBU+^y7vB;wQ%<5xEV~* z)yfL#cd8@}20XXpak2ws8n;bV6)Y{psvg6m)>_fUQg%|;xJ1~HQjRLM!4vxNr0b=Q z=an*b9i8zq|B^}i?K}SlUc@@&qer0(WFE1Ad^&HkEthD`hKLMZGkqKk-GpLq=jtKv z^_`vhp2g29NaMSwM(#M_JOqh6N&Vc+Sd3AYk@gZ+UkTDFBi_AF`{^s13g%ozN1Bp5 z5$N|G=e_S>bdn7zznL?6>O*ROH!ty(4#UDXiMThrZhiwCY)FoS-d`)8CjGS#YnA(6!eCeZEK>QA0dW%n`CWfWL-=snFz!@7LVq=o`38(n+3>ssr-??OH-d;C);J% zEmaZLii&WDCKGtKpP(19%VF;>AMr!$Q(Jlud=#C-o#nm@-fMKw7MAqYfQi1dhF6DS zGRNOCsrfL7uK1DE^p-}sTtG%&8bUk;Nmr>9m*T}lL#oo4@4KGRtc>wtZdB1wze9W~47=kLrvevZrl; zyM?MxCM}wOnKu8sgIna%yEO@`-_vzzI6hM*AIfM?xUQPm1fO{Vw3zYkCfoxQSYA>S9B;j^`8&V+U13BW)Lr`b;O)*tsDJnQJ)tO`ea(wZT+l5dZJ`AHSVd(u_`G<|r~@QCy+PbwRbOozoul`V64RS41)L8?PsWbK3{ zMbfNdn1{fECedTw&%ww%Xh5j5iNUE~S<@Ae;A^`-@R3a*-{#t{xnjjjVHIa!lx@El z)a(tf+@}(_H$Qk!)rfy<>?yxPTE%j6h{O#<42obaj~7uIw%9v!5rSp97pD-6W!8ZQ z2F+nflTB7aD{fK9(o9y|db69Env{EBGwvzUb8@+UM-_k7QE9J^RrZ#H1IRjrvJ~g@S=oN>aNn0gNoW z3>PqBofw@^ixfvlmmsws1L(y(NE4SawO!@(K+#SLm!NKV+^1aFARmVP7j0VB_r9$Y zOpnRQAxhTPD6MlEh0f9=XFwj9S}AvW;9`_eJ+*mktqX&z3^0fA$y?Wv8*4j;)BtFz zM*}sbE7AaF|017nE*bp#t!Kbcm9UC0UZ40&$Au~1f}QCT&UV@kD?+itOZzBY7LX

_JAIr-Q*gcBH?Kn#rtI1Syp=4aIvBI+Ja$i|+oaY33Yd%dE@Lb3xp-UvH!h z>+oFXA%5G;5HF=hTC2TjU3;>@%d`F$AIy@>=}w~$Q068vmVdM!{0iqL0t;GnyEW>6 zZ4e&t1=E~6`XX_t1@`tVFnf@qV9dqr@1W(o`c+b)Ofzk33E9;bDBB}^Bn*uhtpXKR zgM6O(%u~2$53g;(fj{6x7l~*jlc?Ld%!K&{)aI(I%KXo#Vx5ZX;yvmv$i#X&BhgKT znDNDi5uQ2f7RZ<4YR}{dCxsG+ zXJ#vw4%;kIB`K8aIGMEfR-?IK^F6CIvELP^<26iA{fGc{(I`HG;{-A0vi1-nxVr^w zy|*lZsu$ifM>L1-6U&Xng^}KLc|CC8omG$!&@rext30z>){7G;Ypo8 zF?_b{HB^y76wz$vd9oj&UIFTx*!ecJDu`<~8j+*k;s{STKo11UDikk>zDQHX0ZEh9 zAEd25zb@bFM;{`1YC`Oa4q9RN0)c;Kut`jJMM(SbK{7G?)JzvV`JK|O0nXG~wNsyv|X4U=B_<@*CKV^yzk_L`-)So1~T)U%93hK%bfT{QA z8L3kIE!?iL49+k(G8qmVKGMJ{Ej1qf8kTgZ+;wsgl`alao37t=@eaB3pqAODs3Bu_ zY;5s{NA>X@Hscmzj?9tte|NGtn6BZ)*Z^>6)@h^7SbKmjo!(Ngitkc`aKUSOU{1}% zcwC{}bsfAJvw{vEqv z^%29CbewAD6HW*pOE)*psi+PNr_$4$_ZGKHzPt_ zXi(=y)PJ`)nUkMqGe+0L>IrjO1V?Dd-_Z}%t)E8?-j>wrXKtA<^`9?D$OT4g11cd{ z`I}DLv|R!hOMpMztbd|5U9z}W^}|u*(m&BPtfG>&&}Kz5(blVQ=6`q5qrzolyiMd1npr#{j?7UNPPmQ6)j)BqI$kpL>S2>3NAlR89ULgt-g7oYc%1}^`; z4sCjOBW=gg`&)ni`byR@cjFTBiMA4j#XIGe508yflVDI3UyMFL$#-$8Cj1f~NgtV1 zCjFCJAb29kf7wV#n@r^m6HB7&0NHWvfK{_${@}0;41k;Pwdgkku+a;E!`uJA0TuR+ zg~a%HbXonUqtIOIUo)X)GS*qU$(#B4`3N(~zlp-3eDv5^E6h-;`dx2Ad&(hPn0fX< ztGZFyC)IwKYn{53jcu~9;O8&6G+JJb>7x^d3>_u%U}CVnI{tqq?Hil&bBLnGm_6ad z)j}Pq%!xE0=QPH>Q4Qpfx{4gK`8)Wm9~#2AP1M4fGF^kQXk~x>1EMi_`0n7`>-s;J zF$<}JgL4Oc)%$8m?mxJ?ENMI3Vg!k$X%jDy^9orR_11StX35f~s%bH6N_7Tn@d9gb zBM#yi)AQSd<8%Elo`1_NicZ>o25VkgIPF%5VzHbJnsFVwOR1!Ex$gUskx9+a#NL8~ zWT8je&{GnG4EL{Izsm3K3DMZssz>Kzn~po}-jiFkuOx?Km)PH=FT_PYoLSE=KgW3{ z*!dviy4G_w6k3oM3wiRTSKs2kTsPBtIn?V+d1iab(oB1nC}g=hc`L3gc*~++{SR*P z0(Ii**t2A_4R+u`w`v-XmojspMeSKkVjxyT&1--?Y2Y_?@*NaR{_49M$jsMigAH`n zwDxhTi)*OED&Fs81$QbbZAeUdD`rG%uVh0wr?Iq&25_!3Uf%p2V^p(i@txcno zCTUv!vx1pqql@W&{uGVob+}~g^fTJtmGY~>#X%$yhgG|){15(Bx+~{T%a2vcAn4mW zebzCofJxNE_*yL#%UFJPkviSo8-vE717pbQ0CDv!2GcZxO`B+7#Ef5(c3DvG6&@Qa z5gnRcxUnO-|6AM(M00Yq)w=9x;^N`0KW_p-jm%yYW?3AnRn2FIHDPjN+p|@j(iWkU zGi&9KiP(l{d;~k8z|MPL=MKh(C*!UADhU2Eu^+l|E;e7mfBo=0-+1VPCwBUt{41Xz zTiNCQ*!(fCmJsa}(`PgQR}OC;xU4^`?-C_=Bf~?r22R&9JErX;RdYwf$-!=X9dS?9 zot+J_FXX5-hisZyQ5>7F?+*Odx|frXroMf<%R=`iXWLS4h2iyU1WC}IEK1U=+6ImS z99H<(!Z>rK2*WALs6cJd)nP`%tG_ffLBo^px96>gT;#obe>-aNTdtLlTk05F>UhOd z0zqsRt*$O{?DVxTQ*!B%+>K#FR@|X>s#QjbvLiJ2Y18}6 zEyMd!E*m-5>+6?Ccclq_A_sUP^#94kFor|(5JnQ`=-v46U{WJ3WHOS5;wL{}Hee0U zXxu0%4f>e!3U~kS+>|k0!iFq*r@@JZtE9 zicg5n11YYVD3M1?RYEfr&&crzv~611qZ+ufEs2+2YCo5?_z@vW@JBLg4_tp?LRLO4 zj}yPQ;s%xm)z6JU?2_{H@_&)-W0Zd%9Gs=KX{vg#r3L7{&O6m^4!MPTwxc<`IhY?< zmCbBJ_m7IBQr;MzVbZ!z7~{T!3a0Tt42t7F%w*%73##>{w4jO5uUFC&@meC|JKin&RcSEfj6u;0 z(1z9%00#-#%e~AMR!*uZYOxN(J&T}Q#u9ST+*-$LYfhKrCwi_@@r++OZTm9 zlk;bHyjKv6!uA`y;(YFb`u$=3?S0Ym4X)qI^B8b&O{h~Tm`36NJ6 zSh@N!t!{8O!^L^32rU-O>EwIJ=b>#W;UU8T+Q~O*nmg(cGs01L^HgIKEhdI>mD0K@ zGJ5LSoGTjV{J7%R4A~nMoXazT#ik2wRbN5ZPTD%xEcM7X815RKkByX(_MfL8p!c^^ zsg^r{PY`LA#8$|q6-JT+LZ99u=1PY!dF%PDJ#_i0Yp0APSv5|xeWLO9AL|v|mm|Gs zYY>4i6?ht>T~SXnt+#aS0zSSZ(~~5%c*TVw-vc&WcJegvtqf-nnR#jIl$Yrd8^Oy- z^^JKfX%32?N0^fX=Axwcg$Cl(>Y{yHr3u-8ui-FN|879xgi92lns-ci!jj;Nhm;Co zt~&xz1-#wUJ zfH@T^Y;WVb6~cUOjSmc_Dg7O?eJz|Xb>V?qtY8miuVk**nQzz zI`jt^dZ11YP>JQ^jX|j;HhP3(Mkc={D8Qw>o5i<6D$GR%V?`wD9G>#ZH5Ax*8)mbZ zm2$epd{*yqew||M;(kxSj8vo=D2hrWNqswG-6v_o#cwjel@?t$DG9gae#S{zjlzG_ z9EQc>RzuG)Q2FstZZf@pLeN3=UJGi`_s?mHCf=HtTn`+X%=@HzXjU5u|2^}fiek)u z8~qR1E8A6vKQnp0Dw9v1usznmt_by$jIv5O#GJ8cG9%xGH=Bm6#Fcb-Si77Cd0DP6 zU2nvV`lolon>%Nc4N{t+PzU72l!xX~)&?PoCwzVcYI-eZ zv<@ulh~E(ac$u%SiqO&ehDly$l7jG&N!KDSUj)2kqHqyqFN-b!z$U)0=aG}ikomEg zDqK|PTQL}6T#$0yeUEKI_@-5lukQ=-V*Uv;v4%a}l{et&u+JM4?Wp+CU^nZKH?MrF z=WegCqc>9nAKm=nqzRhb&npT%&i!Hdgh1|kt(x7^i%g@WrKa|}b&4dumYjb*bNjUF z>6Yxa<#VU1%>ZK`0B|o_a@p|zyR8ra$b@OpuLl6*quSK}XrMU=qC2ioC`N>xIkziZ z(jro7oxZuH#Z`j?;@4??gt8ovd+AUclK4&G6j!3w7zh&!O@)j16H?U9{_lxlXtYZp zGqb+wuT@dU9}Fv>jJ>_UnmW)C(8rcb(odAxW4k2SV_^?0@k`tnd<HZWkW$Z3H8%GNTp^Rq@EPN015 zgA*@Sx`~I{+OOV6T|@6uo?^WEn#8O(zIW-$hH$Zr&h4$TU%^)?_N)KtV0<)&oxYu~ zjLEiHJ8TC5Tn2V2ktvV95XYVQAIhQK>!_F3~U5+f@+rMblEdhlD40kdAO{pv#U z$hi6kw0hkCal{B#{d&*3@sl1FArrqs_U;4(Nh~*|4_W9dyo?;_v#&yz?ryyQOF$zP zi5Yjun~iloO%Tq##!rSPm3EA6> z6O5}CB1G}QpL?9n;!55dRqor>`#h+?;bzCkt7%3g8&Nxti23ud+G*a?ATWOM=n>^X zWZ3Us0MmH_Rh_NJ2vGGHPT7y|zt944uvP8=@xnzn$DbEOai)D&x>jG>NgYENBYSwMc-HT!lCI)=KIphY6YfGW{^MojtBn$&}3>Wdi<*PES69 zF|vcv!UYLI>!eeM96dXvql2g)>^Q-#boyihDm1>8ocoRjvv7lw*5L;KDNLsh6PAXJYay^K&h> z2#nVQ7F&dm)IJU3YMg6J5&xGcjfA_Y7ECiR&7er_9Y+wh^KF-_{I~4+r-$&c<7#78 z5B=U-UQ>BCR@Z-nMLLw!i60#z1{@3xP zdzES_;dPU`v`oY?lx|KYZx#TifQ7&C3122vzCocVjN~Jn7aj^qv~Uu>OO@*-=8Lu6ee#gg6=QBC{+xFW5PC0HT`(2*S<#W{IZ_OhFDgp!P78ksQqsO<_h@ zm0WpR+R9v!7=Aqw+mtPs8#%@sD{6n1T>+gon=^tiJ3czqWz>U3a6>V_!k>7sEoQ`8 zeek2h3?^nUs+R1do5zm-Tlt3?PG3%ojNz{#TUIxBcP@~nLh8K-|l-;H#{K@cP zs(P+8pPF8=*Or)A;Y-Pi+_VaX?#W+wNxn29#Kt;*zff7TG2BQGSnhKcgD1^14pByn z{p3T!Mw*!AWOraD@yzXg{T}5$al}@(!LMJ;HflV~8JzLi+C9UeP||*^>w9n%Zn#7o zkxT0(3JFD-qHc%Gr77?>&Tk^kjF*RCxri;TOPoyvWMHRBrbPd04j_0RZQe$(;!9#n zRK*!LYKvSs)=Di~U$b2W|~ zy7EQT*4UWfYd|5>8v~w<+{|K}sAN#W#ldgP{xBBMO@X-@Iz-8(%WpX;F0_Omw0<&+Uq6;tIs_= z$M3bbV#Y#A55KGZO7u4<1nX-#5ABt|fTuG`7NXOmT3@<2EP$&AT#g_6izZ=o+v zydPJ}W^Lg$4gFR7vz2zbn+XQway3V36H`l`bcyq4Z;YtxB?{=nrDmfxl!zem+diw49Q%A z?2!|JirbuL79UMpYV%>H^n|^z0+2&2C0E`{Z^xi5PC>Vx??5k{cnp{B^YHLT6nUi# zY~jh5=n(mFh)-|wxpLy*^dp*h4b%3@_pq8c;US#Mf@X5J2@u0w%SZKq6*$+rBE&aQ zKI#(-Pur*o)v<`dJ?KZxNUpMZ&t|FnA*y-og!!;0N;rFyCt{N8?f-gJymDZ<;z@ELHo>f`(iu2x}nydWZN*` zorRSzmfJu7z|r|x_!O76_}ip|3E<<44pfrU%LZ7*oJD<=A{lQ!-FSEDf=-^nJD%c%uGgXL{zZ*Y=5Y3v+s8Y~-z(yc0N33{^xg^|26DKiM z4a~~WGwA|7QfF25ud?V|YD2~OF!e}+yqT!3O(2$en)p}u6I5PV@3=H zH?-$~Z{Y2HY3%BB`xqPUlurC=+We5Lp=&=@Vhwwi3*-0G{qWx#uGJ!HxLb+%iu&XY zPUc`6Rq9xe|n0kA6?IwuwC&1#Qa7B|t8({o#fh(j0s3=(B2b@lGGhkRw z-}0dS_N5UY9i{bMg>5%T9X5grw!#@*qDo#ii^!bDz3%#*)KjI=3*Fw zU^dhl%5@Sw;7%6MRFh22sVO|3*NXnFt$~np9z&jHSvE~hX?DVk@2N5?p5TTw&uz!s z7o-Yj#q)ma+Z>OVIWQ&?j$cS*tOUJ!tM1uvx8!$@8TgTo6Gi7r#xotBop+@twUB0g56kNlO=#ZE53|^F2tMEU4t>d`!xPu-AX`x zMiGPhYCD>0syBdv0EAV$7o3Log7#lc7VhF&R&=^*Oo6E5X{Iu5OIm?5?=)VBg^Nh{ z`}DC{zEOXzeu)n=sUVdfhD>U8`M%{SP--RoOyt9B=0so8)M`J%<7$}5p5!j<>IH{c z)VI_xl;g97;MqLboE;>7wKP%VSSrFSi^fDVV3@3P^&r{IO%|X#dI0IjaIX`&y8T^1 z8ru#m4?C~$+kyi$)}up+a0hR9hV#O+u3}aK(WK4=#oox92>KM;qAiDsM?PyFljfKh5Vvh7s5j>cY`nB+rpcD z`@4%{OIp4mEhDs@BAkD?!kABT#B!{`{1O#}{%_;5p9ko^Z+vQ&psCubwl1jJI`&u+lNQC$nbGRBMTcoc zi!dq_ktiMgQd>o$lthg!L82r=B%deW=P!7k-}}RTopbJe-FweDulqjd+b`sPN>MltH z>4*~^Cje+HR@e!Xk;qDkuKtPMap8$6VL#mfr*B5Ygq1fwyas?)`5BiJmr`LXQ|b4= z_Y0EcHtj#5a`NY^D!7A2@_CP*!B75a;v1IjyyvWpN9D{7)bkwd-FHs+b4!@Gvy~4q zd6@9w%UdqyrTD9bR@Zgg@qB|JGLIeA{}Sn(3M zFi2`jFzjAQ=*-+s+$_4-R|~+B902$Gm-FD@ukQeGJ}I&I;K6Uq|IG=B*I_ne(Khx! zJeECAB3|n)>Q|urFuuq7mT5!w)o0L5WVtTyca-uk=xC~C9eOsPwas)|#Ro^3#-9t! zG<(}M4R5dvhlA+*T3mLp$f~NGIx*wy^!XpwGpEn1$>%eMQlHd@&;b{Tf-X+VN!ymh zn2E!CPd8by?%-7e$9k0u?TBLz4E<)qs6(u6{E$l~k+|04f0!ax0nE_XC!l>O^E~wV zr5AiZo#AQ(KTQgXf?m8l!6aDa$?Bn|aG;x~^_~?h=9I?fW2OO#Hp|OmG^|7@=MWfLylK2`53{8@djDFAo#kWi z%5t5gpO(U1=Xti7AxFfVCv|IaeT%&3`1Q))R+07shUo|)_?NM-2>ydu54L>}R)P{#B$Bw+LSftqe* zhH?~nIH+}-oOL267HrYdKXk7Cfyug%WXYJ;DvULGMfM9iE@=2@s$IL{Ju#b>eN79X zlSs~r@Ho>ap%#l3sJ7Y7S(4yC7+;z#iG1xrg{}FeLJaLL3S%ZmagYZ79`^r0efZLn zX3dqcn57r^bCuJ`q@~L^QPz%rQus4Oc0@Bj>_+A-MOI~3sb2mmsTdd|;JMBQ(lP5z z?Xuqs#LmPt={{jhv97LQr@ojW+#V5**)=Az<@AFe(p5Kn71Yk57XBH^NPtO$M}~-} zZFo*xUuU|AG~*m7yG1TQV|JS%jh`4~wP?dVje`u1zBr%z`^*RDvR$d7)6&_g96M&Y zcUyMKPUkJ2A>B3euS5m@w)zge6erA#GQ#KT3>x)^g*I~=)p$pmU4fvPG(iyHhObwc(pt!;;^#~ z9PIuD0g-UYaXME*E)!c(Dv#uWD4G&i|J7_yJG|ct z?ro(?ila4LG|+?rw542!WmL^rIZ7p!Q5#rBj_Ki~qp8r~F2IQ8iM6FGJ@f7Mv)-(5 zF35@}Czu$ai`=5D*eb9{QGZ!qCVS?*vuUpMdl!I>qOEKx%RjE2Y@c`f9phdZ&3f%v?nY4@NNF%*K*g>l8c<+^&F;k>xZ)T!kCPt7|1`_(d zdZ1a(A%q@3^I>mu+Il&Tz_hhzS*I!IL4i9ks0c{O65hbElwnscy5AylzEJ+?hM64A1@FJN zTMM~2Kh)P}zc@CzE=Hf{1*6lKiSDO% zDg0+Y_z920P~A>@L!u3+KwU-D0(7$tCpG~3l zL`=||i(;Vq)frB7^B2>;M23Av)=t*Cc!kT}PN!N0OkW9ggkj%llnDwd)6%FTD>XB> zA-g$fdC@4JlLH_Uq_9}~>idru!7s^>M)&_jPd|EO2r+DbVK2f3b!~_y-;%>i@k=iY-(Bu@*i7ZjR;49URV!I%p{oAAY)tDH26HIuW)sX>x}yQ} z@&hu1-n2=+)YdJV)F;lNnbjq&Jx_iL^+-Z-MpS@fM+0q{a`86myNA1g?o*pZj>(kz zTn;WaV0Nu5gK_le^3YH%4!ViJC{YdMmQ95E+Wu>GRSPL@r1nI%OmYm>M`MyB$$_;W z>y9lBuo>oNQ-zd^`>kMDDb=#UrmC%9KCUeJd5f71q#-T3(@v zl(*A@e4kyQ)+^D7mnunP>^0F?5xp2mf0r3z)?XluN+0bB+{msp)2_|kTXeIy7`gMI zW{4d{?lsKMuIQO4q`0CCOCIEYK%aXzfi08tO%vgwSNCB$3}tTm3!43-rJp(+a7 z4%24*7uKE78}`(jB5ey6yvvS>8NTF{7(V4uABDw)LYHp48`#6J zTa}}&m?ONyY1I$s99C+&$Vz-n;N&k_-0WZIN(xt0lKQwyH2$@&6Cv}DVorh3%ZVCJ zS_AB}E!COVKc#RvlU}Z*Lw1E;8li!aO)$-kkcSVdjmuRhH;@_{Wq@)vhKsqj^kRa| z#1MSD*T0(Qd0zE{5z9X9wCmH>m__)4tHP{+uwMs?j4V|2x^Y!ozvH#xIer#TnkUqg z+PaWL0+GqNi4s{tYh&_W#hpxoyn+W{>Nj>FH3xJm^*@(uS43d4NVkh-cN#=vDk{8= zRR7{Fuez0E*4uZ;CMLDtDU`I!LPFPdH&m}j$Cc`x5WTW@e)0_$uC_bc5}|GGQ$97` zhAFc)p;xcoAPH;3LJ}TnWbC(1Ul(BLOyz=CIoQZ~#jiufD)Gr-Gjf1Rfeb zQWg^vo~Y!f8T#kD3$8qDC$IG!C05j;CC5omtqyT3NW{~C_n zxASFWROH$9$4JQ2i~d@0P+gk2xh>p)su7s?hD2dYNvy-L|B7L--hSq9v&eS<- zM48IYzVc(n%VypWK?Kw2bhz`yUzrsb+k7BW77vO@nRL3Kpw1Ns(}5xrQdf&Fz+$5CbAovOLRfn=j#pYey%*y~rXW%?dr zIIVrmRiI?>I)R^3=W3h^e`C=vcy#sqw>AgB!M!?*R#jVb_e%M#?Z}45$*K*d$`yzE zBM>`RsO-w(w5YJj#bVK_k;&_18A6E3l;X3fsasrudgJYoKtNN;{7=ouQ}v{DYD^W; zmy|YcU)iZ9>Z2BgP1@CBt!U>w!1YhLO41;x)`^ zlI`}RI1QpUEEM$)fv$)w*YF|mQ!XtjZEoPQL~S|P&7PdCdU!*{!~++MAxqfTX$3Mt z>ou<69158y4o?Ytr2;fOqDz#E=Bq2S>{waKD`b8cMd3&3bYK!;!2lk+S)e0fRG#Jci;FDsma}6hxkQp>c$2RjBXxB0_4rS5!;6 zf#TfK)c(R%0mP>9Mg6@4Ybe9g*f>mGHhFrA6Vo^n6aZ}e+erd**D^I8_D2U}i)ePU zo4CC!j55C$5TA@wSOBU*8M=&-#A_SkOQ1E~(lh!xbQ##3*zobnpWpYq{VFrHks1Gx z`Ql?x&Q86`L~)v4=TwV0g>81MQQvWRpiiKM;Ep8RrRB=R z=54!d++djL9)?qV)pXqT#*rvr{aGY(fv^I(tsDxvD)xkpf2k~fr6A2d+0|PzrmT=* zz1{3^_tXh69(A=FU(*_^wmvw++2pfN-%g9x_0z=07;U%PwFhueUmb32x50Sqw%?oR zN`pD7fcV?EmcH7+JrwV7*6azgW9O^Hg&{jfgh}C|P+xt(t0eaL3(`NrfqkG$Or2ZXpWXIs>*bojZN#ad+DBuE2(<)pws7j@L+OLw3j$q}D-w57oI0wr8>IdnTAxbuLcpi~|EFU#|S!@&z}`$pO;w42?U%MK}FL3}E;3&P)9 zAZsA`#`0h@l5Sr^m(tQVTcLZ5sl*fBW~l<3fOf8{sA2H5`P5$I*M0?H>;k369ARi3 zx7K;>=E7h_6GhkeFn`EbUL>7Mx%HtDefQOKIOWP7c;_BbBxx^8{g3iCo5BU2*%7klHR#FYn2N3<6Af6VuMWa|dGN8+)JQ;uTqE%e96>QT? z*8&!*+9TVnw6nQFHtFxJXUWqEnt*?9qs+F2l;zjt;H(6TE)pMku$D{B$6%#W5(3^l zdz>V3LSr)eET)ga#i7e;Bm;B}@t6W)7fjX}9Noz2#c%J!+E1R;07@q}p7U&$QZ)Ea ztU>ODNnwSZ%?+;XxPhs3L&XQ6dwG@|SN7s%I@F>DjuuK|PhB58R>M1%LVzQ#33j*SVvwS$d$V=rD*E?241drDz}+1H>>cTE%r_@|I|<)V q@C^muQ1JgjL9)w$Jh==6wCr&xDQz{DS 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 literal 0 HcmV?d00001 diff --git a/hairline_texture_low/girl_wave.png b/hairline_texture_low/girl_wave.png new file mode 100644 index 0000000000000000000000000000000000000000..aed912313fc54e8c7bba3f482794e39568a1fe32 GIT binary patch literal 6306 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 literal 0 HcmV?d00001 diff --git a/hairline_texture_low/man_ inverse_arc.png b/hairline_texture_low/man_ inverse_arc.png new file mode 100644 index 0000000000000000000000000000000000000000..7575fc036ec5cea047191cfb723a51bc073eca75 GIT binary patch literal 5914 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 literal 0 HcmV?d00001 diff --git a/hairline_texture_low/man_m.png b/hairline_texture_low/man_m.png new file mode 100644 index 0000000000000000000000000000000000000000..b17ab54b054be82cec2195c7209cc4199b151dd3 GIT binary patch literal 5572 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 kY>neth=|ODFo?{CM5)k%kXl=) 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 Kz5c5k_x=xMAQS-r literal 0 HcmV?d00001 diff --git a/static/test_interface5.html b/static/test_interface5.html index 21b84b0..9215c1e 100644 --- a/static/test_interface5.html +++ b/static/test_interface5.html @@ -21,6 +21,7 @@ .form-group { display: flex; align-items: center; gap: 6px; white-space: nowrap; } .form-group label { font-size: 13px; font-weight: 600; color: #374151; } .form-group select { padding: 8px 12px; border: 1px solid #d1d5db; border-radius: 6px; font-size: 14px; } + .form-group input[type=text] { padding: 8px 12px; border: 1px solid #d1d5db; border-radius: 6px; font-size: 14px; width: 150px; } .btn { padding: 10px 28px; border: none; border-radius: 8px; font-size: 15px; cursor: pointer; font-weight: 600; transition: .2s; } .btn-primary { background: #2563eb; color: #fff; } .btn-primary:hover { background: #1d4ed8; } @@ -72,7 +73,7 @@

💈 接口5 — 发际线 PNG 生成 测试

-

POST /api/v1/hairline/generate  |  上传正面照 + 性别 → N 张发际线叠加图 + 最佳中心点坐标

+

POST /api/v1/hairline/generate  |  上传正面照 + 性别(+档位/生发序号)→ N 张发际线叠加图(含生发图)+ 最佳中心点坐标

@@ -82,6 +83,14 @@
+
+ + +
+
+ + +
@@ -140,7 +149,8 @@ async function submitTest() { $('submitBtn').disabled = true; $('submitBtn').textContent = '⏳ ...'; setStatus('请求中...', 'info'); $('resultsArea').classList.add('hidden'); - const fd = new FormData(); fd.append('image_file', f); fd.append('gender', $('gender').value); + const fd = new FormData(); fd.append('image_file', f); fd.append('gender', $('gender').value); fd.append('hairline_level', $('hairlineLevel').value); + const _hs = $('hairStyle').value.trim(); if (_hs) fd.append('hair_style', _hs); const _reqStart = performance.now(); try { const r = await fetch(API_BASE + '/api/v1/hairline/generate', { method:'POST', body:fd }); @@ -169,7 +179,9 @@ function renderGrid() { _images.forEach((img, i) => { h += '
'+ '
#'+img.order+'
'+ - '
#'+(img.order||'—')+''+(i===0?'⭐ 最佳':'')+'
'; + '
#'+(img.order||'—')+''+ + (img.grown_image_url?'🌱 生发':'')+ + (i===0?'⭐ 最佳':'')+'
'; }); $('resultsGrid').innerHTML = h; } @@ -177,11 +189,13 @@ function renderGrid() { function selectCard(idx, el) { document.querySelectorAll('.result-card').forEach(c => c.classList.remove('selected')); if (el) el.classList.add('selected'); + const g = _images[idx].grown_image_url; $('previewArea').innerHTML = '
'+ '原图'+ '#'+_images[idx].order+''+ - '
'; + ''+ + (g?'
🌱 生发图
生发 #'+_images[idx].order+'
':''); syncOverlay(); }