Compare commits

..

141 Commits

Author SHA1 Message Date
DevCats 6b8d89daba fix(registry/coder-labs/modules/codex): align variable names with claude-code v5 (#885)
Aligns codex module variable names with the claude-code v5 conventions
established in #861 and #879.

- Rename `additional_mcp_servers` to `mcp` to match claude-code's
variable name.
- Change `codex_version` default from `""` to `"latest"` to match
`claude_code_version`.

## Type of Change

- [ ] New module
- [ ] New template
- [x] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

**Path:** `registry/coder-labs/modules/codex`
**Breaking change:** [x] Yes [ ] No

> [!WARNING]
> Breaking change for anyone referencing `additional_mcp_servers` by
name. Since v5.0.0 was released and deleted on the same day (#879), this
should have zero downstream impact.

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues

- Follow-up to #879
- Filed #886 to track adding `mcp_config_remote_path` support to codex

---
*This PR was authored by Coder Agents.*
2026-05-05 12:31:09 -05:00
35C4n0r c4661ae365 refactor(registry/coder-labs/modules/codex)!: remove agentapi, tasks and start logic (#879)
Closes #878

## What

Major refactor of the `coder-labs/codex` module to mirror the
`coder/claude-code` v5 changes from #861.

## Changes

### Structural
- Replace `module "agentapi"` with `module "coder_utils"`
(`registry.coder.com/coder/coder-utils/coder v0.0.1`)
- Replace `scripts/install.sh` with `scripts/install.sh.tftpl`
(Terraform templatefile)
- Delete `scripts/start.sh`
- Module dir changed from `.codex-module` to
`.coder-modules/coder-labs/codex`
- Output changed from `task_app_id` to `scripts` (ordered list of coder
exp sync names)
- Extracted shared test helpers (`collectScripts`, `runScripts`) into
`agentapi/coder-utils-test-helpers.ts`

### Removed variables
All AgentAPI pass-throughs, boundary, and start-script-only variables:
`order`, `group`, `report_tasks`, `subdomain`, `cli_app`,
`web_app_display_name`, `cli_app_display_name`, `install_agentapi`,
`agentapi_version`, `ai_prompt`, `continue`, `enable_state_persistence`,
`codex_system_prompt`, `enable_boundary`, `boundary_config_path`,
`boundary_version`, `compile_boundary_from_source`,
`use_boundary_directly`, `codex_model`

### Retained
`install_codex` (toggle for skipping npm install when CLI is
pre-installed)

### Renamed
- `enable_aibridge` -> `enable_ai_gateway`

### Changed
- `workdir`: now optional (`default = null`)
- `openai_api_key`: conditional env var with `count`, marked `sensitive
= true`
- `base_config_toml`: heredoc description documenting generated
defaults; notes that `model_reasoning_effort` and workdir trust are only
applied in default config
- Default `config.toml`: stripped `sandbox_mode`, `approval_policy`,
`sandbox_workspace_write`, `notice.model_migrations`
- Install script: removed Node.js/NVM bootstrap (assumes npm
pre-installed), sources NVM if present, fails with actionable error if
npm missing
- `ARG_CODEX_VERSION` and `ARG_WORKDIR` base64-encoded to prevent
shell/TOML injection
- Duplicate `[model_providers.aibridge]` guarded with grep before
appending
- Debug header uses user-facing variable names

### Tests
- Terraform: 11 pass
- Bun: 15 pass (rewritten to shared `collectScripts`/`runScripts`
pattern)
- Added: `model-reasoning-effort-standalone`,
`ai-gateway-with-custom-base-config`,
`ai-gateway-custom-config-no-duplicate-provider`,
`install-codex-latest`, `workdir-trusted-project`,
`no-workdir-no-project-section`
- Negative assertions on `minimal-default-config`

### Docs
- Migration guide (v4 to v5) in README
- Quoted path in coder_app example
- AI Gateway note about custom `base_config_toml` requiring manual
`model_provider`

> [!WARNING]
> Breaking change. Drops support for Coder Tasks and Boundary. Keep
using v4.x.x if you depend on them.

---
*This PR was authored by Coder Agents.*

---------

Co-authored-by: Jay Kumar <jay.kumar@coder.com>
Co-authored-by: DevCats <christofer@coder.com>
2026-05-05 10:10:34 -05:00
blinkagent[bot] 4688e4c1a7 fix(filebrowser): require agent_name when subdomain is false (#877)
## Description

Fixes
[REG-4](https://linear.app/codercom/issue/REG-4/filebrowser-appends-workspace-path-twice-in-url):
the `filebrowser` module opens to a non-existent URL with the workspace
path appended a second time when `subdomain = false` and `agent_name` is
not provided, e.g.:

```
https://<coder-host>/@<owner>/<workspace>/apps/filebrowser/files/@<owner>/<workspace>.<agent>/apps/filebrowser/
```

### Root cause

Coder's frontend always builds path-based app URLs as
`/@<owner>/<workspace>.<agent>/apps/<slug>/` (it always includes
`.<agent_name>`, even for single-agent templates):

https://github.com/coder/coder/blob/main/site/src/modules/apps/apps.ts

```ts
return `${path}/@${workspace.owner_name}/${workspace.name}.${agent.name}/apps/${app.slug}/`;
```

The filebrowser module, however, only includes the agent segment in
`local.server_base_path` (which becomes filebrowser's `--baseURL`) when
the user explicitly passes `agent_name`. The variable description and
the README both said `agent_name` was "only required if the template
uses multiple agents", which is incorrect.

When the URLs disagree, filebrowser's reverse-proxy `stripPrefix` cannot
strip the prefix, the path falls through filebrowser's `/:catchAll(.*)*`
Vue route, and the router redirects to `/files/${catchAll}` — producing
the duplicated path the user reported.

### Fix

- Add a `lifecycle.precondition` on `coder_script.filebrowser` that
fails `terraform apply` with a clear, actionable error when `subdomain =
false` and `agent_name == null`.
- Update the `agent_name` variable description to state it is required
whenever `subdomain` is `false`.
- Update the `README.md` example for the path-based config to call out
the requirement explicitly.
- Bump the module version from `1.1.4` → `1.1.5`.
- Add a TS test covering the new precondition.

This avoids the silent misconfiguration that produces the duplicated
URL, without breaking anyone whose existing template already sets
`agent_name` (or uses `subdomain = true`).

## Type of Change

- [ ] New module
- [ ] New template
- [x] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

**Path:** `registry/coder/modules/filebrowser`  
**New version:** `v1.1.5`  
**Breaking change:** [ ] Yes [x] No

## Testing & Validation

- [x] `bun test main.test.ts` — 8 pass, 0 fail (includes new
precondition test)
- [x] `terraform fmt -recursive`
- [x] `terraform validate`
- [x] `bun x prettier --check`
- [x] Manually verified the precondition fires with a minimal repro and
passes when `agent_name` is supplied or `subdomain = true`.

## Related Issues

- Linear:
[REG-4](https://linear.app/codercom/issue/REG-4/filebrowser-appends-workspace-path-twice-in-url)

---

Created on behalf of @matifali.

Generated with Blink.

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: DevCats <christofer@coder.com>
2026-05-04 15:17:50 -05:00
Morgan Lunt 4d96be0de7 feat(claude-code): add telemetry input for OTEL export with workspace attribution (#862)
## Problem

Claude Code ships an OpenTelemetry exporter for token usage, tool calls,
session lifecycle and errors
(https://docs.anthropic.com/en/docs/claude-code/monitoring-usage), but
the module exposes no first-class wiring for it. Template authors who
want telemetry have to know the env var names
(`CLAUDE_CODE_ENABLE_TELEMETRY`, the `OTEL_EXPORTER_OTLP_*` family) and
write their own `coder_env` blocks. More importantly there is no
convention for how to correlate Claude Code telemetry with Coder's own
audit logs and `exectrace` records, so even when both are exported they
end up as two unjoined datasets.

## Change

Adds a `telemetry` input that turns on `CLAUDE_CODE_ENABLE_TELEMETRY`
and the standard OTLP exporter env vars in one place:

```tf
telemetry = {
  enabled       = true
  otlp_endpoint = "http://otel-collector.observability:4317"
  otlp_protocol = "grpc"
  otlp_headers  = { authorization = "Bearer ..." }
  resource_attributes = { "service.name" = "claude-code" }
}
```

When enabled, the module automatically appends `coder.workspace_id`,
`coder.workspace_name`, `coder.workspace_owner` and
`coder.template_name` to `OTEL_RESOURCE_ATTRIBUTES`. This gives a stable
join key between Claude Code spans/metrics and Coder's audit log and
exectrace events on `workspace_id`, so a platform team can answer "show
me every shell command Claude executed in workspace X alongside the
token spend for that session" without custom plumbing.

This is purely additive (`coder_env` resources behind `count`), defaults
to disabled, and is independent of how Claude is launched, so it
composes cleanly with the install-only direction in #861.

## Validation

- `terraform fmt`, `terraform validate`, `terraform test` (19/19) pass
- `bun test -t telemetry` (2/2) pass: env vars are set with the expected
values when enabled, and absent when the input is omitted

Disclosure: I work at Anthropic on the Claude Code team.

---------

Co-authored-by: DevCats <chris@dualriver.com>
Co-authored-by: Atif Ali <me@matifali.dev>
2026-04-29 13:07:30 -05:00
Atif Ali 3494da4924 docs: standardize module data layout under ~/.coder-modules (#869) 2026-04-24 16:29:45 +00:00
Muhammad Atif Ali b78b65e001 fix(claude-code): correct PR URL in migration guide 2026-04-24 21:17:18 +05:00
Atif Ali 124d05fee9 chore(claude-code)!: strip boundary, agentapi, tasks, tools (#861) 2026-04-24 20:56:32 +05:00
Atif Ali 3b64d99fb1 refactor(registry/coder/modules/coder-utils)!: derive names from module_directory (#874)
## Summary

Derives `coder-utils` script names from `module_directory` instead of a
separate `agent_name` input. The `module_directory` already encodes both
the namespace and the module name, so carrying both is redundant and
error-prone. Callers like `claude-code` no longer need to pass
`agent_name`.

Scripts this module materializes lose the `${agent_name}-utils-` prefix
because `module_directory` already namespaces them per-caller.

We will address multiple instances of coder-utils per caller in a future
iteration if needed.

## Versioning Note

Previous tags (`v1.0.0` through `v1.3.0`) have been deleted because no
published module ever consumed them — the module was effectively
unreleased. This PR ships the first real public version as **`v0.0.1`**,
treating it as a fresh start rather than a breaking bump from a version
that was never in production use.

## Changes

- Remove `agent_name` variable.
- Derive `caller_name = "${namespace}-${module_name}"` from
`module_directory`.
- Validate `module_directory` matches
`$HOME/.coder-modules/<namespace>/<module-name>`.
- Rename script files on disk from `${agent_name}-utils-<phase>.sh` to
plain `<phase>.sh`.
- Add a TS test for the `module_directory` validation.
- Ship as `v0.0.1` (first published version; all prior tags removed).

## Breaking Changes

| Before | After |
|---|---|
| `agent_name = "myagent"` | removed (derived from `module_directory`) |
| `module_directory = ".my-module"` | `module_directory =
"$HOME/.coder-modules/<ns>/<name>"` (validated) |
| Script files `${agent_name}-utils-install.sh` | `install.sh` |
| Script sync names `${agent_name}-install_script` |
`${namespace}-${module_name}-install_script` |

No callers were depending on the old format (prior tags were
unpublished).

## Validation

- `terraform fmt -recursive` clean
- `terraform validate` clean
- `terraform test` → 17/17 pass
- `bun test registry/coder/modules/coder-utils` → 5/5 pass
- `prettier --check` clean

## Consumer

coder/registry#861 (`claude-code`) consumes this and is currently pinned
to the commit SHA until this merges and ships as `v0.0.1`.

> 🤖 This PR was created with the help of Coder Agents, and needs a human
review. 🧑‍💻
2026-04-24 17:16:10 +05:00
Atif Ali 22e574926e feat(coder-utils): nest scripts under module_directory/scripts (#871)
## Summary

Move script files from the flat `${module_directory}` to a `scripts/`
subdirectory, and prefix each script's filename with
`${agent_name}-utils-` so multiple `coder-utils` instances can safely
share a `module_directory`. Mirrors the layout #870 established for
`logs/` and aligns with the Module Data Layout standard in `AGENTS.md`
(#869).

## Changes

- Compute `local.scripts_directory = "${var.module_directory}/scripts"`
and use it for every `*.sh` path.
- Script filenames are now
`${agent_name}-utils-{pre_install,install,post_install,start}.sh` so two
`coder-utils` instances don't collide on disk.
- Pre-install and install `coder_script`s `mkdir -p` the `scripts/`
sub-path before writing their `.sh`; post-install and start sync-depend
on install, so the directory already exists by the time they run.
- Update the `module_directory` description to call out the nested
`scripts/` and `logs/` paths.
- Add `test_scripts_nested_under_module_directory` asserting the new
paths (including the `${agent_name}-utils-` prefix) and the `mkdir -p`
in each script.
- README: add a "Script file locations" section documenting the new
layout.
- Bump module version to `v1.3.0`.

## Breaking Changes

Consumers reading `${module_directory}/install.sh` (and friends)
directly must look under
`${module_directory}/scripts/${agent_name}-utils-install.sh` instead. No
in-repo consumers exist today.

## Validation

- `terraform fmt -recursive` clean
- `terraform validate` clean
- `terraform test` → 16/16 pass (includes the new
`test_scripts_nested_under_module_directory`)
- `bun test main.test.ts` → 5/5 pass
- `prettier --check` clean

> 🤖 This PR was created with the help of Coder Agents, and needs a human
review. 🧑‍💻
2026-04-23 21:46:59 +05:00
Atif Ali f3475c061e feat(coder-utils): nest logs under module_directory/logs (#870) 2026-04-23 11:40:29 +05:00
35C4n0r 39f332fcaf feat(registry/coder/modules/coder-utils): make install_script and start_script optional (#842)
Co-authored-by: Jay Kumar <jay.kumar@coder.com>
Co-authored-by: Atif Ali <atif@coder.com>
2026-04-22 22:53:38 +05:00
Harsh Singh Panwar b108185c14 feature (jetbrains-plugins): add module for installing jetbrains plugin (#772)
Co-authored-by: DevCats <christofer@coder.com>
Co-authored-by: DevCats <chris@dualriver.com>
2026-04-22 08:47:53 +05:00
joergklein b72577707c feat(templates): add docker-texlive template with code-server (#828)
## Description

<!-- Briefly describe what this PR does and why -->

## Type of Change

- [ ] New module
- [x] New template
- [ ] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Template Information

**Path:** `registry/joergklein/templates/docker-texlive`

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues

<!-- Link related issues or write "None" if not applicable -->

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: DevCats <chris@dualriver.com>
Co-authored-by: Atif Ali <atif@coder.com>
Co-authored-by: DevelopmentCats <christofer@coder.com>
2026-04-20 21:03:12 +00:00
dependabot[bot] 9c01790131 chore(deps): bump the github-actions group with 3 updates (#854)
Bumps the github-actions group with 3 updates:
[coder/coder](https://github.com/coder/coder),
[crate-ci/typos](https://github.com/crate-ci/typos) and
[zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action).

Updates `coder/coder` from 2.31.9 to 2.32.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/coder/coder/releases">coder/coder's
releases</a>.</em></p>
<blockquote>
<h2>v2.32.0</h2>
<h2>Changelog</h2>
<blockquote>
<p>[!NOTE]
This is a mainline Coder release. We advise enterprise customers without
a staging environment to install our <a
href="https://github.com/coder/coder/releases/latest">latest stable
release</a> while we refine this version. Learn more about our <a
href="https://coder.com/docs/install/releases">Release Schedule</a>.</p>
</blockquote>
<h3>BREAKING CHANGES</h3>
<ul>
<li>
<p>chore!: remove members' ability to read their own AI Bridge
interceptions (<a
href="https://redirect.github.com/coder/coder/pull/23320">#23320</a>)</p>
<blockquote>
<p>Regular users (non-owners, non-auditors) can no longer read AI Bridge
interception data, including their own. Only owners and auditors retain
read access. This tightens the RBAC surface to prevent insiders from
observing what data is tracked.</p>
</blockquote>
</li>
<li>
<p>fix(cli)!: <code>coder groups list -o json</code> output structure
changed (<a
href="https://redirect.github.com/coder/coder/pull/22923">#22923</a>)</p>
<blockquote>
<p>The JSON output is now a flat structure matching other <code>coder
list -o json</code> commands. Previously this command returned empty
zero-value structs due to a bug, so no working consumer of the old
format could exist.</p>
</blockquote>
</li>
</ul>
<h3>DEPRECATIONS</h3>
<ul>
<li>AI Gateway (previously known as AI Bridge): injected MCP tools are
now deprecated (<a
href="https://redirect.github.com/coder/coder/pull/23031">#23031</a>);
this feature will remain functional but will be replaced with an MCP
Gateway in a future release.</li>
</ul>
<h3>Features</h3>
<h4>Coder Agents</h4>
<p><a href="https://coder.com/docs/ai-coder/agents">Coder Agents</a> is
newly introduced in Early Access. See our <a
href="https://coder.com/docs/ai-coder/agents/getting-started">getting
started guide</a> to enable and start using it.</p>
<ul>
<li>Voice-to-text input in agent chat (<a
href="https://redirect.github.com/coder/coder/pull/23022">#23022</a>)</li>
<li>Pinned chats with drag-to-reorder in the sidebar (<a
href="https://redirect.github.com/coder/coder/pull/23615">#23615</a>)</li>
<li>Chat cost analytics dashboard for admins — tracks spend, model
usage, and trends (<a
href="https://redirect.github.com/coder/coder/pull/23037">#23037</a>, <a
href="https://redirect.github.com/coder/coder/pull/23215">#23215</a>)</li>
<li>PR Insights analytics dashboard — shows PRs created/merged by AI
agents, merge rates, lines shipped, cost per merged PR (<a
href="https://redirect.github.com/coder/coder/pull/23215">#23215</a>)</li>
<li>Agent desktop recordings — record and replay agent desktop sessions
(<a
href="https://redirect.github.com/coder/coder/pull/23894">#23894</a>, <a
href="https://redirect.github.com/coder/coder/pull/23895">#23895</a>)</li>
<li>Per-chat system prompt override per conversation (<a
href="https://redirect.github.com/coder/coder/pull/24053">#24053</a>)</li>
<li>Chat spend limits with inline usage indicator (<a
href="https://redirect.github.com/coder/coder/pull/23071">#23071</a>, <a
href="https://redirect.github.com/coder/coder/pull/23072">#23072</a>) —
configurable via <a
href="https://coder.com/docs/ai-coder/agents/platform-controls">platform
controls</a></li>
<li>Per-user per-model compaction threshold overrides (<a
href="https://redirect.github.com/coder/coder/pull/23412">#23412</a>)</li>
<li>Skills — agents read context files and discover skills locally;
skills persist as message parts (<a
href="https://redirect.github.com/coder/coder/pull/23935">#23935</a>, <a
href="https://redirect.github.com/coder/coder/pull/23748">#23748</a>) —
see <a
href="https://coder.com/docs/ai-coder/agents/extending-agents">extending
agents</a></li>
<li>Suffix-based agent selection — select an agent model by name suffix
(<a
href="https://redirect.github.com/coder/coder/pull/23741">#23741</a>)</li>
<li>Provider key policies and per-user provider settings (<a
href="https://redirect.github.com/coder/coder/pull/23751">#23751</a>) —
see <a href="https://coder.com/docs/ai-coder/agents/models">models &amp;
providers</a></li>
<li>Manual chat title regeneration (<a
href="https://redirect.github.com/coder/coder/pull/23633">#23633</a>)</li>
<li>Chat read/unread indicator in sidebar (<a
href="https://redirect.github.com/coder/coder/pull/23129">#23129</a>)</li>
<li>Chat labels (<a
href="https://redirect.github.com/coder/coder/pull/23594">#23594</a>)</li>
<li>Workspace and agent badges in chat top bar and workspace list (<a
href="https://redirect.github.com/coder/coder/pull/23964">#23964</a>, <a
href="https://redirect.github.com/coder/coder/pull/23453">#23453</a>)</li>
<li>File/image attachments in chat input; large pasted text
auto-converts to file attachments (<a
href="https://redirect.github.com/coder/coder/pull/22604">#22604</a>, <a
href="https://redirect.github.com/coder/coder/pull/23379">#23379</a>)</li>
<li>Inline file reference rendering in user messages (<a
href="https://redirect.github.com/coder/coder/pull/23131">#23131</a>)</li>
<li><code>propose_plan</code> tool for markdown plan proposals (<a
href="https://redirect.github.com/coder/coder/pull/23452">#23452</a>)</li>
<li>Provider-native web search tools in agent chats (<a
href="https://redirect.github.com/coder/coder/pull/22909">#22909</a>)</li>
<li>Workspace awareness system message automatically included on chat
creation (<a
href="https://redirect.github.com/coder/coder/pull/23213">#23213</a>)</li>
<li>Workspace TTL automatically extended on chat heartbeat (<a
href="https://redirect.github.com/coder/coder/pull/23314">#23314</a>)</li>
<li>Global chat workspace TTL deployment-wide setting (<a
href="https://redirect.github.com/coder/coder/pull/23265">#23265</a>)</li>
<li>Template allowlist for chats — restrict which templates agents can
create workspaces from (<a
href="https://redirect.github.com/coder/coder/pull/23262">#23262</a>)</li>
<li>Chat-access site-wide role to gate chat creation (<a
href="https://redirect.github.com/coder/coder/pull/23724">#23724</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/coder/coder/commit/34584e909bbe6f501fb2cbdc994325b4d3f9e2ef"><code>34584e9</code></a>
fix: update to our fork of charm.land/fantasy with appendCompact perf
improve...</li>
<li><a
href="https://github.com/coder/coder/commit/2625056e7108bc66557b67188422b9b924db3b74"><code>2625056</code></a>
fix: backport Go 1.25.9 and dependency fixes (<a
href="https://redirect.github.com/coder/coder/issues/24330">#24330</a>)</li>
<li><a
href="https://github.com/coder/coder/commit/bd1568b0b7ab9164fbe46699403e69c5260c71e5"><code>bd1568b</code></a>
fix: bump coder/tailscale to pick up RTM_MISS fix (cherry-pick <a
href="https://redirect.github.com/coder/coder/issues/24187">#24187</a>)
(<a
href="https://redirect.github.com/coder/coder/issues/24214">#24214</a>)</li>
<li><a
href="https://github.com/coder/coder/commit/eb2b1d3a8ba38d9b531e4db405b4c3effe79d136"><code>eb2b1d3</code></a>
fix: update directory for terraform-managed subagents (<a
href="https://redirect.github.com/coder/coder/issues/24220">#24220</a>)
(<a
href="https://redirect.github.com/coder/coder/issues/24242">#24242</a>)</li>
<li><a
href="https://github.com/coder/coder/commit/9626fdacad9e12107d173bb19a1d71b666ca0de1"><code>9626fda</code></a>
fix(cli): retry dial timeouts in SSH connection setup (<a
href="https://redirect.github.com/coder/coder/issues/24199">#24199</a>)
(<a
href="https://redirect.github.com/coder/coder/issues/24229">#24229</a>)</li>
<li><a
href="https://github.com/coder/coder/commit/52190f032d6f002f5efa2a063c7d99399cabfec8"><code>52190f0</code></a>
fix: revert auto-assign agents-access role enabled (<a
href="https://redirect.github.com/coder/coder/issues/24170">#24170</a>)
(<a
href="https://redirect.github.com/coder/coder/issues/24186">#24186</a>)</li>
<li><a
href="https://github.com/coder/coder/commit/8d4148b1986008ed3b9b1cdbc13c35473a7c648b"><code>8d4148b</code></a>
chore: remove kyleosophy easter egg (<a
href="https://redirect.github.com/coder/coder/issues/24174">#24174</a>)</li>
<li><a
href="https://github.com/coder/coder/commit/d3bdd5d1535db5f713634cf781500cae0bddb2ae"><code>d3bdd5d</code></a>
feat: add httproute (<a
href="https://redirect.github.com/coder/coder/issues/23501">#23501</a>)
(<a
href="https://redirect.github.com/coder/coder/issues/24172">#24172</a>)</li>
<li><a
href="https://github.com/coder/coder/commit/727ec00f7f693a4edb513013f356340a8acf7564"><code>727ec00</code></a>
chore: revert force deploying main (<a
href="https://redirect.github.com/coder/coder/issues/23290">#23290</a>)
(<a
href="https://redirect.github.com/coder/coder/issues/24072">#24072</a>)
(<a
href="https://redirect.github.com/coder/coder/issues/24166">#24166</a>)</li>
<li><a
href="https://github.com/coder/coder/commit/89a0ee3d1d2f61970b2f0856622ca6693eeb62dc"><code>89a0ee3</code></a>
feat: support disabling reverse/local port forwarding in agent SSH
server (<a
href="https://redirect.github.com/coder/coder/issues/2">#2</a>...</li>
<li>Additional commits viewable in <a
href="https://github.com/coder/coder/compare/2f5d21d1be7864b3e21d9c0b8e87d3ba229a1140...34584e909bbe6f501fb2cbdc994325b4d3f9e2ef">compare
view</a></li>
</ul>
</details>
<br />

Updates `crate-ci/typos` from 1.45.0 to 1.45.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/releases">crate-ci/typos's
releases</a>.</em></p>
<blockquote>
<h2>v1.45.1</h2>
<h2>[1.45.1] - 2026-04-13</h2>
<h3>Fixes</h3>
<ul>
<li><em>(action)</em> Use a temp dir for caching</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's
changelog</a>.</em></p>
<blockquote>
<h1>Change Log</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>The format is based on <a href="https://keepachangelog.com/">Keep a
Changelog</a>
and this project adheres to <a href="https://semver.org/">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased] - ReleaseDate</h2>
<h2>[1.45.1] - 2026-04-13</h2>
<h3>Fixes</h3>
<ul>
<li><em>(action)</em> Use a temp dir for caching</li>
</ul>
<h2>[1.45.0] - 2026-04-01</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1509">March
2026</a> changes</li>
</ul>
<h2>[1.44.0] - 2026-02-27</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1488">February
2026</a> changes</li>
</ul>
<h2>[1.43.5] - 2026-02-16</h2>
<h3>Fixes</h3>
<ul>
<li><em>(pypi)</em> Hopefully fix the sdist build</li>
</ul>
<h2>[1.43.4] - 2026-02-09</h2>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>pincher</code></li>
</ul>
<h2>[1.43.3] - 2026-02-06</h2>
<h3>Fixes</h3>
<ul>
<li><em>(action)</em> Adjust how typos are reported to github</li>
</ul>
<h2>[1.43.2] - 2026-02-05</h2>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>certifi</code> in Python</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/crate-ci/typos/commit/cf5f1c29a8ac336af8568821ec41919923b05a83"><code>cf5f1c2</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/485d42553ebf5bd9c810c24c6521bf608d663e70"><code>485d425</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/crate-ci/typos/commit/2fe77ce0ce53ef0ba47e9b371fef1a949baaff3a"><code>2fe77ce</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1539">#1539</a>
from epage/action</li>
<li><a
href="https://github.com/crate-ci/typos/commit/a9595eaf0cc3266bd7fa5c3b2ec7e2a5f3685d18"><code>a9595ea</code></a>
fix(action): Leave binary in temp dir</li>
<li>See full diff in <a
href="https://github.com/crate-ci/typos/compare/02ea592e44b3a53c302f697cddca7641cd051c3d...cf5f1c29a8ac336af8568821ec41919923b05a83">compare
view</a></li>
</ul>
</details>
<br />

Updates `zizmorcore/zizmor-action` from 0.5.2 to 0.5.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/zizmorcore/zizmor-action/releases">zizmorcore/zizmor-action's
releases</a>.</em></p>
<blockquote>
<h2>v0.5.3</h2>
<h2>What's Changed</h2>
<ul>
<li><code>1.24.0</code> and <code>1.24.1</code> are now available via
the action</li>
<li><code>1.24.1</code> is now the default version of zizmor used by the
action</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/zizmorcore/zizmor-action/compare/v0.5.2...v0.5.3">https://github.com/zizmorcore/zizmor-action/compare/v0.5.2...v0.5.3</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/b1d7e1fb5de872772f31590499237e7cce841e8e"><code>b1d7e1f</code></a>
Sync zizmor versions (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/102">#102</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/a195b57475917ddcb70845e5ffe1c3a15dbbdedc"><code>a195b57</code></a>
Sync zizmor versions (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/100">#100</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/629d5d01fe5939a6aeae25c1bd1acd2cfa28e9b2"><code>629d5d0</code></a>
chore(deps): bump github/codeql-action in the github-actions group (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/99">#99</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/453d591467e8199b1d5c6883b6ec5c22a12aac72"><code>453d591</code></a>
chore(deps): bump the github-actions group with 2 updates (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/98">#98</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/ea2c18b942410df0b22bed3b94c361c407518d45"><code>ea2c18b</code></a>
Bump pins (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/97">#97</a>)</li>
<li>See full diff in <a
href="https://github.com/zizmorcore/zizmor-action/compare/71321a20a9ded102f6e9ce5718a2fcec2c4f70d8...b1d7e1fb5de872772f31590499237e7cce841e8e">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-20 08:07:50 +00:00
Atif Ali b9f9fac9ee chore: update devcontainers icon (#850)
Updates the devcontainers icon to use the [Microsoft Fluent UI
`ic_fluent_cube_32_filled`](https://github.com/microsoft/fluentui-system-icons/blob/78c9587b995299d5bfc007a0077773556ecb0994/assets/Cube/SVG/ic_fluent_cube_32_filled.svg),
consistent with
[coder/coder#24478](https://github.com/coder/coder/pull/24478).

> 🤖 This PR was created with the help of Coder Agents, and needs a human
review. 🧑💻
2026-04-17 18:35:43 +05:00
dependabot[bot] c724684589 chore(deps): bump the github-actions group with 2 updates (#841)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-13 12:48:07 +05:00
Atif Ali b76b544e78 feat(jetbrains): skip HTTP calls when ide_config is set (#836)
Fixes #835

## Problem

The `data "http"` resource always fires for every selected IDE, even
when the user has pinned versions via `ide_config`. In air-gapped or
caching scenarios, this causes:

- **30-second hangs** when `releases_base_link` is set to a dummy URL
like `https://localhost`
- **Fatal errors** with `https://localhost:1` (connection refused)
- The documented "air-gapped fallback" via `try()` never actually worked
— the `http` data source fails before `try()` can catch anything

## Fix

When `ide_config` is provided, the module now skips all HTTP calls and
uses the pinned build numbers directly.

| Scenario | `ide_config` | HTTP calls | Build source | On API failure |
|---|---|---|---|---|
| User wants latest | `null` (default) | Yes | JetBrains API | Terraform
error (fail loudly) |
| User pins versions | Set | **None** | `ide_config.build` | N/A |

### Changes

- `ide_config` default changed from a full map to `null`
- `name` and `icon` are now `optional(string)` in `ide_config` — falls
back to built-in metadata
- `data.http.jetbrains_ide_versions` `for_each` is empty when
`ide_config` is set
- Static `ide_metadata` local provides name/icon when `ide_config` is
null
- Removed `try()` fallback from `parsed_responses` — API errors are now
explicit instead of silently using stale builds
- Cross-variable validation rejects `major_version`, `channel`, and
`releases_base_link` when `ide_config` is set
- Validation for `ide_config ⊇ default` added (previously only
`ide_config ⊇ options` was checked)
- Version bumped `1.3.1` → `1.4.0`

### Usage

```tf
module "jetbrains" {
  source   = "registry.coder.com/coder/jetbrains/coder"
  version  = "1.4.0"
  agent_id = coder_agent.main.id
  folder   = "/home/coder/project"

  # Zero HTTP calls — only build is required.
  ide_config = {
    "GO" = { build = "261.22158.291" }
    "PY" = { build = "261.22158.340" }
  }
  options = ["GO", "PY"]
}
```

> 🤖 This PR was created with the help of Coder Agents, and needs a human
review. 🧑‍💻
2026-04-09 12:28:57 +05:00
Max Schwenk d3885a5047 feat: add auto permission mode to claude-code module (#830)
## Summary
- Add `auto` as a valid `permission_mode` for the claude-code module,
passing `--enable-auto-mode` to the CLI when selected
- Fix bypass permissions TOS prompt appearing interactively by
pre-seeding `bypassPermissionsModeAccepted` in `~/.claude.json` during
install (workaround for
https://github.com/anthropics/claude-code/issues/25503)
- Bump version `4.8.2` → `4.9.0`

## Test plan
- [x] All 19 terraform tests pass (`terraform test -verbose`)
- [x] Added `test_claude_code_auto_permission_mode` tftest
- [x] Added `claude-auto-permission-mode` TypeScript test verifying both
`--permission-mode auto` and `--enable-auto-mode` are passed
- [ ] Container test with auto mode (requires Linux/Colima)
- [ ] Verify bypass permissions TOS prompt no longer appears on task
startup

🤖 Generated with Claude Code using Claude Opus 4.6

---------

Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: DevCats <christofer@coder.com>
2026-04-07 13:59:36 -05:00
dependabot[bot] de7bd01021 chore(deps): bump the github-actions group with 2 updates (#834)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-06 22:10:34 +05:00
Atif Ali 494ad9bd48 fix(copilot): remove hardcoded model enum to allow any Copilot model (#833)
The `copilot_model` variable was restricted to a hardcoded enum of three
models (`claude-sonnet-4`, `claude-sonnet-4.5`, `gpt-5`). Models change
fast and this validation was blocking users from using newer models.

## Changes

- Remove `validation` block from `copilot_model` variable in `main.tf`
- Update variable description to indicate any Copilot-supported model
can be used
- Replace enum validation test with a test that verifies arbitrary model
strings are accepted
- Bump module version to `0.4.1` in README examples

Closes #832

> 🤖 This PR was created with the help of Coder Agents, and needs a human
review. 🧑‍💻
2026-04-05 00:42:33 +05:00
Phorcys 5ee68d04d1 feat: add mcp_config input variable to vscode-desktop-core module (#753)
## Description

Standardizes handling of `mcp` variables in VSCode Desktop-based
modules.
Made modular enough to pave the way for setting other config files than
`mcp_server.json` and `mcp.json`.

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

---------

Co-authored-by: DevCats <christofer@coder.com>
Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
2026-04-03 13:29:46 -05:00
blinkagent[bot] 516a934694 feat(claude-code): wire web_app variable through to agentapi module (#831)
Follow-up to #764.

Now that the `agentapi` module `v2.4.0` is published with `web_app`
support, this PR completes the wiring:

## Changes

### `claude-code/main.tf`
- Bump agentapi dependency from `v2.3.0` → `v2.4.0`
- Replace `# TODO: pass web_app = var.web_app once agentapi module is
published with web_app support` with `web_app = var.web_app`

### `claude-code/README.md`
- Bump version references from `4.9.0` → `4.9.1`

## Result

Setting `web_app = false` on the `claude-code` module now correctly
passes through to the `agentapi` module, hiding the web UI app icon from
the Coder dashboard while still running AgentAPI. The task-safe behavior
(auto-enabling for `coder_ai_task`) is handled by the `agentapi` module.

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
2026-04-03 12:19:05 -05:00
blinkagent[bot] 344b02e4ab feat(agentapi,claude-code): add web_app variable to disable the web app (#764)
Adds a `web_app` variable (default: `true`) to both the `claude-code`
and `agentapi` modules. When set to `false`, AgentAPI still runs but the
web UI app icon is not shown in the Coder dashboard.

This mirrors the existing `cli_app` toggle pattern.

## Changes

### `agentapi` module
- New `web_app` variable (bool, default `true`)
- `coder_app.agentapi_web` now has `count = local.web_app ? 1 : 0`
- **Task-safe:** `local.web_app` is computed as `var.web_app ||
local.is_task`, where `is_task = try(data.coder_task.me.enabled,
false)`. This means the web app is always created when the workspace is
a Task, regardless of the `web_app` variable.
- `task_app_id` output returns `""` when `local.web_app` is `false`

### `claude-code` module
- New `web_app` variable (bool, default `true`)
- `TODO` comment to wire `web_app` through to agentapi once published

## Usage (once fully wired)

```hcl
module "claude-code" {
  source  = "registry.coder.com/coder/claude-code/coder"
  ...
  web_app = false  # hides the Claude Code web UI from the dashboard
}
```

Setting `web_app = false` is safe even in templates that use
`coder_ai_task` — the module detects Tasks via
`data.coder_task.me.enabled` and automatically enables the web app.

## Merge strategy

This needs to land in two steps:
1. **Merge this PR** — publishes the agentapi module with `web_app`
support, and adds the `web_app` variable to claude-code (not yet wired
through)
2. **Follow-up PR** — bump the agentapi version in claude-code and
replace the `TODO` with `web_app = var.web_app`

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: DevCats <christofer@coder.com>
2026-04-03 12:00:02 -05:00
Seth Shelnutt 31a07ac823 feat(templates): add docker-rstudio template with code-server and RMarkdown (#819)
## New Template: docker-rstudio

Adds a Docker-based template for R development workspaces.

### What it provides

| Tool | Source | Access |
|------|--------|--------|
| **RStudio Server** | Pre-installed in `rocker/rstudio` image | Browser
via Coder proxy (subdomain) |
| **code-server** | `registry.coder.com/coder/code-server/coder` module
| Browser via Coder proxy |
| **RMarkdown** | Installed on first start, persisted in home-dir R
library | Available in both RStudio and code-server |

### Design decisions

<details>
<summary>Click to expand</summary>

- **`rocker/rstudio` as the base image** instead of
`codercom/enterprise-base:ubuntu` + the `rstudio-server` module. The
module runs RStudio inside a nested Docker container which requires
Docker-in-Docker or socket mounting in the workspace. Using the rocker
image directly avoids that complexity and starts faster since R and
RStudio are already installed.
- **Direct `coder_app` for RStudio** rather than the registry
`rstudio-server` module, because the module is designed for Docker-based
provisioning (it pulls and runs a rocker container). Since the workspace
itself _is_ the rocker container, RStudio Server is started natively via
`rserver`.
- **RMarkdown installed idempotently** — the startup script checks
`require('rmarkdown')` before installing. Since R libraries default to a
subdirectory under `/home/rstudio` (the persistent volume), packages
survive workspace restarts.
- **Persistent volume mounted at `/home/rstudio`** to match the default
user in the rocker image.
- **`--auth-none=1`** disables RStudio authentication since the Coder
proxy handles access control.

</details>

### Files added

- `registry/coder/templates/docker-rstudio/main.tf`
- `registry/coder/templates/docker-rstudio/README.md`

### Validation

- `go run ./cmd/readmevalidation/` — passes (32 templates detected)
- `terraform fmt` — clean
- `bun run fmt` — all files unchanged

---------

Co-authored-by: DevCats <christofer@coder.com>
Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
2026-04-03 11:51:35 -05:00
DevCats 5973739f41 feat: add coder-modules and coder-templates skills for creating and updating modules and templates (#813)
## Description

Add two Claude Code skills for the Coder Registry: `coder-modules` and
`coder-templates`. These skills guide AI agents through creating and
updating registry modules and workspace templates, covering scaffolding,
Terraform patterns, testing, README standards, icon management, version
bumps, and newer features like presets, prebuilds, and task-oriented
templates.
2026-04-02 20:14:59 +00:00
DevCats ad61bddfb2 chore: fix module reference in coder-utils (#826)
## Description

fix module reference in coder-utils
<!-- Briefly describe what this PR does and why -->

## Type of Change

- [ ] New module
- [ ] New template
- [x] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information


**Path:** `registry/coder/modules/coder-utils`  
**New version:** `v1.0.1`  
**Breaking change:** [ ] Yes [x] No

## Testing & Validation

- [X] Tests pass (`bun test`)
- [X] Code formatted (`bun fmt`)
- [X] Changes tested locally

## Related Issues

<!-- Link related issues or write "None" if not applicable -->
2026-04-02 07:56:09 -05:00
Ben Potter eea5b24e3d fix: onepassword module resource naming and add demo screenshot (#827)
Fixes `coder_script "1password"` → `coder_script "onepassword"` since
Terraform resource names cannot start with a digit. Adds a demo
screenshot showing the template variables page and `op whoami` working
in a workspace. Bumps version to 1.0.2.
2026-04-01 17:56:45 -05:00
Ben Potter ee035ee9b9 fix: use 1Password brand blue icon for dark background visibility (#825)
The 1Password icon was black on transparent, making it invisible on the
registry's dark cards. Replaced with 1Password brand blue (`#0572EC`)
circle + white keyhole.
2026-04-01 18:55:22 +00:00
Ben Potter 5bc668aa4d feat: add 1password module under bpmct namespace (#824)
Adds a 1Password module under the `bpmct` namespace.

## What it does

Installs the [1Password CLI](https://developer.1password.com/docs/cli/)
(`op`) into Coder workspaces at startup. Two auth paths:

- **Service account token** — set `service_account_token` and
`OP_SERVICE_ACCOUNT_TOKEN` is injected automatically. Fully headless.
- **Personal account** — set `account_address`, `account_email`,
`account_secret_key` to pre-register the account. User runs `op signin`
in their terminal.

Optionally installs the [1Password VS Code
extension](https://marketplace.visualstudio.com/items?itemName=1Password.op-vscode)
(`1Password.op-vscode`) for code-server and VS Code with
`install_vscode_extension = true`.

Supports `pre_install_script` and `post_install_script` for custom
orchestration.

## What's included

- `registry/bpmct/` — new namespace (Ben Potter, community)
- `registry/bpmct/modules/1password/` — the module (`main.tf`, `run.sh`,
`README.md`)
- `.icons/1password.svg` — 1Password logo from Simple Icons

## Tested

Spun up a dev Coder instance, pushed the template with a real 1Password
service account token, created a workspace, and confirmed:

- `op` CLI installs and authenticates
- `op vault list` returns vaults
- `1Password.op-vscode` extension installs in code-server

---------

Co-authored-by: DevCats <christofer@coder.com>
2026-04-01 18:38:27 +00:00
DevCats caaff0c1e9 chore: rename agent-helper to coder-helper (#816)
## Description

Change `agent-helper` to `coder-utils`

The current tag for agent-helper needs to be deleted before this PR is
merged.

## Type of Change

- [x] New module - kinda..
- [ ] New template
- [ ] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [x] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder/modules/coder-utils`  
**New version:** `v1.0.0`  
**Breaking change:** [X] Yes [ ] No ( Module name is changing, but this
is not nested in any modules yet )

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related 

https://github.com/coder/registry/pull/802
2026-04-01 18:31:36 +00:00
blinkagent[bot] 057d7396ea fix(jetbrains): correct version bump to patch (1.3.1) instead of minor (1.4.0) (#823)
PR #822 bumped the jetbrains module version from `1.3.0` to `1.4.0`
(minor), but the change was a bugfix and should have been a patch bump.

This corrects all 7 version references in the README from `1.4.0` to
`1.3.1`.

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
2026-04-01 10:40:29 -05:00
Atif Ali fc66478b94 fix(jetbrains): scope HTTP version fetch to selected IDEs only (#822)
## Problem

The `data "http" "jetbrains_ide_versions"` resource fetches release info
from `data.services.jetbrains.com` for **all configured IDE options** at
plan time, regardless of what the user actually selected. When the API
is unreachable (air-gapped environments, DNS failures, transient
outages), this causes a fatal Terraform error that blocks the workspace
build — even when no JetBrains IDEs were selected.

## Fix

Changed the `for_each` on the HTTP data source (and all dependent
locals) from iterating over `var.options`/`var.default` to
`local.selected_ides` — the user's actual selection.

| Scenario | Before | After |
|---|---|---|
| No IDEs selected (`[]`) | 9 HTTP requests | 0 HTTP requests |
| 1 IDE selected (`["GO"]`) | 9 HTTP requests | 1 HTTP request |
| All IDEs selected | 9 HTTP requests | 9 HTTP requests |

## Validation

- All 17 existing `terraform test` cases pass
- Tested end-to-end on [dev.coder.com](https://dev.coder.com) with
Docker template:
  - `jetbrains_ides=[]` — zero HTTP requests, build succeeds
- `jetbrains_ides=["GO"]` — single HTTP request for GoLand only,
`coder_app.jetbrains["GO"]` created

Closes #821

> 🤖 This PR was created with the help of Coder Agents, and needs a human
review. 🧑💻
2026-04-01 10:33:03 -05:00
Charlie Voiselle 19f6dc947f fix: correct description for 'Install multiple extensions' example in code-server module documentation (#817)
## Description

Update incorrect documentation element for **Install multiple extensions**

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [ ] Feature/enhancement
- [x] Documentation
- [ ] Other

## Related Issues

None
2026-03-30 14:08:06 -04:00
dependabot[bot] 962cd16efd chore(deps): bump the github-actions group with 2 updates (#820)
Bumps the github-actions group with 2 updates:
[coder/coder](https://github.com/coder/coder) and
[actions/setup-go](https://github.com/actions/setup-go).

Updates `coder/coder` from 2.31.5 to 2.31.6
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/coder/coder/releases">coder/coder's
releases</a>.</em></p>
<blockquote>
<h2>v2.31.6</h2>
<h2>Changelog</h2>
<blockquote>
<p>[!NOTE]
This is a mainline Coder release. We advise enterprise customers without
a staging environment to install our <a
href="https://github.com/coder/coder/releases/latest">latest stable
release</a> while we refine this version. Learn more about our <a
href="https://coder.com/docs/install/releases">Release Schedule</a>.</p>
</blockquote>
<h3>Bug fixes</h3>
<ul>
<li>Open coder_app links in new tab when open_in is tab (<a
href="https://redirect.github.com/coder/coder/issues/23000">#23000</a>,
e419eb310)</li>
</ul>
<h3>Chores</h3>
<ul>
<li>Switch agent gone response from 502 to 404 (backport <a
href="https://redirect.github.com/coder/coder/issues/23090">#23090</a>)
(<a
href="https://redirect.github.com/coder/coder/issues/23635">#23635</a>,
f7650296c)</li>
</ul>
<p>Compare: <a
href="https://github.com/coder/coder/compare/v2.31.5...v2.31.6"><code>v2.31.5...v2.31.6</code></a></p>
<h2>Container image</h2>
<ul>
<li><code>docker pull ghcr.io/coder/coder:2.31.6</code></li>
</ul>
<h2>Install/upgrade</h2>
<p>Refer to our docs to <a
href="https://coder.com/docs/install">install</a> or <a
href="https://coder.com/docs/install/upgrade">upgrade</a> Coder, or use
a release asset below.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/coder/coder/commit/f7650296ceb9b020c79cd525ac7bd3c7f252ae1d"><code>f765029</code></a>
chore: switch agent gone response from 502 to 404 (backport <a
href="https://redirect.github.com/coder/coder/issues/23090">#23090</a>)
(<a
href="https://redirect.github.com/coder/coder/issues/23635">#23635</a>)</li>
<li><a
href="https://github.com/coder/coder/commit/e419eb31019520018de8b643344faaf6b3af4be8"><code>e419eb3</code></a>
fix: open coder_app links in new tab when open_in is tab (cherry-pick <a
href="https://redirect.github.com/coder/coder/issues/23000">#23000</a>)...</li>
<li>See full diff in <a
href="https://github.com/coder/coder/compare/1a774ab7ce99063a2e01beb94de3fcbccaf84dbe...f7650296ceb9b020c79cd525ac7bd3c7f252ae1d">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/setup-go` from 6.3.0 to 6.4.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/setup-go/releases">actions/setup-go's
releases</a>.</em></p>
<blockquote>
<h2>v6.4.0</h2>
<h2>What's Changed</h2>
<h3>Enhancement</h3>
<ul>
<li>Add go-download-base-url input for custom Go distributions by <a
href="https://github.com/gdams"><code>@​gdams</code></a> in <a
href="https://redirect.github.com/actions/setup-go/pull/721">actions/setup-go#721</a></li>
</ul>
<h3>Dependency update</h3>
<ul>
<li>Upgrade minimatch from 3.1.2 to 3.1.5 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-go/pull/727">actions/setup-go#727</a></li>
</ul>
<h3>Documentation update</h3>
<ul>
<li>Rearrange README.md, add advanced-usage.md by <a
href="https://github.com/priyagupta108"><code>@​priyagupta108</code></a>
in <a
href="https://redirect.github.com/actions/setup-go/pull/724">actions/setup-go#724</a></li>
<li>Fix Microsoft build of Go link by <a
href="https://github.com/gdams"><code>@​gdams</code></a> in <a
href="https://redirect.github.com/actions/setup-go/pull/734">actions/setup-go#734</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/gdams"><code>@​gdams</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/setup-go/pull/721">actions/setup-go#721</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-go/compare/v6...v6.4.0">https://github.com/actions/setup-go/compare/v6...v6.4.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/setup-go/commit/4a3601121dd01d1626a1e23e37211e3254c1c06c"><code>4a36011</code></a>
docs: fix Microsoft build of Go link (<a
href="https://redirect.github.com/actions/setup-go/issues/734">#734</a>)</li>
<li><a
href="https://github.com/actions/setup-go/commit/8f19afcc704763637be6b1718da0af52ca05785d"><code>8f19afc</code></a>
feat: add go-download-base-url input for custom Go distributions (<a
href="https://redirect.github.com/actions/setup-go/issues/721">#721</a>)</li>
<li><a
href="https://github.com/actions/setup-go/commit/27fdb267c15a8835f1ead03dfa07f89be2bb741a"><code>27fdb26</code></a>
Bump minimatch from 3.1.2 to 3.1.5 (<a
href="https://redirect.github.com/actions/setup-go/issues/727">#727</a>)</li>
<li><a
href="https://github.com/actions/setup-go/commit/def8c394e3ad351a79bc93815e4a585520fe993b"><code>def8c39</code></a>
Rearrange README.md, add advanced-usage.md (<a
href="https://redirect.github.com/actions/setup-go/issues/724">#724</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/setup-go/compare/4b73464bb391d4059bd26b0524d20df3927bd417...4a3601121dd01d1626a1e23e37211e3254c1c06c">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-30 07:38:10 +00:00
Meghea Iulian 8c130bcb5a fix(opencode): pass VERSION to bash instead of curl in install pipe (#815)
## Summary

- Fix version pinning bug in the OpenCode install script
(`registry/coder-labs/modules/opencode/scripts/install.sh`, line 42)

**Bug:** The install command was:
```bash
VERSION=$ARG_OPENCODE_VERSION curl -fsSL https://opencode.ai/install | bash
```

`VERSION` was set as an environment variable prefix to `curl` (the left
side of the pipe), so the `bash` process on the right side of the pipe
never received it. In a shell pipeline, each command runs in its own
subprocess, so env var prefixes only apply to the immediately following
command. This caused the installer script to always install the latest
version instead of the pinned version specified by the user.

**Fix:** Move `VERSION` to prefix `bash` instead of `curl`:
```bash
curl -fsSL https://opencode.ai/install | VERSION=$ARG_OPENCODE_VERSION bash
```

Now the `VERSION` variable is correctly available to the install script
executed by `bash`.

## Test plan

- [x] Set `opencode_version` to a specific version (e.g., `0.1.0`) and
verify that version is installed instead of latest
- [x] Set `opencode_version` to `latest` and verify the latest version
is still installed (this code path is unchanged)
- [x] Verify `opencode --version` output matches the requested version
after install

---------

Co-authored-by: 35C4n0r <70096901+35C4n0r@users.noreply.github.com>
2026-03-27 23:25:07 +05:30
35C4n0r 516b9ce4ae fix(coder/modules/claude-code): update resource count logic for claude_api_key (#814)
## Description
- update resource count logic for claude_api_key

<!-- Briefly describe what this PR does and why -->

## Type of Change

- [ ] New module
- [ ] New template
- [x] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder/modules/claude-code`  
**New version:** `v4.8.2`  
**Breaking change:** [ ] Yes [ ] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues
Closes: #812
2026-03-26 16:48:43 +05:30
Koury Lape da8e296b1c Fix/dotfiles fish compatibility (#682)
## Description

The dotfiles module does not work when using non-POSIX shells i.e. Fish.

## Type of Change

- [ ] New module
- [ ] New template
- [x] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

**Path:** `registry/coder/modules/dotfiles`  
**New version:** `v1.4.1`  
**Breaking change:** [ ] Yes [ ] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

```
bun test v1.3.8 (b64edcb4)

registry/coder/modules/dotfiles/main.test.ts:
✓ dotfiles > required variables [190.40ms]
✓ dotfiles > missing variable: agent_id [43.12ms]
✓ dotfiles > default output [150.15ms]
✓ dotfiles > set a default dotfiles_uri [159.14ms]
✓ dotfiles > command uses bash for fish shell compatibility [164.08ms]
✓ dotfiles > set custom order for coder_parameter [166.50ms]

 6 pass
 0 fail
 7 expect() calls
Ran 6 tests across 1 file. [1184.00ms]
```

I tested this with a new workspace on Coder v2.27.3 with fish, zsh, and
bash.

---------

Co-authored-by: DevCats <christofer@coder.com>
Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
2026-03-20 10:42:34 -05:00
35C4n0r ce50e52fc5 feat(coder-labs/modules/codex): update default configuration to use model providers instead of profiles (#806)
## Description
- update default configuration to use model providers instead of
profiles

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder-labs/modules/codex`  
**New version:** `v4.3.1`  
**Breaking change:** [ ] Yes [x] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues

<!-- Link related issues or write "None" if not applicable -->
2026-03-18 11:39:59 +05:30
Hugo Dutka 6940774628 feat: add the portabledesktop module (#805)
## Description
Add a module to install https://github.com/coder/portabledesktop in a
workspace. This will be required for the virtual desktop feature in
Coder Agents.
## Type of Change
- [x] New module
- [ ] New template
- [ ] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other
## Module Information
**Path:** `registry/coder/modules/portabledesktop`
**New version:** `v1.0.0`
**Breaking change:** [ ] Yes [x] No
## Testing & Validation
- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally
## Related Issues
None
2026-03-17 10:07:35 +01:00
dependabot[bot] 85c51816f9 chore(deps): bump the github-actions group with 3 updates (#804)
Bumps the github-actions group with 3 updates:
[dorny/paths-filter](https://github.com/dorny/paths-filter),
[coder/coder](https://github.com/coder/coder) and
[oven-sh/setup-bun](https://github.com/oven-sh/setup-bun).

Updates `dorny/paths-filter` from 3.0.2 to 4.0.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/dorny/paths-filter/releases">dorny/paths-filter's
releases</a>.</em></p>
<blockquote>
<h2>v4.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>feat: update action runtime to node24 by <a
href="https://github.com/saschabratton"><code>@​saschabratton</code></a>
in <a
href="https://redirect.github.com/dorny/paths-filter/pull/294">dorny/paths-filter#294</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/saschabratton"><code>@​saschabratton</code></a>
made their first contribution in <a
href="https://redirect.github.com/dorny/paths-filter/pull/294">dorny/paths-filter#294</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/dorny/paths-filter/compare/v3.0.3...v4.0.0">https://github.com/dorny/paths-filter/compare/v3.0.3...v4.0.0</a></p>
<h2>v3.0.3</h2>
<h2>What's Changed</h2>
<ul>
<li>Add missing predicate-quantifier by <a
href="https://github.com/wardpeet"><code>@​wardpeet</code></a> in <a
href="https://redirect.github.com/dorny/paths-filter/pull/279">dorny/paths-filter#279</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/wardpeet"><code>@​wardpeet</code></a>
made their first contribution in <a
href="https://redirect.github.com/dorny/paths-filter/pull/279">dorny/paths-filter#279</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/dorny/paths-filter/compare/v3...v3.0.3">https://github.com/dorny/paths-filter/compare/v3...v3.0.3</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/dorny/paths-filter/blob/master/CHANGELOG.md">dorny/paths-filter's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>v4.0.0</h2>
<ul>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/294">Update
action runtime to node24</a></li>
</ul>
<h2>v3.0.3</h2>
<ul>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/279">Add
missing predicate-quantifier</a></li>
</ul>
<h2>v3.0.2</h2>
<ul>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/224">Add
config parameter for predicate quantifier</a></li>
</ul>
<h2>v3.0.1</h2>
<ul>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/133">Compare
base and ref when token is empty</a></li>
</ul>
<h2>v3.0.0</h2>
<ul>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/210">Update to
Node.js 20</a></li>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/215">Update
all dependencies</a></li>
</ul>
<h2>v2.11.1</h2>
<ul>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/167">Update
<code>@​actions/core</code> to v1.10.0 - Fixes warning about deprecated
set-output</a></li>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/168">Document
need for pull-requests: read permission</a></li>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/164">Updating
to actions/checkout@v3</a></li>
</ul>
<h2>v2.11.0</h2>
<ul>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/157">Set
list-files input parameter as not required</a></li>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/161">Update
Node.js</a></li>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/162">Fix
incorrect handling of Unicode characters in exec()</a></li>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/163">Use
Octokit pagination</a></li>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/160">Updates
real world links</a></li>
</ul>
<h2>v2.10.2</h2>
<ul>
<li><a href="https://redirect.github.com/dorny/paths-filter/pull/91">Fix
getLocalRef() returns wrong ref</a></li>
</ul>
<h2>v2.10.1</h2>
<ul>
<li><a
href="https://redirect.github.com/dorny/paths-filter/pull/85">Improve
robustness of change detection</a></li>
</ul>
<h2>v2.10.0</h2>
<ul>
<li><a href="https://redirect.github.com/dorny/paths-filter/pull/82">Add
ref input parameter</a></li>
<li><a href="https://redirect.github.com/dorny/paths-filter/pull/83">Fix
change detection in PR when pullRequest.changed_files is
incorrect</a></li>
</ul>
<h2>v2.9.3</h2>
<ul>
<li><a href="https://redirect.github.com/dorny/paths-filter/pull/78">Fix
change detection when base is a tag</a></li>
</ul>
<h2>v2.9.2</h2>
<ul>
<li><a href="https://redirect.github.com/dorny/paths-filter/pull/75">Fix
fetching git history</a></li>
</ul>
<h2>v2.9.1</h2>
<ul>
<li><a href="https://redirect.github.com/dorny/paths-filter/pull/74">Fix
fetching git history + fallback to unshallow repo</a></li>
</ul>
<h2>v2.9.0</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/dorny/paths-filter/commit/fbd0ab8f3e69293af611ebaee6363fc25e6d187d"><code>fbd0ab8</code></a>
feat: add merge_group event support</li>
<li><a
href="https://github.com/dorny/paths-filter/commit/efb1da7ce8d89bbc261191e5a2dc1453c3837339"><code>efb1da7</code></a>
feat: add dist/ freshness check to PR workflow</li>
<li><a
href="https://github.com/dorny/paths-filter/commit/d8f7b061b24c30a325ff314b76c37adb05b041ce"><code>d8f7b06</code></a>
Merge pull request <a
href="https://redirect.github.com/dorny/paths-filter/issues/302">#302</a>
from dorny/issue-299</li>
<li><a
href="https://github.com/dorny/paths-filter/commit/addbc147a95845176e1bc013a012fbf1d366389a"><code>addbc14</code></a>
Update README for v4</li>
<li><a
href="https://github.com/dorny/paths-filter/commit/9d7afb8d214ad99e78fbd4247752c4caed2b6e4c"><code>9d7afb8</code></a>
Update CHANGELOG for v4.0.0</li>
<li><a
href="https://github.com/dorny/paths-filter/commit/782470c5d953cae2693d643172b14e01bacb71f3"><code>782470c</code></a>
Merge branch 'releases/v3'</li>
<li><a
href="https://github.com/dorny/paths-filter/commit/d1c1ffe0248fe513906c8e24db8ea791d46f8590"><code>d1c1ffe</code></a>
Update CHANGELOG for v3.0.3</li>
<li><a
href="https://github.com/dorny/paths-filter/commit/ce10459c8b92cd8901166c0a222fbb033ef39365"><code>ce10459</code></a>
Merge pull request <a
href="https://redirect.github.com/dorny/paths-filter/issues/294">#294</a>
from saschabratton/master</li>
<li><a
href="https://github.com/dorny/paths-filter/commit/5f40380c5482e806c81cec080f5192e7234d8fe9"><code>5f40380</code></a>
feat: update action runtime to node24</li>
<li><a
href="https://github.com/dorny/paths-filter/commit/668c092af3649c4b664c54e4b704aa46782f6f7c"><code>668c092</code></a>
Merge pull request <a
href="https://redirect.github.com/dorny/paths-filter/issues/279">#279</a>
from wardpeet/patch-1</li>
<li>Additional commits viewable in <a
href="https://github.com/dorny/paths-filter/compare/de90cc6fb38fc0963ad72b210f1f284cd68cea36...fbd0ab8f3e69293af611ebaee6363fc25e6d187d">compare
view</a></li>
</ul>
</details>
<br />

Updates `coder/coder` from 2.31.3 to 2.31.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/coder/coder/releases">coder/coder's
releases</a>.</em></p>
<blockquote>
<h2>v2.31.5</h2>
<h2>Changelog</h2>
<blockquote>
<p>[!NOTE]
This is a mainline Coder release. We advise enterprise customers without
a staging environment to install our <a
href="https://github.com/coder/coder/releases/latest">latest stable
release</a> while we refine this version. Learn more about our <a
href="https://coder.com/docs/install/releases">Release Schedule</a>.</p>
</blockquote>
<h3>Bug fixes</h3>
<ul>
<li>Prevent emitting build duration metric for devcontainer subagents
(<a
href="https://redirect.github.com/coder/coder/issues/22930">#22930</a>,
2cd4e03f1)</li>
<li>Prevent ui error when last org member is removed (<a
href="https://redirect.github.com/coder/coder/issues/23019">#23019</a>,
581e956b4)</li>
<li>Networking: Retry after transport dial timeouts (<a
href="https://redirect.github.com/coder/coder/issues/22977">#22977</a>,
1a774ab7c)</li>
</ul>
<p>Compare: <a
href="https://github.com/coder/coder/compare/v2.31.4...v2.31.5"><code>v2.31.4...v2.31.5</code></a></p>
<h2>Container image</h2>
<ul>
<li><code>docker pull ghcr.io/coder/coder:2.31.5</code></li>
</ul>
<h2>Install/upgrade</h2>
<p>Refer to our docs to <a
href="https://coder.com/docs/install">install</a> or <a
href="https://coder.com/docs/install/upgrade">upgrade</a> Coder, or use
a release asset below.</p>
<h2>v2.31.4</h2>
<h2>Changelog</h2>
<blockquote>
<p>[!NOTE]
This is a mainline Coder release. We advise enterprise customers without
a staging environment to install our <a
href="https://github.com/coder/coder/releases/latest">latest stable
release</a> while we refine this version. Learn more about our <a
href="https://coder.com/docs/install/releases">Release Schedule</a>.</p>
</blockquote>
<h3>Features</h3>
<ul>
<li>Add Prometheus collector for DERP server expvar metrics (<a
href="https://redirect.github.com/coder/coder/issues/22583">#22583</a>,
a3792153d)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Filter sub-agents from build duration metric (<a
href="https://redirect.github.com/coder/coder/issues/22732">#22732</a>,
757634c72)</li>
<li>Bump aibridge to v1.0.9 to forward Anthropic-Beta header (<a
href="https://redirect.github.com/coder/coder/issues/22842">#22842</a>,
61b513e58)</li>
</ul>
<p>Compare: <a
href="https://github.com/coder/coder/compare/v2.31.3...v2.31.4"><code>v2.31.3...v2.31.4</code></a></p>
<h2>Container image</h2>
<ul>
<li><code>docker pull ghcr.io/coder/coder:2.31.4</code></li>
</ul>
<h2>Install/upgrade</h2>
<p>Refer to our docs to <a
href="https://coder.com/docs/install">install</a> or <a
href="https://coder.com/docs/install/upgrade">upgrade</a> Coder, or use
a release asset below.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/coder/coder/commit/1a774ab7ce99063a2e01beb94de3fcbccaf84dbe"><code>1a774ab</code></a>
fix(tailnet): retry after transport dial timeouts (<a
href="https://redirect.github.com/coder/coder/issues/22977">#22977</a>)
(cherry-pick/v2.31...</li>
<li><a
href="https://github.com/coder/coder/commit/581e956b49bf34bc0145188aa7e15f3e7f8e71c4"><code>581e956</code></a>
fix: prevent ui error when last org member is removed (<a
href="https://redirect.github.com/coder/coder/issues/23019">#23019</a>)</li>
<li><a
href="https://github.com/coder/coder/commit/2cd4e03f11dcf732f06af2899c0e896b2c2ee766"><code>2cd4e03</code></a>
fix: prevent emitting build duration metric for devcontainer subagents
(<a
href="https://redirect.github.com/coder/coder/issues/22930">#22930</a>)</li>
<li><a
href="https://github.com/coder/coder/commit/61b513e586d7dd6ded81beaa6766689988427bad"><code>61b513e</code></a>
fix: bump aibridge to v1.0.9 to forward Anthropic-Beta header (<a
href="https://redirect.github.com/coder/coder/issues/22842">#22842</a>)</li>
<li><a
href="https://github.com/coder/coder/commit/757634c720b03eea3c821add9784cb395ae76a9b"><code>757634c</code></a>
fix: filter sub-agents from build duration metric (<a
href="https://redirect.github.com/coder/coder/issues/22732">#22732</a>)
(<a
href="https://redirect.github.com/coder/coder/issues/22919">#22919</a>)</li>
<li><a
href="https://github.com/coder/coder/commit/a3792153dea7efbd6dde31bd41159e4c79b985c7"><code>a379215</code></a>
feat: add Prometheus collector for DERP server expvar metrics (<a
href="https://redirect.github.com/coder/coder/issues/22583">#22583</a>)
(<a
href="https://redirect.github.com/coder/coder/issues/22917">#22917</a>)</li>
<li>See full diff in <a
href="https://github.com/coder/coder/compare/deaacff8437e3f4ee84bc51c4e5162f6dd7d190e...1a774ab7ce99063a2e01beb94de3fcbccaf84dbe">compare
view</a></li>
</ul>
</details>
<br />

Updates `oven-sh/setup-bun` from 2.1.3 to 2.2.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/oven-sh/setup-bun/releases">oven-sh/setup-bun's
releases</a>.</em></p>
<blockquote>
<h2>v2.2.0</h2>
<p><code>oven-sh/setup-bun</code> is the github action for setting up
Bun.</p>
<h2>What's Changed</h2>
<ul>
<li>build: update action runtime to Node.js 24 by <a
href="https://github.com/adam0white"><code>@​adam0white</code></a> in <a
href="https://redirect.github.com/oven-sh/setup-bun/pull/176">oven-sh/setup-bun#176</a></li>
<li>ci: use <code>actions/checkout@v6.0.2</code> in the test workflow by
<a href="https://github.com/tcely"><code>@​tcely</code></a> in <a
href="https://redirect.github.com/oven-sh/setup-bun/pull/173">oven-sh/setup-bun#173</a></li>
<li>ci: update actions for the <code>autofix.ci</code> workflow by <a
href="https://github.com/tcely"><code>@​tcely</code></a> in <a
href="https://redirect.github.com/oven-sh/setup-bun/pull/174">oven-sh/setup-bun#174</a></li>
<li>ci: update actions for the <code>Release new action version</code>
workflow by <a href="https://github.com/tcely"><code>@​tcely</code></a>
in <a
href="https://redirect.github.com/oven-sh/setup-bun/pull/175">oven-sh/setup-bun#175</a></li>
<li>release: v2.2.0 by <a
href="https://github.com/xhyrom"><code>@​xhyrom</code></a> in <a
href="https://redirect.github.com/oven-sh/setup-bun/pull/177">oven-sh/setup-bun#177</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/adam0white"><code>@​adam0white</code></a> made
their first contribution in <a
href="https://redirect.github.com/oven-sh/setup-bun/pull/176">oven-sh/setup-bun#176</a></li>
<li><a href="https://github.com/tcely"><code>@​tcely</code></a> made
their first contribution in <a
href="https://redirect.github.com/oven-sh/setup-bun/pull/173">oven-sh/setup-bun#173</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/oven-sh/setup-bun/compare/v2...v2.2.0">https://github.com/oven-sh/setup-bun/compare/v2...v2.2.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/oven-sh/setup-bun/commit/0c5077e51419868618aeaa5fe8019c62421857d6"><code>0c5077e</code></a>
release: v2.2.0 (<a
href="https://redirect.github.com/oven-sh/setup-bun/issues/177">#177</a>)</li>
<li><a
href="https://github.com/oven-sh/setup-bun/commit/1255e43b02f74b77bb39330ef756405951c3303a"><code>1255e43</code></a>
ci: update actions for the <code>Release new action version</code>
workflow (<a
href="https://redirect.github.com/oven-sh/setup-bun/issues/175">#175</a>)</li>
<li><a
href="https://github.com/oven-sh/setup-bun/commit/61861d1f6a3acf561f12343ea89e2c71ff4af529"><code>61861d1</code></a>
ci: update actions for the <code>autofix.ci</code> workflow (<a
href="https://redirect.github.com/oven-sh/setup-bun/issues/174">#174</a>)</li>
<li><a
href="https://github.com/oven-sh/setup-bun/commit/6f5bd063f58cadd19ae42cca8bb41b191e9949bd"><code>6f5bd06</code></a>
ci: use <code>actions/checkout@v6.0.2</code> in the test workflow (<a
href="https://redirect.github.com/oven-sh/setup-bun/issues/173">#173</a>)</li>
<li><a
href="https://github.com/oven-sh/setup-bun/commit/e3914758a49697077f7bcd190d36582a61667aad"><code>e391475</code></a>
build: update action runtime to Node.js 24 (<a
href="https://redirect.github.com/oven-sh/setup-bun/issues/176">#176</a>)</li>
<li>See full diff in <a
href="https://github.com/oven-sh/setup-bun/compare/ecf28ddc73e819eb6fa29df6b34ef8921c743461...0c5077e51419868618aeaa5fe8019c62421857d6">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-16 12:54:51 +05:00
35C4n0r 4fdcf0d712 fix(coder/modules/claude-code): update claude session workdir normalization (#803)
## Description

- This lead to a bug where if the folder name is in the form `a.b.c`:
- we check for:
`-home-coder-ai.coder.com/cd32e253-ca16-4fd3-9825-d837e74ae3c2.jsonl`
- But the actual file path for claude-session is:
`-home-coder-ai-coder-com/cd32e253-ca16-4fd3-9825-d837e74ae3c2.jsonl`
- The above bug might also occur in the case of `a_b_c`
- update workdir normalization to handle dot in path

## Type of Change

- [ ] New module
- [ ] New template
- [x] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder/modules/claude-code`  
**New version:** `v4.8.1`  
**Breaking change:** [ ] Yes [x] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues

<!-- Link related issues or write "None" if not applicable -->
2026-03-13 12:43:31 -05:00
Michael Suchacz 1460293de4 feat(coder/mux): add restart retries for mux exits (#800)
## Summary
- add optional mux auto-restarts with delay, lock cleanup, and
restart-attempt caps
- restart mux after any exit when enabled, including intentional exits
and signals
- require `max_restart_attempts` to be a non-negative whole number and
update docs/tests for the new restart semantics

## Validation
- `bash -n registry/coder/modules/mux/run.sh`
- `cd registry/coder/modules/mux && terraform validate`
- `cd registry/coder/modules/mux && terraform test -verbose`
- `cd registry/coder/modules/mux && bun test main.test.ts`

Generated with OpenAI using Mux
2026-03-13 09:16:38 -05:00
blinkagent[bot] 9606297620 feat: pass branch to coder dotfiles (#789)
Supersedes #551 (fork branch couldn't be rebased due to GitHub App
permission limitations).

Original author: @willshu

## Description

Adds support for specifying a git branch when cloning dotfiles
repositories.

### Changes
- Introduces `dotfiles_branch` and `default_dotfiles_branch` Terraform
variables
- Adds a `coder_parameter` for `dotfiles_branch` when not explicitly set
(with `order` matching `dotfiles_uri`)
- Conditionally passes the `--branch` flag to `coder dotfiles` only when
branch is non-empty
- Adds validation to prevent empty string for `dotfiles_branch` (use
`null` to prompt the user)
- Default branch is empty string — defers to the repo's default branch
rather than assuming `main`, matching the behavior of `coder dotfiles
--branch` which states: *"If empty, will default to cloning the default
branch or using the existing branch in the cloned repo on disk."*
- Adds test coverage for custom branch setting and parameter creation

### Review feedback addressed (from Copilot on #551)
- Added `order` field to `dotfiles_branch` parameter for UI consistency
with `dotfiles_uri`
- Conditional echo message — only shows branch info when set
- `--branch` flag only passed when `DOTFILES_BRANCH` is non-empty (both
current-user and sudo paths)
- Added validation block on `var.dotfiles_branch` to reject empty
strings

## Type of Change

- [x] Feature/enhancement

## Module Information

**Path:** `registry/coder/modules/dotfiles`

## Testing & Validation

- [ ] Tests pass (`bun test`)
- [ ] Code formatted (`bun fmt`)
- [ ] Changes tested locally

Co-authored-by: William Shu <william.shu@kkr.com>
Co-authored-by: DevCats <christofer@coder.com>
2026-03-11 16:11:19 -05:00
Shane White a0430e6f83 feat(coder-labs/modules/codex): add boundary support via agentapi module (#795)
## Description
Adds boundary support to the Codex module by passing boundary
variables through to the agentapi module and using
AGENTAPI_BOUNDARY_PREFIX in the start script.

Depends on #780

## Type of Change
- [x] Feature/enhancement

## Module Information
**Path:** `registry/coder-labs/modules/codex`
**Breaking change:** No

---------

Co-authored-by: Shane White <shane.white@cloudsecure.ltd>
Co-authored-by: 35C4n0r <70096901+35C4n0r@users.noreply.github.com>
2026-03-11 23:07:37 +05:30
Shane White 2ee14fdf6e feat: provide boundary support for agent modules (#780)
## Description
Enable any agent module to run its AI agent inside Coder's Agent
Boundaries.
The agentapi module handles boundary installation, config setup, and
wrapper
script creation, then exports AGENTAPI_BOUNDARY_PREFIX for consuming
modules
to use in their start scripts.

Supports three boundary installation modes:
- coder boundary subcommand (default, Coder v2.30+)
- Standalone binary via install script (use_boundary_directly)
- Compiled from source (compile_boundary_from_source)

Users must provide a boundary config.yaml with their allowlist and
settings when enabling boundary.

Closes #457

## Type of Change
- [x] Feature/enhancement

## Module Information
**Path:** `registry/coder/modules/agentapi`
**Breaking change:** No

## Testing & Validation
- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

---------

Co-authored-by: Shane White <shane.white@cloudsecure.ltd>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: 35C4n0r <70096901+35C4n0r@users.noreply.github.com>
2026-03-11 20:01:50 +05:30
Michael Suchacz 183bd57061 fix: log external mux server exits in launcher (#796)
## Summary
Keep the Mux module's launcher around after startup so it can append
useful diagnostics when `mux server` is killed outside the Node runtime.

## Background
The module previously forked `mux server` and returned immediately,
which meant external kills (for example `SIGKILL` or an OOM kill) could
leave users with only a stopped app and no launcher-side clue about what
happened.

## Implementation
- keep the existing module inputs and startup shape intact
- launch `mux server` under a detached Bash watcher that waits for the
child process to exit
- append signal/exit-code diagnostics to `log_path` when the server dies
unexpectedly
- include a best-effort kernel OOM/SIGKILL hint in the log when the host
exposes it
- add Terraform and Bun tests that cover the new launcher diagnostics
- bump the module examples from `1.3.1` to `1.4.0`

## Validation
- `bun x prettier --check registry/coder/modules/mux/README.md
registry/coder/modules/mux/main.test.ts
registry/coder/modules/mux/mux.tftest.hcl
registry/coder/modules/mux/run.sh`
- `terraform fmt -check -recursive registry/coder/modules/mux`
- `cd registry/coder/modules/mux && terraform validate`
- `cd registry/coder/modules/mux && terraform test -verbose`
- `cd registry/coder/modules/mux && bun test main.test.ts`
- `bun run shellcheck -- registry/coder/modules/mux/run.sh`

---

Generated with mux (exec mode) using openai:gpt-5.4.
2026-03-10 14:32:58 +01:00
DevCats 5a241ebce2 feat: ttyd module (#790)
## Description

Add ttyd module that exposes any command as a web-based terminal via
[ttyd](https://github.com/tsl0922/ttyd).

- Run commands like `bash`, `htop`, or `tmux` accessible in the browser
- Supports readonly mode for log viewers
- Configurable sharing (owner/authenticated/public)
- Auto-installs ttyd binary (x86_64, aarch64, ARM)
- Works with subdomain or path-based routing


![TTYD-Module-Demo](https://github.com/user-attachments/assets/1c884e89-b1b1-4f1b-ab5b-56df3dd6d9af)

## Type of Change

- [X] New module
- [ ] New template
- [ ] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder-labs/modules/ttyd`  
**New version:** `v1.0.0`  
**Breaking change:** [ ] Yes [ ] No

## Testing & Validation

- [X] Tests pass (`bun test`)
- [X] Code formatted (`bun fmt`)
- [X] Changes tested locally

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-03-09 16:19:10 +00:00
blinkagent[bot] 4b3045e637 docs: clarify that READMEs should not include input/output variable tables (#787)
The registry auto-generates input/output documentation from
`variables.tf` and `outputs.tf`, so including these tables in
module/template READMEs is redundant and prone to drift.

This adds two bullets to the **Code Style** section of `AGENTS.md`:

- Do not include input/output variable tables in READMEs
- Usage examples (e.g., `module "..." { }` blocks) are still encouraged

Created on behalf of @DevelopmentCats

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: DevCats <christofer@coder.com>
2026-03-09 16:16:28 +00:00
dependabot[bot] d7566cc618 chore(deps): bump the github-actions group across 1 directory with 5 updates (#791)
Bumps the github-actions group with 5 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [coder/coder](https://github.com/coder/coder) | `2.29.2` | `2.31.3` |
| [oven-sh/setup-bun](https://github.com/oven-sh/setup-bun) | `2.1.2` |
`2.1.3` |
| [crate-ci/typos](https://github.com/crate-ci/typos) | `1.42.1` |
`1.44.0` |
| [actions/setup-go](https://github.com/actions/setup-go) | `6.2.0` |
`6.3.0` |
|
[zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action)
| `0.4.1` | `0.5.2` |


Updates `coder/coder` from 2.29.2 to 2.31.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/coder/coder/releases">coder/coder's
releases</a>.</em></p>
<blockquote>
<h2>v2.31.3</h2>
<h2>Changelog</h2>
<blockquote>
<p>[!NOTE]
This is a mainline Coder release. We advise enterprise customers without
a staging environment to install our <a
href="https://github.com/coder/coder/releases/latest">latest stable
release</a> while we refine this version. Learn more about our <a
href="https://coder.com/docs/install/releases">Release Schedule</a>.</p>
</blockquote>
<h3>Chores</h3>
<h3>Bug Fixes</h3>
<ul>
<li>fix: early oidc refresh with fake idp tests (cherry 2.31) (<a
href="https://redirect.github.com/coder/coder/issues/22716">#22716</a>,
deaacff84) (<a
href="https://github.com/Emyrk"><code>@​Emyrk</code></a>)</li>
</ul>
<p>Compare: <a
href="https://github.com/coder/coder/compare/v2.31.2...v2.31.3"><code>v2.31.2...v2.31.3</code></a></p>
<h2>Container image</h2>
<ul>
<li><code>docker pull ghcr.io/coder/coder:v2.31.2</code></li>
</ul>
<h2>Install/upgrade</h2>
<p>Refer to our docs to <a
href="https://coder.com/docs/install">install</a> or <a
href="https://coder.com/docs/install/upgrade">upgrade</a> Coder, or use
a release asset below.</p>
<h2>v2.31.2</h2>
<h2>Changelog</h2>
<blockquote>
<p>[!NOTE]
This is a mainline Coder release. We advise enterprise customers without
a staging environment to install our <a
href="https://github.com/coder/coder/releases/latest">latest stable
release</a> while we refine this version. Learn more about our <a
href="https://coder.com/docs/install/releases">Release Schedule</a>.</p>
</blockquote>
<h3>Chores</h3>
<ul>
<li>Prematurely refresh oidc token near expiry during workspace (cherry
2.31) (<a
href="https://redirect.github.com/coder/coder/issues/22606">#22606</a>,
2828d28e0) (<a
href="https://github.com/Emyrk"><code>@​Emyrk</code></a>)</li>
</ul>
<p>Compare: <a
href="https://github.com/coder/coder/compare/v2.31.1...v2.31.2"><code>v2.31.1...v2.31.2</code></a></p>
<h2>Container image</h2>
<ul>
<li><code>docker pull ghcr.io/coder/coder:v2.31.2</code></li>
</ul>
<h2>Install/upgrade</h2>
<p>Refer to our docs to <a
href="https://coder.com/docs/install">install</a> or <a
href="https://coder.com/docs/install/upgrade">upgrade</a> Coder, or use
a release asset below.</p>
<h2>v2.31.1</h2>
<h2>Changelog</h2>
<blockquote>
<p>[!NOTE]
This is a mainline Coder release. We advise enterprise customers without
a staging environment to install our <a
href="https://github.com/coder/coder/releases/latest">latest stable
release</a> while we refine this version. Learn more about our <a
href="https://coder.com/docs/install/releases">Release Schedule</a>.</p>
<p>Normally, our monthly releases are 2.X.0. This mainline release is
2.X.1 due to an issue in the release process, but it should be
considered a standard mainline release for customers.</p>
</blockquote>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/coder/coder/commit/deaacff8437e3f4ee84bc51c4e5162f6dd7d190e"><code>deaacff</code></a>
fix: early oidc refresh with fake idp tests (<a
href="https://redirect.github.com/coder/coder/issues/22712">#22712</a>)
(cherry 2.31) (<a
href="https://redirect.github.com/coder/coder/issues/22716">#22716</a>)</li>
<li><a
href="https://github.com/coder/coder/commit/2828d28e0c2b0a734876a1513afedd7cc7137508"><code>2828d28</code></a>
chore: prematurely refresh oidc token near expiry during workspace
(cherry 2....</li>
<li><a
href="https://github.com/coder/coder/commit/4b95b8b4f952f6c3414eec3adb8184dd1a2a3e71"><code>4b95b8b</code></a>
fix(coderd): add organization_name label to insights Prometheus metrics
(cher...</li>
<li><a
href="https://github.com/coder/coder/commit/3a061ccb21f8393ba657edce53d57baa8c5800b2"><code>3a061cc</code></a>
refactor(site): use dedicated task pause/resume API endpoints (<a
href="https://redirect.github.com/coder/coder/issues/22303">#22303</a>)
(cherr...</li>
<li><a
href="https://github.com/coder/coder/commit/22c2da53e92b0ffacbf12ac22c70065c6f0ffb3c"><code>22c2da5</code></a>
fix: register task pause/resume routes under /api/v2 (<a
href="https://redirect.github.com/coder/coder/issues/22544">#22544</a>)
(<a
href="https://redirect.github.com/coder/coder/issues/22550">#22550</a>)</li>
<li><a
href="https://github.com/coder/coder/commit/ccb529e98ab64e5d7435fa20fbc6cffb60e05185"><code>ccb529e</code></a>
fix: disable sharing ui when sharing is unavailable (<a
href="https://redirect.github.com/coder/coder/issues/22390">#22390</a>)
(<a
href="https://redirect.github.com/coder/coder/issues/22561">#22561</a>)</li>
<li><a
href="https://github.com/coder/coder/commit/107fd97a61930dcb725d5de1211781d03ac8884f"><code>107fd97</code></a>
fix: avoid derp-related panic during wsproxy registration (backport
release/2...</li>
<li><a
href="https://github.com/coder/coder/commit/955637a79d2c69dfc9f9a17332b97cf703d62ec4"><code>955637a</code></a>
fix(codersdk): use header auth for non-browser websocket dials (<a
href="https://redirect.github.com/coder/coder/issues/22461">#22461</a>)
(cher...</li>
<li><a
href="https://github.com/coder/coder/commit/85f1d70c4f71f796729223d573a679b1f74a6efb"><code>85f1d70</code></a>
ci: add temporary deploy override (<a
href="https://redirect.github.com/coder/coder/issues/22378">#22378</a>)
(<a
href="https://redirect.github.com/coder/coder/issues/22475">#22475</a>)</li>
<li><a
href="https://github.com/coder/coder/commit/e9e438b06ea736dc00ff100cc8dda91f38b9611a"><code>e9e438b</code></a>
fix(stringutil): operate on runes instead of bytes in Truncate (<a
href="https://redirect.github.com/coder/coder/issues/22388">#22388</a>)
(<a
href="https://redirect.github.com/coder/coder/issues/22469">#22469</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/coder/coder/compare/b5360a9180613328a62d64efcfaac5a31980c746...deaacff8437e3f4ee84bc51c4e5162f6dd7d190e">compare
view</a></li>
</ul>
</details>
<br />

Updates `oven-sh/setup-bun` from 2.1.2 to 2.1.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/oven-sh/setup-bun/releases">oven-sh/setup-bun's
releases</a>.</em></p>
<blockquote>
<h2>v2.1.3</h2>
<p><code>oven-sh/setup-bun</code> is the github action for setting up
Bun.</p>
<h2>What's Changed</h2>
<ul>
<li>perf: avoid unnecessary api calls by <a
href="https://github.com/xhyrom"><code>@​xhyrom</code></a> in <a
href="https://redirect.github.com/oven-sh/setup-bun/pull/161">oven-sh/setup-bun#161</a></li>
<li>feat: add bun- prefix to cache keys by <a
href="https://github.com/maschwenk"><code>@​maschwenk</code></a> in <a
href="https://redirect.github.com/oven-sh/setup-bun/pull/160">oven-sh/setup-bun#160</a></li>
<li>fix: use native Windows ARM64 binary for Bun &gt;= 1.3.10 by <a
href="https://github.com/oddrationale"><code>@​oddrationale</code></a>
in <a
href="https://redirect.github.com/oven-sh/setup-bun/pull/165">oven-sh/setup-bun#165</a></li>
<li>feat: add AVX2 support detection for x64 Linux systems by <a
href="https://github.com/GoForceX"><code>@​GoForceX</code></a> in <a
href="https://redirect.github.com/oven-sh/setup-bun/pull/167">oven-sh/setup-bun#167</a></li>
<li>fix: validate cached binary version matches requested version (<a
href="https://redirect.github.com/oven-sh/setup-bun/issues/146">#146</a>)
by <a href="https://github.com/wyMinLwin"><code>@​wyMinLwin</code></a>
in <a
href="https://redirect.github.com/oven-sh/setup-bun/pull/169">oven-sh/setup-bun#169</a></li>
<li>release: v2.1.3 by <a
href="https://github.com/xhyrom"><code>@​xhyrom</code></a> in <a
href="https://redirect.github.com/oven-sh/setup-bun/pull/170">oven-sh/setup-bun#170</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/oddrationale"><code>@​oddrationale</code></a>
made their first contribution in <a
href="https://redirect.github.com/oven-sh/setup-bun/pull/165">oven-sh/setup-bun#165</a></li>
<li><a href="https://github.com/GoForceX"><code>@​GoForceX</code></a>
made their first contribution in <a
href="https://redirect.github.com/oven-sh/setup-bun/pull/167">oven-sh/setup-bun#167</a></li>
<li><a href="https://github.com/wyMinLwin"><code>@​wyMinLwin</code></a>
made their first contribution in <a
href="https://redirect.github.com/oven-sh/setup-bun/pull/169">oven-sh/setup-bun#169</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/oven-sh/setup-bun/compare/v2...v2.1.3">https://github.com/oven-sh/setup-bun/compare/v2...v2.1.3</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/oven-sh/setup-bun/commit/ecf28ddc73e819eb6fa29df6b34ef8921c743461"><code>ecf28dd</code></a>
release: v2.1.3 (<a
href="https://redirect.github.com/oven-sh/setup-bun/issues/170">#170</a>)</li>
<li><a
href="https://github.com/oven-sh/setup-bun/commit/95edc153a3f71202eb7d8f0ee7b43c6b8b16763f"><code>95edc15</code></a>
fix: validate cached binary version matches requested version (<a
href="https://redirect.github.com/oven-sh/setup-bun/issues/146">#146</a>)
(<a
href="https://redirect.github.com/oven-sh/setup-bun/issues/169">#169</a>)</li>
<li><a
href="https://github.com/oven-sh/setup-bun/commit/4c32875876eebbbb9bc34b8ee07ba2d7bb4b3462"><code>4c32875</code></a>
feat: add AVX2 support detection for x64 Linux systems (<a
href="https://redirect.github.com/oven-sh/setup-bun/issues/167">#167</a>)</li>
<li><a
href="https://github.com/oven-sh/setup-bun/commit/0ff83bfc51e05dd2251088164ec6a5e8533b476b"><code>0ff83bf</code></a>
fix: use native Windows ARM64 binary for Bun &gt;= 1.3.10 (<a
href="https://redirect.github.com/oven-sh/setup-bun/issues/165">#165</a>)</li>
<li><a
href="https://github.com/oven-sh/setup-bun/commit/ab8cb4e8f89912a29b87e4abc4554f2301648a5c"><code>ab8cb4e</code></a>
feat: add bun- prefix to cache keys (<a
href="https://redirect.github.com/oven-sh/setup-bun/issues/160">#160</a>)</li>
<li><a
href="https://github.com/oven-sh/setup-bun/commit/196aaa2bd27ecf519a9475d2da77b448974ab92c"><code>196aaa2</code></a>
perf: avoid unnecessary api calls (<a
href="https://redirect.github.com/oven-sh/setup-bun/issues/161">#161</a>)</li>
<li>See full diff in <a
href="https://github.com/oven-sh/setup-bun/compare/3d267786b128fe76c2f16a390aa2448b815359f3...ecf28ddc73e819eb6fa29df6b34ef8921c743461">compare
view</a></li>
</ul>
</details>
<br />

Updates `crate-ci/typos` from 1.42.1 to 1.44.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/releases">crate-ci/typos's
releases</a>.</em></p>
<blockquote>
<h2>v1.44.0</h2>
<h2>[1.44.0] - 2026-02-27</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1488">February
2026</a> changes</li>
</ul>
<h2>v1.43.5</h2>
<h2>[1.43.5] - 2026-02-16</h2>
<h3>Fixes</h3>
<ul>
<li><em>(pypi)</em> Hopefully fix the sdist build</li>
</ul>
<h2>v1.43.4</h2>
<h2>[1.43.4] - 2026-02-09</h2>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>pincher</code></li>
</ul>
<h2>v1.43.3</h2>
<h2>[1.43.3] - 2026-02-06</h2>
<h3>Fixes</h3>
<ul>
<li><em>(action)</em> Adjust how typos are reported to github</li>
</ul>
<h2>v1.43.2</h2>
<h2>[1.43.2] - 2026-02-05</h2>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>certifi</code> in Python</li>
</ul>
<h2>v1.43.1</h2>
<h2>[1.43.1] - 2026-02-03</h2>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>consts</code></li>
</ul>
<h2>v1.43.0</h2>
<h2>[1.43.0] - 2026-02-02</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1453">January
2026</a> changes</li>
</ul>
<h2>v1.42.3</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's
changelog</a>.</em></p>
<blockquote>
<h1>Change Log</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>The format is based on <a href="https://keepachangelog.com/">Keep a
Changelog</a>
and this project adheres to <a href="https://semver.org/">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased] - ReleaseDate</h2>
<h2>[1.44.0] - 2026-02-27</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1488">February
2026</a> changes</li>
</ul>
<h2>[1.43.5] - 2026-02-16</h2>
<h3>Fixes</h3>
<ul>
<li><em>(pypi)</em> Hopefully fix the sdist build</li>
</ul>
<h2>[1.43.4] - 2026-02-09</h2>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>pincher</code></li>
</ul>
<h2>[1.43.3] - 2026-02-06</h2>
<h3>Fixes</h3>
<ul>
<li><em>(action)</em> Adjust how typos are reported to github</li>
</ul>
<h2>[1.43.2] - 2026-02-05</h2>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>certifi</code> in Python</li>
</ul>
<h2>[1.43.1] - 2026-02-03</h2>
<h3>Fixes</h3>
<ul>
<li>Don't correct <code>consts</code></li>
</ul>
<h2>[1.43.0] - 2026-02-02</h2>
<h3>Compatibility</h3>
<ul>
<li>Bumped MSRV to 1.91</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/crate-ci/typos/commit/631208b7aac2daa8b707f55e7331f9112b0e062d"><code>631208b</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/3d3c6e376823e66c4f3e2583fc47b8be83b66d71"><code>3d3c6e3</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/ba1f545443d223c6bc2c821dad76c210fa78b46f"><code>ba1f545</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/crate-ci/typos/commit/102f66c093f0eb1a69937d3d1c589d5f16c5569b"><code>102f66c</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1510">#1510</a>
from epage/feb</li>
<li><a
href="https://github.com/crate-ci/typos/commit/d303c9398affd88fc562292a2ec9433a37817b28"><code>d303c93</code></a>
feat(dict): February updates</li>
<li><a
href="https://github.com/crate-ci/typos/commit/30eea72e385d435c00a24eeba0d96f87048f42ec"><code>30eea72</code></a>
chore(ci): Update pre-build binary workflow</li>
<li><a
href="https://github.com/crate-ci/typos/commit/57b11c6b7e54c402ccd9cda953f1072ec4f78e33"><code>57b11c6</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/105ced22a5a7fedc36cbef6e5dec31b708e9ec5b"><code>105ced2</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/crate-ci/typos/commit/4f89be7e4a7933f8d9693a9da7a9e9258a8671ba"><code>4f89be7</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1504">#1504</a>
from schnellerhase/bump-maturin</li>
<li><a
href="https://github.com/crate-ci/typos/commit/d8547ad9c141d0e2c568b2344f0804a446ff25ab"><code>d8547ad</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1503">#1503</a>
from 1195343015/patch-1</li>
<li>Additional commits viewable in <a
href="https://github.com/crate-ci/typos/compare/65120634e79d8374d1aa2f27e54baa0c364fff5a...631208b7aac2daa8b707f55e7331f9112b0e062d">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/setup-go` from 6.2.0 to 6.3.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/setup-go/releases">actions/setup-go's
releases</a>.</em></p>
<blockquote>
<h2>v6.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update default Go module caching to use go.mod by <a
href="https://github.com/priyagupta108"><code>@​priyagupta108</code></a>
in <a
href="https://redirect.github.com/actions/setup-go/pull/705">actions/setup-go#705</a></li>
<li>Fix golang download url to go.dev by <a
href="https://github.com/178inaba"><code>@​178inaba</code></a> in <a
href="https://redirect.github.com/actions/setup-go/pull/469">actions/setup-go#469</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-go/compare/v6...v6.3.0">https://github.com/actions/setup-go/compare/v6...v6.3.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/setup-go/commit/4b73464bb391d4059bd26b0524d20df3927bd417"><code>4b73464</code></a>
Fix golang download url to go.dev (<a
href="https://redirect.github.com/actions/setup-go/issues/469">#469</a>)</li>
<li><a
href="https://github.com/actions/setup-go/commit/a5f9b05d2d216f63e13859e0d847461041025775"><code>a5f9b05</code></a>
Update default Go module caching to use go.mod (<a
href="https://redirect.github.com/actions/setup-go/issues/705">#705</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/setup-go/compare/7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5...4b73464bb391d4059bd26b0524d20df3927bd417">compare
view</a></li>
</ul>
</details>
<br />

Updates `zizmorcore/zizmor-action` from 0.4.1 to 0.5.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/zizmorcore/zizmor-action/releases">zizmorcore/zizmor-action's
releases</a>.</em></p>
<blockquote>
<h2>v0.5.2</h2>
<h2>What's Changed</h2>
<ul>
<li>zizmor 1.23.1 is now the default used by this action.</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/zizmorcore/zizmor-action/compare/v0.5.1...v0.5.2">https://github.com/zizmorcore/zizmor-action/compare/v0.5.1...v0.5.2</a></p>
<h2>v0.5.1</h2>
<h2>What's Changed</h2>
<ul>
<li>zizmor 1.23.0 is now the default used by this action.</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/zizmorcore/zizmor-action/compare/v0.5.0...v0.5.1">https://github.com/zizmorcore/zizmor-action/compare/v0.5.0...v0.5.1</a></p>
<h2>v0.5.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Expose <code>output-file</code> as an output when
<code>advanced-security: true</code> by <a
href="https://github.com/unlobito"><code>@​unlobito</code></a> in <a
href="https://redirect.github.com/zizmorcore/zizmor-action/pull/87">zizmorcore/zizmor-action#87</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/unlobito"><code>@​unlobito</code></a>
made their first contribution in <a
href="https://redirect.github.com/zizmorcore/zizmor-action/pull/87">zizmorcore/zizmor-action#87</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/zizmorcore/zizmor-action/compare/v0.4.1...v0.5.0">https://github.com/zizmorcore/zizmor-action/compare/v0.4.1...v0.5.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/71321a20a9ded102f6e9ce5718a2fcec2c4f70d8"><code>71321a2</code></a>
Sync zizmor versions (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/96">#96</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/5ed31db0964a9d37608edd5b0675de2b52070662"><code>5ed31db</code></a>
Bump pins (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/95">#95</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/195d10ad90f31d8cd6ea1efd6ecc12969ddbe73f"><code>195d10a</code></a>
Sync zizmor versions (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/94">#94</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/c65bc8876171b6d82748ec98b77c0193b1226b94"><code>c65bc88</code></a>
chore(deps): bump github/codeql-action in the github-actions group (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/93">#93</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/c2c887f84674f9c15123e2905d2d307675d8bc01"><code>c2c887f</code></a>
chore(deps): bump zizmorcore/zizmor-action in the github-actions group
(<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/91">#91</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/5507ab0c02a9ac3996895e1598d6b3385ea7d525"><code>5507ab0</code></a>
Bump pins in README (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/90">#90</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/0dce2577a4760a2749d8cfb7a84b7d5585ebcb7d"><code>0dce257</code></a>
chore(deps): bump peter-evans/create-pull-request (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/88">#88</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/fb9497493b591ad90176d3ecac5ca4aeff8c9faf"><code>fb94974</code></a>
Expose <code>output-file</code> as an output when
<code>advanced-security: true</code> (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/87">#87</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/867562a69bb7adcc63dd1e8c003600a58b5f70e2"><code>867562a</code></a>
chore(deps): bump the github-actions group with 2 updates (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/85">#85</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/7462f075f718787753331c6d98ca9ef8eb41e735"><code>7462f07</code></a>
Bump pins in README (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/84">#84</a>)</li>
<li>See full diff in <a
href="https://github.com/zizmorcore/zizmor-action/compare/135698455da5c3b3e55f73f4419e481ab68cdd95...71321a20a9ded102f6e9ce5718a2fcec2c4f70d8">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-09 16:20:08 +05:00
blink-so[bot] 40c2916fa9 feat: add JFrog Xray vulnerability scanning module (#410)
This PR adds a new Terraform module that fetches JFrog Xray
vulnerability scanning results for container images stored in
Artifactory.

## Features
- Fetches vulnerability scan results from JFrog Xray
- Outputs vulnerability counts (Critical, High, Medium, Low, Total)
- Supports flexible image path formats
- Works with any workspace type using container images
- Provides secure token handling

## Design Decisions

During testing, we found two issues with the original approach of
defining the `xray` provider and `coder_metadata` inside the module:

1. **`coder_metadata` defined inside modules does not display in the
Coder dashboard** — this is a known limitation
2. **Inline provider blocks prevent using `count`/`for_each` on the
module** — which is needed when attaching metadata to resources like
`docker_container` that use `start_count`

The module now **outputs** vulnerability counts instead, and the caller
creates the `coder_metadata` and configures the `xray` provider in their
root template. This matches the pattern used by other registry modules.

## Usage

```hcl
provider "xray" {
  url                     = "${var.jfrog_url}/xray"
  access_token            = var.artifactory_access_token
  skip_xray_version_check = true
}

module "jfrog_xray" {
  source  = "registry.coder.com/coder/jfrog-xray/coder"
  version = "1.0.0"

  xray_url   = "${var.jfrog_url}/xray"
  xray_token = var.artifactory_access_token
  image      = "docker-local/codercom/enterprise-base:latest"
}

resource "coder_metadata" "xray_vulnerabilities" {
  count       = data.coder_workspace.me.start_count
  resource_id = docker_container.workspace[0].id
  icon        = "/icon/shield.svg"

  item {
    key   = "Total Vulnerabilities"
    value = module.jfrog_xray.total
  }
  item {
    key   = "Critical"
    value = module.jfrog_xray.critical
  }
  item {
    key   = "High"
    value = module.jfrog_xray.high
  }
  item {
    key   = "Medium"
    value = module.jfrog_xray.medium
  }
  item {
    key   = "Low"
    value = module.jfrog_xray.low
  }
}
```

## Related Issues
- Resolves coder/coder#12838
- Addresses coder/registry#65

Tested with a JFrog Cloud trial instance using Docker remote repository
and Xray scanning.

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: matifali <10648092+matifali@users.noreply.github.com>
Co-authored-by: DevelopmentCats <christofer@coder.com>
2026-03-06 07:45:33 -06:00
35C4n0r f1748c80f7 feat(coder-labs/modules/codex): add support for agentapi state_persistence (#785)
## Description

- add support for agentapi state_persistence

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x] Feature/enhancement
- [x] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder-labs/modules/codex`  
**New version:** `v4.2.0`  
**Breaking change:** [ ] Yes [x] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues

Closes: #783
2026-03-05 19:20:21 +05:30
Susana Ferreira f6a09d4c34 ci: remove branch filter to support stacked PRs (#786) 2026-03-05 15:39:14 +05:00
Susana Ferreira 7e75d5d762 feat: add AI Bridge Proxy support to copilot module (#725)
## Description

Add AI Bridge Proxy support to the copilot module. When enabled, the module configures proxy environment variables (`HTTPS_PROXY`, `NODE_EXTRA_CA_CERTS`) scoped to the copilot process tree (agentapi and copilot), routing Copilot traffic through AI Bridge Proxy without affecting other workspace traffic.

GitHub authentication is still required, the proxy authenticates with AI Bridge using the Coder session token but does not replace GitHub authentication.

Note: Uses [coder exp sync](https://coder.com/docs/admin/templates/startup-coordination) for startup coordination, ensuring the copilot module waits for the `aibridge-proxy` setup to complete before starting.

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

**Path:** `registry/coder-labs/modules/copilot`  
**New version:** `v0.4.0`  
**Breaking change:** [ ] Yes [x] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues

Depends on: #721
Related to: https://github.com/coder/internal/issues/1187
2026-03-05 09:34:41 +00:00
Susana Ferreira b6c2998eb3 feat: add aibridge-proxy module for AI Bridge Proxy workspace setup (#721)
## Description

Add `aibridge-proxy` module that configures workspaces to use AI Bridge Proxy. Downloads the proxy's CA certificate and exposes `proxy_auth_url` and `cert_path` outputs for tool-specific modules to configure the proxy scoped to their process. The module does not set proxy environment variables globally in the workspace.

## Type of Change

- [x] New module
- [ ] New template
- [ ] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder/modules/aibridge-proxy`  
**New version:** `v1.0.0`  
**Breaking change:** [ ] Yes [x] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues

Closes: https://github.com/coder/internal/issues/1187
2026-03-05 09:27:01 +00:00
Jason Barnett ac49e6eef5 docs(claude-code): document pre_install_script for module dependency ordering (#613)
## Summary

Clarifies that the existing `pre_install_script` variable can be used to
handle dependencies between modules during workspace startup.

## Problem

When using multiple startup modules (e.g., git-clone and claude-code),
there's a race condition where scripts execute in parallel. Module
dependencies need to be managed, such as ensuring git-clone completes
before Claude Code tries to access a workdir.

## Solution

The existing `pre_install_script` variable already provides this
capability. Updated documentation to clarify this use case.

## Example

```hcl
module "claude-code" {
  source = "registry.coder.com/coder/claude-code/coder"
  
  workdir = "/path/to/repo"
  
  # Wait for git-clone to complete before starting
  pre_install_script = <<-EOT
    #!/bin/bash
    set -e
    while [ ! -f /tmp/.git-clone-complete ]; do
      sleep 1
    done
  EOT
}
```

Resolves issue #609.

Co-authored-by: Jason Barnett <Jason.Barnett@altana.ai>
Co-authored-by: DevCats <christofer@coder.com>
2026-03-03 15:28:48 -06:00
justmanuel 63e28c0e95 Enable Devcontainer-cli module to block user login until script finishes running (#759)
## Description
Allow for devcontainer-cli module to prevent users from logging in until
its finished running.

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

**Path:** `registry/coder/modules/devcontainers-cli`  
**New version:** `1.1.0`  
**Breaking change:** [ ] Yes [x ] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [ ] Code formatted (`bun fmt`)
- [ x] Changes tested locally

## Related Issues
None

---------

Co-authored-by: DevCats <chris@dualriver.com>
Co-authored-by: DevCats <christofer@coder.com>
2026-03-03 15:01:05 -06:00
DevCats eed8e6c29a feat(vscode-web): enhance settings management and testing for VS Code Web (#758)
This pull request enhances the VS Code Web module by improving how
machine settings are handled and merged, updating documentation to
clarify the settings behavior, and adding robust automated tests for the
new functionality. The most significant changes are grouped below.

**Machine Settings Handling and Merging:**

* Introduced a new `merge_settings` function in `run.sh` that merges
provided settings with any existing machine settings using `jq` or
`python3` if available, falling back gracefully if neither is present.
Settings are now passed as base64-encoded JSON to avoid quoting issues.
[[1]](diffhunk://#diff-c6d09ac3d801a2417c0e3cf8c2cd0f093ba2cf245bad8c213f70115c75276323R7-R54)
[[2]](diffhunk://#diff-c6d09ac3d801a2417c0e3cf8c2cd0f093ba2cf245bad8c213f70115c75276323L31-R76)
[[3]](diffhunk://#diff-0c7f0791e2c2556eb4ed7666ac44534ea3ff5c7f652e01716e5d7b5c31180d92L180-R184)
[[4]](diffhunk://#diff-0c7f0791e2c2556eb4ed7666ac44534ea3ff5c7f652e01716e5d7b5c31180d92R170-R173)
* Updated the `settings` variable in `main.tf` to clarify that it
applies to VS Code Web's Machine settings and will be merged with any
existing settings on startup.

**Documentation Improvements:**

* Updated the README to clarify that settings are merged with existing
machine settings, not simply overwritten, and added a note about the
requirements (`jq` or `python3`) and limitations regarding persistence
of user settings.
[[1]](diffhunk://#diff-24e2e305e46a08f8a30243bdc916241586e4561d97861b4397b14e871f9f085dL54-R56)
[[2]](diffhunk://#diff-24e2e305e46a08f8a30243bdc916241586e4561d97861b4397b14e871f9f085dR72-R73)

**Automated Testing:**

* Expanded `main.test.ts` to include integration tests that verify
settings file creation and merging behavior inside a container, as well
as improved error handling for invalid configuration combinations.

These changes collectively make machine settings management more robust,
user-friendly, and well-documented.
2026-03-03 11:30:32 -06:00
Mathias Fredriksson 7b245549ec feat(coder/modules/claude-code): add enable_state_persistence variable (#749)
feat(coder/modules/claude-code): add enable_state_persistence variable

Expose the agentapi module's state persistence toggle so users can
control conversation state persistence across workspace restarts.
Enabled by default, set `enable_state_persistence = false` to disable.

Also bumps agentapi dependency from 2.0.0 to 2.2.0 and claude-code
to 4.8.0.

Refs coder/internal#1258
2026-03-03 18:03:57 +02:00
Mathias Fredriksson 2169fb00ee feat(coder/modules/agentapi): add state persistence support (#736)
AgentAPI can now save and restore conversation state across workspace
restarts. The module exports env vars (AGENTAPI_STATE_FILE,
AGENTAPI_SAVE_STATE, AGENTAPI_LOAD_STATE, AGENTAPI_PID_FILE) that the
binary reads directly. No consumer module changes needed.

New variables: enable_state_persistence (default false),
state_file_path, pid_file_path. State and PID files default to
$HOME/<module_dir_name>/.

Requires agentapi >= v0.12.0. A shared version_at_least function in
lib.sh gates the env var exports and SIGUSR1 in the shutdown script.
Old binaries get a warning and graceful skip.

Shutdown script now does SIGUSR1 (state save), log snapshot capture
(existing, now fault-tolerant via subshell), then SIGTERM with wait.

Closes coder/internal#1257
Refs coder/internal#1256
Refs #696
2026-03-03 13:27:23 +02:00
35C4n0r e3abbb9aa0 maintenance(coder-labs/modules/codex): skip migration notice and add agentapi type flag (#781)
This PR introduces:
1. Adding --type flag to agentapi command
2. Introduce `[notice.model_migrations]` to skip migration notice,
improves tasks UX
3. Set profile = "aibridge" rather than passing it using --profile flag

## Description

<!-- Briefly describe what this PR does and why -->

## Type of Change

- [ ] New module
- [ ] New template
- [x] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

**Path:** `registry/coder-labs/modules/codex`  
**New version:** `v4.1.2`  
**Breaking change:** [ ] Yes [x] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues
Closes: #740
2026-03-03 10:35:45 +05:30
Atif Ali 71a4cf2031 chore(coder/modules/mux): update Mux logo (#775)
Update Mux logo
2026-03-02 10:07:58 +05:00
blinkagent[bot] a0a3783a51 docs(dotfiles): add hint about using SSH URLs when HTTPS cloning is restricted (#757)
Some Git providers (e.g. on-prem GitLab) disable HTTPS cloning by
default, which causes the dotfiles clone to silently fail during
workspace startup. Users see "Startup scripts are still running" but the
dotfiles folder is never populated.

This PR adds two small documentation touches:

1. **`main.tf` default description** — appends a one-liner suggesting
SSH URLs when HTTPS is restricted. This is what users see in the Coder
UI parameter prompt.
2. **`README.md`** — new "SSH vs HTTPS URLs" section with an example and
a brief explanation of why SSH URLs are more reliable during startup.

No logic changes, no new variables — just documentation.

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: DevCats <christofer@coder.com>
2026-02-27 14:48:55 -06:00
blinkagent[bot] eb38bc3092 ci: add variable naming lint to terraform validate (#766)
## Summary

Terraform variable names should use underscores (`snake_case`), not
hyphens. Hyphens are technically valid in HCL but are [deprecated and
non-idiomatic](https://developer.hashicorp.com/terraform/language/values/variables).
This PR adds a variable name check into the existing
`terraform_validate.sh` script so it runs as part of the existing "Run
Terraform Validate" CI step — no new scripts or workflow changes needed.

## Changes

### `scripts/terraform_validate.sh` — added `validate_variable_names()`
- Scans `.tf` files in changed modules for `variable` declarations with
hyphens
- Fails with actionable fix suggestions (shows the snake_case
alternative)
- Runs after `terraform validate` in the same CI step

### Fix: `code-server` module — rename `machine-settings` →
`machine_settings`
- Renames the hyphenated variable and its reference in main.tf
- Bumps version `1.4.2` → `1.4.3`
- Updates all README examples

---
Created on behalf of @matifali

---------

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: DevCats <christofer@coder.com>
2026-02-27 11:15:47 -06:00
Michael Suchacz 93e6094b1b fix: rename add-project to add_project in mux module (#765)
Terraform variable names should use underscores, not hyphens. Renames
the `add-project` variable to `add_project` in the mux module.

**Changes:**
- `main.tf`: Renamed variable declaration and references
- `README.md`: Updated example usage

Bumped version: 1.3.0 → 1.3.1

---
Generated with [Mux](https://mux.coder.com) using Claude
2026-02-27 10:44:39 -06:00
blinkagent[bot] 6ec506e9b6 fix(dotfiles): allow tilde (~) in git repository URLs (#763)
## Description

The URL validation regex in the dotfiles module was rejecting URLs
containing tilde (`~`) characters, which are commonly used in Bitbucket
Server for user repositories (e.g.
`ssh://git@bitbucket.example.org:7999/~username/repo.git`).

This adds `~` to the allowed character set in all three validation
regexes (for `default_dotfiles_uri`, `dotfiles_uri`, and the
`coder_parameter` validation).

## Type of Change

- [ ] New module
- [ ] New template
- [x] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

**Path:** `registry/coder/modules/dotfiles`  
**New version:** `v1.3.1`  
**Breaking change:** [ ] Yes [x] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [ ] Changes tested locally

## Related Issues

Fixes #762

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
2026-02-26 13:30:20 -06:00
Michael Suchacz b794b1edd9 feat(mux): add package_manager and registry_url variables (#761)
## Summary

Add two new customization variables to the Mux module so users can
control how Mux is installed:

### `package_manager` (default: `"auto"`)

Choose which Node package manager installs Mux:

- **`auto`** (default) — auto-detects `npm` → `pnpm` → `bun` in order,
falling back to a direct tarball download when none is available
- **`npm`**, **`pnpm`**, **`bun`** — force a specific package manager
(fails if not found on PATH)

### `registry_url` (default: `"https://registry.npmjs.org"`)

Override the npm registry URL for private registries or mirrors. All
previously hardcoded `registry.npmjs.org` references have been replaced
with this variable. The `--registry` flag is passed to whichever package
manager is used, and the tarball fallback path also uses it.

## Changes

| File | What changed |
|---|---|
| `main.tf` | Added `package_manager` and `registry_url` variables with
validation; pass both to template |
| `run.sh` | Rewrote install logic: PM auto-detection loop,
`case`/`esac` dispatch with PM-specific flags, replaced all hardcoded
registry URLs with `${REGISTRY_URL}` |
| `mux.tftest.hcl` | Added 6 new test cases: PM selection
(npm/pnpm/bun), invalid PM validation, custom registry URL,
trailing-slash stripping |
| `main.test.ts` | Updated expected log messages to match new generic
wording |
| `README.md` | Updated description, added Custom Package Manager and
Custom Registry examples, updated Notes section |

## Version

Bumped **1.2.0 → 1.3.0** (minor: new backward-compatible features).

## Validation

-  `terraform validate` — clean
-  `terraform test` — **15 passed, 0 failed**
-  `terraform fmt` — clean

---

Generated with [Mux](https://mux.coder.com) using Claude
2026-02-26 16:40:40 +01:00
Michael Suchacz 94e41d3780 Add arbitrary mux server command argument parsing (#738)
## Summary
- add a new `additional_arguments` module variable to pass extra
arguments to `mux server`
- parse `additional_arguments` in `run.sh` with quoted-group support so
values like paths with spaces are preserved
- keep existing `add-project` behavior while allowing additional
arbitrary flags
- add Terraform and Bun tests covering `additional_arguments` behavior
- document the new option in the module README and bump example version
references to `1.2.0`

## Why
The module previously only supported the `add-project` flag. This change
lets users pass additional `mux server` arguments without waiting for
new module variables.

## Validation
- `shellcheck --severity=warning --format=gcc
registry/coder/modules/mux/run.sh`
- `terraform -chdir=registry/coder/modules/mux test -verbose`
- `bun test registry/coder/modules/mux/main.test.ts`

## Breaking changes
None.

---
Generated with Mux (exec agent) using GPT-5.
2026-02-25 18:15:33 +00:00
Phorcys 480bf4b48c chore: update vscode-desktop-core module dependencies (#751)
## Description

#750 follow-up

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other
2026-02-24 05:20:27 +00:00
Phorcys d8851492c0 fix: fix positron module slug and display name (#752)
## Description

In https://github.com/coder/registry/pull/279, I had accidentally made
the slug of the Positron Desktop app "cursor", and display name to be
"Cursor Desktop". This PR fixes that.

## Type of Change

- [ ] New module
- [ ] New template
- [x] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other
2026-02-24 09:43:49 +05:00
Phorcys 186a779659 chore(registry/coder/modules): rename vscode-desktop-core input params (#750)
## Description

Rename `web_app_*` suffix to `coder_app_*`

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other
2026-02-24 01:57:35 +01:00
Zach 8defcb2410 fix(agentapi): fix misleading attempt counter in wait-for-start script (#734)
The log message showed ($i/15) where $i ranged from 1-150, making it
look like the counter overshot its maximum. This change extracts the
iteration count into a max_attempts variable and uses it consistently.
2026-02-18 16:13:22 +00:00
Katorly 14c43d9f29 fix(coder/modules/jetbrains and coder-labs/modules/nextflow): fix typos in two documentations (#714) 2026-02-18 08:11:20 +00:00
blinkagent[bot] ac92895c50 docs(azure-linux): clarify resource lifecycle on stop vs delete (#713)
The existing README for the Azure Linux template only mentioned that the
VM is ephemeral and the managed disk is persistent, but did not explain
that the resource group, virtual network, subnet, and network interface
also persist when a workspace is stopped.

This led to confusion where users expected all Azure resources to be
cleaned up on stop, when in reality only the VM is destroyed.

## Changes

- Added the persistent networking/infrastructure resources to the
resource list
- Added "What happens on stop" section explaining which resources
persist and why
- Added "What happens on delete" section confirming all resources are
cleaned up
- Moved the existing note about ephemeral tools/files into a "Workspace
restarts" subsection for clarity

Created on behalf of @DevelopmentCats

Co-authored-by: blink-so[bot] <211532188+blink-so[bot]@users.noreply.github.com>
Co-authored-by: DevCats <christofer@coder.com>
2026-02-17 14:05:54 -06:00
Rowan Smith 563dbc4a71 feat: add post_clone_script to dotfiles in order to support startup dependencies/coordination (#679)
## Description

Adds post_clone_script variable to the dotfiles module, enabling startup
coordination with other scripts that depend on dotfiles.

An example of how to use this, which assumes the PR has been merged:

```
module "dotfiles" {
  count                = data.coder_workspace.me.start_count
  source               = "registry.coder.com/coder/dotfiles/coder"
  version              = "1.3.0"
  agent_id             = coder_agent.main.id
  default_dotfiles_uri = "https://github.com/someuser/somedotfiles"
  post_clone_script    = <<-EOF
    coder exp sync start dotfiles && coder exp sync complete dotfiles
  EOF
}

resource "coder_script" "personalize" {
  count        = data.coder_workspace.me.start_count
  agent_id     = coder_agent.main.id
  display_name = "Personalize"
  icon         = "/icon/personalize.svg"
  run_on_start = true
  script       = <<-EOF
    trap 'coder exp sync complete personalize' EXIT
    coder exp sync want personalize dotfiles
    coder exp sync start personalize
    SCRIPT="$HOME/.config/coderv2/dotfiles/personalize"
    if [ -f "$SCRIPT" ] && [ -x "$SCRIPT" ]; then
      $SCRIPT
    fi
  EOF
}
```

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

**Path:** `registry/coder/modules/dotfiles`  
**New version:** `v1.3.0`  
**Breaking change:** [ ] Yes [x] No

## Testing & Validation

- [ ] Tests pass (`bun test`)
- [ ] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues

#678
2026-02-16 09:14:50 +11:00
Michael Suchacz 39fec7ca82 🤖 feat: mux module — add per-workspace auth token for CSWSH protection (#728)
## Summary

Add per-workspace authentication token wiring to the Mux Coder module,
closing the last-mile deployment gap for cross-site WebSocket hijacking
(CSWSH) protection identified in coder/security#120.

## Background

When Mux runs as a Coder workspace app, it is accessible via Coder's
subdomain proxy (e.g., `mux--ws--user.apps.coder.com`). Without an auth
token, a malicious same-site origin (another user's workspace app on the
same `*.coder.com` domain) can hijack the WebSocket session and execute
arbitrary commands via the oRPC API.

The Mux application itself already implements:
- **Strict same-origin enforcement** for HTTP/CORS and WebSocket
upgrades (coder/mux#2418)
- **Auth token support** — the server reads `MUX_SERVER_AUTH_TOKEN` or
`--auth-token`, and the browser frontend extracts `?token=` from the URL
and persists it to localStorage

What was missing was module-level token generation and browser/backend
wiring.

## Implementation

- **`random_password.mux_auth_token`** generates a 64-character token
per module instance.
- **Backend wiring:** `run.sh` launches mux with a process-scoped
`MUX_SERVER_AUTH_TOKEN` environment variable.
- **Frontend wiring:** `coder_app.mux.url` includes `?token=<secret>` so
first launch from Coder passes the token to the browser for
bootstrap/persistence.

To avoid cross-instance breakage, this change intentionally does **not**
use a shared `coder_env` key. Multiple `coder/mux` module instances can
target the same `agent_id` (different `slug`/`port`), and a single
global env key would collide. Process-scoped env keeps each instance's
backend token aligned with its app URL token.

## Validation

- `terraform fmt -check -diff` in `registry/coder/modules/mux`
- `terraform test` in `registry/coder/modules/mux` (8 passed, 0 failed)
- Updated tests now verify the URL token value (not just prefix) and
verify the launch script sets `MUX_SERVER_AUTH_TOKEN` using the
generated token.

---

_Generated with `mux` • Model: `anthropic:claude-opus-4-6` • Thinking:
`xhigh`_

<!-- mux-attribution: model=anthropic:claude-opus-4-6 thinking=xhigh -->
2026-02-14 23:08:12 +01:00
35C4n0r c5ff4de9ed feat(coder/modules/agent-helper): add agent-helper module to help run scripts (#704)
## Description
The Agent Helper module is a building block for modules that need to run
multiple scripts in a specific order. It uses `coder exp sync` for
dependency management and is designed for orchestrating pre-install,
install, post-install, and start scripts.

## Type of Change

- [x] New module
- [ ] New template
- [ ] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder/modules/agent-helper`  
**New version:** `v1.0.0`  
**Breaking change:** [x] Yes [ ] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues

Closes: https://github.com/coder/registry/issues/696
Closes: https://github.com/coder/registry/issues/698

---------

Co-authored-by: DevCats <christofer@coder.com>
2026-02-13 22:05:21 +05:30
35C4n0r a9a03b167c feat(coder-labs/modules/codex): bump agentapi version to v0.11.8 in codex (#727)
## Description
- bump agentapi version to v0.11.8 in codex

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder-labs/modules/codex`  
**New version:** `v4.1.1`  
**Breaking change:** [ ] Yes [x] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues

<!-- Link related issues or write "None" if not applicable -->
2026-02-12 23:21:07 +05:30
Riajul Islam 0449051828 feat(KasmVNC): allow share variable to be passed with default: owner (#709)
Co-authored-by: Atif Ali <atif@coder.com>
2026-02-11 07:34:37 +00:00
DevCats 8e68c96633 fix: add validation to inputs in dot-files module (#703)
## Description

Add's Validation to the dotfiles module in all input's to address
security issue pointed out in
https://github.com/coder/security/issues/119
<!-- Briefly describe what this PR does and why -->

## Type of Change

- [ ] New module
- [ ] New template
- [X] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder/modules/dotfiles`  
**New version:** `v1.2.4`  
**Breaking change:** [ ] Yes [X] No

## Testing & Validation

- [Y] Tests pass (`bun test`)
- [Y] Code formatted (`bun fmt`)
- [  ] Changes tested locally

## Related Issues

https://github.com/coder/security/issues/119
<!-- Link related issues or write "None" if not applicable -->

---------

Co-authored-by: Jakub Domeracki <jakub@coder.com>
2026-02-09 07:54:15 -06:00
DevCats 7e3e842aaa fix: temp-fix for not using coder_env to set path due to limitations (#699)
### Summary

Temporary workaround for non-deterministic PATH handling when using
`coder_env` across multiple modules
([coder/coder#21885](https://github.com/coder/coder/issues/21885)).

### Problem

When multiple modules define `coder_env` with the same `name` (e.g.,
`PATH`), the final value is non-deterministic due to Go map iteration
order. This caused PATH overwrites instead of appending, breaking Claude
Code discovery in workspaces using multiple modules.

### Solution

Replace `coder_env` PATH manipulation with script-based PATH handling:

- **Install script**: Exports PATH and adds claude binary directory to
shell profiles (`.profile`, `.bashrc`, `.zshrc`, fish) for interactive
shell access
- **Start script**: Exports PATH at script execution time
- **Symlink**: Creates symlink in `CODER_SCRIPT_BIN_DIR` as additional
fallback
- **Validation**: Prevents invalid configuration where
`claude_binary_path` is customized but `install_claude_code=true`
(official installer doesn't support custom paths)

### Changes

- Removed `coder_env` resource for PATH
- Added PATH export to `install.sh` and `start.sh`
- Added shell profile modifications for cross-shell compatibility (bash,
zsh, fish)
- Added variable validation for `claude_binary_path`

### Note

This is a temporary fix until
[coder/coder#21885](https://github.com/coder/coder/issues/21885) is
resolved with a proper `merge_strategy` attribute for `coder_env`.

## Type of Change

- [ ] New module
- [ ] New template
- [X] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder/modules/claude-code`  
**New version:** `v4.7.5`  
**Breaking change:** [ ] Yes [X] No

## Testing & Validation

- [X] Tests pass (`bun test`)
- [X] Code formatted (`bun fmt`)
- [X] Changes tested locally

## Related Issues

([coder/coder#21885](https://github.com/coder/coder/issues/21885))
2026-02-05 09:18:27 -06:00
Steven Masley 6ac4d70405 chore: add placeholder to git config inputs (#694)
Shows a placeholder of default values in the parameter input box
2026-02-04 09:34:02 -06:00
Harsh Singh Panwar 49a7985bc6 fix(coder/modules/jupyterlab): fix a typo (#689)
Closes https://github.com/coder/registry/issues/685

---------

Co-authored-by: Atif Ali <atif@coder.com>
Co-authored-by: Muhammad Atif Ali <me@matifali.dev>
2026-02-04 09:10:27 +05:00
Andreas Skorczyk 08e68a2da4 Don't create CLAUDE_API_KEY coder_env if not set (#686)
## Description

At the moment, the `CLAUDE_API_KEY` coder_env will always be created,
even if the variable itself is not. This can lead to the environment
variable being unset if it has been set outside of Terraform.

With this PR, we make the `claude_api_key` coder_env conditional, so it
will only be created if an API key has been set.

## Type of Change

- [ ] New module
- [ ] New template
- [x] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder/modules/claude-code/main.tf`  
**New version:** `v4.7.4`  
**Breaking change:** [ ] Yes [x] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues

None

---------

Co-authored-by: 35C4n0r <70096901+35C4n0r@users.noreply.github.com>
2026-02-04 08:10:16 +05:30
Atif Ali 66662db5aa fix(claude-code): fix example for using AI Bridge (#691)
Co-authored-by: 35C4n0r <70096901+35C4n0r@users.noreply.github.com>
2026-02-02 16:02:06 +00:00
35C4n0r e25a972d7d fix(workflows/version-bump.yaml): fix typo in case statement (#687)
## Description
- Fix typo in version bump workflow

## Type of Change

- [ ] New module
- [ ] New template
- [x] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally
2026-02-02 15:33:56 +00:00
35C4n0r a10d5fa6a0 fix(coder/modules/claude-code): update terraform required version to >= 1.9 (#688)
## Description

- Update terraform version for claude-code module.
- Update coder version required in readme

## Type of Change

- [ ] New module
- [ ] New template
- [x] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder/modules/claude-code`  
**New version:** `v4.7.2`  
**Breaking change:** [ ] Yes [x] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues

<!-- Link related issues or write "None" if not applicable -->
2026-01-31 09:44:41 +05:30
35C4n0r 360b3cd3ce feat(coder-labs/modules/codex): add support for aibridge (#655)
## Description
- Add support for AI Bridge

<!-- Briefly describe what this PR does and why -->

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder-labs/modules/codex`  
**New version:** `v4.1.0`  
**Breaking change:** [ ] Yes [x] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues
Closes: #650

---------

Co-authored-by: DevCats <christofer@coder.com>
Co-authored-by: Atif Ali <atif@coder.com>
2026-01-31 08:41:19 +05:30
Mathias Fredriksson fa30191394 feat(coder/modules/agentapi): add log snapshot capture on shutdown (#676)
Captures the last 10 messages from AgentAPI when task workspaces stop,
allowing users to view conversation history while the task is paused.

The shutdown script fetches messages, builds a payload with last 10
messages, truncates to 64KB if needed (removes old messages first, then
truncates content of the last message), and posts to the log snapshot
endpoint.

Gracefully handles non-task workspaces (skips), older Coder versions
without the endpoint (logs and continues), and empty message sets.

Enabled by default via task_log_snapshot variable. Task ID is
automatically resolved from data.coder_task when available.

Updates coder/internal#1257
2026-01-30 09:31:04 +02:00
35C4n0r e4606c51f3 feat(coder/modules/claude-code): update claude to use binary installation for specific version pinning (#681)
## Description
- Update claude-code module to use binary installation incase of
specific version pinning unless use npm is specified.
- Add a deprecation warning in the install script and readme for npm.

## Type of Change

- [ ] New module
- [ ] New template
- [x] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder/modules/claude-code`  
**New version:** `v4.7.1`  
**Breaking change:** [ ] Yes [x] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues

<!-- Link related issues or write "None" if not applicable -->
2026-01-29 17:07:18 +00:00
Tao Chen 3b6246f256 [Template] SSH Linux - Add support for deploying Coder on existing Linux systems (bare-metal installation) (#605)
## Description

<!-- Briefly describe what this PR does and why -->

A draft that allow user connect existing linux system though coder by
ssh

## Type of Change

- [ ] New module
- [x] New template
- [ ] Bug fix
- [ ] Feature/enhancement
- [x] Documentation
- [ ] Other

## Template Information

<!-- Delete this section if not applicable -->

**Path:** `registry/IamTaoChen/templates/ssh-linux`

## Testing & Validation

- [ ] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues

<!-- Link related issues or write "None" if not applicable -->

---------

Co-authored-by: DevCats <christofer@coder.com>
2026-01-29 10:40:28 -06:00
Yevhenii Shcherbina b077dfafc8 chore: set default boundary version to latest (#680) 2026-01-29 09:34:38 -05:00
dependabot[bot] 6e0291cdb9 chore(deps): bump the github-actions group with 5 updates (#673)
Bumps the github-actions group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `6.0.0` |
`6.0.2` |
| [coder/coder](https://github.com/coder/coder) | `2.29.1` | `2.29.2` |
| [crate-ci/typos](https://github.com/crate-ci/typos) | `1.42.0` |
`1.42.1` |
| [actions/setup-go](https://github.com/actions/setup-go) | `6.1.0` |
`6.2.0` |
|
[zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action)
| `0.3.0` | `0.4.1` |

Updates `actions/checkout` from 6.0.0 to 6.0.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/releases">actions/checkout's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.2</h2>
<h2>What's Changed</h2>
<ul>
<li>Add orchestration_id to git user-agent when ACTIONS_ORCHESTRATION_ID
is set by <a
href="https://github.com/TingluoHuang"><code>@​TingluoHuang</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2355">actions/checkout#2355</a></li>
<li>Fix tag handling: preserve annotations and explicit fetch-tags by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2356">actions/checkout#2356</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v6.0.1...v6.0.2">https://github.com/actions/checkout/compare/v6.0.1...v6.0.2</a></p>
<h2>v6.0.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Update all references from v5 and v4 to v6 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2314">actions/checkout#2314</a></li>
<li>Add worktree support for persist-credentials includeIf by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2327">actions/checkout#2327</a></li>
<li>Clarify v6 README by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2328">actions/checkout#2328</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v6...v6.0.1">https://github.com/actions/checkout/compare/v6...v6.0.1</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>v6.0.2</h2>
<ul>
<li>Fix tag handling: preserve annotations and explicit fetch-tags by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2356">actions/checkout#2356</a></li>
</ul>
<h2>v6.0.1</h2>
<ul>
<li>Add worktree support for persist-credentials includeIf by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2327">actions/checkout#2327</a></li>
</ul>
<h2>v6.0.0</h2>
<ul>
<li>Persist creds to a separate file by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li>
<li>Update README to include Node.js 24 support details and requirements
by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li>
</ul>
<h2>v5.0.1</h2>
<ul>
<li>Port v6 cleanup to v5 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li>
</ul>
<h2>v5.0.0</h2>
<ul>
<li>Update actions checkout to use node 24 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li>
</ul>
<h2>v4.3.1</h2>
<ul>
<li>Port v6 cleanup to v4 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2305">actions/checkout#2305</a></li>
</ul>
<h2>v4.3.0</h2>
<ul>
<li>docs: update README.md by <a
href="https://github.com/motss"><code>@​motss</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li>Add internal repos for checking out multiple repositories by <a
href="https://github.com/mouismail"><code>@​mouismail</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li>Documentation update - add recommended permissions to Readme by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
<li>Adjust positioning of user email note and permissions heading by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li>
<li>Update CODEOWNERS for actions by <a
href="https://github.com/TingluoHuang"><code>@​TingluoHuang</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li>
<li>Update package dependencies by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li>
</ul>
<h2>v4.2.2</h2>
<ul>
<li><code>url-helper.ts</code> now leverages well-known environment
variables by <a href="https://github.com/jww3"><code>@​jww3</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/1941">actions/checkout#1941</a></li>
<li>Expand unit test coverage for <code>isGhes</code> by <a
href="https://github.com/jww3"><code>@​jww3</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1946">actions/checkout#1946</a></li>
</ul>
<h2>v4.2.1</h2>
<ul>
<li>Check out other refs/* by commit if provided, fall back to ref by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1924">actions/checkout#1924</a></li>
</ul>
<h2>v4.2.0</h2>
<ul>
<li>Add Ref and Commit outputs by <a
href="https://github.com/lucacome"><code>@​lucacome</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1180">actions/checkout#1180</a></li>
<li>Dependency updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>- <a
href="https://redirect.github.com/actions/checkout/pull/1777">actions/checkout#1777</a>,
<a
href="https://redirect.github.com/actions/checkout/pull/1872">actions/checkout#1872</a></li>
</ul>
<h2>v4.1.7</h2>
<ul>
<li>Bump the minor-npm-dependencies group across 1 directory with 4
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1739">actions/checkout#1739</a></li>
<li>Bump actions/checkout from 3 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1697">actions/checkout#1697</a></li>
<li>Check out other refs/* by commit by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1774">actions/checkout#1774</a></li>
<li>Pin actions/checkout's own workflows to a known, good, stable
version. by <a href="https://github.com/jww3"><code>@​jww3</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1776">actions/checkout#1776</a></li>
</ul>
<h2>v4.1.6</h2>
<ul>
<li>Check platform to set archive extension appropriately by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1732">actions/checkout#1732</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/checkout/commit/de0fac2e4500dabe0009e67214ff5f5447ce83dd"><code>de0fac2</code></a>
Fix tag handling: preserve annotations and explicit fetch-tags (<a
href="https://redirect.github.com/actions/checkout/issues/2356">#2356</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/064fe7f3312418007dea2b49a19844a9ee378f49"><code>064fe7f</code></a>
Add orchestration_id to git user-agent when ACTIONS_ORCHESTRATION_ID is
set (...</li>
<li><a
href="https://github.com/actions/checkout/commit/8e8c483db84b4bee98b60c0593521ed34d9990e8"><code>8e8c483</code></a>
Clarify v6 README (<a
href="https://redirect.github.com/actions/checkout/issues/2328">#2328</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/033fa0dc0b82693d8986f1016a0ec2c5e7d9cbb1"><code>033fa0d</code></a>
Add worktree support for persist-credentials includeIf (<a
href="https://redirect.github.com/actions/checkout/issues/2327">#2327</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/c2d88d3ecc89a9ef08eebf45d9637801dcee7eb5"><code>c2d88d3</code></a>
Update all references from v5 and v4 to v6 (<a
href="https://redirect.github.com/actions/checkout/issues/2314">#2314</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/checkout/compare/1af3b93b6815bc44a9784bd300feb67ff0d1eeb3...de0fac2e4500dabe0009e67214ff5f5447ce83dd">compare
view</a></li>
</ul>
</details>
<br />

Updates `coder/coder` from 2.29.1 to 2.29.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/coder/coder/releases">coder/coder's
releases</a>.</em></p>
<blockquote>
<h2>v2.29.2</h2>
<h2>Changelog</h2>
<blockquote>
<p>[!NOTE]
This is a mainline Coder release. We advise enterprise customers without
a staging environment to install our <a
href="https://github.com/coder/coder/releases/latest">latest stable
release</a> while we refine this version. Learn more about our <a
href="https://coder.com/docs/install/releases">Release Schedule</a>.</p>
</blockquote>
<h3>Features</h3>
<ul>
<li>CLI: Backport <a
href="https://redirect.github.com/coder/coder/issues/21374">#21374</a>
to 2.29 (<a
href="https://redirect.github.com/coder/coder/issues/21561">#21561</a>,
2e2d0dde4)</li>
</ul>
<h3>Bug fixes</h3>
<ul>
<li>Backport update boundary version to 2.29 (<a
href="https://redirect.github.com/coder/coder/issues/21290">#21290</a>)
(<a
href="https://redirect.github.com/coder/coder/issues/21575">#21575</a>,
2314e4a94)</li>
<li>Backport migration fixes (<a
href="https://redirect.github.com/coder/coder/issues/21611">#21611</a>,
b5360a918)</li>
</ul>
<h3>Chores</h3>
<ul>
<li>Add antigravity to allowed protocols list (<a
href="https://redirect.github.com/coder/coder/issues/20873">#20873</a>)
(<a
href="https://redirect.github.com/coder/coder/issues/21122">#21122</a>,
bd76c602e)</li>
</ul>
<p>Compare: <a
href="https://github.com/coder/coder/compare/v2.29.1...v2.29.2"><code>v2.29.1...v2.29.2</code></a></p>
<h2>Container image</h2>
<ul>
<li><code>docker pull ghcr.io/coder/coder:v2.29.2</code></li>
</ul>
<h2>Install/upgrade</h2>
<p>Refer to our docs to <a
href="https://coder.com/docs/install">install</a> or <a
href="https://coder.com/docs/install/upgrade">upgrade</a> Coder, or use
a release asset below.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/coder/coder/commit/b5360a9180613328a62d64efcfaac5a31980c746"><code>b5360a9</code></a>
fix: backport migration fixes (<a
href="https://redirect.github.com/coder/coder/issues/21611">#21611</a>)</li>
<li><a
href="https://github.com/coder/coder/commit/2e2d0dde447d5e52a07e13ccc54631aec1867319"><code>2e2d0dd</code></a>
feat(cli): backport <a
href="https://redirect.github.com/coder/coder/issues/21374">#21374</a>
to 2.29 (<a
href="https://redirect.github.com/coder/coder/issues/21561">#21561</a>)</li>
<li><a
href="https://github.com/coder/coder/commit/2314e4a94ee53ef4616b1b856f1d0281103398fd"><code>2314e4a</code></a>
fix: backport update boundary version to 2.29 (<a
href="https://redirect.github.com/coder/coder/issues/21290">#21290</a>)
(<a
href="https://redirect.github.com/coder/coder/issues/21575">#21575</a>)</li>
<li><a
href="https://github.com/coder/coder/commit/bd76c602e4f0a9f5bc98c6d45e13115219c1d81d"><code>bd76c60</code></a>
chore: add antigravity to allowed protocols list (<a
href="https://redirect.github.com/coder/coder/issues/20873">#20873</a>)
(<a
href="https://redirect.github.com/coder/coder/issues/21122">#21122</a>)</li>
<li>See full diff in <a
href="https://github.com/coder/coder/compare/59cdd7e21f4d7da12567c0c29964d298fbf38f27...b5360a9180613328a62d64efcfaac5a31980c746">compare
view</a></li>
</ul>
</details>
<br />

Updates `crate-ci/typos` from 1.42.0 to 1.42.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/releases">crate-ci/typos's
releases</a>.</em></p>
<blockquote>
<h2>v1.42.1</h2>
<h2>[1.42.1] - 2026-01-19</h2>
<h3>Fixes</h3>
<ul>
<li>Ignore hex literals with suffixes (e.g. <code>0xffffUL</code>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/crate-ci/typos/blob/master/CHANGELOG.md">crate-ci/typos's
changelog</a>.</em></p>
<blockquote>
<h1>Change Log</h1>
<p>All notable changes to this project will be documented in this
file.</p>
<p>The format is based on <a href="https://keepachangelog.com/">Keep a
Changelog</a>
and this project adheres to <a href="https://semver.org/">Semantic
Versioning</a>.</p>
<!-- raw HTML omitted -->
<h2>[Unreleased] - ReleaseDate</h2>
<h2>[1.42.1] - 2026-01-19</h2>
<h3>Fixes</h3>
<ul>
<li>Ignore hex literals with suffixes (e.g. <code>0xffffUL</code>)</li>
</ul>
<h2>[1.42.0] - 2026-01-07</h2>
<h3>Features</h3>
<ul>
<li>Dictionary updates</li>
</ul>
<h2>[1.41.0] - 2025-12-31</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1431">December
2025</a> changes</li>
</ul>
<h2>[1.40.1] - 2025-12-29</h2>
<h3>Fixes</h3>
<ul>
<li>Treat <code>incrementer</code> and <code>incrementor</code> the same
for now</li>
</ul>
<h3>Fixes</h3>
<ul>
<li>Don't correct ITerm2</li>
</ul>
<h2>[1.40.0] - 2025-11-26</h2>
<h3>Features</h3>
<ul>
<li>Updated the dictionary with the <a
href="https://redirect.github.com/crate-ci/typos/issues/1405">November
2025</a> changes</li>
</ul>
<h2>[1.39.2] - 2025-11-13</h2>
<h3>Fixes</h3>
<ul>
<li>Don't offer <code>entry</code> as a correction for
<code>entrys</code></li>
</ul>
<h2>[1.39.1] - 2025-11-12</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/crate-ci/typos/commit/65120634e79d8374d1aa2f27e54baa0c364fff5a"><code>6512063</code></a>
chore: Release</li>
<li><a
href="https://github.com/crate-ci/typos/commit/2049566b9c8d1828af41b31f770bbc44d6b34eab"><code>2049566</code></a>
docs: Update changelog</li>
<li><a
href="https://github.com/crate-ci/typos/commit/cbc66c9a8518fdb8d78f6502705ffad9a58574c5"><code>cbc66c9</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1471">#1471</a>
from epage/hex</li>
<li><a
href="https://github.com/crate-ci/typos/commit/207157952c1c5bb2f91d933d56924dcb674cd919"><code>2071579</code></a>
fix(tokens): Ignore hex literals with suffixes</li>
<li><a
href="https://github.com/crate-ci/typos/commit/7300bb0964cb8a525429adbde59c6a4eeb27099e"><code>7300bb0</code></a>
perf(token): Avoid switching to chars</li>
<li><a
href="https://github.com/crate-ci/typos/commit/01955c0f2a615c6f18fecd48a83fce416f520c38"><code>01955c0</code></a>
perf(token): Prefer slices over characters</li>
<li><a
href="https://github.com/crate-ci/typos/commit/5d4cfab739a1567f49a71c421647370271da220f"><code>5d4cfab</code></a>
test(cli): Show hex literal issue</li>
<li><a
href="https://github.com/crate-ci/typos/commit/3cee018e3f423e227a4df83b164d33084d6ee2be"><code>3cee018</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1468">#1468</a>
from Wilfred/patch-1</li>
<li><a
href="https://github.com/crate-ci/typos/commit/a96a636d4eab2dee39e7046a61c94cf3171cbaad"><code>a96a636</code></a>
Fix typo in ripsecrets link</li>
<li><a
href="https://github.com/crate-ci/typos/commit/837ad2701b39a6d960ea301041d309c10185efd6"><code>837ad27</code></a>
Merge pull request <a
href="https://redirect.github.com/crate-ci/typos/issues/1467">#1467</a>
from Wilfred/full_examples_in_reference</li>
<li>Additional commits viewable in <a
href="https://github.com/crate-ci/typos/compare/bb4666ad77b539a6b4ce4eda7ebb6de553704021...65120634e79d8374d1aa2f27e54baa0c364fff5a">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/setup-go` from 6.1.0 to 6.2.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/setup-go/releases">actions/setup-go's
releases</a>.</em></p>
<blockquote>
<h2>v6.2.0</h2>
<h2>What's Changed</h2>
<h3>Enhancements</h3>
<ul>
<li>Example for restore-only cache in documentation by <a
href="https://github.com/aparnajyothi-y"><code>@​aparnajyothi-y</code></a>
in <a
href="https://redirect.github.com/actions/setup-go/pull/696">actions/setup-go#696</a></li>
<li>Update Node.js version in action.yml by <a
href="https://github.com/ccoVeille"><code>@​ccoVeille</code></a> in <a
href="https://redirect.github.com/actions/setup-go/pull/691">actions/setup-go#691</a></li>
<li>Documentation update of actions/checkout by <a
href="https://github.com/deining"><code>@​deining</code></a> in <a
href="https://redirect.github.com/actions/setup-go/pull/683">actions/setup-go#683</a></li>
</ul>
<h3>Dependency updates</h3>
<ul>
<li>Upgrade js-yaml from 3.14.1 to 3.14.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-go/pull/682">actions/setup-go#682</a></li>
<li>Upgrade <code>@​actions/cache</code> to v5 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/setup-go/pull/695">actions/setup-go#695</a></li>
<li>Upgrade actions/checkout from 5 to 6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-go/pull/686">actions/setup-go#686</a></li>
<li>Upgrade qs from 6.14.0 to 6.14.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/setup-go/pull/703">actions/setup-go#703</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/ccoVeille"><code>@​ccoVeille</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-go/pull/691">actions/setup-go#691</a></li>
<li><a href="https://github.com/deining"><code>@​deining</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/setup-go/pull/683">actions/setup-go#683</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-go/compare/v6...v6.2.0">https://github.com/actions/setup-go/compare/v6...v6.2.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/setup-go/commit/7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5"><code>7a3fe6c</code></a>
Bump qs from 6.14.0 to 6.14.1 (<a
href="https://redirect.github.com/actions/setup-go/issues/703">#703</a>)</li>
<li><a
href="https://github.com/actions/setup-go/commit/b9adafd441833a027479ddd0db37eaece68d35cb"><code>b9adafd</code></a>
Bump actions/checkout from 5 to 6 (<a
href="https://redirect.github.com/actions/setup-go/issues/686">#686</a>)</li>
<li><a
href="https://github.com/actions/setup-go/commit/d73f6bcfc2b419b74f47075f8a487b40cc4680f8"><code>d73f6bc</code></a>
README.md: correct to actions/checkout@v6 (<a
href="https://redirect.github.com/actions/setup-go/issues/683">#683</a>)</li>
<li><a
href="https://github.com/actions/setup-go/commit/ae252ee6fb24babc50e89fc67c4aa608e69fbf8f"><code>ae252ee</code></a>
Bump <code>@​actions/cache</code> to v5 (<a
href="https://redirect.github.com/actions/setup-go/issues/695">#695</a>)</li>
<li><a
href="https://github.com/actions/setup-go/commit/bf7446afafbce8902019569bc0aab5a59380c516"><code>bf7446a</code></a>
Bump js-yaml from 3.14.1 to 3.14.2 (<a
href="https://redirect.github.com/actions/setup-go/issues/682">#682</a>)</li>
<li><a
href="https://github.com/actions/setup-go/commit/02aadfee7f572f67453450365b688df2c3f95730"><code>02aadfe</code></a>
Fix Node.js version in action.yml (<a
href="https://redirect.github.com/actions/setup-go/issues/691">#691</a>)</li>
<li><a
href="https://github.com/actions/setup-go/commit/4aaadf42668403795cdfdb15b1c4250e9fed12b9"><code>4aaadf4</code></a>
Example for restore-only cache in documentation (<a
href="https://redirect.github.com/actions/setup-go/issues/696">#696</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/setup-go/compare/4dc6199c7b1a012772edbd06daecab0f50c9053c...7a3fe6cf4cb3a834922a1244abfce67bcef6a0c5">compare
view</a></li>
</ul>
</details>
<br />

Updates `zizmorcore/zizmor-action` from 0.3.0 to 0.4.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/zizmorcore/zizmor-action/releases">zizmorcore/zizmor-action's
releases</a>.</em></p>
<blockquote>
<h2>v0.4.1</h2>
<p>This version fixes an error in the 0.4.0 release that prevented
non-relative use
of the action.</p>
<h2>What's Changed</h2>
<ul>
<li>Fix version file path by <a
href="https://github.com/woodruffw"><code>@​woodruffw</code></a> in <a
href="https://redirect.github.com/zizmorcore/zizmor-action/pull/83">zizmorcore/zizmor-action#83</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/zizmorcore/zizmor-action/compare/v0.4.0...v0.4.1">https://github.com/zizmorcore/zizmor-action/compare/v0.4.0...v0.4.1</a></p>
<h2>v0.4.0</h2>
<p>This new version of <code>zizmor-action</code> brings two major
changes:</p>
<ul>
<li>
<p>The new <code>fail-on-no-inputs</code> option can be used to control
whether
<code>zizmor-action</code> fails if no inputs were collected by
<code>zizmor</code>. The default
remains <code>true</code>, reflecting the pre-existing behavior.</p>
</li>
<li>
<p>The action's use of the official <code>zizmor</code> Docker images is
now fully
hash-checked internally, preventing accidental or malicious modification
to the images. This also means that subsequent releases of
<code>zizmor</code>
will induce a release of this action, rather than the action always
picking
up the latest version by default.</p>
</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>docs: extended permissions required for internal repos by <a
href="https://github.com/AntoineSebert"><code>@​AntoineSebert</code></a>
in <a
href="https://redirect.github.com/zizmorcore/zizmor-action/pull/61">zizmorcore/zizmor-action#61</a></li>
<li>docs: clarify description of &quot;token&quot; to indicate it is
only used for online audits by <a
href="https://github.com/rmuir"><code>@​rmuir</code></a> in <a
href="https://redirect.github.com/zizmorcore/zizmor-action/pull/63">zizmorcore/zizmor-action#63</a></li>
<li>Hash-check zizmor Docker images by <a
href="https://github.com/woodruffw"><code>@​woodruffw</code></a> in <a
href="https://redirect.github.com/zizmorcore/zizmor-action/pull/68">zizmorcore/zizmor-action#68</a></li>
<li>Add <code>fail-on-no-inputs</code> option by <a
href="https://github.com/woodruffw"><code>@​woodruffw</code></a> in <a
href="https://redirect.github.com/zizmorcore/zizmor-action/pull/67">zizmorcore/zizmor-action#67</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/AntoineSebert"><code>@​AntoineSebert</code></a>
made their first contribution in <a
href="https://redirect.github.com/zizmorcore/zizmor-action/pull/61">zizmorcore/zizmor-action#61</a></li>
<li><a href="https://github.com/rmuir"><code>@​rmuir</code></a> made
their first contribution in <a
href="https://redirect.github.com/zizmorcore/zizmor-action/pull/63">zizmorcore/zizmor-action#63</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/zizmorcore/zizmor-action/compare/v0.3.0...v0.4.0">https://github.com/zizmorcore/zizmor-action/compare/v0.3.0...v0.4.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/135698455da5c3b3e55f73f4419e481ab68cdd95"><code>1356984</code></a>
Fix version file path (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/83">#83</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/72469cf6cc7fbd7801d9b361f11f25c0b5fc9d42"><code>72469cf</code></a>
Bump pins in README (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/80">#80</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/3aa7e2f1ad15075829ef5158ee06938ae12e1769"><code>3aa7e2f</code></a>
Add fail-on-no-inputs tests (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/79">#79</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/92fc377b741151b893e77df75819fb34a198f677"><code>92fc377</code></a>
Sync zizmor versions (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/78">#78</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/5aff8efe9fc7bea2f977d55dcc7c98923f22d887"><code>5aff8ef</code></a>
Add <code>fail-on-no-inputs</code> option (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/67">#67</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/4d497b9cc8b9f59f4154478dffc4bab6a783fc69"><code>4d497b9</code></a>
Sync zizmor versions (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/75">#75</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/5fa0711fa51dd83a19dbfcf0195cfb02e61571ef"><code>5fa0711</code></a>
Fix sync-zizmor-versions (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/69">#69</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/c823f2c8e66ceac799af6d2d17b1d83b6d5a0177"><code>c823f2c</code></a>
Hash-check zizmor Docker images (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/68">#68</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/706c51b5bce7adb027de71ab36d865f5d3fcc7b7"><code>706c51b</code></a>
chore(deps): bump github/codeql-action in the github-actions group (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/66">#66</a>)</li>
<li><a
href="https://github.com/zizmorcore/zizmor-action/commit/cb3d8e846e148d1111d90b03375b9c03deceda37"><code>cb3d8e8</code></a>
chore(deps): bump actions/checkout in the github-actions group (<a
href="https://redirect.github.com/zizmorcore/zizmor-action/issues/65">#65</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/zizmorcore/zizmor-action/compare/e639db99335bc9038abc0e066dfcd72e23d26fb4...135698455da5c3b3e55f73f4419e481ab68cdd95">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: DevCats <christofer@coder.com>
2026-01-28 22:16:41 +00:00
Michael Suchacz bd1c4c59cd feat(coder/modules/mux): update defaults and add-project (#677)
## Summary

- Default `subdomain` to `true` so Mux uses subdomain routing by
default.
- Default `display_name` to `Mux`.
- Make `add-project` optional (`null` by default) and pass
`--add-project` to `mux server` when set.
- Bump mux module README example version to `1.0.8`.

## Notes

Changing the `subdomain` default may affect workspaces without wildcard
subdomain support configured (they can explicitly set `subdomain =
false`).

## Testing

- `terraform validate` (registry/coder/modules/mux)
- `terraform test -verbose` (registry/coder/modules/mux)

---
Generated with Mux (AI coding agent).
2026-01-28 21:57:36 +00:00
Alfred 8d53725005 Fix(registry/Excellencedev/templates/hetzner-linux): Correctly select coder agent arch on Hetzner CAX ARM Instances (#672)
## Description

hetzner-linux template allows CAX (ARM) instances but hardcodes coder
agent to amd64 causing the wrong coder-agent to be pulled on CAX
instance causing provisioning failure.

Adding `architecture` to server_types response and mapping this to
correct agent arch, with defaults back to amd64 for if this fails.

No Fix, CAX Instance

```
Jan 25 16:03:48 coder-test-nofix-dev systemd[1]: Starting coder-agent.service - Coder Agent...
Jan 25 16:03:53 coder-test-nofix-dev systemd[1]: Started coder-agent.service - Coder Agent.
Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + trap waitonexit EXIT
Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2101]: + mktemp -d -t coder.XXXXXX
Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + BINARY_DIR=/tmp/coder.6oHHHW
Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + BINARY_NAME=coder
Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + BINARY_URL=https://coder.domain/bin/coder-linux-amd64
Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + cd /tmp/coder.6oHHHW
Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + :
Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + status=
Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + command -v curl
Jan 25 16:03:53 coder-test-nofix-dev coder-agent[2100]: + curl -fsSL --compressed https://coder.domain/bin/coder-linux-amd64 -o coder
Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + break
Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + chmod +x coder
Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + [ -n  ]
Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + export CODER_AGENT_AUTH=token
Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + export CODER_AGENT_URL=https://coder.domain/
Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2133]: + ./coder --version
Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2134]: + head -n1
Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2133]: /opt/coder/init: 90: ./coder: Exec format error
Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + output=
Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2136]: + echo
Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2137]: + grep -q Coder
Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + echo ERROR: Downloaded agent binary returned unexpected version output
Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: ERROR: Downloaded agent binary returned unexpected version output
Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + echo coder --version output: ""
Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: coder --version output: ""
Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + exit 2
Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + waitonexit
Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + echo === Agent script exited with non-zero code (2). Sleeping 24h to preserve logs...
Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: === Agent script exited with non-zero code (2). Sleeping 24h to preserve logs...
Jan 25 16:04:02 coder-test-nofix-dev coder-agent[2100]: + sleep 86400
```

Fix, CAX Instance

```
Jan 25 16:08:55 coder-ARM64TEST-dev systemd[1]: Starting coder-agent.service - Coder Agent...
Jan 25 16:09:00 coder-ARM64TEST-dev systemd[1]: Started coder-agent.service - Coder Agent.
Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + trap waitonexit EXIT
Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2046]: + mktemp -d -t coder.XXXXXX
Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + BINARY_DIR=/tmp/coder.4j7W57
Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + BINARY_NAME=coder
Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + BINARY_URL=https://coder.domain/bin/coder-linux-arm64
Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + cd /tmp/coder.4j7W57
Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + :
Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + status=
Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + command -v curl
Jan 25 16:09:00 coder-ARM64TEST-dev coder-agent[2044]: + curl -fsSL --compressed https://coder.domain/bin/coder-linux-arm64 -o coder
Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: + break
Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: + chmod +x coder
Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: + [ -n  ]
Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: + export CODER_AGENT_AUTH=token
Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: + export CODER_AGENT_URL=https://coder.domain/
Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2069]: + ./coder --version
Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2070]: + head -n1
Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: + output=Coder v2.29.2+b5360a9 Wed Jan 21 15:45:58 UTC 2026
Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2076]: + echo Coder v2.29.2+b5360a9 Wed Jan 21 15:45:58 UTC 2026
Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2077]: + grep -q Coder
Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: + exec ./coder agent
Jan 25 16:09:13 coder-ARM64TEST-dev coder-agent[2044]: 2026-01-25 16:09:13.467 [info]  agent is starting now
```

## Type of Change

- [ ] New module
- [ ] New template
- [x] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Template Information

<!-- Delete this section if not applicable -->

**Path:** `registry/Excellencedev/templates/hetzner-linux`

## Testing & Validation

- [] Tests pass (`bun test`)
- [] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues

<!-- Link related issues or write "None" if not applicable -->
2026-01-27 22:34:24 +00:00
Yevhenii Shcherbina bd1a36b228 feat: use coder boundary subcommand (#674)
## Summary of Changes

### Feature: Add `coder boundary` subcommand support as default

Adds `coder boundary` subcommand as the default method for running
boundary eliminating the need to install boundary separately.

**Changes:**

1. **New variable: `use_boundary_directly`** (default: `false`)
- `false`: Uses `coder boundary` subcommand (default, no installation)
   - `true`: Installs boundary binary from release
   - `compile_boundary_from_source = true`: Compiles from source

2. **Fixed CAP_NET_ADMIN capability issue**
- Copies `coder` binary to `coder-no-caps` to strip capabilities
(required for boundary)

3. **Removed `boundary-run` wrapper** - no longer used

**Files Modified:**
- `scripts/start.sh` - main implementation
- `main.tf` - added `use_boundary_directly` variable  

**Behavior:**
- **Default**: Uses `coder boundary` subcommand (no installation needed)
- **`use_boundary_directly = true`**: Installs boundary from release
version
- **`compile_boundary_from_source = true`**: Compiles boundary from
source

<!-- Briefly describe what this PR does and why -->

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder/modules/claude-code`  
**New version:** `v4.7.0`  
**Breaking change:** [ ] Yes [X] No

## Testing & Validation

- [ ] Tests pass (`bun test`)
- [ ] Code formatted (`bun fmt`)
- [ ] Changes tested locally

## Related Issues

<!-- Link related issues or write "None" if not applicable -->
2026-01-27 09:45:32 -05:00
35C4n0r 01d6669708 feat(coder/modules/claude-code): add support for MCP server configurations from remote URLs (#668)
## Description

- add support for MCP server configurations from remote URLs

## Example

```json
  mcp_remote_urls = [
    "https://gist.githubusercontent.com/35C4n0r/cd8dce70360e5d22a070ae21893caed4/raw/",
    "https://raw.githubusercontent.com/coder/coder/main/.mcp.json"                     
  ]
```

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder/modules/claude-code`  
**New version:** `v4.6.0`  
**Breaking change:** [ ] Yes [x] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues

Closes: #665
2026-01-21 16:27:18 +00:00
Lukasz 01365fb61a feat: add zizmor workflow checks for GitHub Actions (#662)
## Description

This PR adds a zizmor security scan to the CI pipeline to analyze new
and existing GitHub Actions workflows under .github/workflows/.

- Runs zizmor on PRs and fails the check when HIGH severity (or above)
issues are found, so they can block merges.
- Runs zizmor on main to produce security reporting (where applicable),
keeping visibility into findings over time.
- Intended to be added as a required status check so workflow-security
regressions can’t land unnoticed.

Reference: coder/registry#642 (comment) / zizmor-action
## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [x] Other - CI / security tooling

## Testing & Validation
- Validation via PR check - opened a test PR with a deliberately risky
workflow and confirmed zizmor reports and blocks on HIGH findings

## Related Issues
coder/registry#642 (comment) / zizmor-action
2026-01-21 11:52:26 +01:00
Lukasz ec57cb5c0f CI: Pin GitHub Actions and fix zizmor high-severity findings (#667)
## Description

This PR fixes zizmor --min-severity high findings in our GitHub Actions
workflows by:
- Pinning all uses: references to immutable commit SHAs (replaces
floating tags like @v6 / @main).
- Pinning internal Terraform setup action usage
(coder/coder/.github/actions/setup-tf@main) to a fixed ref/commit.
- Pinning crate-ci/typos to a commit SHA.
- Removing GitHub expression template expansion inside a run: block in
version-bump.yaml (prevents template injection flagged by zizmor).


## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [x] Other

## Module Information

N/A

## Template Information

N/A

## Testing & Validation

- [ ] Tests pass (`bun test`)
- [ ] Code formatted (`bun fmt`)
- [x] Changes tested locally - zizmor .github/workflows/* --min-severity
high

## Related Issues

- coder/registry#642
- https://github.com/coder/registry/pull/662
2026-01-21 11:42:10 +01:00
Atif Ali d21f55a322 chore: update AGENTS.md with commands and PR review checklist (#663)
## Description

Updates AGENTS.md to be more concise (~36 lines) while adding missing
commands and a PR review checklist based on recent PR feedback.

## Changes

- **Commands section**: Added `bun run tftest`, `bun run tstest`, single
test commands, and version-bump script
- **Structure section**: Added note that URLs must be relative (from
#639)
- **Code Style section**: Added `tf` vs `hcl` guidance and relative icon
paths
- **New PR Review Checklist**: Based on patterns from recent PRs
including:
  - Version bumping requirements (#661, #617)
  - Breaking changes documentation (#636)
  - Graceful error handling in scripts (#658)
  - Diagnostic logging for tests (#643)
- **AI attribution requirement**: PRs should note model/tool used

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [ ] Feature/enhancement
- [x] Documentation
- [ ] Other

---

Generated with
[Amp](https://ampcode.com/threads/T-019bcb7e-2e92-76f2-a1aa-2023ecdb0763)
using Claude Sonnet 4
2026-01-20 07:59:15 +00:00
35C4n0r 2e8870bcee feat(coder/modules/claude-code): add support for aibridge (#657)
## Description

- Add support for AI Bridge

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder/modules/claude-code`  
**New version:** `v4.5.0`  
**Breaking change:** [ ] Yes [x] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues

Closes: #649

---------

Co-authored-by: Atif Ali <atif@coder.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-01-19 21:53:41 +05:30
Yevhenii Shcherbina 51676b6e62 fix: don't implicitly whitelist domains (#661)
- don't implicitly whitelist domains for boundary in claude-code module
- bump claude-code module minor version
2026-01-16 10:52:21 -05:00
Atif Ali a21a4c11b8 chore(jetbrains-fleet): add deprecation warning for Fleet discontinuation (#659) 2026-01-15 01:22:37 +05:00
35C4n0r b7229a8132 fix(coder/modules/claude-code): handle MCP server addition failures gracefully (#658)
## Description
- handle MCP server addition failures gracefully
- Update agentapi version to 0.11.8

<!-- Briefly describe what this PR does and why -->

## Type of Change

- [ ] New module
- [ ] New template
- [x] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder/modules/claude-code`  
**New version:** `v4.4.1`  
**Breaking change:** [ ] Yes [x] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues
Closes: #656
2026-01-14 22:35:09 +05:30
DevCats 44a8c66d94 chore: add input for path, and use coder_env for model in claude-code module (#617)
## Description

Adds a `claude_path` variable to override the path that the `coder_env`
sets for claude-code.
Adds a `install_via_npm` variable to override the official installation
and use npm to install claude-code ( this doesn't change any behaviour,
simply just the options available to the user )

Model now uses `coder_env` to set the `ANTHROPIC_MODEL` env instead of
using the `--model` cli flag which did not set the anthropic model
globally in the workspace.

Normal Usage -> Official Installer
Specific Version Set -> NPM Install
Install Via NPM -> NPM Install

The idea with `claude_path` is that someone who wants to source claude
another way can install it and utilize that install in the module. If
install is true and a custom path is provided there is a tf precondition
that will disallow this.

<!-- Briefly describe what this PR does and why -->

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [X] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder/modules/claude-code`  
**New version:** `v4.4.0`  
**Breaking change:** [ ] Yes [X] No

## Testing & Validation

- [X] Tests pass (`bun test`)
- [X] Code formatted (`bun fmt`)
- [X] Changes tested locally

## Related Issues

<!-- Link related issues or write "None" if not applicable -->
2026-01-13 14:12:10 -06:00
DevCats 2a40c07c3a feat(tests): add e2e test for code-server (#643)
## Description

Adds e2e test for code-server that actually installs and health checks
code-server
<!-- Briefly describe what this PR does and why -->

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [X] Other

## Testing & Validation

- [X] Tests pass (`bun test`)
- [X] Code formatted (`bun fmt`)
- [X] Changes tested locally

## Related Issues

<!-- Link related issues or write "None" if not applicable -->
2026-01-13 07:53:27 -06:00
Jakub Domeracki 836536eb97 chore: add CODEOWNERS and enforce approval for GHA Workflow changes (#654)
## Summary

Adds a `CODEOWNERS` file to enforce code review requirements for GitHub
Actions workflow changes.

- Creates `CODEOWNERS` file designating `@jdomeracki-coder` as owner of
`.github/` directory
- All changes to GitHub Actions workflows (`.github/` directory) now
require approval from the designated code owner
- Improves security posture by preventing unauthorized modifications to
CI/CD pipelines

  ## Why this change?

GitHub Actions workflows have elevated privileges and can access
repository secrets. Requiring explicit approval for workflow changes
helps prevent:

  - Accidental or malicious modifications to CI/CD pipelines
  - Unauthorized access to secrets
  - Supply chain security vulnerabilities

  ## Test plan

  - [x] Verify CODEOWNERS file is properly formatted
- [ ] Test that PRs modifying `.github/` directory require approval from
`@jdomeracki-coder`
- [ ] Confirm existing PRs not touching `.github/` continue to work
normally
2026-01-12 13:51:27 +01:00
35C4n0r 44d1ae1d1d feat(coder-labs/modules/codex): update codex to use coder_ai_task (#653)
## Description
- Minor maintenance and update codex to use coder_ai_task.

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder-labs/modules/codex`  
**New version:** `v4.0.0`  
**Breaking change:** [x] Yes [ ] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues

<!-- Link related issues or write "None" if not applicable -->

---------

Co-authored-by: Atif Ali <atif@coder.com>
2026-01-12 18:19:34 +05:30
dependabot[bot] b91a697ce5 chore(deps): bump crate-ci/typos from 1.41.0 to 1.42.0 in the github-actions group (#651)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-12 13:23:05 +05:00
Yevhenii Shcherbina 8aa54bbee3 feat: move boundary configuration to file (#640)
This pull request updates the `claude-code` module to version 4.3.0 and
significantly simplifies the configuration and startup logic for the
Boundary integration. The changes remove several Boundary-related
configuration variables and options, streamlining both Terraform and
shell script code. The documentation is updated to reflect these changes
and the new version.

**Boundary integration simplification:**

* Removed multiple Boundary-related variables from `main.tf`, including
log directory, log level, additional allowed URLs, proxy port, and pprof
options, as well as their usage in the module and test files.
(`registry/coder/modules/claude-code/main.tf`
[[1]](diffhunk://#diff-e7adc2da34facfd5d16deb23876fca7ae4cb11c8a68a0cfbe37a044bb69932f0L213-L248)
[[2]](diffhunk://#diff-e7adc2da34facfd5d16deb23876fca7ae4cb11c8a68a0cfbe37a044bb69932f0L377-L382);
`registry/coder/modules/claude-code/main.tftest.hcl`
[[3]](diffhunk://#diff-46ca9cfb5cdd077a9c42f7f62ab3f45583196a05edc29838eda0c6bd0ea63edcL198-L210)
* Updated the Boundary startup logic in `start.sh` to remove handling
and passing of the eliminated variables, resulting in a simpler and more
maintainable script.
(`registry/coder/modules/claude-code/scripts/start.sh`
[[1]](diffhunk://#diff-decfa0cea699ba8bf5e89b60ee677c361d2e9cc8b4792ed54ac1da66b4bd9315L19-L23)
[[2]](diffhunk://#diff-decfa0cea699ba8bf5e89b60ee677c361d2e9cc8b4792ed54ac1da66b4bd9315L39-L41)
[[3]](diffhunk://#diff-decfa0cea699ba8bf5e89b60ee677c361d2e9cc8b4792ed54ac1da66b4bd9315L232-L260)

**Documentation updates:**

* Updated all usage examples in `README.md` to reference version 4.3.0
and reflect the new, simplified Boundary configuration.
(`registry/coder/modules/claude-code/README.md`
[[1]](diffhunk://#diff-3f433388cb775dcc77c38911e23acbd2eb64e26e26c25d46b045724dfe5136bbL16-R16)
[[2]](diffhunk://#diff-3f433388cb775dcc77c38911e23acbd2eb64e26e26c25d46b045724dfe5136bbL48-R52)
[[3]](diffhunk://#diff-3f433388cb775dcc77c38911e23acbd2eb64e26e26c25d46b045724dfe5136bbL75-R71)
[[4]](diffhunk://#diff-3f433388cb775dcc77c38911e23acbd2eb64e26e26c25d46b045724dfe5136bbL111-R107)
[[5]](diffhunk://#diff-3f433388cb775dcc77c38911e23acbd2eb64e26e26c25d46b045724dfe5136bbL133-R129)
[[6]](diffhunk://#diff-3f433388cb775dcc77c38911e23acbd2eb64e26e26c25d46b045724dfe5136bbL206-R202)
[[7]](diffhunk://#diff-3f433388cb775dcc77c38911e23acbd2eb64e26e26c25d46b045724dfe5136bbL263-R259)

**Version bump:**

* Bumped the module version from 4.2.9 to 4.3.0 throughout all
documentation and configuration examples.
(`registry/coder/modules/claude-code/README.md`
[[1]](diffhunk://#diff-3f433388cb775dcc77c38911e23acbd2eb64e26e26c25d46b045724dfe5136bbL16-R16)
[[2]](diffhunk://#diff-3f433388cb775dcc77c38911e23acbd2eb64e26e26c25d46b045724dfe5136bbL48-R52)
[[3]](diffhunk://#diff-3f433388cb775dcc77c38911e23acbd2eb64e26e26c25d46b045724dfe5136bbL75-R71)
[[4]](diffhunk://#diff-3f433388cb775dcc77c38911e23acbd2eb64e26e26c25d46b045724dfe5136bbL111-R107)
[[5]](diffhunk://#diff-3f433388cb775dcc77c38911e23acbd2eb64e26e26c25d46b045724dfe5136bbL133-R129)
[[6]](diffhunk://#diff-3f433388cb775dcc77c38911e23acbd2eb64e26e26c25d46b045724dfe5136bbL206-R202)
[[7]](diffhunk://#diff-3f433388cb775dcc77c38911e23acbd2eb64e26e26c25d46b045724dfe5136bbL263-R259)

---------

Co-authored-by: DevCats <christofer@coder.com>
2026-01-08 12:29:11 -06:00
imgbot[bot] bbd18ac870 [ImgBot] Optimize images (#641)
## Beep boop. Your images are optimized!

Your image file size has been reduced 🎉

<details>
<summary>
Details
</summary>

| File | Before | After | Percent reduction |
|:--|:--|:--|:--|
| /.icons/filebrowser.svg | 5.38kb | 3.08kb | 42.76% |
| /.icons/nomad.svg | 0.38kb | 0.26kb | 31.79% |
| /.icons/vault.svg | 0.49kb | 0.37kb | 24.31% |
| /.icons/proxmox.svg | 12.52kb | 9.49kb | 24.23% |
| /.icons/copyparty.svg | 8.28kb | 6.32kb | 23.71% |
| /.icons/devcontainers.svg | 0.56kb | 0.44kb | 21.39% |
| /.icons/openwebui.svg | 0.29kb | 0.23kb | 19.11% |
| /.icons/scaleway.svg | 0.89kb | 0.77kb | 13.80% |
| /.icons/perplexica.svg | 0.21kb | 0.19kb | 10.65% |
| /.icons/positron.svg | 0.71kb | 0.64kb | 10.18% |
| /.icons/azure.svg | 2.05kb | 1.86kb | 9.60% |
| /.icons/lxc.svg | 1.22kb | 1.12kb | 8.01% |
| /.icons/fleet.svg | 5.57kb | 5.23kb | 6.12% |
| /.icons/gateway.svg | 4.20kb | 3.99kb | 4.86% |
| /.icons/rustdesk.svg | 1.32kb | 1.26kb | 4.65% |
| /.icons/tasks.svg | 0.44kb | 0.42kb | 4.42% |
| /.icons/kasmvnc.svg | 0.80kb | 0.77kb | 4.27% |
| /.icons/dotfiles.svg | 0.59kb | 0.56kb | 3.83% |
| /.icons/vsphere.svg | 1.08kb | 1.04kb | 3.69% |
| /.icons/rdp.svg | 4.63kb | 4.47kb | 3.40% |
| /.icons/mux.svg | 1.75kb | 1.70kb | 2.46% |
| /.icons/aws.svg | 3.22kb | 3.14kb | 2.34% |
| /.icons/gemini.svg | 2.76kb | 2.71kb | 2.12% |
| /.icons/kiro.svg | 1.21kb | 1.19kb | 1.69% |
| /.icons/slack.svg | 1.00kb | 0.98kb | 1.37% |
| /.icons/digital-ocean.svg | 0.93kb | 0.92kb | 1.15% |
| /.icons/amazon-q.svg | 2.09kb | 2.07kb | 0.98% |
| /.icons/akamai.svg | 0.83kb | 0.82kb | 0.94% |
| /.icons/auto-dev-server.svg | 4.54kb | 4.49kb | 0.93% |
| /.icons/desktop.svg | 0.53kb | 0.52kb | 0.93% |
| /.icons/sourcegraph-amp.svg | 0.56kb | 0.56kb | 0.87% |
| /.icons/nextflow.svg | 0.68kb | 0.67kb | 0.87% |
| /registry/coder/.images/avatar.svg | 0.60kb | 0.59kb | 0.82% |
| /.icons/coder.svg | 0.60kb | 0.59kb | 0.82% |
| /.icons/electric-plug-emoji.svg | 0.24kb | 0.24kb | 0.81% |
| /.icons/hetzner.svg | 5.47kb | 5.43kb | 0.80% |
| /.icons/cmux.svg | 17.58kb | 17.46kb | 0.72% |
| /.icons/box-emoji.svg | 4.62kb | 4.59kb | 0.66% |
| /.icons/openai.svg | 2.89kb | 2.87kb | 0.61% |
| /.icons/auggie.svg | 4.78kb | 4.75kb | 0.57% |
| /.icons/airflow.svg | 3.24kb | 3.23kb | 0.57% |
| /.icons/jetbrains.svg | 0.77kb | 0.76kb | 0.51% |
| /.icons/git.svg | 0.78kb | 0.78kb | 0.50% |
| /.icons/zed.svg | 0.88kb | 0.88kb | 0.44% |
| /.icons/pgadmin.svg | 2.95kb | 2.94kb | 0.40% |
| /registry/coder/.images/aws-devcontainer-architecture.svg | 123.63kb |
123.14kb | 0.39% |
| /registry/coder/.images/gcp-devcontainer-architecture.svg | 123.63kb |
123.15kb | 0.39% |
| /.icons/windsurf.svg | 1.11kb | 1.11kb | 0.35% |
| /.icons/opencode.svg | 0.56kb | 0.56kb | 0.35% |
| /.icons/folder.svg | 0.28kb | 0.28kb | 0.35% |
| /registry/coder-labs/.images/avatar.svg | 3.69kb | 3.68kb | 0.32% |
| /.icons/jupyter.svg | 6.50kb | 6.48kb | 0.32% |
| /.icons/cloud-devops.svg | 35.08kb | 34.99kb | 0.26% |
| /cmd/.icons/docker.svg | 1.14kb | 1.13kb | 0.26% |
| /.icons/docker.svg | 1.14kb | 1.13kb | 0.26% |
| /.icons/exoscale.svg | 0.42kb | 0.42kb | 0.23% |
| /.icons/personalize.svg | 1.89kb | 1.89kb | 0.21% |
| /cmd/.icons/goose.svg | 3.07kb | 3.07kb | 0.19% |
| /.icons/goose.svg | 3.07kb | 3.07kb | 0.19% |
| /.icons/nexus-repository.svg | 26.65kb | 26.60kb | 0.18% |
| /.icons/claude.svg | 2.80kb | 2.80kb | 0.14% |
| /.icons/kubernetes.svg | 7.54kb | 7.53kb | 0.09% |
| /.icons/jfrog.svg | 6.76kb | 6.76kb | 0.04% |
| /.icons/aider.svg | 14.16kb | 14.16kb | 0.03% |
| /.icons/antigravity.svg | 2,346.99kb | 2,346.81kb | 0.01% |
| | | | |
| **Total :** | **2,827.25kb** | **2,816.16kb** | **0.39%** |
</details>

---

[📝 docs](https://imgbot.net/docs) | [:octocat:
repo](https://github.com/imgbot/ImgBot) | [🙋🏾
issues](https://github.com/imgbot/ImgBot/issues) | [🏪
marketplace](https://github.com/marketplace/imgbot)

<i>~Imgbot - Part of [Optimole](https://optimole.com/) family</i>

Signed-off-by: ImgBotApp <ImgBotHelp@gmail.com>
Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
2026-01-08 12:11:02 -06:00
Anis 82a76de3fc add vmware-linux template (#527)
## Description

Add Vmware template to coder

## Type of Change

- [ ] New module
- [x] New template
- [ ] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other


## Template Information

<!-- Delete this section if not applicable -->

**Path:** `registry/anis/templates/vmware-linux`

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally


https://github.com/user-attachments/assets/ffc787a8-4335-4602-a405-c475f0cad62b


## Related Issues
Closes #211 
/claim #211 
<!-- Link related issues or write "None" if not applicable -->

---------

Signed-off-by: Anis KHALFALLAH <khalfallah.anis@hotmail.com>
Co-authored-by: DevCats <christofer@coder.com>
2026-01-08 09:04:42 -06:00
35C4n0r e8e3a4e642 feat(cmd/tests): update tests to fail on invalid and absolute urls (#639)
## Description
Updated the tests:
- We now don't accept absolute urls (http / https)
- We only accept urls that start with `../../../../.icons/*` and exists

<!-- Briefly describe what this PR does and why -->

## Type of Change

- [ ] New module
- [ ] New template
- [x] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

---------

Co-authored-by: DevCats <christofer@coder.com>
2026-01-08 08:13:16 -06:00
Atif Ali 2c4cd86130 feat(mux): update logo (#638) 2026-01-08 00:19:12 +05:00
Yevhenii Shcherbina 28fc956110 fix: minor boundary bug in claude-code module (#637)
Removing existing boundary directory to allow re-running the script
safely
2026-01-07 10:17:40 -05:00
Atif Ali 2701dc09af feat(coder/modules/jetbrains): update to latest build numbers and clean up tests (#636)
Co-authored-by: DevCats <christofer@coder.com>
2026-01-07 01:06:31 +05:00
Scai 60611ed593 feat: make dynamic locations & server types on Hetzner template (#618)
## Description

Make Server Types & Locations dynamic based on API endpoints provided by
Hetzner Docs.

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Template Information

**Path:** `registry/Excellencedev/templates/hetzner-linux`

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: DevCats <christofer@coder.com>
2026-01-06 08:29:40 -06:00
dependabot[bot] 7df0cb25c5 chore(deps): bump crate-ci/typos from 1.40.0 to 1.41.0 in the github-actions group (#632)
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-01-05 22:10:18 +00:00
DevCats cbb39bda6f chore: remove test from cloud-dev template (#635)
## Description

Remove test from `cloud-dev` template since templates generally have no
tests.
<!-- Briefly describe what this PR does and why -->

## Type of Change

- [ ] New module
- [ ] New template
- [X] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Template Information

<!-- Delete this section if not applicable -->

**Path:** `registry/nboyers/templates/cloud-dev`

## Testing & Validation

- [X] Tests pass (`bun test`)
- [X] Code formatted (`bun fmt`)
- [X] Changes tested locally

## Related Issues

<!-- Link related issues or write "None" if not applicable -->
2026-01-05 15:59:03 -06:00
DevCats 99bd4a4139 fix(github-upload-public-key): resolve issues with flaky tests (#634)
## Description

Better test cleanup, and resolve flakiness.
<!-- Briefly describe what this PR does and why -->

## Type of Change

- [ ] New module
- [ ] New template
- [X] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder/modules/github-upload-public-key`  
**New version:** `v1.0.32`  
**Breaking change:** [ ] Yes [ ] No

## Testing & Validation

- [X] Tests pass (`bun test`)
- [X] Code formatted (`bun fmt`)
- [X] Changes tested locally

## Related Issues

<!-- Link related issues or write "None" if not applicable -->
2026-01-05 14:59:06 -06:00
35C4n0r c819ca7f83 fix(nboyers/templates/cloud-dev): fix broken template icon (#633)
## Description

<!-- Briefly describe what this PR does and why -->

## Type of Change

- [ ] New module
- [ ] New template
- [x] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Template Information

**Path:** `registry/nboyers/templates/cloud-devops`

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues

<!-- Link related issues or write "None" if not applicable -->
2026-01-05 13:47:22 +05:30
Sebastian Mengwall accf5a34ab fix(modules/anomaly/tmux): fix config handling in run scripts (#629)
## Description

Fix custom tmux config handling. Two bugs:

1. `TMUX_CONFIG="${TMUX_CONFIG}"` - Terraform substitutes config inline,
bash interprets `set -g` etc as shell commands
2. `printf "$TMUX_CONFIG"` - `%` in `bind %` treated as format specifier


## Type of Change

- [ ] New module
- [ ] New template
- [x] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

**Path:** `registry/anomaly/modules/tmux`  
**New version:** 1.0.4  
**Breaking change:** [x] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues

None
2026-01-04 03:12:20 +00:00
Sebastian Mengwall bb222f36a5 fix(mux): fix sed pattern escaping for npm tarball fallback (#628) 2026-01-02 22:18:24 +00:00
Noah 3677e93e36 Add Cloud DevOps workspace template for EKS (#518)
Co-authored-by: Noah Boyers <noah@MacBook-Pro.local>
Co-authored-by: Atif Ali <atif@coder.com>
Co-authored-by: DevCats <christofer@coder.com>
Co-authored-by: Noah Boyers <noah@coder.com>
2025-12-31 11:42:19 +00:00
netsgnut a3ba616aec fix(filebrowser): use updated flag for baseURL (#626)
Co-authored-by: Atif Ali <atif@coder.com>
2025-12-31 11:40:52 +00:00
Mossy 24dc52fb17 feat: Add Scaleway Instance Template (#449)
Co-authored-by: DevCats <christofer@coder.com>
Co-authored-by: Atif Ali <atif@coder.com>
2025-12-31 16:39:08 +05:00
Atif Ali 678c3e631e fix(vault-cli): use if/elif/else instead of case for HTTP client detection (#625) 2025-12-31 09:04:47 +05:00
35C4n0r 36089612ef chore(coder/modules/claude-code): bump agentapi version to 0.11.6 (#619)
## Description
bump agentapi version to 0.11.6. 
This version of agentapi introduces tool_call logging and improved
tool_call parsing

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder/modules/claude-code`  
**New version:** `v4.2.8`  
**Breaking change:** [ ] Yes [x] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues

<!-- Link related issues or write "None" if not applicable -->
2025-12-19 23:45:25 +05:30
Rowan Smith ac44ad862a chore: update Kubernetes resources to v1 API for provider v3 compatibility (#616)
## Description

As part of
https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/guides/v3-upgrade-guide
various resources change from non versioned to versioned. This PR
changes the Coder authored templates to versioned resources.

- Updated kubernetes_persistent_volume_claim to
kubernetes_persistent_volume_claim_v1
- Updated kubernetes_deployment to kubernetes_deployment_v1
- Updated kubernetes_pod to kubernetes_pod_v1
- Updated kubernetes_secret to kubernetes_secret_v1
- Updated all resource references and dependencies

I also had to fix up a couple of templates, i.e. remove `agent_name` as
it wasn't valid usage, `agent_id` remains. The `source` parameter for
jetbrains module in
[registry/coder/templates/kubernetes-envbox/main.tf](https://github.com/coder/registry/pull/616/changes#diff-83996ad9def3fae3b69981faee7d682964acc8716a4d04edfd7c4374f0a1d15c)
also had to be fixed.

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Template Information

**Path:** 

- registry/coder/templates/kubernetes
- registry/coder/templates/kubernetes-devcontainer
- registry/coder/templates/kubernetes-envbox

## Testing & Validation

- [ ] Tests pass (`bun test`)
- [ ] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues
2025-12-19 08:11:30 +11:00
Atif Ali ef5a903edf fix(zed): fix settings JSON parsing with base64 encoding (#604)
## Problem

The Zed module's settings parsing was broken. The previous
implementation used quote escaping:

```hcl
SETTINGS_JSON='${replace(var.settings, "\"", "\\\"")}'
```

This produced invalid JSON like `{\"theme\":\"dark\"}` which **jq could
not parse** because the backslash-escaped quotes are not valid JSON
syntax.

## Solution

Changed to use base64 encoding internally:

```hcl
locals {
  settings_b64 = var.settings != "" ? base64encode(var.settings) : ""
}

# In the script:
SETTINGS_B64='${local.settings_b64}'
SETTINGS_JSON="$(echo -n "${SETTINGS_B64}" | base64 -d)"
```

**User interface remains the same** - users still provide plain JSON via
`jsonencode()` or heredoc:

```hcl
module "zed" {
  source   = "..."
  agent_id = coder_agent.main.id
  settings = jsonencode({
    theme    = "dark"
    fontSize = 14
  })
}
```

## Testing

Added comprehensive tests:

**Terraform tests (5):**
- URL generation (default, folder, agent_name)
- Settings base64 encoding verification
- Empty settings edge case

**Container e2e tests (3):**
- Creates settings file with correct JSON (including special chars:
quotes, backslashes, URLs)
- Merges with existing settings via jq
- Exits early with empty settings

Also fixed existing tests to use `override_data` for proper workspace
mocking.

---------

Signed-off-by: Muhammad Atif Ali <me@matifali.dev>
Co-authored-by: DevCats <christofer@coder.com>
2025-12-17 16:17:06 -06:00
Atif Ali 4b7128b17e chore: link vscode-web and code-server comparison docs (#607)
link vscode-web and code-server comparison docs in README. Also fixes a
drive-by version to match expected versioning.

Co-authored-by: DevCats <christofer@coder.com>
2025-12-17 15:46:10 -06:00
DevCats 77a3e74e0b feat: enhance version bump script and CI workflow with ci mode (#615)
## Description

Add CI mode to version bump script to output Pass or Fail with a less
verbose comment when it fails
<!-- Briefly describe what this PR does and why -->

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [X] Other

## Testing & Validation

- [X] Tests pass (`bun test`)
- [X] Code formatted (`bun fmt`)
- [X] Changes tested locally

## Related Issues

<!-- Link related issues or write "None" if not applicable -->
2025-12-17 15:31:11 -06:00
Danielle Maywood 311de23454 refactor(coder-labs/auggie): support terraform provider coder v2.12.0 (#494)
## Description

Updates the module to use the new version of the agentapi module for
Coder 2.28

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

**Path:** `registry/coder-labs/modules/auggie`  
**New version:** `v0.3.0`  
**Breaking change:** [x] Yes [ ] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [ ] Changes tested locally

## Related Issues

- https://github.com/coder/internal/issues/1065

## Related PRs

- https://github.com/coder/registry/pull/485

Co-authored-by: DevCats <christofer@coder.com>
2025-12-17 13:16:12 -06:00
Danielle Maywood f66f61d724 refactor(coder-labs/sourcegraph-amp): support terraform provider coder v2.12.0 (#495)
## Description

Updates the module to use the new version of the agentapi module for
Coder 2.28

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

**Path:** `registry/coder-labs/modules/sourcegraph-amp`  
**New version:** `v3.0.0`  
**Breaking change:** [x] Yes [ ] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [ ] Changes tested locally

## Related Issues

- https://github.com/coder/internal/issues/1065

## Related PRs

- https://github.com/coder/registry/pull/485

---------

Co-authored-by: DevCats <christofer@coder.com>
2025-12-17 11:54:28 -06:00
Danielle Maywood 631bf027c6 refactor(coder-labs/gemini): support terraform provider coder v2.12.0 (#493)
## Description

Updates the module to use the new version of the agentapi module for
Coder 2.28

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

**Path:** `registry/[namespace]/modules/[module-name]`  
**New version:** `v3.0.0`  
**Breaking change:** [x] Yes [ ] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [ ] Changes tested locally

## Related Issues

- https://github.com/coder/internal/issues/1065

## Related PRs

- https://github.com/coder/registry/pull/485

---------

Co-authored-by: DevCats <christofer@coder.com>
2025-12-17 10:00:44 -06:00
Danielle Maywood eb4c28fc61 refactor(coder-labs/copilot): support terraform provider coder v2.12.0 (#492)
## Description

Updates the module to use the new version of the agentapi module for
Coder 2.28

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

**Path:** `registry/coder-labs/modules/copilot`  
**New version:** `v0.3.0`  
**Breaking change:** [x] Yes [ ] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [ ] Changes tested locally

## Related Issues

- https://github.com/coder/internal/issues/1065

## Related PRs

- https://github.com/coder/registry/pull/485

Co-authored-by: DevCats <christofer@coder.com>
2025-12-17 15:19:21 +00:00
Danielle Maywood c551c4d84a refactor(coder-labs/cursor-cli): support terraform provider coder v2.12.0 (#491)
## Description

Updates the module to use the new version of the agentapi module for
Coder 2.28

## Type of Change

- [ ] New module
- [ ] New template
- [ ] Bug fix
- [x] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

**Path:** `registry/coder-labs/modules/cursor-cli`  
**New version:** `v0.3.0`  
**Breaking change:** [x] Yes [ ] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [ ] Changes tested locally

## Related Issues

- https://github.com/coder/internal/issues/1065

## Related PRs

- https://github.com/coder/registry/pull/485

---------

Co-authored-by: DevCats <christofer@coder.com>
2025-12-17 15:12:34 +00:00
imgbot[bot] 4b9da4036a [ImgBot] Optimize images (#608)
Co-authored-by: ImgBotApp <ImgBotHelp@gmail.com>
2025-12-16 23:25:21 +05:00
Excellencedev 96c5f3219d Add Hetzner Cloud server template example (#560)
## Description

This PR adds a template example for the Hetzner Cloud Sever. 


This video shows the provisioning of multiple hetzner instances in coder
with dynamic param enabled, running simultaneously and shown in the
Hetzner console, checking labels on both the OS Filesystem and on the
hetzner console and then shutting down through coder demonstrating clean
up on hetzner and deleting workspaces without errors
DEMO VIDEO:
https://drive.google.com/file/d/1JkhjszCRM9K27XDlMi_2nXtJosoflns_/view?usp=sharing

## Type of Change

- [ ] New module
- [x] New template
- [ ] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other


## Template Information

**Path:** `registry/Excellencedev/templates/hetzner-linux`

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [x] Changes tested locally

## Related Issues
/closes #209 
/claim #209

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: DevCats <christofer@coder.com>
2025-12-16 14:03:52 +00:00
Marcin Tojek 146540c1e9 feat: add perplexica module (#596) 2025-12-16 13:00:06 +00:00
35C4n0r a85436fdf4 chore(claude-code): use $HOME variable instead of hardcoded path and remove symlink (#592)
## Description

- Remove hardcoded `/home/coder` path.
- Remove symlink in favour of coder_env "PATH".

## Type of Change

- [ ] New module
- [ ] New template
- [x] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

**Path:** `registry/[coder/modules/claude-code`  
**New version:** `v4.2.7`  
**Breaking change:** [ ] Yes [x] No

## Testing & Validation

- [x] Tests pass (`bun test`)
- [x] Code formatted (`bun fmt`)
- [ ] Changes tested locally

## Related Issues

<!-- Link related issues or write "None" if not applicable -->

---------

Signed-off-by: 35C4n0r <work.jaykumar@gmail.com>
Co-authored-by: DevelopmentCats <christofer@coder.com>
2025-12-15 15:07:14 -06:00
netsgnut aa4890fe62 fix(kasmvnc): update kasmvnc desktop environment list to match upstream (#598)
## Description

This PR makes the following changes to `coder/modules/kasmvnc`:

- Update desktop environment list for the KasmVNC module

Currently upstream supports a number of [additional Desktop
Environments](https://github.com/kasmtech/KasmVNC/blob/v1.4.0/unix/vncserver.man#L56-L67).
The change updates the list so that DEs like Mate are supported. Do note
that `manual` is also supported if `$HOME/.vnc/xstartup` is supplied, so
this has been added as another option, too.

## Type of Change

- [ ] New module
- [ ] New template
- [X] Bug fix
- [ ] Feature/enhancement
- [ ] Documentation
- [ ] Other

## Module Information

<!-- Delete this section if not applicable -->

**Path:** `registry/coder/modules/kasmvnc`
**New version:** `v1.2.7`  
**Breaking change:** [ ] Yes [X] No

## Testing & Validation

- [X] Tests pass (`bun test`)
- [X] Code formatted (`bun fmt`)
- [X] Changes tested locally

## Related Issues

None

Co-authored-by: DevCats <christofer@coder.com>
2025-12-15 13:00:18 -06:00
291 changed files with 16442 additions and 5447 deletions
+369
View File
@@ -0,0 +1,369 @@
---
name: coder-modules
description: Creates and updates Coder Registry modules with proper scaffolding, Terraform testing, README frontmatter, and version management
---
# Coder Modules
Coder Registry modules are reusable Terraform components that live under `registry/<namespace>/modules/<name>/` and are consumed by templates via `module` blocks.
## Before You Start
Before writing or modifying any code:
1. **Understand the request.** What tool, integration, or functionality is the module providing? What Coder resources does it need (`coder_script`, `coder_app`, `coder_env`, etc.)? Read the official documentation for the target tool or integration (installation steps, CLI flags, config files, environment variables, ports) so you can implement the module properly without guessing.
2. **Research existing modules.** Search the registry for similar modules. Read their `main.tf` to understand patterns, variable conventions, and how they solve similar problems. Avoid duplicating existing functionality.
3. **Check the Coder provider docs.** Verify that the resources and attributes you plan to use exist in the provider version you're targeting. Use the version-specific docs URL if needed.
4. **Clarify before building.** If the request is ambiguous (e.g. unclear which Coder resource to use, whether a `coder_app` vs `coder_script` is appropriate, what variables to expose, or which namespace to use), ask for clarification rather than guessing. Never assume a namespace; always confirm with the user.
5. **Plan the structure.** Decide on script organization (root `run.sh`, `scripts/` directory, or inline), what variables to expose, and what tests to write.
Always prefer the proper implementation over a simpler shortcut. Modules are infrastructure that users depend on. Doing less work is not the same as reducing complexity if it leaves the module incomplete or fragile.
## Documentation References
### Coder
- Coder docs (latest): <https://coder.com/docs>
- Version-specific Coder docs: `https://coder.com/docs/@v{MAJOR}.{MINOR}.{PATCH}` (e.g. <https://coder.com/docs/@v2.31.5>)
- Coder Registry: <https://registry.coder.com>
### Coder Terraform provider
- Provider docs (latest): <https://registry.terraform.io/providers/coder/coder/latest/docs>
- Version-specific provider docs: replace `latest` with a version number (e.g. <https://registry.terraform.io/providers/coder/coder/2.13.1/docs>)
Resources:
| Resource | Docs |
| ---------------- | ------------------------------------------------------------------------------------ |
| `coder_app` | <https://registry.terraform.io/providers/coder/coder/latest/docs/resources/app> |
| `coder_script` | <https://registry.terraform.io/providers/coder/coder/latest/docs/resources/script> |
| `coder_env` | <https://registry.terraform.io/providers/coder/coder/latest/docs/resources/env> |
| `coder_metadata` | <https://registry.terraform.io/providers/coder/coder/latest/docs/resources/metadata> |
Data sources:
| Data Source | Docs |
| ----------------------- | ---------------------------------------------------------------------------------------------- |
| `coder_parameter` | <https://registry.terraform.io/providers/coder/coder/latest/docs/data-sources/parameter> |
| `coder_workspace` | <https://registry.terraform.io/providers/coder/coder/latest/docs/data-sources/workspace> |
| `coder_workspace_owner` | <https://registry.terraform.io/providers/coder/coder/latest/docs/data-sources/workspace_owner> |
## Scaffolding a New Module
Only use this when creating a brand new module that does not yet exist. When updating an existing module, edit its files directly.
From repo root:
```bash
./scripts/new_module.sh namespace/module-name
```
Names must be lowercase alphanumeric with hyphens (e.g. `coder/my-tool`). Underscores are not allowed.
Creates `registry/<namespace>/modules/<module-name>/` with:
- `main.tf`: Terraform config with common resource patterns and variables — read this as the primary reference for module structure
- `README.md`: frontmatter and usage examples
- `MODULE_NAME.tftest.hcl`: Terraform native tests
- `run.sh`: install/start-up script template
If the namespace is new, the script also creates `registry/<namespace>/` with a README. New namespaces additionally need:
- `registry/<namespace>/.images/avatar.svg` (or `.png`): square image, 400x400px minimum
- The namespace README `avatar` field pointing to `./.images/avatar.svg`
The scaffolding script does not create the `.images/` directory or avatar file. When a new namespace is created, create `registry/<namespace>/.images/` and add a placeholder `avatar.svg` so the directory structure is ready for the user to replace with their real avatar.
The generated namespace README contains placeholder fields (`display_name`, `bio`, `status`, `github`, `avatar`, etc.) that the user must fill out. The `status` field is required and must be `official`, `partner`, or `community` (typically `community` for new contributors).
## Key Patterns
- Provider version constraints must reflect actual functionality requirements. Only raise the minimum `coder` provider version (e.g. `>= 2.5` to `>= 2.8`) when the module uses a resource, attribute, or behavior introduced in that version; check the provider changelog to confirm.
- Variable names MUST be `snake_case` (no hyphens; validation rejects them)
- New variables must have sensible defaults for backward compatibility
- Common variable: `agent_id` (string, required, no default)
- Common variable: `order` (number, default `null`, controls UI position)
- Use `locals {}` for computed values: URL normalization, base64 encoding, `file()` script content, config assembly
- Modules can consume other registry modules via `module` blocks (e.g. `cursor` uses `vscode-desktop-core`, CLI wrappers use `agentapi`). Before consuming a module, read its `main.tf` and `README.md` to understand the full interface: accepted variables, outputs, prerequisites, and runtime requirements. If you are inside the registry repo, read these files directly. Otherwise, read the module's page at `https://registry.coder.com/modules/<namespace>/<module-name>` which includes the full source, README, and variable definitions. Never pass arguments without confirming they exist.
- Most modules expose configuration via `variable` blocks, letting the template pass values. Use `coder_parameter` inside a module only when the module needs to present a UI choice directly to the workspace user (e.g. region selectors, IDE pickers).
- For parameter-only modules (region selectors, etc.), use `dynamic "option"` with `for_each` from a `locals` map and expose an `output` for the selected value.
- `coder_script` icons use the `/icon/<name>.svg` format. The `display_name` is typically the product name (e.g. "code-server", "Git Clone", "File Browser").
- Do not add comments that narrate what the code does or label sections. Only comment when explaining something non-obvious (e.g. why a workaround exists, a subtle constraint, or an unusual design choice).
## README.md
Required YAML frontmatter:
```yaml
---
display_name: My Tool
description: Short description of what this module does
icon: ../../../../.icons/tool.svg
verified: false
tags: [helper, ide]
---
```
Content rules:
- Single H1 heading matching `display_name`, directly below frontmatter
- When increasing header levels, increment by one each time (h1 -> h2 -> h3, not h1 -> h3)
- Usage snippet with `registry.coder.com/<ns>/<module>/coder` and pinned `version`
- Code fences labeled `tf` (NOT `hcl`)
- Relative icon paths (e.g. `../../../../.icons/`)
- **Do NOT include tables or lists that enumerate variables, parameters, or outputs.** The registry generates variable and output documentation automatically from the Terraform source. Describe what the module does and how to use it in prose, not by listing every configurable field.
- Usage examples are encouraged
- Use [GFM alerts](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts) for callouts: `> [!NOTE]`, `> [!TIP]`, `> [!IMPORTANT]`, `> [!WARNING]`, `> [!CAUTION]`
```tf
module "my_tool" {
count = data.coder_workspace.me.start_count
source = "registry.coder.com/namespace/my-tool/coder"
version = "1.0.0"
agent_id = coder_agent.main.id
}
```
## Icons
Modules reference icons in two places with different path systems:
- **README frontmatter** `icon:` uses a relative path to the repo's `.icons/` directory (e.g. `../../../../.icons/my-tool.svg`). Displayed on the registry website.
- **`coder_script` / `coder_app`** `icon =` uses an absolute `/icon/<name>.svg` path served by the Coder deployment from `site/static/icon/` in the `coder/coder` repo. Displayed in the workspace agent bar.
Workflow:
1. **Check what exists.** List the `.icons/` directory at the repo root for available SVGs. For `/icon/` paths, look at what similar modules already use.
2. **Use existing icons when they fit.** If the tool already has an icon in `.icons/` and `/icon/`, use those.
3. **When an icon doesn't exist,** reference the expected path anyway (e.g. `../../../../.icons/my-tool.svg` and `/icon/my-tool.svg`) so the structure is correct. Try to source the official SVG from the tool's branding page or repository. If you can obtain it, add it to `.icons/` in this repo.
4. **Don't substitute a generic icon.** If the tool has its own brand identity, use the correct name even if the file doesn't exist yet. Don't fall back to generic icons like `coder.svg` or `terminal.svg`.
5. **Track missing icons** so you can report them in your response.
## Scripts
Modules use three patterns for shell logic, depending on complexity:
### Root `run.sh` + `templatefile()` (simple modules)
A single `run.sh` at the module root, loaded via `templatefile()` to inject Terraform variables. Used by `code-server`, `vscode-web`, `git-clone`, `dotfiles`, `filebrowser`.
```tf
resource "coder_script" "my_tool" {
agent_id = var.agent_id
display_name = "My Tool"
icon = "/icon/my-tool.svg"
script = templatefile("${path.module}/run.sh", {
LOG_PATH : var.log_path,
})
run_on_start = true
}
```
Use `$${VAR}` (double dollar) in the shell script for Terraform `templatefile` escaping.
If a script sources external files (`$HOME/.bashrc`, `/etc/bashrc`, `/etc/os-release`), the `source` statement must come before `set -u`; CI enforces this ordering.
### `scripts/` directory + `file()` (complex modules)
Separate `scripts/install.sh` and `scripts/start.sh` loaded via `file()` into `locals`, then passed to a child module or encoded inline. Used by `coder/claude-code`, `coder-labs/copilot`, `coder-labs/codex`, `coder-labs/cursor-cli`, `coder/amazon-q` for example.
```tf
locals {
install_script = file("${path.module}/scripts/install.sh")
start_script = file("${path.module}/scripts/start.sh")
}
```
Use `file()` when scripts don't need Terraform variable interpolation. For config templates, use a `templates/` directory with `templatefile()` (e.g. `coder/amazon-q/templates/agent-config.json.tpl`).
### Inline heredoc (minimal modules)
For trivial logic, embed the script directly in the `coder_script` resource. Used by `cursor`, `zed`.
Modules that use a `scripts/` directory often also have a `testdata/` directory containing mock scripts for testing (e.g. `testdata/my-tool-mock.sh`).
## Testing
### .tftest.hcl (Required)
Every module must have Terraform native tests. The file can be named `main.tftest.hcl` or `<module-name>.tftest.hcl`. Use `command = plan` for most cases:
```hcl
run "plan_with_defaults" {
command = plan
variables {
agent_id = "test-agent-id"
}
assert {
condition = var.agent_id == "test-agent-id"
error_message = "agent_id should be set"
}
}
run "custom_port" {
command = plan
variables {
agent_id = "test-agent-id"
port = 8080
}
assert {
condition = resource.coder_app.my_tool.url == "http://localhost:8080"
error_message = "App URL should use configured port"
}
}
```
Advanced patterns:
- `override_data` to mock data sources like `coder_workspace` and `coder_workspace_owner`
- `command = apply` when testing outputs or computed values
- `expect_failures` to test validation rules
- `regexall()` / `startswith()` / `endswith()` for string assertions
- Assert on `coder_env`, `coder_script`, `coder_app` resource attributes
```hcl
run "with_mocked_workspace" {
command = apply
variables {
agent_id = "foo"
}
override_data {
target = data.coder_workspace.me
values = {
name = "test-workspace"
}
}
assert {
condition = output.url == "expected-value"
error_message = "URL should match expected format"
}
}
run "validation_rejects_conflict" {
command = plan
variables {
agent_id = "test"
option_a = true
option_b = true
}
expect_failures = [
var.option_a,
]
}
```
### main.test.ts (Optional)
For more complex testing (Docker containers, script execution, HTTP mocking).
Import from `~test` (mapped to `test/test.ts` via `tsconfig.json`):
```typescript
import { describe, expect, it } from "bun:test";
import {
runTerraformApply,
runTerraformInit,
testRequiredVariables,
findResourceInstance,
} from "~test";
describe("my-tool", () => {
it("should init successfully", async () => {
await runTerraformInit(import.meta.dir);
});
testRequiredVariables(import.meta.dir, {
agent_id: "test-agent",
});
it("should apply with defaults", async () => {
const state = await runTerraformApply(import.meta.dir, {
agent_id: "test-agent",
});
const app = findResourceInstance(state, "coder_app");
expect(app.slug).toBe("my-tool");
expect(app.display_name).toBe("My Tool");
});
});
```
### Test utility API (`~test`)
**Terraform helpers:**
- `runTerraformInit(dir)`: runs `terraform init`.
- `runTerraformApply(dir, vars, customEnv?)`: runs `terraform apply` with a random state file and returns `TerraformState`. Variables are passed as `TF_VAR_*`. Safe to run in parallel. `TerraformState` has `outputs: Record<string, TerraformOutput>` and `resources: TerraformStateResource[]`.
- `testRequiredVariables(dir, vars)`: auto-generates test cases (one success with all vars, plus one per var verifying apply fails without it). Pass `{}` if there are no required vars.
- `findResourceInstance(state, type, name?)`: finds the first resource instance by type. Throws if not found. Optionally filters by name.
**Docker helpers** (require `--network host`, Linux/Colima/OrbStack):
- `runContainer(image, init?)`: starts a detached container and returns its ID. Labeled `modules-test=true` for auto-cleanup.
- `removeContainer(id)`: force-removes a container.
- `execContainer(id, cmd[], args?[])`: runs a command in a container and returns `{ exitCode, stdout, stderr }`.
- `executeScriptInContainer(state, image, shell?, before?)`: finds `coder_script` in state, runs it in a container, and returns `{ exitCode, stdout: string[], stderr: string[] }`.
**File helpers:**
- `writeCoder(id, script)`: writes a mock `coder` CLI to `/usr/bin/coder` in the container.
- `writeFileContainer(id, path, content, { user? })`: writes a file to the container via base64.
- `readFileContainer(id, path)`: reads a file from the container as root.
**HTTP helpers:**
- `createJSONResponse(obj, statusCode?)`: creates a `Response` with a JSON body (defaults to 200).
Cleanup of `*.tfstate` files and `modules-test` Docker containers is handled automatically by `setup.ts` (preloaded via `bunfig.toml`).
## Commands
| Task | Command | Scope |
| ---------------- | ----------------------------------------------------- | ---------- |
| Format all | `bun run fmt` | Repo |
| Terraform tests | `bun run tftest` | Repo |
| TypeScript tests | `bun run tstest` | Repo |
| Single TF test | `terraform init -upgrade && terraform test -verbose` | Module dir |
| Single TS test | `bun test main.test.ts` | Module dir |
| Validate | `./scripts/terraform_validate.sh` | Repo |
| ShellCheck | `bun run shellcheck` | Repo |
| Version bump | `.github/scripts/version-bump.sh patch\|minor\|major` | Repo |
## Version Management
Bump version via `.github/scripts/version-bump.sh` when modifying modules:
- `patch`: bugfixes
- `minor`: new features, new variables with defaults
- `major`: breaking changes (removed inputs, changed defaults, new required variables)
The script automatically updates `version` references in README usage examples.
## Final Checks
Before considering the work complete, verify:
- Tests pass: `bun run tftest` and `bun run tstest`
- `bun run fmt` has been run
- `bun run shellcheck` passes if the module includes shell scripts
- New variables have sensible defaults for backward compatibility
- Breaking changes are documented if any inputs were removed, defaults changed, or new required variables added
- Shell scripts handle errors gracefully (`|| echo "Warning..."` for non-fatal failures)
- No hardcoded values that should be configurable via variables
- Asset and icon paths in frontmatter and Terraform must be relative (e.g. `../../../../.icons/`), not absolute. External hyperlinks to docs or other websites are fine.
## Response to the User
In your response, include:
- If a new namespace was created, remind the user to fill out the namespace README (`display_name`, `bio`, `status`, `github`, etc.) and replace the placeholder avatar. Note that this is only needed if they plan to contribute to the registry.
- If any icons were referenced but not found, list them and note they need to be sourced and added to both this repo's `.icons/` directory and the `coder/coder` repo at `site/static/icon/`.
- A note that to contribute the module to the public registry, they can open a pull request to <https://github.com/coder/registry>.
+321
View File
@@ -0,0 +1,321 @@
---
name: coder-templates
description: Creates and updates Coder Registry workspace templates with agent setup, infrastructure provisioning, and module consumption
---
# Coder Templates
Coder workspace templates are complete workspace definitions that live under `registry/<namespace>/templates/<name>/` and provision the infrastructure that workspaces run on.
## Before You Start
Before writing or modifying any code:
1. **Understand the request.** What platform is the template targeting (Docker, AWS, GCP, Azure, Kubernetes)? What kind of workspace (VM, container, devcontainer)?
2. **Research existing templates and modules.** Look under `registry/` in this repo for similar templates and modules first; if you are not in the repo or cannot find a match, browse <https://registry.coder.com>. Read `main.tf` to understand patterns for that platform, especially how they handle agent setup, persistent storage, and module consumption. Prefer platform-specific helper modules (e.g. region selectors) that provide ready-made `coder_parameter` blocks over hard-coding option lists.
3. **Check provider docs.** Verify the infrastructure provider resources you plan to use. Check both the Coder provider and the platform provider (AWS, Docker, etc.) version-specific docs if needed.
4. **Clarify before building.** If the request is ambiguous (e.g. unclear platform, whether to use devcontainers vs plain VMs, what parameters to expose, or which namespace to use), ask for clarification rather than guessing. Never assume a namespace; always confirm with the user.
5. **Plan the structure.** Decide on infrastructure resources, what `coder_parameter` options to expose, which registry modules to consume, and whether additional files like cloud-init configs are needed. When the user describes requirements in terms of their development needs rather than specific Terraform changes (e.g. "I need Node 20 + Postgres 16" or "make this template work for data science"), summarize what you plan to add or change before proceeding. Keep it brief: list the parameters, modules, and infrastructure changes. Skip this for straightforward requests where the action is clear (e.g. "add the code-server module" or "change the default region to us-west-2").
When updating an existing template, read and understand all of its current resources, parameters, and module consumption before making changes. If you observe patterns that deviate from the coder template standards (e.g. missing metadata blocks, hardcoded values that should be parameters, inline implementations that existing modules could replace, missing error handling in scripts), note these to the user as improvement opportunities in your response.
Always prefer the proper implementation over a simpler shortcut. Templates are infrastructure that users depend on. Doing less work is not the same as reducing complexity if it leaves the template incomplete or fragile.
Features marked as "Premium" in this skill require a Coder Premium license. When your implementation uses a Premium feature, note this in your response to the user so they can verify their deployment supports it.
## Documentation References
### Coder
- Platform docs (latest): <https://coder.com/docs>
- Version-specific docs: `https://coder.com/docs/@v{MAJOR}.{MINOR}.{PATCH}` (e.g. <https://coder.com/docs/@v2.31.5>)
- Creating templates: <https://coder.com/docs/admin/templates/creating-templates>
- Extending templates: <https://coder.com/docs/admin/templates/extending-templates>
- Template parameters: <https://coder.com/docs/admin/templates/extending-templates/parameters>
- Dynamic parameters: <https://coder.com/docs/admin/templates/extending-templates/dynamic-parameters>
- Workspace presets: <https://coder.com/docs/admin/templates/extending-templates/parameters#workspace-presets>
- Prebuilt workspaces: <https://coder.com/docs/admin/templates/extending-templates/prebuilt-workspaces>
- Tasks: <https://coder.com/docs/ai-coder/tasks>
- Agent Boundaries: <https://coder.com/docs/ai-coder/agent-boundaries>
- Coder Registry: <https://registry.coder.com>
### Coder Terraform provider
- Provider docs (latest): <https://registry.terraform.io/providers/coder/coder/latest/docs>
- Version-specific provider docs: replace `latest` with a version number (e.g. <https://registry.terraform.io/providers/coder/coder/2.13.1/docs>)
Resources:
| Resource | Docs |
| ---------------- | ------------------------------------------------------------------------------------ |
| `coder_agent` | <https://registry.terraform.io/providers/coder/coder/latest/docs/resources/agent> |
| `coder_app` | <https://registry.terraform.io/providers/coder/coder/latest/docs/resources/app> |
| `coder_script` | <https://registry.terraform.io/providers/coder/coder/latest/docs/resources/script> |
| `coder_env` | <https://registry.terraform.io/providers/coder/coder/latest/docs/resources/env> |
| `coder_metadata` | <https://registry.terraform.io/providers/coder/coder/latest/docs/resources/metadata> |
| `coder_ai_task` | <https://registry.terraform.io/providers/coder/coder/latest/docs/resources/ai_task> |
Data sources:
| Data Source | Docs |
| ------------------------ | ----------------------------------------------------------------------------------------------- |
| `coder_parameter` | <https://registry.terraform.io/providers/coder/coder/latest/docs/data-sources/parameter> |
| `coder_workspace` | <https://registry.terraform.io/providers/coder/coder/latest/docs/data-sources/workspace> |
| `coder_workspace_owner` | <https://registry.terraform.io/providers/coder/coder/latest/docs/data-sources/workspace_owner> |
| `coder_provisioner` | <https://registry.terraform.io/providers/coder/coder/latest/docs/data-sources/provisioner> |
| `coder_workspace_preset` | <https://registry.terraform.io/providers/coder/coder/latest/docs/data-sources/workspace_preset> |
| `coder_task` | <https://registry.terraform.io/providers/coder/coder/latest/docs/data-sources/task> |
### Terraform providers commonly used in templates
All provider docs follow `https://registry.terraform.io/providers/ORG/NAME/latest/docs`:
| Provider | Source |
| ---------- | ---------------------- |
| Docker | `kreuzwerker/docker` |
| AWS | `hashicorp/aws` |
| Azure | `hashicorp/azurerm` |
| GCP | `hashicorp/google` |
| Kubernetes | `hashicorp/kubernetes` |
| Cloud-Init | `hashicorp/cloudinit` |
Browse all providers: <https://registry.terraform.io/browse/providers>
## Scaffolding a New Template
Only use this when creating a brand new template that does not yet exist. When updating an existing template, edit its files directly.
From repo root:
```bash
./scripts/new_template.sh namespace/template-name
```
Names must be lowercase alphanumeric with hyphens (e.g. `my-org/aws-ec2`). Underscores are not allowed.
Creates `registry/<namespace>/templates/<template-name>/` with:
- `main.tf`: full workspace Terraform config with common patterns — read this as the primary reference for template structure
- `README.md`: frontmatter and documentation
If the namespace is new, the script also creates `registry/<namespace>/` with a README. New namespaces additionally need:
- `registry/<namespace>/.images/avatar.svg` (or `.png`): square image, 400x400px minimum
- The namespace README `avatar` field pointing to `./.images/avatar.svg`
The scaffolding script does not create the `.images/` directory or avatar file. When a new namespace is created, create `registry/<namespace>/.images/` and add a placeholder `avatar.svg` so the directory structure is ready for the user to replace with their real avatar.
The generated namespace README contains placeholder fields (`display_name`, `bio`, `status`, `github`, `avatar`, etc.) that the user must fill out. The `status` field is required and must be `official`, `partner`, or `community` (typically `community` for new contributors).
## Key Patterns
- Provider version constraints must reflect actual functionality requirements. Only set a minimum `coder` provider version when the template uses a resource, attribute, or behavior introduced in that version. The same applies to infrastructure providers (Docker, AWS, etc.); check provider changelogs to confirm.
- Include `data.coder_workspace.me` and `data.coder_workspace_owner.me` for workspace and owner metadata. Include `data.coder_provisioner.me` only when you need the provisioner's `arch` or `os` for `coder_agent` (typical for Docker, Kubernetes, Incus); omit when the workspace OS/arch is fixed (e.g. cloud VMs with a known image).
- Use `locals {}` for computed values: username, environment variables, startup scripts, URL assembly
- Use `data.coder_workspace.me.start_count` as `count` on ephemeral resources
- Connect containers/VMs to the agent via `coder_agent.main.init_script` and `CODER_AGENT_TOKEN`
- Add `metadata` blocks for workspace dashboard stats (`coder stat cpu`, `coder stat mem`, etc.)
- Use `coder_metadata` on the primary compute resource to surface key details (region, instance type, image, disk size) in the workspace dashboard
- Optionally use `display_apps` block to hide specific built-in apps (defaults show all)
- Before implementing functionality from scratch, look for an existing module under `registry/*/modules/` in this repo; if you cannot find one or are not in the repo, search <https://registry.coder.com>. If a module already exists for what you need, consume it rather than reimplementing it. When multiple modules serve similar purposes, prefer the actively maintained one and check that you are not using a deprecated or superseded module.
- Before consuming a module, read its `main.tf` and `README.md` to understand the full interface: accepted variables, outputs, prerequisites, and runtime requirements. Prefer paths under `registry/<namespace>/modules/<name>/` in this workspace; otherwise use `https://registry.coder.com/modules/<namespace>/<module-name>`. Never pass arguments without confirming they exist.
- After identifying a module's prerequisites, verify the template's base image satisfies them. If it lacks a required tool, either switch to an image that includes it or ensure the prerequisite is installed before the module's script runs. These runtime issues are not caught by `terraform validate`; they only surface when the workspace starts.
- Module source URLs use `registry.coder.com/<namespace>/<module>/coder`. Older templates may use `registry.coder.com/modules/...`; prefer the shorter form when writing new modules or templates.
- Label infrastructure resources with `coder.owner` and `coder.workspace_id` for tracking orphans
- Use `lifecycle { ignore_changes = all }` on persistent volumes to prevent data loss
- Do not add comments that narrate what the code does or label sections. Only comment when explaining something non-obvious (e.g. why a workaround exists, a subtle constraint, or an unusual design choice).
### Additional files
Templates can include files beyond `main.tf` + `README.md`:
- `cloud-init/*.tftpl`: cloud-init configs for VM provisioning (AWS, Azure, GCP), loaded via `templatefile()`. Prefer this subdirectory over placing cloud-init files at the template root.
- `build/Dockerfile`: custom container images built by the template
- `.tftpl` files: any Terraform template files for scripts, configs, or cloud-init data
### Parameters
Use `data "coder_parameter"` for user-facing workspace options. Typical parameters: region/instance type/CPU/memory/disk for cloud VMs; container image or runtime version for Docker (pass as `build_arg` when using a local Dockerfile). Use same-platform templates in `registry/` as a starting reference, not a rigid pattern. Expose stated preferences as the parameter `default` with additional sensible `option` values unless the user explicitly restricts it.
- Prefer `dynamic "option"` blocks with `for_each` from a `locals` map over static `option` blocks. See the region selector modules (e.g. `coder/aws-region`) for the pattern.
- Use `form_type` for richer UI controls: `dropdown` (searchable), `multi-select` (for `list(string)`), `slider` (numeric), `radio`, `checkbox`, `textarea`.
- Conditional parameters: use `count` to show/hide a parameter based on another parameter's value.
- `mutable = false` for infrastructure that can't change after creation (region, disk); `mutable = true` for runtime config.
- `ephemeral = true` for one-shot build options that don't persist between starts.
- `validation {}` with `min`/`max`/`monotonic` for numbers, `regex`/`error` for strings.
- Dynamic parameter features require Coder provider `>= 2.4.0`.
### Presets
Workspace presets bundle commonly-used parameter combinations into selectable options. When a user creates a workspace, they can pick a preset to auto-fill multiple parameters at once. Define presets with `data "coder_workspace_preset"`:
```tf
data "coder_workspace_preset" "default" {
name = "Standard Dev Environment"
default = true
parameters = {
"region" = "us-east-1"
"cpu" = "4"
"memory" = "8"
"container_image" = "codercom/enterprise-base:ubuntu"
}
}
```
- The keys in `parameters` must match the `name` attribute of `coder_parameter` data sources in the same template.
- Set `default = true` on at most one preset to pre-select it in the UI.
- A template can define multiple presets for different use cases.
- Optional fields: `description` (context text in UI) and `icon` (e.g. `/emojis/1f680.png`).
### Prebuilds (Premium)
Prebuilds maintain an automatically-managed pool of pre-provisioned workspaces for a preset, reducing workspace creation time. This is a Premium feature. Prebuilds are configured as a nested block inside a preset:
```tf
data "coder_workspace_preset" "goland" {
name = "GoLand: Large"
parameters = {
"jetbrains_ide" = "GO"
"cpu" = "8"
"memory" = "16"
}
prebuilds {
instances = 3
expiration_policy {
ttl = 86400
}
scheduling {
timezone = "UTC"
schedule {
cron = "* 8-18 * * 1-5"
instances = 5
}
}
}
}
```
- `instances`: number of prebuilt workspaces to keep in the pool (base count when no schedule matches).
- `expiration_policy.ttl`: seconds before unclaimed prebuilds are cleaned up.
- `scheduling`: scale the pool up or down on a time-based cron schedule. The `cron` minute field must always be `*`.
- The preset must define all required parameters needed to build the workspace.
- When a prebuild is claimed, ownership transfers to the real user. Use `lifecycle { ignore_changes = [...] }` on resources that reference owner-specific values to prevent unnecessary recreation.
### Task-Oriented Templates
A template becomes task-capable by adding a `coder_ai_task` resource, which enables the Coder Tasks UI for AI agent workflows. Task templates require three additions on top of a regular template:
```tf
resource "coder_ai_task" "task" {
count = data.coder_workspace.me.start_count
app_id = module.claude-code[count.index].task_app_id
}
data "coder_task" "me" {}
module "claude-code" {
count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/claude-code/coder"
version = "~> 4.0"
agent_id = coder_agent.main.id
workdir = "/home/coder/projects"
ai_prompt = data.coder_task.me.prompt
system_prompt = data.coder_parameter.system_prompt.value
model = "sonnet"
permission_mode = "plan"
enable_boundary = true
}
```
- `coder_ai_task`: declares the template as task-capable. Its `app_id` must point to the agent module's `task_app_id` output.
- `data "coder_task"`: reads the user's task prompt. Pass it to the agent module via `ai_prompt`.
- Agent module: consume an AI agent module (`claude-code`, `codex`, etc.) with task-specific variables. Key variables include `ai_prompt`, `system_prompt`, `permission_mode`, and `enable_boundary`.
- Boundaries: set `enable_boundary = true` on the agent module to enable network-level filtering for the AI agent. See <https://coder.com/docs/ai-coder/agent-boundaries> for allowlist configuration.
- A `coder_app` with `slug = "preview"` gets special treatment in the Tasks UI navbar.
- Task templates heavily use presets to define scenarios (different repos, system prompts, setup scripts, container images).
- See `registry/coder-labs/templates/tasks-docker` as a reference implementation.
Docs: <https://coder.com/docs/ai-coder/tasks>
## README.md
Required YAML frontmatter:
```yaml
---
display_name: Docker Containers
description: Provision Docker containers with persistent home volumes as Coder workspaces
icon: ../../../../.icons/docker.svg
verified: false
tags: [docker, container]
---
```
Content rules:
- Single H1 heading matching `display_name`, directly below frontmatter
- When increasing header levels, increment by one each time (h1 -> h2 -> h3, not h1 -> h3)
- Opening paragraph describing what the template provisions. Be specific about the platform, compute type, and key capabilities (e.g. "Provision Kubernetes pods on an existing Amazon EKS cluster as Coder workspaces with persistent home volumes") rather than generic (e.g. "AWS Kubernetes template"). The frontmatter `description` field should follow the same principle.
- **Prerequisites** section (infrastructure requirements, provider credentials)
- **Architecture** section (what resources are created, what's ephemeral vs persistent)
- Code fences labeled `tf` (NOT `hcl`)
- Relative icon paths (e.g. `../../../../.icons/`)
- **Do NOT include tables or lists that enumerate variables, parameters, or outputs.** The registry generates variable and output documentation automatically from the Terraform source. Workspace parameter options are visible in the Coder UI. Describe what the template does and how to use it in prose, not by listing every configurable field.
- Use [GFM alerts](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax#alerts) for callouts: `> [!NOTE]`, `> [!TIP]`, `> [!IMPORTANT]`, `> [!WARNING]`, `> [!CAUTION]`
## Icons
Templates reference icons in the README frontmatter `icon:` field using a relative path to the repo's `.icons/` directory (e.g. `../../../../.icons/aws.svg`). This icon is displayed on the registry website.
Workflow:
1. **Check what exists.** List the `.icons/` directory at the repo root for available SVGs.
2. **Use existing icons when they fit.** Most templates use a platform icon (aws, gcp, azure, docker, kubernetes) that already exists.
3. **When an icon doesn't exist,** reference the expected path anyway so the structure is correct. Try to source the official SVG from the platform's branding page or repository. If you can obtain it, add it to `.icons/` in this repo.
4. **Don't substitute a generic icon.** If the platform has its own brand identity, use the correct name even if the file doesn't exist yet.
5. **Track missing icons** so you can report them in your response.
## Testing
Templates do NOT require `.tftest.hcl` or `main.test.ts`. Testing is done by pushing the template to a Coder deployment.
## Commands
| Task | Command | Scope |
| ---------- | --------------------------------- | ----- |
| Format all | `bun run fmt` | Repo |
| Validate | `./scripts/terraform_validate.sh` | Repo |
| ShellCheck | `bun run shellcheck` | Repo |
## Final Checks
Before considering the work complete, verify:
- `terraform init && terraform validate` passes in the template directory
- `bun run fmt` has been run
- `bun run shellcheck` passes if the template includes shell scripts
- README documents prerequisites and architecture
- Shell scripts handle errors gracefully (`|| echo "Warning..."` for non-fatal failures). If a script sources external files (`$HOME/.bashrc`, `/etc/bashrc`, `/etc/os-release`), the `source` must come before `set -u`; CI enforces this ordering.
- No hardcoded values that should be configurable via variables or parameters
- Asset and icon paths in frontmatter and Terraform must be relative (e.g. `../../../../.icons/`), not absolute. External hyperlinks to docs or other websites are fine.
## Response to the User
In your response, include:
- A ready-to-run push command with real values filled in. Use `-d` to point at the template directory (so it works from the repo root), `-m` for a short description, and `-y` to skip interactive prompts:
```bash
coder templates push \
registry/ \
-m "Initial version: <brief description>" \
-y < template-name > -d < namespace > /templates/ < template-name > /
```
- If a new namespace was created, remind the user to fill out the namespace README (`display_name`, `bio`, `status`, `github`, etc.) and replace the placeholder avatar. Note that this is only needed if they plan to contribute to the registry.
- If any icons were referenced but not found, list them and note they need to be sourced and added to both this repo's `.icons/` directory and the `coder/coder` repo at `site/static/icon/`.
- A note that to contribute the template to the public registry, they can open a pull request to <https://github.com/coder/registry>.
+1
View File
@@ -0,0 +1 @@
../.agents/skills
+40 -11
View File
@@ -1,14 +1,18 @@
#!/bin/bash
# Version Bump Script
# Usage: ./version-bump.sh <bump_type> [base_ref]
# Usage: ./version-bump.sh [--ci] <bump_type> [base_ref]
# --ci: CI mode - run bump, check for changes, exit 1 if changes needed
# bump_type: patch, minor, or major
# base_ref: base reference for diff (default: origin/main)
set -euo pipefail
CI_MODE=false
usage() {
echo "Usage: $0 <bump_type> [base_ref]"
echo "Usage: $0 [--ci] <bump_type> [base_ref]"
echo " --ci: CI mode - validates versions are already bumped (exits 1 if not)"
echo " bump_type: patch, minor, or major"
echo " base_ref: base reference for diff (default: origin/main)"
echo ""
@@ -16,6 +20,7 @@ usage() {
echo " $0 patch # Update versions with patch bump"
echo " $0 minor # Update versions with minor bump"
echo " $0 major # Update versions with major bump"
echo " $0 --ci patch # CI check: verify patch bump has been applied"
exit 1
}
@@ -85,7 +90,7 @@ update_readme_version() {
in_module_block = 0
if (module_has_target_source) {
num_lines = split(module_content, lines, "\n")
for (i = 1; i <= num_lines; i++) {
for (i = 1; i < num_lines; i++) {
line = lines[i]
if (line ~ /^[[:space:]]*version[[:space:]]*=/) {
match(line, /^[[:space:]]*/)
@@ -115,6 +120,11 @@ update_readme_version() {
}
main() {
if [ "${1:-}" = "--ci" ]; then
CI_MODE=true
shift
fi
if [ $# -lt 1 ] || [ $# -gt 2 ]; then
usage
fi
@@ -152,6 +162,8 @@ main() {
local untagged_modules=""
local has_changes=false
declare -a modified_readme_files=()
while IFS= read -r module_path; do
if [ -z "$module_path" ]; then continue; fi
@@ -202,6 +214,7 @@ main() {
if update_readme_version "$readme_path" "$namespace" "$module_name" "$new_version"; then
updated_readmes="$updated_readmes\n- $namespace/$module_name"
modified_readme_files+=("$readme_path")
has_changes=true
fi
@@ -210,19 +223,22 @@ main() {
done <<< "$modules"
# Always run formatter to ensure consistent formatting
echo "🔧 Running formatter to ensure consistent formatting..."
if command -v bun > /dev/null 2>&1; then
bun fmt > /dev/null 2>&1 || echo "⚠️ Warning: bun fmt failed, but continuing..."
else
echo "⚠️ Warning: bun not found, skipping formatting"
if [ ${#modified_readme_files[@]} -gt 0 ]; then
echo "🔧 Formatting modified README files..."
if command -v bun > /dev/null 2>&1; then
for readme_file in "${modified_readme_files[@]}"; do
bun run prettier --write "$readme_file" 2> /dev/null || true
done
else
echo "⚠️ Warning: bun not found, skipping formatting"
fi
echo ""
fi
echo ""
echo "📋 Summary:"
echo "Bump Type: $bump_type"
echo ""
echo "Modules Updated:"
echo "Modules Processed:"
echo -e "$bumped_modules"
echo ""
@@ -239,6 +255,19 @@ main() {
echo ""
fi
if [ "$CI_MODE" = true ]; then
echo "🔍 Comparing files to committed versions..."
if git diff --quiet; then
echo "✅ PASS: All versions match - no changes needed"
exit 0
else
echo "❌ FAIL: Module versions need to be updated"
echo ""
echo "Run './.github/scripts/version-bump.sh $bump_type' locally and commit the changes"
exit 1
fi
fi
if [ "$has_changes" = true ]; then
echo "✅ Version bump completed successfully!"
echo "📝 README files have been updated with new versions."
+1
View File
@@ -3,6 +3,7 @@ muc = "muc" # For Munich location code
tyo = "tyo" # For Tokyo location code
Hashi = "Hashi"
HashiCorp = "HashiCorp"
hel = "hel" # For Helsinki location code
mavrickrishi = "mavrickrishi" # Username
mavrick = "mavrick" # Username
inh = "inh" # Option in setpriv command
@@ -11,7 +11,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Run check.sh
run: |
+11 -11
View File
@@ -1,7 +1,7 @@
name: CI
on:
pull_request:
branches: [main]
# Cancel in-progress runs for pull requests when developers push new changes
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
@@ -12,9 +12,9 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Detect changed files
uses: dorny/paths-filter@v3
uses: dorny/paths-filter@fbd0ab8f3e69293af611ebaee6363fc25e6d187d # v4.0.1
id: filter
with:
list-files: shell
@@ -37,9 +37,9 @@ jobs:
all:
- '**'
- name: Set up Terraform
uses: coder/coder/.github/actions/setup-tf@main
uses: coder/coder/.github/actions/setup-tf@34584e909bbe6f501fb2cbdc994325b4d3f9e2ef # v2.32.0
- name: Set up Bun
uses: oven-sh/setup-bun@v2
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
with:
# We're using the latest version of Bun for now, but it might be worth
# reconsidering. They've pushed breaking changes in patch releases
@@ -80,20 +80,20 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Install Bun
uses: oven-sh/setup-bun@v2
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
with:
bun-version: latest
# Need Terraform for its formatter
- name: Install Terraform
uses: coder/coder/.github/actions/setup-tf@main
uses: coder/coder/.github/actions/setup-tf@34584e909bbe6f501fb2cbdc994325b4d3f9e2ef # v2.32.0
- name: Install dependencies
run: bun install
- name: Validate formatting
run: bun fmt:ci
- name: Check for typos
uses: crate-ci/typos@v1.40.0
uses: crate-ci/typos@cf5f1c29a8ac336af8568821ec41919923b05a83 # v1.45.1
with:
config: .github/typos.toml
validate-readme-files:
@@ -104,9 +104,9 @@ jobs:
needs: validate-style
steps:
- name: Check out code
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Set up Go
uses: actions/setup-go@v6
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6
with:
go-version: "1.24.0"
- name: Validate contributors
+1 -1
View File
@@ -28,7 +28,7 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Authenticate with Google Cloud
uses: google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093
with:
+3 -3
View File
@@ -14,11 +14,11 @@ jobs:
name: lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-go@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # v6
with:
go-version: stable
- name: golangci-lint
uses: golangci/golangci-lint-action@v9
uses: golangci/golangci-lint-action@1e7e51e771db61008b38414a730f564565cf7c20 # v9
with:
version: v2.1
+3 -3
View File
@@ -14,7 +14,7 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
persist-credentials: false
@@ -89,9 +89,9 @@ jobs:
for sha in $MODULE_COMMIT_SHAS; do
SHORT_SHA=${sha:0:7}
COMMIT_LINES=$(echo "$FULL_CHANGELOG" | grep -E "$SHORT_SHA|$(git log --format='%s' -n 1 $sha)" || true)
if [ -n "$COMMIT_LINES" ]; then
FILTERED_CHANGELOG="${FILTERED_CHANGELOG}${COMMIT_LINES}\n"
else
+30 -55
View File
@@ -20,26 +20,28 @@ jobs:
issues: write
steps:
- name: Checkout code
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Set up Bun
uses: oven-sh/setup-bun@v2
uses: oven-sh/setup-bun@0c5077e51419868618aeaa5fe8019c62421857d6 # v2
with:
bun-version: latest
- name: Set up Terraform
uses: coder/coder/.github/actions/setup-tf@main
uses: coder/coder/.github/actions/setup-tf@34584e909bbe6f501fb2cbdc994325b4d3f9e2ef # v2.32.0
- name: Install dependencies
run: bun install
- name: Extract bump type from label
env:
LABEL_NAME: ${{ github.event.label.name }}
id: bump-type
run: |
case "${{ github.event.label.name }}" in
case "$LABEL_NAME" in
"version:patch")
echo "type=patch" >> $GITHUB_OUTPUT
;;
@@ -50,67 +52,40 @@ jobs:
echo "type=major" >> $GITHUB_OUTPUT
;;
*)
echo "Invalid version label: ${{ github.event.label.name }}"
echo "Invalid version label: ${LABEL_NAME}"
exit 1
;;
esac
- name: Check version bump requirements
id: version-check
run: |
output_file=$(mktemp)
if ./.github/scripts/version-bump.sh "${{ steps.bump-type.outputs.type }}" origin/main > "$output_file" 2>&1; then
echo "Script completed successfully"
else
echo "Script failed"
cat "$output_file"
exit 1
fi
- name: Check version bump
run: ./.github/scripts/version-bump.sh --ci "${{ steps.bump-type.outputs.type }}" origin/main
{
echo "output<<EOF"
cat "$output_file"
echo "EOF"
} >> $GITHUB_OUTPUT
cat "$output_file"
if git diff --quiet; then
echo "versions_up_to_date=true" >> $GITHUB_OUTPUT
echo "✅ All module versions are already up to date"
else
echo "versions_up_to_date=false" >> $GITHUB_OUTPUT
echo "❌ Module versions need to be updated"
echo "Files that would be changed:"
git diff --name-only
echo ""
echo "Diff preview:"
git diff
git checkout .
git clean -fd
exit 1
fi
- name: Comment on PR - Failure
if: failure() && steps.version-check.outputs.versions_up_to_date == 'false'
uses: actions/github-script@v8
- name: Comment on PR - Version bump required
if: failure()
uses: actions/github-script@3a2844b7e9c422d3c10d287c895573f7108da1b3 # v9.0.0
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
script: |
const output = `${{ steps.version-check.outputs.output }}`;
const bumpType = `${{ steps.bump-type.outputs.type }}`;
let comment = `## ❌ Version Bump Validation Failed\n\n`;
comment += `**Bump Type:** \`${bumpType}\`\n\n`;
comment += `Module versions need to be updated but haven't been bumped yet.\n\n`;
comment += `**Required Actions:**\n`;
comment += `1. Run the version bump script locally: \`./.github/scripts/version-bump.sh ${bumpType}\`\n`;
comment += `2. Commit the changes: \`git add . && git commit -m "chore: bump module versions (${bumpType})"\`\n`;
comment += `3. Push the changes: \`git push\`\n\n`;
comment += `### Script Output:\n\`\`\`\n${output}\n\`\`\`\n\n`;
comment += `> Please update the module versions and push the changes to continue.`;
const comment = [
'## Version Bump Required',
'',
'One or more modules in this PR need their versions updated.',
'',
'**To fix this:**',
'1. Run the version bump script locally:',
' ```bash',
` ./.github/scripts/version-bump.sh ${bumpType}`,
' ```',
'2. Commit the changes:',
' ```bash',
` git add . && git commit -m "chore: bump module versions (${bumpType})"`,
' ```',
'3. Push your changes',
'',
'The CI will automatically re-run once you push the updated versions.'
].join('\n');
github.rest.issues.createComment({
issue_number: context.issue.number,
+55
View File
@@ -0,0 +1,55 @@
name: GitHub Actions Security Analysis (zizmor)
on:
pull_request:
branches: ["**"]
paths:
- ".github/workflows/**"
push:
branches: ["main"]
paths:
- ".github/workflows/**"
workflow_dispatch:
permissions: {}
jobs:
zizmor_pr_blocking:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
permissions:
contents: read
actions: read
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Run zizmor (blocking, HIGH only)
uses: zizmorcore/zizmor-action@b1d7e1fb5de872772f31590499237e7cce841e8e # v0.5.3
with:
advanced-security: false
annotations: true
min-severity: high
inputs: |
.github/workflows
zizmor_main_sarif:
if: github.event_name != 'pull_request'
runs-on: ubuntu-latest
permissions:
security-events: write
contents: read
actions: read
steps:
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
persist-credentials: false
- name: Run zizmor (SARIF)
uses: zizmorcore/zizmor-action@b1d7e1fb5de872772f31590499237e7cce841e8e # v0.5.3
with:
inputs: |
.github/workflows
+1
View File
@@ -1,3 +1,4 @@
.DS_Store
# Logs
logs
*.log
+1
View File
@@ -0,0 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>1Password</title><circle cx="12" cy="12" r="12" fill="#0572EC"/><path fill="#fff" d="M11.105 4.864h1.788c.484 0 .729.002.914.096a.86.86 0 0 1 .377.377c.094.185.095.428.095.912v6.016c0 .12 0 .182-.015.238a.427.427 0 0 1-.067.137.923.923 0 0 1-.174.162l-.695.564c-.113.092-.17.138-.191.194a.216.216 0 0 0 0 .15c.02.055.078.101.191.193l.695.565c.094.076.14.115.174.162.03.042.053.087.067.137a.936.936 0 0 1 .015.238v2.746c0 .484-.001.727-.095.912a.86.86 0 0 1-.377.377c-.185.094-.43.096-.914.096h-1.788c-.484 0-.726-.002-.912-.096a.86.86 0 0 1-.377-.377c-.094-.185-.095-.428-.095-.912v-6.016c0-.12 0-.182.015-.238a.437.437 0 0 1 .067-.139c.034-.047.08-.083.174-.16l.695-.564c.113-.092.17-.138.191-.194a.216.216 0 0 0 0-.15c-.02-.055-.078-.101-.191-.193l-.695-.565a.92.92 0 0 1-.174-.162.437.437 0 0 1-.067-.139.92.92 0 0 1-.015-.236V6.25c0-.484.001-.727.095-.912a.86.86 0 0 1 .377-.377c.186-.094.428-.096.912-.096z"/></svg>

After

Width:  |  Height:  |  Size: 999 B

+1 -3
View File
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

+1 -18
View File
@@ -1,18 +1 @@
<svg width="120" height="120" viewBox="0 0 120 120" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_291_81)">
<path d="M2.3851 119.063L59.3935 60.6262C59.5695 60.4524 59.6787 60.2222 59.702 59.9759C59.7253 59.7296 59.6612 59.483 59.5209 59.2793C56.0543 54.4394 49.6575 53.6001 47.2866 50.3479C40.2644 40.7151 38.4826 35.2616 35.4647 35.6001C35.2541 35.6304 35.0605 35.7325 34.9166 35.8893L14.3235 56.9999C2.47534 69.1349 0.772844 95.8827 0.465344 118.281C0.464324 118.504 0.530042 118.722 0.654038 118.908C0.778034 119.093 0.95463 119.237 1.16109 119.321C1.36755 119.405 1.59442 119.425 1.81249 119.379C2.03056 119.333 2.23026 119.223 2.3851 119.063Z" fill="#017CEE"/>
<path d="M119.053 117.619L60.6169 60.6066C60.4429 60.4301 60.2123 60.3206 59.9656 60.2973C59.7189 60.274 59.4719 60.3384 59.2679 60.4792C54.4281 63.9477 53.5887 70.3426 50.3365 72.7135C40.7037 79.7357 35.2503 81.5175 35.5887 84.5354C35.6195 84.7453 35.7216 84.9381 35.8779 85.0815L56.9886 105.675C69.1236 117.523 95.8714 119.225 118.27 119.533C118.492 119.533 118.709 119.467 118.893 119.343C119.077 119.22 119.22 119.044 119.304 118.839C119.388 118.634 119.409 118.408 119.364 118.191C119.32 117.974 119.211 117.774 119.053 117.619Z" fill="#00AD46"/>
<path d="M56.9925 105.675C50.3587 99.203 47.2847 86.4009 59.9979 60.0009C39.3298 69.2377 32.0876 81.3788 35.6492 84.855L56.9925 105.675Z" fill="#04D659"/>
<path d="M117.609 0.948092L60.6028 59.3843C60.4265 59.558 60.317 59.7883 60.2937 60.0346C60.2704 60.281 60.3348 60.5277 60.4754 60.7313C63.944 65.5712 70.337 66.4105 72.7098 69.6627C79.7319 79.2955 81.5157 84.749 84.5317 84.4105C84.7423 84.3806 84.9361 84.2783 85.0798 84.1213L105.673 63.0107C117.521 50.8757 119.224 24.1279 119.531 1.72912C119.531 1.50626 119.465 1.28836 119.341 1.10336C119.217 0.918362 119.04 0.774705 118.834 0.690815C118.627 0.606926 118.4 0.58663 118.182 0.632532C117.964 0.678434 117.765 0.788093 117.609 0.948092Z" fill="#00C7D4"/>
<path d="M105.684 63.0103C99.2123 69.6441 86.4103 72.7181 60.0084 60.0049C69.2451 80.673 81.3862 87.9152 84.8625 84.3536L105.684 63.0103Z" fill="#11E1EE"/>
<path d="M0.939104 2.39015L59.3753 59.3967C59.5492 59.5727 59.7794 59.6819 60.0257 59.7052C60.272 59.7285 60.5186 59.6644 60.7223 59.5241C65.5622 56.0556 66.4015 49.6607 69.6537 47.2897C79.2865 40.2676 84.74 38.4858 84.4015 35.4679C84.3708 35.2574 84.2687 35.064 84.1123 34.9198L63.0017 14.3267C50.8667 2.47853 24.1189 0.77603 1.72014 0.468529C1.49682 0.467076 1.2782 0.532634 1.09253 0.656729C0.906857 0.780825 0.762673 0.957754 0.678609 1.16465C0.594545 1.37155 0.574465 1.5989 0.620965 1.81733C0.667465 2.03576 0.778059 2.23543 0.939104 2.39015Z" fill="#E43921"/>
<path d="M63.0112 14.3288C69.645 20.8008 72.719 33.6028 60.0058 60.0047C80.6739 50.768 87.9161 38.625 84.3545 35.1506L63.0112 14.3288Z" fill="#FF7557"/>
<path d="M14.3241 57C20.7961 50.3662 33.5981 47.2922 60 60.0054C50.7633 39.3373 38.6222 32.0951 35.1459 35.6567L14.3241 57Z" fill="#0CB6FF"/>
<path d="M60.0084 62.5436C61.4158 62.5436 62.5567 61.4027 62.5567 59.9953C62.5567 58.5879 61.4158 57.447 60.0084 57.447C58.601 57.447 57.4601 58.5879 57.4601 59.9953C57.4601 61.4027 58.601 62.5436 60.0084 62.5436Z" fill="#4A4848"/>
</g>
<defs>
<clipPath id="clip0_291_81">
<rect width="120" height="120" fill="white"/>
</clipPath>
</defs>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="120" height="120" fill="none" viewBox="0 0 120 120"><g clip-path="url(#clip0_291_81)"><path fill="#017CEE" d="M2.3851 119.063L59.3935 60.6262C59.5695 60.4524 59.6787 60.2222 59.702 59.9759C59.7253 59.7296 59.6612 59.483 59.5209 59.2793C56.0543 54.4394 49.6575 53.6001 47.2866 50.3479C40.2644 40.7151 38.4826 35.2616 35.4647 35.6001C35.2541 35.6304 35.0605 35.7325 34.9166 35.8893L14.3235 56.9999C2.47534 69.1349 0.772844 95.8827 0.465344 118.281C0.464324 118.504 0.530042 118.722 0.654038 118.908C0.778034 119.093 0.95463 119.237 1.16109 119.321C1.36755 119.405 1.59442 119.425 1.81249 119.379C2.03056 119.333 2.23026 119.223 2.3851 119.063Z"/><path fill="#00AD46" d="M119.053 117.619L60.6169 60.6066C60.4429 60.4301 60.2123 60.3206 59.9656 60.2973C59.7189 60.274 59.4719 60.3384 59.2679 60.4792C54.4281 63.9477 53.5887 70.3426 50.3365 72.7135C40.7037 79.7357 35.2503 81.5175 35.5887 84.5354C35.6195 84.7453 35.7216 84.9381 35.8779 85.0815L56.9886 105.675C69.1236 117.523 95.8714 119.225 118.27 119.533C118.492 119.533 118.709 119.467 118.893 119.343C119.077 119.22 119.22 119.044 119.304 118.839C119.388 118.634 119.409 118.408 119.364 118.191C119.32 117.974 119.211 117.774 119.053 117.619Z"/><path fill="#04D659" d="M56.9925 105.675C50.3587 99.203 47.2847 86.4009 59.9979 60.0009C39.3298 69.2377 32.0876 81.3788 35.6492 84.855L56.9925 105.675Z"/><path fill="#00C7D4" d="M117.609 0.948092L60.6028 59.3843C60.4265 59.558 60.317 59.7883 60.2937 60.0346C60.2704 60.281 60.3348 60.5277 60.4754 60.7313C63.944 65.5712 70.337 66.4105 72.7098 69.6627C79.7319 79.2955 81.5157 84.749 84.5317 84.4105C84.7423 84.3806 84.9361 84.2783 85.0798 84.1213L105.673 63.0107C117.521 50.8757 119.224 24.1279 119.531 1.72912C119.531 1.50626 119.465 1.28836 119.341 1.10336C119.217 0.918362 119.04 0.774705 118.834 0.690815C118.627 0.606926 118.4 0.58663 118.182 0.632532C117.964 0.678434 117.765 0.788093 117.609 0.948092Z"/><path fill="#11E1EE" d="M105.684 63.0103C99.2123 69.6441 86.4103 72.7181 60.0084 60.0049C69.2451 80.673 81.3862 87.9152 84.8625 84.3536L105.684 63.0103Z"/><path fill="#E43921" d="M0.939104 2.39015L59.3753 59.3967C59.5492 59.5727 59.7794 59.6819 60.0257 59.7052C60.272 59.7285 60.5186 59.6644 60.7223 59.5241C65.5622 56.0556 66.4015 49.6607 69.6537 47.2897C79.2865 40.2676 84.74 38.4858 84.4015 35.4679C84.3708 35.2574 84.2687 35.064 84.1123 34.9198L63.0017 14.3267C50.8667 2.47853 24.1189 0.77603 1.72014 0.468529C1.49682 0.467076 1.2782 0.532634 1.09253 0.656729C0.906857 0.780825 0.762673 0.957754 0.678609 1.16465C0.594545 1.37155 0.574465 1.5989 0.620965 1.81733C0.667465 2.03576 0.778059 2.23543 0.939104 2.39015Z"/><path fill="#FF7557" d="M63.0112 14.3288C69.645 20.8008 72.719 33.6028 60.0058 60.0047C80.6739 50.768 87.9161 38.625 84.3545 35.1506L63.0112 14.3288Z"/><path fill="#0CB6FF" d="M14.3241 57C20.7961 50.3662 33.5981 47.2922 60 60.0054C50.7633 39.3373 38.6222 32.0951 35.1459 35.6567L14.3241 57Z"/><path fill="#4A4848" d="M60.0084 62.5436C61.4158 62.5436 62.5567 61.4027 62.5567 59.9953C62.5567 58.5879 61.4158 57.447 60.0084 57.447C58.601 57.447 57.4601 58.5879 57.4601 59.9953C57.4601 61.4027 58.601 62.5436 60.0084 62.5436Z"/></g><defs><clipPath id="clip0_291_81"><rect width="120" height="120" fill="#fff"/></clipPath></defs></svg>

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

+1 -4
View File
@@ -1,4 +1 @@
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
<title>Akamai</title>
<path d="M13.0548 0C6.384 0 .961 5.3802.961 12.0078.961 18.6354 6.3698 24 13.0548 24c.6168 0 .6454-.3572.0859-.5293-4.9349-1.5063-8.5352-6.069-8.5352-11.4629 0-5.4656 3.6725-10.0706 8.6934-11.5195C13.8153.3448 13.6716 0 13.0548 0Zm2.3242 1.8223c-5.2648 0-9.5254 4.2606-9.5254 9.5254 0 1.2193.2285 2.3818.6445 3.4433.1722.459.4454.4584.4024.0137-.0287-.3156-.0567-.6447-.0567-.9746 0-5.2648 4.2606-9.5254 9.5254-9.5254 4.9779 0 6.4698 2.2235 6.6563 2.08.2008-.1577-1.808-4.5624-7.6465-4.5624zm.4687 4.0703c-1.8622.0592-3.651.7168-5.1035 1.8554-.2582.2009-.1567.3284.1445.1993 2.4675-1.076 5.5812-1.1046 8.6368-.043 2.0514.7173 3.2413 1.7364 3.3418 1.6934.1578-.0718-1.1915-2.2226-3.6446-3.1407-1.1135-.4196-2.2576-.6-3.375-.5644z" fill="#0096D6"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" role="img" viewBox="0 0 24 24"><title>Akamai</title><path fill="#0096D6" d="M13.0548 0C6.384 0 .961 5.3802.961 12.0078.961 18.6354 6.3698 24 13.0548 24c.6168 0 .6454-.3572.0859-.5293-4.9349-1.5063-8.5352-6.069-8.5352-11.4629 0-5.4656 3.6725-10.0706 8.6934-11.5195C13.8153.3448 13.6716 0 13.0548 0Zm2.3242 1.8223c-5.2648 0-9.5254 4.2606-9.5254 9.5254 0 1.2193.2285 2.3818.6445 3.4433.1722.459.4454.4584.4024.0137-.0287-.3156-.0567-.6447-.0567-.9746 0-5.2648 4.2606-9.5254 9.5254-9.5254 4.9779 0 6.4698 2.2235 6.6563 2.08.2008-.1577-1.808-4.5624-7.6465-4.5624zm.4687 4.0703c-1.8622.0592-3.651.7168-5.1035 1.8554-.2582.2009-.1567.3284.1445.1993 2.4675-1.076 5.5812-1.1046 8.6368-.043 2.0514.7173 3.2413 1.7364 3.3418 1.6934.1578-.0718-1.1915-2.2226-3.6446-3.1407-1.1135-.4196-2.2576-.6-3.375-.5644z"/></svg>

Before

Width:  |  Height:  |  Size: 852 B

After

Width:  |  Height:  |  Size: 844 B

+1 -13
View File
@@ -1,13 +1 @@
<svg width="120" height="120" viewBox="0 0 120 120" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M68.2075 2.20837C63.1244 -0.736125 56.8639 -0.736125 51.7925 2.20837L14.1826 23.9766C9.09954 26.9211 5.9751 32.3544 5.9751 38.2317V81.7683C5.9751 87.6456 9.09954 93.0789 14.1826 96.0234L51.7925 117.792C56.8755 120.736 63.1361 120.736 68.2075 117.792L105.817 96.0234C110.9 93.0789 114.025 87.6456 114.025 81.7683V38.2317C114.025 32.3544 110.9 26.9211 105.817 23.9766L68.2075 2.20837Z" fill="url(#paint0_linear_292_106)"/>
<path d="M53.6113 18.0993L26.937 33.5346C22.8682 35.8832 20.3733 40.2298 20.3733 44.9387V75.8208C20.3733 80.5297 22.8798 84.8647 26.937 87.2249L53.6113 102.66C57.6801 105.009 62.6815 105.009 66.7503 102.66L93.4247 87.2249C97.4934 84.8763 99.9883 80.5297 99.9883 75.8208V44.9387C99.9883 40.2298 97.4818 35.8949 93.4247 33.5346L66.7503 18.0993C62.6815 15.7507 57.6801 15.7507 53.6113 18.0993ZM57.7151 25.4138C59.7436 24.2337 62.2502 24.2337 64.2787 25.4138L89.7056 40.1246C91.7342 41.3048 92.9933 43.4664 92.9933 45.8267V75.26C92.9933 77.6086 91.7458 79.7819 89.7056 80.962L64.2787 95.6728C62.2502 96.853 59.7436 96.853 57.7151 95.6728L32.2881 80.962C30.2596 79.7819 29.0005 77.6203 29.0005 75.26V45.8267C29.0005 43.4781 30.2479 41.3048 32.2881 40.1246L57.7151 25.4138ZM60.5947 53.0127C60.0817 52.7206 59.4638 52.7206 58.9508 53.0127L53.4831 56.1792C52.9701 56.4713 52.667 57.0205 52.667 57.6047V63.9377C52.667 64.5219 52.9818 65.0711 53.4831 65.3632L58.9508 68.5297C59.4638 68.8218 60.0817 68.8218 60.5947 68.5297L66.0624 65.3632C66.5754 65.0711 66.8785 64.5219 66.8785 63.9377V57.6047C66.8785 57.0205 66.5638 56.4713 66.0624 56.1792L60.5947 53.0127ZM64.6984 59.1237L61.4108 65.7021L92.6086 83.8014L95.8962 77.223L64.6984 59.1237Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_292_106" x1="86.3055" y1="14.2705" x2="41.9042" y2="99.5712" gradientUnits="userSpaceOnUse">
<stop stop-color="#2FABFF"/>
<stop offset="0.31" stop-color="#5570FF"/>
<stop offset="0.62" stop-color="#7B36FF"/>
<stop offset="0.81" stop-color="#6A2CDC"/>
<stop offset="1" stop-color="#5921B8"/>
</linearGradient>
</defs>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="120" height="120" fill="none" viewBox="0 0 120 120"><path fill="url(#paint0_linear_292_106)" d="M68.2075 2.20837C63.1244 -0.736125 56.8639 -0.736125 51.7925 2.20837L14.1826 23.9766C9.09954 26.9211 5.9751 32.3544 5.9751 38.2317V81.7683C5.9751 87.6456 9.09954 93.0789 14.1826 96.0234L51.7925 117.792C56.8755 120.736 63.1361 120.736 68.2075 117.792L105.817 96.0234C110.9 93.0789 114.025 87.6456 114.025 81.7683V38.2317C114.025 32.3544 110.9 26.9211 105.817 23.9766L68.2075 2.20837Z"/><path fill="#fff" d="M53.6113 18.0993L26.937 33.5346C22.8682 35.8832 20.3733 40.2298 20.3733 44.9387V75.8208C20.3733 80.5297 22.8798 84.8647 26.937 87.2249L53.6113 102.66C57.6801 105.009 62.6815 105.009 66.7503 102.66L93.4247 87.2249C97.4934 84.8763 99.9883 80.5297 99.9883 75.8208V44.9387C99.9883 40.2298 97.4818 35.8949 93.4247 33.5346L66.7503 18.0993C62.6815 15.7507 57.6801 15.7507 53.6113 18.0993ZM57.7151 25.4138C59.7436 24.2337 62.2502 24.2337 64.2787 25.4138L89.7056 40.1246C91.7342 41.3048 92.9933 43.4664 92.9933 45.8267V75.26C92.9933 77.6086 91.7458 79.7819 89.7056 80.962L64.2787 95.6728C62.2502 96.853 59.7436 96.853 57.7151 95.6728L32.2881 80.962C30.2596 79.7819 29.0005 77.6203 29.0005 75.26V45.8267C29.0005 43.4781 30.2479 41.3048 32.2881 40.1246L57.7151 25.4138ZM60.5947 53.0127C60.0817 52.7206 59.4638 52.7206 58.9508 53.0127L53.4831 56.1792C52.9701 56.4713 52.667 57.0205 52.667 57.6047V63.9377C52.667 64.5219 52.9818 65.0711 53.4831 65.3632L58.9508 68.5297C59.4638 68.8218 60.0817 68.8218 60.5947 68.5297L66.0624 65.3632C66.5754 65.0711 66.8785 64.5219 66.8785 63.9377V57.6047C66.8785 57.0205 66.5638 56.4713 66.0624 56.1792L60.5947 53.0127ZM64.6984 59.1237L61.4108 65.7021L92.6086 83.8014L95.8962 77.223L64.6984 59.1237Z"/><defs><linearGradient id="paint0_linear_292_106" x1="86.305" x2="41.904" y1="14.271" y2="99.571" gradientUnits="userSpaceOnUse"><stop stop-color="#2FABFF"/><stop offset=".31" stop-color="#5570FF"/><stop offset=".62" stop-color="#7B36FF"/><stop offset=".81" stop-color="#6A2CDC"/><stop offset="1" stop-color="#5921B8"/></linearGradient></defs></svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 2.3 MiB

After

Width:  |  Height:  |  Size: 2.3 MiB

+1 -8
View File
@@ -1,8 +1 @@
<svg width="25" height="25" viewBox="0 0 25 25" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="25" height="25"/>
<path d="M5.50694 21.1637C5.17323 21.1637 4.89218 21.1064 4.66378 20.9926C4.436 20.8787 4.26333 20.7052 4.1476 20.4763C4.03187 20.2473 3.97247 19.9672 3.97247 19.6382V16.2463C3.97247 15.8281 3.88859 15.5239 3.72265 15.3341C3.55549 15.1449 3.25912 15.0449 2.83418 15.0353C2.70191 15.0353 2.59598 14.9859 2.51577 14.8853C2.43433 14.7859 2.39453 14.6708 2.39453 14.5425C2.39453 14.4033 2.43433 14.2882 2.51577 14.1984C2.5966 14.1087 2.70375 14.0593 2.83418 14.0496C3.25912 14.0394 3.55549 13.94 3.72265 13.7508C3.88981 13.5616 3.97247 13.2622 3.97247 12.8537V9.46177C3.97247 8.96352 4.10474 8.58456 4.36742 8.3261C4.6301 8.06763 5.01035 7.9375 5.50694 7.9375H9.55926C9.71173 7.9375 9.83725 7.98269 9.9389 8.07185C10.0399 8.16162 10.0914 8.27669 10.0914 8.41466C10.0914 8.5448 10.0485 8.65626 9.96278 8.75145C9.87706 8.84664 9.76316 8.89423 9.62049 8.89423H5.8578C5.6441 8.89423 5.48245 8.94906 5.37162 9.05871C5.26018 9.16836 5.20446 9.33766 5.20446 9.5678V12.9754C5.20446 13.2742 5.14323 13.5454 5.02199 13.7894C4.90075 14.034 4.73848 14.2256 4.53581 14.3659C4.33313 14.5051 4.09616 14.575 3.82246 14.575V14.5147C4.09616 14.5147 4.33313 14.5846 4.53581 14.7238C4.73848 14.863 4.90075 15.0552 5.02199 15.3004C5.14323 15.5444 5.20446 15.8155 5.20446 16.1143V19.537C5.20446 19.7671 5.26018 19.9358 5.37162 20.0461C5.48306 20.1569 5.64533 20.2106 5.8578 20.2106H9.62049C9.76194 20.2106 9.87583 20.2582 9.96278 20.3527C10.0497 20.4479 10.0914 20.56 10.0914 20.6895C10.0914 20.8191 10.0412 20.9299 9.9389 21.0251C9.83725 21.1203 9.71112 21.1673 9.55926 21.1673H5.50694V21.1643V21.1637Z" fill="#F8F7F7" stroke="#F8F7F7" stroke-width="0.259057" stroke-miterlimit="10"/>
<path d="M15.4423 21.1634C15.2898 21.1634 15.1643 21.1158 15.0626 21.0212C14.961 20.926 14.9102 20.8139 14.9102 20.6856C14.9102 20.5573 14.953 20.444 15.0387 20.3488C15.1245 20.2536 15.2384 20.2067 15.381 20.2067H19.1437C19.3574 20.2067 19.5191 20.153 19.6299 20.0422C19.7413 19.9325 19.7971 19.7632 19.7971 19.5331V16.1104C19.7971 15.8116 19.8583 15.5405 19.9795 15.2965C20.1008 15.0519 20.263 14.8603 20.4657 14.7199C20.6684 14.5807 20.9054 14.5108 21.1791 14.5108V14.5711C20.9054 14.5711 20.6684 14.5012 20.4657 14.362C20.263 14.2229 20.1008 14.0307 19.9795 13.7855C19.8583 13.5415 19.7971 13.2703 19.7971 12.9715V9.5639C19.7971 9.33496 19.7413 9.16566 19.6299 9.0548C19.5185 8.94515 19.3562 8.89033 19.1437 8.89033H15.381C15.2396 8.89033 15.1257 8.84273 15.0387 8.74754C14.953 8.65355 14.9102 8.54089 14.9102 8.41076C14.9102 8.27158 14.9604 8.15771 15.0626 8.06795C15.1637 7.97818 15.2898 7.93359 15.4423 7.93359H19.4946C19.9912 7.93359 20.3702 8.06373 20.6341 8.32219C20.898 8.58065 21.029 8.95961 21.029 9.45786V12.8498C21.029 13.2583 21.1129 13.5583 21.2789 13.7469C21.446 13.9361 21.7424 14.0361 22.1673 14.0457C22.2996 14.0554 22.4055 14.1048 22.4858 14.1945C22.5672 14.2843 22.607 14.3994 22.607 14.5385C22.607 14.6687 22.5672 14.7826 22.4858 14.8814C22.4055 14.9808 22.2978 15.0314 22.1673 15.0314C21.7424 15.041 21.4466 15.141 21.2789 15.3302C21.1117 15.5194 21.029 15.823 21.029 16.2424V19.6343C21.029 19.9639 20.9709 20.2422 20.8539 20.4723C20.737 20.7025 20.5655 20.8736 20.3377 20.9887C20.1093 21.1025 19.8283 21.1598 19.4946 21.1598H15.4423V21.1628V21.1634Z" fill="#F8F7F7" stroke="#F8F7F7" stroke-width="0.259057" stroke-miterlimit="10"/>
<path d="M16.4845 15.8401C17.2224 15.8401 17.8206 15.2515 17.8206 14.5255C17.8206 13.7996 17.2224 13.2109 16.4845 13.2109C15.7467 13.2109 15.1484 13.7996 15.1484 14.5255C15.1484 15.2515 15.7467 15.8401 16.4845 15.8401Z" fill="#F8F7F7" stroke="#F8F7F7" stroke-width="0.259057" stroke-miterlimit="10"/>
<path d="M9.00014 15.8401C9.73798 15.8401 10.3362 15.2515 10.3362 14.5255C10.3362 13.7996 9.73798 13.2109 9.00014 13.2109C8.2623 13.2109 7.66406 13.7996 7.66406 14.5255C7.66406 15.2515 8.2623 15.8401 9.00014 15.8401Z" fill="#F8F7F7" stroke="#F8F7F7" stroke-width="0.259057" stroke-miterlimit="10"/>
<path d="M12.0442 4.13327L11.942 6.81971C11.942 6.97033 11.7974 7.04564 11.5084 7.04564C11.2194 7.04564 11.0749 6.97033 11.0749 6.81971C11.0492 6.15036 11.0284 5.63103 11.0112 5.26291C11.0027 4.88637 10.9941 4.61826 10.9855 4.45921C10.9769 4.30016 10.9727 4.20376 10.9727 4.17062V4.12062C10.9727 3.92843 11.1515 3.83203 11.5084 3.83203C11.8654 3.83203 12.0442 3.93264 12.0442 4.13327ZM14.213 4.13327L14.1108 6.81971C14.1108 6.97033 13.9663 7.04564 13.6773 7.04564C13.3883 7.04564 13.2437 6.97033 13.2437 6.81971C13.218 6.15036 13.1972 5.63103 13.1801 5.26291C13.1715 4.88637 13.1629 4.61826 13.1543 4.45921C13.1458 4.30016 13.1415 4.20376 13.1415 4.17062V4.12062C13.1415 3.92843 13.3203 3.83203 13.6773 3.83203C14.0342 3.83203 14.213 3.93264 14.213 4.13327Z" fill="#F8F7F7" stroke="#F8F7F7" stroke-width="0.259057" stroke-miterlimit="10"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="25" height="25" fill="none" viewBox="0 0 25 25"><rect width="25" height="25"/><path fill="#F8F7F7" stroke="#F8F7F7" stroke-miterlimit="10" stroke-width=".259" d="M5.50694 21.1637C5.17323 21.1637 4.89218 21.1064 4.66378 20.9926C4.436 20.8787 4.26333 20.7052 4.1476 20.4763C4.03187 20.2473 3.97247 19.9672 3.97247 19.6382V16.2463C3.97247 15.8281 3.88859 15.5239 3.72265 15.3341C3.55549 15.1449 3.25912 15.0449 2.83418 15.0353C2.70191 15.0353 2.59598 14.9859 2.51577 14.8853C2.43433 14.7859 2.39453 14.6708 2.39453 14.5425C2.39453 14.4033 2.43433 14.2882 2.51577 14.1984C2.5966 14.1087 2.70375 14.0593 2.83418 14.0496C3.25912 14.0394 3.55549 13.94 3.72265 13.7508C3.88981 13.5616 3.97247 13.2622 3.97247 12.8537V9.46177C3.97247 8.96352 4.10474 8.58456 4.36742 8.3261C4.6301 8.06763 5.01035 7.9375 5.50694 7.9375H9.55926C9.71173 7.9375 9.83725 7.98269 9.9389 8.07185C10.0399 8.16162 10.0914 8.27669 10.0914 8.41466C10.0914 8.5448 10.0485 8.65626 9.96278 8.75145C9.87706 8.84664 9.76316 8.89423 9.62049 8.89423H5.8578C5.6441 8.89423 5.48245 8.94906 5.37162 9.05871C5.26018 9.16836 5.20446 9.33766 5.20446 9.5678V12.9754C5.20446 13.2742 5.14323 13.5454 5.02199 13.7894C4.90075 14.034 4.73848 14.2256 4.53581 14.3659C4.33313 14.5051 4.09616 14.575 3.82246 14.575V14.5147C4.09616 14.5147 4.33313 14.5846 4.53581 14.7238C4.73848 14.863 4.90075 15.0552 5.02199 15.3004C5.14323 15.5444 5.20446 15.8155 5.20446 16.1143V19.537C5.20446 19.7671 5.26018 19.9358 5.37162 20.0461C5.48306 20.1569 5.64533 20.2106 5.8578 20.2106H9.62049C9.76194 20.2106 9.87583 20.2582 9.96278 20.3527C10.0497 20.4479 10.0914 20.56 10.0914 20.6895C10.0914 20.8191 10.0412 20.9299 9.9389 21.0251C9.83725 21.1203 9.71112 21.1673 9.55926 21.1673H5.50694V21.1643V21.1637Z"/><path fill="#F8F7F7" stroke="#F8F7F7" stroke-miterlimit="10" stroke-width=".259" d="M15.4423 21.1634C15.2898 21.1634 15.1643 21.1158 15.0626 21.0212C14.961 20.926 14.9102 20.8139 14.9102 20.6856C14.9102 20.5573 14.953 20.444 15.0387 20.3488C15.1245 20.2536 15.2384 20.2067 15.381 20.2067H19.1437C19.3574 20.2067 19.5191 20.153 19.6299 20.0422C19.7413 19.9325 19.7971 19.7632 19.7971 19.5331V16.1104C19.7971 15.8116 19.8583 15.5405 19.9795 15.2965C20.1008 15.0519 20.263 14.8603 20.4657 14.7199C20.6684 14.5807 20.9054 14.5108 21.1791 14.5108V14.5711C20.9054 14.5711 20.6684 14.5012 20.4657 14.362C20.263 14.2229 20.1008 14.0307 19.9795 13.7855C19.8583 13.5415 19.7971 13.2703 19.7971 12.9715V9.5639C19.7971 9.33496 19.7413 9.16566 19.6299 9.0548C19.5185 8.94515 19.3562 8.89033 19.1437 8.89033H15.381C15.2396 8.89033 15.1257 8.84273 15.0387 8.74754C14.953 8.65355 14.9102 8.54089 14.9102 8.41076C14.9102 8.27158 14.9604 8.15771 15.0626 8.06795C15.1637 7.97818 15.2898 7.93359 15.4423 7.93359H19.4946C19.9912 7.93359 20.3702 8.06373 20.6341 8.32219C20.898 8.58065 21.029 8.95961 21.029 9.45786V12.8498C21.029 13.2583 21.1129 13.5583 21.2789 13.7469C21.446 13.9361 21.7424 14.0361 22.1673 14.0457C22.2996 14.0554 22.4055 14.1048 22.4858 14.1945C22.5672 14.2843 22.607 14.3994 22.607 14.5385C22.607 14.6687 22.5672 14.7826 22.4858 14.8814C22.4055 14.9808 22.2978 15.0314 22.1673 15.0314C21.7424 15.041 21.4466 15.141 21.2789 15.3302C21.1117 15.5194 21.029 15.823 21.029 16.2424V19.6343C21.029 19.9639 20.9709 20.2422 20.8539 20.4723C20.737 20.7025 20.5655 20.8736 20.3377 20.9887C20.1093 21.1025 19.8283 21.1598 19.4946 21.1598H15.4423V21.1628V21.1634Z"/><path fill="#F8F7F7" stroke="#F8F7F7" stroke-miterlimit="10" stroke-width=".259" d="M16.4845 15.8401C17.2224 15.8401 17.8206 15.2515 17.8206 14.5255C17.8206 13.7996 17.2224 13.2109 16.4845 13.2109C15.7467 13.2109 15.1484 13.7996 15.1484 14.5255C15.1484 15.2515 15.7467 15.8401 16.4845 15.8401Z"/><path fill="#F8F7F7" stroke="#F8F7F7" stroke-miterlimit="10" stroke-width=".259" d="M9.00014 15.8401C9.73798 15.8401 10.3362 15.2515 10.3362 14.5255C10.3362 13.7996 9.73798 13.2109 9.00014 13.2109C8.2623 13.2109 7.66406 13.7996 7.66406 14.5255C7.66406 15.2515 8.2623 15.8401 9.00014 15.8401Z"/><path fill="#F8F7F7" stroke="#F8F7F7" stroke-miterlimit="10" stroke-width=".259" d="M12.0442 4.13327L11.942 6.81971C11.942 6.97033 11.7974 7.04564 11.5084 7.04564C11.2194 7.04564 11.0749 6.97033 11.0749 6.81971C11.0492 6.15036 11.0284 5.63103 11.0112 5.26291C11.0027 4.88637 10.9941 4.61826 10.9855 4.45921C10.9769 4.30016 10.9727 4.20376 10.9727 4.17062V4.12062C10.9727 3.92843 11.1515 3.83203 11.5084 3.83203C11.8654 3.83203 12.0442 3.93264 12.0442 4.13327ZM14.213 4.13327L14.1108 6.81971C14.1108 6.97033 13.9663 7.04564 13.6773 7.04564C13.3883 7.04564 13.2437 6.97033 13.2437 6.81971C13.218 6.15036 13.1972 5.63103 13.1801 5.26291C13.1715 4.88637 13.1629 4.61826 13.1543 4.45921C13.1458 4.30016 13.1415 4.20376 13.1415 4.17062V4.12062C13.1415 3.92843 13.3203 3.83203 13.6773 3.83203C14.0342 3.83203 14.213 3.93264 14.213 4.13327Z"/></svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

+1 -4
View File
@@ -1,4 +1 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="512pt" height="512pt" version="1.1" viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg">
<path d="m500.48 262.2-48.18 73.984c-0.73438 1.1367-2 1.8242-3.3555 1.8242-1.3516 0-2.6172-0.6875-3.3516-1.8242l-48.129-73.984c-0.78125-1.2227-0.83594-2.7773-0.14453-4.0547 0.69141-1.2734 2.0195-2.0742 3.4727-2.0898h24.781c-0.007813-29.523-7.7188-58.531-22.375-84.156-14.652-25.629-35.742-46.988-61.184-61.969-2.3711-1.3633-3.8633-3.8594-3.9453-6.5938-0.085937-2.7305 1.2539-5.3125 3.5352-6.8203l27.035-17.613c3.4766-2.3633 8.043-2.3633 11.52 0 28.473 19.934 51.723 46.441 67.773 77.27 16.051 30.828 24.434 65.074 24.438 99.832h24.781c1.4688 0 2.8203 0.80859 3.5156 2.1055 0.69531 1.293 0.62109 2.8633-0.1875 4.0898zm-85.043 79.359c-1.5078-2.2812-4.0898-3.6211-6.8203-3.5391-2.7344 0.085937-5.2305 1.5781-6.5938 3.9492-14.965 25.434-36.305 46.523-61.914 61.188-25.609 14.664-54.602 22.391-84.109 22.422v-24.781c-0.011719-1.4531-0.8125-2.7812-2.0898-3.4727-1.2773-0.69141-2.832-0.63672-4.0547 0.14453l-74.035 47.977c-1.1367 0.73438-1.8242 1.9961-1.8242 3.3516s0.6875 2.6172 1.8242 3.3555l73.984 48.18c1.2227 0.78125 2.7773 0.83594 4.0547 0.14453 1.2734-0.69141 2.0742-2.0234 2.0898-3.4727v-24.68c34.734-0.015624 68.957-8.3984 99.766-24.441 30.812-16.039 57.301-39.27 77.23-67.719 2.3672-3.4766 2.3672-8.043 0-11.52zm-245.45 60.52c-25.434-14.977-46.516-36.328-61.172-61.945-14.652-25.617-22.371-54.617-22.387-84.129h24.781c1.4531-0.011719 2.7812-0.8125 3.4727-2.0898 0.69141-1.2773 0.63672-2.832-0.14453-4.0547l-47.977-74.035c-0.73438-1.1367-1.9961-1.8242-3.3516-1.8242s-2.6172 0.6875-3.3555 1.8242l-48.332 73.984c-0.80859 1.2266-0.88281 2.7969-0.1875 4.0898 0.69531 1.2969 2.0469 2.1055 3.5156 2.1055h24.781c0.015625 34.734 8.3984 68.957 24.438 99.766 16.043 30.812 39.273 57.301 67.723 77.234 3.4766 2.3633 8.043 2.3633 11.52 0l27.086-17.664c2.2109-1.5195 3.4961-4.0625 3.4141-6.7422-0.082032-2.6836-1.5234-5.1406-3.8242-6.5195zm92.16-390.5c-1.2227-0.78125-2.7773-0.83594-4.0547-0.14453-1.2773 0.69141-2.0781 2.0195-2.0898 3.4727v24.73c-34.734 0.015625-68.957 8.3984-99.766 24.438-30.812 16.043-57.301 39.273-77.234 67.723-2.3633 3.4766-2.3633 8.043 0 11.52l17.664 27.086c1.5078 2.2812 4.0898 3.6211 6.8242 3.5352 2.7305-0.082032 5.2266-1.5742 6.5898-3.9453 14.965-25.41 36.289-46.48 61.879-61.133 25.59-14.652 54.555-22.383 84.043-22.426v24.781c0.011719 1.4531 0.8125 2.7812 2.0898 3.4727 1.2773 0.69141 2.832 0.63672 4.0547-0.14453l74.035-47.977c1.1367-0.73438 1.8242-1.9961 1.8242-3.3516s-0.6875-2.6172-1.8242-3.3555zm-6.1445 210.23c-9.0703 0-17.77 3.6055-24.184 10.02-6.4141 6.4141-10.02 15.113-10.02 24.184s3.6055 17.77 10.02 24.184c6.4141 6.4141 15.113 10.02 24.184 10.02s17.77-3.6055 24.184-10.02c6.4141-6.4141 10.02-15.113 10.02-24.184s-3.6055-17.77-10.02-24.184c-6.4141-6.4141-15.113-10.02-24.184-10.02zm90.727-26.828-10.344 14.953c4.0039 6.9414 7.0859 14.375 9.1641 22.117l17.973 2.9688c6.543 1.1445 11.316 6.8242 11.316 13.465v15.055c0 6.6406-4.7734 12.32-11.316 13.465l-17.766 3.125v-0.003907c-2.1562 7.6992-5.3086 15.082-9.3711 21.965l10.238 14.797h0.003906c3.8047 5.4375 3.1562 12.82-1.5352 17.512l-10.648 10.648h-0.003906c-4.6914 4.6953-12.074 5.3438-17.508 1.5391l-14.797-10.238v-0.003907c-6.9453 4.0039-14.379 7.0859-22.121 9.1641l-3.0195 18.023c-1.1445 6.543-6.8242 11.316-13.465 11.316h-15.055c-6.6406 0-12.32-4.7734-13.465-11.316l-3.125-17.766h0.003907c-7.7031-2.1758-15.086-5.3398-21.965-9.4219l-14.797 10.238v0.003907c-5.4375 3.8047-12.82 3.1562-17.512-1.5391l-10.648-10.648c-4.6953-4.6914-5.3438-12.074-1.5391-17.512l10.238-14.797h0.003907c-4.0039-6.9414-7.0859-14.375-9.1641-22.117l-18.023-2.9688c-6.543-1.1445-11.316-6.8242-11.316-13.465v-15.055c0-6.6406 4.7734-12.32 11.316-13.465l17.766-3.125v0.003907c2.1562-7.6992 5.3086-15.082 9.3711-21.965l-10.238-14.797h-0.003906c-3.8047-5.4375-3.1562-12.82 1.5352-17.512l10.648-10.648h0.003906c4.6914-4.6953 12.074-5.3438 17.508-1.5391l14.797 10.238v0.003907c6.9453-4.0039 14.379-7.0859 22.121-9.1641l3.0195-18.023c1.1445-6.543 6.8242-11.316 13.465-11.316h15.055c6.6406 0 12.32 4.7734 13.465 11.316l3.125 17.766h-0.003907c7.6992 2.1562 15.082 5.3086 21.965 9.3711l14.797-10.238v-0.003906c5.4375-3.8047 12.82-3.1562 17.512 1.5352l10.648 10.648v0.003906c4.6875 4.6367 5.3984 11.957 1.6914 17.406zm-36.047 61.031c0-14.504-5.7578-28.41-16.016-38.664-10.254-10.258-24.16-16.016-38.664-16.016s-28.41 5.7578-38.664 16.016c-10.258 10.254-16.016 24.16-16.016 38.664s5.7578 28.41 16.016 38.664c10.254 10.258 24.16 16.016 38.664 16.016 14.5-0.011719 28.398-5.7773 38.652-16.027 10.25-10.254 16.016-24.152 16.027-38.652z" fill="#fff"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="512pt" height="512pt" version="1.1" viewBox="0 0 512 512"><path fill="#fff" d="m500.48 262.2-48.18 73.984c-0.73438 1.1367-2 1.8242-3.3555 1.8242-1.3516 0-2.6172-0.6875-3.3516-1.8242l-48.129-73.984c-0.78125-1.2227-0.83594-2.7773-0.14453-4.0547 0.69141-1.2734 2.0195-2.0742 3.4727-2.0898h24.781c-0.007813-29.523-7.7188-58.531-22.375-84.156-14.652-25.629-35.742-46.988-61.184-61.969-2.3711-1.3633-3.8633-3.8594-3.9453-6.5938-0.085937-2.7305 1.2539-5.3125 3.5352-6.8203l27.035-17.613c3.4766-2.3633 8.043-2.3633 11.52 0 28.473 19.934 51.723 46.441 67.773 77.27 16.051 30.828 24.434 65.074 24.438 99.832h24.781c1.4688 0 2.8203 0.80859 3.5156 2.1055 0.69531 1.293 0.62109 2.8633-0.1875 4.0898zm-85.043 79.359c-1.5078-2.2812-4.0898-3.6211-6.8203-3.5391-2.7344 0.085937-5.2305 1.5781-6.5938 3.9492-14.965 25.434-36.305 46.523-61.914 61.188-25.609 14.664-54.602 22.391-84.109 22.422v-24.781c-0.011719-1.4531-0.8125-2.7812-2.0898-3.4727-1.2773-0.69141-2.832-0.63672-4.0547 0.14453l-74.035 47.977c-1.1367 0.73438-1.8242 1.9961-1.8242 3.3516s0.6875 2.6172 1.8242 3.3555l73.984 48.18c1.2227 0.78125 2.7773 0.83594 4.0547 0.14453 1.2734-0.69141 2.0742-2.0234 2.0898-3.4727v-24.68c34.734-0.015624 68.957-8.3984 99.766-24.441 30.812-16.039 57.301-39.27 77.23-67.719 2.3672-3.4766 2.3672-8.043 0-11.52zm-245.45 60.52c-25.434-14.977-46.516-36.328-61.172-61.945-14.652-25.617-22.371-54.617-22.387-84.129h24.781c1.4531-0.011719 2.7812-0.8125 3.4727-2.0898 0.69141-1.2773 0.63672-2.832-0.14453-4.0547l-47.977-74.035c-0.73438-1.1367-1.9961-1.8242-3.3516-1.8242s-2.6172 0.6875-3.3555 1.8242l-48.332 73.984c-0.80859 1.2266-0.88281 2.7969-0.1875 4.0898 0.69531 1.2969 2.0469 2.1055 3.5156 2.1055h24.781c0.015625 34.734 8.3984 68.957 24.438 99.766 16.043 30.812 39.273 57.301 67.723 77.234 3.4766 2.3633 8.043 2.3633 11.52 0l27.086-17.664c2.2109-1.5195 3.4961-4.0625 3.4141-6.7422-0.082032-2.6836-1.5234-5.1406-3.8242-6.5195zm92.16-390.5c-1.2227-0.78125-2.7773-0.83594-4.0547-0.14453-1.2773 0.69141-2.0781 2.0195-2.0898 3.4727v24.73c-34.734 0.015625-68.957 8.3984-99.766 24.438-30.812 16.043-57.301 39.273-77.234 67.723-2.3633 3.4766-2.3633 8.043 0 11.52l17.664 27.086c1.5078 2.2812 4.0898 3.6211 6.8242 3.5352 2.7305-0.082032 5.2266-1.5742 6.5898-3.9453 14.965-25.41 36.289-46.48 61.879-61.133 25.59-14.652 54.555-22.383 84.043-22.426v24.781c0.011719 1.4531 0.8125 2.7812 2.0898 3.4727 1.2773 0.69141 2.832 0.63672 4.0547-0.14453l74.035-47.977c1.1367-0.73438 1.8242-1.9961 1.8242-3.3516s-0.6875-2.6172-1.8242-3.3555zm-6.1445 210.23c-9.0703 0-17.77 3.6055-24.184 10.02-6.4141 6.4141-10.02 15.113-10.02 24.184s3.6055 17.77 10.02 24.184c6.4141 6.4141 15.113 10.02 24.184 10.02s17.77-3.6055 24.184-10.02c6.4141-6.4141 10.02-15.113 10.02-24.184s-3.6055-17.77-10.02-24.184c-6.4141-6.4141-15.113-10.02-24.184-10.02zm90.727-26.828-10.344 14.953c4.0039 6.9414 7.0859 14.375 9.1641 22.117l17.973 2.9688c6.543 1.1445 11.316 6.8242 11.316 13.465v15.055c0 6.6406-4.7734 12.32-11.316 13.465l-17.766 3.125v-0.003907c-2.1562 7.6992-5.3086 15.082-9.3711 21.965l10.238 14.797h0.003906c3.8047 5.4375 3.1562 12.82-1.5352 17.512l-10.648 10.648h-0.003906c-4.6914 4.6953-12.074 5.3438-17.508 1.5391l-14.797-10.238v-0.003907c-6.9453 4.0039-14.379 7.0859-22.121 9.1641l-3.0195 18.023c-1.1445 6.543-6.8242 11.316-13.465 11.316h-15.055c-6.6406 0-12.32-4.7734-13.465-11.316l-3.125-17.766h0.003907c-7.7031-2.1758-15.086-5.3398-21.965-9.4219l-14.797 10.238v0.003907c-5.4375 3.8047-12.82 3.1562-17.512-1.5391l-10.648-10.648c-4.6953-4.6914-5.3438-12.074-1.5391-17.512l10.238-14.797h0.003907c-4.0039-6.9414-7.0859-14.375-9.1641-22.117l-18.023-2.9688c-6.543-1.1445-11.316-6.8242-11.316-13.465v-15.055c0-6.6406 4.7734-12.32 11.316-13.465l17.766-3.125v0.003907c2.1562-7.6992 5.3086-15.082 9.3711-21.965l-10.238-14.797h-0.003906c-3.8047-5.4375-3.1562-12.82 1.5352-17.512l10.648-10.648h0.003906c4.6914-4.6953 12.074-5.3438 17.508-1.5391l14.797 10.238v0.003907c6.9453-4.0039 14.379-7.0859 22.121-9.1641l3.0195-18.023c1.1445-6.543 6.8242-11.316 13.465-11.316h15.055c6.6406 0 12.32 4.7734 13.465 11.316l3.125 17.766h-0.003907c7.6992 2.1562 15.082 5.3086 21.965 9.3711l14.797-10.238v-0.003906c5.4375-3.8047 12.82-3.1562 17.512 1.5352l10.648 10.648v0.003906c4.6875 4.6367 5.3984 11.957 1.6914 17.406zm-36.047 61.031c0-14.504-5.7578-28.41-16.016-38.664-10.254-10.258-24.16-16.016-38.664-16.016s-28.41 5.7578-38.664 16.016c-10.258 10.254-16.016 24.16-16.016 38.664s5.7578 28.41 16.016 38.664c10.254 10.258 24.16 16.016 38.664 16.016 14.5-0.011719 28.398-5.7773 38.652-16.027 10.25-10.254 16.016-24.152 16.027-38.652z"/></svg>

Before

Width:  |  Height:  |  Size: 4.5 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

+1 -13
View File
@@ -1,13 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 0 304 182" style="enable-background:new 0 0 304 182;" xml:space="preserve">
<style type="text/css">
.st0{fill:#fff;}
.st1{fill-rule:evenodd;clip-rule:evenodd;fill:#FF9900;}
</style>
<g>
<path class="st0" d="M86.4,66.4c0,3.7,0.4,6.7,1.1,8.9c0.8,2.2,1.8,4.6,3.2,7.2c0.5,0.8,0.7,1.6,0.7,2.3c0,1-0.6,2-1.9,3l-6.3,4.2 c-0.9,0.6-1.8,0.9-2.6,0.9c-1,0-2-0.5-3-1.4C76.2,90,75,88.4,74,86.8c-1-1.7-2-3.6-3.1-5.9c-7.8,9.2-17.6,13.8-29.4,13.8 c-8.4,0-15.1-2.4-20-7.2c-4.9-4.8-7.4-11.2-7.4-19.2c0-8.5,3-15.4,9.1-20.6c6.1-5.2,14.2-7.8,24.5-7.8c3.4,0,6.9,0.3,10.6,0.8 c3.7,0.5,7.5,1.3,11.5,2.2v-7.3c0-7.6-1.6-12.9-4.7-16c-3.2-3.1-8.6-4.6-16.3-4.6c-3.5,0-7.1,0.4-10.8,1.3c-3.7,0.9-7.3,2-10.8,3.4 c-1.6,0.7-2.8,1.1-3.5,1.3c-0.7,0.2-1.2,0.3-1.6,0.3c-1.4,0-2.1-1-2.1-3.1v-4.9c0-1.6,0.2-2.8,0.7-3.5c0.5-0.7,1.4-1.4,2.8-2.1 c3.5-1.8,7.7-3.3,12.6-4.5c4.9-1.3,10.1-1.9,15.6-1.9c11.9,0,20.6,2.7,26.2,8.1c5.5,5.4,8.3,13.6,8.3,24.6V66.4z M45.8,81.6 c3.3,0,6.7-0.6,10.3-1.8c3.6-1.2,6.8-3.4,9.5-6.4c1.6-1.9,2.8-4,3.4-6.4c0.6-2.4,1-5.3,1-8.7v-4.2c-2.9-0.7-6-1.3-9.2-1.7 c-3.2-0.4-6.3-0.6-9.4-0.6c-6.7,0-11.6,1.3-14.9,4c-3.3,2.7-4.9,6.5-4.9,11.5c0,4.7,1.2,8.2,3.7,10.6 C37.7,80.4,41.2,81.6,45.8,81.6z M126.1,92.4c-1.8,0-3-0.3-3.8-1c-0.8-0.6-1.5-2-2.1-3.9L96.7,10.2c-0.6-2-0.9-3.3-0.9-4 c0-1.6,0.8-2.5,2.4-2.5h9.8c1.9,0,3.2,0.3,3.9,1c0.8,0.6,1.4,2,2,3.9l16.8,66.2l15.6-66.2c0.5-2,1.1-3.3,1.9-3.9c0.8-0.6,2.2-1,4-1 h8c1.9,0,3.2,0.3,4,1c0.8,0.6,1.5,2,1.9,3.9l15.8,67l17.3-67c0.6-2,1.3-3.3,2-3.9c0.8-0.6,2.1-1,3.9-1h9.3c1.6,0,2.5,0.8,2.5,2.5 c0,0.5-0.1,1-0.2,1.6c-0.1,0.6-0.3,1.4-0.7,2.5l-24.1,77.3c-0.6,2-1.3,3.3-2.1,3.9c-0.8,0.6-2.1,1-3.8,1h-8.6c-1.9,0-3.2-0.3-4-1 c-0.8-0.7-1.5-2-1.9-4L156,23l-15.4,64.4c-0.5,2-1.1,3.3-1.9,4c-0.8,0.7-2.2,1-4,1H126.1z M254.6,95.1c-5.2,0-10.4-0.6-15.4-1.8 c-5-1.2-8.9-2.5-11.5-4c-1.6-0.9-2.7-1.9-3.1-2.8c-0.4-0.9-0.6-1.9-0.6-2.8v-5.1c0-2.1,0.8-3.1,2.3-3.1c0.6,0,1.2,0.1,1.8,0.3 c0.6,0.2,1.5,0.6,2.5,1c3.4,1.5,7.1,2.7,11,3.5c4,0.8,7.9,1.2,11.9,1.2c6.3,0,11.2-1.1,14.6-3.3c3.4-2.2,5.2-5.4,5.2-9.5 c0-2.8-0.9-5.1-2.7-7c-1.8-1.9-5.2-3.6-10.1-5.2L246,52c-7.3-2.3-12.7-5.7-16-10.2c-3.3-4.4-5-9.3-5-14.5c0-4.2,0.9-7.9,2.7-11.1 c1.8-3.2,4.2-6,7.2-8.2c3-2.3,6.4-4,10.4-5.2c4-1.2,8.2-1.7,12.6-1.7c2.2,0,4.5,0.1,6.7,0.4c2.3,0.3,4.4,0.7,6.5,1.1 c2,0.5,3.9,1,5.7,1.6c1.8,0.6,3.2,1.2,4.2,1.8c1.4,0.8,2.4,1.6,3,2.5c0.6,0.8,0.9,1.9,0.9,3.3v4.7c0,2.1-0.8,3.2-2.3,3.2 c-0.8,0-2.1-0.4-3.8-1.2c-5.7-2.6-12.1-3.9-19.2-3.9c-5.7,0-10.2,0.9-13.3,2.8c-3.1,1.9-4.7,4.8-4.7,8.9c0,2.8,1,5.2,3,7.1 c2,1.9,5.7,3.8,11,5.5l14.2,4.5c7.2,2.3,12.4,5.5,15.5,9.6c3.1,4.1,4.6,8.8,4.6,14c0,4.3-0.9,8.2-2.6,11.6 c-1.8,3.4-4.2,6.4-7.3,8.8c-3.1,2.5-6.8,4.3-11.1,5.6C264.4,94.4,259.7,95.1,254.6,95.1z"/>
<g>
<path class="st1" d="M273.5,143.7c-32.9,24.3-80.7,37.2-121.8,37.2c-57.6,0-109.5-21.3-148.7-56.7c-3.1-2.8-0.3-6.6,3.4-4.4 c42.4,24.6,94.7,39.5,148.8,39.5c36.5,0,76.6-7.6,113.5-23.2C274.2,133.6,278.9,139.7,273.5,143.7z"/>
<path class="st1" d="M287.2,128.1c-4.2-5.4-27.8-2.6-38.5-1.3c-3.2,0.4-3.7-2.4-0.8-4.5c18.8-13.2,49.7-9.4,53.3-5 c3.6,4.5-1,35.4-18.6,50.2c-2.7,2.3-5.3,1.1-4.1-1.9C282.5,155.7,291.4,133.4,287.2,128.1z"/>
</g>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="Layer_1" x="0" y="0" version="1.1" viewBox="0 0 304 182" xml:space="preserve" style="enable-background:new 0 0 304 182"><style type="text/css">.st0{fill:#fff}.st1{fill-rule:evenodd;clip-rule:evenodd;fill:#f90}</style><g><path d="M86.4,66.4c0,3.7,0.4,6.7,1.1,8.9c0.8,2.2,1.8,4.6,3.2,7.2c0.5,0.8,0.7,1.6,0.7,2.3c0,1-0.6,2-1.9,3l-6.3,4.2 c-0.9,0.6-1.8,0.9-2.6,0.9c-1,0-2-0.5-3-1.4C76.2,90,75,88.4,74,86.8c-1-1.7-2-3.6-3.1-5.9c-7.8,9.2-17.6,13.8-29.4,13.8 c-8.4,0-15.1-2.4-20-7.2c-4.9-4.8-7.4-11.2-7.4-19.2c0-8.5,3-15.4,9.1-20.6c6.1-5.2,14.2-7.8,24.5-7.8c3.4,0,6.9,0.3,10.6,0.8 c3.7,0.5,7.5,1.3,11.5,2.2v-7.3c0-7.6-1.6-12.9-4.7-16c-3.2-3.1-8.6-4.6-16.3-4.6c-3.5,0-7.1,0.4-10.8,1.3c-3.7,0.9-7.3,2-10.8,3.4 c-1.6,0.7-2.8,1.1-3.5,1.3c-0.7,0.2-1.2,0.3-1.6,0.3c-1.4,0-2.1-1-2.1-3.1v-4.9c0-1.6,0.2-2.8,0.7-3.5c0.5-0.7,1.4-1.4,2.8-2.1 c3.5-1.8,7.7-3.3,12.6-4.5c4.9-1.3,10.1-1.9,15.6-1.9c11.9,0,20.6,2.7,26.2,8.1c5.5,5.4,8.3,13.6,8.3,24.6V66.4z M45.8,81.6 c3.3,0,6.7-0.6,10.3-1.8c3.6-1.2,6.8-3.4,9.5-6.4c1.6-1.9,2.8-4,3.4-6.4c0.6-2.4,1-5.3,1-8.7v-4.2c-2.9-0.7-6-1.3-9.2-1.7 c-3.2-0.4-6.3-0.6-9.4-0.6c-6.7,0-11.6,1.3-14.9,4c-3.3,2.7-4.9,6.5-4.9,11.5c0,4.7,1.2,8.2,3.7,10.6 C37.7,80.4,41.2,81.6,45.8,81.6z M126.1,92.4c-1.8,0-3-0.3-3.8-1c-0.8-0.6-1.5-2-2.1-3.9L96.7,10.2c-0.6-2-0.9-3.3-0.9-4 c0-1.6,0.8-2.5,2.4-2.5h9.8c1.9,0,3.2,0.3,3.9,1c0.8,0.6,1.4,2,2,3.9l16.8,66.2l15.6-66.2c0.5-2,1.1-3.3,1.9-3.9c0.8-0.6,2.2-1,4-1 h8c1.9,0,3.2,0.3,4,1c0.8,0.6,1.5,2,1.9,3.9l15.8,67l17.3-67c0.6-2,1.3-3.3,2-3.9c0.8-0.6,2.1-1,3.9-1h9.3c1.6,0,2.5,0.8,2.5,2.5 c0,0.5-0.1,1-0.2,1.6c-0.1,0.6-0.3,1.4-0.7,2.5l-24.1,77.3c-0.6,2-1.3,3.3-2.1,3.9c-0.8,0.6-2.1,1-3.8,1h-8.6c-1.9,0-3.2-0.3-4-1 c-0.8-0.7-1.5-2-1.9-4L156,23l-15.4,64.4c-0.5,2-1.1,3.3-1.9,4c-0.8,0.7-2.2,1-4,1H126.1z M254.6,95.1c-5.2,0-10.4-0.6-15.4-1.8 c-5-1.2-8.9-2.5-11.5-4c-1.6-0.9-2.7-1.9-3.1-2.8c-0.4-0.9-0.6-1.9-0.6-2.8v-5.1c0-2.1,0.8-3.1,2.3-3.1c0.6,0,1.2,0.1,1.8,0.3 c0.6,0.2,1.5,0.6,2.5,1c3.4,1.5,7.1,2.7,11,3.5c4,0.8,7.9,1.2,11.9,1.2c6.3,0,11.2-1.1,14.6-3.3c3.4-2.2,5.2-5.4,5.2-9.5 c0-2.8-0.9-5.1-2.7-7c-1.8-1.9-5.2-3.6-10.1-5.2L246,52c-7.3-2.3-12.7-5.7-16-10.2c-3.3-4.4-5-9.3-5-14.5c0-4.2,0.9-7.9,2.7-11.1 c1.8-3.2,4.2-6,7.2-8.2c3-2.3,6.4-4,10.4-5.2c4-1.2,8.2-1.7,12.6-1.7c2.2,0,4.5,0.1,6.7,0.4c2.3,0.3,4.4,0.7,6.5,1.1 c2,0.5,3.9,1,5.7,1.6c1.8,0.6,3.2,1.2,4.2,1.8c1.4,0.8,2.4,1.6,3,2.5c0.6,0.8,0.9,1.9,0.9,3.3v4.7c0,2.1-0.8,3.2-2.3,3.2 c-0.8,0-2.1-0.4-3.8-1.2c-5.7-2.6-12.1-3.9-19.2-3.9c-5.7,0-10.2,0.9-13.3,2.8c-3.1,1.9-4.7,4.8-4.7,8.9c0,2.8,1,5.2,3,7.1 c2,1.9,5.7,3.8,11,5.5l14.2,4.5c7.2,2.3,12.4,5.5,15.5,9.6c3.1,4.1,4.6,8.8,4.6,14c0,4.3-0.9,8.2-2.6,11.6 c-1.8,3.4-4.2,6.4-7.3,8.8c-3.1,2.5-6.8,4.3-11.1,5.6C264.4,94.4,259.7,95.1,254.6,95.1z" class="st0"/><g><path d="M273.5,143.7c-32.9,24.3-80.7,37.2-121.8,37.2c-57.6,0-109.5-21.3-148.7-56.7c-3.1-2.8-0.3-6.6,3.4-4.4 c42.4,24.6,94.7,39.5,148.8,39.5c36.5,0,76.6-7.6,113.5-23.2C274.2,133.6,278.9,139.7,273.5,143.7z" class="st1"/><path d="M287.2,128.1c-4.2-5.4-27.8-2.6-38.5-1.3c-3.2,0.4-3.7-2.4-0.8-4.5c18.8-13.2,49.7-9.4,53.3-5 c3.6,4.5-1,35.4-18.6,50.2c-2.7,2.3-5.3,1.1-4.1-1.9C282.5,155.7,291.4,133.4,287.2,128.1z" class="st1"/></g></g></svg>

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

+1 -23
View File
@@ -1,23 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="150" height="150" viewBox="0 0 96 96">
<defs>
<linearGradient id="e399c19f-b68f-429d-b176-18c2117ff73c" x1="-1032.172" x2="-1059.213" y1="145.312" y2="65.426" gradientTransform="matrix(1 0 0 -1 1075 158)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#114a8b"/>
<stop offset="1" stop-color="#0669bc"/>
</linearGradient>
<linearGradient id="ac2a6fc2-ca48-4327-9a3c-d4dcc3256e15" x1="-1023.725" x2="-1029.98" y1="108.083" y2="105.968" gradientTransform="matrix(1 0 0 -1 1075 158)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-opacity=".3"/>
<stop offset=".071" stop-opacity=".2"/>
<stop offset=".321" stop-opacity=".1"/>
<stop offset=".623" stop-opacity=".05"/>
<stop offset="1" stop-opacity="0"/>
</linearGradient>
<linearGradient id="a7fee970-a784-4bb1-af8d-63d18e5f7db9" x1="-1027.165" x2="-997.482" y1="147.642" y2="68.561" gradientTransform="matrix(1 0 0 -1 1075 158)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#3ccbf4"/>
<stop offset="1" stop-color="#2892df"/>
</linearGradient>
</defs>
<path fill="url(#e399c19f-b68f-429d-b176-18c2117ff73c)" d="M33.338 6.544h26.038l-27.03 80.087a4.152 4.152 0 0 1-3.933 2.824H8.149a4.145 4.145 0 0 1-3.928-5.47L29.404 9.368a4.152 4.152 0 0 1 3.934-2.825z"/>
<path fill="#0078d4" d="M71.175 60.261h-41.29a1.911 1.911 0 0 0-1.305 3.309l26.532 24.764a4.171 4.171 0 0 0 2.846 1.121h23.38z"/>
<path fill="url(#ac2a6fc2-ca48-4327-9a3c-d4dcc3256e15)" d="M33.338 6.544a4.118 4.118 0 0 0-3.943 2.879L4.252 83.917a4.14 4.14 0 0 0 3.908 5.538h20.787a4.443 4.443 0 0 0 3.41-2.9l5.014-14.777 17.91 16.705a4.237 4.237 0 0 0 2.666.972H81.24L71.024 60.261l-29.781.007L59.47 6.544z"/>
<path fill="url(#a7fee970-a784-4bb1-af8d-63d18e5f7db9)" d="M66.595 9.364a4.145 4.145 0 0 0-3.928-2.82H33.648a4.146 4.146 0 0 1 3.928 2.82l25.184 74.62a4.146 4.146 0 0 1-3.928 5.472h29.02a4.146 4.146 0 0 0 3.927-5.472z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="150" height="150" viewBox="0 0 96 96"><defs><linearGradient id="e399c19f-b68f-429d-b176-18c2117ff73c" x1="-1032.172" x2="-1059.213" y1="145.312" y2="65.426" gradientTransform="matrix(1 0 0 -1 1075 158)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#114a8b"/><stop offset="1" stop-color="#0669bc"/></linearGradient><linearGradient id="ac2a6fc2-ca48-4327-9a3c-d4dcc3256e15" x1="-1023.725" x2="-1029.98" y1="108.083" y2="105.968" gradientTransform="matrix(1 0 0 -1 1075 158)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-opacity=".3"/><stop offset=".071" stop-opacity=".2"/><stop offset=".321" stop-opacity=".1"/><stop offset=".623" stop-opacity=".05"/><stop offset="1" stop-opacity="0"/></linearGradient><linearGradient id="a7fee970-a784-4bb1-af8d-63d18e5f7db9" x1="-1027.165" x2="-997.482" y1="147.642" y2="68.561" gradientTransform="matrix(1 0 0 -1 1075 158)" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#3ccbf4"/><stop offset="1" stop-color="#2892df"/></linearGradient></defs><path fill="url(#e399c19f-b68f-429d-b176-18c2117ff73c)" d="M33.338 6.544h26.038l-27.03 80.087a4.152 4.152 0 0 1-3.933 2.824H8.149a4.145 4.145 0 0 1-3.928-5.47L29.404 9.368a4.152 4.152 0 0 1 3.934-2.825z"/><path fill="#0078d4" d="M71.175 60.261h-41.29a1.911 1.911 0 0 0-1.305 3.309l26.532 24.764a4.171 4.171 0 0 0 2.846 1.121h23.38z"/><path fill="url(#ac2a6fc2-ca48-4327-9a3c-d4dcc3256e15)" d="M33.338 6.544a4.118 4.118 0 0 0-3.943 2.879L4.252 83.917a4.14 4.14 0 0 0 3.908 5.538h20.787a4.443 4.443 0 0 0 3.41-2.9l5.014-14.777 17.91 16.705a4.237 4.237 0 0 0 2.666.972H81.24L71.024 60.261l-29.781.007L59.47 6.544z"/><path fill="url(#a7fee970-a784-4bb1-af8d-63d18e5f7db9)" d="M66.595 9.364a4.145 4.145 0 0 0-3.928-2.82H33.648a4.146 4.146 0 0 1 3.928 2.82l25.184 74.62a4.146 4.146 0 0 1-3.928 5.472h29.02a4.146 4.146 0 0 0 3.927-5.472z"/></svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

+1 -27
View File
@@ -1,27 +1 @@
<svg width="120" height="120" viewBox="0 0 120 120" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_293_450)">
<path d="M58.5288 0.34381L5.96707 27.4409C4.81829 28.1161 4.48575 29.1238 4.49583 30.5849L4.5966 32.4089L60.0907 60.8664L115.454 32.8623C115.454 32.8623 115.514 32.5802 115.514 31.5926C115.514 31.5926 115.464 30.2927 115.172 29.6881C114.849 29.0028 114.164 28.3881 113.721 28.0153C112.542 27.0378 111.363 26.1712 109.357 25.0426C80.6075 8.78835 61.7031 0.414348 61.7031 0.414348C60.4837 -0.0391172 59.476 -0.200349 58.5288 0.34381Z" fill="#DEA66C"/>
<path d="M5.32223 92.3671C8.38565 94.3926 13.9784 97.0529 19.6316 100.116C32.772 107.231 49.3789 115.877 57.6421 119.273C58.7606 119.736 59.4257 119.958 60.2017 119.998C60.7761 120.029 61.7233 119.646 61.7233 119.646C61.7233 119.646 60.1815 64.0306 60.0908 60.8563C60.0001 57.7526 58.7002 56.7247 57.5514 55.979C55.7577 54.8302 51.868 53.0365 51.868 53.0365C51.868 53.0365 38.2438 46.2648 24.6399 39.1302C18.1704 35.7343 12.7087 32.2577 6.83378 29.3958C5.75554 28.8819 4.48584 29.5269 4.48584 30.7361V90.9967C4.48584 91.571 4.83854 92.0547 5.32223 92.3671Z" fill="#B38251"/>
<path d="M113.993 92.7198L61.834 119.615C60.9976 120.049 60 119.444 60 118.497L60.0907 60.8765C60.0907 60.3222 59.9194 59.1029 59.7481 58.6192C59.2745 57.2084 60.3023 56.6441 60.7659 56.4123L112.501 29.7687C113.872 29.0633 115.514 30.0609 115.514 31.6027V90.2409C115.514 91.2788 114.93 92.2361 113.993 92.7198Z" fill="#966239"/>
<path opacity="0.5" d="M90.6947 43.4231C90.6947 43.4231 62.1062 58.0448 61.6427 59.2843C61.1791 60.5137 84.0741 49.5096 86.7546 48.129C89.7878 46.5671 113.61 33.8297 113.61 32.429C113.62 31.2802 90.6947 43.4231 90.6947 43.4231Z" fill="#212121"/>
<g opacity="0.5">
<path d="M8.41577 89.0316C12.1342 90.906 15.8224 92.8408 20.4175 95.1887C20.4175 94.4732 20.4175 94.1105 20.4175 93.395C15.8425 91.0571 12.1443 89.1324 8.41577 87.2379C8.41577 87.9534 8.41577 88.3162 8.41577 89.0316Z" fill="#212121"/>
<path d="M16.2456 89.8479C17.2936 90.382 17.8176 90.654 18.8052 91.1579C18.8152 88.034 18.8152 86.4721 18.8253 83.3482C17.8378 82.8443 17.3238 82.5823 16.2859 82.0483C16.2658 85.1721 16.2557 86.724 16.2456 89.8479Z" fill="#212121"/>
<path d="M9.73584 86.5023C10.6025 86.9457 11.0862 87.1976 12.0737 87.7015C12.0939 84.5877 12.1039 83.0358 12.1241 79.922C11.1265 79.4081 10.6428 79.1662 9.76607 78.7027C9.75599 81.8266 9.74592 83.3885 9.73584 86.5023Z" fill="#212121"/>
<path d="M14.603 82.1188C16.9913 83.3381 18.261 83.9931 20.3671 85.0613C19.3191 83.1567 18.7447 82.1893 17.5959 80.2344C16.4169 81.0003 15.8022 81.3731 14.603 82.1188Z" fill="#212121"/>
<path d="M8.41577 78.9445C10.1994 79.8716 11.3986 80.4863 13.7566 81.6956C12.5877 79.7306 12.0032 78.7531 10.9249 76.8284C9.82655 77.6245 9.31263 78.0376 8.41577 78.9445Z" fill="#212121"/>
</g>
<g opacity="0.5">
<path d="M27.5622 97.6475C28.3986 98.0808 28.8319 98.3126 29.6683 98.7459C29.6079 95.0375 29.5776 93.1834 29.5071 89.475C28.7009 89.0518 28.2979 88.8402 27.4917 88.427C27.5219 92.1152 27.532 93.9593 27.5622 97.6475Z" fill="#212121"/>
<path d="M24.4888 96.9925C27.5522 98.6048 29.9304 99.814 32.8728 101.386C32.8527 100.328 32.0365 99.0482 30.928 98.4536C29.1947 97.5366 28.2072 97.0328 26.4538 96.1158C25.3252 95.5414 24.4888 95.9545 24.4888 96.9925Z" fill="#212121"/>
<path d="M30.3233 86.5225C30.8373 87.6108 31.0993 88.165 31.6132 89.2533C31.2101 90.1099 30.9985 90.5432 30.5753 91.3897C30.938 91.3594 31.1194 91.3493 31.4822 91.3191C31.9659 90.6742 32.2077 90.3517 32.6713 89.7068C32.2481 88.7092 32.0264 88.2053 31.583 87.2077C32.8124 87.8829 33.417 88.2255 34.5355 88.8805C34.5355 92.488 32.1775 94.0802 28.6304 92.226C25.0833 90.3819 22.7354 86.2605 22.7354 82.6428C25.3755 83.9629 27.1491 84.8295 30.3233 86.5225Z" fill="#212121"/>
</g>
<path d="M97.0231 37.2761C96.5192 36.9032 42.4158 8.63719 42.4158 8.63719L25.6274 17.3135L81.1014 45.9222L81.1316 45.9524L97.3657 37.6388C97.3657 37.6388 97.3355 37.5582 97.2448 37.4575C97.1743 37.397 97.0533 37.3063 97.0231 37.2761Z" fill="#FFE0B2"/>
<path d="M97.285 37.5179C88.0948 42.0425 81.1014 45.9222 81.1014 45.9222C81.3331 46.1539 81.3432 46.4562 81.3432 46.6074C81.313 47.7763 81.2928 48.7034 81.2626 49.8623C81.1215 55.8581 81.0409 61.864 80.8394 67.8598C81.5145 67.4567 82.3308 68.3435 82.9454 67.8598C83.8927 67.1141 85.9081 63.829 86.2104 63.7282C86.6135 63.5972 87.0468 63.698 87.46 63.6779C89.2738 63.5771 93.3349 59.8788 94.2015 59.7075C95.0379 59.5463 97.799 60.0804 97.799 60.0804C97.799 60.0804 97.6075 41.7906 97.537 38.7171C97.5168 37.6288 97.285 37.5179 97.285 37.5179Z" fill="#BF9F85"/>
</g>
<defs>
<clipPath id="clip0_293_450">
<rect width="120" height="120" fill="white"/>
</clipPath>
</defs>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="120" height="120" fill="none" viewBox="0 0 120 120"><g clip-path="url(#clip0_293_450)"><path fill="#DEA66C" d="M58.5288 0.34381L5.96707 27.4409C4.81829 28.1161 4.48575 29.1238 4.49583 30.5849L4.5966 32.4089L60.0907 60.8664L115.454 32.8623C115.454 32.8623 115.514 32.5802 115.514 31.5926C115.514 31.5926 115.464 30.2927 115.172 29.6881C114.849 29.0028 114.164 28.3881 113.721 28.0153C112.542 27.0378 111.363 26.1712 109.357 25.0426C80.6075 8.78835 61.7031 0.414348 61.7031 0.414348C60.4837 -0.0391172 59.476 -0.200349 58.5288 0.34381Z"/><path fill="#B38251" d="M5.32223 92.3671C8.38565 94.3926 13.9784 97.0529 19.6316 100.116C32.772 107.231 49.3789 115.877 57.6421 119.273C58.7606 119.736 59.4257 119.958 60.2017 119.998C60.7761 120.029 61.7233 119.646 61.7233 119.646C61.7233 119.646 60.1815 64.0306 60.0908 60.8563C60.0001 57.7526 58.7002 56.7247 57.5514 55.979C55.7577 54.8302 51.868 53.0365 51.868 53.0365C51.868 53.0365 38.2438 46.2648 24.6399 39.1302C18.1704 35.7343 12.7087 32.2577 6.83378 29.3958C5.75554 28.8819 4.48584 29.5269 4.48584 30.7361V90.9967C4.48584 91.571 4.83854 92.0547 5.32223 92.3671Z"/><path fill="#966239" d="M113.993 92.7198L61.834 119.615C60.9976 120.049 60 119.444 60 118.497L60.0907 60.8765C60.0907 60.3222 59.9194 59.1029 59.7481 58.6192C59.2745 57.2084 60.3023 56.6441 60.7659 56.4123L112.501 29.7687C113.872 29.0633 115.514 30.0609 115.514 31.6027V90.2409C115.514 91.2788 114.93 92.2361 113.993 92.7198Z"/><path fill="#212121" d="M90.6947 43.4231C90.6947 43.4231 62.1062 58.0448 61.6427 59.2843C61.1791 60.5137 84.0741 49.5096 86.7546 48.129C89.7878 46.5671 113.61 33.8297 113.61 32.429C113.62 31.2802 90.6947 43.4231 90.6947 43.4231Z" opacity=".5"/><g opacity=".5"><path fill="#212121" d="M8.41577 89.0316C12.1342 90.906 15.8224 92.8408 20.4175 95.1887C20.4175 94.4732 20.4175 94.1105 20.4175 93.395C15.8425 91.0571 12.1443 89.1324 8.41577 87.2379C8.41577 87.9534 8.41577 88.3162 8.41577 89.0316Z"/><path fill="#212121" d="M16.2456 89.8479C17.2936 90.382 17.8176 90.654 18.8052 91.1579C18.8152 88.034 18.8152 86.4721 18.8253 83.3482C17.8378 82.8443 17.3238 82.5823 16.2859 82.0483C16.2658 85.1721 16.2557 86.724 16.2456 89.8479Z"/><path fill="#212121" d="M9.73584 86.5023C10.6025 86.9457 11.0862 87.1976 12.0737 87.7015C12.0939 84.5877 12.1039 83.0358 12.1241 79.922C11.1265 79.4081 10.6428 79.1662 9.76607 78.7027C9.75599 81.8266 9.74592 83.3885 9.73584 86.5023Z"/><path fill="#212121" d="M14.603 82.1188C16.9913 83.3381 18.261 83.9931 20.3671 85.0613C19.3191 83.1567 18.7447 82.1893 17.5959 80.2344C16.4169 81.0003 15.8022 81.3731 14.603 82.1188Z"/><path fill="#212121" d="M8.41577 78.9445C10.1994 79.8716 11.3986 80.4863 13.7566 81.6956C12.5877 79.7306 12.0032 78.7531 10.9249 76.8284C9.82655 77.6245 9.31263 78.0376 8.41577 78.9445Z"/></g><g opacity=".5"><path fill="#212121" d="M27.5622 97.6475C28.3986 98.0808 28.8319 98.3126 29.6683 98.7459C29.6079 95.0375 29.5776 93.1834 29.5071 89.475C28.7009 89.0518 28.2979 88.8402 27.4917 88.427C27.5219 92.1152 27.532 93.9593 27.5622 97.6475Z"/><path fill="#212121" d="M24.4888 96.9925C27.5522 98.6048 29.9304 99.814 32.8728 101.386C32.8527 100.328 32.0365 99.0482 30.928 98.4536C29.1947 97.5366 28.2072 97.0328 26.4538 96.1158C25.3252 95.5414 24.4888 95.9545 24.4888 96.9925Z"/><path fill="#212121" d="M30.3233 86.5225C30.8373 87.6108 31.0993 88.165 31.6132 89.2533C31.2101 90.1099 30.9985 90.5432 30.5753 91.3897C30.938 91.3594 31.1194 91.3493 31.4822 91.3191C31.9659 90.6742 32.2077 90.3517 32.6713 89.7068C32.2481 88.7092 32.0264 88.2053 31.583 87.2077C32.8124 87.8829 33.417 88.2255 34.5355 88.8805C34.5355 92.488 32.1775 94.0802 28.6304 92.226C25.0833 90.3819 22.7354 86.2605 22.7354 82.6428C25.3755 83.9629 27.1491 84.8295 30.3233 86.5225Z"/></g><path fill="#FFE0B2" d="M97.0231 37.2761C96.5192 36.9032 42.4158 8.63719 42.4158 8.63719L25.6274 17.3135L81.1014 45.9222L81.1316 45.9524L97.3657 37.6388C97.3657 37.6388 97.3355 37.5582 97.2448 37.4575C97.1743 37.397 97.0533 37.3063 97.0231 37.2761Z"/><path fill="#BF9F85" d="M97.285 37.5179C88.0948 42.0425 81.1014 45.9222 81.1014 45.9222C81.3331 46.1539 81.3432 46.4562 81.3432 46.6074C81.313 47.7763 81.2928 48.7034 81.2626 49.8623C81.1215 55.8581 81.0409 61.864 80.8394 67.8598C81.5145 67.4567 82.3308 68.3435 82.9454 67.8598C83.8927 67.1141 85.9081 63.829 86.2104 63.7282C86.6135 63.5972 87.0468 63.698 87.46 63.6779C89.2738 63.5771 93.3349 59.8788 94.2015 59.7075C95.0379 59.5463 97.799 60.0804 97.799 60.0804C97.799 60.0804 97.6075 41.7906 97.537 38.7171C97.5168 37.6288 97.285 37.5179 97.285 37.5179Z"/></g><defs><clipPath id="clip0_293_450"><rect width="120" height="120" fill="#fff"/></clipPath></defs></svg>

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

+1 -4
View File
@@ -1,4 +1 @@
<svg width="512" height="510" viewBox="0 0 512 510" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M115.612 0H396.387C459.974 0 512 52.026 512 115.612V394.027C512 457.614 459.974 509.639 396.387 509.639H115.612C52.026 509.639 0 457.614 0 394.027V115.612C0 52.026 52.026 0 115.612 0Z" fill="#D77655"/>
<path d="M142.27 316.619L215.925 275.293L217.163 271.704L215.925 269.708L212.336 269.707L200.026 268.948L157.942 267.81L121.444 266.294L86.083 264.398L77.186 262.503L68.846 251.508L69.705 246.024L77.187 240.994L87.904 241.929L111.587 243.546L147.124 245.998L172.906 247.515L211.099 251.483H217.163L218.023 249.032L215.95 247.515L214.332 245.998L177.556 221.076L137.746 194.738L116.894 179.572L105.621 171.889L99.934 164.685L97.483 148.964L107.72 137.691L121.47 138.626L124.983 139.562L138.911 150.278L168.66 173.305L207.508 201.917L213.195 206.644L215.47 205.027L215.748 203.889L213.195 199.618L192.065 161.425L169.519 122.577L159.484 106.476L156.83 96.821C155.895 92.853 155.213 89.517 155.213 85.447L166.865 69.624L173.31 67.551L188.855 69.624L195.402 75.311L205.057 97.403L220.703 132.183L244.968 179.474L252.071 193.502L255.862 206.494L257.278 210.462L259.727 210.461V208.186L261.724 181.545L265.414 148.838L269.003 106.754L270.242 94.9L276.105 80.694L287.757 73.011L296.856 77.359L304.338 88.075L303.302 95.001L298.853 123.916L290.133 169.21L284.446 199.541H287.759L291.551 195.75L306.893 175.378L332.675 143.151L344.049 130.362L357.319 116.233L365.836 109.509L381.936 109.508L393.79 127.125L388.483 145.324L371.902 166.353L358.152 184.172L338.436 210.712L326.127 231.943L327.265 233.637L330.197 233.359L374.733 223.88L398.795 219.533L427.509 214.605L440.501 220.671L441.917 226.838L436.811 239.451L406.101 247.034L370.083 254.238L316.447 266.927L315.79 267.407L316.548 268.342L340.712 270.617L351.049 271.173H376.35L423.464 274.687L435.773 282.826L443.154 292.785L441.916 300.368L422.959 310.023L397.38 303.957L337.678 289.752L317.204 284.646L314.374 284.645V286.339L331.435 303.021L362.701 331.254L401.853 367.651L403.85 376.65L398.82 383.752L393.513 382.994L359.112 357.111L345.842 345.46L315.789 320.158L313.793 320.157V322.811L320.719 332.947L357.293 387.922L359.188 404.781L356.535 410.266L347.056 413.577L336.642 411.682L315.234 381.628L293.142 347.784L275.323 317.453L273.15 318.691L262.635 431.952L257.706 437.74L246.332 442.088L236.854 434.884L231.824 423.232L236.854 400.205L242.92 370.153L247.848 346.267L252.297 316.593L254.951 306.735L254.774 306.078L252.601 306.356L230.231 337.066L196.21 383.043L169.291 411.858L162.846 414.411L151.673 408.622L152.71 398.285L158.953 389.085L196.21 341.693L218.68 312.322L233.188 295.361L233.087 292.91H232.228L133.274 357.161L115.656 359.436L108.073 352.333L109.009 340.681L112.598 336.89L142.347 316.416L142.246 316.518L142.27 316.619Z" fill="#FCF2EE"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="510" fill="none" viewBox="0 0 512 510"><path fill="#D77655" fill-rule="evenodd" d="M115.612 0H396.387C459.974 0 512 52.026 512 115.612V394.027C512 457.614 459.974 509.639 396.387 509.639H115.612C52.026 509.639 0 457.614 0 394.027V115.612C0 52.026 52.026 0 115.612 0Z" clip-rule="evenodd"/><path fill="#FCF2EE" d="M142.27 316.619L215.925 275.293L217.163 271.704L215.925 269.708L212.336 269.707L200.026 268.948L157.942 267.81L121.444 266.294L86.083 264.398L77.186 262.503L68.846 251.508L69.705 246.024L77.187 240.994L87.904 241.929L111.587 243.546L147.124 245.998L172.906 247.515L211.099 251.483H217.163L218.023 249.032L215.95 247.515L214.332 245.998L177.556 221.076L137.746 194.738L116.894 179.572L105.621 171.889L99.934 164.685L97.483 148.964L107.72 137.691L121.47 138.626L124.983 139.562L138.911 150.278L168.66 173.305L207.508 201.917L213.195 206.644L215.47 205.027L215.748 203.889L213.195 199.618L192.065 161.425L169.519 122.577L159.484 106.476L156.83 96.821C155.895 92.853 155.213 89.517 155.213 85.447L166.865 69.624L173.31 67.551L188.855 69.624L195.402 75.311L205.057 97.403L220.703 132.183L244.968 179.474L252.071 193.502L255.862 206.494L257.278 210.462L259.727 210.461V208.186L261.724 181.545L265.414 148.838L269.003 106.754L270.242 94.9L276.105 80.694L287.757 73.011L296.856 77.359L304.338 88.075L303.302 95.001L298.853 123.916L290.133 169.21L284.446 199.541H287.759L291.551 195.75L306.893 175.378L332.675 143.151L344.049 130.362L357.319 116.233L365.836 109.509L381.936 109.508L393.79 127.125L388.483 145.324L371.902 166.353L358.152 184.172L338.436 210.712L326.127 231.943L327.265 233.637L330.197 233.359L374.733 223.88L398.795 219.533L427.509 214.605L440.501 220.671L441.917 226.838L436.811 239.451L406.101 247.034L370.083 254.238L316.447 266.927L315.79 267.407L316.548 268.342L340.712 270.617L351.049 271.173H376.35L423.464 274.687L435.773 282.826L443.154 292.785L441.916 300.368L422.959 310.023L397.38 303.957L337.678 289.752L317.204 284.646L314.374 284.645V286.339L331.435 303.021L362.701 331.254L401.853 367.651L403.85 376.65L398.82 383.752L393.513 382.994L359.112 357.111L345.842 345.46L315.789 320.158L313.793 320.157V322.811L320.719 332.947L357.293 387.922L359.188 404.781L356.535 410.266L347.056 413.577L336.642 411.682L315.234 381.628L293.142 347.784L275.323 317.453L273.15 318.691L262.635 431.952L257.706 437.74L246.332 442.088L236.854 434.884L231.824 423.232L236.854 400.205L242.92 370.153L247.848 346.267L252.297 316.593L254.951 306.735L254.774 306.078L252.601 306.356L230.231 337.066L196.21 383.043L169.291 411.858L162.846 414.411L151.673 408.622L152.71 398.285L158.953 389.085L196.21 341.693L218.68 312.322L233.188 295.361L233.087 292.91H232.228L133.274 357.161L115.656 359.436L108.073 352.333L109.009 340.681L112.598 336.89L142.347 316.416L142.246 316.518L142.27 316.619Z"/></svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 35 KiB

+1 -47
View File
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

+1 -4
View File
@@ -1,4 +1 @@
<svg width="160" height="160" viewBox="0 0 160 160" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="160" height="160" fill="white"/>
<path d="M57.933 54C75.2624 54.0001 84.9775 62.7841 85.3057 75.7138L70.3392 76.2054C69.9453 69.0379 64.0048 64.3297 57.933 64.4701C49.5965 64.6458 43.4257 70.5838 43.4256 79.9999C43.4256 89.4162 49.5964 95.2491 57.933 95.2491C64.0048 95.2485 69.8139 90.7514 70.4704 83.5838L85.4368 83.9354C85.043 97.0757 74.7372 106 57.933 106C41.1286 106 28 95.8108 28 79.9999C28.0001 64.1189 40.6035 54 57.933 54ZM132 55.5364V104.726H92.6151V55.5364H132Z" fill="#090B0B"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="160" height="160" fill="none" viewBox="0 0 160 160"><rect width="160" height="160" fill="#fff"/><path fill="#090B0B" d="M57.933 54C75.2624 54.0001 84.9775 62.7841 85.3057 75.7138L70.3392 76.2054C69.9453 69.0379 64.0048 64.3297 57.933 64.4701C49.5965 64.6458 43.4257 70.5838 43.4256 79.9999C43.4256 89.4162 49.5964 95.2491 57.933 95.2491C64.0048 95.2485 69.8139 90.7514 70.4704 83.5838L85.4368 83.9354C85.043 97.0757 74.7372 106 57.933 106C41.1286 106 28 95.8108 28 79.9999C28.0001 64.1189 40.6035 54 57.933 54ZM132 55.5364V104.726H92.6151V55.5364H132Z"/></svg>

Before

Width:  |  Height:  |  Size: 612 B

After

Width:  |  Height:  |  Size: 607 B

+1 -210
View File
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 8.3 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

+1 -5
View File
@@ -1,5 +1 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M31 6V22C31 23.65 29.65 25 28 25H4C2.35 25 1 23.65 1 22V6C1 4.35 2.35 3 4 3H28C29.65 3 31 4.35 31 6Z" fill="#2197F3"/>
<path d="M21 27H17V24C17 23.4478 16.5522 23 16 23C15.4478 23 15 23.4478 15 24V27H11C10.4478 27 10 27.4478 10 28C10 28.5522 10.4478 29 11 29H21C21.5522 29 22 28.5522 22 28C22 27.4478 21.5522 27 21 27Z" fill="#FFC10A"/>
<path d="M31 17V22C31 23.65 29.65 25 28 25H4C2.35 25 1 23.65 1 22V17H31Z" fill="#3F51B5"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" fill="none" viewBox="0 0 32 32"><path fill="#2197F3" d="M31 6V22C31 23.65 29.65 25 28 25H4C2.35 25 1 23.65 1 22V6C1 4.35 2.35 3 4 3H28C29.65 3 31 4.35 31 6Z"/><path fill="#FFC10A" d="M21 27H17V24C17 23.4478 16.5522 23 16 23C15.4478 23 15 23.4478 15 24V27H11C10.4478 27 10 27.4478 10 28C10 28.5522 10.4478 29 11 29H21C21.5522 29 22 28.5522 22 28C22 27.4478 21.5522 27 21 27Z"/><path fill="#3F51B5" d="M31 17V22C31 23.65 29.65 25 28 25H4C2.35 25 1 23.65 1 22V17H31Z"/></svg>

Before

Width:  |  Height:  |  Size: 540 B

After

Width:  |  Height:  |  Size: 535 B

+3 -2
View File
@@ -1,2 +1,3 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 32 32" xmlns="http://www.w3.org/2000/svg"><title>file_type_devcontainer</title><circle cx="16" cy="16" r="14" style="fill:#193e63"/><polygon points="10.777 22.742 9.343 21.348 12.729 17.865 9.346 14.417 10.774 13.017 15.525 17.859 10.777 22.742" style="fill:#add1ea"/><polygon points="21.42 19.101 22.854 17.706 19.468 14.224 22.851 10.776 21.423 9.376 16.672 14.218 21.42 19.101" style="fill:#add1ea"/></svg>
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M13.8461 2.7571C15.2325 2.22387 16.7675 2.22387 18.1539 2.7571L28.0769 6.57367C29.2355 7.01927 30 8.13239 30 9.3737V22.6265C30 23.8678 29.2355 24.9809 28.0769 25.4265L18.1539 29.2431C16.7675 29.7763 15.2325 29.7763 13.8461 29.2431L3.92306 25.4265C2.76449 24.9809 2 23.8678 2 22.6265V9.3737C2 8.13239 2.76449 7.01927 3.92306 6.57367L13.8461 2.7571ZM9.39418 10.0809C8.88655 9.86331 8.29867 10.0985 8.08111 10.6061C7.86356 11.1137 8.09871 11.7016 8.60634 11.9192L15.0003 14.6594V21C15.0003 21.5523 15.448 22 16.0003 22C16.5525 22 17.0003 21.5523 17.0003 21V14.6594L23.3942 11.9192C23.9018 11.7016 24.137 11.1137 23.9194 10.6061C23.7018 10.0985 23.114 9.86331 22.6063 10.0809L16.0003 12.912L9.39418 10.0809Z" fill="#212121"/>
</svg>

Before

Width:  |  Height:  |  Size: 575 B

After

Width:  |  Height:  |  Size: 834 B

+1 -10
View File
@@ -1,10 +1 @@
<svg width="120" height="120" viewBox="0 0 120 120" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_293_107)">
<path d="M60.285 96.2158V119.197C99.2373 119.197 129.566 81.5665 116.824 40.7488C111.256 22.9113 97.0819 8.73763 79.2444 3.16935C38.4267 -9.5728 0.795288 20.7566 0.795288 59.7089H23.8294C23.8328 59.7089 23.8355 59.7029 23.8355 59.7029C23.8388 35.2575 48.0312 16.3581 73.7321 25.684C83.2536 29.1394 90.8485 36.7329 94.3059 46.2537C103.633 71.9395 84.7622 96.1224 60.3376 96.1571V73.2498L37.3703 73.2485L37.3662 96.2158H60.285ZM37.3622 113.866H19.7183L19.7142 96.2158H37.3662L37.3622 113.866ZM19.7264 96.2158H4.93541C4.92934 96.2158 4.92461 96.2117 4.92461 96.2117V81.4275C4.92461 81.4275 4.92934 81.4167 4.93541 81.4167H19.7156C19.7216 81.4167 19.7264 81.4215 19.7264 81.4215V96.2158Z" fill="#0080FF"/>
</g>
<defs>
<clipPath id="clip0_293_107">
<rect width="120" height="120" fill="white"/>
</clipPath>
</defs>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="120" height="120" fill="none" viewBox="0 0 120 120"><g clip-path="url(#clip0_293_107)"><path fill="#0080FF" d="M60.285 96.2158V119.197C99.2373 119.197 129.566 81.5665 116.824 40.7488C111.256 22.9113 97.0819 8.73763 79.2444 3.16935C38.4267 -9.5728 0.795288 20.7566 0.795288 59.7089H23.8294C23.8328 59.7089 23.8355 59.7029 23.8355 59.7029C23.8388 35.2575 48.0312 16.3581 73.7321 25.684C83.2536 29.1394 90.8485 36.7329 94.3059 46.2537C103.633 71.9395 84.7622 96.1224 60.3376 96.1571V73.2498L37.3703 73.2485L37.3662 96.2158H60.285ZM37.3622 113.866H19.7183L19.7142 96.2158H37.3662L37.3622 113.866ZM19.7264 96.2158H4.93541C4.92934 96.2158 4.92461 96.2117 4.92461 96.2117V81.4275C4.92461 81.4275 4.92934 81.4167 4.93541 81.4167H19.7156C19.7216 81.4167 19.7264 81.4215 19.7264 81.4215V96.2158Z"/></g><defs><clipPath id="clip0_293_107"><rect width="120" height="120" fill="#fff"/></clipPath></defs></svg>

Before

Width:  |  Height:  |  Size: 953 B

After

Width:  |  Height:  |  Size: 942 B

+1 -3
View File
@@ -1,3 +1 @@
<svg width="120" height="120" viewBox="0 0 120 120" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M118.049 51.0329C115.107 49.0467 107.377 48.1984 101.756 49.7167C101.453 44.1017 98.5669 39.37 93.2862 35.2415L91.3313 33.9253L90.0286 35.8988C87.4676 39.7981 86.3886 44.993 86.771 49.7151C87.0725 52.6245 88.0816 55.8951 90.0286 58.2681C82.7137 62.524 75.9715 61.5579 46.112 61.5579H0.0103499C-0.124524 68.3204 0.95923 81.3298 9.20719 91.92C10.118 93.0898 11.1176 94.2214 12.2014 95.3116C18.907 102.047 29.0385 106.986 44.1888 107C67.3015 107.021 87.1042 94.4904 99.1493 64.1919C103.113 64.2572 113.576 64.9049 118.697 54.98C118.822 54.8129 119.999 52.3475 119.999 52.3475L118.048 51.0313L118.049 51.0329ZM30.0968 44.8481H17.133V57.8511H30.0968V44.8481ZM46.845 44.8481H33.8812V57.8511H46.845V44.8481ZM63.5932 44.8481H50.6294V57.8511H63.5932V44.8481ZM80.3414 44.8481H67.3777V57.8511H80.3414V44.8481ZM13.3486 44.8481H0.384824V57.8511H13.3486V44.8481ZM30.0968 28.4249H17.133V41.4279H30.0968V28.4249ZM46.845 28.4249H33.8812V41.4279H46.845V28.4249ZM63.5932 28.4249H50.6294V41.4279H63.5932V28.4249ZM63.5932 12H50.6294V25.003H63.5932V12Z" fill="#1D63ED"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="120" height="120" fill="none" viewBox="0 0 120 120"><path fill="#1D63ED" d="M118.049 51.0329C115.107 49.0467 107.377 48.1984 101.756 49.7167C101.453 44.1017 98.5669 39.37 93.2862 35.2415L91.3313 33.9253L90.0286 35.8988C87.4676 39.7981 86.3886 44.993 86.771 49.7151C87.0725 52.6245 88.0816 55.8951 90.0286 58.2681C82.7137 62.524 75.9715 61.5579 46.112 61.5579H0.0103499C-0.124524 68.3204 0.95923 81.3298 9.20719 91.92C10.118 93.0898 11.1176 94.2214 12.2014 95.3116C18.907 102.047 29.0385 106.986 44.1888 107C67.3015 107.021 87.1042 94.4904 99.1493 64.1919C103.113 64.2572 113.576 64.9049 118.697 54.98C118.822 54.8129 119.999 52.3475 119.999 52.3475L118.048 51.0313L118.049 51.0329ZM30.0968 44.8481H17.133V57.8511H30.0968V44.8481ZM46.845 44.8481H33.8812V57.8511H46.845V44.8481ZM63.5932 44.8481H50.6294V57.8511H63.5932V44.8481ZM80.3414 44.8481H67.3777V57.8511H80.3414V44.8481ZM13.3486 44.8481H0.384824V57.8511H13.3486V44.8481ZM30.0968 28.4249H17.133V41.4279H30.0968V28.4249ZM46.845 28.4249H33.8812V41.4279H46.845V28.4249ZM63.5932 28.4249H50.6294V41.4279H63.5932V28.4249ZM63.5932 12H50.6294V25.003H63.5932V12Z"/></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

+1 -10
View File
@@ -1,10 +1 @@
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
viewBox="0 0 185.69 237" enable-background="new 0 0 185.69 237" xml:space="preserve">
<g>
<path fill="#333333" d="M135.96,0h-1.06H16.93C7.58,0,0,7.58,0,16.93v203.14C0,229.42,7.58,237,16.93,237h151.83
c9.35,0,16.93-7.58,16.93-16.93V50.79v-1.06L135.96,0z"/>
<circle fill="#3FA9F5" cx="92.84" cy="118.5" r="25.39"/>
<line fill="#1A1A1A" x1="185.69" y1="50.79" x2="134.9" y2="0"/>
<path fill="#3FA9F5" d="M135.96,32.8c0,9.35,7.58,16.93,16.93,16.93h32.8L135.96,0V32.8z"/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" enable-background="new 0 0 185.69 237" version="1.0" viewBox="0 0 185.69 237" xml:space="preserve"><g><path fill="#333" d="M135.96,0h-1.06H16.93C7.58,0,0,7.58,0,16.93v203.14C0,229.42,7.58,237,16.93,237h151.83 c9.35,0,16.93-7.58,16.93-16.93V50.79v-1.06L135.96,0z"/><circle cx="92.84" cy="118.5" r="25.39" fill="#3FA9F5"/><line x1="185.69" x2="134.9" y1="50.79" y2="0" fill="#1A1A1A"/><path fill="#3FA9F5" d="M135.96,32.8c0,9.35,7.58,16.93,16.93,16.93h32.8L135.96,0V32.8z"/></g></svg>

Before

Width:  |  Height:  |  Size: 600 B

After

Width:  |  Height:  |  Size: 577 B

+1 -1
View File
@@ -1 +1 @@
<svg width="128" height="128" xmlns="http://www.w3.org/2000/svg"><text x="50%" y="50%" font-size="96px" text-anchor="middle" dominant-baseline="middle" font-family="Apple Color Emoji, Segoe UI Emoji, Noto Color Emoji, sans-serif">🔌</text></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128"><text x="50%" y="50%" dominant-baseline="middle" font-family="Apple Color Emoji, Segoe UI Emoji, Noto Color Emoji, sans-serif" font-size="96" text-anchor="middle">🔌</text></svg>

Before

Width:  |  Height:  |  Size: 247 B

After

Width:  |  Height:  |  Size: 245 B

+1 -1
View File
@@ -1 +1 @@
<svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 68.03 68.03"><defs><style>.cls-1{fill:#da291c;}</style></defs><title>Artboard 1</title><polygon class="cls-1" points="34.02 13.31 11.27 52.72 14.52 52.72 34.02 18.94 34.02 24.57 17.77 52.72 21.02 52.72 34.02 30.2 34.02 35.83 24.27 52.72 27.52 52.72 34.02 41.46 34.02 47.09 30.77 52.72 34.02 52.72 34.02 52.72 56.77 52.72 34.02 13.31"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" id="Layer_1" data-name="Layer 1" viewBox="0 0 68.03 68.03"><defs><style>.cls-1{fill:#da291c}</style></defs><title>Artboard 1</title><polygon points="34.02 13.31 11.27 52.72 14.52 52.72 34.02 18.94 34.02 24.57 17.77 52.72 21.02 52.72 34.02 30.2 34.02 35.83 24.27 52.72 27.52 52.72 34.02 41.46 34.02 47.09 30.77 52.72 34.02 52.72 34.02 52.72 56.77 52.72 34.02 13.31" class="cls-1"/></svg>

Before

Width:  |  Height:  |  Size: 427 B

After

Width:  |  Height:  |  Size: 426 B

+1 -147
View File
@@ -1,147 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xml:space="preserve"
width="560"
height="560"
version="1.1"
style="clip-rule:evenodd;fill-rule:evenodd;image-rendering:optimizeQuality;shape-rendering:geometricPrecision;text-rendering:geometricPrecision"
viewBox="0 0 560 560"
id="svg44"
sodipodi:docname="icon_raw.svg"
inkscape:version="0.92.3 (2405546, 2018-03-11)"
inkscape:export-filename="/home/umarcor/filebrowser/logo/icon_raw.svg.png"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"><metadata
id="metadata48"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1366"
inkscape:window-height="711"
id="namedview46"
showgrid="false"
inkscape:zoom="0.33714286"
inkscape:cx="-172.33051"
inkscape:cy="280"
inkscape:window-x="0"
inkscape:window-y="20"
inkscape:window-maximized="1"
inkscape:current-layer="svg44" />
<defs
id="defs4">
<style
type="text/css"
id="style2">
<![CDATA[
.fil1 {fill:#FEFEFE}
.fil6 {fill:#006498}
.fil7 {fill:#0EA5EB}
.fil8 {fill:#2979FF}
.fil3 {fill:#2BBCFF}
.fil0 {fill:#455A64}
.fil4 {fill:#53C6FC}
.fil5 {fill:#BDEAFF}
.fil2 {fill:#332C2B;fill-opacity:0.149020}
]]>
</style>
</defs>
<g
id="g85"
transform="translate(-70,-70)"><path
class="fil1"
d="M 350,71 C 504,71 629,196 629,350 629,504 504,629 350,629 196,629 71,504 71,350 71,196 196,71 350,71 Z"
id="path9"
inkscape:connector-curvature="0"
style="fill:#fefefe" /><path
class="fil2"
d="M 475,236 593,387 C 596,503 444,639 301,585 L 225,486 339,330 c 0,0 138,-95 136,-94 z"
id="path11"
inkscape:connector-curvature="0"
style="fill:#332c2b;fill-opacity:0.14902003" /><path
class="fil3"
d="m 231,211 h 208 l 38,24 v 246 c 0,5 -3,8 -8,8 H 231 c -5,0 -8,-3 -8,-8 V 219 c 0,-5 3,-8 8,-8 z"
id="path13"
inkscape:connector-curvature="0"
style="fill:#2bbcff" /><path
class="fil4"
d="m 231,211 h 208 l 38,24 v 2 L 440,214 H 231 c -4,0 -7,3 -7,7 v 263 c -1,-1 -1,-2 -1,-3 V 219 c 0,-5 3,-8 8,-8 z"
id="path15"
inkscape:connector-curvature="0"
style="fill:#53c6fc" /><polygon
class="fil5"
points="305,212 418,212 418,310 305,310 "
id="polygon17"
style="fill:#bdeaff" /><path
class="fil5"
d="m 255,363 h 189 c 3,0 5,2 5,4 V 483 H 250 V 367 c 0,-2 2,-4 5,-4 z"
id="path19"
inkscape:connector-curvature="0"
style="fill:#bdeaff" /><polygon
class="fil6"
points="250,470 449,470 449,483 250,483 "
id="polygon21"
style="fill:#006498" /><path
class="fil6"
d="m 380,226 h 10 c 3,0 6,2 6,5 v 40 c 0,3 -3,6 -6,6 h -10 c -3,0 -6,-3 -6,-6 v -40 c 0,-3 3,-5 6,-5 z"
id="path23"
inkscape:connector-curvature="0"
style="fill:#006498" /><path
class="fil1"
d="m 254,226 c 10,0 17,7 17,17 0,9 -7,16 -17,16 -9,0 -17,-7 -17,-16 0,-10 8,-17 17,-17 z"
id="path25"
inkscape:connector-curvature="0"
style="fill:#fefefe" /><path
class="fil6"
d="m 267,448 h 165 c 2,0 3,1 3,3 v 0 c 0,1 -1,3 -3,3 H 267 c -2,0 -3,-2 -3,-3 v 0 c 0,-2 1,-3 3,-3 z"
id="path27"
inkscape:connector-curvature="0"
style="fill:#006498" /><path
class="fil6"
d="m 267,415 h 165 c 2,0 3,1 3,3 v 0 c 0,1 -1,2 -3,2 H 267 c -2,0 -3,-1 -3,-2 v 0 c 0,-2 1,-3 3,-3 z"
id="path29"
inkscape:connector-curvature="0"
style="fill:#006498" /><path
class="fil6"
d="m 267,381 h 165 c 2,0 3,2 3,3 v 0 c 0,2 -1,3 -3,3 H 267 c -2,0 -3,-1 -3,-3 v 0 c 0,-1 1,-3 3,-3 z"
id="path31"
inkscape:connector-curvature="0"
style="fill:#006498" /><path
class="fil1"
d="m 236,472 c 3,0 5,2 5,5 0,2 -2,4 -5,4 -3,0 -5,-2 -5,-4 0,-3 2,-5 5,-5 z"
id="path33"
inkscape:connector-curvature="0"
style="fill:#fefefe" /><path
class="fil1"
d="m 463,472 c 3,0 5,2 5,5 0,2 -2,4 -5,4 -3,0 -5,-2 -5,-4 0,-3 2,-5 5,-5 z"
id="path35"
inkscape:connector-curvature="0"
style="fill:#fefefe" /><polygon
class="fil6"
points="305,212 284,212 284,310 305,310 "
id="polygon37"
style="fill:#006498" /><path
class="fil7"
d="m 477,479 v 2 c 0,5 -3,8 -8,8 H 231 c -5,0 -8,-3 -8,-8 v -2 c 0,4 3,8 8,8 h 238 c 5,0 8,-4 8,-8 z"
id="path39"
inkscape:connector-curvature="0"
style="fill:#0ea5eb" /><path
class="fil8"
d="M 350,70 C 505,70 630,195 630,350 630,505 505,630 350,630 195,630 70,505 70,350 70,195 195,70 350,70 Z m 0,46 C 479,116 584,221 584,350 584,479 479,584 350,584 221,584 116,479 116,350 116,221 221,116 350,116 Z"
id="path41"
inkscape:connector-curvature="0"
style="fill:#2979ff" /></g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" style="clip-rule:evenodd;fill-rule:evenodd;image-rendering:optimizeQuality;shape-rendering:geometricPrecision;text-rendering:geometricPrecision" id="svg44" width="560" height="560" version="1.1" viewBox="0 0 560 560" xml:space="preserve"><metadata id="metadata48"/><defs id="defs4"><style id="style2" type="text/css">.fil1{fill:#fefefe}.fil6{fill:#006498}.fil7{fill:#0ea5eb}.fil8{fill:#2979ff}.fil3{fill:#2bbcff}.fil4{fill:#53c6fc}.fil5{fill:#bdeaff}.fil2{fill:#332c2b;fill-opacity:.14902}</style></defs><g id="g85" transform="translate(-70,-70)"><path id="path9" d="M 350,71 C 504,71 629,196 629,350 629,504 504,629 350,629 196,629 71,504 71,350 71,196 196,71 350,71 Z" class="fil1" style="fill:#fefefe"/><path id="path11" d="M 475,236 593,387 C 596,503 444,639 301,585 L 225,486 339,330 c 0,0 138,-95 136,-94 z" class="fil2" style="fill:#332c2b;fill-opacity:.14902003"/><path id="path13" d="m 231,211 h 208 l 38,24 v 246 c 0,5 -3,8 -8,8 H 231 c -5,0 -8,-3 -8,-8 V 219 c 0,-5 3,-8 8,-8 z" class="fil3" style="fill:#2bbcff"/><path id="path15" d="m 231,211 h 208 l 38,24 v 2 L 440,214 H 231 c -4,0 -7,3 -7,7 v 263 c -1,-1 -1,-2 -1,-3 V 219 c 0,-5 3,-8 8,-8 z" class="fil4" style="fill:#53c6fc"/><polygon id="polygon17" points="305 212 418 212 418 310 305 310" class="fil5" style="fill:#bdeaff"/><path id="path19" d="m 255,363 h 189 c 3,0 5,2 5,4 V 483 H 250 V 367 c 0,-2 2,-4 5,-4 z" class="fil5" style="fill:#bdeaff"/><polygon id="polygon21" points="250 470 449 470 449 483 250 483" class="fil6" style="fill:#006498"/><path id="path23" d="m 380,226 h 10 c 3,0 6,2 6,5 v 40 c 0,3 -3,6 -6,6 h -10 c -3,0 -6,-3 -6,-6 v -40 c 0,-3 3,-5 6,-5 z" class="fil6" style="fill:#006498"/><path id="path25" d="m 254,226 c 10,0 17,7 17,17 0,9 -7,16 -17,16 -9,0 -17,-7 -17,-16 0,-10 8,-17 17,-17 z" class="fil1" style="fill:#fefefe"/><path id="path27" d="m 267,448 h 165 c 2,0 3,1 3,3 v 0 c 0,1 -1,3 -3,3 H 267 c -2,0 -3,-2 -3,-3 v 0 c 0,-2 1,-3 3,-3 z" class="fil6" style="fill:#006498"/><path id="path29" d="m 267,415 h 165 c 2,0 3,1 3,3 v 0 c 0,1 -1,2 -3,2 H 267 c -2,0 -3,-1 -3,-2 v 0 c 0,-2 1,-3 3,-3 z" class="fil6" style="fill:#006498"/><path id="path31" d="m 267,381 h 165 c 2,0 3,2 3,3 v 0 c 0,2 -1,3 -3,3 H 267 c -2,0 -3,-1 -3,-3 v 0 c 0,-1 1,-3 3,-3 z" class="fil6" style="fill:#006498"/><path id="path33" d="m 236,472 c 3,0 5,2 5,5 0,2 -2,4 -5,4 -3,0 -5,-2 -5,-4 0,-3 2,-5 5,-5 z" class="fil1" style="fill:#fefefe"/><path id="path35" d="m 463,472 c 3,0 5,2 5,5 0,2 -2,4 -5,4 -3,0 -5,-2 -5,-4 0,-3 2,-5 5,-5 z" class="fil1" style="fill:#fefefe"/><polygon id="polygon37" points="305 212 284 212 284 310 305 310" class="fil6" style="fill:#006498"/><path id="path39" d="m 477,479 v 2 c 0,5 -3,8 -8,8 H 231 c -5,0 -8,-3 -8,-8 v -2 c 0,4 3,8 8,8 h 238 c 5,0 8,-4 8,-8 z" class="fil7" style="fill:#0ea5eb"/><path id="path41" d="M 350,70 C 505,70 630,195 630,350 630,505 505,630 350,630 195,630 70,505 70,350 70,195 195,70 350,70 Z m 0,46 C 479,116 584,221 584,350 584,479 479,584 350,584 221,584 116,479 116,350 116,221 221,116 350,116 Z" class="fil8" style="fill:#2979ff"/></g></svg>

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

+1 -60
View File
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.2 KiB

+1 -1
View File
@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="48" width="48" fill="#FFF"><path d="M7.05 40q-1.2 0-2.1-.925-.9-.925-.9-2.075V11q0-1.15.9-2.075Q5.85 8 7.05 8h14l3 3h17q1.15 0 2.075.925.925.925.925 2.075v23q0 1.15-.925 2.075Q42.2 40 41.05 40Zm0-29v26h34V14H22.8l-3-3H7.05Zm0 0v26Z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="48" height="48" fill="#FFF"><path d="M7.05 40q-1.2 0-2.1-.925-.9-.925-.9-2.075V11q0-1.15.9-2.075Q5.85 8 7.05 8h14l3 3h17q1.15 0 2.075.925.925.925.925 2.075v23q0 1.15-.925 2.075Q42.2 40 41.05 40Zm0-29v26h34V14H22.8l-3-3H7.05Zm0 0v26Z"/></svg>

Before

Width:  |  Height:  |  Size: 289 B

After

Width:  |  Height:  |  Size: 288 B

+1 -64
View File
@@ -1,64 +1 @@
<svg width="64" height="64" viewBox="0 0 64 64" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M32 62L57.975 46.98V16.964L32 2L6.02602 16.964H6.02502L32 31.984V62Z" fill="url(#paint0_linear_1725:872)"/>
<path d="M57.975 16.964L32 2L6.02602 16.964H6.02502L32 31.984L57.975 16.964Z" fill="url(#paint1_linear_1725:872)"/>
<path d="M57.975 16.964L32 2L6.02602 16.964H6.02502L32 31.984L57.975 16.964Z" fill="url(#paint2_linear_1725:872)"/>
<path d="M57.975 16.964L32 2L6.02602 16.964H6.02502L32 31.984L57.975 16.964Z" fill="url(#paint3_linear_1725:872)"/>
<path d="M6.026 46.9799V16.9639L32 31.9839L6.026 46.9799Z" fill="url(#paint4_linear_1725:872)"/>
<path d="M32 31.9844L6.026 46.9804L32 62.0004V31.9844Z" fill="url(#paint5_linear_1725:872)" style="mix-blend-mode:overlay"/>
<path d="M32 61.9999L57.975 46.9799V16.9639L32 31.9839V61.9999Z" fill="url(#paint6_linear_1725:872)"/>
<path d="M32 61.9999L57.975 46.9799V16.9639L32 31.9839V61.9999Z" fill="url(#paint7_linear_1725:872)"/>
<path d="M32 61.9999L57.975 46.9799V16.9639L32 31.9839V61.9999Z" fill="url(#paint8_linear_1725:872)"/>
<g opacity="0.8">
<path d="M25.028 27.9699L32 32V2L6 16.972L25.028 27.9699Z" fill="url(#paint9_linear_1725:872)" style="mix-blend-mode:overlay"/>
</g>
<defs>
<linearGradient id="paint0_linear_1725:872" x1="17.0683" y1="11.5629" x2="61.3962" y2="55.8908" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#FDB60D"/>
<stop offset="0.54795" stop-color="#FF318C"/>
<stop offset="0.88765" stop-color="#6B57FF"/>
</linearGradient>
<linearGradient id="paint1_linear_1725:872" x1="25.5898" y1="28.0668" x2="28.4505" y2="23.112" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="white" stop-opacity="0.6"/>
<stop offset="0.08098" stop-color="#FFC524" stop-opacity="0.4"/>
<stop offset="0.70457" stop-color="#FFC524" stop-opacity="0"/>
</linearGradient>
<linearGradient id="paint2_linear_1725:872" x1="25.4334" y1="5.59024" x2="29.6963" y2="12.9738" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#F9ED32" stop-opacity="0.6"/>
<stop offset="0.19796" stop-color="#FFC524" stop-opacity="0.4"/>
<stop offset="0.70457" stop-color="#FFC524" stop-opacity="0"/>
</linearGradient>
<linearGradient id="paint3_linear_1725:872" x1="38.9129" y1="4.99057" x2="37.0135" y2="8.28029" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#FDB60D" stop-opacity="0.6"/>
<stop offset="0.23369" stop-color="#FDB60D" stop-opacity="0.4"/>
<stop offset="0.5185" stop-color="#FF318C" stop-opacity="0"/>
</linearGradient>
<linearGradient id="paint4_linear_1725:872" x1="6.02553" y1="31.972" x2="48.2774" y2="31.972" gradientUnits="userSpaceOnUse">
<stop offset="0.01477"/>
<stop offset="0.19258"/>
<stop offset="0.57156" stop-color="#6B57FF"/>
<stop offset="0.82576" stop-color="#FF318C"/>
</linearGradient>
<linearGradient id="paint5_linear_1725:872" x1="25.2369" y1="19.192" x2="18.7738" y2="55.8462" gradientUnits="userSpaceOnUse">
<stop offset="0.046628" stop-color="white" stop-opacity="0.86"/>
<stop offset="0.766654" stop-color="#CBCAA4" stop-opacity="0"/>
</linearGradient>
<linearGradient id="paint6_linear_1725:872" x1="32.0001" y1="39.4819" x2="38.997" y2="39.4819" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#FFB2FF" stop-opacity="0.6"/>
<stop offset="0.08098" stop-color="#D828FF" stop-opacity="0.4"/>
<stop offset="0.70457" stop-color="#FF318C" stop-opacity="0"/>
</linearGradient>
<linearGradient id="paint7_linear_1725:872" x1="58.0814" y1="39.4819" x2="50.9352" y2="39.4819" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#6644FF" stop-opacity="0.8"/>
<stop offset="0.09676" stop-color="#6B57FF" stop-opacity="0.4"/>
<stop offset="0.70457" stop-color="#FF318C" stop-opacity="0"/>
</linearGradient>
<linearGradient id="paint8_linear_1725:872" x1="51.8655" y1="51.3952" x2="49.8093" y2="47.8337" gradientUnits="userSpaceOnUse">
<stop offset="0.00572" stop-color="#FF318C"/>
<stop offset="0.46934" stop-color="#6B57FF" stop-opacity="0"/>
</linearGradient>
<linearGradient id="paint9_linear_1725:872" x1="18.9999" y1="2.93734" x2="18.9999" y2="20.5615" gradientUnits="userSpaceOnUse">
<stop offset="0.23873" stop-color="#FF5592" stop-opacity="0.65"/>
<stop offset="0.8289" stop-color="#FF57E4" stop-opacity="0"/>
</linearGradient>
</defs>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" fill="none" viewBox="0 0 64 64"><path fill="url(#paint0_linear_1725:872)" d="M32 62L57.975 46.98V16.964L32 2L6.02602 16.964H6.02502L32 31.984V62Z"/><path fill="url(#paint1_linear_1725:872)" d="M57.975 16.964L32 2L6.02602 16.964H6.02502L32 31.984L57.975 16.964Z"/><path fill="url(#paint2_linear_1725:872)" d="M57.975 16.964L32 2L6.02602 16.964H6.02502L32 31.984L57.975 16.964Z"/><path fill="url(#paint3_linear_1725:872)" d="M57.975 16.964L32 2L6.02602 16.964H6.02502L32 31.984L57.975 16.964Z"/><path fill="url(#paint4_linear_1725:872)" d="M6.026 46.9799V16.9639L32 31.9839L6.026 46.9799Z"/><path fill="url(#paint5_linear_1725:872)" d="M32 31.9844L6.026 46.9804L32 62.0004V31.9844Z" style="mix-blend-mode:overlay"/><path fill="url(#paint6_linear_1725:872)" d="M32 61.9999L57.975 46.9799V16.9639L32 31.9839V61.9999Z"/><path fill="url(#paint7_linear_1725:872)" d="M32 61.9999L57.975 46.9799V16.9639L32 31.9839V61.9999Z"/><path fill="url(#paint8_linear_1725:872)" d="M32 61.9999L57.975 46.9799V16.9639L32 31.9839V61.9999Z"/><g opacity=".8"><path fill="url(#paint9_linear_1725:872)" d="M25.028 27.9699L32 32V2L6 16.972L25.028 27.9699Z" style="mix-blend-mode:overlay"/></g><defs><linearGradient id="paint0_linear_1725:872" x1="17.068" x2="61.396" y1="11.563" y2="55.891" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#FDB60D"/><stop offset=".548" stop-color="#FF318C"/><stop offset=".888" stop-color="#6B57FF"/></linearGradient><linearGradient id="paint1_linear_1725:872" x1="25.59" x2="28.451" y1="28.067" y2="23.112" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#fff" stop-opacity=".6"/><stop offset=".081" stop-color="#FFC524" stop-opacity=".4"/><stop offset=".705" stop-color="#FFC524" stop-opacity="0"/></linearGradient><linearGradient id="paint2_linear_1725:872" x1="25.433" x2="29.696" y1="5.59" y2="12.974" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#F9ED32" stop-opacity=".6"/><stop offset=".198" stop-color="#FFC524" stop-opacity=".4"/><stop offset=".705" stop-color="#FFC524" stop-opacity="0"/></linearGradient><linearGradient id="paint3_linear_1725:872" x1="38.913" x2="37.014" y1="4.991" y2="8.28" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#FDB60D" stop-opacity=".6"/><stop offset=".234" stop-color="#FDB60D" stop-opacity=".4"/><stop offset=".518" stop-color="#FF318C" stop-opacity="0"/></linearGradient><linearGradient id="paint4_linear_1725:872" x1="6.026" x2="48.277" y1="31.972" y2="31.972" gradientUnits="userSpaceOnUse"><stop offset=".015"/><stop offset=".193"/><stop offset=".572" stop-color="#6B57FF"/><stop offset=".826" stop-color="#FF318C"/></linearGradient><linearGradient id="paint5_linear_1725:872" x1="25.237" x2="18.774" y1="19.192" y2="55.846" gradientUnits="userSpaceOnUse"><stop offset=".047" stop-color="#fff" stop-opacity=".86"/><stop offset=".767" stop-color="#CBCAA4" stop-opacity="0"/></linearGradient><linearGradient id="paint6_linear_1725:872" x1="32" x2="38.997" y1="39.482" y2="39.482" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#FFB2FF" stop-opacity=".6"/><stop offset=".081" stop-color="#D828FF" stop-opacity=".4"/><stop offset=".705" stop-color="#FF318C" stop-opacity="0"/></linearGradient><linearGradient id="paint7_linear_1725:872" x1="58.081" x2="50.935" y1="39.482" y2="39.482" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#64F" stop-opacity=".8"/><stop offset=".097" stop-color="#6B57FF" stop-opacity=".4"/><stop offset=".705" stop-color="#FF318C" stop-opacity="0"/></linearGradient><linearGradient id="paint8_linear_1725:872" x1="51.865" x2="49.809" y1="51.395" y2="47.834" gradientUnits="userSpaceOnUse"><stop offset=".006" stop-color="#FF318C"/><stop offset=".469" stop-color="#6B57FF" stop-opacity="0"/></linearGradient><linearGradient id="paint9_linear_1725:872" x1="19" x2="19" y1="2.937" y2="20.561" gradientUnits="userSpaceOnUse"><stop offset=".239" stop-color="#FF5592" stop-opacity=".65"/><stop offset=".829" stop-color="#FF57E4" stop-opacity="0"/></linearGradient></defs></svg>

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

+1 -1
View File
@@ -1 +1 @@
<svg height="1em" style="flex:none;line-height:1" viewBox="0 0 24 24" width="1em" xmlns="http://www.w3.org/2000/svg"><title>Gemini</title><path d="M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z" fill="#3186FF"></path><path d="M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z" fill="url(#lobe-icons-gemini-fill-0)"></path><path d="M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z" fill="url(#lobe-icons-gemini-fill-1)"></path><path d="M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z" fill="url(#lobe-icons-gemini-fill-2)"></path><defs><linearGradient gradientUnits="userSpaceOnUse" id="lobe-icons-gemini-fill-0" x1="7" x2="11" y1="15.5" y2="12"><stop stop-color="#08B962"></stop><stop offset="1" stop-color="#08B962" stop-opacity="0"></stop></linearGradient><linearGradient gradientUnits="userSpaceOnUse" id="lobe-icons-gemini-fill-1" x1="8" x2="11.5" y1="5.5" y2="11"><stop stop-color="#F94543"></stop><stop offset="1" stop-color="#F94543" stop-opacity="0"></stop></linearGradient><linearGradient gradientUnits="userSpaceOnUse" id="lobe-icons-gemini-fill-2" x1="3.5" x2="17.5" y1="13.5" y2="12"><stop stop-color="#FABC12"></stop><stop offset=".46" stop-color="#FABC12" stop-opacity="0"></stop></linearGradient></defs></svg>
<svg xmlns="http://www.w3.org/2000/svg" style="flex:none;line-height:1" width="1em" height="1em" viewBox="0 0 24 24"><title>Gemini</title><path fill="#3186FF" d="M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z"/><path fill="url(#lobe-icons-gemini-fill-0)" d="M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z"/><path fill="url(#lobe-icons-gemini-fill-1)" d="M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z"/><path fill="url(#lobe-icons-gemini-fill-2)" d="M20.616 10.835a14.147 14.147 0 01-4.45-3.001 14.111 14.111 0 01-3.678-6.452.503.503 0 00-.975 0 14.134 14.134 0 01-3.679 6.452 14.155 14.155 0 01-4.45 3.001c-.65.28-1.318.505-2.002.678a.502.502 0 000 .975c.684.172 1.35.397 2.002.677a14.147 14.147 0 014.45 3.001 14.112 14.112 0 013.679 6.453.502.502 0 00.975 0c.172-.685.397-1.351.677-2.003a14.145 14.145 0 013.001-4.45 14.113 14.113 0 016.453-3.678.503.503 0 000-.975 13.245 13.245 0 01-2.003-.678z"/><defs><linearGradient id="lobe-icons-gemini-fill-0" x1="7" x2="11" y1="15.5" y2="12" gradientUnits="userSpaceOnUse"><stop stop-color="#08B962"/><stop offset="1" stop-color="#08B962" stop-opacity="0"/></linearGradient><linearGradient id="lobe-icons-gemini-fill-1" x1="8" x2="11.5" y1="5.5" y2="11" gradientUnits="userSpaceOnUse"><stop stop-color="#F94543"/><stop offset="1" stop-color="#F94543" stop-opacity="0"/></linearGradient><linearGradient id="lobe-icons-gemini-fill-2" x1="3.5" x2="17.5" y1="13.5" y2="12" gradientUnits="userSpaceOnUse"><stop stop-color="#FABC12"/><stop offset=".46" stop-color="#FABC12" stop-opacity="0"/></linearGradient></defs></svg>

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.7 KiB

+1 -3
View File
@@ -1,3 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xml:space="preserve" width="97" height="97">
<path fill="#F05133" d="M92.71 44.408 52.591 4.291c-2.31-2.311-6.057-2.311-8.369 0l-8.33 8.332L46.459 23.19c2.456-.83 5.272-.273 7.229 1.685 1.969 1.97 2.521 4.81 1.67 7.275l10.186 10.185c2.465-.85 5.307-.3 7.275 1.671 2.75 2.75 2.75 7.206 0 9.958-2.752 2.751-7.208 2.751-9.961 0-2.068-2.07-2.58-5.11-1.531-7.658l-9.5-9.499v24.997c.67.332 1.303.774 1.861 1.332 2.75 2.75 2.75 7.206 0 9.959-2.75 2.749-7.209 2.749-9.957 0-2.75-2.754-2.75-7.21 0-9.959.68-.679 1.467-1.193 2.307-1.537v-25.23c-.84-.344-1.625-.853-2.307-1.537-2.083-2.082-2.584-5.14-1.516-7.698L31.798 16.715 4.288 44.222c-2.311 2.313-2.311 6.06 0 8.371l40.121 40.118c2.31 2.311 6.056 2.311 8.369 0L92.71 52.779c2.311-2.311 2.311-6.06 0-8.371z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="97" height="97" xml:space="preserve"><path fill="#F05133" d="M92.71 44.408 52.591 4.291c-2.31-2.311-6.057-2.311-8.369 0l-8.33 8.332L46.459 23.19c2.456-.83 5.272-.273 7.229 1.685 1.969 1.97 2.521 4.81 1.67 7.275l10.186 10.185c2.465-.85 5.307-.3 7.275 1.671 2.75 2.75 2.75 7.206 0 9.958-2.752 2.751-7.208 2.751-9.961 0-2.068-2.07-2.58-5.11-1.531-7.658l-9.5-9.499v24.997c.67.332 1.303.774 1.861 1.332 2.75 2.75 2.75 7.206 0 9.959-2.75 2.749-7.209 2.749-9.957 0-2.75-2.754-2.75-7.21 0-9.959.68-.679 1.467-1.193 2.307-1.537v-25.23c-.84-.344-1.625-.853-2.307-1.537-2.083-2.082-2.584-5.14-1.516-7.698L31.798 16.715 4.288 44.222c-2.311 2.313-2.311 6.06 0 8.371l40.121 40.118c2.31 2.311 6.056 2.311 8.369 0L92.71 52.779c2.311-2.311 2.311-6.06 0-8.371z"/></svg>

Before

Width:  |  Height:  |  Size: 802 B

After

Width:  |  Height:  |  Size: 798 B

+1 -4
View File
@@ -1,4 +1 @@
<svg width="1648" height="1648" viewBox="0 0 1648 1648" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1248 0H400C179.086 0 0 179.086 0 400V1248C0 1468.91 179.086 1648 400 1648H1248C1468.91 1648 1648 1468.91 1648 1248V400C1648 179.086 1468.91 0 1248 0Z" fill="white"/>
<path d="M1293.43 1351.06C1349.36 1338.92 1408.68 1305.87 1408.68 1305.87L1304.86 1220.35C1253.53 1178.1 1209.85 1127.35 1175.69 1070.32C1128.5 991.535 1063.29 925.049 985.455 876.335L947.439 854.198C934.413 845.144 925.332 831.032 924.039 815.111C923.211 804.845 925.671 795.668 931.41 787.592C951.204 759.692 1053.52 638.291 1072.27 622.778C1096.41 602.819 1123.32 586.217 1148.28 567.209C1151.83 564.503 1155.39 561.812 1158.9 559.067C1159.02 558.944 1159.2 558.848 1159.31 558.74C1167.32 552.416 1174.88 545.699 1180.89 537.734C1202.59 512.606 1207.86 490.391 1209.15 480.56C1206.22 471.098 1197.46 449.942 1173.05 425.537C1188.35 426.476 1206.87 438.575 1223.66 452.81C1234.93 434.795 1246.73 415.76 1258.52 396.686C1266.39 383.945 1254.71 374.414 1254.39 374.117L1254.32 374.102C1254.32 374.102 1254.32 374.048 1254.31 374.036C1254.01 373.709 1244.48 362.03 1231.76 369.902C1204.58 386.72 1177.42 403.553 1153.26 418.847C1153.26 418.847 1124.62 418.25 1090.72 447.536C1082.74 453.56 1076.02 461.117 1069.71 469.112C1069.59 469.235 1069.48 469.397 1069.38 469.52C1066.62 473.015 1063.93 476.576 1061.24 480.14C1042.22 505.115 1025.63 532.01 1005.67 556.157C990.171 574.919 868.758 677.216 840.858 697.013C832.782 702.752 823.617 705.224 813.339 704.381C797.433 703.103 783.306 694.007 774.249 680.984L752.115 642.968C703.401 565.103 636.915 499.922 558.126 452.729C501.102 418.577 450.36 374.876 408.105 323.564L322.557 219.743C322.557 219.743 289.491 279.05 277.362 334.985C294.234 355.502 338.247 406.421 389.478 445.307C334.398 419.405 293.679 399.377 261.564 382.628C256.614 419.255 258.546 474.647 263.643 517.544C298.41 532.757 357.606 556.196 417.867 568.652C369.666 579.923 316.791 581.975 275.961 581.174C283.155 607.727 293.16 634.811 306.621 662.057C312.345 674.66 318.612 686.966 325.383 699.011C346.989 704.954 431.817 717.311 476.955 707.168C432.048 723.2 356.655 750.134 356.655 750.134C414.561 822.179 478.56 880.793 478.56 880.793C575.907 828.449 598.098 821.297 671.109 773.546C552.876 869.753 522.189 909.032 489 949.4L465.873 981.854C453.855 998.714 443.427 1016.62 434.712 1035.4C405.549 1098.14 364.269 1231.85 364.269 1231.85C356.901 1255.15 373.977 1272.23 396.6 1264.18C396.6 1264.18 530.28 1222.9 593.052 1193.74C611.817 1185.01 629.751 1174.58 646.596 1162.57L679.05 1139.45C689.94 1130.49 700.764 1121.71 712.647 1111.35C712.647 1111.35 794.346 1208.14 878.328 1271.81C878.328 1271.81 905.265 1196.42 921.294 1151.51C911.136 1196.66 923.496 1281.49 929.451 1303.08C941.469 1309.85 953.802 1316.12 966.405 1321.84C993.666 1335.31 1020.73 1345.31 1047.29 1352.5C1046.5 1311.66 1048.54 1258.8 1059.81 1210.6C1072.27 1270.86 1095.69 1330.07 1110.92 1364.82C1153.81 1369.92 1209.21 1371.85 1245.84 1366.9C1229.08 1334.79 1209.06 1294.04 1183.16 1238.99C1222.04 1290.22 1272.96 1334.23 1293.48 1351.1L1293.43 1351.06Z" fill="black"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="1648" height="1648" fill="none" viewBox="0 0 1648 1648"><path fill="#fff" d="M1248 0H400C179.086 0 0 179.086 0 400V1248C0 1468.91 179.086 1648 400 1648H1248C1468.91 1648 1648 1468.91 1648 1248V400C1648 179.086 1468.91 0 1248 0Z"/><path fill="#000" d="M1293.43 1351.06C1349.36 1338.92 1408.68 1305.87 1408.68 1305.87L1304.86 1220.35C1253.53 1178.1 1209.85 1127.35 1175.69 1070.32C1128.5 991.535 1063.29 925.049 985.455 876.335L947.439 854.198C934.413 845.144 925.332 831.032 924.039 815.111C923.211 804.845 925.671 795.668 931.41 787.592C951.204 759.692 1053.52 638.291 1072.27 622.778C1096.41 602.819 1123.32 586.217 1148.28 567.209C1151.83 564.503 1155.39 561.812 1158.9 559.067C1159.02 558.944 1159.2 558.848 1159.31 558.74C1167.32 552.416 1174.88 545.699 1180.89 537.734C1202.59 512.606 1207.86 490.391 1209.15 480.56C1206.22 471.098 1197.46 449.942 1173.05 425.537C1188.35 426.476 1206.87 438.575 1223.66 452.81C1234.93 434.795 1246.73 415.76 1258.52 396.686C1266.39 383.945 1254.71 374.414 1254.39 374.117L1254.32 374.102C1254.32 374.102 1254.32 374.048 1254.31 374.036C1254.01 373.709 1244.48 362.03 1231.76 369.902C1204.58 386.72 1177.42 403.553 1153.26 418.847C1153.26 418.847 1124.62 418.25 1090.72 447.536C1082.74 453.56 1076.02 461.117 1069.71 469.112C1069.59 469.235 1069.48 469.397 1069.38 469.52C1066.62 473.015 1063.93 476.576 1061.24 480.14C1042.22 505.115 1025.63 532.01 1005.67 556.157C990.171 574.919 868.758 677.216 840.858 697.013C832.782 702.752 823.617 705.224 813.339 704.381C797.433 703.103 783.306 694.007 774.249 680.984L752.115 642.968C703.401 565.103 636.915 499.922 558.126 452.729C501.102 418.577 450.36 374.876 408.105 323.564L322.557 219.743C322.557 219.743 289.491 279.05 277.362 334.985C294.234 355.502 338.247 406.421 389.478 445.307C334.398 419.405 293.679 399.377 261.564 382.628C256.614 419.255 258.546 474.647 263.643 517.544C298.41 532.757 357.606 556.196 417.867 568.652C369.666 579.923 316.791 581.975 275.961 581.174C283.155 607.727 293.16 634.811 306.621 662.057C312.345 674.66 318.612 686.966 325.383 699.011C346.989 704.954 431.817 717.311 476.955 707.168C432.048 723.2 356.655 750.134 356.655 750.134C414.561 822.179 478.56 880.793 478.56 880.793C575.907 828.449 598.098 821.297 671.109 773.546C552.876 869.753 522.189 909.032 489 949.4L465.873 981.854C453.855 998.714 443.427 1016.62 434.712 1035.4C405.549 1098.14 364.269 1231.85 364.269 1231.85C356.901 1255.15 373.977 1272.23 396.6 1264.18C396.6 1264.18 530.28 1222.9 593.052 1193.74C611.817 1185.01 629.751 1174.58 646.596 1162.57L679.05 1139.45C689.94 1130.49 700.764 1121.71 712.647 1111.35C712.647 1111.35 794.346 1208.14 878.328 1271.81C878.328 1271.81 905.265 1196.42 921.294 1151.51C911.136 1196.66 923.496 1281.49 929.451 1303.08C941.469 1309.85 953.802 1316.12 966.405 1321.84C993.666 1335.31 1020.73 1345.31 1047.29 1352.5C1046.5 1311.66 1048.54 1258.8 1059.81 1210.6C1072.27 1270.86 1095.69 1330.07 1110.92 1364.82C1153.81 1369.92 1209.21 1371.85 1245.84 1366.9C1229.08 1334.79 1209.06 1294.04 1183.16 1238.99C1222.04 1290.22 1272.96 1334.23 1293.48 1351.1L1293.43 1351.06Z"/></svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.4 KiB

+1 -1
View File
@@ -1 +1 @@
<svg fill="none" height="64" viewBox="0 0 64 64" width="64" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="a" gradientUnits="userSpaceOnUse" x1=".850001" x2="62.62" y1="62.72" y2="1.81"><stop offset="0" stop-color="#ff9419"/><stop offset=".43" stop-color="#ff021d"/><stop offset=".99" stop-color="#e600ff"/></linearGradient><clipPath id="b"><path d="m0 0h64v64h-64z"/></clipPath><g clip-path="url(#b)"><path d="m20.34 3.66-16.68 16.68c-2.34 2.34-3.66 5.52-3.66 8.84v29.82c0 2.76 2.24 5 5 5h29.82c3.32 0 6.49-1.32 8.84-3.66l16.68-16.68c2.34-2.34 3.66-5.52 3.66-8.84v-29.82c0-2.76-2.24-5-5-5h-29.82c-3.32 0-6.49 1.32-8.84 3.66z" fill="url(#a)"/><path d="m48 16h-40v40h40z" fill="#000"/><path d="m30 47h-17v4h17z" fill="#fff"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64" fill="none" viewBox="0 0 64 64"><linearGradient id="a" x1=".85" x2="62.62" y1="62.72" y2="1.81" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#ff9419"/><stop offset=".43" stop-color="#ff021d"/><stop offset=".99" stop-color="#e600ff"/></linearGradient><clipPath id="b"><path d="m0 0h64v64h-64z"/></clipPath><g clip-path="url(#b)"><path fill="url(#a)" d="m20.34 3.66-16.68 16.68c-2.34 2.34-3.66 5.52-3.66 8.84v29.82c0 2.76 2.24 5 5 5h29.82c3.32 0 6.49-1.32 8.84-3.66l16.68-16.68c2.34-2.34 3.66-5.52 3.66-8.84v-29.82c0-2.76-2.24-5-5-5h-29.82c-3.32 0-6.49 1.32-8.84 3.66z"/><path fill="#000" d="m48 16h-40v40h40z"/><path fill="#fff" d="m30 47h-17v4h17z"/></g></svg>

Before

Width:  |  Height:  |  Size: 785 B

After

Width:  |  Height:  |  Size: 781 B

+10
View File
@@ -0,0 +1,10 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200" fill="none">
<g fill="#40BE46">
<!-- Eye shape -->
<path d="M100 40C55 40 20 80 10 100c10 20 45 60 90 60s80-40 90-60c-10-20-45-60-90-60zm0 100c-35 0-63-28-75-40 12-12 40-40 75-40s63 28 75 40c-12 12-40 40-75 40z"/>
<!-- Inner circle (magnifying glass lens) -->
<path d="M100 72a28 28 0 1 0 0 56 28 28 0 0 0 0-56zm0 44a16 16 0 1 1 0-32 16 16 0 0 1 0 32z"/>
<!-- Horizontal line below -->
<rect x="25" y="170" width="150" height="12" rx="6"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 542 B

+1 -3
View File
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

+1 -14
View File
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

+1 -7
View File
@@ -1,7 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" viewBox="0 328.5 120 135" enable-background="new 0 328.5 612 135" xml:space="preserve" style="&#10;">
<polygon fill="#185F85" points="29,434.2 29,439.3 29,446.3 47.4,457.1 51.9,459.7 58.3,463.2 62.7,455.5 64.3,447.3 58.3,441.9 29,425 "/>
<path fill="#0D84BE" d="M116.5,429.8V396c0-11.1,0-22.3,0-33.4l-12.1-0.3l-2.9,3.8l-3.8,7V419L58,442.2v8.9v12.4 C77.4,452,97.1,440.9,116.5,429.8z"/>
<polygon fill="#FFFFFF" points="18.5,385.5 18.5,351.7 0,362.6 0,429.8 18.5,440.3 18.5,406.8 58.3,429.8 58.3,429.8 58.3,408.4 36.9,396 58.3,383.9 58.3,362.6 "/>
<path fill="#1A9BD7" d="M58.3,328.8c19.1,11.1,38.8,22.6,58.3,33.8l-10.8,6l-8,4.5l-39.5-22.9L29,366.7c0-7,0-14.3,0-21.3 L58.3,328.8z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" id="Layer_1" x="0" y="0" enable-background="new 0 328.5 612 135" version="1.1" viewBox="0 328.5 120 135" xml:space="preserve"><polygon fill="#185F85" points="29 434.2 29 439.3 29 446.3 47.4 457.1 51.9 459.7 58.3 463.2 62.7 455.5 64.3 447.3 58.3 441.9 29 425"/><path fill="#0D84BE" d="M116.5,429.8V396c0-11.1,0-22.3,0-33.4l-12.1-0.3l-2.9,3.8l-3.8,7V419L58,442.2v8.9v12.4 C77.4,452,97.1,440.9,116.5,429.8z"/><polygon fill="#FFF" points="18.5 385.5 18.5 351.7 0 362.6 0 429.8 18.5 440.3 18.5 406.8 58.3 429.8 58.3 429.8 58.3 408.4 36.9 396 58.3 383.9 58.3 362.6"/><path fill="#1A9BD7" d="M58.3,328.8c19.1,11.1,38.8,22.6,58.3,33.8l-10.8,6l-8,4.5l-39.5-22.9L29,366.7c0-7,0-14.3,0-21.3 L58.3,328.8z"/></svg>

Before

Width:  |  Height:  |  Size: 819 B

After

Width:  |  Height:  |  Size: 784 B

+1 -1
View File
@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="24" viewBox="0 0 20 24" fill="none"><path d="M3.80081 18.5661C1.32306 24.0572 6.59904 25.434 10.4904 22.2205C11.6339 25.8242 15.926 23.1361 17.4652 20.3445C20.8578 14.1915 19.4877 7.91459 19.1361 6.61988C16.7244 -2.20972 4.67055 -2.21852 2.59581 6.6649C2.11136 8.21946 2.10284 9.98752 1.82846 11.8233C1.69011 12.749 1.59258 13.3398 1.23436 14.3135C1.02841 14.8733 0.745043 15.3704 0.299833 16.2082C-0.391594 17.5095 -0.0998802 20.021 3.46397 18.7186V18.7195L3.80081 18.5661Z" fill="white"></path><path d="M10.9614 10.4413C9.97202 10.4413 9.82422 9.25893 9.82422 8.55407C9.82422 7.91791 9.93824 7.4124 10.1542 7.09197C10.3441 6.81003 10.6158 6.66699 10.9614 6.66699C11.3071 6.66699 11.6036 6.81228 11.8128 7.09892C12.0511 7.42554 12.177 7.92861 12.177 8.55407C12.177 9.73591 11.7226 10.4413 10.9616 10.4413H10.9614Z" fill="black"></path><path d="M15.0318 10.4413C14.0423 10.4413 13.8945 9.25893 13.8945 8.55407C13.8945 7.91791 14.0086 7.4124 14.2245 7.09197C14.4144 6.81003 14.6861 6.66699 15.0318 6.66699C15.3774 6.66699 15.6739 6.81228 15.8831 7.09892C16.1214 7.42554 16.2474 7.92861 16.2474 8.55407C16.2474 9.73591 15.793 10.4413 15.0319 10.4413H15.0318Z" fill="black"></path></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="24" fill="none" viewBox="0 0 20 24"><path fill="#fff" d="M3.80081 18.5661C1.32306 24.0572 6.59904 25.434 10.4904 22.2205C11.6339 25.8242 15.926 23.1361 17.4652 20.3445C20.8578 14.1915 19.4877 7.91459 19.1361 6.61988C16.7244 -2.20972 4.67055 -2.21852 2.59581 6.6649C2.11136 8.21946 2.10284 9.98752 1.82846 11.8233C1.69011 12.749 1.59258 13.3398 1.23436 14.3135C1.02841 14.8733 0.745043 15.3704 0.299833 16.2082C-0.391594 17.5095 -0.0998802 20.021 3.46397 18.7186V18.7195L3.80081 18.5661Z"/><path fill="#000" d="M10.9614 10.4413C9.97202 10.4413 9.82422 9.25893 9.82422 8.55407C9.82422 7.91791 9.93824 7.4124 10.1542 7.09197C10.3441 6.81003 10.6158 6.66699 10.9614 6.66699C11.3071 6.66699 11.6036 6.81228 11.8128 7.09892C12.0511 7.42554 12.177 7.92861 12.177 8.55407C12.177 9.73591 11.7226 10.4413 10.9616 10.4413H10.9614Z"/><path fill="#000" d="M15.0318 10.4413C14.0423 10.4413 13.8945 9.25893 13.8945 8.55407C13.8945 7.91791 14.0086 7.4124 14.2245 7.09197C14.4144 6.81003 14.6861 6.66699 15.0318 6.66699C15.3774 6.66699 15.6739 6.81228 15.8831 7.09892C16.1214 7.42554 16.2474 7.92861 16.2474 8.55407C16.2474 9.73591 15.793 10.4413 15.0319 10.4413H15.0318Z"/></svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 7.5 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

+438
View File
@@ -0,0 +1,438 @@
<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" viewBox="0 0 216 256" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>Tux</title>
<defs id="tux_fx">
<linearGradient id="gradient_belly_shadow">
<stop offset="0" stop-color="#000000"/>
<stop offset="1" stop-color="#000000" stop-opacity="0.25"/>
</linearGradient>
<linearGradient id="gradient_wing_tip_right_shadow">
<stop offset="0" stop-color="#110800"/>
<stop offset="0.59" stop-color="#a65a00" stop-opacity="0.8"/>
<stop offset="1" stop-color="#ff921e" stop-opacity="0"/>
</linearGradient>
<linearGradient id="gradient_wing_tip_right_glare_1">
<stop offset="0" stop-color="#7c7c7c"/>
<stop offset="1" stop-color="#7c7c7c" stop-opacity="0.33"/>
</linearGradient>
<linearGradient id="gradient_wing_tip_right_glare_2">
<stop offset="0" stop-color="#7c7c7c"/>
<stop offset="1" stop-color="#7c7c7c" stop-opacity="0.33"/>
</linearGradient>
<linearGradient id="gradient_foot_left_layer_1">
<stop offset="0" stop-color="#b98309"/>
<stop offset="1" stop-color="#382605"/>
</linearGradient>
<linearGradient id="gradient_foot_left_glare">
<stop offset="0" stop-color="#ebc40c"/>
<stop offset="1" stop-color="#ebc40c" stop-opacity="0"/>
</linearGradient>
<linearGradient id="gradient_foot_right_shadow">
<stop offset="0" stop-color="#000000"/>
<stop offset="1" stop-color="#000000" stop-opacity="0"/>
</linearGradient>
<linearGradient id="gradient_foot_right_layer_1">
<stop offset="0" stop-color="#3e2a06"/>
<stop offset="1" stop-color="#ad780a"/>
</linearGradient>
<linearGradient id="gradient_foot_right_glare">
<stop offset="0" stop-color="#f3cd0c"/>
<stop offset="1" stop-color="#f3cd0c" stop-opacity="0"/>
</linearGradient>
<linearGradient id="gradient_eyeball">
<stop offset="0" stop-color="#fefefc"/>
<stop offset="0.75" stop-color="#fefefc"/>
<stop offset="1" stop-color="#d4d4d4"/>
</linearGradient>
<linearGradient id="gradient_pupil_left_glare">
<stop offset="0" stop-color="#757574" stop-opacity="0"/>
<stop offset="0.25" stop-color="#757574"/>
<stop offset="0.5" stop-color="#757574"/>
<stop offset="1" stop-color="#757574" stop-opacity="0"/>
</linearGradient>
<linearGradient id="gradient_pupil_right_glare_2">
<stop offset="0" stop-color="#949494" stop-opacity="0.39"/>
<stop offset="0.5" stop-color="#949494"/>
<stop offset="1" stop-color="#949494" stop-opacity="0.39"/>
</linearGradient>
<linearGradient id="gradient_eyelid_left">
<stop offset="0" stop-color="#c8c8c8"/>
<stop offset="1" stop-color="#797978"/>
</linearGradient>
<linearGradient id="gradient_eyelid_right">
<stop offset="0" stop-color="#747474"/>
<stop offset="0.13" stop-color="#8c8c8c"/>
<stop offset="0.25" stop-color="#a4a4a4"/>
<stop offset="0.5" stop-color="#d4d4d4"/>
<stop offset="0.62" stop-color="#d4d4d4"/>
<stop offset="1" stop-color="#7c7c7c"/>
</linearGradient>
<linearGradient id="gradient_eyebrow">
<stop offset="0" stop-color="#646464" stop-opacity="0"/>
<stop offset="0.31" stop-color="#646464" stop-opacity="0.58"/>
<stop offset="0.47" stop-color="#646464"/>
<stop offset="0.73" stop-color="#646464" stop-opacity="0.26"/>
<stop offset="1" stop-color="#646464" stop-opacity="0"/>
</linearGradient>
<linearGradient id="gradient_beak_base">
<stop offset="0" stop-color="#020204"/>
<stop offset="0.73" stop-color="#020204"/>
<stop offset="1" stop-color="#5c5c5c"/>
</linearGradient>
<linearGradient id="gradient_mandible_lower">
<stop offset="0" stop-color="#d2940a"/>
<stop offset="0.75" stop-color="#d89c08"/>
<stop offset="0.87" stop-color="#b67e07"/>
<stop offset="1" stop-color="#946106"/>
</linearGradient>
<linearGradient id="gradient_mandible_upper">
<stop offset="0" stop-color="#ad780a"/>
<stop offset="0.12" stop-color="#d89e08"/>
<stop offset="0.25" stop-color="#edb80b"/>
<stop offset="0.39" stop-color="#ebc80d"/>
<stop offset="0.53" stop-color="#f5d838"/>
<stop offset="0.77" stop-color="#f6d811"/>
<stop offset="1" stop-color="#f5cd31"/>
</linearGradient>
<linearGradient id="gradient_nares">
<stop offset="0" stop-color="#3a2903"/>
<stop offset="0.55" stop-color="#735208"/>
<stop offset="1" stop-color="#ac8c04"/>
</linearGradient>
<linearGradient id="gradient_beak_corner">
<stop offset="0" stop-color="#f5ce2d"/>
<stop offset="1" stop-color="#d79b08"/>
</linearGradient>
<radialGradient id="fill_belly_shadow_left" href="#gradient_belly_shadow" xlink:href="#gradient_belly_shadow"
gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(61.18,121.19) scale(19,18)"/>
<radialGradient id="fill_belly_shadow_right" href="#gradient_belly_shadow" xlink:href="#gradient_belly_shadow"
gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(125.74,131.6) scale(23.6,18)"/>
<radialGradient id="fill_belly_shadow_middle" href="#gradient_belly_shadow" xlink:href="#gradient_belly_shadow"
gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(94.21,127.47) scale(9.35,10)"/>
<linearGradient id="fill_foot_left_base" href="#gradient_foot_left_layer_1" xlink:href="#gradient_foot_left_layer_1"
gradientUnits="userSpaceOnUse" x1="23.18" y1="193.01" x2="64.31" y2="262.02"/>
<linearGradient id="fill_foot_left_glare" href="#gradient_foot_left_glare" xlink:href="#gradient_foot_left_glare"
gradientUnits="userSpaceOnUse" x1="64.47" y1="210.83" x2="77.41" y2="235.21"/>
<linearGradient id="fill_foot_right_shadow" href="#gradient_foot_right_shadow" xlink:href="#gradient_foot_right_shadow"
gradientUnits="userSpaceOnUse" x1="146.93" y1="211.96" x2="150.2" y2="235.73"/>
<linearGradient id="fill_foot_right_base" href="#gradient_foot_right_layer_1" xlink:href="#gradient_foot_right_layer_1"
gradientUnits="userSpaceOnUse" x1="151.5" y1="253.02" x2="192.94" y2="185.84"/>
<linearGradient id="fill_foot_right_glare" href="#gradient_foot_right_glare" xlink:href="#gradient_foot_right_glare"
gradientUnits="userSpaceOnUse" x1="162.81" y1="180.67" x2="161.59" y2="191.64"/>
<radialGradient id="fill_wing_tip_right_shadow_lower" href="#gradient_wing_tip_right_shadow" xlink:href="#gradient_wing_tip_right_shadow"
gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(169.71,194.53) rotate(15) scale(19.66,20.64)"/>
<radialGradient id="fill_wing_tip_right_shadow_upper" href="#gradient_wing_tip_right_shadow" xlink:href="#gradient_wing_tip_right_shadow"
gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(169.71,189.89) rotate(-2.42) scale(19.74,14.86)"/>
<radialGradient id="fill_wing_tip_right_glare_1" href="#gradient_wing_tip_right_glare_1" xlink:href="#gradient_wing_tip_right_glare_1"
gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(184.65,176.62) rotate(23.5) scale(6.95,3.21)"/>
<linearGradient id="fill_wing_tip_right_glare_2" href="#gradient_wing_tip_right_glare_2" xlink:href="#gradient_wing_tip_right_glare_2"
gradientUnits="userSpaceOnUse" x1="165.69" y1="173.58" x2="168.27" y2="173.47"/>
<radialGradient id="fill_eyeball_left" href="#gradient_eyeball" xlink:href="#gradient_eyeball"
gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(86.49,51.41) rotate(-0.6) scale(10.24,15.68)"/>
<linearGradient id="fill_pupil_left_glare" href="#gradient_pupil_left_glare" xlink:href="#gradient_pupil_left_glare"
gradientUnits="userSpaceOnUse" x1="84.29" y1="46.64" x2="89.32" y2="55.63"/>
<radialGradient id="fill_eyelid_left" href="#gradient_eyelid_left" xlink:href="#gradient_eyelid_left"
gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(84.89,43.74) rotate(-9.35) scale(6.25,5.77)"/>
<linearGradient id="fill_eyebrow_left" href="#gradient_eyebrow" xlink:href="#gradient_eyebrow"
gradientUnits="userSpaceOnUse" x1="83.59" y1="32.51" x2="94.48" y2="43.63"/>
<radialGradient id="fill_eyeball_right" href="#gradient_eyeball" xlink:href="#gradient_eyeball"
gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(118.06,51.41) rotate(-1.8) scale(13.64,15.68)"/>
<linearGradient id="fill_pupil_right_glare" href="#gradient_pupil_right_glare_2" xlink:href="#gradient_pupil_right_glare_2"
gradientUnits="userSpaceOnUse" x1="117.87" y1="47.25" x2="123.66" y2="54.11"/>
<linearGradient id="fill_eyelid_right" href="#gradient_eyelid_right" xlink:href="#gradient_eyelid_right"
gradientUnits="userSpaceOnUse" x1="112.9" y1="36.23" x2="131.32" y2="47.01"/>
<linearGradient id="fill_eyebrow_right" href="#gradient_eyebrow" xlink:href="#gradient_eyebrow"
gradientUnits="userSpaceOnUse" x1="119.16" y1="31.56" x2="131.42" y2="43.14"/>
<radialGradient id="fill_beak_base" href="#gradient_beak_base" xlink:href="#gradient_beak_base"
gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(97.64,60.12) rotate(-36) scale(11.44,10.38)"/>
<radialGradient id="fill_mandible_lower_base" href="#gradient_mandible_lower" xlink:href="#gradient_mandible_lower"
gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(109.77,70.61) rotate(-22.4) scale(27.15,19.07)"/>
<linearGradient id="fill_mandible_upper_base" href="#gradient_mandible_upper" xlink:href="#gradient_mandible_upper"
gradientUnits="userSpaceOnUse" x1="78.09" y1="69.26" x2="126.77" y2="68.88"/>
<radialGradient id="fill_naris_left" href="#gradient_nares" xlink:href="#gradient_nares"
gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(92.11,59.88) scale(1.32,1.42)"/>
<radialGradient id="fill_naris_right" href="#gradient_nares" xlink:href="#gradient_nares"
gradientUnits="userSpaceOnUse" cx="0" cy="0" r="1" gradientTransform="translate(104.65,59.7) scale(2.78,1.62)"/>
<linearGradient id="fill_beak_corner" href="#gradient_beak_corner" xlink:href="#gradient_beak_corner"
gradientUnits="userSpaceOnUse" x1="126.74" y1="67.49" x2="126.74" y2="71.09"/>
<filter id="blur_belly_shadow_left">
<feGaussianBlur stdDeviation="0.64 0.55"/>
</filter>
<filter id="blur_belly_shadow_right">
<feGaussianBlur stdDeviation="0.98"/>
</filter>
<filter id="blur_belly_shadow_middle">
<feGaussianBlur stdDeviation="0.68"/>
</filter>
<filter id="blur_belly_shadow_lower" x="-0.8" width="2.6" y="-0.2" height="1.4">
<feGaussianBlur stdDeviation="1.25"/>
</filter>
<filter id="blur_belly_glare" x="-0.8" width="2.6" y="-0.5" height="2">
<feGaussianBlur stdDeviation="1.78 2.19"/>
</filter>
<filter id="blur_head_glare" x="-0.3" width="1.6" y="-0.3" height="1.6">
<feGaussianBlur stdDeviation="1.73"/>
</filter>
<filter id="blur_neck_glare" x="-0.2" width="1.4" y="-0.2" height="1.4">
<feGaussianBlur stdDeviation="0.78"/>
</filter>
<filter id="blur_wing_left_glare" x="-0.2" width="1.4" y="-0.2" height="1.4">
<feGaussianBlur stdDeviation="0.98"/>
</filter>
<filter id="blur_wing_right_glare" x="-0.2" width="1.4" y="-0.2" height="1.4">
<feGaussianBlur stdDeviation="1.19 1.17"/>
</filter>
<filter id="blur_foot_left_layer_1" x="-0.2" width="1.4" y="-0.2" height="1.4">
<feGaussianBlur stdDeviation="3.38"/>
</filter>
<filter id="blur_foot_left_layer_2">
<feGaussianBlur stdDeviation="2.1 2.06"/>
</filter>
<filter id="blur_foot_left_glare">
<feGaussianBlur stdDeviation="0.32"/>
</filter>
<filter id="blur_foot_right_shadow">
<feGaussianBlur stdDeviation="1.95 1.9"/>
</filter>
<filter id="blur_foot_right_layer_1" x="-0.2" width="1.4" y="-0.2" height="1.4">
<feGaussianBlur stdDeviation="4.12"/>
</filter>
<filter id="blur_foot_right_layer_2" x="-0.2" width="1.4" y="-0.2" height="1.4">
<feGaussianBlur stdDeviation="3.12 3.37"/>
</filter>
<filter id="blur_foot_right_glare" x="-0.2" width="1.4" y="-0.2" height="1.4">
<feGaussianBlur stdDeviation="0.41"/>
</filter>
<filter id="blur_wing_tip_right_shadow_lower" x="-0.3" width="1.6" y="-0.3" height="1.6">
<feGaussianBlur stdDeviation="2.45"/>
</filter>
<filter id="blur_wing_tip_right_shadow_upper" x="-0.2" width="1.4" y="-0.2" height="1.4">
<feGaussianBlur stdDeviation="1.12 0.81"/>
</filter>
<filter id="blur_wing_tip_right_glare" x="-0.2" width="1.4" y="-0.2" height="1.4">
<feGaussianBlur stdDeviation="0.88"/>
</filter>
<filter id="blur_pupil_left_glare" x="-0.3" width="1.6" y="-0.3" height="1.6">
<feGaussianBlur stdDeviation="0.44"/>
</filter>
<filter id="blur_eyebrow_left">
<feGaussianBlur stdDeviation="0.12"/>
</filter>
<filter id="blur_pupil_right_glare" x="-0.2" width="1.4" y="-0.2" height="1.4">
<feGaussianBlur stdDeviation="0.45"/>
</filter>
<filter id="blur_eyebrow_right">
<feGaussianBlur stdDeviation="0.13"/>
</filter>
<filter id="blur_beak_shadow_lower" x="-0.2" width="1.4" y="-0.2" height="1.4">
<feGaussianBlur stdDeviation="1.75"/>
</filter>
<filter id="blur_beak_shadow_upper">
<feGaussianBlur stdDeviation="0.8 0.74"/>
</filter>
<filter id="blur_mandible_lower_glare" x="-0.2" width="1.4" y="-0.2" height="1.4">
<feGaussianBlur stdDeviation="0.77"/>
</filter>
<filter id="blur_mandible_upper_shadow">
<feGaussianBlur stdDeviation="0.65"/>
</filter>
<filter id="blur_mandible_upper_glare" x="-0.2" width="1.4" y="-0.2" height="1.4">
<feGaussianBlur stdDeviation="0.73"/>
</filter>
<filter id="blur_naris_left" x="-0.2" width="1.4" y="-0.2" height="1.4">
<feGaussianBlur stdDeviation="0.1"/>
</filter>
<filter id="blur_naris_right">
<feGaussianBlur stdDeviation="0.1"/>
</filter>
<filter id="blur_beak_corner" x="-0.2" width="1.4" y="-0.2" height="1.4">
<feGaussianBlur stdDeviation="0.23"/>
</filter>
<clipPath id="clip_body">
<use href="#body_base" xlink:href="#body_base"/>
</clipPath>
<clipPath id="clip_wing_left">
<use href="#wing_left_base" xlink:href="#wing_left_base"/>
</clipPath>
<clipPath id="clip_wing_right">
<use href="#wing_right_base" xlink:href="#wing_right_base"/>
</clipPath>
<clipPath id="clip_foot_left">
<use href="#foot_left_base" xlink:href="#foot_left_base"/>
</clipPath>
<clipPath id="clip_foot_right">
<use href="#foot_right_base" xlink:href="#foot_right_base"/>
</clipPath>
<clipPath id="clip_wing_tip_right">
<use href="#wing_tip_right_base" xlink:href="#wing_tip_right_base"/>
</clipPath>
<clipPath id="clip_eye_left">
<use href="#eyeball_left" xlink:href="#eyeball_left"/>
</clipPath>
<clipPath id="clip_pupil_left">
<use href="#pupil_left_base" xlink:href="#pupil_left_base"/>
</clipPath>
<clipPath id="clip_eye_right">
<use href="#eyeball_right" xlink:href="#eyeball_right"/>
</clipPath>
<clipPath id="clip_pupil_right">
<use href="#pupil_right_base" xlink:href="#pupil_right_base"/>
</clipPath>
<clipPath id="clip_mandible_lower">
<use href="#mandible_lower_base" xlink:href="#mandible_lower_base"/>
</clipPath>
<clipPath id="clip_mandible_upper">
<use href="#mandible_upper_base" xlink:href="#mandible_upper_base"/>
</clipPath>
<clipPath id="clip_beak">
<use href="#mandible_lower_base" xlink:href="#mandible_lower_base"/>
<use href="#mandible_upper_base" xlink:href="#mandible_upper_base"/>
</clipPath>
</defs>
<g id="tux">
<g id="body">
<path id="body_base" fill="#020204"
d="m 106.95,0 c -6,0 -12.02,1.18 -17.46,4.12 -5.78,3.11 -10.52,8.09 -13.43,13.97 -2.92,5.88 -4.06,12.16 -4.24,19.08 -0.33,13.14 0.3,26.92 1.29,39.41 0.26,3.8 0.74,6.02 0.25,9.93 -1.62,8.3 -8.88,13.88 -12.76,21.17 -4.27,8.04 -6.07,17.13 -9.29,25.65 -2.95,7.79 -7.09,15.1 -9.88,22.95 -3.91,10.97 -5.08,23.03 -2.5,34.39 1.97,8.66 6.08,16.78 11.62,23.73 -0.8,1.44 -1.58,2.91 -2.4,4.34 -2.57,4.43 -5.71,8.64 -7.17,13.55 -0.73,2.45 -1.02,5.07 -0.55,7.59 0.47,2.52 1.75,4.93 3.75,6.53 1.31,1.04 2.9,1.72 4.53,2.1 1.63,0.37 3.32,0.46 5,0.43 6.37,-0.14 12.55,-2.07 18.71,-3.69 3.66,-0.96 7.34,-1.81 11.03,-2.58 13.14,-2.69 27.8,-1.61 39.99,0.15 4.13,0.63 8.23,1.44 12.29,2.43 6.36,1.54 12.69,3.5 19.23,3.69 1.72,0.05 3.46,-0.03 5.14,-0.4 1.68,-0.38 3.31,-1.06 4.65,-2.13 2.01,-1.6 3.29,-4.02 3.76,-6.54 0.47,-2.52 0.18,-5.15 -0.56,-7.61 -1.48,-4.92 -4.65,-9.11 -7.27,-13.52 -1.04,-1.75 -2,-3.53 -3.03,-5.28 7.9,-8.87 14.26,-19.13 17.94,-30.4 4.01,-12.3 4.75,-25.55 3.06,-38.38 -1.69,-12.83 -5.76,-25.27 -11.11,-37.05 -6.72,-14.76 -12.37,-20.1 -16.47,-33.07 -4.42,-14.02 -0.77,-30.61 -4.06,-43.32 -1.17,-4.32 -3.04,-8.45 -5.45,-12.23 -2.82,-4.43 -6.4,-8.39 -10.65,-11.47 -6.78,-4.92 -15.3,-7.54 -23.96,-7.54 z"/>
<path id="belly" fill="#fdfdfb"
d="m 83.13,74 c -0.9,1.13 -1.48,2.49 -1.84,3.89 -0.35,1.4 -0.48,2.85 -0.54,4.3 -0.11,2.89 0.07,5.83 -0.7,8.62 -0.82,2.98 -2.65,5.57 -4.44,8.08 -3.11,4.36 -6.25,8.84 -7.78,13.97 -0.93,3.1 -1.24,6.39 -0.91,9.62 -3.47,5.1 -6.48,10.53 -8.98,16.18 -3.78,8.57 -6.37,17.69 -7.28,27.01 -1.12,11.41 0.34,23.15 4.85,33.69 3.25,7.63 8.11,14.6 14.38,20.04 3.18,2.76 6.72,5.11 10.5,6.97 13.11,6.45 29.31,6.46 42.2,-0.41 6.74,-3.59 12.43,-8.84 17.91,-14.15 3.3,-3.2 6.59,-6.48 9.11,-10.32 4.85,-7.41 6.54,-16.41 7.59,-25.2 1.83,-15.36 1.89,-31.6 -4.85,-45.53 -2.32,-4.8 -5.41,-9.22 -9.12,-13.05 -0.98,-6.7 -2.93,-13.27 -5.76,-19.42 -2.05,-4.45 -4.54,-8.68 -6.44,-13.18 -0.78,-1.85 -1.46,-3.75 -2.32,-5.56 -0.87,-1.81 -1.93,-3.55 -3.39,-4.94 -1.48,-1.42 -3.33,-2.43 -5.28,-3.07 -1.95,-0.65 -4.01,-0.94 -6.06,-1.04 -4.11,-0.21 -8.22,0.33 -12.33,0.16 -3.27,-0.13 -6.53,-0.7 -9.8,-0.51 -1.63,0.1 -3.26,0.39 -4.78,1.01 -1.52,0.61 -2.92,1.56 -3.94,2.84 z"/>
<g id="body_self_shadows">
<path id="belly_shadow_left" opacity="0.25" fill="url(#fill_belly_shadow_left)" filter="url(#blur_belly_shadow_left)" clip-path="url(#clip_body)"
d="m 68.67,115.18 c 0.87,1.31 -0.55,5.84 19.86,2.94 0,0 -3.59,0.39 -7.12,1.21 -5.49,1.84 -10.27,3.89 -13.97,6.61 -3.65,2.7 -6.33,6.21 -9.68,9.22 0,0 5.43,-9.92 6.78,-12.91 1.36,-2.99 -0.22,-2.85 0.85,-7.25 1.07,-4.4 3.69,-8.63 3.69,-8.63 0,0 -2.14,6.22 -0.41,8.81 z"/>
<path id="belly_shadow_right" opacity="0.42" fill="url(#fill_belly_shadow_right)" filter="url(#blur_belly_shadow_right)" clip-path="url(#clip_body)"
d="m 134.28,113.99 c -4.16,2.9 -6.6,2.56 -11.64,3.12 -5.05,0.57 -18.7,0.36 -18.7,0.36 0,0 1.97,-0.03 6.36,0.78 4.38,0.82 13.31,1.6 18.34,3.51 5.04,1.92 6.87,2.47 9.93,4.4 4.35,2.75 7.55,7.06 11.71,10.08 0,0 0.2,-4 -1.48,-6.99 -1.68,-2.99 -6.2,-7.7 -7.53,-12.1 -1.32,-4.4 -1.96,-13.04 -1.96,-13.04 0,0 -0.88,6.99 -5.03,9.88 z"/>
<path id="belly_shadow_middle" opacity="0.2" fill="url(#fill_belly_shadow_middle)" filter="url(#blur_belly_shadow_middle)" clip-path="url(#clip_body)"
d="m 95.17,107.81 c -0.16,1.25 -0.36,2.5 -0.6,3.74 -0.12,0.61 -0.26,1.22 -0.48,1.8 -0.23,0.58 -0.56,1.14 -1.02,1.55 -0.41,0.37 -0.9,0.62 -1.4,0.85 -1.94,0.88 -4.01,1.47 -6.12,1.74 0.84,0.06 1.68,0.14 2.53,0.23 0.53,0.06 1.06,0.12 1.57,0.25 0.52,0.14 1.03,0.34 1.46,0.65 0.47,0.35 0.84,0.82 1.12,1.34 0.55,1.02 0.73,2.2 0.83,3.37 0.13,1.48 0.14,2.98 0.03,4.46 0.1,-0.99 0.31,-1.98 0.62,-2.92 0.57,-1.72 1.47,-3.32 2.69,-4.65 0.49,-0.52 1.02,-1.01 1.6,-1.42 1.79,-1.26 4.07,-1.81 6.24,-1.51 -2.21,0.09 -4.44,-0.6 -6.2,-1.93 -0.9,-0.68 -1.68,-1.52 -2.22,-2.5 -0.84,-1.52 -1.08,-3.37 -0.65,-5.05 z"/>
<path id="belly_shadow_lower" opacity="0.11" fill="#000000" filter="url(#blur_belly_shadow_lower)" clip-path="url(#clip_body)"
d="m 89.85,137.14 c -1.06,4.03 -1.79,8.15 -2.17,12.31 -0.55,5.87 -0.42,11.78 -0.74,17.67 -0.26,4.99 -0.85,10.04 0.02,14.97 0.41,2.35 1.15,4.64 2.2,6.78 0.16,-0.82 0.29,-1.64 0.36,-2.47 0.37,-4 -0.3,-8.01 -0.53,-12.01 -0.4,-7.02 0.57,-14.04 0.97,-21.06 0.3,-5.39 0.27,-10.8 -0.11,-16.19 z"/>
</g>
<g id="body_glare">
<path id="belly_glare" opacity="0.75" fill="#7c7c7c" filter="url(#blur_belly_glare)" clip-path="url(#clip_body)"
d="m 160.08,131.23 c 1.03,-0.16 7.34,5.21 6.48,7.21 -0.86,1.99 -2.49,0.79 -3.65,0.8 -1.16,0.02 -4.33,1.46 -4.86,0.55 -0.54,-0.91 1.4,-3.03 2.41,-4.81 0.82,-1.43 -1.4,-3.59 -0.38,-3.75 z"/>
<path id="head_glare" fill="#7c7c7c" filter="url(#blur_head_glare)" clip-path="url(#clip_body)"
d="m 121.52,11.12 c -2.21,1.56 -1.25,3.51 -0.3,5.46 0.95,1.96 -2.09,7.59 -2.12,7.83 -0.03,0.24 5.98,-2.85 7.62,-4.87 1.94,-2.37 6.83,3.22 6.56,2.37 0.01,-1.52 -9.55,-12.34 -11.76,-10.79 z"/>
<path id="neck_glare" fill="#838384" filter="url(#blur_neck_glare)" clip-path="url(#clip_body)"
d="m 138.27,76.63 c -1.86,1.7 0.88,4.25 2.17,7.24 0.81,1.86 3.04,4.49 5.2,4.07 1.63,-0.32 2.63,-2.66 2.48,-4.3 -0.3,-3.18 -2.98,-3.93 -4.93,-5.02 -1.54,-0.86 -3.61,-3.18 -4.92,-1.99 z"/>
</g>
</g>
<g id="wings">
<g id="wing_left">
<path id="wing_left_base" fill="#020204"
d="m 63.98,100.91 c -6.1,6.92 -12.37,13.63 -15.81,21.12 -1.71,3.8 -2.51,7.93 -3.68,11.93 -1.32,4.54 -3.12,8.94 -5.14,13.22 -1.87,3.95 -3.93,7.81 -5.98,11.66 -1.5,2.81 -3.02,5.67 -3.54,8.81 -0.41,2.48 -0.18,5.04 0.46,7.47 0.63,2.43 1.64,4.75 2.79,6.98 4.88,9.55 12.21,17.77 20.89,24.07 3.94,2.85 8.15,5.32 12.58,7.35 2.4,1.09 4.92,2.07 7.56,2.11 1.32,0.03 2.65,-0.19 3.86,-0.72 1.2,-0.53 2.28,-1.38 3,-2.49 0.88,-1.36 1.18,-3.05 1,-4.66 -0.18,-1.61 -0.81,-3.15 -1.65,-4.53 -2.06,-3.38 -5.31,-5.83 -8.44,-8.25 -6.76,-5.23 -13.29,-10.76 -19.55,-16.58 -1.76,-1.65 -3.53,-3.34 -4.76,-5.42 -1.2,-2.02 -1.85,-4.32 -2.29,-6.63 -1.21,-6.33 -0.9,-12.99 1.25,-19.07 0.85,-2.38 1.96,-4.65 3.04,-6.93 1.86,-3.95 3.62,-7.98 6.07,-11.6 3.05,-4.51 7.13,-8.33 9.61,-13.17 2.1,-4.09 2.95,-8.68 3.76,-13.2 0.64,-3.54 1.85,-7 2.47,-10.54 -1.21,2.3 -5.11,6.07 -7.5,9.07 z"/>
<path id="wing_left_glare" opacity="0.95" fill="#7c7c7c" filter="url(#blur_wing_left_glare)" clip-path="url(#clip_wing_left)"
d="m 56.96,126.1 c -2,1.84 -3.73,3.97 -5.13,6.31 -2.3,3.84 -3.65,8.16 -5.33,12.31 -1.24,3.09 -2.69,6.2 -2.86,9.53 -0.09,1.71 0.16,3.42 0.22,5.13 0.06,1.71 -0.1,3.49 -0.94,4.98 -0.7,1.25 -1.87,2.23 -3.22,2.71 1.83,0.61 3.45,1.79 4.6,3.33 0.96,1.3 1.58,2.81 2.41,4.18 0.68,1.12 1.51,2.16 2.54,2.97 1.02,0.82 2.25,1.4 3.54,1.56 1.79,0.23 3.65,-0.36 4.97,-1.58 -1.66,-15.55 -0.14,-31.42 4.44,-46.37 0.29,-0.94 0.59,-1.89 0.67,-2.87 0.07,-0.99 -0.12,-2.03 -0.72,-2.81 -0.31,-0.42 -0.74,-0.75 -1.23,-0.96 -0.48,-0.2 -1.02,-0.28 -1.54,-0.21 -0.52,0.06 -1.03,0.26 -1.45,0.57 -0.42,0.32 -0.76,0.74 -0.97,1.22 z"/>
</g>
<g id="wing_right">
<path id="wing_right_base" fill="#020204"
d="m 162.76,127.12 c 5.24,4.22 8.57,10.59 9.6,17.24 0.8,5.18 0.28,10.51 -0.89,15.62 -1.17,5.12 -2.97,10.06 -4.77,15 -0.71,1.96 -1.43,3.95 -1.71,6.02 -0.29,2.08 -0.11,4.27 0.89,6.11 1.15,2.11 3.29,3.56 5.59,4.24 2.27,0.68 4.72,0.66 7.02,0.09 2.3,-0.57 6.17,-1.31 8.04,-2.77 4.75,-3.69 5.88,-10.1 7.01,-15.72 1.17,-5.87 0.6,-12.02 -0.43,-17.95 -1.41,-8.09 -3.78,-15.99 -6.79,-23.62 -2.22,-5.62 -5.06,-10.98 -8.44,-15.96 -3.32,-4.89 -8.02,-8.7 -11.5,-13.48 -1.21,-1.66 -2.66,-3.38 -3.84,-5.06 -2.56,-3.62 -1.98,-2.94 -3.57,-5.29 -1.15,-1.7 -2.97,-2.28 -4.88,-3.02 -1.92,-0.74 -4.06,-0.96 -6.04,-0.41 -2.6,0.73 -4.73,2.79 -5.86,5.24 -1.13,2.46 -1.33,5.28 -0.89,7.95 0.57,3.44 2.14,6.64 3.92,9.64 2,3.39 4.32,6.66 7.35,9.18 3.16,2.63 6.98,4.37 10.19,6.95 z"/>
<path id="wing_right_glare" fill="#838384" filter="url(#blur_wing_right_glare)" clip-path="url(#clip_wing_right)"
d="m 150.42,118.99 c 0.42,0.4 0.86,0.81 1.31,1.19 3.22,2.63 4.93,5.58 8.2,8.16 5.34,4.22 10.75,11.5 11.8,18.15 0.82,5.19 -0.26,8.01 -1.58,14.12 -1.32,6.12 -5.06,14.78 -7.09,20.68 -0.8,2.35 1.64,1.38 1.32,3.86 -0.16,1.22 -0.18,2.45 -0.03,3.67 0.02,-0.23 0.03,-0.48 0.06,-0.71 0.39,-3.38 1.42,-6.63 2.55,-9.82 2.17,-6.13 4.66,-12.15 6.38,-18.45 1.72,-6.29 1.53,-10.82 0.63,-16.23 -1.13,-6.81 -5.09,-13.09 -10.69,-17.24 -3.97,-2.93 -8.64,-4.81 -12.86,-7.38 z"/>
</g>
</g>
<g id="feet">
<g id="foot_left">
<path id="foot_left_base" fill="url(#fill_foot_left_base)"
d="m 34.98,175.33 c 1.38,-0.57 2.93,-0.68 4.39,-0.41 1.47,0.27 2.86,0.91 4.09,1.74 2.47,1.68 4.3,4.12 6.05,6.54 4.03,5.54 7.9,11.2 11.42,17.08 2.85,4.78 5.46,9.71 8.76,14.18 2.15,2.93 4.57,5.64 6.73,8.55 2.16,2.92 4.07,6.08 5.03,9.58 1.25,4.55 0.76,9.56 -1.4,13.75 -1.52,2.95 -3.86,5.48 -6.7,7.19 -2.84,1.71 -5.83,2.47 -9.15,2.47 -5.27,0 -10.42,-2.83 -15.32,-4.78 -9.98,-3.98 -20.82,-5.22 -31.11,-8.32 -3.16,-0.95 -6.27,-2.08 -9.45,-2.95 -1.42,-0.39 -2.85,-0.73 -4.19,-1.34 -1.34,-0.6 -2.59,-1.51 -3.33,-2.77 -0.57,-0.98 -0.8,-2.13 -0.8,-3.26 0,-1.14 0.28,-2.26 0.67,-3.32 0.77,-2.13 2.02,-4.06 2.86,-6.17 1.37,-3.44 1.62,-7.23 1.43,-10.93 -0.18,-3.69 -0.78,-7.36 -1.03,-11.05 -0.12,-1.65 -0.16,-3.32 0.16,-4.95 0.31,-1.62 1.01,-3.21 2.2,-4.35 1.1,-1.06 2.55,-1.69 4.05,-2 1.49,-0.31 3.03,-0.32 4.55,-0.29 1.52,0.03 3.05,0.12 4.57,-0.01 1.52,-0.12 3.05,-0.46 4.37,-1.22 1.26,-0.72 2.29,-1.79 3.14,-2.96 0.85,-1.17 1.54,-2.45 2.25,-3.72 0.7,-1.26 1.43,-2.52 2.36,-3.64 0.92,-1.12 2.06,-2.09 3.4,-2.64 z"/>
<path id="foot_left_layer_1" fill="#d99a03" filter="url(#blur_foot_left_layer_1)" clip-path="url(#clip_foot_left)"
d="m 37.16,177.7 c 1.25,-0.5 2.67,-0.56 3.98,-0.26 1.32,0.3 2.55,0.94 3.61,1.77 2.14,1.65 3.62,3.97 5.05,6.26 3.42,5.54 6.76,11.15 9.92,16.86 2.4,4.31 4.68,8.7 7.62,12.65 1.95,2.62 4.18,5.03 6.17,7.62 1.99,2.59 3.76,5.41 4.64,8.56 1.14,4.05 0.68,8.54 -1.28,12.26 -1.42,2.68 -3.58,4.96 -6.2,6.48 -2.61,1.52 -5.67,2.28 -8.69,2.14 -4.82,-0.22 -9.23,-2.63 -13.77,-4.26 -8.71,-3.16 -18.14,-3.59 -27.08,-6.05 -3.2,-0.87 -6.32,-2.03 -9.53,-2.84 -1.43,-0.36 -2.88,-0.66 -4.23,-1.23 -1.35,-0.57 -2.62,-1.45 -3.36,-2.72 -0.54,-0.95 -0.76,-2.06 -0.73,-3.15 0.04,-1.09 0.31,-2.17 0.7,-3.19 0.78,-2.04 2,-3.88 2.78,-5.92 1.19,-3.08 1.34,-6.47 1.12,-9.76 -0.22,-3.29 -0.8,-6.56 -1,-9.85 -0.08,-1.48 -0.1,-2.97 0.2,-4.41 0.3,-1.45 0.93,-2.85 1.98,-3.89 1.14,-1.13 2.7,-1.74 4.29,-1.99 1.58,-0.24 3.19,-0.13 4.78,0.01 1.6,0.14 3.2,0.32 4.8,0.23 1.6,-0.1 3.22,-0.49 4.54,-1.39 1.2,-0.81 2.1,-2 2.79,-3.27 0.69,-1.27 1.18,-2.64 1.71,-3.98 0.52,-1.35 1.09,-2.69 1.91,-3.89 0.82,-1.19 1.93,-2.24 3.28,-2.79 z"/>
<path id="foot_left_layer_2" fill="#f5bd0c" filter="url(#blur_foot_left_layer_2)" clip-path="url(#clip_foot_left)"
d="m 35.99,174.57 c 1.22,-0.6 2.65,-0.72 3.98,-0.45 1.33,0.27 2.57,0.92 3.62,1.77 2.09,1.7 3.43,4.13 4.67,6.51 2.84,5.46 5.5,11.04 8.9,16.19 2.48,3.73 5.33,7.2 7.83,10.92 3.39,5.03 6.15,10.57 7.29,16.5 0.76,4 0.74,8.31 -1.18,11.9 -1.27,2.37 -3.32,4.31 -5.75,5.52 -2.42,1.22 -5.21,1.71 -7.92,1.47 -4.27,-0.37 -8.14,-2.47 -12.16,-3.94 -7.13,-2.59 -14.84,-3.22 -22.18,-5.18 -3.09,-0.82 -6.13,-1.89 -9.26,-2.54 -1.39,-0.29 -2.8,-0.5 -4.12,-1 -1.32,-0.5 -2.57,-1.33 -3.25,-2.55 -0.47,-0.86 -0.63,-1.86 -0.56,-2.84 0.07,-0.97 0.36,-1.92 0.74,-2.83 0.77,-1.8 1.9,-3.46 2.49,-5.32 0.88,-2.75 0.52,-5.72 -0.14,-8.53 -0.65,-2.8 -1.6,-5.55 -1.89,-8.41 -0.13,-1.27 -0.13,-2.57 0.17,-3.82 0.29,-1.25 0.88,-2.45 1.81,-3.34 1.2,-1.15 2.88,-1.73 4.56,-1.89 1.67,-0.16 3.35,0.06 5.01,0.3 1.66,0.24 3.34,0.5 5.01,0.42 1.68,-0.07 3.39,-0.51 4.7,-1.54 1.3,-1.02 2.12,-2.53 2.59,-4.09 0.47,-1.57 0.62,-3.2 0.81,-4.82 0.19,-1.62 0.43,-3.26 1.06,-4.77 0.63,-1.51 1.69,-2.9 3.17,-3.64 z"/>
<path id="foot_left_glare" fill="url(#fill_foot_left_glare)" filter="url(#blur_foot_left_glare)" clip-path="url(#clip_foot_left)"
d="m 51.2,188.21 c 2.25,4.06 3.62,8.72 5.85,12.82 2.05,3.77 4.38,7.65 6.46,11.12 0.93,1.55 3.09,3.93 5.27,7.62 1.98,3.34 3.98,8.01 5.1,9.58 -0.64,-1.84 -1.96,-6.77 -3.54,-10.28 -1.47,-3.28 -3.19,-5.15 -4.24,-6.92 -2.08,-3.47 -4.33,-6.6 -6.47,-9.91 -2.95,-4.57 -5.2,-9.68 -8.43,-14.03 z"/>
</g>
<g id="foot_right">
<path id="foot_right_shadow" opacity="0.2" fill="url(#fill_foot_right_shadow)" filter="url(#blur_foot_right_shadow)" clip-path="url(#clip_body)"
d="m 198.7,215.61 c -0.4,1.33 -1.02,2.62 -1.81,3.8 -1.75,2.59 -4.3,4.55 -6.84,6.35 -4.33,3.07 -8.85,5.89 -12.89,9.38 -2.7,2.34 -5.17,4.97 -7.45,7.73 -1.95,2.36 -3.79,4.84 -6.02,6.94 -2.25,2.12 -4.89,3.84 -7.74,4.77 -3.47,1.13 -7.13,1.08 -10.47,0.22 -2.34,-0.6 -4.63,-1.64 -6.08,-3.53 -1.45,-1.89 -1.92,-4.44 -2.09,-6.94 -0.3,-4.42 0.23,-8.93 0.71,-13.42 0.4,-3.73 0.77,-7.46 0.92,-11.18 0.27,-6.77 -0.18,-13.47 -1.09,-20.05 -0.16,-1.11 -0.32,-2.22 -0.23,-3.35 0.09,-1.14 0.47,-2.32 1.27,-3.2 0.74,-0.81 1.77,-1.29 2.79,-1.52 1.02,-0.24 2.06,-0.25 3.09,-0.28 2.43,-0.06 4.86,-0.21 7.25,0.01 1.51,0.13 2.99,0.41 4.49,0.55 2.51,0.24 5.12,0.12 7.64,-0.62 2.71,-0.8 5.29,-2.29 8.05,-2.7 1.13,-0.17 2.26,-0.15 3.36,0.01 1.12,0.15 2.24,0.46 3.1,1.15 0.66,0.52 1.14,1.23 1.51,1.99 0.56,1.14 0.9,2.39 1.1,3.68 0.17,1.14 0.24,2.31 0.53,3.41 0.48,1.81 1.58,3.35 2.89,4.6 1.32,1.25 2.85,2.24 4.39,3.22 1.53,0.97 3.07,1.93 4.7,2.73 0.77,0.38 1.56,0.72 2.29,1.15 0.74,0.44 1.42,0.97 1.91,1.67 0.66,0.95 0.92,2.2 0.72,3.43 z"/>
<path id="foot_right_base" fill="url(#fill_foot_right_base)"
d="m 213.47,222.92 c -2.26,2.68 -5.4,4.45 -8.53,6.05 -5.33,2.71 -10.86,5.1 -15.87,8.37 -3.36,2.19 -6.46,4.76 -9.36,7.53 -2.48,2.37 -4.83,4.9 -7.61,6.91 -2.81,2.03 -6.05,3.5 -9.48,4.01 -0.95,0.14 -1.9,0.21 -2.86,0.21 -3.24,0 -6.48,-0.78 -9.46,-2.08 -2.7,-1.17 -5.3,-2.86 -6.86,-5.36 -1.56,-2.52 -1.92,-5.59 -1.92,-8.56 -0.01,-5.23 0.96,-10.41 1.87,-15.57 0.76,-4.29 1.48,-8.58 1.95,-12.91 0.85,-7.86 0.84,-15.81 0.28,-23.71 -0.1,-1.32 -0.21,-2.65 -0.01,-3.96 0.2,-1.31 0.74,-2.62 1.74,-3.48 0.93,-0.8 2.17,-1.16 3.4,-1.22 1.22,-0.07 2.44,0.12 3.65,0.3 2.85,0.42 5.73,0.74 8.52,1.48 1.76,0.46 3.48,1.08 5.23,1.56 2.94,0.79 6.01,1.17 9.02,0.82 3.25,-0.38 6.41,-1.6 9.68,-1.52 1.34,0.03 2.67,0.28 3.95,0.69 1.3,0.41 2.59,1 3.55,1.98 0.73,0.74 1.24,1.67 1.62,2.64 0.57,1.44 0.88,2.98 1.01,4.52 0.11,1.37 0.09,2.76 0.35,4.11 0.43,2.21 1.6,4.24 3.04,5.97 1.45,1.74 3.18,3.21 4.91,4.66 1.73,1.45 3.46,2.89 5.32,4.16 0.87,0.6 1.77,1.16 2.6,1.81 0.83,0.66 1.59,1.42 2.11,2.34 0.45,0.81 0.69,1.72 0.69,2.65 0,0.52 -0.07,1.04 -0.23,1.56 -0.45,1.43 -1.28,2.82 -2.3,4.04 z"/>
<path id="foot_right_layer_1" fill="#cd8907" filter="url(#blur_foot_right_layer_1)" clip-path="url(#clip_foot_right)"
d="m 213.21,216.12 c -0.53,1.33 -1.28,2.58 -2.22,3.67 -2.07,2.42 -4.93,4.01 -7.78,5.44 -4.88,2.44 -9.92,4.58 -14.5,7.52 -3.06,1.97 -5.9,4.28 -8.55,6.78 -2.26,2.13 -4.41,4.41 -6.95,6.21 -2.57,1.83 -5.53,3.14 -8.65,3.6 -3.8,0.56 -7.72,-0.16 -11.25,-1.67 -2.46,-1.06 -4.84,-2.56 -6.27,-4.83 -1.42,-2.26 -1.75,-5.02 -1.75,-7.69 -0.02,-4.71 0.87,-9.37 1.71,-14 0.7,-3.85 1.36,-7.71 1.78,-11.6 0.76,-7.08 0.73,-14.22 0.25,-21.32 -0.08,-1.19 -0.17,-2.39 0.01,-3.57 0.18,-1.18 0.67,-2.35 1.57,-3.13 0.85,-0.73 1.99,-1.05 3.11,-1.1 1.11,-0.06 2.22,0.12 3.33,0.28 2.61,0.38 5.23,0.67 7.78,1.33 1.61,0.42 3.18,0.98 4.78,1.4 2.68,0.72 5.49,1.06 8.24,0.74 2.97,-0.34 5.85,-1.44 8.83,-1.37 1.23,0.03 2.44,0.26 3.61,0.62 1.19,0.37 2.37,0.9 3.25,1.78 0.66,0.67 1.11,1.51 1.48,2.38 0.53,1.29 0.89,2.67 0.91,4.07 0.03,1.46 -0.28,2.92 -0.09,4.37 0.16,1.17 0.66,2.28 1.3,3.28 0.63,1 1.4,1.91 2.17,2.81 1.48,1.75 2.96,3.53 4.82,4.87 2.11,1.53 4.62,2.43 6.8,3.85 0.65,0.43 1.28,0.91 1.74,1.54 0.78,1.06 0.98,2.5 0.54,3.74 z"/>
<path id="foot_right_layer_2" fill="#f5c021" filter="url(#blur_foot_right_layer_2)" clip-path="url(#clip_foot_right)"
d="m 212.91,214.61 c -0.6,1.35 -1.37,2.6 -2.28,3.71 -2.12,2.58 -4.99,4.35 -8,5.49 -4.97,1.88 -10.39,2.13 -15.26,4.27 -2.97,1.3 -5.65,3.26 -8.36,5.12 -2.18,1.49 -4.42,2.94 -6.82,3.98 -2.72,1.19 -5.6,1.85 -8.5,2.32 -1.84,0.29 -3.71,0.51 -5.57,0.41 -1.86,-0.1 -3.72,-0.54 -5.37,-1.49 -1.24,-0.72 -2.36,-1.75 -3.03,-3.1 -0.73,-1.49 -0.86,-3.24 -0.85,-4.94 0.05,-4.5 1.02,-8.96 0.99,-13.47 -0.03,-3.93 -0.81,-7.8 -1.03,-11.72 -0.43,-7.54 1.19,-15.2 -0.24,-22.59 -0.22,-1.19 -0.53,-2.37 -0.52,-3.58 0.01,-0.6 0.1,-1.21 0.31,-1.77 0.22,-0.55 0.56,-1.06 1.01,-1.42 0.39,-0.29 0.84,-0.47 1.31,-0.56 0.46,-0.08 0.94,-0.06 1.41,0.01 0.93,0.15 1.82,0.51 2.73,0.78 2.6,0.78 5.35,0.76 8,1.35 1.66,0.36 3.26,0.97 4.91,1.41 2.75,0.76 5.63,1.08 8.46,0.75 3.04,-0.36 6.01,-1.46 9.07,-1.38 1.26,0.03 2.5,0.26 3.71,0.62 1.21,0.36 2.42,0.87 3.34,1.8 0.65,0.67 1.13,1.52 1.51,2.4 0.57,1.29 0.96,2.69 0.95,4.11 -0.01,0.74 -0.12,1.47 -0.19,2.21 -0.06,0.74 -0.08,1.49 0.09,2.2 0.18,0.72 0.55,1.37 0.97,1.96 0.42,0.59 0.9,1.12 1.34,1.7 1.22,1.61 2.1,3.49 3.05,5.3 0.95,1.81 2.02,3.6 3.53,4.91 2.05,1.77 4.7,2.48 6.99,3.89 0.67,0.41 1.31,0.89 1.78,1.55 0.38,0.52 0.63,1.15 0.73,1.81 0.09,0.65 0.03,1.34 -0.17,1.96 z"/>
<path id="foot_right_glare" fill="url(#fill_foot_right_glare)" filter="url(#blur_foot_right_glare)" clip-path="url(#clip_foot_right)"
d="m 148.08,181.58 c 2.82,-0.76 5.22,1.38 7.27,2.99 1.32,1.13 3.24,0.85 4.86,0.9 2.69,-0.09 5.36,0.45 8.05,0.12 5.3,-0.45 10.49,-1.75 15.81,-1.97 2.54,-0.16 5.4,-0.31 7.59,1.17 0.89,0.62 2.2,3.23 3.07,2.25 -0.36,-2.74 -2.39,-5.39 -5.11,-6.12 -2.14,-0.34 -4.3,0.25 -6.46,0.06 -6.39,-0.15 -12.75,-1.34 -19.16,-1 -4.46,0.04 -8.91,-0.17 -13.37,-0.34 -1.75,-0.36 -2.37,1.19 -3.32,1.79 0.25,0.19 0.34,0.25 0.77,0.15 z"/>
</g>
</g>
<g id="wing_tip_right">
<g id="wing_tip_right_shadow">
<path id="wing_tip_right_shadow_lower" opacity="0.35" fill="url(#fill_wing_tip_right_shadow_lower)" filter="url(#blur_wing_tip_right_shadow_lower)" clip-path="url(#clip_foot_right)"
d="m 185.49,187.61 c -0.48,-0.95 -1.36,-1.66 -2.35,-2.07 -0.98,-0.41 -2.06,-0.55 -3.13,-0.54 -2.13,0.02 -4.25,0.57 -6.38,0.39 -1.79,-0.16 -3.49,-0.83 -5.24,-1.26 -1.81,-0.44 -3.73,-0.61 -5.52,-0.12 -1.92,0.52 -3.61,1.81 -4.67,3.49 -0.94,1.48 -1.38,3.23 -1.52,4.98 -0.14,1.75 0.01,3.5 0.19,5.25 0.12,1.26 0.27,2.52 0.57,3.75 0.31,1.23 0.78,2.43 1.52,3.46 1.07,1.48 2.66,2.54 4.37,3.17 2.8,1.03 5.98,0.98 8.73,-0.15 4.88,-2.12 9.01,-5.92 11.52,-10.6 0.91,-1.68 1.61,-3.47 2.06,-5.31 0.18,-0.74 0.32,-1.49 0.32,-2.25 0.01,-0.75 -0.12,-1.52 -0.47,-2.19 z"/>
<path id="wing_tip_right_shadow_upper" opacity="0.35" fill="url(#fill_wing_tip_right_shadow_upper)" filter="url(#blur_wing_tip_right_shadow_upper)" clip-path="url(#clip_foot_right)"
d="m 185.49,184.89 c -0.48,-0.69 -1.36,-1.2 -2.35,-1.5 -0.98,-0.3 -2.06,-0.39 -3.13,-0.39 -2.13,0.02 -4.25,0.42 -6.38,0.28 -1.79,-0.11 -3.49,-0.6 -5.24,-0.9 -1.81,-0.32 -3.73,-0.45 -5.52,-0.09 -1.92,0.37 -3.61,1.3 -4.67,2.52 -0.94,1.07 -1.38,2.34 -1.52,3.6 -0.14,1.26 0.01,2.53 0.19,3.79 0.12,0.91 0.27,1.83 0.57,2.72 0.31,0.89 0.78,1.76 1.52,2.5 1.07,1.07 2.66,1.83 4.37,2.29 2.8,0.75 5.98,0.71 8.73,-0.11 4.88,-1.53 9.01,-4.28 11.52,-7.66 0.91,-1.22 1.61,-2.51 2.06,-3.84 0.18,-0.54 0.32,-1.08 0.32,-1.62 0.01,-0.55 -0.12,-1.11 -0.47,-1.59 z"/>
</g>
<path id="wing_tip_right_base" fill="#020204"
d="m 189.55,178.72 c -0.35,-0.95 -0.97,-1.79 -1.72,-2.47 -0.75,-0.68 -1.64,-1.2 -2.57,-1.6 -1.86,-0.79 -3.89,-1.09 -5.89,-1.46 -1.87,-0.35 -3.74,-0.78 -5.62,-1.1 -1.96,-0.33 -3.98,-0.55 -5.92,-0.11 -1.69,0.38 -3.26,1.26 -4.54,2.43 -1.28,1.17 -2.28,2.63 -3,4.21 -1.27,2.79 -1.67,5.92 -1.43,8.97 0.18,2.27 0.76,4.61 2.25,6.32 1.21,1.39 2.92,2.26 4.68,2.78 3.04,0.9 6.35,0.85 9.36,-0.13 4.97,-1.67 9.37,-4.98 12.35,-9.29 0.98,-1.43 1.82,-2.98 2.2,-4.66 0.29,-1.28 0.3,-2.66 -0.15,-3.89 z"/>
<g id="wing_tip_right_glare">
<defs>
<path id="path_wing_tip_right_glare"
d="m 168.89,171.07 c -0.47,0.03 -0.93,0.08 -1.4,0.17 -2.99,0.53 -5.73,2.42 -7.27,5.03 -1.09,1.85 -1.58,4.03 -1.43,6.17 0.07,-1.5 0.46,-2.97 1.19,-4.28 1.23,-2.23 3.47,-3.91 5.98,-4.37 1.54,-0.28 3.13,-0.11 4.68,0.08 1.5,0.19 3,0.39 4.47,0.7 2.28,0.5 4.53,1.26 6.44,2.59 0.44,0.31 0.86,0.66 1.21,1.08 0.35,0.41 0.62,0.89 0.73,1.42 0.15,0.78 -0.07,1.6 -0.46,2.29 -0.39,0.7 -0.92,1.3 -1.48,1.86 -0.46,0.46 -0.94,0.89 -1.43,1.32 2.21,-0.43 4.44,-1.03 6.28,-2.31 0.77,-0.55 1.48,-1.2 1.94,-2.02 0.46,-0.83 0.65,-1.83 0.43,-2.75 -0.16,-0.62 -0.5,-1.19 -0.92,-1.67 -0.42,-0.48 -0.93,-0.87 -1.45,-1.24 -2.31,-1.62 -5.01,-2.65 -7.81,-2.99 -1.8,-0.33 -3.61,-0.61 -5.42,-0.83 -1.41,-0.18 -2.86,-0.33 -4.28,-0.25 z"/>
</defs>
<use id="wing_tip_right_glare_1" href="#path_wing_tip_right_glare" xlink:href="#path_wing_tip_right_glare"
fill="url(#fill_wing_tip_right_glare_1)" filter="url(#blur_wing_tip_right_glare)" clip-path="url(#clip_wing_tip_right)"/>
<use id="wing_tip_right_glare_2" href="#path_wing_tip_right_glare" xlink:href="#path_wing_tip_right_glare"
fill="url(#fill_wing_tip_right_glare_2)" filter="url(#blur_wing_tip_right_glare)" clip-path="url(#clip_wing_tip_right)"/>
</g>
</g>
<g id="face">
<g id="eyes">
<g id="eye_left">
<path id="eyeball_left" fill="url(#fill_eyeball_left)"
d="m 84.45,38.28 c -1.53,0.08 -3,0.79 -4.12,1.84 -1.13,1.05 -1.92,2.43 -2.41,3.88 -0.97,2.92 -0.75,6.08 -0.53,9.15 0.2,2.77 0.41,5.6 1.45,8.18 0.52,1.3 1.25,2.51 2.22,3.51 0.97,0.99 2.2,1.76 3.55,2.09 1.26,0.32 2.62,0.26 3.86,-0.13 1.25,-0.4 2.38,-1.11 3.32,-2.02 1.36,-1.33 2.27,-3.07 2.8,-4.9 0.53,-1.83 0.68,-3.75 0.65,-5.66 -0.04,-2.38 -0.35,-4.77 -1.09,-7.03 -0.75,-2.26 -1.94,-4.4 -3.6,-6.11 -0.8,-0.83 -1.72,-1.55 -2.75,-2.06 -1.04,-0.51 -2.2,-0.8 -3.35,-0.74 z"/>
<g id="pupil_left">
<path id="pupil_left_base" fill="#020204"
d="m 80.75,50.99 c -0.32,1.94 -0.33,3.97 0.33,5.81 0.44,1.22 1.17,2.33 2.05,3.28 0.57,0.62 1.23,1.18 1.99,1.55 0.77,0.37 1.65,0.52 2.48,0.32 0.76,-0.19 1.42,-0.68 1.91,-1.29 0.49,-0.61 0.82,-1.34 1.05,-2.09 0.69,-2.21 0.58,-4.62 -0.11,-6.83 -0.49,-1.61 -1.32,-3.16 -2.6,-4.24 -0.62,-0.52 -1.34,-0.93 -2.12,-1.11 -0.78,-0.19 -1.63,-0.14 -2.36,0.19 -0.81,0.37 -1.44,1.07 -1.85,1.86 -0.41,0.79 -0.62,1.67 -0.77,2.55 z"/>
<path id="pupil_left_glare" fill="url(#fill_pupil_left_glare)" filter="url(#blur_pupil_left_glare)" clip-path="url(#clip_pupil_left)"
d="m 84.84,49.59 c 0.21,0.55 0.91,0.75 1.3,1.19 0.37,0.42 0.76,0.87 0.97,1.4 0.39,1.01 -0.39,2.51 0.43,3.23 0.25,0.22 0.77,0.23 1.02,0 0.99,-0.9 0.77,-2.71 0.38,-3.99 -0.36,-1.15 -1.23,-2.25 -2.31,-2.8 -0.5,-0.26 -1.25,-0.47 -1.68,-0.11 -0.27,0.24 -0.24,0.74 -0.11,1.08 z"/>
</g>
<path id="eyelid_left" fill="url(#fill_eyelid_left)" clip-path="url(#clip_eye_left)"
d="m 81.14,44.46 c 2.32,-1.38 5.13,-1.7 7.82,-1.45 2.68,0.26 5.27,1.04 7.87,1.75 1.91,0.52 3.84,1 5.63,1.84 1.78,0.84 3.44,2.08 4.43,3.8 0.16,0.27 0.29,0.56 0.46,0.83 0.17,0.27 0.37,0.52 0.62,0.71 0.25,0.19 0.57,0.32 0.88,0.3 0.16,-0.01 0.32,-0.05 0.45,-0.13 0.14,-0.08 0.26,-0.2 0.33,-0.34 0.08,-0.16 0.11,-0.35 0.1,-0.53 -0.01,-0.18 -0.05,-0.36 -0.1,-0.54 -0.65,-2.37 -2.19,-4.38 -3.35,-6.55 -0.7,-1.3 -1.28,-2.66 -1.98,-3.96 -2.43,-4.45 -6.42,-7.94 -10.95,-10.21 -4.53,-2.27 -9.59,-3.36 -14.65,-3.65 -5.86,-0.35 -11.73,0.35 -17.51,1.37 -2.51,0.44 -5.06,0.96 -7.27,2.21 -1.11,0.62 -2.13,1.42 -2.92,2.42 -0.8,0.99 -1.36,2.18 -1.55,3.44 -0.17,1.22 0.01,2.47 0.44,3.62 0.42,1.15 1.08,2.2 1.86,3.15 1.54,1.91 3.53,3.39 5.36,5.03 1.83,1.63 3.52,3.44 5.57,4.79 1.02,0.68 2.13,1.24 3.31,1.57 1.18,0.33 2.44,0.42 3.64,0.17 1.24,-0.25 2.4,-0.86 3.41,-1.64 1.01,-0.77 1.88,-1.7 2.71,-2.66 1.66,-1.93 3.21,-4.04 5.39,-5.34 z"/>
<path id="eyebrow_left" fill="url(#fill_eyebrow_left)" filter="url(#blur_eyebrow_left)"
d="m 90.77,36.57 c 2.16,2.02 3.76,4.52 4.85,7.16 -0.48,-2.91 -1.23,-5.26 -3.13,-7.16 -1.16,-1.09 -2.49,-2.05 -3.98,-2.72 -1.32,-0.59 -2.77,-0.96 -3.61,-0.97 -0.83,-0.02 -1.03,0 -1.2,0.01 -0.18,0.01 -0.31,0.01 0.23,0.08 0.54,0.06 1.75,0.39 3.05,0.97 1.3,0.58 2.62,1.54 3.79,2.63 z"/>
</g>
<g id="eye_right">
<path id="eyeball_right" fill="url(#fill_eyeball_right)"
d="m 111.61,38.28 c -2.39,1.65 -4.4,3.94 -5.38,6.68 -1.24,3.45 -0.77,7.31 0.43,10.77 1.22,3.55 3.27,6.93 6.36,9.06 1.54,1.07 3.33,1.8 5.19,2.02 1.87,0.22 3.8,-0.09 5.47,-0.95 2.02,-1.06 3.57,-2.91 4.53,-4.98 0.96,-2.08 1.37,-4.37 1.5,-6.66 0.16,-2.9 -0.12,-5.86 -1.08,-8.61 -1.04,-2.99 -2.92,-5.75 -5.58,-7.47 -1.32,-0.86 -2.83,-1.45 -4.4,-1.67 -1.57,-0.22 -3.19,-0.05 -4.67,0.52 -0.84,0.33 -1.62,0.78 -2.37,1.29 z"/>
<g id="pupil_right">
<path id="pupil_right_base" fill="#020204"
d="m 117.14,45.52 c -0.9,0.06 -1.78,0.37 -2.55,0.85 -0.76,0.48 -1.41,1.13 -1.92,1.88 -1.03,1.49 -1.48,3.31 -1.55,5.12 -0.05,1.35 0.1,2.72 0.55,4 0.45,1.28 1.2,2.47 2.25,3.33 1.07,0.89 2.42,1.42 3.81,1.49 1.39,0.06 2.79,-0.34 3.93,-1.13 0.91,-0.63 1.64,-1.5 2.16,-2.48 0.52,-0.97 0.84,-2.05 0.98,-3.15 0.25,-1.93 -0.03,-3.95 -0.93,-5.69 -0.89,-1.74 -2.41,-3.17 -4.24,-3.84 -0.8,-0.29 -1.65,-0.44 -2.49,-0.38 z"/>
<path id="pupil_right_glare" fill="url(#fill_pupil_right_glare)" filter="url(#blur_pupil_right_glare)" clip-path="url(#clip_pupil_right)"
d="m 122.71,53.36 c 1,-1 -0.71,-3.65 -2.05,-4.74 -0.97,-0.78 -3.78,-1.61 -3.66,-0.75 0.12,0.85 1.39,1.95 2.23,2.79 1.05,1.03 3,3.18 3.48,2.7 z"/>
</g>
<path id="eyelid_right" fill="url(#fill_eyelid_right)" clip-path="url(#clip_eye_right)"
d="m 102.56,47.01 c 2.06,-1.71 4.45,-3.01 7,-3.8 5.25,-1.62 11.2,-0.98 15.84,1.97 1.6,1.01 3.03,2.27 4.52,3.45 1.48,1.17 3.06,2.27 4.85,2.9 0.97,0.34 2,0.54 3.02,0.43 0.92,-0.09 1.81,-0.44 2.57,-0.96 0.76,-0.53 1.4,-1.23 1.88,-2.02 0.96,-1.58 1.27,-3.5 1.1,-5.34 -0.33,-3.69 -2.41,-6.94 -4.15,-10.21 -0.55,-1.02 -1.07,-2.06 -1.73,-3.01 -2.01,-2.93 -5.23,-4.86 -8.6,-5.99 -3.37,-1.13 -6.93,-1.54 -10.46,-1.98 -1.58,-0.2 -3.17,-0.41 -4.74,-0.22 -1.81,0.22 -3.51,0.95 -5.28,1.4 -0.84,0.22 -1.69,0.37 -2.52,0.61 -0.83,0.24 -1.65,0.57 -2.33,1.11 -0.98,0.79 -1.6,1.98 -1.87,3.21 -0.27,1.24 -0.21,2.52 -0.01,3.77 0.39,2.5 1.33,4.93 1.24,7.46 -0.06,1.73 -0.61,3.44 -0.54,5.17 0.02,0.51 0.12,1.55 0.21,2.05 z"/>
<path id="eyebrow_right" fill="url(#fill_eyebrow_right)" filter="url(#blur_eyebrow_right)"
d="m 119.93,31.18 c -0.41,0.52 -0.78,1.08 -1.07,1.7 1.85,0.4 3.61,1.16 5.19,2.21 3.06,2.03 5.38,4.99 7.01,8.29 0.38,-0.42 0.72,-0.87 1.02,-1.37 -1.64,-3.44 -4,-6.55 -7.16,-8.65 -1.52,-1 -3.21,-1.77 -4.99,-2.18 z"/>
</g>
</g>
<g id="beak">
<g id="beak_shadow">
<path id="beak_shadow_lower" fill="#000000" fill-opacity="0.258824" filter="url(#blur_beak_shadow_lower)" clip-path="url(#clip_body)"
d="m 81.12,89.33 c 1.47,4.26 4.42,7.89 7.92,10.72 1.16,0.95 2.39,1.82 3.76,2.43 1.36,0.62 2.87,0.97 4.36,0.84 1.46,-0.12 2.85,-0.7 4.13,-1.42 1.28,-0.72 2.46,-1.59 3.7,-2.37 2.12,-1.35 4.39,-2.44 6.6,-3.64 2.65,-1.45 5.23,-3.1 7.46,-5.14 1.03,-0.93 1.98,-1.95 3.11,-2.75 1.13,-0.81 2.49,-1.39 3.87,-1.29 1.04,0.07 2.01,0.51 3.03,0.73 0.51,0.11 1.03,0.16 1.55,0.08 0.51,-0.08 1.01,-0.29 1.37,-0.67 0.44,-0.46 0.64,-1.12 0.61,-1.76 -0.02,-0.63 -0.24,-1.25 -0.54,-1.81 -0.59,-1.13 -1.49,-2.1 -1.89,-3.31 -0.36,-1.08 -0.29,-2.24 -0.26,-3.37 0.03,-1.14 0.01,-2.32 -0.51,-3.33 -0.4,-0.76 -1.07,-1.37 -1.83,-1.77 -0.76,-0.41 -1.62,-0.62 -2.48,-0.7 -1.72,-0.16 -3.44,0.18 -5.17,0.27 -2.28,0.13 -4.58,-0.15 -6.87,-0.02 -2.85,0.18 -5.65,1 -8.51,1.01 -3.26,0.01 -6.52,-1.06 -9.74,-0.55 -1.39,0.22 -2.71,0.72 -4.03,1.16 -1.33,0.45 -2.7,0.84 -4.1,0.82 -1.59,-0.03 -3.13,-0.58 -4.72,-0.69 -0.79,-0.06 -1.6,0 -2.35,0.28 -0.74,0.28 -1.41,0.79 -1.78,1.5 -0.21,0.4 -0.31,0.86 -0.33,1.31 -0.02,0.46 0.04,0.91 0.15,1.36 0.22,0.88 0.63,1.71 0.96,2.55 1.2,3.07 1.46,6.42 2.53,9.53 z"/>
<path id="beak_shadow_upper" opacity="0.3" fill="#000000" filter="url(#blur_beak_shadow_upper)" clip-path="url(#clip_body)"
d="m 77.03,77.2 c 2.85,1.76 5.41,3.93 7.56,6.39 1.99,2.29 3.68,4.89 6.29,6.58 1.83,1.2 4.04,1.87 6.28,2.08 2.63,0.24 5.29,-0.15 7.83,-0.84 2.35,-0.63 4.62,-1.53 6.7,-2.71 3.97,-2.25 7.28,-5.55 11.65,-7.03 0.95,-0.33 1.94,-0.56 2.86,-0.96 0.92,-0.39 1.79,-0.99 2.23,-1.83 0.42,-0.82 0.4,-1.75 0.54,-2.64 0.15,-0.96 0.48,-1.88 0.66,-2.83 0.18,-0.95 0.2,-1.96 -0.24,-2.83 -0.37,-0.72 -1.04,-1.29 -1.81,-1.66 -0.77,-0.36 -1.64,-0.52 -2.51,-0.56 -1.72,-0.08 -3.43,0.33 -5.16,0.47 -2.28,0.19 -4.58,-0.08 -6.87,-0.01 -2.85,0.08 -5.66,0.67 -8.51,0.8 -3.25,0.14 -6.49,-0.34 -9.74,-0.44 -1.41,-0.05 -2.83,-0.03 -4.21,0.2 -1.39,0.22 -2.75,0.65 -3.92,1.37 -1.14,0.69 -2.07,1.64 -3.11,2.45 -0.52,0.41 -1.08,0.78 -1.68,1.07 -0.61,0.28 -1.28,0.48 -1.96,0.51 -0.35,0.01 -0.71,-0.01 -1.05,0.04 -0.59,0.08 -1.13,0.39 -1.47,0.83 -0.34,0.45 -0.47,1.02 -0.36,1.55 z"/>
</g>
<path id="beak_base" fill="url(#fill_beak_base)"
d="m 91.66,58.53 c 1.53,-1.71 2.57,-3.8 4.03,-5.56 0.73,-0.88 1.58,-1.69 2.57,-2.26 0.99,-0.57 2.15,-0.89 3.29,-0.79 1.27,0.11 2.46,0.74 3.39,1.61 0.93,0.87 1.62,1.97 2.17,3.12 0.53,1.11 0.95,2.28 1.71,3.24 0.81,1.02 1.94,1.71 2.97,2.52 0.51,0.4 1.01,0.83 1.41,1.34 0.41,0.51 0.72,1.1 0.86,1.74 0.13,0.65 0.06,1.33 -0.16,1.95 -0.23,0.62 -0.61,1.18 -1.09,1.64 -0.95,0.92 -2.25,1.42 -3.56,1.6 -2.62,0.37 -5.27,-0.41 -7.92,-0.34 -2.67,0.08 -5.29,1.02 -7.97,0.93 -1.33,-0.05 -2.69,-0.38 -3.79,-1.14 -0.55,-0.39 -1.03,-0.88 -1.38,-1.45 -0.34,-0.57 -0.55,-1.23 -0.58,-1.9 -0.02,-0.64 0.13,-1.28 0.39,-1.86 0.25,-0.59 0.61,-1.12 1.01,-1.62 0.81,-0.99 1.8,-1.81 2.65,-2.77 z"/>
<g id="mandible_lower">
<path id="mandible_lower_base" fill="url(#fill_mandible_lower_base)"
d="m 77.14,75.05 c 0.06,0.26 0.15,0.5 0.28,0.73 0.23,0.38 0.57,0.69 0.93,0.95 0.36,0.27 0.75,0.49 1.13,0.72 2.01,1.27 3.65,3.04 5.11,4.92 1.95,2.52 3.68,5.31 6.29,7.14 1.84,1.3 4.04,2.03 6.28,2.26 2.63,0.26 5.29,-0.16 7.83,-0.91 2.35,-0.69 4.62,-1.66 6.7,-2.95 3.97,-2.44 7.28,-6.02 11.65,-7.63 0.95,-0.35 1.94,-0.6 2.86,-1.03 0.92,-0.44 1.79,-1.08 2.23,-2 0.42,-0.88 0.4,-1.9 0.54,-2.87 0.15,-1.03 0.48,-2.03 0.66,-3.06 0.18,-1.03 0.2,-2.13 -0.24,-3.08 -0.37,-0.78 -1.04,-1.4 -1.81,-1.79 -0.77,-0.4 -1.64,-0.58 -2.51,-0.62 -1.72,-0.08 -3.43,0.36 -5.16,0.52 -2.28,0.21 -4.58,-0.09 -6.87,-0.02 -2.85,0.09 -5.66,0.73 -8.51,0.87 -3.25,0.15 -6.49,-0.35 -9.74,-0.48 -1.41,-0.06 -2.83,-0.04 -4.22,0.2 -1.39,0.23 -2.75,0.71 -3.91,1.51 -1.13,0.78 -2.03,1.84 -3.07,2.74 -0.52,0.45 -1.08,0.86 -1.7,1.16 -0.61,0.3 -1.29,0.49 -1.98,0.47 -0.35,-0.01 -0.72,-0.06 -1.05,0.04 -0.21,0.07 -0.4,0.2 -0.56,0.35 -0.16,0.16 -0.29,0.34 -0.41,0.52 -0.29,0.42 -0.54,0.87 -0.75,1.34 z"/>
<path id="mandible_lower_glare" fill="#d9b30d" filter="url(#blur_mandible_lower_glare)" clip-path="url(#clip_mandible_lower)"
d="m 89.9,78.56 c -0.33,1.37 -0.13,2.87 0.56,4.11 0.68,1.24 1.84,2.2 3.19,2.65 1.7,0.57 3.62,0.29 5.21,-0.54 0.93,-0.48 1.77,-1.16 2.3,-2.06 0.27,-0.44 0.46,-0.94 0.53,-1.46 0.06,-0.51 0.02,-1.05 -0.16,-1.54 -0.2,-0.53 -0.56,-1 -0.99,-1.37 -0.44,-0.37 -0.95,-0.64 -1.5,-0.82 -1.08,-0.36 -2.77,-0.66 -3.91,-0.68 -2.02,-0.04 -4.9,0.34 -5.23,1.71 z"/>
</g>
<g id="mandible_upper">
<path id="mandible_upper_shadow" fill="#604405" filter="url(#blur_mandible_upper_shadow)" clip-path="url(#clip_mandible_lower)"
d="m 84.31,67.86 c -1.16,0.68 -2.27,1.43 -3.36,2.2 -0.57,0.41 -1.15,0.84 -1.45,1.47 -0.21,0.44 -0.26,0.94 -0.27,1.43 0,0.5 0.03,0.99 -0.04,1.48 -0.04,0.33 -0.13,0.66 -0.14,0.99 -0.01,0.17 0,0.34 0.04,0.5 0.05,0.16 0.13,0.32 0.24,0.44 0.15,0.16 0.35,0.26 0.56,0.32 0.21,0.06 0.42,0.09 0.64,0.14 1.01,0.24 1.89,0.86 2.66,1.56 0.77,0.69 1.47,1.48 2.28,2.13 2.18,1.78 5.07,2.52 7.89,2.56 2.82,0.05 5.61,-0.54 8.36,-1.16 2.16,-0.49 4.32,-0.99 6.39,-1.76 3.2,-1.18 6.16,-2.96 8.72,-5.19 1.17,-1.01 2.26,-2.12 3.57,-2.94 1.15,-0.73 2.44,-1.21 3.62,-1.9 0.11,-0.06 0.21,-0.13 0.3,-0.2 0.1,-0.08 0.18,-0.18 0.24,-0.28 0.09,-0.19 0.09,-0.42 0.03,-0.62 -0.06,-0.2 -0.18,-0.38 -0.31,-0.55 -0.15,-0.18 -0.31,-0.34 -0.49,-0.5 -1.23,-1.05 -2.89,-1.43 -4.51,-1.56 -1.61,-0.12 -3.24,-0.03 -4.83,-0.3 -1.5,-0.25 -2.92,-0.81 -4.37,-1.27 -1.52,-0.49 -3.07,-0.87 -4.64,-1.13 -3.71,-0.61 -7.52,-0.49 -11.19,0.27 -3.49,0.73 -6.87,2.05 -9.94,3.87 z"/>
<path id="mandible_upper_base" fill="url(#fill_mandible_upper_base)"
d="m 83.94,63.95 c -1.66,1.12 -3.16,2.49 -4.43,4.04 -0.72,0.89 -1.38,1.86 -1.74,2.94 -0.29,0.86 -0.39,1.76 -0.57,2.65 -0.07,0.33 -0.15,0.66 -0.14,1 0,0.16 0.02,0.33 0.07,0.5 0.05,0.16 0.14,0.31 0.25,0.43 0.2,0.2 0.47,0.31 0.74,0.37 0.28,0.05 0.56,0.06 0.84,0.09 1.25,0.15 2.4,0.75 3.44,1.47 1.04,0.71 2,1.55 3.07,2.22 2.35,1.49 5.16,2.15 7.95,2.26 2.78,0.11 5.56,-0.31 8.3,-0.86 2.17,-0.43 4.33,-0.95 6.39,-1.76 3.16,-1.25 6.01,-3.16 8.72,-5.19 1.24,-0.92 2.46,-1.87 3.57,-2.94 0.37,-0.37 0.74,-0.74 1.14,-1.08 0.4,-0.33 0.85,-0.62 1.35,-0.78 0.76,-0.24 1.58,-0.17 2.37,-0.04 0.59,0.1 1.18,0.23 1.78,0.21 0.3,-0.02 0.6,-0.07 0.88,-0.18 0.28,-0.11 0.54,-0.28 0.73,-0.52 0.25,-0.3 0.38,-0.7 0.38,-1.09 0,-0.4 -0.12,-0.79 -0.32,-1.13 -0.4,-0.68 -1.09,-1.14 -1.81,-1.46 -0.99,-0.44 -2.06,-0.65 -3.11,-0.91 -3.23,-0.78 -6.37,-1.93 -9.34,-3.41 -1.48,-0.73 -2.92,-1.54 -4.37,-2.32 -1.5,-0.8 -3.02,-1.57 -4.64,-2.07 -3.64,-1.1 -7.6,-0.74 -11.19,0.51 -3.98,1.38 -7.58,3.84 -10.31,7.05 z"/>
<path id="mandible_upper_glare" fill="#f6da4a" filter="url(#blur_mandible_upper_glare)" clip-path="url(#clip_mandible_upper)"
d="m 109.45,64.75 c -0.2,-0.24 -0.48,-0.42 -0.78,-0.51 -0.3,-0.09 -0.62,-0.09 -0.93,-0.04 -0.62,0.11 -1.18,0.44 -1.7,0.8 -1.47,1.01 -2.77,2.26 -3.91,3.64 -1.5,1.83 -2.74,3.94 -3.16,6.27 -0.07,0.39 -0.11,0.8 -0.07,1.19 0.05,0.4 0.2,0.79 0.49,1.07 0.24,0.25 0.58,0.4 0.92,0.45 0.35,0.05 0.71,0 1.04,-0.11 0.66,-0.22 1.21,-0.69 1.74,-1.15 2.87,-2.58 5.47,-5.66 6.51,-9.38 0.1,-0.37 0.19,-0.75 0.19,-1.14 0,-0.39 -0.1,-0.78 -0.34,-1.09 z"/>
<path id="naris_left" opacity="0.8" fill="url(#fill_naris_left)" filter="url(#blur_naris_left)"
d="m 92.72,59.06 c -0.77,-0.25 -2.03,1.1 -1.62,1.79 0.11,0.19 0.46,0.43 0.7,0.3 0.35,-0.19 0.64,-0.89 1.02,-1.16 0.25,-0.18 0.2,-0.84 -0.1,-0.93 z"/>
<path id="naris_right" opacity="0.8" fill="url(#fill_naris_right)" filter="url(#blur_naris_right)"
d="m 102.56,59.42 c 0.2,0.64 1.23,0.53 1.83,0.84 0.52,0.27 0.94,0.86 1.53,0.88 0.56,0.01 1.44,-0.2 1.51,-0.76 0.09,-0.73 -0.98,-1.2 -1.67,-1.47 -0.89,-0.34 -2.03,-0.52 -2.86,-0.06 -0.19,0.11 -0.4,0.36 -0.34,0.57 z"/>
</g>
<path id="beak_corner" fill="url(#fill_beak_corner)" filter="url(#blur_beak_corner)" clip-path="url(#clip_beak)"
d="m 129.27,69.15 a 2.42,3.1 16.94 0 1 -2.81,3.04 2.42,3.1 16.94 0 1 -2.12,-3.04 2.42,3.1 16.94 0 1 2.81,-3.05 2.42,3.1 16.94 0 1 2.12,3.05 z"/>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 49 KiB

+1 -21
View File
@@ -1,21 +1 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg version="1.1" baseProfile="full" width="340" height="310" xmlns="http://www.w3.org/2000/svg">
<g stroke="white" stroke-width="1.5">
<g transform="rotate(30) skewX(30)">
<rect x="110" y="-72" width="175" height="75" fill="#333333" transform="skewX(-50)"/>
<rect x="110" y="3" width="87.5" height="75" fill="#CDCDCD" transform="skewX(-50)"/>
<rect x="16.5" y="78.9" width="87.5" height="25" fill="#CDCDCD" />
<rect x="16.5" y="104.5" width="175" height="25" fill="#888888" />
<rect x="16.5" y="130" width="175" height="50" fill="#DD4814" />
<rect x="104" y="166" width="89.5" height="25" fill="#CDCDCD" transform="skewY(-40)"/>
<rect x="228.3" y="29.5" width="87.5" height="75" fill="#888888" transform="skewX(-50)"/>
<rect x="191.8" y="266" width="89.5" height="25" fill="#888888" transform="skewY(-40)"/>
<rect x="192" y="291" width="179.5" height="50" fill="#DD4814" transform="skewY(-40)"/>
<rect x="282.3" y="240" width="89.1" height="50" fill="#333333" transform="skewY(-40)"/>
<rect x="194" y="3.7" width="87.5" height="25" fill="#333333" />
</g>
<line x1="93" y1="57" x2="93" y2="88" />
<line x1="169" y1="131" x2="92" y2="88" />
<line x1="92" y1="88" x2="14" y2="128" />
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="340" height="310" baseProfile="full" version="1.1"><g stroke="#fff" stroke-width="1.5"><g transform="rotate(30) skewX(30)"><rect width="175" height="75" x="110" y="-72" fill="#333" transform="skewX(-50)"/><rect width="87.5" height="75" x="110" y="3" fill="#CDCDCD" transform="skewX(-50)"/><rect width="87.5" height="25" x="16.5" y="78.9" fill="#CDCDCD"/><rect width="175" height="25" x="16.5" y="104.5" fill="#888"/><rect width="175" height="50" x="16.5" y="130" fill="#DD4814"/><rect width="89.5" height="25" x="104" y="166" fill="#CDCDCD" transform="skewY(-40)"/><rect width="87.5" height="75" x="228.3" y="29.5" fill="#888" transform="skewX(-50)"/><rect width="89.5" height="25" x="191.8" y="266" fill="#888" transform="skewY(-40)"/><rect width="179.5" height="50" x="192" y="291" fill="#DD4814" transform="skewY(-40)"/><rect width="89.1" height="50" x="282.3" y="240" fill="#333" transform="skewY(-40)"/><rect width="87.5" height="25" x="194" y="3.7" fill="#333"/></g><line x1="93" x2="93" y1="57" y2="88"/><line x1="169" x2="92" y1="131" y2="88"/><line x1="92" x2="14" y1="88" y2="128"/></g></svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

+10 -46
View File
@@ -1,47 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width="1024" height="1024">
<path d="M0 0 C337.92 0 675.84 0 1024 0 C1024 337.92 1024 675.84 1024 1024 C686.08 1024 348.16 1024 0 1024 C0 686.08 0 348.16 0 0 Z " fill="#020708" transform="translate(0,0)"/>
<path d="M0 0 C40.22460379 0 80.4466421 0.00304941 120.67057991 0.15463066 C125.95372492 0.17442425 131.23687063 0.19398844 136.52001762 0.21324348 C147.77834068 0.25435249 159.03666181 0.29592484 170.29497623 0.33933926 C170.99953161 0.34205531 171.70408698 0.34477135 172.42999252 0.34756971 C173.13533008 0.3502892 173.84066764 0.35300869 174.56737906 0.35581058 C175.99454502 0.36131272 177.42171098 0.36681401 178.84887695 0.37231445 C179.55666117 0.37504276 180.26444539 0.37777106 180.99367761 0.38058204 C192.50410753 0.42485496 204.01454726 0.46550406 215.52499563 0.50465261 C227.56090905 0.54564378 239.59680781 0.58979401 251.63269895 0.63687855 C258.30394122 0.66290814 264.97518119 0.68769341 271.64644051 0.70907402 C277.91414179 0.72924498 284.18181589 0.75352717 290.4494915 0.78049088 C292.69376491 0.78952735 294.93804399 0.79730645 297.18232727 0.80341911 C322.46351662 0.87417207 347.71815265 1.5042775 373 2 C373 96.05 373 190.1 373 287 C249.91 287 126.82 287 0 287 C0 192.29 0 97.58 0 0 Z " fill="#999F9E" transform="translate(326,395)"/>
<path d="M0 0 C37.29 0 74.58 0 113 0 C113 46.86 113 93.72 113 142 C75.71 142 38.42 142 0 142 C0 95.14 0 48.28 0 0 Z " fill="#181E23" transform="translate(550,445)"/>
<path d="M0 0 C37.29 0 74.58 0 113 0 C113 46.53 113 93.06 113 141 C95.613125 141.0309375 95.613125 141.0309375 77.875 141.0625 C74.3054248 141.071604 70.73584961 141.08070801 67.05810547 141.09008789 C62.46899414 141.09460449 62.46899414 141.09460449 60.27615356 141.09544373 C58.84198693 141.09691347 57.40782093 141.10027703 55.97366333 141.10557556 C37.3007381 141.17069509 18.67741441 140.49151091 0 140 C0 93.8 0 47.6 0 0 Z " fill="#181E23" transform="translate(362,446)"/>
<path d="M0 0 C0 14.52 0 29.04 0 44 C-118.14 44 -236.28 44 -358 44 C-359.71802382 40.56395235 -359.1196618 36.61561104 -359.09765625 32.8359375 C-359.0962413 31.92872955 -359.09482635 31.02152161 -359.09336853 30.08682251 C-359.08776096 27.18284845 -359.07520718 24.27895085 -359.0625 21.375 C-359.05748598 19.40885528 -359.0529229 17.44270935 -359.04882812 15.4765625 C-359.03778906 10.6510121 -359.02051935 5.82551903 -359 1 C-319.04215869 0.87185681 -279.08431526 0.74439427 -239.12646896 0.61781773 C-234.3862332 0.60280127 -229.64599745 0.58777929 -224.90576172 0.57275391 C-223.49049118 0.56826798 -223.49049118 0.56826798 -222.04662931 0.56369144 C-206.8611473 0.51554559 -191.67566674 0.46695532 -176.49018669 0.41819459 C-160.85514345 0.36800044 -145.22009869 0.3182983 -129.58505249 0.26903296 C-120.82560112 0.24141872 -112.06615054 0.21359008 -103.30670166 0.18519592 C-68.87102254 0.07367311 -34.43592726 -0.03058253 0 0 Z " fill="#FEFEFE" transform="translate(692,838)"/>
<path d="M0 0 C117.15 0 234.3 0 355 0 C355 13.86 355 27.72 355 42 C237.85 42 120.7 42 0 42 C0 28.14 0 14.28 0 0 Z " fill="#FEFEFE" transform="translate(334,135)"/>
<path d="M0 0 C11.88 0 23.76 0 36 0 C36 19.8 36 39.6 36 60 C91.44 60 146.88 60 204 60 C204 71.55 204 83.1 204 95 C168.85263573 95.02994071 133.70661685 94.95253395 98.55956407 94.80645666 C91.61749391 94.77764681 84.67541903 94.75005412 77.7333438 94.72249681 C65.36625264 94.67337442 52.99916523 94.62336685 40.63208008 94.57275391 C28.66105336 94.52376386 16.69002497 94.47522104 4.71899414 94.42724609 C3.97369616 94.4242591 3.22839818 94.4212721 2.46051542 94.41819459 C-1.2806363 94.4032035 -5.02178805 94.38822085 -8.76293981 94.37324238 C-39.50863188 94.25013489 -70.25431782 94.12555501 -101 94 C-101 93.67 -101 93.34 -101 93 C-134.66 92.505 -134.66 92.505 -169 92 C-169 81.44 -169 70.88 -169 60 C-113.23 60 -57.46 60 0 60 C0 40.2 0 20.4 0 0 Z " fill="#191F24" transform="translate(495,302)"/>
<path d="M0 0 C62.7 0 125.4 0 190 0 C190 11.88 190 23.76 190 36 C127.3 36 64.6 36 0 36 C0 24.12 0 12.24 0 0 Z " fill="#474B51" transform="translate(418,786)"/>
<path d="M0 0 C49.5 0 99 0 150 0 C150 14.52 150 29.04 150 44 C100.5 44 51 44 0 44 C0 29.48 0 14.96 0 0 Z " fill="#FDFEFE" transform="translate(200,239)"/>
<path d="M0 0 C48.18 0 96.36 0 146 0 C146 14.52 146 29.04 146 44 C131.979151 44.02742613 117.95836252 44.05097148 103.9375 44.0625 C102.90375118 44.06335602 101.87000237 44.06421204 100.80492783 44.06509399 C67.19004349 44.08969196 33.60574878 43.83234053 0 43 C0 28.81 0 14.62 0 0 Z " fill="#FEFEFE" transform="translate(677,239)"/>
<path d="M0 0 C51.48 0 102.96 0 156 0 C156 13.53 156 27.06 156 41 C104.52 41 53.04 41 0 41 C0 27.47 0 13.94 0 0 Z " fill="#FEFEFE" transform="translate(259,188)"/>
<path d="M0 0 C1.28729507 -0.00281982 2.57459015 -0.00563965 3.90089417 -0.00854492 C5.34078993 -0.00660032 6.78068557 -0.00455213 8.22058105 -0.00241089 C9.72647647 -0.00376487 11.23237154 -0.00554479 12.73826599 -0.00772095 C16.839391 -0.01229564 20.94049097 -0.01050558 25.04161644 -0.00734186 C29.32396896 -0.00481844 33.60631927 -0.00715575 37.88867188 -0.00872803 C45.08150621 -0.01054978 52.2743303 -0.00814327 59.46716309 -0.00338745 C67.79516627 0.00205518 76.12314497 0.00029253 84.45114756 -0.00521386 C91.58828139 -0.00974483 98.72540783 -0.01039561 105.86254263 -0.00777519 C110.13098648 -0.00621233 114.39941881 -0.00601889 118.66786194 -0.00931168 C122.67984227 -0.01219017 126.69179089 -0.01021511 130.70376778 -0.00441742 C132.18045054 -0.0030897 133.65713595 -0.00348413 135.13381767 -0.00568008 C137.1412128 -0.0083911 139.14861372 -0.0043972 141.15600586 0 C142.28205986 0.00037703 143.40811386 0.00075405 144.56829071 0.0011425 C147.07800293 0.12698364 147.07800293 0.12698364 148.07800293 1.12698364 C148.07800293 14.32698364 148.07800293 27.52698364 148.07800293 41.12698364 C96.92800293 41.12698364 45.77800293 41.12698364 -6.92199707 41.12698364 C-6.92199707 0.00231762 -6.92199707 0.00231762 0 0 Z " fill="#FEFEFE" transform="translate(616.9219970703125,187.87301635742188)"/>
<path d="M0 0 C43.23 0 86.46 0 131 0 C131 15.84 131 31.68 131 48 C87.77 48 44.54 48 0 48 C0 32.16 0 16.32 0 0 Z " fill="#FEFEFE" transform="translate(128,353)"/>
<path d="M0 0 C67.815 0.495 67.815 0.495 137 1 C137 15.19 137 29.38 137 44 C136.34 44 135.68 44 135 44 C135 44.66 135 45.32 135 46 C90.45 46 45.9 46 0 46 C0 30.82 0 15.64 0 0 Z " fill="#FDFEFE" transform="translate(156,294)"/>
<path d="M0 0 C45.21 0 90.42 0 137 0 C137 14.19 137 28.38 137 43 C136.34 43 135.68 43 135 43 C135 43.66 135 44.32 135 45 C90.45 45 45.9 45 0 45 C0 30.15 0 15.3 0 0 Z " fill="#FBFCFC" transform="translate(732,295)"/>
<path d="M0 0 C43.23 0 86.46 0 131 0 C131 15.18 131 30.36 131 46 C98.474264 46.72107728 65.97062256 47.09604795 33.4375 47.0625 C32.60141457 47.06164398 31.76532913 47.06078796 30.90390778 47.05990601 C20.60257228 47.04857042 10.30132061 47.02553343 0 47 C0 31.49 0 15.98 0 0 Z " fill="#FEFEFE" transform="translate(765,354)"/>
<path d="M0 0 C26.73 0 53.46 0 81 0 C82.19877676 50.94801223 82.19877676 50.94801223 82 74 C77.05167364 74.80762419 72.35065215 75.12200785 67.32055664 75.11352539 C66.57629897 75.11364593 65.8320413 75.11376646 65.06523037 75.11389065 C62.68017418 75.11315027 60.29519828 75.10556237 57.91015625 75.09765625 C56.42801959 75.09618411 54.9458824 75.09516508 53.46374512 75.09460449 C47.99665543 75.08938309 42.52957691 75.07542183 37.0625 75.0625 C24.831875 75.041875 12.60125 75.02125 0 75 C0 50.25 0 25.5 0 0 Z " fill="#FB4740" transform="translate(473,226)"/>
<path d="M0 0 C36.96 0 73.92 0 112 0 C112.6261198 6.88731776 113.15084094 13.48218949 113.1328125 20.3515625 C113.13376923 21.17707611 113.13472595 22.00258972 113.13571167 22.8531189 C113.1363846 24.57216469 113.13459319 26.29121317 113.13037109 28.01025391 C113.12494037 30.65402778 113.13038111 33.29763707 113.13671875 35.94140625 C113.13605916 37.61979204 113.13478047 39.29817773 113.1328125 40.9765625 C113.13483673 41.76809723 113.13686096 42.55963196 113.13894653 43.37515259 C113.11499765 48.88500235 113.11499765 48.88500235 112 50 C110.54518505 50.0956161 109.08574514 50.12188351 107.62779236 50.12025452 C106.68403244 50.12162918 105.74027252 50.12300385 104.76791382 50.12442017 C103.72422638 50.12082489 102.68053894 50.11722961 101.60522461 50.11352539 C100.51267868 50.11367142 99.42013275 50.11381744 98.29447937 50.1139679 C94.66374767 50.11326822 91.03306654 50.10547329 87.40234375 50.09765625 C84.89270557 50.09579226 82.38306702 50.09436827 79.87342834 50.09336853 C73.93065407 50.08993348 67.98789616 50.08204273 62.04513031 50.07201904 C53.43224996 50.0578058 44.81936343 50.05254739 36.2064743 50.04621124 C24.13763437 50.03649856 12.06884226 50.01734306 0 50 C0 33.5 0 17 0 0 Z " fill="#FDFDFD" transform="translate(117,474)"/>
<path d="M0 0 C36.63 0 73.26 0 111 0 C111 48 111 48 110 50 C73.7 50 37.4 50 0 50 C0 33.5 0 17 0 0 Z " fill="#FEFEFE" transform="translate(795,474)"/>
<path d="M0 0 C54.12 0 108.24 0 164 0 C164 10.89 164 21.78 164 33 C109.88 33 55.76 33 0 33 C0 22.11 0 11.22 0 0 Z " fill="#181E23" transform="translate(431,622)"/>
<path d="M0 0 C14.58571527 -0.0225479 29.17141907 -0.04091327 43.75714779 -0.05181217 C50.52910421 -0.05697491 57.30104905 -0.06401718 64.07299805 -0.07543945 C70.60224426 -0.08644714 77.13148294 -0.09227625 83.66073799 -0.09487724 C86.15793612 -0.09673199 88.65513355 -0.10035354 91.15232658 -0.10573006 C94.63664069 -0.11293684 98.12090431 -0.1139911 101.60522461 -0.11352539 C102.64891205 -0.11712067 103.69259949 -0.12071594 104.76791382 -0.12442017 C105.71167374 -0.1230455 106.65543365 -0.12167084 107.62779236 -0.12025452 C108.45279708 -0.12117631 109.2778018 -0.1220981 110.12780666 -0.12304783 C112 0 112 0 113 1 C113 16.18 113 31.36 113 47 C75.71 47 38.42 47 0 47 C0 31.49 0 15.98 0 0 Z " fill="#FCFCFC" transform="translate(117,414)"/>
<path d="M0 0 C0 15.84 0 31.68 0 48 C-36.96 48 -73.92 48 -112 48 C-112 32.49 -112 16.98 -112 1 C-92.15950898 0.75043408 -92.15950898 0.75043408 -83.5078125 0.64453125 C-77.67218771 0.57308961 -71.83656856 0.50132395 -66.00097656 0.42724609 C-43.99861261 0.14838814 -22.0044946 -0.06103882 0 0 Z " fill="#FAFAFA" transform="translate(906,537)"/>
<path d="M0 0 C36.63 0 73.26 0 111 0 C111 15.51 111 31.02 111 47 C74.37 47 37.74 47 0 47 C0 31.49 0 15.98 0 0 Z " fill="#FBFCFC" transform="translate(118,538)"/>
<path d="M0 0 C36.3 0 72.6 0 110 0 C110 15.18 110 30.36 110 46 C86.98227311 46.96572558 64.03031552 47.12476904 40.99664307 47.06866455 C36.24190736 47.05823048 31.48716586 47.05382501 26.73242188 47.04882812 C17.48826669 47.03826689 8.24413623 47.02131845 -1 47 C-1.02529825 40.62793828 -1.04284496 34.25588946 -1.05493164 27.88378906 C-1.05996891 25.71483883 -1.06679891 23.545892 -1.07543945 21.37695312 C-1.08753151 18.26431437 -1.09323428 15.1517204 -1.09765625 12.0390625 C-1.10281754 11.065065 -1.10797882 10.0910675 -1.11329651 9.08755493 C-1.11337204 8.18677216 -1.11344757 7.28598938 -1.11352539 6.35791016 C-1.115746 5.56293121 -1.11796661 4.76795227 -1.12025452 3.94888306 C-1 2 -1 2 0 0 Z " fill="#FBFCFB" transform="translate(795,414)"/>
<path d="M0 0 C34.98 0 69.96 0 106 0 C106 15.84 106 31.68 106 48 C71.02 48 36.04 48 0 48 C0 32.16 0 16.32 0 0 Z " fill="#FBFCFC" transform="translate(154,658)"/>
<path d="M0 0 C34.32 0 68.64 0 104 0 C104 15.84 104 31.68 104 48 C69.35 48 34.7 48 -1 48 C-1 31.99652815 -0.6951464 15.9883671 0 0 Z " fill="#FBFBFB" transform="translate(765,658)"/>
<path d="M0 0 C10.56252046 -0.02735617 21.1249617 -0.05092969 31.6875 -0.0625 C32.46348038 -0.06335602 33.23946075 -0.06421204 34.03895569 -0.06509399 C57.71503621 -0.08818645 81.33439347 0.16962784 105 1 C105 16.18 105 31.36 105 47 C70.35 47 35.7 47 0 47 C0 31.49 0 15.98 0 0 Z " fill="#FCFDFD" transform="translate(125,598)"/>
<path d="M0 0 C34.32 0 68.64 0 104 0 C104 15.51 104 31.02 104 47 C69.68 47 35.36 47 0 47 C0 31.49 0 15.98 0 0 Z " fill="#FBFCFC" transform="translate(794,598)"/>
<path d="M0 0 C37.62 0 75.24 0 114 0 C114 12.54 114 25.08 114 38 C76.38 38 38.76 38 0 38 C0 25.46 0 12.92 0 0 Z " fill="#474B51" transform="translate(456,716)"/>
<path d="M0 0 C30.69 0 61.38 0 93 0 C93 15.18 93 30.36 93 46 C62.31 46 31.62 46 0 46 C0 30.82 0 15.64 0 0 Z " fill="#FCFDFD" transform="translate(732,719)"/>
<path d="M0 0 C30.69 0 61.38 0 93 0 C93 14.85 93 29.7 93 45 C62.31 45 31.62 45 0 45 C0 30.15 0 15.3 0 0 Z " fill="#FEFEFE" transform="translate(200,720)"/>
<path d="M0 0 C11.22 0 22.44 0 34 0 C34.6943434 30.12954393 35.09747148 60.23833134 35.0625 90.375 C35.06121597 91.48948643 35.06121597 91.48948643 35.05990601 92.62648773 C35.04860423 101.7510267 35.02558276 110.87548153 35 120 C23.45 120 11.9 120 0 120 C0 80.4 0 40.8 0 0 Z " fill="#474B50" transform="translate(258,470)"/>
<path d="M0 0 C30.36 0 60.72 0 92 0 C92 14.19 92 28.38 92 43 C61.64 43 31.28 43 0 43 C0 28.81 0 14.62 0 0 Z " fill="#FCFDFD" transform="translate(259,781)"/>
<path d="M0 0 C30.03 0 60.06 0 91 0 C91 14.19 91 28.38 91 43 C60.97 43 30.94 43 0 43 C0 28.81 0 14.62 0 0 Z " fill="#FCFDFD" transform="translate(674,781)"/>
<path d="M0 0 C16.5 0 33 0 50 0 C50 25.41 50 50.82 50 77 C33.5 77 17 77 0 77 C0 51.59 0 26.18 0 0 Z " fill="#2CCDD4" transform="translate(582,478)"/>
<path d="M0 0 C10.56 0 21.12 0 32 0 C32 39.27 32 78.54 32 119 C21.44 119 10.88 119 0 119 C0 79.73 0 40.46 0 0 Z " fill="#474B50" transform="translate(732,471)"/>
<path d="M0 0 C16.17 0 32.34 0 49 0 C49 25.41 49 50.82 49 77 C32.83 77 16.66 77 0 77 C0 51.59 0 26.18 0 0 Z " fill="#2DCCD2" transform="translate(394,478)"/>
<path d="M0 0 C15.84 0 31.68 0 48 0 C48 0.33 48 0.66 48 1 C32.49 1 16.98 1 1 1 C1 25.75 1 50.5 1 76 C28.06 75.67 55.12 75.34 83 75 C82.67 65.76 82.34 56.52 82 47 C81.93702338 38.74754429 81.90172306 30.50164687 81.9375 22.25 C81.94254243 20.16145945 81.94710032 18.07291767 81.95117188 15.984375 C81.96192066 10.98955155 81.97902162 5.99479052 82 1 C82.33 1 82.66 1 83 1 C83.57831229 19.95510799 84.11107346 38.91589618 84.23217773 57.88024902 C84.24403757 59.45720133 84.26110851 61.03412324 84.28344727 62.61096191 C84.31307026 64.8085447 84.32331211 67.00536665 84.328125 69.203125 C84.3374707 70.44739258 84.34681641 71.69166016 84.35644531 72.97363281 C84 76 84 76 82.73034668 77.68478394 C80.56608158 79.32981626 79.63802574 79.28920572 76.95800781 79.06982422 C75.71830231 78.98657394 75.71830231 78.98657394 74.45355225 78.90164185 C73.54591125 78.82839691 72.63827026 78.75515198 71.703125 78.6796875 C62.53186675 78.09888659 53.42327768 77.92843278 44.234375 78.0078125 C42.339151 78.0199881 42.339151 78.0199881 40.40563965 78.03240967 C35.17784805 78.06788344 29.95020985 78.1100683 24.72265625 78.17138672 C20.85162217 78.21602536 16.98061225 78.23702797 13.109375 78.2578125 C11.32536285 78.28574387 11.32536285 78.28574387 9.50531006 78.3142395 C7.87024506 78.31942093 7.87024506 78.31942093 6.20214844 78.32470703 C4.76279938 78.33922409 4.76279938 78.33922409 3.29437256 78.35403442 C2.15865814 78.17878738 2.15865814 78.17878738 1 78 C-1.11766624 74.82350064 -1.24885987 74.11349575 -1.23046875 70.48828125 C-1.22917969 69.52510986 -1.22789062 68.56193848 -1.2265625 67.56958008 C-1.21367187 66.49474365 -1.20078125 65.41990723 -1.1875 64.3125 C-1.18105469 63.18158936 -1.17460937 62.05067871 -1.16796875 60.88549805 C-1.00069226 40.5888483 -0.4546929 20.29067045 0 0 Z " fill="#4C0F0C" transform="translate(472,225)"/>
<path d="M0 0 C8.45159814 -0.02350035 16.90318192 -0.04110214 25.35480499 -0.05181217 C29.28212158 -0.05696064 33.20941531 -0.06390567 37.13671875 -0.07543945 C53.56520732 -0.12238185 69.94755695 -0.05605073 86.36132812 0.74389648 C96.40041688 1.22706882 106.45208983 1.36454744 116.5 1.5625 C118.60677558 1.60589009 120.71354645 1.64950917 122.8203125 1.69335938 C127.88015843 1.79819282 132.94005639 1.8999973 138 2 C138 2.33 138 2.66 138 3 C92.79 3 47.58 3 1 3 C1 5.64 1 8.28 1 11 C0.67 11 0.34 11 0 11 C0 7.37 0 3.74 0 0 Z " fill="#6F7576" transform="translate(326,395)"/>
<path d="M0 0 C0.33 0 0.66 0 1 0 C1 7.26 1 14.52 1 22 C37.3 22 73.6 22 111 22 C111.495 22.99 111.495 22.99 112 24 C74.71 24 37.42 24 -1 24 C-0.67 16.08 -0.34 8.16 0 0 Z " fill="#0E1418" transform="translate(551,563)"/>
<path d="M0 0 C0.33 0 0.66 0 1 0 C1.57831229 18.95510799 2.11107346 37.91589618 2.23217773 56.88024902 C2.24403757 58.45720133 2.26110851 60.03412324 2.28344727 61.61096191 C2.31307026 63.8085447 2.32331211 66.00536665 2.328125 68.203125 C2.3374707 69.44739258 2.34681641 70.69166016 2.35644531 71.97363281 C2 75 2 75 0.79858398 76.92016602 C-1.65515594 78.39334257 -3.26106965 78.2550765 -6.10546875 78.07421875 C-7.08837891 78.01943359 -8.07128906 77.96464844 -9.08398438 77.90820312 C-10.62022461 77.79895508 -10.62022461 77.79895508 -12.1875 77.6875 C-13.22326172 77.62626953 -14.25902344 77.56503906 -15.32617188 77.50195312 C-17.88531957 77.34864013 -20.44267045 77.1807893 -23 77 C-23.33 76.34 -23.66 75.68 -24 75 C-11.625 74.505 -11.625 74.505 1 74 C0.835 70.32875 0.67 66.6575 0.5 62.875 C-0.33621628 41.9290255 -0.08802477 20.95802133 0 0 Z " fill="#390D0B" transform="translate(554,226)"/>
<path d="M0 0 C0.66 0 1.32 0 2 0 C2 15.18 2 30.36 2 46 C0.68 45.67 -0.64 45.34 -2 45 C-1.88269497 38.75188831 -1.75785931 32.50396027 -1.62768555 26.25610352 C-1.58426577 24.12885993 -1.54259607 22.0015799 -1.50268555 19.87426758 C-1.44515293 16.82361849 -1.38141033 13.77315411 -1.31640625 10.72265625 C-1.29969376 9.76537125 -1.28298126 8.80808624 -1.26576233 7.8217926 C-1.24581711 6.94095505 -1.22587189 6.06011749 -1.20532227 5.15258789 C-1.18977798 4.37315323 -1.1742337 3.59371857 -1.15821838 2.79066467 C-1 1 -1 1 0 0 Z " fill="#D1D3D3" transform="translate(228,599)"/>
<path d="M0 0 C35.64 0.33 71.28 0.66 108 1 C108 1.33 108 1.66 108 2 C54.54 2.495 54.54 2.495 0 3 C0 2.01 0 1.02 0 0 Z " fill="#F5F7F7" transform="translate(117,521)"/>
<path d="M0 0 C6.93 0 13.86 0 21 0 C21 0.99 21 1.98 21 3 C14.07 3 7.14 3 0 3 C0 2.01 0 1.02 0 0 Z " fill="#272A2A" transform="translate(158,292)"/>
<svg width="256" height="256" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_147_2)">
<path d="M162.358 73H257V182H162.358V73Z" fill="white"/>
<path d="M0 182V78.4618H26.039L27.0034 103.381L24.3033 102.221C25.7177 96.6843 27.8391 91.9835 30.6684 88.1202C33.6255 84.2569 37.1618 81.2949 41.2769 79.2343C45.3914 77.1742 49.8921 76.1439 54.7785 76.1439C63.3938 76.1439 70.3377 78.6552 75.6097 83.6773C81.0105 88.6998 84.4824 95.4606 86.0251 103.96L82.3606 104.153C83.518 98.1008 85.5112 93.0138 88.3401 88.8931C91.2976 84.6431 94.8978 81.4883 99.1411 79.4277C103.385 77.2387 108.143 76.1439 113.415 76.1439C120.615 76.1439 126.788 77.6249 131.931 80.5869C137.075 83.5488 141.061 87.9913 143.89 93.9152C146.719 99.7102 148.133 106.858 148.133 115.357V182H119.201V123.47C119.201 115.357 117.98 109.305 115.536 105.312C113.093 101.191 109.107 99.1311 103.577 99.1311C100.106 99.1311 97.1484 100.097 94.7052 102.029C92.262 103.96 90.3332 106.793 88.9188 110.528C87.6326 114.134 86.9895 118.577 86.9895 123.857V182H60.9506V123.857C60.9506 115.872 59.7936 109.755 57.4787 105.505C55.1642 101.256 51.1779 99.1311 45.5202 99.1311C42.0482 99.1311 39.0263 100.097 36.4548 102.029C34.0117 103.96 32.1472 106.793 30.861 110.528C29.5753 114.262 28.9322 118.705 28.9322 123.857V182H0Z" fill="white"/>
</g>
<defs>
<clipPath id="clip0_147_2">
<rect width="256" height="256" fill="white"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 1.4 KiB

+1 -6
View File
@@ -1,6 +1 @@
<svg width="251" height="251" viewBox="0 0 251 251" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 47.0195C39.45 49.6394 71.06 81.3272 73.54 120.815H119.61C117.05 55.8589 64.93 3.64245 0 0.942627V47.0195Z" fill="#0DC09D"/>
<path d="M73.8 131.324C71.18 170.771 39.49 202.379 0 204.859V250.926C64.96 248.366 117.18 196.249 119.88 131.324H73.8Z" fill="#0DC09D"/>
<path d="M176.201 120.545C178.821 81.0972 210.511 49.4894 250.001 47.0095V0.942627C185.041 3.50245 132.821 55.619 130.121 120.545H176.201Z" fill="#0DC09D"/>
<path d="M250.001 204.849C210.551 202.229 178.941 170.542 176.461 131.054H130.391C132.951 196.01 185.071 248.226 250.001 250.926V204.849Z" fill="#0DC09D"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="251" height="251" fill="none" viewBox="0 0 251 251"><path fill="#0DC09D" d="M0 47.0195C39.45 49.6394 71.06 81.3272 73.54 120.815H119.61C117.05 55.8589 64.93 3.64245 0 0.942627V47.0195Z"/><path fill="#0DC09D" d="M73.8 131.324C71.18 170.771 39.49 202.379 0 204.859V250.926C64.96 248.366 117.18 196.249 119.88 131.324H73.8Z"/><path fill="#0DC09D" d="M176.201 120.545C178.821 81.0972 210.511 49.4894 250.001 47.0095V0.942627C185.041 3.50245 132.821 55.619 130.121 120.545H176.201Z"/><path fill="#0DC09D" d="M250.001 204.849C210.551 202.229 178.941 170.542 176.461 131.054H130.391C132.951 196.01 185.071 248.226 250.001 250.926V204.849Z"/></svg>

Before

Width:  |  Height:  |  Size: 693 B

After

Width:  |  Height:  |  Size: 687 B

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

+1 -2
View File
@@ -1,2 +1 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="none"><path fill="#06D092" d="M8 0L1 4v8l7 4 7-4V4L8 0zm3.119 8.797L9.254 9.863 7.001 8.65v2.549l-2.118 1.33v-5.33l1.68-1.018 2.332 1.216V4.794l2.23-1.322-.006 5.325z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="800" fill="none" viewBox="0 0 16 16"><path fill="#06D092" d="M8 0L1 4v8l7 4 7-4V4L8 0zm3.119 8.797L9.254 9.863 7.001 8.65v2.549l-2.118 1.33v-5.33l1.68-1.018 2.332 1.216V4.794l2.23-1.322-.006 5.325z"/></svg>

Before

Width:  |  Height:  |  Size: 390 B

After

Width:  |  Height:  |  Size: 266 B

+1 -15
View File
@@ -1,15 +1 @@
<svg width="721" height="721" viewBox="0 0 721 721" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1637_2935)">
<g clip-path="url(#clip1_1637_2935)">
<path d="M304.246 295.411V249.828C304.246 245.989 305.687 243.109 309.044 241.191L400.692 188.412C413.167 181.215 428.042 177.858 443.394 177.858C500.971 177.858 537.44 222.482 537.44 269.982C537.44 273.34 537.44 277.179 536.959 281.018L441.954 225.358C436.197 222 430.437 222 424.68 225.358L304.246 295.411ZM518.245 472.945V364.024C518.245 357.304 515.364 352.507 509.608 349.149L389.174 279.096L428.519 256.543C431.877 254.626 434.757 254.626 438.115 256.543L529.762 309.323C556.154 324.679 573.905 357.304 573.905 388.971C573.905 425.436 552.315 459.024 518.245 472.941V472.945ZM275.937 376.982L236.592 353.952C233.235 352.034 231.794 349.154 231.794 345.315V239.756C231.794 188.416 271.139 149.548 324.4 149.548C344.555 149.548 363.264 156.268 379.102 168.262L284.578 222.964C278.822 226.321 275.942 231.119 275.942 237.838V376.986L275.937 376.982ZM360.626 425.922L304.246 394.255V327.083L360.626 295.416L417.002 327.083V394.255L360.626 425.922ZM396.852 571.789C376.698 571.789 357.989 565.07 342.151 553.075L436.674 498.374C442.431 495.017 445.311 490.219 445.311 483.499V344.352L485.138 367.382C488.495 369.299 489.936 372.179 489.936 376.018V481.577C489.936 532.917 450.109 571.785 396.852 571.785V571.789ZM283.134 464.79L191.486 412.01C165.094 396.654 147.343 364.029 147.343 332.362C147.343 295.416 169.415 262.309 203.48 248.393V357.791C203.48 364.51 206.361 369.308 212.117 372.665L332.074 442.237L292.729 464.79C289.372 466.707 286.491 466.707 283.134 464.79ZM277.859 543.48C223.639 543.48 183.813 502.695 183.813 452.314C183.813 448.475 184.294 444.636 184.771 440.797L279.295 495.498C285.051 498.856 290.812 498.856 296.568 495.498L417.002 425.927V471.509C417.002 475.349 415.562 478.229 412.204 480.146L320.557 532.926C308.081 540.122 293.206 543.48 277.854 543.48H277.859ZM396.852 600.576C454.911 600.576 503.37 559.313 514.41 504.612C568.149 490.696 602.696 440.315 602.696 388.976C602.696 355.387 588.303 322.762 562.392 299.25C564.791 289.173 566.231 279.096 566.231 269.024C566.231 200.411 510.571 149.067 446.274 149.067C433.322 149.067 420.846 150.984 408.37 155.305C386.775 134.192 357.026 120.758 324.4 120.758C266.342 120.758 217.883 162.02 206.843 216.721C153.104 230.637 118.557 281.018 118.557 332.357C118.557 365.946 132.95 398.571 158.861 422.083C156.462 432.16 155.022 442.237 155.022 452.309C155.022 520.922 210.682 572.266 274.978 572.266C287.931 572.266 300.407 570.349 312.883 566.028C334.473 587.141 364.222 600.576 396.852 600.576Z" fill="white"/>
</g>
</g>
<defs>
<clipPath id="clip0_1637_2935">
<rect width="720" height="720" fill="white" transform="translate(0.606934 0.899902)"/>
</clipPath>
<clipPath id="clip1_1637_2935">
<rect width="484.139" height="479.818" fill="white" transform="translate(118.557 120.758)"/>
</clipPath>
</defs>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="721" height="721" fill="none" viewBox="0 0 721 721"><g clip-path="url(#clip0_1637_2935)"><g clip-path="url(#clip1_1637_2935)"><path fill="#fff" d="M304.246 295.411V249.828C304.246 245.989 305.687 243.109 309.044 241.191L400.692 188.412C413.167 181.215 428.042 177.858 443.394 177.858C500.971 177.858 537.44 222.482 537.44 269.982C537.44 273.34 537.44 277.179 536.959 281.018L441.954 225.358C436.197 222 430.437 222 424.68 225.358L304.246 295.411ZM518.245 472.945V364.024C518.245 357.304 515.364 352.507 509.608 349.149L389.174 279.096L428.519 256.543C431.877 254.626 434.757 254.626 438.115 256.543L529.762 309.323C556.154 324.679 573.905 357.304 573.905 388.971C573.905 425.436 552.315 459.024 518.245 472.941V472.945ZM275.937 376.982L236.592 353.952C233.235 352.034 231.794 349.154 231.794 345.315V239.756C231.794 188.416 271.139 149.548 324.4 149.548C344.555 149.548 363.264 156.268 379.102 168.262L284.578 222.964C278.822 226.321 275.942 231.119 275.942 237.838V376.986L275.937 376.982ZM360.626 425.922L304.246 394.255V327.083L360.626 295.416L417.002 327.083V394.255L360.626 425.922ZM396.852 571.789C376.698 571.789 357.989 565.07 342.151 553.075L436.674 498.374C442.431 495.017 445.311 490.219 445.311 483.499V344.352L485.138 367.382C488.495 369.299 489.936 372.179 489.936 376.018V481.577C489.936 532.917 450.109 571.785 396.852 571.785V571.789ZM283.134 464.79L191.486 412.01C165.094 396.654 147.343 364.029 147.343 332.362C147.343 295.416 169.415 262.309 203.48 248.393V357.791C203.48 364.51 206.361 369.308 212.117 372.665L332.074 442.237L292.729 464.79C289.372 466.707 286.491 466.707 283.134 464.79ZM277.859 543.48C223.639 543.48 183.813 502.695 183.813 452.314C183.813 448.475 184.294 444.636 184.771 440.797L279.295 495.498C285.051 498.856 290.812 498.856 296.568 495.498L417.002 425.927V471.509C417.002 475.349 415.562 478.229 412.204 480.146L320.557 532.926C308.081 540.122 293.206 543.48 277.854 543.48H277.859ZM396.852 600.576C454.911 600.576 503.37 559.313 514.41 504.612C568.149 490.696 602.696 440.315 602.696 388.976C602.696 355.387 588.303 322.762 562.392 299.25C564.791 289.173 566.231 279.096 566.231 269.024C566.231 200.411 510.571 149.067 446.274 149.067C433.322 149.067 420.846 150.984 408.37 155.305C386.775 134.192 357.026 120.758 324.4 120.758C266.342 120.758 217.883 162.02 206.843 216.721C153.104 230.637 118.557 281.018 118.557 332.357C118.557 365.946 132.95 398.571 158.861 422.083C156.462 432.16 155.022 442.237 155.022 452.309C155.022 520.922 210.682 572.266 274.978 572.266C287.931 572.266 300.407 570.349 312.883 566.028C334.473 587.141 364.222 600.576 396.852 600.576Z"/></g></g><defs><clipPath id="clip0_1637_2935"><rect width="720" height="720" fill="#fff" transform="translate(0.606934 0.899902)"/></clipPath><clipPath id="clip1_1637_2935"><rect width="484.139" height="479.818" fill="#fff" transform="translate(118.557 120.758)"/></clipPath></defs></svg>

Before

Width:  |  Height:  |  Size: 2.9 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

+1 -1
View File
@@ -1 +1 @@
<svg width='240' height='300' viewBox='0 0 240 300' fill='none' xmlns='http://www.w3.org/2000/svg'><g clip-path='url(#clip0_1401_86283)'><mask id='mask0_1401_86283' style='mask-type:luminance' maskUnits='userSpaceOnUse' x='0' y='0' width='240' height='300'><path d='M240 0H0V300H240V0Z' fill='white'/></mask><g mask='url(#mask0_1401_86283)'><path d='M180 240H60V120H180V240Z' fill='#4B4646'/><path d='M180 60H60V240H180V60ZM240 300H0V0H240V300Z' fill='#F1ECEC'/></g></g><defs><clipPath id='clip0_1401_86283'><rect width='240' height='300' fill='white'/></clipPath></defs></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="240" height="300" fill="none" viewBox="0 0 240 300"><g clip-path="url(#clip0_1401_86283)"><mask id="mask0_1401_86283" width="240" height="300" x="0" y="0" maskUnits="userSpaceOnUse" style="mask-type:luminance"><path fill="#fff" d="M240 0H0V300H240V0Z"/></mask><g mask="url(#mask0_1401_86283)"><path fill="#4B4646" d="M180 240H60V120H180V240Z"/><path fill="#F1ECEC" d="M180 60H60V240H180V60ZM240 300H0V0H240V300Z"/></g></g><defs><clipPath id="clip0_1401_86283"><rect width="240" height="300" fill="#fff"/></clipPath></defs></svg>

Before

Width:  |  Height:  |  Size: 577 B

After

Width:  |  Height:  |  Size: 575 B

+1 -5
View File
@@ -1,5 +1 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg">
<circle cx="250" cy="250" r="250" fill="#fff"/>
<path d="m335 150h40v200h-40zm-130 0a100 100 0 1 0 0 200 100 100 0 1 0 0-200zm0 40a60 60 0 1 1 0 120 60 60 0 1 1 0-120z"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 500 500"><circle cx="250" cy="250" r="250" fill="#fff"/><path d="m335 150h40v200h-40zm-130 0a100 100 0 1 0 0 200 100 100 0 1 0 0-200zm0 40a60 60 0 1 1 0 120 60 60 0 1 1 0-120z"/></svg>

Before

Width:  |  Height:  |  Size: 293 B

After

Width:  |  Height:  |  Size: 237 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256" viewBox="0 0 256 256"><circle cx="128" cy="128" r="120" fill="#000"/><polygon fill="#fff" points="128 70 178 170 78 170"/></svg>

After

Width:  |  Height:  |  Size: 193 B

+1 -1
View File
@@ -1 +1 @@
<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 47.5 47.5" style="enable-background:new 0 0 47.5 47.5;" id="svg2" xml:space="preserve"><defs id="defs6"><clipPath id="clipPath18"><path d="M 0,38 38,38 38,0 0,0 0,38 z" id="path20"/></clipPath></defs><g transform="matrix(1.25,0,0,-1.25,0,47.5)" id="g12"><g id="g14"><g clip-path="url(#clipPath18)" id="g16"><g transform="translate(21.8486,9.4102)" id="g22"><path d="m 0,0 c -0.395,-1.346 -2.46,-1.924 -4.613,-1.291 -2.153,0.632 -3.578,2.234 -3.183,3.581 0.395,1.346 2.461,1.924 4.613,1.29 C -1.029,2.949 0.396,1.347 0,0 m -2.849,24.447 c -9.941,0 -18,-6.908 -18,-15.428 0,-1.067 0.127,-2.108 0.367,-3.113 1.779,-3.06 3.01,-1.128 8.633,1.684 5.727,2.864 0,-4 -2,-8 -0.615,-1.231 -0.281,-2.272 0.56,-3.124 2.946,-1.804 6.544,-2.876 10.44,-2.876 9.942,0 18,6.907 18,15.429 0,8.52 -8.058,15.428 -18,15.428" id="path24" style="fill:#d99e82;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g><g transform="translate(14,26)" id="g26"><path d="m 0,0 c 0,-1.657 -1.343,-3 -3,-3 -1.657,0 -3,1.343 -3,3 0,1.657 1.343,3 3,3 1.657,0 3,-1.343 3,-3" id="path28" style="fill:#5c913b;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g><g transform="translate(24,28)" id="g30"><path d="m 0,0 c 0,-1.657 -1.344,-3 -3,-3 -1.657,0 -3,1.343 -3,3 0,1.657 1.343,3 3,3 1.656,0 3,-1.343 3,-3" id="path32" style="fill:#226699;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g><g transform="translate(33,22)" id="g34"><path d="m 0,0 c 0,-1.657 -1.344,-3 -3,-3 -1.656,0 -3,1.343 -3,3 0,1.657 1.344,3 3,3 1.656,0 3,-1.343 3,-3" id="path36" style="fill:#dd2e44;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g><g transform="translate(32,13)" id="g38"><path d="m 0,0 c 0,-1.656 -1.344,-3 -3,-3 -1.656,0 -3,1.344 -3,3 0,1.656 1.344,3 3,3 1.656,0 3,-1.344 3,-3" id="path40" style="fill:#ffcc4d;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g></g></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" style="enable-background:new 0 0 47.5 47.5" id="svg2" version="1.1" viewBox="0 0 47.5 47.5" xml:space="preserve"><defs id="defs6"><clipPath id="clipPath18"><path id="path20" d="M 0,38 38,38 38,0 0,0 0,38 z"/></clipPath></defs><g id="g12" transform="matrix(1.25,0,0,-1.25,0,47.5)"><g id="g14"><g id="g16" clip-path="url(#clipPath18)"><g id="g22" transform="translate(21.8486,9.4102)"><path id="path24" d="m 0,0 c -0.395,-1.346 -2.46,-1.924 -4.613,-1.291 -2.153,0.632 -3.578,2.234 -3.183,3.581 0.395,1.346 2.461,1.924 4.613,1.29 C -1.029,2.949 0.396,1.347 0,0 m -2.849,24.447 c -9.941,0 -18,-6.908 -18,-15.428 0,-1.067 0.127,-2.108 0.367,-3.113 1.779,-3.06 3.01,-1.128 8.633,1.684 5.727,2.864 0,-4 -2,-8 -0.615,-1.231 -0.281,-2.272 0.56,-3.124 2.946,-1.804 6.544,-2.876 10.44,-2.876 9.942,0 18,6.907 18,15.429 0,8.52 -8.058,15.428 -18,15.428" style="fill:#d99e82;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g><g id="g26" transform="translate(14,26)"><path id="path28" d="m 0,0 c 0,-1.657 -1.343,-3 -3,-3 -1.657,0 -3,1.343 -3,3 0,1.657 1.343,3 3,3 1.657,0 3,-1.343 3,-3" style="fill:#5c913b;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g><g id="g30" transform="translate(24,28)"><path id="path32" d="m 0,0 c 0,-1.657 -1.344,-3 -3,-3 -1.657,0 -3,1.343 -3,3 0,1.657 1.343,3 3,3 1.656,0 3,-1.343 3,-3" style="fill:#269;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g><g id="g34" transform="translate(33,22)"><path id="path36" d="m 0,0 c 0,-1.657 -1.344,-3 -3,-3 -1.656,0 -3,1.343 -3,3 0,1.657 1.344,3 3,3 1.656,0 3,-1.343 3,-3" style="fill:#dd2e44;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g><g id="g38" transform="translate(32,13)"><path id="path40" d="m 0,0 c 0,-1.656 -1.344,-3 -3,-3 -1.656,0 -3,1.344 -3,3 0,1.656 1.344,3 3,3 1.656,0 3,-1.344 3,-3" style="fill:#ffcc4d;fill-opacity:1;fill-rule:nonzero;stroke:none"/></g></g></g></g></svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

+1 -1
View File
@@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" height="64" viewBox="0 0 25.6 25.6" width="64"><style><![CDATA[.B{stroke-linecap:round}.C{stroke-linejoin:round}.D{stroke-linejoin:miter}.E{stroke-width:.716}]]></style><g fill="none" stroke="#fff"><path d="M18.983 18.636c.163-1.357.114-1.555 1.124-1.336l.257.023c.777.035 1.793-.125 2.4-.402 1.285-.596 2.047-1.592.78-1.33-2.89.596-3.1-.383-3.1-.383 3.053-4.53 4.33-10.28 3.227-11.687-3.004-3.84-8.205-2.024-8.292-1.976l-.028.005c-.57-.12-1.2-.19-1.93-.2-1.308-.02-2.3.343-3.054.914 0 0-9.277-3.822-8.846 4.807.092 1.836 2.63 13.9 5.66 10.25C8.29 15.987 9.36 14.86 9.36 14.86c.53.353 1.167.533 1.834.468l.052-.044a2.01 2.01 0 0 0 .021.518c-.78.872-.55 1.025-2.11 1.346-1.578.325-.65.904-.046 1.056.734.184 2.432.444 3.58-1.162l-.046.183c.306.245.285 1.76.33 2.842s.116 2.093.337 2.688.48 2.13 2.53 1.7c1.713-.367 3.023-.896 3.143-5.81" fill="#000" stroke="#000" stroke-linecap="butt" stroke-width="2.149" class="D"/><path d="M23.535 15.6c-2.89.596-3.1-.383-3.1-.383 3.053-4.53 4.33-10.28 3.228-11.687-3.004-3.84-8.205-2.023-8.292-1.976l-.028.005a10.31 10.31 0 0 0-1.929-.201c-1.308-.02-2.3.343-3.054.914 0 0-9.278-3.822-8.846 4.807.092 1.836 2.63 13.9 5.66 10.25C8.29 15.987 9.36 14.86 9.36 14.86c.53.353 1.167.533 1.834.468l.052-.044a2.02 2.02 0 0 0 .021.518c-.78.872-.55 1.025-2.11 1.346-1.578.325-.65.904-.046 1.056.734.184 2.432.444 3.58-1.162l-.046.183c.306.245.52 1.593.484 2.815s-.06 2.06.18 2.716.48 2.13 2.53 1.7c1.713-.367 2.6-1.32 2.725-2.906.088-1.128.286-.962.3-1.97l.16-.478c.183-1.53.03-2.023 1.085-1.793l.257.023c.777.035 1.794-.125 2.39-.402 1.285-.596 2.047-1.592.78-1.33z" fill="#336791" stroke="none"/><g class="E"><g class="B"><path d="M12.814 16.467c-.08 2.846.02 5.712.298 6.4s.875 2.05 2.926 1.612c1.713-.367 2.337-1.078 2.607-2.647l.633-5.017M10.356 2.2S1.072-1.596 1.504 7.033c.092 1.836 2.63 13.9 5.66 10.25C8.27 15.95 9.27 14.907 9.27 14.907m6.1-13.4c-.32.1 5.164-2.005 8.282 1.978 1.1 1.407-.175 7.157-3.228 11.687" class="C"/><path d="M20.425 15.17s.2.98 3.1.382c1.267-.262.504.734-.78 1.33-1.054.49-3.418.615-3.457-.06-.1-1.745 1.244-1.215 1.147-1.652-.088-.394-.69-.78-1.086-1.744-.347-.84-4.76-7.29 1.224-6.333.22-.045-1.56-5.7-7.16-5.782S7.99 8.196 7.99 8.196" stroke-linejoin="bevel"/></g><g class="C"><path d="M11.247 15.768c-.78.872-.55 1.025-2.11 1.346-1.578.325-.65.904-.046 1.056.734.184 2.432.444 3.58-1.163.35-.49-.002-1.27-.482-1.468-.232-.096-.542-.216-.94.23z"/><path d="M11.196 15.753c-.08-.513.168-1.122.433-1.836.398-1.07 1.316-2.14.582-5.537-.547-2.53-4.22-.527-4.22-.184s.166 1.74-.06 3.365c-.297 2.122 1.35 3.916 3.246 3.733" class="B"/></g></g><g fill="#fff" class="D"><path d="M10.322 8.145c-.017.117.215.43.516.472s.558-.202.575-.32-.215-.246-.516-.288-.56.02-.575.136z" stroke-width=".239"/><path d="M19.486 7.906c.016.117-.215.43-.516.472s-.56-.202-.575-.32.215-.246.516-.288.56.02.575.136z" stroke-width=".119"/></g><path d="M20.562 7.095c.05.92-.198 1.545-.23 2.524-.046 1.422.678 3.05-.413 4.68" class="B C E"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 25.6 25.6"><style>.B{stroke-linecap:round}.C{stroke-linejoin:round}.D{stroke-linejoin:miter}.E{stroke-width:.716}</style><g fill="none" stroke="#fff"><path fill="#000" stroke="#000" stroke-linecap="butt" stroke-width="2.149" d="M18.983 18.636c.163-1.357.114-1.555 1.124-1.336l.257.023c.777.035 1.793-.125 2.4-.402 1.285-.596 2.047-1.592.78-1.33-2.89.596-3.1-.383-3.1-.383 3.053-4.53 4.33-10.28 3.227-11.687-3.004-3.84-8.205-2.024-8.292-1.976l-.028.005c-.57-.12-1.2-.19-1.93-.2-1.308-.02-2.3.343-3.054.914 0 0-9.277-3.822-8.846 4.807.092 1.836 2.63 13.9 5.66 10.25C8.29 15.987 9.36 14.86 9.36 14.86c.53.353 1.167.533 1.834.468l.052-.044a2.01 2.01 0 0 0 .021.518c-.78.872-.55 1.025-2.11 1.346-1.578.325-.65.904-.046 1.056.734.184 2.432.444 3.58-1.162l-.046.183c.306.245.285 1.76.33 2.842s.116 2.093.337 2.688.48 2.13 2.53 1.7c1.713-.367 3.023-.896 3.143-5.81" class="D"/><path fill="#336791" stroke="none" d="M23.535 15.6c-2.89.596-3.1-.383-3.1-.383 3.053-4.53 4.33-10.28 3.228-11.687-3.004-3.84-8.205-2.023-8.292-1.976l-.028.005a10.31 10.31 0 0 0-1.929-.201c-1.308-.02-2.3.343-3.054.914 0 0-9.278-3.822-8.846 4.807.092 1.836 2.63 13.9 5.66 10.25C8.29 15.987 9.36 14.86 9.36 14.86c.53.353 1.167.533 1.834.468l.052-.044a2.02 2.02 0 0 0 .021.518c-.78.872-.55 1.025-2.11 1.346-1.578.325-.65.904-.046 1.056.734.184 2.432.444 3.58-1.162l-.046.183c.306.245.52 1.593.484 2.815s-.06 2.06.18 2.716.48 2.13 2.53 1.7c1.713-.367 2.6-1.32 2.725-2.906.088-1.128.286-.962.3-1.97l.16-.478c.183-1.53.03-2.023 1.085-1.793l.257.023c.777.035 1.794-.125 2.39-.402 1.285-.596 2.047-1.592.78-1.33z"/><g class="E"><g class="B"><path d="M12.814 16.467c-.08 2.846.02 5.712.298 6.4s.875 2.05 2.926 1.612c1.713-.367 2.337-1.078 2.607-2.647l.633-5.017M10.356 2.2S1.072-1.596 1.504 7.033c.092 1.836 2.63 13.9 5.66 10.25C8.27 15.95 9.27 14.907 9.27 14.907m6.1-13.4c-.32.1 5.164-2.005 8.282 1.978 1.1 1.407-.175 7.157-3.228 11.687" class="C"/><path stroke-linejoin="bevel" d="M20.425 15.17s.2.98 3.1.382c1.267-.262.504.734-.78 1.33-1.054.49-3.418.615-3.457-.06-.1-1.745 1.244-1.215 1.147-1.652-.088-.394-.69-.78-1.086-1.744-.347-.84-4.76-7.29 1.224-6.333.22-.045-1.56-5.7-7.16-5.782S7.99 8.196 7.99 8.196"/></g><g class="C"><path d="M11.247 15.768c-.78.872-.55 1.025-2.11 1.346-1.578.325-.65.904-.046 1.056.734.184 2.432.444 3.58-1.163.35-.49-.002-1.27-.482-1.468-.232-.096-.542-.216-.94.23z"/><path d="M11.196 15.753c-.08-.513.168-1.122.433-1.836.398-1.07 1.316-2.14.582-5.537-.547-2.53-4.22-.527-4.22-.184s.166 1.74-.06 3.365c-.297 2.122 1.35 3.916 3.246 3.733" class="B"/></g></g><g fill="#fff" class="D"><path stroke-width=".239" d="M10.322 8.145c-.017.117.215.43.516.472s.558-.202.575-.32-.215-.246-.516-.288-.56.02-.575.136z"/><path stroke-width=".119" d="M19.486 7.906c.016.117-.215.43-.516.472s-.56-.202-.575-.32.215-.246.516-.288.56.02.575.136z"/></g><path d="M20.562 7.095c.05.92-.198 1.545-.23 2.524-.046 1.422.678 3.05-.413 4.68" class="B C E"/></g></svg>

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

+1 -12
View File
@@ -1,12 +1 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 440 440">
<g id="Layer_6" data-name="Layer 6">
<rect x="12" y="12" width="416" height="416" rx="103" ry="103" fill="#3a78b1" stroke-width="0"/>
</g>
<g id="Layer_8" data-name="Layer 8">
<path d="M83.6,373.6v-178.6c0-63,52.4-143.7,142.7-143.7s144.1,69.7,144.1,141.1c0,122.6-116.6,143.1-116.6,143.1,0,0,7.2-11.5,7.2-29.5s-8-28-8-28c0,0,60-16,60-87s-53-83-86-83c-57,0-88.3,48.5-88.3,84.3v181.9c0,25.9-17.5,23.9-17.5,23.9h-19.2s-18.4,0-18.4-24.4Z" fill="#fff" stroke-width="0"/>
</g>
<g id="Layer_9" data-name="Layer 9">
<circle cx="204.9" cy="306.6" r="48" fill="#fff" stroke-width="0"/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 440 440"><g id="Layer_6" data-name="Layer 6"><rect width="416" height="416" x="12" y="12" fill="#3a78b1" stroke-width="0" rx="103" ry="103"/></g><g id="Layer_8" data-name="Layer 8"><path fill="#fff" stroke-width="0" d="M83.6,373.6v-178.6c0-63,52.4-143.7,142.7-143.7s144.1,69.7,144.1,141.1c0,122.6-116.6,143.1-116.6,143.1,0,0,7.2-11.5,7.2-29.5s-8-28-8-28c0,0,60-16,60-87s-53-83-86-83c-57,0-88.3,48.5-88.3,84.3v181.9c0,25.9-17.5,23.9-17.5,23.9h-19.2s-18.4,0-18.4-24.4Z"/></g><g id="Layer_9" data-name="Layer 9"><circle cx="204.9" cy="306.6" r="48" fill="#fff" stroke-width="0"/></g></svg>

Before

Width:  |  Height:  |  Size: 727 B

After

Width:  |  Height:  |  Size: 653 B

+1 -137
View File
File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 9.5 KiB

+1 -35
View File
@@ -1,35 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" fill="none" viewBox="0 0 512 512">
<g transform="translate(256 256)scale(8.96)">
<linearGradient id="a" x1="6.221" x2="37.408" y1="6.221" y2="37.408" gradientUnits="userSpaceOnUse">
<stop offset="0%" style="stop-color:#f0f0f0;stop-opacity:1"/>
<stop offset="100%" style="stop-color:#bbc1c4;stop-opacity:1"/>
</linearGradient>
<path d="M24 5C13.507 5 5 13.507 5 24s8.507 19 19 19 19-8.507 19-19S34.493 5 24 5" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#a);fill-rule:nonzero;opacity:1" transform="translate(-24 -24)"/>
</g>
<g transform="translate(256 256)scale(8.96)">
<linearGradient id="b" x1="12.859" x2="35.224" y1="12.859" y2="35.224" gradientUnits="userSpaceOnUse">
<stop offset="0%" style="stop-color:#e04f12;stop-opacity:1"/>
<stop offset="61.5%" style="stop-color:#ce400d;stop-opacity:1"/>
<stop offset="100%" style="stop-color:#c03409;stop-opacity:1"/>
</linearGradient>
<path d="M24 40c8.837 0 16-7.163 16-16S32.837 8 24 8 8 15.163 8 24s7.163 16 16 16" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#b);fill-rule:nonzero;opacity:1" transform="translate(-24 -24)"/>
</g>
<path d="m30.414 20 3.89-3.89c.708-.708.449-1.772 0-2.221l-2.195-2.195a1.573 1.573 0 0 0-2.218.001l-7.194 7.194c-.549.549-.752 1.469-.001 2.22l7.196 7.196c.76.76 1.592.625 2.218-.001l2.194-2.194c.707-.707.716-1.505.001-2.22z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#000;fill-rule:nonzero;opacity:.05" transform="translate(40.96 40.96)scale(8.96)"/>
<path d="m33.951 14.244-2.195-2.195a1.07 1.07 0 0 0-1.511 0l-7.195 7.195c-.386.386-.487 1.025 0 1.512l7.196 7.196c.491.491 1.087.424 1.511 0l2.195-2.195c.464-.464.469-1.044 0-1.512L29.707 20l4.244-4.244c.465-.465.335-1.177 0-1.512" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#000;fill-rule:nonzero;opacity:.07" transform="translate(40.96 40.96)scale(8.96)"/>
<path d="m17.586 28-3.89 3.89c-.708.708-.449 1.772 0 2.221l2.195 2.195c.611.609 1.606.61 2.218-.001l7.194-7.194c.549-.549.752-1.469.001-2.22l-7.196-7.196c-.76-.76-1.592-.625-2.218.001l-2.194 2.194c-.707.707-.716 1.505-.001 2.22z" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#000;fill-rule:nonzero;opacity:.05" transform="translate(40.96 40.96)scale(8.96)"/>
<path d="m14.049 33.756 2.195 2.195a1.07 1.07 0 0 0 1.511 0l7.195-7.195c.386-.386.487-1.025 0-1.512l-7.196-7.196c-.491-.491-1.087-.424-1.511 0l-2.195 2.195c-.464.464-.469 1.044 0 1.512L18.293 28l-4.244 4.244c-.465.465-.335 1.177 0 1.512" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#000;fill-rule:nonzero;opacity:.07" transform="translate(40.96 40.96)scale(8.96)"/>
<g transform="translate(296.83 220.16)scale(8.96)">
<linearGradient id="c" x1="23.755" x2="38.564" y1="9.93" y2="33.557" gradientUnits="userSpaceOnUse">
<stop offset="0%" style="stop-color:#fcfcfc;stop-opacity:1"/>
<stop offset="100%" style="stop-color:#c3c9cd;stop-opacity:1"/>
</linearGradient>
<path d="m33.598 14.598-2.196-2.196a.57.57 0 0 0-.804 0l-7.196 7.196a.57.57 0 0 0 0 .804l7.196 7.196a.57.57 0 0 0 .804 0l2.196-2.196a.57.57 0 0 0 0-.804L29 20l4.598-4.598a.57.57 0 0 0 0-.804" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#c);fill-rule:nonzero;opacity:1" transform="translate(-28.5 -20)"/>
</g>
<g transform="translate(215.17 291.84)scale(8.96)">
<linearGradient id="d" x1="11.438" x2="26.247" y1="17.637" y2="41.265" gradientUnits="userSpaceOnUse">
<stop offset="0%" style="stop-color:#fcfcfc;stop-opacity:1"/>
<stop offset="100%" style="stop-color:#c3c9cd;stop-opacity:1"/>
</linearGradient>
<path d="M14.402 23.402 19 28l-4.598 4.598a.57.57 0 0 0 0 .804l2.196 2.196a.57.57 0 0 0 .804 0l7.196-7.196a.57.57 0 0 0 0-.804l-7.196-7.196a.57.57 0 0 0-.804 0l-2.196 2.196a.57.57 0 0 0 0 .804" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#d);fill-rule:nonzero;opacity:1" transform="translate(-19.5 -28)"/>
</g>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="512" height="512" fill="none" viewBox="0 0 512 512"><g transform="translate(256 256)scale(8.96)"><linearGradient id="a" x1="6.221" x2="37.408" y1="6.221" y2="37.408" gradientUnits="userSpaceOnUse"><stop offset="0%" style="stop-color:#f0f0f0;stop-opacity:1"/><stop offset="100%" style="stop-color:#bbc1c4;stop-opacity:1"/></linearGradient><path d="M24 5C13.507 5 5 13.507 5 24s8.507 19 19 19 19-8.507 19-19S34.493 5 24 5" transform="translate(-24 -24)" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#a);fill-rule:nonzero;opacity:1"/></g><g transform="translate(256 256)scale(8.96)"><linearGradient id="b" x1="12.859" x2="35.224" y1="12.859" y2="35.224" gradientUnits="userSpaceOnUse"><stop offset="0%" style="stop-color:#e04f12;stop-opacity:1"/><stop offset="61.5%" style="stop-color:#ce400d;stop-opacity:1"/><stop offset="100%" style="stop-color:#c03409;stop-opacity:1"/></linearGradient><path d="M24 40c8.837 0 16-7.163 16-16S32.837 8 24 8 8 15.163 8 24s7.163 16 16 16" transform="translate(-24 -24)" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#b);fill-rule:nonzero;opacity:1"/></g><path d="m30.414 20 3.89-3.89c.708-.708.449-1.772 0-2.221l-2.195-2.195a1.573 1.573 0 0 0-2.218.001l-7.194 7.194c-.549.549-.752 1.469-.001 2.22l7.196 7.196c.76.76 1.592.625 2.218-.001l2.194-2.194c.707-.707.716-1.505.001-2.22z" transform="translate(40.96 40.96)scale(8.96)" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#000;fill-rule:nonzero;opacity:.05"/><path d="m33.951 14.244-2.195-2.195a1.07 1.07 0 0 0-1.511 0l-7.195 7.195c-.386.386-.487 1.025 0 1.512l7.196 7.196c.491.491 1.087.424 1.511 0l2.195-2.195c.464-.464.469-1.044 0-1.512L29.707 20l4.244-4.244c.465-.465.335-1.177 0-1.512" transform="translate(40.96 40.96)scale(8.96)" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#000;fill-rule:nonzero;opacity:.07"/><path d="m17.586 28-3.89 3.89c-.708.708-.449 1.772 0 2.221l2.195 2.195c.611.609 1.606.61 2.218-.001l7.194-7.194c.549-.549.752-1.469.001-2.22l-7.196-7.196c-.76-.76-1.592-.625-2.218.001l-2.194 2.194c-.707.707-.716 1.505-.001 2.22z" transform="translate(40.96 40.96)scale(8.96)" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#000;fill-rule:nonzero;opacity:.05"/><path d="m14.049 33.756 2.195 2.195a1.07 1.07 0 0 0 1.511 0l7.195-7.195c.386-.386.487-1.025 0-1.512l-7.196-7.196c-.491-.491-1.087-.424-1.511 0l-2.195 2.195c-.464.464-.469 1.044 0 1.512L18.293 28l-4.244 4.244c-.465.465-.335 1.177 0 1.512" transform="translate(40.96 40.96)scale(8.96)" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:#000;fill-rule:nonzero;opacity:.07"/><g transform="translate(296.83 220.16)scale(8.96)"><linearGradient id="c" x1="23.755" x2="38.564" y1="9.93" y2="33.557" gradientUnits="userSpaceOnUse"><stop offset="0%" style="stop-color:#fcfcfc;stop-opacity:1"/><stop offset="100%" style="stop-color:#c3c9cd;stop-opacity:1"/></linearGradient><path d="m33.598 14.598-2.196-2.196a.57.57 0 0 0-.804 0l-7.196 7.196a.57.57 0 0 0 0 .804l7.196 7.196a.57.57 0 0 0 .804 0l2.196-2.196a.57.57 0 0 0 0-.804L29 20l4.598-4.598a.57.57 0 0 0 0-.804" transform="translate(-28.5 -20)" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#c);fill-rule:nonzero;opacity:1"/></g><g transform="translate(215.17 291.84)scale(8.96)"><linearGradient id="d" x1="11.438" x2="26.247" y1="17.637" y2="41.265" gradientUnits="userSpaceOnUse"><stop offset="0%" style="stop-color:#fcfcfc;stop-opacity:1"/><stop offset="100%" style="stop-color:#c3c9cd;stop-opacity:1"/></linearGradient><path d="M14.402 23.402 19 28l-4.598 4.598a.57.57 0 0 0 0 .804l2.196 2.196a.57.57 0 0 0 .804 0l7.196-7.196a.57.57 0 0 0 0-.804l-7.196-7.196a.57.57 0 0 0-.804 0l-2.196 2.196a.57.57 0 0 0 0 .804" transform="translate(-19.5 -28)" style="stroke:none;stroke-width:1;stroke-dasharray:none;stroke-linecap:butt;stroke-dashoffset:0;stroke-linejoin:miter;stroke-miterlimit:4;fill:url(#d);fill-rule:nonzero;opacity:1"/></g></svg>

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.5 KiB

+1 -5
View File
@@ -1,5 +1 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg height="32" viewBox="0 0 375 375" width="32" xmlns="http://www.w3.org/2000/svg">
<rect fill="#0071ff" height="375.001088" rx="58.59392" stroke-width=".91553" width="375.001088" x=".0009759" y="-.0066962"/>
<path d="m150.428 322.264c-29.063-6.202-53.897-22.439-73.115-47.804-19.507-25.746-27.838-55.355-25.723-91.414 6.655-62.013 47.667-106.753 99.687-120.411 4.509-.989 8.353-3.462 12.55-1.322 3.22 1.64 6.028 4.467 7.206 7.251 1.25 2.955 1.877 21.54.99 29.331-1.076 9.46-3.877 12.418-14.566 15.388-29.723 10.195-48.105 34.07-53.697 61.017-4.8 29.668 2.951 59.729 21.528 78.727 8.966 8.993 17.92 14.24 30.869 18.086 8.646 2.57 13.393 5.758 15.036 10.102 1.085 2.867 1.63 22.984.779 28.772-1.33 9.046-1.702 9.796-5.792 11.667-5.029 2.3-7.404 2.392-15.752.61zm50.708.29c-3.092-1.402-5.673-4.83-6.73-8.94-.134-9.408-2.366-25.754 1.02-33.373 1.88-4.128 4.65-5.999 12.433-8.396 21.267-6.551 37.593-19.88 46.806-38.213 11.11-22.108 11.877-55.183 1.808-77.975-9.154-20.723-25.7-35.217-48.555-42.534-8.872-2.84-12.004-5.065-12.968-9.21-1.002-4.31-1.435-19.87-.785-28.218.682-8.766 1.249-9.99 6.162-13.318 3.701-2.505 5.482-2.446 17.223.575 36.718 10.077 65.97 33.597 83.026 66.68 18.495 37.034 19.191 86.11 1.742 122.655-17.233 36.09-50.591 62.511-88.622 70.194-8.172 1.65-9.07 1.656-12.56.073z" fill="#fff"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 375 375"><rect width="375.001" height="375.001" x=".001" y="-.007" fill="#0071ff" stroke-width=".916" rx="58.594"/><path fill="#fff" d="m150.428 322.264c-29.063-6.202-53.897-22.439-73.115-47.804-19.507-25.746-27.838-55.355-25.723-91.414 6.655-62.013 47.667-106.753 99.687-120.411 4.509-.989 8.353-3.462 12.55-1.322 3.22 1.64 6.028 4.467 7.206 7.251 1.25 2.955 1.877 21.54.99 29.331-1.076 9.46-3.877 12.418-14.566 15.388-29.723 10.195-48.105 34.07-53.697 61.017-4.8 29.668 2.951 59.729 21.528 78.727 8.966 8.993 17.92 14.24 30.869 18.086 8.646 2.57 13.393 5.758 15.036 10.102 1.085 2.867 1.63 22.984.779 28.772-1.33 9.046-1.702 9.796-5.792 11.667-5.029 2.3-7.404 2.392-15.752.61zm50.708.29c-3.092-1.402-5.673-4.83-6.73-8.94-.134-9.408-2.366-25.754 1.02-33.373 1.88-4.128 4.65-5.999 12.433-8.396 21.267-6.551 37.593-19.88 46.806-38.213 11.11-22.108 11.877-55.183 1.808-77.975-9.154-20.723-25.7-35.217-48.555-42.534-8.872-2.84-12.004-5.065-12.968-9.21-1.002-4.31-1.435-19.87-.785-28.218.682-8.766 1.249-9.99 6.162-13.318 3.701-2.505 5.482-2.446 17.223.575 36.718 10.077 65.97 33.597 83.026 66.68 18.495 37.034 19.191 86.11 1.742 122.655-17.233 36.09-50.591 62.511-88.622 70.194-8.172 1.65-9.07 1.656-12.56.073z"/></svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="800" fill="#000" role="img" viewBox="0 0 24 24"><title>Scaleway icon</title><path d="M16.61 11.11v5.72a1.77 1.77 0 0 1-1.54 1.69h-4a1.43 1.43 0 0 1-1.31-1.22 1.09 1.09 0 0 1 0-.18 1.37 1.37 0 0 1 1.37-1.36h1.74a1 1 0 0 0 1-1v-3.62a1.4 1.4 0 0 1 1.18-1.39h.17a1.37 1.37 0 0 1 1.39 1.36zm-6.46 1.74V9.26a1 1 0 0 1 1-1H13a1.37 1.37 0 0 0 1.37-1.37 1 1 0 0 0 0-.17 1.45 1.45 0 0 0-1.41-1.2H9a1.81 1.81 0 0 0-1.58 1.66v5.7a1.37 1.37 0 0 0 1.37 1.37H9a1.4 1.4 0 0 0 1.15-1.4zm12-4.29V20A4.53 4.53 0 0 1 18 24h-7.58a8.57 8.57 0 0 1-8.56-8.57V4.54A4.54 4.54 0 0 1 6.4 0h7.18a8.56 8.56 0 0 1 8.56 8.56zm-2.74 0a5.83 5.83 0 0 0-5.82-5.82H6.4a1.79 1.79 0 0 0-1.8 1.8v10.89a5.83 5.83 0 0 0 5.82 5.8h7.44a1.79 1.79 0 0 0 1.54-1.48z"/></svg>

After

Width:  |  Height:  |  Size: 787 B

+1 -6
View File
@@ -1,6 +1 @@
<svg width="127" height="127" xmlns="http://www.w3.org/2000/svg">
<path d="M27.2 80c0 7.3-5.9 13.2-13.2 13.2C6.7 93.2.8 87.3.8 80c0-7.3 5.9-13.2 13.2-13.2h13.2V80zm6.6 0c0-7.3 5.9-13.2 13.2-13.2 7.3 0 13.2 5.9 13.2 13.2v33c0 7.3-5.9 13.2-13.2 13.2-7.3 0-13.2-5.9-13.2-13.2V80z" fill="#E01E5A"/>
<path d="M47 27c-7.3 0-13.2-5.9-13.2-13.2C33.8 6.5 39.7.6 47 .6c7.3 0 13.2 5.9 13.2 13.2V27H47zm0 6.7c7.3 0 13.2 5.9 13.2 13.2 0 7.3-5.9 13.2-13.2 13.2H13.9C6.6 60.1.7 54.2.7 46.9c0-7.3 5.9-13.2 13.2-13.2H47z" fill="#36C5F0"/>
<path d="M99.9 46.9c0-7.3 5.9-13.2 13.2-13.2 7.3 0 13.2 5.9 13.2 13.2 0 7.3-5.9 13.2-13.2 13.2H99.9V46.9zm-6.6 0c0 7.3-5.9 13.2-13.2 13.2-7.3 0-13.2-5.9-13.2-13.2V13.8C66.9 6.5 72.8.6 80.1.6c7.3 0 13.2 5.9 13.2 13.2v33.1z" fill="#2EB67D"/>
<path d="M80.1 99.8c7.3 0 13.2 5.9 13.2 13.2 0 7.3-5.9 13.2-13.2 13.2-7.3 0-13.2-5.9-13.2-13.2V99.8h13.2zm0-6.6c-7.3 0-13.2-5.9-13.2-13.2 0-7.3 5.9-13.2 13.2-13.2h33.1c7.3 0 13.2 5.9 13.2 13.2 0 7.3-5.9 13.2-13.2 13.2H80.1z" fill="#ECB22E"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="127" height="127"><path fill="#E01E5A" d="M27.2 80c0 7.3-5.9 13.2-13.2 13.2C6.7 93.2.8 87.3.8 80c0-7.3 5.9-13.2 13.2-13.2h13.2V80zm6.6 0c0-7.3 5.9-13.2 13.2-13.2 7.3 0 13.2 5.9 13.2 13.2v33c0 7.3-5.9 13.2-13.2 13.2-7.3 0-13.2-5.9-13.2-13.2V80z"/><path fill="#36C5F0" d="M47 27c-7.3 0-13.2-5.9-13.2-13.2C33.8 6.5 39.7.6 47 .6c7.3 0 13.2 5.9 13.2 13.2V27H47zm0 6.7c7.3 0 13.2 5.9 13.2 13.2 0 7.3-5.9 13.2-13.2 13.2H13.9C6.6 60.1.7 54.2.7 46.9c0-7.3 5.9-13.2 13.2-13.2H47z"/><path fill="#2EB67D" d="M99.9 46.9c0-7.3 5.9-13.2 13.2-13.2 7.3 0 13.2 5.9 13.2 13.2 0 7.3-5.9 13.2-13.2 13.2H99.9V46.9zm-6.6 0c0 7.3-5.9 13.2-13.2 13.2-7.3 0-13.2-5.9-13.2-13.2V13.8C66.9 6.5 72.8.6 80.1.6c7.3 0 13.2 5.9 13.2 13.2v33.1z"/><path fill="#ECB22E" d="M80.1 99.8c7.3 0 13.2 5.9 13.2 13.2 0 7.3-5.9 13.2-13.2 13.2-7.3 0-13.2-5.9-13.2-13.2V99.8h13.2zm0-6.6c-7.3 0-13.2-5.9-13.2-13.2 0-7.3 5.9-13.2 13.2-13.2h33.1c7.3 0 13.2 5.9 13.2 13.2 0 7.3-5.9 13.2-13.2 13.2H80.1z"/></svg>

Before

Width:  |  Height:  |  Size: 1019 B

After

Width:  |  Height:  |  Size: 1005 B

+1 -5
View File
@@ -1,5 +1 @@
<svg width="400" height="400" viewBox="0 0 19 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M3.41508 17.2983L7.88484 12.7653L9.51146 18.9412L11.8745 18.2949L9.52018 9.32758L0.69527 6.93747L0.066864 9.35199L6.13926 11.0015L1.68806 15.5279L3.41508 17.2983Z" fill="#F34E3F"/>
<path d="M16.3044 12.0436L18.6675 11.3973L16.3132 2.43003L7.48824 0.0399246L6.85984 2.45444L14.312 4.47881L16.3044 12.0436Z" fill="#F34E3F"/>
<path d="M12.9126 15.4902L15.2756 14.8439L12.9213 5.87659L4.09639 3.48648L3.46799 5.901L10.9201 7.92537L12.9126 15.4902Z" fill="#F34E3F"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="400" height="400" fill="none" viewBox="0 0 19 19"><path fill="#F34E3F" d="M3.41508 17.2983L7.88484 12.7653L9.51146 18.9412L11.8745 18.2949L9.52018 9.32758L0.69527 6.93747L0.066864 9.35199L6.13926 11.0015L1.68806 15.5279L3.41508 17.2983Z"/><path fill="#F34E3F" d="M16.3044 12.0436L18.6675 11.3973L16.3132 2.43003L7.48824 0.0399246L6.85984 2.45444L14.312 4.47881L16.3044 12.0436Z"/><path fill="#F34E3F" d="M12.9126 15.4902L15.2756 14.8439L12.9213 5.87659L4.09639 3.48648L3.46799 5.901L10.9201 7.92537L12.9126 15.4902Z"/></svg>

Before

Width:  |  Height:  |  Size: 576 B

After

Width:  |  Height:  |  Size: 571 B

+1 -5
View File
@@ -1,5 +1 @@
<svg width="120" height="120" viewBox="0 0 120 120" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M66.1403 24.9315H106.4V33.5714H14.6005V99.3601H106.4V33.5714L115 33.5682V107.997L14.591 108V99.3695H6V24.9409H14.0531V24.9346L57.5399 24.9315V12H66.1403V24.9315Z" fill="white"/>
<path d="M77.94 57.3044V70.2485H69.3521V57.3044H77.94Z" fill="white"/>
<path d="M52.1701 57.3044V70.2485H43.5822V57.3044H52.1701Z" fill="white"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="120" height="120" fill="none" viewBox="0 0 120 120"><path fill="#fff" d="M66.1403 24.9315H106.4V33.5714H14.6005V99.3601H106.4V33.5714L115 33.5682V107.997L14.591 108V99.3695H6V24.9409H14.0531V24.9346L57.5399 24.9315V12H66.1403V24.9315Z"/><path fill="#fff" d="M77.94 57.3044V70.2485H69.3521V57.3044H77.94Z"/><path fill="#fff" d="M52.1701 57.3044V70.2485H43.5822V57.3044H52.1701Z"/></svg>

Before

Width:  |  Height:  |  Size: 452 B

After

Width:  |  Height:  |  Size: 432 B

+3
View File
@@ -0,0 +1,3 @@
<svg width="256" height="256" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M37.3333 213.333C33.0666 213.333 29.3333 211.733 26.1333 208.533C22.9333 205.333 21.3333 201.6 21.3333 197.333V58.6667C21.3333 54.4001 22.9333 50.6667 26.1333 47.4667C29.3333 44.2667 33.0666 42.6667 37.3333 42.6667H218.667C222.933 42.6667 226.667 44.2667 229.867 47.4667C233.067 50.6667 234.667 54.4001 234.667 58.6667V197.333C234.667 201.6 233.067 205.333 229.867 208.533C226.667 211.733 222.933 213.333 218.667 213.333H37.3333ZM37.3333 197.333H218.667V81.0668H37.3333V197.333ZM80 178.133L68.8 166.933L96.2666 139.2L68.5333 111.467L80 100.267L118.933 139.2L80 178.133ZM130.667 179.2V163.2H189.333V179.2H130.667Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 745 B

+315
View File
@@ -0,0 +1,315 @@
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" style="display: block;" viewBox="0 0 1024 1024" width="256" height="256" preserveAspectRatio="none">
<defs>
<linearGradient id="Gradient1" gradientUnits="userSpaceOnUse" x1="874.313" y1="395.088" x2="877.337" y2="360.881">
<stop class="stop0" offset="0" stop-opacity="1" stop-color="rgb(1,33,54)"/>
<stop class="stop1" offset="1" stop-opacity="1" stop-color="rgb(1,57,89)"/>
</linearGradient>
<linearGradient id="Gradient2" gradientUnits="userSpaceOnUse" x1="744.28" y1="621.189" x2="708.717" y2="616.83">
<stop class="stop0" offset="0" stop-opacity="1" stop-color="rgb(0,53,88)"/>
<stop class="stop1" offset="1" stop-opacity="1" stop-color="rgb(0,87,137)"/>
</linearGradient>
<linearGradient id="Gradient3" gradientUnits="userSpaceOnUse" x1="739.707" y1="449.293" x2="765.194" y2="467.905">
<stop class="stop0" offset="0" stop-opacity="1" stop-color="rgb(3,94,149)"/>
<stop class="stop1" offset="1" stop-opacity="1" stop-color="rgb(3,62,91)"/>
</linearGradient>
</defs>
<path transform="translate(0,0)" fill="rgb(0,120,185)" d="M 480.311 0 L 547.672 0 C 559.823 7.38132 590.16 6.95228 605.152 9.80657 C 657.988 19.8659 704.471 36.0789 752.206 60.6853 C 836.033 103.34 906.068 168.862 954.203 249.668 C 958.297 256.683 961.17 264.531 965.001 271.395 C 984.511 306.349 998.339 342.996 1009.47 381.349 C 1013.02 393.608 1016.15 413.384 1018.08 426.313 C 1020.03 439.384 1020.54 460.603 1024 473.136 L 1024 511.483 L 1024 519.716 L 1024 553.665 L 1023.87 554.102 C 1019.62 569.195 1020.32 590.981 1017.58 606.93 C 982.095 813.191 818.358 978.648 612.363 1016.91 C 601.889 1018.86 569.435 1020.33 562.61 1024 L 465.443 1024 C 458.328 1020.29 427.033 1019.03 417.47 1017.06 C 404.321 1014.35 390.649 1011.02 377.646 1007.5 C 209.798 962.674 76.8154 834.651 25.6486 668.627 C 19.6735 649.304 14.3836 629.632 9.89543 609.903 C 6.71127 595.907 7.86466 565.295 0 552.99 L 0 477.369 C 6.49032 468.327 7.41519 431.393 10.1274 419.367 C 13.5703 404.102 17.5016 386.201 21.7975 371.238 C 56.8755 246.972 138.048 140.774 248.752 74.3132 C 301.125 43.577 358.578 22.6425 417.737 10.9292 C 431.708 8.16306 469.341 6.47511 480.311 0 z M 788.594 426.829 C 786.868 429.076 786.544 429.441 785.738 432.14 C 788.952 432.292 792.147 432.934 794.618 431.249 C 796.824 426.454 797.522 426.978 802.12 425.571 L 796.531 425.808 C 792.927 426.934 792.349 426.926 788.594 426.829 z M 741.364 580.274 C 745.23 581.555 747.059 580.888 751.11 579.26 L 751.184 576.808 C 748.649 575.033 745.829 574.876 742.751 574.391 L 741.364 580.274 z"/>
<path transform="translate(0,0)" fill="rgb(5,89,134)" d="M 1024 519.716 C 1018.82 520.441 1018.33 520.979 1015.01 516.891 C 1014.82 513.311 1014.42 514.679 1016.52 511.751 C 1019.5 510.205 1020.79 510.78 1024 511.483 L 1024 519.716 z"/>
<path transform="translate(0,0)" fill="rgb(232,232,232)" d="M 487.252 175.771 C 490.22 175.872 503.898 178.805 507.646 179.545 C 523.627 182.7 534.717 179.295 549.972 175.609 C 558.748 200.258 577.265 227.722 586.928 252.672 C 588.122 255.753 589.681 258.444 593.046 259.093 C 597.554 254.021 604.398 240.68 608.294 234.143 C 619.644 215.103 630.208 194.896 641.703 175.996 C 657.378 183.754 661.439 181.933 677.079 175.397 C 670.698 182.758 662.833 194.921 657.142 203.24 C 646.31 218.812 635.814 234.614 625.661 250.637 C 619.702 260.141 610.45 275.977 603.528 284.171 C 609.313 291.555 621.482 315.364 626.538 324.703 L 673.158 410.876 C 673.509 411.532 673.424 412.305 673.477 413.174 C 670.164 414.572 623.792 414.101 616.134 414.201 C 614.479 410.031 612.598 405.996 610.52 402.023 C 597.828 377.761 585.872 353.025 572.318 329.231 C 565.534 337.818 556.876 352.769 551.044 362.661 C 541.258 379.259 530.372 397.156 521.384 414.128 C 509.664 413.812 497.55 414.006 485.798 414.045 C 499.268 394.193 512.773 375.257 526.828 355.806 C 538.136 340.158 548.786 321.69 560.714 306.676 C 552.114 298.197 531.01 251.337 522.914 237.815 C 511.062 218.02 498.393 196.029 487.252 175.771 z"/>
<path transform="translate(0,0)" fill="rgb(0,120,185)" d="M 772.854 292.124 C 772.691 292.219 779.047 286.294 781.6 284.515 L 785.798 289.684 L 787.962 289.398 C 790.689 288.939 791.306 288.463 793.718 287.066 C 795.983 287.265 801.296 285.123 806.247 284.844 C 808.393 285.147 811.083 285.612 813.2 285.662 C 816.586 286.243 820.069 286.359 822.359 288.739 C 826.559 289.002 831.743 288.314 834.705 290.286 L 836.449 292.703 C 837.738 295.248 838.279 296.077 840.616 297.724 L 844.412 297.899 C 847.944 303.297 845.508 307.69 846.286 313.374 L 847.596 314.978 C 847.234 318.199 846.53 319.175 843.659 321.265 C 840.444 322.425 828.924 324.951 828.051 326.09 L 828.407 327.657 C 832.19 329.496 832.677 328.899 833.982 331.889 C 833.133 334.639 832.145 337.329 831.877 340.176 C 833.492 341.138 835.404 342.552 837.119 342.81 L 834.071 347.843 C 835.792 350.055 836.816 351.666 839.119 353.295 L 844.579 350.501 C 847.475 357.751 847.748 365.984 852.482 370.768 C 851.193 371.723 848.839 373.158 848.262 374.416 L 846.16 378.431 L 847.902 381.876 L 846.437 382.28 C 843.752 384.625 838.289 390.565 836.263 392.095 C 832.005 393.453 824.491 394.668 823.258 396.045 L 823.166 396.472 L 820.527 401.702 C 816.15 400.24 816.322 399.495 813.911 396.021 C 811.677 396.936 811.585 396.924 809.138 396.833 L 801.981 395.094 C 798.466 392.427 794.256 391.578 790.019 391.061 C 788.813 393.631 788.357 395.434 785.961 396.805 L 783.691 398.576 C 784.444 405.5 790.123 407.398 792.204 411.332 C 795.85 415.118 801.576 420.462 804.089 424.817 L 803.569 426.176 L 802.12 425.571 L 796.531 425.808 C 792.927 426.934 792.349 426.926 788.594 426.829 C 786.868 429.076 786.544 429.441 785.738 432.14 L 782.631 432.771 C 781.253 430.954 779.84 428.546 778.609 426.578 C 776.531 427.813 776.061 427.895 774.918 429.914 L 775.204 431.185 C 773.848 432.524 772.894 433.793 771.105 434.293 C 762.451 431.8 761.059 431.43 752.996 427.512 L 750.717 426.623 C 746.877 426.724 742.355 426.377 739.299 428.495 L 738.734 429.537 C 739.633 431.228 740.333 432.395 741.384 433.996 L 740.373 435.33 C 732.076 435.814 731.343 434.103 727.034 441.246 C 722.605 440.978 717.949 440.218 713.752 440.096 L 714.501 438.9 C 716.382 436.087 714.07 436.256 716.355 433.409 L 723.12 432.816 C 726.727 432.439 731.674 432.424 735.397 432.3 C 735.254 425.111 733.982 425.369 727.654 421.893 C 716.103 422.32 698.91 425.54 691.422 415.596 C 689.103 414.236 688.123 411.803 686.74 409.365 C 681.16 402.269 675.023 396.41 670.963 388.102 C 669.832 382.406 668.093 382.226 667.058 377.768 C 677.035 374.316 678.559 371.351 686.035 364.749 C 689.668 362.014 700.149 355.787 704.501 352.941 C 707.364 349.844 710.118 347.89 713.44 345.369 L 715.195 343.605 L 720.915 342.17 L 721.599 336.254 C 719.089 335.344 718.773 335.214 717.25 333.039 C 719.412 325.313 725.013 322.031 725.461 314.757 C 721.087 311.09 716.892 310.284 719.583 302.296 C 722.831 299.32 721.453 300.162 725.844 299.259 C 743.252 300.517 742.03 305.303 757.68 296.248 C 762.125 294.244 763.006 294.228 767.933 294.2 L 772.854 292.124 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 772.854 292.124 C 772.691 292.219 779.047 286.294 781.6 284.515 L 785.798 289.684 L 787.962 289.398 C 790.689 288.939 791.306 288.463 793.718 287.066 C 795.983 287.265 801.296 285.123 806.247 284.844 C 808.393 285.147 811.083 285.612 813.2 285.662 C 816.586 286.243 820.069 286.359 822.359 288.739 C 826.559 289.002 831.743 288.314 834.705 290.286 L 836.449 292.703 C 837.738 295.248 838.279 296.077 840.616 297.724 L 844.412 297.899 C 847.944 303.297 845.508 307.69 846.286 313.374 L 847.596 314.978 C 847.234 318.199 846.53 319.175 843.659 321.265 C 840.444 322.425 828.924 324.951 828.051 326.09 L 828.407 327.657 L 822.154 331.796 L 820.952 326.805 C 818.362 328.409 815.822 329.796 813.634 331.899 C 811.089 328.866 811.762 330.343 811.291 326.174 L 810.077 322.833 L 810.339 322.087 C 808.152 319.579 806.751 316.322 805.253 313.321 L 800.987 311.985 C 797.474 311.544 798.684 312.014 796.013 308.679 L 792.986 308.611 L 794.11 303.651 L 792.056 303.883 C 788.924 303.207 777.421 302.21 773.607 301.775 L 767.642 298.361 L 767.933 294.2 L 772.854 292.124 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 822.359 288.739 C 826.559 289.002 831.743 288.314 834.705 290.286 L 836.449 292.703 C 837.738 295.248 838.279 296.077 840.616 297.724 L 844.412 297.899 C 847.944 303.297 845.508 307.69 846.286 313.374 L 847.596 314.978 C 847.234 318.199 846.53 319.175 843.659 321.265 L 839.94 318.602 C 837.085 316.898 828.427 310.694 826.877 310.401 C 827.583 309.79 828.533 308.623 829.183 307.884 C 829.318 304.855 826.409 302.873 825.903 297.876 C 824.066 294.651 821.837 295.247 818.716 295.226 C 822.208 292.739 821.169 293.722 822.359 288.739 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 836.449 292.703 C 837.738 295.248 838.279 296.077 840.616 297.724 L 844.412 297.899 C 847.944 303.297 845.508 307.69 846.286 313.374 C 840.31 310.971 842.537 309.666 837.946 306.645 C 833.736 309.031 834.07 309.397 829.822 307.09 L 829.337 304.968 C 831.146 302.49 830.877 303.216 834.729 302.412 C 837.433 297.887 832.274 300.811 836.449 292.703 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 772.854 292.124 C 772.691 292.219 779.047 286.294 781.6 284.515 L 785.798 289.684 L 787.962 289.398 C 793.807 290.518 794.398 292.025 798.205 296.835 L 799.334 296.624 C 800.723 300.66 801.658 302.412 800.129 306.481 C 797.186 307.106 796.14 305.882 794.11 303.651 L 792.056 303.883 C 788.924 303.207 777.421 302.21 773.607 301.775 L 767.642 298.361 L 767.933 294.2 L 772.854 292.124 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 772.854 292.124 C 772.691 292.219 779.047 286.294 781.6 284.515 L 785.798 289.684 L 785.898 296.953 L 782.402 299.317 C 776.692 299.259 781.079 294.912 772.854 292.124 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 785.798 289.684 L 787.962 289.398 C 793.807 290.518 794.398 292.025 798.205 296.835 C 797.556 299.017 797.395 299.246 795.841 300.914 C 792.288 301.24 789.664 298.899 785.898 296.953 L 785.798 289.684 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 819.681 317.909 L 820.596 316.55 C 824.879 320.818 835.428 321.73 839.94 318.602 L 843.659 321.265 C 840.444 322.425 828.924 324.951 828.051 326.09 L 828.407 327.657 L 822.154 331.796 L 820.952 326.805 C 821.251 322.845 821.848 321.252 819.681 317.909 z"/>
<path transform="translate(0,0)" fill="rgb(0,120,185)" d="M 819.681 317.909 C 821.848 321.252 821.251 322.845 820.952 326.805 C 818.362 328.409 815.822 329.796 813.634 331.899 C 811.089 328.866 811.762 330.343 811.291 326.174 L 810.077 322.833 L 810.339 322.087 L 813.815 318.865 L 816.355 321.349 L 819.681 317.909 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 813.815 318.865 L 816.355 321.349 L 811.291 326.174 L 810.077 322.833 L 810.339 322.087 L 813.815 318.865 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 793.718 287.066 C 795.983 287.265 801.296 285.123 806.247 284.844 L 799.334 296.624 L 798.205 296.835 C 794.398 292.025 793.807 290.518 787.962 289.398 C 790.689 288.939 791.306 288.463 793.718 287.066 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 813.815 318.865 C 814.658 315.117 809.775 307.807 812.42 304.129 C 815.386 306.11 819.906 313.183 820.596 316.55 L 819.681 317.909 L 816.355 321.349 L 813.815 318.865 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 813.2 285.662 C 816.586 286.243 820.069 286.359 822.359 288.739 C 821.169 293.722 822.208 292.739 818.716 295.226 C 817.172 294.591 815.508 293.761 813.984 293.045 C 812.212 289.501 812.815 290.18 813.2 285.662 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 825.903 297.876 C 826.409 302.873 829.318 304.855 829.183 307.884 C 828.533 308.623 827.583 309.79 826.877 310.401 C 824.341 309.653 823.051 309.576 821.447 307.525 C 821.518 304.287 824.015 301.567 825.903 297.876 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 757.68 296.248 C 762.125 294.244 763.006 294.228 767.933 294.2 L 767.642 298.361 L 773.607 301.775 C 777.421 302.21 788.924 303.207 792.056 303.883 L 794.11 303.651 L 792.986 308.611 L 791.668 309.098 C 787.051 309.16 785.596 309.331 781.308 307.791 L 780.021 307.601 C 779.432 309.668 777.76 314.538 777.965 316.267 C 775.289 318.664 774.171 319.878 770.847 321.301 L 770.163 321.382 C 767.169 323.918 768.561 323.469 764.995 323.309 C 762.139 321.347 759.851 319.183 756.528 319.594 C 748.907 322.689 746.865 330.07 739.78 335.953 C 739.484 334.213 738.593 332.985 737.703 331.444 C 740.167 328.73 741.705 327.564 742.368 323.959 C 741.221 321.158 742.05 322.121 738.759 320.55 L 735.68 319.471 C 730.085 318.315 728.613 321.049 725.905 314.872 L 725.461 314.757 C 721.087 311.09 716.892 310.284 719.583 302.296 C 722.831 299.32 721.453 300.162 725.844 299.259 C 743.252 300.517 742.03 305.303 757.68 296.248 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 757.68 296.248 C 762.125 294.244 763.006 294.228 767.933 294.2 L 767.642 298.361 L 773.607 301.775 C 772.18 302.8 770.472 303.582 770.17 304.947 C 767.883 301.496 762.554 303.271 759.099 304.078 L 757.603 302.139 C 752.85 302.522 749.476 304.037 747.255 308.481 C 746.163 310.278 745.324 311.87 743.872 313.395 L 743.615 318.26 L 742.444 320.046 L 738.759 320.55 L 735.68 319.471 C 730.085 318.315 728.613 321.049 725.905 314.872 L 725.461 314.757 C 721.087 311.09 716.892 310.284 719.583 302.296 C 722.831 299.32 721.453 300.162 725.844 299.259 C 743.252 300.517 742.03 305.303 757.68 296.248 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 725.905 314.872 L 726.572 311.824 C 729.365 309.124 729.07 309.947 733.835 309.428 L 736.565 310.561 C 739.955 312.838 741.265 311.3 743.872 313.395 L 743.615 318.26 L 742.444 320.046 L 738.759 320.55 L 735.68 319.471 C 730.085 318.315 728.613 321.049 725.905 314.872 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 725.461 314.757 C 721.087 311.09 716.892 310.284 719.583 302.296 C 722.831 299.32 721.453 300.162 725.844 299.259 L 728.315 302.509 C 725.399 304.652 725.568 303.842 724.658 306.764 C 727.421 309.112 729.993 308.96 733.835 309.428 C 729.07 309.947 729.365 309.124 726.572 311.824 L 725.905 314.872 L 725.461 314.757 z"/>
<path transform="translate(0,0)" fill="rgb(0,120,185)" d="M 728.315 302.509 C 733.283 303.102 737.765 302.796 741.201 305.627 C 741.299 308.557 741.612 307.425 740.002 309.9 L 736.565 310.561 L 733.835 309.428 C 729.993 308.96 727.421 309.112 724.658 306.764 C 725.568 303.842 725.399 304.652 728.315 302.509 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 757.68 296.248 C 762.125 294.244 763.006 294.228 767.933 294.2 L 767.642 298.361 C 762.656 299.199 761.593 299.037 757.68 296.248 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 773.607 301.775 C 777.421 302.21 788.924 303.207 792.056 303.883 L 794.11 303.651 L 792.986 308.611 L 791.668 309.098 C 787.051 309.16 785.596 309.331 781.308 307.791 L 780.021 307.601 C 779.432 309.668 777.76 314.538 777.965 316.267 C 775.289 318.664 774.171 319.878 770.847 321.301 L 770.163 321.382 L 768.071 318.667 C 765.936 320.459 766.947 320.145 764.418 319.993 C 759.59 314.643 766.4 308.845 770.17 304.947 C 770.472 303.582 772.18 302.8 773.607 301.775 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 780.021 307.601 C 779.432 309.668 777.76 314.538 777.965 316.267 C 775.289 318.664 774.171 319.878 770.847 321.301 L 770.163 321.382 L 768.071 318.667 C 770.665 314.556 775.502 309.436 780.021 307.601 z"/>
<path transform="translate(0,0)" fill="rgb(0,120,185)" d="M 792.056 303.883 L 794.11 303.651 L 792.986 308.611 L 791.668 309.098 C 787.051 309.16 785.596 309.331 781.308 307.791 L 782.366 305.744 C 785.618 303.626 787.816 304.157 792.056 303.883 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 747.255 308.481 C 749.476 304.037 752.85 302.522 757.603 302.139 L 759.099 304.078 C 757.394 306.91 755.685 310.201 753.278 312.398 C 751.318 311.261 749.17 309.751 747.255 308.481 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 747.255 308.481 C 749.17 309.751 751.318 311.261 753.278 312.398 C 751.095 315.331 749.017 318.658 745.851 320.373 L 744.276 319.869 L 743.615 318.26 L 743.872 313.395 C 745.324 311.87 746.163 310.278 747.255 308.481 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 780.021 307.601 L 781.308 307.791 C 785.596 309.331 787.051 309.16 791.668 309.098 L 792.986 308.611 L 796.013 308.679 C 798.684 312.014 797.474 311.544 800.987 311.985 L 805.253 313.321 C 806.751 316.322 808.152 319.579 810.339 322.087 L 810.077 322.833 C 802.055 328.056 800.491 334.225 793.933 337.283 C 790.155 334.168 787.969 335.809 786.324 334.353 C 782.661 331.111 781.114 319.532 777.965 316.267 C 777.76 314.538 779.432 309.668 780.021 307.601 z"/>
<path transform="translate(0,0)" fill="rgb(1,26,44)" d="M 800.987 311.985 L 805.253 313.321 C 803.28 319.665 797.207 328.988 791.224 332.019 L 789.598 331.45 C 789.165 328.463 790.525 325.609 791.566 322.739 C 794.781 319.597 795.583 316.402 800.987 311.985 z"/>
<path transform="translate(0,0)" fill="rgb(5,89,134)" d="M 792.986 308.611 L 796.013 308.679 C 798.684 312.014 797.474 311.544 800.987 311.985 C 795.583 316.402 794.781 319.597 791.566 322.739 C 790.292 321.075 788.696 320.346 786.877 319.257 C 790.076 316.623 791.237 315.086 793.279 311.586 L 792.075 309.884 L 791.668 309.098 L 792.986 308.611 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 792.075 309.884 L 793.279 311.586 C 791.237 315.086 790.076 316.623 786.877 319.257 C 784.072 316.386 783.551 315.132 785.024 311.63 C 787.396 309.617 789.012 309.911 792.075 309.884 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 691.422 415.596 L 692.859 415.309 C 699.629 419.276 737.356 415.991 746.783 415.047 L 749.831 419.299 C 751.709 419.682 754.915 420.226 756.637 420.736 C 755.021 422.988 753.247 424.867 752.996 427.512 L 750.717 426.623 C 746.877 426.724 742.355 426.377 739.299 428.495 L 738.734 429.537 C 739.633 431.228 740.333 432.395 741.384 433.996 L 740.373 435.33 C 732.076 435.814 731.343 434.103 727.034 441.246 C 722.605 440.978 717.949 440.218 713.752 440.096 L 714.501 438.9 C 716.382 436.087 714.07 436.256 716.355 433.409 L 723.12 432.816 C 726.727 432.439 731.674 432.424 735.397 432.3 C 735.254 425.111 733.982 425.369 727.654 421.893 C 716.103 422.32 698.91 425.54 691.422 415.596 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 723.12 432.816 C 726.727 432.439 731.674 432.424 735.397 432.3 C 724.161 435.45 729.123 437.922 714.501 438.9 C 716.382 436.087 714.07 436.256 716.355 433.409 L 723.12 432.816 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 749.831 419.299 C 751.709 419.682 754.915 420.226 756.637 420.736 C 755.021 422.988 753.247 424.867 752.996 427.512 L 750.717 426.623 L 746.107 425.277 L 745.896 423.846 L 749.831 419.299 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 813.634 331.899 C 815.822 329.796 818.362 328.409 820.952 326.805 L 822.154 331.796 L 828.407 327.657 C 832.19 329.496 832.677 328.899 833.982 331.889 C 833.133 334.639 832.145 337.329 831.877 340.176 C 833.492 341.138 835.404 342.552 837.119 342.81 L 834.071 347.843 C 835.792 350.055 836.816 351.666 839.119 353.295 C 840.788 358.544 839.186 364.665 833.865 366.837 C 830.811 364.901 829.906 364.536 826.53 363.276 C 825.662 359.82 819.673 350.016 817.55 346.332 C 817.876 345 817.929 344.666 818.587 343.439 L 819.048 342.597 L 817.587 340.932 C 816.272 336.927 815.645 335.619 813.634 331.899 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 828.407 327.657 C 832.19 329.496 832.677 328.899 833.982 331.889 C 833.133 334.639 832.145 337.329 831.877 340.176 C 833.492 341.138 835.404 342.552 837.119 342.81 L 834.071 347.843 C 833.283 345.414 831.667 344.664 829.53 343.114 C 826.253 340.202 824.248 335.718 822.154 331.796 L 828.407 327.657 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 772.211 415.686 C 775.218 415.429 775.46 414.116 777.031 411.916 C 777.603 415.895 780.048 417.958 781.427 421.929 C 780.472 423.069 778.935 424.786 778.118 425.954 L 778.609 426.578 C 776.531 427.813 776.061 427.895 774.918 429.914 L 775.204 431.185 C 773.848 432.524 772.894 433.793 771.105 434.293 C 762.451 431.8 761.059 431.43 752.996 427.512 C 753.247 424.867 755.021 422.988 756.637 420.736 C 754.915 420.226 751.709 419.682 749.831 419.299 L 746.783 415.047 L 751.633 414.998 C 760.541 413.692 764.239 412.087 772.211 415.686 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 763.265 420.198 C 767.318 421.048 773.098 426.2 774.918 429.914 L 775.204 431.185 C 773.848 432.524 772.894 433.793 771.105 434.293 C 762.451 431.8 761.059 431.43 752.996 427.512 C 753.247 424.867 755.021 422.988 756.637 420.736 C 758.682 421.068 761.156 420.516 763.265 420.198 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 746.783 415.047 L 751.633 414.998 C 756.079 415.1 758.381 414.443 761.846 416.533 L 763.265 420.198 C 761.156 420.516 758.682 421.068 756.637 420.736 C 754.915 420.226 751.709 419.682 749.831 419.299 L 746.783 415.047 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 772.211 415.686 C 775.218 415.429 775.46 414.116 777.031 411.916 C 777.603 415.895 780.048 417.958 781.427 421.929 C 780.472 423.069 778.935 424.786 778.118 425.954 C 775.172 422.081 776.365 419.458 772.211 415.686 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 810.077 322.833 L 811.291 326.174 C 811.762 330.343 811.089 328.866 813.634 331.899 C 815.645 335.619 816.272 336.927 817.587 340.932 L 819.048 342.597 L 818.587 343.439 C 817.929 344.666 817.876 345 817.55 346.332 C 819.673 350.016 825.662 359.82 826.53 363.276 C 824.089 363.067 822.491 362.9 820.005 363.006 C 819.674 365.189 820.092 365.623 821.047 367.738 L 818.937 365.981 C 818.081 365.236 817.6 364.467 816.911 363.555 L 818.101 361.13 C 815.215 360.781 813.193 358.859 810.848 357.08 L 814.923 353.827 C 813.635 350.93 812.445 348.666 810.942 345.876 C 807.566 344.096 802.71 340.982 799.122 341.099 C 797.076 340.135 795.666 338.748 793.933 337.283 C 800.491 334.225 802.055 328.056 810.077 322.833 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 810.077 322.833 L 811.291 326.174 C 811.762 330.343 811.089 328.866 813.634 331.899 C 815.645 335.619 816.272 336.927 817.587 340.932 L 816.973 342.208 C 810.599 345.514 809.05 337.21 803.192 335.642 C 800.26 337.115 800.888 337.415 799.122 341.099 C 797.076 340.135 795.666 338.748 793.933 337.283 C 800.491 334.225 802.055 328.056 810.077 322.833 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 814.923 353.827 C 817.192 356.592 819.21 357.528 818.101 361.13 C 815.215 360.781 813.193 358.859 810.848 357.08 L 814.923 353.827 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 840.946 377.388 L 841.345 375.534 L 839.095 373.06 L 839.797 371.395 L 842.585 370.731 C 845.104 372.593 845.407 373.134 845.955 376.871 C 846.031 377.39 846.099 377.91 846.16 378.431 L 847.902 381.876 L 846.437 382.28 C 843.752 384.625 838.289 390.565 836.263 392.095 C 832.005 393.453 824.491 394.668 823.258 396.045 L 823.166 396.472 L 820.527 401.702 C 816.15 400.24 816.322 399.495 813.911 396.021 C 811.677 396.936 811.585 396.924 809.138 396.833 C 810.243 396.187 810.352 395.907 811.281 394.95 L 810.329 390.262 C 811.731 387.166 812.059 387.884 816.136 386.103 C 822.617 386.395 836.951 382.196 840.946 377.388 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 813.911 396.021 C 817.288 395.855 819.917 395.51 823.166 396.472 L 820.527 401.702 C 816.15 400.24 816.322 399.495 813.911 396.021 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 694.471 391.544 L 695.808 392.14 C 695.811 394.828 696.523 396.258 698.863 398.373 C 707.556 406.236 699.731 408.236 713.295 407.589 C 719.782 407.279 727.044 407.156 733.712 406.534 C 737.051 407.279 737.689 407.346 740.106 410 C 721.658 415.103 705.819 404.867 692.859 415.309 L 691.422 415.596 C 689.103 414.236 688.123 411.803 686.74 409.365 C 690.508 407.258 688.995 407.732 693.479 408.05 C 694.911 407.122 695.858 406.262 697.136 405.164 C 697.5 400.549 694.48 400.223 694.468 392.192 L 694.471 391.544 z"/>
<path transform="translate(0,0)" fill="rgb(1,26,44)" d="M 685.463 375.476 C 696.851 375.63 706.27 375.433 717.567 374.016 L 695.808 392.14 L 694.471 391.544 C 689.84 385.853 688.212 382.249 685.463 375.476 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 686.035 364.749 C 689.708 366.163 692.036 365.745 695.96 365.503 C 690.176 369.697 679.17 379.564 677.321 386.035 C 673.566 388.386 674.73 388.437 670.963 388.102 C 669.832 382.406 668.093 382.226 667.058 377.768 C 677.035 374.316 678.559 371.351 686.035 364.749 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 733.712 406.534 C 743.023 404.761 760.177 385.592 768.971 386.18 C 770.594 388.494 770.705 388.8 770.635 391.623 C 766.829 396.011 761.007 394.946 758.227 396.669 C 751.604 400.773 748.023 406.648 740.106 410 C 737.689 407.346 737.051 407.279 733.712 406.534 z"/>
<path transform="translate(0,0)" fill="rgb(5,89,134)" d="M 801.981 395.094 C 804.073 394.895 805.768 394.977 807.469 393.834 C 806.578 387.41 799.581 387.592 798.794 381.033 C 800.933 374.44 805.668 374.789 811.251 375.948 C 811.812 381.042 812.268 380.195 815.791 384.903 L 816.136 386.103 C 812.059 387.884 811.731 387.166 810.329 390.262 L 811.281 394.95 C 810.352 395.907 810.243 396.187 809.138 396.833 L 801.981 395.094 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 811.251 375.948 C 811.812 381.042 812.268 380.195 815.791 384.903 C 812.135 385.696 809.636 386.439 806.577 384.798 C 807.019 381.507 809.71 379.805 811.251 375.948 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 844.579 350.501 C 847.475 357.751 847.748 365.984 852.482 370.768 C 851.193 371.723 848.839 373.158 848.262 374.416 C 844.443 367.279 837.7 370.518 833.865 366.837 C 839.186 364.665 840.788 358.544 839.119 353.295 L 844.579 350.501 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 777.031 411.916 C 782.254 411.822 792.002 421.776 796.531 425.808 C 792.927 426.934 792.349 426.926 788.594 426.829 C 786.868 429.076 786.544 429.441 785.738 432.14 L 782.631 432.771 C 781.253 430.954 779.84 428.546 778.609 426.578 L 778.118 425.954 C 778.935 424.786 780.472 423.069 781.427 421.929 C 780.048 417.958 777.603 415.895 777.031 411.916 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 781.427 421.929 C 784.394 424.429 785.142 425.035 788.594 426.829 C 786.868 429.076 786.544 429.441 785.738 432.14 L 782.631 432.771 C 781.253 430.954 779.84 428.546 778.609 426.578 L 778.118 425.954 C 778.935 424.786 780.472 423.069 781.427 421.929 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 821.047 367.738 C 820.092 365.623 819.674 365.189 820.005 363.006 C 822.491 362.9 824.089 363.067 826.53 363.276 C 829.906 364.536 830.811 364.901 833.865 366.837 C 837.7 370.518 844.443 367.279 848.262 374.416 L 846.16 378.431 C 846.099 377.91 846.031 377.39 845.955 376.871 C 845.407 373.134 845.104 372.593 842.585 370.731 L 839.797 371.395 L 839.095 373.06 L 841.345 375.534 L 840.946 377.388 C 832.819 369.97 825.649 373.356 821.047 367.738 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 670.963 388.102 C 674.73 388.437 673.566 388.386 677.321 386.035 C 682.819 393.49 686.417 404.861 693.479 408.05 C 688.995 407.732 690.508 407.258 686.74 409.365 C 681.16 402.269 675.023 396.41 670.963 388.102 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 720.915 342.17 C 725.766 343.475 729.95 343.952 732.957 347.889 C 728.837 350.96 724.687 350.391 719.489 350.388 C 715.038 349.82 715.025 349.157 713.44 345.369 L 715.195 343.605 L 720.915 342.17 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 725.461 314.757 L 725.905 314.872 C 728.613 321.049 730.085 318.315 735.68 319.471 C 725.797 320.716 724.679 327.918 721.599 336.254 C 719.089 335.344 718.773 335.214 717.25 333.039 C 719.412 325.313 725.013 322.031 725.461 314.757 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 756.377 352.223 C 760.256 351.012 766.125 348.809 769.981 348.95 C 769.494 351.727 769.701 353.491 767.225 354.872 C 762.115 357.723 759.586 360.005 753.974 359.163 C 754.147 357.431 755.674 353.996 756.377 352.223 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 686.035 364.749 C 689.668 362.014 700.149 355.787 704.501 352.941 L 705.578 357.746 C 702.522 360.471 699.459 363.41 695.96 365.503 C 692.036 365.745 689.708 366.163 686.035 364.749 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 744.998 346.915 C 747.552 350.311 751.873 351.015 756.377 352.223 C 755.674 353.996 754.147 357.431 753.974 359.163 C 751.746 355.589 747.078 356.152 741.495 351.16 C 743.602 349.961 743.776 349.145 744.998 346.915 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 704.501 352.941 C 707.364 349.844 710.118 347.89 713.44 345.369 C 715.025 349.157 715.038 349.82 719.489 350.388 C 716.277 351.432 707.944 355.516 705.578 357.746 L 704.501 352.941 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 737.703 331.444 C 738.593 332.985 739.484 334.213 739.78 335.953 L 737.858 341.412 C 736.956 341.444 736.053 341.451 735.15 341.431 C 731.756 341.326 731.087 340.709 729.186 338.704 L 729.547 336.371 C 731.559 333.165 734.091 332.714 737.703 331.444 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 739.78 335.953 C 739.96 341.661 742.072 341.114 744.998 346.915 C 743.776 349.145 743.602 349.961 741.495 351.16 C 740.108 348.94 739.712 347.58 738.83 345.163 C 738.825 342.61 739.146 343.544 737.858 341.412 L 739.78 335.953 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 810.848 357.08 C 813.193 358.859 815.215 360.781 818.101 361.13 L 816.911 363.555 C 817.6 364.467 818.081 365.236 818.937 365.981 C 816.166 365.577 815.077 365.287 812.406 364.433 C 810.232 361.074 810.919 361.684 810.848 357.08 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 729.844 375.819 C 732.975 375.841 731.911 375.459 734.276 376.922 C 735.654 383.112 736.277 387.193 730.52 391.436 C 727.563 392.356 725.168 391.269 722.221 390.346 L 717.57 388.979 L 716.695 386.629 C 718.59 380.902 724.374 378.789 729.844 375.819 z"/>
<path transform="translate(0,0)" fill="rgb(1,26,44)" d="M 767.999 343.608 C 762.94 344.675 761.611 345.092 758.457 340.726 C 758.657 337.041 758.122 338.448 760.658 335.474 C 765.012 333.958 764.156 334.541 769.26 335.493 L 771.828 337.746 L 767.999 343.608 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 764.836 371.885 C 770.227 371.969 772.696 371.841 775.412 376.759 C 774.521 380.669 775.291 379.31 772.667 382.075 C 769.174 380.943 764.736 380.016 762.64 377.185 C 762.62 373.897 762.541 374.945 764.836 371.885 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 769.26 335.493 C 771.269 333.411 771.088 330.658 771.286 327.744 L 773.628 326.343 C 775.707 332.044 775.335 332.855 771.828 337.746 L 769.26 335.493 z"/>
<path transform="translate(0,0)" fill="rgb(232,232,232)" d="M 330.651 288.853 C 349.018 288.965 368.268 291.231 386.898 291.338 C 410.096 291.47 432.953 289.92 456.12 288.831 C 455.51 299.907 455.222 308.924 456.013 320.006 C 438.68 319.218 398.098 316.74 381.326 313.928 L 381.008 391.077 C 402.019 391.059 434.897 391.558 454.969 389.143 C 453.738 398.377 453.814 406.6 454.906 415.823 C 435.624 413.828 401.044 414.064 381.052 413.886 L 380.975 439.5 C 380.889 458.429 380.959 477.359 381.185 496.287 C 407.193 496.098 430.051 495.601 456.061 493.92 C 455.542 504.129 455.01 514.003 456.012 524.187 C 414.657 523.472 372.051 524.193 330.522 523.99 C 332.849 445.629 332.892 367.217 330.651 288.853 z"/>
<path transform="translate(0,0)" fill="rgb(232,232,232)" d="M 668.907 624.891 C 672.203 625.901 673.991 628.604 676.273 631.269 C 678.37 632.742 678.504 633.037 679.422 635.443 L 679.048 639.646 C 682.356 642.419 683.026 639.321 686.733 641.764 L 695.503 642.172 C 702.788 643.226 708.554 643.771 715.35 646.727 C 750.474 667.842 752.181 690.334 754.642 729.016 L 656.817 728.98 C 662.096 774.143 672.396 808.953 728.65 791.27 C 733.555 789.728 741.397 779.867 746.035 782.195 C 748.463 810.304 715.617 818.881 693.95 820.468 C 673.29 821.847 649.952 814.284 634.317 801.045 C 616.989 786.373 607.117 759.142 606.864 736.791 C 606.399 695.823 616.43 667.23 651.914 647.5 L 658.14 645.469 C 656.465 641.122 656.437 642.651 657.096 638.242 C 659.618 638.08 661.468 638.312 663.305 636.746 L 663.121 634.027 L 663.369 630.541 L 664.778 631.013 C 665.717 629.172 667.653 626.645 668.907 624.891 z"/>
<path transform="translate(0,0)" fill="rgb(5,89,134)" d="M 668.907 624.891 C 672.203 625.901 673.991 628.604 676.273 631.269 C 678.37 632.742 678.504 633.037 679.422 635.443 L 679.048 639.646 C 682.356 642.419 683.026 639.321 686.733 641.764 C 681.56 642.011 674.119 642.078 669.294 643.362 L 658.14 645.469 C 656.465 641.122 656.437 642.651 657.096 638.242 C 659.618 638.08 661.468 638.312 663.305 636.746 L 663.121 634.027 L 663.369 630.541 L 664.778 631.013 C 665.717 629.172 667.653 626.645 668.907 624.891 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 663.121 634.027 C 667.448 635.92 667.51 635.143 669.716 638.493 C 669.593 640.118 669.452 641.741 669.294 643.362 L 658.14 645.469 C 656.465 641.122 656.437 642.651 657.096 638.242 C 659.618 638.08 661.468 638.312 663.305 636.746 L 663.121 634.027 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 668.907 624.891 C 672.203 625.901 673.991 628.604 676.273 631.269 C 670.737 632.734 669.67 633.465 664.778 631.013 C 665.717 629.172 667.653 626.645 668.907 624.891 z"/>
<path transform="translate(0,0)" fill="rgb(0,120,185)" d="M 669.204 666.184 C 677.715 657.064 685.204 654.87 695.541 661.83 C 701.065 666.749 703.041 669.694 705.712 676.591 C 707.612 689.903 708.185 700.083 708.946 713.515 C 691.601 713.649 674.256 713.665 656.911 713.563 C 659.569 696.633 659.732 681.733 669.204 666.184 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 669.204 666.184 C 677.715 657.064 685.204 654.87 695.541 661.83 C 701.065 666.749 703.041 669.694 705.712 676.591 L 699.214 677.583 C 684.804 680.643 680.216 674.581 669.204 666.184 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 695.541 661.83 C 701.065 666.749 703.041 669.694 705.712 676.591 L 699.214 677.583 C 694.247 668.634 692.068 673.456 695.541 661.83 z"/>
<path transform="translate(0,0)" fill="rgb(232,232,232)" d="M 326.38 176.427 C 328.186 176.318 330.373 176.355 332.215 176.334 C 332.758 177.299 332.715 203.356 333.138 207.731 C 316.605 204.904 291.133 205.779 273.33 203.9 C 272.944 269.421 271.283 350.197 276.297 414.072 C 257.544 413.702 238.105 413.972 219.301 413.988 C 220.371 404.905 220.792 390.217 221.331 380.752 C 222.909 362.72 222.122 334.342 222.129 315.893 L 221.99 203.969 C 209.015 205.399 189.6 205.711 176.111 206.341 L 176.106 176.665 C 207.23 179.801 236.426 182.681 267.755 181.144 C 287.36 180.183 306.748 177.832 326.38 176.427 z"/>
<path transform="translate(0,0)" fill="rgb(232,232,232)" d="M 185.086 575.811 C 206.547 582.505 219.591 581.436 240.667 575.917 C 237.361 603.365 237.739 640.519 237.694 668.377 L 237.855 785.173 C 257.695 785.324 296.472 785.978 315.332 783.243 C 314.708 791.99 314.815 799.528 314.931 808.251 C 315.306 811.816 315.617 810.696 314.432 813.541 C 271.363 813.055 228.29 813.068 185.221 813.58 C 186.134 773.267 186.43 732.943 186.109 692.621 C 186.466 653.682 186.125 614.739 185.086 575.811 z"/>
<path transform="translate(0,0)" fill="rgb(0,120,185)" d="M 846.437 382.28 C 851.827 383.906 856.356 387.597 859.036 392.549 C 862.345 398.802 861.995 401.132 862.068 408.016 L 863.613 413.567 L 862.625 414.64 L 860.81 414.655 C 863.212 416.772 863.924 416.994 866.8 418.193 C 867.426 415.979 867.584 415.37 868.618 413.333 C 871.177 411.843 871.636 411.647 873.072 409.09 C 877.013 418.197 890.476 430.927 900.974 435.144 C 904.429 441.405 902.386 443.621 905.797 447.116 C 907.296 446.239 908.47 445.931 910.097 445.394 C 919.593 447.856 916.188 472.165 934.367 466.045 C 938.045 464.807 933.651 458.01 934.32 455.411 C 935.731 449.931 938.43 444.483 940.434 439.005 C 944.94 443.006 947.554 446.231 948.332 452.341 C 947.707 453.871 946.107 457.499 945.858 458.935 C 943.993 465.219 937.75 475.707 933.769 480.992 C 929.521 483.437 925.588 483.821 920.8 484.66 C 919.781 485.343 918.726 485.94 917.893 486.805 C 916.485 487.445 914.976 488.275 913.504 488.494 L 908.489 490.002 L 907.959 488.753 C 905.369 492.515 903.661 495.026 900.611 498.397 C 896.173 502.84 894.12 504.274 888.025 506.077 C 883.331 506.369 878.086 505.51 875.942 510.176 C 870.441 507.726 856.245 499.789 852.52 499.923 C 851.686 500.78 849.908 502.576 849.006 503.091 C 842.173 506.984 827.112 485.496 820.669 481.428 C 813.623 476.979 814.623 476.834 806.15 474.381 C 810.873 470.732 810.35 472.824 811.978 468.013 L 807.838 465.305 C 804.247 467.725 802.353 469.371 798.11 470.02 C 796.487 472.267 797.016 471.554 793.652 472.48 C 782.804 470.912 773.591 471.567 762.756 472.069 C 754.791 473.635 746.337 474.169 740.692 467.39 C 739.77 467.71 737.918 468.246 737.219 468.756 C 733.867 468.761 731.22 468.297 728.709 470.241 L 727.836 472.008 L 724.453 469.525 C 729.531 463.586 738.399 457.293 733.24 449.514 L 738.169 448.565 C 740.13 448.238 747.471 445.279 749.731 444.419 C 756.069 442.329 766.551 439.2 771.105 434.293 C 772.894 433.793 773.848 432.524 775.204 431.185 L 774.918 429.914 C 776.061 427.895 776.531 427.813 778.609 426.578 C 779.84 428.546 781.253 430.954 782.631 432.771 L 785.738 432.14 C 788.952 432.292 792.147 432.934 794.618 431.249 C 796.824 426.454 797.522 426.978 802.12 425.571 L 803.569 426.176 L 804.089 424.817 C 801.576 420.462 795.85 415.118 792.204 411.332 C 790.123 407.398 784.444 405.5 783.691 398.576 L 785.961 396.805 C 788.357 395.434 788.813 393.631 790.019 391.061 C 794.256 391.578 798.466 392.427 801.981 395.094 L 809.138 396.833 C 811.585 396.924 811.677 396.936 813.911 396.021 C 816.322 399.495 816.15 400.24 820.527 401.702 L 823.166 396.472 L 823.258 396.045 C 824.491 394.668 832.005 393.453 836.263 392.095 C 838.289 390.565 843.752 384.625 846.437 382.28 z"/>
<path transform="translate(0,0)" fill="rgb(0,120,185)" d="M 900.974 435.144 C 904.429 441.405 902.386 443.621 905.797 447.116 C 907.296 446.239 908.47 445.931 910.097 445.394 C 919.593 447.856 916.188 472.165 934.367 466.045 C 938.045 464.807 933.651 458.01 934.32 455.411 C 935.731 449.931 938.43 444.483 940.434 439.005 C 944.94 443.006 947.554 446.231 948.332 452.341 C 947.707 453.871 946.107 457.499 945.858 458.935 C 943.993 465.219 937.75 475.707 933.769 480.992 C 929.521 483.437 925.588 483.821 920.8 484.66 C 919.781 485.343 918.726 485.94 917.893 486.805 C 916.485 487.445 914.976 488.275 913.504 488.494 L 908.489 490.002 L 907.959 488.753 C 905.369 492.515 903.661 495.026 900.611 498.397 C 896.173 502.84 894.12 504.274 888.025 506.077 C 883.331 506.369 878.086 505.51 875.942 510.176 C 870.441 507.726 856.245 499.789 852.52 499.923 C 851.686 500.78 849.908 502.576 849.006 503.091 C 842.173 506.984 827.112 485.496 820.669 481.428 C 813.623 476.979 814.623 476.834 806.15 474.381 C 810.873 470.732 810.35 472.824 811.978 468.013 L 813.634 466.411 C 821.733 466.874 830.413 474.947 837.82 477.024 C 840.461 478.023 845.431 479.635 847.394 481.29 L 848.351 481.88 C 851.71 485.073 853.12 486.293 858.059 486.05 C 872.533 486.194 871.91 483.442 884.678 477.253 C 887.428 473.77 888.12 473.06 891.589 470.297 L 893.67 467.471 L 895.43 467.033 L 898.128 461.572 L 894.157 455.857 C 896.715 453.731 897.189 452.691 898.84 449.928 L 897.314 443.457 C 898.618 440.724 899.839 437.951 900.974 435.144 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 900.974 435.144 C 904.429 441.405 902.386 443.621 905.797 447.116 C 907.296 446.239 908.47 445.931 910.097 445.394 C 919.593 447.856 916.188 472.165 934.367 466.045 C 938.045 464.807 933.651 458.01 934.32 455.411 C 935.731 449.931 938.43 444.483 940.434 439.005 C 944.94 443.006 947.554 446.231 948.332 452.341 C 947.707 453.871 946.107 457.499 945.858 458.935 C 943.993 465.219 937.75 475.707 933.769 480.992 C 931.953 475.68 930.82 473.702 925.637 471.308 C 923.76 471.145 920.837 470.711 919.129 471.176 C 919.125 469.369 918.925 469.274 918.121 467.699 C 914.775 466.458 907.077 466.915 901.115 465.731 C 907.966 460.849 908.855 467.501 914.691 460.323 C 915.173 456.931 915.354 458.334 913.62 454.956 C 906.167 450.463 902.563 455.263 898.128 461.572 L 894.157 455.857 C 896.715 453.731 897.189 452.691 898.84 449.928 L 897.314 443.457 C 898.618 440.724 899.839 437.951 900.974 435.144 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 925.637 471.308 C 938.271 467.252 937.206 459.775 943.363 457.638 L 945.858 458.935 C 943.993 465.219 937.75 475.707 933.769 480.992 C 931.953 475.68 930.82 473.702 925.637 471.308 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 900.974 435.144 C 904.429 441.405 902.386 443.621 905.797 447.116 C 903.454 448.261 901.391 449.464 898.84 449.928 L 897.314 443.457 C 898.618 440.724 899.839 437.951 900.974 435.144 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 811.978 468.013 C 813.4 469.927 842.689 496.637 844.371 497.802 C 849.456 498.112 851.901 494.359 853.899 495.078 C 872.432 501.752 865.793 505.947 888.025 506.077 C 883.331 506.369 878.086 505.51 875.942 510.176 C 870.441 507.726 856.245 499.789 852.52 499.923 C 851.686 500.78 849.908 502.576 849.006 503.091 C 842.173 506.984 827.112 485.496 820.669 481.428 C 813.623 476.979 814.623 476.834 806.15 474.381 C 810.873 470.732 810.35 472.824 811.978 468.013 z"/>
<path transform="translate(0,0)" fill="rgb(1,26,44)" d="M 919.129 471.176 C 920.837 470.711 923.76 471.145 925.637 471.308 C 930.82 473.702 931.953 475.68 933.769 480.992 C 929.521 483.437 925.588 483.821 920.8 484.66 C 918.175 481.916 918.861 476.87 918.889 472.877 L 919.129 471.176 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 907.959 488.753 C 908.587 487.146 909.611 485.988 910.653 484.606 C 918.643 481.967 917.827 480.833 918.889 472.877 C 918.861 476.87 918.175 481.916 920.8 484.66 C 919.781 485.343 918.726 485.94 917.893 486.805 C 916.485 487.445 914.976 488.275 913.504 488.494 L 908.489 490.002 L 907.959 488.753 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 891.589 470.297 C 894.533 472.897 895.317 472.735 896.288 475.935 C 893.431 478.03 888.432 477.368 884.678 477.253 C 887.428 473.77 888.12 473.06 891.589 470.297 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 846.437 382.28 C 851.827 383.906 856.356 387.597 859.036 392.549 C 862.345 398.802 861.995 401.132 862.068 408.016 L 863.613 413.567 L 862.625 414.64 L 860.81 414.655 L 857.215 413.84 C 854.447 414.581 852.919 413.915 850.323 413.091 L 848.508 413.668 C 847.612 417.177 848.09 418.585 848.727 422.138 L 846.728 423.137 C 846.77 424.496 846.791 428.181 847.026 429.309 C 850.987 431.195 850.891 430.368 852.557 433.561 C 852.135 439.503 848.512 440.903 848.93 446.393 C 844.558 447.817 842.541 447.29 838.237 446.229 L 834.164 447.061 C 823.181 450.002 824.278 443.798 817.903 437.626 L 811.852 435.633 L 811.277 433.486 C 806.427 431.949 804.08 436.935 797.422 437.306 L 794.618 431.249 C 796.824 426.454 797.522 426.978 802.12 425.571 L 803.569 426.176 L 804.089 424.817 C 801.576 420.462 795.85 415.118 792.204 411.332 C 790.123 407.398 784.444 405.5 783.691 398.576 L 785.961 396.805 C 788.357 395.434 788.813 393.631 790.019 391.061 C 794.256 391.578 798.466 392.427 801.981 395.094 L 809.138 396.833 C 811.585 396.924 811.677 396.936 813.911 396.021 C 816.322 399.495 816.15 400.24 820.527 401.702 L 823.166 396.472 L 823.258 396.045 C 824.491 394.668 832.005 393.453 836.263 392.095 C 838.289 390.565 843.752 384.625 846.437 382.28 z"/>
<path transform="translate(0,0)" fill="rgb(1,26,44)" d="M 846.437 382.28 C 851.827 383.906 856.356 387.597 859.036 392.549 C 862.345 398.802 861.995 401.132 862.068 408.016 L 863.613 413.567 L 862.625 414.64 L 860.81 414.655 L 857.215 413.84 C 850.82 408.871 847.576 409.243 837.105 400.103 L 835.99 399.428 C 834.439 396.457 835.276 396.322 836.263 392.095 C 838.289 390.565 843.752 384.625 846.437 382.28 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 833.444 421.938 L 836.439 423.947 C 836.575 425.854 836.728 425.941 835.787 427.664 C 837.111 431.565 836.235 430.714 839.163 433.078 C 846.059 436.53 842.207 439.421 848.93 446.393 C 844.558 447.817 842.541 447.29 838.237 446.229 L 834.164 447.061 C 823.181 450.002 824.278 443.798 817.903 437.626 L 811.852 435.633 C 814.465 429.831 814.581 432.693 818.872 427.936 C 822.518 425.971 825.314 426.943 829.456 427.611 C 832.51 425.872 831.739 425.888 833.444 421.938 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 817.903 437.626 C 819.24 435.794 821.928 433.996 823.812 432.566 C 826.255 439.953 832.004 441.49 834.164 447.061 C 823.181 450.002 824.278 443.798 817.903 437.626 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 823.812 432.566 C 835.281 432.777 834.74 436.342 838.237 446.229 L 834.164 447.061 C 832.004 441.49 826.255 439.953 823.812 432.566 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 792.204 411.332 C 795.382 407.911 795.933 408.365 800.151 408.338 C 801.185 411.738 801.441 413.835 804.377 415.765 C 810.046 417.603 814.57 410.892 817.661 416.189 C 816.595 419.567 814.809 423.686 815.792 426.931 C 817.173 427.665 817.276 427.849 818.872 427.936 C 814.581 432.693 814.465 429.831 811.852 435.633 L 811.277 433.486 C 806.427 431.949 804.08 436.935 797.422 437.306 L 794.618 431.249 C 796.824 426.454 797.522 426.978 802.12 425.571 L 803.569 426.176 L 804.089 424.817 C 801.576 420.462 795.85 415.118 792.204 411.332 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 833.444 421.938 L 834.005 420.28 C 835.325 421.254 836.653 422.219 837.988 423.173 L 839.883 422.817 C 841.798 419.837 841.37 421.22 841.332 417.497 C 839.596 415.981 839.009 415.429 837.587 413.62 C 839.266 411.786 840.109 410.417 842.475 409.881 C 847.668 412.82 846.856 417.764 846.728 423.137 C 846.77 424.496 846.791 428.181 847.026 429.309 C 850.987 431.195 850.891 430.368 852.557 433.561 C 852.135 439.503 848.512 440.903 848.93 446.393 C 842.207 439.421 846.059 436.53 839.163 433.078 C 836.235 430.714 837.111 431.565 835.787 427.664 C 836.728 425.941 836.575 425.854 836.439 423.947 L 833.444 421.938 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 835.787 427.664 C 839.274 426.647 837.861 426.553 841.103 427.928 L 842.191 429.932 L 841.394 432.176 L 839.163 433.078 C 836.235 430.714 837.111 431.565 835.787 427.664 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 790.019 391.061 C 794.256 391.578 798.466 392.427 801.981 395.094 L 809.138 396.833 C 811.585 396.924 811.677 396.936 813.911 396.021 C 816.322 399.495 816.15 400.24 820.527 401.702 L 819.307 402.707 C 809.18 405.909 794.547 400.542 790.019 391.061 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 823.166 396.472 L 823.258 396.045 C 824.491 394.668 832.005 393.453 836.263 392.095 C 835.276 396.322 834.439 396.457 835.99 399.428 L 837.105 400.103 L 833.833 403.304 C 829.945 399.54 826.806 402.456 823.236 405.828 L 819.307 402.707 L 820.527 401.702 L 823.166 396.472 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 785.961 396.805 C 794.457 398.559 793.376 405.884 800.151 408.338 C 795.933 408.365 795.382 407.911 792.204 411.332 C 790.123 407.398 784.444 405.5 783.691 398.576 L 785.961 396.805 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 823.236 405.828 C 826.806 402.456 829.945 399.54 833.833 403.304 C 832.905 407.235 831.692 411.973 827.431 413.453 C 822.973 411.64 823.778 410.536 823.236 405.828 z"/>
<path transform="translate(0,0)" fill="rgb(1,26,44)" d="M 775.204 431.185 C 778.291 433.767 780.611 436.652 779.388 440.97 L 778.053 441.644 L 781.589 446.575 L 781.271 447.796 L 785.134 446.768 C 792.074 447.863 791.946 448.401 796.505 454.089 C 800.966 455.388 805.667 456.382 809.312 459.203 C 810.574 461.999 810.652 463.182 807.838 465.305 C 804.247 467.725 802.353 469.371 798.11 470.02 C 796.487 472.267 797.016 471.554 793.652 472.48 C 782.804 470.912 773.591 471.567 762.756 472.069 C 754.791 473.635 746.337 474.169 740.692 467.39 C 739.77 467.71 737.918 468.246 737.219 468.756 C 733.867 468.761 731.22 468.297 728.709 470.241 L 727.836 472.008 L 724.453 469.525 C 729.531 463.586 738.399 457.293 733.24 449.514 L 738.169 448.565 C 740.13 448.238 747.471 445.279 749.731 444.419 C 756.069 442.329 766.551 439.2 771.105 434.293 C 772.894 433.793 773.848 432.524 775.204 431.185 z"/>
<path transform="translate(0,0)" fill="url(#Gradient3)" d="M 775.204 431.185 C 778.291 433.767 780.611 436.652 779.388 440.97 L 778.053 441.644 L 781.589 446.575 L 781.271 447.796 L 784.312 452.238 C 771.764 456.312 762.825 456.133 750.004 457.656 C 748.967 457.779 742.613 465.771 740.692 467.39 C 739.77 467.71 737.918 468.246 737.219 468.756 C 733.867 468.761 731.22 468.297 728.709 470.241 L 727.836 472.008 L 724.453 469.525 C 729.531 463.586 738.399 457.293 733.24 449.514 L 738.169 448.565 C 740.13 448.238 747.471 445.279 749.731 444.419 C 756.069 442.329 766.551 439.2 771.105 434.293 C 772.894 433.793 773.848 432.524 775.204 431.185 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 775.204 431.185 C 778.291 433.767 780.611 436.652 779.388 440.97 L 778.053 441.644 C 774.055 442.107 773.143 442.062 769.829 444.299 C 768.126 449.559 761.098 448.053 755.792 448.36 C 752.801 447.109 752.029 446.898 749.731 444.419 C 756.069 442.329 766.551 439.2 771.105 434.293 C 772.894 433.793 773.848 432.524 775.204 431.185 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 738.169 448.565 C 740.13 448.238 747.471 445.279 749.731 444.419 C 752.029 446.898 752.801 447.109 755.792 448.36 C 754.728 450.012 754.745 450.028 753.279 451.317 C 747.84 452.467 746.763 452.579 741.392 451.208 C 740.472 450.467 738.976 449.333 738.169 448.565 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 769.829 444.299 C 773.143 442.062 774.055 442.107 778.053 441.644 L 781.589 446.575 C 779.037 447.18 776.494 447.82 773.959 448.494 C 770.876 447.24 771.809 447.672 769.829 444.299 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 785.134 446.768 C 792.074 447.863 791.946 448.401 796.505 454.089 C 800.966 455.388 805.667 456.382 809.312 459.203 C 810.574 461.999 810.652 463.182 807.838 465.305 C 804.247 467.725 802.353 469.371 798.11 470.02 C 793.314 461.679 791.271 458.379 784.312 452.238 L 781.271 447.796 L 785.134 446.768 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 889.806 462.427 C 893.318 464.903 892.322 463.545 893.67 467.471 L 891.589 470.297 C 888.12 473.06 887.428 473.77 884.678 477.253 C 871.91 483.442 872.533 486.194 858.059 486.05 C 853.12 486.293 851.71 485.073 848.351 481.88 L 847.394 481.29 L 850.258 476.642 C 864.45 482.006 879.972 471.905 889.806 462.427 z"/>
<path transform="translate(0,0)" fill="rgb(1,26,44)" d="M 848.351 481.88 C 852.561 478.265 859.06 477.567 863.475 481.039 C 862.564 484.335 861.457 484.911 858.059 486.05 C 853.12 486.293 851.71 485.073 848.351 481.88 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 801.957 449.5 C 815.915 454.213 822.049 468.211 836.787 472.246 C 840.913 473.089 847.368 473.846 850.258 476.642 L 847.394 481.29 C 845.431 479.635 840.461 478.023 837.82 477.024 C 830.413 474.947 821.733 466.874 813.634 466.411 L 811.978 468.013 L 807.838 465.305 C 810.652 463.182 810.574 461.999 809.312 459.203 C 805.667 456.382 800.966 455.388 796.505 454.089 C 799.205 452.342 799.767 452.005 801.957 449.5 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 873.072 409.09 C 877.013 418.197 890.476 430.927 900.974 435.144 C 899.839 437.951 898.618 440.724 897.314 443.457 C 897.035 442.02 896.626 441.379 896.025 440.047 C 885.735 434.34 875.506 420.467 866.8 418.193 C 867.426 415.979 867.584 415.37 868.618 413.333 C 871.177 411.843 871.636 411.647 873.072 409.09 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 778.609 426.578 C 779.84 428.546 781.253 430.954 782.631 432.771 C 784.517 435.565 784.853 436.007 785.194 439.485 L 788.372 441.959 C 787.153 443.353 785.246 445.062 785.134 446.768 L 781.271 447.796 L 781.589 446.575 L 778.053 441.644 L 779.388 440.97 C 780.611 436.652 778.291 433.767 775.204 431.185 L 774.918 429.914 C 776.061 427.895 776.531 427.813 778.609 426.578 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 887.227 449.975 C 889.83 451.876 892.174 453.327 894.157 455.857 L 898.128 461.572 L 895.43 467.033 L 893.67 467.471 C 892.322 463.545 893.318 464.903 889.806 462.427 L 886.849 455.643 L 887.227 449.975 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 848.727 422.138 C 851.54 421.23 853.417 420.246 856.136 421.448 C 858.128 424.324 858.038 423.258 857.629 425.977 C 851.309 429.97 850.341 425.743 847.026 429.309 C 846.791 428.181 846.77 424.496 846.728 423.137 L 848.727 422.138 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 788.372 441.959 C 793.228 447.433 794.923 447.074 801.957 449.5 C 799.767 452.005 799.205 452.342 796.505 454.089 C 791.946 448.401 792.074 447.863 785.134 446.768 C 785.246 445.062 787.153 443.353 788.372 441.959 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 794.618 431.249 L 797.422 437.306 C 792.401 435.788 787.46 433.503 785.194 439.485 C 784.853 436.007 784.517 435.565 782.631 432.771 L 785.738 432.14 C 788.952 432.292 792.147 432.934 794.618 431.249 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 886.849 455.643 C 885.419 452.491 882.356 447.044 883.814 443.787 C 886.584 445.615 885.936 445.992 887.227 449.975 L 886.849 455.643 z"/>
<path transform="translate(0,0)" fill="rgb(232,232,232)" d="M 427.207 647.015 C 451.607 650.688 449.035 658.108 477.628 646.203 C 478.904 648.904 480.893 652.811 481.751 655.629 C 493.555 694.411 503.926 733.51 518.617 771.344 C 521.063 758.303 531.361 731.701 536.052 718.004 C 544.093 694.525 551.028 671.442 558.602 647.904 C 561.414 649.204 566.229 651.528 569.186 652.038 C 573.004 652.696 581.254 649.889 584.322 651.605 C 584.344 655.012 577.061 670.15 575.205 674.296 C 564.061 700.646 552.818 726.442 543.147 753.414 C 535.957 773.467 530.41 794.401 522.376 814.049 C 512.399 812.642 496.493 813.247 486.095 813.526 C 482.891 803.654 478.275 793.685 475.418 783.651 C 462.169 737.107 442.754 692.523 427.207 647.015 z"/>
<path transform="translate(0,0)" fill="rgb(232,232,232)" d="M 350.963 647.774 C 366.833 654.621 383.831 654.622 399.396 647 C 396.88 664.851 396.352 693.618 396.233 711.621 C 395.718 744.196 396.485 776.78 398.535 809.295 C 398.948 810.957 398.73 811.107 398.183 812.713 C 393.955 814.11 357.18 813.343 351.045 813.299 C 352.41 782.647 352.998 751.966 352.809 721.285 C 352.782 699.007 352.746 669.828 350.963 647.774 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 617.015 524.887 C 623.473 523.896 629.431 523.4 635.846 525.096 L 643.09 529.072 C 645.46 530.197 649.884 533.404 651.216 535.337 C 648.972 537.935 649.559 536.855 649.781 541.041 C 648.625 542.443 646.723 544.6 645.74 546.01 C 646.386 549.274 648.115 551.617 651.038 553.304 C 652.512 556.081 653.414 557.445 653.932 560.619 L 655.687 563.927 L 658.106 559.972 L 656.974 559.013 C 657.134 557.312 657.287 557.142 657.898 555.6 C 660.961 554.48 666.177 557.139 670.361 558.162 C 672.852 558.805 673.981 559.01 676.257 560.312 C 682.157 566.235 688.48 574.333 694.265 579.448 L 692.928 581.291 C 688.069 581.511 688.878 580.708 685.92 583.372 C 685.055 586.581 685.338 587.886 685.653 591.101 L 683.183 589.101 L 681.677 592.131 C 678.302 590.144 677.828 590.015 674.892 592.036 C 672.624 596.005 673.785 595.121 670.052 597.345 L 670.099 597.752 C 668.448 598.709 667.457 599.096 666.322 600.651 L 665.376 601.67 C 663.84 603.398 661.897 605.728 660.306 607.311 C 657.866 605.825 655.31 603.903 652.963 602.231 C 652.985 606.288 652.701 609.396 654.265 613.118 C 651.786 617.028 651.697 619.242 651.979 623.978 L 649.46 624.832 C 647.44 626.521 646.079 627.913 643.629 628.878 C 640.755 623.922 639.656 623.156 639.893 617.602 C 639.217 617.61 638.541 617.613 637.865 617.612 C 632.951 617.581 634.019 618.036 631.263 615.231 C 629.449 617.155 629.394 617.348 626.912 617.884 L 622.025 614.378 C 617.909 610.26 617.256 608.01 615.732 602.521 C 611.921 598.134 610.888 597.376 605.928 594.316 C 607.678 591.771 610.474 591.986 612.969 588.032 C 609.757 584.452 608.208 583.547 608.431 579.259 C 605.992 577.198 605.823 576.859 604.919 573.787 C 603.768 574.368 602.968 574.96 601.72 574.829 C 591.035 562.899 594.23 557.117 600.019 543.195 C 601.665 542.474 604.774 541.992 606.647 541.626 C 606.487 539 607.476 536.805 608.321 534.267 C 607.79 532.612 606.35 531.752 604.95 530.593 L 609.177 527.95 C 612.761 527.258 613.811 526.563 617.015 524.887 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 617.015 524.887 C 623.473 523.896 629.431 523.4 635.846 525.096 L 643.09 529.072 C 645.46 530.197 649.884 533.404 651.216 535.337 C 648.972 537.935 649.559 536.855 649.781 541.041 C 648.625 542.443 646.723 544.6 645.74 546.01 C 646.386 549.274 648.115 551.617 651.038 553.304 C 652.512 556.081 653.414 557.445 653.932 560.619 L 650.995 562.042 L 644.396 565.871 L 642.43 560.131 C 639.39 561.108 636.153 563.199 635.077 566.182 C 631.634 575.722 624.94 571.122 616.976 570.452 C 614.475 571.95 614.725 571.271 613.868 573.452 C 612.22 575.296 610.252 577.659 608.431 579.259 C 605.992 577.198 605.823 576.859 604.919 573.787 C 603.768 574.368 602.968 574.96 601.72 574.829 C 591.035 562.899 594.23 557.117 600.019 543.195 C 601.665 542.474 604.774 541.992 606.647 541.626 C 606.487 539 607.476 536.805 608.321 534.267 C 607.79 532.612 606.35 531.752 604.95 530.593 L 609.177 527.95 C 612.761 527.258 613.811 526.563 617.015 524.887 z"/>
<path transform="translate(0,0)" fill="rgb(5,89,134)" d="M 617.015 524.887 C 623.473 523.896 629.431 523.4 635.846 525.096 L 643.09 529.072 C 645.46 530.197 649.884 533.404 651.216 535.337 C 648.972 537.935 649.559 536.855 649.781 541.041 C 648.625 542.443 646.723 544.6 645.74 546.01 L 645.072 546.086 C 642.19 545.234 641.465 545.064 638.832 543.44 C 636.929 544.86 634.932 546.152 633.476 547.995 C 632.837 550.891 631.28 551.797 629.034 553.677 L 628.255 553.877 C 625.054 559.755 621.856 559.419 615.693 560.728 C 610.713 556.654 609.336 548.183 606.647 541.626 C 606.487 539 607.476 536.805 608.321 534.267 C 607.79 532.612 606.35 531.752 604.95 530.593 L 609.177 527.95 C 612.761 527.258 613.811 526.563 617.015 524.887 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 608.321 534.267 L 610.985 536.03 C 611.811 537.459 613.191 540.504 614.376 541.015 C 617.354 541.738 618.665 541.353 619.207 544.861 C 620.938 540.722 618.697 541.139 622.189 538.144 L 625.015 539.681 C 626.484 541.171 632.133 547.089 633.476 547.995 C 632.837 550.891 631.28 551.797 629.034 553.677 L 628.255 553.877 C 625.054 559.755 621.856 559.419 615.693 560.728 C 610.713 556.654 609.336 548.183 606.647 541.626 C 606.487 539 607.476 536.805 608.321 534.267 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 619.207 544.861 C 620.938 540.722 618.697 541.139 622.189 538.144 L 625.015 539.681 C 626.484 541.171 632.133 547.089 633.476 547.995 C 632.837 550.891 631.28 551.797 629.034 553.677 L 628.255 553.877 C 624.286 548.611 620.535 553.029 619.207 544.861 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 614.376 541.015 C 617.354 541.738 618.665 541.353 619.207 544.861 C 620.535 553.029 624.286 548.611 628.255 553.877 C 625.054 559.755 621.856 559.419 615.693 560.728 C 617.94 555.752 617.845 545.721 614.376 541.015 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 643.09 529.072 C 645.46 530.197 649.884 533.404 651.216 535.337 C 648.972 537.935 649.559 536.855 649.781 541.041 C 648.625 542.443 646.723 544.6 645.74 546.01 L 645.072 546.086 C 642.19 545.234 641.465 545.064 638.832 543.44 C 637.12 540.304 635.812 538.581 636.082 535.035 C 637.117 532.125 640.348 530.718 643.09 529.072 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 635.846 525.096 L 643.09 529.072 C 640.348 530.718 637.117 532.125 636.082 535.035 C 635.812 538.581 637.12 540.304 638.832 543.44 C 636.929 544.86 634.932 546.152 633.476 547.995 C 632.133 547.089 626.484 541.171 625.015 539.681 C 626.975 537.182 627.656 535.877 630.78 535.004 C 634.264 531.716 634.571 529.618 635.846 525.096 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 617.015 524.887 C 623.473 523.896 629.431 523.4 635.846 525.096 C 634.571 529.618 634.264 531.716 630.78 535.004 C 624.679 531.931 621.948 529.348 617.015 524.887 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 613.973 532.955 C 617.728 534.442 619.787 534.913 622.189 538.144 C 618.697 541.139 620.938 540.722 619.207 544.861 C 618.665 541.353 617.354 541.738 614.376 541.015 C 613.191 540.504 611.811 537.459 610.985 536.03 L 613.973 532.955 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 604.95 530.593 L 609.177 527.95 C 610.671 529.818 612.058 532.24 613.973 532.955 L 610.985 536.03 L 608.321 534.267 C 607.79 532.612 606.35 531.752 604.95 530.593 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 600.019 543.195 C 601.665 542.474 604.774 541.992 606.647 541.626 C 609.336 548.183 610.713 556.654 615.693 560.728 L 615.045 563.02 C 617.065 564.831 616.343 564.269 619.75 564.426 C 615.392 566.583 614.08 564.192 610.545 566.914 C 607.642 569.673 606.844 570.295 604.919 573.787 C 603.768 574.368 602.968 574.96 601.72 574.829 C 591.035 562.899 594.23 557.117 600.019 543.195 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 629.034 553.677 C 632.814 555.456 631.517 554.344 633.827 558.056 C 629.291 564.75 627.476 563.651 619.75 564.426 C 616.343 564.269 617.065 564.831 615.045 563.02 L 615.693 560.728 C 621.856 559.419 625.054 559.755 628.255 553.877 L 629.034 553.677 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 638.832 543.44 C 641.465 545.064 642.19 545.234 645.072 546.086 C 643.203 552.281 636.973 553.771 633.827 558.056 C 631.517 554.344 632.814 555.456 629.034 553.677 C 631.28 551.797 632.837 550.891 633.476 547.995 C 634.932 546.152 636.929 544.86 638.832 543.44 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 651.038 553.304 C 652.512 556.081 653.414 557.445 653.932 560.619 L 650.995 562.042 L 644.396 565.871 L 642.43 560.131 C 644.617 559.09 648.965 555.068 651.038 553.304 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 610.545 566.914 C 612.99 569.498 613.072 570.155 613.868 573.452 C 612.22 575.296 610.252 577.659 608.431 579.259 C 605.992 577.198 605.823 576.859 604.919 573.787 C 606.844 570.295 607.642 569.673 610.545 566.914 z"/>
<path transform="translate(0,0)" fill="rgb(5,89,134)" d="M 613.868 573.452 C 614.725 571.271 614.475 571.95 616.976 570.452 L 615.51 573.667 L 617.489 575.749 C 620.464 579.77 621.746 582.022 626.332 584.201 C 627.407 585.964 629.065 588.901 630.262 590.435 C 632.526 591.911 632.43 591.333 633.166 593.367 C 632.322 597.255 631.179 603.549 629.673 607.021 L 633.103 610.138 L 631.263 615.231 C 629.449 617.155 629.394 617.348 626.912 617.884 L 622.025 614.378 C 617.909 610.26 617.256 608.01 615.732 602.521 C 611.921 598.134 610.888 597.376 605.928 594.316 C 607.678 591.771 610.474 591.986 612.969 588.032 C 609.757 584.452 608.208 583.547 608.431 579.259 C 610.252 577.659 612.22 575.296 613.868 573.452 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 613.868 573.452 C 614.725 571.271 614.475 571.95 616.976 570.452 L 615.51 573.667 L 617.489 575.749 C 620.464 579.77 621.746 582.022 626.332 584.201 C 622.875 584.336 623.046 583.715 621.155 585.74 C 620.034 589.102 620.597 589.869 616.958 591.167 C 615.289 590.927 614.696 590.618 613.177 590.003 L 612.969 588.032 C 609.757 584.452 608.208 583.547 608.431 579.259 C 610.252 577.659 612.22 575.296 613.868 573.452 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 617.489 575.749 C 620.464 579.77 621.746 582.022 626.332 584.201 C 622.875 584.336 623.046 583.715 621.155 585.74 C 618.792 584.317 618.306 583.762 616.38 581.766 C 615.83 578.105 615.831 579.385 617.489 575.749 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 617.645 597.303 C 621.116 593.493 620.465 593.038 624.731 591.747 C 628.24 594.664 626.591 600.571 623.934 603.42 C 622.018 603.109 622.324 603.44 621.023 602.358 C 618.556 601.07 616.487 600.533 615.754 597.977 L 617.645 597.303 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 612.969 588.032 L 613.177 590.003 C 614.696 590.618 615.289 590.927 616.958 591.167 L 614.437 592.738 L 614.078 594.384 C 615.579 596.071 615.674 596.291 617.645 597.303 L 615.754 597.977 C 616.487 600.533 618.556 601.07 621.023 602.358 L 615.732 602.521 C 611.921 598.134 610.888 597.376 605.928 594.316 C 607.678 591.771 610.474 591.986 612.969 588.032 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 629.673 607.021 L 633.103 610.138 L 631.263 615.231 C 629.449 617.155 629.394 617.348 626.912 617.884 L 622.025 614.378 C 625.774 611.48 626.701 610.673 629.673 607.021 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 656.974 559.013 C 657.134 557.312 657.287 557.142 657.898 555.6 C 660.961 554.48 666.177 557.139 670.361 558.162 C 672.852 558.805 673.981 559.01 676.257 560.312 C 682.157 566.235 688.48 574.333 694.265 579.448 L 692.928 581.291 C 688.069 581.511 688.878 580.708 685.92 583.372 C 685.055 586.581 685.338 587.886 685.653 591.101 L 683.183 589.101 L 681.677 592.131 C 678.302 590.144 677.828 590.015 674.892 592.036 L 673.593 585.413 C 671.17 581.658 672.377 582.811 668.031 581.071 L 666.568 577.033 C 665.798 575.203 665.338 573.023 664.849 571.076 C 664.708 570.451 664.561 569.828 664.409 569.206 C 662.952 563.25 662.851 562.84 658.106 559.972 L 656.974 559.013 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 673.593 585.413 C 673.732 581.214 673.554 578.355 675.169 574.495 L 679.314 573.824 C 682.998 575.886 683.212 575.251 684.931 578.417 L 684.619 582.701 L 683.183 589.101 L 681.677 592.131 C 678.302 590.144 677.828 590.015 674.892 592.036 L 673.593 585.413 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 679.314 573.824 C 682.998 575.886 683.212 575.251 684.931 578.417 L 684.619 582.701 C 681.497 581.618 679.114 581.044 676.651 578.835 L 676.585 576.688 L 679.314 573.824 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 666.568 577.033 L 668.031 581.071 C 672.377 582.811 671.17 581.658 673.593 585.413 L 674.892 592.036 C 672.624 596.005 673.785 595.121 670.052 597.345 L 670.099 597.752 C 668.448 598.709 667.457 599.096 666.322 600.651 L 665.376 601.67 C 663.84 603.398 661.897 605.728 660.306 607.311 C 657.866 605.825 655.31 603.903 652.963 602.231 L 651.432 596.953 C 647.246 595.51 648.6 596.55 646.123 593.202 C 646.713 590.26 647.706 587.261 648.587 584.381 L 651.062 583.663 L 652.056 584.259 C 655.695 583.126 655.126 579.631 656.122 575.877 L 662.608 576.755 L 666.568 577.033 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 656.122 575.877 L 662.608 576.755 C 663.784 582.337 664.368 589.304 657.116 591.077 L 653.02 593.503 L 651.432 596.953 C 647.246 595.51 648.6 596.55 646.123 593.202 C 646.713 590.26 647.706 587.261 648.587 584.381 L 651.062 583.663 L 652.056 584.259 C 655.695 583.126 655.126 579.631 656.122 575.877 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 651.062 583.663 L 652.056 584.259 C 652.831 587.876 652.875 589.798 653.02 593.503 L 651.432 596.953 C 647.246 595.51 648.6 596.55 646.123 593.202 C 646.713 590.26 647.706 587.261 648.587 584.381 L 651.062 583.663 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 657.116 591.077 C 660.656 593.241 662.283 597.793 665.376 601.67 C 663.84 603.398 661.897 605.728 660.306 607.311 C 657.866 605.825 655.31 603.903 652.963 602.231 L 651.432 596.953 L 653.02 593.503 L 657.116 591.077 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 668.031 581.071 C 672.377 582.811 671.17 581.658 673.593 585.413 L 674.892 592.036 C 672.624 596.005 673.785 595.121 670.052 597.345 C 667.157 596.583 668.201 597.198 666.128 594.956 C 665.247 590.749 666.997 585.391 668.031 581.071 z"/>
<path transform="translate(0,0)" fill="rgb(5,89,134)" d="M 653.932 560.619 L 655.687 563.927 L 658.106 559.972 C 662.851 562.84 662.952 563.25 664.409 569.206 C 664.561 569.828 664.708 570.451 664.849 571.076 C 665.338 573.023 665.798 575.203 666.568 577.033 L 662.608 576.755 L 656.122 575.877 C 655.126 579.631 655.695 583.126 652.056 584.259 L 651.062 583.663 L 648.587 584.381 C 647.615 582.766 644.158 581.117 641.54 577.897 L 642.473 574.528 L 637.857 572.159 C 638.579 570.943 643.112 567.004 644.396 565.871 L 650.995 562.042 L 653.932 560.619 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 642.473 574.528 C 645.259 573.209 646.498 573.415 649.498 573.473 C 653.077 576.149 651.59 575.445 656.122 575.877 C 655.126 579.631 655.695 583.126 652.056 584.259 L 651.062 583.663 L 648.587 584.381 C 647.615 582.766 644.158 581.117 641.54 577.897 L 642.473 574.528 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 649.498 573.473 C 653.077 576.149 651.59 575.445 656.122 575.877 C 655.126 579.631 655.695 583.126 652.056 584.259 L 651.062 583.663 C 648.778 580.667 649.378 577.326 649.498 573.473 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 658.106 559.972 C 662.851 562.84 662.952 563.25 664.409 569.206 C 664.561 569.828 664.708 570.451 664.849 571.076 C 662.475 574.548 663.763 573.473 660.018 575.217 C 655.867 574.466 657.286 575.313 654.676 572.09 C 655.792 568.456 655.716 567.66 655.687 563.927 L 658.106 559.972 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 653.932 560.619 L 655.687 563.927 C 655.716 567.66 655.792 568.456 654.676 572.09 C 652.766 569.863 652.846 566.119 650.995 562.042 L 653.932 560.619 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 646.123 593.202 C 648.6 596.55 647.246 595.51 651.432 596.953 L 652.963 602.231 C 652.985 606.288 652.701 609.396 654.265 613.118 C 651.786 617.028 651.697 619.242 651.979 623.978 L 649.46 624.832 C 647.44 626.521 646.079 627.913 643.629 628.878 C 640.755 623.922 639.656 623.156 639.893 617.602 L 643.818 613.178 L 645.664 609.755 C 647.54 605.354 644.445 600.653 646.123 593.202 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 643.818 613.178 C 648.122 616.242 648.277 619.362 649.46 624.832 C 647.44 626.521 646.079 627.913 643.629 628.878 C 640.755 623.922 639.656 623.156 639.893 617.602 L 643.818 613.178 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 633.166 593.367 L 635.38 594.017 L 634.625 596.984 C 637.603 601.477 642.297 599.735 643.84 603.434 L 642.635 604.993 C 643.947 606.616 645.132 607.759 645.664 609.755 L 643.818 613.178 L 639.893 617.602 C 639.217 617.61 638.541 617.613 637.865 617.612 C 632.951 617.581 634.019 618.036 631.263 615.231 L 633.103 610.138 L 629.673 607.021 C 631.179 603.549 632.322 597.255 633.166 593.367 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 642.635 604.993 C 643.947 606.616 645.132 607.759 645.664 609.755 L 643.818 613.178 L 639.893 617.602 C 639.217 617.61 638.541 617.613 637.865 617.612 C 632.951 617.581 634.019 618.036 631.263 615.231 L 633.103 610.138 C 636.859 607.285 638.219 606.797 642.635 604.993 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 641.54 577.897 C 644.158 581.117 647.615 582.766 648.587 584.381 C 647.706 587.261 646.713 590.26 646.123 593.202 C 644.445 600.653 647.54 605.354 645.664 609.755 C 645.132 607.759 643.947 606.616 642.635 604.993 L 643.84 603.434 C 642.297 599.735 637.603 601.477 634.625 596.984 L 635.38 594.017 L 633.166 593.367 C 632.43 591.333 632.526 591.911 630.262 590.435 L 633.008 588.432 C 636.764 591.873 636.474 592.758 640.513 593.019 C 641.164 592.076 641.732 591.649 641.701 590.736 C 642.405 589.829 642.612 588.63 642.252 587.54 C 641.892 586.449 641.013 585.609 639.908 585.299 C 638.053 583.948 637.35 585.944 633.749 582.732 L 638.15 583 C 641.106 581.312 640.209 581.905 641.54 577.897 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 637.857 572.159 L 642.473 574.528 L 641.54 577.897 C 640.209 581.905 641.106 581.312 638.15 583 L 633.749 582.732 C 633.066 582.479 632.386 582.214 631.711 581.937 C 628.413 580.549 628.324 580.562 627.297 578.071 C 629.88 575.438 633.675 575.898 637.857 572.159 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 639.908 585.299 C 641.013 585.609 641.892 586.449 642.252 587.54 C 642.612 588.63 642.405 589.829 641.701 590.736 C 640.638 592.104 638.724 592.472 637.23 591.593 C 635.735 590.715 635.125 588.865 635.804 587.27 C 636.482 585.675 638.239 584.832 639.908 585.299 z"/>
<path transform="translate(0,0)" fill="rgb(1,26,44)" d="M 737.219 468.756 C 737.918 468.246 739.77 467.71 740.692 467.39 C 746.337 474.169 754.791 473.635 762.756 472.069 C 762.979 476.366 762.228 480.046 761.316 484.204 C 759.03 494.623 758.008 505.098 757.538 515.74 C 754.942 524.506 748.943 531.708 747.945 537.588 C 747.044 541.659 746.189 542.586 743.724 545.993 C 739.159 553.42 730.717 564.57 727.529 571.201 L 727.009 574.146 C 726.093 575.454 725.126 576.114 723.899 577.117 L 722.084 576.635 C 719.806 573.674 719.2 567.619 718.498 563.715 C 721.542 552.64 712.229 550.822 720.036 541.456 L 716.542 536.968 L 721.095 531.637 L 719.277 528.004 L 722.765 521.566 C 722.319 517.95 721.239 518.216 721.093 511.902 C 719.777 510.72 718.872 509.171 717.839 507.687 C 715.403 508.274 716.495 508.46 714.434 507.282 L 713.675 501.485 C 714.367 494.529 713.466 483.001 714.011 474.244 C 713.647 472.942 713.846 472.345 713.952 470.957 C 717.067 469.681 717.339 470.405 721.27 471.139 L 724.453 469.525 L 727.836 472.008 L 728.709 470.241 C 731.22 468.297 733.867 468.761 737.219 468.756 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 737.219 468.756 C 737.918 468.246 739.77 467.71 740.692 467.39 C 746.337 474.169 754.791 473.635 762.756 472.069 C 762.979 476.366 762.228 480.046 761.316 484.204 C 759.03 494.623 758.008 505.098 757.538 515.74 L 757.082 511.764 C 754.757 508.46 754.192 508.866 749.472 507.689 C 747.469 504.124 748.296 503.78 748.609 498.926 C 749.6 497.415 750.565 495.887 751.505 494.344 C 753.625 490.839 754.352 489.678 753.334 485.609 C 747.612 487.308 729.715 498.597 726.729 503.002 L 726.118 502.837 C 724.49 505.898 722.917 508.954 721.093 511.902 C 719.777 510.72 718.872 509.171 717.839 507.687 C 715.403 508.274 716.495 508.46 714.434 507.282 L 713.675 501.485 C 714.367 494.529 713.466 483.001 714.011 474.244 C 713.647 472.942 713.846 472.345 713.952 470.957 C 717.067 469.681 717.339 470.405 721.27 471.139 L 724.453 469.525 L 727.836 472.008 L 728.709 470.241 C 731.22 468.297 733.867 468.761 737.219 468.756 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 737.219 468.756 C 737.918 468.246 739.77 467.71 740.692 467.39 C 746.337 474.169 754.791 473.635 762.756 472.069 C 762.979 476.366 762.228 480.046 761.316 484.204 C 759.03 494.623 758.008 505.098 757.538 515.74 L 757.082 511.764 C 754.757 508.46 754.192 508.866 749.472 507.689 C 747.469 504.124 748.296 503.78 748.609 498.926 C 749.6 497.415 750.565 495.887 751.505 494.344 C 753.625 490.839 754.352 489.678 753.334 485.609 L 750.417 483.312 C 749.476 476.448 741.013 475.344 736.047 478.196 C 726.656 482.487 732.504 476.618 722.224 476.452 L 720.593 474.167 L 721.27 471.139 L 724.453 469.525 L 727.836 472.008 L 728.709 470.241 C 731.22 468.297 733.867 468.761 737.219 468.756 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 727.836 472.008 L 728.709 470.241 C 731.22 468.297 733.867 468.761 737.219 468.756 C 734.965 470.979 733.155 473.333 730.026 473.526 C 729.425 473.136 728.3 472.471 727.836 472.008 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 736.047 478.196 C 741.013 475.344 749.476 476.448 750.417 483.312 L 753.334 485.609 C 747.612 487.308 729.715 498.597 726.729 503.002 L 726.118 502.837 C 724.49 505.898 722.917 508.954 721.093 511.902 C 719.777 510.72 718.872 509.171 717.839 507.687 L 722.789 499.95 C 722.98 497.205 723.173 496.513 721.866 494.14 L 725.241 491.791 C 728.102 492.167 730.288 490.337 732.948 488.766 C 730.615 486.545 731.163 487.63 730.61 484.727 C 732.322 482.035 733.878 480.505 736.047 478.196 z"/>
<path transform="translate(0,0)" fill="rgb(1,26,44)" d="M 736.047 478.196 C 741.013 475.344 749.476 476.448 750.417 483.312 C 743.236 484.749 739.694 485.536 732.948 488.766 C 730.615 486.545 731.163 487.63 730.61 484.727 C 732.322 482.035 733.878 480.505 736.047 478.196 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 714.011 474.244 C 723.48 480.154 717.072 486.036 721.866 494.14 C 723.173 496.513 722.98 497.205 722.789 499.95 L 717.839 507.687 C 715.403 508.274 716.495 508.46 714.434 507.282 L 713.675 501.485 C 714.367 494.529 713.466 483.001 714.011 474.244 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 722.224 476.452 C 732.504 476.618 726.656 482.487 736.047 478.196 C 733.878 480.505 732.322 482.035 730.61 484.727 C 731.163 487.63 730.615 486.545 732.948 488.766 C 730.288 490.337 728.102 492.167 725.241 491.791 C 725.163 485.307 724.123 482.587 722.224 476.452 z"/>
<path transform="translate(0,0)" fill="rgb(1,26,44)" d="M 720.036 541.456 C 724.079 538.336 727.129 532.47 731.521 531.356 C 734.169 532.457 733.311 532.051 734.987 535.314 C 736.406 547.785 738.785 540.723 743.724 545.993 C 739.159 553.42 730.717 564.57 727.529 571.201 L 727.009 574.146 C 726.093 575.454 725.126 576.114 723.899 577.117 L 722.084 576.635 C 719.806 573.674 719.2 567.619 718.498 563.715 C 721.542 552.64 712.229 550.822 720.036 541.456 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 734.987 535.314 C 736.406 547.785 738.785 540.723 743.724 545.993 C 739.159 553.42 730.717 564.57 727.529 571.201 C 727.539 570.704 734.744 535.936 734.987 535.314 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 726.118 502.837 L 726.729 503.002 C 728.446 506.533 730.704 509.233 731.755 512.744 C 733.172 515.991 735.702 522.312 737.289 525.199 L 738.211 527.093 C 739.219 530.235 740.351 534.522 742.183 537.131 L 747.945 537.588 C 747.044 541.659 746.189 542.586 743.724 545.993 C 738.785 540.723 736.406 547.785 734.987 535.314 C 733.311 532.051 734.169 532.457 731.521 531.356 C 727.129 532.47 724.079 538.336 720.036 541.456 L 716.542 536.968 L 721.095 531.637 L 719.277 528.004 L 722.765 521.566 C 722.319 517.95 721.239 518.216 721.093 511.902 C 722.917 508.954 724.49 505.898 726.118 502.837 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 726.118 502.837 L 726.729 503.002 C 728.446 506.533 730.704 509.233 731.755 512.744 C 728.508 515.981 728.432 516.614 727.322 521.093 L 722.765 521.566 C 722.319 517.95 721.239 518.216 721.093 511.902 C 722.917 508.954 724.49 505.898 726.118 502.837 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 722.765 521.566 L 727.322 521.093 L 729.366 525.634 C 727.799 529.338 725.338 529.024 721.095 531.637 L 719.277 528.004 L 722.765 521.566 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 742.89 519.682 C 750.142 518.466 751.698 516.913 757.082 511.764 L 757.538 515.74 C 754.942 524.506 748.943 531.708 747.945 537.588 L 742.183 537.131 C 740.351 534.522 739.219 530.235 738.211 527.093 L 737.289 525.199 C 739.069 523.252 740.978 521.498 742.89 519.682 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 738.211 527.093 C 740.159 525.004 739.085 525.565 742.716 525.433 C 745.826 527.4 744.768 526.321 746.554 529.91 C 746.381 533.968 746.896 532.576 745.003 535.719 L 742.183 537.131 C 740.351 534.522 739.219 530.235 738.211 527.093 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 742.89 519.682 C 742.537 509.371 741.944 506.554 748.609 498.926 C 748.296 503.78 747.469 504.124 749.472 507.689 C 754.192 508.866 754.757 508.46 757.082 511.764 C 751.698 516.913 750.142 518.466 742.89 519.682 z"/>
<path transform="translate(0,0)" fill="rgb(0,120,185)" d="M 650.948 425.377 C 653.594 421.678 654.242 421.705 658.566 420.671 C 666.364 418.807 670.263 427.376 673.881 432.714 C 681.743 432.83 718.859 432.022 723.12 432.816 L 716.355 433.409 C 714.07 436.256 716.382 436.087 714.501 438.9 L 713.752 440.096 C 717.949 440.218 722.605 440.978 727.034 441.246 C 731.343 434.103 732.076 435.814 740.373 435.33 L 741.384 433.996 C 740.333 432.395 739.633 431.228 738.734 429.537 L 739.299 428.495 C 742.355 426.377 746.877 426.724 750.717 426.623 L 752.996 427.512 C 761.059 431.43 762.451 431.8 771.105 434.293 C 766.551 439.2 756.069 442.329 749.731 444.419 C 747.471 445.279 740.13 448.238 738.169 448.565 L 733.24 449.514 C 713.89 452.192 695.759 450.987 677.067 453.083 C 666.645 454.253 654.363 474.305 640.655 465.327 C 630.305 460.036 632.13 444.405 632.207 434.593 L 638.711 427.651 C 643.15 427.027 646.572 426.36 650.948 425.377 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 750.717 426.623 L 752.996 427.512 C 761.059 431.43 762.451 431.8 771.105 434.293 C 766.551 439.2 756.069 442.329 749.731 444.419 C 747.471 445.279 740.13 448.238 738.169 448.565 L 733.24 449.514 C 713.89 452.192 695.759 450.987 677.067 453.083 C 666.645 454.253 654.363 474.305 640.655 465.327 L 641.411 464.389 C 639.878 458.964 643.244 458.575 647.123 455.288 C 649.042 453.553 651.389 453.192 653.948 452.471 L 660.332 453.008 C 661.246 452.951 664.324 452.237 665.401 452.014 C 672.476 450.048 679.573 448.162 686.69 446.357 C 690.902 446.204 709.792 442.58 713.121 440.02 L 713.752 440.096 C 717.949 440.218 722.605 440.978 727.034 441.246 C 731.343 434.103 732.076 435.814 740.373 435.33 L 741.384 433.996 C 740.333 432.395 739.633 431.228 738.734 429.537 L 739.299 428.495 C 742.355 426.377 746.877 426.724 750.717 426.623 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 653.948 452.471 L 660.332 453.008 C 649.06 455.797 657.567 463.568 641.411 464.389 C 639.878 458.964 643.244 458.575 647.123 455.288 C 649.042 453.553 651.389 453.192 653.948 452.471 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 650.948 425.377 C 653.594 421.678 654.242 421.705 658.566 420.671 C 666.364 418.807 670.263 427.376 673.881 432.714 C 681.743 432.83 718.859 432.022 723.12 432.816 L 716.355 433.409 C 714.07 436.256 716.382 436.087 714.501 438.9 L 713.752 440.096 L 713.121 440.02 C 709.792 442.58 690.902 446.204 686.69 446.357 C 689.921 442.454 690.067 446.012 692.497 440.48 C 690.543 438.466 686.138 438.091 682.761 437.183 C 666.39 438.647 669.422 427.89 660.468 423.522 C 656.617 423.838 657.274 424.333 653.735 427.586 L 650.948 425.377 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 682.761 437.183 C 690.464 434.925 704.155 434.419 711.8 437.713 L 713.121 440.02 C 709.792 442.58 690.902 446.204 686.69 446.357 C 689.921 442.454 690.067 446.012 692.497 440.48 C 690.543 438.466 686.138 438.091 682.761 437.183 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 650.948 425.377 L 653.735 427.586 C 643.133 437.897 638.633 428.322 634.788 435.601 C 635.495 439.141 634.899 438.982 637.072 441.206 C 638.403 441.112 639.838 441.078 641.12 440.761 L 648.827 438.069 C 649.199 440.086 649.629 443.413 650.556 445.097 L 651.401 445.655 L 653.948 452.471 C 651.389 453.192 649.042 453.553 647.123 455.288 C 643.244 458.575 639.878 458.964 641.411 464.389 L 640.655 465.327 C 630.305 460.036 632.13 444.405 632.207 434.593 L 638.711 427.651 C 643.15 427.027 646.572 426.36 650.948 425.377 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 641.12 440.761 L 648.827 438.069 C 649.199 440.086 649.629 443.413 650.556 445.097 L 651.401 445.655 L 653.948 452.471 C 651.389 453.192 649.042 453.553 647.123 455.288 L 646.987 451.291 L 646.686 448.643 L 644.086 446.801 C 644.085 444.669 644.008 443.893 643.687 441.784 L 641.12 440.761 z"/>
<path transform="translate(0,0)" fill="rgb(0,120,185)" d="M 644.086 446.801 L 646.686 448.643 L 646.987 451.291 C 642.734 452.323 638.695 454.012 634.97 451.085 L 635.234 449.322 C 637.74 447.017 640.652 447.139 644.086 446.801 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 648.827 438.069 L 656.379 438.003 C 660.529 440.271 663.234 443.431 662.742 448.591 C 663.437 449.462 664.866 451.158 665.401 452.014 C 664.324 452.237 661.246 452.951 660.332 453.008 L 653.948 452.471 L 651.401 445.655 L 650.556 445.097 C 649.629 443.413 649.199 440.086 648.827 438.069 z"/>
<path transform="translate(0,0)" fill="rgb(0,120,185)" d="M 651.401 445.655 L 652.838 443.626 C 658.004 443.824 656.898 447.272 662.742 448.591 C 663.437 449.462 664.866 451.158 665.401 452.014 C 664.324 452.237 661.246 452.951 660.332 453.008 L 653.948 452.471 L 651.401 445.655 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 648.827 438.069 L 656.379 438.003 C 654.629 441.018 654.162 441.272 651.275 442.987 L 650.556 445.097 C 649.629 443.413 649.199 440.086 648.827 438.069 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 913.504 488.494 C 914.976 488.275 916.485 487.445 917.893 486.805 L 918.481 494.308 C 919.238 496.803 918.63 496.072 920.563 497.402 C 928.791 494.902 940.224 493.602 947.205 490.099 L 947.672 489.979 C 951.116 487.94 953.101 487.968 957.071 487.534 C 958.689 488.186 960.511 488.657 961.547 489.872 C 970.025 495.301 966.728 488.225 977.113 492.661 L 979.537 493.47 C 985.172 498.192 985.4 500.18 982.558 506.991 C 972.546 511.63 974.732 502.965 961.993 513.397 L 958.408 513.835 L 957.346 515.258 C 954.259 519.038 953.693 519.64 949.44 521.949 C 948.144 522.958 946.047 524.429 945.08 525.625 C 943.465 526.815 940.785 528.924 939.141 529.854 C 936.549 531.318 933.514 533.293 930.701 533.968 C 928.05 534.471 927.393 534.481 925.277 536.106 C 917.709 540.847 915.713 539.344 908.668 534.871 C 902.291 528.836 884.097 516.323 875.942 510.176 C 878.086 505.51 883.331 506.369 888.025 506.077 C 894.12 504.274 896.173 502.84 900.611 498.397 C 903.661 495.026 905.369 492.515 907.959 488.753 L 908.489 490.002 L 913.504 488.494 z"/>
<path transform="translate(0,0)" fill="rgb(1,26,44)" d="M 947.672 489.979 C 951.116 487.94 953.101 487.968 957.071 487.534 C 958.689 488.186 960.511 488.657 961.547 489.872 C 970.025 495.301 966.728 488.225 977.113 492.661 L 979.537 493.47 C 985.172 498.192 985.4 500.18 982.558 506.991 C 972.546 511.63 974.732 502.965 961.993 513.397 L 958.408 513.835 L 957.346 515.258 C 954.259 519.038 953.693 519.64 949.44 521.949 C 944.112 520.491 943.143 520.636 942.525 515.088 L 944.917 508.876 C 946.08 505.885 946.213 505.412 948.95 503.812 C 946.519 501.878 947.447 500.415 944.399 497.484 L 941.187 497.958 C 942.821 494.345 945.167 496.717 947.205 490.099 L 947.672 489.979 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 947.672 489.979 C 951.116 487.94 953.101 487.968 957.071 487.534 C 958.689 488.186 960.511 488.657 961.547 489.872 C 970.025 495.301 966.728 488.225 977.113 492.661 C 962.962 496.408 970.879 501.272 965.078 504.795 C 961.106 503.622 960.406 502.012 958.698 498.354 L 956.837 497.175 C 953.613 500.562 952.861 501.286 948.95 503.812 C 946.519 501.878 947.447 500.415 944.399 497.484 L 941.187 497.958 C 942.821 494.345 945.167 496.717 947.205 490.099 L 947.672 489.979 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 947.672 489.979 C 951.116 487.94 953.101 487.968 957.071 487.534 L 957.499 493.538 L 959.419 493.361 L 960.223 494.445 C 958.969 495.56 958.2 496.194 956.837 497.175 C 953.613 500.562 952.861 501.286 948.95 503.812 C 946.519 501.878 947.447 500.415 944.399 497.484 L 941.187 497.958 C 942.821 494.345 945.167 496.717 947.205 490.099 L 947.672 489.979 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 947.672 489.979 C 951.116 487.94 953.101 487.968 957.071 487.534 L 957.499 493.538 C 955.38 493.963 953.056 493.959 950.879 494.047 C 948.019 492.472 948.928 493.477 947.672 489.979 z"/>
<path transform="translate(0,0)" fill="rgb(1,26,44)" d="M 900.611 498.397 L 903.008 500.559 L 902.983 501.397 C 902.66 517.131 912.604 515.809 918.8 523.45 L 919.49 526.339 L 915.009 531.824 C 913.077 532.916 910.768 534.439 908.668 534.871 C 902.291 528.836 884.097 516.323 875.942 510.176 C 878.086 505.51 883.331 506.369 888.025 506.077 C 894.12 504.274 896.173 502.84 900.611 498.397 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 913.504 488.494 C 914.976 488.275 916.485 487.445 917.893 486.805 L 918.481 494.308 C 917.072 495.558 916.666 496.072 914.866 496.763 C 915.953 498.432 917.831 501.123 918.677 502.807 C 918.209 503.004 914.912 504.426 914.659 504.437 C 915.28 510.396 917.09 513.097 920.448 518.081 C 919.199 520.421 918.913 520.822 918.8 523.45 C 912.604 515.809 902.66 517.131 902.983 501.397 L 903.008 500.559 L 900.611 498.397 C 903.661 495.026 905.369 492.515 907.959 488.753 L 908.489 490.002 L 913.504 488.494 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 913.504 488.494 C 914.976 488.275 916.485 487.445 917.893 486.805 L 918.481 494.308 C 917.072 495.558 916.666 496.072 914.866 496.763 L 914.247 497.06 C 911.692 500.305 913.102 499.471 908.95 500.132 C 906.962 499.507 907.654 499.856 906.193 498.023 C 906.091 494.554 907.012 493.135 908.489 490.002 L 913.504 488.494 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 913.504 488.494 C 914.976 488.275 916.485 487.445 917.893 486.805 L 918.481 494.308 C 917.072 495.558 916.666 496.072 914.866 496.763 L 914.247 497.06 L 913.504 488.494 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 914.247 497.06 L 914.866 496.763 C 915.953 498.432 917.831 501.123 918.677 502.807 C 918.209 503.004 914.912 504.426 914.659 504.437 C 912.407 501.817 912.088 501.577 908.95 500.132 C 913.102 499.471 911.692 500.305 914.247 497.06 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 923.949 515.174 L 926.796 516.935 C 926.869 519.776 926.652 522.879 927.791 525.377 C 929.823 525.614 931.694 525.656 933.511 526.539 C 934.996 527.486 937.607 529.282 939.141 529.854 C 936.549 531.318 933.514 533.293 930.701 533.968 C 928.05 534.471 927.393 534.481 925.277 536.106 C 917.709 540.847 915.713 539.344 908.668 534.871 C 910.768 534.439 913.077 532.916 915.009 531.824 L 919.49 526.339 L 918.8 523.45 C 918.913 520.822 919.199 520.421 920.448 518.081 C 922.305 517.247 922.559 516.739 923.949 515.174 z"/>
<path transform="translate(0,0)" fill="rgb(5,89,134)" d="M 919.49 526.339 C 921.316 527.004 923.28 527.625 924.954 528.586 C 925.206 532.12 924.613 530.965 926.949 533.074 L 930.701 533.968 C 928.05 534.471 927.393 534.481 925.277 536.106 C 917.709 540.847 915.713 539.344 908.668 534.871 C 910.768 534.439 913.077 532.916 915.009 531.824 L 919.49 526.339 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 908.668 534.871 C 910.768 534.439 913.077 532.916 915.009 531.824 C 919.39 534.49 920.281 534.839 925.277 536.106 C 917.709 540.847 915.713 539.344 908.668 534.871 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 947.205 490.099 C 945.167 496.717 942.821 494.345 941.187 497.958 L 939.132 501.898 C 937.616 503.531 937.234 504.275 935.182 504.824 L 929.103 503.607 L 925.377 501.837 C 924.017 505.098 924.943 504.125 922.023 505.644 C 919.428 504.738 920.346 505.409 918.677 502.807 C 917.831 501.123 915.953 498.432 914.866 496.763 C 916.666 496.072 917.072 495.558 918.481 494.308 C 919.238 496.803 918.63 496.072 920.563 497.402 C 928.791 494.902 940.224 493.602 947.205 490.099 z"/>
<path transform="translate(0,0)" fill="rgb(0,120,185)" d="M 925.377 501.837 C 928.156 497.614 934.186 497.935 938.278 500.166 L 939.132 501.898 C 937.616 503.531 937.234 504.275 935.182 504.824 L 929.103 503.607 L 925.377 501.837 z"/>
<path transform="translate(0,0)" fill="rgb(5,89,134)" d="M 925.377 501.837 L 929.103 503.607 C 932.094 507.504 932.704 508.232 933.313 513.033 C 930.582 511.625 928.043 510.529 925.231 509.311 L 923.955 510.151 L 923.949 515.174 C 922.559 516.739 922.305 517.247 920.448 518.081 C 917.09 513.097 915.28 510.396 914.659 504.437 C 914.912 504.426 918.209 503.004 918.677 502.807 C 920.346 505.409 919.428 504.738 922.023 505.644 C 924.943 504.125 924.017 505.098 925.377 501.837 z"/>
<path transform="translate(0,0)" fill="rgb(1,26,44)" d="M 926.796 516.935 C 929.969 514.843 929.287 514.596 932.536 514.643 C 933.627 516.133 934.063 516.481 934.265 518.345 L 936.253 522.277 L 933.511 526.539 C 931.694 525.656 929.823 525.614 927.791 525.377 C 926.652 522.879 926.869 519.776 926.796 516.935 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 941.187 497.958 L 944.399 497.484 C 947.447 500.415 946.519 501.878 948.95 503.812 C 946.213 505.412 946.08 505.885 944.917 508.876 L 943.446 507.588 L 940.399 508.278 L 939.384 505.856 L 935.182 504.824 C 937.234 504.275 937.616 503.531 939.132 501.898 L 941.187 497.958 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 936.253 522.277 C 939.362 523.162 942.436 523.797 945.08 525.625 C 943.465 526.815 940.785 528.924 939.141 529.854 C 937.607 529.282 934.996 527.486 933.511 526.539 L 936.253 522.277 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 940.399 508.278 L 943.446 507.588 L 944.917 508.876 L 942.525 515.088 L 939.43 511.942 L 940.399 508.278 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 994.752 483.641 C 995.91 483.675 999.475 483.228 1000.82 483.094 L 1002.17 483.237 L 1007.66 484.328 L 1008.61 485.754 L 1005.38 492.134 C 1013.31 503.138 1011 530.26 1010.9 544.077 C 1010.88 547.143 1009.2 549.496 1007.23 551.701 C 1005.25 549.662 1005.03 549.174 1002.45 548.257 C 995.087 557.304 990.324 554.304 987.611 558.01 L 985.095 554.753 C 981.669 551.519 978.483 544.288 976.223 539.852 C 973.63 532.649 975.221 532.245 973.601 526.112 C 970.445 523.385 965.776 524.221 960.984 524.184 C 960.044 520.831 959.522 517.972 957.346 515.258 L 958.408 513.835 L 961.993 513.397 C 974.732 502.965 972.546 511.63 982.558 506.991 C 985.4 500.18 985.172 498.192 979.537 493.47 C 981.234 493.063 987.715 490.698 988.972 489.223 L 989.753 489.112 L 992.659 486.108 L 994.752 483.641 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 992.659 486.108 C 995.544 488.533 995.48 491.041 996.665 495.173 C 996.005 498.916 994.508 505.543 995.013 509.05 L 989.045 518.307 C 988.544 521.283 988.439 523.759 984.839 524.841 C 983.36 528.218 982.972 528.87 982.878 532.621 C 979.308 535.491 978.83 536.071 976.223 539.852 C 973.63 532.649 975.221 532.245 973.601 526.112 C 970.445 523.385 965.776 524.221 960.984 524.184 C 960.044 520.831 959.522 517.972 957.346 515.258 L 958.408 513.835 L 961.993 513.397 C 974.732 502.965 972.546 511.63 982.558 506.991 C 985.4 500.18 985.172 498.192 979.537 493.47 C 981.234 493.063 987.715 490.698 988.972 489.223 L 989.753 489.112 L 992.659 486.108 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 982.558 506.991 L 985.879 508.178 C 983.392 513.408 982.685 514.946 978.919 519.292 C 975.18 519.625 968.482 519.993 965.115 521.025 C 963.824 522.132 962.471 523.416 960.984 524.184 C 960.044 520.831 959.522 517.972 957.346 515.258 L 958.408 513.835 L 961.993 513.397 C 974.732 502.965 972.546 511.63 982.558 506.991 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 957.346 515.258 L 958.408 513.835 L 961.993 513.397 C 962.961 516.774 963.186 518.051 965.115 521.025 C 963.824 522.132 962.471 523.416 960.984 524.184 C 960.044 520.831 959.522 517.972 957.346 515.258 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 988.972 489.223 L 989.753 489.112 C 991.451 497.543 993.535 502.242 985.879 508.178 L 982.558 506.991 C 985.4 500.18 985.172 498.192 979.537 493.47 C 981.234 493.063 987.715 490.698 988.972 489.223 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 994.752 483.641 C 995.91 483.675 999.475 483.228 1000.82 483.094 L 1002.17 483.237 L 1007.66 484.328 L 1008.61 485.754 L 1005.38 492.134 C 1003.03 499.744 1002.39 502.572 1001.26 510.65 C 999.72 517.184 999.414 521.682 998.843 528.347 L 993.814 526.64 L 994.6 525.849 C 991.234 523.918 990.296 521.682 989.045 518.307 L 995.013 509.05 C 994.508 505.543 996.005 498.916 996.665 495.173 C 995.48 491.041 995.544 488.533 992.659 486.108 L 994.752 483.641 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 995.013 509.05 C 997.333 513.798 995.475 519.949 994.6 525.849 C 991.234 523.918 990.296 521.682 989.045 518.307 L 995.013 509.05 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 994.752 483.641 C 995.91 483.675 999.475 483.228 1000.82 483.094 C 998.63 488.114 1000.75 491.394 998.257 496.062 L 997.144 496.004 L 996.665 495.173 C 995.48 491.041 995.544 488.533 992.659 486.108 L 994.752 483.641 z"/>
<path transform="translate(0,0)" fill="rgb(5,89,134)" d="M 1005.38 492.134 C 1013.31 503.138 1011 530.26 1010.9 544.077 C 1010.88 547.143 1009.2 549.496 1007.23 551.701 C 1005.25 549.662 1005.03 549.174 1002.45 548.257 C 1007.01 540.506 1006.07 522.496 1005.02 513.545 C 1004.81 511.717 1002.67 511.258 1001.26 510.65 C 1002.39 502.572 1003.03 499.744 1005.38 492.134 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 976.223 539.852 C 978.83 536.071 979.308 535.491 982.878 532.621 C 984.854 539.307 987.397 547.808 985.095 554.753 C 981.669 551.519 978.483 544.288 976.223 539.852 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 993.814 526.64 L 998.843 528.347 C 999.692 535.583 1000.64 537.635 996.543 543.759 L 994.472 544.52 C 992.15 541.57 992.547 542.205 992.97 537.602 C 992.957 533.088 992.864 531.011 993.814 526.64 z"/>
<path transform="translate(0,0)" fill="rgb(5,89,134)" d="M 705.042 538.969 C 704.987 536.646 705.851 520.903 706.955 519.447 L 709.837 520.372 C 710.981 522.436 713.508 527.409 715.03 528.769 C 716.639 528.774 717.734 528.399 719.277 528.004 L 721.095 531.637 L 716.542 536.968 L 720.036 541.456 C 712.229 550.822 721.542 552.64 718.498 563.715 C 719.2 567.619 719.806 573.674 722.084 576.635 L 723.899 577.117 C 725.126 576.114 726.093 575.454 727.009 574.146 C 727.259 578.408 726.543 579.083 728.747 581.753 L 731.082 582.41 L 731.176 582.867 L 726.53 584.639 L 724.612 585.739 C 724.581 587.228 724.594 588.346 724.344 589.834 C 719.434 590.443 720.625 586.8 719.083 588.443 L 720.857 594.847 L 717.039 596.392 C 714.699 595.955 710.247 596.037 707.712 596.011 C 705.433 596.183 701.934 596.066 699.544 596.052 L 698.71 597.083 L 694.432 600.95 C 691.789 598.275 688.178 593.989 685.653 591.101 C 685.338 587.886 685.055 586.581 685.92 583.372 C 688.878 580.708 688.069 581.511 692.928 581.291 L 694.265 579.448 C 688.48 574.333 682.157 566.235 676.257 560.312 C 673.981 559.01 672.852 558.805 670.361 558.162 C 668.342 556.122 667.781 554.419 666.58 551.831 C 673.553 552.607 678.331 549.789 684.872 547.133 C 692.8 548.97 697.32 551.24 704.153 555.199 C 704.009 550.585 703.442 544.335 704.737 540.071 L 705.042 538.969 z"/>
<path transform="translate(0,0)" fill="rgb(1,26,44)" d="M 712.227 557.729 C 714.451 552.517 711.382 556.551 713.697 550.91 C 718.039 553.171 716.495 561.262 718.498 563.715 C 719.2 567.619 719.806 573.674 722.084 576.635 L 723.899 577.117 C 725.126 576.114 726.093 575.454 727.009 574.146 C 727.259 578.408 726.543 579.083 728.747 581.753 L 731.082 582.41 L 731.176 582.867 L 726.53 584.639 L 724.612 585.739 C 724.581 587.228 724.594 588.346 724.344 589.834 C 719.434 590.443 720.625 586.8 719.083 588.443 L 720.857 594.847 L 717.039 596.392 C 714.699 595.955 710.247 596.037 707.712 596.011 C 705.433 596.183 701.934 596.066 699.544 596.052 L 698.71 597.083 L 694.432 600.95 C 691.789 598.275 688.178 593.989 685.653 591.101 C 685.338 587.886 685.055 586.581 685.92 583.372 C 688.878 580.708 688.069 581.511 692.928 581.291 L 694.265 579.448 C 697.769 580.081 703.619 581.332 706.975 581.357 L 707.283 580.153 C 708.439 575.407 708.601 571.034 706.968 566.425 C 706.161 563.281 706.077 562.855 706.52 559.65 C 709.256 557.453 708.333 558.084 712.227 557.729 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 712.227 557.729 C 714.451 552.517 711.382 556.551 713.697 550.91 C 718.039 553.171 716.495 561.262 718.498 563.715 C 719.2 567.619 719.806 573.674 722.084 576.635 L 723.899 577.117 C 725.126 576.114 726.093 575.454 727.009 574.146 C 727.259 578.408 726.543 579.083 728.747 581.753 L 731.082 582.41 L 731.176 582.867 L 726.53 584.639 L 724.612 585.739 C 724.581 587.228 724.594 588.346 724.344 589.834 C 719.434 590.443 720.625 586.8 719.083 588.443 L 717.026 587.357 C 713.327 580.991 713.974 566.97 712.227 557.729 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 685.653 591.101 C 685.338 587.886 685.055 586.581 685.92 583.372 C 688.878 580.708 688.069 581.511 692.928 581.291 C 694.444 584.065 700.06 593.42 699.544 596.052 L 698.71 597.083 L 694.432 600.95 C 691.789 598.275 688.178 593.989 685.653 591.101 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 694.265 579.448 C 697.769 580.081 703.619 581.332 706.975 581.357 C 705.383 584.794 703.633 587.799 703.589 591.562 C 705.08 595.247 704.017 594.035 707.712 596.011 C 705.433 596.183 701.934 596.066 699.544 596.052 C 700.06 593.42 694.444 584.065 692.928 581.291 L 694.265 579.448 z"/>
<path transform="translate(0,0)" fill="rgb(0,120,185)" d="M 676.257 560.312 C 679.779 551.698 690.108 556.447 695.813 558.979 L 699.85 559.444 C 703.954 561.429 704.462 562.513 706.968 566.425 C 708.601 571.034 708.439 575.407 707.283 580.153 L 706.975 581.357 C 703.619 581.332 697.769 580.081 694.265 579.448 C 688.48 574.333 682.157 566.235 676.257 560.312 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 695.813 558.979 L 699.85 559.444 C 703.954 561.429 704.462 562.513 706.968 566.425 C 708.601 571.034 708.439 575.407 707.283 580.153 C 705.226 569.297 698.488 573.239 695.813 558.979 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 705.042 538.969 C 704.987 536.646 705.851 520.903 706.955 519.447 L 709.837 520.372 C 710.981 522.436 713.508 527.409 715.03 528.769 C 716.639 528.774 717.734 528.399 719.277 528.004 L 721.095 531.637 L 716.542 536.968 C 715.162 537.637 715.392 537.351 713.511 536.917 C 712.968 540.462 713.657 539.236 710.955 541.528 L 706.49 538.03 L 705.042 538.969 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 719.277 528.004 L 721.095 531.637 L 716.542 536.968 C 715.162 537.637 715.392 537.351 713.511 536.917 L 712.378 533.385 C 712.995 530.124 712.402 531.357 715.03 528.769 C 716.639 528.774 717.734 528.399 719.277 528.004 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 706.49 538.03 C 708.014 533.56 708.123 533.004 712.378 533.385 L 713.511 536.917 C 712.968 540.462 713.657 539.236 710.955 541.528 L 706.49 538.03 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 713.511 536.917 C 715.392 537.351 715.162 537.637 716.542 536.968 L 720.036 541.456 C 712.229 550.822 721.542 552.64 718.498 563.715 C 716.495 561.262 718.039 553.171 713.697 550.91 C 711.382 556.551 714.451 552.517 712.227 557.729 C 708.333 558.084 709.256 557.453 706.52 559.65 C 706.077 562.855 706.161 563.281 706.968 566.425 C 704.462 562.513 703.954 561.429 699.85 559.444 C 699.589 557.504 699.537 558.242 701.077 556.185 C 702.365 556.181 703.941 556.093 705.153 555.595 C 708.454 554.255 711.12 551.707 712.605 548.468 C 712.55 544.717 712.857 546.04 710.126 542.781 L 710.955 541.528 C 713.657 539.236 712.968 540.462 713.511 536.917 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 706.49 538.03 L 710.955 541.528 L 710.126 542.781 L 706.239 547.178 L 705.246 546.41 L 704.737 540.071 L 705.042 538.969 L 706.49 538.03 z"/>
<path transform="translate(0,0)" fill="rgb(232,232,232)" d="M 372.224 554.989 C 400.138 554.484 415.609 593.782 379.538 609.834 C 353.962 612.557 341.45 584.287 356.34 565.169 C 360.446 559.896 366.301 557.65 372.224 554.989 z"/>
<path transform="translate(0,0)" fill="url(#Gradient2)" d="M 731.082 582.41 C 734.053 580.57 737.54 575.653 739.847 572.753 L 742.751 574.391 L 741.364 580.274 C 740.328 584.06 740.189 582.628 741.469 585.857 L 743.202 589.792 C 744.917 591.653 745.323 591.967 746.437 594.196 L 747.967 593.219 C 748.249 594.014 748.801 595.394 748.928 596.163 L 749.904 596.378 C 753.337 600.644 754.052 600.67 754.075 605.745 L 753.181 607.114 C 749.71 606.347 749.051 605.266 746.619 602.675 C 743.718 601.695 735.702 598.781 733.125 600.272 C 723.558 605.807 725.201 623.075 723.451 632.842 C 721.905 641.474 723.812 641.804 715.35 646.727 C 708.554 643.771 702.788 643.226 695.503 642.172 C 699.517 642.484 702.789 642.707 706.373 640.759 L 706.34 639.132 L 704.159 637.363 L 703.414 636.256 L 700.273 635.602 C 695.023 634.606 695.468 634.596 693.23 630.324 L 682.952 621.796 L 682.899 621.262 L 685.183 617.995 C 688.775 617.892 690.421 618.139 693.208 615.903 C 692.107 612.925 692.157 613.627 689.354 611.391 C 691.528 607.907 693.66 605 694.432 600.95 L 698.71 597.083 L 699.544 596.052 C 701.934 596.066 705.433 596.183 707.712 596.011 C 710.247 596.037 714.699 595.955 717.039 596.392 L 720.857 594.847 L 719.083 588.443 C 720.625 586.8 719.434 590.443 724.344 589.834 C 724.594 588.346 724.581 587.228 724.612 585.739 L 726.53 584.639 L 731.176 582.867 L 731.082 582.41 z"/>
<path transform="translate(0,0)" fill="rgb(0,120,185)" d="M 700.132 611.253 L 710.342 612.648 C 711.774 614.215 715.46 618.445 717.034 619.396 C 718.836 623.744 719.836 632.073 718.074 636.434 C 714.754 638.849 712.913 635.701 710.522 633.117 C 706.038 633.334 706.22 635.809 703.414 636.256 L 700.273 635.602 C 695.023 634.606 695.468 634.596 693.23 630.324 L 682.952 621.796 L 682.899 621.262 L 685.183 617.995 C 688.775 617.892 690.421 618.139 693.208 615.903 L 693.693 615.882 C 695.219 614.084 698.053 612.555 700.132 611.253 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 693.208 615.903 L 693.693 615.882 C 697.176 619.11 709.212 629.54 710.522 633.117 C 706.038 633.334 706.22 635.809 703.414 636.256 L 700.273 635.602 C 695.023 634.606 695.468 634.596 693.23 630.324 L 682.952 621.796 L 682.899 621.262 L 685.183 617.995 C 688.775 617.892 690.421 618.139 693.208 615.903 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 720.857 594.847 L 723.961 595.392 C 725.393 597.645 724.767 597.989 724.369 601.171 C 723.255 603.702 723.693 603.202 724.791 606.369 C 724.198 610.316 724.446 610.705 720.785 613.379 C 718.481 614.985 718.115 616.748 717.034 619.396 C 715.46 618.445 711.774 614.215 710.342 612.648 L 700.132 611.253 C 698.053 612.555 695.219 614.084 693.693 615.882 L 693.208 615.903 C 692.107 612.925 692.157 613.627 689.354 611.391 C 691.528 607.907 693.66 605 694.432 600.95 L 698.71 597.083 L 699.544 596.052 C 701.934 596.066 705.433 596.183 707.712 596.011 C 710.247 596.037 714.699 595.955 717.039 596.392 L 720.857 594.847 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 694.432 600.95 L 698.71 597.083 C 700.089 600.275 704.725 602.03 708.015 603.72 C 710.619 606.363 711 605.939 711.743 609.088 C 708.24 611.892 704.355 610.367 700.132 611.253 C 698.053 612.555 695.219 614.084 693.693 615.882 L 693.208 615.903 C 692.107 612.925 692.157 613.627 689.354 611.391 C 691.528 607.907 693.66 605 694.432 600.95 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 707.712 596.011 C 710.247 596.037 714.699 595.955 717.039 596.392 L 715.624 597.357 C 711.324 597.417 712.883 596.897 709.504 599.039 C 708.673 600.755 707.92 601.832 708.015 603.72 C 704.725 602.03 700.089 600.275 698.71 597.083 L 699.544 596.052 C 701.934 596.066 705.433 596.183 707.712 596.011 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 710.342 612.648 C 713.142 610.928 713.468 609.974 714.982 607.179 C 716.835 611.104 716.566 610.819 720.785 613.379 C 718.481 614.985 718.115 616.748 717.034 619.396 C 715.46 618.445 711.774 614.215 710.342 612.648 z"/>
<path transform="translate(0,0)" fill="rgb(0,120,185)" d="M 714.982 607.179 C 719.425 605.773 720.123 605.871 724.791 606.369 C 724.198 610.316 724.446 610.705 720.785 613.379 C 716.566 610.819 716.835 611.104 714.982 607.179 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 720.857 594.847 L 723.961 595.392 C 725.393 597.645 724.767 597.989 724.369 601.171 C 720.3 600.865 718.158 600.153 715.624 597.357 L 717.039 596.392 L 720.857 594.847 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 731.082 582.41 C 734.053 580.57 737.54 575.653 739.847 572.753 L 742.751 574.391 L 741.364 580.274 C 740.328 584.06 740.189 582.628 741.469 585.857 L 743.202 589.792 C 739.882 590.59 731.644 592.334 728.958 593.677 C 725.534 590.642 726.57 589.13 726.53 584.639 L 731.176 582.867 L 731.082 582.41 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 731.082 582.41 C 734.053 580.57 737.54 575.653 739.847 572.753 L 742.751 574.391 L 741.364 580.274 C 740.328 584.06 740.189 582.628 741.469 585.857 C 737.149 583.888 735.901 583.684 731.176 582.867 L 731.082 582.41 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 743.202 589.792 C 744.917 591.653 745.323 591.967 746.437 594.196 C 742.374 597.159 732.607 597.69 728.958 593.677 C 731.644 592.334 739.882 590.59 743.202 589.792 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 748.928 596.163 L 749.904 596.378 C 753.337 600.644 754.052 600.67 754.075 605.745 L 753.181 607.114 C 749.71 606.347 749.051 605.266 746.619 602.675 C 749.244 599.167 748.561 600.633 748.928 596.163 z"/>
<path transform="translate(0,0)" fill="rgb(0,120,185)" d="M 893.619 357.215 C 899.329 354.602 902.727 352.666 908.309 357.13 C 911.171 358.596 914.859 360.224 917.082 362.401 C 924.039 367.574 931.456 373.192 939.15 377.151 C 951.05 383.274 956.731 380.947 963.37 393.198 C 961.161 393.955 958.648 395.046 956.391 394.997 C 954.105 398.892 954.202 400.629 953.834 405.203 L 952.445 405.915 L 954.565 410.115 C 950.261 413.198 948.565 412.634 945.261 414.485 C 937.626 415.978 933.537 410.066 929.065 404.726 C 928.398 401.382 927.922 396.415 927.476 392.916 C 919.176 384.315 917.613 386.864 911.792 381.798 C 907.925 379.789 904.893 377.997 902.963 374.07 L 901.394 365.133 C 898.733 365.732 896.061 364.754 894.653 362.469 L 896.421 360.1 L 893.619 357.215 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 893.619 357.215 C 899.329 354.602 902.727 352.666 908.309 357.13 C 911.171 358.596 914.859 360.224 917.082 362.401 C 915.908 369.806 920.925 370.57 921.251 374.386 C 919.486 376.821 918.3 379.203 915.59 380.007 C 913.62 377.954 914.168 377.735 913.796 374.443 C 913.387 376.119 912.45 380.449 911.792 381.798 C 907.925 379.789 904.893 377.997 902.963 374.07 L 901.394 365.133 C 898.733 365.732 896.061 364.754 894.653 362.469 L 896.421 360.1 L 893.619 357.215 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 901.394 365.133 C 909.123 366.442 908.313 368.503 913.796 374.443 C 913.387 376.119 912.45 380.449 911.792 381.798 C 907.925 379.789 904.893 377.997 902.963 374.07 L 901.394 365.133 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 893.619 357.215 C 899.329 354.602 902.727 352.666 908.309 357.13 C 904.562 359.345 900.717 359.537 896.421 360.1 L 893.619 357.215 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 917.082 362.401 C 924.039 367.574 931.456 373.192 939.15 377.151 C 951.05 383.274 956.731 380.947 963.37 393.198 C 961.161 393.955 958.648 395.046 956.391 394.997 C 955.545 383.036 938.923 385.779 930.888 380.875 C 929.085 379.775 926.253 379.192 924.087 379.106 L 921.251 374.386 C 920.925 370.57 915.908 369.806 917.082 362.401 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 913.796 374.443 C 914.168 377.735 913.62 377.954 915.59 380.007 C 918.3 379.203 919.486 376.821 921.251 374.386 L 924.087 379.106 C 928.698 387.19 934.833 391.901 935.238 398.462 C 935.35 400.28 935.494 400.679 936.56 402.118 C 938.451 406.981 938.919 411.045 943.938 413.211 L 945.261 414.485 C 937.626 415.978 933.537 410.066 929.065 404.726 C 928.398 401.382 927.922 396.415 927.476 392.916 C 919.176 384.315 917.613 386.864 911.792 381.798 C 912.45 380.449 913.387 376.119 913.796 374.443 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 936.56 402.118 C 949.235 401.015 948.244 405.145 953.834 405.203 L 952.445 405.915 L 954.565 410.115 C 950.261 413.198 948.565 412.634 945.261 414.485 L 943.938 413.211 C 938.919 411.045 938.451 406.981 936.56 402.118 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 943.938 413.211 C 945.647 407.955 946.93 406.114 952.445 405.915 L 954.565 410.115 C 950.261 413.198 948.565 412.634 945.261 414.485 L 943.938 413.211 z"/>
<path transform="translate(0,0)" fill="url(#Gradient1)" d="M 893.619 357.215 L 896.421 360.1 L 894.653 362.469 C 896.061 364.754 898.733 365.732 901.394 365.133 L 902.963 374.07 C 896.975 372.58 895.509 373.388 890.102 376.749 C 881.086 382.354 870.582 390.162 863.175 397.704 C 862.847 400.847 862.542 404.983 862.068 408.016 C 861.995 401.132 862.345 398.802 859.036 392.549 C 856.356 387.597 851.827 383.906 846.437 382.28 L 847.902 381.876 L 846.16 378.431 L 848.262 374.416 C 848.839 373.158 851.193 371.723 852.482 370.768 C 855.79 372.195 857.243 374.277 858.953 374.839 C 864.973 371.875 890.207 360.173 893.619 357.215 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 852.482 370.768 C 855.79 372.195 857.243 374.277 858.953 374.839 C 854.318 377.36 852.118 378.717 847.902 381.876 L 846.16 378.431 L 848.262 374.416 C 848.839 373.158 851.193 371.723 852.482 370.768 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 971.787 475.044 C 981.972 472.515 982.282 471.469 992.596 473.503 C 995.359 476.104 1000.13 480.285 1002.17 483.237 L 1000.82 483.094 C 999.475 483.228 995.91 483.675 994.752 483.641 L 992.659 486.108 L 989.753 489.112 L 988.972 489.223 C 987.715 490.698 981.234 493.063 979.537 493.47 L 977.113 492.661 C 966.728 488.225 970.025 495.301 961.547 489.872 C 960.511 488.657 958.689 488.186 957.071 487.534 L 959.705 480.357 C 962.932 478.056 962.829 478.784 967.458 478.512 L 971.787 475.044 z"/>
<path transform="translate(0,0)" fill="rgb(5,89,134)" d="M 971.787 475.044 C 981.972 472.515 982.282 471.469 992.596 473.503 C 995.359 476.104 1000.13 480.285 1002.17 483.237 L 1000.82 483.094 C 999.475 483.228 995.91 483.675 994.752 483.641 L 992.659 486.108 L 989.753 489.112 L 988.972 489.223 C 986.064 488.553 979.797 483.307 977.046 481.225 L 976.825 477.086 L 971.787 475.044 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 976.825 477.086 C 980.206 478.03 992.49 481.766 994.752 483.641 L 992.659 486.108 L 989.753 489.112 L 988.972 489.223 C 986.064 488.553 979.797 483.307 977.046 481.225 L 976.825 477.086 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 971.787 475.044 L 976.825 477.086 L 977.046 481.225 L 973.442 483.812 C 969.871 483.717 967.29 483.232 964.522 485.409 L 961.547 489.872 C 960.511 488.657 958.689 488.186 957.071 487.534 L 959.705 480.357 C 962.932 478.056 962.829 478.784 967.458 478.512 L 971.787 475.044 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 971.787 475.044 L 976.825 477.086 L 977.046 481.225 L 973.442 483.812 C 970.845 483.391 969.451 483.45 967.522 481.707 L 967.458 478.512 L 971.787 475.044 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 681.677 592.131 L 683.183 589.101 L 685.653 591.101 C 688.178 593.989 691.789 598.275 694.432 600.95 C 693.66 605 691.528 607.907 689.354 611.391 C 692.157 613.627 692.107 612.925 693.208 615.903 C 690.421 618.139 688.775 617.892 685.183 617.995 L 682.899 621.262 C 678.046 620.606 677.367 618.891 675.205 614.908 C 674.002 613.013 672.134 611.695 670.384 610.232 C 667.296 606.723 667.296 605.265 666.322 600.651 C 667.457 599.096 668.448 598.709 670.099 597.752 L 670.052 597.345 C 673.785 595.121 672.624 596.005 674.892 592.036 C 677.828 590.015 678.302 590.144 681.677 592.131 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 681.677 592.131 L 683.183 589.101 L 685.653 591.101 C 688.178 593.989 691.789 598.275 694.432 600.95 C 693.66 605 691.528 607.907 689.354 611.391 C 692.157 613.627 692.107 612.925 693.208 615.903 C 690.421 618.139 688.775 617.892 685.183 617.995 C 683.669 616.453 682.992 615.032 681.931 613.183 C 682.735 610.496 682.943 606.78 683.23 603.913 C 683.042 600.123 682.273 595.919 681.677 592.131 z"/>
<path transform="translate(0,0)" fill="rgb(1,26,44)" d="M 683.23 603.913 L 685.332 603.388 C 687.477 605.741 688.229 608.408 689.354 611.391 C 692.157 613.627 692.107 612.925 693.208 615.903 C 690.421 618.139 688.775 617.892 685.183 617.995 C 683.669 616.453 682.992 615.032 681.931 613.183 C 682.735 610.496 682.943 606.78 683.23 603.913 z"/>
<path transform="translate(0,0)" fill="rgb(7,107,157)" d="M 674.892 592.036 C 677.828 590.015 678.302 590.144 681.677 592.131 C 682.273 595.919 683.042 600.123 683.23 603.913 C 682.943 606.78 682.735 610.496 681.931 613.183 C 682.174 607.424 683.418 604.918 679.114 601.096 C 672.623 600.29 675.102 599.787 670.099 597.752 L 670.052 597.345 C 673.785 595.121 672.624 596.005 674.892 592.036 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 990.573 442.362 C 994.703 442.53 993.658 441.903 996.567 444.146 C 1001.55 454.946 992.717 465.829 980.178 464.88 C 978.002 463.476 977.421 462.795 975.574 460.94 C 972.134 462.013 968.975 462.838 965.834 464.619 L 962.641 461.705 L 965.44 455.944 C 968.253 451.558 968.53 450.111 969.888 445.01 C 973.83 445.426 972.319 444.812 975.538 447.647 C 977.22 447.392 979.466 446.649 981.159 446.159 C 983.795 442.601 985.829 443.201 990.573 442.362 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 969.888 445.01 C 973.83 445.426 972.319 444.812 975.538 447.647 L 976.429 449.955 C 973.284 452.883 973.445 451.833 972.895 455.382 L 975.574 460.94 C 972.134 462.013 968.975 462.838 965.834 464.619 L 962.641 461.705 L 965.44 455.944 C 968.253 451.558 968.53 450.111 969.888 445.01 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 976.429 449.955 C 978.68 452.429 983.037 457.51 985.482 459.373 L 986.539 462.125 C 984.271 464.489 983.916 463.939 980.178 464.88 C 978.002 463.476 977.421 462.795 975.574 460.94 L 972.895 455.382 C 973.445 451.833 973.284 452.883 976.429 449.955 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 981.159 446.159 C 983.989 448.415 988.493 451.378 989.552 454.584 C 988.817 457.453 988.629 457.389 985.482 459.373 C 983.037 457.51 978.68 452.429 976.429 449.955 L 975.538 447.647 C 977.22 447.392 979.466 446.649 981.159 446.159 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 666.322 600.651 C 667.296 605.265 667.296 606.723 670.384 610.232 C 672.134 611.695 674.002 613.013 675.205 614.908 C 672.089 618.171 672.957 617.819 671.872 622.913 L 668.647 624.285 L 668.907 624.891 C 667.653 626.645 665.717 629.172 664.778 631.013 L 663.369 630.541 L 663.121 634.027 L 663.305 636.746 C 661.468 638.312 659.618 638.08 657.096 638.242 L 656.285 637.039 C 654.096 632.762 653.194 628.597 651.979 623.978 C 651.697 619.242 651.786 617.028 654.265 613.118 C 652.701 609.396 652.985 606.288 652.963 602.231 C 655.31 603.903 657.866 605.825 660.306 607.311 C 661.897 605.728 663.84 603.398 665.376 601.67 L 666.322 600.651 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 654.265 613.118 C 655.587 616.436 657.323 621.567 659.495 624.187 C 663.373 627.701 663.68 631.859 659.975 635.651 L 656.285 637.039 C 654.096 632.762 653.194 628.597 651.979 623.978 C 651.697 619.242 651.786 617.028 654.265 613.118 z"/>
<path transform="translate(0,0)" fill="rgb(5,89,134)" d="M 652.963 602.231 C 655.31 603.903 657.866 605.825 660.306 607.311 L 659.871 609.452 L 660.973 610.871 C 663.19 613.718 663.092 612.962 663.672 616.981 C 662.673 620.195 662.04 621.723 659.495 624.187 C 657.323 621.567 655.587 616.436 654.265 613.118 C 652.701 609.396 652.985 606.288 652.963 602.231 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 670.384 610.232 C 672.134 611.695 674.002 613.013 675.205 614.908 C 672.089 618.171 672.957 617.819 671.872 622.913 L 668.647 624.285 L 667.544 622.994 C 666.877 618.726 668.524 614.021 670.384 610.232 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 1002.45 548.257 C 1005.03 549.174 1005.25 549.662 1007.23 551.701 C 1005.22 553.79 1003.25 555.921 1001.33 558.095 L 1001.56 559.783 C 1006.61 561.225 1010.3 560.133 1015.03 560.973 C 1015.85 564.098 1016 562.819 1014.43 565.756 C 1008.48 570.224 1001.15 571.128 993.9 571.351 C 990.529 572.083 989.719 574.023 986.89 574.156 C 985.262 569.58 987.333 568.683 984.519 565.658 C 981.518 566.867 980.769 567.112 977.614 567.771 L 976.826 566.583 C 978.392 560.814 982.772 560.557 987.611 558.01 C 990.324 554.304 995.087 557.304 1002.45 548.257 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 1015.03 560.973 C 1015.85 564.098 1016 562.819 1014.43 565.756 C 1008.48 570.224 1001.15 571.128 993.9 571.351 C 992.678 570.927 991.711 570.276 990.579 569.627 L 990.063 567.684 C 994.281 560.949 1008.02 561.045 1015.03 560.973 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 940.434 439.005 C 941.108 438.509 944.682 433.661 945.424 432.708 C 948.1 433.485 947.652 433.91 949.468 436.772 C 953.298 434.975 953.915 433.876 957.416 434.372 C 959.796 438.083 960.613 446.823 965.44 455.944 L 962.641 461.705 L 965.834 464.619 C 952.227 473.327 955.216 452.699 950.543 448.57 L 948.332 452.341 C 947.554 446.231 944.94 443.006 940.434 439.005 z"/>
<path transform="translate(0,0)" fill="rgb(5,89,134)" d="M 940.434 439.005 C 941.108 438.509 944.682 433.661 945.424 432.708 C 948.1 433.485 947.652 433.91 949.468 436.772 C 948.504 439.311 947.92 440.318 949.687 443.302 C 952.647 448.301 955.209 456.862 959.895 459.962 L 960.685 460.495 C 961.367 460.949 961.939 461.297 962.641 461.705 L 965.834 464.619 C 952.227 473.327 955.216 452.699 950.543 448.57 L 948.332 452.341 C 947.554 446.231 944.94 443.006 940.434 439.005 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 649.781 541.041 C 649.559 536.855 648.972 537.935 651.216 535.337 C 656.367 540.109 663.214 545.781 666.58 551.831 C 667.781 554.419 668.342 556.122 670.361 558.162 C 666.177 557.139 660.961 554.48 657.898 555.6 C 657.287 557.142 657.134 557.312 656.974 559.013 L 658.106 559.972 L 655.687 563.927 L 653.932 560.619 C 653.414 557.445 652.512 556.081 651.038 553.304 C 648.115 551.617 646.386 549.274 645.74 546.01 C 646.723 544.6 648.625 542.443 649.781 541.041 z"/>
<path transform="translate(0,0)" fill="rgb(5,89,134)" d="M 649.781 541.041 C 659.428 552.461 653.62 550.299 656.974 559.013 L 658.106 559.972 L 655.687 563.927 L 653.932 560.619 C 653.414 557.445 652.512 556.081 651.038 553.304 C 648.115 551.617 646.386 549.274 645.74 546.01 C 646.723 544.6 648.625 542.443 649.781 541.041 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 649.46 624.832 L 651.979 623.978 C 653.194 628.597 654.096 632.762 656.285 637.039 L 657.096 638.242 C 656.437 642.651 656.465 641.122 658.14 645.469 L 651.914 647.5 C 648.219 642.947 639.424 639.541 634.331 632.738 C 639.519 632.643 640.353 631.977 643.629 628.878 C 646.079 627.913 647.44 626.521 649.46 624.832 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 671.872 622.913 C 672.957 617.819 672.089 618.171 675.205 614.908 C 677.367 618.891 678.046 620.606 682.899 621.262 L 682.952 621.796 L 693.23 630.324 C 689.584 633.121 684.097 635.88 679.422 635.443 C 678.504 633.037 678.37 632.742 676.273 631.269 C 673.991 628.604 672.203 625.901 668.907 624.891 L 668.647 624.285 L 671.872 622.913 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 671.872 622.913 C 672.957 617.819 672.089 618.171 675.205 614.908 C 677.367 618.891 678.046 620.606 682.899 621.262 L 682.952 621.796 C 680.522 622.121 674.084 623.035 671.872 622.913 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 693.23 630.324 C 695.468 634.596 695.023 634.606 700.273 635.602 L 703.414 636.256 L 704.159 637.363 L 706.34 639.132 L 706.373 640.759 C 702.789 642.707 699.517 642.484 695.503 642.172 L 686.733 641.764 C 683.026 639.321 682.356 642.419 679.048 639.646 L 679.422 635.443 C 684.097 635.88 689.584 633.121 693.23 630.324 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 700.273 635.602 L 703.414 636.256 L 704.159 637.363 L 703.716 639.665 C 701.556 641.525 702.559 640.955 699.433 641.561 C 696.303 640.188 697.094 641.051 695.867 638.526 L 696.754 636.713 L 700.273 635.602 z"/>
<path transform="translate(0,0)" fill="rgb(2,75,117)" d="M 713.675 501.485 L 714.434 507.282 C 716.495 508.46 715.403 508.274 717.839 507.687 C 718.872 509.171 719.777 510.72 721.093 511.902 C 721.239 518.216 722.319 517.95 722.765 521.566 L 719.277 528.004 C 717.734 528.399 716.639 528.774 715.03 528.769 C 713.508 527.409 710.981 522.436 709.837 520.372 L 713.556 519.775 C 717.146 515.754 712.75 510.843 713.675 501.485 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 631.263 615.231 C 634.019 618.036 632.951 617.581 637.865 617.612 C 638.541 617.613 639.217 617.61 639.893 617.602 C 639.656 623.156 640.755 623.922 643.629 628.878 C 640.353 631.977 639.519 632.643 634.331 632.738 C 633.606 628.207 630.772 620.641 626.912 617.884 C 629.394 617.348 629.449 617.155 631.263 615.231 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 604.919 573.787 C 605.823 576.859 605.992 577.198 608.431 579.259 C 608.208 583.547 609.757 584.452 612.969 588.032 C 610.474 591.986 607.678 591.771 605.928 594.316 C 600.094 589.678 601.918 581.603 601.72 574.829 C 602.968 574.96 603.768 574.368 604.919 573.787 z"/>
<path transform="translate(0,0)" fill="rgb(5,89,134)" d="M 741.364 580.274 C 745.23 581.555 747.059 580.888 751.11 579.26 C 753.458 581.033 756.096 582.871 758.136 584.951 C 754.92 584.87 751.696 584.363 749.195 586.279 C 747.969 589.104 749.247 593.226 749.904 596.378 L 748.928 596.163 C 748.801 595.394 748.249 594.014 747.967 593.219 L 746.437 594.196 C 745.323 591.967 744.917 591.653 743.202 589.792 L 741.469 585.857 C 740.189 582.628 740.328 584.06 741.364 580.274 z"/>
<path transform="translate(0,0)" fill="rgb(1,43,72)" d="M 754.125 574.417 C 759.444 577.066 765 579.357 768.905 583.769 L 768.884 585.23 C 766.069 586.659 761.146 585.737 758.136 584.951 C 756.096 582.871 753.458 581.033 751.11 579.26 L 751.184 576.808 L 754.125 574.417 z"/>
<path transform="translate(0,0)" fill="rgb(1,69,111)" d="M 863.175 397.704 C 864.693 402.544 869.429 403.684 873.072 409.09 C 871.636 411.647 871.177 411.843 868.618 413.333 C 867.584 415.37 867.426 415.979 866.8 418.193 C 863.924 416.994 863.212 416.772 860.81 414.655 L 862.625 414.64 L 863.613 413.567 L 862.068 408.016 C 862.542 404.983 862.847 400.847 863.175 397.704 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 963.37 393.198 C 963.078 398.729 958.264 406.339 954.565 410.115 L 952.445 405.915 L 953.834 405.203 C 954.202 400.629 954.105 398.892 956.391 394.997 C 958.648 395.046 961.161 393.955 963.37 393.198 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 969.888 445.01 C 980.695 433.355 977.771 442.341 990.146 442.364 L 990.573 442.362 C 985.829 443.201 983.795 442.601 981.159 446.159 C 979.466 446.649 977.22 447.392 975.538 447.647 C 972.319 444.812 973.83 445.426 969.888 445.01 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 807.838 465.305 L 811.978 468.013 C 810.35 472.824 810.873 470.732 806.15 474.381 L 793.652 472.48 C 797.016 471.554 796.487 472.267 798.11 470.02 C 802.353 469.371 804.247 467.725 807.838 465.305 z"/>
<path transform="translate(0,0)" fill="rgb(1,26,44)" d="M 781.6 284.515 C 784.877 280.894 783.931 280.938 788.06 279.498 C 791.545 281.275 792.203 283.15 793.718 287.066 C 791.306 288.463 790.689 288.939 787.962 289.398 L 785.798 289.684 L 781.6 284.515 z"/>
<path transform="translate(0,0)" fill="rgb(5,89,134)" d="M 600.019 543.195 C 601.185 539.294 602.47 533.587 604.95 530.593 C 606.35 531.752 607.79 532.612 608.321 534.267 C 607.476 536.805 606.487 539 606.647 541.626 C 604.774 541.992 601.665 542.474 600.019 543.195 z"/>
<path transform="translate(0,0)" fill="rgb(1,55,93)" d="M 837.119 342.81 C 841.586 344.835 843.37 345.373 844.579 350.501 L 839.119 353.295 C 836.816 351.666 835.792 350.055 834.071 347.843 L 837.119 342.81 z"/>
<path transform="translate(0,0)" fill="rgb(4,88,136)" d="M 715.195 343.605 C 714.026 338.169 714.491 337.547 717.25 333.039 C 718.773 335.214 719.089 335.344 721.599 336.254 L 720.915 342.17 L 715.195 343.605 z"/>
<path transform="translate(0,0)" fill="rgb(0,120,185)" fill-opacity="0.988235" d="M 796.531 425.808 L 802.12 425.571 C 797.522 426.978 796.824 426.454 794.618 431.249 C 792.147 432.934 788.952 432.292 785.738 432.14 C 786.544 429.441 786.868 429.076 788.594 426.829 C 792.349 426.926 792.927 426.934 796.531 425.808 z"/>
<path transform="translate(0,0)" fill="rgb(0,120,185)" fill-opacity="0.984314" d="M 742.751 574.391 C 745.829 574.876 748.649 575.033 751.184 576.808 L 751.11 579.26 C 747.059 580.888 745.23 581.555 741.364 580.274 L 742.751 574.391 z"/>
<path transform="translate(0,0)" fill="rgb(1,63,102)" d="M 739.847 572.753 C 745.987 569.781 748.117 571.67 754.125 574.417 L 751.184 576.808 C 748.649 575.033 745.829 574.876 742.751 574.391 L 739.847 572.753 z"/>
</svg>

After

Width:  |  Height:  |  Size: 127 KiB

+1 -2
View File
@@ -1,2 +1 @@
<?xml version="1.0" encoding="utf-8"?><!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
<svg width="800px" height="800px" viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg" fill="none"><path fill="#FFD814" d="M0 0l7.971 15.516L16 0H0zm6.732 6.16h-1.27V4.89h1.27v1.27zm0-1.906h-1.27V2.985h1.27v1.269zm1.904 3.81h-1.27v-1.27h1.27v1.27zm0-1.905h-1.27V4.89h1.27v1.27zm0-1.905h-1.27V2.985h1.27v1.269zm1.894 1.905H9.26V4.89h1.27v1.27zM9.26 4.254V2.985h1.27v1.269H9.26z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="800" height="800" fill="none" viewBox="0 0 16 16"><path fill="#FFD814" d="M0 0l7.971 15.516L16 0H0zm6.732 6.16h-1.27V4.89h1.27v1.27zm0-1.906h-1.27V2.985h1.27v1.269zm1.904 3.81h-1.27v-1.27h1.27v1.27zm0-1.905h-1.27V4.89h1.27v1.27zm0-1.905h-1.27V2.985h1.27v1.269zm1.894 1.905H9.26V4.89h1.27v1.27zM9.26 4.254V2.985h1.27v1.269H9.26z"/></svg>

Before

Width:  |  Height:  |  Size: 506 B

After

Width:  |  Height:  |  Size: 383 B

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" version="1.1" viewBox="0 0 128 128"><path fill="#00C1D5" d="M60.3,2.3H20.2c0,0-15.8,0.8-18,18v86.3c0,0,1.1,17.3,19.1,19.1h35.1l5.3-5.3H21.9c0,0-12.6-1.6-14.2-14.2 V21.4c0,0-0.5-12.8,14-14h33.9L60.3,2.3z"/><path fill="#78BD20" d="M67.7,125.7h40.1c0,0,15.8-0.8,18-18V21.4c0,0-1.1-17.3-19.1-19.1H71.7l-5.3,5.3h39.7c0,0,12.6,1.6,14.2,14.2 v84.8c0,0,0.5,12.8-14,14H72.5L67.7,125.7z"/><g fill="#0091DA"><path d="M100.1,109.9C100.1,109.9,100,109.9,100.1,109.9H47.6c-6.5,0-8.8-5.8-9.1-8.9l0-0.2V46.8 c0-7.3,6.3-9.5,9.6-9.6l0.1,0l52.7,0.2c6.6,0,9,6,9.3,9.1l0,0.2v53c0,3-0.9,5.5-2.8,7.3C104.6,109.8,100.7,109.9,100.1,109.9z M42.5,100.6c0.1,0.8,0.9,5.3,5.1,5.3h52.5c0.1,0,2.8,0,4.6-1.7c1-1,1.5-2.5,1.5-4.4V46.9c-0.1-0.9-1-5.5-5.4-5.5l-52.6-0.2 c-0.7,0-5.7,0.5-5.7,5.6V100.6z"/><path d="M33.2,85.4h-7c-3.9,0-4.6-4.1-4.8-4.9V26.7c0-4.8,4.5-5.2,5.3-5.3l52.7,0.2h0c4,0,4.8,4.3,5,5.1v5.5h4.8v-5.6 l0-0.3c-0.4-3.3-2.9-9.5-9.7-9.5l-52.8-0.2c-3.4,0.1-9.9,2.4-9.9,10v53.9l0,0.3c0.3,3.2,2.8,9.3,9.5,9.3l7,0V85.4z"/></g></svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

+1 -3
View File
@@ -1,3 +1 @@
<svg width="1024" height="1024" viewBox="0 0 1024 1024" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M897.246 286.869H889.819C850.735 286.808 819.017 318.46 819.017 357.539V515.589C819.017 547.15 792.93 572.716 761.882 572.716C743.436 572.716 725.02 563.433 714.093 547.85L552.673 317.304C539.28 298.16 517.486 286.747 493.895 286.747C457.094 286.747 423.976 318.034 423.976 356.657V515.619C423.976 547.181 398.103 572.746 366.842 572.746C348.335 572.746 329.949 563.463 319.021 547.881L138.395 289.882C134.316 284.038 125.154 286.93 125.154 294.052V431.892C125.154 438.862 127.285 445.619 131.272 451.34L309.037 705.2C319.539 720.204 335.033 731.344 352.9 735.392C397.616 745.557 438.77 711.135 438.77 667.278V508.406C438.77 476.845 464.339 451.279 495.904 451.279H495.995C515.02 451.279 532.857 460.562 543.785 476.145L705.235 706.661C718.659 725.835 739.327 737.218 763.983 737.218C801.606 737.218 833.841 705.9 833.841 667.308V508.376C833.841 476.815 859.41 451.249 890.975 451.249H897.276C901.233 451.249 904.43 448.053 904.43 444.097V294.021C904.43 290.065 901.233 286.869 897.276 286.869H897.246Z" fill="white"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" fill="none" viewBox="0 0 1024 1024"><path fill="#fff" d="M897.246 286.869H889.819C850.735 286.808 819.017 318.46 819.017 357.539V515.589C819.017 547.15 792.93 572.716 761.882 572.716C743.436 572.716 725.02 563.433 714.093 547.85L552.673 317.304C539.28 298.16 517.486 286.747 493.895 286.747C457.094 286.747 423.976 318.034 423.976 356.657V515.619C423.976 547.181 398.103 572.746 366.842 572.746C348.335 572.746 329.949 563.463 319.021 547.881L138.395 289.882C134.316 284.038 125.154 286.93 125.154 294.052V431.892C125.154 438.862 127.285 445.619 131.272 451.34L309.037 705.2C319.539 720.204 335.033 731.344 352.9 735.392C397.616 745.557 438.77 711.135 438.77 667.278V508.406C438.77 476.845 464.339 451.279 495.904 451.279H495.995C515.02 451.279 532.857 460.562 543.785 476.145L705.235 706.661C718.659 725.835 739.327 737.218 763.983 737.218C801.606 737.218 833.841 705.9 833.841 667.308V508.376C833.841 476.815 859.41 451.249 890.975 451.249H897.276C901.233 451.249 904.43 448.053 904.43 444.097V294.021C904.43 290.065 901.233 286.869 897.276 286.869H897.246Z"/></svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

+1 -3
View File
@@ -1,3 +1 @@
<svg width="90" viewBox="0 0 90 90" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.4375 5.625C6.8842 5.625 5.625 6.8842 5.625 8.4375V70.3125H0V8.4375C0 3.7776 3.7776 0 8.4375 0H83.7925C87.551 0 89.4333 4.5442 86.7756 7.20186L40.3642 53.6133H53.4375V47.8125H59.0625V55.0195C59.0625 57.3495 57.1737 59.2383 54.8438 59.2383H34.7392L25.0712 68.9062H68.9062V33.75H74.5312V68.9062C74.5312 72.0128 72.0128 74.5312 68.9062 74.5312H19.4462L9.60248 84.375H81.5625C83.1158 84.375 84.375 83.1158 84.375 81.5625V19.6875H90V81.5625C90 86.2224 86.2224 90 81.5625 90H6.20749C2.44898 90 0.566723 85.4558 3.22438 82.7981L49.46 36.5625H36.5625V42.1875H30.9375V35.1562C30.9375 32.8263 32.8263 30.9375 35.1562 30.9375H55.085L64.9288 21.0938H21.0938V56.25H15.4688V21.0938C15.4688 17.9871 17.9871 15.4688 21.0938 15.4688H70.5538L80.3975 5.625H8.4375Z" fill="white"/>
</svg>
<svg xmlns="http://www.w3.org/2000/svg" width="90" fill="none" viewBox="0 0 90 90"><path fill="#fff" fill-rule="evenodd" d="M8.4375 5.625C6.8842 5.625 5.625 6.8842 5.625 8.4375V70.3125H0V8.4375C0 3.7776 3.7776 0 8.4375 0H83.7925C87.551 0 89.4333 4.5442 86.7756 7.20186L40.3642 53.6133H53.4375V47.8125H59.0625V55.0195C59.0625 57.3495 57.1737 59.2383 54.8438 59.2383H34.7392L25.0712 68.9062H68.9062V33.75H74.5312V68.9062C74.5312 72.0128 72.0128 74.5312 68.9062 74.5312H19.4462L9.60248 84.375H81.5625C83.1158 84.375 84.375 83.1158 84.375 81.5625V19.6875H90V81.5625C90 86.2224 86.2224 90 81.5625 90H6.20749C2.44898 90 0.566723 85.4558 3.22438 82.7981L49.46 36.5625H36.5625V42.1875H30.9375V35.1562C30.9375 32.8263 32.8263 30.9375 35.1562 30.9375H55.085L64.9288 21.0938H21.0938V56.25H15.4688V21.0938C15.4688 17.9871 17.9871 15.4688 21.0938 15.4688H70.5538L80.3975 5.625H8.4375Z" clip-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 904 B

After

Width:  |  Height:  |  Size: 900 B

+109 -134
View File
@@ -1,168 +1,143 @@
# AGENTS.md
This file provides guidance to AI coding assistants when working with code in this repository.
Coder Registry: Terraform modules/templates for Coder workspaces under `registry/[namespace]/modules/` and `registry/[namespace]/templates/`.
## Project Overview
The Coder Registry is a community-driven repository for Terraform modules and templates that extend Coder workspaces. It's organized with:
- **Modules**: Individual components and tools (IDEs, auth integrations, dev tools)
- **Templates**: Complete workspace configurations for different platforms
- **Namespaces**: Each contributor has their own namespace under `/registry/[namespace]/`
## Common Development Commands
### Formatting
## Commands
```bash
bun run fmt # Format all code (Prettier + Terraform)
bun run fmt:ci # Check formatting (CI mode)
bun run fmt # Format code (Prettier + Terraform) - run before commits
bun run tftest # Run all Terraform tests
bun run tstest # Run all TypeScript tests
terraform init -upgrade && terraform test -verbose # Test single module (run from module dir)
bun test main.test.ts # Run single TS test (from module dir)
./scripts/terraform_validate.sh # Validate Terraform syntax
./scripts/new_module.sh ns/name # Create new module scaffold
.github/scripts/version-bump.sh patch | minor | major # Bump module version after changes
```
### Testing
## Structure
```bash
# Test all modules with .tftest.hcl files
bun run test
- **Modules**: `registry/[ns]/modules/[name]/` with `main.tf`, `README.md` (YAML frontmatter), `.tftest.hcl` (required)
- **Templates**: `registry/[ns]/templates/[name]/` with `main.tf`, `README.md`
- **Validation**: `cmd/readmevalidation/` (Go) validates structure/frontmatter; URLs must be relative, not absolute
# Test specific module (from module directory)
terraform init -upgrade
terraform test -verbose
## Module Data Layout
# Validate Terraform syntax
./scripts/terraform_validate.sh
```
### Module Creation
```bash
# Generate new module scaffold
./scripts/new_module.sh namespace/module-name
```
### TypeScript Testing & Setup
The repository uses Bun for TypeScript testing with utilities:
- `test/test.ts` - Testing utilities for container management and Terraform operations
- `setup.ts` - Test cleanup (removes .tfstate files and test containers)
- Container-based testing with Docker for module validation
## Architecture & Organization
### Directory Structure
All runtime data a module writes on the workspace MUST live under a single per-module root:
```
registry/[namespace]/
├── README.md # Contributor info with frontmatter
├── .images/ # Namespace avatar (avatar.png/svg)
├── modules/ # Individual components
│ └── [module]/ # Each module has main.tf, README.md, tests
└── templates/ # Complete workspace configs
└── [template]/ # Each template has main.tf, README.md
$HOME/.coder-modules/<namespace>/<module-name>/
```
### Key Components
For a Coder-owned module named `claude-code`, the root is `$HOME/.coder-modules/coder/claude-code/`.
**Module Structure**: Each module contains:
Within that root, use these standard subdirectories:
- `main.tf` - Terraform implementation
- `README.md` - Documentation with YAML frontmatter
- `.tftest.hcl` - Terraform test files (required)
- `run.sh` - Optional startup script
| Subdirectory | Purpose | Example |
| ------------ | ----------------------------------------- | ----------------------------------------------------------- |
| `logs/` | Output from install, start, or any script | `$HOME/.coder-modules/coder/claude-code/logs/install.log` |
| `scripts/` | Scripts materialized at runtime (if any) | `$HOME/.coder-modules/coder/claude-code/scripts/install.sh` |
**Template Structure**: Each template contains:
- Name log files after the script that produced them (`install.sh` writes to `logs/install.log`, `start.sh` writes to `logs/start.log`).
- Always `mkdir -p` the target directory before writing; do not assume it exists.
- Do not write module runtime data to `$HOME` directly, to ad-hoc paths like `~/.<module>-module/`, or to `/tmp/` for anything that must survive the session.
- Tool-specific data (config files, caches, state, etc.) lives wherever the tool expects; only standardize paths the module itself controls.
- READMEs and tests should reference paths under this root so troubleshooting has one place to look.
- New modules MUST follow this layout. Existing modules should migrate to it when they are next touched.
- `main.tf` - Complete Coder template configuration
- `README.md` - Documentation with YAML frontmatter
- Additional configs, scripts as needed
## Use `coder-utils` for Script Orchestration
### README Frontmatter Requirements
For any new module that runs scripts (or when reworking an existing one), use the [`coder-utils`](registry/coder/modules/coder-utils) module to orchestrate `pre_install`, `install`, `post_install`, and `start` scripts instead of hand-rolling `coder_script` resources.
All modules/templates require YAML frontmatter:
- `coder-utils` handles script ordering via `coder exp sync`, materializes scripts under `module_directory/scripts/` (e.g., `install.sh`, `start.sh`), and writes logs to `module_directory/logs/` automatically, which aligns with the Module Data Layout above.
- Set `module_directory = "$HOME/.coder-modules/<namespace>/<module-name>"` so the standard root, `scripts/`, and `logs/` subdirectories fall out for free.
```yaml
---
display_name: "Module Name"
description: "Brief description"
icon: "../../../../.icons/tool.svg"
verified: false
tags: ["tag1", "tag2"]
---
### Passing scripts to `coder-utils`
Store each script as a `.tftpl` file under `scripts/`. Render it at **plan time** in a `locals` block using `templatefile()`, then pass the rendered string directly to the `coder-utils` module.
**Encoding rules for template variables:**
| Value type | Terraform side | Template (`.tftpl`) side |
| ------------------------------------- | ----------------------------------- | ---------------------------------------------- |
| String / path | pass as-is | `ARG_FOO='${ARG_FOO}'` |
| Boolean | `tostring(var.foo)` | `ARG_FOO='${ARG_FOO}'` |
| Free-form string (may contain quotes) | `base64encode(var.foo)` | `ARG_FOO=$(echo -n '${ARG_FOO}' \| base64 -d)` |
| Object / list (JSON) | `base64encode(jsonencode(var.foo))` | `ARG_FOO=$(echo -n '${ARG_FOO}' \| base64 -d)` |
In `.tftpl` files, write literal bash `$` as `$$` (e.g., `$${HOME}`) so Terraform does not treat them as template interpolations.
```tf
locals {
install_script = templatefile("${path.module}/scripts/install.sh.tftpl", {
ARG_FOO = var.foo
ARG_BAR = var.bar
})
}
module "coder_utils" {
source = "registry.coder.com/coder/coder-utils/coder"
version = "0.0.1"
agent_id = var.agent_id
module_directory = "$HOME/.coder-modules/<namespace>/<module-name>"
display_name_prefix = "My Module"
icon = var.icon
pre_install_script = var.pre_install_script
install_script = local.install_script
post_install_script = var.post_install_script
start_script = var.start_script # optional; omit if the module does not start a process
}
```
## Testing Requirements
Always expose the `scripts` output as a pass-through so upstream modules can serialize their own `coder_script` resources behind this module's install pipeline:
### Module Testing
```tf
output "scripts" {
description = "Ordered list of coder exp sync names produced by this module, in run order."
value = module.coder_utils.scripts
}
```
- Every module MUST have `.tftest.hcl` test files
- Optional `main.test.ts` files for container-based testing or complex business logic validation
- Tests use Docker containers with `--network=host` flag
- Linux required for testing (Docker Desktop on macOS/Windows won't work)
- Use Colima or OrbStack on macOS instead of Docker Desktop
## Code Style
### Test Utilities
- Every module MUST have `.tftest.hcl` tests; optional `main.test.ts` for container/script tests
- README frontmatter: `display_name`, `description`, `icon`, `verified: false`, `tags`
- Use semantic versioning; bump version via script when modifying modules
- Docker tests require Linux or Colima/OrbStack (not Docker Desktop)
- Use `tf` (not `hcl`) for code blocks in README; use relative icon paths (e.g., `../../../../.icons/`)
- **Do NOT include input/output variable tables in module or template READMEs.** The registry automatically generates these from the Terraform source (e.g., variable and output blocks in `main.tf`). Adding them to the README is redundant and creates maintenance drift.
- Usage examples (e.g., a `module "..." { }` block) are encouraged, but not tables enumerating inputs/outputs.
The `test/test.ts` file provides:
### Variable and output conventions
- `runTerraformApply()` - Execute Terraform with variables
- `executeScriptInContainer()` - Run coder_script resources in containers
- `testRequiredVariables()` - Validate required variables
- Container management functions
Order variable blocks: `description``type``default``validation``sensitive`.
## Validation & Quality
```tf
variable "api_key" {
description = "API key for the service."
type = string
default = ""
sensitive = true
}
```
### Automated Validation
- Mark variables and outputs that hold secrets or tokens `sensitive = true`.
- Every `output` block must have a `description`.
- Use `count = condition ? 1 : 0` for optional singleton resources. Reserve `for_each` for maps/sets where resource identity matters.
The Go validation tool (`cmd/readmevalidation/`) checks:
### `.tftest.hcl` test commands
- Repository structure integrity
- Contributor README files
- Module and template documentation
- Frontmatter format compliance
- Use `command = plan` only for assertions on **input-derived values** (variables, locals computed from inputs).
- Use `command = apply` for **computed attributes** (resource IDs, anything the provider generates), and for nested blocks of set type (they cannot be indexed with `[0]` under `plan`).
### Versioning
## PR Review Checklist
Use semantic versioning for modules:
- **Patch** (1.2.3 → 1.2.4): Bug fixes
- **Minor** (1.2.3 → 1.3.0): New features, adding inputs
- **Major** (1.2.3 → 2.0.0): Breaking changes
## Dependencies & Tools
### Required Tools
- **Terraform** - Module development and testing
- **Docker** - Container-based testing
- **Bun** - JavaScript runtime for formatting/scripts
- **Go 1.23+** - Validation tooling
### Development Dependencies
- Prettier with Terraform and shell plugins
- TypeScript for test utilities
- Various npm packages for documentation processing
## Workflow Notes
### Contributing Process
1. Create namespace (first-time contributors)
2. Generate module/template files using scripts
3. Implement functionality and tests
4. Run formatting and validation
5. Submit PR with appropriate template
### Testing Workflow
- All modules must pass `terraform test`
- Use `bun run test` for comprehensive testing
- Format code with `bun run fmt` before submission
- Manual testing recommended for templates
### Namespace Management
- Each contributor gets unique namespace
- Namespace avatar required (avatar.png/svg in .images/)
- Namespace README with contributor info and frontmatter
- Version bumped via `.github/scripts/version-bump.sh` if module changed (patch=bugfix, minor=feature, major=breaking)
- Breaking changes documented: removed inputs, changed defaults, new required variables
- New variables have sensible defaults to maintain backward compatibility
- Tests pass (`bun run tftest`, `bun run tstest`); add diagnostic logging for test failures
- README examples updated with new version number; tooltip/behavior changes noted
- Shell scripts handle errors gracefully (use `|| echo "Warning..."` for non-fatal failures)
- No hardcoded values that should be configurable; no absolute URLs (use relative paths)
- If AI-assisted: include model and tool/agent name at footer of PR body (e.g., "Generated with [Amp](thread-url) using Claude")
+2
View File
@@ -0,0 +1,2 @@
# GitHub Actions Workflow Owners
.github/ @jdomeracki-coder
+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="120" height="120" fill="none" viewBox="0 0 120 120"><path fill="#1D63ED" d="M118.049 51.0329C115.107 49.0467 107.377 48.1984 101.756 49.7167C101.453 44.1017 98.5669 39.37 93.2862 35.2415L91.3313 33.9253L90.0286 35.8988C87.4676 39.7981 86.3886 44.993 86.771 49.7151C87.0725 52.6245 88.0816 55.8951 90.0286 58.2681C82.7137 62.524 75.9715 61.5579 46.112 61.5579H0.0103499C-0.124524 68.3204 0.95923 81.3298 9.20719 91.92C10.118 93.0898 11.1176 94.2214 12.2014 95.3116C18.907 102.047 29.0385 106.986 44.1888 107C67.3015 107.021 87.1042 94.4904 99.1493 64.1919C103.113 64.2572 113.576 64.9049 118.697 54.98C118.822 54.8129 119.999 52.3475 119.999 52.3475L118.048 51.0313L118.049 51.0329ZM30.0968 44.8481H17.133V57.8511H30.0968V44.8481ZM46.845 44.8481H33.8812V57.8511H46.845V44.8481ZM63.5932 44.8481H50.6294V57.8511H63.5932V44.8481ZM80.3414 44.8481H67.3777V57.8511H80.3414V44.8481ZM13.3486 44.8481H0.384824V57.8511H13.3486V44.8481ZM30.0968 28.4249H17.133V41.4279H30.0968V28.4249ZM46.845 28.4249H33.8812V41.4279H46.845V28.4249ZM63.5932 28.4249H50.6294V41.4279H63.5932V28.4249ZM63.5932 12H50.6294V25.003H63.5932V12Z"/></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

+1
View File
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1648" height="1648" fill="none" viewBox="0 0 1648 1648"><path fill="#fff" d="M1248 0H400C179.086 0 0 179.086 0 400V1248C0 1468.91 179.086 1648 400 1648H1248C1468.91 1648 1648 1468.91 1648 1248V400C1648 179.086 1468.91 0 1248 0Z"/><path fill="#000" d="M1293.43 1351.06C1349.36 1338.92 1408.68 1305.87 1408.68 1305.87L1304.86 1220.35C1253.53 1178.1 1209.85 1127.35 1175.69 1070.32C1128.5 991.535 1063.29 925.049 985.455 876.335L947.439 854.198C934.413 845.144 925.332 831.032 924.039 815.111C923.211 804.845 925.671 795.668 931.41 787.592C951.204 759.692 1053.52 638.291 1072.27 622.778C1096.41 602.819 1123.32 586.217 1148.28 567.209C1151.83 564.503 1155.39 561.812 1158.9 559.067C1159.02 558.944 1159.2 558.848 1159.31 558.74C1167.32 552.416 1174.88 545.699 1180.89 537.734C1202.59 512.606 1207.86 490.391 1209.15 480.56C1206.22 471.098 1197.46 449.942 1173.05 425.537C1188.35 426.476 1206.87 438.575 1223.66 452.81C1234.93 434.795 1246.73 415.76 1258.52 396.686C1266.39 383.945 1254.71 374.414 1254.39 374.117L1254.32 374.102C1254.32 374.102 1254.32 374.048 1254.31 374.036C1254.01 373.709 1244.48 362.03 1231.76 369.902C1204.58 386.72 1177.42 403.553 1153.26 418.847C1153.26 418.847 1124.62 418.25 1090.72 447.536C1082.74 453.56 1076.02 461.117 1069.71 469.112C1069.59 469.235 1069.48 469.397 1069.38 469.52C1066.62 473.015 1063.93 476.576 1061.24 480.14C1042.22 505.115 1025.63 532.01 1005.67 556.157C990.171 574.919 868.758 677.216 840.858 697.013C832.782 702.752 823.617 705.224 813.339 704.381C797.433 703.103 783.306 694.007 774.249 680.984L752.115 642.968C703.401 565.103 636.915 499.922 558.126 452.729C501.102 418.577 450.36 374.876 408.105 323.564L322.557 219.743C322.557 219.743 289.491 279.05 277.362 334.985C294.234 355.502 338.247 406.421 389.478 445.307C334.398 419.405 293.679 399.377 261.564 382.628C256.614 419.255 258.546 474.647 263.643 517.544C298.41 532.757 357.606 556.196 417.867 568.652C369.666 579.923 316.791 581.975 275.961 581.174C283.155 607.727 293.16 634.811 306.621 662.057C312.345 674.66 318.612 686.966 325.383 699.011C346.989 704.954 431.817 717.311 476.955 707.168C432.048 723.2 356.655 750.134 356.655 750.134C414.561 822.179 478.56 880.793 478.56 880.793C575.907 828.449 598.098 821.297 671.109 773.546C552.876 869.753 522.189 909.032 489 949.4L465.873 981.854C453.855 998.714 443.427 1016.62 434.712 1035.4C405.549 1098.14 364.269 1231.85 364.269 1231.85C356.901 1255.15 373.977 1272.23 396.6 1264.18C396.6 1264.18 530.28 1222.9 593.052 1193.74C611.817 1185.01 629.751 1174.58 646.596 1162.57L679.05 1139.45C689.94 1130.49 700.764 1121.71 712.647 1111.35C712.647 1111.35 794.346 1208.14 878.328 1271.81C878.328 1271.81 905.265 1196.42 921.294 1151.51C911.136 1196.66 923.496 1281.49 929.451 1303.08C941.469 1309.85 953.802 1316.12 966.405 1321.84C993.666 1335.31 1020.73 1345.31 1047.29 1352.5C1046.5 1311.66 1048.54 1258.8 1059.81 1210.6C1072.27 1270.86 1095.69 1330.07 1110.92 1364.82C1153.81 1369.92 1209.21 1371.85 1245.84 1366.9C1229.08 1334.79 1209.06 1294.04 1183.16 1238.99C1222.04 1290.22 1272.96 1334.23 1293.48 1351.1L1293.43 1351.06Z"/></svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

+106 -11
View File
@@ -1,22 +1,117 @@
package main
import (
_ "embed"
"os"
"path/filepath"
"testing"
)
//go:embed testSamples/sampleReadmeBody.md
var testBody string
type readmeTestCase struct {
filePath string
shouldPass bool
}
func TestValidateCoderResourceReadmeBody(t *testing.T) {
func loadTestCases(t *testing.T, dir string, shouldPass bool) []readmeTestCase {
t.Helper()
files, err := os.ReadDir(dir)
if err != nil {
t.Fatalf("Failed to read directory %s: %v", dir, err)
}
var testCases []readmeTestCase
for _, file := range files {
testCases = append(testCases, readmeTestCase{
filePath: filepath.Join(dir, file.Name()),
shouldPass: shouldPass,
})
}
return testCases
}
func TestValidateModuleReadmes(t *testing.T) {
t.Parallel()
t.Run("Parses a valid README body with zero issues", func(t *testing.T) {
t.Parallel()
testCases := append(
loadTestCases(t, "testSamples/modules/pass", true),
loadTestCases(t, "testSamples/modules/fail", false)...,
)
errs := validateCoderModuleReadmeBody(testBody)
for _, e := range errs {
t.Error(e)
}
})
for _, tc := range testCases {
t.Run(tc.filePath, func(t *testing.T) {
t.Parallel()
content, err := os.ReadFile(tc.filePath)
if err != nil {
t.Fatalf("Failed to read file: %v", err)
}
rm := readme{
filePath: tc.filePath,
rawText: string(content),
}
resource, errs := parseCoderResourceReadme("modules", rm)
if len(errs) != 0 {
if tc.shouldPass {
for _, e := range errs {
t.Errorf("Unexpected parsing error: %v", e)
}
}
return
}
validationErrs := validateCoderModuleReadme(resource)
if tc.shouldPass && len(validationErrs) != 0 {
for _, e := range validationErrs {
t.Errorf("Unexpected validation error: %v", e)
}
} else if !tc.shouldPass && len(validationErrs) == 0 {
t.Error("Expected validation errors but got none")
}
})
}
}
func TestValidateTemplateReadmes(t *testing.T) {
t.Parallel()
testCases := append(
loadTestCases(t, "testSamples/templates/pass", true),
loadTestCases(t, "testSamples/templates/fail", false)...,
)
for _, tc := range testCases {
t.Run(tc.filePath, func(t *testing.T) {
t.Parallel()
content, err := os.ReadFile(tc.filePath)
if err != nil {
t.Fatalf("Failed to read file: %v", err)
}
rm := readme{
filePath: tc.filePath,
rawText: string(content),
}
resource, errs := parseCoderResourceReadme("templates", rm)
if len(errs) != 0 {
if tc.shouldPass {
for _, e := range errs {
t.Errorf("Unexpected parsing error: %v", e)
}
}
return
}
validationErrs := validateCoderModuleReadme(resource)
if tc.shouldPass && len(validationErrs) != 0 {
for _, e := range validationErrs {
t.Errorf("Unexpected validation error: %v", e)
}
} else if !tc.shouldPass && len(validationErrs) == 0 {
t.Error("Expected validation errors but got none")
}
})
}
}
+27 -17
View File
@@ -82,33 +82,43 @@ func validateCoderResourceDescription(description string) error {
return nil
}
func isPermittedRelativeURL(checkURL string) bool {
// Would normally be skittish about having relative paths like this, but it should be safe because we have
// guarantees about the structure of the repo, and where this logic will run.
return strings.HasPrefix(checkURL, "./") || strings.HasPrefix(checkURL, "/") || strings.HasPrefix(checkURL, "../../../../.icons")
func isPermittedRelativeURL(checkURL string, readmeFilePath string) error {
// Icon URLs must reference the top-level .icons directory
expectedPrefix := "../../../../.icons/"
if !strings.HasPrefix(checkURL, expectedPrefix) {
return xerrors.Errorf("icon URL %q must reference the top-level .icons directory using %q", checkURL, expectedPrefix)
}
// Resolve the path relative to the README file and check if it exists
readmeDir := path.Dir(readmeFilePath)
resolvedPath := path.Join(readmeDir, checkURL)
if _, err := os.Stat(resolvedPath); err != nil {
if os.IsNotExist(err) {
return xerrors.Errorf("icon file does not exist at resolved path %q (referenced as %q)", resolvedPath, checkURL)
}
return xerrors.Errorf("error checking icon file at %q: %v", resolvedPath, err)
}
return nil
}
func validateCoderResourceIconURL(iconURL string) []error {
func validateCoderResourceIconURL(iconURL string, filePath string) []error {
if iconURL == "" {
return []error{xerrors.New("icon URL cannot be empty")}
}
var errs []error
// If the URL does not have a relative path.
if !strings.HasPrefix(iconURL, ".") && !strings.HasPrefix(iconURL, "/") {
if _, err := url.ParseRequestURI(iconURL); err != nil {
errs = append(errs, xerrors.New("absolute icon URL is not correctly formatted"))
}
if strings.Contains(iconURL, "?") {
errs = append(errs, xerrors.New("icon URLs cannot contain query parameters"))
}
// Reject absolute HTTP/HTTPS URLs - all icons must be local to the repository
if strings.HasPrefix(iconURL, "http://") || strings.HasPrefix(iconURL, "https://") {
errs = append(errs, xerrors.Errorf("icon URL must reference the top-level .icons directory, not an absolute URL %q", iconURL))
return errs
}
// If the URL has a relative path.
if !isPermittedRelativeURL(iconURL) {
errs = append(errs, xerrors.Errorf("relative icon URL %q must either be scoped to that module's directory, or the top-level /.icons directory (this can usually be done by starting the path with \"../../../.icons\")", iconURL))
// Validate that the icon references ../../../../.icons/ and exists
if err := isPermittedRelativeURL(iconURL, filePath); err != nil {
errs = append(errs, err)
}
return errs
@@ -153,7 +163,7 @@ func validateCoderResourceFrontmatter(resourceType string, filePath string, fm c
errs = append(errs, addFilePathToError(filePath, err))
}
for _, err := range validateCoderResourceIconURL(fm.IconURL) {
for _, err := range validateCoderResourceIconURL(fm.IconURL, filePath) {
errs = append(errs, addFilePathToError(filePath, err))
}
for _, err := range validateSupportedOperatingSystems(fm.OperatingSystems) {
@@ -0,0 +1,22 @@
---
display_name: "Goose"
description: "Run the Goose agent in your workspace to generate code and perform tasks"
icon: "https://github.com/coder/registry/pull/599.svg"
verified: false
tags: ["ai", "agent"]
---
# Goose
Run the [Goose](https://block.github.io/goose/) agent in your workspace to generate code and perform tasks.
```tf
module "goose" {
source = "registry.coder.com/coder/goose/coder"
version = "1.0.31"
agent_id = coder_agent.main.id
folder = "/home/coder"
install_goose = true
goose_version = "v1.0.16"
}
```
@@ -0,0 +1,19 @@
---
display_name: "Wrong Path"
description: "Test module with wrong icon path format"
icon: "../../../../.icons/invalid.svg"
verified: false
tags: ["test"]
---
# Wrong Path
This should fail validation.
```tf
module "test" {
source = "registry.coder.com/coder/test/coder"
version = "1.0.0"
agent_id = coder_agent.main.id
}
```
@@ -0,0 +1,56 @@
---
display_name: "Docker Container"
description: "Develop in a container on a Docker host"
icon: "../../../../.icons/docker.svg"
verified: true
tags: ["docker", "container"]
supported_os: ["linux", "macos"]
---
# Docker Container
Develop in a Docker container on a remote Docker host.
```tf
terraform {
required_providers {
coder = {
source = "coder/coder"
version = "~> 1.0"
}
docker = {
source = "kreuzwerker/docker"
version = "~> 3.0"
}
}
}
provider "docker" {}
provider "coder" {}
data "coder_workspace" "me" {}
resource "coder_agent" "main" {
os = "linux"
arch = "amd64"
}
resource "docker_container" "workspace" {
image = "codercom/enterprise-base:ubuntu"
name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}"
env = ["CODER_AGENT_TOKEN=${coder_agent.main.token}"]
}
```
## Getting Started
This template creates a Docker container on your Docker host. You'll need:
- A Docker host accessible from your Coder deployment
- The Docker provider configured with appropriate credentials
## Customization
You can customize the container image, resources, and configuration to match your needs.
@@ -1,121 +0,0 @@
# Goose
Run the [Goose](https://block.github.io/goose/) agent in your workspace to generate code and perform tasks.
```tf
module "goose" {
source = "registry.coder.com/coder/goose/coder"
version = "1.0.31"
agent_id = coder_agent.main.id
folder = "/home/coder"
install_goose = true
goose_version = "v1.0.16"
}
```
## Prerequisites
- `screen` must be installed in your workspace to run Goose in the background
- You must add the [Coder Login](https://registry.coder.com/modules/coder-login) module to your template
The `codercom/oss-dogfood:latest` container image can be used for testing on container-based workspaces.
## Examples
Your workspace must have `screen` installed to use this.
### Run in the background and report tasks (Experimental)
> This functionality is in early access as of Coder v2.21 and is still evolving.
> For now, we recommend testing it in a demo or staging environment,
> rather than deploying to production
>
> Learn more in [the Coder documentation](https://coder.com/docs/tutorials/ai-agents)
>
> Join our [Discord channel](https://discord.gg/coder) or
> [contact us](https://coder.com/contact) to get help or share feedback.
```tf
module "coder-login" {
count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/coder-login/coder"
version = "1.0.15"
agent_id = coder_agent.main.id
}
variable "anthropic_api_key" {
type = string
description = "The Anthropic API key"
sensitive = true
}
data "coder_parameter" "ai_prompt" {
type = "string"
name = "AI Prompt"
default = ""
description = "Write a prompt for Goose"
mutable = true
}
# Set the prompt and system prompt for Goose via environment variables
resource "coder_agent" "main" {
# ...
env = {
GOOSE_SYSTEM_PROMPT = <<-EOT
You are a helpful assistant that can help write code.
Run all long running tasks (e.g. npm run dev) in the background and not in the foreground.
Periodically check in on background tasks.
Notify Coder of the status of the task before and after your steps.
EOT
GOOSE_TASK_PROMPT = data.coder_parameter.ai_prompt.value
# An API key is required for experiment_auto_configure
# See https://block.github.io/goose/docs/getting-started/providers
ANTHROPIC_API_KEY = var.anthropic_api_key # or use a coder_parameter
}
}
module "goose" {
count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/goose/coder"
version = "1.0.31"
agent_id = coder_agent.main.id
folder = "/home/coder"
install_goose = true
goose_version = "v1.0.16"
# Enable experimental features
experiment_report_tasks = true
# Run Goose in the background
experiment_use_screen = true
# Avoid configuring Goose manually
experiment_auto_configure = true
# Required for experiment_auto_configure
experiment_goose_provider = "anthropic"
experiment_goose_model = "claude-3-5-sonnet-latest"
}
```
## Run standalone
Run Goose as a standalone app in your workspace. This will install Goose and run it directly without using screen or any task reporting to the Coder UI.
```tf
module "goose" {
source = "registry.coder.com/coder/goose/coder"
version = "1.0.31"
agent_id = coder_agent.main.id
folder = "/home/coder"
install_goose = true
goose_version = "v1.0.16"
# Icon is not available in Coder v2.20 and below, so we'll use a custom icon URL
icon = "https://raw.githubusercontent.com/block/goose/refs/heads/main/ui/desktop/src/images/icon.svg"
}
```
@@ -0,0 +1,27 @@
---
display_name: "Docker Container"
description: "Develop in a container on a Docker host"
icon: "https://github.com/coder/registry/pull/599.jpeg"
verified: true
tags: ["docker", "container"]
supported_os: ["linux", "macos"]
---
# Docker Container
Develop in a Docker container on a remote Docker host.
```tf
terraform {
required_providers {
coder = {
source = "coder/coder"
version = "~> 1.0"
}
docker = {
source = "kreuzwerker/docker"
version = "~> 3.0"
}
}
}
```
@@ -0,0 +1,20 @@
---
display_name: "Docker Container"
description: "Develop in a container on a Docker host"
icon: "../../../../.icons/invalid.svg"
verified: true
tags: ["docker", "container"]
supported_os: ["linux", "macos"]
---
# Wrong Path
This should fail validation.
```tf
module "test" {
source = "registry.coder.com/coder/test/coder"
version = "1.0.0"
agent_id = coder_agent.main.id
}
```
@@ -0,0 +1,56 @@
---
display_name: "Docker Container"
description: "Develop in a container on a Docker host"
icon: "../../../../.icons/docker.svg"
verified: true
tags: ["docker", "container"]
supported_os: ["linux", "macos"]
---
# Docker Container
Develop in a Docker container on a remote Docker host.
```tf
terraform {
required_providers {
coder = {
source = "coder/coder"
version = "~> 1.0"
}
docker = {
source = "kreuzwerker/docker"
version = "~> 3.0"
}
}
}
provider "docker" {}
provider "coder" {}
data "coder_workspace" "me" {}
resource "coder_agent" "main" {
os = "linux"
arch = "amd64"
}
resource "docker_container" "workspace" {
image = "codercom/enterprise-base:ubuntu"
name = "coder-${data.coder_workspace.me.owner}-${data.coder_workspace.me.name}"
env = ["CODER_AGENT_TOKEN=${coder_agent.main.token}"]
}
```
## Getting Started
This template creates a Docker container on your Docker host. You'll need:
- A Docker host accessible from your Coder deployment
- The Docker provider configured with appropriate credentials
## Customization
You can customize the container image, resources, and configuration to match your needs.
Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 451 KiB

After

Width:  |  Height:  |  Size: 451 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

+7
View File
@@ -0,0 +1,7 @@
---
display_name: "Excellencedev"
bio: "Love to contribute"
avatar: "./.images/avatar.png"
support_email: "ademiluyisuccessandexcellence@gmail.com"
status: "community"
---
@@ -0,0 +1,32 @@
---
display_name: Hetzner Cloud Server
description: Provision Hetzner Cloud servers as Coder workspaces
icon: ../../../../.icons/hetzner.svg
tags: [vm, linux, hetzner]
---
# Remote Development on Hetzner Cloud (Linux)
Provision Hetzner Cloud servers as [Coder workspaces](https://coder.com/docs/workspaces) with this example template.
> [!WARNING]
> **Workspace Storage Persistence:** When a workspace is stopped, the Hetzner Cloud server instance is stopped but your home volume and stored data persist. This means your files and data remain intact when you resume the workspace.
> [!IMPORTANT]
> **Volume Management & Costs:** Hetzner Cloud volumes persist even when workspaces are stopped and will continue to incur storage costs (€0.0476/GB/month). Volumes are only automatically deleted when the workspace is completely deleted. Monitor your volumes in the [Hetzner Cloud Console](https://console.hetzner.cloud/) to manage costs effectively.
## Prerequisites
To deploy workspaces as Hetzner Cloud servers, you'll need:
- Hetzner Cloud [API token](https://console.hetzner.cloud/projects) (create under Security > API Tokens)
### Authentication
This template assumes that the Coder Provisioner is run in an environment that is authenticated with Hetzner Cloud.
Obtain a Hetzner Cloud API token from your [Hetzner Cloud Console](https://console.hetzner.cloud/projects) and provide it as the `hcloud_token` variable when creating a workspace.
For more authentication options, see the [Terraform provider documentation](https://registry.terraform.io/providers/hetznercloud/hcloud/latest/docs#authentication).
> [!NOTE]
> This template is designed to be a starting point. Edit the Terraform to extend the template to support your use case.
@@ -0,0 +1,62 @@
#cloud-config
users:
- name: ${username}
sudo: ["ALL=(ALL) NOPASSWD:ALL"]
groups: sudo
shell: /bin/bash
packages:
- git
%{ if home_volume_label != "" ~}
fs_setup:
- device: /dev/disk/by-id/scsi-0HC_Volume_${volume_id}
filesystem: ext4
label: ${home_volume_label}
overwrite: false # This prevents reformatting the disk on every boot
mounts:
- [
"/dev/disk/by-id/scsi-0HC_Volume_${volume_id}",
"/home/${username}",
ext4,
"defaults,uid=1000,gid=1000",
]
%{ endif ~}
write_files:
- path: /opt/coder/init
permissions: "0755"
encoding: b64
content: ${init_script}
- path: /etc/systemd/system/coder-agent.service
permissions: "0644"
content: |
[Unit]
Description=Coder Agent
After=network-online.target
Wants=network-online.target
[Service]
User=${username}
ExecStart=/opt/coder/init
Environment=CODER_AGENT_TOKEN=${coder_agent_token}
Restart=always
RestartSec=10
TimeoutStopSec=90
KillMode=process
OOMScoreAdjust=-900
SyslogIdentifier=coder-agent
[Install]
WantedBy=multi-user.target
runcmd:
%{ if home_volume_label != "" ~}
- |
until [ -e /dev/disk/by-id/scsi-0HC_Volume_${volume_id} ]; do
echo "Waiting for volume device..."
sleep 2
done
%{ endif ~}
- mount -a
- chown ${username}:${username} /home/${username}
- systemctl enable coder-agent
- systemctl start coder-agent
@@ -0,0 +1,238 @@
terraform {
required_providers {
hcloud = {
source = "hetznercloud/hcloud"
}
coder = {
source = "coder/coder"
}
http = {
source = "hashicorp/http"
version = "~> 3.0"
}
}
}
variable "hcloud_token" {
sensitive = true
}
provider "hcloud" {
token = var.hcloud_token
}
data "http" "hcloud_locations" {
url = "https://api.hetzner.cloud/v1/locations"
request_headers = {
Authorization = "Bearer ${var.hcloud_token}"
Accept = "application/json"
}
}
data "http" "hcloud_server_types" {
url = "https://api.hetzner.cloud/v1/server_types"
request_headers = {
Authorization = "Bearer ${var.hcloud_token}"
Accept = "application/json"
}
}
# Available locations: https://docs.hetzner.com/cloud/general/locations/
data "coder_parameter" "hcloud_location" {
name = "hcloud_location"
display_name = "Hetzner Location"
description = "Select the Hetzner Cloud location for your workspace."
type = "string"
default = "fsn1"
dynamic "option" {
for_each = local.hcloud_locations
content {
name = format(
"%s (%s, %s)",
upper(option.value.name),
option.value.city,
option.value.country
)
value = option.value.name
}
}
}
# Available server types: https://docs.hetzner.com/cloud/servers/overview/
data "coder_parameter" "hcloud_server_type" {
name = "hcloud_server_type"
display_name = "Hetzner Server Type"
description = "Select the Hetzner Cloud server type for your workspace."
type = "string"
dynamic "option" {
for_each = local.hcloud_server_type_options_for_selected_location
content {
name = option.value.name
value = option.value.value
}
}
}
resource "hcloud_server" "dev" {
count = data.coder_workspace.me.start_count
name = "coder-${data.coder_workspace.me.name}-dev"
image = "ubuntu-24.04"
server_type = data.coder_parameter.hcloud_server_type.value
location = data.coder_parameter.hcloud_location.value
public_net {
ipv4_enabled = true
ipv6_enabled = true
}
user_data = templatefile("cloud-config.yaml.tftpl", {
username = lower(data.coder_workspace_owner.me.name)
home_volume_label = "coder-${data.coder_workspace.me.id}-home"
volume_id = hcloud_volume.home_volume.id
init_script = base64encode(coder_agent.main.init_script)
coder_agent_token = coder_agent.main.token
})
labels = {
"coder_workspace_name" = data.coder_workspace.me.name,
"coder_workspace_owner" = data.coder_workspace_owner.me.name,
}
}
resource "hcloud_volume" "home_volume" {
name = "coder-${data.coder_workspace.me.id}-home"
size = data.coder_parameter.home_volume_size.value
location = data.coder_parameter.hcloud_location.value
labels = {
"coder_workspace_name" = data.coder_workspace.me.name,
"coder_workspace_owner" = data.coder_workspace_owner.me.name,
}
}
resource "hcloud_volume_attachment" "home_volume_attachment" {
count = data.coder_workspace.me.start_count
volume_id = hcloud_volume.home_volume.id
server_id = hcloud_server.dev[count.index].id
automount = false
}
locals {
username = lower(data.coder_workspace_owner.me.name)
# --------------------
# Locations
# --------------------
hcloud_locations = [
for loc in jsondecode(data.http.hcloud_locations.response_body).locations : {
name = loc.name
city = loc.city
country = loc.country
}
]
# --------------------
# Server Types
# --------------------
hcloud_server_types = {
for st in jsondecode(data.http.hcloud_server_types.response_body).server_types :
st.name => {
cores = st.cores
memory_gb = st.memory
disk_gb = st.disk
architecture = st.architecture
locations = [for l in st.locations : l.name]
deprecated = st.deprecated
}
if st.deprecated == false
}
hcloud_server_type_options_for_selected_location = [
for name, meta in local.hcloud_server_types : {
name = format(
"%s (%d vCPU, %dGB RAM, %dGB)",
upper(name),
meta.cores,
meta.memory_gb,
meta.disk_gb
)
value = name
}
if contains(
meta.locations,
data.coder_parameter.hcloud_location.value
)
]
# Map Hetzner architecture (x86 or arm) to Coder agent architecture (amd64 or arm64)
agent_arch = try(
lookup(
{
"x86" = "amd64"
"arm" = "arm64"
},
local.hcloud_server_types[data.coder_parameter.hcloud_server_type.value].architecture,
"amd64" # Fallback if not returned
),
"amd64" # Fallback for template setup
)
}
data "coder_provisioner" "me" {}
provider "coder" {}
data "coder_workspace" "me" {}
data "coder_workspace_owner" "me" {}
data "coder_parameter" "home_volume_size" {
name = "home_volume_size"
display_name = "Home volume size"
description = "How large would you like your home volume to be (in GB)?"
type = "number"
default = "20"
mutable = false
validation {
min = 1
max = 100 # Adjust the max size as needed
}
}
resource "coder_agent" "main" {
os = "linux"
arch = local.agent_arch
metadata {
key = "cpu"
display_name = "CPU Usage"
interval = 5
timeout = 5
script = "coder stat cpu"
}
metadata {
key = "memory"
display_name = "Memory Usage"
interval = 5
timeout = 5
script = "coder stat mem"
}
metadata {
key = "home"
display_name = "Home Usage"
interval = 600 # every 10 minutes
timeout = 30 # df can take a while on large filesystems
script = "coder stat disk --path /home/${local.username}"
}
}
module "code-server" {
count = data.coder_workspace.me.start_count
source = "registry.coder.com/coder/code-server/coder"
# This ensures that the latest non-breaking version of the module gets downloaded, you can also pin the module version to prevent breaking changes in production.
version = "~> 1.0"
agent_id = coder_agent.main.id
order = 1
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

+16
View File
@@ -0,0 +1,16 @@
---
display_name: "Tao Chen"
bio: "I believe in the power of technology to simplify life. Currently a freelancer, working on ideas that matter."
github: "IamTaoChen"
avatar: "./.images/avatar.png"
support_email: "IamTaoChen@gmail.com"
status: "community"
---
# Tao Chen
## Template
### ssh-linux
Provision an existing Linux system as a workspace by deploying the Coder agent via SSH with this example template.
@@ -0,0 +1,58 @@
---
display_name: Deploy Coder on existing Linux System
description: Provision an existing Linux system as a workspace by deploying the Coder agent via SSH with this example template.
icon: "../../../../.icons/linux.svg"
verified: false
tags: ["linux"]
---
# Deploy Coder on existing Linux system
Provision an existing Linux system as a [Coder workspace](https://coder.com/docs/workspaces) by deploying the Coder agent via SSH with this example template.
## Prerequisites
### Authentication
This template assumes you have SSH access to the target Linux system. You can use either password-based authentication or an SSH private key. Ensure the target system allows SSH connections and has basic utilities like `bash` installed. The user account specified must have sufficient permissions to execute scripts and manage processes in their home directory.
For more details on SSH setup, consult your Linux distribution's documentation or standard SSH guides.
## Architecture
This template deploys the following:
- A Coder agent configured for Linux (amd64 architecture).
- Conditional parameters for SSH authentication (password or key).
- A selection of applications (e.g., VS Code Desktop, VS Code Web, Cursor) that can be enabled via multi-select.
- `null_resource` blocks to handle workspace start/stop:
- On start: Connects via SSH, creates a cache directory, writes and executes the agent's init script in the background, and logs the process ID.
- On stop: Connects via SSH, kills the agent process if running, and removes the cache directory.
- Optional modules for additional apps like `coder-login`, `cursor`, and `vscode-web`, which are provisioned only if selected and when the workspace starts.
This setup does not provision new infrastructure; it remotely deploys and manages the Coder agent on your existing Linux host. Files and configurations in the user's home directory persist across restarts, but the agent is stopped and cleaned up on workspace stop.
### Persistent Agent
The agent is ephemeral by design (started on workspace start, stopped on stop). If you need a persistently running agent, modify the template to remove the stop logic or run the agent manually on the host.
## Security Considerations
Warning: This template stores SSH credentials (password or private key) in the Terraform state file and passes them as environment variables during deployment. In production environments, this can introduce security risks, as the state file contains sensitive information in plain text and may be accessible if not properly secured.
## Usage
1. Create a new workspace in Coder using this template.
2. Fill in the parameters with your Linux system's details.
3. Start the workspace—Coder will connect via SSH and deploy the agent.
4. Access the workspace through the Coder dashboard. Selected apps (e.g., VS Code) will be available.
5. On stop, the agent process is terminated and cleaned up.
## Troubleshooting
- **SSH Connection Issues**: Verify the host, port, username, and credentials. Check firewall rules and SSH server status on the target system. Review the debug log at `~/.coder/<workspace_id>/debug.log` on the remote host.
- **Agent Not Starting**: Inspect the log file at `~/.coder/<workspace_id>/coder.log` on the remote host for errors.
- **App Not Appearing**: Ensure the app is selected in parameters and the workspace is restarted if changes are made.
- **Validation Errors**: Parameters like host and port have built-in validations—ensure inputs match the requirements.
For more advanced customization, refer to the [Coder Terraform provider documentation](https://registry.terraform.io/providers/coder/coder/latest/docs).

Some files were not shown because too many files have changed in this diff Show More