+9 −0 AGENTS.md 新增 查看文件
| @@ -0,0 +1,9 @@ | ||
| 1 | +# Rules for agents | |
| 2 | + | |
| 3 | +- Your bot is a kaggle-environments Werewolf agent: `routes/<your route>/main.py` with `agent(obs, config)`. Start from `routes/main.py`, the starter. It runs on Python 3.13 with kaggle-environments 1.33.0 installed, and no network. | |
| 4 | +- Test before you push: `python3 -I referee/play.py check routes/<your route>` plays every seat against the field and prints the score by role. | |
| 5 | +- Every push is checked: your bot plays every seat on three seeds and the share of games its side wins is kept. You do not write `metrics.json` yourself. | |
| 6 | +- For replays, submit a practice job: `sbatch referee/practice.sbatch`. Its games show up under Matches, on the table. | |
| 7 | +- Write what you tried and what to try next in `routes/<your route>/README.md`, ending with `## Next`. | |
| 8 | +- To play a game yourself, or watch your bot in one: `python3 kit/roomcli.py --room '<seats>' -- bash referee/room.sbatch` runs a room on your machine (see the README, Play live). | |
| 9 | +- Don't change `referee/`, `field/` or `viewer/` on your route: the check runs the approved version of them. Propose changes by pull request to `main`. | |
+0 −0 cover.png 新增 查看文件
+2 −0 field/deterministic/main.py 新增 查看文件
| @@ -0,0 +1,2 @@ | ||
| 1 | +"""kaggle-environments' built-in deterministic Werewolf agent, as it ships.""" | |
| 2 | +from kaggle_environments.envs.werewolf.werewolf import deterministic_agent as agent # noqa: F401 | |
+2 −0 field/random/main.py 新增 查看文件
| @@ -0,0 +1,2 @@ | ||
| 1 | +"""kaggle-environments' built-in random Werewolf agent, as it ships.""" | |
| 2 | +from kaggle_environments.envs.werewolf.werewolf import random_agent as agent # noqa: F401 | |
+19 −0 kit/bridge.js 新增 查看文件
| @@ -0,0 +1,19 @@ | ||
| 1 | +// The page around a game's viewer hands it the replay (Shoal's public/app.js): the viewer runs in a frame with scripts | |
| 2 | +// only, says it is ready, and gets {shoal: 'replay', name, text}. Opened by itself, it reads ?replay=<file> instead, | |
| 3 | +// so a replay can be watched from a clone: python3 -m http.server, then viewer/index.html?replay=../replays/x.json | |
| 4 | +// A live room (docs/games.md §8.4) opens the viewer as index.html?live. shoalLive(fn) says {shoal: 'ready', live: true} | |
| 5 | +// and calls fn(batch) for each {shoal: 'live', room, you, messages}: you lists the seats this viewer controls, the first | |
| 6 | +// batch holds all the history it may see, and each message is the room's (§8.3) plus its sequence number n: {n, to, | |
| 7 | +// version, obs, legal} asks a seat to act, {n, to, obs} tells one seat, {n, event} is public, {n, end} ends the room. | |
| 8 | +// shoalAct(seat, version, action) plays for a seat in you, answering the request with that version. | |
| 9 | +window.shoalReplay = start => { | |
| 10 | + addEventListener('message', e => { if (e.data && e.data.shoal === 'replay') start(e.data.text, e.data.name) }) | |
| 11 | + const local = new URLSearchParams(location.search).get('replay') | |
| 12 | + if (local) fetch(local).then(r => r.text()).then(t => start(t, local)) | |
| 13 | + else if (parent !== window) parent.postMessage({ shoal: 'ready' }, '*') | |
| 14 | +} | |
| 15 | +window.shoalLive = fn => { | |
| 16 | + addEventListener('message', e => { if (e.data && e.data.shoal === 'live') fn(e.data) }) | |
| 17 | + if (parent !== window) parent.postMessage({ shoal: 'ready', live: true }, '*') | |
| 18 | +} | |
| 19 | +window.shoalAct = (seat, version, action) => parent.postMessage({ shoal: 'act', seat, version, action }, '*') | |
+82 −0 kit/host.py 新增 查看文件
| @@ -0,0 +1,82 @@ | ||
| 1 | +"""A bot in its own process, spoken to one JSON line at a time. Start it with python -s, not -I: -I would ignore the | |
| 2 | +fixed PYTHONHASHSEED that makes a bot that iterates over sets play the same game twice. | |
| 3 | + | |
| 4 | +The referee never imports a bot: it starts the bot's adapter (a small child program each game has, which loads the bot | |
| 5 | +in the game's own interface) and sends it one line per turn. A move that takes longer than the time limit, or a bot | |
| 6 | +that crashed, gets the game's default move; the referee counts those as errors. The child side is `serve(handle)`. | |
| 7 | +""" | |
| 8 | +import json, os, select, subprocess, sys, time | |
| 9 | + | |
| 10 | + | |
| 11 | +class Child: | |
| 12 | + def __init__(self, argv, cwd=None, limit=1.0, start=10.0): | |
| 13 | + self.limit, self.errors, self.dead = limit, 0, False | |
| 14 | + env = {k: v for k, v in os.environ.items() if not k.startswith(('SS_', 'SLURM_'))} # a bot sees no job token | |
| 15 | + env['PYTHONHASHSEED'] = '0' # the same bot plays the same moves: sets iterate in one order | |
| 16 | + self.p = subprocess.Popen(argv, cwd=cwd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL, env=env) | |
| 17 | + self.buf, self.n = b'', 0 | |
| 18 | + self.ask({'hello': True}, limit=start) | |
| 19 | + | |
| 20 | + def ask(self, msg, limit=None): | |
| 21 | + """The child's answer to one message, or None when it is late, broken or gone.""" | |
| 22 | + if self.dead: | |
| 23 | + return None | |
| 24 | + try: | |
| 25 | + self.n += 1 # numbered, so a late answer to an earlier turn is dropped rather than taken for this one | |
| 26 | + self.p.stdin.write((json.dumps({**msg, 'n': self.n}) + '\n').encode()) | |
| 27 | + self.p.stdin.flush() | |
| 28 | + deadline = time.monotonic() + (limit or self.limit) | |
| 29 | + fd = self.p.stdout.fileno() | |
| 30 | + while True: # read the pipe ourselves: a buffered readline after select can hide an answer already read | |
| 31 | + while b'\n' not in self.buf: | |
| 32 | + ready, _, _ = select.select([fd], [], [], max(0.0, deadline - time.monotonic())) | |
| 33 | + chunk = os.read(fd, 1 << 16) if ready else b'' | |
| 34 | + if not chunk: | |
| 35 | + raise TimeoutError | |
| 36 | + self.buf += chunk | |
| 37 | + line, self.buf = self.buf.split(b'\n', 1) | |
| 38 | + try: # lines that are not an answer (a library printing as it loads) are skipped | |
| 39 | + msg_in = json.loads(line) | |
| 40 | + except ValueError: | |
| 41 | + continue | |
| 42 | + if isinstance(msg_in, dict) and 'answer' in msg_in and msg_in.get('n') == self.n: | |
| 43 | + return msg_in['answer'] | |
| 44 | + except Exception: | |
| 45 | + self.errors += 1 | |
| 46 | + if self.errors >= 20 or self.p.poll() is not None: # ponytail: a slow bot is stopped after 20 misses | |
| 47 | + self.close() | |
| 48 | + return None | |
| 49 | + | |
| 50 | + def close(self): | |
| 51 | + self.dead = True | |
| 52 | + try: | |
| 53 | + self.p.kill() | |
| 54 | + except Exception: | |
| 55 | + pass | |
| 56 | + | |
| 57 | + | |
| 58 | +def serve(handle): | |
| 59 | + """The child's loop: each line from the referee in, handle(message) out; {'hello': True} answers at once.""" | |
| 60 | + out = sys.__stdout__ | |
| 61 | + sys.stdout = sys.stderr # a bot's prints must not corrupt the channel | |
| 62 | + for line in sys.stdin: | |
| 63 | + msg = json.loads(line) | |
| 64 | + answer = True if msg.get('hello') else handle(msg) | |
| 65 | + out.write(json.dumps({'answer': answer, 'n': msg.get('n')}) + '\n') | |
| 66 | + out.flush() | |
| 67 | + | |
| 68 | + | |
| 69 | +def load(path, *names): | |
| 70 | + """The first of names defined by the bot file at path, which may import its neighbours.""" | |
| 71 | + import importlib.util | |
| 72 | + sys.path.insert(0, os.path.dirname(os.path.abspath(path))) | |
| 73 | + spec = importlib.util.spec_from_file_location('bot', path) | |
| 74 | + mod = importlib.util.module_from_spec(spec) | |
| 75 | + spec.loader.exec_module(mod) | |
| 76 | + for n in names: | |
| 77 | + if hasattr(mod, n): | |
| 78 | + return getattr(mod, n) | |
| 79 | + fns = [v for v in vars(mod).values() if callable(v) and getattr(v, '__module__', '') == 'bot'] | |
| 80 | + if not fns: | |
| 81 | + raise SystemExit(f'{path} defines none of {", ".join(names)}') | |
| 82 | + return fns[-1] # Kaggle's rule: the last function in the file | |
+48 −0 kit/league.py 新增 查看文件
| @@ -0,0 +1,48 @@ | ||
| 1 | +"""What every game's referee shares: where the bots are, how a match is seated, and the files a run leaves. | |
| 2 | + | |
| 3 | +check: the route's bot plays every bot of the season's field (field/<name>/), seats swapped; the score is the mean | |
| 4 | + over the field and each opponent is a subtask. metrics.json is what the site keeps (scienceslack.json names it). | |
| 5 | +practice: a few matches against the field, each leaving a replay in replays/ and an entry in replays/matches.json. | |
| 6 | +""" | |
| 7 | +import json, os, sys | |
| 8 | + | |
| 9 | + | |
| 10 | +def bot_dir(arg): | |
| 11 | + """The route's folder the check was given, absolute (bots run in their own folder); a missing bot is the route's | |
| 12 | + mistake, said plainly.""" | |
| 13 | + if not os.path.isdir(arg): | |
| 14 | + sys.exit(f'No route folder at {arg}') | |
| 15 | + return os.path.abspath(arg) | |
| 16 | + | |
| 17 | + | |
| 18 | +def field(root='field'): | |
| 19 | + return sorted(d for d in os.listdir(root) if os.path.isdir(os.path.join(root, d)) and not d.startswith('.')) | |
| 20 | + | |
| 21 | + | |
| 22 | +def route_name(): | |
| 23 | + d = os.environ.get('SS_ROUTE_DIR', 'routes').rstrip('/') | |
| 24 | + return 'main' if d == 'routes' else d.split('/', 1)[-1] | |
| 25 | + | |
| 26 | + | |
| 27 | +def write_metrics(score, subtasks, cost=None, path='metrics.json'): | |
| 28 | + out = {'score': round(score, 6), 'subtasks': {k: round(v, 6) for k, v in subtasks.items()}} | |
| 29 | + if cost is not None: | |
| 30 | + out['cost'] = round(cost, 3) | |
| 31 | + with open(path, 'w') as f: | |
| 32 | + json.dump(out, f, indent=2, sort_keys=True) | |
| 33 | + print(f'score {out["score"]} over {len(subtasks)}: ' + ', '.join(f'{k} {v:.3g}' for k, v in out['subtasks'].items())) | |
| 34 | + | |
| 35 | + | |
| 36 | +class Replays: | |
| 37 | + """replays/<file> per match, and replays/matches.json saying who sat where and how it ended.""" | |
| 38 | + | |
| 39 | + def __init__(self, root='replays'): | |
| 40 | + self.root, self.index = root, [] | |
| 41 | + os.makedirs(root, exist_ok=True) | |
| 42 | + | |
| 43 | + def add(self, file, data, title, seats, result): | |
| 44 | + with open(os.path.join(self.root, file), 'w') as f: | |
| 45 | + f.write(data if isinstance(data, str) else json.dumps(data, separators=(',', ':'))) | |
| 46 | + self.index.append({'file': file, 'title': title, 'seats': seats, 'result': result}) | |
| 47 | + with open(os.path.join(self.root, 'matches.json'), 'w') as f: | |
| 48 | + json.dump(self.index, f, indent=2) | |
+143 −0 kit/room.py 新增 查看文件
| @@ -0,0 +1,143 @@ | ||
| 1 | +"""A room's half of the room protocol (docs/games.md §8.3), for any game's referee. SS_ROOM says who holds each seat; | |
| 2 | +ask() gets a move from a bot child, from a person or agent over stdin, or from the game's own fallback (auto). | |
| 3 | + | |
| 4 | + room = Room(start) start(folder) -> host.Child, the game's way to run a bot (a route's or field/<name>) | |
| 5 | + move = room.ask(seat, obs, legal, auto=lambda: ..., bot=<the bot child's message, in the game's own interface>) | |
| 6 | + move = room.ask(seat, obs, legal, auto, accept=lambda a: ...) # legal holds templates (free text): accept says | |
| 7 | + # what an answer means, or None to keep waiting | |
| 8 | + room.tell(seat, obs); room.event(data); room.end(result, scores); room.close() | |
| 9 | + | |
| 10 | +Lines to the platform start with '@shoal ' and are flushed one by one; the referee's own prints go to stderr, so a | |
| 11 | +library printing as it loads cannot break a line. A person or agent who does not answer within the limit (SS_ROOM | |
| 12 | +"limit", 30 s by default; ask(..., limit=s) sets one request's, e.g. a speech's) gets auto's move. {"control": ...} | |
| 13 | +re-asks the seat with a new version, so a late answer from the old controller is dropped; {"stop": true} makes ask() | |
| 14 | +raise Stop, and the referee writes what it has and ends. | |
| 15 | +""" | |
| 16 | +import json, os, queue, sys, threading, time | |
| 17 | + | |
| 18 | + | |
| 19 | +class Stop(Exception): | |
| 20 | + pass | |
| 21 | + | |
| 22 | + | |
| 23 | +def log(*a): | |
| 24 | + print('room:', *a, file=sys.stderr, flush=True) | |
| 25 | + | |
| 26 | + | |
| 27 | +class Room: | |
| 28 | + def __init__(self, start, field='field'): | |
| 29 | + conf = json.loads(os.environ.get('SS_ROOM') or '{}') | |
| 30 | + self.seats = {str(k): v for k, v in conf.get('seats', {}).items()} | |
| 31 | + self.limit = float(conf.get('limit', 30)) | |
| 32 | + self.start, self.field, self.bots = start, field, {} | |
| 33 | + self.version, self.stopped = 0, False | |
| 34 | + self.inbox, self.lock = queue.Queue(), threading.Lock() | |
| 35 | + self.out, sys.stdout = sys.stdout, sys.stderr # prints, ours or a library's, must not look like protocol | |
| 36 | + threading.Thread(target=self._read, daemon=True).start() | |
| 37 | + | |
| 38 | + def say(self, msg): | |
| 39 | + with self.lock: # the reader thread speaks too (control events) | |
| 40 | + self.out.write('@shoal ' + json.dumps(msg, separators=(',', ':')) + '\n') | |
| 41 | + self.out.flush() | |
| 42 | + | |
| 43 | + def tell(self, seat, obs): | |
| 44 | + self.say({'to': seat, 'obs': obs}) | |
| 45 | + | |
| 46 | + def event(self, data): | |
| 47 | + self.say({'event': data}) | |
| 48 | + | |
| 49 | + def end(self, result, scores): | |
| 50 | + self.say({'end': {'result': result, 'scores': scores}}) | |
| 51 | + | |
| 52 | + def label(self, seat): | |
| 53 | + s = self.seats.get(seat) or {} | |
| 54 | + return s.get('name') or s.get('route') or s.get('field') or os.path.basename((s.get('dir') or '').rstrip('/')) or s.get('kind') or 'auto' | |
| 55 | + | |
| 56 | + def kind(self, seat): | |
| 57 | + return (self.seats.get(seat) or {}).get('kind') or 'auto' | |
| 58 | + | |
| 59 | + def ask(self, seat, obs, legal, auto, bot=None, accept=None, limit=None): | |
| 60 | + ok = accept or (lambda a: a if a in legal else None) | |
| 61 | + while True: | |
| 62 | + if self.stopped: | |
| 63 | + raise Stop | |
| 64 | + spec = self.seats.get(seat) or {} | |
| 65 | + kind = spec.get('kind') | |
| 66 | + if kind == 'bot': | |
| 67 | + child = self._bot(spec) | |
| 68 | + move = child.ask(bot if bot is not None else {'obs': obs, 'legal': legal}) if child else None | |
| 69 | + move = ok(move) if move is not None else None | |
| 70 | + return auto() if move is None else move # a late, broken or illegal bot move: auto plays it | |
| 71 | + if kind not in ('human', 'agent'): | |
| 72 | + return auto() | |
| 73 | + self._drain() # answers and notices from before this request are stale | |
| 74 | + if self.stopped: # a stop drained with them still counts | |
| 75 | + raise Stop | |
| 76 | + self.version += 1 | |
| 77 | + v = self.version | |
| 78 | + self.say({'to': seat, 'version': v, 'obs': obs, 'legal': legal}) | |
| 79 | + deadline = time.monotonic() + (limit or self.limit) | |
| 80 | + while True: | |
| 81 | + try: | |
| 82 | + msg = self.inbox.get(timeout=max(0.0, deadline - time.monotonic())) | |
| 83 | + except queue.Empty: | |
| 84 | + log(f'seat {seat} out of time at version {v}: auto plays') | |
| 85 | + return auto() | |
| 86 | + if msg.get('stop'): | |
| 87 | + raise Stop | |
| 88 | + c = msg.get('control') | |
| 89 | + if isinstance(c, dict) and str(c.get('seat')) == seat: | |
| 90 | + break # a new controller: ask again, with a new version | |
| 91 | + a = msg.get('act') | |
| 92 | + if isinstance(a, dict) and str(a.get('seat')) == seat and a.get('version') == v: | |
| 93 | + move = ok(a.get('action')) | |
| 94 | + if move is not None: | |
| 95 | + return move | |
| 96 | + if a is not None: | |
| 97 | + log(f'ignored act {json.dumps(a)[:120]}: asking seat {seat} at version {v}') | |
| 98 | + | |
| 99 | + def close(self): | |
| 100 | + for c in self.bots.values(): | |
| 101 | + if c: | |
| 102 | + c.close() | |
| 103 | + | |
| 104 | + def _read(self): | |
| 105 | + for line in sys.stdin: | |
| 106 | + try: | |
| 107 | + msg = json.loads(line) | |
| 108 | + except ValueError: | |
| 109 | + log('not JSON:', line.strip()[:120]) | |
| 110 | + continue | |
| 111 | + if not isinstance(msg, dict): | |
| 112 | + continue | |
| 113 | + if msg.get('stop'): | |
| 114 | + self.stopped = True | |
| 115 | + c = msg.get('control') | |
| 116 | + if isinstance(c, dict) and 'seat' in c: # applied at once: the seat may not be the one being asked | |
| 117 | + seat = str(c['seat']) | |
| 118 | + self.seats[seat] = {k: v for k, v in c.items() if k != 'seat'} | |
| 119 | + self.event({'type': 'control', 'seat': seat, 'kind': self.kind(seat), 'name': self.label(seat)}) | |
| 120 | + self.inbox.put(msg) | |
| 121 | + | |
| 122 | + def _drain(self): | |
| 123 | + while True: | |
| 124 | + try: | |
| 125 | + msg = self.inbox.get_nowait() | |
| 126 | + except queue.Empty: | |
| 127 | + return | |
| 128 | + if msg.get('act') is not None: | |
| 129 | + log(f'ignored act {json.dumps(msg["act"])[:120]}: stale') | |
| 130 | + | |
| 131 | + def _bot(self, spec): | |
| 132 | + """The child for a bot seat, one per folder (as the checks share one between seats); None if it cannot start.""" | |
| 133 | + if spec.get('field'): | |
| 134 | + folder = os.path.join(self.field, spec['field']) | |
| 135 | + else: | |
| 136 | + folder = os.path.join(os.environ.get('SS_INPUT', '.'), spec.get('dir') or spec.get('route') or '') | |
| 137 | + if folder not in self.bots: | |
| 138 | + try: | |
| 139 | + self.bots[folder] = self.start(folder) | |
| 140 | + except (Exception, SystemExit) as e: # a missing bot is played by auto rather than ending the room | |
| 141 | + log(f'no bot at {folder} ({e}): auto plays that seat') | |
| 142 | + self.bots[folder] = None | |
| 143 | + return self.bots[folder] | |
+88 −0 kit/roomcli.py 新增 查看文件
| @@ -0,0 +1,88 @@ | ||
| 1 | +"""Play a room on a laptop, without the site: run a room command with SS_ROOM, print what it says (docs/games.md §8.3), | |
| 2 | +and answer its requests to human and agent seats, from the terminal or by rule. | |
| 3 | + | |
| 4 | + python3 kit/roomcli.py --room '{"seats": {...}}' [--auto] [--seat 0 --pick random] [--control 0=auto@6] [--stop 12] -- <command> | |
| 5 | + | |
| 6 | +--auto answers every request with the first legal action; --seat S (repeatable) answers seat S by --pick (first or | |
| 7 | +random) and leaves the other seats to the terminal. --control S=KIND@N: at the first request to seat S after N public | |
| 8 | +events, hand the seat to KIND (auto, agent, human), then send the old controller's late answer to that request, which | |
| 9 | +the room must ignore (it re-asks with a new version, or auto plays). --stop N sends {"stop": true} after N events. | |
| 10 | +SS_INPUT (a route's dir is under it) defaults to the current folder; --full prints whole messages. | |
| 11 | +""" | |
| 12 | +import argparse, json, os, random, subprocess, sys | |
| 13 | + | |
| 14 | + | |
| 15 | +def main(): | |
| 16 | + ap = argparse.ArgumentParser(description=__doc__.split('\n')[0]) | |
| 17 | + ap.add_argument('--room', default=os.environ.get('SS_ROOM', '{"seats": {}}'), help='SS_ROOM for the room') | |
| 18 | + ap.add_argument('--auto', action='store_true', help='answer every request with the first legal action') | |
| 19 | + ap.add_argument('--seat', action='append', default=[], help='a seat answered by --pick') | |
| 20 | + ap.add_argument('--pick', choices=['first', 'random'], default='first') | |
| 21 | + ap.add_argument('--control', action='append', default=[], help='S=KIND@N: hand seat S to KIND after N events') | |
| 22 | + ap.add_argument('--stop', type=int, help='send stop after N events') | |
| 23 | + ap.add_argument('--seed', type=int, default=0, help='for --pick random') | |
| 24 | + ap.add_argument('--full', action='store_true') | |
| 25 | + ap.add_argument('cmd', nargs=argparse.REMAINDER) | |
| 26 | + a = ap.parse_args() | |
| 27 | + cmd = a.cmd[1:] if a.cmd[:1] == ['--'] else a.cmd | |
| 28 | + if not cmd: | |
| 29 | + ap.error('give the room command after --') | |
| 30 | + controls = [] | |
| 31 | + for c in a.control: | |
| 32 | + seat, rest = c.split('=', 1) | |
| 33 | + kind, at = rest.split('@', 1) | |
| 34 | + controls.append({'seat': seat, 'kind': kind, 'at': int(at)}) | |
| 35 | + rnd = random.Random(a.seed) | |
| 36 | + env = {**os.environ, 'SS_ROOM': a.room, 'SS_INPUT': os.environ.get('SS_INPUT', os.getcwd())} | |
| 37 | + p = subprocess.Popen(cmd, env=env, stdin=subprocess.PIPE, stdout=subprocess.PIPE, text=True, bufsize=1) | |
| 38 | + events = asked = answered = late = 0 | |
| 39 | + versions = [] | |
| 40 | + | |
| 41 | + def send(msg): | |
| 42 | + p.stdin.write(json.dumps(msg) + '\n') | |
| 43 | + p.stdin.flush() | |
| 44 | + print(' >>', json.dumps(msg)[:200]) | |
| 45 | + | |
| 46 | + for line in p.stdout: | |
| 47 | + if not line.startswith('@shoal '): | |
| 48 | + print(' log', line.rstrip()) | |
| 49 | + continue | |
| 50 | + msg = json.loads(line[7:]) | |
| 51 | + text = json.dumps(msg) | |
| 52 | + print(f'@shoal {text if a.full or len(text) <= 200 else text[:197] + "..."}') | |
| 53 | + if 'event' in msg: | |
| 54 | + events += 1 | |
| 55 | + if a.stop is not None and events == a.stop: | |
| 56 | + send({'stop': True}) | |
| 57 | + if 'end' in msg: | |
| 58 | + break | |
| 59 | + if 'version' not in msg: | |
| 60 | + continue | |
| 61 | + seat, v, legal = msg['to'], msg['version'], msg['legal'] | |
| 62 | + asked += 1 | |
| 63 | + assert not versions or v > versions[-1], 'versions must grow' | |
| 64 | + versions.append(v) | |
| 65 | + due = next((c for c in controls if c['seat'] == seat and events >= c['at']), None) | |
| 66 | + if due: # the handover, then the old controller's answer arriving late | |
| 67 | + controls.remove(due) | |
| 68 | + send({'control': {'seat': seat, 'kind': due['kind'], 'name': f'{due["kind"]}-{seat}'}}) | |
| 69 | + send({'act': {'seat': seat, 'version': v, 'action': legal[-1]}}) | |
| 70 | + late += 1 | |
| 71 | + continue | |
| 72 | + if a.auto or seat in a.seat: | |
| 73 | + action = legal[0] if a.pick == 'first' or a.auto else rnd.choice(legal) | |
| 74 | + else: | |
| 75 | + print(f'seat {seat}, version {v}: obs {json.dumps(msg["obs"])[:300]}\nlegal: {" ".join(map(str, legal[:60]))}') | |
| 76 | + got = input('your move, or its index (blank: the first)> ').strip() | |
| 77 | + action = got if got in legal else legal[int(got)] if got.isdigit() and int(got) < len(legal) else got or legal[0] | |
| 78 | + send({'act': {'seat': seat, 'version': v, 'action': action}}) | |
| 79 | + answered += 1 | |
| 80 | + p.stdin.close() | |
| 81 | + code = p.wait() | |
| 82 | + print(f'roomcli: {events} events, {asked} requests (versions {versions[:1]}..{versions[-1:]}), {answered} answered, ' | |
| 83 | + f'{late} late answers sent, exit {code}') | |
| 84 | + sys.exit(code) | |
| 85 | + | |
| 86 | + | |
| 87 | +if __name__ == '__main__': | |
| 88 | + main() | |
+57 −0 kit/test_room.py 新增 查看文件
| @@ -0,0 +1,57 @@ | ||
| 1 | +"""A check of kit/room.py against the room protocol (docs/games.md §8.3), on a toy game with one human seat: a stale or | |
| 2 | +illegal answer is ignored, a handover re-asks with a new version and drops the old controller's late answer, a silent | |
| 3 | +seat gets auto's move, and stop ends the room. python3 kit/test_room.py (or pytest) | |
| 4 | +""" | |
| 5 | +import json, os, subprocess, sys | |
| 6 | + | |
| 7 | +KIT = os.path.dirname(os.path.abspath(__file__)) | |
| 8 | +GAME = f''' | |
| 9 | +import sys; sys.path.insert(0, {KIT!r}) | |
| 10 | +from room import Room, Stop | |
| 11 | +room = Room(None) | |
| 12 | +try: | |
| 13 | + for i in range(4): | |
| 14 | + room.event({{'seat': '0', 'move': room.ask('0', {{'i': i}}, ['a', 'b'], auto=lambda: 'auto')}}) | |
| 15 | +except Stop: | |
| 16 | + room.event({{'stopped': True}}) | |
| 17 | +room.end('done', {{'0': 0}}) | |
| 18 | +''' | |
| 19 | + | |
| 20 | + | |
| 21 | +def test_room(): | |
| 22 | + env = {**os.environ, 'SS_ROOM': json.dumps({'limit': 0.5, 'seats': {'0': {'kind': 'human'}}})} | |
| 23 | + p = subprocess.Popen([sys.executable, '-c', GAME], env=env, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.DEVNULL, text=True) | |
| 24 | + | |
| 25 | + def said(): | |
| 26 | + line = p.stdout.readline() | |
| 27 | + assert line.startswith('@shoal '), line | |
| 28 | + return json.loads(line[7:]) | |
| 29 | + | |
| 30 | + def send(msg): | |
| 31 | + p.stdin.write(json.dumps(msg) + '\n') | |
| 32 | + p.stdin.flush() | |
| 33 | + | |
| 34 | + assert said() == {'to': '0', 'version': 1, 'obs': {'i': 0}, 'legal': ['a', 'b']} | |
| 35 | + send({'act': {'seat': '0', 'version': 0, 'action': 'a'}}) # stale | |
| 36 | + send({'act': {'seat': '0', 'version': 1, 'action': 'z'}}) # illegal | |
| 37 | + send({'act': {'seat': '0', 'version': 1, 'action': 'b'}}) | |
| 38 | + assert said() == {'event': {'seat': '0', 'move': 'b'}} | |
| 39 | + assert said()['version'] == 2 | |
| 40 | + send({'control': {'seat': '0', 'kind': 'agent', 'name': 'ada-codex'}}) | |
| 41 | + send({'act': {'seat': '0', 'version': 2, 'action': 'b'}}) # the old controller, late | |
| 42 | + assert said() == {'event': {'type': 'control', 'seat': '0', 'kind': 'agent', 'name': 'ada-codex'}} | |
| 43 | + assert said()['version'] == 3 | |
| 44 | + send({'act': {'seat': '0', 'version': 3, 'action': 'a'}}) | |
| 45 | + assert said() == {'event': {'seat': '0', 'move': 'a'}} | |
| 46 | + assert said()['version'] == 4 # left unanswered: auto plays after the limit | |
| 47 | + assert said() == {'event': {'seat': '0', 'move': 'auto'}} | |
| 48 | + assert said()['version'] == 5 | |
| 49 | + send({'stop': True}) | |
| 50 | + assert said() == {'event': {'stopped': True}} | |
| 51 | + assert said() == {'end': {'result': 'done', 'scores': {'0': 0}}} | |
| 52 | + assert p.wait(5) == 0 | |
| 53 | + | |
| 54 | + | |
| 55 | +if __name__ == '__main__': | |
| 56 | + test_room() | |
| 57 | + print('room protocol: ok') | |
+6 −0 referee/check.sbatch 新增 查看文件
| @@ -0,0 +1,6 @@ | ||
| 1 | +#!/bin/bash | |
| 2 | +#SBATCH --job-name=play | |
| 3 | +#SBATCH --time=30:00 | |
| 4 | +# The route's bot in every seat, the field at the other six; writes metrics.json, which the site keeps as the route's score. | |
| 5 | +PY=$(command -v werewolf-python || command -v python3) | |
| 6 | +PYTHONHASHSEED=0 "$PY" -s referee/play.py check "$SS_INPUT/$SS_ROUTE_DIR" | |
+23 −0 referee/kaggle_child.py 新增 查看文件
| @@ -0,0 +1,23 @@ | ||
| 1 | +"""A bot's own process, in Kaggle's own interface: main.py defines agent(obs, config) (or, as Kaggle allows, its last | |
| 2 | +function is the agent) and returns the game's action. The observation and configuration arrive as JSON and are handed | |
| 3 | +over as kaggle_environments Structs, so obs.planets and obs["planets"] both work, as on Kaggle. | |
| 4 | + python3 -I referee/kaggle_child.py <main.py> | |
| 5 | +""" | |
| 6 | +import os, sys | |
| 7 | + | |
| 8 | +sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), 'kit')) | |
| 9 | +import inspect, random # noqa: E402 | |
| 10 | +from host import load, serve # noqa: E402 | |
| 11 | +from kaggle_environments.utils import structify # noqa: E402 | |
| 12 | + | |
| 13 | +random.seed(0) # a bot's own randomness is seeded, so a check gives the same score every time | |
| 14 | +agent = load(sys.argv[1], 'agent') | |
| 15 | +takes = len(inspect.signature(agent).parameters) | |
| 16 | + | |
| 17 | + | |
| 18 | +def handle(msg): | |
| 19 | + obs, config = structify(msg['obs']), structify(msg['config']) | |
| 20 | + return agent(obs, config) if takes > 1 else agent(obs) | |
| 21 | + | |
| 22 | + | |
| 23 | +serve(handle) | |
+21 −0 referee/kaggle_seat.py 新增 查看文件
| @@ -0,0 +1,21 @@ | ||
| 1 | +"""A seat of a kaggle_environments game for a bot in its own process: env.run gets a function that passes each | |
| 2 | +observation to the bot's process and its answer back. A late or broken answer is the game's no-op.""" | |
| 3 | +import json, os, sys | |
| 4 | + | |
| 5 | +HERE = os.path.dirname(os.path.abspath(__file__)) | |
| 6 | +sys.path.insert(0, os.path.join(os.path.dirname(HERE), 'kit')) | |
| 7 | +from host import Child # noqa: E402 | |
| 8 | + | |
| 9 | + | |
| 10 | +def seat(folder, limit=1.0, idle=None, start=30): | |
| 11 | + main = os.path.join(folder, 'main.py') | |
| 12 | + if not os.path.isfile(main): | |
| 13 | + sys.exit(f'No bot in {folder}: add main.py with agent(obs, config), as on Kaggle') | |
| 14 | + child = Child([sys.executable, '-s', os.path.join(HERE, 'kaggle_child.py'), main], cwd=folder, limit=limit, start=start) | |
| 15 | + | |
| 16 | + def agent(obs, config): | |
| 17 | + answer = child.ask({'obs': json.loads(json.dumps(obs, default=str)), 'config': json.loads(json.dumps(config, default=str))}) | |
| 18 | + return idle if answer is None else answer | |
| 19 | + | |
| 20 | + agent.child = child | |
| 21 | + return agent | |
+183 −0 referee/play.py 新增 查看文件
| @@ -0,0 +1,183 @@ | ||
| 1 | +"""The project's referee, on kaggle_environments' own Werewolf (the game Kaggle Game Arena plays): seven players, two | |
| 2 | +werewolves against a seer, a doctor and three villagers, nights of killing, healing and inspecting, days of talk and | |
| 3 | +votes. Seats take roles in order. check: on three seeds, the route's bot takes every seat in turn and the opponent | |
| 4 | +fills the other six; the score is the share of games the route's team wins, each role a subtask (over the field). | |
| 5 | +practice: one seed against each opponent, the route as a werewolf and as the seer, a replay of each in replays/. | |
| 6 | + python3 -s referee/play.py check|practice <route folder> | |
| 7 | +""" | |
| 8 | +import json, os, random, sys | |
| 9 | + | |
| 10 | +ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | |
| 11 | +sys.path.insert(0, os.path.join(ROOT, 'kit')) | |
| 12 | +sys.path.insert(0, os.path.join(ROOT, 'referee')) | |
| 13 | +import league # noqa: E402 | |
| 14 | +from kaggle_environments import make # noqa: E402 | |
| 15 | +from kaggle_seat import seat # noqa: E402 | |
| 16 | + | |
| 17 | +N, SEEDS = 7, [3, 5, 8] | |
| 18 | + | |
| 19 | + | |
| 20 | +GOD = 'MODERATOR' | |
| 21 | +NIGHT_ORDER = {'heal': 0, 'inspect': 1} # as a judge calls them: the doctor, the seer, then the wolves | |
| 22 | + | |
| 23 | + | |
| 24 | +class Story: | |
| 25 | + """The game as the viewer draws it, from the engine's god-view records (env.info MODERATOR_OBSERVATION, one list | |
| 26 | + per step), so nothing downstream reads English. Seats are 0-6 (Player 1-7); a public moderator line rides on its | |
| 27 | + event as en. Events: | |
| 28 | + phase {phase: night|day, day} the engine counts night 0, day 1, night 1, day 2 ... | |
| 29 | + heal {actor, target} / inspect {actor, target, role, team} / wolf_vote {actor, target} / wolf_pick {target, | |
| 30 | + votes, counts, tie} / saved {target} the night, private: the doctor, the seer, the wolves | |
| 31 | + dawn {killed} after "day N begins": who died in the night, or None | |
| 32 | + out {who, cause: night|exile, role, team, day} every elimination, its role as the judge reveals it | |
| 33 | + talk {order} / speech {actor, text} the day's speaking order, then each speech | |
| 34 | + vote_start {order} / vote {actor, target} target None is an abstention | |
| 35 | + tally {votes, counts, exiled, tie} the day vote: who voted whom, the counts, who goes (tie: | |
| 36 | + the seats level at the top, one drawn at random) | |
| 37 | + over {winner, reason, roles, out} the end: every role and every elimination | |
| 38 | + actions carry the actor's private reasoning as why.""" | |
| 39 | + | |
| 40 | + def __init__(self, ids): | |
| 41 | + self.seat = {p: i for i, p in enumerate(ids)} | |
| 42 | + self.roles, self.teams = [None] * len(ids), [None] * len(ids) | |
| 43 | + self.gone, self.votes, self.order, self.dawn, self.en, self.peek = [], {}, None, [], [], {} | |
| 44 | + | |
| 45 | + def at(self, pid): | |
| 46 | + return self.seat.get(pid) | |
| 47 | + | |
| 48 | + def step(self, t, records): | |
| 49 | + out = [] | |
| 50 | + | |
| 51 | + def put(kind, rec=None, **kv): | |
| 52 | + e = {'t': t, 'kind': kind, **kv} | |
| 53 | + if rec is not None and rec.get('public') and rec.get('source') == GOD: | |
| 54 | + e['en'] = '\n'.join(self.en + [rec['description']]) | |
| 55 | + self.en = [] | |
| 56 | + out.append(e) | |
| 57 | + return e | |
| 58 | + | |
| 59 | + for r in records: | |
| 60 | + r = json.loads(r['json_str']) | |
| 61 | + name, d, desc = r['event_name'], r.get('data') or {}, r['description'] | |
| 62 | + if name == 'game_start' and 'role' in d: | |
| 63 | + s = self.at(d['player_id']) | |
| 64 | + self.roles[s], self.teams[s] = d['role'], d['team'] | |
| 65 | + elif name == 'night_start': | |
| 66 | + self.votes = {} | |
| 67 | + put('phase', r, phase='night', day=r['day']) | |
| 68 | + elif name == 'heal_action': | |
| 69 | + put('heal', actor=self.at(d['actor_id']), target=self.at(d['target_id']), why=d.get('reasoning')) | |
| 70 | + elif name == 'inspect_action': | |
| 71 | + self.peek[d['actor_id']] = d.get('reasoning') | |
| 72 | + elif name == 'inspect_result': | |
| 73 | + put('inspect', actor=self.at(d['actor_id']), target=self.at(d['target_id']), role=d.get('role'), | |
| 74 | + team=d.get('team'), why=self.peek.pop(d['actor_id'], None)) | |
| 75 | + elif name == 'vote_action' and r.get('source') != GOD: # a ballot (no data: a no-op, an abstention) | |
| 76 | + voter = self.at(r['source']) | |
| 77 | + target = self.at(d.get('target_id')) if 'target_id' in d else None | |
| 78 | + self.votes[voter] = target | |
| 79 | + put('wolf_vote' if r['phase'] == 'Night' else 'vote', actor=voter, target=target, why=d.get('reasoning')) | |
| 80 | + elif name == 'vote_result' and 'elected_target_player_id' in d: | |
| 81 | + put('wolf_pick', target=self.at(d['elected_target_player_id']), **self.count()) | |
| 82 | + self.votes = {} | |
| 83 | + elif name == 'heal_result': | |
| 84 | + put('saved', target=self.at(d['saved_player_id'])) | |
| 85 | + elif name == 'elimination' and 'eliminated_player_id' in d: | |
| 86 | + s = self.at(d['eliminated_player_id']) | |
| 87 | + self.dawn = [('dawn', r, {'killed': s}), ('out', None, self.fall(s, 'night', r['day']))] | |
| 88 | + elif name == 'moderator_announcement' and r['public'] and r['phase'] == 'Night' and not r.get('data'): | |
| 89 | + self.dawn = [('dawn', r, {'killed': None})] # "Last night, no one was eliminated." | |
| 90 | + elif name == 'day_start': | |
| 91 | + put('phase', r, phase='day', day=r['day']) | |
| 92 | + for k, rec, kv in self.dawn: | |
| 93 | + put(k, rec, **kv) | |
| 94 | + self.dawn = [] | |
| 95 | + elif name == 'discussion_order': | |
| 96 | + put('talk', r, order=[self.at(p) for p in d.get('chat_order_of_player_ids') or []]) | |
| 97 | + elif name == 'discussion' and 'message' in d and r.get('source') != GOD: | |
| 98 | + put('speech', actor=self.at(r['source']), text=d['message'], why=d.get('reasoning')) | |
| 99 | + elif name == 'vote_order' and r['phase'] == 'Day': | |
| 100 | + self.order = [self.at(p) for p in d.get('vote_order_of_player_ids') or []] | |
| 101 | + elif name == 'moderator_announcement' and 'voting_rule' in d: | |
| 102 | + self.votes = {} | |
| 103 | + put('vote_start', r, order=self.order) | |
| 104 | + elif name == 'elimination' and 'elected_player_id' in d: | |
| 105 | + s = self.at(d['elected_player_id']) | |
| 106 | + put('tally', **self.count(), exiled=s) | |
| 107 | + self.votes = {} | |
| 108 | + put('out', r, **self.fall(s, 'exile', r['day'])) | |
| 109 | + elif name == 'vote_result' and r['public']: # no exile (a tie under a no-exile rule) | |
| 110 | + put('tally', r, **self.count(), exiled=None) | |
| 111 | + self.votes = {} | |
| 112 | + elif name == 'game_end': | |
| 113 | + for k, rec, kv in self.dawn: # the wolves can win in the night | |
| 114 | + put(k, rec, **kv) | |
| 115 | + self.dawn = [] | |
| 116 | + put('over', r, **self.over(d.get('winner_team'), d.get('reason'))) | |
| 117 | + elif r.get('public') and r.get('source') == GOD: | |
| 118 | + self.en.append(desc) # the rule lines: told with the next event | |
| 119 | + out.sort(key=lambda e: NIGHT_ORDER.get(e['kind'], 2)) | |
| 120 | + return out | |
| 121 | + | |
| 122 | + def count(self): | |
| 123 | + counts = {} | |
| 124 | + for v in self.votes.values(): | |
| 125 | + if v is not None: | |
| 126 | + counts[v] = counts.get(v, 0) + 1 | |
| 127 | + top = [s for s, c in counts.items() if c == max(counts.values())] if counts else [] | |
| 128 | + return {'votes': dict(self.votes), 'counts': counts, 'tie': top if len(top) > 1 else None} | |
| 129 | + | |
| 130 | + def fall(self, s, cause, day): | |
| 131 | + e = {'who': s, 'cause': cause, 'role': self.roles[s], 'team': self.teams[s], 'day': day} | |
| 132 | + self.gone.append(e) | |
| 133 | + return e | |
| 134 | + | |
| 135 | + def over(self, winner, reason): | |
| 136 | + return {'winner': winner, 'reason': (reason or '').replace('Reason: ', ''), 'roles': self.roles, 'out': self.gone} | |
| 137 | + | |
| 138 | + | |
| 139 | +def transcript(j, names, kinds=None): | |
| 140 | + """The replay: the players with their roles and fates, and the game as Story's events (see Story).""" | |
| 141 | + ids = [a['id'] for a in j['configuration']['agents']] | |
| 142 | + story, events = Story(ids), [] | |
| 143 | + for t, records in enumerate(j['info'].get('MODERATOR_OBSERVATION') or []): | |
| 144 | + events += story.step(t, records) | |
| 145 | + over = next((e for e in events if e['kind'] == 'over'), None) | |
| 146 | + fate = {e['who']: e for e in story.gone} | |
| 147 | + return {'game': 'werewolf', 'version': 2, | |
| 148 | + 'players': [{'seat': i, 'id': ids[i], 'name': names[i], 'kind': (kinds or {}).get(i, 'bot'), 'role': story.roles[i], | |
| 149 | + 'team': story.teams[i], 'out': fate.get(i)} for i in range(len(ids))], | |
| 150 | + 'events': events, 'winner': over and over['winner'], 'reason': over and over['reason']} | |
| 151 | + | |
| 152 | + | |
| 153 | +def main(mode, route): | |
| 154 | + name = league.route_name() | |
| 155 | + reps = league.Replays() if mode == 'practice' else None | |
| 156 | + me = seat(league.bot_dir(route), limit=3.0, idle={'action_type': 'NoOpAction', 'kwargs': {}}) | |
| 157 | + wins, by_role = {}, {} | |
| 158 | + for opp in league.field(os.path.join(ROOT, 'field')): | |
| 159 | + others = [seat(os.path.join(ROOT, 'field', opp), limit=3.0, idle={'action_type': 'NoOpAction', 'kwargs': {}}) for _ in range(N - 1)] | |
| 160 | + for k, sd in enumerate(SEEDS if mode == 'check' else SEEDS[:1]): | |
| 161 | + for mine in range(N) if mode == 'check' else (0, 2): | |
| 162 | + agents = others[:mine] + [me] + others[mine:] | |
| 163 | + random.seed(sd) | |
| 164 | + env = make('werewolf', configuration={'seed': sd}) | |
| 165 | + env.run(agents) | |
| 166 | + j = env.toJSON() | |
| 167 | + role = j['configuration']['agents'][mine]['role'] | |
| 168 | + won = 1.0 if (env.steps[-1][mine].get('reward') or 0) > 0 else 0.0 | |
| 169 | + by_role.setdefault(role.lower(), []).append(won) | |
| 170 | + wins.setdefault(opp, []).append(won) | |
| 171 | + if reps: | |
| 172 | + names = [opp] * N | |
| 173 | + names[mine] = name | |
| 174 | + r = transcript(j, names) | |
| 175 | + reps.add(f'{opp}-{sd}-{role.lower()}.json', r, f'{name} as the {role.lower()}, six {opp} bots, seed {sd}', [name, opp], f'{r["winner"]} win: {(r["reason"] or "").replace("Reason: ", "")}') | |
| 176 | + for o in others: | |
| 177 | + o.child.close() | |
| 178 | + me.child.close() | |
| 179 | + league.write_metrics(sum(sum(v) for v in by_role.values()) / sum(len(v) for v in by_role.values()), {k: sum(v) / len(v) for k, v in sorted(by_role.items())}) | |
| 180 | + | |
| 181 | + | |
| 182 | +if __name__ == '__main__': | |
| 183 | + main(sys.argv[1], sys.argv[2]) | |
+6 −0 referee/practice.sbatch 新增 查看文件
| @@ -0,0 +1,6 @@ | ||
| 1 | +#!/bin/bash | |
| 2 | +#SBATCH --job-name=practice | |
| 3 | +#SBATCH --time=30:00 | |
| 4 | +# A practice run from your route: games as a werewolf and as the seer, replays in replays/ (see Matches). | |
| 5 | +PY=$(command -v werewolf-python || command -v python3) | |
| 6 | +PYTHONHASHSEED=0 "$PY" -s referee/play.py practice "$SS_INPUT/$SS_ROUTE_DIR" | |
+9 −0 referee/requirements.txt 新增 查看文件
| @@ -0,0 +1,9 @@ | ||
| 1 | +# Python 3.13. Google's kaggle-environments (Apache-2.0), without its heavy extras: Werewolf needs only these (its LLM agent, which would need litellm and keys, is not used). | |
| 2 | +kaggle-environments==1.33.0 --no-deps | |
| 3 | +jsonschema | |
| 4 | +requests | |
| 5 | +pydantic | |
| 6 | +pyyaml | |
| 7 | +pyjson5 | |
| 8 | +tenacity | |
| 9 | +python-dotenv | |
+200 −0 referee/room.py 新增 查看文件
| @@ -0,0 +1,200 @@ | ||
| 1 | +"""A live room (docs/games.md §8): one game of kaggle-environments' Werewolf with people, agents and bots at the seven | |
| 2 | +seats, speaking the room protocol through kit/room.py. Seat "0"-"6" is Player 1-7 and the engine deals the roles | |
| 3 | +(seeded by SS_ROOM's seed, else at random). A bot runs a route's or a field folder's main.py in a process of its own per | |
| 4 | +seat, as in the checks, 3 s a move; a seat on auto, a person out of time and a bot that fails or answers out of turn | |
| 5 | +are played by the engine's deterministic agent. Public things are events; what one seat alone may know (its role, the | |
| 6 | +wolves' picks, the seer's results, the doctor's heals) is told to that seat. At the end the game is left in replays/ in | |
| 7 | +the practice replays' format with a matches.json entry, so it lists as a match. | |
| 8 | + | |
| 9 | + SS_ROOM='{"seats": {"0": {"kind": "human", "name": "ada"}, "1": {"kind": "bot", "field": "deterministic"}}}' \ | |
| 10 | + python3 -s referee/room.py | |
| 11 | + | |
| 12 | +Messages (events are play.py's Story events, seats 0-6, without the private reasoning): | |
| 13 | + event {kind: start, seats: {seat: {name, kind}}, roles: {role: count}, seconds} | |
| 14 | + to each seat {kind: role, seat, role, team, wolves}: its role card (wolves: the werewolves' seats, for a werewolf) | |
| 15 | + event {kind: phase|dawn|out|talk|speech|vote_start|vote|tally, ...}, and {kind: turn, seat, what: chat|vote, | |
| 16 | + seconds} before a person's or an agent's speech or day vote | |
| 17 | + to a seat {kind: heal|saved|inspect|wolf_vote|wolf_pick, ...}: the doctor's, the seer's and the wolves' own night | |
| 18 | + request {to, version, obs: {seat, player, role, team, wolves, day, phase, request, alive, known, events, seconds, | |
| 19 | + raw}, legal}: request is chat, vote, kill, heal or inspect; known is what was told to the seat, events the public | |
| 20 | + ones so far (the last 40), raw Kaggle's own raw_observation, so a Kaggle agent can play from it | |
| 21 | + chat: legal [{type: chat, message: ""}], answered with the message filled in (trimmed, at most 600 characters; | |
| 22 | + left empty, the seat passes) | |
| 23 | + kill|heal|inspect|vote: legal [{type, target: seat}], a day vote also {type: vote, target: null} to abstain | |
| 24 | + an answer may add "reasoning" (kept for the replay), or be the Kaggle agent's own action, as main.py returns it | |
| 25 | + event {kind: over, winner, reason, roles, out}, then end {result, scores}: 1 for each seat of the winning team | |
| 26 | +""" | |
| 27 | +import json, os, random, sys | |
| 28 | + | |
| 29 | +ROOT = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) | |
| 30 | +sys.path[:0] = [os.path.join(ROOT, 'kit'), os.path.join(ROOT, 'referee')] # kit's room.py, not this file | |
| 31 | +from room import Room, Stop # noqa: E402 (first: play.py puts referee/ ahead of kit/ as it loads) | |
| 32 | +import league # noqa: E402 | |
| 33 | +from kaggle_environments import make # noqa: E402 | |
| 34 | +from kaggle_environments.envs.werewolf.game.actions import ChatAction, HealAction, InspectAction, VoteAction # noqa: E402 | |
| 35 | +from kaggle_environments.envs.werewolf.werewolf import deterministic_agent # noqa: E402 | |
| 36 | +from kaggle_seat import seat as bot_seat # noqa: E402 | |
| 37 | +from play import N, Story, transcript # noqa: E402 | |
| 38 | + | |
| 39 | +SAY, PASS = 600, 'I pass.' | |
| 40 | +ACTION = {'chat': ChatAction, 'vote': VoteAction, 'kill': VoteAction, 'heal': HealAction, 'inspect': InspectAction} | |
| 41 | +SECRET = {'heal': 'Doctor', 'saved': 'Doctor', 'inspect': 'Seer', 'wolf_vote': 'Werewolf', 'wolf_pick': 'Werewolf'} | |
| 42 | +WAKE = {'Doctor': 0, 'Seer': 1} # the judge wakes the doctor, then the seer, then the wolves | |
| 43 | + | |
| 44 | + | |
| 45 | +class Bots: | |
| 46 | + """A folder's bot, one process per seat as in the checks: a bot may keep what it learns about its own game.""" | |
| 47 | + | |
| 48 | + def __init__(self, folder): | |
| 49 | + self.new = lambda: bot_seat(folder, limit=3.0).child | |
| 50 | + self.kids = {None: self.new()} # fails here, as Room expects, when the folder has no bot | |
| 51 | + | |
| 52 | + def ask(self, msg): | |
| 53 | + pid = msg['obs']['raw_observation']['player_id'] | |
| 54 | + if pid not in self.kids: | |
| 55 | + self.kids[pid] = self.kids.pop(None, None) or self.new() | |
| 56 | + return self.kids[pid].ask(msg) | |
| 57 | + | |
| 58 | + def close(self): | |
| 59 | + for c in self.kids.values(): | |
| 60 | + c.close() | |
| 61 | + | |
| 62 | + | |
| 63 | +def request(raw): | |
| 64 | + """What the engine asks of this player now and the players it may name: (chat|vote|kill|heal|inspect, ids).""" | |
| 65 | + phase, role, me = raw['detailed_phase'], raw['role'], raw['player_id'] | |
| 66 | + others = [p for p in raw['alive_players'] if p != me] | |
| 67 | + | |
| 68 | + def listed(name, key): # the request's own list of valid targets | |
| 69 | + return next((v['data'][key] for v in raw['new_player_event_views'] if v['event_name'] == name and (v.get('data') or {}).get(key)), None) | |
| 70 | + | |
| 71 | + if phase == 'DAY_CHAT_AWAIT': | |
| 72 | + return 'chat', [] | |
| 73 | + if phase == 'DAY_VOTING_AWAIT': | |
| 74 | + return 'vote', others | |
| 75 | + if phase == 'NIGHT_AWAIT_ACTIONS': | |
| 76 | + if role == 'Werewolf': | |
| 77 | + return 'kill', listed('vote_request', 'valid_targets') or others | |
| 78 | + if role == 'Doctor': | |
| 79 | + return 'heal', listed('heal_request', 'valid_candidates') or others | |
| 80 | + if role == 'Seer': | |
| 81 | + return 'inspect', listed('inspect_request', 'valid_candidates') or others | |
| 82 | + return None, [] | |
| 83 | + | |
| 84 | + | |
| 85 | +def main(): | |
| 86 | + conf = json.loads(os.environ.get('SS_ROOM') or '{}') | |
| 87 | + seed = int(conf['seed']) if conf.get('seed') is not None else random.SystemRandom().randrange(1 << 31) | |
| 88 | + random.seed(seed) # the engine's own draws: ties, who speaks and votes first | |
| 89 | + room = Room(Bots, field=os.path.join(ROOT, 'field')) | |
| 90 | + env = make('werewolf', configuration={'seed': seed, 'randomize_roles': True}) | |
| 91 | + env.reset(N) | |
| 92 | + config = json.loads(json.dumps(env.configuration, default=str)) | |
| 93 | + seats = [str(i) for i in range(N)] | |
| 94 | + ids = [p.id for p in env.game_state.players] | |
| 95 | + role = [str(p.role.name) for p in env.game_state.players] | |
| 96 | + team = [str(p.role.team) for p in env.game_state.players] | |
| 97 | + wolves = [i for i in range(N) if role[i] == 'Werewolf'] | |
| 98 | + names = [room.label(s) for s in seats] | |
| 99 | + story, public, known, seen = Story(ids), [], {s: [] for s in seats}, 0 | |
| 100 | + | |
| 101 | + def tell(i, e): | |
| 102 | + known[seats[i]].append(e) | |
| 103 | + room.tell(seats[i], e) | |
| 104 | + | |
| 105 | + def publish(): | |
| 106 | + nonlocal seen | |
| 107 | + log = env.info['MODERATOR_OBSERVATION'] | |
| 108 | + for t in range(seen, len(log)): | |
| 109 | + for e in story.step(t, log[t]): | |
| 110 | + e = {k: v for k, v in e.items() if k not in ('t', 'why')} # reasoning stays private until the replay | |
| 111 | + if e['kind'] in SECRET: | |
| 112 | + for i in range(N): | |
| 113 | + if role[i] == SECRET[e['kind']]: | |
| 114 | + tell(i, e) | |
| 115 | + else: | |
| 116 | + public.append(e) | |
| 117 | + room.event(e) | |
| 118 | + seen = len(log) | |
| 119 | + | |
| 120 | + def move(i): | |
| 121 | + s = seats[i] | |
| 122 | + obs = json.loads(json.dumps({**env.state[i].observation, 'step': env.state[0].observation.step}, default=str)) | |
| 123 | + raw = obs['raw_observation'] | |
| 124 | + what, targets = request(raw) | |
| 125 | + stand_in = lambda: deterministic_agent(obs) # noqa: E731 | |
| 126 | + if what is None: | |
| 127 | + return stand_in() # nothing asked: the engine's no-op | |
| 128 | + seat_of = {p: str(ids.index(p)) for p in ids} | |
| 129 | + aim = [seat_of[p] for p in targets if p in seat_of] | |
| 130 | + legal = [{'type': 'chat', 'message': ''}] if what == 'chat' else \ | |
| 131 | + [{'type': what, 'target': t} for t in aim] + ([{'type': 'vote', 'target': None}] if what == 'vote' else []) | |
| 132 | + base = {'day': raw['day'], 'phase': raw['game_state_phase'], 'actor_id': raw['player_id']} | |
| 133 | + | |
| 134 | + def accept(a): | |
| 135 | + if isinstance(a, int) and not isinstance(a, bool) and 0 <= a < len(legal): | |
| 136 | + a = legal[a] | |
| 137 | + if isinstance(a, dict) and 'action_type' in a: # a Kaggle agent's own action | |
| 138 | + if a['action_type'] != ACTION[what].__name__: | |
| 139 | + return None | |
| 140 | + k = a.get('kwargs') or {} | |
| 141 | + t = k.get('target_id') | |
| 142 | + a = {'type': what, 'message': k.get('message'), 'reasoning': k.get('reasoning'), | |
| 143 | + 'target': None if t in (None, '-1') else seat_of.get(t, '?')} | |
| 144 | + if not isinstance(a, dict) or a.get('type') != what: | |
| 145 | + return None | |
| 146 | + why = a.get('reasoning') | |
| 147 | + kw = {**base, 'reasoning': str(why)[:SAY] if why else None} | |
| 148 | + if what == 'chat': | |
| 149 | + text = a.get('message') | |
| 150 | + return ChatAction(**kw, message=text.strip()[:SAY] or PASS).serialize() if isinstance(text, str) else None | |
| 151 | + t = a.get('target') | |
| 152 | + t = None if t is None else str(t) | |
| 153 | + if (t is None and what != 'vote') or (t is not None and t not in aim): | |
| 154 | + return None | |
| 155 | + return ACTION[what](**kw, target_id='-1' if t is None else ids[int(t)]).serialize() | |
| 156 | + | |
| 157 | + limit = room.limit * 3 if what == 'chat' else None # a speech takes longer to write | |
| 158 | + seconds = limit or room.limit | |
| 159 | + if what in ('chat', 'vote') and room.kind(s) in ('human', 'agent'): | |
| 160 | + room.event({'kind': 'turn', 'seat': i, 'what': what, 'seconds': seconds}) | |
| 161 | + view = {'seat': s, 'player': ids[i], 'role': role[i], 'team': team[i], | |
| 162 | + 'wolves': [seats[w] for w in wolves] if role[i] == 'Werewolf' else [], | |
| 163 | + 'day': raw['day'], 'phase': raw['game_state_phase'].lower(), 'request': what, | |
| 164 | + 'alive': [seat_of[p] for p in raw['alive_players']], 'known': known[s], 'events': public[-40:], | |
| 165 | + 'seconds': seconds, 'raw': raw} | |
| 166 | + return room.ask(s, view, legal, auto=stand_in, bot={'obs': obs, 'config': config}, accept=accept, limit=limit) | |
| 167 | + | |
| 168 | + room.event({'kind': 'start', 'seats': {s: {'name': names[i], 'kind': room.kind(s)} for i, s in enumerate(seats)}, | |
| 169 | + 'roles': {r: role.count(r) for r in ('Werewolf', 'Seer', 'Doctor', 'Villager')}, 'seconds': room.limit}) | |
| 170 | + for i in range(N): | |
| 171 | + tell(i, {'kind': 'role', 'seat': i, 'role': role[i], 'team': team[i], 'wolves': wolves if role[i] == 'Werewolf' else []}) | |
| 172 | + publish() | |
| 173 | + stopped = False | |
| 174 | + try: | |
| 175 | + while not env.done: | |
| 176 | + acts = [None] * N | |
| 177 | + for i in sorted((i for i in range(N) if env.state[i].status == 'ACTIVE'), key=lambda i: WAKE.get(role[i], 2)): | |
| 178 | + acts[i] = move(i) | |
| 179 | + env.step(acts) | |
| 180 | + publish() | |
| 181 | + except Stop: | |
| 182 | + stopped = True | |
| 183 | + e = {'kind': 'over', **story.over(None, 'stopped')} | |
| 184 | + public.append(e) | |
| 185 | + room.event(e) | |
| 186 | + | |
| 187 | + end = env.info.get('GAME_END') or {} | |
| 188 | + winner = None if stopped else end.get('winner_team') | |
| 189 | + result = 'stopped' if winner is None else f'{winner.lower()} win, {N - len(story.gone)} left alive' | |
| 190 | + replay = transcript(env.toJSON(), names, {i: room.kind(s) for i, s in enumerate(seats)}) | |
| 191 | + if stopped: | |
| 192 | + replay['events'].append(public[-1]) | |
| 193 | + league.Replays().add(f'room-{seed}.json', replay, 'Room: ' + ', '.join(f'{i + 1} {n}' for i, n in enumerate(names)), | |
| 194 | + names, result) | |
| 195 | + room.end(result, {s: float(winner is not None and team[i] == winner) for i, s in enumerate(seats)}) | |
| 196 | + room.close() | |
| 197 | + | |
| 198 | + | |
| 199 | +if __name__ == '__main__': | |
| 200 | + main() | |
+7 −0 referee/room.sbatch 新增 查看文件
| @@ -0,0 +1,7 @@ | ||
| 1 | +#!/bin/bash | |
| 2 | +#SBATCH --job-name=room | |
| 3 | +#SBATCH --time=60:00 | |
| 4 | +# A live room (docs/games.md §8): one game, seats as SS_ROOM says; speaks the room protocol on stdin and stdout, and | |
| 5 | +# leaves the game in replays/ so the room lists as a match. | |
| 6 | +PY=$(command -v werewolf-python || command -v python3) | |
| 7 | +exec "$PY" -s referee/room.py | |
+9 −0 routes/main.py 新增 查看文件
| @@ -0,0 +1,9 @@ | ||
| 1 | +"""The starter: kaggle-environments' built-in deterministic Werewolf agent, which always does one fixed thing. Copy it | |
| 2 | +into routes/<your route>/main.py and write an agent that talks, suspects and votes well; on Kaggle Game Arena the same | |
| 3 | +function would play. obs.raw_observation has your role, the phase, who is alive, the announcements and the requests | |
| 4 | +(vote, chat, heal, inspect) with their valid targets; return one of the game's actions as a dict.""" | |
| 5 | +from kaggle_environments.envs.werewolf.werewolf import deterministic_agent | |
| 6 | + | |
| 7 | + | |
| 8 | +def agent(obs, config=None): | |
| 9 | + return deterministic_agent(obs) | |
+146 −0 viewer/NOTICE 新增 查看文件
| @@ -0,0 +1,146 @@ | ||
| 1 | +The Werewolf table (index.html) is this project's own, under the MIT licence. It uses these assets, all in assets/: | |
| 2 | + | |
| 3 | +1. Microsoft Fluent Emoji (https://github.com/microsoft/fluentui-emoji), MIT licence, (c) Microsoft Corporation. | |
| 4 | + Resized 3D images: werewolf.png (Wolf), seer.png (Crystal ball), doctor.png (Health worker), villager.png (Farmer), | |
| 5 | + moon.png (Crescent moon), sun.png (Sun), zzz.png (Zzz), robot.png (Robot), person.png (Bust in silhouette), | |
| 6 | + ballot.png (Ballot box with ballot), mic.png (Studio microphone), thought.png (Thought balloon). | |
| 7 | + | |
| 8 | +2. DiceBear Notionists (https://www.dicebear.com/styles/notionists/), a remix of "Notionists" by Zoish | |
| 9 | + (https://heyzoish.gumroad.com/l/notionists), licensed under CC0 1.0 | |
| 10 | + (https://creativecommons.org/publicdomain/zero/1.0/). assets/avatars/*.svg were generated once with the seeds in | |
| 11 | + their file names; each keeps its licence metadata. | |
| 12 | + | |
| 13 | +3. Icons from game-icons.net (https://game-icons.net, https://github.com/game-icons/icons), licensed under Creative | |
| 14 | + Commons Attribution 3.0 (https://creativecommons.org/licenses/by/3.0/), inlined in index.html with their black | |
| 15 | + backgrounds removed and drawn in the current colour: | |
| 16 | + by Lorc (https://lorcblog.blogspot.com): claw-slashes, checked-shield, gavel; | |
| 17 | + by Delapouite (https://delapouite.com): all-seeing-eye. | |
| 18 | + | |
| 19 | +4. Noto Serif SC (https://github.com/google/fonts/tree/main/ofl/notoserifsc), SIL Open Font License 1.1. | |
| 20 | + assets/judge.woff2 is the bold instance cut down to the characters the table writes itself; it is a Modified | |
| 21 | + Version under the licence below and keeps its name table. | |
| 22 | + | |
| 23 | +The play, pause and sound icons are drawn in index.html for this project. | |
| 24 | + | |
| 25 | +---------------------------------------------------------------------------------------------------------------------- | |
| 26 | +Fluent Emoji's licence: | |
| 27 | + | |
| 28 | +MIT License | |
| 29 | + | |
| 30 | +Copyright (c) Microsoft Corporation. | |
| 31 | + | |
| 32 | +Permission is hereby granted, free of charge, to any person obtaining a copy | |
| 33 | +of this software and associated documentation files (the "Software"), to deal | |
| 34 | +in the Software without restriction, including without limitation the rights | |
| 35 | +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |
| 36 | +copies of the Software, and to permit persons to whom the Software is | |
| 37 | +furnished to do so, subject to the following conditions: | |
| 38 | + | |
| 39 | +The above copyright notice and this permission notice shall be included in all | |
| 40 | +copies or substantial portions of the Software. | |
| 41 | + | |
| 42 | +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| 43 | +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |
| 44 | +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |
| 45 | +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |
| 46 | +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |
| 47 | +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |
| 48 | +SOFTWARE | |
| 49 | + | |
| 50 | +---------------------------------------------------------------------------------------------------------------------- | |
| 51 | +Noto Serif SC's licence: | |
| 52 | + | |
| 53 | +Copyright 2012 Google Inc. All Rights Reserved. | |
| 54 | + | |
| 55 | +This Font Software is licensed under the SIL Open Font License, | |
| 56 | +Version 1.1. | |
| 57 | + | |
| 58 | +This license is copied below, and is also available with a FAQ at: | |
| 59 | +http://scripts.sil.org/OFL | |
| 60 | + | |
| 61 | +----------------------------------------------------------- | |
| 62 | +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 | |
| 63 | +----------------------------------------------------------- | |
| 64 | + | |
| 65 | +PREAMBLE | |
| 66 | +The goals of the Open Font License (OFL) are to stimulate worldwide | |
| 67 | +development of collaborative font projects, to support the font | |
| 68 | +creation efforts of academic and linguistic communities, and to | |
| 69 | +provide a free and open framework in which fonts may be shared and | |
| 70 | +improved in partnership with others. | |
| 71 | + | |
| 72 | +The OFL allows the licensed fonts to be used, studied, modified and | |
| 73 | +redistributed freely as long as they are not sold by themselves. The | |
| 74 | +fonts, including any derivative works, can be bundled, embedded, | |
| 75 | +redistributed and/or sold with any software provided that any reserved | |
| 76 | +names are not used by derivative works. The fonts and derivatives, | |
| 77 | +however, cannot be released under any other type of license. The | |
| 78 | +requirement for fonts to remain under this license does not apply to | |
| 79 | +any document created using the fonts or their derivatives. | |
| 80 | + | |
| 81 | +DEFINITIONS | |
| 82 | +"Font Software" refers to the set of files released by the Copyright | |
| 83 | +Holder(s) under this license and clearly marked as such. This may | |
| 84 | +include source files, build scripts and documentation. | |
| 85 | + | |
| 86 | +"Reserved Font Name" refers to any names specified as such after the | |
| 87 | +copyright statement(s). | |
| 88 | + | |
| 89 | +"Original Version" refers to the collection of Font Software | |
| 90 | +components as distributed by the Copyright Holder(s). | |
| 91 | + | |
| 92 | +"Modified Version" refers to any derivative made by adding to, | |
| 93 | +deleting, or substituting -- in part or in whole -- any of the | |
| 94 | +components of the Original Version, by changing formats or by porting | |
| 95 | +the Font Software to a new environment. | |
| 96 | + | |
| 97 | +"Author" refers to any designer, engineer, programmer, technical | |
| 98 | +writer or other person who contributed to the Font Software. | |
| 99 | + | |
| 100 | +PERMISSION & CONDITIONS | |
| 101 | +Permission is hereby granted, free of charge, to any person obtaining | |
| 102 | +a copy of the Font Software, to use, study, copy, merge, embed, | |
| 103 | +modify, redistribute, and sell modified and unmodified copies of the | |
| 104 | +Font Software, subject to the following conditions: | |
| 105 | + | |
| 106 | +1) Neither the Font Software nor any of its individual components, in | |
| 107 | +Original or Modified Versions, may be sold by itself. | |
| 108 | + | |
| 109 | +2) Original or Modified Versions of the Font Software may be bundled, | |
| 110 | +redistributed and/or sold with any software, provided that each copy | |
| 111 | +contains the above copyright notice and this license. These can be | |
| 112 | +included either as stand-alone text files, human-readable headers or | |
| 113 | +in the appropriate machine-readable metadata fields within text or | |
| 114 | +binary files as long as those fields can be easily viewed by the user. | |
| 115 | + | |
| 116 | +3) No Modified Version of the Font Software may use the Reserved Font | |
| 117 | +Name(s) unless explicit written permission is granted by the | |
| 118 | +corresponding Copyright Holder. This restriction only applies to the | |
| 119 | +primary font name as presented to the users. | |
| 120 | + | |
| 121 | +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font | |
| 122 | +Software shall not be used to promote, endorse or advertise any | |
| 123 | +Modified Version, except to acknowledge the contribution(s) of the | |
| 124 | +Copyright Holder(s) and the Author(s) or with their explicit written | |
| 125 | +permission. | |
| 126 | + | |
| 127 | +5) The Font Software, modified or unmodified, in part or in whole, | |
| 128 | +must be distributed entirely under this license, and must not be | |
| 129 | +distributed under any other license. The requirement for fonts to | |
| 130 | +remain under this license does not apply to any document created using | |
| 131 | +the Font Software. | |
| 132 | + | |
| 133 | +TERMINATION | |
| 134 | +This license becomes null and void if any of the above conditions are | |
| 135 | +not met. | |
| 136 | + | |
| 137 | +DISCLAIMER | |
| 138 | +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |
| 139 | +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF | |
| 140 | +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT | |
| 141 | +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE | |
| 142 | +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | |
| 143 | +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL | |
| 144 | +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | |
| 145 | +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM | |
| 146 | +OTHER DEALINGS IN THE FONT SOFTWARE. | |
+1 −0 viewer/assets/avatars/ada.svg 新增 查看文件
| @@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1744 1744" fill="none" shape-rendering="auto"><metadata xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"><rdf:RDF><rdf:Description><dc:title>Notionists</dc:title><dc:creator>Zoish</dc:creator><dc:source xsi:type="dcterms:URI">https://heyzoish.gumroad.com/l/notionists</dc:source><dcterms:license xsi:type="dcterms:URI">https://creativecommons.org/publicdomain/zero/1.0/</dcterms:license><dc:rights>Remix of „Notionists” (https://heyzoish.gumroad.com/l/notionists) by „Zoish”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)</dc:rights></rdf:Description></rdf:RDF></metadata><mask id="viewboxMask"><rect width="1744" height="1744" rx="0" ry="0" x="0" y="0" fill="#fff" /></mask><g mask="url(#viewboxMask)"><g transform="translate(531 487)"><path d="M554 727.7c-99.2 297-363.8 388.6-503.7 19.8-19.3-50.7 31-69.5 66.2-91.9 24.1-15.3 36.8-28.5 35.3-42.2-7-64.4-36.9-243.8-36.9-243.8l-3-5.8s.7-1.6-2.2 1.2c-3 3-9.9 34.2-37 34.2-24.5 0-49.2-10.9-61-86.3C7.2 285.6 9.6 214 40 201c12.5-5.3 24-7.2 35.2-.8 11.3 6.4-13-22 112-126C268.4 6.4 396.7-3.5 448.5 8 500.3 19.5 552 44.8 574.9 98.5c27.8 65-25.9 114.3-14 262.5-2.2 53.6.8 171.2-146.6 210.6-28 7.5-19.3 48.4 22.7 58.4 67 21 117 72.3 117 97.9" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="m554 266.2.1-1.4c4.1-36.4 8.2-71.7 27.1-103.4 6.5 4.4 5.7 10 3.7 15.2-19.9 51.2-18 104.4-16.2 157.6l.4 14c2.1 66.4-14.5 126.8-58.7 177.5-15.4 17.6-35.8 29.8-56.5 40.3-21.4 11-25.9 20.1-19.2 43.6l.8 2.6c1.4 3.9 2.8 7.9-1 11.8-4.5 4.6-9.5 3.3-14.8 1.8l-.6-.1a406.4 406.4 0 0 1-137-68.3c-6-4.4-10.8-10.3-15.5-16.1l-.3-.4c-2.5-3-3-7.8.5-10.4 3.3-2.5 5.8-.5 8.7 1.8l1 .9a145.5 145.5 0 0 0 76.3 31.7c13.4 1.4 26.6.9 40 .4 7.4-.3 14.8-.6 22.3-.5 10.2 0 18.7-4.7 26.7-9.2l2.8-1.6c27.8-15.5 54.3-32.8 72.2-60.7 16.1-25 25.9-52.2 31.6-80.9 7.2-36.1 6.6-72.7 6-109.8-.3-12-.5-24.2-.5-36.4ZM50.6 190.8c21.9-1.7 34 11.2 44.3 26.3a140.4 140.4 0 0 1 22.4 61.5c.5 3.7 1 7.6-1.2 11.3-4.5.6-4.9-3-5-5.6-.5-20.7-9.7-38.7-18.9-56.1-6.6-12.5-16.2-24.6-31.4-27.6-17.2-3.5-33 12-40.8 32.2-14.5 37.6-12 74.6 1.4 111 5.8 15.9 13.1 32.1 27.8 43.2 14.8 11.3 32.7 9.3 43.6-5.7l2-2.5c2-2.6 4-5.1 5-8 2.1-5.8 5.4-11.2 11.3-10.4 6.8 1 8 8.3 8.7 14a3661 3661 0 0 0 22 156.7l5.9 38.8c2.6 17.1 5.6 41.7 3.6 52.1a28 28 0 0 0-.3 2.2c-.4 2.8-.6 5-4.2 5.5-4.9.8-7-2-7.7-6.4-2.3-17-3-23.6-4-49.6-.9-25.2-5.6-50-10.4-74.9l-5-27c-5.2-30.8-10.3-62-10.8-97l-2 3c-7.6 11.3-13.7 20.5-24.5 24a40.5 40.5 0 0 1-46.1-12.5 127.8 127.8 0 0 1-28.8-55.8c-8.4-34-9.9-67.1.9-100.6 5.2-16.1 23.7-44.7 42.2-42Zm34.6 127.5c4.4 3.2 8.4 6 12-5.4-1.1-42.2-14.7-69.2-35.8-70.3 11.2 14.6 22 28.8 23 48.5a32.3 32.3 0 0 1-10.7-8.8c-2-2.2-4-4.4-6.5-6l-3-2.4c-4.8-3.6-9.7-7.4-17.8-4.5 3.8 5.8 9 10 14.3 14 6 4.7 12 9.3 15.6 16.5-10.6 7.7-15.2 17.7-9.7 29.9 4.8 10.5 11.9 19.2 25.9 19.8-.6-6.3-4.7-10.9-8.8-15.4-5-5.4-9.7-10.6-7.5-18.6 3.2-1.5 6.2.7 9 2.7Z" fill="#000"/></g><g transform="translate(178 1057)"><path d="M1303 692 16 688.7S53.5 481.5 111 360C236.9 93.7 489.4 44.3 511.3 56.7c32 18 62.3 40.7 151.4 40.7 91.1 0 148.8-39.5 148.8-39.5s135.3 32.3 200.6 69.5c83.1 47.4 177 187 220.2 295.9 46 115.6 70.7 268.7 70.7 268.7Z" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="M1296.8 692c-6.3-26-11.8-51.9-17.3-77.9l-8.4-39c-8-36.6-18.6-72.3-30-107.6a678.2 678.2 0 0 0-42.1-102.8l-7-13.7a802.4 802.4 0 0 0-27.6-50.7c-27.4-45.3-58.1-88.3-97-124a334.8 334.8 0 0 0-102.4-65c-7-2.8-13.8-6-20.7-9.1-7.9-3.7-15.8-7.3-24-10.5-10.6-4-14.4-.7-18.8 7.3-8 14.7-18 28-32.9 36-40.3 21.6-82.3 33.2-126.5 13.6a138 138 0 0 1-48.6-35.4c-6-7-12.2-8.3-20.5-9.5-22-3.3-36.7 4.7-49 23.1-16.3 24.2-42.3 33.2-69.5 35.8a146.6 146.6 0 0 1-108-31.8A203.2 203.2 0 0 1 402 86.5l-9.7 4.5c-6.9 3.1-13.6 6.2-19.8 10-9.6 6-19.7 11-29.8 16a347.3 347.3 0 0 0-34 18.9 454.4 454.4 0 0 0-85.4 73.7 604 604 0 0 0-86.3 122.8 869 869 0 0 0-50 108.1 1216.5 1216.5 0 0 0-34 102 562 562 0 0 0-20.2 102.2c-.6 6.8-2.1 13.6-3.7 20.4-1.9 8.3-3.8 16.8-4.1 25.8-5.5 1-10.6 1-16.9 1 4.5-32.9 9.7-66 16-98.8 2.3-12 5.3-23.7 8.3-35.4l5.3-21.5c5.2-22.6 12.6-44.6 20-66.6l.9-2.7a836.3 836.3 0 0 1 83-179c17-27.2 36-53 57.1-77 37.3-43 79.1-80.3 130-105.9l10.8-5.4c36-18.2 72-36.4 112-44.2 11.1-2.1 22.2-4.6 33-7.6 12.7-3.5 15.2-9.1 10.3-21.1l-1-2.2c-.7-1.6-1.4-3.3-1.7-5v-.4c-.6-3.6-1.2-7.8 3.8-8.9 4.3-1 5.5 1.6 7 5l.6 1.1c1.6 3.2 3 6.5 4.5 9.7 4.8 10.8 9.6 21.7 18.6 30.6a101 101 0 0 0 59.7 27.2l5.3.7c24.8 3.3 49.7 6.7 75 5.4 35.3-1.8 70.2-5.5 104-16.5 5.2-1.7 9.7-4.8 14-8.3 7-5.8 6.5-10.6.5-16.8-8.9-9.2-11-20.6-10.3-32.6 4-1.5 7-.5 7.6 1.8 7 30.4 29.6 36 55.8 39 33.8 3.8 66.1 14.3 98.5 25 25.4 8.5 48.3 21.6 71.2 34.6l18.6 10.5c25 13.8 47.2 32.1 66.9 53.2 22.7 24.3 43.9 50 62.4 77.6 16.1 24 31.5 48.6 45 74.5a1007.4 1007.4 0 0 1 86.5 242c5.6 25.4 9.8 51.3 14.1 77.5 2.2 13.2 4.3 26.4 6.7 39.7-3.2.9-6.7.9-11.2.9ZM573 143a83.8 83.8 0 0 0 49.7-37.7 17 17 0 0 0-9.2-3.5l-2.8-.5a470 470 0 0 0-19.9-3.9c-27-4.8-54-9.7-74-32.8-1.3-1.5-4.6-1.7-7-1.8-27.5-.5-53.4 6.9-79.4 14.3l-11.2 3.2c.8 5.6 2.6 9 5.8 12.2a224 224 0 0 0 39.6 32.5c32.9 21 67.9 30.7 108.4 18Zm224 .3c-31.6 4.3-57.1-9-81-27.6-1.6-1.7-3.3-3-4.9-4.2-3-2.4-5.7-4.5-6.9-8.4 10.1-3.8 20.6-5.8 31.1-7.9 11.2-2.1 22.4-4.3 33-8.6l5.4-1.8c4.3-1.4 8.7-2.8 11.8-5.8 16.7-16.2 36.2-15.6 56.2-10.6 13 3.3 26 7 39.5 11l19 5.6-5.6 6.5c-14.1 16.6-26.6 31.3-46.9 38.5-16.7 6-33.2 11-50.7 13.3Z" fill="#000"/><path d="M1115.6 692c-9.1-36.9-12.1-74.7-22-111.2-7.7-28.1-13.9-56.8-23.8-84-7-19.4-13.7-39-23-57.8-12.7-25-23.1-51.2-34.4-77-1.3-3-2.9-6.3 1.3-8.8 4.3-2.6 7.4-.5 9.8 2.6 3.8 5 7.8 10.2 10.6 15.9 10 20.4 19.4 41.1 29.1 61.6A612.7 612.7 0 0 1 1097 529c9 31.6 17.5 63.6 21.5 96.6 2.6 21.4 7 42.7 8.6 65.4-3.3 1-6.8 1-11.4 1ZM221.2 692c-.6-3 .4-5.8.4-8.7 0-49.6 9.6-98 16.6-146.7 5-35 13.3-69 22.5-102.9a253.5 253.5 0 0 1 31.6-69c2.3-3.6 4-10 10-6.9 6.1 3.2 3.2 9 1.4 13.6-7.2 17.6-15.9 34.7-21.8 52.7a748.3 748.3 0 0 0-31 138.7c-1 8.5-2.7 16.8-4.9 25-7.4 28.5-3.8 58.4-10.9 87-1.1 4.7.3 10.1.3 16.2-4.5 1-8.9 1-14.2 1Z" fill="#000"/><path fill-rule="evenodd" clip-rule="evenodd" d="M645.9 165.5c-9 6.6-10.5 15.7-3.6 28.3l4 2.7c2.3 1.5 4.3 3 6.5 3.6 9.5 3 17-2 21.6-9.1 4.7-7 5.5-16.9-1.9-22-7.3-5.1-16.6-10.9-26.6-3.5Zm5.4 17.4Zm0 0c3.8 2.8 7.6 3.4 10.9-.5a3.4 3.4 0 0 0-1.2-5.3c-4.4-1.6-9.2-2.6-9.7 5.8Z" fill="#000"/></g><g transform="translate(266 207)"><path d="M312.3 277.5a421 421 0 0 1 63.7-72.3 299.3 299.3 0 0 1 129-69c32.9-7.8 67-9.5 101.3-3.3 47 8.5 89.1 26 125.2 57.6 6.7 5.8 14.1 8 23.2 8.5 22.8 1.4 43.7 10.6 64.1 19.7a302.2 302.2 0 0 1 72.6 43.8c14.6 12.3 28 25.2 34 44.5 7.6 24-1 38.8-26.3 42.2-3.4.4-6.8.4-9.9 4.2 6.5 18.6 17.2 36.2 19.8 56.7 6.8 56.1-9 100.5-63.8 124-5.5 2.4-11 5.5-16.7.6-5.7-4.9-1-9 .6-13.7.7-2.2 1-5.4 0-7.3-6.5-12.2-6.6-25.4-7.3-38.6-.4-9.2-4-14.8-13-20.7-44.8-29.1-81.6-66.3-103.6-116-2.2-5-3.2-10.3-5.2-16.7-10.3 11-14.5 24.2-22.1 35.2-17.5 25.4-36.7 49-64 64.8-18.3 10.6-35.4 11.3-50.8-6.6-10.2 10-19.6 19.6-29.4 28.8a122.6 122.6 0 0 1-44 27.4c-8.1 2.9-16.7 5.3-24.7.6-6.5-4-10.5-.6-14.5 3-20.2 18.4-43 28.6-71.8 23.4-8.3 23 5 45.7 2.1 67.8-6.7 1.4-7.8-2-8.5-5.4-2.8-13.3-5.5-26.6-8-40a72.8 72.8 0 0 0-30.7-45c-16.1-11.9-39-1-48.8 19.9-15.7 33.7-14.2 68.5-5.7 103.5 4.5 18.6 12 36 21.2 52.9 5.6 10.2 15 15 23.4 21 6.2 4.5 22.6-3.6 30.5-13.8 2-2.7 3.5-6 6-8.3 9.4-9.5 16.3-7.9 19.4 5.2 5.9 25.2 9 51 11.9 76.7 2.7 24 2.9 48.3 11.4 71.5 8.6 23.2.7 41.2-22 50.5-18.5 7.5-60.3 7.3-75-13.2-8.3-11.5-19-14-30.8-17a70.1 70.1 0 0 1-52.2-47.4c-2.4-6.8-3.7-13.6.7-19.6 31.9-43.4 22.3-87.5 1.6-131.2-7-14.6-11-30.4-11.7-46.5-2.3-47.2 5.1-92.8 20.5-137.7 17.7-51.7 42.2-99.9 67.4-148 3-5.5 6.8-10.6 10.9-16.7Z" fill="#000"/></g><g transform="translate(791 871)"><path d="M197.7 98.9c-6-3.3-11.2-6-16.2-8.9a25 25 0 0 0-24-2 158.4 158.4 0 0 1-49 12.9c-12.6.8-25.3-8.2-25.7-18.7-.2-3-.8-6.2 3-7.4 2.8-1 5.2-.8 8 1.7 15.6 14.3 17.8 14.5 36.2 4.6 7.1-3.7 14-7.5 22-9.8 16.9-4.9 31.4-2 44.3 10 4.6 4.2 9.9 6.4 16.2 2.5 2.9-1.8 6.8-2.9 9.2.5 3 4.2-.7 7-3.4 9.7-5.5 5.6-11.2 10.7-20.6 4.9Z" fill="#000"/></g><g transform="translate(653 805)"></g><g transform="translate(901 668)"><path d="M7.4 185c5.4-8.7 22.6-12.2 32.1-7.3 6.6 3.4 13 7.6 20 1.7 6.5-5.6 4.6-12.2 1.5-18.7-1.6-3.2-.8-5.7 2.2-7.5 3-1.9 5.5-1.1 8.2.8a20.1 20.1 0 0 1 8 21.5c-1.6 7.3-3.8 16-12.7 19-4 1.4-8.8 3.5-12.3 2.4-15.4-4.7-33.8 3.4-47-12Z" fill="#000"/></g><g transform="translate(610 680)"><path d="M215.1 76.6c5-12 9-29.4 24.1-22.5 20.7 9.4 13.9 30.7 9.7 47.4-1.6 6.3-14.5 15.9-18.3 14.3-16.3-6.8-19.2-21.7-15.5-39.2ZM442 113.4c-8.6 7.5-17 7.6-22.2-1.5-9-16-8.6-32.8 3.3-47.2 2.5-3 13.8-3.6 16.3-1 14 15 14.6 31.8 2.6 49.7Z" fill="#000"/></g><g transform="translate(610 680)"></g><g transform="translate(774 657)"><path d="M131.2 43.2c-5.6 16.8-6.6 15.4-23 11.6-26.2-6-52.7-19.2-80.3-4.3-2 1.1-5 1-7.6.8-3.6-.2-8.2 1.3-10.1-3.3-2.1-5 1.5-8.3 5.3-10.3C35.2 27.7 53 13.4 77.9 16c12.8 1.3 26-2.8 39.3-2.4 18.8.7 22.4 5.7 16 23.9l-2 5.8ZM298.7 21.8c9.6 6.6 12.5 16.8 18.3 25a7 7 0 0 1-.6 9.4c-2.4 2.7-5.4 2.8-8.1 1.2-19.1-11-38.9-6.4-58-1.2-10.2 2.7-14.6-.8-17.2-9.2-1.7-5.7-2.9-11.5-3.6-17.4-1.3-9.8 6.9-11.9 13-12.2 18.5-.9 37.4-4.5 56.2 4.4Z" fill="#000"/></g><g transform="translate(0 559)"></g></g></svg> | |
+1 −0 viewer/assets/avatars/eli.svg 新增 查看文件
| @@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1744 1744" fill="none" shape-rendering="auto"><metadata xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"><rdf:RDF><rdf:Description><dc:title>Notionists</dc:title><dc:creator>Zoish</dc:creator><dc:source xsi:type="dcterms:URI">https://heyzoish.gumroad.com/l/notionists</dc:source><dcterms:license xsi:type="dcterms:URI">https://creativecommons.org/publicdomain/zero/1.0/</dcterms:license><dc:rights>Remix of „Notionists” (https://heyzoish.gumroad.com/l/notionists) by „Zoish”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)</dc:rights></rdf:Description></rdf:RDF></metadata><mask id="viewboxMask"><rect width="1744" height="1744" rx="0" ry="0" x="0" y="0" fill="#fff" /></mask><g mask="url(#viewboxMask)"><g transform="translate(531 487)"><path d="M554 727.7c-99.2 297-363.8 388.6-503.7 19.8-19.3-50.7 31-69.5 66.2-91.9 24.1-15.3 36.8-28.5 35.3-42.2-7-64.4-36.9-243.8-36.9-243.8l-3-5.8s.7-1.6-2.2 1.2c-3 3-9.9 34.2-37 34.2-24.5 0-49.2-10.9-61-86.3C7.2 285.6 9.6 214 40 201c12.5-5.3 24-7.2 35.2-.8 11.3 6.4-13-22 112-126C268.4 6.4 396.7-3.5 448.5 8 500.3 19.5 552 44.8 574.9 98.5c27.8 65-25.9 114.3-14 262.5-2.2 53.6.8 171.2-146.6 210.6-28 7.5-19.3 48.4 22.7 58.4 67 21 117 72.3 117 97.9" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="m554 266.2.1-1.4c4.1-36.4 8.2-71.7 27.1-103.4 6.5 4.4 5.7 10 3.7 15.2-19.9 51.2-18 104.4-16.2 157.6l.4 14c2.1 66.4-14.5 126.8-58.7 177.5-15.4 17.6-35.8 29.8-56.5 40.3-21.4 11-25.9 20.1-19.2 43.6l.8 2.6c1.4 3.9 2.8 7.9-1 11.8-4.5 4.6-9.5 3.3-14.8 1.8l-.6-.1a406.4 406.4 0 0 1-137-68.3c-6-4.4-10.8-10.3-15.5-16.1l-.3-.4c-2.5-3-3-7.8.5-10.4 3.3-2.5 5.8-.5 8.7 1.8l1 .9a145.5 145.5 0 0 0 76.3 31.7c13.4 1.4 26.6.9 40 .4 7.4-.3 14.8-.6 22.3-.5 10.2 0 18.7-4.7 26.7-9.2l2.8-1.6c27.8-15.5 54.3-32.8 72.2-60.7 16.1-25 25.9-52.2 31.6-80.9 7.2-36.1 6.6-72.7 6-109.8-.3-12-.5-24.2-.5-36.4ZM50.6 190.8c21.9-1.7 34 11.2 44.3 26.3a140.4 140.4 0 0 1 22.4 61.5c.5 3.7 1 7.6-1.2 11.3-4.5.6-4.9-3-5-5.6-.5-20.7-9.7-38.7-18.9-56.1-6.6-12.5-16.2-24.6-31.4-27.6-17.2-3.5-33 12-40.8 32.2-14.5 37.6-12 74.6 1.4 111 5.8 15.9 13.1 32.1 27.8 43.2 14.8 11.3 32.7 9.3 43.6-5.7l2-2.5c2-2.6 4-5.1 5-8 2.1-5.8 5.4-11.2 11.3-10.4 6.8 1 8 8.3 8.7 14a3661 3661 0 0 0 22 156.7l5.9 38.8c2.6 17.1 5.6 41.7 3.6 52.1a28 28 0 0 0-.3 2.2c-.4 2.8-.6 5-4.2 5.5-4.9.8-7-2-7.7-6.4-2.3-17-3-23.6-4-49.6-.9-25.2-5.6-50-10.4-74.9l-5-27c-5.2-30.8-10.3-62-10.8-97l-2 3c-7.6 11.3-13.7 20.5-24.5 24a40.5 40.5 0 0 1-46.1-12.5 127.8 127.8 0 0 1-28.8-55.8c-8.4-34-9.9-67.1.9-100.6 5.2-16.1 23.7-44.7 42.2-42Zm34.6 127.5c4.4 3.2 8.4 6 12-5.4-1.1-42.2-14.7-69.2-35.8-70.3 11.2 14.6 22 28.8 23 48.5a32.3 32.3 0 0 1-10.7-8.8c-2-2.2-4-4.4-6.5-6l-3-2.4c-4.8-3.6-9.7-7.4-17.8-4.5 3.8 5.8 9 10 14.3 14 6 4.7 12 9.3 15.6 16.5-10.6 7.7-15.2 17.7-9.7 29.9 4.8 10.5 11.9 19.2 25.9 19.8-.6-6.3-4.7-10.9-8.8-15.4-5-5.4-9.7-10.6-7.5-18.6 3.2-1.5 6.2.7 9 2.7Z" fill="#000"/></g><g transform="translate(178 1057)"><path d="M1312 691.3 3 694s25.8-189 56.2-235.7c16.3-25-10.6-45-16.4-70.3-5.8-25.2-11.8-57.9-10.5-67.4 1.2-9.5-1.4-29.3-4.3-43.3-3-14-.2-28.3-7-40.5-7-12.1-8-25 0-30.7 8-5.8 341.2-123.5 341.2-123.5L372.5 61s47-34.8 72.2-40.7c25.2-5.9 47.1-9.7 47.1-9.7s-5.2 24.3-1.4 36.6c4 12.4 81.6 64 143.2 59 84.4 0 150.9-40.4 156.3-56 5.4-15.5-3.3-18.8-6.6-31.7C779.9 5.7 788 1 802.6 9c14.5 8 211.3 110.9 254 130.4 42.6 19.6 202.6 69.4 202.6 69.4s30.2 8.8 26.7 17.2c-7.6 17.9-24.1 1-24.1 49.6 0 30-25.3 125.6-25.3 125.6s39.6 123.7 46.2 148.2c6.7 24.5 29.3 142 29.3 142Z" fill="#fff"/><mask id="bodyVariant05-a" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="516" y="231" width="267" height="460"><path d="m528 691-12-460h266.5L773 691H528Z" fill="#fff"/></mask><g mask="url(#bodyVariant05-a)"><g transform="translate(396 278)"><path d="M204.9 175.7s150.1 43.7 172 42.1c9.5-.6 13.6-7 11.8-16.2a28 28 0 0 0-5.5-12c-2.9-4-186-225.6-203.5-184.5a16 16 0 0 0 .5 12.5c4.3 8 10.8 14.4 16.3 21.3 21.4 24.8 41.6 50.6 63.1 75.3 12.7 14.9 30.5 34.2 37.9 47.7-5.4-.5-15.1-3.5-21.1-4.9-13.5-3.4-27-7-40.5-10.3a313.1 313.1 0 0 0-60.2-9.7c-9.2-.1-20.4-.4-27 7.1-5.2 6.5-6 15.8-2.8 23.3 4 8.3 10.7 15 16.6 22a855 855 0 0 0 29.6 30.9c18.8 18.5 37.3 37.2 56.2 55.5 22 21 43.5 42.3 65 63.7 15.9 15.5 32 30.7 47.9 46.2 4.8 4.7 9.6 9.4 14.8 13.7l5.3 4.2c1.2.8 2.4 1.7 3.9 1.8 2.5-.4 3.3-3.5 3.6-5.7.9-5.8-2.8-10.7-5.6-15.3C358.6 345.7 205 175.7 205 175.7Z" fill="#fff"/></g></g><path fill-rule="evenodd" clip-rule="evenodd" d="M409.2 694c-2.6-57.2-5-114.3-4.4-171.6.8-67.8.7-135.8-.7-203.6-.2-8.6 0-17.2.1-25.7.3-16.5.5-33-1.4-49.5-.2-1.4-.2-2.8-.2-4.3 0-3.7 0-7.6-2.7-11.7l-6.3 3c-8 4-16 8.1-25.8 6.6-11.6-1.9-17.4-6.4-16.6-18.3a489 489 0 0 1 4.5-39.6c2-12.6 2.6-25.3 3.2-38.2.8-15.2 1.6-30.7 4.5-46.4-18.3 5-35.6 10-52 17.8-22.4 10.7-46.6 16.2-70.6 21.7l-5.4 1.2c-25 5.6-49.5 13-73.4 22.2-8.8 3.4-17.8 6.4-26.8 9.4a376.2 376.2 0 0 0-41.7 15.7 993.2 993.2 0 0 0-61.3 32c-7.5 4.2-8.7 11.1-2 18a21.7 21.7 0 0 1 5 23.8A23.5 23.5 0 0 0 37 275a61.3 61.3 0 0 1 4.3 28c0 4.3 0 8.6.3 12.7a281 281 0 0 0 34.8 109.3 467.7 467.7 0 0 1 20 44.4c5 11.8 9.8 23.6 15.4 35 2 4 12.6 30 24.9 61.9 1 2.8-.4 7.2-1.9 11.7-1.5 4.6-3 9.3-1.9 12.2 1.2 3 4.6 4.3 8.2 5.7 3.2 1 6.4 2.3 8.6 4.7 12.2 13.8 15.7 24 20.3 37.7l.2.4c7.5 22.1 8.5 47 8.6 54a32.6 32.6 0 0 1-14.3.2c2-14.3-1-27.3-4.1-40.3-1-4.6-2.2-9.2-3-13.9-2.8-15.3-9.5-26.4-24.5-31.7-10.5-3.6-13.8-10.2-12.7-21.8l1-7.5c1.4-9.9 3-20.1-3-29-15.5-23-26.6-48.3-37.9-74l-6.8-15.4-1.4 2.2a42.5 42.5 0 0 0-6 11.5l-8.4 29C46.2 542.2 34.6 582.3 26 623.2c-5 23.5-7.9 47-9.8 70.8H1.7c-3.5-11.5-1-22.5 1.5-33.5a185 185 0 0 0 2.3-11.1C12 609 22.4 569.7 32.8 530.3l.5-2.1c7.7-29.1 18.3-56.8 29.5-84.5 2.3-5.6 1.2-9.2-2.8-13.7-15.2-17.5-20.3-39.6-23.8-61.6l-1.8-10.8c-4-23.5-7.9-47-6-71-6.7-7.8-7.3-17.4-7.8-27-.6-10-1.2-20-8.7-28.3-6.4-7 2.5-25.2 15-32.2 33.2-18.5 66.8-36 103.5-46.8A517 517 0 0 0 181 134c16.9-7 34.5-10.8 52.1-14.8 11.2-2.5 22.3-5 33.2-8.2 13.6-4 26.7-9 40-14a420.5 420.5 0 0 1 51-17.2c7-1.7 11.3-6.1 11.4-13.6.1-7.7 4.2-12.3 10.1-16.7 22.5-16.9 48.7-25 74.8-33.2l3.4-1c4.2-1.4 8.1-3.2 12-5a65 65 0 0 1 20.5-7c3.3-.6 6.5-1.2 10.2 0 2 6.6-2 9.9-6.8 11.9l-15.4 6.3A806.2 806.2 0 0 1 425.2 42c-7.8 2.7-14.7 7-21.6 11.1-5.8 3.6-11.6 7.1-18 9.7-2.3 1-4.2 5.6-4.6 8.7-3.3 29.3-6.3 58.6-9.3 88l-1.4 13.2-1.4 14.1c-.8 8.6-1.7 17-2.7 25.6 0 .8-.2 1.5-.4 2.3-.5 3-1 6.1 1.8 8.5 3 2.4 5.7 1 8.4-.5l2.2-1c28.3-12.3 48.4-34.2 68.5-56 4.5-5 9-10 13.6-14.7 14.7-15.4 26.9-18.9 45.7-9.7 5.7 2.7 10.9 4.6 17.7 2.1-3.6-7.4-7.5-14.6-11.4-21.8-8.4-15.4-16.6-30.6-22.2-47.1-5-14.6-3.5-29.6-2.1-44.4l.3-3c.5-5.6 4.3-10.2 11.4-10.7 5.9 5.8 6 15.3 6 21-.2 25 18.1 33.3 34.7 40.8l.5.3c50.3 22.9 103.7 25 157.4 16.8a149.8 149.8 0 0 0 80.3-37.2c11.4-10.4 10-22.9 4.5-34.3-4.5-9-1.5-14.8 3.7-20.6 4.7-5.2 10.3-3 15.5-1l2.3 1c30.8 11 59 27.2 87.4 43.4l5 3a493 493 0 0 0 41.3 20.2c12.8 5.8 25.6 11.7 38 18.5 34.6 19 70.1 36.4 105.7 53.6 18.5 9 38.1 15.7 57.7 22.5l16.3 5.8c13.9 5 27.9 9.6 41.8 14.3 12 4 24 8 35.8 12.2 5.4 2 11 2.2 16.6 2.5 5.9.3 11.8.6 17.5 2.8l4.5 1.7c7 2.5 13.8 5 18.8 11.2 7.6 9.5 7.3 17.4-3 23.7-12.2 7.3-18.8 15.5-13.4 30.2 1.6 4.4-.3 9-2 13.3l-.5 1.2-.2.5c-10 25-16.8 79.6-18.6 93.4l-.3 2.8c-3.8 27 2.8 46 10.2 67.7a558 558 0 0 1 5.4 16.4c11.8 38.4 23.2 77 33.6 115.8a1073 1073 0 0 1 21.4 99c.6 3.4.4 7 .2 11v3a25.1 25.1 0 0 1-12.3.2c-9.4-69.9-29.7-136.2-50-202.4A3709 3709 0 0 1 1242 425a158 158 0 0 0-15 32.1 238.2 238.2 0 0 1-50.9 90l-1.2 1.3c-4 4.4-8.8 9.5-8 13.1 2.7 13-3.9 20.6-10.8 28.6l-3.2 3.8a41.5 41.5 0 0 0-8.6 20c-1.3 8.2-2.8 16.4-4.3 24.6a383.2 383.2 0 0 0-7.3 55.5h-14.3c2-6.1 2.4-13.2 3-22.2a250.7 250.7 0 0 1 11.8-67c.7-4 1.7-9.9 11-19.5 8.5-8.6 8.4-18.8 8.3-25.2 0-2.4 0-4.2.4-5.2 5.6-14.2 25.4-39.5 35.1-52 3-3.7 5-6.3 5.4-7.1 23.1-38 39.4-79.9 48-123.6 2.8-13.7 5-27.6 7.3-41.6a1160 1160 0 0 1 7.2-41.8c2.5-13.3 5-26.5 5.6-40.2.3-7.4 6.6-11 12.5-14.5l1.3-.8.5-.2.4-.3c3.2-2 6.7-4 6.2-8.3-.5-4-3.9-5-7.3-6l-1.3-.4c-10.2-3-20.7-5.2-31.1-7.4a299.7 299.7 0 0 1-39.6-10.2l-20.3-7c-13.9-4.9-27.7-9.6-41.3-15a1511.4 1511.4 0 0 1-77.9-32.1 1475.9 1475.9 0 0 1-87-43.7 346 346 0 0 0-58-26c19.6 34.7 23.1 72.8 26.7 110.8.9 9.7 1.8 19.3 3 28.8 1.5 12.7-3 23.5-13.6 30-12.3 7.4-25.3 6.2-37.6-1.4l-3-2.2c-2.2-2-4.6-4-8.3-3.8-.4 49.6 0 99.2.2 148.8.6 101.4 1.2 203-3.3 305a41.8 41.8 0 0 1-16.6.3c.5-20.4 1.5-40.6 2.4-60.7 1-23.4 2.1-46.7 2.7-70 .8-39.9.6-79.7.4-119.6l-.2-22.4c-.2-53-.8-106.1-1.3-159.2l-.2-19.9c0-2 .1-4 .4-5.9.5-5.5 1.1-11-3.3-16.2-6.8-8-13.3-16.1-19.8-24.3L834 178.6a96 96 0 0 0-27-21.6c-10.4-6-14.9-3-17.3 8.3-1.5 6.7-.8 13.2 0 19.7.4 3.7.8 7.4.8 11 .4 80.8-1.6 161.5-4.3 242.2-1.5 45-2.4 90.3-3.1 135.4-.4 23.7-1.5 47.4-2.5 71-.8 16.5-1.5 33-2 49.6-4 0-9.9-.5-13.8-1.3.8-23.1 2-48.1 3-70.2a1987 1987 0 0 0 2.5-58.5c.1-34.5 1.5-99.8 2.8-162.4 1.1-52.7 2.2-103.4 2.5-132.4a6422.8 6422.8 0 0 0 0-105.7c-11.4-1.8-21 3.7-29.6 11.7a60 60 0 0 1-28.4 14.2c-40.4 9-81.3 11.7-122.4 5-21.3-3.4-41.6-9.6-57.9-25-3-3-6.5-5.6-10.6-8.6a374 374 0 0 1-6.7-5.1c0 4.7 1 20.7 2.4 40.7 2.2 33.3 5.2 77.9 5.3 100.7 0 18.2.9 36.4 1.7 54.6l.9 19c0 2.4 5 251 5 305.2v3.5c-.1 4.8-.3 9.7 1.7 14.4-5.6.1-11-.2-16.6-1 1.8-17.9-.6-131.4-2.4-212.6-.8-37.8-1.4-68.6-1.4-79.5 0-41-2.2-82.1-4.4-123.1-1.8-35.9-3.7-71.7-4.2-107.6-.1-10.7-2.9-16.2-13.3-19.5-10.6-3.5-17.7.8-23.5 8-9.7 12-20.3 23-31.9 33.2a61.8 61.8 0 0 0-23.4 49.5c-1 54.5 1 108.8 2.9 163.2 1.9 53.2 3.7 106.4 2.9 159.6-.5 29.7.2 59.5 1 89.2l.8 40.6h-14.3Zm513-569.4c-4.1-23.4-13.4-45-31.4-60.1-23.8-20-52.1-32.5-80.7-45l-14.8-6.6a44.6 44.6 0 0 1 6.6 40.4 133 133 0 0 1-18.5 36.5c-12.7 16.8-19.9 35.7-14.7 58.5 14.7-8.2 28.4-13 44.9-4.6a123.6 123.6 0 0 1 43.1 39c13.6 18.2 27.3 36 46.2 49.1 7.6 5.3 15.7 5 23.3 2 7.7-3.1 7.6-10.8 6.8-17.9-1-9-1.5-18.1-2-27.3-1.4-21-2.7-42.2-8.8-64Zm-397.8-8c-2.6-4.6-5.1-9.3-7.5-14.2a24155 24155 0 0 0-12.2-27.3c84 49.3 169.7 54.2 259.7 13.3l-3.2 7.4c-3.6 8.2-7 16-8.7 24.6l-.6 3c-.9 4-1.7 8-1.4 12.2 1.2 20-4.4 27.7-23.4 34.7-31.6 11.6-64.2 13-97.3 11a243 243 0 0 0-24.4-.4c-19.7.7-35.9-8.2-52-17.2l-6.5-3.5a17.8 17.8 0 0 1-7.6-10c-3.3-12-9.1-22.8-15-33.5Z" fill="#000"/></g><g transform="translate(266 207)"><path d="m316.3 305 31.4-34.4c-12.2-11-21.7-26-17-45.4 4.6-19.4 18-30 37.4-33 1.4-29.5 9.3-37.5 38.8-37.5 9.3 0 10.7-4.8 11-11.8.8-32.3 22.3-48.4 48.7-58.7 31.1-12.2 73.7 5.1 91 34.7a85 85 0 0 1 12 37.2c.7 9.3 3.4 13.7 14.3 12 47-7.7 90.4 5.3 133.3 22.9 47.9 19.5 86 52.3 119.8 89.7 20.8 23 37.5 50.1 41.2 82.7 2.2 19-2 35.1-18.9 46.6-22 15.2-47.3 19.8-73 22.6-13.4 1.5-27.2-.3-40.8.4-34 1.8-65.1-9.5-97-18.4-30.8-8.6-60-20.4-87-37.4-2.3-1.5-5.6-1.4-7.8-2-6.9 5.5-4.2 13.3-6.9 19.5-13.2 31-38.5 48.7-66.5 63.7-14.2 7.6-29.1 13.9-43.3 21.4-19.2 10-28.8 29.4-35.7 49-3.8 11.1-8.5 22.2-9.5 34.3-.4 4.9-3.5 11.7-10.8 10.3-6-1.1-7-7-7-12.2.2-29.1-14.2-53-29.1-76-12.2-18.7-37.8-19.9-53 2.4-4.8 7.1-7 15.6-11 22.9-3.8 7-7.3 14-11 22-9.4-4.2-11.9-12-14-20.1-4.8-18.7-1.4-37.3 1-55.7A337.7 337.7 0 0 1 291 344c7-13.6 16.4-25.5 25.4-39Z" fill="#000"/></g><g transform="translate(791 871)"><path d="M99.3 109c-12.6 6.6-16.2-1.7-20-10.4-3.3-7.8-.8-18.1-13.5-21.8-6-1.7-.7-10.5 2.2-15.4 2.4-4.2 6.9-6.4 10.6-2.4 15.8 17.4 37.8 16.7 58 20C160 82.8 182 73.9 204 67.6c4.4-1.2 9.2-5.2 13-1 4 4.6 4.9 11.2 2 16.7a51.8 51.8 0 0 1-19.5 22.8c-4 2.4-8 4-11.6.1-6.4-6.7-11.1-5.7-18 .4-12 10.6-19.3 9.1-31.1-3.6-4-1.1-4.8 2.7-7 4.4-7.6 5.7-15.7 7.9-22.5-.3-4.8-5.7-6.7-2.7-9.9 1.9Z" fill="#000"/></g><g transform="translate(653 805)"></g><g transform="translate(901 668)"><path d="M76.7 82.4a205.6 205.6 0 0 0 3.3 80.2c4.7 22.4-15.2 54.4-46.8 49.7-11-1.6-17.5-8.1-21.3-17.8-1.7-4.3-1.5-8.8 3.3-11 4-1.7 7.4-.2 9.4 4 4.8 10.1 13.4 9.4 21.9 6.9 9.6-2.9 16.4-9.6 17.1-19.9.7-10.1.2-20.3-1.6-30.4a159.3 159.3 0 0 1 8.8-89.5c2.2-5.7 5.4-10.9 11.9-8.3 7.5 3 1.8 8.8.7 13.1-1.7 7.4-4.2 14.7-6.7 23Z" fill="#000"/></g><g transform="translate(610 680)"><path d="M407.4 122.5c13 .3 25.4 1.1 37.6 2.5 3 .4 5 3.3 5 6.7 0 3.3-1.7 5.6-4.7 7-11.2 4.8-22 8.2-33.7.2-6.5-4.5-9-8.7-4.2-16.4ZM247.6 117c7 0 7.8 3.8 7 8.5-2 10.2-20 22.4-30.4 20.5-5.9-1-10.5-4-10.7-10.5-.2-6.7 4.8-8.2 10.3-8.4 9-.3 15.8-5.2 23.8-10ZM215.1 76.6c5-12 9-29.4 24.1-22.5 20.7 9.4 13.9 30.7 9.7 47.4-1.6 6.3-14.5 15.9-18.3 14.3-16.3-6.8-19.2-21.7-15.5-39.2ZM442 113.4c-8.6 7.5-17 7.6-22.2-1.5-9-16-8.6-32.8 3.3-47.2 2.5-3 13.8-3.6 16.3-1 14 15 14.6 31.8 2.6 49.7Z" fill="#000"/></g><g transform="translate(610 680)"><path fill-rule="evenodd" clip-rule="evenodd" d="M372.1 25c48-35 106.4-15.5 124.2 37 11.5 33.7-3 78.3-44 93.1-41.7 15.1-78 1.6-98.3-36.3a72.8 72.8 0 0 1-7.6-28c-1-11.5-5.7-17.1-16.7-18.6-12.4-1.6-20.5 3.6-24.5 15.4-1.3 3.8-2 7.8-2.8 11.7-.8 4.7-1.7 9.4-3.5 14-21.2 53.8-89.3 64.8-129 22.7a81.8 81.8 0 0 1-16.8-32.6 44.2 44.2 0 0 0-30.5-30.9c-19.7-6.6-39.3-13.9-59-21-11-4.2-22-8.3-33.2-12.2-5.7-2-11.7-4.4-8.7-11.3 2.2-5 6-3.4 9.7-1.8 1.1.5 2.3 1 3.4 1.3a530.5 530.5 0 0 1 50.3 18c16.6 6.6 33 13.1 50.2 18a18 18 0 0 0 22.5-11.1 68.8 68.8 0 0 1 63-44.6c34.6-2 62.7 12.9 77 47.2 1 2 2 4 3.2 6l1.6 3a57 57 0 0 1 45.6.6 81.5 81.5 0 0 1 24-39.5ZM248.8 144.5c24.3-10 40-27.5 43-53.8 5.6-49.4-42-83.2-89.2-65.2a63.4 63.4 0 0 0-27.7 95.1c18.4 25.1 42.8 31.3 74 24ZM433.6 20.1c19.5 1.6 33.6 15.1 44.7 31 14.2 23.7 11.3 55.3-11 79-14.8 15.7-48 23.3-70.3 13a62.3 62.3 0 0 1-37.6-65.7c6-45.2 40-60.2 74.2-57.3Z" fill="#000"/></g><g transform="translate(774 657)"><path d="M47.1 22c23.6-.3 45.4-8.9 68.1-5.8 18.2 2.5 36.3 4 54.6.9 6.6-1.2 11.6 2 13 12 1.5-13.5 13.4-12.8 17.1-11.2 15.5 6.6 30.2 1 44.9-.5 20-2 48.5 10.6 58.3 28.4a52 52 0 0 0 4.4 6.1c2.8 3.7 7.3 7.2 3 12.1-4.1 4.6-9.2 1.7-13-.3C289 59 280.8 53.7 273 48a18 18 0 0 0-19-2.4 76.4 76.4 0 0 1-38.9 4.4c-14.4-1.5-29.5 3.4-43 2-21.5-2.5-43.2 3.4-64.2-3.5-8.4-2.8-16.7-6.9-25.1.2-.9.7-2.7 1.3-3.6.9-12.3-6-24.4 0-36.4.1-10.2 0-20.2 3-30.3 1.6-3.8-.5-9.2 2-11-3.6-2-6.2 4-8.2 7.5-10.3C17.4 32.2 26 26.7 36.7 26c3.2-.2 6.3-2.4 10.4-4Z" fill="#000"/></g><g transform="translate(0 559)"></g></g></svg> | |
+1 −0 viewer/assets/avatars/finn.svg 新增 查看文件
| @@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1744 1744" fill="none" shape-rendering="auto"><metadata xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"><rdf:RDF><rdf:Description><dc:title>Notionists</dc:title><dc:creator>Zoish</dc:creator><dc:source xsi:type="dcterms:URI">https://heyzoish.gumroad.com/l/notionists</dc:source><dcterms:license xsi:type="dcterms:URI">https://creativecommons.org/publicdomain/zero/1.0/</dcterms:license><dc:rights>Remix of „Notionists” (https://heyzoish.gumroad.com/l/notionists) by „Zoish”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)</dc:rights></rdf:Description></rdf:RDF></metadata><mask id="viewboxMask"><rect width="1744" height="1744" rx="0" ry="0" x="0" y="0" fill="#fff" /></mask><g mask="url(#viewboxMask)"><g transform="translate(531 487)"><path d="M554 727.7c-99.2 297-363.8 388.6-503.7 19.8-19.3-50.7 31-69.5 66.2-91.9 24.1-15.3 36.8-28.5 35.3-42.2-7-64.4-36.9-243.8-36.9-243.8l-3-5.8s.7-1.6-2.2 1.2c-3 3-9.9 34.2-37 34.2-24.5 0-49.2-10.9-61-86.3C7.2 285.6 9.6 214 40 201c12.5-5.3 24-7.2 35.2-.8 11.3 6.4-13-22 112-126C268.4 6.4 396.7-3.5 448.5 8 500.3 19.5 552 44.8 574.9 98.5c27.8 65-25.9 114.3-14 262.5-2.2 53.6.8 171.2-146.6 210.6-28 7.5-19.3 48.4 22.7 58.4 67 21 117 72.3 117 97.9" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="m554 266.2.1-1.4c4.1-36.4 8.2-71.7 27.1-103.4 6.5 4.4 5.7 10 3.7 15.2-19.9 51.2-18 104.4-16.2 157.6l.4 14c2.1 66.4-14.5 126.8-58.7 177.5-15.4 17.6-35.8 29.8-56.5 40.3-21.4 11-25.9 20.1-19.2 43.6l.8 2.6c1.4 3.9 2.8 7.9-1 11.8-4.5 4.6-9.5 3.3-14.8 1.8l-.6-.1a406.4 406.4 0 0 1-137-68.3c-6-4.4-10.8-10.3-15.5-16.1l-.3-.4c-2.5-3-3-7.8.5-10.4 3.3-2.5 5.8-.5 8.7 1.8l1 .9a145.5 145.5 0 0 0 76.3 31.7c13.4 1.4 26.6.9 40 .4 7.4-.3 14.8-.6 22.3-.5 10.2 0 18.7-4.7 26.7-9.2l2.8-1.6c27.8-15.5 54.3-32.8 72.2-60.7 16.1-25 25.9-52.2 31.6-80.9 7.2-36.1 6.6-72.7 6-109.8-.3-12-.5-24.2-.5-36.4ZM50.6 190.8c21.9-1.7 34 11.2 44.3 26.3a140.4 140.4 0 0 1 22.4 61.5c.5 3.7 1 7.6-1.2 11.3-4.5.6-4.9-3-5-5.6-.5-20.7-9.7-38.7-18.9-56.1-6.6-12.5-16.2-24.6-31.4-27.6-17.2-3.5-33 12-40.8 32.2-14.5 37.6-12 74.6 1.4 111 5.8 15.9 13.1 32.1 27.8 43.2 14.8 11.3 32.7 9.3 43.6-5.7l2-2.5c2-2.6 4-5.1 5-8 2.1-5.8 5.4-11.2 11.3-10.4 6.8 1 8 8.3 8.7 14a3661 3661 0 0 0 22 156.7l5.9 38.8c2.6 17.1 5.6 41.7 3.6 52.1a28 28 0 0 0-.3 2.2c-.4 2.8-.6 5-4.2 5.5-4.9.8-7-2-7.7-6.4-2.3-17-3-23.6-4-49.6-.9-25.2-5.6-50-10.4-74.9l-5-27c-5.2-30.8-10.3-62-10.8-97l-2 3c-7.6 11.3-13.7 20.5-24.5 24a40.5 40.5 0 0 1-46.1-12.5 127.8 127.8 0 0 1-28.8-55.8c-8.4-34-9.9-67.1.9-100.6 5.2-16.1 23.7-44.7 42.2-42Zm34.6 127.5c4.4 3.2 8.4 6 12-5.4-1.1-42.2-14.7-69.2-35.8-70.3 11.2 14.6 22 28.8 23 48.5a32.3 32.3 0 0 1-10.7-8.8c-2-2.2-4-4.4-6.5-6l-3-2.4c-4.8-3.6-9.7-7.4-17.8-4.5 3.8 5.8 9 10 14.3 14 6 4.7 12 9.3 15.6 16.5-10.6 7.7-15.2 17.7-9.7 29.9 4.8 10.5 11.9 19.2 25.9 19.8-.6-6.3-4.7-10.9-8.8-15.4-5-5.4-9.7-10.6-7.5-18.6 3.2-1.5 6.2.7 9 2.7Z" fill="#000"/></g><g transform="translate(178 1057)"><path d="M1313.4 698 9.7 694.7S43.1 485 106 365.7c17-32.4 81-128.7 141.8-189.6 40.8-41 87.7-56 89-62 2.2-9.7-11-41.4-8.8-48.5 8.1-25.5 9.5.8 42.1-31.8 18.3-18.2 1.4-29.6 21.6-43.2 29.8-20 60-8.7 87-7.6 18 .7 12.4 50.3 27.3 62.5 40.3 32.9 91.8 54 128 63.5 46.1 12.2 61.6-2.5 85.4-12.2 23.8-9.6 38.5 12.2 68.9-33.2 14.2-21.2-11-42.6 8.2-54C826.6-8.3 872.2-7.7 891.1 2c28.9 14.8 16.3 41.6 16.3 41.6s35.7 11.6 43 22c7.2 10 5 44 5 44s-2.8-13.7 63.4 23.5c84.2 47.4 179.2 187.2 223 296 46.6 115.8 71.6 269 71.6 269Z" fill="#fff"/><path d="M1307 698c-9.4-38.5-16.9-77.2-25.6-115.7-6.3-27.8-14-55-22.4-82.2-9.5-30.6-19.5-61-33-90.4-9.6-20.7-19.4-41.1-29.5-61.5a673 673 0 0 0-57.7-92.4 470.2 470.2 0 0 0-60.5-70 342.9 342.9 0 0 0-83-57.4c-3-1.5-6.6-2.3-9.2-4.3-17-12.7-33.7-6.3-44.8 12.9-30.8 53.2-78.6 77.6-137.2 85.4a19 19 0 0 1-6.4 0c-5.6-1.2-13.6-1.2-13-9.1.7-7 8-4.5 12.7-5.1 43.7-5.8 84-19.6 113.4-54.3 12.4-14.8 21.6-32.4 31.3-49.3 10.2-17.9 2.4-45-23.7-50.5-11.8-2.5-19.5-6.3-16.2-21.4 2-9.6-4.8-18.9-13.2-23-10.4-5-21.7-9.1-34.5-5.6-11.7 3.2-24.2 4.1-36.3 6-7.1 1-12.2 5.8-18 9.4-4.4 2.8-4.4 6.4-2.5 11 7 17.4 1 39.8-13.9 51-14.7 11.2-30.4 20.2-50 18.4-4.9-.5-8.9 1.2-12.8 4.4-14 11.8-30.4 14.5-48.7 14.3-38.8-.4-74.2-12.6-109.2-27.3-7.8-3.3-13.6-12.6-26.5-7.5 27 34.9 67 48.4 105.6 67.6a26 26 0 0 1-24.8 3c-51.4-17.5-91.9-47.6-117.2-97-8.4-16.5-14.9-33-18.1-51-2.3-12.6-5.7-13.8-17.6-8.4-13.2 6-24.9 14.3-35.7 23.6-12.5 10.8-20 24-18.1 41.5 1 8.4 0 17 .2 25.6a47.3 47.3 0 0 0 35.2 46 37 37 0 0 1 18.4 10.8c-14.6 6.6-40.5-1.2-53-15.9C377.8 89.8 391.1 21 437.3-3.2l5-2.8a39.9 39.9 0 0 0-54 19A80.5 80.5 0 0 1 349 56c-15.3 7.7-19.8 28.7-7.8 39.4 23.4 20.8 43 45.8 69.9 62.6 15.4 9.6 30.1 21 46.7 28 15.8 6.5 33.6 8.4 50.6 11.8 5 1 10.2.8 13.3 5.6.3 3.4-1.7 5.6-4.4 5.5-32.1-1.5-63.4-4.4-92-23a437.5 437.5 0 0 1-69-54.1c-11-11-23.1-6.1-34 0-39 22-72.5 50.9-102.9 83.7a615.2 615.2 0 0 0-87.4 123 870.6 870.6 0 0 0-50.5 108A1198.4 1198.4 0 0 0 47 548.6a558.2 558.2 0 0 0-20.6 102.1c-1.3 15.2-7.3 29.7-7.9 46.2-5.5 1-10.8 1-17.1 1 4.6-32.9 9.9-66 16.2-98.8 3.7-19.1 9.2-37.9 13.7-56.8 5.6-23.6 13.4-46.5 21.2-69.4a831.6 831.6 0 0 1 84-179c16.9-27 36-52.4 57-76 36.7-41.1 76.3-78 126-103 6.4-3.3 9.3-7 4.1-15.1C314.4 85 317.8 54 339 44.4c16.6-7.6 26.6-22 34.3-37.8a56.1 56.1 0 0 1 51.4-33.3c19.6-.5 39.2-.7 58.8-1 9 0 14.1 1.6 10.1 12.7C491.1-8 492-.5 499 4.5a8.7 8.7 0 0 1 4 6.1c4.4 31 27.1 45.6 52.1 57.7 19.8 9.6 39.6 20.3 60.5 26.3 21.8 6.3 44.5 12.1 67.7 10.5a46 46 0 0 0 26.9-10.8c6.3-5.4 14.2-4.9 21.6-6.4 17-3.4 32.5-9.8 45-22.1 11.2-11.2 12-22 3.3-35.3-7.8-11.9-3.3-33.8 8.5-40.8 3.5-2 8.7-2.8 9.8 1.6 3 11.4 9.8 6.6 15.9 4.8a159 159 0 0 1 55.3-8.2A58 58 0 0 1 906 3.5c7.8 6.9 9.7 15.6 9.8 25.3 0 7.6 2.4 11.9 11 13.9 24.7 5.6 33.8 17.7 34.2 43.1 0 5.3 1.4 8.3 6.3 11 34.6 18.7 70.4 35.4 101.6 60 29.3 23 53 51.1 75.5 80.4A719.4 719.4 0 0 1 1245 414c18.2 46.5 33.7 94 46.4 142.4 12 46 16 93.5 27.1 140.6-3.2.9-6.7.9-11.4.9Z" fill="#000"/><path d="M1122.7 698c-9.3-36.4-12.3-73.8-22.2-110-7.8-28.4-14-57.4-24.2-85-7.2-19.4-14-39-23.5-57.7-12.7-25-23.3-51.2-34.7-77-1.4-3-2.8-6.3 1.4-8.8 4.4-2.7 7.6-.6 9.9 2.7 5 7.3 10.2 14.6 14.2 22.5 16 31.2 32 62.7 43 96 7.5 22.8 15.6 45.5 21.2 69 3.9 16.5 8.2 33 12 49.4 7 32.2 11.9 65 14.5 97.9-3.4 1-7 1-11.6 1ZM219 698a451 451 0 0 1 4.4-86.5c3.7-29 4.4-58.3 11-87 3.9-17 9-33.6 13-50.4 7.4-32.1 18.1-63.5 34.6-92.4 2.4-4 4.8-8 7.4-12 2.3-3.3 4.1-8.7 9.5-6.2 5.7 2.8 3.2 8.2 1.8 12.4a320 320 0 0 1-10 26.1c-18 40-33 81.2-40.6 124-7.3 42-15.8 84.3-14 127.6.7 14-1.6 28-2.6 43.2-4.5 1.2-9 1.2-14.4 1.2ZM629.3 367.8c-1.5-9.8 2.8-16.7 6.6-23.9 11.4-21.3 8.4-29.9-11.6-42.6-17.7-11.3-35.3-23-44.2-44-5.8-14-4.4-28.3-6.2-42.4-1-7.2 2.4-16 12.3-16.7 9.4-.6 20.9-3.5 25.6 8.4 3.4 8.6 2.1 17-6.2 24-15 12.8-13.9 19.7 3.7 29.1 13.8 7.4 28.5 13.3 40.5 23.9 23.8 21 26 56 4.5 79.2-6.8 7.3-7.8 15.3-6 24.6.9 4.3 2.7 10.2-3.1 12.3-5.3 2-6.5-4-9.2-7-6.3-6.8-7.1-15-6.7-24.9ZM804.3 405.5c1.2 3.4 4.6 5.2 3 8.6-20.6.3-34.9-24.4-26-44 5-11.3 13.4-20.6 15.8-33.3 3-16.5 0-25.2-15-32.3-27-12.9-39.8-33-35.3-63.4 1.4-9.4 1.4-17.6-11.8-20.7-9-2.2-11.2-12.2-9.2-21 2-8.5 8.8-13.9 17-12.6 7.6 1.3 17.4 3.5 16.7 15.4-.2 3-.4 6.1 2 8.4 11 11 8.6 24.1 6 37.1-2.2 11.1 0 20.3 9.8 26.8 6.4 4.2 12.5 8.9 19.2 12.6a49 49 0 0 1 13 78.4c-14.3 16-15.7 25.7-5.2 40ZM851 92c16.8-7 17.8-16.8 17.5-33.6 0-5-2.4-10 .8-14.9 11.1 2.4 17.6 16.4 14 30a48 48 0 0 1-48.7 35.4 41.9 41.9 0 0 0-31.2 13c-7.7 7-16.5 10.5-27 4.4 18.8-9.4 31.1-30.8 55.7-28.2 6.8.7 12-3.5 18.8-6Z" fill="#000"/></g><g transform="translate(266 207)"><path d="M313.9 274.5c5.3-4 4.1-9 4.2-13.6.4-22.7 11.9-37.6 33.8-43.1 7-1.8 11.9-5 12.1-12.6.8-25.2 39.8-49.6 64-42.7 5.3 1.4 10.7 2.3 16 3.5 8.9-41.5 37.2-54.7 62.2-52.7 9 .8 17.7 2.7 26.2 5.6 6.5 2.2 10.2.5 14-4.7C583 63 658.8 47.9 715.2 73.2a85.6 85.6 0 0 1 26 17.5 21.9 21.9 0 0 0 21 7.1c32.7-4.3 54.4 22.2 61.3 46.6 4.8 17.1 10.1 31.3 24.7 43.2 68.2 56 39.4 119 39.2 119.6-14.3 33.2-3.3 34 3.5 50.9 9.5 24 7.7 47.3-10.8 66-7.1 7.4-10.8 12.4-11.2 23.4-.8 20.4-11.4 34.1-36.8 36-8.5-51.8 1.7-95.7-2.5-149.4a53.8 53.8 0 0 1-43 1.2c-2.9-1-5.3 2-7.3 4.4a72.3 72.3 0 0 1-87 23.7c-10-4-15.7-1.3-22.4 5.2a63 63 0 0 1-56.5 18.5c-8-1.3-16-2-24-2.3-7 0-11.6 4.4-14.7 10.7-14.4 28.7-38 42.1-69.9 40.7-19.9-.9-32.2 7-40.2 25.7a45.3 45.3 0 0 1-35.8 26c-27.6 3.6-37.3 30-40.2 52-1.5 11.6-1.1 23.7-6 34.4-8.4.3-7.5-5.3-8.4-9.7-3.9-20-7.5-40.3-18-58.1-7.7-13-16.4-25.6-34.8-23-11.3 1.5-18.4 9.8-26.5 16.4-3.2 2.7-5.8 6.2-8.6 9.4-14.3 16.3-17.5 16.5-30.4-2.6-13.7-20.3-23.5-44-12-69.7 4.6-10.5 0-19.7-2-29.7-6.8-35.6 3.8-67 25.1-95.3 12.2-16.3 28-28 46.9-37.5Z" fill="#000"/></g><g transform="translate(791 871)"><path d="M188.2 86.4c-26.7 11.3-52.6 12.5-78-.5-6.5-3.2-12-2.4-18.7.7-3-9.6-3.7-18 3-25.5 2-2.1 3.9-5 7.4-3.7 3.1 1 5 4 4.2 7-2 7 3.5 7.8 7.4 9.7 26.8 13.6 52.6 8.7 78.1-4.1 4-2 4-5 3.7-8.6-.3-3.7.8-7 5.3-7.2 4.5-.2 7.6 2.4 7.9 6.7.5 7.1 0 14.3 0 22.8a22 22 0 0 0-20.3 2.7Z" fill="#000"/></g><g transform="translate(653 805)"></g><g transform="translate(901 668)"><path d="M69.4 96c-.6-14.1-4.3-27.2.4-40.1 1.2-3.3 1.2-8.6 6.7-8 5.5.8 4.5 5.6 4 9.2-4.6 30.7 7 58.6 15 87 2.7 9.3 6.6 18.2 6.1 28.4-.8 16.4-11.3 26.4-27.4 23.6a29.5 29.5 0 0 0-17.2 1.8c-14 5.6-26-5-39.6-5.3-4 0-6.6-7.3-7-12.7 0-2.5.4-5.2 3.5-6 2-.8 4.4.2 5.3 2.2 3.6 7 9.3 3.2 14.4 4.2 11.9 2 23 1.3 34.8.9 5.8-.3 11.7 3.3 17.2-1.7 5.8-5.2 4-11.3 2.2-17.6C81.7 140.3 72 119.7 69.4 96Z" fill="#000"/></g><g transform="translate(610 680)"><path d="M419.6 111c-4.2-9.5-9.9-15.2-19.8-15.7-6-.3-7-5.1-8.9-9.8 2-1.5 3.5-3.7 5.3-3.8 21.1-1.7 42.4-1.8 63.5-.1 6 .4 9.3 8 3.2 10.4-10 4-12.5 13.2-18.5 19.8-8.2 9-15.2 9.1-24.8-.8ZM228.6 81.4c12.2.7 23.1 1 34 2 3.6.3 8 1.8 8 6.7 0 5.6-4.6 5.2-8.3 5.1-6.3 0-9.7 2.7-12.5 8.6-3.4 7.4-6.9 15.3-18 14.8-10.5-.5-15.1-7.2-18.1-15.2-2.2-5.7-5-8.4-11-8.2-3.4.1-7.1-.2-7.5-4.9-.4-5 3-6 7-7.2a67.9 67.9 0 0 1 26.4-1.7Z" fill="#000"/></g><g transform="translate(610 680)"></g><g transform="translate(774 657)"><path d="M56.8 30.9c9.5-10.6 21.8-16.2 31.6-25C93 1.8 98 3 101.8 7.5c3.8 4.3 7.3 8.3 2.7 14.5a83 83 0 0 1-42.7 28.3C47.4 55 32 56.5 17 59.3c-4.5.9-10.2 3.3-11.5-3.6-1.2-6.6 3.2-10 9.5-11.2 14.2-2.8 28.4-5.2 41.8-13.6ZM289.9 29c11.3 2 18 11 27.8 14.2 3.8 1.2 8.4 4.7 6.6 9.5-2.1 5.8-8 4.3-12.2 3a450.2 450.2 0 0 1-39.2-14.5c-12.8-5.6-25.1-12.4-37.4-19-6-3.2-11.6-7.8-7.4-15.2 4.2-7.3 11-9.5 18.3-3.7C259.4 13.8 275 19.8 290 29Z" fill="#000"/></g><g transform="translate(0 559)"></g></g></svg> | |
+1 −0 viewer/assets/avatars/iris.svg 新增 查看文件
| @@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1744 1744" fill="none" shape-rendering="auto"><metadata xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"><rdf:RDF><rdf:Description><dc:title>Notionists</dc:title><dc:creator>Zoish</dc:creator><dc:source xsi:type="dcterms:URI">https://heyzoish.gumroad.com/l/notionists</dc:source><dcterms:license xsi:type="dcterms:URI">https://creativecommons.org/publicdomain/zero/1.0/</dcterms:license><dc:rights>Remix of „Notionists” (https://heyzoish.gumroad.com/l/notionists) by „Zoish”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)</dc:rights></rdf:Description></rdf:RDF></metadata><mask id="viewboxMask"><rect width="1744" height="1744" rx="0" ry="0" x="0" y="0" fill="#fff" /></mask><g mask="url(#viewboxMask)"><g transform="translate(531 487)"><path d="M554 727.7c-99.2 297-363.8 388.6-503.7 19.8-19.3-50.7 31-69.5 66.2-91.9 24.1-15.3 36.8-28.5 35.3-42.2-7-64.4-36.9-243.8-36.9-243.8l-3-5.8s.7-1.6-2.2 1.2c-3 3-9.9 34.2-37 34.2-24.5 0-49.2-10.9-61-86.3C7.2 285.6 9.6 214 40 201c12.5-5.3 24-7.2 35.2-.8 11.3 6.4-13-22 112-126C268.4 6.4 396.7-3.5 448.5 8 500.3 19.5 552 44.8 574.9 98.5c27.8 65-25.9 114.3-14 262.5-2.2 53.6.8 171.2-146.6 210.6-28 7.5-19.3 48.4 22.7 58.4 67 21 117 72.3 117 97.9" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="m554 266.2.1-1.4c4.1-36.4 8.2-71.7 27.1-103.4 6.5 4.4 5.7 10 3.7 15.2-19.9 51.2-18 104.4-16.2 157.6l.4 14c2.1 66.4-14.5 126.8-58.7 177.5-15.4 17.6-35.8 29.8-56.5 40.3-21.4 11-25.9 20.1-19.2 43.6l.8 2.6c1.4 3.9 2.8 7.9-1 11.8-4.5 4.6-9.5 3.3-14.8 1.8l-.6-.1a406.4 406.4 0 0 1-137-68.3c-6-4.4-10.8-10.3-15.5-16.1l-.3-.4c-2.5-3-3-7.8.5-10.4 3.3-2.5 5.8-.5 8.7 1.8l1 .9a145.5 145.5 0 0 0 76.3 31.7c13.4 1.4 26.6.9 40 .4 7.4-.3 14.8-.6 22.3-.5 10.2 0 18.7-4.7 26.7-9.2l2.8-1.6c27.8-15.5 54.3-32.8 72.2-60.7 16.1-25 25.9-52.2 31.6-80.9 7.2-36.1 6.6-72.7 6-109.8-.3-12-.5-24.2-.5-36.4ZM50.6 190.8c21.9-1.7 34 11.2 44.3 26.3a140.4 140.4 0 0 1 22.4 61.5c.5 3.7 1 7.6-1.2 11.3-4.5.6-4.9-3-5-5.6-.5-20.7-9.7-38.7-18.9-56.1-6.6-12.5-16.2-24.6-31.4-27.6-17.2-3.5-33 12-40.8 32.2-14.5 37.6-12 74.6 1.4 111 5.8 15.9 13.1 32.1 27.8 43.2 14.8 11.3 32.7 9.3 43.6-5.7l2-2.5c2-2.6 4-5.1 5-8 2.1-5.8 5.4-11.2 11.3-10.4 6.8 1 8 8.3 8.7 14a3661 3661 0 0 0 22 156.7l5.9 38.8c2.6 17.1 5.6 41.7 3.6 52.1a28 28 0 0 0-.3 2.2c-.4 2.8-.6 5-4.2 5.5-4.9.8-7-2-7.7-6.4-2.3-17-3-23.6-4-49.6-.9-25.2-5.6-50-10.4-74.9l-5-27c-5.2-30.8-10.3-62-10.8-97l-2 3c-7.6 11.3-13.7 20.5-24.5 24a40.5 40.5 0 0 1-46.1-12.5 127.8 127.8 0 0 1-28.8-55.8c-8.4-34-9.9-67.1.9-100.6 5.2-16.1 23.7-44.7 42.2-42Zm34.6 127.5c4.4 3.2 8.4 6 12-5.4-1.1-42.2-14.7-69.2-35.8-70.3 11.2 14.6 22 28.8 23 48.5a32.3 32.3 0 0 1-10.7-8.8c-2-2.2-4-4.4-6.5-6l-3-2.4c-4.8-3.6-9.7-7.4-17.8-4.5 3.8 5.8 9 10 14.3 14 6 4.7 12 9.3 15.6 16.5-10.6 7.7-15.2 17.7-9.7 29.9 4.8 10.5 11.9 19.2 25.9 19.8-.6-6.3-4.7-10.9-8.8-15.4-5-5.4-9.7-10.6-7.5-18.6 3.2-1.5 6.2.7 9 2.7Z" fill="#000"/></g><g transform="translate(178 1057)"><path d="M1313.4 698 9.7 694.7S43.1 485 106 365.7c17-32.3 81-128.7 141.8-189.6 40.8-41 87.7-56 89-62 2.2-9.7-11-41.4-8.8-48.5 8.1-25.5 9.5.8 42.1-31.8 18.3-18.2 1.4-29.6 21.6-43.2 29.8-20 60-8.7 87-7.6 18 .7 12.4 50.3 27.3 62.5 40.3 32.9 91.8 54 128 63.6 46.1 12 61.6-2.6 85.4-12.3 23.8-9.6 38.5 12.2 68.9-33.2 14.2-21.2-11-42.6 8.2-54C826.6-8.3 872.2-7.7 891.1 2c28.9 14.8 16.3 41.6 16.3 41.6s35.7 11.6 43 22c7.2 10 5 44 5 44s-2.8-13.7 63.4 23.5c84.2 47.4 179.2 187.2 223 296 46.6 115.8 71.6 269 71.6 269Z" fill="#fff"/><path d="M710.4 698a41.5 41.5 0 0 1-3.3-13.8c0-9.2-3.2-14.3-13.5-13.7-6.4.4-13-3.3-13-9.6-.2-8.2 7.8-6 12.7-5.7 9.3.7 12.2-4.1 12.4-12.1 0-4.6-.8-11 5.6-10.8 5.4 0 11.2 4 11.4 10 .4 9.8 4.5 14 14.1 13.6 8.7-.3 8.8 6 8.9 12.2-2.3 3.5-5.8 3.8-9.1 3.8-9 0-13.8 4-12.9 13 .7 6.6-3.7 9-8.5 12.5-1.6.5-3.2.7-4.8.6ZM472.4 698c-1.4-4.5-2-9.3-1.9-14 .8-10-3.1-14.5-13.3-13-4.7.7-8.2-1.6-11.2-4.9-1.8-1.9-3.6-3.8-2.6-6.7 1-2.7 3.5-3.8 6.2-3.5 13.3 1.7 21.4-1.9 19.7-17.4-.3-3.3 2-7 6.4-6 5.1 1 9.3 4.3 9 9.4-.6 11.3 4 15.2 15 14.2 9.7-.9 8.8 6.6 9.4 13.4-3 1-5.4 2.4-7.7 2.3-10.9-.6-16 3.7-14 15 .9 5.3-3.7 7.2-7.7 10.5-2.4.6-4.8.8-7.3.7ZM948.4 698c-1.8-3.2-3.7-6.5-3.7-9.7 0-11.6-1.8-20.2-17-17.6a9.5 9.5 0 0 1-10.6-9c0-6.9 6.4-5.8 10.8-5.6 10.1.6 15.3-3.2 14.6-14-.3-3.6 1.2-7.2 4-9.6 7.6 2 14.2 4.8 14.5 14.3.1 6.4 3.1 9.5 9.5 9.2 9-.6 12.4 3.8 11.4 12.3-2.5 3.2-6.2 2.5-9.5 2.9-7.3.8-12.3 3.5-11.1 12 1 6.4-2 10.4-8 14a11 11 0 0 1-4.9.8ZM236.9 698a27.7 27.7 0 0 1-3.3-11.2c-.2-11-3-17.7-16.3-16.2-5.2.6-11.6-3.5-11.3-9.8.3-6.5 7-4.6 11.3-4.8 12.7-.6 12.7-.5 16.3-21.8 7.7-2.3 12.6 1.2 13.1 8.7.7 10 5.4 13.7 14.7 13 6.7-.6 10.8 1.9 11 9 .2 8.2-6.5 7.3-11 6.7-10.5-1.5-12.5 3.9-11.8 12.5.4 4.9-.1 9.4-5.4 13.1-2.4.7-4.9 1-7.3.8ZM1186.3 698c-1.7-2.8-3.7-5.6-3.5-8.3.6-13-2.4-21.2-18-19.8-4.4.5-10.8-3.4-10.4-9.3.5-6.9 7.2-4.8 11.3-4.4 11 1.2 16-2.7 14.8-14a8.8 8.8 0 0 1 4.5-9.3c6 1.5 12 3.9 11.6 12-.3 8 3 11.8 11.2 11.3 4-.2 8 .4 8.1 5.8.2 5.7-2.7 8.9-8.5 8.6-8.5-.4-11.4 4.1-10.7 11.8.5 6.3-3.2 10.3-8 14.9-.5.7-1.8.7-2.4.7ZM611.4 540.8c3.4.4 6.7-.1 8.2 1.3 3.4 3.3 11.5 2.6 10.3 9.4-1 6.3-7.7 6.2-12.6 6-15-.5-14.2 11-15.4 21.5-8.3-.8-15.2-2-15.9-11.5-.6-7.4-5.5-9.2-11.4-9.2-7.5-.1-10.7-4-11-11-.2-7.6 5.5-7.7 10.5-7.9 7.8-.3 10.6-4.3 9.5-11.6-1.3-9.4 5-12.5 12-12.6 8-.1 6.6 7.2 7.2 12.4.6 5.5-1.7 12.7 8.6 13.2ZM821.6 521.5c3.9-4.9 9-5 13.3-6.4 1.2.9 2.3 1.2 2.5 1.9a55.4 55.4 0 0 0 22.3 26.3c3 1.9 7.4 2.7 8 7.8-2.7 7-9.3 6-15 6.3-7.5.4-12.3 2.3-10.8 11.4.7 4 .7 10-5 9.9-5.5 0-12.7-1.6-12.8-9.3-.2-9-4.2-11.7-12.6-11.6-10.7.2-9.9-8-10.7-16.4 11.6-1.5 24.7-1.8 20.8-19.9ZM1059.2 533c.1-3.5.3-6 .2-8.6-.5-7.4 5.7-8 10.2-8.9 6-1.1 6.5 4.2 6.7 8.5.5 10 1.3 18.6 15.6 17 5.2-.7 12.4 4 12.5 10 .1 6.1-7.1 6.1-12 6.3-8.6.2-13.8 3.2-13.7 12.7.1 4.2-.6 9.7-6.2 9.2-5.3-.5-11.9-2.6-12.2-9.2-.4-9.4-4.8-12-13.5-12.6-8.2-.5-8.2-8-9.1-13.4 5.8-8 18.8 2.9 21.5-11ZM1094 200.6c-2.4 2-4.8 1.9-7.2 1.6-6.6-.7-9.6 2-8.3 8.4 1 4.7-1 7.1-5.6 7.8-5.5 1-5.8-3.2-5.8-6.5.1-6.9-1.6-11-10-9.9-4 .6-8.4-1.9-9-5.6-.7-5 4.4-5.1 8.1-5.8 5-.8 9.2-2.1 9.4-8.2 0-2.8.9-6.5 4.8-6 3.6.6 7.9 1.9 7.7 6.8-.2 5.7 2.3 7.4 8 7.1 6.8-.4 8.2 4.4 8 10.3ZM953.5 221c-10.6 2.8-8.7-5.2-9.4-9.8-1.3-8.9-3.3-15.4-14.7-14.5-5.4.4-12-3-12.6-8.6-.7-7.7 7-7 12.2-7.7 7.6-1 12.8-4 13.4-12.5.2-4.2.8-10 6.4-9.1 5.1.7 12 2.5 12 9.5-.1 9 3.6 11.5 12.2 11.6 9.1.1 9.5 7.7 9.9 15.3-2.3.7-4.3 1.9-6.2 1.8-10.8-.7-17.6 2.2-15.5 14.9.8 5-1.7 8-7.7 9.1ZM1283.8 554.4c3.1 6.4-.4 9.7-4.9 9.6-15.5-.5-25.6 3.9-20.6 22.4-10.2.3-16-3.3-16.7-10.9-.8-8.3-4.9-11.3-12.1-11.5-10-.3-10.6-6.3-9.5-13.7 2.8-2.8 6.3-3 9.7-3.1 7.2-.2 10-4.2 9-10.8-1.5-10.4 6.1-13.2 13-13.1 7.8 0 6.1 8 6 13-.2 8.3 2 13.4 11.5 12.3 5.5-.6 9.8 2 14.6 5.8ZM381 540.8c2.9 1.3 5.7 3 8.3 4.8 6.4 5 4 8.5-2 11-2.5.8-5 1.2-7.6 1-11.6-1-16.8 3.7-14.6 15.6.3 1.5-.5 3.2-.8 5.4-8.7.3-14.3-2.7-15.4-11.5-.8-7-5-9.4-11.4-9-7.8.4-10.4-3.9-10.7-11-.4-8 5.3-7.7 10.3-7.7 8.5 0 11.6-4 10.5-12-1-8.3 3.8-12 11-12.4 8.2-.4 6.4 6.9 6 11.3-1.2 12.1 3.8 16.6 16.3 14.5ZM90.2 409.2c-2.4-13 7.3-11.7 12.9-14.1 3.4 1.2 4.1 3.3 4.3 5.4 1.2 12.4 3.2 23.4 20.3 21.2 3.5-.5 8.6 3 8.2 8.2-.5 5.3-5.3 6.7-9.5 6.6-11.3-.3-18.1 3.3-17 16 .3 3.2-1.4 6.3-5.1 6-5.6-.3-11-3.7-11.1-8.7-.5-11-6.8-13.5-15.7-14.3-5.6-.5-6.4-4.8-6.7-9.2-.5-5.4 3.5-6.2 7.4-6.7 6-.7 12.5-.4 12-10.4ZM550.4 294c-.5-10.2 7-11.6 13-11.5 7 0 6 7.2 5.9 12-.4 8.7 1.9 14.1 12 13.1 4-.4 7.2 2.2 10.6 3.9 2.8 1.3 5.4 3 5 6.6a6 6 0 0 1-6.4 5.3c-15.3-.7-25.5 3.8-20.8 22.2-9.4 0-15.4-2.7-16.5-9.7-1.4-8.6-5.7-12-13.6-12-6.8 0-9-4-9.2-9.7-.1-6.5 4.6-7.7 9.6-7.4 8.8.6 13.2-2.3 10.4-12.8ZM1045.4 303.2c9.9.8 15.2-2.3 14-12.1-1-7.6 3.7-11.6 10-12.1 8.4-.7 6.8 6.8 7 11.9.2 8.8 3.5 13.9 13 12.7 4.3-.5 7.2 1.7 10.2 4 2.4 1.9 5.5 3.2 4.8 6.9-.9 4-4.4 5.4-7.8 5.2-12-1-20 2-18.4 16.4.3 3-1.8 6.3-5.3 5.9-5.6-.7-11.9-3-12.3-9-.8-9.9-5.4-13.4-14.6-13.3-5.5.1-6.4-4.6-7.5-8.8-1.3-5.1 1.5-6.9 7-7.7ZM92 555.3c-5.2-10.6-1.7-15.5 8.7-15.5 9 0 12.1-3.5 9.6-12.7s5.7-10.7 11.5-11.7c6.7-1.2 7.2 5.2 7 9.6-.5 10.6 2 17.1 14.6 16.7 4.4-.2 10.6 3 10.7 9 .1 7.4-6.7 6.3-11.5 7-10.7 1.3-10.8 1.2-14.5 20.8-6.3 2.2-13.7-1.6-13.7-5.4-.2-15.7-11.9-14.7-22.3-17.8ZM872.2 273.3c3.8-4.7 8.5-5.1 14-6.2.7.9 1.3 1.8 1.8 2.9 6.2 16.7 6.3 16.5 21.2 24.5 3.4 1.8 9.2 3 8 8.5-1.1 6-6.7 5.7-11.4 5.6-8.2-.1-15.9-.2-14.6 11.7.4 4 1.3 9.8-4.6 10.2-5 .3-11.4-2.4-11.9-7.7-1-11.2-7.3-14-17-14.5-5.5-.2-6-5.3-6.5-9.6-.5-5 3-7.2 7.2-6.7 15.3 2 13.7-8.3 13.8-18.7ZM939 415.5c5.5-6.1.5-15.5 8.9-20.4 6.3 3 14 4.9 13.4 15-.4 7.2 4.9 8.3 10.4 8 7.1-.5 10.3 3.6 10.8 9.8.6 8-6 6.9-10.7 6.9-7.5 0-11.5 3.1-10.4 10.7 1.4 10.2-5.3 11.9-12.3 13.5a10.2 10.2 0 0 1-4.5-8c-1-10.5-3-19.1-17.3-17.6-4.3.4-10.4-3.8-10-9.6.3-6.2 6.4-5.2 11-5.8a64 64 0 0 0 10.6-2.5ZM415.2 216c-6.9-.7-12.4-3.8-12.3-9.7.1-7.3 7.5-6.7 12.7-7.5 6.8-1 12.5-2.6 12.3-11.4-.1-4 .2-9.4 6.1-9.2 5.2.2 10.6 2.3 10.2 9-.4 8.7 4.4 11.2 11.7 11 10.4 0 12.7 6.4 12.7 15-6.3 6.5-15.3-.2-21.6 4.5-2.6 4.3-.3 8.5 0 12.6.5 7-4.2 8.7-9.4 9.7-7 1.3-7.7-4.1-7.6-8.8.2-9.7-1.3-17.3-14.8-15.1ZM710.2 395.5c8.1 2.3 13.8 5.7 13.2 15-.4 7.3 5.4 7.8 10.8 7.5 7.4-.4 11.6 3.3 11.7 10.3.2 8-6.6 6.5-11.3 6.5-8 0-12.2 3-11.2 11.4 1.3 9.4-4.5 11.6-11.6 12.3a7 7 0 0 1-4-6.6c-.5-10.9-2.8-19.1-16.9-18.2-4.5.3-10.6-3.8-10.6-9.3 0-7.1 6.7-6.6 11.7-6.3 9.9.6 14.2-3.7 13.6-13.6-.3-3.4.2-6.9 4.6-9ZM491 435.8c-3.2 2-4.2 4.5-3.6 7 2.2 10.3-2.6 15-12.2 16.3-.8-.4-2-.6-2.2-1.2a66.4 66.4 0 0 0-22.9-25.6c-3-2-7.1-3.8-6.7-8.5a5.6 5.6 0 0 1 6.1-5.3c15 2 20.7-5.3 20.9-19.1 0-1 1.4-2 2.3-3.2 7.2.6 12.4 3.3 12.3 11.4-.1 7.2 4 10.2 10.3 10.1 8-.1 14.1 2.6 13.5 11.1-.7 9-9.1 4.9-14.3 6.2-.8.3-1.6.3-3.4.8ZM267.3 434.4c-11.7-.4-19.5 1.5-17.8 15.3 1.1 8.4-5.7 9-11.6 9.7-4.1-3.2-4.1-7.8-4.4-11.9-.6-9.2-4-14-14.3-13.4-6 .2-12.5-3.7-12.6-10.1 0-7 7.2-6 12-6 7.8 0 12-2.8 12.5-11 .2-4.4-.3-10.8 6.4-10.5 5.2.2 9.7 4 9.4 10.1-.5 10.3 5.4 12.1 13.9 11.5 4.4-.3 8.6.4 10.3 5.5 1.4 4.2 3 8.4-3.8 10.8ZM346.7 323.6c-3.7-3.5-7.7-3.6-11.5-3.6-7.1 0-8-5-8.3-10.4-.4-6.3 4.1-6.9 8.5-6.7 9 .5 13.8-2.6 12.3-12.5-1.2-8 4.8-11 10.6-11.5 8.2-1 6.6 6.5 6.3 11-.7 11 1.6 17.1 14.9 14.5 5.9-1.2 12.6 3.1 12.8 9.6.3 7.2-7 5.7-11.8 6-12.2.6-12.2.5-17.4 22-11.4-.3-14.3-8.4-16.4-18.4ZM1210.6 434.8c-8.9-.4-14.6 1.6-13.8 11.2.5 7.3-4.2 10.5-10.3 12.8-1-.7-2.8-1.4-2.8-2.2-1.1-13.5-4.2-24.6-21.6-24.2-3.2 0-9.5-3.8-7.9-9.8 1.4-5 6.7-4.9 10.8-4.5 9.8.7 15.8-1.9 14.7-13.2-.4-3.9.3-8.7 5.2-8.6 5.2 0 11.2 2.8 11.2 8.2.2 11 5.2 14.3 15 13.7 6.4-.4 7.6 4.4 8.4 9.2 1 6.2-3.5 6.8-9 7.4ZM270 185.2c3.7 8.8.7 12.5-7.4 11.9-9.8-.7-14.2 3.3-13 13.3 1.1 9.4-5.1 11.2-14 12-1.5-13.8-10.7-28.7 2.6-40 8.8-7.6 21.2-3.7 31.9 2.8ZM15.8 662.3c2.6-7.6 8.2-6.6 12.8-5.5 5.9 1.4 5.2 6.7 4.7 12-7 1.7-14.4 6-17.5-6.5ZM154.2 314c-3.2 8-8.5 5.7-13.5 5-2-5.7.4-8.8 4.7-10.2 3.8-1.3 7.4-.5 8.8 5.2Z" fill="#000"/><path d="M1307 698c-9.4-38.5-16.9-77.2-25.6-115.7-6.3-27.8-14-55-22.4-82.1-9.5-30.7-19.5-61.1-33-90.5-9.6-20.7-19.4-41.1-29.5-61.5a673 673 0 0 0-57.7-92.4 470.2 470.2 0 0 0-60.5-70 342.9 342.9 0 0 0-83-57.4c-3-1.5-6.6-2.3-9.2-4.3-17-12.7-33.7-6.3-44.8 12.9-30.8 53.2-78.6 77.6-137.2 85.4a19 19 0 0 1-6.4 0c-5.6-1.2-13.6-1.2-13-9.1.7-6.9 8-4.5 12.7-5.1 43.7-5.8 84-19.6 113.4-54.3 12.4-14.8 21.6-32.4 31.3-49.3 10.2-17.9 2.4-45-23.7-50.5-11.8-2.5-19.5-6.3-16.2-21.4 2-9.6-4.8-18.9-13.2-23-10.4-5-21.7-9.1-34.5-5.6-11.7 3.3-24.2 4.1-36.3 6-7.1 1-12.2 5.8-18 9.4-4.4 2.8-4.4 6.4-2.5 11 7 17.4 1 39.8-13.9 51-14.7 11.2-30.4 20.2-50 18.4-4.9-.5-8.9 1.2-12.8 4.4-14 11.8-30.4 14.5-48.7 14.3-38.8-.4-74.2-12.6-109.2-27.3-7.8-3.3-13.6-12.5-26.5-7.5 27 34.9 67 48.4 105.6 67.6a26 26 0 0 1-24.8 3c-51.4-17.5-91.9-47.6-117.2-97-8.4-16.5-14.9-33-18.1-51-2.3-12.6-5.7-13.8-17.6-8.4-13.2 6-24.9 14.3-35.7 23.6-12.5 10.8-20 24-18.1 41.5 1 8.4 0 17 .2 25.6a47.3 47.3 0 0 0 35.2 46 37 37 0 0 1 18.4 10.8c-14.6 6.6-40.5-1.2-53-15.9C377.8 90 391.1 21 437.3-3.2l5-2.8a39.9 39.9 0 0 0-54 19A80.5 80.5 0 0 1 349 56c-15.3 7.7-19.8 28.7-7.8 39.4 23.4 20.8 43 45.8 69.9 62.6 15.4 9.6 30.1 21 46.7 28 15.8 6.5 33.6 8.4 50.6 11.8 5 1 10.2.8 13.3 5.6.3 3.4-1.7 5.6-4.4 5.5-32.1-1.5-63.4-4.4-92-23a437.5 437.5 0 0 1-69-54.1c-11-11-23.1-6.1-34 0-39 22-72.5 50.9-102.9 83.7a615.2 615.2 0 0 0-87.4 123 870.6 870.6 0 0 0-50.5 108A1198.4 1198.4 0 0 0 47 548.6a558.2 558.2 0 0 0-20.6 102.1c-1.3 15.2-7.3 29.7-7.9 46.2-5.5 1-10.8 1-17.1 1 4.6-32.9 9.9-66 16.2-98.8 3.7-19.1 9.2-37.9 13.7-56.8 5.6-23.6 13.4-46.5 21.2-69.4a831.5 831.5 0 0 1 84-179c16.9-27 36-52.4 57-76 36.7-41.1 76.3-78 126-103 6.4-3.3 9.3-7 4.1-15.1C314.4 85 317.8 54 339 44.4c16.6-7.6 26.6-22 34.3-37.8a56.1 56.1 0 0 1 51.4-33.3c19.6-.5 39.2-.7 58.8-1 9 0 14.1 1.6 10.1 12.7C491.1-8 492-.5 499 4.5a8.7 8.7 0 0 1 4 6.1c4.4 31 27.1 45.6 52.1 57.7 19.8 9.6 39.6 20.3 60.5 26.3 21.8 6.3 44.5 12.1 67.7 10.5a46 46 0 0 0 26.9-10.8c6.3-5.4 14.2-4.9 21.6-6.4 17-3.4 32.5-9.8 45-22 11.2-11.2 12-22 3.3-35.3-7.8-12-3.3-34 8.5-40.9 3.5-2 8.7-2.8 9.8 1.6 3 11.4 9.8 6.6 15.9 4.8a159 159 0 0 1 55.3-8.2A58 58 0 0 1 906 3.5c7.8 6.9 9.7 15.6 9.8 25.3 0 7.6 2.4 11.9 11 13.9 24.7 5.7 33.8 17.7 34.2 43.1 0 5.3 1.4 8.3 6.3 11 34.6 18.7 70.4 35.4 101.6 60 29.3 23 53 51.1 75.5 80.4A719.4 719.4 0 0 1 1245 414c18.2 46.5 33.7 94 46.4 142.4 12 46 16 93.5 27.1 140.6-3.2.9-6.7.9-11.4.9Z" fill="#000"/><path d="M1122.7 698c-9.3-36.4-12.3-73.8-22.2-110-7.8-28.4-14-57.4-24.2-85-7.2-19.4-14-39-23.5-57.7-12.7-25-23.3-51.2-34.7-77-1.4-3-2.8-6.3 1.4-8.8 4.4-2.7 7.6-.6 9.9 2.7 5 7.3 10.2 14.6 14.2 22.5 16 31.2 32 62.7 43 96 7.5 22.8 15.6 45.5 21.2 69 3.9 16.5 8.2 33 12 49.4 7 32.2 11.9 65 14.5 97.9-3.4 1-7 1-11.6 1ZM219 698a451 451 0 0 1 4.4-86.5c3.7-29 4.4-58.3 11-87 3.9-17 9-33.6 13-50.4 7.4-32.1 18.1-63.5 34.6-92.4 2.4-4 4.8-8 7.4-12 2.3-3.3 4.1-8.7 9.5-6.2 5.7 2.8 3.2 8.2 1.8 12.5a320 320 0 0 1-10 26c-18 40-33 81.2-40.6 124-7.3 42-15.8 84.3-14 127.6.7 14-1.6 28-2.6 43.2-4.5 1.2-9 1.2-14.4 1.2ZM629.3 367.8c-1.5-9.8 2.8-16.7 6.6-23.8 11.4-21.4 8.4-30-11.6-42.7-17.7-11.3-35.3-23-44.2-44-5.8-14-4.4-28.3-6.2-42.4-1-7.2 2.4-16 12.3-16.7 9.4-.6 20.9-3.5 25.6 8.4 3.4 8.6 2.1 17-6.2 24-15 12.8-13.9 19.7 3.7 29.1 13.8 7.4 28.5 13.3 40.5 23.9 23.8 21 26 56 4.5 79.2-6.8 7.3-7.8 15.3-6 24.6.9 4.3 2.7 10.2-3.1 12.3-5.3 2-6.5-4-9.2-7-6.3-6.8-7.1-15-6.7-24.9ZM804.3 405.5c1.2 3.4 4.6 5.2 3 8.6-20.6.3-34.9-24.4-26-44 5-11.2 13.4-20.6 15.8-33.3 3-16.5 0-25.2-15-32.3-27-12.9-39.8-33-35.3-63.4 1.4-9.3 1.4-17.6-11.8-20.7-9-2.2-11.2-12.2-9.2-21 2-8.5 8.8-13.9 17-12.5 7.6 1.2 17.4 3.4 16.7 15.3-.2 3-.4 6.1 2 8.4 11 11 8.6 24.1 6 37.1-2.2 11.1 0 20.3 9.8 26.8 6.4 4.2 12.5 8.9 19.2 12.6a49 49 0 0 1 13 78.4c-14.3 16-15.7 25.7-5.2 40ZM851 92c16.8-7 17.8-16.8 17.5-33.6 0-5-2.4-10 .8-14.8 11.1 2.3 17.6 16.3 14 29.9a48 48 0 0 1-48.7 35.4 41.9 41.9 0 0 0-31.2 13c-7.7 7-16.5 10.5-27 4.4 18.8-9.4 31.1-30.8 55.7-28.2 6.8.7 12-3.5 18.8-6Z" fill="#000"/></g><g transform="translate(266 207)"><path d="M312 312.3c15-22 35.7-36 57-49.4 28.5-18 59-31.6 90.8-42.7 22.3-7.8 45.7-12.8 67.7-21.4 26.8-10.3 54.2-20.3 73.6-43.3 18-21.2 17-33-3.6-48.8-.3-5.2 3-8 7.3-9.2 45-12.8 90.6-23.5 137.8-21.2 45.5 2.2 80.2 23.4 100.6 64.4 11.3 22.7 19.4 47.1 18 73.3a25.7 25.7 0 0 0 10.8 24c32.7 25.8 43 83.8 12.5 111.8-15.5 14.3 8.6 20.5-20.7 64.8-8.6 13-9.3 29-18.2 42.6-1.3-45.3 6-91.7-16.7-136a158.7 158.7 0 0 1-78.5 56.2 248 248 0 0 1-130.4 9.2c-30-5.6-60.7-7.9-91.2-9.7a121.5 121.5 0 0 0-95.2 33.7 81.7 81.7 0 0 0-25.2 56.7c-2 31-4.4 62-2 93 .5 7.9-.8 16.5-10.5 17.9-7.8 1-14-3-19-9.8-8.6-12-7.2-27.4-15.1-40a84.1 84.1 0 0 0-57.2-40.4c-3.6-.7-6.5 1-9.7 2.3-10.8 4.6-14.8 1.2-16.7-10.7-4.3-28.3-3.7-56.7.5-84.8 4.5-29.6 15-57.2 33.4-82.5Z" fill="#000"/></g><g transform="translate(791 871)"><path d="M188.2 86.4c-26.7 11.3-52.6 12.5-78-.5-6.5-3.2-12-2.4-18.7.7-3-9.6-3.7-18 3-25.5 2-2.1 3.9-5 7.4-3.7 3.1 1 5 4 4.2 7-2 7 3.5 7.8 7.4 9.7 26.8 13.6 52.6 8.7 78.1-4.1 4-2 4-5 3.7-8.6-.3-3.7.8-7 5.3-7.2 4.5-.2 7.6 2.4 7.9 6.7.5 7.1 0 14.3 0 22.8a22 22 0 0 0-20.3 2.7Z" fill="#000"/></g><g transform="translate(653 805)"></g><g transform="translate(901 668)"><path d="M76.7 82.4a205.6 205.6 0 0 0 3.3 80.2c4.7 22.4-15.2 54.4-46.8 49.7-11-1.6-17.5-8.1-21.3-17.8-1.7-4.3-1.5-8.8 3.3-11 4-1.7 7.4-.2 9.4 4 4.8 10.1 13.4 9.4 21.9 6.9 9.6-2.9 16.4-9.6 17.1-19.9.7-10.1.2-20.3-1.6-30.4a159.3 159.3 0 0 1 8.8-89.5c2.2-5.7 5.4-10.9 11.9-8.3 7.5 3 1.8 8.8.7 13.1-1.7 7.4-4.2 14.7-6.7 23Z" fill="#000"/></g><g transform="translate(610 680)"><path d="M419.6 111c-4.2-9.5-9.9-15.2-19.8-15.7-6-.3-7-5.1-8.9-9.8 2-1.5 3.5-3.7 5.3-3.8 21.1-1.7 42.4-1.8 63.5-.1 6 .4 9.3 8 3.2 10.4-10 4-12.5 13.2-18.5 19.8-8.2 9-15.2 9.1-24.8-.8ZM228.6 81.4c12.2.7 23.1 1 34 2 3.6.3 8 1.8 8 6.7 0 5.6-4.6 5.2-8.3 5.1-6.3 0-9.7 2.7-12.5 8.6-3.4 7.4-6.9 15.3-18 14.8-10.5-.5-15.1-7.2-18.1-15.2-2.2-5.7-5-8.4-11-8.2-3.4.1-7.1-.2-7.5-4.9-.4-5 3-6 7-7.2a67.9 67.9 0 0 1 26.4-1.7Z" fill="#000"/></g><g transform="translate(610 680)"></g><g transform="translate(774 657)"><path d="M57.5 41.8C51.3 41.3 46 41 41 41c-5.7-.2-8.5-3.4-9-8.8-.5-5.3 3-7 7.5-8.5 8.6-3 17.1-.5 25.2.7 15.4 2.1 31.5-.6 46.4 6.3 5 2.3 8.3 4.7 6.4 10.3-1.8 5.2-6.1 5.2-10.6 4.1-16-3.7-32.4.9-49.4-3.3ZM251.8 32c17.2.9 33.1-5 49.3-1.2 4 1 9 .7 8.8 7 0 6.2-4.7 7.4-9.5 8-19 2.2-38 4-56.9 6.4-5.7.7-11 .1-12.6-5.6-1.7-5.7 4-7.8 8-10 3.5-2.1 7.8-3.1 12.9-4.7Z" fill="#000"/></g><g transform="translate(0 559)"></g></g></svg> | |
+1 −0 viewer/assets/avatars/ivy.svg 新增 查看文件
| @@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1744 1744" fill="none" shape-rendering="auto"><metadata xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"><rdf:RDF><rdf:Description><dc:title>Notionists</dc:title><dc:creator>Zoish</dc:creator><dc:source xsi:type="dcterms:URI">https://heyzoish.gumroad.com/l/notionists</dc:source><dcterms:license xsi:type="dcterms:URI">https://creativecommons.org/publicdomain/zero/1.0/</dcterms:license><dc:rights>Remix of „Notionists” (https://heyzoish.gumroad.com/l/notionists) by „Zoish”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)</dc:rights></rdf:Description></rdf:RDF></metadata><mask id="viewboxMask"><rect width="1744" height="1744" rx="0" ry="0" x="0" y="0" fill="#fff" /></mask><g mask="url(#viewboxMask)"><g transform="translate(531 487)"><path d="M554 727.7c-99.2 297-363.8 388.6-503.7 19.8-19.3-50.7 31-69.5 66.2-91.9 24.1-15.3 36.8-28.5 35.3-42.2-7-64.4-36.9-243.8-36.9-243.8l-3-5.8s.7-1.6-2.2 1.2c-3 3-9.9 34.2-37 34.2-24.5 0-49.2-10.9-61-86.3C7.2 285.6 9.6 214 40 201c12.5-5.3 24-7.2 35.2-.8 11.3 6.4-13-22 112-126C268.4 6.4 396.7-3.5 448.5 8 500.3 19.5 552 44.8 574.9 98.5c27.8 65-25.9 114.3-14 262.5-2.2 53.6.8 171.2-146.6 210.6-28 7.5-19.3 48.4 22.7 58.4 67 21 117 72.3 117 97.9" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="m554 266.2.1-1.4c4.1-36.4 8.2-71.7 27.1-103.4 6.5 4.4 5.7 10 3.7 15.2-19.9 51.2-18 104.4-16.2 157.6l.4 14c2.1 66.4-14.5 126.8-58.7 177.5-15.4 17.6-35.8 29.8-56.5 40.3-21.4 11-25.9 20.1-19.2 43.6l.8 2.6c1.4 3.9 2.8 7.9-1 11.8-4.5 4.6-9.5 3.3-14.8 1.8l-.6-.1a406.4 406.4 0 0 1-137-68.3c-6-4.4-10.8-10.3-15.5-16.1l-.3-.4c-2.5-3-3-7.8.5-10.4 3.3-2.5 5.8-.5 8.7 1.8l1 .9a145.5 145.5 0 0 0 76.3 31.7c13.4 1.4 26.6.9 40 .4 7.4-.3 14.8-.6 22.3-.5 10.2 0 18.7-4.7 26.7-9.2l2.8-1.6c27.8-15.5 54.3-32.8 72.2-60.7 16.1-25 25.9-52.2 31.6-80.9 7.2-36.1 6.6-72.7 6-109.8-.3-12-.5-24.2-.5-36.4ZM50.6 190.8c21.9-1.7 34 11.2 44.3 26.3a140.4 140.4 0 0 1 22.4 61.5c.5 3.7 1 7.6-1.2 11.3-4.5.6-4.9-3-5-5.6-.5-20.7-9.7-38.7-18.9-56.1-6.6-12.5-16.2-24.6-31.4-27.6-17.2-3.5-33 12-40.8 32.2-14.5 37.6-12 74.6 1.4 111 5.8 15.9 13.1 32.1 27.8 43.2 14.8 11.3 32.7 9.3 43.6-5.7l2-2.5c2-2.6 4-5.1 5-8 2.1-5.8 5.4-11.2 11.3-10.4 6.8 1 8 8.3 8.7 14a3661 3661 0 0 0 22 156.7l5.9 38.8c2.6 17.1 5.6 41.7 3.6 52.1a28 28 0 0 0-.3 2.2c-.4 2.8-.6 5-4.2 5.5-4.9.8-7-2-7.7-6.4-2.3-17-3-23.6-4-49.6-.9-25.2-5.6-50-10.4-74.9l-5-27c-5.2-30.8-10.3-62-10.8-97l-2 3c-7.6 11.3-13.7 20.5-24.5 24a40.5 40.5 0 0 1-46.1-12.5 127.8 127.8 0 0 1-28.8-55.8c-8.4-34-9.9-67.1.9-100.6 5.2-16.1 23.7-44.7 42.2-42Zm34.6 127.5c4.4 3.2 8.4 6 12-5.4-1.1-42.2-14.7-69.2-35.8-70.3 11.2 14.6 22 28.8 23 48.5a32.3 32.3 0 0 1-10.7-8.8c-2-2.2-4-4.4-6.5-6l-3-2.4c-4.8-3.6-9.7-7.4-17.8-4.5 3.8 5.8 9 10 14.3 14 6 4.7 12 9.3 15.6 16.5-10.6 7.7-15.2 17.7-9.7 29.9 4.8 10.5 11.9 19.2 25.9 19.8-.6-6.3-4.7-10.9-8.8-15.4-5-5.4-9.7-10.6-7.5-18.6 3.2-1.5 6.2.7 9 2.7Z" fill="#000"/></g><g transform="translate(178 1057)"><path d="m1351 688-1370-3.3s11.4-97 44.4-189.1c41.2-115.2 107.2-232 125-246.1 20.9-16.8-11.6-18.2 3.5-41.2 33.5-51.1 147-97.5 179.9-114.1 58.7-29.8 164.9-47.8 164.9-47.8l27.2 53.5s63.6 21.9 138.7 24.4C705 125.6 799 94.8 799 94.8L787.9 37s169.6 34.8 253.5 85.6c48.3 29.3 108.6 75 110 101.2 2.2 39.8 1.8 36.7 24.1 51.9 53.5 36.2 98.8 122 121.3 191.2C1314.4 521.1 1351 688 1351 688Z" fill="#fff"/><path d="m842 687-269 1s19-182.5-1.4-325c-6.2-44.2-32.6-224.4-32.6-224.4s73.7 24.7 131.4 24.7C733 163.3 798 131 798 131s24.3 69 29 182.4l15 373.6Z" fill="#000"/><path fill-rule="evenodd" clip-rule="evenodd" d="M301.5 563.4c20.5 40.6 41 81.3 56 124.6 6.6 0 12 0 17.7-1l-4.3-11a672.5 672.5 0 0 0-19.6-47.8 5876 5876 0 0 0-34.2-70.7c-9.4-19.2-18.8-38.3-28-57.5-3.8-8-6-16.9-1.3-25.8 6.7-12.8 12.6-26 18.4-39.2l5.2-11.8c11-24.4 24.5-47.6 38-70.9 10.6-18.1 21.2-36.3 30.6-55 8-16.3 5.6-24.5-12-30a48.4 48.4 0 0 0-10.5-2.3c-8.6-.7-17.2-1.2-25.9-1.7-26.4-1.5-52.9-3-78.6-10.8-8-2.4-16.3-3.7-24.6-5-8-1.3-16-2.6-23.8-4.9l-4.6-1.3c-14.8-4.2-30-8.6-41.4-20.3l1.7-2.4c1-1.3 1.8-2.5 2.8-3.5 25.5-28.7 59-47 92.3-65.1l20-11a963.1 963.1 0 0 1 62.6-31.4c7.9-3.7 15.8-7.4 23.7-11.3A394 394 0 0 1 423 71.5c10.6-3.1 21.4-5.6 32.2-8 7.8-1.9 15.6-3.7 23.3-5.7 20.1-5.3 23.8-4 29 15.7l9.1 34.2a2051 2051 0 0 1 26.8 106.6c8.7 40.7 14.4 82 17.2 123.5a1480 1480 0 0 0 6.8 70.7c3.7 32.2 7.3 64.3 8 96.7.5 20.8-.1 41.6-.8 62.4l-.8 29c-.3 13.5-1.8 26.9-3.3 40.2-2 17-4 34-3.3 51.2 6.7 0 12.2 0 17.8-1.2l.6-16.2c.2-10.2.5-20 1.6-29.6 5.7-51 4.8-102 3.7-153-.7-33.6-3.6-67-8.4-100.2a605.8 605.8 0 0 1-4.6-52.8c-1.3-23-2.6-46.1-7.3-69a1627 1627 0 0 1-6.7-34.2 906 906 0 0 0-13-61.8c-.2-1-.6-2-1-3-1.2-3-2.5-6 .6-8.9 4-3.8 9.1-2.7 14-1.4A373 373 0 0 0 690 167.3c31.6-2.4 62.8-5.8 91.8-19.5 8.7-4 15.5-1.5 17.4 9 1 5.6 1.7 11.2 2.4 16.9 1 7.9 2.1 15.8 3.8 23.4 7.8 34.8 10 70 12 105.2 1 16.1 2 32.2 3.5 48.3 1.1 12 2 24.2 2.8 36.3 1 14.6 2 29.1 3.6 43.7 6.3 60.7 4.7 121.5 2.7 182.3l-.7 20c-.7 18.4-1.4 36.7-1.4 55 5.8 0 10.4 0 15.4-1l.8-5.3c1-6.5 2-12.5 2-18.4l.3-44.7c.1-28 .3-56.2 1.6-84.2 1.7-37 .6-74-3.2-111-2.7-26.2-4.5-52.4-6.3-78.7-1.7-24.1-3.4-48.3-5.7-72.4-4.5-46-10.5-92-20.5-137.3a2499.2 2499.2 0 0 1-13.8-68.7c-.5-2.4-.4-5-.4-7.4v-4c-.3-6.4 2.7-8.5 9.1-7.2a642.2 642.2 0 0 1 79.2 18.8c21 6.9 41.7 15 62.3 23 7.3 3 14.7 5.8 22 8.6a446.7 446.7 0 0 1 141 84.8c13 11.7 24.1 25.1 31.8 40.6 4.5 9.3-.3 19.2-9.6 21l-9.2 1.9c-22.7 4.4-45.4 9-67.6 15.7a251.6 251.6 0 0 0-92.9 50.8c-7.6 6.6-8.7 14.7-4.5 23.2 4 8 8.4 16 13.2 23.6 5.8 9.2 11.7 18.4 17.7 27.5a705.7 705.7 0 0 1 42 70c3.2 6.5 4 13-.3 18-9.4 10.8-16.8 22.9-24.3 35a360.3 360.3 0 0 1-16.9 25.7 486 486 0 0 0-53.6 90.3c-3.6 7.9-6.6 16-9.7 24.2-4.8 13-9.7 25.8-16.5 37.7 7.5 0 14 0 20.6-1 10.7-33 23.5-64.2 41.5-93 23-37.1 47.5-73.3 72.3-109.3 6.3-9 9.7-18.8 3.8-31a589 589 0 0 0-27-48.5l-.4-.7c-13.9-23-28.7-45.6-43.7-68-4.7-7.2-2.2-12 3-16.8a158.1 158.1 0 0 1 41.7-26.7 355.4 355.4 0 0 1 102.9-29.7c12.8-1.7 22.3.7 32 7.6 34.6 24.3 64.6 51 82.6 90.3l8.7 18.7c12.8 27.6 25.6 55.2 35.5 84a1107 1107 0 0 1 41 147.4c5.8 25.6 11.6 51.2 18.2 76.7 4.9 0 8.6 0 12-1-5.3-21.6-9-43.3-12.8-65-4.7-27-9.4-54-17-80.4l-1.4-5.3c-6.6-23.2-13.2-46.4-21.1-69a882 882 0 0 0-52-121.3c-18.2-34.7-45.8-61.4-77.7-84.9-1.4-1-3.2-1.9-5-2.8-6-3.1-12.7-6.5-9.7-16.8 5.2-17.6 1.8-33.7-13.7-46.3a86.8 86.8 0 0 1-9.6-9.7l-3-3.3c-41.4-45.3-95.8-72.5-151.8-97-36.4-15.9-74.5-28.1-112.6-40-23.7-7.3-48-13.2-73-15-12.7-1-18 4.8-16.5 16.8.4 3 .8 6 1 9 .8 6.7 1.5 13.5 3.1 20 2.8 11.2-3.2 17.2-12 21.2-22 9.8-45.4 17.3-69.4 18.8-52.8 3.3-105.4.7-156-16.9-8.5-3-13.3-7.4-16.9-14.7-2.5-5-4.7-10.2-6.8-15.3a224 224 0 0 0-11-23c-5.4-9.6-11.8-11.8-21.6-8.6-6.4 2-12.8 3.7-19.3 5C434.6 50.4 399.3 59 366.5 75c-46 22.4-91.7 45.1-136 70.3-30.3 17.2-60 34.8-82.7 61.3-6.2 7.3-7.5 14.5-2.5 22.2 4.2 6.5 3.9 11.5-2 17a139.2 139.2 0 0 0-22.8 30c-1.8 2.8-3.5 5.7-5.4 8.5-21 32-39.7 65.2-56 99.5A873.4 873.4 0 0 0 26.7 463l-1 2.8c-7.9 22-15.7 43.9-21.3 66.5a925 925 0 0 1-5.6 21.5 563.4 563.4 0 0 0-8.8 35.3c-6.6 32.9-12.2 66-17 98.9 6.7 0 12.1 0 18-1l8-46c2-12.3 4-24.5 6.2-36.6 11-63 32.6-123 57-182a838.3 838.3 0 0 1 91-160.9c4-5.6 9-7.2 15.7-7.8 16.4-1.5 31.6 2.9 46.8 7.2 7.8 2.3 15.6 4.5 23.5 6l15.7 2.8c27 5 54 10 81.8 11.4 2.9.2 5.8.2 8.7.2 8.1 0 16.5 0 25.3 3l-8.4 13.6-23.8 38.6a729.7 729.7 0 0 0-50 95.6 948.5 948.5 0 0 1-18.2 39.1c-3.8 7.6-4.9 14.6-1.7 22l1.3 3c6 14 11.9 27.8 18.6 41.4l13 25.8Zm476.8-452c4.8-2.6 10.3-5.4 11.2 3.7 1.8 10.6-5.4 14.2-11.5 17.3l-1.8 1c-17.5 9.2-37 14-56.8 16.2a437 437 0 0 1-145.1-5.8c-9.6-2.2-18.8-5.6-27.4-10-5.6-2.7-8.1-6.8-6.8-12.5 1.5-6 5.5-5 9.5-4l2.4.6 19.4 3.8c16.5 3.3 33.1 6.6 49.9 9a293 293 0 0 0 103.8-2.9l1-.1c18-3.8 35.8-7.5 52.2-16.2Z" fill="#000"/><path d="M199 688c3-35 7-69.8 11.4-104.7 3.6-29.7 4-60 17.4-88 1-2.4 2.3-4.6 3.8-6.7 2.3-3.1 5-6.8 9.7-5.2 5.3 1.7 3.6 6.4 2.7 9.9-8 32.1-13.3 64.8-17.7 97.5-4.1 31.5-6.2 63.3-9.4 96-5.8 1.2-11.2 1.2-18 1.2ZM1149.9 688c-9.8-36.3-12.8-73.7-23.3-109.7-6.2-21-9.8-42.8-17.9-63.4-1.6-4.2-.5-9 4-11.2 4.4-2.3 7.4 1.3 9.9 4.3a55.4 55.4 0 0 1 9.9 22.1c11.5 43.4 20.8 87.4 27.6 131.7 1.2 8 1.2 16 1.9 25.2-3.5 1-7.3 1-12.1 1Z" fill="#000"/><path fill-rule="evenodd" clip-rule="evenodd" d="M797.4 536.7c2.5 2.7 5 5.4 6.9 8.6 2 4 2.8 10-1 13.3-2.5 1-5 0-7.2-1l-.7-.3a96 96 0 0 1-12.4-7 586 586 0 0 1-52.4-40.1 1501.4 1501.4 0 0 1-53-46.5c-10.3-9.3-20.6-18.7-30.8-28.2a281.8 281.8 0 0 1-14.7-15 30.6 30.6 0 0 1-6-8.4c-6.4-17.8 7.6-21.9 22.8-24.4 10.9-1.8 22-3 33-4.2h.8a57.7 57.7 0 0 0 13.7-2.8c1-.4 1-.5 1.3-1v-.3a68.3 68.3 0 0 0-9.4-18 610 610 0 0 0-44.6-55.6 7452 7452 0 0 0-19.3-22l-2-2.3c-4.7-5.2-9.4-10.4-6.5-17.8 1.4-4.6 5.8-2.4 8.7-.6a163 163 0 0 1 11.2 7.2h.1a971.7 971.7 0 0 1 37.6 27.2 589.2 589.2 0 0 1 74.4 64 592.2 592.2 0 0 1 24.6 21.4c2.9 2.7 5.7 5.3 7.7 8.6 3.5 5.7 2 13-4 16.5a71.5 71.5 0 0 1-24.3 6.5c-8.8 1.2-17.8 2-26.7 2.7l-8.5.7c-8.3.7-16.9 1.5-22.6 3.5-.8.3-1.6.7-2.3 1.2 1.4 2.6 2.1 3.6 3.4 5.3l2.5 3.4c11 14.4 23.7 27.5 36.3 40.6A7081.6 7081.6 0 0 1 751 489c10.9 11 21.8 22 32.6 33.2l1.5 1.6 11 11.4 1.4 1.4Zm-116.6-85.3 8 7.2c15.7 14.2 31.7 28.2 48 41.8a575.5 575.5 0 0 0 44.2 34.1l-24-24.3c-14.5-14.7-29-29.4-43.3-44.5-6.8-7.3-13.3-15-19.4-22.9-.6-1-1.3-1.8-2-2.7-2.2-3.2-4.6-6.5-6-10.1-2.8-6.7-2.8-17.4 5.7-20.2a64.4 64.4 0 0 1 16.8-2.6l15.8-1.3 14-1.1 2-.2c11-1 27-2.6 34.1-7.2-5-5.7-14-13.4-22.3-20.6l-10.6-9.3a3562 3562 0 0 1-27.4-24.7c-8.3-5.8-16.5-11.8-24.6-18a1554.7 1554.7 0 0 0-44-32.8c9.5 10.9 19 21.9 28.1 33.2l3.9 5c11 14 26.3 33.5 27.3 49.1.2 5.8-1.4 12.3-7.3 15.1-4.8 1.9-10 2.4-15 2.9l-5.3.6a488 488 0 0 0-32.7 4.5c-4 .7-7.2 1.4-11.2 3.7 7 8.7 30.7 30.3 47.2 45.3Z" fill="#fff"/></g><g transform="translate(266 207)"><path d="M487.3 374c4 2.2 10 3.6 6.7 9-3 4.7-10.5.3-13.3-1.6-5.6-3.6-15.6-8.6-30.5-17.5-4.5-2.7-16.8 5 27.1 27.1 4.1 2.1 19.1 18.1-11.7 7-31-11-39-15.9-41.3-12.7-5.8 8.2 2.2 13.4 28.8 34 4 3 8.5 5.6 12.7 8.4 3.4 2.3 6.5 5.4 3.6 9.4-3.1 4.5-6.8 1.1-10-.8-33-19.3-43-23.2-49.2-24.2-4.4-.6-45.5-7.4 30.4 37 5.6 3.2 14.6 5 10.8 16.1-16.8-2.7-30.8-11.5-45.1-19.3-9.3-5-17.8-11.5-26.7-17.2-3.3-2.1 6 3.6 1.2 8.3-3.5 3.5 6.4 13.6 15.6 19.3 11.5 7 23.7 13.2 35.6 19.8 3.8 2 8.7 4.3 6.7 9.3-2.4 6-7.3 2.4-10.8.6-14-7.2-27.9-14.4-41.3-22.3-7.7-4.5-1.6 34.9 37.3 41.2a5.8 5.8 0 0 1 4.6 6.8c-.9 4.3-4.7 4.5-8.2 3.5-5.7-1.6-11.5-2.9-16.6-6.3-8.6-5.8-14.3-2.3-18 6.5-4.4 10.8-2.7 21.7-.7 32.6 1 5.4 2.8 10.7-.9 15.6-3.9 1-5-1.8-5.7-4-10.3-33.1-32.2-58-55.8-82-17.4-18-18.4-40.8-18.4-64.3 0-22.3 8.3-42.5 13.4-63.4 6.8-27.9 15.5-55 16.3-84.4a76.4 76.4 0 0 1 22.6-51.5c33.7-34.4 70.1-65.8 115.3-83.8 33-13.2 67.5-22.3 103.7-23.8 44-1.9 86.4 4.4 126.2 22.4 25.4 11.5 48.7 27.1 65 51 10.6 15.4 28.4 21 43.6 29.7C851.8 233 889 261.3 915 302c17.3 27.2 21.4 56.2 6.8 85.6-11.6 23.2-34.2 27.1-57.4 28.4-50.3 3-96.6-10-139-36.6-14.9-9.2-29.3-3.2-44.1-2.6-34.4 1.3-69.2 7.3-103.1.4-93.3-19.2-100.8-9-91-3.3Z" fill="#000"/></g><g transform="translate(791 871)"><path d="M99.3 109c-12.6 6.6-16.2-1.7-20-10.4-3.3-7.8-.8-18.1-13.5-21.8-6-1.7-.7-10.5 2.2-15.4 2.4-4.2 6.9-6.4 10.6-2.4 15.8 17.4 37.8 16.7 58 20C160 82.8 182 73.9 204 67.6c4.4-1.2 9.2-5.2 13-1 4 4.6 4.9 11.2 2 16.7a51.8 51.8 0 0 1-19.5 22.8c-4 2.4-8 4-11.6.1-6.4-6.7-11.1-5.7-18 .4-12 10.6-19.3 9.1-31.1-3.6-4-1.1-4.8 2.7-7 4.4-7.6 5.7-15.7 7.9-22.5-.3-4.8-5.7-6.7-2.7-9.9 1.9Z" fill="#000"/></g><g transform="translate(653 805)"></g><g transform="translate(901 668)"><path d="M74.2 188c5.5-3.8 9.7-9.4 11.8-15.9a23 23 0 0 0-4.4-22.8c-5.3-6-12.4-3.7-19-1.7-4.2 1.3-9.5 5.3-12.2-1.2-2.4-5.6 1.8-10 6-12.7a28 28 0 0 1 26.8-2.8c11.9 4.7 16.4 14.5 18.1 25.8 6.7 44.3-31 54.4-60.7 52.5-2.1-.2-4.2-1-6-2.2-3.3-2.2-8.6-3.8-7.1-9.1 1.6-6 6.7-5 11.6-4 12 2.3 23.5.2 35-5.8Z" fill="#000"/></g><g transform="translate(610 680)"><path d="M409.2 75.7c13.1.3 25.4 1 37.7 2.5 3 .3 4.9 3.3 5 6.6 0 3.4-1.8 5.7-4.8 7-11.1 4.9-22 8.3-33.7.2-6.5-4.4-8.9-8.6-4.2-16.3ZM254.7 78.4c6.2 3.3 5.2 7 2.1 10.8-6.5 8-28.2 10-36.4 3.5-4.7-3.8-7.3-8.6-4.4-14.4 3-6 8.2-5 13-2.5 8 4 16.4 3 25.7 2.6Z" fill="#000"/></g><g transform="translate(610 680)"></g><g transform="translate(774 657)"><path d="M131.2 43.2c-5.6 16.8-6.6 15.4-23 11.6-26.2-6-52.7-19.2-80.3-4.3-2 1.1-5 1-7.6.8-3.6-.2-8.2 1.3-10.1-3.3-2.1-5 1.5-8.3 5.3-10.3C35.2 27.7 53 13.4 77.9 16c12.8 1.3 26-2.8 39.3-2.4 18.8.7 22.4 5.7 16 23.9l-2 5.8ZM298.7 21.8c9.6 6.6 12.5 16.8 18.3 25a7 7 0 0 1-.6 9.4c-2.4 2.7-5.4 2.8-8.1 1.2-19.1-11-38.9-6.4-58-1.2-10.2 2.7-14.6-.8-17.2-9.2-1.7-5.7-2.9-11.5-3.6-17.4-1.3-9.8 6.9-11.9 13-12.2 18.5-.9 37.4-4.5 56.2 4.4Z" fill="#000"/></g><g transform="translate(0 559)"></g></g></svg> | |
+1 −0 viewer/assets/avatars/jade.svg 新增 查看文件
| @@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1744 1744" fill="none" shape-rendering="auto"><metadata xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"><rdf:RDF><rdf:Description><dc:title>Notionists</dc:title><dc:creator>Zoish</dc:creator><dc:source xsi:type="dcterms:URI">https://heyzoish.gumroad.com/l/notionists</dc:source><dcterms:license xsi:type="dcterms:URI">https://creativecommons.org/publicdomain/zero/1.0/</dcterms:license><dc:rights>Remix of „Notionists” (https://heyzoish.gumroad.com/l/notionists) by „Zoish”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)</dc:rights></rdf:Description></rdf:RDF></metadata><mask id="viewboxMask"><rect width="1744" height="1744" rx="0" ry="0" x="0" y="0" fill="#fff" /></mask><g mask="url(#viewboxMask)"><g transform="translate(531 487)"><path d="M554 727.7c-99.2 297-363.8 388.6-503.7 19.8-19.3-50.7 31-69.5 66.2-91.9 24.1-15.3 36.8-28.5 35.3-42.2-7-64.4-36.9-243.8-36.9-243.8l-3-5.8s.7-1.6-2.2 1.2c-3 3-9.9 34.2-37 34.2-24.5 0-49.2-10.9-61-86.3C7.2 285.6 9.6 214 40 201c12.5-5.3 24-7.2 35.2-.8 11.3 6.4-13-22 112-126C268.4 6.4 396.7-3.5 448.5 8 500.3 19.5 552 44.8 574.9 98.5c27.8 65-25.9 114.3-14 262.5-2.2 53.6.8 171.2-146.6 210.6-28 7.5-19.3 48.4 22.7 58.4 67 21 117 72.3 117 97.9" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="m554 266.2.1-1.4c4.1-36.4 8.2-71.7 27.1-103.4 6.5 4.4 5.7 10 3.7 15.2-19.9 51.2-18 104.4-16.2 157.6l.4 14c2.1 66.4-14.5 126.8-58.7 177.5-15.4 17.6-35.8 29.8-56.5 40.3-21.4 11-25.9 20.1-19.2 43.6l.8 2.6c1.4 3.9 2.8 7.9-1 11.8-4.5 4.6-9.5 3.3-14.8 1.8l-.6-.1a406.4 406.4 0 0 1-137-68.3c-6-4.4-10.8-10.3-15.5-16.1l-.3-.4c-2.5-3-3-7.8.5-10.4 3.3-2.5 5.8-.5 8.7 1.8l1 .9a145.5 145.5 0 0 0 76.3 31.7c13.4 1.4 26.6.9 40 .4 7.4-.3 14.8-.6 22.3-.5 10.2 0 18.7-4.7 26.7-9.2l2.8-1.6c27.8-15.5 54.3-32.8 72.2-60.7 16.1-25 25.9-52.2 31.6-80.9 7.2-36.1 6.6-72.7 6-109.8-.3-12-.5-24.2-.5-36.4ZM50.6 190.8c21.9-1.7 34 11.2 44.3 26.3a140.4 140.4 0 0 1 22.4 61.5c.5 3.7 1 7.6-1.2 11.3-4.5.6-4.9-3-5-5.6-.5-20.7-9.7-38.7-18.9-56.1-6.6-12.5-16.2-24.6-31.4-27.6-17.2-3.5-33 12-40.8 32.2-14.5 37.6-12 74.6 1.4 111 5.8 15.9 13.1 32.1 27.8 43.2 14.8 11.3 32.7 9.3 43.6-5.7l2-2.5c2-2.6 4-5.1 5-8 2.1-5.8 5.4-11.2 11.3-10.4 6.8 1 8 8.3 8.7 14a3661 3661 0 0 0 22 156.7l5.9 38.8c2.6 17.1 5.6 41.7 3.6 52.1a28 28 0 0 0-.3 2.2c-.4 2.8-.6 5-4.2 5.5-4.9.8-7-2-7.7-6.4-2.3-17-3-23.6-4-49.6-.9-25.2-5.6-50-10.4-74.9l-5-27c-5.2-30.8-10.3-62-10.8-97l-2 3c-7.6 11.3-13.7 20.5-24.5 24a40.5 40.5 0 0 1-46.1-12.5 127.8 127.8 0 0 1-28.8-55.8c-8.4-34-9.9-67.1.9-100.6 5.2-16.1 23.7-44.7 42.2-42Zm34.6 127.5c4.4 3.2 8.4 6 12-5.4-1.1-42.2-14.7-69.2-35.8-70.3 11.2 14.6 22 28.8 23 48.5a32.3 32.3 0 0 1-10.7-8.8c-2-2.2-4-4.4-6.5-6l-3-2.4c-4.8-3.6-9.7-7.4-17.8-4.5 3.8 5.8 9 10 14.3 14 6 4.7 12 9.3 15.6 16.5-10.6 7.7-15.2 17.7-9.7 29.9 4.8 10.5 11.9 19.2 25.9 19.8-.6-6.3-4.7-10.9-8.8-15.4-5-5.4-9.7-10.6-7.5-18.6 3.2-1.5 6.2.7 9 2.7Z" fill="#000"/></g><g transform="translate(178 1057)"><path d="M1314.4 694.4 10.7 691.1S44 481.4 106.9 362.2c73-138.7 176.8-250.5 390.4-316.9C516 39.5 669.8 114 669.8 114l108.7-70s175 48.2 241.2 85.5c84.2 47.3 179.3 187 223.1 296 46.6 115.8 71.6 269 71.6 269Z" fill="#fff"/><path d="M898.5 694.4c-13-1.7-13.5-12.7-17-20.7-4.4-10.4-9.8-13.3-18.7-5-6.5 5.9-10.2 4.1-14.6-3.3-5.3-9-14-16.3-3.7-27.8 3.9-4.2 0-9-5.4-10.3-5.5-1.4-7.4-5.4-8.1-10.1-1-6 4.6-6 8-8.2 9-6.1 16.2-13.9 18.6-25 .8-3.6 1.8-7.7 5.6-7.2 13.2 1.8 21.6-7.9 32.4-12.3 5 1.7 6.3 6.4 8 10.6 2.6 6.2 5.3 12 13.9 9.6a5.7 5.7 0 0 1 7.1 4c1.8 5.6 4 10 10.7 11 2.7.5 4.1 3.4 3.3 6-1.7 5.8.9 8.8 5.7 11a4.4 4.4 0 0 1 2 6.5c-8.5 12-5.3 24 .3 37.5-16.8 4.4-28.3 13.8-29 32.9-5.8.8-11.9.8-19 .8ZM578 685.5c-10.9 6-17.8-4-27-5.2-10.4-1.4-13 1.5-13.3 10.5-.2 5 .6 11-6.6 11.8-13.3 1.6-27.4-3.7-27.9-11-.6-9.7-3.7-12.8-12.6-7.6a12 12 0 0 1-14.3-1.2c-4.3-3.6-.2-7.8.8-11.7 2.5-11-.1-21.4-5.5-31-1.8-3-4.8-6.8-1.6-8.6 11.5-6.5 8-17.2 8.6-26.7.6-9.2 5.8-7.7 11.5-5.8 7.6 2.5 13.6 5 21.5-2.8 5.6-5.5 18-4.6 26.2-1.8 6 2.2 11 5 17.8 1.5 4.4 14.2 11 24 26 25.9 6 .7 5.5 6 2.6 9.8-8 10-1.5 21-2.4 31.4-.4 4.4 5.7 4 9.8 5.8a185 185 0 0 1-13.5 16.7ZM137.7 703c-11.8-5-8.6-17.9-15.8-25.6-5.7-6.1-8.7-6.8-14.2-2.6-8.5 6.5-14.6 8.6-20.2-4.2-4-9-13.3-15.4-3.5-26.4 2.8-3.2-2-6.6-5.6-8.4-5.3-2.7-8.8-6.6-8.1-15 15 2.4 17-13.7 27.3-19.3 3-1.6 2.6-5 2.5-8-.2-5 3.6-8.3 7-6.6 11.1 5.3 15.8-3.1 22-8.8 9.6-9 12.2-8.3 15 4.5 1.5 6.8 3.1 12.6 12.1 11 1.9-.4 4.8.1 5.9 1.4 8.4 10.3 18.9 18.8 25.4 30.6 1.2 2 2 4.5.5 6-12 12-8 24 1 37-17.5 5.1-34.5 10-32.3 33.5-5.8.8-11.8.8-19 .8ZM1249.2 694.4c-15.3-1.7-12.1-16.3-17.8-24.2-6.8-9.4-11-8.8-17.9-3-7.2 6.2-12.8 9.5-15.4-3.7-.6-3-3.8-5.6-6-8.3-3.7-4.9-5.1-9.1.6-14.3 6.7-6 4.8-11.5-3.7-14-6-1.7-10.2-5.2-10-11.4.1-6 6-4.6 9.8-5.4 3.7-.7 6.8-3 7.2-6.4 1-7.2 6-9.7 12.5-11.2-2.1-11-.4-17.6 12.8-13.2 8.5 2.9 10.8-6.7 16-10.2 10.1-6.6 13.3-6.6 16.2 5.3 1.9 7.8 4.1 12.8 13.5 10.7 4.4-1 5.5 3 6.5 6.3 1 3.4 2.2 6.8 6.3 7.2 13 1 9.3 7.4 4.5 13.7 2.7 5.5 9.2 2.9 12.7 7.8-10.6 12.2-10.1 25.5-1 38-1.5 5.2-5.3 5.6-8.5 5.4-15-.6-14.8 16.2-24.7 21.6-2 1 1.3 5.3 2.9 8.6-5.5.6-11 .9-16.5.7ZM929.3 143.3c-8.8-6-16.5-11.5-17.4-22.6-.5-5.6-4.3-9.8-10.4-11.6 8.4-10.4 9-33.3 9-33.3s-3 8.6 73.4 31.2c-8.3 20.7.6 30.5-19 44.3-9.2-9.3-23-3.5-35.6-8ZM906.1 343.5c-18.4 3.2-22-11.2-26.2-21.9-4.1-10.4-8.5-7.9-15.2-4.3-4.3 2.2-7.4 10.2-13.9 3.9-8.1-8-12.6-23.7-7.6-29.2 6-6.6 4.3-10.5-2.9-13.5-5.5-2.4-9.6-6-9.6-12.2-.1-7.4 7-5.9 11-8.3 7.6-4.6 9.6-13.5 14.6-20.1.5-.6.3-1.7.7-2.5 1.8-4.3 38.3-22.4 40-19.5a63.6 63.6 0 0 0 26.8 24.7c4.2 2.1 8.7 9.5 14.7 11.3 2.8 5.8-3.5 8.2-3.2 12 3 4 8.8 2.3 11.4 7.5-7.2 10-6 21-1.4 32 2.4 5.4 1.5 9.2-4.2 11a36.9 36.9 0 0 0-25.8 25.7c-1.3 4.1-4.6 4.5-9.2 3.4ZM586.7 251.6c2.3 7.1.4 15.3 10.8 18-8.2 11.5-7.7 22.6-1.7 33.9 2.7 5.2 1.3 8.8-4.9 10.4-14.4 3.6-26 9.8-27.4 27.1-.3 4.3-4.8 4.1-7.7.8-1.8-2.1-.8-6-4.6-7.6-2 3.6-1.2 10-7.9 9.2-6-.7-5.1-5.3-6-9.6-1.4-8-9-13-10.1-21.1-7.6-.7-11 5.2-16 8-5.4 3.2-9.1 3.6-11.8-3.3-3.9-9.7-16-17.8-4-30.2 3.7-3.8-2.2-7.3-6-9.1-5.4-2.7-9.3-6.7-9.3-12.7 0-6.6 8-4.4 10.2-7.3 6.3-8 18-10.9 19.8-23.7 1.6-11 10.2-1.7 16-2.7 2.5-3.3 4.7-7.5 8-10.4 10.4-9.1 14.6-8 20.2 4.6.8 2 1.8 5.4 2.8 5.5 13.9.5 18.2 14.8 29.6 20.2ZM143.3 295.1c2.7-5.3 5.8-9.6 7-14.4 4.4-20 13-37.3 32.2-46.3 8.7-4 6.9-15.5 15.2-18.7 5.5 2.4 4.5 7.4 6 11.1 1 2.8 1.6 7.9 4 7.3 14.6-3.4 16.6 12.7 26.6 16.7 8 3.3 5.4 15.7 15 19.8-13.8 12.6-10.7 25.3-.6 39.4-17.8 5.8-34.9 12-36.2 33.5-6.3-.4-5.8-7-13.5-9-2-.6-2 7.2-8 6.8-3.6-9.9-8.3-19.3-14-28-9.4-.4-14.8 8.3-24 9.7-4-8.7-12-16-9.7-27.9ZM1062.8 243.9c-1.2-6.5-6.1-7.5-10.4-9.3-4.6-2-5.8-6-6-10.3-.3-4.5 3.7-5.2 7-6 11-3.1 14-14.2 19.2-22 6.5-9.8 23.7-15.8 31.1-6.7 20.1 24.6 41 48.7 57.5 76 .4.7.2 1.7.5 4.3-19 1.9-28.3 15.2-33.6 34-6.5-7.7-12.5-11.2-21-4.7-1.4-10.1-9.3-15-12.1-22.9-2.7-7.5-7.2-5.7-12-3-15.8 9-16 9-24.4-7.7-1.7-3.4-3.2-6.8-4.5-9.7 1.4-5.6 8.5-5.5 8.7-12ZM357.9 422.2c2.8-.5 5.2-.6 6.6-1.9 11.6-9.9 22.7-6.4 26.4 8.8 1 4.2 2.8 6 6.8 6s7.6 1 9.9 6.1c-9 8.1-2 20.3-6.2 29.8-4.1 9.3-11 17.4-17.7 27.5-8.6-10.8-20.9-6.7-31.5-9.2-12-2.8-19.3-8.3-22.6-19.8-.4-1.2-.4-2.8-1.2-3.6-12.1-10.7-6-22.3-2.5-34.2 5-17 12.5-20.4 27.5-11.1 1.4.7 3 1.2 4.5 1.6ZM1101.3 466.4c-.9 13.8-15.8 18.3-16 34.4-10.6-11.1-21.4-10.2-31.7-10.8-12.8-.7-20.4-7.2-22.8-19.3-1.5-7.5-6.2-11.7-12.8-15.4 3.8-9.5 6.4-19.4 7.7-29.5.9-6.5 17.8-13.4 22.3-8.6 10.3 11.2 17 8.4 22.5-5 8.8 4.9 18.7 6 21.6 18 1.6 6.4 13.8 1.8 15.8 11.7-12.6 4.7-4.5 15.4-6.6 24.5ZM699.8 420.5c11.8 9.1 16-2.6 23-7.7 7 5.8 18.6 5.2 20 18.5.8 6.3 13.1.6 15.2 10.3-6.6 4.4-7.8 10.6-6 19.5 3.1 15.9-13.4 23-17.4 38.2-12.8-13-28.5-5.7-41.7-12.2-14.2-7-9.6-27-26.3-31.3 6.6-10.4 9-20.7 10.2-31.6 1-8 14.5-10.1 23-3.7ZM394.5 130.3c-4.2 5.8-5.3 12.5-11.3 17.8-8.8-11.7-22.3-5-33.5-8.8-5.9-1.9-10.9-5-15.6-8.1-6.8-4.5-5.9-18.2 1.3-23 14.3-9.5 27-21.4 45.4-23.8 10.8-1.4 18.8 4 31.5 4.1-9 9.7-8.5 18.3-9 26.5-.4 6.4-2.4 11.5-8.8 15.3Z" fill="#000"/><path fill-rule="evenodd" clip-rule="evenodd" d="M1290.7 617.2a2582 2582 0 0 0 17.3 77.2c4.7 0 8.2 0 11.4-.9a482.5 482.5 0 0 1-11.7-60.7c-2-13-4-26.1-6.6-39-6.2-30.4-13.2-60.5-22-90-10-33.6-21.5-66.9-35.3-99.3a743.8 743.8 0 0 0-48.2-97.7 685.2 685.2 0 0 0-64.4-91.1v-.2c-20.5-23.6-40.8-47-66.5-65.8-12.5-9.1-25.9-16.7-39.2-24.2-9-5.1-18.1-10.2-26.9-15.8-27.4-17.6-57.8-27-88.2-36.2-14.4-4.4-28.8-8.9-43-14.2a192.7 192.7 0 0 0-31.6-8c-18.4-3.5-37-7-53.2-19.4-2 8.4-7.7 9.7-13.5 11-3.1.7-6.2 1.4-8.8 3.2a1810.6 1810.6 0 0 1-54.4 36 3387.4 3387.4 0 0 0-30.4 20c-2.2 1.4-4.1 2.8-6.7 1.3-10.3-6-21.5-10.1-32.7-14.2-5.9-2.1-11.7-4.2-17.5-6.7l-17-6.9c-13.5-5.4-27.1-11-40-17.5-7-3.5-14.2-6-21.5-8.3-12.4-4-24.8-8.1-34.9-17.5-3.5-3.4-9.7-3.3-13.5 2-5.7 8.3-14.6 11.2-23.6 14.2l-15.8 5A426.6 426.6 0 0 0 410.4 68a1350.1 1350.1 0 0 0-82.1 39 403.3 403.3 0 0 0-88.4 61 601.8 601.8 0 0 0-102.2 122.5A768.3 768.3 0 0 0 84.5 390a897.7 897.7 0 0 0-32 82.8 714 714 0 0 0-20 65.8C30.7 545.8 29 553 27 560c-3 11.9-6 23.7-8.4 35.6-6.3 32.9-11.6 66-16.2 99 6.3 0 11.6 0 17.1-1.1 1-18.1 4.4-35.3 7.7-52.2l2.5-13a785.6 785.6 0 0 1 25.4-106.1l4-12C71.9 472 84.5 434 101.5 397.4c22.8-49.3 49-96.5 81.7-140.2a540.3 540.3 0 0 1 79.7-86.4c27.7-23.9 59-41.7 91.8-58.2 11.5-5.8 23.3-11 35-16.3A604.5 604.5 0 0 0 435 74.7c9.6-5.3 15.4-5 19.7 7.3a218.6 218.6 0 0 0 40.4 68.5 249 249 0 0 0 140.7 85.6c56 12 105.3-.3 146-40.4 22.1-21.6 43.2-44.9 54.9-74.4 4.5-11.5 8.6-23.3 12.7-35.3l6-17 34 10.8c10.7 3.5 21.5 7 32.4 10.3 45.7 14 86.6 38.4 125.6 65.4 43.3 30 75.4 71.4 105.2 114.2a769.7 769.7 0 0 1 56.5 97.6 766.7 766.7 0 0 1 42.5 102.7c11.7 35.3 22.3 71 30.5 107.6l8.6 39.6ZM615 98.2c8.3 3.9 16.7 7.8 26 9l4.5 2.2a52 52 0 0 0 17 6.2c-3 4.3-6 8.3-9 12.2-6.4 8.1-12.4 16-16 25.4l-2.3 5.9c-2.2 5.5-4.4 11-5.2 17-1.1 9.1-5.9 11.4-15.2 9.6a127 127 0 0 1-42.5-19.3c-10.1-6.3-20-12.9-30-19.4-13.3-8.8-26.7-17.6-40.5-25.8-17.4-10.5-25.2-27.1-32.4-44.3-3.1-7.6 3.4-12.6 9-16.4 10-7 21.4-7.2 32.9-4.2 19.4 5 37.5 13.2 55.7 21.4 11.6 5.2 23.1 10.4 35 14.8 4.4 1.6 8.7 3.6 13 5.6Zm130.6 92.4c-3.2 5-6.6 10-13.7 8-5.9-1.4-7.3-6.5-8.7-11.5l-.7-2.4a130 130 0 0 0-43.4-64c-22.6 17.1-30.8 41.4-37 66.8 0 .7-.3 1.4-.4 2.1-1.4 6.4-2.8 12.7-12 12-22.1-2-43.4-6.8-62-20.6-13.8-10.3-27.9-20.2-42-30a4158 4158 0 0 1-18.5-13c2 8 6.4 15.1 12.5 20.7a281.2 281.2 0 0 0 73.4 49.3 180 180 0 0 0 110.5 13.2c37.7-6.6 67.1-28.5 90.5-58.3l3.8-4.7c6.6-7.9 13.5-16.2 15-29.5-4.2 4.2-8.1 8.5-12 12.7-10.2 11.2-19.6 21.5-32.3 28.2a60.7 60.7 0 0 0-22 19.5l-1 1.5Zm83.8-93.5a18 18 0 0 1-7.1 8.8c-27 25.5-56 49-86.5 70.3a145.5 145.5 0 0 0-46.4-65L711 97c21.5-14 42.7-27.8 63.7-41.8 4-2.7 6.2-1 8.8.9l1.1.8a45 45 0 0 0 27.3 9.3c20.8-1 26.7 10.8 17.4 31Z" fill="#000"/><path d="M217.5 694.4c1.2-22.7 3.4-45.5 5.8-68.3 2.7-26.1 5.4-52.2 9.6-78.3 4-24.3 8.7-48.4 14.2-72.3 9-39.3 22.1-77.4 44.7-111.5 3-4.6 6-9 12-4.9 5.3 3.6 2.4 7.4.6 12.1-9.5 24-18.4 48-27.3 72.2A637.5 637.5 0 0 0 249.8 553c-5.9 33.8-8.2 68.2-12 102.3-1.3 12.3-2 24.6-3.2 38-5.5 1.1-10.7 1.1-17 1.1ZM1123.7 694.4c-9.2-36.8-12.3-74.6-22.4-111-7.7-28.1-14-56.8-24-84-7.1-19.3-14-39-23.4-57.6-12.7-25-23.3-51.2-34.6-77-1.3-2.9-3-6.3 1.2-8.9 4.5-2.6 7.5-.4 10 2.7 3.8 5 7.8 10.2 10.6 15.9 10 20.4 19.6 41 29.5 61.6a603.2 603.2 0 0 1 34.2 95.5 618.8 618.8 0 0 1 21.7 96.5c2.7 21.4 7.2 42.7 8.8 65.3-3.4 1-7 1-11.6 1ZM612.5 167c-8.2 2-11.1-2.7-12.5-8.4-1.5-6.2.8-11.7 6-15.5 3.3-2.4 7-2.4 10.9-.6 4.8 2.3 4.6 6.6 4.7 10.8.3 6.3-3.1 10.3-9 13.7ZM758.4 135.5c1.7 5.9 3 11.4-1.7 14.9-4.2 3-9.7 6.7-14.8 2-5.5-4.8-3.8-11.3-.2-16 4.2-5.4 10-8 16.7-1Z" fill="#000"/></g><g transform="translate(266 207)"><path d="M487.2 278c27.1-13.3 48.2-33.2 69-53.1 20.2-19.1 37.6-41.3 61.5-56.2 28.8-18 61.3-29.3 95.1-33 16.6-2 33-1.2 49.6-.6 46.6 1.5 93.1 48.7 88.6 96.8-1 11.3-.4 22.8-5 35.3 10.5-1.8 20-2.3 28.6-5.2 26.2-8.8 53.4-7.5 79.9-5.3a87.7 87.7 0 0 1 62.2 36.4c20 26.4 32.3 55.1 18.4 89a97 97 0 0 1-41.6 49.6c-12.5 7-20.5 14-22.4 29.6-5.2 41.5-50.2 69.6-90.6 57.2a87.3 87.3 0 0 0-35-4.5 104 104 0 0 1-73.3-20.6c-22.7-16.7-47-22.7-73.2-24.8-29.9-2.4-58-13-87.5-16.8-27.4-3.6-54.2-10.4-81.5-14-16.2-2.3-29 7.6-40.6 17.9-33 29.2-53.8 66-66.2 108-6 20.4-18.6 36-37.2 46.7-6.9 4-10.6.8-10.1-5.3 1.7-23.2-5.8-44.7-10.8-66.6-4.7-20.2-12-39.8-26.3-55.8-12.9-14.5-31.5-18.2-42.9 6.3-15.8 34-16.2 69.6-11.9 106 2.4 20.3 7.5 39.1 19 56a69.8 69.8 0 0 0 21.5 19.5c11 6.8 30.4-2.4 38.8-17.8 2.5-4.7 3.3-11 11-11.5 10 69.2 22.2 138 35.2 206.6.5 2.6-1.3 5-5.3 5.8-6.4-4.4-7.2-12.8-9.3-19.4a44 44 0 0 0-12.4-18.8c-26.7-26.1-58.4-46.4-85-72.7-32-31.7-47.2-69.7-43-115 3.6-37.7 6.7-75.4 6.8-113.3.3-49 11-95.3 40.4-135.6 27-37 61.4-62.5 108.1-69.6 19.8-3 37.8-12.5 56-20.6 7-3 13.8-6.6 21.4-10.5Z" fill="#000"/></g><g transform="translate(791 871)"><path d="M203 92.2c5.7-4 7-10.6 8.7-16.5 2-7-1.7-13-8.8-12-8.2 1-16.6 1.4-24.6 5a65 65 0 0 1-54 1.2c-8.1-3.7-16.7-6-25.5-7.1C86 61.3 80.5 67 81 79.5c.4 10.9 10.2 19.6 23.5 20.1 32 1.3 63.1-12.1 95.4-6 .4.1.8-.3 3-1.4Z" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="M123.6 54.3c-10-5.3-20.7-10.8-34-7.2C68.1 55.6 62.4 69.3 68.5 90c6.2 21 36.6 27.8 55.7 24.8 5.5-.8 11-2.3 16.6-3.8 13.8-3.6 27.6-7.2 42-1.8 13.1 5 23.4-.7 33-8 11-8.3 15.3-33 8.6-44.5-4.8-8.1-21.5-13-32.4-9a125 125 0 0 0-20.8 9.5c-14.3 8.6-27.5 7.1-42.1 0l-5.5-2.8ZM211 77.8c-1.5 5.4-3 11-8.1 14.4a62.1 62.1 0 0 0-3 1.4c-18.4-3.5-36.5-.6-54.6 2.3a208 208 0 0 1-40.8 3.7c-13.3-.5-23-9.2-23.5-20C80.5 67 86 61.2 98.8 62.7c8.8 1 17.4 3.4 25.5 7a65 65 0 0 0 54-1.1c6.6-3 13.4-3.7 20.2-4.5l4.4-.5c7.1-1 10.8 5 8.8 12l-.6 2.1Z" fill="#000"/></g><g transform="translate(653 805)"></g><g transform="translate(901 668)"><path d="M53.4 96.7c.2-5.7.5-10.4.3-15-.2-7.3 3-10.2 10.5-8.5 2.8 10.7 2 22 1.1 32.7-1.8 19.6 7.7 32 23 41.6 19.6 12.3 25.6 32.7 13.4 48.6-19.8 25.4-56.3 21.8-75-4.1-2.2-3.2-1.4-7.5 0-11.2.9-2.3 1.9-5 5-5 3.8-.2 5.2 2.2 5.6 5.5 1.8 12.3 10.8 16.9 21.2 18.8 13 2.4 24.5-.5 32.3-12.4 7-10.7 5-20.9-6-26.9-25.4-13.7-35.9-34.6-31.4-64Z" fill="#000"/></g><g transform="translate(610 680)"><path d="M409.2 75.7c13.1.3 25.4 1 37.7 2.5 3 .3 4.9 3.3 5 6.6 0 3.4-1.8 5.7-4.8 7-11.1 4.9-22 8.3-33.7.2-6.5-4.4-8.9-8.6-4.2-16.3ZM254.7 78.4c6.2 3.3 5.2 7 2.1 10.8-6.5 8-28.2 10-36.4 3.5-4.7-3.8-7.3-8.6-4.4-14.4 3-6 8.2-5 13-2.5 8 4 16.4 3 25.7 2.6Z" fill="#000"/></g><g transform="translate(610 680)"></g><g transform="translate(774 657)"><path d="M104.9 38.7C82.4 47 60.2 43 38.3 43c-3 0-6.3-2.2-9.2-4-2.7-1.5-4.4-4-3-7.4 1.5-3.7 4-5 8-4.5 27.2 3.7 53.7.8 79.9-7 5-1.6 13.3-8 16.2 1.6 3 10.2-6.8 10.8-13.4 13l-12 3.9ZM260.5 33.1c-7.2 2.7-13.5 5.3-19.9 7.6-2.4.8-5.1.9-6.8-1.8-1.6-2.4-1-4.4.5-7 13.4-22 56.2-24.9 71-4.4 1.9 2.4 3.3 5 4.2 7.8 1.3 4.1 2.4 9.2-2.2 11.5-4.3 2.2-7.7-1.1-10.7-4.5-14-15.5-17-16.3-36-9.2Z" fill="#000"/></g><g transform="translate(0 559)"></g></g></svg> | |
+1 −0 viewer/assets/avatars/kai.svg 新增 查看文件
| @@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1744 1744" fill="none" shape-rendering="auto"><metadata xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"><rdf:RDF><rdf:Description><dc:title>Notionists</dc:title><dc:creator>Zoish</dc:creator><dc:source xsi:type="dcterms:URI">https://heyzoish.gumroad.com/l/notionists</dc:source><dcterms:license xsi:type="dcterms:URI">https://creativecommons.org/publicdomain/zero/1.0/</dcterms:license><dc:rights>Remix of „Notionists” (https://heyzoish.gumroad.com/l/notionists) by „Zoish”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)</dc:rights></rdf:Description></rdf:RDF></metadata><mask id="viewboxMask"><rect width="1744" height="1744" rx="0" ry="0" x="0" y="0" fill="#fff" /></mask><g mask="url(#viewboxMask)"><g transform="translate(531 487)"><path d="M554 727.7c-99.2 297-363.8 388.6-503.7 19.8-19.3-50.7 31-69.5 66.2-91.9 24.1-15.3 36.8-28.5 35.3-42.2-7-64.4-36.9-243.8-36.9-243.8l-3-5.8s.7-1.6-2.2 1.2c-3 3-9.9 34.2-37 34.2-24.5 0-49.2-10.9-61-86.3C7.2 285.6 9.6 214 40 201c12.5-5.3 24-7.2 35.2-.8 11.3 6.4-13-22 112-126C268.4 6.4 396.7-3.5 448.5 8 500.3 19.5 552 44.8 574.9 98.5c27.8 65-25.9 114.3-14 262.5-2.2 53.6.8 171.2-146.6 210.6-28 7.5-19.3 48.4 22.7 58.4 67 21 117 72.3 117 97.9" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="m554 266.2.1-1.4c4.1-36.4 8.2-71.7 27.1-103.4 6.5 4.4 5.7 10 3.7 15.2-19.9 51.2-18 104.4-16.2 157.6l.4 14c2.1 66.4-14.5 126.8-58.7 177.5-15.4 17.6-35.8 29.8-56.5 40.3-21.4 11-25.9 20.1-19.2 43.6l.8 2.6c1.4 3.9 2.8 7.9-1 11.8-4.5 4.6-9.5 3.3-14.8 1.8l-.6-.1a406.4 406.4 0 0 1-137-68.3c-6-4.4-10.8-10.3-15.5-16.1l-.3-.4c-2.5-3-3-7.8.5-10.4 3.3-2.5 5.8-.5 8.7 1.8l1 .9a145.5 145.5 0 0 0 76.3 31.7c13.4 1.4 26.6.9 40 .4 7.4-.3 14.8-.6 22.3-.5 10.2 0 18.7-4.7 26.7-9.2l2.8-1.6c27.8-15.5 54.3-32.8 72.2-60.7 16.1-25 25.9-52.2 31.6-80.9 7.2-36.1 6.6-72.7 6-109.8-.3-12-.5-24.2-.5-36.4ZM50.6 190.8c21.9-1.7 34 11.2 44.3 26.3a140.4 140.4 0 0 1 22.4 61.5c.5 3.7 1 7.6-1.2 11.3-4.5.6-4.9-3-5-5.6-.5-20.7-9.7-38.7-18.9-56.1-6.6-12.5-16.2-24.6-31.4-27.6-17.2-3.5-33 12-40.8 32.2-14.5 37.6-12 74.6 1.4 111 5.8 15.9 13.1 32.1 27.8 43.2 14.8 11.3 32.7 9.3 43.6-5.7l2-2.5c2-2.6 4-5.1 5-8 2.1-5.8 5.4-11.2 11.3-10.4 6.8 1 8 8.3 8.7 14a3661 3661 0 0 0 22 156.7l5.9 38.8c2.6 17.1 5.6 41.7 3.6 52.1a28 28 0 0 0-.3 2.2c-.4 2.8-.6 5-4.2 5.5-4.9.8-7-2-7.7-6.4-2.3-17-3-23.6-4-49.6-.9-25.2-5.6-50-10.4-74.9l-5-27c-5.2-30.8-10.3-62-10.8-97l-2 3c-7.6 11.3-13.7 20.5-24.5 24a40.5 40.5 0 0 1-46.1-12.5 127.8 127.8 0 0 1-28.8-55.8c-8.4-34-9.9-67.1.9-100.6 5.2-16.1 23.7-44.7 42.2-42Zm34.6 127.5c4.4 3.2 8.4 6 12-5.4-1.1-42.2-14.7-69.2-35.8-70.3 11.2 14.6 22 28.8 23 48.5a32.3 32.3 0 0 1-10.7-8.8c-2-2.2-4-4.4-6.5-6l-3-2.4c-4.8-3.6-9.7-7.4-17.8-4.5 3.8 5.8 9 10 14.3 14 6 4.7 12 9.3 15.6 16.5-10.6 7.7-15.2 17.7-9.7 29.9 4.8 10.5 11.9 19.2 25.9 19.8-.6-6.3-4.7-10.9-8.8-15.4-5-5.4-9.7-10.6-7.5-18.6 3.2-1.5 6.2.7 9 2.7Z" fill="#000"/></g><g transform="translate(178 1057)"><path d="m1315.2 701.4-1308.5.9S79.6 422 99 389.8c19.5-32.1 97.6-140.4 96.7-158.8-.9-18.4 1.5-83.8 14.7-109.6 13.2-26 55.2-61.3 71.6-64 16.4-2.5 71.7-5 106.2-13.7 34.5-8.6 66.4-19.3 101.5-19.3 5.7 0 .2 12.5.2 12.5s1.8 122.3 164.8 130c121.5 5.7 161.7-117.6 161.7-117.6s-26.7-23.8-18.6-24.4c95.6-8.2 145.7 13.2 174.7 18.8 26.8 5.2 49.2 5.2 76 24.2 30.7 21.7 46.5 71 80.9 146.5 39.3 86.6 194.1 349.3 185.8 487.6" fill="#000"/><g fill-rule="evenodd" clip-rule="evenodd" fill="#fff"><path d="M1003.5 704.5c-.8-17-1.1-34-1.5-50.9-.8-37.1-1.6-74.3-6.4-111.5-4.4-34-9.5-68-15-101.9A2951.8 2951.8 0 0 0 947 274.4c-4.2-18.9-11.5-37.4-19.3-55.3-5.7-13-10.4-26.4-15.2-39.8-5.5-15.3-11-30.6-17.8-45.4-1.2-2.6-2.7-5-4.2-7.4-3-4.5-6-9.3-7.5-16.4-47.5 93.4-120.4 141.8-223.2 142.3-101.2.4-176-46.2-230.6-130.3-8.6 7-12.5 17-16 26l-1.4 3.3c-18.6 45.9-36 92-41.5 142.2-3.1 29-7.6 58-12 86.8l-1.8 11.4c-6.9 45.2-13 90.7-16.2 136.4-4.3 58-8.8 116-13.4 175.2-4.7 1.1-9.1 1.1-14.6 1.1a688 688 0 0 0 5.2-74.8c1.6-49.7 7.3-99 13-148.2L335 441c3-28 7-56 11.1-83.8 4-27.5 8-55 11-82.7 4.9-44 21.9-85.2 40-125.6l.8-2c10.4-23.3 20.8-46.7 37.5-66.5 12.9-15.3 27.5-28.9 44.8-39 13.9-8.1 18.4-6.4 23.1 9 9.6 31.5 26.3 58.5 53.3 76.9 42.8 29 89 42.2 141.3 26.9 36.5-10.7 66.6-29.1 88.3-60.2 8.4-12 16-25 18.5-40a205.3 205.3 0 0 1-18.2-7v-.1c-3-1.4-6.7-3-5.1-7.5 1.2-3.4 4-5.9 7.8-5.3 33.1 4.5 64.5 11.7 86.4 41.1a347 347 0 0 1 47.4 89.2l7.5 20.4c12.6 33.7 25.1 67.4 34.4 102.2 3.6 13.8 6.4 27.7 9.1 41.7l3.6 17.9 5.2 23.7c4 18.2 8 36.3 10.9 54.7 2 12.6 4 25.2 6.2 37.8 6 35.9 12.2 71.7 13.8 108.2.8 18 2 36 3.4 54 1.1 15 2.2 30.1 3 45.3.4 8.2-.4 16.5-1.3 25l-.8 8.6c-4.8.6-9.7.9-14.6.7ZM818.4 64c-8 18.5-15.8 37-29.3 52.4-34.3 39.1-78.7 57-129.4 58.5-34 1-67.5-6-97-25-28.5-18.4-53-40.7-65-74l-1.2-3.8c-2-5.8-4-11.8-8.6-16-13.2 3-16.7 11.3-14.6 23l.9 5.8c.5 4 1 8 2.4 11.7 12.5 35.4 37 61.4 68.3 80.4 24.6 15 51.4 24.8 80.8 28.5C686 213 742.2 205 792 167.7a128.3 128.3 0 0 0 53.4-90.4c1.7-15-7.2-22-24.7-18.7l-2.3 5.4ZM457.2 79.8c20 82 77 121.4 153.7 138.6 39 9.8 76 8.2 113.1-1.5 41.3-10.7 77.6-29.3 104.8-63 16.6-20.8 28.9-43.7 29.3-71.6 15 7.8 16.5 13.2 6.5 32A229 229 0 0 1 768 212c-46.4 24-96.4 30.4-148.6 22.5-54.2-8.1-98.7-33.7-137.7-70.4a245.5 245.5 0 0 1-35.2-45.3l-6.8-10.3c-2.7-4-1-7.2 1.7-10.3a4082.7 4082.7 0 0 1 15.8-18.5Z"/><path d="M215 704.5c4.6-15.4 6.3-31.3 8-47.3.8-8 1.7-16 2.9-24l2.7-18c3.5-24.2 7-48.4 12.4-72.4l4.9-20.6c3.1-13.3 6.3-26.6 8.7-40.1 4-23 10.8-45.5 20.4-66.9a251 251 0 0 0 22.2-102 470 470 0 0 1 4.7-52.5c1.7-13 3.3-26 4.1-39 1.6-24.7.4-49-1-75.6-3.8 3-7.5 6-11 9a714 714 0 0 1-22 17.6c-43 32.4-76.4 73.2-105 118a613.1 613.1 0 0 0-29.8 54.7c-3.8 7.5-7.5 15-11.4 22.4A833.1 833.1 0 0 0 85.5 462c-2 5.8-4.3 11.5-6.4 17.2-17.9 47-35.8 94.2-42.8 144.4-2 14.4-6 28.2-9.9 42.1-3.5 12.4-7 24.8-9.3 37.9-5.5 1-10.8 1-17.1 1l2.8-9.8c8.4-29.5 17-59.1 21.3-90 2.1-15.6 6.6-31 11.1-46.2l3-10.5c4.5-15.5 10.3-30.5 16-45.5 5-13 10-26 14.2-39.5 4.9-15.8 11.5-31.2 18-46.5 2.5-5.7 5-11.3 7.3-17 16.6-40.3 37.4-78.6 59-116.3l.3-.5c7.4-12.9 15-26.1 26-36.7 8.7-8.3 9.2-19 9.7-29.7a105 105 0 0 1 2.4-20.1c5-31.7 10.1-63.6 26.2-91.8 16.8-29.4 44.6-45.7 77-53.6 23.6-5.8 47.6-9.4 71.8-11 10-.5 19.8-3.7 29.6-6.9 5.2-1.7 10.5-3.4 15.8-4.7 5-1.2 10-2.6 15-4C445.8 19.2 464.9 14 485 15h1c4 .2 8.3.3 9 5.5.6 5.1-3 5.8-6.6 6.5l-2 .4-42 9.9C418 43.5 391.7 49.8 365 55.6c-11.5 2.5-23.5 3.2-35.4 4l-8.8.6c-8.6.6-16.7 1.7-23.8 6.3 25.8 16.1 41 37.8 40.6 68.8-.3 18.3.5 36.5 1.2 54.8 1 24.1 2 48.2.6 72.3-1.7 31.5-5.2 62.6-9.9 93.8-2.7 18.1-4.7 36.4-6.8 54.6-2 17.2-4 34.4-6.4 51.5-2.5 17-4.1 34.2-5.8 51.3-1.5 15.8-3 31.6-5.2 47.4-2.6 18.5-4.4 37-6.3 55.6-1.6 16-3.2 32.2-5.3 48.2-.5 4-.7 8.2-1 12.3-.5 8.7-1 17.5-4 26.5-5.7 1-11.4 1-17 0a770 770 0 0 0 16.7-101l.4-3.8c2-16.5 3.4-33 4.9-49.6 2.3-27 4.7-54 9.3-80.8a345 345 0 0 0 3.5-32.5c1.1-14.1 2.2-28.2 5.5-42.1a595 595 0 0 0 13-106c2.8-52.3 3.5-104.8.3-157-1-16.7-4.6-33.5-19.5-47 1.6 5 3.3 9.7 5 14.3 3.7 9.8 7.2 19 8 28.5a779 779 0 0 1 2.2 82.7c-.5 32.2-4 64.2-7.6 96.2l-3.5 33.1C306.3 375 301.2 411 296 447l-6.7 48.1c-2 14.5-3.4 29.1-5 43.7-1.7 17.5-3.5 35-6.1 52.4-1.6 11-2.6 22.2-3.6 33.3-1.7 18.5-3.3 37-8 55.1-.2 1.2-.6 2.5-1 3.7-1.9 6.8-4 14-.5 21.3a100 100 0 0 1-16.7-1c.8-7.8 2-15.3 3.2-22.7 1-6.5 2.1-13 2.8-19.6 1.4-13.7 3-27.3 4.5-40.9l5-45.1c3-29 6.8-57.9 10.7-86.8l5-37c-2 8.2-4.4 16.2-6.8 24.1-3.5 11.5-7 22.9-8.8 34.6-2.6 16.8-6 33.3-9.6 50-4.5 21.5-9 43-11.6 65l-3.1 22.7a361 361 0 0 0-5.3 56.7H215Zm60.3-554.3a93.8 93.8 0 0 1 20.5-17c6.7-3.8 8.6-10 6.2-16.3-1.2-3-1.6-6.5-2.1-9.9-1.1-7.8-2.2-15.7-11.6-19.7-5-2.2-9.8-.3-13.3 2.2a70.8 70.8 0 0 0-17.4 16.6c-17.2 26-26.7 55.2-35.7 88.3 11-11 22.2-19.5 33.3-28.1 6.8-5.2 13.5-10.4 20.1-16Zm-37.6-40c-9.8 23.6-19.7 47-22 73a56.4 56.4 0 0 1-11.4 31.2l3.7-18c6.8-33.4 13.6-66.9 33.8-96l-4 9.8ZM1276.5 559.3c15.8 47 24.1 96 31.6 145.2 5.5 0 10 0 14.6-1-4-39.4-12.7-76.7-21.4-114l-.2-.6c-4-17.6-9.8-34.7-15.6-51.8l-5-15a1501 1501 0 0 0-43.6-120.6 660.7 660.7 0 0 0-30.5-60c-4.7-8.5-9-17-13.3-25.7a333 333 0 0 0-35.9-59.7c-5.8-7.4-11.8-14.9-14.5-23.3a2262.2 2262.2 0 0 0-37.2-102.7 155.7 155.7 0 0 0-32.7-54c-20.4-21-48-28.5-75.1-35-23-5.4-46.1-10-69.2-14.5L888 18.4a354 354 0 0 0-103.9-6c-5.5.5-10 1.8-12 10.6 14.6 1.7 29.2 2 43.7 2.4 24.2.7 48.4 1.3 72.4 7.9 25.2 6.8 51 12.3 77.4 17.9 12.5 2.6 25 5.2 37.9 8.1-9.2 9.7-9.5 19.4-9.8 29l-.1 4.5c-.8 14 1.4 27.7 3.5 41.4 1.5 9.4 3 18.8 3.5 28.2 2.4 44.8 9.6 89 16.8 133l1.3 8.4c3.5 21.3 6 42.7 8.5 64 2.3 19 4.5 38.1 7.5 57 4.7 31 6.4 62.4 8.1 93.7 1.2 21.3 2.4 42.6 4.5 63.9 2 21 3.6 42.1 5.1 63.3 1.4 19.6 2.8 39.2 4.7 58.8h11.8c-.6-49.1-4.2-98-7.9-147-1.8-25.2-3.7-50.3-5.2-75.4a769.2 769.2 0 0 0-7-62.6c-1.6-10.8-3-21.5-4.4-32.2-3.7-31.7-8.7-63.2-13.7-94.7-4.3-27.2-8.6-54.3-12-81.6-1.8-13.2-4-26.2-6-39.3-4.6-27.2-9-54.3-9.4-82-.1-11 3.4-19.7 12.5-27-14.6 30.1-8.2 59.2-1.8 88 1.7 7.7 3.3 15.2 4.6 22.8 1.2 6.7 2.5 13.3 4 20 2.7 13.3 5.5 26.7 6.2 40.2.6 11.2 2.8 22 4.8 32.7 1.5 7.5 3 15 4 22.7 2.4 19.7 5.6 39.3 8.8 59 5 30.6 10 61.2 12.2 92.3 1.8 26.5 7 52.9 12 79l.7 4c2.5 12.8 3 25.8 3.4 38.4l.1 2.1a972 972 0 0 0 4.2 55.3c2.2 24 4.5 47.9 4.5 72l-.3 4.4c-.1 2.4-.3 5-.1 8a47 47 0 0 0 11.4 1c2.7-45.3-.4-90.4-4.4-138 14 40 21 79.4 28 119.4l3 17.4c5.4 1 11 1.2 16.5.3-4-8.8-4.6-17.9-5.2-26.8-.5-5.6-.9-11.1-2-16.5l-3.4-14.6c-7.8-35-15.6-70-30-103.5l-3.1-6.9a74 74 0 0 1-8.3-25.2c-1.1-15-4.1-29.7-7-44.2l-2.5-12.3a723.9 723.9 0 0 1-7.8-56c-2.2-19.1-4.4-38.3-8.1-57.3-3.7-18.8-7-37.7-10.1-56.6-5-29.5-10-59-17-88.3l-2-8.4a204.3 204.3 0 0 1-6.7-36.9c1.6.7 3.1 1.1 4.4 1.6 2.4.8 4.2 1.4 5.7 2.5l1 .8c31.2 24 62.6 48.2 87.1 79.5a488.4 488.4 0 0 1 56 87.2c5.8 12 12 24 18 35.9a951.4 951.4 0 0 1 37.1 78c11.8 28.9 21.4 58.5 31 88 3.8 12 7.7 23.8 11.7 35.6Zm-243.6-422.8c-6.1-3.5-10.4-8.2-11.4-15.4a65 65 0 0 1-2.9-33.4c2.2-15.3 12.7-19.6 26.5-13 19.9 9.3 28.6 27.5 37.1 45.2 1 1.8 1.8 3.7 2.7 5.5 8.2 16.9 15 34.5 22.2 53.2l10 26-11.4-10.8a453.4 453.4 0 0 0-55.4-46.7c-5.6-3.8-11.5-7.2-17.4-10.6Z"/></g><g transform="translate(396 278)" style="mix-blend-mode:difference"></g></g><g transform="translate(266 207)"><path d="M841.5 278.8c15 39.8 28.8 69.8 26.2 111.7-1 15.4-12.2 39.7-16 54.5-5.3 20.4-16.4 39.1-17.7 60.7-.2 2.7-2.2 4.5-6.8 5.4-7.8-10.2-8.8-23.2-9.2-35.2-1.2-37.5-3-74.8-11.4-111.4-2.4-10.3-6.3-20.1-10.4-32.7-3.7 34-3.7 33.8-34.6 34.3-55.6 1-111 4.3-166 12.3-15.7 2.3-17 1.3-27.8-18.8-11 7.4-10.7 20.6-16.2 30.6-16.7 30.9-38.2 57.1-70 73.9-11 5.8-33.4 5-58.8-1.7-9.5 30.3-32.5 56.6-24.4 92.2a41 41 0 0 1-7 34c-3.8 5.4-8 6.3-13.2 4.7-5.3-1.6-2.8-5.9-2.7-9.6.5-32.6-7.4-63.5-25.9-90.3-17-24.8-57.1-18.6-69.9 9.4-2.3 5.2-3.4 11.4-11.5 16.4-1.5-18.3-1.8-35 .1-51.5a486.2 486.2 0 0 1 25-112.7 307.7 307.7 0 0 1 95.3-135.4 300.6 300.6 0 0 1 162-65.4c12-1.3 23.9-3.6 35.9-4.8a284 284 0 0 1 124.4 15.8c53.8 19 100.2 48.2 124.5 102.7 1.5 3.5 3.7 6.7 6.1 10.9ZM365.7 632.1c4-1.1 6.8-.9 8 2.9 8.6 24.2 9 49.4 7.8 74.5-.5 9.6-16.4 21.2-29.7 23-12.7 1.6-24.5-.1-32-12-4-6.3-1-13 1.3-20.5-14.3.4-26.7 6-39.5 0-17-7.9-18.7-15.4-5.2-28l3.5-4.3c-6-7.6-15.8-8.7-22-15.5-6.9-7.3-7.9-14.2-2.3-21.5 7.4-9.5 19.2-11.3 27.2-5 3.1 2.2 5.7 5.2 7.5 8.6a44.5 44.5 0 0 0 40.7 24.6c18.2.5 28.3-10.3 34.7-26.8Z" fill="#000"/></g><g transform="translate(791 871)"><path d="M101.4 93.5c-2.6-12.2-2.9-25.4-21.6-18.7-2.6.9-5-3.7-3.1-6.7 4.4-7 10.7-11.9 19.6-10.9 10.6 1.3 20.9 10.6 20 19.5-.7 8.1-2 17.4-14.9 16.8Z" fill="#000"/></g><g transform="translate(653 805)"></g><g transform="translate(901 668)"><path d="M65.7 103.7c-.6 21.6 16.4 30.6 27.5 43.5 8.5 10 18.5 18.7 13.7 34.4a39.6 39.6 0 0 1-40.8 27.6 104 104 0 0 1-36.4-11A22.2 22.2 0 0 1 19 187.6c-1.7-3.8-5.4-7.8-.5-11.4 4.6-3.4 7 0 10 3.7 11 13.3 26 16.4 42.6 15.7A23.2 23.2 0 0 0 93 180.8c3.6-8.3-1.6-15.2-6.3-20.8-9.3-11-20-20.5-27.4-33.2-8.3-14.2-7.6-44.1 2.2-57.4 1.9-2.5 3.6-5 7.2-3.1 3.8 2 3.4 5.5 2.2 9a69.3 69.3 0 0 0-5.2 28.4Z" fill="#000"/></g><g transform="translate(610 680)"><path d="M409.2 75.7c13.1.3 25.4 1 37.7 2.5 3 .3 4.9 3.3 5 6.6 0 3.4-1.8 5.7-4.8 7-11.1 4.9-22 8.3-33.7.2-6.5-4.4-8.9-8.6-4.2-16.3ZM254.7 78.4c6.2 3.3 5.2 7 2.1 10.8-6.5 8-28.2 10-36.4 3.5-4.7-3.8-7.3-8.6-4.4-14.4 3-6 8.2-5 13-2.5 8 4 16.4 3 25.7 2.6Z" fill="#000"/></g><g transform="translate(610 680)"></g><g transform="translate(774 657)"><path d="M30.3 32.1C58 10 89.8 13.1 121 14.1c5.7 0 12.2 1.3 14.3 8.3 2.1 7.7-4.6 9.9-8.8 13.8a44.7 44.7 0 0 1-52.2 8.6 37.9 37.9 0 0 0-31.9 1.6c-2 1-3.8 1.9-5.8 2.6-6.3 2.5-14.3 6-18.6-.4-4.4-6.7 5.6-9 8.3-13.7.6-1 2-1.6 3.9-2.8ZM294.4 23.8c7.7 4.3 14.5 10 20 17 2.5 3 5 6.3 3 10.2-2.4 4.3-6.7 2.7-10.4 2.2-12.5-1.5-23.7-9.2-37-7.2-5 .8-9.9.7-15 2.5-13 4.7-31-6.4-33-19.8-1-5.4 1-8.5 6.8-10 22.2-5.7 44-9 65.6 5.1Z" fill="#000"/></g><g transform="translate(0 559)"></g></g></svg> | |
+1 −0 viewer/assets/avatars/leo.svg 新增 查看文件
| @@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1744 1744" fill="none" shape-rendering="auto"><metadata xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"><rdf:RDF><rdf:Description><dc:title>Notionists</dc:title><dc:creator>Zoish</dc:creator><dc:source xsi:type="dcterms:URI">https://heyzoish.gumroad.com/l/notionists</dc:source><dcterms:license xsi:type="dcterms:URI">https://creativecommons.org/publicdomain/zero/1.0/</dcterms:license><dc:rights>Remix of „Notionists” (https://heyzoish.gumroad.com/l/notionists) by „Zoish”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)</dc:rights></rdf:Description></rdf:RDF></metadata><mask id="viewboxMask"><rect width="1744" height="1744" rx="0" ry="0" x="0" y="0" fill="#fff" /></mask><g mask="url(#viewboxMask)"><g transform="translate(531 487)"><path d="M554 727.7c-99.2 297-363.8 388.6-503.7 19.8-19.3-50.7 31-69.5 66.2-91.9 24.1-15.3 36.8-28.5 35.3-42.2-7-64.4-36.9-243.8-36.9-243.8l-3-5.8s.7-1.6-2.2 1.2c-3 3-9.9 34.2-37 34.2-24.5 0-49.2-10.9-61-86.3C7.2 285.6 9.6 214 40 201c12.5-5.3 24-7.2 35.2-.8 11.3 6.4-13-22 112-126C268.4 6.4 396.7-3.5 448.5 8 500.3 19.5 552 44.8 574.9 98.5c27.8 65-25.9 114.3-14 262.5-2.2 53.6.8 171.2-146.6 210.6-28 7.5-19.3 48.4 22.7 58.4 67 21 117 72.3 117 97.9" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="m554 266.2.1-1.4c4.1-36.4 8.2-71.7 27.1-103.4 6.5 4.4 5.7 10 3.7 15.2-19.9 51.2-18 104.4-16.2 157.6l.4 14c2.1 66.4-14.5 126.8-58.7 177.5-15.4 17.6-35.8 29.8-56.5 40.3-21.4 11-25.9 20.1-19.2 43.6l.8 2.6c1.4 3.9 2.8 7.9-1 11.8-4.5 4.6-9.5 3.3-14.8 1.8l-.6-.1a406.4 406.4 0 0 1-137-68.3c-6-4.4-10.8-10.3-15.5-16.1l-.3-.4c-2.5-3-3-7.8.5-10.4 3.3-2.5 5.8-.5 8.7 1.8l1 .9a145.5 145.5 0 0 0 76.3 31.7c13.4 1.4 26.6.9 40 .4 7.4-.3 14.8-.6 22.3-.5 10.2 0 18.7-4.7 26.7-9.2l2.8-1.6c27.8-15.5 54.3-32.8 72.2-60.7 16.1-25 25.9-52.2 31.6-80.9 7.2-36.1 6.6-72.7 6-109.8-.3-12-.5-24.2-.5-36.4ZM50.6 190.8c21.9-1.7 34 11.2 44.3 26.3a140.4 140.4 0 0 1 22.4 61.5c.5 3.7 1 7.6-1.2 11.3-4.5.6-4.9-3-5-5.6-.5-20.7-9.7-38.7-18.9-56.1-6.6-12.5-16.2-24.6-31.4-27.6-17.2-3.5-33 12-40.8 32.2-14.5 37.6-12 74.6 1.4 111 5.8 15.9 13.1 32.1 27.8 43.2 14.8 11.3 32.7 9.3 43.6-5.7l2-2.5c2-2.6 4-5.1 5-8 2.1-5.8 5.4-11.2 11.3-10.4 6.8 1 8 8.3 8.7 14a3661 3661 0 0 0 22 156.7l5.9 38.8c2.6 17.1 5.6 41.7 3.6 52.1a28 28 0 0 0-.3 2.2c-.4 2.8-.6 5-4.2 5.5-4.9.8-7-2-7.7-6.4-2.3-17-3-23.6-4-49.6-.9-25.2-5.6-50-10.4-74.9l-5-27c-5.2-30.8-10.3-62-10.8-97l-2 3c-7.6 11.3-13.7 20.5-24.5 24a40.5 40.5 0 0 1-46.1-12.5 127.8 127.8 0 0 1-28.8-55.8c-8.4-34-9.9-67.1.9-100.6 5.2-16.1 23.7-44.7 42.2-42Zm34.6 127.5c4.4 3.2 8.4 6 12-5.4-1.1-42.2-14.7-69.2-35.8-70.3 11.2 14.6 22 28.8 23 48.5a32.3 32.3 0 0 1-10.7-8.8c-2-2.2-4-4.4-6.5-6l-3-2.4c-4.8-3.6-9.7-7.4-17.8-4.5 3.8 5.8 9 10 14.3 14 6 4.7 12 9.3 15.6 16.5-10.6 7.7-15.2 17.7-9.7 29.9 4.8 10.5 11.9 19.2 25.9 19.8-.6-6.3-4.7-10.9-8.8-15.4-5-5.4-9.7-10.6-7.5-18.6 3.2-1.5 6.2.7 9 2.7Z" fill="#000"/></g><g transform="translate(178 1057)"><path d="M1301.3 694.3S1276 480.8 1263 423.6c-25.7-111.8-73.3-201.4-135.3-220.5-29.6-9.2-39.4-34-47-53.2-3-7.8-5.8-14.7-9.3-19.2C1040 90.7 975 50.5 941 37.3 914.5 27 838.5 20.6 813 30.7c-11.5 4.5-16.2 11-17.6 18.5-1.5.5-3 1.1-4.4 2-3.3 1.8-6 5-9.5 9C768 75.7 745 102.1 653.7 98c-72.5-3.2-120.5-13.8-149-58.3-2.3-3.6-5-4.8-8-4.2a223.7 223.7 0 0 0-163 19C316.2 64 219.4 158.4 218.4 163.7c-2 10.6-25.6 28-55.2 47.6C100.9 252.4 73.6 333 49.3 404.4l-6.6 19.2C31.8 455.2 6.1 692 6.1 692l176 2.3h1119.2Z" fill="#000"/><mask id="bodyVariant08-a" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="453" y="259" width="392" height="433"><path d="m467 692-14-432.5h392V692H467Z" fill="#fff"/></mask><g mask="url(#bodyVariant08-a)"><g transform="translate(396 278)" style="mix-blend-mode:difference"><path d="M204.9 175.7s150.1 43.7 172 42.1c9.5-.6 13.6-7 11.8-16.2a28 28 0 0 0-5.5-12c-2.9-4-186-225.6-203.5-184.5a16 16 0 0 0 .5 12.5c4.3 8 10.8 14.4 16.3 21.3 21.4 24.8 41.6 50.6 63.1 75.3 12.7 14.9 30.5 34.2 37.9 47.7-5.4-.5-15.1-3.5-21.1-4.9-13.5-3.4-27-7-40.5-10.3a313.1 313.1 0 0 0-60.2-9.7c-9.2-.1-20.4-.4-27 7.1-5.2 6.5-6 15.8-2.8 23.3 4 8.3 10.7 15 16.6 22a855 855 0 0 0 29.6 30.9c18.8 18.5 37.3 37.2 56.2 55.5 22 21 43.5 42.3 65 63.7 15.9 15.5 32 30.7 47.9 46.2 4.8 4.7 9.6 9.4 14.8 13.7l5.3 4.2c1.2.8 2.4 1.7 3.9 1.8 2.5-.4 3.3-3.5 3.6-5.7.9-5.8-2.8-10.7-5.6-15.3C358.6 345.7 205 175.7 205 175.7Z" fill="#fff"/></g></g><path d="M1295 694c-6.2-21.3-11.5-73.3-14.9-102-2.4-20.7-19.6-166.5-38.5-217.4-11.6-31.1-22.4-63-39.5-92.1-11.7-20-29.3-34.3-46-48.9a513 513 0 0 0-67-48.2c-30.9-19.2-63.4-23-97.6-11.7a32 32 0 0 0-21.9 24.3c-13.4 53.3-9.1 107.6-9.8 161.6-.8 69.8 3.1 139.5 5.2 209.2 1.8 57.2 0 66.7-.6 125.2h-14.5c-.9-32.2-.4-15.3-.6-47.5-.2-47.6-.8-95.1-1.6-142.7-.6-37.8-.3-75.7-2.8-113.5-2.6-39.6-2.7-79.1.7-118.6 2.5-28.2.1-57 11.3-84.3 9.4-23 28.3-31.8 49.9-33.5 22.4-1.7 45.7-4.8 69.8 9.3-4.8-16.6-15-24.7-22.6-34-28-34.2-65.5-55.5-103.6-76.8-39.3-22-80.7-19-122.6-17.4-6.5.3-12 3.8-17.8 6.7-7.5 4-15.3 7.3-26.6 4.8 9.5-13 22.1-17.3 35.1-21.1 37.1-10.8 73-5.2 95.7-1.8C943 28 1042.7 76 1089.7 151.5c22.3 35.9 85.8 36.4 143.6 157.6a528 528 0 0 1 34.7 100.7c10.9 44 39.5 252.6 39.5 284.2H1295ZM15.3 694c2-6.9 2.7-9.9 3.6-15.7 4.6-28.4 5.5-57.6 8.9-86.3 2.4-20.7 3.3-41.4 6-62 7.2-52.7 15.6-105 32.5-155.4 10.7-31.7 22.4-63 39.5-92.1 11.7-20 29.3-34.3 46-48.9 20.7-18 43.5-33.7 67-48.2 30.9-19.2 63.4-23 97.6-11.7a32 32 0 0 1 21.9 24.3c13.4 53.3 9.1 107.6 9.8 161.6.8 69.8-3.1 139.5-5.2 209.2-1.8 57.2.5 125 .5 125l14.6.2c.9-32.2.4-15.3.6-47.5.2-47.6.8-95.1 1.6-142.7.6-37.8.3-75.7 2.8-113.5 2.6-39.6 2.7-79.1-.7-118.6-2.5-28.2-.1-57-11.3-84.3-9.4-23-28.3-31.8-50-33.5-22.3-1.7-45.6-4.8-69.7 9.3 4.8-16.6 15-24.7 22.6-34 28-34.2 65.5-55.5 103.5-76.8 39.4-22 80.8-19 122.7-17.4 6.5.3 12 3.8 17.8 6.7 7.5 4 2.3 11.5 6.4.7 5.8-15-2-13.2-15-17-37-10.8-74-4-111 .5-7.4 1-14.8 4.4-21.5 8-51.4 27.8-116 77.2-138.6 117.6-12 21.6-30.7 32.8-47.5 47.7C111 252.3 95.3 263.8 74.6 309a573.6 573.6 0 0 0-34.7 100.7c-11 44-19.1 88.6-22.8 134.2-2.7 32.4-7.4 64.8-10.3 97.4-2 22.8-3.5 39.7-3.5 52.6h12Z" fill="#fff"/><path d="M1131.8 694c2-23.7-8-84.7-12.5-115.7-3.3-22.6-3-46-11.4-67.7-2.1-5.4-1.5-12.4 5.3-13.5 6.4-1 9.2 3.5 10.7 10.8 7.8 38.3 11.3 77.2 16 116 3.5 30 7.8 60 8.5 70l-16.6.1ZM193.3 694c1.4-23.6 8-84.7 12.6-115.7 3.3-22.6 3-46 11.4-67.7 2.1-5.4 1.5-12.4-5.3-13.5-6.4-1-9.3 3.5-10.7 10.8-7.8 38.3-11.3 77.2-16 116-3.6 30-5.7 70.1-5.7 70.1h13.7Z" fill="#fff"/><path d="M467.4 694.3S452.7 266.8 452.7 179c0-72.8 36.6-163 52-139.2 28.5 43.8 77.2 58.4 149.7 61.5 115 5 120.9-41.3 136.6-50 31.4-17.6 52.7 66 52.7 141.4V694" stroke="#fff" stroke-width="15"/></g><g transform="translate(266 207)"><path d="M393.2 749.9c-56.5 18.4-150.5-40-180.6-70-46-46-58.2-136.2-43.3-204.5 14.8-68.3 111.4-415.7 409.3-440C757.2 20.6 847.6 134 888 193.2c63 91.8 99.7 223.2 63 317.3-19.2 49.3-89.7 135.8-106.6 126.5-16.9-9.3-23-118.2-15-184.1 14-116.2-176.8-196.2-176.8-196.2S594.2 307 505.2 396c-89 89-126.6 162.8-129.7 220.9-3.4 63 17.7 132.9 17.7 132.9Z" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="M382.9 645.7c-1-17.7-2-35.6 1.8-54a157.3 157.3 0 0 1 24.8-71.3c27-45.1 62-84.3 98.8-121.4 27.4-27.7 54.3-51.6 81.6-75.8 19.4-17.2 38.9-34.6 59-53.5 8.3-8 96.4 41 128.6 73.3 20.4 20.5 40.4 44.4 45.3 66.5 4.6 21.2 2.7 42.8.8 64.4-.6 7.3-1.3 14.6-1.6 21.9-.4 6.8-1.5 13.6-2.6 20.4-2 12.4-4 24.8-1.6 37.6l4.5 22.8c4.1 20.2 8.3 40.4 9.2 61 .4 8.5 5.9 10.2 13.7 7.4 18.6-6.8 32-20.2 45.5-33.8 25-25 41.4-55.7 57.6-86.4 13.8-26.2 24-52.9 23.4-83.6-.2-7.7-.2-15.5-.2-23.3 0-9.1-.1-18.3-.4-27.4-.9-32.7-10.9-63.7-21.2-94-12-35.7-31.5-68.1-52.9-99.2-32.4-47.1-70-89-119-119.9-46.6-29.4-98.5-42.6-152.8-46.9-38.2-3-75.2 4.2-112 13.6-29 7.4-56 20-82.2 33.1a309.8 309.8 0 0 0-59.9 40.4c-45.5 38-87.4 78.5-119 129.3A895 895 0 0 0 192.2 363c-12.9 29.7-20 61.6-27 93.5l-2 9a276.3 276.3 0 0 0 22.3 186.8c22 44.9 60.3 74.3 107.1 91 27.4 9.7 55.3 19 85.3 19 14.7 0 17.2-.3 17-15.5-.1-12.4-2.9-24.5-5.6-36.6-3-12.7-5.8-25.4-5.7-38.7.1-8.6-.4-17.3-.8-26Zm453-190.6c.8-21.6-1-43.1-9.2-63.5-17.8-46.5-59-76.6-91-95.7a345.4 345.4 0 0 0-36.1-18c-10.4-4.7-19.5-8.8-26.8-13.7-10.2-6.8-11-8.7-1.5-17.4 1.3-1 2.5-2.3 3.5-3.7 10.7-16.9 32.1-32 49.6-39.5a72.3 72.3 0 0 0 39.9-40.7c1-2.5 1.7-4.9-2-8.9-13.8 21-30.4 38.8-57.2 48.6l10-17c10.3-16.8 20.2-33 25.7-53-10.3 2.7-13.3 9.9-15.8 16.1l-1.7 4a466.2 466.2 0 0 1-63.7 91.8c-18.1 20.7-37.2 36.4-56.5 52.3-14.4 11.8-29 23.7-43.4 38-11 10.8-22.2 21.1-33.5 31.4-20.5 18.8-41 37.6-59 58.7-25 29.3-49.2 59.4-71.4 91-15.2 21.6-19.7 48-23.2 74.5-6 46 1.7 90.7 9.7 135.5 3.5 19.3.2 23.7-19.2 24-23.7.3-45-8.2-65.6-18.4A265.4 265.4 0 0 1 223 679c-28.4-29.2-43.3-64.1-50.8-103.3-6.4-33.9-1.1-67 4.1-100l2.2-14c5-33 17-63.7 28.8-94.4 3.7-9.6 7.4-19.2 10.9-29 18.8-52 49.6-96.4 84.7-138 44-52.5 95.2-96.6 158.3-125.6 55-25.3 112.2-39.9 172.8-34.3 24 2.2 47.8 7.4 70.6 15.3a336 336 0 0 1 87.5 45.7 399 399 0 0 1 84.5 86c26.4 35 46.7 73.5 61.9 114.4a354 354 0 0 1 21.3 94c1.5 17 .7 33.8-.1 50.6l-.7 15.5c-.6 19-8.5 35.8-16.3 52.5l-2.8 6.3a310.6 310.6 0 0 1-80.2 104.8c-9.4 8.3-16.8 6.5-19.3-5.7a425.8 425.8 0 0 1-5.1-33.7l-2.4-18c-3.8-25.5-1.6-50.9.6-76.2 1-12.3 2.1-24.5 2.5-36.8Z" fill="#000"/><path d="M304 574.3c6.9-35.3 14.7-69.1 33.3-99.3a219.2 219.2 0 0 1 40.2-50.8c3.4-3 6.5-8.1 15-6.2-67 75.4-103.8 157.6-62.4 258.2-18.4-8.2-29.3-51-26-101.9ZM439.2 424.4l-40.5 54.8c2-35.7 141.3-200.3 176.8-203.6a875 875 0 0 0-136.3 148.8ZM919 480.2c-3.8 10.5-2.5 22-10.4 30.4-4.7-12 .6-22.7 4.5-33.1 1.4-4 4.7-1.8 6 2.7ZM935.2 441c5-5.4 7.4-3.1 7.5 2 .2 8.3-2 16-11 25 1.3-11 2.1-18.6 3.5-27ZM915.3 444.8c-1 4.9-1 9.5-7.4 10.6-4.5-9.9.8-17.1 5.4-25.5 6.5 4.6 3.2 9.4 2 14.9Z" fill="#000"/></g><g transform="translate(791 871)"><g fill-rule="evenodd" clip-rule="evenodd"><path d="M104.5 69.3c5.8 1.4 12 3 10 11.7-4 1.5-6.9-.3-9.8-2.1-3.5-2.1-7-4.2-12.2-1.2 1.5-8.5 5.9-10 11.2-8.6.3 0 .5 0 .8.2Zm93.3 5.8c3.4 3.2 1.2 7-1.4 10-1.3.5-2.5 1.1-3.6 1.7-3.5 1.9-6.4 3.4-10 1.6-3-5.4-2.7-10.4 3-13.7 3.8-2 8.6-2.6 12 .4Zm-24.2 13.2c1.2-7.3-1.2-11.4-9.3-10.4-4.9.7-9.6 1.9-8.8 8.2.7 6.6 5 6.2 9.1 5.8l3.6-.2c1.5.1 3-1.1 5.4-3.4ZM126.3 106l1.5-.3c1.5-.2 3-.5 3.2-3-16.9-.8-30.7-8.7-44.4-20.5a40.8 40.8 0 0 0 39.7 23.8Zm.2-20c2.4 6.8 7.8 6.8 13.3 5 3.8-1.4 3.5-5.4 3.3-8.7-.4-5-3.8-6-8-6.3-6.1-.5-8.2 2.8-8.6 10Z" fill="#fff"/><path d="M186.9 60.6a76.9 76.9 0 0 1-41 4.6c-13.1-.8-24.3-4.5-35.4-9C99.3 52 83.6 58.4 76 69.5c-6.7 10-6 20 3.5 30 10.8 11.5 24.3 20.7 40 19.6 9-.7 18-1.6 27-2.6 20.7-2.1 41.3-4.3 62.4-3 17.5 1 26.1-15.5 21.2-32.7-5.7-19.4-22.6-27.3-43.3-20.1Zm-22.6 17.3c8-1 10.5 3 9.3 10.4-2.4 2.3-4 3.5-5.4 3.4-1 0-2.3 0-3.6.2-4 .4-8.4.8-9.1-5.8-.8-6.3 4-7.5 8.8-8.2Zm-38 28 1.5-.3c1.5-.2 3-.5 3.2-3-16.9-.8-30.7-8.7-44.4-20.5a40.8 40.8 0 0 0 39.7 23.8Zm71.5-30.8c3.4 3.2 1.2 7-1.4 10-1.3.5-2.5 1.1-3.6 1.7-3.5 1.9-6.4 3.4-10 1.6-3-5.4-2.7-10.4 3-13.7 3.8-2 8.6-2.6 12 .4Zm-71.3 10.7c2.4 7 7.8 7 13.3 5 3.8-1.3 3.5-5.3 3.3-8.6-.4-5-3.8-6-8-6.3-6.1-.5-8.2 2.8-8.6 10Zm-22-16.5c5.8 1.4 12 3 10 11.7-4 1.5-6.9-.3-9.8-2.1-3.5-2.1-7-4.2-12.2-1.2 1.5-8.5 5.9-10 11.2-8.6.3 0 .5 0 .8.2Z" fill="#000"/></g></g><g transform="translate(653 805)"></g><g transform="translate(901 668)"><path d="M71.5 185c5-15.6-6-26.3-10.4-38.5-8.6-23.7-16.2-47.4-15-73 .2-4.6-.7-10.7 6-10.6 5.1.2 7.9 5.2 8 10 1.6 35.5 14.5 67.7 29 99.3 2.7 6 2.1 11.1-1.1 16.9-8.5 15.1-22.3 20-38.2 20.5-8.7.3-15-4.5-18.2-15.2 14-1.8 29.4 4.8 39.9-9.4Z" fill="#000"/></g><g transform="translate(610 680)"><path d="M419.6 111c-4.2-9.5-9.9-15.2-19.8-15.7-6-.3-7-5.1-8.9-9.8 2-1.5 3.5-3.7 5.3-3.8 21.1-1.7 42.4-1.8 63.5-.1 6 .4 9.3 8 3.2 10.4-10 4-12.5 13.2-18.5 19.8-8.2 9-15.2 9.1-24.8-.8ZM228.6 81.4c12.2.7 23.1 1 34 2 3.6.3 8 1.8 8 6.7 0 5.6-4.6 5.2-8.3 5.1-6.3 0-9.7 2.7-12.5 8.6-3.4 7.4-6.9 15.3-18 14.8-10.5-.5-15.1-7.2-18.1-15.2-2.2-5.7-5-8.4-11-8.2-3.4.1-7.1-.2-7.5-4.9-.4-5 3-6 7-7.2a67.9 67.9 0 0 1 26.4-1.7Z" fill="#000"/></g><g transform="translate(610 680)"></g><g transform="translate(774 657)"><path d="M81.4 35C60 29.6 52 33.2 40 52.6c-2.4 4-3.4 11.4-10.6 7-5.6-3.4-5.3-8.8-2.6-14.6a51.4 51.4 0 0 1 38-30.7 33.1 33.1 0 0 1 37.5 26.4c.9 5.3.1 10-4.8 13.6-11.2-1.3-8-14.2-16-19.1ZM246.2 32.8c14-6.2 27-12.4 41.2-1.9 5.1 3.7 9 8.8 11.3 14.7 2 5 2.3 10.7-2.7 13.8-5.7 3.5-8.1-2.1-11-5.6-10.4-12.8-18.4-13.7-32.4-4.6-4 2.6-6.8 8-13.5 7-5.7-9.6-.1-16.3 7-23.4Z" fill="#000"/></g><g transform="translate(0 559)"></g></g></svg> | |
+1 −0 viewer/assets/avatars/luna.svg 新增 查看文件
| @@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1744 1744" fill="none" shape-rendering="auto"><metadata xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"><rdf:RDF><rdf:Description><dc:title>Notionists</dc:title><dc:creator>Zoish</dc:creator><dc:source xsi:type="dcterms:URI">https://heyzoish.gumroad.com/l/notionists</dc:source><dcterms:license xsi:type="dcterms:URI">https://creativecommons.org/publicdomain/zero/1.0/</dcterms:license><dc:rights>Remix of „Notionists” (https://heyzoish.gumroad.com/l/notionists) by „Zoish”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)</dc:rights></rdf:Description></rdf:RDF></metadata><mask id="viewboxMask"><rect width="1744" height="1744" rx="0" ry="0" x="0" y="0" fill="#fff" /></mask><g mask="url(#viewboxMask)"><g transform="translate(531 487)"><path d="M554 727.7c-99.2 297-363.8 388.6-503.7 19.8-19.3-50.7 31-69.5 66.2-91.9 24.1-15.3 36.8-28.5 35.3-42.2-7-64.4-36.9-243.8-36.9-243.8l-3-5.8s.7-1.6-2.2 1.2c-3 3-9.9 34.2-37 34.2-24.5 0-49.2-10.9-61-86.3C7.2 285.6 9.6 214 40 201c12.5-5.3 24-7.2 35.2-.8 11.3 6.4-13-22 112-126C268.4 6.4 396.7-3.5 448.5 8 500.3 19.5 552 44.8 574.9 98.5c27.8 65-25.9 114.3-14 262.5-2.2 53.6.8 171.2-146.6 210.6-28 7.5-19.3 48.4 22.7 58.4 67 21 117 72.3 117 97.9" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="m554 266.2.1-1.4c4.1-36.4 8.2-71.7 27.1-103.4 6.5 4.4 5.7 10 3.7 15.2-19.9 51.2-18 104.4-16.2 157.6l.4 14c2.1 66.4-14.5 126.8-58.7 177.5-15.4 17.6-35.8 29.8-56.5 40.3-21.4 11-25.9 20.1-19.2 43.6l.8 2.6c1.4 3.9 2.8 7.9-1 11.8-4.5 4.6-9.5 3.3-14.8 1.8l-.6-.1a406.4 406.4 0 0 1-137-68.3c-6-4.4-10.8-10.3-15.5-16.1l-.3-.4c-2.5-3-3-7.8.5-10.4 3.3-2.5 5.8-.5 8.7 1.8l1 .9a145.5 145.5 0 0 0 76.3 31.7c13.4 1.4 26.6.9 40 .4 7.4-.3 14.8-.6 22.3-.5 10.2 0 18.7-4.7 26.7-9.2l2.8-1.6c27.8-15.5 54.3-32.8 72.2-60.7 16.1-25 25.9-52.2 31.6-80.9 7.2-36.1 6.6-72.7 6-109.8-.3-12-.5-24.2-.5-36.4ZM50.6 190.8c21.9-1.7 34 11.2 44.3 26.3a140.4 140.4 0 0 1 22.4 61.5c.5 3.7 1 7.6-1.2 11.3-4.5.6-4.9-3-5-5.6-.5-20.7-9.7-38.7-18.9-56.1-6.6-12.5-16.2-24.6-31.4-27.6-17.2-3.5-33 12-40.8 32.2-14.5 37.6-12 74.6 1.4 111 5.8 15.9 13.1 32.1 27.8 43.2 14.8 11.3 32.7 9.3 43.6-5.7l2-2.5c2-2.6 4-5.1 5-8 2.1-5.8 5.4-11.2 11.3-10.4 6.8 1 8 8.3 8.7 14a3661 3661 0 0 0 22 156.7l5.9 38.8c2.6 17.1 5.6 41.7 3.6 52.1a28 28 0 0 0-.3 2.2c-.4 2.8-.6 5-4.2 5.5-4.9.8-7-2-7.7-6.4-2.3-17-3-23.6-4-49.6-.9-25.2-5.6-50-10.4-74.9l-5-27c-5.2-30.8-10.3-62-10.8-97l-2 3c-7.6 11.3-13.7 20.5-24.5 24a40.5 40.5 0 0 1-46.1-12.5 127.8 127.8 0 0 1-28.8-55.8c-8.4-34-9.9-67.1.9-100.6 5.2-16.1 23.7-44.7 42.2-42Zm34.6 127.5c4.4 3.2 8.4 6 12-5.4-1.1-42.2-14.7-69.2-35.8-70.3 11.2 14.6 22 28.8 23 48.5a32.3 32.3 0 0 1-10.7-8.8c-2-2.2-4-4.4-6.5-6l-3-2.4c-4.8-3.6-9.7-7.4-17.8-4.5 3.8 5.8 9 10 14.3 14 6 4.7 12 9.3 15.6 16.5-10.6 7.7-15.2 17.7-9.7 29.9 4.8 10.5 11.9 19.2 25.9 19.8-.6-6.3-4.7-10.9-8.8-15.4-5-5.4-9.7-10.6-7.5-18.6 3.2-1.5 6.2.7 9 2.7Z" fill="#000"/></g><g transform="translate(178 1057)"><path d="m1346 688-1365-3.3s11.3-97 44.2-189.1c41-115.2 106.9-232 124.6-246.1 20.8-16.8-11.6-18.2 3.4-41.2 33.4-51.1 146.5-97.5 179.3-114.1C391 64.4 496.8 46.4 496.8 46.4L524 100s63.4 21.9 138.2 24.4c40.4 1.3 134-29.5 134-29.5L784.9 37s169 34.8 252.6 85.6c48.2 29.3 108.2 75 109.7 101.2 2.1 39.8 1.7 36.7 24 51.9 53.3 36.2 98.4 122 120.8 191.2 17.5 54.2 54 221.1 54 221.1Z" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="M300.3 563.4C320.7 604 341 644.7 356 688c6.6 0 12 0 17.6-1l-4.2-11c-6.2-16.4-12.3-32.3-19.5-47.8a5867.5 5867.5 0 0 0-34.2-70.7c-9.3-19.2-18.7-38.3-27.8-57.5-3.9-8-6-16.9-1.3-25.8 6.7-12.8 12.5-26 18.3-39.2l5.2-11.8c11-24.4 24.4-47.6 37.9-70.9a972.6 972.6 0 0 0 30.5-55c8-16.3 5.5-24.5-12.1-30A48 48 0 0 0 356 265c-8.6-.7-17.2-1.2-25.8-1.7-26.3-1.5-52.7-3-78.4-10.8-7.9-2.4-16.1-3.7-24.4-5-8-1.3-16-2.6-23.7-4.9l-4.6-1.3c-14.7-4.2-29.9-8.6-41.3-20.3l1.8-2.4c1-1.3 1.8-2.5 2.7-3.5 25.4-28.7 58.7-47 92-65.1l20-11c20.1-11.5 41.2-21.4 62.2-31.4 8-3.7 15.9-7.4 23.7-11.3a391.7 391.7 0 0 1 61-24.8c10.6-3.1 21.3-5.6 32-8 7.8-1.9 15.6-3.7 23.3-5.7 20-5.3 23.7-4 28.9 15.7l9 34.2c9.6 35.4 19.1 70.8 26.7 106.6 8.7 40.7 14.4 82 17.2 123.5 1.5 23.6 4.1 47.2 6.8 70.7 3.6 32.2 7.2 64.3 8 96.7.5 20.8-.2 41.6-.9 62.4l-.8 29a434 434 0 0 1-3.3 40.2c-2 17-3.9 34-3.2 51.2 6.6 0 12.1 0 17.7-1.2l.6-16.2c.2-10.2.5-20 1.6-29.6 5.6-51 4.8-102 3.7-153-.8-33.6-3.6-67-8.4-100.2-2.5-17.6-3.5-35.2-4.5-52.8-1.3-23-2.6-46.1-7.4-69a1633 1633 0 0 1-6.6-34.2c-3.8-20.7-7.7-41.4-13-61.8-.2-1-.6-2-1-3-1.2-3-2.4-6 .6-8.9 4-3.8 9.1-2.7 14-1.4 41 11 82.7 13.9 125.1 10.6 31.5-2.4 62.6-5.8 91.5-19.5 8.6-4 15.4-1.5 17.3 9 1 5.6 1.7 11.2 2.4 16.9 1 7.9 2.1 15.8 3.8 23.4 7.8 34.8 9.9 70 12 105.2 1 16.1 2 32.2 3.4 48.3 1.2 12 2 24.2 2.8 36.3 1 14.6 2 29.1 3.6 43.7 6.3 60.7 4.7 121.5 2.7 182.3l-.7 20c-.7 18.4-1.4 36.7-1.4 55 5.7 0 10.3 0 15.3-1l.9-5.3c1-6.5 1.9-12.5 2-18.4l.3-44.7c0-28 .2-56.2 1.5-84.2 1.7-37 .7-74-3.1-111-2.7-26.2-4.5-52.4-6.3-78.7-1.7-24.1-3.4-48.3-5.7-72.4-4.5-46-10.5-92-20.4-137.3a2508 2508 0 0 1-13.8-68.7c-.5-2.4-.4-5-.4-7.4v-4c-.2-6.4 2.7-8.5 9.1-7.2a637.9 637.9 0 0 1 78.9 18.8c21 6.9 41.5 15 62 23l22 8.6a444.7 444.7 0 0 1 140.6 84.8 136 136 0 0 1 31.5 40.6c4.6 9.3-.3 19.2-9.5 21l-9.2 1.9c-22.6 4.4-45.2 9-67.3 15.7a250.5 250.5 0 0 0-92.5 50.8c-7.6 6.6-8.8 14.7-4.6 23.2 4 8 8.4 16 13.2 23.6a1769 1769 0 0 0 17.6 27.5c14.9 22.8 29.7 45.6 41.8 70 3.3 6.5 4 13-.2 18-9.4 10.8-16.8 22.9-24.2 35a360.5 360.5 0 0 1-16.9 25.7c-21 28.2-39 58.5-53.4 90.3-3.5 7.9-6.6 16-9.6 24.2-4.8 13-9.7 25.8-16.5 37.7 7.5 0 13.9 0 20.5-1a423 423 0 0 1 41.4-93c23-37.1 47.3-73.3 72-109.3 6.3-9 9.7-18.8 3.9-31-8-16.8-17.5-32.7-27-48.5l-.4-.7c-13.8-23-28.6-45.6-43.5-68-4.7-7.2-2.2-12 3-16.8a157.4 157.4 0 0 1 41.6-26.7 353.1 353.1 0 0 1 102.4-29.7c12.8-1.7 22.2.7 32 7.6 34.4 24.3 64.3 51 82.2 90.3l8.6 18.7a885 885 0 0 1 35.5 84c12.1 35.3 23.2 70.9 31.8 107.4 3.1 13.3 6 26.7 9 40 5.8 25.6 11.6 51.2 18.2 76.7 4.8 0 8.5 0 11.9-1a992 992 0 0 1-12.8-65c-4.6-27-9.3-54-16.8-80.4l-1.5-5.3c-6.6-23.2-13.2-46.4-21-69A883.4 883.4 0 0 0 1247 346c-18.1-34.7-45.6-61.4-77.4-84.9-1.5-1-3.2-1.9-5-2.8-6-3.1-12.7-6.5-9.7-16.8 5.2-17.6 1.8-33.7-13.6-46.3-3.5-3-6.5-6.3-9.6-9.7l-2.9-3.3c-41.3-45.3-95.5-72.5-151.3-97-36.3-15.9-74.3-28.1-112.2-40a328.3 328.3 0 0 0-72.7-15c-12.8-1-18 4.8-16.5 16.8.4 3 .8 6 1 9 .8 6.7 1.5 13.5 3.1 20 2.7 11.2-3.2 17.2-12 21.2a200.4 200.4 0 0 1-69.1 18.8c-52.7 3.3-105 .7-155.5-16.9-8.4-3-13.2-7.4-16.8-14.7-2.4-5-4.6-10.2-6.8-15.3-3.3-7.8-6.7-15.6-11-23-5.3-9.6-11.7-11.8-21.5-8.6-6.3 2-12.7 3.7-19.2 5C432.9 50.4 397.8 59 365 75a2335 2335 0 0 0-135.6 70.3c-30 17.2-59.8 34.8-82.3 61.3-6.2 7.3-7.5 14.5-2.6 22.2 4.3 6.5 4 11.5-2 17a139.2 139.2 0 0 0-22.6 30c-1.8 2.8-3.5 5.7-5.4 8.5-20.9 32-39.5 65.2-55.8 99.5A875.2 875.2 0 0 0 26.5 463l-1 2.8c-7.8 22-15.6 43.9-21.2 66.5-1.7 7.2-3.7 14.4-5.6 21.5a565 565 0 0 0-8.7 35.3c-6.7 32.9-12.2 66-17 98.9 6.6 0 12.1 0 18-1l7.8-46 6.3-36.6c11-63 32.5-123 56.8-182a839.1 839.1 0 0 1 90.7-160.9c4-5.6 8.9-7.2 15.6-7.8 16.3-1.5 31.5 2.9 46.6 7.2a241 241 0 0 0 23.5 6l15.6 2.8c27 5 53.8 10 81.5 11.4 2.8.2 5.7.2 8.7.2 8 0 16.4 0 25.1 3L361 298l-23.7 38.6a730.6 730.6 0 0 0-49.8 95.6c-5.9 13.2-11.7 26.3-18.1 39.1-3.8 7.6-5 14.6-1.8 22l1.3 3c6 14 11.9 27.8 18.6 41.4l12.9 25.8Zm475-452c5-2.6 10.4-5.4 11.2 3.7 1.8 10.6-5.3 14.2-11.4 17.3l-1.8 1c-17.5 9.2-36.8 14-56.6 16.2a434 434 0 0 1-144.6-5.8c-9.5-2.2-18.7-5.6-27.3-10-5.6-2.7-8-6.8-6.7-12.5 1.4-6 5.4-5 9.5-4 .7.3 1.5.5 2.3.6l19.3 3.8c16.5 3.3 33 6.6 49.7 9a291 291 0 0 0 103.5-2.9l.9-.1c18-3.8 35.8-7.5 52-16.2Z" fill="#000"/><path d="M199 688c3-35 7-69.8 11.1-104.7 3.6-29.7 4-60 17-88a38 38 0 0 1 3.8-6.7c2.3-3.1 5-6.8 9.5-5.2 5.2 1.7 3.5 6.4 2.7 9.9-7.8 32.1-13.1 64.8-17.4 97.5-4 31.5-6 63.3-9.2 96-5.6 1.2-11 1.2-17.5 1.2ZM1145.9 688c-9.8-36.3-12.8-73.7-23.3-109.7-6.2-21-9.8-42.8-17.9-63.4-1.6-4.2-.5-9 4-11.2 4.4-2.3 7.4 1.3 9.9 4.3a55.2 55.2 0 0 1 9.9 22.1c11.5 43.4 20.8 87.4 27.6 131.7 1.2 8 1.2 16 1.9 25.2-3.5 1-7.3 1-12.1 1Z" fill="#000"/></g><g transform="translate(266 207)"><path d="M401.3 246.7c8.1-5.9 18.5-6.8 20.8-19.3 1.3-7.2 9.5.4 14.5-1.3-8.3-22.8-3.5-31.4 17.3-31.1 11.8-21 14.1-22 30.3-10.7 5.3-8.2 2.6-17.4 3-26 .6-8.9 0-18 1-26.7.8-5.4 3.5-11 10-12.1 6-1 10 2.1 13.9 6.8 7.3 9 18.6 14 23.4 29.2 8-24.7-7.1-49.2 14.3-67.2l32.8 25c3.6-7.3 1.2-15 1.7-22.1.4-6.8 0-13.7.4-20.5.2-4.3 1.2-9 6-10.3 4-1.1 5.5 3.1 8 5.4 15 14 29.5 28.6 39.4 47.7V86c-.2-5.1 1-10.2 3.2-14.8 4-8 8.6-9.6 15.7-3.2 13 11.9 24.8 24.5 29.3 42.2.7 3.8 3.2 6.9 6.8 8.4 3.7-14.4-2.2-26.8-6.2-39.4-3.3-10.5-4.7-20.4 2.6-30.3 5.1-6.9 10-7.3 13.7-.4 9 16.6 31.4 17 40 33.7 20.7 1.5 29.8 16.7 38.6 32.3 3 5.2 4.5 11.2 4 17.2-.6 8.2 2 15.8 5.1 23.6 3-10.1 12.8-17.8 6.3-31.7 10.1 3.2 14.7 7.6 16.7 14.2 2.7 9 10.2 15.7 12 25.2a7 7 0 0 0 4.1 4.5c31.4 9 36.5 35 40.3 62 3.4 24.4-7.1 45.8-14 68-1.3 4.4-3 8.7-5.4 16 7-4.4 12.3-6.6 16.2-10.4 7-6.9 12-4.3 16.6 2.4 7.6 11.3 5 24 3.4 36-1 8.1 17.1 49.6-14.4 89.5-8.9 11.2-19 17-25.8 28-2.8 4.6-7.8 2.2-9.7-2.6-1.9-4.7-4.2-9.8-4.2-14.7.5-37-15.6-66-43.3-89.4-1-.8-2.7-1.4-2.9-2.4-3.5-19-18.4-14.1-31-15.6-18.4-2.1-37-5.2-50.1-20.6-3.3-3.8-7-4-11.2-4.8-23.3-4.2-46.4 27.3-62.4 9.4C616.8 301 599 300.1 579 303c-23.2 3.2-41.8 16.8-60.8 28.3-19.1 11.6-104 41.6-114.4 124.4a62 62 0 0 0 4 31c4.3 10.5 4.7 21.6 8.5 32 4.3 11.7.2 23.2-6.7 32.6-6 8.4-10 17.7-14.8 26.6-2.2 4.4-4.5 9.3-9.6 8.8-6-.6-7.5-6-8-11.5-2-24.2-6.5-47.8-20.2-68.7-4.1-6.3-7.6-13.4-12.9-18.7-11.4-11.5-13.9-26-15.3-40.8-3.5-36.1 7.2-69 19.6-102.6 13-35 35-64.5 53-97.6Z" fill="#000"/></g><g transform="translate(791 871)"><path d="M153.6 87c7.4-.8 15.8 2 22.6-5.6-18-2.4-34.8-5.5-54.2.3 10.7 7.3 20 7.4 31.6 5.4Z" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="M148.3 98.9c3.5-.2 7-.5 10.5-.5l6.3-1.7c3.8-1.2 7.3-2.2 10.8-2.5 8.7-.7 15.7-3.7 15.9-13 .1-8.8-6.9-13-14.9-15-19-5-38-2.5-56.7 1.6-6.2 1.4-12 5.7-12.3 13.2-.3 7.4 5 11 11 14.1 9.3 5 19.2 4.4 29.4 3.8Zm11.3-12c-2 0-4 0-6 .2-11.7 2-20.9 1.9-31.6-5.4 17.9-5.4 33.6-3.2 50-.9l4.2.6c-5 5.6-11 5.6-16.6 5.5Z" fill="#000"/></g><g transform="translate(653 805)"></g><g transform="translate(901 668)"><g fill="#000"><path d="M75.1 117.2c3.9 16.3 7.4 31.6 11.2 46.7 5 19.6 2.1 28.4-15.7 35.9-20 8.2-45.5 7-59.6-15.5-2.2-3.5-3.6-6.6-3-10.6.7-3.2 1.9-5.7 5.4-6.3 3.7-.6 5 1.5 6.4 4.6 9.4 19.7 23.7 25.2 43.7 17.1 10.1-4 13.3-11.8 10-21.6a292 292 0 0 1-13.5-67c-1.5-14.8-4.2-30.2 5.7-43.3h4l5.4 60Z"/><path d="M31.5 177.5c-5.7-8.1 0-10.7 5.5-12.3 4-1.2 8.2 1 7.9 5.6-.5 8-6.1 8.8-13.4 6.7Z"/></g></g><g transform="translate(610 680)"><path d="M407.4 122.5c13 .3 25.4 1.1 37.6 2.5 3 .4 5 3.3 5 6.7 0 3.3-1.7 5.6-4.7 7-11.2 4.8-22 8.2-33.7.2-6.5-4.5-9-8.7-4.2-16.4ZM247.6 117c7 0 7.8 3.8 7 8.5-2 10.2-20 22.4-30.4 20.5-5.9-1-10.5-4-10.7-10.5-.2-6.7 4.8-8.2 10.3-8.4 9-.3 15.8-5.2 23.8-10ZM215.1 76.6c5-12 9-29.4 24.1-22.5 20.7 9.4 13.9 30.7 9.7 47.4-1.6 6.3-14.5 15.9-18.3 14.3-16.3-6.8-19.2-21.7-15.5-39.2ZM442 113.4c-8.6 7.5-17 7.6-22.2-1.5-9-16-8.6-32.8 3.3-47.2 2.5-3 13.8-3.6 16.3-1 14 15 14.6 31.8 2.6 49.7Z" fill="#000"/></g><g transform="translate(610 680)"></g><g transform="translate(774 657)"><path d="M131.2 43.2c-5.6 16.8-6.6 15.4-23 11.6-26.2-6-52.7-19.2-80.3-4.3-2 1.1-5 1-7.6.8-3.6-.2-8.2 1.3-10.1-3.3-2.1-5 1.5-8.3 5.3-10.3C35.2 27.7 53 13.4 77.9 16c12.8 1.3 26-2.8 39.3-2.4 18.8.7 22.4 5.7 16 23.9l-2 5.8ZM298.7 21.8c9.6 6.6 12.5 16.8 18.3 25a7 7 0 0 1-.6 9.4c-2.4 2.7-5.4 2.8-8.1 1.2-19.1-11-38.9-6.4-58-1.2-10.2 2.7-14.6-.8-17.2-9.2-1.7-5.7-2.9-11.5-3.6-17.4-1.3-9.8 6.9-11.9 13-12.2 18.5-.9 37.4-4.5 56.2 4.4Z" fill="#000"/></g><g transform="translate(0 559)"></g></g></svg> | |
+1 −0 viewer/assets/avatars/max.svg 新增 查看文件
| @@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1744 1744" fill="none" shape-rendering="auto"><metadata xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"><rdf:RDF><rdf:Description><dc:title>Notionists</dc:title><dc:creator>Zoish</dc:creator><dc:source xsi:type="dcterms:URI">https://heyzoish.gumroad.com/l/notionists</dc:source><dcterms:license xsi:type="dcterms:URI">https://creativecommons.org/publicdomain/zero/1.0/</dcterms:license><dc:rights>Remix of „Notionists” (https://heyzoish.gumroad.com/l/notionists) by „Zoish”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)</dc:rights></rdf:Description></rdf:RDF></metadata><mask id="viewboxMask"><rect width="1744" height="1744" rx="0" ry="0" x="0" y="0" fill="#fff" /></mask><g mask="url(#viewboxMask)"><g transform="translate(531 487)"><path d="M554 727.7c-99.2 297-363.8 388.6-503.7 19.8-19.3-50.7 31-69.5 66.2-91.9 24.1-15.3 36.8-28.5 35.3-42.2-7-64.4-36.9-243.8-36.9-243.8l-3-5.8s.7-1.6-2.2 1.2c-3 3-9.9 34.2-37 34.2-24.5 0-49.2-10.9-61-86.3C7.2 285.6 9.6 214 40 201c12.5-5.3 24-7.2 35.2-.8 11.3 6.4-13-22 112-126C268.4 6.4 396.7-3.5 448.5 8 500.3 19.5 552 44.8 574.9 98.5c27.8 65-25.9 114.3-14 262.5-2.2 53.6.8 171.2-146.6 210.6-28 7.5-19.3 48.4 22.7 58.4 67 21 117 72.3 117 97.9" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="m554 266.2.1-1.4c4.1-36.4 8.2-71.7 27.1-103.4 6.5 4.4 5.7 10 3.7 15.2-19.9 51.2-18 104.4-16.2 157.6l.4 14c2.1 66.4-14.5 126.8-58.7 177.5-15.4 17.6-35.8 29.8-56.5 40.3-21.4 11-25.9 20.1-19.2 43.6l.8 2.6c1.4 3.9 2.8 7.9-1 11.8-4.5 4.6-9.5 3.3-14.8 1.8l-.6-.1a406.4 406.4 0 0 1-137-68.3c-6-4.4-10.8-10.3-15.5-16.1l-.3-.4c-2.5-3-3-7.8.5-10.4 3.3-2.5 5.8-.5 8.7 1.8l1 .9a145.5 145.5 0 0 0 76.3 31.7c13.4 1.4 26.6.9 40 .4 7.4-.3 14.8-.6 22.3-.5 10.2 0 18.7-4.7 26.7-9.2l2.8-1.6c27.8-15.5 54.3-32.8 72.2-60.7 16.1-25 25.9-52.2 31.6-80.9 7.2-36.1 6.6-72.7 6-109.8-.3-12-.5-24.2-.5-36.4ZM50.6 190.8c21.9-1.7 34 11.2 44.3 26.3a140.4 140.4 0 0 1 22.4 61.5c.5 3.7 1 7.6-1.2 11.3-4.5.6-4.9-3-5-5.6-.5-20.7-9.7-38.7-18.9-56.1-6.6-12.5-16.2-24.6-31.4-27.6-17.2-3.5-33 12-40.8 32.2-14.5 37.6-12 74.6 1.4 111 5.8 15.9 13.1 32.1 27.8 43.2 14.8 11.3 32.7 9.3 43.6-5.7l2-2.5c2-2.6 4-5.1 5-8 2.1-5.8 5.4-11.2 11.3-10.4 6.8 1 8 8.3 8.7 14a3661 3661 0 0 0 22 156.7l5.9 38.8c2.6 17.1 5.6 41.7 3.6 52.1a28 28 0 0 0-.3 2.2c-.4 2.8-.6 5-4.2 5.5-4.9.8-7-2-7.7-6.4-2.3-17-3-23.6-4-49.6-.9-25.2-5.6-50-10.4-74.9l-5-27c-5.2-30.8-10.3-62-10.8-97l-2 3c-7.6 11.3-13.7 20.5-24.5 24a40.5 40.5 0 0 1-46.1-12.5 127.8 127.8 0 0 1-28.8-55.8c-8.4-34-9.9-67.1.9-100.6 5.2-16.1 23.7-44.7 42.2-42Zm34.6 127.5c4.4 3.2 8.4 6 12-5.4-1.1-42.2-14.7-69.2-35.8-70.3 11.2 14.6 22 28.8 23 48.5a32.3 32.3 0 0 1-10.7-8.8c-2-2.2-4-4.4-6.5-6l-3-2.4c-4.8-3.6-9.7-7.4-17.8-4.5 3.8 5.8 9 10 14.3 14 6 4.7 12 9.3 15.6 16.5-10.6 7.7-15.2 17.7-9.7 29.9 4.8 10.5 11.9 19.2 25.9 19.8-.6-6.3-4.7-10.9-8.8-15.4-5-5.4-9.7-10.6-7.5-18.6 3.2-1.5 6.2.7 9 2.7Z" fill="#000"/></g><g transform="translate(178 1057)"><path d="m1351 688-1370-3.3s11.4-97 44.4-189.1c41.2-115.2 107.2-232 125-246.1 20.9-16.8-11.6-18.2 3.5-41.2 33.5-51.1 147-97.5 179.9-114.1 58.7-29.8 164.9-47.8 164.9-47.8l27.2 53.5s63.6 21.9 138.7 24.4C705 125.6 799 94.8 799 94.8L787.9 37s169.6 34.8 253.5 85.6c48.3 29.3 108.6 75 110 101.2 2.2 39.8 1.8 36.7 24.1 51.9 53.5 36.2 98.8 122 121.3 191.2C1314.4 521.1 1351 688 1351 688Z" fill="#fff"/><path d="m842 687-269 1s19-182.5-1.4-325c-6.2-44.2-32.6-224.4-32.6-224.4s73.7 24.7 131.4 24.7C733 163.3 798 131 798 131s24.3 69 29 182.4l15 373.6Z" fill="#000"/><path fill-rule="evenodd" clip-rule="evenodd" d="M301.5 563.4c20.5 40.6 41 81.3 56 124.6 6.6 0 12 0 17.7-1l-4.3-11a672.5 672.5 0 0 0-19.6-47.8 5876 5876 0 0 0-34.2-70.7c-9.4-19.2-18.8-38.3-28-57.5-3.8-8-6-16.9-1.3-25.8 6.7-12.8 12.6-26 18.4-39.2l5.2-11.8c11-24.4 24.5-47.6 38-70.9 10.6-18.1 21.2-36.3 30.6-55 8-16.3 5.6-24.5-12-30a48.4 48.4 0 0 0-10.5-2.3c-8.6-.7-17.2-1.2-25.9-1.7-26.4-1.5-52.9-3-78.6-10.8-8-2.4-16.3-3.7-24.6-5-8-1.3-16-2.6-23.8-4.9l-4.6-1.3c-14.8-4.2-30-8.6-41.4-20.3l1.7-2.4c1-1.3 1.8-2.5 2.8-3.5 25.5-28.7 59-47 92.3-65.1l20-11a963.1 963.1 0 0 1 62.6-31.4c7.9-3.7 15.8-7.4 23.7-11.3A394 394 0 0 1 423 71.5c10.6-3.1 21.4-5.6 32.2-8 7.8-1.9 15.6-3.7 23.3-5.7 20.1-5.3 23.8-4 29 15.7l9.1 34.2a2051 2051 0 0 1 26.8 106.6c8.7 40.7 14.4 82 17.2 123.5a1480 1480 0 0 0 6.8 70.7c3.7 32.2 7.3 64.3 8 96.7.5 20.8-.1 41.6-.8 62.4l-.8 29c-.3 13.5-1.8 26.9-3.3 40.2-2 17-4 34-3.3 51.2 6.7 0 12.2 0 17.8-1.2l.6-16.2c.2-10.2.5-20 1.6-29.6 5.7-51 4.8-102 3.7-153-.7-33.6-3.6-67-8.4-100.2a605.8 605.8 0 0 1-4.6-52.8c-1.3-23-2.6-46.1-7.3-69a1627 1627 0 0 1-6.7-34.2 906 906 0 0 0-13-61.8c-.2-1-.6-2-1-3-1.2-3-2.5-6 .6-8.9 4-3.8 9.1-2.7 14-1.4A373 373 0 0 0 690 167.3c31.6-2.4 62.8-5.8 91.8-19.5 8.7-4 15.5-1.5 17.4 9 1 5.6 1.7 11.2 2.4 16.9 1 7.9 2.1 15.8 3.8 23.4 7.8 34.8 10 70 12 105.2 1 16.1 2 32.2 3.5 48.3 1.1 12 2 24.2 2.8 36.3 1 14.6 2 29.1 3.6 43.7 6.3 60.7 4.7 121.5 2.7 182.3l-.7 20c-.7 18.4-1.4 36.7-1.4 55 5.8 0 10.4 0 15.4-1l.8-5.3c1-6.5 2-12.5 2-18.4l.3-44.7c.1-28 .3-56.2 1.6-84.2 1.7-37 .6-74-3.2-111-2.7-26.2-4.5-52.4-6.3-78.7-1.7-24.1-3.4-48.3-5.7-72.4-4.5-46-10.5-92-20.5-137.3a2499.2 2499.2 0 0 1-13.8-68.7c-.5-2.4-.4-5-.4-7.4v-4c-.3-6.4 2.7-8.5 9.1-7.2a642.2 642.2 0 0 1 79.2 18.8c21 6.9 41.7 15 62.3 23 7.3 3 14.7 5.8 22 8.6a446.7 446.7 0 0 1 141 84.8c13 11.7 24.1 25.1 31.8 40.6 4.5 9.3-.3 19.2-9.6 21l-9.2 1.9c-22.7 4.4-45.4 9-67.6 15.7a251.6 251.6 0 0 0-92.9 50.8c-7.6 6.6-8.7 14.7-4.5 23.2 4 8 8.4 16 13.2 23.6 5.8 9.2 11.7 18.4 17.7 27.5a705.7 705.7 0 0 1 42 70c3.2 6.5 4 13-.3 18-9.4 10.8-16.8 22.9-24.3 35a360.3 360.3 0 0 1-16.9 25.7 486 486 0 0 0-53.6 90.3c-3.6 7.9-6.6 16-9.7 24.2-4.8 13-9.7 25.8-16.5 37.7 7.5 0 14 0 20.6-1 10.7-33 23.5-64.2 41.5-93 23-37.1 47.5-73.3 72.3-109.3 6.3-9 9.7-18.8 3.8-31a589 589 0 0 0-27-48.5l-.4-.7c-13.9-23-28.7-45.6-43.7-68-4.7-7.2-2.2-12 3-16.8a158.1 158.1 0 0 1 41.7-26.7 355.4 355.4 0 0 1 102.9-29.7c12.8-1.7 22.3.7 32 7.6 34.6 24.3 64.6 51 82.6 90.3l8.7 18.7c12.8 27.6 25.6 55.2 35.5 84a1107 1107 0 0 1 41 147.4c5.8 25.6 11.6 51.2 18.2 76.7 4.9 0 8.6 0 12-1-5.3-21.6-9-43.3-12.8-65-4.7-27-9.4-54-17-80.4l-1.4-5.3c-6.6-23.2-13.2-46.4-21.1-69a882 882 0 0 0-52-121.3c-18.2-34.7-45.8-61.4-77.7-84.9-1.4-1-3.2-1.9-5-2.8-6-3.1-12.7-6.5-9.7-16.8 5.2-17.6 1.8-33.7-13.7-46.3a86.8 86.8 0 0 1-9.6-9.7l-3-3.3c-41.4-45.3-95.8-72.5-151.8-97-36.4-15.9-74.5-28.1-112.6-40-23.7-7.3-48-13.2-73-15-12.7-1-18 4.8-16.5 16.8.4 3 .8 6 1 9 .8 6.7 1.5 13.5 3.1 20 2.8 11.2-3.2 17.2-12 21.2-22 9.8-45.4 17.3-69.4 18.8-52.8 3.3-105.4.7-156-16.9-8.5-3-13.3-7.4-16.9-14.7-2.5-5-4.7-10.2-6.8-15.3a224 224 0 0 0-11-23c-5.4-9.6-11.8-11.8-21.6-8.6-6.4 2-12.8 3.7-19.3 5C434.6 50.4 399.3 59 366.5 75c-46 22.4-91.7 45.1-136 70.3-30.3 17.2-60 34.8-82.7 61.3-6.2 7.3-7.5 14.5-2.5 22.2 4.2 6.5 3.9 11.5-2 17a139.2 139.2 0 0 0-22.8 30c-1.8 2.8-3.5 5.7-5.4 8.5-21 32-39.7 65.2-56 99.5A873.4 873.4 0 0 0 26.7 463l-1 2.8c-7.9 22-15.7 43.9-21.3 66.5a925 925 0 0 1-5.6 21.5 563.4 563.4 0 0 0-8.8 35.3c-6.6 32.9-12.2 66-17 98.9 6.7 0 12.1 0 18-1l8-46c2-12.3 4-24.5 6.2-36.6 11-63 32.6-123 57-182a838.3 838.3 0 0 1 91-160.9c4-5.6 9-7.2 15.7-7.8 16.4-1.5 31.6 2.9 46.8 7.2 7.8 2.3 15.6 4.5 23.5 6l15.7 2.8c27 5 54 10 81.8 11.4 2.9.2 5.8.2 8.7.2 8.1 0 16.5 0 25.3 3l-8.4 13.6-23.8 38.6a729.7 729.7 0 0 0-50 95.6 948.5 948.5 0 0 1-18.2 39.1c-3.8 7.6-4.9 14.6-1.7 22l1.3 3c6 14 11.9 27.8 18.6 41.4l13 25.8Zm476.8-452c4.8-2.6 10.3-5.4 11.2 3.7 1.8 10.6-5.4 14.2-11.5 17.3l-1.8 1c-17.5 9.2-37 14-56.8 16.2a437 437 0 0 1-145.1-5.8c-9.6-2.2-18.8-5.6-27.4-10-5.6-2.7-8.1-6.8-6.8-12.5 1.5-6 5.5-5 9.5-4l2.4.6 19.4 3.8c16.5 3.3 33.1 6.6 49.9 9a293 293 0 0 0 103.8-2.9l1-.1c18-3.8 35.8-7.5 52.2-16.2Z" fill="#000"/><path d="M199 688c3-35 7-69.8 11.4-104.7 3.6-29.7 4-60 17.4-88 1-2.4 2.3-4.6 3.8-6.7 2.3-3.1 5-6.8 9.7-5.2 5.3 1.7 3.6 6.4 2.7 9.9-8 32.1-13.3 64.8-17.7 97.5-4.1 31.5-6.2 63.3-9.4 96-5.8 1.2-11.2 1.2-18 1.2ZM1149.9 688c-9.8-36.3-12.8-73.7-23.3-109.7-6.2-21-9.8-42.8-17.9-63.4-1.6-4.2-.5-9 4-11.2 4.4-2.3 7.4 1.3 9.9 4.3a55.4 55.4 0 0 1 9.9 22.1c11.5 43.4 20.8 87.4 27.6 131.7 1.2 8 1.2 16 1.9 25.2-3.5 1-7.3 1-12.1 1Z" fill="#000"/><path fill-rule="evenodd" clip-rule="evenodd" d="M797.4 536.7c2.5 2.7 5 5.4 6.9 8.6 2 4 2.8 10-1 13.3-2.5 1-5 0-7.2-1l-.7-.3a96 96 0 0 1-12.4-7 586 586 0 0 1-52.4-40.1 1501.4 1501.4 0 0 1-53-46.5c-10.3-9.3-20.6-18.7-30.8-28.2a281.8 281.8 0 0 1-14.7-15 30.6 30.6 0 0 1-6-8.4c-6.4-17.8 7.6-21.9 22.8-24.4 10.9-1.8 22-3 33-4.2h.8a57.7 57.7 0 0 0 13.7-2.8c1-.4 1-.5 1.3-1v-.3a68.3 68.3 0 0 0-9.4-18 610 610 0 0 0-44.6-55.6 7452 7452 0 0 0-19.3-22l-2-2.3c-4.7-5.2-9.4-10.4-6.5-17.8 1.4-4.6 5.8-2.4 8.7-.6a163 163 0 0 1 11.2 7.2h.1a971.7 971.7 0 0 1 37.6 27.2 589.2 589.2 0 0 1 74.4 64 592.2 592.2 0 0 1 24.6 21.4c2.9 2.7 5.7 5.3 7.7 8.6 3.5 5.7 2 13-4 16.5a71.5 71.5 0 0 1-24.3 6.5c-8.8 1.2-17.8 2-26.7 2.7l-8.5.7c-8.3.7-16.9 1.5-22.6 3.5-.8.3-1.6.7-2.3 1.2 1.4 2.6 2.1 3.6 3.4 5.3l2.5 3.4c11 14.4 23.7 27.5 36.3 40.6A7081.6 7081.6 0 0 1 751 489c10.9 11 21.8 22 32.6 33.2l1.5 1.6 11 11.4 1.4 1.4Zm-116.6-85.3 8 7.2c15.7 14.2 31.7 28.2 48 41.8a575.5 575.5 0 0 0 44.2 34.1l-24-24.3c-14.5-14.7-29-29.4-43.3-44.5-6.8-7.3-13.3-15-19.4-22.9-.6-1-1.3-1.8-2-2.7-2.2-3.2-4.6-6.5-6-10.1-2.8-6.7-2.8-17.4 5.7-20.2a64.4 64.4 0 0 1 16.8-2.6l15.8-1.3 14-1.1 2-.2c11-1 27-2.6 34.1-7.2-5-5.7-14-13.4-22.3-20.6l-10.6-9.3a3562 3562 0 0 1-27.4-24.7c-8.3-5.8-16.5-11.8-24.6-18a1554.7 1554.7 0 0 0-44-32.8c9.5 10.9 19 21.9 28.1 33.2l3.9 5c11 14 26.3 33.5 27.3 49.1.2 5.8-1.4 12.3-7.3 15.1-4.8 1.9-10 2.4-15 2.9l-5.3.6a488 488 0 0 0-32.7 4.5c-4 .7-7.2 1.4-11.2 3.7 7 8.7 30.7 30.3 47.2 45.3Z" fill="#fff"/></g><g transform="translate(266 207)"><path d="M653 303.5a178 178 0 0 0-130 3.8c-20 8-40.4 15-57.8 28.5-21.5 16.8-35.9 39.1-49.2 62.3-13 22.8-19.8 47.8-26.9 72.7-6.3 22-2.6 11.8-1.2 33.7 1.1 18.5 1 36.4-4.1 54.3-1.2 4-3.3 6.7-7.8 8.7-9.4-14.5-10.7-32-17.9-47.2-6.8-14.6-14.3-29.1-27.7-37.1-19.3-11.4-21-28.5-20.7-47 .4-33.2 0-66.6 9-98.8 3.7-13.7 12-26 17.5-39.2 13.3-32 36.5-55.7 62.7-77 15.2-12.2 20-12.1 36.5-2.5 5.1-5 2-9.9-1.5-13-7.6-6.8-5.4-12.6.5-18.3 8.6-8.5 16.2-19.3 31.4-14.4 4 1.2 7.6-3.2 11.3-5 18.1-8.8 36.3-18.5 57.3-5 7.3-20.4 23.6-24.8 41.8-27.3 30.6-4 61.3-3.3 92-2.7 12.6.3 17.4 5.8 17.7 18.3.2 4.6 0 9.2 0 15.6 10-4 13.9-11.6 16-19 3.4-13.2 10-19 24.4-18.3 13.1.7 26.1 3.5 38.5 8.1 23.8 8.7 49.5 12.5 71 27.4a43 43 0 0 1 15.6 19.2c7.7 17.4 21.7 33.2 13.8 54.9 7.9-9.8 3.7-20.5 3.8-31.6 11 2.8 10.4 12.4 12.7 19.1a37.8 37.8 0 0 1 1 20.2c-4.5 18 4.7 32.4 10.7 47.9 5 12.5 3.6 25.9.4 38.8-9.7 39.1-25.5 76-44.2 111.6-3 6-8.1 10.7-9.3 17.8-.4 2.4-2 4.7-5.5 3.9-3-.8-5-2.8-4.3-5.5 9.2-33-11.7-59.8-19.2-89.3a176 176 0 0 1-6.7-52.9c.5-9.1-3-12.7-12.4-13.5-40-3.5-76.2 19.4-114 5.8-8-2.9-16.1-5.1-25.1-8Z" fill="#000"/></g><g transform="translate(791 871)"><path d="M101.4 93.5c-2.6-12.2-2.9-25.4-21.6-18.7-2.6.9-5-3.7-3.1-6.7 4.4-7 10.7-11.9 19.6-10.9 10.6 1.3 20.9 10.6 20 19.5-.7 8.1-2 17.4-14.9 16.8Z" fill="#000"/></g><g transform="translate(653 805)"></g><g transform="translate(901 668)"><g fill="#000"><path d="M75.1 117.2c3.9 16.3 7.4 31.6 11.2 46.7 5 19.6 2.1 28.4-15.7 35.9-20 8.2-45.5 7-59.6-15.5-2.2-3.5-3.6-6.6-3-10.6.7-3.2 1.9-5.7 5.4-6.3 3.7-.6 5 1.5 6.4 4.6 9.4 19.7 23.7 25.2 43.7 17.1 10.1-4 13.3-11.8 10-21.6a292 292 0 0 1-13.5-67c-1.5-14.8-4.2-30.2 5.7-43.3h4l5.4 60Z"/><path d="M31.5 177.5c-5.7-8.1 0-10.7 5.5-12.3 4-1.2 8.2 1 7.9 5.6-.5 8-6.1 8.8-13.4 6.7Z"/></g></g><g transform="translate(610 680)"><path d="M419.6 111c-4.2-9.5-9.9-15.2-19.8-15.7-6-.3-7-5.1-8.9-9.8 2-1.5 3.5-3.7 5.3-3.8 21.1-1.7 42.4-1.8 63.5-.1 6 .4 9.3 8 3.2 10.4-10 4-12.5 13.2-18.5 19.8-8.2 9-15.2 9.1-24.8-.8ZM228.6 81.4c12.2.7 23.1 1 34 2 3.6.3 8 1.8 8 6.7 0 5.6-4.6 5.2-8.3 5.1-6.3 0-9.7 2.7-12.5 8.6-3.4 7.4-6.9 15.3-18 14.8-10.5-.5-15.1-7.2-18.1-15.2-2.2-5.7-5-8.4-11-8.2-3.4.1-7.1-.2-7.5-4.9-.4-5 3-6 7-7.2a67.9 67.9 0 0 1 26.4-1.7Z" fill="#000"/></g><g transform="translate(610 680)"><path d="M401.2 30c17.6.1 34.2-.2 50.6.5 9.6.4 19.2 2.3 28.7 3.8 3.4.6 6.2 2.3 7.5 6.1 8.7 25.6 12.5 51.2 1.5 77.2-5.7 13.7-14.6 21-30.8 21.2-26.3.3-52.7 2.5-79.1 2.2-17.3-.1-24.9-5.4-29.4-21.8C347 107 339.6 96 340 82.6c.3-7.3-6.8-8-12.2-8.6-9-1-15.7 2.5-19.6 10.8-2 4.4-1.8 9.2-1.8 13.9 0 14.5-6.9 26.2-15.8 36.6-10.8 12.7-25.9 8.5-39.6 7.5-22.8-1.6-45.6-4.5-68.4-6.4-12.7-1-23-7.7-23-20.4-.3-27.4-15.2-38.4-39.6-45.7-26.6-8-51.9-20.6-77.8-31-9.7-4-21-5.1-27.4-17.2 12.3-2.3 23.3 2 33.4 7a702 702 0 0 0 97 37.1c5.3 1.7 8.3-.4 10.4-4.5 2-4.2 3.2-8.8 5.3-12.9 9.5-18 24.6-24.3 47.4-21.2 22.2 3 44.4 6.4 67 7.4 25 1.2 30.1 7 32.3 28.6 10.5-.8 21-5 32-1.6 3.4 1 5.3-4 6.4-7 8-22.1 26.6-25 46.4-25.3 2.6 0 5.1 0 8.8.2Z" fill="#000"/></g><g transform="translate(774 657)"><path d="M56.8 30.9c9.5-10.6 21.8-16.2 31.6-25C93 1.8 98 3 101.8 7.5c3.8 4.3 7.3 8.3 2.7 14.5a83 83 0 0 1-42.7 28.3C47.4 55 32 56.5 17 59.3c-4.5.9-10.2 3.3-11.5-3.6-1.2-6.6 3.2-10 9.5-11.2 14.2-2.8 28.4-5.2 41.8-13.6ZM289.9 29c11.3 2 18 11 27.8 14.2 3.8 1.2 8.4 4.7 6.6 9.5-2.1 5.8-8 4.3-12.2 3a450.2 450.2 0 0 1-39.2-14.5c-12.8-5.6-25.1-12.4-37.4-19-6-3.2-11.6-7.8-7.4-15.2 4.2-7.3 11-9.5 18.3-3.7C259.4 13.8 275 19.8 290 29Z" fill="#000"/></g><g transform="translate(0 559)"></g></g></svg> | |
+1 −0 viewer/assets/avatars/mia.svg 新增 查看文件
| @@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1744 1744" fill="none" shape-rendering="auto"><metadata xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"><rdf:RDF><rdf:Description><dc:title>Notionists</dc:title><dc:creator>Zoish</dc:creator><dc:source xsi:type="dcterms:URI">https://heyzoish.gumroad.com/l/notionists</dc:source><dcterms:license xsi:type="dcterms:URI">https://creativecommons.org/publicdomain/zero/1.0/</dcterms:license><dc:rights>Remix of „Notionists” (https://heyzoish.gumroad.com/l/notionists) by „Zoish”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)</dc:rights></rdf:Description></rdf:RDF></metadata><mask id="viewboxMask"><rect width="1744" height="1744" rx="0" ry="0" x="0" y="0" fill="#fff" /></mask><g mask="url(#viewboxMask)"><g transform="translate(531 487)"><path d="M554 727.7c-99.2 297-363.8 388.6-503.7 19.8-19.3-50.7 31-69.5 66.2-91.9 24.1-15.3 36.8-28.5 35.3-42.2-7-64.4-36.9-243.8-36.9-243.8l-3-5.8s.7-1.6-2.2 1.2c-3 3-9.9 34.2-37 34.2-24.5 0-49.2-10.9-61-86.3C7.2 285.6 9.6 214 40 201c12.5-5.3 24-7.2 35.2-.8 11.3 6.4-13-22 112-126C268.4 6.4 396.7-3.5 448.5 8 500.3 19.5 552 44.8 574.9 98.5c27.8 65-25.9 114.3-14 262.5-2.2 53.6.8 171.2-146.6 210.6-28 7.5-19.3 48.4 22.7 58.4 67 21 117 72.3 117 97.9" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="m554 266.2.1-1.4c4.1-36.4 8.2-71.7 27.1-103.4 6.5 4.4 5.7 10 3.7 15.2-19.9 51.2-18 104.4-16.2 157.6l.4 14c2.1 66.4-14.5 126.8-58.7 177.5-15.4 17.6-35.8 29.8-56.5 40.3-21.4 11-25.9 20.1-19.2 43.6l.8 2.6c1.4 3.9 2.8 7.9-1 11.8-4.5 4.6-9.5 3.3-14.8 1.8l-.6-.1a406.4 406.4 0 0 1-137-68.3c-6-4.4-10.8-10.3-15.5-16.1l-.3-.4c-2.5-3-3-7.8.5-10.4 3.3-2.5 5.8-.5 8.7 1.8l1 .9a145.5 145.5 0 0 0 76.3 31.7c13.4 1.4 26.6.9 40 .4 7.4-.3 14.8-.6 22.3-.5 10.2 0 18.7-4.7 26.7-9.2l2.8-1.6c27.8-15.5 54.3-32.8 72.2-60.7 16.1-25 25.9-52.2 31.6-80.9 7.2-36.1 6.6-72.7 6-109.8-.3-12-.5-24.2-.5-36.4ZM50.6 190.8c21.9-1.7 34 11.2 44.3 26.3a140.4 140.4 0 0 1 22.4 61.5c.5 3.7 1 7.6-1.2 11.3-4.5.6-4.9-3-5-5.6-.5-20.7-9.7-38.7-18.9-56.1-6.6-12.5-16.2-24.6-31.4-27.6-17.2-3.5-33 12-40.8 32.2-14.5 37.6-12 74.6 1.4 111 5.8 15.9 13.1 32.1 27.8 43.2 14.8 11.3 32.7 9.3 43.6-5.7l2-2.5c2-2.6 4-5.1 5-8 2.1-5.8 5.4-11.2 11.3-10.4 6.8 1 8 8.3 8.7 14a3661 3661 0 0 0 22 156.7l5.9 38.8c2.6 17.1 5.6 41.7 3.6 52.1a28 28 0 0 0-.3 2.2c-.4 2.8-.6 5-4.2 5.5-4.9.8-7-2-7.7-6.4-2.3-17-3-23.6-4-49.6-.9-25.2-5.6-50-10.4-74.9l-5-27c-5.2-30.8-10.3-62-10.8-97l-2 3c-7.6 11.3-13.7 20.5-24.5 24a40.5 40.5 0 0 1-46.1-12.5 127.8 127.8 0 0 1-28.8-55.8c-8.4-34-9.9-67.1.9-100.6 5.2-16.1 23.7-44.7 42.2-42Zm34.6 127.5c4.4 3.2 8.4 6 12-5.4-1.1-42.2-14.7-69.2-35.8-70.3 11.2 14.6 22 28.8 23 48.5a32.3 32.3 0 0 1-10.7-8.8c-2-2.2-4-4.4-6.5-6l-3-2.4c-4.8-3.6-9.7-7.4-17.8-4.5 3.8 5.8 9 10 14.3 14 6 4.7 12 9.3 15.6 16.5-10.6 7.7-15.2 17.7-9.7 29.9 4.8 10.5 11.9 19.2 25.9 19.8-.6-6.3-4.7-10.9-8.8-15.4-5-5.4-9.7-10.6-7.5-18.6 3.2-1.5 6.2.7 9 2.7Z" fill="#000"/></g><g transform="translate(178 1057)"><path d="M1303 692 16 688.7S53.5 481.5 111 360C236.9 93.7 489.4 44.3 511.3 56.7c32 18 62.3 40.7 151.4 40.7 91.1 0 148.8-39.5 148.8-39.5s135.3 32.3 200.6 69.5c83.1 47.4 177 187 220.2 295.9 46 115.6 70.7 268.7 70.7 268.7Z" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="M1296.8 692c-6.3-26-11.8-51.9-17.3-77.9l-8.4-39c-8-36.6-18.6-72.3-30-107.6a678.2 678.2 0 0 0-42.1-102.8l-7-13.7a802.4 802.4 0 0 0-27.6-50.7c-27.4-45.3-58.1-88.3-97-124a334.8 334.8 0 0 0-102.4-65c-7-2.8-13.8-6-20.7-9.1-7.9-3.7-15.8-7.3-24-10.5-10.6-4-14.4-.7-18.8 7.3-8 14.7-18 28-32.9 36-40.3 21.6-82.3 33.2-126.5 13.6a138 138 0 0 1-48.6-35.4c-6-7-12.2-8.3-20.5-9.5-22-3.3-36.7 4.7-49 23.1-16.3 24.2-42.3 33.2-69.5 35.8a146.6 146.6 0 0 1-108-31.8A203.2 203.2 0 0 1 402 86.5l-9.7 4.5c-6.9 3.1-13.6 6.2-19.8 10-9.6 6-19.7 11-29.8 16a347.3 347.3 0 0 0-34 18.9 454.4 454.4 0 0 0-85.4 73.7 604 604 0 0 0-86.3 122.8 869 869 0 0 0-50 108.1 1216.5 1216.5 0 0 0-34 102 562 562 0 0 0-20.2 102.2c-.6 6.8-2.1 13.6-3.7 20.4-1.9 8.3-3.8 16.8-4.1 25.8-5.5 1-10.6 1-16.9 1 4.5-32.9 9.7-66 16-98.8 2.3-12 5.3-23.7 8.3-35.4l5.3-21.5c5.2-22.6 12.6-44.6 20-66.6l.9-2.7a836.3 836.3 0 0 1 83-179c17-27.2 36-53 57.1-77 37.3-43 79.1-80.3 130-105.9l10.8-5.4c36-18.2 72-36.4 112-44.2 11.1-2.1 22.2-4.6 33-7.6 12.7-3.5 15.2-9.1 10.3-21.1l-1-2.2c-.7-1.6-1.4-3.3-1.7-5v-.4c-.6-3.6-1.2-7.8 3.8-8.9 4.3-1 5.5 1.6 7 5l.6 1.1c1.6 3.2 3 6.5 4.5 9.7 4.8 10.8 9.6 21.7 18.6 30.6a101 101 0 0 0 59.7 27.2l5.3.7c24.8 3.3 49.7 6.7 75 5.4 35.3-1.8 70.2-5.5 104-16.5 5.2-1.7 9.7-4.8 14-8.3 7-5.8 6.5-10.6.5-16.8-8.9-9.2-11-20.6-10.3-32.6 4-1.5 7-.5 7.6 1.8 7 30.4 29.6 36 55.8 39 33.8 3.8 66.1 14.3 98.5 25 25.4 8.5 48.3 21.6 71.2 34.6l18.6 10.5c25 13.8 47.2 32.1 66.9 53.2 22.7 24.3 43.9 50 62.4 77.6 16.1 24 31.5 48.6 45 74.5a1007.4 1007.4 0 0 1 86.5 242c5.6 25.4 9.8 51.3 14.1 77.5 2.2 13.2 4.3 26.4 6.7 39.7-3.2.9-6.7.9-11.2.9ZM573 143a83.8 83.8 0 0 0 49.7-37.7 17 17 0 0 0-9.2-3.5l-2.8-.5a470 470 0 0 0-19.9-3.9c-27-4.8-54-9.7-74-32.8-1.3-1.5-4.6-1.7-7-1.8-27.5-.5-53.4 6.9-79.4 14.3l-11.2 3.2c.8 5.6 2.6 9 5.8 12.2a224 224 0 0 0 39.6 32.5c32.9 21 67.9 30.7 108.4 18Zm224 .3c-31.6 4.3-57.1-9-81-27.6-1.6-1.7-3.3-3-4.9-4.2-3-2.4-5.7-4.5-6.9-8.4 10.1-3.8 20.6-5.8 31.1-7.9 11.2-2.1 22.4-4.3 33-8.6l5.4-1.8c4.3-1.4 8.7-2.8 11.8-5.8 16.7-16.2 36.2-15.6 56.2-10.6 13 3.3 26 7 39.5 11l19 5.6-5.6 6.5c-14.1 16.6-26.6 31.3-46.9 38.5-16.7 6-33.2 11-50.7 13.3Z" fill="#000"/><path d="M1115.6 692c-9.1-36.9-12.1-74.7-22-111.2-7.7-28.1-13.9-56.8-23.8-84-7-19.4-13.7-39-23-57.8-12.7-25-23.1-51.2-34.4-77-1.3-3-2.9-6.3 1.3-8.8 4.3-2.6 7.4-.5 9.8 2.6 3.8 5 7.8 10.2 10.6 15.9 10 20.4 19.4 41.1 29.1 61.6A612.7 612.7 0 0 1 1097 529c9 31.6 17.5 63.6 21.5 96.6 2.6 21.4 7 42.7 8.6 65.4-3.3 1-6.8 1-11.4 1ZM221.2 692c-.6-3 .4-5.8.4-8.7 0-49.6 9.6-98 16.6-146.7 5-35 13.3-69 22.5-102.9a253.5 253.5 0 0 1 31.6-69c2.3-3.6 4-10 10-6.9 6.1 3.2 3.2 9 1.4 13.6-7.2 17.6-15.9 34.7-21.8 52.7a748.3 748.3 0 0 0-31 138.7c-1 8.5-2.7 16.8-4.9 25-7.4 28.5-3.8 58.4-10.9 87-1.1 4.7.3 10.1.3 16.2-4.5 1-8.9 1-14.2 1Z" fill="#000"/><path fill-rule="evenodd" clip-rule="evenodd" d="M645.9 165.5c-9 6.6-10.5 15.7-3.6 28.3l4 2.7c2.3 1.5 4.3 3 6.5 3.6 9.5 3 17-2 21.6-9.1 4.7-7 5.5-16.9-1.9-22-7.3-5.1-16.6-10.9-26.6-3.5Zm5.4 17.4Zm0 0c3.8 2.8 7.6 3.4 10.9-.5a3.4 3.4 0 0 0-1.2-5.3c-4.4-1.6-9.2-2.6-9.7 5.8Z" fill="#000"/></g><g transform="translate(266 207)"><path d="M927 341a122 122 0 0 1 .7 98.3c-12.7 29.6-25.3 59.3-36.6 89.5-13.4 35.6-7.7 69.6 10 103 21 39.5 44.8 77.8 58.2 121.1 13 42.5 18.3 85.5.5 127.2-15.2 35.9-33.6 70.5-71 89.8a131 131 0 0 1-94 10.5c-36-8.5-62.3-31.3-88.6-55a723 723 0 0 0-47.4-40.2c-12.6-9.6-20.4-22.8-30.4-34.3-1.6-1.8-1.9-3.9-.5-5.8 1.3-2 3.3-1.8 5.6-1.3 52.1 13 86.3-14 116.2-51.6 30.7-38.6 49.2-83 62-129.9A519.9 519.9 0 0 0 830.5 492c-2-29.8-6.4-59.7-14.4-89-8.6-31-19.8-60.2-38.2-86.7-6.4-9-14.7-16.1-21.9-25.6a346.7 346.7 0 0 1-57.6 49.3 606.7 606.7 0 0 1-135.2 71.5c-42.6 16.7-88 21.7-131.2 35.4a61.5 61.5 0 0 0-35.1 27.9 108.5 108.5 0 0 0-13.9 76.1c1 5.2 2.9 11.5-4.2 12.4-6.5.8-5.2-6.2-6.4-10.5-4.8-17.5-8.2-35.4-15-52.4-7.6-19-31.8-33.4-49-28a35.8 35.8 0 0 0-22.3 23.1 184.5 184.5 0 0 0-11.6 89.8c2.7 20.7 14.1 36.7 25.7 52.8 15.8 22.2 26 25 51.8 17.5 8.5-2.6 12.4-8.3 16.3-15 1.6-2.9 3.6-6.4 7.6-5.6 3.9.6 7 3.6 8 7.5 8 36.4 20.3 71.8 21.5 109.7 1.7 55.6-47 106.3-99.5 107.2-33 .6-65-4-97.3-9a182 182 0 0 0-67.2 2.4c-23.9 5.3-47 11.6-66.6 27.1-5.3 4.2-9.6 2.1-13.2-4-19.8-33.4-38.4-67.2-48.6-105C0 722.2-6 674 7.9 623.8c5.5-20 10.2-40 19.4-58.6 16.8-34 39-63.4 70.6-85 35-24 70.2-47.6 105.2-71.5 29-19.7 51-46 70-75 34.5-52.6 73.8-101 123.7-139.5 34.7-27 72.5-49.4 115.6-59.8 30.6-7.6 62.4-9 93.6-4.1 23.6 3.6 46.5 8.4 67.3 20.3 12.4 7.1 25.2 14.1 36 23.3a120.7 120.7 0 0 0 41 21.1c40 13.3 76.7 32.1 109.4 58.6 29 23.5 54 50.4 67.3 87.3Z" fill="#000"/></g><g transform="translate(791 871)"><path d="M182.3 95.7c-29.2 14-65.1 3-84.2-16-2.3-2.3-3.8-5.6-5.3-8.6-1-2.3-1.6-5 .7-7.1 2.2-2.1 4.7-1.8 7.1-.7 2.6 1.3 5.6 2.5 7.5 4.5 12.1 13 28 16.4 44.7 19C162 88 169 82.3 177 80.2c5.3-1.4 11-9 15-.7 3.3 6.8-1.3 12.9-9.7 16ZM66.6 57.4C71 45.2 80.3 40.6 90.8 37.9c5-1.3 10.8-1.7 13 4.3 2.4 7-3.2 10.9-8.3 12-7.3 1.4-12 4.6-15.4 11.2-2.2 4.3-5.7 9.7-11.7 7-7.2-3-3.8-9-1.8-15Z" fill="#000"/></g><g transform="translate(653 805)"></g><g transform="translate(901 668)"><path d="M68.7 106.5c6.5 23.1 15 44 30.2 62.1 6.2 7.4 3.6 18.1-3 24.6-13.8 13.4-29.3 24-50 15.6-5-2-9.2.5-13.7.9-9.5.8-16.6-1.5-16.6-14.3 13.2 2.4 25-7.3 38.9 1.2 6.2 3.9 17.9-.6 24.9-6 5.7-4.5 9.8-10.7 2.5-19.3-19-22.7-27-50.3-30-79.1a60 60 0 0 1 4.6-28.6C58.3 59 61.7 55 67.3 57c5.5 2 4.5 7.3 3 11-5.2 12.4-4 24.9-1.6 38.4Z" fill="#000"/></g><g transform="translate(610 680)"><path d="M215.1 76.6c5-12 9-29.4 24.1-22.5 20.7 9.4 13.9 30.7 9.7 47.4-1.6 6.3-14.5 15.9-18.3 14.3-16.3-6.8-19.2-21.7-15.5-39.2ZM442 113.4c-8.6 7.5-17 7.6-22.2-1.5-9-16-8.6-32.8 3.3-47.2 2.5-3 13.8-3.6 16.3-1 14 15 14.6 31.8 2.6 49.7Z" fill="#000"/></g><g transform="translate(610 680)"><path d="M474.1 17C499.7 31.2 503.5 68 495 84.7c-8 15.4-19.5 28.5-32.9 39.9a104.9 104.9 0 0 1-38.8 22.8c-7 2-13 .1-18.1-3.3-18.1-12-33.2-27.5-47.5-43.7-3-3.6-5.3-7.7-6.6-12.3-4.3-14.2-14.9-19.2-28.3-13a50.9 50.9 0 0 0-22.3 18.4 150.8 150.8 0 0 1-53.6 49.7c-14.2 8.1-23.5 6.4-37-3.6-13-9.7-24.9-20.8-35.4-33-8.4-9.8-16.8-19.4-15.7-33.5.3-4.6-2.5-7-6.5-8.3a14 14 0 0 0-3.7-.7c-21.3-1-41.3-9-62.6-10.3-16-1-30.9-8.7-46.5-12.6-4.5-1.2-8.7-3.8-13.2-4.6-6.5-1.2-7.8-5.5-9-11.6A65.5 65.5 0 0 1 52 29c18.3 7.3 38 8.5 57 12.8 15.5 3.6 31.5 5 47.7 10.1 4.5-17.5 11.5-32.7 29.6-40 19.9-8 33.2 3.2 48 15 15.2-8.1 31.4-17.3 49.7-9.8 18.4 7.4 22.8 24.7 26.2 42.7 11.6.4 22.8-3.5 34-.7 3.9-7 4.4-14.3 6.3-21.2a37.2 37.2 0 0 1 57.7-21.8c9.8 9 19 9.6 31.5 2.9a38.5 38.5 0 0 1 34.3-2.2Z" fill="#000"/><path d="M193 63.5c-1-.3 1 0-.2.4-6.6 2 50.7 52.8 55.8 48.5 3-2.5-49.5-46.3-55.7-49ZM213.3 39.7c-.9-.3 1 0-.1.4-6.7 2 50.7 52.8 55.7 48.5 3-2.5-49.5-46.3-55.6-49ZM388.2 63.5c-.8-.3 1 0 0 .4-6.7 2 50.6 52.8 55.7 48.5 3-2.5-49.5-46.3-55.7-49ZM408.6 39.7c-.9-.3 1 0-.1.4-6.6 2 50.7 52.8 55.7 48.5 3-2.5-49.5-46.3-55.6-49Z" fill="#fff"/></g><g transform="translate(774 657)"><path d="M30.3 32.1C58 10 89.8 13.1 121 14.1c5.7 0 12.2 1.3 14.3 8.3 2.1 7.7-4.6 9.9-8.8 13.8a44.7 44.7 0 0 1-52.2 8.6 37.9 37.9 0 0 0-31.9 1.6c-2 1-3.8 1.9-5.8 2.6-6.3 2.5-14.3 6-18.6-.4-4.4-6.7 5.6-9 8.3-13.7.6-1 2-1.6 3.9-2.8ZM294.4 23.8c7.7 4.3 14.5 10 20 17 2.5 3 5 6.3 3 10.2-2.4 4.3-6.7 2.7-10.4 2.2-12.5-1.5-23.7-9.2-37-7.2-5 .8-9.9.7-15 2.5-13 4.7-31-6.4-33-19.8-1-5.4 1-8.5 6.8-10 22.2-5.7 44-9 65.6 5.1Z" fill="#000"/></g><g transform="translate(0 559)"></g></g></svg> | |
+1 −0 viewer/assets/avatars/nora.svg 新增 查看文件
| @@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1744 1744" fill="none" shape-rendering="auto"><metadata xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"><rdf:RDF><rdf:Description><dc:title>Notionists</dc:title><dc:creator>Zoish</dc:creator><dc:source xsi:type="dcterms:URI">https://heyzoish.gumroad.com/l/notionists</dc:source><dcterms:license xsi:type="dcterms:URI">https://creativecommons.org/publicdomain/zero/1.0/</dcterms:license><dc:rights>Remix of „Notionists” (https://heyzoish.gumroad.com/l/notionists) by „Zoish”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)</dc:rights></rdf:Description></rdf:RDF></metadata><mask id="viewboxMask"><rect width="1744" height="1744" rx="0" ry="0" x="0" y="0" fill="#fff" /></mask><g mask="url(#viewboxMask)"><g transform="translate(531 487)"><path d="M554 727.7c-99.2 297-363.8 388.6-503.7 19.8-19.3-50.7 31-69.5 66.2-91.9 24.1-15.3 36.8-28.5 35.3-42.2-7-64.4-36.9-243.8-36.9-243.8l-3-5.8s.7-1.6-2.2 1.2c-3 3-9.9 34.2-37 34.2-24.5 0-49.2-10.9-61-86.3C7.2 285.6 9.6 214 40 201c12.5-5.3 24-7.2 35.2-.8 11.3 6.4-13-22 112-126C268.4 6.4 396.7-3.5 448.5 8 500.3 19.5 552 44.8 574.9 98.5c27.8 65-25.9 114.3-14 262.5-2.2 53.6.8 171.2-146.6 210.6-28 7.5-19.3 48.4 22.7 58.4 67 21 117 72.3 117 97.9" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="m554 266.2.1-1.4c4.1-36.4 8.2-71.7 27.1-103.4 6.5 4.4 5.7 10 3.7 15.2-19.9 51.2-18 104.4-16.2 157.6l.4 14c2.1 66.4-14.5 126.8-58.7 177.5-15.4 17.6-35.8 29.8-56.5 40.3-21.4 11-25.9 20.1-19.2 43.6l.8 2.6c1.4 3.9 2.8 7.9-1 11.8-4.5 4.6-9.5 3.3-14.8 1.8l-.6-.1a406.4 406.4 0 0 1-137-68.3c-6-4.4-10.8-10.3-15.5-16.1l-.3-.4c-2.5-3-3-7.8.5-10.4 3.3-2.5 5.8-.5 8.7 1.8l1 .9a145.5 145.5 0 0 0 76.3 31.7c13.4 1.4 26.6.9 40 .4 7.4-.3 14.8-.6 22.3-.5 10.2 0 18.7-4.7 26.7-9.2l2.8-1.6c27.8-15.5 54.3-32.8 72.2-60.7 16.1-25 25.9-52.2 31.6-80.9 7.2-36.1 6.6-72.7 6-109.8-.3-12-.5-24.2-.5-36.4ZM50.6 190.8c21.9-1.7 34 11.2 44.3 26.3a140.4 140.4 0 0 1 22.4 61.5c.5 3.7 1 7.6-1.2 11.3-4.5.6-4.9-3-5-5.6-.5-20.7-9.7-38.7-18.9-56.1-6.6-12.5-16.2-24.6-31.4-27.6-17.2-3.5-33 12-40.8 32.2-14.5 37.6-12 74.6 1.4 111 5.8 15.9 13.1 32.1 27.8 43.2 14.8 11.3 32.7 9.3 43.6-5.7l2-2.5c2-2.6 4-5.1 5-8 2.1-5.8 5.4-11.2 11.3-10.4 6.8 1 8 8.3 8.7 14a3661 3661 0 0 0 22 156.7l5.9 38.8c2.6 17.1 5.6 41.7 3.6 52.1a28 28 0 0 0-.3 2.2c-.4 2.8-.6 5-4.2 5.5-4.9.8-7-2-7.7-6.4-2.3-17-3-23.6-4-49.6-.9-25.2-5.6-50-10.4-74.9l-5-27c-5.2-30.8-10.3-62-10.8-97l-2 3c-7.6 11.3-13.7 20.5-24.5 24a40.5 40.5 0 0 1-46.1-12.5 127.8 127.8 0 0 1-28.8-55.8c-8.4-34-9.9-67.1.9-100.6 5.2-16.1 23.7-44.7 42.2-42Zm34.6 127.5c4.4 3.2 8.4 6 12-5.4-1.1-42.2-14.7-69.2-35.8-70.3 11.2 14.6 22 28.8 23 48.5a32.3 32.3 0 0 1-10.7-8.8c-2-2.2-4-4.4-6.5-6l-3-2.4c-4.8-3.6-9.7-7.4-17.8-4.5 3.8 5.8 9 10 14.3 14 6 4.7 12 9.3 15.6 16.5-10.6 7.7-15.2 17.7-9.7 29.9 4.8 10.5 11.9 19.2 25.9 19.8-.6-6.3-4.7-10.9-8.8-15.4-5-5.4-9.7-10.6-7.5-18.6 3.2-1.5 6.2.7 9 2.7Z" fill="#000"/></g><g transform="translate(178 1057)"><path d="M1313.4 698 9.7 694.7S43.1 485 106 365.7c17-32.4 81-128.7 141.8-189.6 40.8-41 87.7-56 89-62 2.2-9.7-11-41.4-8.8-48.5 8.1-25.5 9.5.8 42.1-31.8 18.3-18.2 1.4-29.6 21.6-43.2 29.8-20 60-8.7 87-7.6 18 .7 12.4 50.3 27.3 62.5 40.3 32.9 91.8 54 128 63.5 46.1 12.2 61.6-2.5 85.4-12.2 23.8-9.6 38.5 12.2 68.9-33.2 14.2-21.2-11-42.6 8.2-54C826.6-8.3 872.2-7.7 891.1 2c28.9 14.8 16.3 41.6 16.3 41.6s35.7 11.6 43 22c7.2 10 5 44 5 44s-2.8-13.7 63.4 23.5c84.2 47.4 179.2 187.2 223 296 46.6 115.8 71.6 269 71.6 269Z" fill="#fff"/><path d="M1307 698c-9.4-38.5-16.9-77.2-25.6-115.7-6.3-27.8-14-55-22.4-82.2-9.5-30.6-19.5-61-33-90.4-9.6-20.7-19.4-41.1-29.5-61.5a673 673 0 0 0-57.7-92.4 470.2 470.2 0 0 0-60.5-70 342.9 342.9 0 0 0-83-57.4c-3-1.5-6.6-2.3-9.2-4.3-17-12.7-33.7-6.3-44.8 12.9-30.8 53.2-78.6 77.6-137.2 85.4a19 19 0 0 1-6.4 0c-5.6-1.2-13.6-1.2-13-9.1.7-7 8-4.5 12.7-5.1 43.7-5.8 84-19.6 113.4-54.3 12.4-14.8 21.6-32.4 31.3-49.3 10.2-17.9 2.4-45-23.7-50.5-11.8-2.5-19.5-6.3-16.2-21.4 2-9.6-4.8-18.9-13.2-23-10.4-5-21.7-9.1-34.5-5.6-11.7 3.2-24.2 4.1-36.3 6-7.1 1-12.2 5.8-18 9.4-4.4 2.8-4.4 6.4-2.5 11 7 17.4 1 39.8-13.9 51-14.7 11.2-30.4 20.2-50 18.4-4.9-.5-8.9 1.2-12.8 4.4-14 11.8-30.4 14.5-48.7 14.3-38.8-.4-74.2-12.6-109.2-27.3-7.8-3.3-13.6-12.6-26.5-7.5 27 34.9 67 48.4 105.6 67.6a26 26 0 0 1-24.8 3c-51.4-17.5-91.9-47.6-117.2-97-8.4-16.5-14.9-33-18.1-51-2.3-12.6-5.7-13.8-17.6-8.4-13.2 6-24.9 14.3-35.7 23.6-12.5 10.8-20 24-18.1 41.5 1 8.4 0 17 .2 25.6a47.3 47.3 0 0 0 35.2 46 37 37 0 0 1 18.4 10.8c-14.6 6.6-40.5-1.2-53-15.9C377.8 89.8 391.1 21 437.3-3.2l5-2.8a39.9 39.9 0 0 0-54 19A80.5 80.5 0 0 1 349 56c-15.3 7.7-19.8 28.7-7.8 39.4 23.4 20.8 43 45.8 69.9 62.6 15.4 9.6 30.1 21 46.7 28 15.8 6.5 33.6 8.4 50.6 11.8 5 1 10.2.8 13.3 5.6.3 3.4-1.7 5.6-4.4 5.5-32.1-1.5-63.4-4.4-92-23a437.5 437.5 0 0 1-69-54.1c-11-11-23.1-6.1-34 0-39 22-72.5 50.9-102.9 83.7a615.2 615.2 0 0 0-87.4 123 870.6 870.6 0 0 0-50.5 108A1198.4 1198.4 0 0 0 47 548.6a558.2 558.2 0 0 0-20.6 102.1c-1.3 15.2-7.3 29.7-7.9 46.2-5.5 1-10.8 1-17.1 1 4.6-32.9 9.9-66 16.2-98.8 3.7-19.1 9.2-37.9 13.7-56.8 5.6-23.6 13.4-46.5 21.2-69.4a831.6 831.6 0 0 1 84-179c16.9-27 36-52.4 57-76 36.7-41.1 76.3-78 126-103 6.4-3.3 9.3-7 4.1-15.1C314.4 85 317.8 54 339 44.4c16.6-7.6 26.6-22 34.3-37.8a56.1 56.1 0 0 1 51.4-33.3c19.6-.5 39.2-.7 58.8-1 9 0 14.1 1.6 10.1 12.7C491.1-8 492-.5 499 4.5a8.7 8.7 0 0 1 4 6.1c4.4 31 27.1 45.6 52.1 57.7 19.8 9.6 39.6 20.3 60.5 26.3 21.8 6.3 44.5 12.1 67.7 10.5a46 46 0 0 0 26.9-10.8c6.3-5.4 14.2-4.9 21.6-6.4 17-3.4 32.5-9.8 45-22.1 11.2-11.2 12-22 3.3-35.3-7.8-11.9-3.3-33.8 8.5-40.8 3.5-2 8.7-2.8 9.8 1.6 3 11.4 9.8 6.6 15.9 4.8a159 159 0 0 1 55.3-8.2A58 58 0 0 1 906 3.5c7.8 6.9 9.7 15.6 9.8 25.3 0 7.6 2.4 11.9 11 13.9 24.7 5.6 33.8 17.7 34.2 43.1 0 5.3 1.4 8.3 6.3 11 34.6 18.7 70.4 35.4 101.6 60 29.3 23 53 51.1 75.5 80.4A719.4 719.4 0 0 1 1245 414c18.2 46.5 33.7 94 46.4 142.4 12 46 16 93.5 27.1 140.6-3.2.9-6.7.9-11.4.9Z" fill="#000"/><path d="M1122.7 698c-9.3-36.4-12.3-73.8-22.2-110-7.8-28.4-14-57.4-24.2-85-7.2-19.4-14-39-23.5-57.7-12.7-25-23.3-51.2-34.7-77-1.4-3-2.8-6.3 1.4-8.8 4.4-2.7 7.6-.6 9.9 2.7 5 7.3 10.2 14.6 14.2 22.5 16 31.2 32 62.7 43 96 7.5 22.8 15.6 45.5 21.2 69 3.9 16.5 8.2 33 12 49.4 7 32.2 11.9 65 14.5 97.9-3.4 1-7 1-11.6 1ZM219 698a451 451 0 0 1 4.4-86.5c3.7-29 4.4-58.3 11-87 3.9-17 9-33.6 13-50.4 7.4-32.1 18.1-63.5 34.6-92.4 2.4-4 4.8-8 7.4-12 2.3-3.3 4.1-8.7 9.5-6.2 5.7 2.8 3.2 8.2 1.8 12.4a320 320 0 0 1-10 26.1c-18 40-33 81.2-40.6 124-7.3 42-15.8 84.3-14 127.6.7 14-1.6 28-2.6 43.2-4.5 1.2-9 1.2-14.4 1.2ZM629.3 367.8c-1.5-9.8 2.8-16.7 6.6-23.9 11.4-21.3 8.4-29.9-11.6-42.6-17.7-11.3-35.3-23-44.2-44-5.8-14-4.4-28.3-6.2-42.4-1-7.2 2.4-16 12.3-16.7 9.4-.6 20.9-3.5 25.6 8.4 3.4 8.6 2.1 17-6.2 24-15 12.8-13.9 19.7 3.7 29.1 13.8 7.4 28.5 13.3 40.5 23.9 23.8 21 26 56 4.5 79.2-6.8 7.3-7.8 15.3-6 24.6.9 4.3 2.7 10.2-3.1 12.3-5.3 2-6.5-4-9.2-7-6.3-6.8-7.1-15-6.7-24.9ZM804.3 405.5c1.2 3.4 4.6 5.2 3 8.6-20.6.3-34.9-24.4-26-44 5-11.3 13.4-20.6 15.8-33.3 3-16.5 0-25.2-15-32.3-27-12.9-39.8-33-35.3-63.4 1.4-9.4 1.4-17.6-11.8-20.7-9-2.2-11.2-12.2-9.2-21 2-8.5 8.8-13.9 17-12.6 7.6 1.3 17.4 3.5 16.7 15.4-.2 3-.4 6.1 2 8.4 11 11 8.6 24.1 6 37.1-2.2 11.1 0 20.3 9.8 26.8 6.4 4.2 12.5 8.9 19.2 12.6a49 49 0 0 1 13 78.4c-14.3 16-15.7 25.7-5.2 40ZM851 92c16.8-7 17.8-16.8 17.5-33.6 0-5-2.4-10 .8-14.9 11.1 2.4 17.6 16.4 14 30a48 48 0 0 1-48.7 35.4 41.9 41.9 0 0 0-31.2 13c-7.7 7-16.5 10.5-27 4.4 18.8-9.4 31.1-30.8 55.7-28.2 6.8.7 12-3.5 18.8-6Z" fill="#000"/></g><g transform="translate(266 207)"><path d="M312.3 277.5a421 421 0 0 1 63.7-72.3 299.3 299.3 0 0 1 129-69c32.9-7.8 67-9.5 101.3-3.3 47 8.5 89.1 26 125.2 57.6 6.7 5.8 14.1 8 23.2 8.5 22.8 1.4 43.7 10.6 64.1 19.7a302.2 302.2 0 0 1 72.6 43.8c14.6 12.3 28 25.2 34 44.5 7.6 24-1 38.8-26.3 42.2-3.4.4-6.8.4-9.9 4.2 6.5 18.6 17.2 36.2 19.8 56.7 6.8 56.1-9 100.5-63.8 124-5.5 2.4-11 5.5-16.7.6-5.7-4.9-1-9 .6-13.7.7-2.2 1-5.4 0-7.3-6.5-12.2-6.6-25.4-7.3-38.6-.4-9.2-4-14.8-13-20.7-44.8-29.1-81.6-66.3-103.6-116-2.2-5-3.2-10.3-5.2-16.7-10.3 11-14.5 24.2-22.1 35.2-17.5 25.4-36.7 49-64 64.8-18.3 10.6-35.4 11.3-50.8-6.6-10.2 10-19.6 19.6-29.4 28.8a122.6 122.6 0 0 1-44 27.4c-8.1 2.9-16.7 5.3-24.7.6-6.5-4-10.5-.6-14.5 3-20.2 18.4-43 28.6-71.8 23.4-8.3 23 5 45.7 2.1 67.8-6.7 1.4-7.8-2-8.5-5.4-2.8-13.3-5.5-26.6-8-40a72.8 72.8 0 0 0-30.7-45c-16.1-11.9-39-1-48.8 19.9-15.7 33.7-14.2 68.5-5.7 103.5 4.5 18.6 12 36 21.2 52.9 5.6 10.2 15 15 23.4 21 6.2 4.5 22.6-3.6 30.5-13.8 2-2.7 3.5-6 6-8.3 9.4-9.5 16.3-7.9 19.4 5.2 5.9 25.2 9 51 11.9 76.7 2.7 24 2.9 48.3 11.4 71.5 8.6 23.2.7 41.2-22 50.5-18.5 7.5-60.3 7.3-75-13.2-8.3-11.5-19-14-30.8-17a70.1 70.1 0 0 1-52.2-47.4c-2.4-6.8-3.7-13.6.7-19.6 31.9-43.4 22.3-87.5 1.6-131.2-7-14.6-11-30.4-11.7-46.5-2.3-47.2 5.1-92.8 20.5-137.7 17.7-51.7 42.2-99.9 67.4-148 3-5.5 6.8-10.6 10.9-16.7Z" fill="#000"/></g><g transform="translate(791 871)"><path fill-rule="evenodd" clip-rule="evenodd" d="M88 70.6a153.5 153.5 0 0 0 115.3-.2c4.1-1.8 8.8-4 12.4 1.5 4.2 6.4.6 12.2-3.4 17.4A71.8 71.8 0 0 1 203 100c-3.8 3.4-9 7.4-13.6 3.4-8.8-7.6-14.7-5.6-22.7 1.7-11.3 10.2-21 4.5-27.6-7-21.8 14.3-21.8 14.3-32.7 1.8h-.9c-.6-.1-1.3-.1-1.6.2-14.7 12.7-17.9 11.3-24-8.6l-1-5c-1.4-6.7-2.7-13.5-12.1-14.9.4-4.5 3.2-7.5 6.3-10.2 3.1.4 5 2.4 7 4.5 2 2.2 4.1 4.4 7.7 4.8Zm11 14.3a22.3 22.3 0 0 0-13.5-6.3c-1.3 6 1.1 10.1 3.4 14.3l2.3 4.2c6-1.6 7.8-5.5 7.8-12.2Zm27.6 8.8c1.8 6-2.6 8.1-8 7.9-4.3-2.8-4.5-6-4.8-9.2 0-1 0-2-.3-3 6.2-1.9 11.4-1.2 13 4.3Zm36.8 4.4c1.7-7.5-2-6.8-5.6-6-1.4.2-2.8.4-3.8.2-2.4-.6-5.3.5-5.2 3.8.2 5.2 4.3 5.8 8.1 5.7 1.9 0 3.7-1.4 6.5-3.7Zm29-2.4c-3.8-4.7-5-8.8 1.5-12.1 4.6-1.3 8.7-2.3 8.5 2-.3 5.2-3.6 9.2-10 10Z" fill="#000"/></g><g transform="translate(653 805)"></g><g transform="translate(901 668)"><g fill="#000"><path d="M75.1 117.2c3.9 16.3 7.4 31.6 11.2 46.7 5 19.6 2.1 28.4-15.7 35.9-20 8.2-45.5 7-59.6-15.5-2.2-3.5-3.6-6.6-3-10.6.7-3.2 1.9-5.7 5.4-6.3 3.7-.6 5 1.5 6.4 4.6 9.4 19.7 23.7 25.2 43.7 17.1 10.1-4 13.3-11.8 10-21.6a292 292 0 0 1-13.5-67c-1.5-14.8-4.2-30.2 5.7-43.3h4l5.4 60Z"/><path d="M31.5 177.5c-5.7-8.1 0-10.7 5.5-12.3 4-1.2 8.2 1 7.9 5.6-.5 8-6.1 8.8-13.4 6.7Z"/></g></g><g transform="translate(610 680)"><path d="M407.4 122.5c13 .3 25.4 1.1 37.6 2.5 3 .4 5 3.3 5 6.7 0 3.3-1.7 5.6-4.7 7-11.2 4.8-22 8.2-33.7.2-6.5-4.5-9-8.7-4.2-16.4ZM247.6 117c7 0 7.8 3.8 7 8.5-2 10.2-20 22.4-30.4 20.5-5.9-1-10.5-4-10.7-10.5-.2-6.7 4.8-8.2 10.3-8.4 9-.3 15.8-5.2 23.8-10ZM215.1 76.6c5-12 9-29.4 24.1-22.5 20.7 9.4 13.9 30.7 9.7 47.4-1.6 6.3-14.5 15.9-18.3 14.3-16.3-6.8-19.2-21.7-15.5-39.2ZM442 113.4c-8.6 7.5-17 7.6-22.2-1.5-9-16-8.6-32.8 3.3-47.2 2.5-3 13.8-3.6 16.3-1 14 15 14.6 31.8 2.6 49.7Z" fill="#000"/></g><g transform="translate(610 680)"></g><g transform="translate(774 657)"><path d="M81.4 35C60 29.6 52 33.2 40 52.6c-2.4 4-3.4 11.4-10.6 7-5.6-3.4-5.3-8.8-2.6-14.6a51.4 51.4 0 0 1 38-30.7 33.1 33.1 0 0 1 37.5 26.4c.9 5.3.1 10-4.8 13.6-11.2-1.3-8-14.2-16-19.1ZM246.2 32.8c14-6.2 27-12.4 41.2-1.9 5.1 3.7 9 8.8 11.3 14.7 2 5 2.3 10.7-2.7 13.8-5.7 3.5-8.1-2.1-11-5.6-10.4-12.8-18.4-13.7-32.4-4.6-4 2.6-6.8 8-13.5 7-5.7-9.6-.1-16.3 7-23.4Z" fill="#000"/></g><g transform="translate(0 559)"></g></g></svg> | |
+1 −0 viewer/assets/avatars/riley.svg 新增 查看文件
| @@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1744 1744" fill="none" shape-rendering="auto"><metadata xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"><rdf:RDF><rdf:Description><dc:title>Notionists</dc:title><dc:creator>Zoish</dc:creator><dc:source xsi:type="dcterms:URI">https://heyzoish.gumroad.com/l/notionists</dc:source><dcterms:license xsi:type="dcterms:URI">https://creativecommons.org/publicdomain/zero/1.0/</dcterms:license><dc:rights>Remix of „Notionists” (https://heyzoish.gumroad.com/l/notionists) by „Zoish”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)</dc:rights></rdf:Description></rdf:RDF></metadata><mask id="viewboxMask"><rect width="1744" height="1744" rx="0" ry="0" x="0" y="0" fill="#fff" /></mask><g mask="url(#viewboxMask)"><g transform="translate(531 487)"><path d="M554 727.7c-99.2 297-363.8 388.6-503.7 19.8-19.3-50.7 31-69.5 66.2-91.9 24.1-15.3 36.8-28.5 35.3-42.2-7-64.4-36.9-243.8-36.9-243.8l-3-5.8s.7-1.6-2.2 1.2c-3 3-9.9 34.2-37 34.2-24.5 0-49.2-10.9-61-86.3C7.2 285.6 9.6 214 40 201c12.5-5.3 24-7.2 35.2-.8 11.3 6.4-13-22 112-126C268.4 6.4 396.7-3.5 448.5 8 500.3 19.5 552 44.8 574.9 98.5c27.8 65-25.9 114.3-14 262.5-2.2 53.6.8 171.2-146.6 210.6-28 7.5-19.3 48.4 22.7 58.4 67 21 117 72.3 117 97.9" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="m554 266.2.1-1.4c4.1-36.4 8.2-71.7 27.1-103.4 6.5 4.4 5.7 10 3.7 15.2-19.9 51.2-18 104.4-16.2 157.6l.4 14c2.1 66.4-14.5 126.8-58.7 177.5-15.4 17.6-35.8 29.8-56.5 40.3-21.4 11-25.9 20.1-19.2 43.6l.8 2.6c1.4 3.9 2.8 7.9-1 11.8-4.5 4.6-9.5 3.3-14.8 1.8l-.6-.1a406.4 406.4 0 0 1-137-68.3c-6-4.4-10.8-10.3-15.5-16.1l-.3-.4c-2.5-3-3-7.8.5-10.4 3.3-2.5 5.8-.5 8.7 1.8l1 .9a145.5 145.5 0 0 0 76.3 31.7c13.4 1.4 26.6.9 40 .4 7.4-.3 14.8-.6 22.3-.5 10.2 0 18.7-4.7 26.7-9.2l2.8-1.6c27.8-15.5 54.3-32.8 72.2-60.7 16.1-25 25.9-52.2 31.6-80.9 7.2-36.1 6.6-72.7 6-109.8-.3-12-.5-24.2-.5-36.4ZM50.6 190.8c21.9-1.7 34 11.2 44.3 26.3a140.4 140.4 0 0 1 22.4 61.5c.5 3.7 1 7.6-1.2 11.3-4.5.6-4.9-3-5-5.6-.5-20.7-9.7-38.7-18.9-56.1-6.6-12.5-16.2-24.6-31.4-27.6-17.2-3.5-33 12-40.8 32.2-14.5 37.6-12 74.6 1.4 111 5.8 15.9 13.1 32.1 27.8 43.2 14.8 11.3 32.7 9.3 43.6-5.7l2-2.5c2-2.6 4-5.1 5-8 2.1-5.8 5.4-11.2 11.3-10.4 6.8 1 8 8.3 8.7 14a3661 3661 0 0 0 22 156.7l5.9 38.8c2.6 17.1 5.6 41.7 3.6 52.1a28 28 0 0 0-.3 2.2c-.4 2.8-.6 5-4.2 5.5-4.9.8-7-2-7.7-6.4-2.3-17-3-23.6-4-49.6-.9-25.2-5.6-50-10.4-74.9l-5-27c-5.2-30.8-10.3-62-10.8-97l-2 3c-7.6 11.3-13.7 20.5-24.5 24a40.5 40.5 0 0 1-46.1-12.5 127.8 127.8 0 0 1-28.8-55.8c-8.4-34-9.9-67.1.9-100.6 5.2-16.1 23.7-44.7 42.2-42Zm34.6 127.5c4.4 3.2 8.4 6 12-5.4-1.1-42.2-14.7-69.2-35.8-70.3 11.2 14.6 22 28.8 23 48.5a32.3 32.3 0 0 1-10.7-8.8c-2-2.2-4-4.4-6.5-6l-3-2.4c-4.8-3.6-9.7-7.4-17.8-4.5 3.8 5.8 9 10 14.3 14 6 4.7 12 9.3 15.6 16.5-10.6 7.7-15.2 17.7-9.7 29.9 4.8 10.5 11.9 19.2 25.9 19.8-.6-6.3-4.7-10.9-8.8-15.4-5-5.4-9.7-10.6-7.5-18.6 3.2-1.5 6.2.7 9 2.7Z" fill="#000"/></g><g transform="translate(178 1057)"><path d="M1301.3 694.3H182L6 692s25.8-236.8 36.7-268.4C69 348 95.3 256.1 163.2 211.3c29.6-19.6 53.3-37 55.2-47.6 1-5.3 97.8-99.7 115.3-109.2C417.2 8.9 498.5 36 498.5 36l.9 18.8s1.9 22.7 6.9 29.4c22.7 31 101.3 50.4 154.1 54.7 66.3 5.3 138.5-24.7 140.7-46.7 1.7-17.3-21.4-48.5 11.8-61.6C838.5 20.6 914.5 27 941 37.3c34.1 13.2 99 53.5 130.3 93.4 12.2 15.6 14.7 59.5 56.3 72.4 62 19.1 109.6 108.7 135.3 220.5 13.1 57.2 38.4 270.7 38.4 270.7Z" fill="#fff"/><path d="m843.7 694.3-377.5-.3s-13.5-434.3-13.5-523.6c0-74 36.6-154.8 52-130.7 28.5 44.5 76.5 55 149 58.3 115 5.1 121.6-38 137.3-46.8 31.4-17.9 52.7 56.4 52.7 133v510.1Z" fill="#000"/><mask id="bodyVariant09-a" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="453" y="259" width="392" height="433"><path d="m467 692-14-432.5h392V692H467Z" fill="#fff"/></mask><g mask="url(#bodyVariant09-a)"><g transform="translate(396 278)" style="mix-blend-mode:difference"><g fill="#fff"><path d="m302.9 264.7-.5.1h.5Z"/><path d="M410.3 250c-3-10-7.3-19.7-13-28.5a217.4 217.4 0 0 0-24.8-32.8 410 410 0 0 0-64.7-54.4 371.2 371.2 0 0 0-53.1-30A199.3 199.3 0 0 0 188 83.5c-12-.9-24.3-.1-36.2 2.3 11 1 22 2.8 32.7 5.4 14.8 4 33.2 11.6 49.3 18.1 20.5 9 40.7 18.8 59.8 30.5 29.6 19 53.5 38 76.8 62.8 12.4 14.3 20.5 25 28.4 40.5 3.7 8 6.4 16.6 8 25.3.8 6.1.7 5 .8 8.6v1.4l-.4 2.8v.1a44.4 44.4 0 0 1-19.2 27.3c-26.3 17-53 25.7-84.3 24.3-20.5-.8-41.7-6-58.8-10.7a385.2 385.2 0 0 1-61.8-22.6c-17-8-33.5-17.2-48.2-29-16.7-13.3-31.1-24.6-45-42.6-9.2-11.8-14.4-19.2-19.9-33l-.8-2.5c-1.6-5.4-1-2.5-1.7-8.3.2-3.5-.8-8 2.4-13.3a63 63 0 0 1 33.3-24c7.4-2.3 21.7-4.6 32.5-4.7 8-.1 16 1.2 23.9 2.4 15.7 2.8 28.7 6.9 44.7 13.5 14.7 6 29 12.8 42.9 20.4 29.1 16.6 63 42.2 70.4 67.4l.4 1.6v.2c.3 1.2.5 2.5.6 3.7v.3a114.5 114.5 0 0 0-.2 1.7l-.3 1.3c-1.5 4-7 7.6-15.3 10.1h-.3l-.3.2h.1a86 86 0 0 1-16.3 1.6c-9.5.1-18.9-1.6-28-3.8a126.6 126.6 0 0 1-38.1-15.5 189 189 0 0 1-26.9-18.4c-5.9-5-11.6-10.3-16.3-16.6-2-3-2.9-4.1-3.9-7.7a39.8 39.8 0 0 1 .2-.8l.2-.3v-.2l1.2-1.3.3-.4.3-.2c2.8-1.9 5.9-3.3 9-4.3 4-1.1 8.2-1.7 12.3-1.7a100.8 100.8 0 0 1 45.5 11.7 103 103 0 0 0-11.2-8.6c-12.8-8.2-29.1-15.6-44.6-14.2-12.4 1.7-19.9 6.7-20.1 20-.2 12.2 8.1 22.3 16.5 30.3 6.3 6 13 11.6 20.3 16.6a213.5 213.5 0 0 0 34 19c7.7 3 15.6 5.5 23.7 7.2 9.6 2.2 19.5 3.6 29.3 3 6.7-.3 13.5-1.1 19.7-3.8 25-9.7 16.6-42 3.8-58.7a158.2 158.2 0 0 0-36.9-35.3 284 284 0 0 0-51.1-29.7c-14-6.3-28-12.5-42.8-16.8a209.3 209.3 0 0 0-39.5-7.7c-7.8-.4-15.6 0-23.2 1.1A76.8 76.8 0 0 0 77.2 147a49.5 49.5 0 0 0-13 15.9 49.1 49.1 0 0 0-3.4 24c1.6 18.5 11.9 35 22.9 49.6a187.5 187.5 0 0 0 30.9 32.4c11.3 9.5 22.6 19.1 35 27 25.6 16 53.7 27.7 82.4 36.6 28.4 8.3 57.8 16 87.6 14.2a144 144 0 0 0 75.9-29 55.6 55.6 0 0 0 19-35.6 90 90 0 0 0-4.2-32Z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M528.4 299.2c2 3 4 6.1 4.8 9.6 1 4.7 1.3 11-3 14.2-2.5 1.4-5.6 1.7-8.5 2l-1.4.1c-5.3.4-10.6.5-15.9.4h-.4c-2.8 5.2-5.5 10.5-8 16 1.3-5.1 3-10.6 5-16.2a213 213 0 0 1-8-.5 142.3 142.3 0 0 0 3.3 8.2l-.5-.7-.6-1c-1.4-2.1-2.8-4.3-4-6.6a126.6 126.6 0 0 1-26-5c-5-1.5-10.6-3.3-12.2-8.7-1.3-5-.3-11 4.2-14a142 142 0 0 1 18.1-12.4c-.7-3-1.4-6.3-1.8-9.5-.7-7.3-1.7-22.4 9-22.2 4.4 1 7.9 4 11.2 6.8l1.6 1.3a150.9 150.9 0 0 1 8.8 8.5c3.8-1.7 7.7-3 11.6-4.2 3.1-.8 6.4-1.4 9.5-.4 3.8 2 4 7 3.5 10.8-.5 2.8-1.4 5.4-2.7 7.9l-3.5 7.1c2 2.6 3.8 5.3 5.6 8l.3.5Zm-8.8-20.8c-1.7.3-3.4.7-5 1.3l-.4.1-.5.2 3.6 4.2 2.4-5.8Zm-37.2-11.6 4 2c2.5 1.8 4.9 3.7 7 5.8a349 349 0 0 0-12.5 6.8 58.4 58.4 0 0 1-1-14.2l.8-.4h1.7Zm-3.3 30.2c-4.7 2.7-9.4 5.6-13.8 8.7 6 2 12.4 3.4 18.8 4.2a244.4 244.4 0 0 1-5-13Zm9 13.4-4.3-16v-.1l2.8-1.6c5.4-3 11-6 16.6-8.5a222 222 0 0 1 9.6 10.8l-6.6 16.5c-6 0-12.2-.4-18-1Zm29.3-9.7-5.8 10.8c4.3 0 8.6-.3 12.9-.8l-.9-1.4c-2-2.9-4-5.8-6.2-8.6Z"/><path d="M262.6 221.8c2 6.7 3.6 10.8-3.4 12.4-5.4 1.1-11 .5-16.4.4-.8 0-1.1 0-.2.3a45 45 0 0 0 9.6 3.6c12.6 3.2 17.6-6.8 10.4-16.7ZM412.8 353.9c-4.7 2.5-9.9 4.1-15 5.8a237 237 0 0 1-21.2 5.6 261 261 0 0 1-58.3 5c-22.6-1-45-4.8-66.8-11-18-5-45.7-11.8-72.3-22.3l-5.7-2.3a851 851 0 0 0 56.3 29.5 196.2 196.2 0 0 0 55.3 16.5c18.7 3.2 37.7 4.2 56.7 3 10.3-.6 20.8-1.6 30.9-4.3a134 134 0 0 0 39-17.4c8.7-6.3 15-15 21.4-23.6-6.6 5.7-12.6 11.2-20.3 15.5ZM391.5 147.3l-4.2-2.4 7.3 7a340.7 340.7 0 0 1 50.5 71.3c-8.6-31-23-61.4-53.6-76ZM18.6 152c5.3-8.4 19-25 29-31.4A100 100 0 0 1 75.5 106a95.2 95.2 0 0 1 21.2-2.5 69.2 69.2 0 0 0-23.6-2.9A78.2 78.2 0 0 0 44 111c-13.7 8-24 20.7-32 34.1a89.6 89.6 0 0 0-11 45c.8 19.6 8 38.5 18.3 55a300 300 0 0 0 38 44.2l15.1 14.5A518 518 0 0 1 27.1 242c-14.5-23.5-21.2-43.7-18.5-62.6a64 64 0 0 1 10-27.5Z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M134.7 341.1c-1.8-3-3.7-6-5.8-8.9l-.6-.7-.5-.6 1.4-2.6c1.3-2.1 2.5-4.3 3.3-6.7.8-3.5.8-8.2-2.3-10.6a7 7 0 0 0-4.4 0 43.7 43.7 0 0 0-11.4 4.2A264.7 264.7 0 0 0 91.6 294c-1-.9-2.1-1.8-3.4-2.4-3.5-1.4-5 3.2-5.3 5.8a64.1 64.1 0 0 0 2.5 20.5c1 4.3 2.3 8.6 3.7 12.8l-4 2.8-.7.5-9.8 7c-3 2.3-6.4 4.9-7 8.9-.7 3.5-.5 8.3 2.9 10.4 3.6 1.2 7.5 1.5 11.4 1.8l2.4.2c5.3.4 10.6.4 16 .1 2.3 6.7 4.7 13.4 7.3 20 .2.9.7 1.7 1.3 2.4-.7-1.2-1-2.6-1.2-4l-.4-1.9-1.5-6.5-2.2-10.2c2 0 4.1-.2 6.2-.4-1.2 4.6-2.1 9.4-2.7 14.1 1.4-4.9 3.1-9.7 5.1-14.3a464.7 464.7 0 0 0 10.6-1.2l7.8-1c1.2-.2 2.4-.6 3.6-1a7 7 0 0 0 2.4-3c2-4.7.8-10-2-14.2Zm-44-32.9c4.8 4 9.3 8 13.6 12.4l-9.4 6c-1.7-6.7-3.2-13-4.2-18.4Zm2.5 34.4-8.4 5.7c3.5.2 7 .3 10.5.2l-2.1-6Zm7.3 5.8-2.3-9.2 4.7-3c3.1-2 6.8-4.2 10.5-6.2 1.6 1.8 3.4 3.7 5 5.7a230.1 230.1 0 0 0-4.3 11.6c-4.5.5-9 .9-13.6 1Zm19.8-3.5-1 1.9 7.2-1c-1-1.5-2.5-3.3-4-5.2l-.5 1-1.7 3.3ZM380.5 75.7c-1.2-2-3-3.5-5.2-4.4l-8-3.8c.3-14 .3-27.9-.3-41.8-.3-2-1.1-5.4-3.7-4.6a17.3 17.3 0 0 0-3.6 5 341 341 0 0 1-19.6 29.4 646.9 646.9 0 0 0-43.3-16.7c-1.8-.6-3.6-1.2-5.3-.4-4.3 3.3-3.8 10.2-1.7 14.6a64 64 0 0 0 9.8 12.5l.2.2c5.4 5.8 11.2 11.1 17 16.4l1.6 1.4 1 1a5872 5872 0 0 1-15 9.4 27 27 0 0 0-5.7 4 6 6 0 0 0 0 6.6 3 3 0 0 0 2.6.8c1.5 0 3-.3 4.6-.5 5.1-.9 10.2-2 15.3-3.1l5-1.2 9-2a3942 3942 0 0 0 12.6 11.1c4.2 3.7 10.2 9 14.2 5.6 3.4-3.3 3.8-8.2 4.1-12.7l.2-2.3.5-8.6 6.2-1.2c.5 0 1-.2 1.4-.3 1.4-.3 2.8-.6 4-1.3 4-2.9 4-9 2-13Zm-20-12.7v1.4l-9.3-4.1 5.6-6a57 57 0 0 0-8.4 4.8 242.4 242.4 0 0 1-4-1.7l-1.4-.6c6.5-6.2 12.5-12.8 18-19.8-.3 7.4-.4 16.6-.5 26Zm-55-7A1166.6 1166.6 0 0 0 337 85a225.8 225.8 0 0 1 23.2-6v-.5c-5.7-2.6-11.5-5-17.3-7.5l-3.5-1.5a55 55 0 0 1-5.6 3 94 94 0 0 1 3.5-3.9l-5-2.1a54 54 0 0 0-.7.6l.4-.5.1-.2c-8.8-3.6-17.6-7.2-26.6-10.5Zm5 38.4c3.3-3 6.5-6.2 9.6-9.4l4.5 4.1a556 556 0 0 0-14 5.3Zm38.5 1 1.8 1.7 1 .9c1.5 1.2 3.7 3.2 6.7 4.4h.5c.3-2.6.6-5.7.7-9.3L349 95.4Z"/></g></g></g><path d="M1295 694c-6.2-21.3-11.5-73.3-14.9-102-2.4-20.7-19.6-166.5-38.5-217.4-11.6-31.1-22.4-63-39.5-92.1-11.7-20-29.3-34.3-46-48.9a513 513 0 0 0-67-48.2c-30.9-19.2-63.4-23-97.6-11.7a32 32 0 0 0-21.9 24.3c-13.4 53.3-9.1 107.6-9.8 161.6-.8 69.8 3.1 139.5 5.2 209.2 1.8 57.2 0 66.7-.6 125.2h-14.5c-.9-32.2-.4-15.3-.6-47.5-.2-47.6-.8-95.1-1.6-142.7-.6-37.8-.3-75.7-2.8-113.5-2.6-39.6-2.7-79.1.7-118.6 2.5-28.2.1-57 11.3-84.3 9.4-23 28.3-31.8 49.9-33.5 22.4-1.7 45.7-4.8 69.8 9.3-4.8-16.6-15-24.7-22.6-34-28-34.2-65.5-55.5-103.6-76.8-39.3-22-80.7-19-122.6-17.4-6.5.3-12 3.8-17.8 6.7-7.5 4-15.3 7.3-26.6 4.8 9.5-13 22.1-17.3 35.1-21.1 37.1-10.8 73-5.2 95.7-1.8C943 28 1042.7 76 1089.7 151.5c22.3 35.9 85.8 36.4 143.6 157.6a528 528 0 0 1 34.7 100.7c10.9 44 39.5 252.6 39.5 284.2H1295ZM15.3 694c2-6.9 2.7-9.9 3.6-15.7 4.6-28.4 5.5-57.6 8.9-86.3 2.4-20.6 3.3-41.4 6-62 7.2-52.7 15.6-105 32.5-155.4 10.7-31.7 22.4-63 39.5-92.1 11.7-20 29.3-34.3 46-48.9 20.7-18 43.5-33.7 67-48.2 30.9-19.2 63.4-23 97.6-11.7a32 32 0 0 1 21.9 24.3c13.4 53.3 9.1 107.6 9.8 161.6.8 69.8-3.1 139.5-5.2 209.2-1.8 57.2.5 125 .5 125l14.6.2c.9-32.2.4-15.3.6-47.5.2-47.6.8-95.1 1.6-142.7.6-37.8.3-75.7 2.8-113.5 2.6-39.6 2.7-79.1-.7-118.6-2.5-28.2-.1-57-11.3-84.3-9.4-23-28.3-31.8-50-33.5-22.3-1.7-45.6-4.8-69.7 9.3 4.8-16.6 15-24.7 22.6-34 28-34.2 65.5-55.5 103.5-76.8 39.4-22 80.8-19 122.7-17.4 6.5.3 12 3.8 17.8 6.7 7.5 4 2.3 11.5 6.4.7 5.8-15-2-13.2-15-17-37-10.8-74-4-111 .5-7.4 1-14.8 4.4-21.5 8-51.4 27.8-116 77.2-138.6 117.6-12 21.6-30.7 32.8-47.5 47.7C111 252.3 95.3 263.8 74.6 309a573.6 573.6 0 0 0-34.7 100.7c-11 44-19.1 88.6-22.8 134.2-2.7 32.4-7.4 64.8-10.3 97.4-2 22.8-3.5 39.7-3.5 52.6h12Z" fill="#000"/><path d="M1131.8 694c2-23.7-8-84.7-12.5-115.7-3.3-22.6-3-46-11.4-67.7-2.1-5.4-1.5-12.4 5.3-13.5 6.4-1 9.2 3.5 10.7 10.8 7.8 38.3 11.3 77.2 16 116 3.5 30 7.8 60 8.5 70l-16.6.1ZM193.3 694c1.4-23.6 8-84.7 12.6-115.7 3.3-22.6 3-46 11.4-67.7 2.1-5.4 1.5-12.4-5.3-13.5-6.4-1-9.3 3.5-10.7 10.8-7.8 38.3-11.3 77.2-16 116-3.6 30-5.7 70.1-5.7 70.1h13.7Z" fill="#000"/><path d="M467.4 694.3S452.7 266.8 452.7 179c0-72.8 36.6-163 52-139.2 28.5 43.8 77.2 58.4 149.7 61.5 115 5 120.9-41.3 136.6-50 31.4-17.6 52.7 66 52.7 141.4V694" stroke="#000" stroke-width="15"/></g><g transform="translate(266 207)"><path fill-rule="evenodd" clip-rule="evenodd" d="M344.5 231.5c-11.9 1.6-20.1 8.2-25.8 19.7l-2.7 3c-1.8 1.9-3.4 3.6-4.2 5.7-7 18.3-8.2 38-8.7 56.9-.2 6.1 2.8 12 5.8 18 3.7 7.2 7.6 14.7 6.2 23.5-.2 1.5 2 3.7 3.5 5.1 2.8 2.8 3.5 5.7 1.9 9.2-8 17.1-8.6 35.6-9.2 53.8l-.2 5-.1 3.5c-.6 13.1-1.3 28.6 14.4 35.2 22.4 9.5 35.3 26.6 44.8 47.8 7.5 16.8 9.7 34.7 10.7 52.8 16.2-.6 23.1-6.3 24.4-22.9a144 144 0 0 1 12.3-42.7l1.9-4.6c21-52.7 58-94.1 95-135.5L529 349c3.1-3.6 6.4-6.4 12.1-3.8a1843.6 1843.6 0 0 0 62.2 26.5c9.2 4 18.4 8 28 9.6l8.8 1.6c15 2.6 30.2 5.2 44.9 8.4 24.4 5.3 49 9.4 73.7 13.4l20 3.4c13.8 2.3 28 6.2 38.7 17.2A56.3 56.3 0 0 1 830 481c-1.7 5.7 2 9.2 6.1 13l3.3 3.2c3.8-17.5 10-22.4 21.6-25.7 8.6-2.5 16.8-6.2 25-9.8 8.6-4 17.3-7.8 26.5-10.3 5.8-1.8 10.7-6 13.2-11.6 2.6-6 6.8-11 11-16 5.3-6 10.5-12.3 13-20.9l2.3-7c5.3-16.6 10.3-32.1-1.8-48.7-1.6-2-2.6-4.4-3-7-1.6-21-15.8-32.2-33-39.5a75.7 75.7 0 0 1-8.6-4.5c-8.9-5.3-18-10.5-28.8-2.4-7.6-13.4-8.7-24.6 6-33 3.9-2.2 6-7 6.8-12 .7-4.4 1.1-9 1.5-13.4 1.2-11.5 2.3-23 7.6-33.7 1.9-3.8 1-8.3.2-12.7l-.6-3.5c-.8-5.6-4.7-9.5-8.2-13.2-3.1-3.2-6-6.1-6.3-9.7-2.3-25.1-16.2-36.7-39-41-.2 0-.4-.3-.6-.4-.2-.1-.3-.3-.5-.3-19.3-10.7-38.2-12.3-56.8 1.8-3.4 2.5-7.3 3-12 2.4-10.6-1.2-22.7 1-27 10.3a137.5 137.5 0 0 1-24.3 35.1c-5.1 5.6-9 7.7-16 6.6-13-2-34.6-1.3-48.2-.8-5 .1-9 .3-11 .2-3.6-6.5-2.7-14.2-1.8-21.3 4.6-36.6-17.1-62.8-53.7-64.4-3-.2-5.8-.8-8.6-1.8a65.8 65.8 0 0 0-57 8.8l-3.1 2c-12.7 8-26 16.4-33.4 31.7-1.8 3.7-4.3 7-6.7 10.2-4.9 6.6-9.8 13.3-9.7 23.6 0 2.7-.2 5.4-.4 8.1-.4 5.1-.8 10.4.4 16 1.5 7-.3 14.2-9.3 18.6-8.4 4.2-16.3 9.5-24 14.9l-10 6.7a74.8 74.8 0 0 0-40.8-10c-1.7 0-3.4-.4-5-1-11.6-4.8-21.6-2.7-29.8 7a16.7 16.7 0 0 1-11 5.9ZM684 226c-.6-7.1-1.2-14-6-19.7-3.7-7.1-8.8-12-14-17-2.6-2.4-5.2-4.9-7.7-7.7 21.2-1 36.5 29.5 29.8 57.7-1.3-4.4-1.7-8.9-2.1-13.3Z" fill="#000"/></g><g transform="translate(791 871)"><path d="M176 65c-3.3-2.8-6.4-5.1-11.4-2.8-7.9 3.6-16.1 6.5-24.3 9.8 8.5 11.3 17.4 21.9 23.8 34.4 4.2 8.3 11.8 14.4 22 10.5 9.4-3.5 9.3-12.6 8.4-20.7A42.6 42.6 0 0 0 176 65Z" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="M209 98v-4.9c1-6.4-.6-11.9-2-16.6l-1.3-5.2c3-5.6 7-3.3 10.7-1.1 4 2.3 7.5 4.3 9.2-2.9 1.8-7.2-2-15.5-10.5-20.3-7.8 8.7-16.3 7.7-25.4 2.7C183.2 46 176 44 169 47.3c-11 5-22.8 6.5-34.6 8.1L123 57l-2.5.4c-11.3 2-22.5 3.9-32.7-4.6-3.4-2.8-7.4-1-10.4 1.9-3 3-4 6.6-2.1 10.4 1.6 3.2 4 4.7 8.1 4.8 23.3.2 42.8 8.8 57.4 27.2 3 3.7 5.5 7.6 8 11.5 1.7 2.5 3.3 5 5 7.3 14 19.7 40.7 23.2 52.3-.4C209 110 209 104.3 209 98Zm-44.4-35.8c5-2.3 8.1 0 11.4 2.9a42.6 42.6 0 0 1 18.5 31c.9 8.2 1 17.3-8.4 20.8-10.2 4-17.8-2.2-22-10.5A185.7 185.7 0 0 0 144.9 78l-4.6-6 7.3-2.9a281 281 0 0 0 17-7Z" fill="#000"/></g><g transform="translate(653 805)"></g><g transform="translate(901 668)"><path d="M7.4 185c5.4-8.7 22.6-12.2 32.1-7.3 6.6 3.4 13 7.6 20 1.7 6.5-5.6 4.6-12.2 1.5-18.7-1.6-3.2-.8-5.7 2.2-7.5 3-1.9 5.5-1.1 8.2.8a20.1 20.1 0 0 1 8 21.5c-1.6 7.3-3.8 16-12.7 19-4 1.4-8.8 3.5-12.3 2.4-15.4-4.7-33.8 3.4-47-12Z" fill="#000"/></g><g transform="translate(610 680)"><path d="M419.6 111c-4.2-9.5-9.9-15.2-19.8-15.7-6-.3-7-5.1-8.9-9.8 2-1.5 3.5-3.7 5.3-3.8 21.1-1.7 42.4-1.8 63.5-.1 6 .4 9.3 8 3.2 10.4-10 4-12.5 13.2-18.5 19.8-8.2 9-15.2 9.1-24.8-.8ZM228.6 81.4c12.2.7 23.1 1 34 2 3.6.3 8 1.8 8 6.7 0 5.6-4.6 5.2-8.3 5.1-6.3 0-9.7 2.7-12.5 8.6-3.4 7.4-6.9 15.3-18 14.8-10.5-.5-15.1-7.2-18.1-15.2-2.2-5.7-5-8.4-11-8.2-3.4.1-7.1-.2-7.5-4.9-.4-5 3-6 7-7.2a67.9 67.9 0 0 1 26.4-1.7Z" fill="#000"/></g><g transform="translate(610 680)"></g><g transform="translate(774 657)"><path d="M295 29.6c2.6 7.3 5.5 13.5 7 20 1.2 4.9 1.7 10.4-5 12.6-7.6 2.6-8.6-3.4-10.6-7.8a120 120 0 0 1-5.5-14.2c-1.5-4.9-4.3-7-9.4-6.8-5 .1-8 3-9.3 7.2-1.7 5.3-3 10.7-4 16.1-1 4.5-4.2 4.8-7.8 4.6-3.6-.1-5.3-2-5.9-5.5-3.2-20.1 6.1-38.2 25.9-41.2 12.2-2 19 4.5 24.5 15ZM50.6 33C65.7 12.5 80 8.5 94.6 21.7c9.1 8.3 8.7 21.2 10.7 32.6.5 3-2 5.7-5.3 6.3-3.5.7-7-1.2-8.4-4.4-1.7-4-2.2-8.3-3.6-12.2-1.7-4.8-3.2-10-9.7-10.5-6.4-.5-10.6 3-13.2 8-3.6 7.2-4.8 20-15.7 14.7-10.4-5-1.9-14.7 1.2-23.2Z" fill="#000"/></g><g transform="translate(0 559)"></g></g></svg> | |
+1 −0 viewer/assets/avatars/sam.svg 新增 查看文件
| @@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1744 1744" fill="none" shape-rendering="auto"><metadata xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"><rdf:RDF><rdf:Description><dc:title>Notionists</dc:title><dc:creator>Zoish</dc:creator><dc:source xsi:type="dcterms:URI">https://heyzoish.gumroad.com/l/notionists</dc:source><dcterms:license xsi:type="dcterms:URI">https://creativecommons.org/publicdomain/zero/1.0/</dcterms:license><dc:rights>Remix of „Notionists” (https://heyzoish.gumroad.com/l/notionists) by „Zoish”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)</dc:rights></rdf:Description></rdf:RDF></metadata><mask id="viewboxMask"><rect width="1744" height="1744" rx="0" ry="0" x="0" y="0" fill="#fff" /></mask><g mask="url(#viewboxMask)"><g transform="translate(531 487)"><path d="M554 727.7c-99.2 297-363.8 388.6-503.7 19.8-19.3-50.7 31-69.5 66.2-91.9 24.1-15.3 36.8-28.5 35.3-42.2-7-64.4-36.9-243.8-36.9-243.8l-3-5.8s.7-1.6-2.2 1.2c-3 3-9.9 34.2-37 34.2-24.5 0-49.2-10.9-61-86.3C7.2 285.6 9.6 214 40 201c12.5-5.3 24-7.2 35.2-.8 11.3 6.4-13-22 112-126C268.4 6.4 396.7-3.5 448.5 8 500.3 19.5 552 44.8 574.9 98.5c27.8 65-25.9 114.3-14 262.5-2.2 53.6.8 171.2-146.6 210.6-28 7.5-19.3 48.4 22.7 58.4 67 21 117 72.3 117 97.9" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="m554 266.2.1-1.4c4.1-36.4 8.2-71.7 27.1-103.4 6.5 4.4 5.7 10 3.7 15.2-19.9 51.2-18 104.4-16.2 157.6l.4 14c2.1 66.4-14.5 126.8-58.7 177.5-15.4 17.6-35.8 29.8-56.5 40.3-21.4 11-25.9 20.1-19.2 43.6l.8 2.6c1.4 3.9 2.8 7.9-1 11.8-4.5 4.6-9.5 3.3-14.8 1.8l-.6-.1a406.4 406.4 0 0 1-137-68.3c-6-4.4-10.8-10.3-15.5-16.1l-.3-.4c-2.5-3-3-7.8.5-10.4 3.3-2.5 5.8-.5 8.7 1.8l1 .9a145.5 145.5 0 0 0 76.3 31.7c13.4 1.4 26.6.9 40 .4 7.4-.3 14.8-.6 22.3-.5 10.2 0 18.7-4.7 26.7-9.2l2.8-1.6c27.8-15.5 54.3-32.8 72.2-60.7 16.1-25 25.9-52.2 31.6-80.9 7.2-36.1 6.6-72.7 6-109.8-.3-12-.5-24.2-.5-36.4ZM50.6 190.8c21.9-1.7 34 11.2 44.3 26.3a140.4 140.4 0 0 1 22.4 61.5c.5 3.7 1 7.6-1.2 11.3-4.5.6-4.9-3-5-5.6-.5-20.7-9.7-38.7-18.9-56.1-6.6-12.5-16.2-24.6-31.4-27.6-17.2-3.5-33 12-40.8 32.2-14.5 37.6-12 74.6 1.4 111 5.8 15.9 13.1 32.1 27.8 43.2 14.8 11.3 32.7 9.3 43.6-5.7l2-2.5c2-2.6 4-5.1 5-8 2.1-5.8 5.4-11.2 11.3-10.4 6.8 1 8 8.3 8.7 14a3661 3661 0 0 0 22 156.7l5.9 38.8c2.6 17.1 5.6 41.7 3.6 52.1a28 28 0 0 0-.3 2.2c-.4 2.8-.6 5-4.2 5.5-4.9.8-7-2-7.7-6.4-2.3-17-3-23.6-4-49.6-.9-25.2-5.6-50-10.4-74.9l-5-27c-5.2-30.8-10.3-62-10.8-97l-2 3c-7.6 11.3-13.7 20.5-24.5 24a40.5 40.5 0 0 1-46.1-12.5 127.8 127.8 0 0 1-28.8-55.8c-8.4-34-9.9-67.1.9-100.6 5.2-16.1 23.7-44.7 42.2-42Zm34.6 127.5c4.4 3.2 8.4 6 12-5.4-1.1-42.2-14.7-69.2-35.8-70.3 11.2 14.6 22 28.8 23 48.5a32.3 32.3 0 0 1-10.7-8.8c-2-2.2-4-4.4-6.5-6l-3-2.4c-4.8-3.6-9.7-7.4-17.8-4.5 3.8 5.8 9 10 14.3 14 6 4.7 12 9.3 15.6 16.5-10.6 7.7-15.2 17.7-9.7 29.9 4.8 10.5 11.9 19.2 25.9 19.8-.6-6.3-4.7-10.9-8.8-15.4-5-5.4-9.7-10.6-7.5-18.6 3.2-1.5 6.2.7 9 2.7Z" fill="#000"/></g><g transform="translate(178 1057)"><path d="m1351 688-1369-3.3s11.4-97 44.3-189.1c41.2-115.2 107.2-232 125-246.1 20.8-16.8-11.6-18.2 3.4-41.2 33.5-51.1 147-97.5 179.8-114.1 58.7-29.8 164.8-47.8 164.8-47.8l27.2 53.5s63.5 21.9 138.6 24.4c40.5 1.3 134.4-29.5 134.4-29.5L788.3 37s169.5 34.8 253.3 85.6c48.3 29.3 108.5 75 110 101.2 2.2 39.8 1.7 36.7 24 51.9 53.5 36.2 98.8 122 121.2 191.2C1314.4 521.1 1351 688 1351 688Z" fill="#fff"/><path d="m924.7 688-94.5-.3L843 482.6l-43.4-379.4s-110.1 29-147 27c-31.4-1.5-123.7-22-123.7-22s51 280 55.9 374.4C587.3 533.9 576 688 576 688l-209.4-1.2L276 489s51-133.4 101.5-206.7c9-13.1-22.8-16-64.1-14-42.2 2-164.2-13.8-162.4-44.5 3-51.3 150.5-113 183.4-129.6C393 64.4 499.2 46.4 499.2 46.4l27.3 53.5S590 121.8 665 124.3c40.5 1.3 134.4-29.5 134.4-29.5L788.3 37s169.6 34.8 253.4 85.6c48.3 29.3 122 66.1 111.2 120.3-2.3 12-207 47-187.2 89.8 24.6 53 88.8 118.6 79 135-16 27-40.8 67.7-69.5 103.3-20.2 25-50.5 117-50.5 117Z" fill="#000"/><path fill-rule="evenodd" clip-rule="evenodd" d="M301.5 563.4c20.5 40.6 41 81.3 56 124.6 6.6 0 12 0 17.7-1l-4.3-11a672.5 672.5 0 0 0-19.6-47.8 5876 5876 0 0 0-34.2-70.7c-9.4-19.2-18.8-38.3-28-57.5-3.8-8-6-16.9-1.3-25.8 6.7-12.8 12.6-26 18.4-39.2l5.2-11.8c11-24.4 24.5-47.6 38-70.9 10.6-18.1 21.2-36.3 30.6-55 8-16.3 5.6-24.5-12-30a48.4 48.4 0 0 0-10.5-2.3c-8.6-.7-17.2-1.2-25.9-1.7-26.4-1.5-52.9-3-78.6-10.8-8-2.4-16.3-3.7-24.6-5-8-1.3-16-2.6-23.8-4.9l-4.6-1.3c-14.8-4.2-30-8.6-41.4-20.3l1.7-2.4c1-1.3 1.8-2.5 2.8-3.5 25.5-28.7 59-47 92.3-65.1l20-11a963.1 963.1 0 0 1 62.6-31.4c7.9-3.7 15.8-7.4 23.7-11.3A394 394 0 0 1 423 71.5c10.6-3.1 21.4-5.6 32.2-8 7.8-1.9 15.6-3.7 23.3-5.7 20.1-5.3 23.8-4 29 15.7l9.1 34.2a2051 2051 0 0 1 26.8 106.6c8.7 40.7 14.4 82 17.2 123.5a1480 1480 0 0 0 6.8 70.7c3.7 32.2 7.3 64.3 8 96.7.5 20.8-.1 41.6-.8 62.4l-.8 29c-.3 13.5-1.8 26.9-3.3 40.2-2 17-4 34-3.3 51.2 6.7 0 12.2 0 17.8-1.2l.6-16.2c.2-10.2.5-20 1.6-29.6 5.7-51 4.8-102 3.7-153-.7-33.6-3.6-67-8.4-100.2a605.8 605.8 0 0 1-4.6-52.8c-1.3-23-2.6-46.1-7.3-69a1627 1627 0 0 1-6.7-34.2 906 906 0 0 0-13-61.8c-.2-1-.6-2-1-3-1.2-3-2.5-6 .6-8.9 4-3.8 9.1-2.7 14-1.4A373 373 0 0 0 690 167.3c31.6-2.4 62.8-5.8 91.8-19.5 8.7-4 15.5-1.5 17.4 9 1 5.6 1.7 11.2 2.4 16.9 1 7.9 2.1 15.8 3.8 23.4 7.8 34.8 10 70 12 105.2 1 16.1 2 32.2 3.5 48.3 1.1 12 2 24.2 2.8 36.3 1 14.6 2 29.1 3.6 43.7 6.3 60.7 4.7 121.5 2.7 182.3l-.7 20c-.7 18.4-1.4 36.7-1.4 55 5.8 0 10.4 0 15.4-1l.8-5.3c1-6.5 2-12.5 2-18.4l.3-44.7c.1-28 .3-56.2 1.6-84.2 1.7-37 .6-74-3.2-111-2.7-26.2-4.5-52.4-6.3-78.7-1.7-24.1-3.4-48.3-5.7-72.4-4.5-46-10.5-92-20.5-137.3a2499.2 2499.2 0 0 1-13.8-68.7c-.5-2.4-.4-5-.4-7.4v-4c-.3-6.4 2.7-8.5 9.1-7.2a642.2 642.2 0 0 1 79.2 18.8c21 6.9 41.7 15 62.3 23 7.3 3 14.7 5.8 22 8.6a446.7 446.7 0 0 1 141 84.8c13 11.7 24.1 25.1 31.8 40.6 4.5 9.3-.3 19.2-9.6 21l-9.2 1.9c-22.7 4.4-45.4 9-67.6 15.7a251.6 251.6 0 0 0-92.9 50.8c-7.6 6.6-8.7 14.7-4.5 23.2 4 8 8.4 16 13.2 23.6 5.8 9.2 11.7 18.4 17.7 27.5a705.7 705.7 0 0 1 42 70c3.2 6.5 4 13-.3 18-9.4 10.8-16.8 22.9-24.3 35a360.3 360.3 0 0 1-16.9 25.7 486 486 0 0 0-53.6 90.3c-3.6 7.9-6.6 16-9.7 24.2-4.8 13-9.7 25.8-16.5 37.7 7.5 0 14 0 20.6-1 10.7-33 23.5-64.2 41.5-93 23-37.1 47.5-73.3 72.3-109.3 6.3-9 9.7-18.8 3.8-31a589 589 0 0 0-27-48.5l-.4-.7c-13.9-23-28.7-45.6-43.7-68-4.7-7.2-2.2-12 3-16.8a158.1 158.1 0 0 1 41.7-26.7 355.4 355.4 0 0 1 102.9-29.7c12.8-1.7 22.3.7 32 7.6 34.6 24.3 64.6 51 82.6 90.3l8.7 18.7c12.8 27.6 25.6 55.2 35.5 84a1107 1107 0 0 1 41 147.4c5.8 25.6 11.6 51.2 18.2 76.7 4.9 0 8.6 0 12-1-5.3-21.6-9-43.3-12.8-65-4.7-27-9.4-54-17-80.4l-1.4-5.3c-6.6-23.2-13.2-46.4-21.1-69a882 882 0 0 0-52-121.3c-18.2-34.7-45.8-61.4-77.7-84.9-1.4-1-3.2-1.9-5-2.8-6-3.1-12.7-6.5-9.7-16.8 5.2-17.6 1.8-33.7-13.7-46.3a86.8 86.8 0 0 1-9.6-9.7l-3-3.3c-41.4-45.3-95.8-72.5-151.8-97-36.4-15.9-74.5-28.1-112.6-40-23.7-7.3-48-13.2-73-15-12.7-1-18 4.8-16.5 16.8.4 3 .8 6 1 9 .8 6.7 1.5 13.5 3.1 20 2.8 11.2-3.2 17.2-12 21.2-22 9.8-45.4 17.3-69.4 18.8-52.8 3.3-105.4.7-156-16.9-8.5-3-13.3-7.4-16.9-14.7-2.5-5-4.7-10.2-6.8-15.3a224 224 0 0 0-11-23c-5.4-9.6-11.8-11.8-21.6-8.6-6.4 2-12.8 3.7-19.3 5C434.6 50.4 399.3 59 366.5 75c-46 22.4-91.7 45.1-136 70.3-30.3 17.2-60 34.8-82.7 61.3-6.2 7.3-7.5 14.5-2.5 22.2 4.2 6.5 3.9 11.5-2 17a139.2 139.2 0 0 0-22.8 30c-1.8 2.8-3.5 5.7-5.4 8.5-21 32-39.7 65.2-56 99.5A873.4 873.4 0 0 0 26.7 463l-1 2.8c-7.9 22-15.7 43.9-21.3 66.5a925 925 0 0 1-5.6 21.5 563.4 563.4 0 0 0-8.8 35.3c-6.6 32.9-12.2 66-17 98.9 6.7 0 12.1 0 18-1l8-46c2-12.3 4-24.5 6.2-36.6 11-63 32.6-123 57-182a838.3 838.3 0 0 1 91-160.9c4-5.6 9-7.2 15.7-7.8 16.4-1.5 31.6 2.9 46.8 7.2 7.8 2.3 15.6 4.5 23.5 6l15.7 2.8c27 5 54 10 81.8 11.4 2.9.2 5.8.2 8.7.2 8.1 0 16.5 0 25.3 3l-8.4 13.6-23.8 38.6a729.7 729.7 0 0 0-50 95.6 948.5 948.5 0 0 1-18.2 39.1c-3.8 7.6-4.9 14.6-1.7 22l1.3 3c6 14 11.9 27.8 18.6 41.4l13 25.8Zm476.8-452c4.8-2.6 10.3-5.4 11.2 3.7 1.8 10.6-5.4 14.2-11.5 17.3l-1.8 1c-17.5 9.2-37 14-56.8 16.2a437 437 0 0 1-145.1-5.8c-9.6-2.2-18.8-5.6-27.4-10-5.6-2.7-8.1-6.8-6.8-12.5 1.5-6 5.5-5 9.5-4l2.4.6 19.4 3.8c16.5 3.3 33.1 6.6 49.9 9a293 293 0 0 0 103.8-2.9l1-.1c18-3.8 35.8-7.5 52.2-16.2Z" fill="#000"/><path d="M200 688c3-35 7-69.8 11.4-104.7 3.6-29.7 4-60 17.4-88 1-2.4 2.3-4.6 3.8-6.7 2.3-3.1 5-6.8 9.7-5.2 5.3 1.7 3.6 6.4 2.7 9.9-8 32.1-13.3 64.8-17.7 97.5-4.1 31.5-6.2 63.3-9.4 96-5.8 1.2-11.2 1.2-18 1.2ZM1150.9 688c-9.8-36.3-12.8-73.7-23.3-109.7-6.2-21-9.8-42.8-17.9-63.4-1.6-4.2-.5-9 4-11.2 4.4-2.3 7.4 1.3 9.9 4.3a55.4 55.4 0 0 1 9.9 22.1c11.5 43.4 20.8 87.4 27.6 131.7 1.2 8 1.2 16 1.9 25.2-3.5 1-7.3 1-12.1 1Z" fill="#000"/></g><g transform="translate(266 207)"><path d="M312.7 272.6c3.8-10.5 11.7-7.8 18.6-6.8 16 2.3 31.4 3.5 47.8.4 18.7-3.5 31.6-13.7 43.2-26.4 19.8-21.5 38.8-44 63.8-59.6 45.7-28.6 94.5-40 148.3-27.4 22.8 5.3 44.4 13.9 66.9 19.5 24 6 49.7 11 69.8-11.7 12.4-13.9 16.5-31 19-48.8.6-4.5-1-10.1 5-11.9 4.8-1.4 9.2.8 13 3.8 16.5 13.2 33.7 25.9 40 47.9 1.4 4.5 3.8 8.6 7 12 24.8 26.3 18.7 53.8 2 80.5-6.4 10.4-12 21.3-25.6 29.7 11.1-2 19.6-9.2 34.9-28.5 9-11.4 10.8-26.8 21.4-38.7a52.8 52.8 0 0 1 9.9 49.3c-3.3 12.6-.2 24.3-.7 36.4 0 1.2.1 3.1.9 3.6 14.6 9.6 6.2 22 3.4 33-2.4 9.5-2 18.6-1.9 28a63 63 0 0 1-23.8 51c-11 9.6-18.3 23.5-24.9 37.1-5 10.5-7.6 22.3-17.8 34.1-4.5-38-5.5-75.3-48.1-93.3 15.8-6.2 29.5.4 42.7-6-8.4-5.8-17.6-2.4-25.2-7.2-7.3-4.5-13.5-9.4-16.6-16.8a25.5 25.5 0 0 0-19.1-16.7c-8.3-2-16.3-4.9-23.9-8.7-24.7-12.3-50.6-8.5-76.2-4.6-27.8 4.2-55.2 1.1-82.7-1.6-30.1-3-113-33.4-153.2 85-9 26.6-9 54.5-10.2 82a32.2 32.2 0 0 1-7.6 21.4 102 102 0 0 0-23.7 44.4c-1.1 3.8-2 9.2-7.4 9-6.6 0-5.2-6.1-6.4-10.5-8.3-28-16.2-56.7-42.5-74.4a27 27 0 0 1-12.8-23.5c0-13.7-7.3-24-14.4-34.6-4.6-6.8-10.6-13.7-5.3-23 .4-.6.8-2 .4-2.4-9.7-9.6-3.3-23.7-9.5-34.2-4.7-8.1-9-15.7.1-23.9 2.4-2-1-6.7 2.5-10.2 14-5.3 24.3 15.6 42.1 6.3-16-5.9-23.5-18-31.6-29.5-7.6-11-4-21.5 9.3-24l-1-9.5Z" fill="#000"/></g><g transform="translate(791 871)"><path d="M141.7 79c-3.2 7-5.7 14.2-6.1 22-.2 4.6.8 9.8 6 11.6 5.4 1.9 9.1-1 12.8-5.6 6-7.5 7.4-16.2 7.5-25.1 0-5 1.3-11.8-6.1-13.7-7.6-2-10.7 3.1-14 10.7Z" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="M140.4 59.5c-14.9 15-17.2 33.4-14.1 54.3 5.4 10.8 14 11.2 23.4 9.9 21.3-2.9 39.6-34.7 26-58.5-9.4-16.3-22-19-35.3-5.7Zm-4.8 41.4c.4-7.7 2.9-15 6.1-22 3.4-7.6 6.5-12.7 14-10.7 6.7 1.7 6.4 7.3 6.3 12v1.7a39.1 39.1 0 0 1-7.6 25.1c-3.7 4.6-7.4 7.5-12.8 5.6-5.2-1.8-6.2-7-6-11.7Z" fill="#000"/></g><g transform="translate(653 805)"></g><g transform="translate(901 668)"><path d="M99.8 182.6c-8.7 16.5-33.4 25.7-48.5 18.9-4.3-2-6.2-5.8-7-10-.5-2.7.9-5.3 3.3-6.5 4.6-2 5.8 2.3 8.6 4.8 7 6 13 .7 19-3.4 5.8-4 9.1-8.5 4.3-14.7-10.5-13.1-14.8-29.2-21.8-44-3.1-6.5-5-13.5-3.8-21 .5-3.3 1.9-5.5 5.6-5.6 2.8 0 5 .8 5.9 3.8 7.5 26.3 23.3 48.6 34.6 73.1.5 1 0 2.5-.2 4.6Z" fill="#000"/></g><g transform="translate(610 680)"><path d="M419.6 111c-4.2-9.5-9.9-15.2-19.8-15.7-6-.3-7-5.1-8.9-9.8 2-1.5 3.5-3.7 5.3-3.8 21.1-1.7 42.4-1.8 63.5-.1 6 .4 9.3 8 3.2 10.4-10 4-12.5 13.2-18.5 19.8-8.2 9-15.2 9.1-24.8-.8ZM228.6 81.4c12.2.7 23.1 1 34 2 3.6.3 8 1.8 8 6.7 0 5.6-4.6 5.2-8.3 5.1-6.3 0-9.7 2.7-12.5 8.6-3.4 7.4-6.9 15.3-18 14.8-10.5-.5-15.1-7.2-18.1-15.2-2.2-5.7-5-8.4-11-8.2-3.4.1-7.1-.2-7.5-4.9-.4-5 3-6 7-7.2a67.9 67.9 0 0 1 26.4-1.7Z" fill="#000"/></g><g transform="translate(610 680)"></g><g transform="translate(774 657)"><path d="M131.2 43.2c-5.6 16.8-6.6 15.4-23 11.6-26.2-6-52.7-19.2-80.3-4.3-2 1.1-5 1-7.6.8-3.6-.2-8.2 1.3-10.1-3.3-2.1-5 1.5-8.3 5.3-10.3C35.2 27.7 53 13.4 77.9 16c12.8 1.3 26-2.8 39.3-2.4 18.8.7 22.4 5.7 16 23.9l-2 5.8ZM298.7 21.8c9.6 6.6 12.5 16.8 18.3 25a7 7 0 0 1-.6 9.4c-2.4 2.7-5.4 2.8-8.1 1.2-19.1-11-38.9-6.4-58-1.2-10.2 2.7-14.6-.8-17.2-9.2-1.7-5.7-2.9-11.5-3.6-17.4-1.3-9.8 6.9-11.9 13-12.2 18.5-.9 37.4-4.5 56.2 4.4Z" fill="#000"/></g><g transform="translate(0 559)"></g></g></svg> | |
+1 −0 viewer/assets/avatars/theo.svg 新增 查看文件
| @@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1744 1744" fill="none" shape-rendering="auto"><metadata xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"><rdf:RDF><rdf:Description><dc:title>Notionists</dc:title><dc:creator>Zoish</dc:creator><dc:source xsi:type="dcterms:URI">https://heyzoish.gumroad.com/l/notionists</dc:source><dcterms:license xsi:type="dcterms:URI">https://creativecommons.org/publicdomain/zero/1.0/</dcterms:license><dc:rights>Remix of „Notionists” (https://heyzoish.gumroad.com/l/notionists) by „Zoish”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)</dc:rights></rdf:Description></rdf:RDF></metadata><mask id="viewboxMask"><rect width="1744" height="1744" rx="0" ry="0" x="0" y="0" fill="#fff" /></mask><g mask="url(#viewboxMask)"><g transform="translate(531 487)"><path d="M554 727.7c-99.2 297-363.8 388.6-503.7 19.8-19.3-50.7 31-69.5 66.2-91.9 24.1-15.3 36.8-28.5 35.3-42.2-7-64.4-36.9-243.8-36.9-243.8l-3-5.8s.7-1.6-2.2 1.2c-3 3-9.9 34.2-37 34.2-24.5 0-49.2-10.9-61-86.3C7.2 285.6 9.6 214 40 201c12.5-5.3 24-7.2 35.2-.8 11.3 6.4-13-22 112-126C268.4 6.4 396.7-3.5 448.5 8 500.3 19.5 552 44.8 574.9 98.5c27.8 65-25.9 114.3-14 262.5-2.2 53.6.8 171.2-146.6 210.6-28 7.5-19.3 48.4 22.7 58.4 67 21 117 72.3 117 97.9" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="m554 266.2.1-1.4c4.1-36.4 8.2-71.7 27.1-103.4 6.5 4.4 5.7 10 3.7 15.2-19.9 51.2-18 104.4-16.2 157.6l.4 14c2.1 66.4-14.5 126.8-58.7 177.5-15.4 17.6-35.8 29.8-56.5 40.3-21.4 11-25.9 20.1-19.2 43.6l.8 2.6c1.4 3.9 2.8 7.9-1 11.8-4.5 4.6-9.5 3.3-14.8 1.8l-.6-.1a406.4 406.4 0 0 1-137-68.3c-6-4.4-10.8-10.3-15.5-16.1l-.3-.4c-2.5-3-3-7.8.5-10.4 3.3-2.5 5.8-.5 8.7 1.8l1 .9a145.5 145.5 0 0 0 76.3 31.7c13.4 1.4 26.6.9 40 .4 7.4-.3 14.8-.6 22.3-.5 10.2 0 18.7-4.7 26.7-9.2l2.8-1.6c27.8-15.5 54.3-32.8 72.2-60.7 16.1-25 25.9-52.2 31.6-80.9 7.2-36.1 6.6-72.7 6-109.8-.3-12-.5-24.2-.5-36.4ZM50.6 190.8c21.9-1.7 34 11.2 44.3 26.3a140.4 140.4 0 0 1 22.4 61.5c.5 3.7 1 7.6-1.2 11.3-4.5.6-4.9-3-5-5.6-.5-20.7-9.7-38.7-18.9-56.1-6.6-12.5-16.2-24.6-31.4-27.6-17.2-3.5-33 12-40.8 32.2-14.5 37.6-12 74.6 1.4 111 5.8 15.9 13.1 32.1 27.8 43.2 14.8 11.3 32.7 9.3 43.6-5.7l2-2.5c2-2.6 4-5.1 5-8 2.1-5.8 5.4-11.2 11.3-10.4 6.8 1 8 8.3 8.7 14a3661 3661 0 0 0 22 156.7l5.9 38.8c2.6 17.1 5.6 41.7 3.6 52.1a28 28 0 0 0-.3 2.2c-.4 2.8-.6 5-4.2 5.5-4.9.8-7-2-7.7-6.4-2.3-17-3-23.6-4-49.6-.9-25.2-5.6-50-10.4-74.9l-5-27c-5.2-30.8-10.3-62-10.8-97l-2 3c-7.6 11.3-13.7 20.5-24.5 24a40.5 40.5 0 0 1-46.1-12.5 127.8 127.8 0 0 1-28.8-55.8c-8.4-34-9.9-67.1.9-100.6 5.2-16.1 23.7-44.7 42.2-42Zm34.6 127.5c4.4 3.2 8.4 6 12-5.4-1.1-42.2-14.7-69.2-35.8-70.3 11.2 14.6 22 28.8 23 48.5a32.3 32.3 0 0 1-10.7-8.8c-2-2.2-4-4.4-6.5-6l-3-2.4c-4.8-3.6-9.7-7.4-17.8-4.5 3.8 5.8 9 10 14.3 14 6 4.7 12 9.3 15.6 16.5-10.6 7.7-15.2 17.7-9.7 29.9 4.8 10.5 11.9 19.2 25.9 19.8-.6-6.3-4.7-10.9-8.8-15.4-5-5.4-9.7-10.6-7.5-18.6 3.2-1.5 6.2.7 9 2.7Z" fill="#000"/></g><g transform="translate(178 1057)"><path d="M1308 692 16 688.7S53.7 481.5 111.3 360C237.7 93.7 491.2 44.3 513.3 56.7c32 18 62.4 40.7 152 40.7 91.4 0 149.3-39.5 149.3-39.5s135.8 32.3 201.4 69.5c83.4 47.4 177.7 187 221 295.9 46.2 115.6 71 268.7 71 268.7Z" fill="#fff"/><g fill="#000"><path d="M728.6 692c-4.3-25.7 12-38.5 31-49.3 10.9-6.2 27.6-3.2 39 6 7.7 6 8.4 15.2 11.3 23.4 1.7 4.7 2.4 9.8 3.6 14.7 6.4 3 13.7-.6 20.2 4.4a455 455 0 0 1-49.2-.2c-1.3-7.2-2.2-13.2-8.8-15.6-6.1-2.1-10.4 2.2-14.3 6-2.9 2.7-3.1 6.7-3.3 10.6-3.2 0-6.3-.3-9.4-1-2-12.7 5.2-19 14.4-23 18.2-8 26.4 4.7 33.5 21.6 2.8-18.8-2.6-35.2-11.6-36.7-12.8-2-25.8-3.2-36.6 8a54.2 54.2 0 0 0-13.1 31h-6.7ZM1182.7 692c4.9-29.4 27.1-45.5 56.5-41.7 14.7 2 26.7 19.7 26.5 40.6a25 25 0 0 1-11.8.3c-3.2-25.6-11.3-32.4-33.8-28.7-14 2.3-26.6 16.8-25.8 29.5h-11.6ZM477.6 692a53 53 0 0 1 24.2-34.7c27.4-16.8 50-8.6 59 22.3 1 3.6 2.5 7.1 4.1 11.6-5.2.8-10.6.8-15.9 0 .6-15.7-5.5-27.3-16.1-28.7-19.8-2.7-39.5 5.7-43.6 29.5h-11.7ZM107.4 692c-4.3-17.2-27.2-35.2-45.3-35-17.4.4-30.5 13-34.2 34-2.1 1-4 1-6.9 1 .4-23 9.3-37.2 25.2-41.8 24.3-7 46.6.9 62 22 5.5 7.3 8.1 17.8 20.4 19-6.3.8-13.2.8-21.2.8Z"/><path d="M498 692c12.7-17.4 23.2-21.3 35.8-15.2 6.1 3 7.4 8.8 11 14.3-15 .9-30.3.9-46.8.9ZM1203.1 692c15.3-23.6 31.4-24 46.6-.8-14.9.8-30.1.8-46.6.8ZM38.8 692c4.6-15.7 17.4-19.8 32-20.2 12.6-.2 21.4 5.9 25.4 19.2-2 1-3.9 1-7.3.3-17.6-15-32.3-14.6-41 .7h-9ZM671.6 478.7c35.7 22.3 35.5 53.2 33.8 86.4-.1 3.3-1.5 5.9-5 6.3-3.4.3-5.7-1.6-7.1-4.4-2-4-1.5-8.2-.7-12.5 3.5-17.5 0-33.8-8.5-49.2-7.2-12.6-32.2-22.1-50.7-19.2a55.6 55.6 0 0 0-47 52c-.2 3.5 1.3 8.9-4.4 8.8-5.3 0-4.6-5.1-4.8-8.8a62.8 62.8 0 0 1 56.2-64.3c12.7-1 25.3-.4 38.2 4.9ZM906.3 348.4c-14.8-23-35.3-30-60.6-26.3-20.7 3-37.3 24-38.9 50-.4 7.6.4 15.3 2.2 22.7 1.5 6.1-.6 12-6.9 13-6.8 1.2-7.9-5.4-8.4-10.3-2.6-26 2.6-50.8 19.2-70.7 14-16.8 35-18.9 55.8-16.3 31 3.7 52 26 54.5 59.7.3 4.6.8 9.5-5.8 11.7-7-9.8-1.8-23.7-11-33.5ZM365.6 380.4c-17.1 16-20 36.2-17.7 57.4-8.2.6-8.9-4.2-9.7-8.1a66 66 0 0 1 28.6-64.9c24.2-14.5 57.4-14 75.7 3.4a90.8 90.8 0 0 1 27.2 66.4c0 3.9-.2 8.2-5.5 8.2-5 0-7.7-3.5-8.4-8.1-1.2-8-2-16-3.1-24.1-6-46-57.7-54.8-87.1-30.2ZM1172.3 432.6c-.2 5.5-.2 10.3-6.5 9.5-6.5-.9-7.5-6.2-7.7-11.5-.4-15-2.8-29.4-10.3-42.7a37.5 37.5 0 0 0-25.5-19.2c-43.7-8.9-73 19.5-72.1 58.6 0 3.7 1.4 7.7-2.6 11.3-6.9-1.2-7.5-7.4-7.5-12.3-.6-48.8 35.7-77.3 80.7-70 25.6 4.2 37.8 22.6 45.5 44.3 3.4 9.6 7.7 20 6 32ZM561.1 270.8c20.9-18.4 42-14.7 62.6-2.3a49.1 49.1 0 0 1 26 47.5c-.3 5.4-.4 11.1-6 14.5-6.3-2.3-4.6-7-4-11.6 3.4-28.6-30.3-58.8-57.3-50-13.2 4.5-20.7 17-23.5 31-1.8 8.7-2.1 17.7-3.1 26.6-.5 4.1 0 9.9-5.8 9.6-6-.3-8-5.3-7.4-11.2 1.8-19.2 5.5-37.8 18.5-54.1ZM204.3 530c4.2 10 7 20.7 8 31.6.5 5 1 9.3-6 11.1-3.1-11-6-21.5-9.3-31.8-4.2-12.7-21.6-24.6-34.3-24-17.3.6-25.9 11.2-25.4 30.8.2 10.4 5.2 20.7.5 31.7-6 .4-11.2-1.4-11.8-7.1-1.2-11.8-4.3-23.4-1.6-35.4 7-30.7 36-41.9 64.9-21.8a49.7 49.7 0 0 1 15 15ZM895.9 217.6c-.6 5-1.3 9.4-6.7 8-4.4-1.2-3.2-5.2-3-8.6 2.7-32.5-18.2-46.6-41.8-53.4-12-3.5-26.1 5.2-32.6 18.6a58.9 58.9 0 0 0-7.4 31.7c.2 3 .1 6-.2 9-.3 4.7-.2 10.2-7 9.5-6-.6-7-5.6-6.6-10.5 1.7-17.2 3.7-33.8 13.6-49.4 13.8-21.8 46.8-20 63.5-10.5 20.9 12 32 29.4 28.2 55.6ZM396.8 148.8c3.2 10.2 6.5 19.4 8.8 28.9 1.7 6.8.2 12.7-9.2 14l-8.8-33.1a48 48 0 0 0-9.7-19.1c-14.3-16.8-27-19.2-45.2-7-18.4 12.5-30 28.7-23.8 52.8.7 2.6.9 5-3 8.7-8.4-7.6-10.4-17.3-8.8-27.6a57.4 57.4 0 0 1 50.4-47.9c21.4-3 38.3 6.8 49.3 30.3ZM876.6 519c-26.6-4.5-40.6 9.8-35.9 36 1 5.9 2.5 11.6 2.2 17.6-.2 3.6-.8 7.4-5.3 7.2a7 7 0 0 1-6.8-6.5c-1.8-15.6-4-31.2.4-46.8 3.4-12.1 24-24.8 37.8-21.5 21 5 45.3 18.8 44.6 47.5-.2 6.6 6.5 14-3 21-9.8-19.2-6.5-46.6-34-54.5ZM357 664.1c-4-30.4-35.2-50.7-61-40.6-14.4 5.7-22 23.3-18.4 43 .8 4.5 3.5 8.9-1.3 14.6-14.2-11.2-8.5-26.6-7.8-39.4.7-16.4 17-30 34.6-32.2 24-3 51.3 12.5 59.7 34.1 5.4 13.8 5 31-1 35.3-4.9-3.4-4.2-8.8-4.8-14.8ZM991.9 628.3c-12 12.8-16.2 26.5-9.1 42.5 1.4 3.2 3 6.9-1.4 8.6-4.5 1.7-5.5-2-7-5.3-8.6-20-2.2-47.4 13.5-57.8 19.6-12.8 48.6-7.2 67.3 10.9 13 12.6 11.8 29.2 15.8 44.4a6 6 0 0 1-5.3 7.4c-3.8.4-4.7-3.2-5.3-6-.8-3.7-.8-7.6-1.1-11.4a44.2 44.2 0 0 0-67.4-33.3Z"/><path d="M605.3 545.1c-1.4 3.2-1.9 6.2-5.2 6-3.6-.4-4.6-3.3-5-6.4a43.8 43.8 0 0 1 10.1-33.1C618.6 495.4 638 491 658 494c9 1.4 14.8 10.8 18 18.5a60 60 0 0 1 2 41.2c-.8 2.5-1.4 5-4.6 5.1-3.1.1-4-2.3-5.3-4.6-2.4-4.4-1.8-8.6-.7-13.4 2.5-10.9.8-21-7.9-29.1-8.5-8-17.6-5.3-27.2-2.5-17.5 5.2-24.3 18.1-27 35.8ZM368.6 412.8c-1.5 10 2.3 19.5-3 28.2-8.8-6.7-11.2-23.8-6-38.5 4.8-14.4 25.6-25 45.9-26.5 16.6-1.2 27.4 10.2 33.5 30 3.2 10.3 6.3 20.8-3 29.8-6.5-2.7-5.9-7.3-5.9-11.4 0-8-2.2-15.3-5.3-22.2-6-13.6-18.2-17.6-31.5-11-9.7 5-20 9.4-24.7 21.6ZM1114 388.4c-34 1-45.5 21.3-43.9 53.5a34.6 34.6 0 0 1-3.2-45.5c15.7-19.3 45.8-26.8 60.2-15 15.6 12.9 22 39.7 11.7 53.7-11.2-14.2-4-37.8-24.7-46.8ZM903.5 374.3c-.8 4.9 1.8 11.2-4.5 11.1-5.8 0-4.4-6.1-4.8-10.1-2-19.1-25.3-36.6-43.7-32.2-11.6 2.9-17.2 11.2-18 23-.7 9.6 1.9 19.4-2.2 28.7-9.3-3.6-13.2-21-9.3-39.1 3.6-16.7 21.4-28 42.4-25 19.3 2.8 41.6 16.6 40 43.6ZM129 380.3c.7 5.9-.2 10.3-3.6 14-11.7-8.4-12.4-34.2-1.4-50.3 12.3-18.2 36.5-19 61.9-2.2 12.4 8.3 18.3 31.3 10.7 43.8-6.7-2.7-6-9.4-7.4-14.7-4.5-17.4-24.7-31.2-42-28.2-13.6 2.2-21.5 18-18.2 37.6Z"/><path d="M216.1 352c-.2 6.2 2.4 10.8 3.9 15.6 1.6 5.6 1.2 10.6-6.3 15-7-46.8-32-68.7-79-59.4-.6-9.3 4.3-12.2 9.6-12.7 31.1-3.1 56.2 5.3 71.8 41.4ZM884 536c13.3 15.8 14.8 21.7 9 33.5-7.2-5.3-7.9-14.7-13.6-20.9-4.8-5.3-9.6-8.3-16.4-5.9-6.4 2.4-4.8 8.2-4.4 13.2l1.2 13.9c.4 3.7 2 8.3-3.3 9.4-4.7 1-7.8-2.3-9.5-6.6-3.6-8.5-.3-31 5.8-36.2 9.7-8.2 20.2-6.2 31.3-.3ZM296.5 666.4c-2.4 2.1-3 6.3-7.1 6.6-6.8-10.9-5.3-23.4 3.6-31.6a34.9 34.9 0 0 1 43.1-2.6c7.4 5.4 12.4 27 8.3 35-1.3 2.2-2.5 4.6-5.7 3.9-2.8-.6-4.2-2.7-4.5-5.5-.2-3.3-.2-6.8-.3-10.2-.7-12.7-9.1-20.7-21-20-12.6.6-18.1 8-16.7 23.6l.3.8ZM629.5 318.8c-5.2 5.3-7.8 3.2-9-2.3-.7-3.3-.2-7-1.7-9.9a23.8 23.8 0 0 0-20.2-13c-9.3-.6-11.3 6.8-15 13-3.8 6.6-1 15.4-7.8 21.4-12.6-4.2-7.2-14-5.2-20.8 5.6-19.2 16.8-25.6 36.2-22.6 13 2.1 23.5 17.4 22.7 34.2ZM166.6 530.8c20 5.6 31.2 24.2 22.7 39.2-3.3-9-9-15.4-13.7-22.4-4.4-6.4-10.6-7.3-16.8-4.7-6 2.4-6.3 8.5-5.4 14.2.7 4.2 1.9 8.3 2.7 12.4.8 3.7 2.6 8.5-2.8 9.4-4.7.9-8.8-1.3-11-6.5a30.3 30.3 0 0 1 24.3-41.6ZM316.5 174.9c2.7-16.6 9.6-27.5 27-30 18.4-2.6 36.2 12.9 35 31.7-.3 4-.4 8.3-5.5 8.6-5 .3-6-3.6-6.4-7.8-.3-2.9-.4-6.1-1.8-8.6-4-7.7-6.8-17.5-17.7-17.7-8-.2-19.9 13-21.6 22.5-.7 3.5 1 7.7-2.6 10.7-5-.6-5.2-4.9-6.4-9.4ZM1029.6 645.7c-26.6-11.3-31.4 7.2-35.7 26.8-5.2-11.7-4.7-22 2-30.7 6.2-8.2 26.4-11.7 36.6-7.5 10.5 4.3 16 12.4 15.4 23.8-.4 6.6 4.2 18.4-3.8 18.8-9.8.6-4.1-11.1-5.2-17.3-1-6-3.8-10.2-9.3-14ZM857.7 183.2c16.8 6.2 21.5 17.5 15.7 36-6.4-1-4.3-6.5-4.9-10-1.7-9.3-7-14.9-15.2-18.6-9.7-4.3-16.5-1-20.4 8.3-2.3 5.4-3.9 11.1-4.8 17-.6 4.6-1.8 7.6-6.8 6.5-4.4-1-5.3-4.4-4.8-8.9 2.6-25.7 13.5-34 41.2-30.3ZM1016.5 152.4c-7.8 13.1-1.4 27.4-5.4 40.4-11.3-5-14.5-25-7.1-38.7 11.7-21.4 15.7-24.4 25.4-18l-13 16.3ZM643.4 546.3c-.2-7 0-14.6-6.7-16.1-9.7-2.1-10.5 9-15.4 14-6-6.4-4.7-16.4 2.4-22 8.3-6.7 19.7-6.3 24.5 2 3.4 5.7 4.7 12.6 6.3 19.1.7 2.8.4 6.3-3 7.7-3.7 1.5-6.5.4-8-4.7ZM877.8 379.4a82.1 82.1 0 0 1-4.6-8.3c-2-3.6-4.7-6.3-9-5.2-3.6.8-5.6 3.6-6.1 7.3-.4 3.3-.4 6.7-1 10a4.8 4.8 0 0 1-4.2 4c-3 .5-4.6-1.6-5.6-4-3.3-7.8 3.9-24.5 12-27.9 9-3.8 20 2 23.8 12.8 1.6 4.8 3.4 10.3-5.3 11.3ZM393.4 402c14.4 1.7 20.7 8.7 21.7 22.5.3 3.1.7 6.2-3.2 7-4 1-6.5-.7-7-5-.3-2.5-.2-5.3-1.2-7.5-1.8-4-5.8-6.6-10.1-6.5-4.2 0-4.9 4-6.3 7.1-1.7 3.6.1 8.9-5 10.9-10.6-10.3-6.4-22.3 11-28.4ZM1248.8 517.4c-4.6 12.5-1.5 25.9-8.8 37.7-10-29.2.2-61 25.8-61.8-2.5 10.2-13.8 13.7-17 24ZM1112.4 408.9c3.6 4.9 6 9.3 7.2 14.3 1 3.6 1.3 7-3.1 8.2-4 1-6.4-1.1-7.4-5-1.7-6.2-3.4-13.7-10.9-13.8-9.3 0-7.3 10.8-12.1 16.8-7.5-8.1-5.3-17 .2-22.6 7.7-7.6 17.5-7.2 26.1 2ZM166.8 366.2c-10.8-2-13.7 3.8-14 12.6-.3 4 .2 9.8-6.2 8.4-5-1-5.2-5.7-4.5-10.3 2.7-19.5 17.1-28.5 30.1-18.7 7.4 5.5 7 12.5 5 20.8-7.7-1.2-4.6-10-10.4-12.8ZM1045.8 147c.8.9 1.2 1.5 1 1.6-11 9.6-19.4 20.6-18 38.1-11-5.9-8.4-13.9-7.1-20 2.5-12.2 10-20 24-19.7ZM1261.2 544.3c-.8 3-1 5.2-3.8 5.4-5.5-11.7-1.3-29.4 8.5-35.8 2.7-1.8 5.5-2 7.8.9 2.2 2.7 2 5.6-.5 7.9-6.5 5.4-8.4 13.4-12 21.6Z"/><path d="M869.2 571c-10.7 0-8.3-7-7-12.4 1.4-5.2 5.2-9.7 11.1-8 8.4 2.2 10.5 8.7 9.1 16.5-3.5 4.7-9.6-2-13.2 4ZM296.4 666.5c10.5-13.2 19.8-14.2 26.5-2.5 2.4 4.3 4.2 9.6-.7 12.5-5.8 3.6-8-1.4-9.5-6.3-.4-1-1.5-2-2.1-2.8-4.5-2.3-8.6 5.4-13.5-.4-.6-.6-.6-.5-.7-.5ZM160 555c4.5-5.8 9.5-5.7 13.9-2.5 5 3.6 5 9.2 3.4 14.8-19.4 3.2-19.4 3.2-17.2-12.2ZM1005.4 659.5c7.2-4.8 13.6-5.7 18.3 1.7 3.1 5 7.6 10.9.2 16-6.2-1-5.4-7.9-10.6-10.4l-9.5 2.6c-4-4-1.2-6.6 1.6-9.9ZM335.8 170.2c5-4.8 10-4.4 14.7-2.5 5 2 7.7 6.4 8.4 11.7.3 2.2-.9 4.4-3 5.2-6.5 2.6-6.4-5.2-10.3-7-4.6-1.4-5.4 5.1-9.9 4.5-4.2-3.4-2-7.3.1-12ZM850.1 214.5c-4 2.7-6 10.5-11.2 5.2-4.3-4.5-1.3-11 2.9-14.5 4.7-4 11-5 15.6.5 2 2.7 4.2 6.4 3 10.8-4.3 3.7-5.9-4.2-10.3-2ZM590.7 322.8c-1.8-10.3 3-17 11.9-17.3 8-.3 12 6 10.6 14.4-5.3 3-6.5-3.6-10.3-3.5-3.7 2.7-4.6 10-12.2 6.4ZM1045.4 166.8c6-.1 11.2-.7 13.6 5.7 1.2 3.4 5 6.8 1.3 10.3-4 3.8-7 0-9-3.1-4.3-6.7-7.9 2.4-12.5.2-.5-5.3-2-10.8 6.6-13ZM1082.8 176c0 5.2-1.6 9-6 9.2-4.9.1-5.8-4.4-6.4-8.2-.6-4-3.4-7.8-1.9-13.2 6.8 1.5 11.1 5.4 14.3 12.2ZM95.9 393.3c1.8-3.3 2.6-6.4 6.9-7 2.3 6.2 6.7 12.2.5 18.8-2 2.1-4.8 4.1-7.6 1.8-4.7-4-1-8.4.2-13.6ZM1269 537.6c9.3-7.8 10.2-7.2 14 9.3-4.6-1.5-8.7-.3-12.2 1.2-4-3-3-6.4-1.8-10.5Z"/></g><path fill-rule="evenodd" clip-rule="evenodd" d="M1301.7 692c-6.3-26-11.8-51.9-17.4-77.9l-8.4-39c-8-36.6-18.6-72.3-30.1-107.6a677 677 0 0 0-42.2-102.8l-7.1-13.7a804.1 804.1 0 0 0-27.6-50.7c-27.6-45.3-58.4-88.3-97.4-124a336.4 336.4 0 0 0-102.8-65c-7-2.8-13.9-6-20.8-9.1-8-3.7-15.9-7.3-24.1-10.5-10.6-4-14.4-.7-18.9 7.3-8 14.7-18 28-33 36-40.4 21.6-82.6 33.2-127 13.6-18.3-8.1-35.3-20-48.8-35.4-6-7-12.2-8.3-20.5-9.5-22-3.3-36.8 4.7-49.3 23.1C610 151 584 160 556.6 162.6c-39.9 3.8-76-6.6-108.4-31.8a203.6 203.6 0 0 1-44.8-44.3l-9.7 4.5c-7 3.1-13.7 6.2-20 10-9.6 6-19.7 11-29.8 16-11.6 6-23.2 11.7-34.1 18.9-32 20.8-60 45.8-85.8 73.7a604 604 0 0 0-86.7 122.8 867.4 867.4 0 0 0-50 108.1 1213.2 1213.2 0 0 0-34.2 102 560 560 0 0 0-20.3 102.2c-.6 6.8-2.1 13.6-3.7 20.4-1.9 8.3-3.8 16.8-4.1 25.8-5.5 1-10.7 1-17 1 4.6-32.9 9.8-66 16-98.8 2.4-12 5.4-23.7 8.4-35.4l5.3-21.5c5.2-22.6 12.7-44.6 20-66.6l.1-.1.9-2.6a835.3 835.3 0 0 1 83.3-179c17-27.2 36.2-53 57.3-77 37.5-43 79.4-80.3 130.6-105.9l10.8-5.4c36.1-18.2 72.3-36.4 112.5-44.2 11-2.1 22.2-4.6 33-7.6 12.8-3.5 15.2-9.1 10.4-21.1l-1-2.2c-.7-1.6-1.5-3.3-1.7-5v-.4c-.6-3.6-1.3-7.8 3.8-8.9 4.3-1 5.5 1.6 7 5l.6 1.1c1.6 3.2 3 6.5 4.5 9.7 4.8 10.8 9.6 21.7 18.7 30.6 17 16.6 38 24.2 59.9 27.2l5.3.7c25 3.3 50 6.7 75.4 5.4 35.4-1.8 70.4-5.5 104.3-16.5 5.2-1.7 9.8-4.8 14.1-8.3 7-5.8 6.5-10.6.5-16.8-9-9.2-11-20.6-10.4-32.6 4-1.5 7.1-.5 7.7 1.8 7 30.4 29.7 36 56 39 34 3.8 66.4 14.3 98.9 25a399.8 399.8 0 0 1 71.4 34.6l18.7 10.5a271.8 271.8 0 0 1 67.1 53.2c22.8 24.3 44.1 50 62.7 77.6a762 762 0 0 1 45.1 74.5 1005 1005 0 0 1 86.8 242c5.7 25.4 10 51.3 14.3 77.5 2.2 13.2 4.3 26.4 6.7 39.7-3.2.9-6.7.9-11.3.9ZM575.3 143a84 84 0 0 0 49.9-37.7c-2.9-2.4-6-3-9.2-3.5l-3-.5c-6.5-1.5-13.2-2.7-19.9-3.9-27-4.8-54.1-9.7-74.2-32.8-1.4-1.5-4.7-1.7-7.1-1.8-27.6-.5-53.6 6.9-79.6 14.3l-11.3 3.2c.8 5.6 2.6 9 5.8 12.2 12 12.3 25.3 23.2 39.7 32.5 33 21 68.2 30.7 108.9 18Zm224.8.3c-31.6 4.3-57.3-9-81.2-27.6-1.6-1.7-3.3-3-5-4.2-3-2.4-5.7-4.5-6.9-8.4 10.1-3.8 20.7-5.8 31.2-7.9a178 178 0 0 0 33.2-8.6l5.3-1.8c4.4-1.4 8.8-2.8 11.9-5.8 16.8-16.2 36.3-15.6 56.5-10.6 13 3.3 26 7 39.6 11l19 5.6-5.6 6.5c-14.2 16.6-26.7 31.3-47 38.5-16.8 6-33.4 11-51 13.3Z" fill="#000"/><path d="M1119.6 692c-9.1-36.9-12.1-74.7-22-111.2-7.7-28.1-13.9-56.8-23.8-84-7-19.4-13.7-39-23-57.8-12.7-25-23.1-51.2-34.4-77-1.3-3-2.9-6.3 1.3-8.8 4.3-2.6 7.4-.5 9.8 2.6 3.8 5 7.8 10.2 10.6 15.9 10 20.4 19.4 41.1 29.1 61.6A612.7 612.7 0 0 1 1101 529c9 31.6 17.5 63.6 21.5 96.6 2.6 21.4 7 42.7 8.6 65.4-3.3 1-6.8 1-11.4 1ZM221.2 692c-.6-3 .4-5.8.4-8.7 0-49.6 9.7-98 16.8-146.7 5.1-35 13.4-69 22.8-102.9 6.8-24.4 18-47.5 32-69 2.3-3.6 4-10 10-6.9 6.3 3.2 3.3 9 1.4 13.6-7.2 17.6-16 34.7-22 52.7a740.8 740.8 0 0 0-31.3 138.7c-1 8.5-2.8 16.8-5 25-7.5 28.5-3.8 58.4-11 87-1.2 4.7.2 10.1.2 16.2-4.5 1-8.9 1-14.3 1Z" fill="#000"/><path fill-rule="evenodd" clip-rule="evenodd" d="M648.9 165.5c-9 6.6-10.5 15.7-3.6 28.3l4 2.7c2.3 1.5 4.3 3 6.5 3.6 9.5 3 17-2 21.6-9.1 4.7-7 5.5-16.9-1.9-22-7.3-5.1-16.6-10.9-26.6-3.5Zm5.4 17.4Zm0 0c3.8 2.8 7.6 3.4 10.9-.5a3.4 3.4 0 0 0-1.2-5.3c-4.4-1.6-9.2-2.6-9.7 5.8Z" fill="#000"/></g><g transform="translate(266 207)"><path d="M319.4 447.9c-5.2-33.5 7.2-101.6 19.9-129C352 291.7 387 229.5 411 213.5c24-15.9 77.8-40 96-50.3 18.2-10.3 60.4-19.7 89-18.5a312 312 0 0 1 95.3 19.8c30.3 12 73.4 32.5 95.2 57.3 21.9 24.7 25.4 22.7 43.8 52.8 18.4 30.1 21.2 48.8 28.4 59.8 7.3 11 31.8 25.5 51.4 50.6 19.7 25 28.5 28.9 34.7 51.8 6.3 23 7.3 29 2.5 37.3-4.7 8.2-14.9 21.3-27.1 21.3-12.3 0-28 2-46-11.7-18-13.8-34.5-17.2-47.7-33.9-13.2-16.7-26.7-14.6-42.2-30-15.5-15.6-27.7-12-56.4-21.4-28.8-9.4-36 9.6-63.2-3.4-27.1-13-32.6-1.6-51.8 10.5-19.2 12.1-38 24.7-58.5 31.8-20.5 7-67.3 20.9-87 18.4-19.6-2.5-44.3-13-65.6 1.2-21.4 14.2-28.9 18.8-37.2 21.8-8.4 2.9-7.6 2.2-15.5-5-7.9-7-6.1-7.5-13.7-10-7.5-2.6-16-15.7-16-15.7Z" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="m353.3 506.3-2.7-7.4a64 64 0 0 0-5.7-13.4c-6.9-11-2.4-17 7.1-22.5 5.8-3.4 11.3-7.3 16.8-11.2l3.3-2.3c19.6-13.8 39.7-17 62.2-6 21.3 10.6 43.7 7.2 66.2 2.4 47.7-10.2 90.2-31.4 131.2-57.1a296.8 296.8 0 0 1 86.3-37c32.8-8 66.5-6.5 99.5 4 23.3 7.5 46.2 15.5 65.1 31 23.2 19.2 45.4 39.7 54.9 69.8l.5 1.6c1.5 4.4 3.4 9.8-2.8 11.5-4.5 1.2-5.7-2.7-6.9-6.4-.3-1.2-.7-2.3-1.1-3.2a165.9 165.9 0 0 0-77-79 195.5 195.5 0 0 0-123.9-18.7c-12.5 2-24 7-36.1 12.3-7.5 3.2-15 6.5-23.3 9.2 6.3 3.4 11.5 3.9 16.5 4.4.6 0 1.3 0 2 .2 47.8 5 93.8 15.8 133.5 45a215 215 0 0 1 17.8 15.1c5.1 4.7 10.3 9.5 15.8 13.7l1.5 1.2c15 11.5 30 23 49.4 26.7 28.4 5.3 47.2-13.8 39.8-41.6-8.3-30.9-29.7-53.1-52-74a258.5 258.5 0 0 0-89.5-54.4c-41.9-15.3-85-17.5-128.3-13.6-43.2 4-86 12.4-126.6 28.2-20.5 8-40.4 17.7-60.2 27.4a4282 4282 0 0 1-8 4c-39.8 19.3-74.3 46.5-108.8 73.6l-16.3 12.8c-2.1 1.7-3.7 4-5.3 6.4-2.9 4.3-5.8 8.8-12.6 9.4-1.7-11 5.8-17.7 12-23.2l1.5-1.3c23.1-20.5 46.5-41 72.8-57.5 7-4.4 9-10 9.6-18a371 371 0 0 1 37.9-140.2l7-14.5c6.8-14.7 13.7-29.4 23.4-42.9-58.2 21.7-101.9 60-134 113.2-32.3 53.4-40.2 111.8-37.5 174.8-8.8-5-9.2-10.7-9.6-16.6a285 285 0 0 1 19.6-130 270 270 0 0 1 77-106c26.4-21.7 55-39.5 88-49.4 6.3-1.9 8.4-6.7 10.6-12l.5-1c6-14 9.5-14.8 20.5-4.9 5.5 5 10.7 6.4 18.5 5 32.1-6.1 64.1-4.7 96.3 1.6 71 14.1 127.8 51.1 172 107.4a223.4 223.4 0 0 1 39.2 75.2c2.7 9 8.4 17 16.2 22.3 29.9 21.3 54 47.6 70.1 80.9 7.3 15 10 31.5 1.9 45.2a42.4 42.4 0 0 1-47.2 22c-18-3.2-32.8-10.7-46.6-21.6l-14.7-12c-20.3-16.6-40.6-33.3-65.5-43.6a299.6 299.6 0 0 0-125.6-23c-13.6.5-25.1 7.9-36.4 15.1l-8.2 5.2c-40.5 24.2-85.4 34.8-131.1 42.8-9.7 1.7-19.7.2-29.1-2.6-7.5-2.3-11.1.7-14 7-10.2 22-18 44.7-18.3 69.6 0 7.5-.8 15-1.5 22.6-.4 4-.8 7.8-1 11.7-.5 6.1-3.6 9.6-9.7 9.7l-4.5.2c-6.1.2-12.4.5-19-1.5-3.2-15-8.5-29.4-13.9-44-3.3-9.2-6.6-18.3-9.5-27.8ZM676 175a274.3 274.3 0 0 0-107.7-22.3c-34.8-1-58.8 17.8-72.8 48.1l-7.9 16.8a523 523 0 0 0-32.1 79.2c-6.5 23-10 46-13.7 71.8l-.6 4.6c110.7-63.6 226-93.4 351.7-69.7-11.2-31.4-32.2-54-52.8-76.3l-1.7-1.9A225.9 225.9 0 0 0 676 175Zm30.9 3.7a143.6 143.6 0 0 1 45.8 24.7c46 32.5 76.4 74.6 96.3 125-10.5-3.3-20-8-29.3-12.8L811 311c-4.6-2.2-7.4-8.6-10-14.5l-2-4.3a317.8 317.8 0 0 0-89.7-109.1 6.4 6.4 0 0 1-2.4-4.6Z" fill="#000"/></g><g transform="translate(791 871)"><g fill-rule="evenodd" clip-rule="evenodd"><path d="M104.5 69.3c5.8 1.4 12 3 10 11.7-4 1.5-6.9-.3-9.8-2.1-3.5-2.1-7-4.2-12.2-1.2 1.5-8.5 5.9-10 11.2-8.6.3 0 .5 0 .8.2Zm93.3 5.8c3.4 3.2 1.2 7-1.4 10-1.3.5-2.5 1.1-3.6 1.7-3.5 1.9-6.4 3.4-10 1.6-3-5.4-2.7-10.4 3-13.7 3.8-2 8.6-2.6 12 .4Zm-24.2 13.2c1.2-7.3-1.2-11.4-9.3-10.4-4.9.7-9.6 1.9-8.8 8.2.7 6.6 5 6.2 9.1 5.8l3.6-.2c1.5.1 3-1.1 5.4-3.4ZM126.3 106l1.5-.3c1.5-.2 3-.5 3.2-3-16.9-.8-30.7-8.7-44.4-20.5a40.8 40.8 0 0 0 39.7 23.8Zm.2-20c2.4 6.8 7.8 6.8 13.3 5 3.8-1.4 3.5-5.4 3.3-8.7-.4-5-3.8-6-8-6.3-6.1-.5-8.2 2.8-8.6 10Z" fill="#fff"/><path d="M186.9 60.6a76.9 76.9 0 0 1-41 4.6c-13.1-.8-24.3-4.5-35.4-9C99.3 52 83.6 58.4 76 69.5c-6.7 10-6 20 3.5 30 10.8 11.5 24.3 20.7 40 19.6 9-.7 18-1.6 27-2.6 20.7-2.1 41.3-4.3 62.4-3 17.5 1 26.1-15.5 21.2-32.7-5.7-19.4-22.6-27.3-43.3-20.1Zm-22.6 17.3c8-1 10.5 3 9.3 10.4-2.4 2.3-4 3.5-5.4 3.4-1 0-2.3 0-3.6.2-4 .4-8.4.8-9.1-5.8-.8-6.3 4-7.5 8.8-8.2Zm-38 28 1.5-.3c1.5-.2 3-.5 3.2-3-16.9-.8-30.7-8.7-44.4-20.5a40.8 40.8 0 0 0 39.7 23.8Zm71.5-30.8c3.4 3.2 1.2 7-1.4 10-1.3.5-2.5 1.1-3.6 1.7-3.5 1.9-6.4 3.4-10 1.6-3-5.4-2.7-10.4 3-13.7 3.8-2 8.6-2.6 12 .4Zm-71.3 10.7c2.4 7 7.8 7 13.3 5 3.8-1.3 3.5-5.3 3.3-8.6-.4-5-3.8-6-8-6.3-6.1-.5-8.2 2.8-8.6 10Zm-22-16.5c5.8 1.4 12 3 10 11.7-4 1.5-6.9-.3-9.8-2.1-3.5-2.1-7-4.2-12.2-1.2 1.5-8.5 5.9-10 11.2-8.6.3 0 .5 0 .8.2Z" fill="#000"/></g></g><g transform="translate(653 805)"></g><g transform="translate(901 668)"><path d="M7.4 185c5.4-8.7 22.6-12.2 32.1-7.3 6.6 3.4 13 7.6 20 1.7 6.5-5.6 4.6-12.2 1.5-18.7-1.6-3.2-.8-5.7 2.2-7.5 3-1.9 5.5-1.1 8.2.8a20.1 20.1 0 0 1 8 21.5c-1.6 7.3-3.8 16-12.7 19-4 1.4-8.8 3.5-12.3 2.4-15.4-4.7-33.8 3.4-47-12Z" fill="#000"/></g><g transform="translate(610 680)"><path d="M215.1 76.6c5-12 9-29.4 24.1-22.5 20.7 9.4 13.9 30.7 9.7 47.4-1.6 6.3-14.5 15.9-18.3 14.3-16.3-6.8-19.2-21.7-15.5-39.2ZM442 113.4c-8.6 7.5-17 7.6-22.2-1.5-9-16-8.6-32.8 3.3-47.2 2.5-3 13.8-3.6 16.3-1 14 15 14.6 31.8 2.6 49.7Z" fill="#000"/></g><g transform="translate(610 680)"></g><g transform="translate(774 657)"><path d="M81.4 35C60 29.6 52 33.2 40 52.6c-2.4 4-3.4 11.4-10.6 7-5.6-3.4-5.3-8.8-2.6-14.6a51.4 51.4 0 0 1 38-30.7 33.1 33.1 0 0 1 37.5 26.4c.9 5.3.1 10-4.8 13.6-11.2-1.3-8-14.2-16-19.1ZM246.2 32.8c14-6.2 27-12.4 41.2-1.9 5.1 3.7 9 8.8 11.3 14.7 2 5 2.3 10.7-2.7 13.8-5.7 3.5-8.1-2.1-11-5.6-10.4-12.8-18.4-13.7-32.4-4.6-4 2.6-6.8 8-13.5 7-5.7-9.6-.1-16.3 7-23.4Z" fill="#000"/></g><g transform="translate(0 559)"></g></g></svg> | |
+1 −0 viewer/assets/avatars/zoe.svg 新增 查看文件
| @@ -0,0 +1 @@ | ||
| 1 | +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1744 1744" fill="none" shape-rendering="auto"><metadata xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/"><rdf:RDF><rdf:Description><dc:title>Notionists</dc:title><dc:creator>Zoish</dc:creator><dc:source xsi:type="dcterms:URI">https://heyzoish.gumroad.com/l/notionists</dc:source><dcterms:license xsi:type="dcterms:URI">https://creativecommons.org/publicdomain/zero/1.0/</dcterms:license><dc:rights>Remix of „Notionists” (https://heyzoish.gumroad.com/l/notionists) by „Zoish”, licensed under „CC0 1.0” (https://creativecommons.org/publicdomain/zero/1.0/)</dc:rights></rdf:Description></rdf:RDF></metadata><mask id="viewboxMask"><rect width="1744" height="1744" rx="0" ry="0" x="0" y="0" fill="#fff" /></mask><g mask="url(#viewboxMask)"><g transform="translate(531 487)"><path d="M554 727.7c-99.2 297-363.8 388.6-503.7 19.8-19.3-50.7 31-69.5 66.2-91.9 24.1-15.3 36.8-28.5 35.3-42.2-7-64.4-36.9-243.8-36.9-243.8l-3-5.8s.7-1.6-2.2 1.2c-3 3-9.9 34.2-37 34.2-24.5 0-49.2-10.9-61-86.3C7.2 285.6 9.6 214 40 201c12.5-5.3 24-7.2 35.2-.8 11.3 6.4-13-22 112-126C268.4 6.4 396.7-3.5 448.5 8 500.3 19.5 552 44.8 574.9 98.5c27.8 65-25.9 114.3-14 262.5-2.2 53.6.8 171.2-146.6 210.6-28 7.5-19.3 48.4 22.7 58.4 67 21 117 72.3 117 97.9" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="m554 266.2.1-1.4c4.1-36.4 8.2-71.7 27.1-103.4 6.5 4.4 5.7 10 3.7 15.2-19.9 51.2-18 104.4-16.2 157.6l.4 14c2.1 66.4-14.5 126.8-58.7 177.5-15.4 17.6-35.8 29.8-56.5 40.3-21.4 11-25.9 20.1-19.2 43.6l.8 2.6c1.4 3.9 2.8 7.9-1 11.8-4.5 4.6-9.5 3.3-14.8 1.8l-.6-.1a406.4 406.4 0 0 1-137-68.3c-6-4.4-10.8-10.3-15.5-16.1l-.3-.4c-2.5-3-3-7.8.5-10.4 3.3-2.5 5.8-.5 8.7 1.8l1 .9a145.5 145.5 0 0 0 76.3 31.7c13.4 1.4 26.6.9 40 .4 7.4-.3 14.8-.6 22.3-.5 10.2 0 18.7-4.7 26.7-9.2l2.8-1.6c27.8-15.5 54.3-32.8 72.2-60.7 16.1-25 25.9-52.2 31.6-80.9 7.2-36.1 6.6-72.7 6-109.8-.3-12-.5-24.2-.5-36.4ZM50.6 190.8c21.9-1.7 34 11.2 44.3 26.3a140.4 140.4 0 0 1 22.4 61.5c.5 3.7 1 7.6-1.2 11.3-4.5.6-4.9-3-5-5.6-.5-20.7-9.7-38.7-18.9-56.1-6.6-12.5-16.2-24.6-31.4-27.6-17.2-3.5-33 12-40.8 32.2-14.5 37.6-12 74.6 1.4 111 5.8 15.9 13.1 32.1 27.8 43.2 14.8 11.3 32.7 9.3 43.6-5.7l2-2.5c2-2.6 4-5.1 5-8 2.1-5.8 5.4-11.2 11.3-10.4 6.8 1 8 8.3 8.7 14a3661 3661 0 0 0 22 156.7l5.9 38.8c2.6 17.1 5.6 41.7 3.6 52.1a28 28 0 0 0-.3 2.2c-.4 2.8-.6 5-4.2 5.5-4.9.8-7-2-7.7-6.4-2.3-17-3-23.6-4-49.6-.9-25.2-5.6-50-10.4-74.9l-5-27c-5.2-30.8-10.3-62-10.8-97l-2 3c-7.6 11.3-13.7 20.5-24.5 24a40.5 40.5 0 0 1-46.1-12.5 127.8 127.8 0 0 1-28.8-55.8c-8.4-34-9.9-67.1.9-100.6 5.2-16.1 23.7-44.7 42.2-42Zm34.6 127.5c4.4 3.2 8.4 6 12-5.4-1.1-42.2-14.7-69.2-35.8-70.3 11.2 14.6 22 28.8 23 48.5a32.3 32.3 0 0 1-10.7-8.8c-2-2.2-4-4.4-6.5-6l-3-2.4c-4.8-3.6-9.7-7.4-17.8-4.5 3.8 5.8 9 10 14.3 14 6 4.7 12 9.3 15.6 16.5-10.6 7.7-15.2 17.7-9.7 29.9 4.8 10.5 11.9 19.2 25.9 19.8-.6-6.3-4.7-10.9-8.8-15.4-5-5.4-9.7-10.6-7.5-18.6 3.2-1.5 6.2.7 9 2.7Z" fill="#000"/></g><g transform="translate(178 1057)"><path d="M1312 691.3 3 694s25.8-189 56.2-235.7c16.3-25-10.6-45-16.4-70.3-5.8-25.2-11.8-57.9-10.5-67.4 1.2-9.5-1.4-29.3-4.3-43.3-3-14-.2-28.3-7-40.5-7-12.1-8-25 0-30.7 8-5.8 341.2-123.5 341.2-123.5L372.5 61s47-34.8 72.2-40.7c25.2-5.9 47.1-9.7 47.1-9.7s-5.2 24.3-1.4 36.6c4 12.4 93 68.9 154.7 63.8 72-6 139.4-45.2 144.8-60.7 5.4-15.6-3.3-19-6.6-31.8C779.9 5.7 788 1 802.6 9c14.5 8 211.3 110.9 254 130.4 42.6 19.6 202.6 69.4 202.6 69.4s30.2 8.8 26.7 17.2c-7.6 17.9-24.1 1-24.1 49.6 0 30-25.3 125.6-25.3 125.6s39.6 123.7 46.2 148.2c6.7 24.5 29.3 142 29.3 142Z" fill="#000"/><mask id="bodyVariant06-a" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="516" y="231" width="267" height="460"><path d="m528 691-12-460h266.5L773 691H528Z" fill="#fff"/></mask><g mask="url(#bodyVariant06-a)"><g transform="translate(396 278)"></g></g><path fill-rule="evenodd" clip-rule="evenodd" d="M409.2 694c-2.6-57.2-5-114.3-4.4-171.6.8-67.8.7-135.8-.7-203.6-.2-8.6 0-17.2.1-25.7.3-16.5.5-33-1.4-49.5-.2-1.4-.2-2.8-.2-4.3 0-3.7 0-7.6-2.7-11.7l-6.3 3c-8 4-16 8.1-25.8 6.6-11.6-1.9-17.4-6.4-16.6-18.3a489 489 0 0 1 4.5-39.6c2-12.6 2.6-25.3 3.2-38.2.8-15.2 1.6-30.7 4.5-46.4-18.3 5-35.6 10-52 17.8-22.4 10.7-46.6 16.2-70.6 21.7l-5.4 1.2c-25 5.6-49.5 13-73.4 22.2-8.8 3.4-17.8 6.4-26.8 9.4a376.2 376.2 0 0 0-41.7 15.7 993.2 993.2 0 0 0-61.3 32c-7.5 4.2-8.7 11.1-2 18a21.7 21.7 0 0 1 5 23.8A23.5 23.5 0 0 0 37 275a61.3 61.3 0 0 1 4.3 28c0 4.3 0 8.6.3 12.7a281 281 0 0 0 34.8 109.3 467.7 467.7 0 0 1 20 44.4c5 11.8 9.8 23.6 15.4 35 2 4 12.6 30 24.9 61.9 1 2.8-.4 7.2-1.9 11.7-1.5 4.6-3 9.3-1.9 12.2 1.2 3 4.6 4.3 8.2 5.7 3.2 1 6.4 2.3 8.6 4.7 12.2 13.8 15.7 24 20.3 37.7l.2.4c7.5 22.1 8.5 47 8.6 54a32.6 32.6 0 0 1-14.3.2c2-14.3-1-27.3-4.1-40.3-1-4.6-2.2-9.2-3-13.9-2.8-15.3-9.5-26.4-24.5-31.7-10.5-3.6-13.8-10.2-12.7-21.8l1-7.5c1.4-9.9 3-20.1-3-29-15.5-23-26.6-48.3-37.9-74l-6.8-15.4-1.4 2.2a42.5 42.5 0 0 0-6 11.5l-8.4 29C46.2 542.2 34.6 582.3 26 623.2c-5 23.5-7.9 47-9.8 70.8H1.7c-3.5-11.5-1-22.5 1.5-33.5a185 185 0 0 0 2.3-11.1C12 609 22.4 569.7 32.8 530.3l.5-2.1c7.7-29.1 18.3-56.8 29.5-84.5 2.3-5.6 1.2-9.2-2.8-13.7-15.2-17.5-20.3-39.6-23.8-61.6l-1.8-10.8c-4-23.5-7.9-47-6-71-6.7-7.8-7.3-17.4-7.8-27-.6-10-1.2-20-8.7-28.3-6.4-7 2.5-25.2 15-32.2 33.2-18.5 66.8-36 103.5-46.8A517 517 0 0 0 181 134c16.9-7 34.5-10.8 52.1-14.8 11.2-2.5 22.3-5 33.2-8.2 13.6-4 26.7-9 40-14a420.5 420.5 0 0 1 51-17.2c7-1.7 11.3-6.1 11.4-13.6.1-7.7 4.2-12.3 10.1-16.7 22.5-16.9 48.7-25 74.8-33.2l3.4-1c4.2-1.4 8.1-3.2 12-5a65 65 0 0 1 20.5-7c3.3-.6 6.5-1.2 10.2 0 2 6.6-2 9.9-6.8 11.9l-15.4 6.3A806.2 806.2 0 0 1 425.2 42c-7.8 2.7-14.7 7-21.6 11.1-5.8 3.6-11.6 7.1-18 9.7-2.3 1-4.2 5.6-4.6 8.7-3.3 29.3-6.3 58.6-9.3 88l-1.4 13.2-1.4 14.1c-.8 8.6-1.7 17-2.7 25.6 0 .8-.2 1.5-.4 2.3-.5 3-1 6.1 1.8 8.5 3 2.4 5.7 1 8.4-.5l2.2-1c28.3-12.3 48.4-34.2 68.5-56 4.5-5 9-10 13.6-14.7 14.7-15.4 26.9-18.9 45.7-9.7 5.7 2.7 10.9 4.6 17.7 2.1-3.6-7.4-7.5-14.6-11.4-21.8-8.4-15.4-16.6-30.6-22.2-47.1-5-14.6-3.5-29.6-2.1-44.4l.3-3c.5-5.6 4.3-10.2 11.4-10.7 5.9 5.8 6 15.3 6 21-.2 25 18.1 33.3 34.7 40.8l.5.3c50.3 22.9 103.7 25 157.4 16.8a149.8 149.8 0 0 0 80.3-37.2c11.4-10.4 10-22.9 4.5-34.3-4.5-9-1.5-14.8 3.7-20.6 4.7-5.2 10.3-3 15.5-1l2.3 1c30.8 11 59 27.2 87.4 43.4l5 3a493 493 0 0 0 41.3 20.2c12.8 5.8 25.6 11.7 38 18.5 34.6 19 70.1 36.4 105.7 53.6 18.5 9 38.1 15.7 57.7 22.5l16.3 5.8c13.9 5 27.9 9.6 41.8 14.3 12 4 24 8 35.8 12.2 5.4 2 11 2.2 16.6 2.5 5.9.3 11.8.6 17.5 2.8l4.5 1.7c7 2.5 13.8 5 18.8 11.2 7.6 9.5 7.3 17.4-3 23.7-12.2 7.3-18.8 15.5-13.4 30.2 1.6 4.4-.3 9-2 13.3l-.5 1.2-.2.5c-10 25-16.8 79.6-18.6 93.4l-.3 2.8c-3.8 27 2.8 46 10.2 67.7a558 558 0 0 1 5.4 16.4c11.8 38.4 23.2 77 33.6 115.8a1073 1073 0 0 1 21.4 99c.6 3.4.4 7 .2 11v3a25.1 25.1 0 0 1-12.3.2c-9.4-69.9-29.7-136.2-50-202.4A3709 3709 0 0 1 1242 425a158 158 0 0 0-15 32.1 238.2 238.2 0 0 1-50.9 90l-1.2 1.3c-4 4.4-8.8 9.5-8 13.1 2.7 13-3.9 20.6-10.8 28.6l-3.2 3.8a41.5 41.5 0 0 0-8.6 20c-1.3 8.2-2.8 16.4-4.3 24.6a383.2 383.2 0 0 0-7.3 55.5h-14.3c2-6.1 2.4-13.2 3-22.2a250.7 250.7 0 0 1 11.8-67c.7-4 1.7-9.9 11-19.5 8.5-8.6 8.4-18.8 8.3-25.2 0-2.4 0-4.2.4-5.2 5.6-14.2 25.4-39.5 35.1-52 3-3.7 5-6.3 5.4-7.1 23.1-38 39.4-79.9 48-123.6 2.8-13.7 5-27.6 7.3-41.6a1160 1160 0 0 1 7.2-41.8c2.5-13.3 5-26.5 5.6-40.2.3-7.4 6.6-11 12.5-14.5l1.3-.8.5-.2.4-.3c3.2-2 6.7-4 6.2-8.3-.5-4-3.9-5-7.3-6l-1.3-.4c-10.2-3-20.7-5.2-31.1-7.4a299.7 299.7 0 0 1-39.6-10.2l-20.3-7c-13.9-4.9-27.7-9.6-41.3-15a1511.4 1511.4 0 0 1-77.9-32.1 1475.9 1475.9 0 0 1-87-43.7 346 346 0 0 0-58-26c19.6 34.7 23.1 72.8 26.7 110.8.9 9.7 1.8 19.3 3 28.8 1.5 12.7-3 23.5-13.6 30-12.3 7.4-25.3 6.2-37.6-1.4l-3-2.2c-2.2-2-4.6-4-8.3-3.8-.4 49.6 0 99.2.2 148.8.6 101.4 1.2 203-3.3 305a41.8 41.8 0 0 1-16.6.3c.5-20.4 1.5-40.6 2.4-60.7 1-23.4 2.1-46.7 2.7-70 .8-39.9.6-79.7.4-119.6l-.2-22.4c-.2-53-.8-106.1-1.3-159.2l-.2-19.9c0-2 .1-4 .4-5.9.5-5.5 1.1-11-3.3-16.2-6.8-8-13.3-16.1-19.8-24.3L834 178.6a96 96 0 0 0-27-21.6c-10.4-6-14.9-3-17.3 8.3-1.5 6.7-.8 13.2 0 19.7.4 3.7.8 7.4.8 11 .4 80.8-1.6 161.5-4.3 242.2-1.5 45-2.4 90.3-3.1 135.4-.4 23.7-1.5 47.4-2.5 71-.8 16.5-1.5 33-2 49.6-4 0-9.9-.5-13.8-1.3.8-23.1 2-48.1 3-70.2a1987 1987 0 0 0 2.5-58.5c.1-34.5 1.5-99.8 2.8-162.4 1.1-52.7 2.2-103.4 2.5-132.4a6422.8 6422.8 0 0 0 0-105.7c-11.4-1.8-21 3.7-29.6 11.7a60 60 0 0 1-28.4 14.2c-40.4 9-81.3 11.7-122.4 5-21.3-3.4-41.6-9.6-57.9-25-3-3-6.5-5.6-10.6-8.6a374 374 0 0 1-6.7-5.1c0 4.7 1 20.7 2.4 40.7 2.2 33.3 5.2 77.9 5.3 100.7 0 18.2.9 36.4 1.7 54.6l.9 19c0 2.4 5 251 5 305.2v3.5c-.1 4.8-.3 9.7 1.7 14.4-5.6.1-11-.2-16.6-1 1.8-17.9-.6-131.4-2.4-212.6-.8-37.8-1.4-68.6-1.4-79.5 0-41-2.2-82.1-4.4-123.1-1.8-35.9-3.7-71.7-4.2-107.6-.1-10.7-2.9-16.2-13.3-19.5-10.6-3.5-17.7.8-23.5 8-9.7 12-20.3 23-31.9 33.2a61.8 61.8 0 0 0-23.4 49.5c-1 54.5 1 108.8 2.9 163.2 1.9 53.2 3.7 106.4 2.9 159.6-.5 29.7.2 59.5 1 89.2l.8 40.6h-14.3Zm513-569.4c-4.1-23.4-13.4-45-31.4-60.1-23.8-20-52.1-32.5-80.7-45l-14.8-6.6a44.6 44.6 0 0 1 6.6 40.4 133 133 0 0 1-18.5 36.5c-12.7 16.8-19.9 35.7-14.7 58.5 14.7-8.2 28.4-13 44.9-4.6a123.6 123.6 0 0 1 43.1 39c13.6 18.2 27.3 36 46.2 49.1 7.6 5.3 15.7 5 23.3 2 7.7-3.1 7.6-10.8 6.8-17.9-1-9-1.5-18.1-2-27.3-1.4-21-2.7-42.2-8.8-64Zm-397.8-8c-2.6-4.6-5.1-9.3-7.5-14.2a24155 24155 0 0 0-12.2-27.3c84 49.3 169.7 54.2 259.7 13.3l-3.2 7.4c-3.6 8.2-7 16-8.7 24.6l-.6 3c-.9 4-1.7 8-1.4 12.2 1.2 20-4.4 27.7-23.4 34.7-31.6 11.6-64.2 13-97.3 11a243 243 0 0 0-24.4-.4c-19.7.7-35.9-8.2-52-17.2l-6.5-3.5a17.8 17.8 0 0 1-7.6-10c-3.3-12-9.1-22.8-15-33.5Z" fill="#fff"/></g><g transform="translate(266 207)"><path d="M304 281.5a44 44 0 0 1 14.7-13.4c9.7-6 18.3-13.6 25.5-22.5 8.4-10.5 21.6-16.2 34.5-20.7 9.5-3.2 15.2-7 17.2-18.7 2.5-14.7 17.7-19.1 30-22.4 38.7-10.2 72.9-28.8 105.8-51a343.3 343.3 0 0 1 88-43.2c24.8-7.8 49.2-11 74.2-8.6 31.5 3 61.8 12.5 81.3 39.2 21.4 29.3 28.9 63 19.7 99-2.2 8.6-4.9 17.1-7.6 26.8 11 9.5 25 16 35.7 27 11.7 12 21.6 24.6 26.6 40.7 1.2 4 3.5 8.6 2.6 12.3-4.7 18.6 8.7 35.7 9.9 53.6 2.4 36.4-21.4 94.6-23.7 95.7-1-5.7-10.2-2.7-7.6-12 6.6-23.5-6.8-58-9.6-74.4a58.4 58.4 0 0 0-21.2-37.3c-91.2-76.2-90.1-76.3-187.6-43.4-31 10.5-57.3 30.9-85 47.8-6.9 4.1-12.5 9.7-20.6 12.5-16.9 5.7-22.6 2.9-24.4-15l-.9-5c-9.6-.7-15.3 5.7-21.2 10.8-28.1 24.5-48 52.6-40.9 92.9a33 33 0 0 1-4.7 20.9c-14.5 26.4-18.3 55.3-20 84.6-.6 9-4 14.5-13 16-10 1.8-10.8-5.5-13.5-12.6-7.8-20.4-10.6-42.7-25.2-60.4-12-14.6-25-24.4-44.8-15.7-10.2 4.4-14.9-2.9-20-9.1-15.7-19.6-19.7-42.8-20.6-67-1.7-45 11-85.3 39.6-120.4 1.8-2.3 4-4.3 6.8-7Z" fill="#000"/></g><g transform="translate(791 871)"><path d="M159.8 103c-3.2-2.8-6-6.4-9.7-8.1-18-8.5-31.4-21.7-44-36.9-14-16.7-28-34.4-49-43.4-8-3.5-16.3-7.8-24.7 0C22 24.1 9.6 33 12.4 49.1c2.5 14 11 24.6 22.6 33.8 26.5 21.1 58 26.5 90 30.7 11.8 1.6 25.3 1.5 34.8-10.6Z" fill="#fff"/><path fill-rule="evenodd" clip-rule="evenodd" d="M104.8 38.9a85.7 85.7 0 0 0-24-23.6c-4.2-4.4-9.2-6.3-14-8-2-.8-4-1.5-5.8-2.4-22-10.3-48.1.7-57.4 23.3a50.7 50.7 0 0 0 16.1 58.2c20.7 17.7 45.5 30 72.1 35.7 22.7 5 45 7.8 67.9.5 8.8-2.8 16-7.1 17.1-16.5 1.1-8.2-3.5-14.4-10.8-18.7-1.5-.9-2.9-2-4.3-3.2-1.5-1.2-3-2.4-4.8-3.4-19.5-11.2-38.2-23-52-42Zm52 61.3 3 2.8c-9.5 12.1-23 12.2-34.9 10.6-31.8-4.2-63.4-9.6-90-30.7a55.9 55.9 0 0 1-22.5-33.8C9.9 34.8 19.5 26 29 17.7l3.4-3c8-7.4 15.7-4 23.3-.7l1.5.6c19.9 8.6 33.4 24.8 46.6 40.7L106 58A131.4 131.4 0 0 0 150.1 95c2.5 1.2 4.6 3.2 6.7 5.3Z" fill="#000"/></g><g transform="translate(653 805)"></g><g transform="translate(901 668)"><path d="M65.7 103.7c-.6 21.6 16.4 30.6 27.5 43.5 8.5 10 18.5 18.7 13.7 34.4a39.6 39.6 0 0 1-40.8 27.6 104 104 0 0 1-36.4-11A22.2 22.2 0 0 1 19 187.6c-1.7-3.8-5.4-7.8-.5-11.4 4.6-3.4 7 0 10 3.7 11 13.3 26 16.4 42.6 15.7A23.2 23.2 0 0 0 93 180.8c3.6-8.3-1.6-15.2-6.3-20.8-9.3-11-20-20.5-27.4-33.2-8.3-14.2-7.6-44.1 2.2-57.4 1.9-2.5 3.6-5 7.2-3.1 3.8 2 3.4 5.5 2.2 9a69.3 69.3 0 0 0-5.2 28.4Z" fill="#000"/></g><g transform="translate(610 680)"><path d="M407.4 122.5c13 .3 25.4 1.1 37.6 2.5 3 .4 5 3.3 5 6.7 0 3.3-1.7 5.6-4.7 7-11.2 4.8-22 8.2-33.7.2-6.5-4.5-9-8.7-4.2-16.4ZM251.2 124c6.4 2.8 5.6 6.6 3 10.6-5.9 8.6-27.3 12.5-36 6.6-5-3.4-8-8-5.6-14 2.5-6.2 7.7-5.6 12.8-3.6 8.3 3.3 16.5 1.7 25.8.4ZM419.6 111c-4.2-9.5-9.9-15.2-19.8-15.7-6-.3-7-5.1-8.9-9.8 2-1.5 3.5-3.7 5.3-3.8 21.1-1.7 42.4-1.8 63.5-.1 6 .4 9.3 8 3.2 10.4-10 4-12.5 13.2-18.5 19.8-8.2 9-15.2 9.1-24.8-.8ZM229.6 81.1c12.2.7 23.1 1 34 2 3.6.3 8 1.8 8 6.7 0 5.6-4.6 5.2-8.3 5.1-6.3 0-9.7 2.7-12.5 8.6-3.4 7.4-6.9 15.3-18 14.8-10.5-.6-15.1-7.2-18.2-15.2-2-5.7-4.9-8.4-10.9-8.2-3.4.1-7.1-.2-7.5-4.9-.4-5 3-6 7-7.2a67.7 67.7 0 0 1 26.4-1.7Z" fill="#000"/></g><g transform="translate(610 680)"></g><g transform="translate(774 657)"><path d="M47.1 22c23.6-.3 45.4-8.9 68.1-5.8 18.2 2.5 36.3 4 54.6.9 6.6-1.2 11.6 2 13 12 1.5-13.5 13.4-12.8 17.1-11.2 15.5 6.6 30.2 1 44.9-.5 20-2 48.5 10.6 58.3 28.4a52 52 0 0 0 4.4 6.1c2.8 3.7 7.3 7.2 3 12.1-4.1 4.6-9.2 1.7-13-.3C289 59 280.8 53.7 273 48a18 18 0 0 0-19-2.4 76.4 76.4 0 0 1-38.9 4.4c-14.4-1.5-29.5 3.4-43 2-21.5-2.5-43.2 3.4-64.2-3.5-8.4-2.8-16.7-6.9-25.1.2-.9.7-2.7 1.3-3.6.9-12.3-6-24.4 0-36.4.1-10.2 0-20.2 3-30.3 1.6-3.8-.5-9.2 2-11-3.6-2-6.2 4-8.2 7.5-10.3C17.4 32.2 26 26.7 36.7 26c3.2-.2 6.3-2.4 10.4-4Z" fill="#000"/></g><g transform="translate(0 559)"></g></g></svg> | |
+0 −0 viewer/assets/ballot.png 新增 查看文件
+0 −0 viewer/assets/doctor.png 新增 查看文件
+0 −0 viewer/assets/judge.woff2 新增 查看文件
+0 −0 viewer/assets/mic.png 新增 查看文件
+0 −0 viewer/assets/moon.png 新增 查看文件
+0 −0 viewer/assets/person.png 新增 查看文件
+0 −0 viewer/assets/robot.png 新增 查看文件
+0 −0 viewer/assets/seer.png 新增 查看文件
+0 −0 viewer/assets/sun.png 新增 查看文件
+0 −0 viewer/assets/thought.png 新增 查看文件
+0 −0 viewer/assets/villager.png 新增 查看文件
+0 −0 viewer/assets/werewolf.png 新增 查看文件
+0 −0 viewer/assets/zzz.png 新增 查看文件
+19 −0 viewer/bridge.js 新增 查看文件
| @@ -0,0 +1,19 @@ | ||
| 1 | +// The page around a game's viewer hands it the replay (Shoal's public/app.js): the viewer runs in a frame with scripts | |
| 2 | +// only, says it is ready, and gets {shoal: 'replay', name, text}. Opened by itself, it reads ?replay=<file> instead, | |
| 3 | +// so a replay can be watched from a clone: python3 -m http.server, then viewer/index.html?replay=../replays/x.json | |
| 4 | +// A live room (docs/games.md §8.4) opens the viewer as index.html?live. shoalLive(fn) says {shoal: 'ready', live: true} | |
| 5 | +// and calls fn(batch) for each {shoal: 'live', room, you, messages}: you lists the seats this viewer controls, the first | |
| 6 | +// batch holds all the history it may see, and each message is the room's (§8.3) plus its sequence number n: {n, to, | |
| 7 | +// version, obs, legal} asks a seat to act, {n, to, obs} tells one seat, {n, event} is public, {n, end} ends the room. | |
| 8 | +// shoalAct(seat, version, action) plays for a seat in you, answering the request with that version. | |
| 9 | +window.shoalReplay = start => { | |
| 10 | + addEventListener('message', e => { if (e.data && e.data.shoal === 'replay') start(e.data.text, e.data.name) }) | |
| 11 | + const local = new URLSearchParams(location.search).get('replay') | |
| 12 | + if (local) fetch(local).then(r => r.text()).then(t => start(t, local)) | |
| 13 | + else if (parent !== window) parent.postMessage({ shoal: 'ready' }, '*') | |
| 14 | +} | |
| 15 | +window.shoalLive = fn => { | |
| 16 | + addEventListener('message', e => { if (e.data && e.data.shoal === 'live') fn(e.data) }) | |
| 17 | + if (parent !== window) parent.postMessage({ shoal: 'ready', live: true }, '*') | |
| 18 | +} | |
| 19 | +window.shoalAct = (seat, version, action) => parent.postMessage({ shoal: 'act', seat, version, action }, '*') | |
+1080 −0 viewer/index.html 新增 查看文件
| @@ -0,0 +1,1080 @@ | ||
| 1 | + | |
| 2 | +<html lang="zh-CN"> | |
| 3 | +<head> | |
| 4 | +<meta charset="utf-8"> | |
| 5 | +<meta name="viewport" content="width=device-width, initial-scale=1"> | |
| 6 | +<title>狼人杀</title> | |
| 7 | +<style> | |
| 8 | +/* The 狼人杀 table people know from NetEase's app: numbered coin seats down both sides, a moon or sun medallion with | |
| 9 | + 第N夜 / 第N天 on top, one status line ("【4号】发言中…… 47秒"), the judge's cards, speeches, the exile vote board and | |
| 10 | + the full-screen role card and victory screen; plus what watching agents needs: a god view (role tags, the night's | |
| 11 | + moves, each agent's reasoning in grey italics), a log and a night/day timeline. Replays play night by night; a live | |
| 12 | + room (?live) lets a seated person speak, vote and act. Assets and their licences: viewer/NOTICE. */ | |
| 13 | +@font-face { font-family: ShoalJudge; src: url(assets/judge.woff2) format('woff2'); font-weight: 700; font-display: swap; } | |
| 14 | +@property --bg { syntax: '<color>'; inherits: true; initial-value: #0d1326; } | |
| 15 | +@property --stage { syntax: '<color>'; inherits: true; initial-value: #141c38; } | |
| 16 | +@property --card { syntax: '<color>'; inherits: true; initial-value: rgba(20, 28, 58, .86); } | |
| 17 | +@property --ink { syntax: '<color>'; inherits: true; initial-value: #e9e7f2; } | |
| 18 | +@property --muted { syntax: '<color>'; inherits: true; initial-value: #9097b4; } | |
| 19 | +@property --line { syntax: '<color>'; inherits: true; initial-value: #263055; } | |
| 20 | +@property --accent { syntax: '<color>'; inherits: true; initial-value: #f2d27a; } | |
| 21 | +@property --sky { syntax: '<color>'; inherits: true; initial-value: #22336e; } | |
| 22 | +@property --hill { syntax: '<color>'; inherits: true; initial-value: #0a1022; } | |
| 23 | +@property --hill2 { syntax: '<color>'; inherits: true; initial-value: #121a3a; } | |
| 24 | +:root { | |
| 25 | + --wolf: #d9473f; --seer: #8b5cf6; --doctor: #14a3a3; --villager: #2f9e6a; --red: #e0483e; --gold: #f5c242; | |
| 26 | + --ease: cubic-bezier(.32, .72, 0, 1); --spd: 1; | |
| 27 | + --font-ui: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", system-ui, sans-serif; | |
| 28 | + --font-judge: ShoalJudge, "Songti SC", "STSong", "Noto Serif CJK SC", "Source Han Serif SC", serif; | |
| 29 | + --coin: 64px; --side: 120px; --logw: 300px; | |
| 30 | +} | |
| 31 | +.night { --bg: #0d1326; --stage: #141c38; --card: rgba(20, 28, 58, .86); --ink: #e9e7f2; --muted: #9097b4; --line: #263055; | |
| 32 | + --accent: #f2d27a; --sky: #22336e; --hill: #0a1022; --hill2: #121a3a; --ring: #c9a45c; --chip: rgba(255, 255, 255, .08); --win: #f2d27a; } | |
| 33 | +.day { --bg: #f3ead7; --stage: #fbf6ea; --card: rgba(255, 253, 247, .94); --ink: #2a2119; --muted: #7b6b58; --line: #e3d6bd; | |
| 34 | + --accent: #d98a1f; --sky: #f7d9a3; --hill: #d9c29a; --hill2: #ead9b8; --ring: #b07a3e; --chip: rgba(60, 40, 10, .07); --win: transparent; } | |
| 35 | +@media (prefers-color-scheme: dark) { | |
| 36 | + .day { --bg: #1d1915; --stage: #28221b; --card: rgba(40, 34, 27, .94); --ink: #f1e9da; --muted: #a99a86; --line: #3a3127; | |
| 37 | + --accent: #e9a23b; --sky: #5a3f22; --hill: #17120d; --hill2: #2b2219; --chip: rgba(255, 255, 255, .07); } | |
| 38 | +} | |
| 39 | +* { box-sizing: border-box; } | |
| 40 | +html, body { margin: 0; height: 100%; overflow: hidden; } | |
| 41 | +body { background: #0d1326; color: var(--ink); font: 14px/1.5 var(--font-ui); -webkit-font-smoothing: antialiased; } | |
| 42 | +button { font: inherit; color: inherit; } | |
| 43 | +svg.ic { width: 1em; height: 1em; fill: currentColor; vertical-align: -.14em; flex: none; } | |
| 44 | +#app { height: 100%; display: grid; grid-template-rows: 52px minmax(0, 1fr) 64px; background: var(--bg); color: var(--ink); | |
| 45 | + transition: --bg .6s, --stage .6s, --card .6s, --ink .6s, --muted .6s, --line .6s, --accent .6s, --sky .6s, --hill .6s, --hill2 .6s; } | |
| 46 | + | |
| 47 | +/* ---- header: title, the medallion, counts and switches ---------------------------------------------------------- */ | |
| 48 | +header { position: relative; z-index: 6; display: flex; align-items: center; gap: 12px; padding: 0 16px; | |
| 49 | + background: linear-gradient(180deg, rgba(0, 0, 0, .28), rgba(0, 0, 0, .12)); border-bottom: 1px solid var(--line); } | |
| 50 | +.day header { background: linear-gradient(180deg, rgba(120, 80, 20, .1), rgba(120, 80, 20, .03)); } | |
| 51 | +.brand { display: flex; align-items: baseline; gap: 8px; min-width: 0; white-space: nowrap; } | |
| 52 | +.brand b { font: 700 19px var(--font-judge); letter-spacing: .08em; } | |
| 53 | +.brand span { color: var(--muted); font-size: 13px; } | |
| 54 | +.badge { position: absolute; left: 50%; top: 4px; z-index: 2; display: flex; align-items: center; justify-content: center; gap: 2px; | |
| 55 | + width: 78px; height: 78px; margin-left: -39px; border-radius: 50%; color: #fff; font-family: var(--font-judge); font-weight: 700; | |
| 56 | + background: radial-gradient(circle at 50% 30%, #3b57b8, #16245c 70%); border: 3px solid var(--ring); | |
| 57 | + box-shadow: 0 0 0 3px rgba(0, 0, 0, .35), 0 0 22px rgba(120, 150, 255, .35), inset 0 -6px 12px rgba(0, 0, 0, .35); } | |
| 58 | +.day .badge { background: radial-gradient(circle at 50% 30%, #ffc75a, #d0731c 72%); box-shadow: 0 0 0 3px rgba(80, 40, 0, .25), 0 0 26px rgba(255, 180, 60, .55), inset 0 -6px 12px rgba(120, 50, 0, .3); } | |
| 59 | +.badge span { font-size: 13px; padding-top: 10px; } | |
| 60 | +.badge b { font-size: 34px; line-height: 1; text-shadow: 0 2px 0 rgba(0, 0, 0, .35); } | |
| 61 | +.badge img { position: absolute; top: -10px; right: -12px; width: 34px; height: 34px; filter: drop-shadow(0 2px 4px rgba(0, 0, 0, .4)); } | |
| 62 | +.badge.flip { animation: flipY calc(.6s / var(--spd)) var(--ease); } | |
| 63 | +@keyframes flipY { 0% { transform: rotateY(0); } 50% { transform: rotateY(90deg); } 100% { transform: rotateY(0); } } | |
| 64 | +.ribbon { position: absolute; left: 50%; bottom: -9px; z-index: 1; width: 260px; height: 8px; margin-left: -130px; border-radius: 0 0 6px 6px; | |
| 65 | + background: linear-gradient(180deg, #ffd768, #e9a41e); box-shadow: 0 2px 8px rgba(233, 164, 30, .45); } | |
| 66 | +.tools { margin-left: auto; display: flex; align-items: center; gap: 8px; white-space: nowrap; } | |
| 67 | +.count { color: var(--muted); font-size: 13px; font-variant-numeric: tabular-nums; } | |
| 68 | +.count b { color: var(--ink); } | |
| 69 | +.count .w { color: var(--wolf); } .count .g { color: var(--villager); } | |
| 70 | +.switch { display: flex; align-items: center; gap: 6px; height: 30px; padding: 0 10px 0 8px; border: 1px solid var(--line); border-radius: 15px; | |
| 71 | + background: var(--chip); cursor: pointer; font-size: 13px; } | |
| 72 | +.switch i { position: relative; width: 28px; height: 16px; border-radius: 8px; background: rgba(128, 128, 128, .45); transition: background .2s; } | |
| 73 | +.switch i::after { content: ''; position: absolute; left: 2px; top: 2px; width: 12px; height: 12px; border-radius: 50%; background: #fff; transition: transform .2s var(--ease); } | |
| 74 | +.switch[aria-pressed=true] i { background: var(--accent); } | |
| 75 | +.switch[aria-pressed=true] i::after { transform: translateX(12px); } | |
| 76 | +.switch:disabled { opacity: .45; cursor: not-allowed; } | |
| 77 | +.iconbtn { display: grid; place-items: center; width: 30px; height: 30px; padding: 0; border: 1px solid var(--line); border-radius: 50%; background: var(--chip); cursor: pointer; font-size: 15px; } | |
| 78 | +.iconbtn b { font: 700 14px/1 Georgia, serif; } | |
| 79 | + | |
| 80 | +/* ---- the table: two columns of seats around the stage, the log on the right -------------------------------------- */ | |
| 81 | +#table { position: relative; display: grid; min-height: 0; grid-template-columns: var(--side) minmax(0, 1fr) var(--side) var(--logw); | |
| 82 | + grid-template-areas: "l s r g"; } | |
| 83 | +.col { display: flex; flex-direction: column; justify-content: space-evenly; align-items: center; min-height: 0; padding: 14px 0 8px; position: relative; z-index: 2; } | |
| 84 | +.col.l { grid-area: l; } .col.r { grid-area: r; } | |
| 85 | +.seat { position: relative; display: flex; flex-direction: column; align-items: center; width: 100%; padding: 0 6px; cursor: pointer; | |
| 86 | + transition: opacity .3s, transform .25s var(--ease); -webkit-tap-highlight-color: transparent; } | |
| 87 | +.coin { position: relative; width: var(--coin); height: var(--coin); flex: none; } | |
| 88 | +.face { display: block; width: 100%; height: 100%; border-radius: 50%; background: var(--tint, #f3e4c4); border: 3px solid var(--ring); | |
| 89 | + box-shadow: 0 0 0 2px rgba(0, 0, 0, .28), 0 6px 14px rgba(0, 0, 0, .28), inset 0 0 0 2px rgba(255, 255, 255, .5); transition: filter .4s, opacity .4s, border-color .3s, box-shadow .3s; } | |
| 90 | +.num { position: absolute; left: 50%; bottom: -12px; min-width: 28px; height: 28px; margin-left: -14px; padding: 0 4px; border-radius: 14px; | |
| 91 | + background: radial-gradient(circle at 40% 30%, #4a5d96, #172152); border: 2px solid var(--ring); color: #fff; text-align: center; | |
| 92 | + font: 700 18px/24px var(--font-judge); text-shadow: 0 1px 0 rgba(0, 0, 0, .5); box-shadow: 0 2px 6px rgba(0, 0, 0, .35); } | |
| 93 | +.day .num { background: radial-gradient(circle at 40% 30%, #8a5a2c, #4a2c12); } | |
| 94 | +.tag { position: absolute; top: -7px; right: -12px; z-index: 2; height: 19px; padding: 0 7px; border-radius: 10px 10px 10px 3px; color: #fff; | |
| 95 | + font: 700 11px/19px var(--font-ui); white-space: nowrap; background: var(--c); box-shadow: 0 2px 6px rgba(0, 0, 0, .3); animation: pop .3s var(--ease); } | |
| 96 | +.Werewolf { --c: var(--wolf); } .Seer { --c: var(--seer); } .Doctor { --c: var(--doctor); } .Villager { --c: var(--villager); } | |
| 97 | +.kind { position: absolute; left: -5px; bottom: 1px; display: grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; | |
| 98 | + background: var(--stage); border: 1px solid var(--line); box-shadow: 0 1px 3px rgba(0, 0, 0, .3); } | |
| 99 | +.kind img { width: 14px; height: 14px; } | |
| 100 | +.kind.me { background: #3fbf5a; border-color: #2c8f42; color: #fff; font-size: 11px; font-weight: 700; } | |
| 101 | +.vcount { position: absolute; top: -6px; left: -8px; z-index: 2; min-width: 22px; height: 22px; border-radius: 11px; background: var(--red); color: #fff; | |
| 102 | + font: 700 13px/22px var(--font-ui); text-align: center; box-shadow: 0 2px 6px rgba(0, 0, 0, .35); animation: pop .25s var(--ease); } | |
| 103 | +.mic { position: absolute; top: -8px; left: -8px; z-index: 2; width: 26px; height: 26px; filter: drop-shadow(0 2px 4px rgba(0, 0, 0, .4)); animation: pop .3s var(--ease); } | |
| 104 | +.zzz { position: absolute; top: -10px; right: -8px; width: 26px; height: 26px; animation: doze 2.4s ease-in-out infinite; } | |
| 105 | +@keyframes doze { 0%, 100% { transform: translateY(0); opacity: .9; } 50% { transform: translateY(-4px); opacity: .55; } } | |
| 106 | +.marks { position: absolute; right: -14px; bottom: 6px; z-index: 2; display: flex; flex-direction: column; align-items: flex-end; gap: 2px; } | |
| 107 | +.mk { display: flex; align-items: center; gap: 2px; height: 20px; padding: 0 5px; border-radius: 10px; color: #fff; font-size: 11px; font-weight: 700; | |
| 108 | + background: var(--c); box-shadow: 0 1px 4px rgba(0, 0, 0, .35); animation: pop .3s var(--ease); white-space: nowrap; } | |
| 109 | +.mk.kill { --c: var(--wolf); } .mk.heal { --c: var(--doctor); } .mk.eye { --c: var(--seer); } | |
| 110 | +.claws { position: absolute; inset: 6px; z-index: 1; color: var(--red); opacity: .85; animation: slash .35s var(--ease); pointer-events: none; } | |
| 111 | +.claws svg { width: 100%; height: 100%; fill: currentColor; filter: drop-shadow(0 0 3px rgba(0, 0, 0, .6)); } | |
| 112 | +@keyframes slash { from { clip-path: inset(0 100% 0 0); } to { clip-path: inset(0 0 0 0); } } | |
| 113 | +.stamp { position: absolute; left: -8px; right: -8px; top: 34%; z-index: 3; padding: 1px 0; border: 2px solid var(--red); border-radius: 5px; | |
| 114 | + color: var(--red); background: rgba(255, 240, 235, .85); text-align: center; font: 700 15px/1.2 var(--font-judge); letter-spacing: .25em; text-indent: .25em; | |
| 115 | + transform: rotate(-12deg); animation: stamp .3s cubic-bezier(.3, 1.6, .5, 1); box-shadow: 0 2px 8px rgba(0, 0, 0, .3); } | |
| 116 | +@keyframes stamp { from { opacity: 0; transform: rotate(-12deg) scale(1.8); } } | |
| 117 | +.seat .name { max-width: 100%; margin-top: 15px; overflow: hidden; font-size: 12px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; } | |
| 118 | +.seat .sub { max-width: 100%; min-height: 16px; overflow: hidden; color: var(--muted); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; } | |
| 119 | +.seat .sub.note { color: #e9a23b; font-style: italic; } | |
| 120 | +.seat .sub.pick { color: var(--wolf); font-weight: 700; } | |
| 121 | +.seat.dead .face { filter: grayscale(1) brightness(.75); opacity: .55; } | |
| 122 | +.seat.dead .name { opacity: .6; } | |
| 123 | +.seat.talk .face { border-color: var(--gold); animation: breathe calc(1.2s / var(--spd)) ease-in-out infinite; } | |
| 124 | +@keyframes breathe { 0%, 100% { box-shadow: 0 0 0 2px rgba(0, 0, 0, .28), 0 0 10px 2px rgba(245, 194, 66, .45); } 50% { box-shadow: 0 0 0 2px rgba(0, 0, 0, .28), 0 0 26px 8px rgba(245, 194, 66, .75); } } | |
| 125 | +.seat.hit .face { border-color: var(--c, var(--accent)); box-shadow: 0 0 0 2px rgba(0, 0, 0, .28), 0 0 18px 4px var(--c, var(--accent)); } | |
| 126 | +.seat.can .face { border-color: var(--gold); box-shadow: 0 0 0 2px rgba(0, 0, 0, .2), 0 0 16px 3px rgba(245, 194, 66, .7); } | |
| 127 | +.seat.can:hover { transform: translateY(-2px); } | |
| 128 | +.seat.cannot { opacity: .4; cursor: default; } | |
| 129 | +.seat.picked .face { border-color: var(--act, var(--red)); box-shadow: 0 0 0 3px var(--act, var(--red)), 0 0 22px var(--act, var(--red)); } | |
| 130 | +.seat .ok { position: absolute; left: 50%; top: 50%; z-index: 3; display: grid; place-items: center; width: 30px; height: 30px; margin: -15px 0 0 -15px; border-radius: 50%; | |
| 131 | + background: var(--act, var(--red)); color: #fff; font-size: 17px; font-weight: 700; box-shadow: 0 0 0 2px #fff, 0 2px 8px rgba(0, 0, 0, .4); animation: pop .25s var(--ease); } | |
| 132 | +.seat.filtered .face { box-shadow: 0 0 0 3px var(--accent); } | |
| 133 | +.config { width: calc(100% - 16px); padding: 7px 6px 8px; border: 1px solid var(--line); border-radius: 12px; background: var(--chip); text-align: center; } | |
| 134 | +.config small { display: block; margin-bottom: 4px; color: var(--muted); font-size: 11px; letter-spacing: .1em; } | |
| 135 | +.config div { display: grid; grid-template-columns: 1fr 1fr; gap: 3px 4px; } | |
| 136 | +.config span { display: flex; align-items: center; justify-content: center; gap: 1px; font-size: 12px; font-variant-numeric: tabular-nums; } | |
| 137 | +.config img { width: 22px; height: 22px; } | |
| 138 | + | |
| 139 | +/* ---- the stage: sky, village, status line, one scene at a time ------------------------------------------------- */ | |
| 140 | +#stage { grid-area: s; position: relative; display: flex; flex-direction: column; align-items: center; min-width: 0; min-height: 0; | |
| 141 | + padding: 34px 14px 12px; overflow: hidden; background: radial-gradient(ellipse 80% 70% at 70% -8%, var(--sky), transparent 70%), var(--stage); | |
| 142 | + border-left: 1px solid var(--line); border-right: 1px solid var(--line); } | |
| 143 | +.night #stage::before { content: ''; position: absolute; inset: 0 0 30% 0; pointer-events: none; opacity: .8; | |
| 144 | + background: radial-gradient(1.5px 1.5px at 12% 20%, #fff, transparent), radial-gradient(1px 1px at 25% 8%, #fff, transparent), | |
| 145 | + radial-gradient(1.5px 1.5px at 38% 30%, #dfe6ff, transparent), radial-gradient(1px 1px at 52% 14%, #fff, transparent), | |
| 146 | + radial-gradient(1px 1px at 63% 36%, #fff, transparent), radial-gradient(1.5px 1.5px at 82% 24%, #fff, transparent), | |
| 147 | + radial-gradient(1px 1px at 90% 44%, #cfd8ff, transparent), radial-gradient(1px 1px at 8% 48%, #fff, transparent), | |
| 148 | + radial-gradient(1px 1px at 46% 52%, #fff, transparent), radial-gradient(1.5px 1.5px at 72% 6%, #fff, transparent); | |
| 149 | + animation: twinkle 5s ease-in-out infinite alternate; } | |
| 150 | +@keyframes twinkle { to { opacity: .45; } } | |
| 151 | +.night #stage::after { content: ''; position: absolute; top: 64px; left: 9%; width: 54px; height: 54px; border-radius: 50%; pointer-events: none; | |
| 152 | + background: radial-gradient(circle at 38% 38%, #fffbe6, #f2d27a 60%, #c9a45c); box-shadow: 0 0 40px 12px rgba(242, 210, 122, .25); opacity: .55; } | |
| 153 | +.day #stage::after { content: ''; position: absolute; top: -30px; left: 4%; width: 140px; height: 140px; border-radius: 50%; pointer-events: none; | |
| 154 | + background: radial-gradient(circle, rgba(255, 214, 120, .65), rgba(255, 214, 120, 0) 70%); } | |
| 155 | +.village { position: absolute; left: 0; right: 0; bottom: 0; width: 100%; height: 30%; pointer-events: none; } | |
| 156 | +.village .v1 { fill: var(--hill2); } .village .v2 { fill: var(--hill); } .village .win { fill: var(--win); } | |
| 157 | +.status { position: relative; z-index: 2; max-width: 100%; padding: 4px 16px; border-radius: 16px; background: rgba(0, 0, 0, .32); color: #fff; | |
| 158 | + font-size: 15px; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } | |
| 159 | +.day .status { background: rgba(70, 45, 10, .72); } | |
| 160 | +.status .sec { color: var(--gold); font-weight: 700; font-variant-numeric: tabular-nums; } | |
| 161 | +.status .sec.warn { color: #ffb020; } .status .sec.hot { color: #ff5a4a; } | |
| 162 | +.order { position: relative; z-index: 2; display: flex; flex-wrap: wrap; justify-content: center; gap: 4px; min-height: 26px; margin-top: 8px; } | |
| 163 | +.order i { display: grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; background: var(--chip); border: 1px solid var(--line); | |
| 164 | + font: 700 12px/1 var(--font-ui); font-style: normal; color: var(--ink); transition: all .3s; } | |
| 165 | +.order i.done { opacity: .35; } | |
| 166 | +.order i.now { background: var(--gold); border-color: var(--gold); color: #3a2a06; transform: scale(1.15); } | |
| 167 | +.order small { align-self: center; margin-right: 4px; color: var(--muted); font-size: 11px; } | |
| 168 | +.scene { position: relative; z-index: 2; flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; width: 100%; min-height: 0; padding: 6px 0 4px; } | |
| 169 | +.tabs { display: none; position: absolute; top: 6px; right: 8px; z-index: 5; border: 1px solid var(--line); border-radius: 13px; overflow: hidden; background: var(--chip); } | |
| 170 | +.tabs button { height: 24px; padding: 0 10px; border: 0; background: none; font-size: 12px; cursor: pointer; color: var(--muted); } | |
| 171 | +.tabs button[aria-pressed=true] { background: var(--accent); color: #2a2119; } | |
| 172 | + | |
| 173 | +.judge { position: relative; min-width: 240px; max-width: min(460px, 100%); padding: 14px 22px 13px; border: 1px solid var(--line); border-radius: 16px; | |
| 174 | + background: var(--card); text-align: center; box-shadow: 0 14px 34px rgba(0, 0, 0, .28); animation: rise calc(.45s / var(--spd)) var(--ease); } | |
| 175 | +.night .judge { border-color: rgba(242, 210, 122, .28); } | |
| 176 | +.judge .jl { display: inline-flex; align-items: center; gap: 5px; margin-bottom: 4px; color: var(--muted); font-size: 12px; letter-spacing: .2em; } | |
| 177 | +.judge .jl svg { width: 16px; height: 16px; color: var(--accent); } | |
| 178 | +.judge h3 { margin: 0; font: 700 22px/1.35 var(--font-judge); color: var(--ink); letter-spacing: .04em; } | |
| 179 | +.night .judge h3 { color: #f6e3a6; } | |
| 180 | +.judge h3 em, .board em, .act em, .msg em { font-style: normal; color: var(--accent); } | |
| 181 | +.judge p { margin: 6px 0 0; color: var(--ink); font-size: 14px; } | |
| 182 | +.judge p.god { color: var(--muted); font-size: 13px; } | |
| 183 | +.judge .en { margin-top: 8px; color: var(--muted); font-size: 12px; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } | |
| 184 | +.judge .act { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 6px; margin-top: 8px; font-size: 15px; } | |
| 185 | +.judge .act svg { width: 26px; height: 26px; color: var(--c); } | |
| 186 | +.judge .role { display: inline-block; padding: 0 8px; border-radius: 9px; color: #fff; background: var(--c); font-size: 13px; font-weight: 700; } | |
| 187 | +@keyframes rise { from { opacity: 0; transform: translate(-10px, 14px); } } | |
| 188 | +@keyframes pop { from { opacity: 0; transform: scale(.6); } } | |
| 189 | +.reveal { width: 92px; height: 112px; margin: 10px auto 2px; perspective: 600px; } | |
| 190 | +.reveal > div { position: relative; width: 100%; height: 100%; transform-style: preserve-3d; animation: turn calc(.9s / var(--spd)) var(--ease) forwards; } | |
| 191 | +.reveal .fc { position: absolute; inset: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; border-radius: 12px; | |
| 192 | + backface-visibility: hidden; border: 2px solid var(--ring); } | |
| 193 | +.reveal .front { background: repeating-linear-gradient(45deg, #2a3570 0 8px, #222c60 8px 16px); color: var(--gold); font: 700 36px var(--font-judge); } | |
| 194 | +.reveal .back { transform: rotateY(180deg); background: var(--card); border-color: var(--c); } | |
| 195 | +.reveal .back img { width: 64px; height: 64px; } | |
| 196 | +.reveal .back b { margin-top: 2px; color: var(--c); font-size: 14px; } | |
| 197 | +@keyframes turn { 0%, 30% { transform: rotateY(0); } 100% { transform: rotateY(180deg); } } | |
| 198 | + | |
| 199 | +.say { position: relative; z-index: 2; display: flex; flex-direction: column; width: 100%; max-width: 540px; animation: rise calc(.4s / var(--spd)) var(--ease); } | |
| 200 | +.bubble { position: relative; padding: 12px 18px 14px; border: 1px solid var(--line); border-radius: 18px; background: var(--card); box-shadow: 0 14px 34px rgba(0, 0, 0, .26); } | |
| 201 | +.bubble::before { content: ''; position: absolute; top: 22px; width: 16px; height: 16px; background: var(--card); border: 1px solid var(--line); transform: rotate(45deg); } | |
| 202 | +.say.L .bubble::before { left: -9px; border-width: 0 0 1px 1px; } .say.R .bubble::before { right: -9px; border-width: 1px 1px 0 0; } | |
| 203 | +.bubble .who { display: flex; align-items: center; gap: 6px; margin-bottom: 6px; color: var(--muted); font-size: 13px; } | |
| 204 | +.bubble .who b { color: var(--ink); font-size: 14px; } | |
| 205 | +.bubble .who .lbl { margin-left: auto; color: var(--gold); font-size: 12px; } | |
| 206 | +.bubble .text { max-height: 34vh; overflow-y: auto; font-size: 16px; line-height: 1.6; white-space: pre-wrap; overflow-wrap: anywhere; } | |
| 207 | +.bubble .text.wait { color: var(--muted); font-size: 15px; } | |
| 208 | +.bubble .bar { height: 3px; margin-top: 10px; border-radius: 2px; background: var(--chip); overflow: hidden; } | |
| 209 | +.bubble .bar i { display: block; height: 100%; width: 0; background: var(--gold); } | |
| 210 | +.dots i { display: inline-block; width: 5px; height: 5px; margin-left: 3px; border-radius: 50%; background: currentColor; animation: blink 1.2s infinite; } | |
| 211 | +.dots i:nth-child(2) { animation-delay: .2s; } .dots i:nth-child(3) { animation-delay: .4s; } | |
| 212 | +@keyframes blink { 0%, 100% { opacity: .2; } 40% { opacity: 1; } } | |
| 213 | +.why { display: flex; gap: 6px; margin: 8px 6px 0; color: var(--muted); font-size: 13px; font-style: italic; line-height: 1.5; cursor: pointer; } | |
| 214 | +.why img { width: 18px; height: 18px; flex: none; margin-top: 1px; } | |
| 215 | +.why span { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; } | |
| 216 | +.why.open span { display: block; } | |
| 217 | +.portrait { position: absolute; bottom: 4px; z-index: 1; width: 132px; height: 132px; border-radius: 50%; background: var(--tint); border: 3px solid var(--gold); | |
| 218 | + box-shadow: 0 0 30px rgba(245, 194, 66, .35); animation: rise calc(.5s / var(--spd)) var(--ease); } | |
| 219 | +.portrait.L { left: 14px; } .portrait.R { right: 14px; } | |
| 220 | +.pnum { position: absolute; bottom: 0; z-index: 1; min-width: 40px; height: 40px; border-radius: 20px; border: 2px solid var(--gold); | |
| 221 | + background: radial-gradient(circle at 40% 30%, #4a5d96, #172152); color: #fff; font: 700 26px/36px var(--font-judge); text-align: center; } | |
| 222 | +.pnum.L { left: 118px; } .pnum.R { right: 118px; } | |
| 223 | +.day .pnum { background: radial-gradient(circle at 40% 30%, #8a5a2c, #4a2c12); } | |
| 224 | + | |
| 225 | +.board { width: 100%; max-width: 480px; padding: 12px 16px 12px; border: 1px solid var(--line); border-radius: 16px; background: var(--card); | |
| 226 | + box-shadow: 0 14px 34px rgba(0, 0, 0, .26); animation: rise calc(.4s / var(--spd)) var(--ease); } | |
| 227 | +.board.still { animation: none; } | |
| 228 | +.board .bh { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; font: 700 17px var(--font-judge); } | |
| 229 | +.board .bh img { width: 28px; height: 28px; } | |
| 230 | +.board .bh small { margin-left: auto; color: var(--muted); font: 12px var(--font-ui); } | |
| 231 | +.br { display: flex; align-items: center; gap: 8px; min-height: 34px; padding: 3px 6px; border-radius: 10px; transition: background .3s; } | |
| 232 | +.br.top { background: rgba(224, 72, 62, .16); } | |
| 233 | +.br .tg { display: flex; align-items: center; gap: 6px; width: 38%; min-width: 0; font-weight: 600; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; } | |
| 234 | +.br .ar { color: var(--muted); } | |
| 235 | +.br .vs { flex: 1; display: flex; flex-wrap: wrap; gap: 3px; } | |
| 236 | +.br .vs .mc.new { animation: fly calc(.3s / var(--spd)) var(--ease); } | |
| 237 | +.br b { color: var(--red); font-variant-numeric: tabular-nums; white-space: nowrap; } | |
| 238 | +@keyframes fly { from { opacity: 0; transform: translate(-30px, 12px) scale(.5); } } | |
| 239 | +.board .res { margin-top: 8px; padding-top: 8px; border-top: 1px dashed var(--line); text-align: center; font: 700 17px var(--font-judge); animation: pop .35s var(--ease); } | |
| 240 | +.board .sum { margin-top: 4px; text-align: center; color: var(--muted); font-size: 13px; letter-spacing: .05em; } | |
| 241 | +.mc { display: inline-grid; place-items: center; width: 20px; height: 20px; border-radius: 50%; background: radial-gradient(circle at 40% 30%, #4a5d96, #172152); | |
| 242 | + border: 1px solid var(--ring); color: #fff; font: 700 11px/1 var(--font-ui); font-style: normal; flex: none; vertical-align: -4px; } | |
| 243 | +.day .mc { background: radial-gradient(circle at 40% 30%, #8a5a2c, #4a2c12); } | |
| 244 | + | |
| 245 | +.banner { position: absolute; left: -14px; right: -14px; top: 30%; z-index: 4; display: flex; align-items: center; justify-content: center; gap: 16px; height: 96px; | |
| 246 | + color: #fff; font: 700 32px var(--font-judge); letter-spacing: .12em; pointer-events: none; text-shadow: 0 2px 10px rgba(0, 0, 0, .6); opacity: 0; | |
| 247 | + background: linear-gradient(90deg, transparent, rgba(4, 8, 26, .78) 16%, rgba(4, 8, 26, .78) 84%, transparent); | |
| 248 | + animation: band calc(1.6s / var(--spd)) ease forwards; } | |
| 249 | +.banner.d { background: linear-gradient(90deg, transparent, rgba(120, 70, 10, .7) 16%, rgba(120, 70, 10, .7) 84%, transparent); } | |
| 250 | +.banner img { width: 70px; height: 70px; animation: risebody calc(1.2s / var(--spd)) var(--ease); } | |
| 251 | +@keyframes band { 0% { opacity: 0; transform: scaleY(.4); } 15%, 75% { opacity: 1; transform: none; } 100% { opacity: 0; } } | |
| 252 | +@keyframes risebody { from { transform: translateY(40px); opacity: 0; } } | |
| 253 | +#arrows { position: absolute; inset: 0; z-index: 5; width: 100%; height: 100%; pointer-events: none; overflow: visible; } | |
| 254 | +#arrows .a { fill: none; stroke-width: 3; stroke-linecap: round; stroke-dasharray: 1; stroke-dashoffset: 1; animation: draw calc(.5s / var(--spd)) var(--ease) forwards; | |
| 255 | + filter: drop-shadow(0 0 4px rgba(0, 0, 0, .5)); } | |
| 256 | +@keyframes draw { to { stroke-dashoffset: 0; } } | |
| 257 | + | |
| 258 | +/* ---- the log --------------------------------------------------------------------------------------------------- */ | |
| 259 | +#log { grid-area: g; position: relative; z-index: 2; min-height: 0; overflow-y: auto; padding: 10px 12px 24px; font-size: 13px; line-height: 1.55; | |
| 260 | + background: rgba(0, 0, 0, .14); scrollbar-width: thin; } | |
| 261 | +.day #log { background: rgba(120, 80, 20, .04); } | |
| 262 | +#log h4 { margin: 0 0 6px; color: var(--muted); font-size: 12px; font-weight: 600; letter-spacing: .2em; } | |
| 263 | +.lg { margin: 3px 0; padding: 3px 6px; border-radius: 8px; cursor: pointer; } | |
| 264 | +.lg:hover { background: var(--chip); } | |
| 265 | +.lg.now { background: rgba(245, 194, 66, .16); } | |
| 266 | +.lg-div { display: flex; align-items: center; gap: 8px; margin: 12px 0 4px; color: var(--muted); font: 700 12px var(--font-judge); letter-spacing: .1em; cursor: pointer; } | |
| 267 | +.lg-div::before, .lg-div::after { content: ''; flex: 1; height: 1px; background: var(--line); } | |
| 268 | +.lg-j { text-align: center; color: var(--ink); font-family: var(--font-judge); font-weight: 700; } | |
| 269 | +.lg-say { display: flex; gap: 7px; align-items: flex-start; } | |
| 270 | +.lg-say .mc { margin-top: 1px; } | |
| 271 | +.lg-say .t { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; overflow-wrap: anywhere; } | |
| 272 | +.lg-say.open .t { display: block; } | |
| 273 | +.lg-say b { font-weight: 600; } | |
| 274 | +.lg-why { margin-top: 2px; color: var(--muted); font-size: 12px; font-style: italic; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } | |
| 275 | +.lg-say.open .lg-why { display: block; } | |
| 276 | +.lg-v, .lg-g { display: flex; align-items: center; flex-wrap: wrap; gap: 4px; color: var(--muted); font-size: 12px; } | |
| 277 | +.lg-g svg { width: 15px; height: 15px; color: var(--c); } | |
| 278 | +.lg-g .r { color: var(--c); font-weight: 700; } | |
| 279 | +.lg.hide { display: none; } | |
| 280 | + | |
| 281 | +/* ---- footer: replay controls or the seat's action bar ------------------------------------------------------------ */ | |
| 282 | +footer { position: relative; z-index: 6; display: flex; align-items: center; gap: 10px; padding: 0 16px; border-top: 1px solid var(--line); | |
| 283 | + background: linear-gradient(0deg, rgba(0, 0, 0, .3), rgba(0, 0, 0, .12)); } | |
| 284 | +.day footer { background: linear-gradient(0deg, rgba(120, 80, 20, .1), rgba(120, 80, 20, .03)); } | |
| 285 | +.ctl { display: flex; align-items: center; gap: 4px; } | |
| 286 | +.ctl button { display: grid; place-items: center; width: 36px; height: 36px; padding: 0; border: 0; border-radius: 50%; background: transparent; cursor: pointer; } | |
| 287 | +.ctl button:hover { background: var(--chip); } | |
| 288 | +.ctl button svg { width: 18px; height: 18px; } | |
| 289 | +.ctl button.play { width: 42px; height: 42px; background: var(--accent); color: #2a2119; } | |
| 290 | +.spd { height: 28px; padding: 0 10px; border: 1px solid var(--line); border-radius: 14px; background: transparent; cursor: pointer; font-size: 12px; font-variant-numeric: tabular-nums; } | |
| 291 | +.tl { flex: 1; display: flex; gap: 3px; height: 34px; min-width: 0; cursor: pointer; touch-action: none; user-select: none; } | |
| 292 | +.seg { position: relative; flex: var(--w) 1 0; min-width: 10px; display: grid; place-items: center; overflow: hidden; border-radius: 7px; font-size: 11px; color: var(--muted); } | |
| 293 | +.seg.n { background: rgba(70, 90, 170, .32); } .seg.d { background: rgba(232, 168, 60, .3); } | |
| 294 | +.seg i { position: absolute; left: 0; top: 0; bottom: 0; width: 0; background: rgba(245, 194, 66, .45); } | |
| 295 | +.seg.past i { width: 100%; background: rgba(245, 194, 66, .22); } | |
| 296 | +.seg span { position: relative; white-space: nowrap; } | |
| 297 | +.seg.cur span { color: var(--ink); font-weight: 700; } | |
| 298 | +.act { flex: 1; display: flex; align-items: center; gap: 8px; min-width: 0; } | |
| 299 | +.act .msg { flex: 1; min-width: 0; color: var(--ink); font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } | |
| 300 | +.act textarea { flex: 1; min-width: 0; height: 44px; max-height: 88px; padding: 8px 12px; border: 1px solid var(--line); border-radius: 12px; resize: none; | |
| 301 | + background: var(--chip); color: var(--ink); font: 14px/1.4 var(--font-ui); outline: none; } | |
| 302 | +.act textarea:focus { border-color: var(--accent); } | |
| 303 | +.btn { height: 36px; padding: 0 18px; border: 0; border-radius: 18px; background: var(--accent); color: #2a2119; font-weight: 700; cursor: pointer; white-space: nowrap; } | |
| 304 | +.btn.ghost { background: transparent; border: 1px solid var(--line); color: var(--ink); } | |
| 305 | +.btn.red { background: var(--red); color: #fff; } | |
| 306 | +.clock { position: relative; width: 34px; height: 34px; flex: none; } | |
| 307 | +.clock svg { width: 100%; height: 100%; transform: rotate(-90deg); } | |
| 308 | +.clock circle { fill: none; stroke-width: 3; } | |
| 309 | +.clock .bg { stroke: var(--line); } .clock .fg { stroke: var(--gold); stroke-linecap: round; transition: stroke-dashoffset .25s linear; } | |
| 310 | +.clock span { position: absolute; inset: 0; display: grid; place-items: center; font-size: 11px; font-weight: 700; font-variant-numeric: tabular-nums; } | |
| 311 | + | |
| 312 | +/* ---- overlays: role card, the end, credits ----------------------------------------------------------------------- */ | |
| 313 | +#over { position: fixed; inset: 0; z-index: 20; display: none; place-items: center; padding: 16px; background: rgba(5, 8, 22, .88); -webkit-backdrop-filter: blur(3px); backdrop-filter: blur(3px); } | |
| 314 | +#over.on { display: grid; animation: fade .3s; } | |
| 315 | +@keyframes fade { from { opacity: 0; } } | |
| 316 | +.card { position: relative; width: min(360px, 100%); max-height: 100%; overflow-y: auto; padding: 22px 22px 18px; border: 2px solid var(--c); border-radius: 20px; text-align: center; color: #f1ecff; | |
| 317 | + background: radial-gradient(circle at 50% 0%, rgba(255, 255, 255, .12), transparent 60%), linear-gradient(180deg, #1e2650, #10152e); | |
| 318 | + box-shadow: 0 0 0 4px rgba(0, 0, 0, .3), 0 0 50px color-mix(in srgb, var(--c) 45%, transparent); animation: rise .5s var(--ease); } | |
| 319 | +.card small { color: #b8bddb; letter-spacing: .3em; font-size: 12px; } | |
| 320 | +.card h2 { margin: 2px 0 8px; font: 700 34px var(--font-judge); color: var(--c); letter-spacing: .1em; filter: brightness(1.25); } | |
| 321 | +.card .art { width: 150px; height: 150px; margin: 4px auto 8px; border-radius: 50%; background: radial-gradient(circle, color-mix(in srgb, var(--c) 45%, transparent), transparent 70%); } | |
| 322 | +.card .art img { width: 150px; height: 150px; } | |
| 323 | +.card dl { margin: 0 0 14px; text-align: left; font-size: 14px; } | |
| 324 | +.card dt { margin-top: 8px; color: var(--c); font-weight: 700; filter: brightness(1.3); } | |
| 325 | +.card dd { margin: 2px 0 0; color: #e3e1f2; } | |
| 326 | +.card.about { --c: #c9a45c; text-align: left; font-size: 13px; line-height: 1.6; } | |
| 327 | +.card.about h2 { font-size: 20px; text-align: center; } | |
| 328 | +.card.about p { margin: 6px 0; color: #d9dcf0; } | |
| 329 | +.end { width: min(760px, 100%); max-height: 100%; overflow-y: auto; text-align: center; color: #fff; } | |
| 330 | +.end .hero { position: relative; width: 170px; height: 170px; margin: 0 auto; display: grid; place-items: center; } | |
| 331 | +.end .rays { position: absolute; inset: -60px; border-radius: 50%; animation: spin 24s linear infinite; | |
| 332 | + background: repeating-conic-gradient(rgba(255, 214, 120, .30) 0 7deg, transparent 7deg 20deg); | |
| 333 | + -webkit-mask: radial-gradient(circle, #000 25%, transparent 68%); mask: radial-gradient(circle, #000 25%, transparent 68%); } | |
| 334 | +.end.Werewolves .rays { background: repeating-conic-gradient(rgba(255, 90, 70, .32) 0 7deg, transparent 7deg 20deg); } | |
| 335 | +@keyframes spin { to { transform: rotate(360deg); } } | |
| 336 | +.end .hero img { position: relative; width: 150px; height: 150px; filter: drop-shadow(0 8px 20px rgba(0, 0, 0, .5)); animation: pop .6s var(--ease); } | |
| 337 | +.end h1 { margin: 6px 0 2px; font: 700 46px var(--font-judge); letter-spacing: .12em; color: #ffd768; text-shadow: 0 0 24px rgba(255, 200, 80, .6), 0 3px 0 rgba(0, 0, 0, .4); | |
| 338 | + animation: big .5s var(--ease); } | |
| 339 | +.end.Werewolves h1 { color: #ff6a5a; text-shadow: 0 0 24px rgba(255, 80, 60, .6), 0 3px 0 rgba(0, 0, 0, .4); } | |
| 340 | +@keyframes big { from { transform: scale(1.6); opacity: 0; } } | |
| 341 | +.end .rs { margin: 0 0 4px; color: #cfd3ea; font-size: 14px; } | |
| 342 | +.end .you { margin: 2px 0; font: 700 22px var(--font-judge); color: #9ff0b0; } | |
| 343 | +.end .you.lost { color: #ff9a8a; } | |
| 344 | +.end .cards { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 8px; margin: 16px 0 14px; } | |
| 345 | +.ec { position: relative; padding: 10px 4px 8px; border: 1px solid rgba(255, 255, 255, .14); border-radius: 12px; background: rgba(255, 255, 255, .06); } | |
| 346 | +.ec.lose { opacity: .5; filter: grayscale(.5); } | |
| 347 | +.ec.win { border-color: rgba(255, 215, 104, .6); box-shadow: 0 0 16px rgba(255, 215, 104, .25); } | |
| 348 | +.ec .face { width: 48px; height: 48px; margin: 0 auto; border-width: 2px; } | |
| 349 | +.ec .rimg { position: absolute; top: 4px; right: 4px; width: 24px; height: 24px; } | |
| 350 | +.ec .n { margin-top: 2px; font: 700 15px var(--font-judge); } | |
| 351 | +.ec b { display: block; overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; } | |
| 352 | +.ec .tg { display: inline-block; margin: 3px 0 2px; padding: 0 6px; border-radius: 8px; background: var(--c); font-size: 11px; font-weight: 700; } | |
| 353 | +.ec small { display: block; color: #b8bddb; font-size: 11px; } | |
| 354 | +.ec.me { outline: 2px solid #3fbf5a; } | |
| 355 | +.end .btns { display: flex; justify-content: center; gap: 10px; } | |
| 356 | +.end .btn.ghost { color: #fff; border-color: rgba(255, 255, 255, .3); } | |
| 357 | +.oldnote { margin: auto; padding: 24px; color: var(--muted); text-align: center; } | |
| 358 | + | |
| 359 | +/* ---- smaller frames ------------------------------------------------------------------------------------------- */ | |
| 360 | +@media (max-width: 900px) { | |
| 361 | + :root { --side: 100px; --coin: 52px; } | |
| 362 | + #table { grid-template-columns: var(--side) minmax(0, 1fr) var(--side); grid-template-areas: "l s r"; } | |
| 363 | + #log { grid-area: s; display: none; z-index: 4; background: var(--stage); border-left: 1px solid var(--line); border-right: 1px solid var(--line); padding-top: 38px; } | |
| 364 | + #app.logtab #log { display: block; background: var(--stage); } | |
| 365 | + .tabs { display: flex; } | |
| 366 | + .num { font-size: 16px; min-width: 24px; height: 24px; margin-left: -12px; line-height: 20px; bottom: -10px; } | |
| 367 | + .seat .name { margin-top: 12px; } | |
| 368 | + .portrait { width: 96px; height: 96px; } .pnum.L { left: 86px; } .pnum.R { right: 86px; } | |
| 369 | + .pnum { min-width: 32px; height: 32px; font-size: 20px; line-height: 28px; } | |
| 370 | + .brand span, .count .w, .count .g, .count .sep { display: none; } | |
| 371 | + .end .cards { gap: 6px; } .ec .face { width: 40px; height: 40px; } .ec .rimg { width: 20px; height: 20px; } | |
| 372 | +} | |
| 373 | +@media (max-height: 600px) and (min-width: 641px) { | |
| 374 | + #stage { padding-top: 30px; } | |
| 375 | + .bubble .text { max-height: 24vh; } | |
| 376 | + .judge { padding: 10px 18px; } | |
| 377 | + .portrait, .pnum { display: none; } | |
| 378 | + .end .hero { width: 96px; height: 96px; } .end .hero img { width: 88px; height: 88px; } .end h1 { font-size: 32px; } .end .cards { margin: 10px 0; } | |
| 379 | + .card .art, .card .art img { width: 110px; height: 110px; } | |
| 380 | +} | |
| 381 | +@media (max-width: 640px) { | |
| 382 | + :root { --side: 64px; --coin: 44px; } | |
| 383 | + #app { grid-template-rows: 46px minmax(0, 1fr) 58px; } | |
| 384 | + header { padding: 0 8px; gap: 6px; } | |
| 385 | + .brand b { font-size: 16px; } | |
| 386 | + .badge { width: 58px; height: 58px; margin-left: -29px; top: 2px; } | |
| 387 | + .badge b { font-size: 24px; } .badge span { font-size: 11px; padding-top: 6px; } | |
| 388 | + .badge img { width: 24px; height: 24px; top: -6px; right: -8px; } | |
| 389 | + .ribbon { width: 150px; margin-left: -75px; } | |
| 390 | + .count { display: none; } | |
| 391 | + .switch { padding: 0 6px; } .switch .lbl { display: none; } | |
| 392 | + #table { grid-template-columns: var(--side) minmax(0, 1fr) var(--side); grid-template-rows: auto minmax(0, 1fr); grid-template-areas: "l s r" "l g r"; } | |
| 393 | + .col { padding: 18px 0 6px; } | |
| 394 | + #stage { padding: 20px 6px 8px; border-bottom: 1px solid var(--line); } | |
| 395 | + #log { display: block; grid-area: g; padding: 6px 8px 16px; border-left: 1px solid var(--line); border-right: 1px solid var(--line); } | |
| 396 | + .tabs { display: none; } | |
| 397 | + .village { height: 46%; } | |
| 398 | + .status { font-size: 13px; padding: 3px 10px; } | |
| 399 | + .order { margin-top: 5px; min-height: 20px; } .order i { width: 18px; height: 18px; font-size: 10px; } .order small { display: none; } | |
| 400 | + .scene { flex: none; min-height: 150px; } | |
| 401 | + .judge { min-width: 0; width: 100%; padding: 10px 12px; } .judge h3 { font-size: 18px; } | |
| 402 | + .bubble { padding: 10px 12px; } .bubble .text { font-size: 14px; max-height: 22vh; } | |
| 403 | + .board { padding: 8px 10px; } .br .tg { width: 42%; font-size: 12px; } .board .sum { display: none; } | |
| 404 | + .portrait, .pnum { display: none; } | |
| 405 | + .seat { padding: 0 2px; } | |
| 406 | + .seat .name { font-size: 11px; margin-top: 11px; } | |
| 407 | + .seat .sub { font-size: 10px; } | |
| 408 | + .num { font-size: 14px; min-width: 20px; height: 20px; margin-left: -10px; line-height: 17px; bottom: -8px; border-width: 1.5px; } | |
| 409 | + .tag { right: -8px; font-size: 10px; height: 17px; line-height: 17px; padding: 0 5px; } | |
| 410 | + .kind { width: 17px; height: 17px; } .kind img { width: 12px; height: 12px; } | |
| 411 | + .marks { right: -10px; } .mk { height: 17px; font-size: 10px; padding: 0 4px; } | |
| 412 | + .stamp { font-size: 12px; left: -4px; right: -4px; } | |
| 413 | + .config { width: calc(100% - 6px); padding: 5px 2px; } .config div { grid-template-columns: 1fr; } .config img { width: 18px; height: 18px; } | |
| 414 | + .banner { font-size: 22px; height: 70px; top: 20%; } .banner img { width: 46px; height: 46px; } | |
| 415 | + footer { padding: 0 8px; gap: 6px; } | |
| 416 | + .ctl .prev, .ctl .next { display: none; } | |
| 417 | + .end h1 { font-size: 32px; } .end .hero { width: 120px; height: 120px; } .end .hero img { width: 110px; height: 110px; } | |
| 418 | + .end .cards { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; } | |
| 419 | + .act textarea { height: 40px; } | |
| 420 | + .btn { padding: 0 12px; } | |
| 421 | +} | |
| 422 | +@media (prefers-reduced-motion: reduce) { | |
| 423 | + *, *::before, *::after { animation-duration: .01ms ; animation-iteration-count: 1 ; } | |
| 424 | + .banner { display: none; } | |
| 425 | +} | |
| 426 | +</style> | |
| 427 | +</head> | |
| 428 | +<body> | |
| 429 | +<svg width="0" height="0" style="position:absolute" aria-hidden="true"><defs> | |
| 430 | +<symbol id="i-claw" viewBox="0 0 512 512"><path d="M182.338 22.55c152.455 20.22 254.7 176.264 228.928 258.163-34.76-89.215-143.516-189.588-300.207-196.15C255.855 103.772 355.365 245.5 342.92 329.856c-9.85.97-20.79.927-32.852-.24-41.436-84.32-146.004-172.382-292.437-178.513 142.546 18.907 241.2 156.557 232.36 241.316-15.664-.633-33.447-3.34-53.48-8.46 18.37 8.188 35.514 14.817 51.502 20.067-10.614 44.085-55.285 69.374-144.93 46.47C250 515.968 319.647 483.338 328.736 419.743c56.24 1.254 85.915-24.86 92.856-63.008 164.112-19.88 36.806-322.627-239.254-334.185zm132.808 318.083c7.97 2.704 15.666 5.077 23.07 7.11-3.122 7.893-7.546 14.993-13.35 21.095-2.393-9.222-5.635-18.663-9.72-28.205z"/></symbol> | |
| 431 | +<symbol id="i-shield" viewBox="0 0 512 512"><path d="M48.906 19.656v10.782c0 103.173 10.53 206.07 41.313 289.53 30.78 83.463 82.763 148.094 164.53 170.563l2.188.626 2.25-.5c89.686-19.12 142.322-84.028 171.187-168.344 28.865-84.315 35.406-188.656 35.406-291.875v-10.78l-10.655 1.53C323.26 39.954 191.452 40 59.595 21.188l-10.69-1.53zM67.75 41.03c63.242 8.536 126.495 12.792 189.75 12.782v184.532h174.78c-4.905 27.572-11.31 53.747-19.592 77.937-27.348 79.884-73.757 137.33-155.157 155.564-.008-.003-.02.003-.03 0v-233.5H86.53c-12.87-60.99-18.277-128.81-18.78-197.313z"/></symbol> | |
| 432 | +<symbol id="i-eye" viewBox="0 0 512 512"><path d="M18 18v15.797L179.434 215.41l9.484-16.424L28.04 18H18zm77.705 0l96.95 174.512 10.493-18.176L116.295 18h-20.59zm91.154 0c4.326 19.018 15.27 67.152 28.36 125.326.557 2.482 1.074 4.807 1.63 7.278l13.275-22.993C219.105 78.687 209.9 38.14 205.32 18h-18.46zM247 18v80.383l9-15.588 7.795 13.5L265 98.383V18h-18zm59.78 0l-24.51 110.297 13.314 23.058L325.22 18h-18.44zm88.925 0l-86.853 156.336 10.494 18.176L416.296 18h-20.59zm88.254 0L323.083 198.986l9.482 16.424L494 33.797V18h-10.04zM18 98.25v22.5l150.79 113.094 9.067-15.7L18 98.25zm476 0L334.145 218.143l9.064 15.7L494 120.75v-22.5zm-238 20.547l-74.656 129.308c20.297-9.102 46.254-14.35 74.656-14.35 28.402 0 54.36 5.248 74.656 14.35L256 118.797zm-238 70.34v19.226l136.05 51.018 9.122-15.804L18 189.136zm476 0l-145.172 54.44 9.123 15.804L494 208.364v-19.226zM18 249.18v18.14l122.615 15.326 9.77-16.92L18 249.18zm476 0l-132.383 16.547 9.768 16.92L494 267.32v-18.14zm-238 2.576c-14.737 0-26.49 11.75-26.49 26.488 0 8.536 3.948 16.065 10.13 20.895a28.09 28.09 0 0 1-1.384-8.603 28.09 28.09 0 0 1 28.09-28.09 28.09 28.09 0 0 1 13.02 3.223c-4.446-8.315-13.194-13.914-23.366-13.914zm-38.18 3.736c-12.656 2.568-23.93 6.328-33.082 10.904-17.63 8.815-26.21 19.758-26.21 29.594 0 9.837 8.58 20.777 26.21 29.592 17.63 8.815 43.077 14.643 71.262 14.643 28.185 0 53.632-5.828 71.262-14.643 17.63-8.815 26.21-19.755 26.21-29.592 0-9.836-8.58-20.78-26.21-29.594-9.153-4.576-20.426-8.336-33.082-10.904 4 6.67 6.31 14.453 6.31 22.752 0 24.465-20.025 44.49-44.49 44.49-24.465 0-44.49-20.025-44.49-44.49 0-8.3 2.31-16.083 6.31-22.752zm-83.867 38.694L18 308.68v18.14l104.666-13.082 11.287-19.552zm244.094 0l11.287 19.552L494 326.82v-18.14l-115.953-14.494zm-233.758 18.1l-57.112 98.92h337.644l-57.11-98.92c-5.763 12.078-17.677 22.035-32.4 29.398-20.907 10.452-48.695 16.54-79.312 16.54-30.617 0-58.405-6.088-79.31-16.54-14.725-7.363-26.64-17.32-32.4-29.4zm255.84 20.15l14.167 24.537L494 386.863v-19.226l-93.87-35.2zm-288.26.002L18 367.637v19.225l79.703-29.888 14.166-24.538zm-31.645 54.808L18 426.136v21.227l43.05-26.906 19.175-33.21zm351.55 0l19.174 33.21L494 447.364v-21.226l-62.225-38.89zm-350.82 41.96L18 484.29V494h16.238l74.05-64.795H80.956zm42.158 0L67.573 494h23.71l55.537-64.795h-23.707zm41.832 0L127.92 494h20.732l37.026-64.795h-20.733zm42.752 0c-8.665 28.96-15.66 51.885-19.61 64.794h18.82c4.678-15.314 11.433-37.537 19.573-64.795h-18.783zm39.303 0V494h18v-64.795h-18zm39.984 0L305.496 494h18.723l-18.515-64.795h-18.72zm39.338 0L363.348 494h20.732l-37.025-64.795h-20.733zm38.856 0L420.718 494h23.708l-55.54-64.795H365.18zm38.533 0L477.763 494H494v-9.71l-62.955-55.085H403.71z"/></symbol> | |
| 433 | +<symbol id="i-gavel" viewBox="0 0 512 512"><path d="M129.75 24.47L21.625 211.655l55.78 32.188L185.532 56.656 129.75 24.47zm55.97 69.25l-75.626 130.874L326.47 349.47l75.592-130.876L185.72 93.72zm83.468.686l-11.22 19.438 84.97 49.03 11.25-19.468-85-49zM434.25 200.22L326.156 387.405l55.78 32.188 108.095-187.188-55.78-32.187zm-270.53 76.905l-11.282 19.53 84.968 49 11.25-19.5-84.937-49.03zm-3.095 45.844L61.312 494.81h67.157l82.28-142.968-50.125-28.875z"/></symbol> | |
| 434 | +<symbol id="i-play" viewBox="0 0 24 24"><path d="M7 4.5v15l12.5-7.5z"/></symbol> | |
| 435 | +<symbol id="i-pause" viewBox="0 0 24 24"><path d="M6 4h4.5v16H6zM13.5 4H18v16h-4.5z"/></symbol> | |
| 436 | +<symbol id="i-prev" viewBox="0 0 24 24"><path d="M5 4h2.5v16H5zM20 4.5v15L8.5 12z"/></symbol> | |
| 437 | +<symbol id="i-next" viewBox="0 0 24 24"><path d="M16.5 4H19v16h-2.5zM4 4.5v15L15.5 12z"/></symbol> | |
| 438 | +<symbol id="i-look" viewBox="0 0 24 24"><path d="M12 5C6.5 5 2.7 9.4 1.5 12c1.2 2.6 5 7 10.5 7s9.3-4.4 10.5-7C21.3 9.4 17.5 5 12 5zm0 11.5A4.5 4.5 0 1 1 12 7.5a4.5 4.5 0 0 1 0 9zm0-2.5a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"/></symbol> | |
| 439 | +<symbol id="i-sound" viewBox="0 0 24 24"><path d="M3 9h4l5-4v14l-5-4H3zM15.5 8.5a5 5 0 0 1 0 7l-1.4-1.4a3 3 0 0 0 0-4.2zM18.4 5.6a9 9 0 0 1 0 12.8L17 17a7 7 0 0 0 0-9.9z"/></symbol> | |
| 440 | +<symbol id="i-mute" viewBox="0 0 24 24"><path d="M3 9h4l5-4v14l-5-4H3zM15 9.4l1.4-1.4 2.6 2.6 2.6-2.6L23 9.4 20.4 12l2.6 2.6-1.4 1.4-2.6-2.6-2.6 2.6-1.4-1.4 2.6-2.6z"/></symbol> | |
| 441 | +</defs></svg> | |
| 442 | +<div id="app" class="night"> | |
| 443 | + <header> | |
| 444 | + <div class="brand"><b>狼人杀</b><span id="mode">· 回放 · 7人局</span></div> | |
| 445 | + <div class="ribbon"></div> | |
| 446 | + <div class="badge" id="badge"><img alt="" src="assets/moon.png"><span>第</span><b>1</b><span>夜</span></div> | |
| 447 | + <div class="tools"> | |
| 448 | + <span class="count" id="count"></span> | |
| 449 | + <button class="switch" id="god" aria-pressed="true"><svg class="ic"><use href="#i-look"/></svg><span class="lbl">上帝视角</span><i></i></button> | |
| 450 | + <button class="iconbtn" id="snd" title="声音"><svg class="ic"><use href="#i-mute"/></svg></button> | |
| 451 | + <button class="iconbtn" id="about" title="关于"><b>i</b></button> | |
| 452 | + </div> | |
| 453 | + </header> | |
| 454 | + <main id="table"> | |
| 455 | + <section class="col l" id="colL"></section> | |
| 456 | + <section id="stage"> | |
| 457 | + <div class="tabs" id="tabs"><button aria-pressed="true" data-t="stage">舞台</button><button aria-pressed="false" data-t="log">记录</button></div> | |
| 458 | + <div class="status" id="status">等待开局……</div> | |
| 459 | + <div class="order" id="order"></div> | |
| 460 | + <div class="scene" id="scene"></div> | |
| 461 | + <svg class="village" viewBox="0 0 1000 200" preserveAspectRatio="xMidYMax slice" aria-hidden="true"> | |
| 462 | + <path class="v1" d="M0 120C90 80 170 104 260 86S420 40 520 78 700 52 800 84 940 96 1000 88V200H0Z"/> | |
| 463 | + <path class="v2" d="M0 200V164H34V150L56 132 78 150V164H118V156L148 134 178 156V164H222V138H238V120L254 100 270 120V138H286V164H330L352 150 374 164H424V148L452 126 480 148V164H556V158L596 136 636 158V164H694V144L720 124 746 144V164H796V154L826 136 856 154V164H898L922 150 946 164H1000V200ZM190 164 200 136 210 164ZM508 164 520 132 532 164ZM868 164 878 140 888 164Z"/> | |
| 464 | + <g class="win"><rect x="50" y="152" width="9" height="9"/><rect x="142" y="144" width="9" height="9"/><rect x="249" y="124" width="9" height="10"/><rect x="446" y="134" width="9" height="9"/><rect x="590" y="146" width="10" height="9"/><rect x="714" y="132" width="9" height="9"/><rect x="820" y="144" width="9" height="9"/></g> | |
| 465 | + </svg> | |
| 466 | + </section> | |
| 467 | + <section class="col r" id="colR"></section> | |
| 468 | + <aside id="log"></aside> | |
| 469 | + <svg id="arrows"></svg> | |
| 470 | + </main> | |
| 471 | + <footer id="foot"></footer> | |
| 472 | + <div id="over"></div> | |
| 473 | +</div> | |
| 474 | +<script src="bridge.js"></script> | |
| 475 | +<script> | |
| 476 | + | |
| 477 | +const live = new URLSearchParams(location.search).has('live') | |
| 478 | +const $ = s => document.querySelector(s) | |
| 479 | +const app = $('#app') | |
| 480 | +const ROLE = { | |
| 481 | + Werewolf: { zh: '狼人', img: 'werewolf', team: 'Werewolves', skill: '每晚和狼队友商量,选一名玩家出局。', goal: '白天装作好人混淆视听,夜里刀人;狼人数量追平好人即胜利。' }, | |
| 482 | + Seer: { zh: '预言家', img: 'seer', team: 'Villagers', skill: '每晚查验一名玩家,得知他的真实身份。', goal: '找出狼人,带领好人把他们放逐。' }, | |
| 483 | + Doctor: { zh: '医生', img: 'doctor', team: 'Villagers', skill: '每晚守护一名玩家(不能守自己),他当晚不会被狼人杀死。', goal: '保护好人,放逐所有狼人。' }, | |
| 484 | + Villager: { zh: '平民', img: 'villager', team: 'Villagers', skill: '没有特殊能力,白天发言、投票。', goal: '听发言找出狼人,放逐所有狼人。' }, | |
| 485 | +} | |
| 486 | +const TEAM = { Werewolves: '狼人阵营', Villagers: '好人阵营' } | |
| 487 | +const AV = ['ada', 'eli', 'finn', 'iris', 'ivy', 'jade', 'kai', 'leo', 'luna', 'max', 'mia', 'nora', 'riley', 'sam', 'theo', 'zoe'] | |
| 488 | +const TINT = ['#f4e1bd', '#dbe7f6', '#e3efd6', '#f6dcdc', '#e8def5', '#d9efec', '#f5e9cc'] | |
| 489 | +const CIRCLED = '①②③④⑤⑥⑦' | |
| 490 | +const SECRET = new Set(['heal', 'inspect', 'wolf_vote', 'wolf_pick', 'saved']) | |
| 491 | +const STAGE = new Set(['phase', 'heal', 'inspect', 'wolf_vote', 'wolf_pick', 'saved', 'dawn', 'out', 'talk', 'turn', 'speech', 'vote_start', 'vote', 'tally', 'over']) | |
| 492 | +const VERB = { vote: '放逐', kill: '刀', heal: '守护', inspect: '查验' } | |
| 493 | +const ASKS = { vote: '放逐投票:点击头像,选择要放逐的人', kill: '狼人请选择今晚的目标:点击头像', heal: '选择今晚要守护的人:点击头像', inspect: '选择要查验的人:点击头像' } | |
| 494 | +const ACT_COLOR = { heal: 'doctor', saved: 'doctor', inspect: 'seer', vote: 'red' } | |
| 495 | +const esc = s => String(s ?? '').replace(/[&<>"]/g, c => ({ '&': '&', '<': '<', '>': '>', '"': '"' })[c]) | |
| 496 | +const ic = (k, c) => `<svg class="ic"${c ? ` style="--c:var(--${c})"` : ''}><use href="#i-${k}"/></svg>` | |
| 497 | +const mc = (s, cls = '') => s == null ? '' : `<i class="mc ${cls}">${+s + 1}</i>` | |
| 498 | +const no = s => `<em>【${+s + 1}号】</em>` | |
| 499 | +const zh = r => ROLE[r]?.zh || '未知' | |
| 500 | +const left = s => +s < 4 | |
| 501 | +function pref(k, d) { try { const v = localStorage.getItem('ww.' + k); return v == null ? d : v === '1' } catch { return d } } | |
| 502 | +function keep(k, v) { try { localStorage.setItem('ww.' + k, v ? '1' : '0') } catch {} } | |
| 503 | + | |
| 504 | +// ---- the game as drawn: the players, the events (in a room, a seat's own news carries _to) and what may be seen ------ | |
| 505 | +let P = [...Array(7)].map((_, i) => ({ name: `${i + 1}号`, kind: 'bot', role: null })) | |
| 506 | +let E = [], faces = [], counts = null | |
| 507 | +let you = [], A = null, pick = null, sent = null, ended = false, mine = null, carded = false, overShown = false | |
| 508 | +const seenN = new Set() | |
| 509 | +let god = live ? false : pref('god', true), snd = pref('sound', false), filter = null | |
| 510 | +const godOn = () => god && (!live || ended) | |
| 511 | +const seen = e => !SECRET.has(e.kind) || godOn() || (e._to != null && you.includes(String(e._to))) | |
| 512 | +const wolfMe = () => you.some(s => P[+s].role === 'Werewolf') | |
| 513 | + | |
| 514 | +function fold(n) { | |
| 515 | + const blank = () => [...Array(7)].map(() => ({})) | |
| 516 | + const S = { phase: null, day: 0, alive: Array(7).fill(true), fate: Array(7).fill(null), shown: Array(7).fill(null), marks: blank(), know: blank(), | |
| 517 | + picks: Array(7).fill(null), order: [], spoke: [], speaker: null, votes: null, tally: null, note: Array(7).fill(null), turn: null, over: null, saved: null } | |
| 518 | + for (let i = 0; i < n; i++) { | |
| 519 | + const e = E[i] | |
| 520 | + if (!seen(e)) continue | |
| 521 | + if (e.why && e.actor != null) S.note[e.actor] = e.why | |
| 522 | + switch (e.kind) { | |
| 523 | + case 'phase': | |
| 524 | + S.phase = e.phase; S.day = e.day; S.marks = blank(); S.turn = null; S.speaker = null | |
| 525 | + if (e.phase === 'night') { S.picks = Array(7).fill(null); S.votes = null; S.tally = null; S.order = []; S.spoke = []; S.saved = null } | |
| 526 | + break | |
| 527 | + case 'heal': S.marks[e.target].heal = 1; break | |
| 528 | + case 'inspect': S.marks[e.target].eye = e.role; if (you.includes(String(e.actor))) S.know[e.target].eye = e.role; break | |
| 529 | + case 'wolf_vote': S.picks[e.actor] = e.target; break | |
| 530 | + case 'wolf_pick': if (e.target != null) S.marks[e.target].kill = 1; break | |
| 531 | + case 'saved': S.saved = e.target; break | |
| 532 | + case 'out': S.alive[e.who] = false; S.fate[e.who] = e; S.shown[e.who] = e.role; break | |
| 533 | + case 'talk': S.order = e.order || []; S.spoke = []; break | |
| 534 | + case 'turn': S.turn = e; if (e.what === 'chat') S.speaker = e.seat; break | |
| 535 | + case 'speech': S.spoke.push(e.actor); S.speaker = e.actor; S.turn = null; break | |
| 536 | + case 'vote_start': S.votes = {}; S.speaker = null; S.tally = null; break | |
| 537 | + case 'vote': (S.votes ??= {})[e.actor] = e.target; S.turn = null; break | |
| 538 | + case 'tally': S.tally = e; break | |
| 539 | + case 'over': S.over = e; break | |
| 540 | + } | |
| 541 | + } | |
| 542 | + return S | |
| 543 | +} | |
| 544 | +const fate = f => f ? (f.cause === 'night' ? `夜${f.day + 1} 被刀` : `天${f.day} 放逐`) : '' | |
| 545 | +const phaseName = e => e.phase === 'night' ? `第${e.day + 1}夜` : `第${e.day}天` | |
| 546 | +const reasonZh = o => !o || !o.winner ? '对局中止' : o.winner === 'Villagers' ? '狼人全部出局' : '狼人数量追平了好人' | |
| 547 | + | |
| 548 | +// ---- seats ------------------------------------------------------------------------------------------------------ | |
| 549 | +function buildSeats() { | |
| 550 | + const used = new Set() | |
| 551 | + faces = P.map(p => { // a name keeps its face from game to game; two seats never share one | |
| 552 | + let h = [...String(p.name)].reduce((a, c) => (a * 31 + c.codePointAt(0)) >>> 0, 7) % AV.length | |
| 553 | + while (used.has(h)) h = (h + 1) % AV.length | |
| 554 | + used.add(h); return AV[h] | |
| 555 | + }) | |
| 556 | + const seat = s => `<div class="seat" data-s="${s}"><div class="coin" style="--tint:${TINT[s]}"><img class="face" alt="${s + 1}号" src="assets/avatars/${faces[s]}.svg"><span class="num">${s + 1}</span><span class="x"></span></div><div class="name"></div><div class="sub"></div></div>` | |
| 557 | + $('#colL').innerHTML = [0, 1, 2, 3].map(seat).join('') | |
| 558 | + $('#colR').innerHTML = [4, 5, 6].map(seat).join('') + '<div class="config" id="config"></div>' | |
| 559 | + drawConfig() | |
| 560 | +} | |
| 561 | +function drawConfig() { | |
| 562 | + const c = counts || { Werewolf: 2, Seer: 1, Doctor: 1, Villager: 3 } | |
| 563 | + $('#config').innerHTML = `<small>本局配置</small><div>${['Werewolf', 'Seer', 'Doctor', 'Villager'].map(r => `<span title="${zh(r)}"><img alt="${zh(r)}" src="assets/${ROLE[r].img}.png">×${c[r] ?? 0}</span>`).join('')}</div>` | |
| 564 | +} | |
| 565 | +function tagOf(S, s) { | |
| 566 | + if (S.shown[s]) return S.shown[s] | |
| 567 | + if (S.over || godOn() || you.includes(String(s))) return P[s].role | |
| 568 | + if (wolfMe() && P[s].role === 'Werewolf') return 'Werewolf' | |
| 569 | + return null | |
| 570 | +} | |
| 571 | +function drawSeats(S, e) { | |
| 572 | + const night = S.phase === 'night', got = {} | |
| 573 | + if (S.votes) for (const t of Object.values(S.votes)) if (t != null) got[t] = (got[t] || 0) + 1 | |
| 574 | + const can = A && A.obs.request !== 'chat' ? new Set(A.legal.map(a => a.target).filter(t => t != null).map(String)) : null | |
| 575 | + for (const el of document.querySelectorAll('.seat')) { | |
| 576 | + const s = +el.dataset.s, p = P[s], tag = tagOf(S, s), m = S.marks[s], k = S.know[s], me = you.includes(String(s)) | |
| 577 | + const talking = S.speaker === s && S.phase === 'day' && e && (e.kind === 'speech' || e.kind === 'turn') | |
| 578 | + const hit = e && SECRET.has(e.kind) && seen(e) && e.target === s ? `--c:var(--${ACT_COLOR[e.kind] || 'wolf'});` : '' | |
| 579 | + el.className = 'seat' + (S.alive[s] ? '' : ' dead') + (talking ? ' talk' : '') + (hit ? ' hit' : '') + | |
| 580 | + (can ? (can.has(String(s)) ? ' can' : ' cannot') : '') + (pick === s ? ' picked' : '') + (filter === s ? ' filtered' : '') | |
| 581 | + el.style.cssText = hit + (pick === s ? `--act:var(--${{ heal: 'doctor', inspect: 'seer' }[A?.obs.request] || 'wolf'})` : '') | |
| 582 | + let x = '' | |
| 583 | + if (tag) x += `<span class="tag ${tag}">${zh(tag)}</span>` | |
| 584 | + x += me ? '<span class="kind me">你</span>' : `<span class="kind" title="${{ human: '真人', agent: 'agent', auto: '托管' }[p.kind] || 'bot'}"><img alt="" src="assets/${p.kind === 'human' ? 'person' : 'robot'}.png"></span>` | |
| 585 | + if (got[s]) x += `<span class="vcount">${got[s]}</span>` | |
| 586 | + else if (talking) x += '<img class="mic" alt="" src="assets/mic.png">' | |
| 587 | + const mk = [] | |
| 588 | + if (m.kill && S.alive[s]) mk.push(`<span class="mk kill">${ic('claw')}</span>`) | |
| 589 | + if (m.heal) mk.push(`<span class="mk heal">${ic('shield')}</span>`) | |
| 590 | + const eye = m.eye || k.eye | |
| 591 | + if (eye) mk.push(`<span class="mk eye">${ic('eye')}${eye === 'Werewolf' ? '狼' : '好人'}</span>`) | |
| 592 | + if (mk.length) x += `<span class="marks">${mk.join('')}</span>` | |
| 593 | + if (S.fate[s]?.cause === 'night') x += `<span class="claws">${ic('claw')}</span>` | |
| 594 | + if (!S.alive[s]) x += '<span class="stamp">出局</span>' | |
| 595 | + else if (night && !godOn() && !S.over && !(me && A)) x += '<img class="zzz" alt="" src="assets/zzz.png">' | |
| 596 | + if (pick === s) x += '<span class="ok">✓</span>' | |
| 597 | + const slot = el.querySelector('.x') | |
| 598 | + if (slot.dataset.h !== x) { slot.innerHTML = x; slot.dataset.h = x } | |
| 599 | + el.querySelector('.name').textContent = p.name | |
| 600 | + const sub = el.querySelector('.sub') | |
| 601 | + const pk = night && S.picks[s] != null && (godOn() || wolfMe()) ? `刀 → ${S.picks[s] + 1}号` : '' | |
| 602 | + const note = godOn() && S.note[s] && S.alive[s] ? S.note[s] : '' | |
| 603 | + sub.className = 'sub' + (S.fate[s] ? '' : pk ? ' pick' : note ? ' note' : '') | |
| 604 | + sub.textContent = S.fate[s] ? fate(S.fate[s]) : pk || note || ({ human: '真人', agent: 'agent', auto: '托管' }[p.kind] || '') | |
| 605 | + sub.title = note | |
| 606 | + } | |
| 607 | +} | |
| 608 | + | |
| 609 | +// ---- the stage --------------------------------------------------------------------------------------------------- | |
| 610 | +function judge(title, body = '', en = '', extra = '') { | |
| 611 | + return `<div class="judge"><div class="jl">${ic('gavel')}法官</div><h3>${title}</h3>${body}${extra}${en ? `<div class="en">${esc(String(en).split('\n')[0])}</div>` : ''}</div>` | |
| 612 | +} | |
| 613 | +const isCJK = ch => /[⺀-鿿-]/.test(ch) | |
| 614 | +const typeMs = t => Math.min(24000, Math.max(800, [...String(t)].reduce((ms, ch) => ms + (isCJK(ch) ? 25 : 16), 0))) // 40 字/s, 60 letters/s | |
| 615 | +function bubble(s, why, wait) { | |
| 616 | + const side = left(s) ? 'L' : 'R' | |
| 617 | + return `<div class="say ${side}"><div class="bubble"><div class="who">${mc(s)}<b>${esc(P[s].name)}</b><span class="lbl">发言中</span></div>` + | |
| 618 | + `<div class="text${wait ? ' wait' : ''}">${wait ? `正在组织语言<span class="dots"><i></i><i></i><i></i></span>` : ''}</div><div class="bar"><i></i></div></div>` + | |
| 619 | + (why ? `<div class="why" title="点开看全文"><img alt="想法" src="assets/thought.png"><span>${esc(why)}</span></div>` : '') + '</div>' + | |
| 620 | + `<img class="portrait ${side}" alt="" src="assets/avatars/${faces[s]}.svg" style="--tint:${TINT[s]}"><span class="pnum ${side}">${s + 1}</span>` | |
| 621 | +} | |
| 622 | +function board(S, e, fresh) { | |
| 623 | + const votes = S.votes || {}, by = {} | |
| 624 | + for (const [v, t] of Object.entries(votes)) (by[t ?? 'x'] ??= []).push(+v) | |
| 625 | + const rows = Object.entries(by).filter(([t]) => t !== 'x').sort((a, b) => b[1].length - a[1].length) | |
| 626 | + const T = e.kind === 'tally' ? e : null, newest = e.kind === 'vote' && fresh ? e.actor : null | |
| 627 | + const chips = vs => vs.map(v => mc(v, v === newest ? 'new' : '')).join('') | |
| 628 | + let h = `<div class="board${e.kind === 'vote' ? ' still' : ''}"><div class="bh"><img alt="" src="assets/ballot.png">放逐投票<small>依次投票 · 已投 ${Object.keys(votes).length} 人</small></div>` | |
| 629 | + for (const [t, vs] of rows) h += `<div class="br${T && +t === T.exiled ? ' top' : ''}"><span class="tg">${mc(t)}${esc(P[t].name)}</span><span class="ar">←</span><span class="vs">${chips(vs)}</span><b>${vs.length} 票</b></div>` | |
| 630 | + if (by.x) h += `<div class="br"><span class="tg">弃票</span><span class="ar">←</span><span class="vs">${chips(by.x)}</span><b></b></div>` | |
| 631 | + if (!rows.length && !by.x) h += `<div class="br"><span class="tg" style="color:var(--muted)">等待第一张票……</span></div>` | |
| 632 | + if (T) { | |
| 633 | + const top = rows.length ? rows[0][1].length : 0 | |
| 634 | + const res = T.exiled == null ? '无人被放逐' : T.tie ? `${T.tie.map(no).join('和')}平票,随机抽中${no(T.exiled)}` : `${no(T.exiled)}被放逐(${top}票)` | |
| 635 | + h += `<div class="res">${res}</div><div class="sum">${rows.map(([t, vs]) => `${vs.map(v => CIRCLED[v]).join('')} → ${CIRCLED[t]}`).join(' ')}</div>` | |
| 636 | + } | |
| 637 | + return h + '</div>' | |
| 638 | +} | |
| 639 | +function nightCard(e) { | |
| 640 | + const call = { heal: '医生请睁眼', inspect: '预言家请睁眼', wolf_vote: '狼人请睁眼', wolf_pick: '狼人请闭眼', saved: '医生请闭眼' }[e.kind] | |
| 641 | + if (!seen(e)) return judge(call, '<p class="god">上帝视角关着:天亮才知道结果</p>') | |
| 642 | + const line = (c, k, h) => `<div class="act" style="--c:var(--${c})">${ic(k)}${h}</div>` | |
| 643 | + const body = { | |
| 644 | + heal: () => line('doctor', 'shield', `${no(e.actor)}守护了${no(e.target)}`), | |
| 645 | + inspect: () => line('seer', 'eye', `${no(e.actor)}查验${no(e.target)}:<span class="role ${e.role}">${zh(e.role)}</span>`), | |
| 646 | + wolf_vote: () => line('wolf', 'claw', `${no(e.actor)}${e.target == null ? '没有选择' : `选择了${no(e.target)}`}`), | |
| 647 | + wolf_pick: () => line('wolf', 'claw', `狼队选择了${e.target == null ? '空刀' : no(e.target)}`) + (e.tie ? `<p class="god">${e.tie.map(no).join('、')}票数相同,随机定刀</p>` : ''), | |
| 648 | + saved: () => line('doctor', 'shield', `医生守住了${no(e.target)}`), | |
| 649 | + }[e.kind]() | |
| 650 | + return judge(call, body) | |
| 651 | +} | |
| 652 | +function nightAsk(S) { // a seat woken at night: the judge's call and what this seat knows | |
| 653 | + const w = A.obs.request, me = +A.to | |
| 654 | + if (w === 'kill') { | |
| 655 | + const mates = (A.obs.wolves || []).map(Number).filter(s => s !== me) | |
| 656 | + const picks = mates.filter(s => S.picks[s] != null).map(s => `${no(s)}选择了${no(S.picks[s])}`).join(',') | |
| 657 | + return judge('狼人请睁眼', `<p>点击头像,选择今晚要刀的人</p>${mates.length ? `<p class="god">狼队友:${mates.map(no).join('')}${picks ? `;${picks}` : ''}</p>` : ''}`) | |
| 658 | + } | |
| 659 | + if (w === 'heal') return judge('医生请睁眼', '<p>点击头像,选择今晚要守护的人(不能守自己)</p>') | |
| 660 | + const known = E.filter(e => e.kind === 'inspect' && e._to === A.to).map(e => `${no(e.target)}${e.role === 'Werewolf' ? '是狼人' : '是好人'}`).join(',') | |
| 661 | + return judge('预言家请睁眼', `<p>点击头像,选择要查验的人</p>${known ? `<p class="god">你已查验:${known}</p>` : ''}`) | |
| 662 | +} | |
| 663 | +function sceneHTML(S, e, i, fresh) { | |
| 664 | + if (live && A && A.obs.phase === 'night') return nightAsk(S) | |
| 665 | + if (!e) return judge('等待开局', '<p>七位玩家:两狼、一预言家、一医生、三平民</p>') | |
| 666 | + const flip = r => `<div class="reveal ${r}"><div><div class="fc front">?</div><div class="fc back ${r}"><img alt="" src="assets/${ROLE[r]?.img || 'villager'}.png"><b>${zh(r)}</b></div></div></div>` | |
| 667 | + switch (e.kind) { | |
| 668 | + case 'phase': { | |
| 669 | + const n = e.phase === 'night' | |
| 670 | + return (fresh ? `<div class="banner${n ? '' : ' d'}"><img alt="" src="assets/${n ? 'moon' : 'sun'}.png">${n ? '天黑请闭眼' : '天亮了,请睁眼'}</div>` : '') + | |
| 671 | + judge(phaseName(e), `<p>${n ? '天黑请闭眼,医生、预言家、狼人依次行动' : '天亮了,请睁眼'}</p>`, e.en) | |
| 672 | + } | |
| 673 | + case 'dawn': { | |
| 674 | + let saved = null | |
| 675 | + for (let j = i - 1; j >= 0 && !(E[j].kind === 'phase' && E[j].phase === 'night'); j--) if (E[j].kind === 'saved' && seen(E[j])) saved = E[j].target | |
| 676 | + return judge(e.killed == null ? '昨晚是平安夜' : `昨晚${no(e.killed)}出局`, saved != null ? `<p class="god">(医生守住了${no(saved)})</p>` : '', e.en) | |
| 677 | + } | |
| 678 | + case 'out': return judge(`${no(e.who)}${e.cause === 'night' ? '出局' : '被放逐'},身份是${zh(e.role)}`, '', e.en, flip(e.role)) | |
| 679 | + case 'talk': return judge(e.order?.length ? `从${no(e.order[0])}开始发言` : '开始发言', '<p>按顺序,每人发言一次</p>', e.en) | |
| 680 | + case 'speech': return bubble(e.actor, godOn() ? e.why : '', false) | |
| 681 | + case 'turn': return e.what === 'chat' ? bubble(e.seat, '', true) : board(S, e, fresh) | |
| 682 | + case 'vote_start': return judge('发言结束,开始放逐投票', '<p>依次投票,得票最多的人出局</p>', e.en) | |
| 683 | + case 'vote': case 'tally': return board(S, e, fresh) | |
| 684 | + case 'over': return judge(e.winner ? `${TEAM[e.winner]} 胜利` : '对局中止', `<p>${reasonZh(e)}</p>`, e.en) | |
| 685 | + default: return nightCard(e) | |
| 686 | + } | |
| 687 | +} | |
| 688 | +function drawStatus(S, e) { | |
| 689 | + const sec = live ? ' <span class="sec" id="sec"></span>' : '' | |
| 690 | + let h | |
| 691 | + if (S.over) h = S.over.winner ? `游戏结束 · ${TEAM[S.over.winner]}胜利` : '游戏结束 · 对局中止' | |
| 692 | + else if (!S.phase) h = '等待开局……' | |
| 693 | + else if (A) h = { chat: '【你】发言中……', vote: '放逐投票中……', kill: '狼人请选择今晚的目标……', heal: '医生请选择守护的人……', inspect: '预言家请选择查验的人……' }[A.obs.request] + sec | |
| 694 | + else if (S.phase === 'night') { | |
| 695 | + const k = e && SECRET.has(e.kind) && seen(e) ? e.kind : null | |
| 696 | + h = k === 'heal' || k === 'saved' ? '医生行动中……' : k === 'inspect' ? '预言家行动中……' : k ? '狼人行动中……' : '其他玩家行动中……' | |
| 697 | + } else if (S.turn) h = `${you.includes(String(S.turn.seat)) ? '【你】' : `【${S.turn.seat + 1}号】`}${S.turn.what === 'chat' ? '发言中……' : '投票中……'}${sec}` | |
| 698 | + else if (e?.kind === 'speech') h = `【${e.actor + 1}号】发言中……` | |
| 699 | + else if (S.votes && !S.tally) h = '放逐投票中……' | |
| 700 | + else if (S.tally) h = '投票结束' | |
| 701 | + else h = '天亮了' | |
| 702 | + $('#status').innerHTML = h | |
| 703 | + const o = $('#order') | |
| 704 | + if (S.phase === 'day' && S.order.length && !S.votes) { | |
| 705 | + o.innerHTML = '<small>发言顺序</small>' + S.order.map(s => `<i class="${s === S.speaker ? 'now' : S.spoke.includes(s) ? 'done' : ''}">${s + 1}</i>`).join('') | |
| 706 | + } else o.innerHTML = '' | |
| 707 | +} | |
| 708 | +function drawHeader(S, fresh) { | |
| 709 | + const night = S.phase !== 'day', b = $('#badge'), d = S.phase ? (night ? S.day + 1 : S.day) : 1 | |
| 710 | + const h = `<img alt="" src="assets/${night ? 'moon' : 'sun'}.png"><span>第</span><b>${d}</b><span>${night ? '夜' : '天'}</span>` | |
| 711 | + if (b.dataset.h !== h) { b.innerHTML = h; b.dataset.h = h; if (fresh) { b.classList.remove('flip'); void b.offsetWidth; b.classList.add('flip') } } | |
| 712 | + app.classList.toggle('night', night); app.classList.toggle('day', !night) | |
| 713 | + let c = `出局 <b>${S.alive.filter(a => !a).length}</b>/7` | |
| 714 | + if (godOn() && P.every(p => p.role)) { | |
| 715 | + const w = P.filter((p, s) => S.alive[s] && p.role === 'Werewolf').length, g = S.alive.filter(Boolean).length - w | |
| 716 | + c += `<span class="sep"> · </span><span class="w">狼 ${w}</span><span class="sep"> · </span><span class="g">好人 ${g}</span>` | |
| 717 | + } | |
| 718 | + $('#count').innerHTML = c | |
| 719 | + const gb = $('#god') | |
| 720 | + gb.setAttribute('aria-pressed', String(godOn())); gb.disabled = live && !ended | |
| 721 | + gb.title = live && !ended ? '上帝视角在对局结束后可用' : '上帝视角:身份、夜里的行动和每个人的想法' | |
| 722 | +} | |
| 723 | +function drawArrows(e) { | |
| 724 | + const svg = $('#arrows'), show = e && e.actor != null && e.target != null && ((SECRET.has(e.kind) && seen(e)) || e.kind === 'vote') | |
| 725 | + if (!show) { svg.innerHTML = ''; svg.dataset.k = ''; return } | |
| 726 | + const key = E.indexOf(e) + ':' + innerWidth + 'x' + innerHeight | |
| 727 | + if (svg.dataset.k === key) return | |
| 728 | + svg.dataset.k = key | |
| 729 | + const T = $('#table').getBoundingClientRect(), st = $('#stage').getBoundingClientRect() | |
| 730 | + const at = s => { const r = document.querySelector(`.seat[data-s="${s}"] .coin`).getBoundingClientRect(); return [r.left + r.width / 2 - T.left, r.top + r.height / 2 - T.top] } | |
| 731 | + const [x1, y1] = at(e.actor), [x2, y2] = at(e.target), mx = st.left - T.left + st.width / 2 | |
| 732 | + const qx = left(e.actor) === left(e.target) ? (left(e.actor) ? Math.min(x1, x2) + st.width * .35 : Math.max(x1, x2) - st.width * .35) : mx | |
| 733 | + const col = `var(--${ACT_COLOR[e.kind] || 'wolf'})` | |
| 734 | + svg.innerHTML = `<defs><marker id="ah" viewBox="0 0 10 10" refX="6" refY="5" markerWidth="4" markerHeight="4" orient="auto-start-reverse"><path d="M0 0L10 5 0 10z" style="fill:${col}"/></marker></defs>` + | |
| 735 | + `<path class="a" pathLength="1" d="M${x1} ${y1}Q${qx} ${(y1 + y2) / 2 - 40} ${x2} ${y2}" style="stroke:${col}" marker-end="url(#ah)"/>` | |
| 736 | +} | |
| 737 | + | |
| 738 | +// ---- the log ------------------------------------------------------------------------------------------------------- | |
| 739 | +function logHTML(n) { | |
| 740 | + let h = '<h4>记录</h4>' | |
| 741 | + const row = (i, a, cls, body) => `<div class="lg ${cls}" data-i="${i}"${a != null ? ` data-a="${a}"` : ''}>${body}</div>` | |
| 742 | + const g = (c, k) => `<span style="--c:var(--${c})">${ic(k)}</span>` | |
| 743 | + for (let i = 0; i < n; i++) { | |
| 744 | + const e = E[i] | |
| 745 | + if (!seen(e)) continue | |
| 746 | + switch (e.kind) { | |
| 747 | + case 'phase': h += `<div class="lg-div" data-i="${i}">${phaseName(e)}</div>`; break | |
| 748 | + case 'heal': h += row(i, e.actor, 'lg-g', `${g('doctor', 'shield')} ${mc(e.actor)} 守护 ${mc(e.target)}`); break | |
| 749 | + case 'inspect': h += row(i, e.actor, 'lg-g', `${g('seer', 'eye')} ${mc(e.actor)} 查验 ${mc(e.target)}:<span class="r" style="--c:var(--${e.role === 'Werewolf' ? 'wolf' : 'villager'})">${zh(e.role)}</span>`); break | |
| 750 | + case 'wolf_vote': h += row(i, e.actor, 'lg-g', `${g('wolf', 'claw')} ${mc(e.actor)} → ${e.target == null ? '弃权' : mc(e.target)}`); break | |
| 751 | + case 'wolf_pick': h += row(i, null, 'lg-g', `${g('wolf', 'claw')} 狼队选择了 ${e.target == null ? '空刀' : mc(e.target)}${e.tie ? '(平票随机)' : ''}`); break | |
| 752 | + case 'saved': h += row(i, null, 'lg-g', `${g('doctor', 'shield')} 医生守住了 ${mc(e.target)}`); break | |
| 753 | + case 'dawn': if (e.killed == null) h += row(i, null, 'lg-j', '昨晚是平安夜'); break | |
| 754 | + case 'out': h += row(i, e.who, 'lg-j', `${e.cause === 'night' ? `昨晚 ${mc(e.who)} 出局` : `${mc(e.who)} 被放逐`} · ${zh(e.role)}`); break | |
| 755 | + case 'talk': if (e.order?.length) h += row(i, null, 'lg-j', `从 ${mc(e.order[0])} 开始发言`); break | |
| 756 | + case 'speech': h += row(i, e.actor, 'lg-say', `${mc(e.actor)}<div><b>${esc(P[e.actor].name)}</b>:<span class="t">${esc(e.text)}</span>${godOn() && e.why ? `<div class="lg-why">${esc(e.why)}</div>` : ''}</div>`); break | |
| 757 | + case 'vote_start': h += row(i, null, 'lg-j', '开始放逐投票'); break | |
| 758 | + case 'vote': h += row(i, e.actor, 'lg-v', `${mc(e.actor)} → ${e.target == null ? '弃票' : mc(e.target)}`); break | |
| 759 | + case 'tally': h += row(i, null, 'lg-j', e.exiled == null ? '无人被放逐' : `${mc(e.exiled)} 得票最多${e.tie ? '(平票,随机抽中)' : ''}`); break | |
| 760 | + case 'over': h += row(i, null, 'lg-j', e.winner ? `${TEAM[e.winner]}胜利` : '对局中止'); break | |
| 761 | + case 'control': h += row(i, e.seat, 'lg-v', `${mc(e.seat)} 改由 ${esc(e.name)}(${{ human: '真人', agent: 'agent', auto: '托管', bot: 'bot' }[e.who] || e.who})操控`); break | |
| 762 | + } | |
| 763 | + } | |
| 764 | + return h | |
| 765 | +} | |
| 766 | +function drawLog(n) { | |
| 767 | + const log = $('#log'), key = n + ':' + godOn() + ':' + E.length | |
| 768 | + if (log.dataset.k !== key) { | |
| 769 | + log.dataset.k = key | |
| 770 | + log.innerHTML = logHTML(n) | |
| 771 | + const rows = log.querySelectorAll('[data-i]'), last = rows[rows.length - 1] | |
| 772 | + if (last) { last.classList.add('now'); log.scrollTop = log.scrollHeight } | |
| 773 | + } | |
| 774 | + for (const r of log.querySelectorAll('.lg')) r.classList.toggle('hide', filter != null && r.dataset.a !== String(filter)) | |
| 775 | +} | |
| 776 | + | |
| 777 | +// ---- one frame --------------------------------------------------------------------------------------------------- | |
| 778 | +let shownN = 0, sceneKey = '' | |
| 779 | +function lastScene(n) { for (let i = n - 1; i >= 0; i--) if (STAGE.has(E[i].kind) && (seen(E[i]) || !live)) return i; return -1 } | |
| 780 | +function render(n, fresh = false) { | |
| 781 | + shownN = n | |
| 782 | + const S = fold(n), k = lastScene(n), e = E[k] | |
| 783 | + drawHeader(S, fresh) | |
| 784 | + drawSeats(S, e) | |
| 785 | + drawStatus(S, e) | |
| 786 | + const key = [k, godOn(), e?.kind === 'vote' || e?.kind === 'turn' ? n : '', A?.version, innerWidth, innerHeight].join(':') | |
| 787 | + if (key !== sceneKey) { | |
| 788 | + sceneKey = key | |
| 789 | + $('#scene').innerHTML = sceneHTML(S, e, k, fresh) | |
| 790 | + if (e?.kind === 'speech') $('#scene .text').textContent = live || !fresh ? e.text : '' | |
| 791 | + } | |
| 792 | + drawLog(n) | |
| 793 | + drawArrows(live && !fresh ? null : e) | |
| 794 | + if (fresh && e) sfx({ phase: e.phase, vote: 'vote', out: 'out' }[e.kind]) | |
| 795 | + drawAct(S) | |
| 796 | +} | |
| 797 | + | |
| 798 | +// ---- overlays ---------------------------------------------------------------------------------------------------- | |
| 799 | +function roleCard(c) { | |
| 800 | + const r = ROLE[c.role] || ROLE.Villager, mates = (c.wolves || []).filter(w => w !== c.seat) | |
| 801 | + $('#over').innerHTML = `<div class="card ${c.role}"><small>你的身份</small><h2>${r.zh}</h2><div class="art"><img alt="" src="assets/${r.img}.png"></div>` + | |
| 802 | + `<dl><dt>技能</dt><dd>${r.skill}</dd><dt>目标</dt><dd>${r.goal}</dd>${mates.length ? `<dt>狼队友</dt><dd>${mates.map(w => `【${w + 1}号】`).join(' ')}</dd>` : ''}</dl>` + | |
| 803 | + `<button class="btn" data-k="close">知道了</button></div>` | |
| 804 | + $('#over').className = 'on' | |
| 805 | +} | |
| 806 | +function about() { | |
| 807 | + $('#over').innerHTML = `<div class="card about"><h2>关于这张桌子</h2><p>规则和引擎:Google 的 kaggle-environments Werewolf(Apache-2.0)。</p>` + | |
| 808 | + `<p>角色图和小图标:Microsoft Fluent Emoji(MIT)。头像:DiceBear Notionists,原作 Zoish(CC0)。</p>` + | |
| 809 | + `<p>标记图标:game-icons.net,作者 Lorc、Delapouite(CC BY 3.0)。法官字体:Noto Serif SC 子集(SIL OFL 1.1)。</p>` + | |
| 810 | + `<p>详见 viewer/NOTICE。</p><div style="text-align:center"><button class="btn" data-k="close">好的</button></div></div>` | |
| 811 | + $('#over').className = 'on' | |
| 812 | +} | |
| 813 | +function endScreen(over) { | |
| 814 | + const S = fold(E.length), w = over.winner | |
| 815 | + const mineWon = you.length && w && you.some(s => ROLE[over.roles?.[+s] || P[+s].role]?.team === w) | |
| 816 | + const cards = P.map((p, s) => { | |
| 817 | + const r = over.roles?.[s] || p.role, won = w && ROLE[r]?.team === w | |
| 818 | + return `<div class="ec ${won ? 'win' : w ? 'lose' : ''} ${r}${you.includes(String(s)) ? ' me' : ''}"><img class="face" alt="" src="assets/avatars/${faces[s]}.svg" style="--tint:${TINT[s]}"><img class="rimg" alt="" src="assets/${ROLE[r]?.img || 'villager'}.png">` + | |
| 819 | + `<div class="n">${s + 1}号</div><b>${esc(p.name)}</b><span class="tg">${zh(r)}</span><small>${S.fate[s] ? fate(S.fate[s]) : '存活'}</small></div>` | |
| 820 | + }).join('') | |
| 821 | + $('#over').innerHTML = `<div class="end ${w || ''}"><div class="hero"><div class="rays"></div><img alt="" src="assets/${w === 'Werewolves' ? 'werewolf' : w ? 'villager' : 'zzz'}.png"></div>` + | |
| 822 | + `<h1>${w ? `${TEAM[w]} 胜利` : '对局中止'}</h1><p class="rs">${reasonZh(over)}</p>` + | |
| 823 | + (live && you.length && w ? `<p class="you${mineWon ? '' : ' lost'}">${mineWon ? '你赢了' : '你输了'}</p>` : '') + | |
| 824 | + `<div class="cards">${cards}</div><div class="btns">${live ? '' : '<button class="btn" data-k="review">看复盘</button>'}<button class="btn ghost" data-k="close">看看桌面</button></div></div>` | |
| 825 | + $('#over').className = 'on' | |
| 826 | + sfx(w ? (you.length && !mineWon ? 'lose' : 'win') : null) | |
| 827 | +} | |
| 828 | +$('#over').addEventListener('click', ev => { | |
| 829 | + const k = ev.target.closest('[data-k]')?.dataset.k | |
| 830 | + if (!k) return | |
| 831 | + $('#over').className = '' | |
| 832 | + if (k === 'review') { god = true; keep('god', true); sceneKey = ''; go(0); play() } | |
| 833 | +}) | |
| 834 | + | |
| 835 | +// ---- sound: off by default, WebAudio, nothing to load --------------------------------------------------------------- | |
| 836 | +let ac = null | |
| 837 | +function sfx(k) { | |
| 838 | + const N = { night: [[196, 0, 1.4, 'sine'], [147, .06, 1.6, 'sine']], day: [[880, 0, .9, 'triangle'], [1320, .14, .9, 'triangle']], vote: [[1100, 0, .05, 'square']], | |
| 839 | + out: [[90, 0, .5, 'sine'], [60, .02, .6, 'sine']], turn: [[1250, 0, .25, 'sine'], [1660, .12, .3, 'sine']], | |
| 840 | + win: [[523, 0, .3, 'triangle'], [659, .15, .3, 'triangle'], [784, .3, .7, 'triangle']], lose: [[233, 0, 1.1, 'sawtooth'], [175, 0, 1.1, 'sine']] }[k] | |
| 841 | + if (!snd || !N) return | |
| 842 | + try { | |
| 843 | + ac ??= new AudioContext() | |
| 844 | + const t = ac.currentTime | |
| 845 | + for (const [f, d, len, type] of N) { | |
| 846 | + const o = ac.createOscillator(), g = ac.createGain() | |
| 847 | + o.type = type; o.frequency.value = f | |
| 848 | + g.gain.setValueAtTime(.0001, t + d); g.gain.exponentialRampToValueAtTime(type === 'square' ? .05 : .16, t + d + .02); g.gain.exponentialRampToValueAtTime(.0001, t + d + len) | |
| 849 | + o.connect(g).connect(ac.destination); o.start(t + d); o.stop(t + d + len + .05) | |
| 850 | + } | |
| 851 | + } catch {} | |
| 852 | +} | |
| 853 | + | |
| 854 | +// ---- a replay: one beat per event, a timeline split by nights and days, speed ---------------------------------------- | |
| 855 | +let B = [], at = 0, t0 = 0, playing = false, speed = 1, raf = 0, segs = [] | |
| 856 | +const SPEEDS = [0.5, 1, 2, 4] | |
| 857 | +function dur(b) { | |
| 858 | + const e = E[B[b]] | |
| 859 | + if (!e) return 1000 | |
| 860 | + if (e.kind === 'speech') return typeMs(e.text) + 1400 | |
| 861 | + if (SECRET.has(e.kind)) return godOn() ? 1400 : 600 | |
| 862 | + return { phase: 1900, vote: 700, tally: 2800, dawn: 2100, out: 2100, over: 2500 }[e.kind] || 1500 | |
| 863 | +} | |
| 864 | +function replayBar() { | |
| 865 | + $('#foot').innerHTML = `<div class="ctl"><button class="prev" data-go="prev" title="上一步">${ic('prev')}</button><button class="play" data-go="play" title="播放 / 暂停">${ic('play')}</button>` + | |
| 866 | + `<button class="next" data-go="next" title="下一步">${ic('next')}</button></div><button class="spd" id="spd" title="速度">1×</button><div class="tl" id="tl"></div>` | |
| 867 | + segs = [] | |
| 868 | + B.forEach((i, b) => { if (E[i].kind === 'phase' || !segs.length) segs.push({ from: b, e: E[i], w: 0 }); segs.at(-1).w += dur(b) }) | |
| 869 | + segs.forEach((s, k) => { s.to = k + 1 < segs.length ? segs[k + 1].from : B.length }) | |
| 870 | + $('#tl').innerHTML = segs.map((s, k) => `<div class="seg ${s.e.phase === 'day' ? 'd' : 'n'}" data-k="${k}" style="--w:${Math.max(1, s.w / 1000).toFixed(1)}"><i></i><span>${s.e.kind === 'phase' ? (s.e.phase === 'night' ? `夜${s.e.day + 1}` : `天${s.e.day}`) : '开局'}</span></div>`).join('') | |
| 871 | + $('#foot').addEventListener('click', ev => { | |
| 872 | + const k = ev.target.closest('[data-go]')?.dataset.go | |
| 873 | + if (k === 'play') return playing ? pause() : play() | |
| 874 | + if (k === 'prev') { pause(); go(at - 1) } | |
| 875 | + if (k === 'next') { pause(); go(at + 1) } | |
| 876 | + }) | |
| 877 | + $('#spd').onclick = () => { speed = SPEEDS[(SPEEDS.indexOf(speed) + 1) % SPEEDS.length]; $('#spd').textContent = speed + '×'; document.documentElement.style.setProperty('--spd', speed) } | |
| 878 | + const tl = $('#tl'), seek = ev => { | |
| 879 | + const seg = document.elementFromPoint(ev.clientX, ev.clientY)?.closest('.seg') | |
| 880 | + if (!seg) return | |
| 881 | + const s = segs[+seg.dataset.k], r = seg.getBoundingClientRect(), f = Math.min(.999, Math.max(0, (ev.clientX - r.left) / r.width)) | |
| 882 | + const b = s.from + Math.floor(f * (s.to - s.from)) | |
| 883 | + if (b !== at) go(b) | |
| 884 | + } | |
| 885 | + tl.addEventListener('pointerdown', ev => { pause(); tl.setPointerCapture(ev.pointerId); seek(ev); tl.onpointermove = seek }) | |
| 886 | + tl.addEventListener('pointerup', () => { tl.onpointermove = null }) | |
| 887 | +} | |
| 888 | +function drawTimeline(p) { | |
| 889 | + const k = segs.findIndex(s => at >= s.from && at < s.to) | |
| 890 | + document.querySelectorAll('.seg').forEach((el, j) => { | |
| 891 | + el.classList.toggle('past', j < k); el.classList.toggle('cur', j === k) | |
| 892 | + el.querySelector('i').style.width = j === k ? `${((at - segs[j].from + p) / (segs[j].to - segs[j].from) * 100).toFixed(1)}%` : '' | |
| 893 | + }) | |
| 894 | +} | |
| 895 | +function go(b, fresh = false) { | |
| 896 | + at = Math.max(0, Math.min(B.length - 1, b)); t0 = performance.now() | |
| 897 | + $('#over').className = '' | |
| 898 | + render(B[at] + 1, fresh) | |
| 899 | + tick(fresh ? 0 : 1) | |
| 900 | + if (E[B[at]]?.kind === 'over') setTimeout(() => { if (E[B[at]]?.kind === 'over') endScreen(E[B[at]]) }, fresh ? 1400 / speed : 300) | |
| 901 | +} | |
| 902 | +function tick(p) { | |
| 903 | + const e = E[B[at]] | |
| 904 | + if (e?.kind === 'speech') { | |
| 905 | + const full = typeMs(e.text), q = Math.min(1, p * (full + 1400) / full), chars = [...e.text] | |
| 906 | + const t = $('#scene .text'); if (t) t.textContent = chars.slice(0, Math.ceil(chars.length * q)).join('') | |
| 907 | + const bar = $('#scene .bar i'); if (bar) bar.style.width = (p * 100).toFixed(1) + '%' | |
| 908 | + const lbl = $('#scene .lbl'); if (lbl) lbl.textContent = q < 1 ? '发言中' : '发言结束' | |
| 909 | + } | |
| 910 | + drawTimeline(p) | |
| 911 | +} | |
| 912 | +function frame(now) { | |
| 913 | + if (!playing) return | |
| 914 | + const p = Math.min(1, (now - t0) / (dur(at) / speed)) | |
| 915 | + tick(p) | |
| 916 | + if (p >= 1) { if (at >= B.length - 1) return pause(); go(at + 1, true) } | |
| 917 | + raf = requestAnimationFrame(frame) | |
| 918 | +} | |
| 919 | +function play() { | |
| 920 | + if (at >= B.length - 1) go(0) | |
| 921 | + playing = true; t0 = performance.now() | |
| 922 | + $('[data-go=play]').innerHTML = ic('pause') | |
| 923 | + cancelAnimationFrame(raf); raf = requestAnimationFrame(frame) | |
| 924 | +} | |
| 925 | +function pause() { | |
| 926 | + playing = false; cancelAnimationFrame(raf) | |
| 927 | + const b = $('[data-go=play]'); if (b) b.innerHTML = ic('play') | |
| 928 | +} | |
| 929 | +$('#scene').addEventListener('click', ev => { | |
| 930 | + const why = ev.target.closest('.why'); if (why) return why.classList.toggle('open') | |
| 931 | + const e = E[B[at]] | |
| 932 | + if (!live && e?.kind === 'speech') { const full = typeMs(e.text) / speed; if (performance.now() - t0 < full) t0 = performance.now() - full; if (!playing) tick(1) } | |
| 933 | +}) | |
| 934 | +addEventListener('keydown', ev => { | |
| 935 | + if (live || ev.target.closest?.('textarea')) return | |
| 936 | + if (ev.key === ' ') { ev.preventDefault(); playing ? pause() : play() } | |
| 937 | + if (ev.key === 'ArrowRight') { pause(); go(at + 1) } | |
| 938 | + if (ev.key === 'ArrowLeft') { pause(); go(at - 1) } | |
| 939 | +}) | |
| 940 | + | |
| 941 | +// ---- a live room: the seat's role card, what it is asked, its answers ---------------------------------------------- | |
| 942 | +function take(batch) { | |
| 943 | + you = (batch.you || []).map(String) | |
| 944 | + const before = E.length, first = !before, now = performance.now() | |
| 945 | + let asked = null, overNow = null | |
| 946 | + for (const m of batch.messages || []) { | |
| 947 | + if (m.n != null) { if (seenN.has(m.n)) continue; seenN.add(m.n) } | |
| 948 | + if (m.event) { | |
| 949 | + let e = { ...m.event, _n: m.n, _at: now } | |
| 950 | + if (e.type === 'control') { // kit/room.py's handover: kind there is the new controller's | |
| 951 | + e = { kind: 'control', seat: +e.seat, who: m.event.kind, name: m.event.name, _n: m.n, _at: now } | |
| 952 | + Object.assign(P[e.seat], { name: e.name, kind: e.who }) | |
| 953 | + } | |
| 954 | + if (e.kind === 'start') { counts = e.roles; for (const [s, x] of Object.entries(e.seats || {})) Object.assign(P[+s], { name: x.name, kind: x.kind }) } | |
| 955 | + if (e.kind === 'over') { ended = true; overNow = e; (e.roles || []).forEach((r, s) => { if (r) P[s].role = r }) } | |
| 956 | + E.push(e) | |
| 957 | + if (A && (e.actor === +A.to || e.kind === 'phase' || e.kind === 'over')) A = null | |
| 958 | + if (sent && (e.actor === +sent.to || e.kind === 'phase')) sent = null | |
| 959 | + } else if (m.legal) { | |
| 960 | + if (you.includes(String(m.to))) { A = { ...m, at: now }; pick = null; sent = null; asked = A } | |
| 961 | + } else if (m.obs && m.to != null) { | |
| 962 | + const e = { ...m.obs, _to: String(m.to), _n: m.n, _at: now } | |
| 963 | + if (e.kind === 'role') { P[e.seat].role = e.role; for (const w of e.wolves || []) P[w].role = 'Werewolf'; if (you.includes(e._to)) mine = e } | |
| 964 | + E.push(e) | |
| 965 | + if (A && e.actor === +A.to && e._to === A.to) A = null | |
| 966 | + } else if (m.end) { ended = true; A = null } | |
| 967 | + } | |
| 968 | + E.sort((a, b) => (a._n ?? 0) - (b._n ?? 0)) // a seat's news revealed after the end slots back in its place | |
| 969 | + if (A && !you.includes(String(A.to))) A = null | |
| 970 | + if (first) buildSeats() | |
| 971 | + drawConfig() | |
| 972 | + $('#mode').textContent = `· 直播 · ${you.length ? `你是${+you[0] + 1}号` : '观战'}` | |
| 973 | + render(E.length, !first && E.length - before <= 4) | |
| 974 | + if (overNow && !overShown) { overShown = true; setTimeout(() => endScreen(overNow), first ? 0 : 900) } | |
| 975 | + else if (mine && !carded && !ended) { carded = true; roleCard(mine) } | |
| 976 | + if (asked && !first) { sfx('turn'); flashTitle() } | |
| 977 | +} | |
| 978 | +let flashT = 0 | |
| 979 | +function flashTitle() { | |
| 980 | + clearInterval(flashT); let k = 0 | |
| 981 | + flashT = setInterval(() => { document.title = k++ % 2 ? '狼人杀' : '轮到你了'; if (k > 9 || !A) { clearInterval(flashT); document.title = '狼人杀' } }, 700) | |
| 982 | +} | |
| 983 | +let actKey = '' | |
| 984 | +function drawAct(S) { | |
| 985 | + if (!live) return | |
| 986 | + const f = $('#foot'), me = you[0], dead = me != null && !S.alive[+me] | |
| 987 | + const key = [ended, A?.version, pick, sent?.version, dead, S.phase, S.turn?._n, you.join()].join('|') | |
| 988 | + if (key === actKey) return | |
| 989 | + actKey = key | |
| 990 | + const msg = h => `<div class="act"><div class="msg">${h}</div></div>` | |
| 991 | + if (ended) f.innerHTML = msg('对局结束 · 上帝视角已可用') | |
| 992 | + else if (A && A.obs.request === 'chat') { | |
| 993 | + const old = $('#say')?.value || '' | |
| 994 | + f.innerHTML = `<div class="act"><div class="clock" id="clock"><svg viewBox="0 0 36 36"><circle class="bg" cx="18" cy="18" r="15"/><circle class="fg" cx="18" cy="18" r="15" stroke-dasharray="94.25"/></svg><span></span></div>` + | |
| 995 | + `<textarea id="say" maxlength="600" placeholder="说点什么……(Enter 发送,Shift+Enter 换行)"></textarea><button class="btn ghost" id="pass" title="不发言,直接过">过</button><button class="btn" id="send">发送</button></div>` | |
| 996 | + const t = $('#say'); t.value = old; t.focus() | |
| 997 | + t.onkeydown = ev => { if (ev.key === 'Enter' && !ev.shiftKey && !ev.isComposing) { ev.preventDefault(); answer({ type: 'chat', message: t.value }) } } | |
| 998 | + $('#send').onclick = () => answer({ type: 'chat', message: t.value }) | |
| 999 | + $('#pass').onclick = () => answer({ type: 'chat', message: '' }) | |
| 1000 | + } else if (A) { | |
| 1001 | + const w = A.obs.request | |
| 1002 | + if (pick == null) f.innerHTML = `<div class="act"><div class="clock" id="clock"><svg viewBox="0 0 36 36"><circle class="bg" cx="18" cy="18" r="15"/><circle class="fg" cx="18" cy="18" r="15" stroke-dasharray="94.25"/></svg><span></span></div><div class="msg">${ASKS[w]}</div>${w === 'vote' ? '<button class="btn ghost" id="abst">弃票</button>' : ''}</div>` | |
| 1003 | + else f.innerHTML = `<div class="act"><div class="msg">${VERB[w]}${no(pick)}${esc(P[pick].name)}?</div><button class="btn ghost" id="redo">换人</button><button class="btn${w === 'vote' || w === 'kill' ? ' red' : ''}" id="yes">确认${w === 'vote' ? '投票' : ''}</button></div>` | |
| 1004 | + if ($('#abst')) $('#abst').onclick = () => answer({ type: 'vote', target: null }) | |
| 1005 | + if ($('#redo')) $('#redo').onclick = () => { pick = null; render(E.length) } | |
| 1006 | + if ($('#yes')) $('#yes').onclick = () => answer(A.legal.find(a => a.target != null && +a.target === pick)) | |
| 1007 | + } else if (sent) f.innerHTML = msg(sent.type === 'chat' ? '发言已送出,等待其他人……' : `已${VERB[sent.type]}${sent.target == null ? '(弃票)' : no(sent.target)},等待其他人……`) | |
| 1008 | + else if (!you.length) f.innerHTML = msg(S.phase === 'night' ? '天黑了 · 观战中,其他玩家行动中……' : '观战中 · 上帝视角在对局结束后可用') | |
| 1009 | + else if (dead) f.innerHTML = msg('你已经出局,可以继续观看') | |
| 1010 | + else if (S.phase === 'night') f.innerHTML = msg(P[+me].role === 'Villager' ? '天黑了,你闭着眼……' : '其他玩家行动中……') | |
| 1011 | + else f.innerHTML = msg(S.turn ? `等待${no(S.turn.seat)}${S.turn.what === 'chat' ? '发言' : '投票'}……` : '等待其他玩家……') | |
| 1012 | + clock() | |
| 1013 | +} | |
| 1014 | +function answer(action) { | |
| 1015 | + if (!A || !action) return | |
| 1016 | + shoalAct(A.to, A.version, action) | |
| 1017 | + sent = { ...action, to: A.to, version: A.version } | |
| 1018 | + A = null; pick = null | |
| 1019 | + render(E.length) | |
| 1020 | +} | |
| 1021 | +function clock() { // a countdown from when the request (or a person's turn) arrived | |
| 1022 | + let deadline = null, total = 30 | |
| 1023 | + if (A) { total = A.obs.seconds || 30; deadline = A.at + total * 1000 } | |
| 1024 | + else { | |
| 1025 | + const i = E.findLastIndex(e => e.kind === 'turn') | |
| 1026 | + if (i >= 0 && !E.slice(i + 1).some(e => ['speech', 'vote', 'phase', 'over'].includes(e.kind))) { total = E[i].seconds || 30; deadline = E[i]._at + total * 1000 } | |
| 1027 | + } | |
| 1028 | + const sec = deadline == null ? null : Math.max(0, Math.ceil((deadline - performance.now()) / 1000)) | |
| 1029 | + const el = $('#sec') | |
| 1030 | + if (el) { el.textContent = sec == null ? '' : sec + '秒'; el.className = 'sec' + (sec != null && sec <= 5 ? ' hot' : sec != null && sec <= 10 ? ' warn' : '') } | |
| 1031 | + const c = $('#clock') | |
| 1032 | + if (c && sec != null) { c.querySelector('span').textContent = sec; c.querySelector('.fg').style.strokeDashoffset = (94.25 * (1 - sec / total)).toFixed(1) } | |
| 1033 | +} | |
| 1034 | + | |
| 1035 | +// ---- input ------------------------------------------------------------------------------------------------------- | |
| 1036 | +$('#table').addEventListener('click', ev => { | |
| 1037 | + const seat = ev.target.closest('.seat'); if (!seat) return | |
| 1038 | + const s = +seat.dataset.s | |
| 1039 | + if (A && A.obs.request !== 'chat') { | |
| 1040 | + if (A.legal.some(a => a.target != null && +a.target === s)) { pick = s; render(E.length) } | |
| 1041 | + return | |
| 1042 | + } | |
| 1043 | + filter = filter === s ? null : s | |
| 1044 | + render(shownN) | |
| 1045 | +}) | |
| 1046 | +$('#log').addEventListener('click', ev => { | |
| 1047 | + const say = ev.target.closest('.lg-say'); if (say) say.classList.toggle('open') | |
| 1048 | + const r = ev.target.closest('[data-i]') | |
| 1049 | + if (!live && r && B.length) { const b = B.findIndex(i => i >= +r.dataset.i); if (b >= 0) { pause(); go(b) } } | |
| 1050 | +}) | |
| 1051 | +$('#god').onclick = () => { if (live && !ended) return; god = !god; if (!live) keep('god', god); sceneKey = ''; render(shownN); if (!live) tick(1) } | |
| 1052 | +$('#snd').onclick = () => { snd = !snd; keep('sound', snd); $('#snd').innerHTML = `<svg class="ic"><use href="#i-${snd ? 'sound' : 'mute'}"/></svg>`; sfx('turn') } | |
| 1053 | +$('#about').onclick = about | |
| 1054 | +$('#tabs').onclick = ev => { | |
| 1055 | + const t = ev.target.closest('[data-t]')?.dataset.t; if (!t) return | |
| 1056 | + app.classList.toggle('logtab', t === 'log') | |
| 1057 | + for (const b of document.querySelectorAll('#tabs button')) b.setAttribute('aria-pressed', String(b.dataset.t === t)) | |
| 1058 | +} | |
| 1059 | +addEventListener('resize', () => { sceneKey = ''; $('#arrows').dataset.k = ''; render(shownN); if (!live && B.length) tick(1) }) | |
| 1060 | + | |
| 1061 | +$('#snd').innerHTML = `<svg class="ic"><use href="#i-${snd ? 'sound' : 'mute'}"/></svg>` | |
| 1062 | +buildSeats() | |
| 1063 | +render(0) | |
| 1064 | +if (live) { $('#mode').textContent = '· 直播'; shoalLive(take); setInterval(clock, 250) } | |
| 1065 | +else shoalReplay(text => { | |
| 1066 | + let R = null | |
| 1067 | + try { R = JSON.parse(text) } catch {} | |
| 1068 | + if (!R || !Array.isArray(R.events) || !R.version) { $('#scene').innerHTML = '<div class="oldnote">这份回放是旧格式,牌桌放不了。</div>'; return } | |
| 1069 | + P = R.players.map(p => ({ name: p.name || `${p.seat + 1}号`, kind: p.kind || 'bot', role: p.role })) | |
| 1070 | + E = R.events | |
| 1071 | + if (!E.some(e => e.kind === 'over')) E.push({ kind: 'over', winner: R.winner || null, reason: R.reason || 'stopped', roles: P.map(p => p.role) }) | |
| 1072 | + counts = P.reduce((m, p) => (m[p.role] = (m[p.role] || 0) + 1, m), {}) | |
| 1073 | + B = E.map((e, i) => STAGE.has(e.kind) ? i : -1).filter(i => i >= 0) | |
| 1074 | + buildSeats(); replayBar() | |
| 1075 | + $('#mode').textContent = '· 回放 · 7人局' | |
| 1076 | + go(0); play() | |
| 1077 | +}) | |
| 1078 | +</script> | |
| 1079 | +</body> | |
| 1080 | +</html> | |
