Initial commit: Hold'em engine, bots, and simulation harness

Kotlin Multiplatform engine (JVM target only for now; androidTarget and
iosArm64 slot in without touching commonMain).

Core:
- HandEvaluator: single-pass 5-7 card evaluation, ~24M evals/sec. Verified
  exhaustively against published frequencies for all 2,598,960 five-card hands.
- Equity: Monte Carlo with ties split. PreflopChart ranks the 169 starting
  hands using all-in equity plus an explicit playability adjustment, so
  looseness means "plays the top N%".
- Table: no-limit betting rounds, side pots, odd-chip splits, uncalled-bet
  refunds, and incomplete (short all-in) raises that correctly do not reopen
  betting.

Bots:
- SkillLevel and PlayStyle are orthogonal axes. Skill drives decision quality
  (rollout accuracy, pot-odds discipline, position awareness, error rate);
  style drives bluffing, sandbagging, aggression, tightness.
- BotMood gives tilt that persists between hands and decays.
- OpponentModel lets Advanced/Expert exploit habitual bettors.
- MathBot emits a DecisionTrace of the numbers behind each decision, which the
  coach will later hand to an LLM to narrate. The LLM never does poker maths.

Simulator:
- 2,200-3,400 hands/sec. Deck RNG is separate from bot RNGs so rollout counts
  cannot shift the deal.
- Controlled skill-ladder test asserts the difficulty gradient is monotonic:
  73.9 / 53.9 / 27.6 / -155.4 bb/100 over 50k hands.

Assets: 52 CC0 English-pattern card faces plus generated backs.

Tests: 30 passing (evaluator, table rules, pre-flop chart).

Known open: win-rate magnitudes ~10x realistic and several profiles looser
than their labels. Tuning, not correctness.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Jay
2026-07-25 04:36:03 -04:00
commit 479be1f6b9
82 changed files with 54638 additions and 0 deletions
+29
View File
@@ -0,0 +1,29 @@
# Gradle
.gradle/
build/
!gradle/wrapper/gradle-wrapper.jar
!gradle/wrapper/gradle-wrapper.properties
local.properties
# Android
*.apk
*.aab
*.ap_
*.dex
.cxx/
release/
captures/
# IDE
.idea/
*.iml
*.ipr
*.iws
.kotlin/
# macOS
.DS_Store
# Logs / temp
*.log
*.hprof
+68
View File
@@ -0,0 +1,68 @@
# Poker — Texas Hold'em with teachable AI opponents
Kotlin Multiplatform. Ships iOS + Android; Android first (only Android hardware
for physical testing).
## Build
No `java`/`gradle` on PATH — use Android Studio's bundled JDK:
```bash
export JAVA_HOME="/Applications/Android Studio.app/Contents/jbr/Contents/Home"
./gradlew :engine:jvmTest # evaluator + engine tests
./gradlew :sim:run --args="50000" # simulate 50k hands, print bot stats
```
## Layout
| Path | What |
|---|---|
| `engine/src/commonMain/.../core/` | Cards, evaluator, equity, pre-flop chart |
| `engine/src/commonMain/.../bot/` | Skill/style profiles, `MathBot` |
| `engine/src/commonMain/.../game/` | `Table` — betting rounds, side pots, showdown |
| `sim/` | JVM-only headless simulator used to **tune** bot profiles |
| `assets/cards/` | 52 CC0 card faces + generated backs |
`engine` is pure Kotlin with no platform APIs, so `androidTarget()` /
`iosArm64()` slot in without touching `commonMain`.
## Design rules
1. **Poker maths never goes near the LLM.** Difficulty and style are engine-side
EV/frequency calculations — instant, deterministic, testable, offline. The LLM
only narrates numbers the engine already computed (`DecisionTrace`), and adds
persona/table talk.
2. **Skill and style are orthogonal.** `SkillLevel` = how correct decisions are;
`PlayStyle` = bluffing, sandbagging, aggression, tightness. Build the strongest
bot, then inject *controlled error* for lower tiers.
3. **Pre-flop is range-based, not equity-based.** All-in equity overvalues trash
(7-2o has ~35% vs one random hand but is unplayable). `PreflopChart` ranks the
169 starting hands so `looseness` means "plays the top N%".
4. **The simulator is how bots get tuned.** Run it after any bot change; it prints
a controlled skill-ladder test that must stay monotonic.
## Testing notes
- `Table` takes a `CardSource`, so `StackedDeck.of(holes, board)` gives fully
deterministic hands. Use it for any rule test.
- The simulator gives the **deck its own RNG**, separate from each bot's. Never
share one: bots consume RNG proportional to their `equityIterations`, so a
shared stream means changing a profile silently changes the cards dealt.
- `./gradlew :sim:run --args="chart"` dumps the starting-hand ranking.
- Small samples lie. 1,000 hands is not enough to rank profiles — use 50,000+
before believing a gradient.
## Status
- Evaluator: verified exhaustively against published frequencies for all
2,598,960 five-card hands. ~24M evals/sec.
- Engine: chip-conserving; side pots, odd-chip splits, uncalled-bet refunds, and
incomplete (short all-in) raises all covered by tests.
- Bots: skill gradient **passes** monotonically (73.9 / 53.9 / 27.6 / 155.4
bb/100 at 50k hands).
- Known-imperfect: win-rate magnitudes are still ~10x realistic, and several
profiles are looser than their labels (the Rock plays ~38% VPIP, should be
~12%). Tuning is the open work.
- Gradle emits an `archives` deprecation from the Kotlin Multiplatform plugin's
own `jvm()` target registration — upstream in Kotlin 2.2.10, not our build.
- Not built yet: LLM persona layer, opt-in coach, Compose UI.
+147
View File
@@ -0,0 +1,147 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-1-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-08" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-0-8" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27291)"
id="g3106">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<g
transform="translate(5,22.36218)"
id="g3076"
style="fill:#000000;fill-opacity:1">
<path
d="m 10,80 -5,7 0,7 5,-7 0,43 5,0 0,-50 -5,0 z"
transform="translate(0,440)"
id="rect3156-5-0"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 30,520.00002 c -5.54,0 -10,4.46 -10,10 l 0,30 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-30 c 0,-5.54 -4.46,-10 -10,-10 z m 0,5 c 2.77,0 5,2.23 5,5 l 0,30 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-30 c 0,-2.77 2.23,-5 5,-5 z"
id="rect3158-7-9"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
<g
transform="matrix(-1,0,0,-1,355,1542.3622)"
id="g3076-0"
style="fill:#000000;fill-opacity:1">
<path
d="m 10,80 -5,7 0,7 5,-7 0,43 5,0 0,-50 -5,0 z"
transform="translate(0,440)"
id="rect3156-5-0-9"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 30,520.00002 c -5.54,0 -10,4.46 -10,10 l 0,30 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-30 c 0,-5.54 -4.46,-10 -10,-10 z m 0,5 c 2.77,0 5,2.23 5,5 l 0,30 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-30 c 0,-2.77 2.23,-5 5,-5 z"
id="rect3158-7-9-4"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
<path
d="m 32.5,630.36218 c 1,2 3.5,5 6,5 4.5,0 6.5,-4 6.5,-9 0,-5 -2,-9.5 -6.5,-9.5 -2.5,0 -4,2.5 -5.5,4 -0.5,0.5 -1,0 -0.5,-0.5 1.5,-1.5 4,-5.5 4,-9 0,-4 -2.5,-9 -6.5,-9 -4,0 -6.5,5 -6.5,9 0,3.5 2.5,7.5 4,9 0.5,0.5 0,1 -0.5,0.5 -1.5,-1.5 -3,-4 -5.5,-4 -4.5,0 -6.5,4.5 -6.5,9.5 0,5 2,9 6.5,9 2.5,0 5,-3 6,-5 0.5,-0.5 0.5,0 0.5,0.5 -0.5,4 -0.5,5 -1,8 -0.5,3 -2,8.5 -2,8.5 2.5,-1 7.5,-1 10,0 0,0 -1.5,-5.5 -2,-8.5 -0.5,-3 -0.5,-4 -1,-8 0,-0.5 0,-1 0.5,-0.5 z"
id="path3037-1"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 332.5,934.36218 c 1,-2 3.5,-5 6,-5 4.5,0 6.5,4 6.5,9 0,5 -2,9.5 -6.5,9.5 -2.5,0 -4,-2.5 -5.5,-4 -0.5,-0.5 -1,0 -0.5,0.5 1.5,1.5 4,5.5 4,9 0,4 -2.5,9 -6.5,9 -4,0 -6.5,-5 -6.5,-9 0,-3.5 2.5,-7.5 4,-9 0.5,-0.5 0,-1 -0.5,-0.5 -1.5,1.5 -3,4 -5.5,4 -4.5,0 -6.5,-4.5 -6.5,-9.5 0,-5 2,-9 6.5,-9 2.5,0 5,3 6,5 0.5,0.5 0.5,0 0.5,-0.5 -0.5,-4 -0.5,-5 -1,-8 -0.5,-3 -2,-8.5 -2,-8.5 2.5,1 7.5,1 10,0 0,0 -1.5,5.5 -2,8.5 -0.5,3 -0.5,4 -1,8 0,0.5 0,1 0.5,0.5 z"
id="path3037-1-1"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,613.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,613.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,673.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-4"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,733.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-0"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,733.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-9"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,831.36218 c 2,-4 7,-10 12,-10 9,0 13,8 13,18 0,10 -4,19 -13,19 -5,0 -8,-5 -11,-8 -1,-1 -2,0 -1,1 3,3 8,11 8,18 0,8 -5,18 -13,18 -8,0 -13,-10 -13,-18 0,-7 5,-15 8,-18 1,-1 0,-2 -1,-1 -3,3 -6,8 -11,8 -9,0 -13,-9 -13,-19 0,-10 4,-18 13,-18 5,0 10,6 12,10 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17 -4,-17 5,2 15,2 20,0 0,0 -3,11 -4,17 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-488"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,831.36218 c 2,-4 7,-10 12,-10 9,0 13,8 13,18 0,10 -4,19 -13,19 -5,0 -8,-5 -11,-8 -1,-1 -2,0 -1,1 3,3 8,11 8,18 0,8 -5,18 -13,18 -8,0 -13,-10 -13,-18 0,-7 5,-15 8,-18 1,-1 0,-2 -1,-1 -3,3 -6,8 -11,8 -9,0 -13,-9 -13,-19 0,-10 4,-18 13,-18 5,0 10,6 12,10 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17 -4,-17 5,2 15,2 20,0 0,0 -3,11 -4,17 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-2"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,891.36218 c 2,-4 7,-10 12,-10 9,0 13,8 13,18 0,10 -4,19 -13,19 -5,0 -8,-5 -11,-8 -1,-1 -2,0 -1,1 3,3 8,11 8,18 0,8 -5,18 -13,18 -8,0 -13,-10 -13,-18 0,-7 5,-15 8,-18 1,-1 0,-2 -1,-1 -3,3 -6,8 -11,8 -9,0 -13,-9 -13,-19 0,-10 4,-18 13,-18 5,0 10,6 12,10 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17 -4,-17 5,2 15,2 20,0 0,0 -3,11 -4,17 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-45"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,951.3622 c 2,-4 7,-10 12,-10 9,0 13,8 13,18 0,10 -4,19 -13,19 -5,0 -8,-5 -11,-8 -1,-1 -2,0 -1,1 3,3 8,11 8,18 0,8 -5,18 -13,18 -8,0 -13,-10 -13,-18 0,-7 5,-15 8,-18 1,-1 0,-2 -1,-1 -3,3 -6,8 -11,8 -9,0 -13,-9 -13,-19 0,-10 4,-18 13,-18 5,0 10,6 12,10 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-5"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,951.3622 c 2,-4 7,-10 12,-10 9,0 13,8 13,18 0,10 -4,19 -13,19 -5,0 -8,-5 -11,-8 -1,-1 -2,0 -1,1 3,3 8,11 8,18 0,8 -5,18 -13,18 -8,0 -13,-10 -13,-18 0,-7 5,-15 8,-18 1,-1 0,-2 -1,-1 -3,3 -6,8 -11,8 -9,0 -13,-9 -13,-19 0,-10 4,-18 13,-18 5,0 10,6 12,10 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-17"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.1 KiB

+141
View File
@@ -0,0 +1,141 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-1-8" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3106-7">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-6"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<g
transform="translate(5,22.36218)"
id="g3076-14"
style="fill:#ff5555">
<path
d="m 10,80 -5,7 0,7 5,-7 0,43 5,0 0,-50 -5,0 z"
transform="translate(0,440)"
id="rect3156-5-0-2"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 30,520.00002 c -5.54,0 -10,4.46 -10,10 l 0,30 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-30 c 0,-5.54 -4.46,-10 -10,-10 z m 0,5 c 2.77,0 5,2.23 5,5 l 0,30 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-30 c 0,-2.77 2.23,-5 5,-5 z"
id="rect3158-7-9-3"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
</g>
<g
transform="matrix(-1,0,0,-1,355,1542.3622)"
id="g3076-0-2"
style="fill:#ff5555">
<path
d="m 10,80 -5,7 0,7 5,-7 0,43 5,0 0,-50 -5,0 z"
transform="translate(0,440)"
id="rect3156-5-0-9-2"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 30,520.00002 c -5.54,0 -10,4.46 -10,10 l 0,30 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-30 c 0,-5.54 -4.46,-10 -10,-10 z m 0,5 c 2.77,0 5,2.23 5,5 l 0,30 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-30 c 0,-2.77 2.23,-5 5,-5 z"
id="rect3158-7-9-4-1"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
</g>
<path
d="m 90,557.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-1"
style="fill:#ff5555;stroke:none" />
<path
d="m 270,557.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-7"
style="fill:#ff5555;stroke:none" />
<path
d="m 180,617.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-4"
style="fill:#ff5555;stroke:none" />
<path
d="m 90,677.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24"
style="fill:#ff5555;stroke:none" />
<path
d="m 270,677.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-0"
style="fill:#ff5555;stroke:none" />
<path
d="m 90,797.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-9"
style="fill:#ff5555;stroke:none" />
<path
d="m 270,797.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-48"
style="fill:#ff5555;stroke:none" />
<path
d="m 180,857.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-8"
style="fill:#ff5555;stroke:none" />
<path
d="m 90,917.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25.00002 -13,25.00002 0,0 -6,-15.00002 -13,-25.00002 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-2"
style="fill:#ff5555;stroke:none" />
<path
d="m 270,917.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25.00002 -13,25.00002 0,0 -6,-15.00002 -13,-25.00002 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-45"
style="fill:#ff5555;stroke:none" />
<path
d="m 30,602.36218 c 0,0 3,7.5 6.5,12.5 3.5,5 8.5,10 8.5,10 0,0 -5,5 -8.5,10 -3.5,5 -6.5,12.5 -6.5,12.5 0,0 -3,-7.5 -6.5,-12.5 -3.5,-5 -8.5,-10 -8.5,-10 0,0 5,-5 8.5,-10 3.5,-5 6.5,-12.5 6.5,-12.5"
id="path3204-24-1-5"
style="fill:#ff5555;stroke:none" />
<path
d="m 330,917.36218 c 0,0 3,7.5 6.5,12.5 3.5,5 8.5,10 8.5,10 0,0 -5,5 -8.5,10 -3.5,5 -6.5,12.5 -6.5,12.5 0,0 -3,-7.5 -6.5,-12.5 -3.5,-5 -8.5,-10 -8.5,-10 0,0 5,-5 8.5,-10 3.5,-5 6.5,-12.5 6.5,-12.5"
id="path3204-24-1-1"
style="fill:#ff5555;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.3 KiB

+135
View File
@@ -0,0 +1,135 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3113-5">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-5"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<g
transform="translate(5,22.36218)"
id="g3076-1"
style="fill:#ff5555">
<path
d="m 10,80 -5,7 0,7 5,-7 0,43 5,0 0,-50 -5,0 z"
transform="translate(0,440)"
id="rect3156-5-0-7"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 30,520.00002 c -5.54,0 -10,4.46 -10,10 l 0,30 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-30 c 0,-5.54 -4.46,-10 -10,-10 z m 0,5 c 2.77,0 5,2.23 5,5 l 0,30 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-30 c 0,-2.77 2.23,-5 5,-5 z"
id="rect3158-7-9-1"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
</g>
<g
transform="matrix(-1,0,0,-1,355,1542.3622)"
id="g3076-0-1"
style="fill:#ff5555">
<path
d="m 10,80 -5,7 0,7 5,-7 0,43 5,0 0,-50 -5,0 z"
transform="translate(0,440)"
id="rect3156-5-0-9-5"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 30,520.00002 c -5.54,0 -10,4.46 -10,10 l 0,30 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-30 c 0,-5.54 -4.46,-10 -10,-10 z m 0,5 c 2.77,0 5,2.23 5,5 l 0,30 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-30 c 0,-2.77 2.23,-5 5,-5 z"
id="rect3158-7-9-4-2"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
</g>
<path
d="m 29.5,611.36218 c 0,-5.52285 -2.857865,-9 -7,-9 -4.142135,0 -7.5,4.47715 -7.5,10 0.01745,0.4778 0.0091,0.94559 0,1.40625 0,3.64924 1.338425,7.18842 2.5,10.5 1.194515,3.40548 2.916785,6.39034 4.53125,9.4375 2.500615,4.7197 7.96875,13.65625 7.96875,13.65625 0,0 5.468135,-8.93655 7.96875,-13.65625 1.614465,-3.04716 3.336735,-6.03202 4.53125,-9.4375 1.161575,-3.31158 2.5,-6.85076 2.5,-10.5 -0.0142,-0.4872 -0.0093,-0.95731 0,-1.40625 0,-5.52285 -3.357865,-10 -7.5,-10 -4.142135,0 -7,3.47715 -7,9 0,1 -1,1 -1,0 z"
id="path3126-1-7"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 329.5,953.36218 c 0,5.52285 -2.85787,9 -7,9 -4.14214,0 -7.5,-4.47715 -7.5,-10 0.0174,-0.4778 0.009,-0.94559 0,-1.40625 0,-3.64924 1.33842,-7.18842 2.5,-10.5 1.19452,-3.40548 2.91678,-6.39034 4.53125,-9.4375 2.50061,-4.7197 7.96875,-13.65625 7.96875,-13.65625 0,0 5.46814,8.93655 7.96875,13.65625 1.61446,3.04716 3.33673,6.03202 4.53125,9.4375 1.16157,3.31158 2.5,6.85076 2.5,10.5 -0.0142,0.4872 -0.009,0.95731 0,1.40625 0,5.52285 -3.35787,10 -7.5,10 -4.14214,0 -7,-3.47715 -7,-9 0,-1 -1,-1 -1,0 z"
id="path3126-1-4"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 89,575.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 269,575.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-09"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 179,635.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-48"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 89,695.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-82"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 269,695.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-455"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 89,869.36218 c 0,11.04569 -5.71573,18 -14,18 -8.28427,0 -15,-8.95431 -15,-20 0.0349,-0.95559 0.0182,-1.89119 0,-2.8125 0,-7.29848 2.67685,-14.37684 5,-21 2.38903,-6.81096 5.83357,-12.78067 9.0625,-18.875 C 79.06373,815.23528 90,797.36218 90,797.36218 c 0,0 10.93627,17.8731 15.9375,27.3125 3.22893,6.09433 6.67347,12.06404 9.0625,18.875 2.32315,6.62316 5,13.70152 5,21 -0.0284,0.9744 -0.0186,1.91462 0,2.8125 0,11.04569 -6.71573,20 -15,20 -8.28427,0 -14,-6.95431 -14,-18 0,-2 -2,-2 -2,0 z"
id="path3126-1"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 269,869.36218 c 0,11.04569 -5.71573,18 -14,18 -8.28427,0 -15,-8.95431 -15,-20 0.0349,-0.95559 0.0182,-1.89119 0,-2.8125 0,-7.29848 2.67685,-14.37684 5,-21 2.38903,-6.81096 5.83357,-12.78067 9.0625,-18.875 5.00123,-9.4394 15.9375,-27.3125 15.9375,-27.3125 0,0 10.93627,17.8731 15.9375,27.3125 3.22893,6.09433 6.67347,12.06404 9.0625,18.875 2.32315,6.62316 5,13.70152 5,21 -0.0284,0.9744 -0.0186,1.91462 0,2.8125 0,11.04569 -6.71573,20 -15,20 -8.28427,0 -14,-6.95431 -14,-18 0,-2 -2,-2 -2,0 z"
id="path3126-71"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 179,929.36218 c 0,11.04569 -5.71573,18 -14,18 -8.28427,0 -15,-8.95431 -15,-20 0.0349,-0.95559 0.0182,-1.89119 0,-2.8125 0,-7.29848 2.67685,-14.37684 5,-21 2.38903,-6.81096 5.83357,-12.78067 9.0625,-18.875 5.00123,-9.4394 15.9375,-27.3125 15.9375,-27.3125 0,0 10.93627,17.8731 15.9375,27.3125 3.22893,6.09433 6.67347,12.06404 9.0625,18.875 2.32315,6.62316 5,13.70152 5,21 -0.0284,0.9744 -0.0186,1.91462 0,2.8125 0,11.04569 -6.71573,20 -15,20 -8.28427,0 -14,-6.95431 -14,-18 0,-2 -2,-2 -2,0 z"
id="path3126-15"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 89,989.3622 c 0,11.0457 -5.71573,18 -14,18 -8.28427,0 -15,-8.95431 -15,-20 0.0349,-0.95559 0.0182,-1.89119 0,-2.8125 0,-7.29848 2.67685,-14.37684 5,-21 2.38903,-6.81096 5.83357,-12.78067 9.0625,-18.875 C 79.06373,935.2353 90,917.36218 90,917.36218 c 0,0 10.93627,17.87312 15.9375,27.31252 3.22893,6.09433 6.67347,12.06404 9.0625,18.875 2.32315,6.62316 5,13.70152 5,21 -0.0284,0.9744 -0.0186,1.91462 0,2.8125 0,11.04569 -6.71573,20 -15,20 -8.28427,0 -14,-6.9543 -14,-18 0,-2 -2,-2 -2,0 z"
id="path3126-27"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 269,989.3622 c 0,11.0457 -5.71573,18 -14,18 -8.28427,0 -15,-8.95431 -15,-20 0.0349,-0.95559 0.0182,-1.89119 0,-2.8125 0,-7.29848 2.67685,-14.37684 5,-21 2.38903,-6.81096 5.83357,-12.78067 9.0625,-18.875 C 259.06373,935.2353 270,917.36218 270,917.36218 c 0,0 10.93627,17.87312 15.9375,27.31252 3.22893,6.09433 6.67347,12.06404 9.0625,18.875 2.32315,6.62316 5,13.70152 5,21 -0.0284,0.9744 -0.0186,1.91462 0,2.8125 0,11.04569 -6.71573,20 -15,20 -8.28427,0 -14,-6.9543 -14,-18 0,-2 -2,-2 -2,0 z"
id="path3126-6"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 10 KiB

+121
View File
@@ -0,0 +1,121 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300" />
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3113">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-1"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<g
transform="translate(5,22.36218)"
id="g3076-7"
style="fill:#000000;fill-opacity:1">
<path
d="m 10,80 -5,7 0,7 5,-7 0,43 5,0 0,-50 -5,0 z"
transform="translate(0,440)"
id="rect3156-5-0-4"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 30,520.00002 c -5.54,0 -10,4.46 -10,10 l 0,30 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-30 c 0,-5.54 -4.46,-10 -10,-10 z m 0,5 c 2.77,0 5,2.23 5,5 l 0,30 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-30 c 0,-2.77 2.23,-5 5,-5 z"
id="rect3158-7-9-0"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
<g
transform="matrix(-1,0,0,-1,355,1542.3622)"
id="g3076-0-9"
style="fill:#000000;fill-opacity:1">
<path
d="m 10,80 -5,7 0,7 5,-7 0,43 5,0 0,-50 -5,0 z"
transform="translate(0,440)"
id="rect3156-5-0-9-4"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 30,520.00002 c -5.54,0 -10,4.46 -10,10 l 0,30 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-30 c 0,-5.54 -4.46,-10 -10,-10 z m 0,5 c 2.77,0 5,2.23 5,5 l 0,30 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-30 c 0,-2.77 2.23,-5 5,-5 z"
id="rect3158-7-9-4-8"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
<path
d="m 32.5,630.36218 c 0.5,2 2.5,7 6,7 4.5,0 6.5,-4 6.5,-9 0,-3.5 -1.289475,-5.80614 -2.5,-8.5 -1.28894,-2.86836 -3.18966,-5.4287 -5,-8 -2.32265,-3.29895 -7.5,-9.5 -7.5,-9.5 0,0 -5.17735,6.20105 -7.5,9.5 -1.81034,2.5713 -3.71106,5.13164 -5,8 -1.210525,2.69386 -2.5,5 -2.5,8.5 0,5 2,9 6.5,9 3.5,0 5.5,-5 6,-7 0.5,-0.5 0.5,0 0.5,0.5 -0.5,4 -0.5,5 -1,8 -0.5,3 -2,8.5 -2,8.5 2.5,-1 7.5,-1 10,0 0,0 -1.5,-5.5 -2,-8.5 -0.5,-3 -0.5,-4 -1,-8 0,-0.5 0,-1 0.5,-0.5 z"
id="path3037-7-4-7"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 332.5,934.36218 c 0.5,-2 2.5,-7 6,-7 4.5,0 6.5,4 6.5,9 0,3.5 -1.28947,5.80614 -2.5,8.5 -1.28894,2.86836 -3.18966,5.4287 -5,8 -2.32265,3.29895 -7.5,9.5 -7.5,9.5 0,0 -5.17735,-6.20105 -7.5,-9.5 -1.81034,-2.5713 -3.71106,-5.13164 -5,-8 -1.21053,-2.69386 -2.5,-5 -2.5,-8.5 0,-5 2,-9 6.5,-9 3.5,0 5.5,5 6,7 0.5,0.5 0.5,0 0.5,-0.5 -0.5,-4 -0.5,-5 -1,-8 -0.5,-3 -2,-8.5 -2,-8.5 2.5,1 7.5,1 10,0 0,0 -1.5,5.5 -2,8.5 -0.5,3 -0.5,4 -1,8 0,0.5 0,1 0.5,0.5 z"
id="path3037-7-4-4"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,613.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-824"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,613.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-09"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,673.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-4"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,733.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-8"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,733.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-82"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,831.36218 c 1,-4 5,-14 12,-14 9,0 13,8 13,18 0,7 -2.57895,11.61229 -5,17 -2.57788,5.73673 -6.37932,10.85741 -10,16 -4.6453,6.5979 -15,19 -15,19 0,0 -10.3547,-12.4021 -15,-19 -3.62068,-5.14259 -7.42212,-10.26327 -10,-16 -2.42105,-5.38771 -5,-10 -5,-17 0,-10 4,-18 13,-18 7,0 11,10 12,14 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17 -4,-17 5,2 15,2 20,0 0,0 -3,11 -4,17 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-7-45"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,831.36218 c 1,-4 5,-14 12,-14 9,0 13,8 13,18 0,7 -2.57895,11.61229 -5,17 -2.57788,5.73673 -6.37932,10.85741 -10,16 -4.6453,6.5979 -15,19 -15,19 0,0 -10.3547,-12.4021 -15,-19 -3.62068,-5.14259 -7.42212,-10.26327 -10,-16 -2.42105,-5.38771 -5,-10 -5,-17 0,-10 4,-18 13,-18 7,0 11,10 12,14 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17 -4,-17 5,2 15,2 20,0 0,0 -3,11 -4,17 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-7-5"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,891.36218 c 1,-4 5,-14 12,-14 9,0 13,8 13,18 0,7 -2.57895,11.61229 -5,17 -2.57788,5.73673 -6.37932,10.85741 -10,16 -4.6453,6.5979 -15,19 -15,19 0,0 -10.3547,-12.4021 -15,-19 -3.62068,-5.14259 -7.42212,-10.26327 -10,-16 -2.42105,-5.38771 -5,-10 -5,-17 0,-10 4,-18 13,-18 7,0 11,10 12,14 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17 -4,-17 5,2 15,2 20,0 0,0 -3,11 -4,17 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-7-1"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,951.3622 c 1,-4 5,-14 12,-14 9,0 13,8 13,18 0,7 -2.57895,11.61229 -5,17 -2.57788,5.73673 -6.37932,10.85741 -10,16 -4.6453,6.5979 -15,19 -15,19 0,0 -10.3547,-12.4021 -15,-19 -3.62068,-5.14259 -7.42212,-10.26327 -10,-16 -2.42105,-5.38771 -5,-10 -5,-17 0,-10 4,-18 13,-18 7,0 11,10 12,14 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-7-7"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,951.3622 c 1,-4 5,-14 12,-14 9,0 13,8 13,18 0,7 -2.57895,11.61229 -5,17 -2.57788,5.73673 -6.37932,10.85741 -10,16 -4.6453,6.5979 -15,19 -15,19 0,0 -10.3547,-12.4021 -15,-19 -3.62068,-5.14259 -7.42212,-10.26327 -10,-16 -2.42105,-5.38771 -5,-10 -5,-17 0,-10 4,-18 13,-18 7,0 11,10 12,14 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-7-11"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.7 KiB

+95
View File
@@ -0,0 +1,95 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-1-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-08" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-0-8" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27291)"
id="g3026">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-82"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,542.36208 c -5.54,0 -10,4.46 -10,10 l 0,5 5,0 0,-5 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,5 c 0,1.1275 -0.37508,3.0654 -1,3.9 -4.46327,9.10415 -9.27824,17.12865 -14,26.1 l 0,5 10,0 10,0 0,-5 0,-5 -5,0 0,5 -5,0 -4.5,0 c 4.48873,-7.91544 8.21831,-15.57184 12.5,-23.6 1.25012,-1.6693 2,-4.1448 2,-6.4 l 0,-5 c 0,-5.54 -4.46,-10 -10,-10 z"
id="rect3163-52-9-8-1-38-1"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 330,1022.3622 c 5.54,0 10,-4.46 10,-10 l 0,-5 -5,0 0,5 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-5 c 0,-1.1275 0.37508,-3.0654 1,-3.9 4.46327,-9.10414 9.27824,-17.12864 14,-26.10004 l 0,-5 -10,0 -10,0 0,5 0,5 5,0 0,-5 5,0 4.5,0 c -4.48873,7.9155 -8.21831,15.5719 -12.5,23.60004 -1.25012,1.6693 -2,4.1448 -2,6.4 l 0,5 c 0,5.54 4.46,10 10,10 z"
id="rect3163-52-9-8-1-38-8-6"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 32.5,630.36218 c 1,2 3.5,5 6,5 4.5,0 6.5,-4 6.5,-9 0,-5 -2,-9.5 -6.5,-9.5 -2.5,0 -4,2.5 -5.5,4 -0.5,0.5 -1,0 -0.5,-0.5 1.5,-1.5 4,-5.5 4,-9 0,-4 -2.5,-9 -6.5,-9 -4,0 -6.5,5 -6.5,9 0,3.5 2.5,7.5 4,9 0.5,0.5 0,1 -0.5,0.5 -1.5,-1.5 -3,-4 -5.5,-4 -4.5,0 -6.5,4.5 -6.5,9.5 0,5 2,9 6.5,9 2.5,0 5,-3 6,-5 0.5,-0.5 0.5,0 0.5,0.5 -0.5,4 -0.5,5 -1,8 -0.5,3 -2,8.5 -2,8.5 2.5,-1 7.5,-1 10,0 0,0 -1.5,-5.5 -2,-8.5 -0.5,-3 -0.5,-4 -1,-8 0,-0.5 0,-1 0.5,-0.5 z"
id="path3037-1-83"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 332.5,934.36218 c 1,-2 3.5,-5 6,-5 4.5,0 6.5,4 6.5,9 0,5 -2,9.5 -6.5,9.5 -2.5,0 -4,-2.5 -5.5,-4 -0.5,-0.5 -1,0 -0.5,0.5 1.5,1.5 4,5.5 4,9 0,4 -2.5,9 -6.5,9 -4,0 -6.5,-5 -6.5,-9 0,-3.5 2.5,-7.5 4,-9 0.5,-0.5 0,-1 -0.5,-0.5 -1.5,1.5 -3,4 -5.5,4 -4.5,0 -6.5,-4.5 -6.5,-9.5 0,-5 2,-9 6.5,-9 2.5,0 5,3 6,5 0.5,0.5 0.5,0 0.5,-0.5 -0.5,-4 -0.5,-5 -1,-8 -0.5,-3 -2,-8.5 -2,-8.5 2.5,1 7.5,1 10,0 0,0 -1.5,5.5 -2,8.5 -0.5,3 -0.5,4 -1,8 0,0.5 0,1 0.5,0.5 z"
id="path3037-1-1-14"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,613.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-84"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,951.3622 c 2,-4 7,-10 12,-10 9,0 13,8 13,18 0,10 -4,19 -13,19 -5,0 -8,-5 -11,-8 -1,-1 -2,0 -1,1 3,3 8,11 8,18 0,8 -5,18 -13,18 -8,0 -13,-10 -13,-18 0,-7 5,-15 8,-18 1,-1 0,-2 -1,-1 -3,3 -6,8 -11,8 -9,0 -13,-9 -13,-19 0,-10 4,-18 13,-18 5,0 10,6 12,10 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-7-92"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

+89
View File
@@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-1-8" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3026-1">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-17"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,542.36208 c -5.54,0 -10,4.46 -10,10 l 0,5 5,0 0,-5 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,5 c 0,1.1275 -0.37508,3.0654 -1,3.9 -4.46327,9.10415 -9.27824,17.12865 -14,26.1 l 0,5 10,0 10,0 0,-5 0,-5 -5,0 0,5 -5,0 -4.5,0 c 4.48873,-7.91544 8.21831,-15.57184 12.5,-23.6 1.25012,-1.6693 2,-4.1448 2,-6.4 l 0,-5 c 0,-5.54 -4.46,-10 -10,-10 z"
id="rect3163-52-9-8-1-38-3"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 330,1022.3622 c 5.54,0 10,-4.46 10,-10 l 0,-5 -5,0 0,5 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-5 c 0,-1.1275 0.37508,-3.0654 1,-3.9 4.46327,-9.10414 9.27824,-17.12864 14,-26.10004 l 0,-5 -10,0 -10,0 0,5 0,5 5,0 0,-5 5,0 4.5,0 c -4.48873,7.9155 -8.21831,15.5719 -12.5,23.60004 -1.25012,1.6693 -2,4.1448 -2,6.4 l 0,5 c 0,5.54 4.46,10 10,10 z"
id="rect3163-52-9-8-1-38-8-0"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 180,557.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-04"
style="fill:#ff5555;stroke:none" />
<path
d="m 180,917.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25.00002 -13,25.00002 0,0 -6,-15.00002 -13,-25.00002 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-1-83"
style="fill:#ff5555;stroke:none" />
<path
d="m 30,602.36218 c 0,0 3,7.5 6.5,12.5 3.5,5 8.5,10 8.5,10 0,0 -5,5 -8.5,10 -3.5,5 -6.5,12.5 -6.5,12.5 0,0 -3,-7.5 -6.5,-12.5 -3.5,-5 -8.5,-10 -8.5,-10 0,0 5,-5 8.5,-10 3.5,-5 6.5,-12.5 6.5,-12.5"
id="path3204-24-1-7-0"
style="fill:#ff5555;stroke:none" />
<path
d="m 330,917.36218 c 0,0 3,7.5 6.5,12.5 3.5,5 8.5,10 8.5,10 0,0 -5,5 -8.5,10 -3.5,5 -6.5,12.5 -6.5,12.5 0,0 -3,-7.5 -6.5,-12.5 -3.5,-5 -8.5,-10 -8.5,-10 0,0 5,-5 8.5,-10 3.5,-5 6.5,-12.5 6.5,-12.5"
id="path3204-24-1-4-1"
style="fill:#ff5555;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

+83
View File
@@ -0,0 +1,83 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3026-3">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-67"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,542.36208 c -5.54,0 -10,4.46 -10,10 l 0,5 5,0 0,-5 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,5 c 0,1.1275 -0.37508,3.0654 -1,3.9 -4.46327,9.10415 -9.27824,17.12865 -14,26.1 l 0,5 10,0 10,0 0,-5 0,-5 -5,0 0,5 -5,0 -4.5,0 c 4.48873,-7.91544 8.21831,-15.57184 12.5,-23.6 1.25012,-1.6693 2,-4.1448 2,-6.4 l 0,-5 c 0,-5.54 -4.46,-10 -10,-10 z"
id="rect3163-52-9-8-1-38-15"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 330,1022.3622 c 5.54,0 10,-4.46 10,-10 l 0,-5 -5,0 0,5 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-5 c 0,-1.1275 0.37508,-3.0654 1,-3.9 4.46327,-9.10414 9.27824,-17.12864 14,-26.10004 l 0,-5 -10,0 -10,0 0,5 0,5 5,0 0,-5 5,0 4.5,0 c -4.48873,7.9155 -8.21831,15.5719 -12.5,23.60004 -1.25012,1.6693 -2,4.1448 -2,6.4 l 0,5 c 0,5.54 4.46,10 10,10 z"
id="rect3163-52-9-8-1-38-8-5"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 29.5,611.36218 c 0,-5.52285 -2.857865,-9 -7,-9 -4.142135,0 -7.5,4.47715 -7.5,10 0.01745,0.4778 0.0091,0.94559 0,1.40625 0,3.64924 1.338425,7.18842 2.5,10.5 1.194515,3.40548 2.916785,6.39034 4.53125,9.4375 2.500615,4.7197 7.96875,13.65625 7.96875,13.65625 0,0 5.468135,-8.93655 7.96875,-13.65625 1.614465,-3.04716 3.336735,-6.03202 4.53125,-9.4375 1.161575,-3.31158 2.5,-6.85076 2.5,-10.5 -0.0142,-0.4872 -0.0093,-0.95731 0,-1.40625 0,-5.52285 -3.357865,-10 -7.5,-10 -4.142135,0 -7,3.47715 -7,9 0,1 -1,1 -1,0 z"
id="path3126-1-40"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 329.5,953.36218 c 0,5.52285 -2.85787,9 -7,9 -4.14214,0 -7.5,-4.47715 -7.5,-10 0.0174,-0.4778 0.009,-0.94559 0,-1.40625 0,-3.64924 1.33842,-7.18842 2.5,-10.5 1.19452,-3.40548 2.91678,-6.39034 4.53125,-9.4375 2.50061,-4.7197 7.96875,-13.65625 7.96875,-13.65625 0,0 5.46814,8.93655 7.96875,13.65625 1.61446,3.04716 3.33673,6.03202 4.53125,9.4375 1.16157,3.31158 2.5,6.85076 2.5,10.5 -0.0142,0.4872 -0.009,0.95731 0,1.40625 0,5.52285 -3.35787,10 -7.5,10 -4.14214,0 -7,-3.47715 -7,-9 0,-1 -1,-1 -1,0 z"
id="path3126-1-1-2"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 179,575.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-60"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 179,989.3622 c 0,11.0457 -5.71573,18 -14,18 -8.28427,0 -15,-8.95431 -15,-20 0.0349,-0.95559 0.0182,-1.89119 0,-2.8125 0,-7.29848 2.67685,-14.37684 5,-21 2.38903,-6.81096 5.83357,-12.78067 9.0625,-18.875 C 169.06373,935.2353 180,917.36218 180,917.36218 c 0,0 10.93627,17.87312 15.9375,27.31252 3.22893,6.09433 6.67347,12.06404 9.0625,18.875 2.32315,6.62316 5,13.70152 5,21 -0.0284,0.9744 -0.0186,1.91462 0,2.8125 0,11.04569 -6.71573,20 -15,20 -8.28427,0 -14,-6.9543 -14,-18 0,-2 -2,-2 -2,0 z"
id="path3126-7-61"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

+69
View File
@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300" />
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3033">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-07"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,542.36208 c -5.54,0 -10,4.46 -10,10 l 0,5 5,0 0,-5 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,5 c 0,1.1275 -0.37508,3.0654 -1,3.9 -4.46327,9.10415 -9.27824,17.12865 -14,26.1 l 0,5 10,0 10,0 0,-5 0,-5 -5,0 0,5 -5,0 -4.5,0 c 4.48873,-7.91544 8.21831,-15.57184 12.5,-23.6 1.25012,-1.6693 2,-4.1448 2,-6.4 l 0,-5 c 0,-5.54 -4.46,-10 -10,-10 z"
id="rect3163-52-9-8-1-38"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 330,1022.3622 c 5.54,0 10,-4.46 10,-10 l 0,-5 -5,0 0,5 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-5 c 0,-1.1275 0.37508,-3.0654 1,-3.9 4.46327,-9.10414 9.27824,-17.12864 14,-26.10004 l 0,-5 -10,0 -10,0 0,5 0,5 5,0 0,-5 5,0 4.5,0 c -4.48873,7.9155 -8.21831,15.5719 -12.5,23.60004 -1.25012,1.6693 -2,4.1448 -2,6.4 l 0,5 c 0,5.54 4.46,10 10,10 z"
id="rect3163-52-9-8-1-38-8"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 32.5,630.36218 c 0.5,2 2.5,7 6,7 4.5,0 6.5,-4 6.5,-9 0,-3.5 -1.289475,-5.80614 -2.5,-8.5 -1.28894,-2.86836 -3.18966,-5.4287 -5,-8 -2.32265,-3.29895 -7.5,-9.5 -7.5,-9.5 0,0 -5.17735,6.20105 -7.5,9.5 -1.81034,2.5713 -3.71106,5.13164 -5,8 -1.210525,2.69386 -2.5,5 -2.5,8.5 0,5 2,9 6.5,9 3.5,0 5.5,-5 6,-7 0.5,-0.5 0.5,0 0.5,0.5 -0.5,4 -0.5,5 -1,8 -0.5,3 -2,8.5 -2,8.5 2.5,-1 7.5,-1 10,0 0,0 -1.5,-5.5 -2,-8.5 -0.5,-3 -0.5,-4 -1,-8 0,-0.5 0,-1 0.5,-0.5 z"
id="path3037-7-4-0"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 332.5,934.36218 c 0.5,-2 2.5,-7 6,-7 4.5,0 6.5,4 6.5,9 0,3.5 -1.28947,5.80614 -2.5,8.5 -1.28894,2.86836 -3.18966,5.4287 -5,8 -2.32265,3.29895 -7.5,9.5 -7.5,9.5 0,0 -5.17735,-6.20105 -7.5,-9.5 -1.81034,-2.5713 -3.71106,-5.13164 -5,-8 -1.21053,-2.69386 -2.5,-5 -2.5,-8.5 0,-5 2,-9 6.5,-9 3.5,0 5.5,5 6,7 0.5,0.5 0.5,0 0.5,-0.5 -0.5,-4 -0.5,-5 -1,-8 -0.5,-3 -2,-8.5 -2,-8.5 2.5,1 7.5,1 10,0 0,0 -1.5,5.5 -2,8.5 -0.5,3 -0.5,4 -1,8 0,0.5 0,1 0.5,0.5 z"
id="path3037-7-4-1-3"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,613.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-40"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,951.3622 c 1,-4 5,-14 12,-14 9,0 13,8 13,18 0,7 -2.57895,11.61229 -5,17 -2.57788,5.73673 -6.37932,10.85741 -10,16 -4.6453,6.5979 -15,19 -15,19 0,0 -10.3547,-12.4021 -15,-19 -3.62068,-5.14259 -7.42212,-10.26327 -10,-16 -2.42105,-5.38771 -5,-10 -5,-17 0,-10 4,-18 13,-18 7,0 11,10 12,14 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-7-7-0"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.2 KiB

+99
View File
@@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-1-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-08" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-0-8" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27291)"
id="g3035-0">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-59"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,542.36208 c -5.54,0 -10,4.46 -10,10 l 0,5 5,0 0,-5 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,5 c 0,2.77 -2.23,5 -5,5 l -5,0 0,5 5,0 c 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-5 -5,0 0,5 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-10 c 0,-3.0036 -1.32295,-5.67 -3.40625,-7.5 2.0833,-1.83 3.40625,-4.4964 3.40625,-7.5 l 0,-5 c 0,-5.54 -4.46,-10 -10,-10 z"
id="rect3163-5-1-4-3-4-0-6"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 330,1022.3622 c 5.54,0 10,-4.46 10,-10 l 0,-5 -5,0 0,5 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-5 c 0,-2.77 2.23,-5 5,-5 l 5,0 0,-5.00002 -5,0 c -2.77,0 -5,-2.23 -5,-5.00002 l 0,-10 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,5 5,0 0,-5 c 0,-5.54 -4.46,-10 -10,-10 -5.54,0 -10,4.46 -10,10 l 0,10 c 0,3.00362 1.32295,5.67002 3.40625,7.50004 -2.0833,1.83 -3.40625,4.4964 -3.40625,7.5 l 0,5 c 0,5.54 4.46,10 10,10 z"
id="rect3163-5-1-4-3-4-0-4-3"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,613.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-42"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,793.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-1-88"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,951.3622 c 2,-4 7,-10 12,-10 9,0 13,8 13,18 0,10 -4,19 -13,19 -5,0 -8,-5 -11,-8 -1,-1 -2,0 -1,1 3,3 8,11 8,18 0,8 -5,18 -13,18 -8,0 -13,-10 -13,-18 0,-7 5,-15 8,-18 1,-1 0,-2 -1,-1 -3,3 -6,8 -11,8 -9,0 -13,-9 -13,-19 0,-10 4,-18 13,-18 5,0 10,6 12,10 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-7-75"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 32.5,630.36218 c 1,2 3.5,5 6,5 4.5,0 6.5,-4 6.5,-9 0,-5 -2,-9.5 -6.5,-9.5 -2.5,0 -4,2.5 -5.5,4 -0.5,0.5 -1,0 -0.5,-0.5 1.5,-1.5 4,-5.5 4,-9 0,-4 -2.5,-9 -6.5,-9 -4,0 -6.5,5 -6.5,9 0,3.5 2.5,7.5 4,9 0.5,0.5 0,1 -0.5,0.5 -1.5,-1.5 -3,-4 -5.5,-4 -4.5,0 -6.5,4.5 -6.5,9.5 0,5 2,9 6.5,9 2.5,0 5,-3 6,-5 0.5,-0.5 0.5,0 0.5,0.5 -0.5,4 -0.5,5 -1,8 -0.5,3 -2,8.5 -2,8.5 2.5,-1 7.5,-1 10,0 0,0 -1.5,-5.5 -2,-8.5 -0.5,-3 -0.5,-4 -1,-8 0,-0.5 0,-1 0.5,-0.5 z"
id="path3037-1-4-8"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 332.5,934.36218 c 1,-2 3.5,-5 6,-5 4.5,0 6.5,4 6.5,9 0,5 -2,9.5 -6.5,9.5 -2.5,0 -4,-2.5 -5.5,-4 -0.5,-0.5 -1,0 -0.5,0.5 1.5,1.5 4,5.5 4,9 0,4 -2.5,9 -6.5,9 -4,0 -6.5,-5 -6.5,-9 0,-3.5 2.5,-7.5 4,-9 0.5,-0.5 0,-1 -0.5,-0.5 -1.5,1.5 -3,4 -5.5,4 -4.5,0 -6.5,-4.5 -6.5,-9.5 0,-5 2,-9 6.5,-9 2.5,0 5,3 6,5 0.5,0.5 0.5,0 0.5,-0.5 -0.5,-4 -0.5,-5 -1,-8 -0.5,-3 -2,-8.5 -2,-8.5 2.5,1 7.5,1 10,0 0,0 -1.5,5.5 -2,8.5 -0.5,3 -0.5,4 -1,8 0,0.5 0,1 0.5,0.5 z"
id="path3037-1-0-1"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.5 KiB

+93
View File
@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-1-8" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3042">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-03"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,542.36208 c -5.54,0 -10,4.46 -10,10 l 0,5 5,0 0,-5 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,5 c 0,2.77 -2.23,5 -5,5 l -5,0 0,5 5,0 c 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-5 -5,0 0,5 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-10 c 0,-3.0036 -1.32295,-5.67 -3.40625,-7.5 2.0833,-1.83 3.40625,-4.4964 3.40625,-7.5 l 0,-5 c 0,-5.54 -4.46,-10 -10,-10 z"
id="rect3163-5-1-4-3-4-0-8"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 330,1022.3622 c 5.54,0 10,-4.46 10,-10 l 0,-5 -5,0 0,5 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-5 c 0,-2.77 2.23,-5 5,-5 l 5,0 0,-5.00002 -5,0 c -2.77,0 -5,-2.23 -5,-5.00002 l 0,-10 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,5 5,0 0,-5 c 0,-5.54 -4.46,-10 -10,-10 -5.54,0 -10,4.46 -10,10 l 0,10 c 0,3.00362 1.32295,5.67002 3.40625,7.50004 -2.0833,1.83 -3.40625,4.4964 -3.40625,7.5 l 0,5 c 0,5.54 4.46,10 10,10 z"
id="rect3163-5-1-4-3-4-0-4-2"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 30,602.36218 c 0,0 3,7.5 6.5,12.5 3.5,5 8.5,10 8.5,10 0,0 -5,5 -8.5,10 -3.5,5 -6.5,12.5 -6.5,12.5 0,0 -3,-7.5 -6.5,-12.5 -3.5,-5 -8.5,-10 -8.5,-10 0,0 5,-5 8.5,-10 3.5,-5 6.5,-12.5 6.5,-12.5"
id="path3204-24-1-52"
style="fill:#ff5555;stroke:none" />
<path
d="m 330,917.36218 c 0,0 3,7.5 6.5,12.5 3.5,5 8.5,10 8.5,10 0,0 -5,5 -8.5,10 -3.5,5 -6.5,12.5 -6.5,12.5 0,0 -3,-7.5 -6.5,-12.5 -3.5,-5 -8.5,-10 -8.5,-10 0,0 5,-5 8.5,-10 3.5,-5 6.5,-12.5 6.5,-12.5"
id="path3204-24-1-1-0"
style="fill:#ff5555;stroke:none" />
<path
d="m 180,557.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-4-3"
style="fill:#ff5555;stroke:none" />
<path
d="m 180,737.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-72"
style="fill:#ff5555;stroke:none" />
<path
d="m 180,917.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25.00002 -13,25.00002 0,0 -6,-15.00002 -13,-25.00002 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-0-97"
style="fill:#ff5555;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

+87
View File
@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3035">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-18"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,542.36208 c -5.54,0 -10,4.46 -10,10 l 0,5 5,0 0,-5 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,5 c 0,2.77 -2.23,5 -5,5 l -5,0 0,5 5,0 c 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-5 -5,0 0,5 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-10 c 0,-3.0036 -1.32295,-5.67 -3.40625,-7.5 2.0833,-1.83 3.40625,-4.4964 3.40625,-7.5 l 0,-5 c 0,-5.54 -4.46,-10 -10,-10 z"
id="rect3163-5-1-4-3-4-0"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 330,1022.3622 c 5.54,0 10,-4.46 10,-10 l 0,-5 -5,0 0,5 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-5 c 0,-2.77 2.23,-5 5,-5 l 5,0 0,-5.00002 -5,0 c -2.77,0 -5,-2.23 -5,-5.00002 l 0,-10 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,5 5,0 0,-5 c 0,-5.54 -4.46,-10 -10,-10 -5.54,0 -10,4.46 -10,10 l 0,10 c 0,3.00362 1.32295,5.67002 3.40625,7.50004 -2.0833,1.83 -3.40625,4.4964 -3.40625,7.5 l 0,5 c 0,5.54 4.46,10 10,10 z"
id="rect3163-5-1-4-3-4-0-4"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 179,575.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-62"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 179,755.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-1-14"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 179,989.3622 c 0,11.0457 -5.71573,18 -14,18 -8.28427,0 -15,-8.95431 -15,-20 0.0349,-0.95559 0.0182,-1.89119 0,-2.8125 0,-7.29848 2.67685,-14.37684 5,-21 2.38903,-6.81096 5.83357,-12.78067 9.0625,-18.875 C 169.06373,935.2353 180,917.36218 180,917.36218 c 0,0 10.93627,17.87312 15.9375,27.31252 3.22893,6.09433 6.67347,12.06404 9.0625,18.875 2.32315,6.62316 5,13.70152 5,21 -0.0284,0.9744 -0.0186,1.91462 0,2.8125 0,11.04569 -6.71573,20 -15,20 -8.28427,0 -14,-6.9543 -14,-18 0,-2 -2,-2 -2,0 z"
id="path3126-7-6"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 29.5,611.36218 c 0,-5.52285 -2.857865,-9 -7,-9 -4.142135,0 -7.5,4.47715 -7.5,10 0.01745,0.4778 0.0091,0.94559 0,1.40625 0,3.64924 1.338425,7.18842 2.5,10.5 1.194515,3.40548 2.916785,6.39034 4.53125,9.4375 2.500615,4.7197 7.96875,13.65625 7.96875,13.65625 0,0 5.468135,-8.93655 7.96875,-13.65625 1.614465,-3.04716 3.336735,-6.03202 4.53125,-9.4375 1.161575,-3.31158 2.5,-6.85076 2.5,-10.5 -0.0142,-0.4872 -0.0093,-0.95731 0,-1.40625 0,-5.52285 -3.357865,-10 -7.5,-10 -4.142135,0 -7,3.47715 -7,9 0,1 -1,1 -1,0 z"
id="path3126-1-4-2"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 329.5,953.36218 c 0,5.52285 -2.85787,9 -7,9 -4.14214,0 -7.5,-4.47715 -7.5,-10 0.0174,-0.4778 0.009,-0.94559 0,-1.40625 0,-3.64924 1.33842,-7.18842 2.5,-10.5 1.19452,-3.40548 2.91678,-6.39034 4.53125,-9.4375 2.50061,-4.7197 7.96875,-13.65625 7.96875,-13.65625 0,0 5.46814,8.93655 7.96875,13.65625 1.61446,3.04716 3.33673,6.03202 4.53125,9.4375 1.16157,3.31158 2.5,6.85076 2.5,10.5 -0.0142,0.4872 -0.009,0.95731 0,1.40625 0,5.52285 -3.35787,10 -7.5,10 -4.14214,0 -7,-3.47715 -7,-9 0,-1 -1,-1 -1,0 z"
id="path3126-1-0"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.5 KiB

+73
View File
@@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300" />
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3035-5">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-34"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,542.36208 c -5.54,0 -10,4.46 -10,10 l 0,5 5,0 0,-5 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,5 c 0,2.77 -2.23,5 -5,5 l -5,0 0,5 5,0 c 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-5 -5,0 0,5 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-10 c 0,-3.0036 -1.32295,-5.67 -3.40625,-7.5 2.0833,-1.83 3.40625,-4.4964 3.40625,-7.5 l 0,-5 c 0,-5.54 -4.46,-10 -10,-10 z"
id="rect3163-5-1-4-3-4-0-3"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 330,1022.3622 c 5.54,0 10,-4.46 10,-10 l 0,-5 -5,0 0,5 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-5 c 0,-2.77 2.23,-5 5,-5 l 5,0 0,-5.00002 -5,0 c -2.77,0 -5,-2.23 -5,-5.00002 l 0,-10 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,5 5,0 0,-5 c 0,-5.54 -4.46,-10 -10,-10 -5.54,0 -10,4.46 -10,10 l 0,10 c 0,3.00362 1.32295,5.67002 3.40625,7.50004 -2.0833,1.83 -3.40625,4.4964 -3.40625,7.5 l 0,5 c 0,5.54 4.46,10 10,10 z"
id="rect3163-5-1-4-3-4-0-4-21"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,613.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-13"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,793.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-1-2"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,951.3622 c 1,-4 5,-14 12,-14 9,0 13,8 13,18 0,7 -2.57895,11.61229 -5,17 -2.57788,5.73673 -6.37932,10.85741 -10,16 -4.6453,6.5979 -15,19 -15,19 0,0 -10.3547,-12.4021 -15,-19 -3.62068,-5.14259 -7.42212,-10.26327 -10,-16 -2.42105,-5.38771 -5,-10 -5,-17 0,-10 4,-18 13,-18 7,0 11,10 12,14 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-7-7-5"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 32.5,630.36218 c 0.5,2 2.5,7 6,7 4.5,0 6.5,-4 6.5,-9 0,-3.5 -1.289475,-5.80614 -2.5,-8.5 -1.28894,-2.86836 -3.18966,-5.4287 -5,-8 -2.32265,-3.29895 -7.5,-9.5 -7.5,-9.5 0,0 -5.17735,6.20105 -7.5,9.5 -1.81034,2.5713 -3.71106,5.13164 -5,8 -1.210525,2.69386 -2.5,5 -2.5,8.5 0,5 2,9 6.5,9 3.5,0 5.5,-5 6,-7 0.5,-0.5 0.5,0 0.5,0.5 -0.5,4 -0.5,5 -1,8 -0.5,3 -2,8.5 -2,8.5 2.5,-1 7.5,-1 10,0 0,0 -1.5,-5.5 -2,-8.5 -0.5,-3 -0.5,-4 -1,-8 0,-0.5 0,-1 0.5,-0.5 z"
id="path3037-7-4-35"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 332.5,934.36218 c 0.5,-2 2.5,-7 6,-7 4.5,0 6.5,4 6.5,9 0,3.5 -1.28947,5.80614 -2.5,8.5 -1.28894,2.86836 -3.18966,5.4287 -5,8 -2.32265,3.29895 -7.5,9.5 -7.5,9.5 0,0 -5.17735,-6.20105 -7.5,-9.5 -1.81034,-2.5713 -3.71106,-5.13164 -5,-8 -1.21053,-2.69386 -2.5,-5 -2.5,-8.5 0,-5 2,-9 6.5,-9 3.5,0 5.5,5 6,7 0.5,0.5 0.5,0 0.5,-0.5 -0.5,-4 -0.5,-5 -1,-8 -0.5,-3 -2,-8.5 -2,-8.5 2.5,1 7.5,1 10,0 0,0 -1.5,5.5 -2,8.5 -0.5,3 -0.5,4 -1,8 0,0.5 0,1 0.5,0.5 z"
id="path3037-7-4-4-1"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.8 KiB

+103
View File
@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-1-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-08" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-0-8" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27291)"
id="g3044-2">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-574"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,542.36208 -10,35.00001 0,4.99999 12,0 0,10 5,0 0,-10 3,0 0,-4.99999 -3,0 0,-14.99999 -5,0 0,14.99999 -6.8,0 9.99999,-35.00001 z"
id="rect3980-7-6-2-9-9-4"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 330,1022.3622 10,-35.00004 0,-5 -12,0 0,-10 -5,0 0,10 -3,0 0,5 3,0 0,15.00004 5,0 0,-15.00004 6.8,0 -9.99999,35.00004 z"
id="rect3980-7-6-2-9-9-8-4"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 32.5,630.36218 c 1,2 3.5,5 6,5 4.5,0 6.5,-4 6.5,-9 0,-5 -2,-9.5 -6.5,-9.5 -2.5,0 -4,2.5 -5.5,4 -0.5,0.5 -1,0 -0.5,-0.5 1.5,-1.5 4,-5.5 4,-9 0,-4 -2.5,-9 -6.5,-9 -4,0 -6.5,5 -6.5,9 0,3.5 2.5,7.5 4,9 0.5,0.5 0,1 -0.5,0.5 -1.5,-1.5 -3,-4 -5.5,-4 -4.5,0 -6.5,4.5 -6.5,9.5 0,5 2,9 6.5,9 2.5,0 5,-3 6,-5 0.5,-0.5 0.5,0 0.5,0.5 -0.5,4 -0.5,5 -1,8 -0.5,3 -2,8.5 -2,8.5 2.5,-1 7.5,-1 10,0 0,0 -1.5,-5.5 -2,-8.5 -0.5,-3 -0.5,-4 -1,-8 0,-0.5 0,-1 0.5,-0.5 z"
id="path3037-1-44"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 332.5,934.36218 c 1,-2 3.5,-5 6,-5 4.5,0 6.5,4 6.5,9 0,5 -2,9.5 -6.5,9.5 -2.5,0 -4,-2.5 -5.5,-4 -0.5,-0.5 -1,0 -0.5,0.5 1.5,1.5 4,5.5 4,9 0,4 -2.5,9 -6.5,9 -4,0 -6.5,-5 -6.5,-9 0,-3.5 2.5,-7.5 4,-9 0.5,-0.5 0,-1 -0.5,-0.5 -1.5,1.5 -3,4 -5.5,4 -4.5,0 -6.5,-4.5 -6.5,-9.5 0,-5 2,-9 6.5,-9 2.5,0 5,3 6,5 0.5,0.5 0.5,0 0.5,-0.5 -0.5,-4 -0.5,-5 -1,-8 -0.5,-3 -2,-8.5 -2,-8.5 2.5,1 7.5,1 10,0 0,0 -1.5,5.5 -2,8.5 -0.5,3 -0.5,4 -1,8 0,0.5 0,1 0.5,0.5 z"
id="path3037-1-1-2"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,613.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-93"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,613.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-07"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,951.3622 c 2,-4 7,-10 12,-10 9,0 13,8 13,18 0,10 -4,19 -13,19 -5,0 -8,-5 -11,-8 -1,-1 -2,0 -1,1 3,3 8,11 8,18 0,8 -5,18 -13,18 -8,0 -13,-10 -13,-18 0,-7 5,-15 8,-18 1,-1 0,-2 -1,-1 -3,3 -6,8 -11,8 -9,0 -13,-9 -13,-19 0,-10 4,-18 13,-18 5,0 10,6 12,10 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-4-78"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,951.3622 c 2,-4 7,-10 12,-10 9,0 13,8 13,18 0,10 -4,19 -13,19 -5,0 -8,-5 -11,-8 -1,-1 -2,0 -1,1 3,3 8,11 8,18 0,8 -5,18 -13,18 -8,0 -13,-10 -13,-18 0,-7 5,-15 8,-18 1,-1 0,-2 -1,-1 -3,3 -6,8 -11,8 -9,0 -13,-9 -13,-19 0,-10 4,-18 13,-18 5,0 10,6 12,10 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-0-73"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.4 KiB

+97
View File
@@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-1-8" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3044">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-33"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,542.36208 -10,35.00001 0,4.99999 12,0 0,10 5,0 0,-10 3,0 0,-4.99999 -3,0 0,-14.99999 -5,0 0,14.99999 -6.8,0 9.99999,-35.00001 z"
id="rect3980-7-6-2-9-9"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 330,1022.3622 10,-35.00004 0,-5 -12,0 0,-10 -5,0 0,10 -3,0 0,5 3,0 0,15.00004 5,0 0,-15.00004 6.8,0 -9.99999,35.00004 z"
id="rect3980-7-6-2-9-9-8"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 90,557.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-55"
style="fill:#ff5555;stroke:none" />
<path
d="m 270,557.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-1-32"
style="fill:#ff5555;stroke:none" />
<path
d="m 90,917.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25.00002 -13,25.00002 0,0 -6,-15.00002 -13,-25.00002 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-7-8"
style="fill:#ff5555;stroke:none" />
<path
d="m 270,917.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25.00002 -13,25.00002 0,0 -6,-15.00002 -13,-25.00002 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-4-25"
style="fill:#ff5555;stroke:none" />
<path
d="m 30,602.36218 c 0,0 3,7.5 6.5,12.5 3.5,5 8.5,10 8.5,10 0,0 -5,5 -8.5,10 -3.5,5 -6.5,12.5 -6.5,12.5 0,0 -3,-7.5 -6.5,-12.5 -3.5,-5 -8.5,-10 -8.5,-10 0,0 5,-5 8.5,-10 3.5,-5 6.5,-12.5 6.5,-12.5"
id="path3204-24-1-0-3"
style="fill:#ff5555;stroke:none" />
<path
d="m 330,917.36218 c 0,0 3,7.5 6.5,12.5 3.5,5 8.5,10 8.5,10 0,0 -5,5 -8.5,10 -3.5,5 -6.5,12.5 -6.5,12.5 0,0 -3,-7.5 -6.5,-12.5 -3.5,-5 -8.5,-10 -8.5,-10 0,0 5,-5 8.5,-10 3.5,-5 6.5,-12.5 6.5,-12.5"
id="path3204-24-1-9-6"
style="fill:#ff5555;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

+91
View File
@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3044-9">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-15"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,542.36208 -10,35.00001 0,4.99999 12,0 0,10 5,0 0,-10 3,0 0,-4.99999 -3,0 0,-14.99999 -5,0 0,14.99999 -6.8,0 9.99999,-35.00001 z"
id="rect3980-7-6-2-9-9-0"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 330,1022.3622 10,-35.00004 0,-5 -12,0 0,-10 -5,0 0,10 -3,0 0,5 3,0 0,15.00004 5,0 0,-15.00004 6.8,0 -9.99999,35.00004 z"
id="rect3980-7-6-2-9-9-8-3"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 29.5,611.36218 c 0,-5.52285 -2.857865,-9 -7,-9 -4.142135,0 -7.5,4.47715 -7.5,10 0.01745,0.4778 0.0091,0.94559 0,1.40625 0,3.64924 1.338425,7.18842 2.5,10.5 1.194515,3.40548 2.916785,6.39034 4.53125,9.4375 2.500615,4.7197 7.96875,13.65625 7.96875,13.65625 0,0 5.468135,-8.93655 7.96875,-13.65625 1.614465,-3.04716 3.336735,-6.03202 4.53125,-9.4375 1.161575,-3.31158 2.5,-6.85076 2.5,-10.5 -0.0142,-0.4872 -0.0093,-0.95731 0,-1.40625 0,-5.52285 -3.357865,-10 -7.5,-10 -4.142135,0 -7,3.47715 -7,9 0,1 -1,1 -1,0 z"
id="path3126-1-64"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 329.5,953.36218 c 0,5.52285 -2.85787,9 -7,9 -4.14214,0 -7.5,-4.47715 -7.5,-10 0.0174,-0.4778 0.009,-0.94559 0,-1.40625 0,-3.64924 1.33842,-7.18842 2.5,-10.5 1.19452,-3.40548 2.91678,-6.39034 4.53125,-9.4375 2.50061,-4.7197 7.96875,-13.65625 7.96875,-13.65625 0,0 5.46814,8.93655 7.96875,13.65625 1.61446,3.04716 3.33673,6.03202 4.53125,9.4375 1.16157,3.31158 2.5,6.85076 2.5,10.5 -0.0142,0.4872 -0.009,0.95731 0,1.40625 0,5.52285 -3.35787,10 -7.5,10 -4.14214,0 -7,-3.47715 -7,-9 0,-1 -1,-1 -1,0 z"
id="path3126-1-1-92"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 89,575.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-93"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 269,575.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-74"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 89,989.3622 c 0,11.0457 -5.71573,18 -14,18 -8.28427,0 -15,-8.95431 -15,-20 0.0349,-0.95559 0.0182,-1.89119 0,-2.8125 0,-7.29848 2.67685,-14.37684 5,-21 2.38903,-6.81096 5.83357,-12.78067 9.0625,-18.875 C 79.06373,935.2353 90,917.36218 90,917.36218 c 0,0 10.93627,17.87312 15.9375,27.31252 3.22893,6.09433 6.67347,12.06404 9.0625,18.875 2.32315,6.62316 5,13.70152 5,21 -0.0284,0.9744 -0.0186,1.91462 0,2.8125 0,11.04569 -6.71573,20 -15,20 -8.28427,0 -14,-6.9543 -14,-18 0,-2 -2,-2 -2,0 z"
id="path3126-0-4"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 269,989.3622 c 0,11.0457 -5.71573,18 -14,18 -8.28427,0 -15,-8.95431 -15,-20 0.0349,-0.95559 0.0182,-1.89119 0,-2.8125 0,-7.29848 2.67685,-14.37684 5,-21 2.38903,-6.81096 5.83357,-12.78067 9.0625,-18.875 C 259.06373,935.2353 270,917.36218 270,917.36218 c 0,0 10.93627,17.87312 15.9375,27.31252 3.22893,6.09433 6.67347,12.06404 9.0625,18.875 2.32315,6.62316 5,13.70152 5,21 -0.0284,0.9744 -0.0186,1.91462 0,2.8125 0,11.04569 -6.71573,20 -15,20 -8.28427,0 -14,-6.9543 -14,-18 0,-2 -2,-2 -2,0 z"
id="path3126-9-4"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.6 KiB

+93
View File
@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300" />
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3079">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-2"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,542.36208 -10,35.00001 0,4.99999 12,0 0,10 5,0 0,-10 3,0 0,-4.99999 -3,0 0,-14.99999 -5,0 0,14.99999 -6.8,0 9.99999,-35.00001 z"
id="rect3980-7-6-2-9-9-2"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 330,1022.3622 10,-35.00004 0,-5 -12,0 0,-10 -5,0 0,10 -3,0 0,5 3,0 0,15.00004 5,0 0,-15.00004 6.8,0 -9.99999,35.00004 z"
id="rect3980-7-6-2-9-9-8-2"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 32.5,630.36218 c 0.5,2 2.5,7 6,7 4.5,0 6.5,-4 6.5,-9 0,-3.5 -1.289475,-5.80614 -2.5,-8.5 -1.28894,-2.86836 -3.18966,-5.4287 -5,-8 -2.32265,-3.29895 -7.5,-9.5 -7.5,-9.5 0,0 -5.17735,6.20105 -7.5,9.5 -1.81034,2.5713 -3.71106,5.13164 -5,8 -1.210525,2.69386 -2.5,5 -2.5,8.5 0,5 2,9 6.5,9 3.5,0 5.5,-5 6,-7 0.5,-0.5 0.5,0 0.5,0.5 -0.5,4 -0.5,5 -1,8 -0.5,3 -2,8.5 -2,8.5 2.5,-1 7.5,-1 10,0 0,0 -1.5,-5.5 -2,-8.5 -0.5,-3 -0.5,-4 -1,-8 0,-0.5 0,-1 0.5,-0.5 z"
id="path3037-7-4-7-6"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 332.5,934.36218 c 0.5,-2 2.5,-7 6,-7 4.5,0 6.5,4 6.5,9 0,3.5 -1.28947,5.80614 -2.5,8.5 -1.28894,2.86836 -3.18966,5.4287 -5,8 -2.32265,3.29895 -7.5,9.5 -7.5,9.5 0,0 -5.17735,-6.20105 -7.5,-9.5 -1.81034,-2.5713 -3.71106,-5.13164 -5,-8 -1.21053,-2.69386 -2.5,-5 -2.5,-8.5 0,-5 2,-9 6.5,-9 3.5,0 5.5,5 6,7 0.5,0.5 0.5,0 0.5,-0.5 -0.5,-4 -0.5,-5 -1,-8 -0.5,-3 -2,-8.5 -2,-8.5 2.5,1 7.5,1 10,0 0,0 -1.5,5.5 -2,8.5 -0.5,3 -0.5,4 -1,8 0,0.5 0,1 0.5,0.5 z"
id="path3037-7-4-4-4"
style="fill:#000000;fill-opacity:1;stroke:none" />
<g
transform="translate(60,557.36218)"
id="g3027">
<path
d="m 35.007873,55.984252 c 0.992126,4.003937 4.996063,14.031496 11.976378,14.031496 9,0 13.003937,-8.007874 13.003937,-18 C 59.988188,45 57.437006,40.393701 54.992125,35.007874 52.405511,29.267717 48.614172,24.129921 44.999999,18.992126 40.358267,12.401575 30.01181,0 30.01181,0 c 0,0 -10.381889,12.401575 -15.023621,18.992126 C 11.374015,24.129921 7.582677,29.267717 4.9960629,35.007874 2.5866141,40.393701 0,45 0,52.015748 c 0,9.992126 4.0039369,18 13.003937,18 6.980314,0 10.984251,-10.027559 12.01181,-14.031496 0.992126,-0.992126 0.992126,0 0.992126,1.027559 -0.992126,7.972441 -0.992126,9.992126 -2.019685,15.980315 C 22.996062,79.015748 19.984251,90 19.984251,90 c 5.031496,-1.984252 15.023622,-1.984252 20.019685,0 0,0 -3.011811,-10.984252 -4.003937,-17.007874 -0.992126,-5.988189 -0.992126,-8.007874 -1.984252,-15.980315 0,-1.027559 0,-2.019685 0.992126,-1.027559 z"
id="path3029"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" />
</g>
<g
transform="translate(240,557.36218)"
id="g3041">
<path
d="m 35.007873,55.984252 c 0.992126,4.003937 4.996063,14.031496 11.976378,14.031496 9,0 13.003937,-8.007874 13.003937,-18 C 59.988188,45 57.437006,40.393701 54.992125,35.007874 52.405511,29.267717 48.614172,24.129921 44.999999,18.992126 40.358267,12.401575 30.01181,0 30.01181,0 c 0,0 -10.381889,12.401575 -15.023621,18.992126 C 11.374015,24.129921 7.582677,29.267717 4.9960629,35.007874 2.5866141,40.393701 0,45 0,52.015748 c 0,9.992126 4.0039369,18 13.003937,18 6.980314,0 10.984251,-10.027559 12.01181,-14.031496 0.992126,-0.992126 0.992126,0 0.992126,1.027559 -0.992126,7.972441 -0.992126,9.992126 -2.019685,15.980315 C 22.996062,79.015748 19.984251,90 19.984251,90 c 5.031496,-1.984252 15.023622,-1.984252 20.019685,0 0,0 -3.011811,-10.984252 -4.003937,-17.007874 -0.992126,-5.988189 -0.992126,-8.007874 -1.984252,-15.980315 0,-1.027559 0,-2.019685 0.992126,-1.027559 z"
id="path3043"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" />
</g>
<g
transform="matrix(1,0,0,-1,60,1007.3622)"
id="g3055">
<path
d="m 35.007873,55.984252 c 0.992126,4.003937 4.996063,14.031496 11.976378,14.031496 9,0 13.003937,-8.007874 13.003937,-18 C 59.988188,45 57.437006,40.393701 54.992125,35.007874 52.405511,29.267717 48.614172,24.129921 44.999999,18.992126 40.358267,12.401575 30.01181,0 30.01181,0 c 0,0 -10.381889,12.401575 -15.023621,18.992126 C 11.374015,24.129921 7.582677,29.267717 4.9960629,35.007874 2.5866141,40.393701 0,45 0,52.015748 c 0,9.992126 4.0039369,18 13.003937,18 6.980314,0 10.984251,-10.027559 12.01181,-14.031496 0.992126,-0.992126 0.992126,0 0.992126,1.027559 -0.992126,7.972441 -0.992126,9.992126 -2.019685,15.980315 C 22.996062,79.015748 19.984251,90 19.984251,90 c 5.031496,-1.984252 15.023622,-1.984252 20.019685,0 0,0 -3.011811,-10.984252 -4.003937,-17.007874 -0.992126,-5.988189 -0.992126,-8.007874 -1.984252,-15.980315 0,-1.027559 0,-2.019685 0.992126,-1.027559 z"
id="path3057"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" />
</g>
<g
transform="matrix(1,0,0,-1,240,1007.3622)"
id="g3069">
<path
d="m 35.007873,55.984252 c 0.992126,4.003937 4.996063,14.031496 11.976378,14.031496 9,0 13.003937,-8.007874 13.003937,-18 C 59.988188,45 57.437006,40.393701 54.992125,35.007874 52.405511,29.267717 48.614172,24.129921 44.999999,18.992126 40.358267,12.401575 30.01181,0 30.01181,0 c 0,0 -10.381889,12.401575 -15.023621,18.992126 C 11.374015,24.129921 7.582677,29.267717 4.9960629,35.007874 2.5866141,40.393701 0,45 0,52.015748 c 0,9.992126 4.0039369,18 13.003937,18 6.980314,0 10.984251,-10.027559 12.01181,-14.031496 0.992126,-0.992126 0.992126,0 0.992126,1.027559 -0.992126,7.972441 -0.992126,9.992126 -2.019685,15.980315 C 22.996062,79.015748 19.984251,90 19.984251,90 c 5.031496,-1.984252 15.023622,-1.984252 20.019685,0 0,0 -3.011811,-10.984252 -4.003937,-17.007874 -0.992126,-5.988189 -0.992126,-8.007874 -1.984252,-15.980315 0,-1.027559 0,-2.019685 0.992126,-1.027559 z"
id="path3071"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" />
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.0 KiB

+107
View File
@@ -0,0 +1,107 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-1-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-08" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-0-8" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27291)"
id="g3053-0">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-391"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 20,542.36208 0,14.99999 0,5 10,0 c 2.77,0 5.00001,2.23 5.00001,5.00005 l 0,14.99996 c 0,2.77001 -2.23001,5.00001 -5.00001,5.00001 -2.77,0 -5,-2.23 -5,-5.00001 l 0,-4.99999 -5,0 0,4.99999 c 0,5.54 4.46,10 10,10 5.54001,0 10,-4.46 10,-10 l 0,-14.99996 c 0,-5.54005 -4.45999,-10.00005 -10,-10.00005 l -5,0 0,-9.99998 5,0 10,0 0,-5.00001 -10,0 -5,0 z"
id="rect3163-6-0-0-2-8"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 340,1022.3622 0,-15 0,-5 -10,0 c -2.77,0 -5.00001,-2.23 -5.00001,-5.00006 l 0,-15.00002 c 0,-2.77 2.23001,-5 5.00001,-5 2.77,0 5,2.23 5,5 l 0,5 5,0 0,-5 c 0,-5.54 -4.46,-10 -10,-10 -5.54001,0 -10,4.46 -10,10 l 0,15.00002 c 0,5.54006 4.45999,10.00006 10,10.00006 l 5,0 0,10 -5,0 -10,0 0,5 10,0 5,0 z"
id="rect3163-6-0-0-2-4-1"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,793.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-1-95"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,613.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-3"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,613.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-2"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,951.3622 c 2,-4 7,-10 12,-10 9,0 13,8 13,18 0,10 -4,19 -13,19 -5,0 -8,-5 -11,-8 -1,-1 -2,0 -1,1 3,3 8,11 8,18 0,8 -5,18 -13,18 -8,0 -13,-10 -13,-18 0,-7 5,-15 8,-18 1,-1 0,-2 -1,-1 -3,3 -6,8 -11,8 -9,0 -13,-9 -13,-19 0,-10 4,-18 13,-18 5,0 10,6 12,10 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-4-5"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,951.3622 c 2,-4 7,-10 12,-10 9,0 13,8 13,18 0,10 -4,19 -13,19 -5,0 -8,-5 -11,-8 -1,-1 -2,0 -1,1 3,3 8,11 8,18 0,8 -5,18 -13,18 -8,0 -13,-10 -13,-18 0,-7 5,-15 8,-18 1,-1 0,-2 -1,-1 -3,3 -6,8 -11,8 -9,0 -13,-9 -13,-19 0,-10 4,-18 13,-18 5,0 10,6 12,10 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-0-2"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 32.5,630.36218 c 1,2 3.5,5 6,5 4.5,0 6.5,-4 6.5,-9 0,-5 -2,-9.5 -6.5,-9.5 -2.5,0 -4,2.5 -5.5,4 -0.5,0.5 -1,0 -0.5,-0.5 1.5,-1.5 4,-5.5 4,-9 0,-4 -2.5,-9 -6.5,-9 -4,0 -6.5,5 -6.5,9 0,3.5 2.5,7.5 4,9 0.5,0.5 0,1 -0.5,0.5 -1.5,-1.5 -3,-4 -5.5,-4 -4.5,0 -6.5,4.5 -6.5,9.5 0,5 2,9 6.5,9 2.5,0 5,-3 6,-5 0.5,-0.5 0.5,0 0.5,0.5 -0.5,4 -0.5,5 -1,8 -0.5,3 -2,8.5 -2,8.5 2.5,-1 7.5,-1 10,0 0,0 -1.5,-5.5 -2,-8.5 -0.5,-3 -0.5,-4 -1,-8 0,-0.5 0,-1 0.5,-0.5 z"
id="path3037-1-9"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 332.5,934.36218 c 1,-2 3.5,-5 6,-5 4.5,0 6.5,4 6.5,9 0,5 -2,9.5 -6.5,9.5 -2.5,0 -4,-2.5 -5.5,-4 -0.5,-0.5 -1,0 -0.5,0.5 1.5,1.5 4,5.5 4,9 0,4 -2.5,9 -6.5,9 -4,0 -6.5,-5 -6.5,-9 0,-3.5 2.5,-7.5 4,-9 0.5,-0.5 0,-1 -0.5,-0.5 -1.5,1.5 -3,4 -5.5,4 -4.5,0 -6.5,-4.5 -6.5,-9.5 0,-5 2,-9 6.5,-9 2.5,0 5,3 6,5 0.5,0.5 0.5,0 0.5,-0.5 -0.5,-4 -0.5,-5 -1,-8 -0.5,-3 -2,-8.5 -2,-8.5 2.5,1 7.5,1 10,0 0,0 -1.5,5.5 -2,8.5 -0.5,3 -0.5,4 -1,8 0,0.5 0,1 0.5,0.5 z"
id="path3037-1-4-5"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.3 KiB

+101
View File
@@ -0,0 +1,101 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-1-8" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.79257,-264.27289)"
id="g3053-3">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-57"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 20,542.36208 0,14.99999 0,5 10,0 c 2.77,0 5.00001,2.23 5.00001,5.00005 l 0,14.99996 c 0,2.77001 -2.23001,5.00001 -5.00001,5.00001 -2.77,0 -5,-2.23 -5,-5.00001 l 0,-4.99999 -5,0 0,4.99999 c 0,5.54 4.46,10 10,10 5.54001,0 10,-4.46 10,-10 l 0,-14.99996 c 0,-5.54005 -4.45999,-10.00005 -10,-10.00005 l -5,0 0,-9.99998 5,0 10,0 0,-5.00001 -10,0 -5,0 z"
id="rect3163-6-0-0-2-66"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 340,1022.3622 0,-15 0,-5 -10,0 c -2.77,0 -5.00001,-2.23 -5.00001,-5.00006 l 0,-15.00002 c 0,-2.77 2.23001,-5 5.00001,-5 2.77,0 5,2.23 5,5 l 0,5 5,0 0,-5 c 0,-5.54 -4.46,-10 -10,-10 -5.54001,0 -10,4.46 -10,10 l 0,15.00002 c 0,5.54006 4.45999,10.00006 10,10.00006 l 5,0 0,10 -5,0 -10,0 0,5 10,0 5,0 z"
id="rect3163-6-0-0-2-4-5"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 30,602.36218 c 0,0 3,7.5 6.5,12.5 3.5,5 8.5,10 8.5,10 0,0 -5,5 -8.5,10 -3.5,5 -6.5,12.5 -6.5,12.5 0,0 -3,-7.5 -6.5,-12.5 -3.5,-5 -8.5,-10 -8.5,-10 0,0 5,-5 8.5,-10 3.5,-5 6.5,-12.5 6.5,-12.5"
id="path3204-24-1-82"
style="fill:#ff5555;stroke:none" />
<path
d="m 330,917.36218 c 0,0 3,7.5 6.5,12.5 3.5,5 8.5,10 8.5,10 0,0 -5,5 -8.5,10 -3.5,5 -6.5,12.5 -6.5,12.5 0,0 -3,-7.5 -6.5,-12.5 -3.5,-5 -8.5,-10 -8.5,-10 0,0 5,-5 8.5,-10 3.5,-5 6.5,-12.5 6.5,-12.5"
id="path3204-24-1-1-5"
style="fill:#ff5555;stroke:none" />
<path
d="m 90,557.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-7-4"
style="fill:#ff5555;stroke:none" />
<path
d="m 270,557.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-4-4"
style="fill:#ff5555;stroke:none" />
<path
d="m 180,737.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-16"
style="fill:#ff5555;stroke:none" />
<path
d="m 90,917.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25.00002 -13,25.00002 0,0 -6,-15.00002 -13,-25.00002 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-0-1"
style="fill:#ff5555;stroke:none" />
<path
d="m 270,917.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25.00002 -13,25.00002 0,0 -6,-15.00002 -13,-25.00002 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-9-6"
style="fill:#ff5555;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

+99
View File
@@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3053">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-58"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 179,757.36218 c 0,-11.04569 -5.71573,-20 -14,-20 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,8.95431 -14,20 z"
id="path3126-1-6"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 20,542.36208 0,14.99999 0,5 10,0 c 2.77,0 5.00001,2.23 5.00001,5.00005 l 0,14.99996 c 0,2.77001 -2.23001,5.00001 -5.00001,5.00001 -2.77,0 -5,-2.23 -5,-5.00001 l 0,-4.99999 -5,0 0,4.99999 c 0,5.54 4.46,10 10,10 5.54001,0 10,-4.46 10,-10 l 0,-14.99996 c 0,-5.54005 -4.45999,-10.00005 -10,-10.00005 l -5,0 0,-9.99998 5,0 10,0 0,-5.00001 -10,0 -5,0 z"
id="rect3163-6-0-0-2"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 340,1022.3622 0,-15 0,-5 -10,0 c -2.77,0 -5.00001,-2.23 -5.00001,-5.00006 l 0,-15.00002 c 0,-2.77 2.23001,-5 5.00001,-5 2.77,0 5,2.23 5,5 l 0,5 5,0 0,-5 c 0,-5.54 -4.46,-10 -10,-10 -5.54001,0 -10,4.46 -10,10 l 0,15.00002 c 0,5.54006 4.45999,10.00006 10,10.00006 l 5,0 0,10 -5,0 -10,0 0,5 10,0 5,0 z"
id="rect3163-6-0-0-2-4"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 89,575.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-2"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 269,575.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-17-6"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 179,755.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-4-5"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 89,989.3622 c 0,11.0457 -5.71573,18 -14,18 -8.28427,0 -15,-8.95431 -15,-20 0.0349,-0.95559 0.0182,-1.89119 0,-2.8125 0,-7.29848 2.67685,-14.37684 5,-21 2.38903,-6.81096 5.83357,-12.78067 9.0625,-18.875 C 79.06373,935.2353 90,917.36218 90,917.36218 c 0,0 10.93627,17.87312 15.9375,27.31252 3.22893,6.09433 6.67347,12.06404 9.0625,18.875 2.32315,6.62316 5,13.70152 5,21 -0.0284,0.9744 -0.0186,1.91462 0,2.8125 0,11.04569 -6.71573,20 -15,20 -8.28427,0 -14,-6.9543 -14,-18 0,-2 -2,-2 -2,0 z"
id="path3126-0-3"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 269,989.3622 c 0,11.0457 -5.71573,18 -14,18 -8.28427,0 -15,-8.95431 -15,-20 0.0349,-0.95559 0.0182,-1.89119 0,-2.8125 0,-7.29848 2.67685,-14.37684 5,-21 2.38903,-6.81096 5.83357,-12.78067 9.0625,-18.875 C 259.06373,935.2353 270,917.36218 270,917.36218 c 0,0 10.93627,17.87312 15.9375,27.31252 3.22893,6.09433 6.67347,12.06404 9.0625,18.875 2.32315,6.62316 5,13.70152 5,21 -0.0284,0.9744 -0.0186,1.91462 0,2.8125 0,11.04569 -6.71573,20 -15,20 -8.28427,0 -14,-6.9543 -14,-18 0,-2 -2,-2 -2,0 z"
id="path3126-9-92"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 29.5,611.36218 c 0,-5.52285 -2.857865,-9 -7,-9 -4.142135,0 -7.5,4.47715 -7.5,10 0.01745,0.4778 0.0091,0.94559 0,1.40625 0,3.64924 1.338425,7.18842 2.5,10.5 1.194515,3.40548 2.916785,6.39034 4.53125,9.4375 2.500615,4.7197 7.96875,13.65625 7.96875,13.65625 0,0 5.468135,-8.93655 7.96875,-13.65625 1.614465,-3.04716 3.336735,-6.03202 4.53125,-9.4375 1.161575,-3.31158 2.5,-6.85076 2.5,-10.5 -0.0142,-0.4872 -0.0093,-0.95731 0,-1.40625 0,-5.52285 -3.357865,-10 -7.5,-10 -4.142135,0 -7,3.47715 -7,9 0,1 -1,1 -1,0 z"
id="path3126-1-4-4"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 329.5,953.36218 c 0,5.52285 -2.85787,9 -7,9 -4.14214,0 -7.5,-4.47715 -7.5,-10 0.0174,-0.4778 0.009,-0.94559 0,-1.40625 0,-3.64924 1.33842,-7.18842 2.5,-10.5 1.19452,-3.40548 2.91678,-6.39034 4.53125,-9.4375 2.50061,-4.7197 7.96875,-13.65625 7.96875,-13.65625 0,0 5.46814,8.93655 7.96875,13.65625 1.61446,3.04716 3.33673,6.03202 4.53125,9.4375 1.16157,3.31158 2.5,6.85076 2.5,10.5 -0.0142,0.4872 -0.009,0.95731 0,1.40625 0,5.52285 -3.35787,10 -7.5,10 -4.14214,0 -7,-3.47715 -7,-9 0,-1 -1,-1 -1,0 z"
id="path3126-1-8"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.1 KiB

+101
View File
@@ -0,0 +1,101 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300" />
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3088">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-8"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 20,542.36208 0,14.99999 0,5 10,0 c 2.77,0 5.00001,2.23 5.00001,5.00005 l 0,14.99996 c 0,2.77001 -2.23001,5.00001 -5.00001,5.00001 -2.77,0 -5,-2.23 -5,-5.00001 l 0,-4.99999 -5,0 0,4.99999 c 0,5.54 4.46,10 10,10 5.54001,0 10,-4.46 10,-10 l 0,-14.99996 c 0,-5.54005 -4.45999,-10.00005 -10,-10.00005 l -5,0 0,-9.99998 5,0 10,0 0,-5.00001 -10,0 -5,0 z"
id="rect3163-6-0-0-2-6"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 340,1022.3622 0,-15 0,-5 -10,0 c -2.77,0 -5.00001,-2.23 -5.00001,-5.00006 l 0,-15.00002 c 0,-2.77 2.23001,-5 5.00001,-5 2.77,0 5,2.23 5,5 l 0,5 5,0 0,-5 c 0,-5.54 -4.46,-10 -10,-10 -5.54001,0 -10,4.46 -10,10 l 0,15.00002 c 0,5.54006 4.45999,10.00006 10,10.00006 l 5,0 0,10 -5,0 -10,0 0,5 10,0 5,0 z"
id="rect3163-6-0-0-2-4-7"
style="fill:#000000;fill-opacity:1;stroke:none" />
<g
transform="translate(60,557.36218)"
id="g3008">
<path
d="m 35.007873,55.984252 c 0.992126,4.003937 4.996063,14.031496 11.976378,14.031496 9,0 13.003937,-8.007874 13.003937,-18 C 59.988188,45 57.437006,40.393701 54.992125,35.007874 52.405511,29.267717 48.614172,24.129921 44.999999,18.992126 40.358267,12.401575 30.01181,0 30.01181,0 c 0,0 -10.381889,12.401575 -15.023621,18.992126 C 11.374015,24.129921 7.582677,29.267717 4.9960629,35.007874 2.5866141,40.393701 0,45 0,52.015748 c 0,9.992126 4.0039369,18 13.003937,18 6.980314,0 10.984251,-10.027559 12.01181,-14.031496 0.992126,-0.992126 0.992126,0 0.992126,1.027559 -0.992126,7.972441 -0.992126,9.992126 -2.019685,15.980315 C 22.996062,79.015748 19.984251,90 19.984251,90 c 5.031496,-1.984252 15.023622,-1.984252 20.019685,0 0,0 -3.011811,-10.984252 -4.003937,-17.007874 -0.992126,-5.988189 -0.992126,-8.007874 -1.984252,-15.980315 0,-1.027559 0,-2.019685 0.992126,-1.027559 z"
id="path3010"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" />
</g>
<g
transform="translate(240,557.36218)"
id="g3022">
<path
d="m 35.007873,55.984252 c 0.992126,4.003937 4.996063,14.031496 11.976378,14.031496 9,0 13.003937,-8.007874 13.003937,-18 C 59.988188,45 57.437006,40.393701 54.992125,35.007874 52.405511,29.267717 48.614172,24.129921 44.999999,18.992126 40.358267,12.401575 30.01181,0 30.01181,0 c 0,0 -10.381889,12.401575 -15.023621,18.992126 C 11.374015,24.129921 7.582677,29.267717 4.9960629,35.007874 2.5866141,40.393701 0,45 0,52.015748 c 0,9.992126 4.0039369,18 13.003937,18 6.980314,0 10.984251,-10.027559 12.01181,-14.031496 0.992126,-0.992126 0.992126,0 0.992126,1.027559 -0.992126,7.972441 -0.992126,9.992126 -2.019685,15.980315 C 22.996062,79.015748 19.984251,90 19.984251,90 c 5.031496,-1.984252 15.023622,-1.984252 20.019685,0 0,0 -3.011811,-10.984252 -4.003937,-17.007874 -0.992126,-5.988189 -0.992126,-8.007874 -1.984252,-15.980315 0,-1.027559 0,-2.019685 0.992126,-1.027559 z"
id="path3024"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" />
</g>
<g
transform="translate(150,737.36218)"
id="g3036">
<path
d="m 35.007873,55.984252 c 0.992126,4.003937 4.996063,14.031496 11.976378,14.031496 9,0 13.003937,-8.007874 13.003937,-18 C 59.988188,45 57.437006,40.393701 54.992125,35.007874 52.405511,29.267717 48.614172,24.129921 44.999999,18.992126 40.358267,12.401575 30.01181,0 30.01181,0 c 0,0 -10.381889,12.401575 -15.023621,18.992126 C 11.374015,24.129921 7.582677,29.267717 4.9960629,35.007874 2.5866141,40.393701 0,45 0,52.015748 c 0,9.992126 4.0039369,18 13.003937,18 6.980314,0 10.984251,-10.027559 12.01181,-14.031496 0.992126,-0.992126 0.992126,0 0.992126,1.027559 -0.992126,7.972441 -0.992126,9.992126 -2.019685,15.980315 C 22.996062,79.015748 19.984251,90 19.984251,90 c 5.031496,-1.984252 15.023622,-1.984252 20.019685,0 0,0 -3.011811,-10.984252 -4.003937,-17.007874 -0.992126,-5.988189 -0.992126,-8.007874 -1.984252,-15.980315 0,-1.027559 0,-2.019685 0.992126,-1.027559 z"
id="path3038"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" />
</g>
<g
transform="matrix(1,0,0,-1,60,1007.3622)"
id="g3050">
<path
d="m 35.007873,55.984252 c 0.992126,4.003937 4.996063,14.031496 11.976378,14.031496 9,0 13.003937,-8.007874 13.003937,-18 C 59.988188,45 57.437006,40.393701 54.992125,35.007874 52.405511,29.267717 48.614172,24.129921 44.999999,18.992126 40.358267,12.401575 30.01181,0 30.01181,0 c 0,0 -10.381889,12.401575 -15.023621,18.992126 C 11.374015,24.129921 7.582677,29.267717 4.9960629,35.007874 2.5866141,40.393701 0,45 0,52.015748 c 0,9.992126 4.0039369,18 13.003937,18 6.980314,0 10.984251,-10.027559 12.01181,-14.031496 0.992126,-0.992126 0.992126,0 0.992126,1.027559 -0.992126,7.972441 -0.992126,9.992126 -2.019685,15.980315 C 22.996062,79.015748 19.984251,90 19.984251,90 c 5.031496,-1.984252 15.023622,-1.984252 20.019685,0 0,0 -3.011811,-10.984252 -4.003937,-17.007874 -0.992126,-5.988189 -0.992126,-8.007874 -1.984252,-15.980315 0,-1.027559 0,-2.019685 0.992126,-1.027559 z"
id="path3052"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" />
</g>
<g
transform="matrix(1,0,0,-1,240,1007.3622)"
id="g3064">
<path
d="m 35.007873,55.984252 c 0.992126,4.003937 4.996063,14.031496 11.976378,14.031496 9,0 13.003937,-8.007874 13.003937,-18 C 59.988188,45 57.437006,40.393701 54.992125,35.007874 52.405511,29.267717 48.614172,24.129921 44.999999,18.992126 40.358267,12.401575 30.01181,0 30.01181,0 c 0,0 -10.381889,12.401575 -15.023621,18.992126 C 11.374015,24.129921 7.582677,29.267717 4.9960629,35.007874 2.5866141,40.393701 0,45 0,52.015748 c 0,9.992126 4.0039369,18 13.003937,18 6.980314,0 10.984251,-10.027559 12.01181,-14.031496 0.992126,-0.992126 0.992126,0 0.992126,1.027559 -0.992126,7.972441 -0.992126,9.992126 -2.019685,15.980315 C 22.996062,79.015748 19.984251,90 19.984251,90 c 5.031496,-1.984252 15.023622,-1.984252 20.019685,0 0,0 -3.011811,-10.984252 -4.003937,-17.007874 -0.992126,-5.988189 -0.992126,-8.007874 -1.984252,-15.980315 0,-1.027559 0,-2.019685 0.992126,-1.027559 z"
id="path3066"
style="fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none" />
</g>
<path
d="m 32.5,630.36218 c 0.5,2 2.5,7 6,7 4.5,0 6.5,-4 6.5,-9 0,-3.5 -1.289475,-5.80614 -2.5,-8.5 -1.28894,-2.86836 -3.18966,-5.4287 -5,-8 -2.32265,-3.29895 -7.5,-9.5 -7.5,-9.5 0,0 -5.17735,6.20105 -7.5,9.5 -1.81034,2.5713 -3.71106,5.13164 -5,8 -1.210525,2.69386 -2.5,5 -2.5,8.5 0,5 2,9 6.5,9 3.5,0 5.5,-5 6,-7 0.5,-0.5 0.5,0 0.5,0.5 -0.5,4 -0.5,5 -1,8 -0.5,3 -2,8.5 -2,8.5 2.5,-1 7.5,-1 10,0 0,0 -1.5,-5.5 -2,-8.5 -0.5,-3 -0.5,-4 -1,-8 0,-0.5 0,-1 0.5,-0.5 z"
id="path3037-7-4-72"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 332.5,934.36218 c 0.5,-2 2.5,-7 6,-7 4.5,0 6.5,4 6.5,9 0,3.5 -1.28947,5.80614 -2.5,8.5 -1.28894,2.86836 -3.18966,5.4287 -5,8 -2.32265,3.29895 -7.5,9.5 -7.5,9.5 0,0 -5.17735,-6.20105 -7.5,-9.5 -1.81034,-2.5713 -3.71106,-5.13164 -5,-8 -1.21053,-2.69386 -2.5,-5 -2.5,-8.5 0,-5 2,-9 6.5,-9 3.5,0 5.5,5 6,7 0.5,0.5 0.5,0 0.5,-0.5 -0.5,-4 -0.5,-5 -1,-8 -0.5,-3 -2,-8.5 -2,-8.5 2.5,1 7.5,1 10,0 0,0 -1.5,5.5 -2,8.5 -0.5,3 -0.5,4 -1,8 0,0.5 0,1 0.5,0.5 z"
id="path3037-7-4-1-2"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.4 KiB

+111
View File
@@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-1-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-08" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-0-8" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27291)"
id="g3062">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-61"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,542.36208 c -5.54,0 -10,4.46 -10,10 l 0,20 0,10 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-10 c 0,-5.54 -4.46,-10 -10,-10 -1.82264,0 -3.53152,0.49855 -5,1.34375 l 0,-11.34375 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,1 5,0 0,-1 c 0,-5.54 -4.46,-10 -10,-10 z m 0,25 c 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-10 c 0,-2.77 2.23,-5 5,-5 z"
id="rect3163-7-1-7-3-1-8"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 330,1022.3622 c 5.54,0 10,-4.46 10,-10 l 0,-20.00004 0,-10 c 0,-5.54 -4.46,-10 -10,-10 -5.54,0 -10,4.46 -10,10 l 0,10 c 0,5.54004 4.46,10.00004 10,10.00004 1.82264,0 3.53152,-0.4985 5,-1.3437 l 0,11.3437 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-1 -5,0 0,1 c 0,5.54 4.46,10 10,10 z m 0,-25 c -2.77,0 -5,-2.23 -5,-5.00004 l 0,-10 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77004 -2.23,5.00004 -5,5.00004 z"
id="rect3163-7-1-7-3-1-9-2"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,613.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-119"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,613.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-1-7"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,793.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-62"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,793.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-4-9"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,951.3622 c 2,-4 7,-10 12,-10 9,0 13,8 13,18 0,10 -4,19 -13,19 -5,0 -8,-5 -11,-8 -1,-1 -2,0 -1,1 3,3 8,11 8,18 0,8 -5,18 -13,18 -8,0 -13,-10 -13,-18 0,-7 5,-15 8,-18 1,-1 0,-2 -1,-1 -3,3 -6,8 -11,8 -9,0 -13,-9 -13,-19 0,-10 4,-18 13,-18 5,0 10,6 12,10 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-0-5"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,951.3622 c 2,-4 7,-10 12,-10 9,0 13,8 13,18 0,10 -4,19 -13,19 -5,0 -8,-5 -11,-8 -1,-1 -2,0 -1,1 3,3 8,11 8,18 0,8 -5,18 -13,18 -8,0 -13,-10 -13,-18 0,-7 5,-15 8,-18 1,-1 0,-2 -1,-1 -3,3 -6,8 -11,8 -9,0 -13,-9 -13,-19 0,-10 4,-18 13,-18 5,0 10,6 12,10 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-9-2"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 32.5,630.36218 c 1,2 3.5,5 6,5 4.5,0 6.5,-4 6.5,-9 0,-5 -2,-9.5 -6.5,-9.5 -2.5,0 -4,2.5 -5.5,4 -0.5,0.5 -1,0 -0.5,-0.5 1.5,-1.5 4,-5.5 4,-9 0,-4 -2.5,-9 -6.5,-9 -4,0 -6.5,5 -6.5,9 0,3.5 2.5,7.5 4,9 0.5,0.5 0,1 -0.5,0.5 -1.5,-1.5 -3,-4 -5.5,-4 -4.5,0 -6.5,4.5 -6.5,9.5 0,5 2,9 6.5,9 2.5,0 5,-3 6,-5 0.5,-0.5 0.5,0 0.5,0.5 -0.5,4 -0.5,5 -1,8 -0.5,3 -2,8.5 -2,8.5 2.5,-1 7.5,-1 10,0 0,0 -1.5,-5.5 -2,-8.5 -0.5,-3 -0.5,-4 -1,-8 0,-0.5 0,-1 0.5,-0.5 z"
id="path3037-1-4"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 332.5,934.36218 c 1,-2 3.5,-5 6,-5 4.5,0 6.5,4 6.5,9 0,5 -2,9.5 -6.5,9.5 -2.5,0 -4,-2.5 -5.5,-4 -0.5,-0.5 -1,0 -0.5,0.5 1.5,1.5 4,5.5 4,9 0,4 -2.5,9 -6.5,9 -4,0 -6.5,-5 -6.5,-9 0,-3.5 2.5,-7.5 4,-9 0.5,-0.5 0,-1 -0.5,-0.5 -1.5,1.5 -3,4 -5.5,4 -4.5,0 -6.5,-4.5 -6.5,-9.5 0,-5 2,-9 6.5,-9 2.5,0 5,3 6,5 0.5,0.5 0.5,0 0.5,-0.5 -0.5,-4 -0.5,-5 -1,-8 -0.5,-3 -2,-8.5 -2,-8.5 2.5,1 7.5,1 10,0 0,0 -1.5,5.5 -2,8.5 -0.5,3 -0.5,4 -1,8 0,0.5 0,1 0.5,0.5 z"
id="path3037-1-8-0"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.9 KiB

+105
View File
@@ -0,0 +1,105 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-1-8" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3015">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-4"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,542.36208 c -5.54,0 -10,4.46 -10,10 l 0,20 0,10 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-10 c 0,-5.54 -4.46,-10 -10,-10 -1.82264,0 -3.53152,0.49855 -5,1.34375 l 0,-11.34375 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,1 5,0 0,-1 c 0,-5.54 -4.46,-10 -10,-10 z m 0,25 c 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-10 c 0,-2.77 2.23,-5 5,-5 z"
id="rect3163-7-1-7-3-1"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 330,1022.3622 c 5.54,0 10,-4.46 10,-10 l 0,-20.00004 0,-10 c 0,-5.54 -4.46,-10 -10,-10 -5.54,0 -10,4.46 -10,10 l 0,10 c 0,5.54004 4.46,10.00004 10,10.00004 1.82264,0 3.53152,-0.4985 5,-1.3437 l 0,11.3437 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-1 -5,0 0,1 c 0,5.54 4.46,10 10,10 z m 0,-25 c -2.77,0 -5,-2.23 -5,-5.00004 l 0,-10 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77004 -2.23,5.00004 -5,5.00004 z"
id="rect3163-7-1-7-3-1-9"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 90,557.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-1-9"
style="fill:#ff5555;stroke:none" />
<path
d="m 270,557.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-7-9"
style="fill:#ff5555;stroke:none" />
<path
d="m 90,737.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-25"
style="fill:#ff5555;stroke:none" />
<path
d="m 270,737.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-4-5"
style="fill:#ff5555;stroke:none" />
<path
d="m 90,917.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25.00002 -13,25.00002 0,0 -6,-15.00002 -13,-25.00002 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-0-3"
style="fill:#ff5555;stroke:none" />
<path
d="m 270,917.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25.00002 -13,25.00002 0,0 -6,-15.00002 -13,-25.00002 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-9-33"
style="fill:#ff5555;stroke:none" />
<path
d="m 30,602.36218 c 0,0 3,7.5 6.5,12.5 3.5,5 8.5,10 8.5,10 0,0 -5,5 -8.5,10 -3.5,5 -6.5,12.5 -6.5,12.5 0,0 -3,-7.5 -6.5,-12.5 -3.5,-5 -8.5,-10 -8.5,-10 0,0 5,-5 8.5,-10 3.5,-5 6.5,-12.5 6.5,-12.5"
id="path3204-24-1-4-7"
style="fill:#ff5555;stroke:none" />
<path
d="m 330,917.36218 c 0,0 3,7.5 6.5,12.5 3.5,5 8.5,10 8.5,10 0,0 -5,5 -8.5,10 -3.5,5 -6.5,12.5 -6.5,12.5 0,0 -3,-7.5 -6.5,-12.5 -3.5,-5 -8.5,-10 -8.5,-10 0,0 5,-5 8.5,-10 3.5,-5 6.5,-12.5 6.5,-12.5"
id="path3204-24-1-8-4"
style="fill:#ff5555;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.9 KiB

+99
View File
@@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3062-5">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-08"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,542.36208 c -5.54,0 -10,4.46 -10,10 l 0,20 0,10 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-10 c 0,-5.54 -4.46,-10 -10,-10 -1.82264,0 -3.53152,0.49855 -5,1.34375 l 0,-11.34375 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,1 5,0 0,-1 c 0,-5.54 -4.46,-10 -10,-10 z m 0,25 c 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-10 c 0,-2.77 2.23,-5 5,-5 z"
id="rect3163-7-1-7-3-1-3"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 330,1022.3622 c 5.54,0 10,-4.46 10,-10 l 0,-20.00004 0,-10 c 0,-5.54 -4.46,-10 -10,-10 -5.54,0 -10,4.46 -10,10 l 0,10 c 0,5.54004 4.46,10.00004 10,10.00004 1.82264,0 3.53152,-0.4985 5,-1.3437 l 0,11.3437 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-1 -5,0 0,1 c 0,5.54 4.46,10 10,10 z m 0,-25 c -2.77,0 -5,-2.23 -5,-5.00004 l 0,-10 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77004 -2.23,5.00004 -5,5.00004 z"
id="rect3163-7-1-7-3-1-9-93"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 29.5,611.36218 c 0,-5.52285 -2.857865,-9 -7,-9 -4.142135,0 -7.5,4.47715 -7.5,10 0.01745,0.4778 0.0091,0.94559 0,1.40625 0,3.64924 1.338425,7.18842 2.5,10.5 1.194515,3.40548 2.916785,6.39034 4.53125,9.4375 2.500615,4.7197 7.96875,13.65625 7.96875,13.65625 0,0 5.468135,-8.93655 7.96875,-13.65625 1.614465,-3.04716 3.336735,-6.03202 4.53125,-9.4375 1.161575,-3.31158 2.5,-6.85076 2.5,-10.5 -0.0142,-0.4872 -0.0093,-0.95731 0,-1.40625 0,-5.52285 -3.357865,-10 -7.5,-10 -4.142135,0 -7,3.47715 -7,9 0,1 -1,1 -1,0 z"
id="path3126-1-1-9"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 329.5,953.36218 c 0,5.52285 -2.85787,9 -7,9 -4.14214,0 -7.5,-4.47715 -7.5,-10 0.0174,-0.4778 0.009,-0.94559 0,-1.40625 0,-3.64924 1.33842,-7.18842 2.5,-10.5 1.19452,-3.40548 2.91678,-6.39034 4.53125,-9.4375 2.50061,-4.7197 7.96875,-13.65625 7.96875,-13.65625 0,0 5.46814,8.93655 7.96875,13.65625 1.61446,3.04716 3.33673,6.03202 4.53125,9.4375 1.16157,3.31158 2.5,6.85076 2.5,10.5 -0.0142,0.4872 -0.009,0.95731 0,1.40625 0,5.52285 -3.35787,10 -7.5,10 -4.14214,0 -7,-3.47715 -7,-9 0,-1 -1,-1 -1,0 z"
id="path3126-1-7-6"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 89,575.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-7"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 269,575.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-4-9"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 89,755.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-0-9"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 269,755.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-9-7"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 89,989.3622 c 0,11.0457 -5.71573,18 -14,18 -8.28427,0 -15,-8.95431 -15,-20 0.0349,-0.95559 0.0182,-1.89119 0,-2.8125 0,-7.29848 2.67685,-14.37684 5,-21 2.38903,-6.81096 5.83357,-12.78067 9.0625,-18.875 C 79.06373,935.2353 90,917.36218 90,917.36218 c 0,0 10.93627,17.87312 15.9375,27.31252 3.22893,6.09433 6.67347,12.06404 9.0625,18.875 2.32315,6.62316 5,13.70152 5,21 -0.0284,0.9744 -0.0186,1.91462 0,2.8125 0,11.04569 -6.71573,20 -15,20 -8.28427,0 -14,-6.9543 -14,-18 0,-2 -2,-2 -2,0 z"
id="path3126-48-6"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 269,989.3622 c 0,11.0457 -5.71573,18 -14,18 -8.28427,0 -15,-8.95431 -15,-20 0.0349,-0.95559 0.0182,-1.89119 0,-2.8125 0,-7.29848 2.67685,-14.37684 5,-21 2.38903,-6.81096 5.83357,-12.78067 9.0625,-18.875 C 259.06373,935.2353 270,917.36218 270,917.36218 c 0,0 10.93627,17.87312 15.9375,27.31252 3.22893,6.09433 6.67347,12.06404 9.0625,18.875 2.32315,6.62316 5,13.70152 5,21 -0.0284,0.9744 -0.0186,1.91462 0,2.8125 0,11.04569 -6.71573,20 -15,20 -8.28427,0 -14,-6.9543 -14,-18 0,-2 -2,-2 -2,0 z"
id="path3126-8-9"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.3 KiB

+85
View File
@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300" />
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3062-9">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-41"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,542.36208 c -5.54,0 -10,4.46 -10,10 l 0,20 0,10 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-10 c 0,-5.54 -4.46,-10 -10,-10 -1.82264,0 -3.53152,0.49855 -5,1.34375 l 0,-11.34375 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,1 5,0 0,-1 c 0,-5.54 -4.46,-10 -10,-10 z m 0,25 c 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-10 c 0,-2.77 2.23,-5 5,-5 z"
id="rect3163-7-1-7-3-1-96"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 330,1022.3622 c 5.54,0 10,-4.46 10,-10 l 0,-20.00004 0,-10 c 0,-5.54 -4.46,-10 -10,-10 -5.54,0 -10,4.46 -10,10 l 0,10 c 0,5.54004 4.46,10.00004 10,10.00004 1.82264,0 3.53152,-0.4985 5,-1.3437 l 0,11.3437 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-1 -5,0 0,1 c 0,5.54 4.46,10 10,10 z m 0,-25 c -2.77,0 -5,-2.23 -5,-5.00004 l 0,-10 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77004 -2.23,5.00004 -5,5.00004 z"
id="rect3163-7-1-7-3-1-9-9"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,613.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-825"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,613.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-17-5"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,793.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-4-49"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,793.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-0-1"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,951.3622 c 1,-4 5,-14 12,-14 9,0 13,8 13,18 0,7 -2.57895,11.61229 -5,17 -2.57788,5.73673 -6.37932,10.85741 -10,16 -4.6453,6.5979 -15,19 -15,19 0,0 -10.3547,-12.4021 -15,-19 -3.62068,-5.14259 -7.42212,-10.26327 -10,-16 -2.42105,-5.38771 -5,-10 -5,-17 0,-10 4,-18 13,-18 7,0 11,10 12,14 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-7-9"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,951.3622 c 1,-4 5,-14 12,-14 9,0 13,8 13,18 0,7 -2.57895,11.61229 -5,17 -2.57788,5.73673 -6.37932,10.85741 -10,16 -4.6453,6.5979 -15,19 -15,19 0,0 -10.3547,-12.4021 -15,-19 -3.62068,-5.14259 -7.42212,-10.26327 -10,-16 -2.42105,-5.38771 -5,-10 -5,-17 0,-10 4,-18 13,-18 7,0 11,10 12,14 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-7-48-2"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 32.5,630.36218 c 0.5,2 2.5,7 6,7 4.5,0 6.5,-4 6.5,-9 0,-3.5 -1.289475,-5.80614 -2.5,-8.5 -1.28894,-2.86836 -3.18966,-5.4287 -5,-8 -2.32265,-3.29895 -7.5,-9.5 -7.5,-9.5 0,0 -5.17735,6.20105 -7.5,9.5 -1.81034,2.5713 -3.71106,5.13164 -5,8 -1.210525,2.69386 -2.5,5 -2.5,8.5 0,5 2,9 6.5,9 3.5,0 5.5,-5 6,-7 0.5,-0.5 0.5,0 0.5,0.5 -0.5,4 -0.5,5 -1,8 -0.5,3 -2,8.5 -2,8.5 2.5,-1 7.5,-1 10,0 0,0 -1.5,-5.5 -2,-8.5 -0.5,-3 -0.5,-4 -1,-8 0,-0.5 0,-1 0.5,-0.5 z"
id="path3037-7-4-8"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 332.5,934.36218 c 0.5,-2 2.5,-7 6,-7 4.5,0 6.5,4 6.5,9 0,3.5 -1.28947,5.80614 -2.5,8.5 -1.28894,2.86836 -3.18966,5.4287 -5,8 -2.32265,3.29895 -7.5,9.5 -7.5,9.5 0,0 -5.17735,-6.20105 -7.5,-9.5 -1.81034,-2.5713 -3.71106,-5.13164 -5,-8 -1.21053,-2.69386 -2.5,-5 -2.5,-8.5 0,-5 2,-9 6.5,-9 3.5,0 5.5,5 6,7 0.5,0.5 0.5,0 0.5,-0.5 -0.5,-4 -0.5,-5 -1,-8 -0.5,-3 -2,-8.5 -2,-8.5 2.5,1 7.5,1 10,0 0,0 -1.5,5.5 -2,8.5 -0.5,3 -0.5,4 -1,8 0,0.5 0,1 0.5,0.5 z"
id="path3037-7-4-2"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.4 KiB

+115
View File
@@ -0,0 +1,115 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-1-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-08" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-0-8" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27291)"
id="g3078">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-660"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 20,542.36208 0,5 0,5 5,0 0,-5 10,0 -10,45 5,0 10,-45 0,-5 -20,0 z"
id="rect3980-2-1-93-3"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 340,1022.3622 0,-5 0,-5 -5,0 0,5 -10,0 10,-45.00004 -5,0 -10,45.00004 0,5 20,0 z"
id="rect3980-2-1-93-0-8"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 32.5,630.36218 c 1,2 3.5,5 6,5 4.5,0 6.5,-4 6.5,-9 0,-5 -2,-9.5 -6.5,-9.5 -2.5,0 -4,2.5 -5.5,4 -0.5,0.5 -1,0 -0.5,-0.5 1.5,-1.5 4,-5.5 4,-9 0,-4 -2.5,-9 -6.5,-9 -4,0 -6.5,5 -6.5,9 0,3.5 2.5,7.5 4,9 0.5,0.5 0,1 -0.5,0.5 -1.5,-1.5 -3,-4 -5.5,-4 -4.5,0 -6.5,4.5 -6.5,9.5 0,5 2,9 6.5,9 2.5,0 5,-3 6,-5 0.5,-0.5 0.5,0 0.5,0.5 -0.5,4 -0.5,5 -1,8 -0.5,3 -2,8.5 -2,8.5 2.5,-1 7.5,-1 10,0 0,0 -1.5,-5.5 -2,-8.5 -0.5,-3 -0.5,-4 -1,-8 0,-0.5 0,-1 0.5,-0.5 z"
id="path3037-1-0"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 332.5,934.36218 c 1,-2 3.5,-5 6,-5 4.5,0 6.5,4 6.5,9 0,5 -2,9.5 -6.5,9.5 -2.5,0 -4,-2.5 -5.5,-4 -0.5,-0.5 -1,0 -0.5,0.5 1.5,1.5 4,5.5 4,9 0,4 -2.5,9 -6.5,9 -4,0 -6.5,-5 -6.5,-9 0,-3.5 2.5,-7.5 4,-9 0.5,-0.5 0,-1 -0.5,-0.5 -1.5,1.5 -3,4 -5.5,4 -4.5,0 -6.5,-4.5 -6.5,-9.5 0,-5 2,-9 6.5,-9 2.5,0 5,3 6,5 0.5,0.5 0.5,0 0.5,-0.5 -0.5,-4 -0.5,-5 -1,-8 -0.5,-3 -2,-8.5 -2,-8.5 2.5,1 7.5,1 10,0 0,0 -1.5,5.5 -2,8.5 -0.5,3 -0.5,4 -1,8 0,0.5 0,1 0.5,0.5 z"
id="path3037-1-1-1"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,613.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-25"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,613.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-094"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,703.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-4-7"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,793.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-0-8"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,793.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-9-3"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,951.3622 c 2,-4 7,-10 12,-10 9,0 13,8 13,18 0,10 -4,19 -13,19 -5,0 -8,-5 -11,-8 -1,-1 -2,0 -1,1 3,3 8,11 8,18 0,8 -5,18 -13,18 -8,0 -13,-10 -13,-18 0,-7 5,-15 8,-18 1,-1 0,-2 -1,-1 -3,3 -6,8 -11,8 -9,0 -13,-9 -13,-19 0,-10 4,-18 13,-18 5,0 10,6 12,10 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-48"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,951.3622 c 2,-4 7,-10 12,-10 9,0 13,8 13,18 0,10 -4,19 -13,19 -5,0 -8,-5 -11,-8 -1,-1 -2,0 -1,1 3,3 8,11 8,18 0,8 -5,18 -13,18 -8,0 -13,-10 -13,-18 0,-7 5,-15 8,-18 1,-1 0,-2 -1,-1 -3,3 -6,8 -11,8 -9,0 -13,-9 -13,-19 0,-10 4,-18 13,-18 5,0 10,6 12,10 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-8"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.7 KiB

+109
View File
@@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-1-8" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3092">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-39"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 20,542.36208 0,5 0,5 5,0 0,-5 10,0 -10,45 5,0 10,-45 0,-5 -20,0 z"
id="rect3980-2-1-93-8"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 340,1022.3622 0,-5 0,-5 -5,0 0,5 -10,0 10,-45.00004 -5,0 -10,45.00004 0,5 20,0 z"
id="rect3980-2-1-93-0-80"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 30,602.36218 c 0,0 3,7.5 6.5,12.5 3.5,5 8.5,10 8.5,10 0,0 -5,5 -8.5,10 -3.5,5 -6.5,12.5 -6.5,12.5 0,0 -3,-7.5 -6.5,-12.5 -3.5,-5 -8.5,-10 -8.5,-10 0,0 5,-5 8.5,-10 3.5,-5 6.5,-12.5 6.5,-12.5"
id="path3204-24-1-8"
style="fill:#ff5555;stroke:none" />
<path
d="m 330,917.36218 c 0,0 3,7.5 6.5,12.5 3.5,5 8.5,10 8.5,10 0,0 -5,5 -8.5,10 -3.5,5 -6.5,12.5 -6.5,12.5 0,0 -3,-7.5 -6.5,-12.5 -3.5,-5 -8.5,-10 -8.5,-10 0,0 5,-5 8.5,-10 3.5,-5 6.5,-12.5 6.5,-12.5"
id="path3204-24-1-1-7"
style="fill:#ff5555;stroke:none" />
<path
d="m 90,557.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-9-7"
style="fill:#ff5555;stroke:none" />
<path
d="m 270,557.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-4-83"
style="fill:#ff5555;stroke:none" />
<path
d="m 180,647.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-8-8"
style="fill:#ff5555;stroke:none" />
<path
d="m 90,737.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-37"
style="fill:#ff5555;stroke:none" />
<path
d="m 270,737.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-82"
style="fill:#ff5555;stroke:none" />
<path
d="m 90,917.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25.00002 -13,25.00002 0,0 -6,-15.00002 -13,-25.00002 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-45-1"
style="fill:#ff5555;stroke:none" />
<path
d="m 270,917.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25.00002 -13,25.00002 0,0 -6,-15.00002 -13,-25.00002 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-5"
style="fill:#ff5555;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

+103
View File
@@ -0,0 +1,103 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3071-5">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-12"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 20,542.36208 0,5 0,5 5,0 0,-5 10,0 -10,45 5,0 10,-45 0,-5 -20,0 z"
id="rect3980-2-1-93-01"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 340,1022.3622 0,-5 0,-5 -5,0 0,5 -10,0 10,-45.00004 -5,0 -10,45.00004 0,5 20,0 z"
id="rect3980-2-1-93-0-6"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 89,575.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-406"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 269,575.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-17-1"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 179,665.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-4-8"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 89,755.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-0"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 269,755.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-9"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 89,989.3622 c 0,11.0457 -5.71573,18 -14,18 -8.28427,0 -15,-8.95431 -15,-20 0.0349,-0.95559 0.0182,-1.89119 0,-2.8125 0,-7.29848 2.67685,-14.37684 5,-21 2.38903,-6.81096 5.83357,-12.78067 9.0625,-18.875 C 79.06373,935.2353 90,917.36218 90,917.36218 c 0,0 10.93627,17.87312 15.9375,27.31252 3.22893,6.09433 6.67347,12.06404 9.0625,18.875 2.32315,6.62316 5,13.70152 5,21 -0.0284,0.9744 -0.0186,1.91462 0,2.8125 0,11.04569 -6.71573,20 -15,20 -8.28427,0 -14,-6.9543 -14,-18 0,-2 -2,-2 -2,0 z"
id="path3126-48-9"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 269,989.3622 c 0,11.0457 -5.71573,18 -14,18 -8.28427,0 -15,-8.95431 -15,-20 0.0349,-0.95559 0.0182,-1.89119 0,-2.8125 0,-7.29848 2.67685,-14.37684 5,-21 2.38903,-6.81096 5.83357,-12.78067 9.0625,-18.875 C 259.06373,935.2353 270,917.36218 270,917.36218 c 0,0 10.93627,17.87312 15.9375,27.31252 3.22893,6.09433 6.67347,12.06404 9.0625,18.875 2.32315,6.62316 5,13.70152 5,21 -0.0284,0.9744 -0.0186,1.91462 0,2.8125 0,11.04569 -6.71573,20 -15,20 -8.28427,0 -14,-6.9543 -14,-18 0,-2 -2,-2 -2,0 z"
id="path3126-8-8"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 29.5,611.36218 c 0,-5.52285 -2.857865,-9 -7,-9 -4.142135,0 -7.5,4.47715 -7.5,10 0.01745,0.4778 0.0091,0.94559 0,1.40625 0,3.64924 1.338425,7.18842 2.5,10.5 1.194515,3.40548 2.916785,6.39034 4.53125,9.4375 2.500615,4.7197 7.96875,13.65625 7.96875,13.65625 0,0 5.468135,-8.93655 7.96875,-13.65625 1.614465,-3.04716 3.336735,-6.03202 4.53125,-9.4375 1.161575,-3.31158 2.5,-6.85076 2.5,-10.5 -0.0142,-0.4872 -0.0093,-0.95731 0,-1.40625 0,-5.52285 -3.357865,-10 -7.5,-10 -4.142135,0 -7,3.47715 -7,9 0,1 -1,1 -1,0 z"
id="path3126-1-41"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 329.5,953.36218 c 0,5.52285 -2.85787,9 -7,9 -4.14214,0 -7.5,-4.47715 -7.5,-10 0.0174,-0.4778 0.009,-0.94559 0,-1.40625 0,-3.64924 1.33842,-7.18842 2.5,-10.5 1.19452,-3.40548 2.91678,-6.39034 4.53125,-9.4375 2.50061,-4.7197 7.96875,-13.65625 7.96875,-13.65625 0,0 5.46814,8.93655 7.96875,13.65625 1.61446,3.04716 3.33673,6.03202 4.53125,9.4375 1.16157,3.31158 2.5,6.85076 2.5,10.5 -0.0142,0.4872 -0.009,0.95731 0,1.40625 0,5.52285 -3.35787,10 -7.5,10 -4.14214,0 -7,-3.47715 -7,-9 0,-1 -1,-1 -1,0 z"
id="path3126-1-2-4"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.2 KiB

+89
View File
@@ -0,0 +1,89 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300" />
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3071">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-3"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 20,542.36208 0,5 0,5 5,0 0,-5 10,0 -10,45 5,0 10,-45 0,-5 -20,0 z"
id="rect3980-2-1-93"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 340,1022.3622 0,-5 0,-5 -5,0 0,5 -10,0 10,-45.00004 -5,0 -10,45.00004 0,5 20,0 z"
id="rect3980-2-1-93-0"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,613.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-59"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,613.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-17"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,703.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-4-9"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,793.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-0"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,793.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-94"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,951.3622 c 1,-4 5,-14 12,-14 9,0 13,8 13,18 0,7 -2.57895,11.61229 -5,17 -2.57788,5.73673 -6.37932,10.85741 -10,16 -4.6453,6.5979 -15,19 -15,19 0,0 -10.3547,-12.4021 -15,-19 -3.62068,-5.14259 -7.42212,-10.26327 -10,-16 -2.42105,-5.38771 -5,-10 -5,-17 0,-10 4,-18 13,-18 7,0 11,10 12,14 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-7-8-8"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,951.3622 c 1,-4 5,-14 12,-14 9,0 13,8 13,18 0,7 -2.57895,11.61229 -5,17 -2.57788,5.73673 -6.37932,10.85741 -10,16 -4.6453,6.5979 -15,19 -15,19 0,0 -10.3547,-12.4021 -15,-19 -3.62068,-5.14259 -7.42212,-10.26327 -10,-16 -2.42105,-5.38771 -5,-10 -5,-17 0,-10 4,-18 13,-18 7,0 11,10 12,14 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-7-82-1"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 32.5,630.36218 c 0.5,2 2.5,7 6,7 4.5,0 6.5,-4 6.5,-9 0,-3.5 -1.289475,-5.80614 -2.5,-8.5 -1.28894,-2.86836 -3.18966,-5.4287 -5,-8 -2.32265,-3.29895 -7.5,-9.5 -7.5,-9.5 0,0 -5.17735,6.20105 -7.5,9.5 -1.81034,2.5713 -3.71106,5.13164 -5,8 -1.210525,2.69386 -2.5,5 -2.5,8.5 0,5 2,9 6.5,9 3.5,0 5.5,-5 6,-7 0.5,-0.5 0.5,0 0.5,0.5 -0.5,4 -0.5,5 -1,8 -0.5,3 -2,8.5 -2,8.5 2.5,-1 7.5,-1 10,0 0,0 -1.5,-5.5 -2,-8.5 -0.5,-3 -0.5,-4 -1,-8 0,-0.5 0,-1 0.5,-0.5 z"
id="path3037-7-4-4-82"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 332.5,934.36218 c 0.5,-2 2.5,-7 6,-7 4.5,0 6.5,4 6.5,9 0,3.5 -1.28947,5.80614 -2.5,8.5 -1.28894,2.86836 -3.18966,5.4287 -5,8 -2.32265,3.29895 -7.5,9.5 -7.5,9.5 0,0 -5.17735,-6.20105 -7.5,-9.5 -1.81034,-2.5713 -3.71106,-5.13164 -5,-8 -1.21053,-2.69386 -2.5,-5 -2.5,-8.5 0,-5 2,-9 6.5,-9 3.5,0 5.5,5 6,7 0.5,0.5 0.5,0 0.5,-0.5 -0.5,-4 -0.5,-5 -1,-8 -0.5,-3 -2,-8.5 -2,-8.5 2.5,1 7.5,1 10,0 0,0 -1.5,5.5 -2,8.5 -0.5,3 -0.5,4 -1,8 0,0.5 0,1 0.5,0.5 z"
id="path3037-7-4-5"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 6.2 KiB

+119
View File
@@ -0,0 +1,119 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-1-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-08" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-0-8" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27291)"
id="g3087">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-13"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,542.36208 c -5.54,0 -10,4.46 -10,10 l 0,5 c 0,3.0036 1.323,5.67 3.4063,7.5 -2.0833,1.83 -3.4063,4.4964 -3.4063,7.5 l 0,10 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-10 c 0,-3.0036 -1.323,-5.67 -3.4062,-7.5 2.0832,-1.83 3.4062,-4.4964 3.4062,-7.5 l 0,-5 c 0,-5.54 -4.46,-10 -10,-10 z m 0,5 c 2.77,0 5,2.23 5,5 l 0,5 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-5 c 0,-2.77 2.23,-5 5,-5 z m 0,20 c 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-10 c 0,-2.77 2.23,-5 5,-5 z"
id="rect3163-5-18-0-7-5"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 330,1022.3621 c -5.54,0 -10,-4.46 -10,-10 l 0,-5 c 0,-3.0036 1.323,-5.67 3.4063,-7.5 C 321.323,998.0321 320,995.3657 320,992.36208 l 0,-10 c 0,-5.54 4.46,-10 10,-10 5.54,0 10,4.46 10,10 l 0,10 c 0,3.00362 -1.323,5.67002 -3.4062,7.50002 2.0832,1.83 3.4062,4.4964 3.4062,7.5 l 0,5 c 0,5.54 -4.46,10 -10,10 z m 0,-5 c 2.77,0 5,-2.23 5,-5 l 0,-5 c 0,-2.77 -2.23,-5 -5,-5 -2.77,0 -5,2.23 -5,5 l 0,5 c 0,2.77 2.23,5 5,5 z m 0,-20 c 2.77,0 5,-2.23 5,-5.00002 l 0,-10 c 0,-2.77 -2.23,-5 -5,-5 -2.77,0 -5,2.23 -5,5 l 0,10 c 0,2.77002 2.23,5.00002 5,5.00002 z"
id="rect3163-5-18-0-7-4-9"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 32.5,630.36218 c 1,2 3.5,5 6,5 4.5,0 6.5,-4 6.5,-9 0,-5 -2,-9.5 -6.5,-9.5 -2.5,0 -4,2.5 -5.5,4 -0.5,0.5 -1,0 -0.5,-0.5 1.5,-1.5 4,-5.5 4,-9 0,-4 -2.5,-9 -6.5,-9 -4,0 -6.5,5 -6.5,9 0,3.5 2.5,7.5 4,9 0.5,0.5 0,1 -0.5,0.5 -1.5,-1.5 -3,-4 -5.5,-4 -4.5,0 -6.5,4.5 -6.5,9.5 0,5 2,9 6.5,9 2.5,0 5,-3 6,-5 0.5,-0.5 0.5,0 0.5,0.5 -0.5,4 -0.5,5 -1,8 -0.5,3 -2,8.5 -2,8.5 2.5,-1 7.5,-1 10,0 0,0 -1.5,-5.5 -2,-8.5 -0.5,-3 -0.5,-4 -1,-8 0,-0.5 0,-1 0.5,-0.5 z"
id="path3037-1-8"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 332.5,934.36218 c 1,-2 3.5,-5 6,-5 4.5,0 6.5,4 6.5,9 0,5 -2,9.5 -6.5,9.5 -2.5,0 -4,-2.5 -5.5,-4 -0.5,-0.5 -1,0 -0.5,0.5 1.5,1.5 4,5.5 4,9 0,4 -2.5,9 -6.5,9 -4,0 -6.5,-5 -6.5,-9 0,-3.5 2.5,-7.5 4,-9 0.5,-0.5 0,-1 -0.5,-0.5 -1.5,1.5 -3,4 -5.5,4 -4.5,0 -6.5,-4.5 -6.5,-9.5 0,-5 2,-9 6.5,-9 2.5,0 5,3 6,5 0.5,0.5 0.5,0 0.5,-0.5 -0.5,-4 -0.5,-5 -1,-8 -0.5,-3 -2,-8.5 -2,-8.5 2.5,1 7.5,1 10,0 0,0 -1.5,5.5 -2,8.5 -0.5,3 -0.5,4 -1,8 0,0.5 0,1 0.5,0.5 z"
id="path3037-1-1-4"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,613.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-07"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,613.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-6"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,703.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-4-3"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,793.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-0-6"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,793.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-9-1"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,861.36218 c 2,-4 7,-10 12,-10 9,0 13,8 13,18 0,10 -4,19 -13,19 -5,0 -8,-5 -11,-8 -1,-1 -2,0 -1,1 3,3 8,11 8,18 0,8 -5,18 -13,18 -8,0 -13,-10 -13,-18 0,-7 5,-15 8,-18 1,-1 0,-2 -1,-1 -3,3 -6,8 -11,8 -9,0 -13,-9 -13,-19 0,-10 4,-18 13,-18 5,0 10,6 12,10 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17 -4,-17 5,2 15,2 20,0 0,0 -3,11 -4,17 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-488-5"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,951.3622 c 2,-4 7,-10 12,-10 9,0 13,8 13,18 0,10 -4,19 -13,19 -5,0 -8,-5 -11,-8 -1,-1 -2,0 -1,1 3,3 8,11 8,18 0,8 -5,18 -13,18 -8,0 -13,-10 -13,-18 0,-7 5,-15 8,-18 1,-1 0,-2 -1,-1 -3,3 -6,8 -11,8 -9,0 -13,-9 -13,-19 0,-10 4,-18 13,-18 5,0 10,6 12,10 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-2-4"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,951.3622 c 2,-4 7,-10 12,-10 9,0 13,8 13,18 0,10 -4,19 -13,19 -5,0 -8,-5 -11,-8 -1,-1 -2,0 -1,1 3,3 8,11 8,18 0,8 -5,18 -13,18 -8,0 -13,-10 -13,-18 0,-7 5,-15 8,-18 1,-1 0,-2 -1,-1 -3,3 -6,8 -11,8 -9,0 -13,-9 -13,-19 0,-10 4,-18 13,-18 5,0 10,6 12,10 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-45-2"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.1 KiB

+113
View File
@@ -0,0 +1,113 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-1-8" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g2996">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-0"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,542.36208 c -5.54,0 -10,4.46 -10,10 l 0,5 c 0,3.0036 1.323,5.67 3.4063,7.5 -2.0833,1.83 -3.4063,4.4964 -3.4063,7.5 l 0,10 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-10 c 0,-3.0036 -1.323,-5.67 -3.4062,-7.5 2.0832,-1.83 3.4062,-4.4964 3.4062,-7.5 l 0,-5 c 0,-5.54 -4.46,-10 -10,-10 z m 0,5 c 2.77,0 5,2.23 5,5 l 0,5 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-5 c 0,-2.77 2.23,-5 5,-5 z m 0,20 c 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-10 c 0,-2.77 2.23,-5 5,-5 z"
id="rect3163-5-18-0-7-9"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 330,1022.3621 c -5.54,0 -10,-4.46 -10,-10 l 0,-5 c 0,-3.0036 1.323,-5.67 3.4063,-7.5 C 321.323,998.0321 320,995.3657 320,992.36208 l 0,-10 c 0,-5.54 4.46,-10 10,-10 5.54,0 10,4.46 10,10 l 0,10 c 0,3.00362 -1.323,5.67002 -3.4062,7.50002 2.0832,1.83 3.4062,4.4964 3.4062,7.5 l 0,5 c 0,5.54 -4.46,10 -10,10 z m 0,-5 c 2.77,0 5,-2.23 5,-5 l 0,-5 c 0,-2.77 -2.23,-5 -5,-5 -2.77,0 -5,2.23 -5,5 l 0,5 c 0,2.77 2.23,5 5,5 z m 0,-20 c 2.77,0 5,-2.23 5,-5.00002 l 0,-10 c 0,-2.77 -2.23,-5 -5,-5 -2.77,0 -5,2.23 -5,5 l 0,10 c 0,2.77002 2.23,5.00002 5,5.00002 z"
id="rect3163-5-18-0-7-4-7"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 90,557.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-1-3"
style="fill:#ff5555;stroke:none" />
<path
d="m 270,557.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-7-7"
style="fill:#ff5555;stroke:none" />
<path
d="m 180,647.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-4-2"
style="fill:#ff5555;stroke:none" />
<path
d="m 90,737.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-6"
style="fill:#ff5555;stroke:none" />
<path
d="m 270,737.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-0-0"
style="fill:#ff5555;stroke:none" />
<path
d="m 180,827.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-9-1"
style="fill:#ff5555;stroke:none" />
<path
d="m 90,917.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25.00002 -13,25.00002 0,0 -6,-15.00002 -13,-25.00002 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-48-6"
style="fill:#ff5555;stroke:none" />
<path
d="m 270,917.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25.00002 -13,25.00002 0,0 -6,-15.00002 -13,-25.00002 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-8-5"
style="fill:#ff5555;stroke:none" />
<path
d="m 30,602.36218 c 0,0 3,7.5 6.5,12.5 3.5,5 8.5,10 8.5,10 0,0 -5,5 -8.5,10 -3.5,5 -6.5,12.5 -6.5,12.5 0,0 -3,-7.5 -6.5,-12.5 -3.5,-5 -8.5,-10 -8.5,-10 0,0 5,-5 8.5,-10 3.5,-5 6.5,-12.5 6.5,-12.5"
id="path3204-24-1-2"
style="fill:#ff5555;stroke:none" />
<path
d="m 330,917.36218 c 0,0 3,7.5 6.5,12.5 3.5,5 8.5,10 8.5,10 0,0 -5,5 -8.5,10 -3.5,5 -6.5,12.5 -6.5,12.5 0,0 -3,-7.5 -6.5,-12.5 -3.5,-5 -8.5,-10 -8.5,-10 0,0 5,-5 8.5,-10 3.5,-5 6.5,-12.5 6.5,-12.5"
id="path3204-24-1-4"
style="fill:#ff5555;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

+107
View File
@@ -0,0 +1,107 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3087-0">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-7"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,542.36208 c -5.54,0 -10,4.46 -10,10 l 0,5 c 0,3.0036 1.323,5.67 3.4063,7.5 -2.0833,1.83 -3.4063,4.4964 -3.4063,7.5 l 0,10 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-10 c 0,-3.0036 -1.323,-5.67 -3.4062,-7.5 2.0832,-1.83 3.4062,-4.4964 3.4062,-7.5 l 0,-5 c 0,-5.54 -4.46,-10 -10,-10 z m 0,5 c 2.77,0 5,2.23 5,5 l 0,5 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-5 c 0,-2.77 2.23,-5 5,-5 z m 0,20 c 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-10 c 0,-2.77 2.23,-5 5,-5 z"
id="rect3163-5-18-0-7-3"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 330,1022.3621 c -5.54,0 -10,-4.46 -10,-10 l 0,-5 c 0,-3.0036 1.323,-5.67 3.4063,-7.5 C 321.323,998.0321 320,995.3657 320,992.36208 l 0,-10 c 0,-5.54 4.46,-10 10,-10 5.54,0 10,4.46 10,10 l 0,10 c 0,3.00362 -1.323,5.67002 -3.4062,7.50002 2.0832,1.83 3.4062,4.4964 3.4062,7.5 l 0,5 c 0,5.54 -4.46,10 -10,10 z m 0,-5 c 2.77,0 5,-2.23 5,-5 l 0,-5 c 0,-2.77 -2.23,-5 -5,-5 -2.77,0 -5,2.23 -5,5 l 0,5 c 0,2.77 2.23,5 5,5 z m 0,-20 c 2.77,0 5,-2.23 5,-5.00002 l 0,-10 c 0,-2.77 -2.23,-5 -5,-5 -2.77,0 -5,2.23 -5,5 l 0,10 c 0,2.77002 2.23,5.00002 5,5.00002 z"
id="rect3163-5-18-0-7-4-4"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 329.5,953.36218 c 0,5.52285 -2.85787,9 -7,9 -4.14214,0 -7.5,-4.47715 -7.5,-10 0.0174,-0.4778 0.009,-0.94559 0,-1.40625 0,-3.64924 1.33842,-7.18842 2.5,-10.5 1.19452,-3.40548 2.91678,-6.39034 4.53125,-9.4375 2.50061,-4.7197 7.96875,-13.65625 7.96875,-13.65625 0,0 5.46814,8.93655 7.96875,13.65625 1.61446,3.04716 3.33673,6.03202 4.53125,9.4375 1.16157,3.31158 2.5,6.85076 2.5,10.5 -0.0142,0.4872 -0.009,0.95731 0,1.40625 0,5.52285 -3.35787,10 -7.5,10 -4.14214,0 -7,-3.47715 -7,-9 0,-1 -1,-1 -1,0 z"
id="path3126-1-7-9"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 89,575.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-65"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 269,575.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-4-1"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 179,665.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-0-0"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 89,755.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-9-9"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 269,755.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-48-96"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 179,899.36218 c 0,11.04569 -5.71573,18 -14,18 -8.28427,0 -15,-8.95431 -15,-20 0.0349,-0.95559 0.0182,-1.89119 0,-2.8125 0,-7.29848 2.67685,-14.37684 5,-21 2.38903,-6.81096 5.83357,-12.78067 9.0625,-18.875 5.00123,-9.4394 15.9375,-27.3125 15.9375,-27.3125 0,0 10.93627,17.8731 15.9375,27.3125 3.22893,6.09433 6.67347,12.06404 9.0625,18.875 2.32315,6.62316 5,13.70152 5,21 -0.0284,0.9744 -0.0186,1.91462 0,2.8125 0,11.04569 -6.71573,20 -15,20 -8.28427,0 -14,-6.95431 -14,-18 0,-2 -2,-2 -2,0 z"
id="path3126-8-83"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 89,989.3622 c 0,11.0457 -5.71573,18 -14,18 -8.28427,0 -15,-8.95431 -15,-20 0.0349,-0.95559 0.0182,-1.89119 0,-2.8125 0,-7.29848 2.67685,-14.37684 5,-21 2.38903,-6.81096 5.83357,-12.78067 9.0625,-18.875 C 79.06373,935.2353 90,917.36218 90,917.36218 c 0,0 10.93627,17.87312 15.9375,27.31252 3.22893,6.09433 6.67347,12.06404 9.0625,18.875 2.32315,6.62316 5,13.70152 5,21 -0.0284,0.9744 -0.0186,1.91462 0,2.8125 0,11.04569 -6.71573,20 -15,20 -8.28427,0 -14,-6.9543 -14,-18 0,-2 -2,-2 -2,0 z"
id="path3126-24"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 269,989.3622 c 0,11.0457 -5.71573,18 -14,18 -8.28427,0 -15,-8.95431 -15,-20 0.0349,-0.95559 0.0182,-1.89119 0,-2.8125 0,-7.29848 2.67685,-14.37684 5,-21 2.38903,-6.81096 5.83357,-12.78067 9.0625,-18.875 C 259.06373,935.2353 270,917.36218 270,917.36218 c 0,0 10.93627,17.87312 15.9375,27.31252 3.22893,6.09433 6.67347,12.06404 9.0625,18.875 2.32315,6.62316 5,13.70152 5,21 -0.0284,0.9744 -0.0186,1.91462 0,2.8125 0,11.04569 -6.71573,20 -15,20 -8.28427,0 -14,-6.9543 -14,-18 0,-2 -2,-2 -2,0 z"
id="path3126-5"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 29.5,611.36218 c 0,-5.52285 -2.857865,-9 -7,-9 -4.142135,0 -7.5,4.47715 -7.5,10 0.01745,0.4778 0.0091,0.94559 0,1.40625 0,3.64924 1.338425,7.18842 2.5,10.5 1.194515,3.40548 2.916785,6.39034 4.53125,9.4375 2.500615,4.7197 7.96875,13.65625 7.96875,13.65625 0,0 5.468135,-8.93655 7.96875,-13.65625 1.614465,-3.04716 3.336735,-6.03202 4.53125,-9.4375 1.161575,-3.31158 2.5,-6.85076 2.5,-10.5 -0.0142,-0.4872 -0.0093,-0.95731 0,-1.40625 0,-5.52285 -3.357865,-10 -7.5,-10 -4.142135,0 -7,3.47715 -7,9 0,1 -1,1 -1,0 z"
id="path3126-1-48"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.7 KiB

+93
View File
@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300" />
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3102">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-66"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,542.36208 c -5.54,0 -10,4.46 -10,10 l 0,5 c 0,3.0036 1.323,5.67 3.4063,7.5 -2.0833,1.83 -3.4063,4.4964 -3.4063,7.5 l 0,10 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-10 c 0,-3.0036 -1.323,-5.67 -3.4062,-7.5 2.0832,-1.83 3.4062,-4.4964 3.4062,-7.5 l 0,-5 c 0,-5.54 -4.46,-10 -10,-10 z m 0,5 c 2.77,0 5,2.23 5,5 l 0,5 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-5 c 0,-2.77 2.23,-5 5,-5 z m 0,20 c 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-10 c 0,-2.77 2.23,-5 5,-5 z"
id="rect3163-5-18-0-7"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 330,1022.3621 c -5.54,0 -10,-4.46 -10,-10 l 0,-5 c 0,-3.0036 1.323,-5.67 3.4063,-7.5 C 321.323,998.0321 320,995.3657 320,992.36208 l 0,-10 c 0,-5.54 4.46,-10 10,-10 5.54,0 10,4.46 10,10 l 0,10 c 0,3.00362 -1.323,5.67002 -3.4062,7.50002 2.0832,1.83 3.4062,4.4964 3.4062,7.5 l 0,5 c 0,5.54 -4.46,10 -10,10 z m 0,-5 c 2.77,0 5,-2.23 5,-5 l 0,-5 c 0,-2.77 -2.23,-5 -5,-5 -2.77,0 -5,2.23 -5,5 l 0,5 c 0,2.77 2.23,5 5,5 z m 0,-20 c 2.77,0 5,-2.23 5,-5.00002 l 0,-10 c 0,-2.77 -2.23,-5 -5,-5 -2.77,0 -5,2.23 -5,5 l 0,10 c 0,2.77002 2.23,5.00002 5,5.00002 z"
id="rect3163-5-18-0-7-4"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 32.5,630.36218 c 0.5,2 2.5,7 6,7 4.5,0 6.5,-4 6.5,-9 0,-3.5 -1.289475,-5.80614 -2.5,-8.5 -1.28894,-2.86836 -3.18966,-5.4287 -5,-8 -2.32265,-3.29895 -7.5,-9.5 -7.5,-9.5 0,0 -5.17735,6.20105 -7.5,9.5 -1.81034,2.5713 -3.71106,5.13164 -5,8 -1.210525,2.69386 -2.5,5 -2.5,8.5 0,5 2,9 6.5,9 3.5,0 5.5,-5 6,-7 0.5,-0.5 0.5,0 0.5,0.5 -0.5,4 -0.5,5 -1,8 -0.5,3 -2,8.5 -2,8.5 2.5,-1 7.5,-1 10,0 0,0 -1.5,-5.5 -2,-8.5 -0.5,-3 -0.5,-4 -1,-8 0,-0.5 0,-1 0.5,-0.5 z"
id="path3037-7-4-7-1"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 332.5,934.36218 c 0.5,-2 2.5,-7 6,-7 4.5,0 6.5,4 6.5,9 0,3.5 -1.28947,5.80614 -2.5,8.5 -1.28894,2.86836 -3.18966,5.4287 -5,8 -2.32265,3.29895 -7.5,9.5 -7.5,9.5 0,0 -5.17735,-6.20105 -7.5,-9.5 -1.81034,-2.5713 -3.71106,-5.13164 -5,-8 -1.21053,-2.69386 -2.5,-5 -2.5,-8.5 0,-5 2,-9 6.5,-9 3.5,0 5.5,5 6,7 0.5,0.5 0.5,0 0.5,-0.5 -0.5,-4 -0.5,-5 -1,-8 -0.5,-3 -2,-8.5 -2,-8.5 2.5,1 7.5,1 10,0 0,0 -1.5,5.5 -2,8.5 -0.5,3 -0.5,4 -1,8 0,0.5 0,1 0.5,0.5 z"
id="path3037-7-4-4-8"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,613.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-49"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,613.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-09-6"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,703.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-4-3"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,793.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-8-7"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,793.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-82-8"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,861.36218 c 1,-4 5,-14 12,-14 9,0 13,8 13,18 0,7 -2.57895,11.61229 -5,17 -2.57788,5.73673 -6.37932,10.85741 -10,16 -4.6453,6.5979 -15,19 -15,19 0,0 -10.3547,-12.4021 -15,-19 -3.62068,-5.14259 -7.42212,-10.26327 -10,-16 -2.42105,-5.38771 -5,-10 -5,-17 0,-10 4,-18 13,-18 7,0 11,10 12,14 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17 -4,-17 5,2 15,2 20,0 0,0 -3,11 -4,17 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-7-45-8"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,951.3622 c 1,-4 5,-14 12,-14 9,0 13,8 13,18 0,7 -2.57895,11.61229 -5,17 -2.57788,5.73673 -6.37932,10.85741 -10,16 -4.6453,6.5979 -15,19 -15,19 0,0 -10.3547,-12.4021 -15,-19 -3.62068,-5.14259 -7.42212,-10.26327 -10,-16 -2.42105,-5.38771 -5,-10 -5,-17 0,-10 4,-18 13,-18 7,0 11,10 12,14 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-7-5-2"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,951.3622 c 1,-4 5,-14 12,-14 9,0 13,8 13,18 0,7 -2.57895,11.61229 -5,17 -2.57788,5.73673 -6.37932,10.85741 -10,16 -4.6453,6.5979 -15,19 -15,19 0,0 -10.3547,-12.4021 -15,-19 -3.62068,-5.14259 -7.42212,-10.26327 -10,-16 -2.42105,-5.38771 -5,-10 -5,-17 0,-10 4,-18 13,-18 7,0 11,10 12,14 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-7-1-9"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.6 KiB

+123
View File
@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-1-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-08" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-0-8" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27291)"
id="g3089-3">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-123"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,592.36208 c 5.54,0 10,-4.46 10,-10 l 0,-20 0,-10 c 0,-5.54 -4.46,-10 -10,-10 -5.54,0 -10,4.46 -10,10 l 0,10 c 0,5.54 4.46,10 10,10 1.8226,0 3.5315,-0.4986 5,-1.3438 l 0,11.3438 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-1 -5,0 0,1 c 0,5.54 4.46,10 10,10 z m 0,-25 c -2.77,0 -5,-2.23 -5,-5 l 0,-10 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77 -2.23,5 -5,5 z"
id="rect3163-7-1-7-3-0-78-3"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 330,972.36208 c -5.54,0 -10,4.46 -10,10 l 0,20.00002 0,10 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-10 c 0,-5.54 -4.46,-10.00002 -10,-10.00002 -1.8226,0 -3.5315,0.4986 -5,1.3438 l 0,-11.3438 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,1 5,0 0,-1 c 0,-5.54 -4.46,-10 -10,-10 z m 0,25.00002 c 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-10 c 0,-2.77 2.23,-5 5,-5 z"
id="rect3163-7-1-7-3-0-78-1-4"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,613.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-11"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,613.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-1-3"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,733.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-874"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,793.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-4-2"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,733.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-0-7"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,831.36218 c 2,-4 7,-10 12,-10 9,0 13,8 13,18 0,10 -4,19 -13,19 -5,0 -8,-5 -11,-8 -1,-1 -2,0 -1,1 3,3 8,11 8,18 0,8 -5,18 -13,18 -8,0 -13,-10 -13,-18 0,-7 5,-15 8,-18 1,-1 0,-2 -1,-1 -3,3 -6,8 -11,8 -9,0 -13,-9 -13,-19 0,-10 4,-18 13,-18 5,0 10,6 12,10 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17 -4,-17 5,2 15,2 20,0 0,0 -3,11 -4,17 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-9-7"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,831.36218 c 2,-4 7,-10 12,-10 9,0 13,8 13,18 0,10 -4,19 -13,19 -5,0 -8,-5 -11,-8 -1,-1 -2,0 -1,1 3,3 8,11 8,18 0,8 -5,18 -13,18 -8,0 -13,-10 -13,-18 0,-7 5,-15 8,-18 1,-1 0,-2 -1,-1 -3,3 -6,8 -11,8 -9,0 -13,-9 -13,-19 0,-10 4,-18 13,-18 5,0 10,6 12,10 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17 -4,-17 5,2 15,2 20,0 0,0 -3,11 -4,17 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-488-9"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,951.3622 c 2,-4 7,-10 12,-10 9,0 13,8 13,18 0,10 -4,19 -13,19 -5,0 -8,-5 -11,-8 -1,-1 -2,0 -1,1 3,3 8,11 8,18 0,8 -5,18 -13,18 -8,0 -13,-10 -13,-18 0,-7 5,-15 8,-18 1,-1 0,-2 -1,-1 -3,3 -6,8 -11,8 -9,0 -13,-9 -13,-19 0,-10 4,-18 13,-18 5,0 10,6 12,10 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-2-3"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,951.3622 c 2,-4 7,-10 12,-10 9,0 13,8 13,18 0,10 -4,19 -13,19 -5,0 -8,-5 -11,-8 -1,-1 -2,0 -1,1 3,3 8,11 8,18 0,8 -5,18 -13,18 -8,0 -13,-10 -13,-18 0,-7 5,-15 8,-18 1,-1 0,-2 -1,-1 -3,3 -6,8 -11,8 -9,0 -13,-9 -13,-19 0,-10 4,-18 13,-18 5,0 10,6 12,10 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-45-1"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 32.5,630.36218 c 1,2 3.5,5 6,5 4.5,0 6.5,-4 6.5,-9 0,-5 -2,-9.5 -6.5,-9.5 -2.5,0 -4,2.5 -5.5,4 -0.5,0.5 -1,0 -0.5,-0.5 1.5,-1.5 4,-5.5 4,-9 0,-4 -2.5,-9 -6.5,-9 -4,0 -6.5,5 -6.5,9 0,3.5 2.5,7.5 4,9 0.5,0.5 0,1 -0.5,0.5 -1.5,-1.5 -3,-4 -5.5,-4 -4.5,0 -6.5,4.5 -6.5,9.5 0,5 2,9 6.5,9 2.5,0 5,-3 6,-5 0.5,-0.5 0.5,0 0.5,0.5 -0.5,4 -0.5,5 -1,8 -0.5,3 -2,8.5 -2,8.5 2.5,-1 7.5,-1 10,0 0,0 -1.5,-5.5 -2,-8.5 -0.5,-3 -0.5,-4 -1,-8 0,-0.5 0,-1 0.5,-0.5 z"
id="path3037-1-5"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 332.5,934.36218 c 1,-2 3.5,-5 6,-5 4.5,0 6.5,4 6.5,9 0,5 -2,9.5 -6.5,9.5 -2.5,0 -4,-2.5 -5.5,-4 -0.5,-0.5 -1,0 -0.5,0.5 1.5,1.5 4,5.5 4,9 0,4 -2.5,9 -6.5,9 -4,0 -6.5,-5 -6.5,-9 0,-3.5 2.5,-7.5 4,-9 0.5,-0.5 0,-1 -0.5,-0.5 -1.5,1.5 -3,4 -5.5,4 -4.5,0 -6.5,-4.5 -6.5,-9.5 0,-5 2,-9 6.5,-9 2.5,0 5,3 6,5 0.5,0.5 0.5,0 0.5,-0.5 -0.5,-4 -0.5,-5 -1,-8 -0.5,-3 -2,-8.5 -2,-8.5 2.5,1 7.5,1 10,0 0,0 -1.5,5.5 -2,8.5 -0.5,3 -0.5,4 -1,8 0,0.5 0,1 0.5,0.5 z"
id="path3037-1-1-9"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 8.3 KiB

+117
View File
@@ -0,0 +1,117 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-1-8" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3089-86">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-50"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,592.36208 c 5.54,0 10,-4.46 10,-10 l 0,-20 0,-10 c 0,-5.54 -4.46,-10 -10,-10 -5.54,0 -10,4.46 -10,10 l 0,10 c 0,5.54 4.46,10 10,10 1.8226,0 3.5315,-0.4986 5,-1.3438 l 0,11.3438 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-1 -5,0 0,1 c 0,5.54 4.46,10 10,10 z m 0,-25 c -2.77,0 -5,-2.23 -5,-5 l 0,-10 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77 -2.23,5 -5,5 z"
id="rect3163-7-1-7-3-0-78-9"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 330,972.36208 c -5.54,0 -10,4.46 -10,10 l 0,20.00002 0,10 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-10 c 0,-5.54 -4.46,-10.00002 -10,-10.00002 -1.8226,0 -3.5315,0.4986 -5,1.3438 l 0,-11.3438 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,1 5,0 0,-1 c 0,-5.54 -4.46,-10 -10,-10 z m 0,25.00002 c 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-10 c 0,-2.77 2.23,-5 5,-5 z"
id="rect3163-7-1-7-3-0-78-1-0"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 30,602.36218 c 0,0 3,7.5 6.5,12.5 3.5,5 8.5,10 8.5,10 0,0 -5,5 -8.5,10 -3.5,5 -6.5,12.5 -6.5,12.5 0,0 -3,-7.5 -6.5,-12.5 -3.5,-5 -8.5,-10 -8.5,-10 0,0 5,-5 8.5,-10 3.5,-5 6.5,-12.5 6.5,-12.5"
id="path3204-24-1-0"
style="fill:#ff5555;stroke:none" />
<path
d="m 330,917.36218 c 0,0 3,7.5 6.5,12.5 3.5,5 8.5,10 8.5,10 0,0 -5,5 -8.5,10 -3.5,5 -6.5,12.5 -6.5,12.5 0,0 -3,-7.5 -6.5,-12.5 -3.5,-5 -8.5,-10 -8.5,-10 0,0 5,-5 8.5,-10 3.5,-5 6.5,-12.5 6.5,-12.5"
id="path3204-24-1-1-6"
style="fill:#ff5555;stroke:none" />
<path
d="m 90,557.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-7-1"
style="fill:#ff5555;stroke:none" />
<path
d="m 90,677.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-3"
style="fill:#ff5555;stroke:none" />
<path
d="m 90,797.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-4-8"
style="fill:#ff5555;stroke:none" />
<path
d="m 90,917.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25.00002 -13,25.00002 0,0 -6,-15.00002 -13,-25.00002 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-0-9"
style="fill:#ff5555;stroke:none" />
<path
d="m 180,737.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-9-3"
style="fill:#ff5555;stroke:none" />
<path
d="m 270,557.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-48-4"
style="fill:#ff5555;stroke:none" />
<path
d="m 270,677.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-8-4"
style="fill:#ff5555;stroke:none" />
<path
d="m 270,797.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-2-6"
style="fill:#ff5555;stroke:none" />
<path
d="m 270,917.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25.00002 -13,25.00002 0,0 -6,-15.00002 -13,-25.00002 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-45-0"
style="fill:#ff5555;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.7 KiB

+111
View File
@@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3089-8">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-65"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,592.36208 c 5.54,0 10,-4.46 10,-10 l 0,-20 0,-10 c 0,-5.54 -4.46,-10 -10,-10 -5.54,0 -10,4.46 -10,10 l 0,10 c 0,5.54 4.46,10 10,10 1.8226,0 3.5315,-0.4986 5,-1.3438 l 0,11.3438 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-1 -5,0 0,1 c 0,5.54 4.46,10 10,10 z m 0,-25 c -2.77,0 -5,-2.23 -5,-5 l 0,-10 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77 -2.23,5 -5,5 z"
id="rect3163-7-1-7-3-0-78-0"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 330,972.36208 c -5.54,0 -10,4.46 -10,10 l 0,20.00002 0,10 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-10 c 0,-5.54 -4.46,-10.00002 -10,-10.00002 -1.8226,0 -3.5315,0.4986 -5,1.3438 l 0,-11.3438 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,1 5,0 0,-1 c 0,-5.54 -4.46,-10 -10,-10 z m 0,25.00002 c 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-10 c 0,-2.77 2.23,-5 5,-5 z"
id="rect3163-7-1-7-3-0-78-1-2"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 89,575.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-86"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 269,575.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-17"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 89,695.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-40"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 269,695.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-94"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 179,755.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-8"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 89,869.36218 c 0,11.04569 -5.71573,18 -14,18 -8.28427,0 -15,-8.95431 -15,-20 0.0349,-0.95559 0.0182,-1.89119 0,-2.8125 0,-7.29848 2.67685,-14.37684 5,-21 2.38903,-6.81096 5.83357,-12.78067 9.0625,-18.875 C 79.06373,815.23528 90,797.36218 90,797.36218 c 0,0 10.93627,17.8731 15.9375,27.3125 3.22893,6.09433 6.67347,12.06404 9.0625,18.875 2.32315,6.62316 5,13.70152 5,21 -0.0284,0.9744 -0.0186,1.91462 0,2.8125 0,11.04569 -6.71573,20 -15,20 -8.28427,0 -14,-6.95431 -14,-18 0,-2 -2,-2 -2,0 z"
id="path3126-82-0"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 269,869.36218 c 0,11.04569 -5.71573,18 -14,18 -8.28427,0 -15,-8.95431 -15,-20 0.0349,-0.95559 0.0182,-1.89119 0,-2.8125 0,-7.29848 2.67685,-14.37684 5,-21 2.38903,-6.81096 5.83357,-12.78067 9.0625,-18.875 5.00123,-9.4394 15.9375,-27.3125 15.9375,-27.3125 0,0 10.93627,17.8731 15.9375,27.3125 3.22893,6.09433 6.67347,12.06404 9.0625,18.875 2.32315,6.62316 5,13.70152 5,21 -0.0284,0.9744 -0.0186,1.91462 0,2.8125 0,11.04569 -6.71573,20 -15,20 -8.28427,0 -14,-6.95431 -14,-18 0,-2 -2,-2 -2,0 z"
id="path3126-4"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 89,989.3622 c 0,11.0457 -5.71573,18 -14,18 -8.28427,0 -15,-8.95431 -15,-20 0.0349,-0.95559 0.0182,-1.89119 0,-2.8125 0,-7.29848 2.67685,-14.37684 5,-21 2.38903,-6.81096 5.83357,-12.78067 9.0625,-18.875 C 79.06373,935.2353 90,917.36218 90,917.36218 c 0,0 10.93627,17.87312 15.9375,27.31252 3.22893,6.09433 6.67347,12.06404 9.0625,18.875 2.32315,6.62316 5,13.70152 5,21 -0.0284,0.9744 -0.0186,1.91462 0,2.8125 0,11.04569 -6.71573,20 -15,20 -8.28427,0 -14,-6.9543 -14,-18 0,-2 -2,-2 -2,0 z"
id="path3126-55"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 269,989.3622 c 0,11.0457 -5.71573,18 -14,18 -8.28427,0 -15,-8.95431 -15,-20 0.0349,-0.95559 0.0182,-1.89119 0,-2.8125 0,-7.29848 2.67685,-14.37684 5,-21 2.38903,-6.81096 5.83357,-12.78067 9.0625,-18.875 C 259.06373,935.2353 270,917.36218 270,917.36218 c 0,0 10.93627,17.87312 15.9375,27.31252 3.22893,6.09433 6.67347,12.06404 9.0625,18.875 2.32315,6.62316 5,13.70152 5,21 -0.0284,0.9744 -0.0186,1.91462 0,2.8125 0,11.04569 -6.71573,20 -15,20 -8.28427,0 -14,-6.9543 -14,-18 0,-2 -2,-2 -2,0 z"
id="path3126-1-2"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 29.5,611.36218 c 0,-5.52285 -2.857865,-9 -7,-9 -4.142135,0 -7.5,4.47715 -7.5,10 0.01745,0.4778 0.0091,0.94559 0,1.40625 0,3.64924 1.338425,7.18842 2.5,10.5 1.194515,3.40548 2.916785,6.39034 4.53125,9.4375 2.500615,4.7197 7.96875,13.65625 7.96875,13.65625 0,0 5.468135,-8.93655 7.96875,-13.65625 1.614465,-3.04716 3.336735,-6.03202 4.53125,-9.4375 1.161575,-3.31158 2.5,-6.85076 2.5,-10.5 -0.0142,-0.4872 -0.0093,-0.95731 0,-1.40625 0,-5.52285 -3.357865,-10 -7.5,-10 -4.142135,0 -7,3.47715 -7,9 0,1 -1,1 -1,0 z"
id="path3126-1-7-4"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 329.5,953.36218 c 0,5.52285 -2.85787,9 -7,9 -4.14214,0 -7.5,-4.47715 -7.5,-10 0.0174,-0.4778 0.009,-0.94559 0,-1.40625 0,-3.64924 1.33842,-7.18842 2.5,-10.5 1.19452,-3.40548 2.91678,-6.39034 4.53125,-9.4375 2.50061,-4.7197 7.96875,-13.65625 7.96875,-13.65625 0,0 5.46814,8.93655 7.96875,13.65625 1.61446,3.04716 3.33673,6.03202 4.53125,9.4375 1.16157,3.31158 2.5,6.85076 2.5,10.5 -0.0142,0.4872 -0.009,0.95731 0,1.40625 0,5.52285 -3.35787,10 -7.5,10 -4.14214,0 -7,-3.47715 -7,-9 0,-1 -1,-1 -1,0 z"
id="path3126-1-1"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 9.0 KiB

+97
View File
@@ -0,0 +1,97 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300" />
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3089">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-68"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 30,592.36208 c 5.54,0 10,-4.46 10,-10 l 0,-20 0,-10 c 0,-5.54 -4.46,-10 -10,-10 -5.54,0 -10,4.46 -10,10 l 0,10 c 0,5.54 4.46,10 10,10 1.8226,0 3.5315,-0.4986 5,-1.3438 l 0,11.3438 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-1 -5,0 0,1 c 0,5.54 4.46,10 10,10 z m 0,-25 c -2.77,0 -5,-2.23 -5,-5 l 0,-10 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77 -2.23,5 -5,5 z"
id="rect3163-7-1-7-3-0-78"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 330,972.36208 c -5.54,0 -10,4.46 -10,10 l 0,20.00002 0,10 c 0,5.54 4.46,10 10,10 5.54,0 10,-4.46 10,-10 l 0,-10 c 0,-5.54 -4.46,-10.00002 -10,-10.00002 -1.8226,0 -3.5315,0.4986 -5,1.3438 l 0,-11.3438 c 0,-2.77 2.23,-5 5,-5 2.77,0 5,2.23 5,5 l 0,1 5,0 0,-1 c 0,-5.54 -4.46,-10 -10,-10 z m 0,25.00002 c 2.77,0 5,2.23 5,5 l 0,10 c 0,2.77 -2.23,5 -5,5 -2.77,0 -5,-2.23 -5,-5 l 0,-10 c 0,-2.77 2.23,-5 5,-5 z"
id="rect3163-7-1-7-3-0-78-1"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 32.5,630.36218 c 0.5,2 2.5,7 6,7 4.5,0 6.5,-4 6.5,-9 0,-3.5 -1.289475,-5.80614 -2.5,-8.5 -1.28894,-2.86836 -3.18966,-5.4287 -5,-8 -2.32265,-3.29895 -7.5,-9.5 -7.5,-9.5 0,0 -5.17735,6.20105 -7.5,9.5 -1.81034,2.5713 -3.71106,5.13164 -5,8 -1.210525,2.69386 -2.5,5 -2.5,8.5 0,5 2,9 6.5,9 3.5,0 5.5,-5 6,-7 0.5,-0.5 0.5,0 0.5,0.5 -0.5,4 -0.5,5 -1,8 -0.5,3 -2,8.5 -2,8.5 2.5,-1 7.5,-1 10,0 0,0 -1.5,-5.5 -2,-8.5 -0.5,-3 -0.5,-4 -1,-8 0,-0.5 0,-1 0.5,-0.5 z"
id="path3037-7-4-1"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 332.5,934.36218 c 0.5,-2 2.5,-7 6,-7 4.5,0 6.5,4 6.5,9 0,3.5 -1.28947,5.80614 -2.5,8.5 -1.28894,2.86836 -3.18966,5.4287 -5,8 -2.32265,3.29895 -7.5,9.5 -7.5,9.5 0,0 -5.17735,-6.20105 -7.5,-9.5 -1.81034,-2.5713 -3.71106,-5.13164 -5,-8 -1.21053,-2.69386 -2.5,-5 -2.5,-8.5 0,-5 2,-9 6.5,-9 3.5,0 5.5,5 6,7 0.5,0.5 0.5,0 0.5,-0.5 -0.5,-4 -0.5,-5 -1,-8 -0.5,-3 -2,-8.5 -2,-8.5 2.5,1 7.5,1 10,0 0,0 -1.5,5.5 -2,8.5 -0.5,3 -0.5,4 -1,8 0,0.5 0,1 0.5,0.5 z"
id="path3037-7-4-7-5"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,613.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-76"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,613.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-4-18"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,733.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-09-9"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,733.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-48"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 185,793.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-8-2"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,831.36218 c 1,-4 5,-14 12,-14 9,0 13,8 13,18 0,7 -2.57895,11.61229 -5,17 -2.57788,5.73673 -6.37932,10.85741 -10,16 -4.6453,6.5979 -15,19 -15,19 0,0 -10.3547,-12.4021 -15,-19 -3.62068,-5.14259 -7.42212,-10.26327 -10,-16 -2.42105,-5.38771 -5,-10 -5,-17 0,-10 4,-18 13,-18 7,0 11,10 12,14 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17 -4,-17 5,2 15,2 20,0 0,0 -3,11 -4,17 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-7-2-7"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,831.36218 c 1,-4 5,-14 12,-14 9,0 13,8 13,18 0,7 -2.57895,11.61229 -5,17 -2.57788,5.73673 -6.37932,10.85741 -10,16 -4.6453,6.5979 -15,19 -15,19 0,0 -10.3547,-12.4021 -15,-19 -3.62068,-5.14259 -7.42212,-10.26327 -10,-16 -2.42105,-5.38771 -5,-10 -5,-17 0,-10 4,-18 13,-18 7,0 11,10 12,14 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17 -4,-17 5,2 15,2 20,0 0,0 -3,11 -4,17 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-7-45-9"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 95,951.3622 c 1,-4 5,-14 12,-14 9,0 13,8 13,18 0,7 -2.57895,11.61229 -5,17 -2.57788,5.73673 -6.37932,10.85741 -10,16 -4.6453,6.5979 -15,19 -15,19 0,0 -10.3547,-12.4021 -15,-19 -3.62068,-5.14259 -7.42212,-10.26327 -10,-16 -2.42105,-5.38771 -5,-10 -5,-17 0,-10 4,-18 13,-18 7,0 11,10 12,14 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-7-5-5"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 275,951.3622 c 1,-4 5,-14 12,-14 9,0 13,8 13,18 0,7 -2.57895,11.61229 -5,17 -2.57788,5.73673 -6.37932,10.85741 -10,16 -4.6453,6.5979 -15,19 -15,19 0,0 -10.3547,-12.4021 -15,-19 -3.62068,-5.14259 -7.42212,-10.26327 -10,-16 -2.42105,-5.38771 -5,-10 -5,-17 0,-10 4,-18 13,-18 7,0 11,10 12,14 1,1 1,0 1,-1 -1,-8 -1,-10 -2,-16 -1,-6 -4,-17.00002 -4,-17.00002 5,2 15,2 20,0 0,0 -3,11.00002 -4,17.00002 -1,6 -1,8 -2,16 0,1 0,2 1,1 z"
id="path3037-7-1-4"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 7.9 KiB

+35
View File
@@ -0,0 +1,35 @@
# Card Asset Licensing
**Source:** [Category:SVG English pattern playing cards](https://commons.wikimedia.org/wiki/Category:SVG_English_pattern_playing_cards) on Wikimedia Commons
**License:** CC0 1.0 Universal (Public Domain Dedication) — <https://creativecommons.org/publicdomain/zero/1.0/>
**Author:** Dmitry Fomin ([User:Dmitry_Fomin](https://commons.wikimedia.org/wiki/User:Dmitry_Fomin))
## What this means
CC0 is a public domain dedication. You may use, modify, and redistribute these
files for any purpose, including commercial games, with **no attribution
required** and no obligation to open-source your own code. Attribution is
retained here as a courtesy, not an obligation.
## Contents
53 files, all verified CC0 at download time (2026-07-24):
- 52 individual card faces (`<rank>_of_<suit>.svg`), 360 × 540 px each
- Ranks: `2``10`, `jack`, `queen`, `king`, `ace`
- Suits: `clubs`, `diamonds`, `hearts`, `spades`
- `playing_cards_deck.svg` — full 52-card sheet (~2.5 MB)
## Deliberately excluded
`English pattern playing cards deck PLUS.svg` was **not** downloaded. Unlike the
rest of the category, it is licensed **LGPL**, not CC0 — a copyleft license with
redistribution conditions that are a poor fit for game assets. Everything you
need is covered by the 52 individual cards above.
## Not included
There is no **card back** design in this category — you will need to source or
draw one separately.
+91
View File
@@ -0,0 +1,91 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-1-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-08" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-0-8" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27291)"
id="g3035-04">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-54"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 27.5,542.36218 -9,50 5,0 2.34375,-13 8.3125,0 2.34375,13 5,0 -9,-50 -5,0 z m 2.5,13.90625 3.25,18.09375 -6.5,0 3.25,-18.09375 z"
id="path3497"
style="fill:#000000;stroke:none" />
<path
d="m 327.5,1022.3622 -9,-50.00004 5,0 2.34375,13 8.3125,0 2.34375,-13 5,0 -9,50.00004 -5,0 z m 2.5,-13.9063 3.25,-18.09372 -6.5,0 3.25,18.09372 z"
id="path3497-5"
style="fill:#000000;stroke:none" />
<path
d="m 185,793.36218 c 2,4 7,10 12,10 9,0 13,-8 13,-18 0,-10 -4,-19 -13,-19 -5,0 -8,5 -11,8 -1,1 -2,0 -1,-1 3,-3 8,-11 8,-18 0,-8 -5,-18 -13,-18 -8,0 -13,10 -13,18 0,7 5,15 8,18 1,1 0,2 -1,1 -3,-3 -6,-8 -11,-8 -9,0 -13,9 -13,19 0,10 4,18 13,18 5,0 10,-6 12,-10 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-95"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 32.5,630.36218 c 1,2 3.5,5 6,5 4.5,0 6.5,-4 6.5,-9 0,-5 -2,-9.5 -6.5,-9.5 -2.5,0 -4,2.5 -5.5,4 -0.5,0.5 -1,0 -0.5,-0.5 1.5,-1.5 4,-5.5 4,-9 0,-4 -2.5,-9 -6.5,-9 -4,0 -6.5,5 -6.5,9 0,3.5 2.5,7.5 4,9 0.5,0.5 0,1 -0.5,0.5 -1.5,-1.5 -3,-4 -5.5,-4 -4.5,0 -6.5,4.5 -6.5,9.5 0,5 2,9 6.5,9 2.5,0 5,-3 6,-5 0.5,-0.5 0.5,0 0.5,0.5 -0.5,4 -0.5,5 -1,8 -0.5,3 -2,8.5 -2,8.5 2.5,-1 7.5,-1 10,0 0,0 -1.5,-5.5 -2,-8.5 -0.5,-3 -0.5,-4 -1,-8 0,-0.5 0,-1 0.5,-0.5 z"
id="path3037-1-6"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 332.5,934.36218 c 1,-2 3.5,-5 6,-5 4.5,0 6.5,4 6.5,9 0,5 -2,9.5 -6.5,9.5 -2.5,0 -4,-2.5 -5.5,-4 -0.5,-0.5 -1,0 -0.5,0.5 1.5,1.5 4,5.5 4,9 0,4 -2.5,9 -6.5,9 -4,0 -6.5,-5 -6.5,-9 0,-3.5 2.5,-7.5 4,-9 0.5,-0.5 0,-1 -0.5,-0.5 -1.5,1.5 -3,4 -5.5,4 -4.5,0 -6.5,-4.5 -6.5,-9.5 0,-5 2,-9 6.5,-9 2.5,0 5,3 6,5 0.5,0.5 0.5,0 0.5,-0.5 -0.5,-4 -0.5,-5 -1,-8 -0.5,-3 -2,-8.5 -2,-8.5 2.5,1 7.5,1 10,0 0,0 -1.5,5.5 -2,8.5 -0.5,3 -0.5,4 -1,8 0,0.5 0,1 0.5,0.5 z"
id="path3037-1-7-4"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.9 KiB

+85
View File
@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-0" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-9-8-2-5-09-4-1-8" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3197">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-38"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 180,737.36218 c 0,0 6,15 13,25 7,10 17,20 17,20 0,0 -10,10 -17,20 -7,10 -13,25 -13,25 0,0 -6,-15 -13,-25 -7,-10 -17,-20 -17,-20 0,0 10,-10 17,-20 7,-10 13,-25 13,-25"
id="path3204-24-49"
style="fill:#ff5555;stroke:none" />
<path
d="m 27.5,542.36218 -9,50 5,0 2.34375,-13 8.3125,0 2.34375,13 5,0 -9,-50 -5,0 z m 2.5,13.90625 3.25,18.09375 -6.5,0 3.25,-18.09375 z"
id="path3497-2"
style="fill:#ff5555;stroke:none" />
<path
d="m 327.5,1022.3622 -9,-50.00004 5,0 2.34375,13 8.3125,0 2.34375,-13 5,0 -9,50.00004 -5,0 z m 2.5,-13.9063 3.25,-18.09372 -6.5,0 3.25,18.09372 z"
id="path3497-5-6"
style="fill:#ff5555;stroke:none" />
<path
d="m 30,602.36218 c 0,0 3,7.5 6.5,12.5 3.5,5 8.5,10 8.5,10 0,0 -5,5 -8.5,10 -3.5,5 -6.5,12.5 -6.5,12.5 0,0 -3,-7.5 -6.5,-12.5 -3.5,-5 -8.5,-10 -8.5,-10 0,0 5,-5 8.5,-10 3.5,-5 6.5,-12.5 6.5,-12.5"
id="path3204-24-1-57"
style="fill:#ff5555;stroke:none" />
<path
d="m 330,917.36218 c 0,0 3,7.5 6.5,12.5 3.5,5 8.5,10 8.5,10 0,0 -5,5 -8.5,10 -3.5,5 -6.5,12.5 -6.5,12.5 0,0 -3,-7.5 -6.5,-12.5 -3.5,-5 -8.5,-10 -8.5,-10 0,0 5,-5 8.5,-10 3.5,-5 6.5,-12.5 6.5,-12.5"
id="path3204-24-1-7"
style="fill:#ff5555;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

+79
View File
@@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300">
<inkscape:path-effect
effect="spiro"
id="path-effect17935-89" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-8" />
<inkscape:path-effect
effect="spiro"
id="path-effect17935-8-7" />
<inkscape:path-effect
effect="spiro"
id="path-effect17939-6-0" />
</defs>
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.27289)"
id="g3028">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-070"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 27.5,542.36218 -9,50 5,0 2.34375,-13 8.3125,0 2.34375,13 5,0 -9,-50 -5,0 z m 2.5,13.90625 3.25,18.09375 -6.5,0 3.25,-18.09375 z"
id="path3497-6"
style="fill:#ff5555;stroke:none" />
<path
d="m 327.5,1022.3622 -9,-50.00004 5,0 2.34375,13 8.3125,0 2.34375,-13 5,0 -9,50.00004 -5,0 z m 2.5,-13.9063 3.25,-18.09372 -6.5,0 3.25,18.09372 z"
id="path3497-5-0"
style="fill:#ff5555;stroke:none" />
<path
d="m 179,755.36218 c 0,-11.04569 -5.71573,-18 -14,-18 -8.28427,0 -15,8.95431 -15,20 0.0349,0.95559 0.0182,1.89119 0,2.8125 0,7.29848 2.67685,14.37684 5,21 2.38903,6.81096 5.83357,12.78067 9.0625,18.875 5.00123,9.4394 15.9375,27.3125 15.9375,27.3125 0,0 10.93627,-17.8731 15.9375,-27.3125 3.22893,-6.09433 6.67347,-12.06404 9.0625,-18.875 2.32315,-6.62316 5,-13.70152 5,-21 -0.0284,-0.9744 -0.0186,-1.91462 0,-2.8125 0,-11.04569 -6.71573,-20 -15,-20 -8.28427,0 -14,6.95431 -14,18 0,2 -2,2 -2,0 z"
id="path3126-70"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 29.5,611.36218 c 0,-5.52285 -2.857865,-9 -7,-9 -4.142135,0 -7.5,4.47715 -7.5,10 0.01745,0.4778 0.0091,0.94559 0,1.40625 0,3.64924 1.338425,7.18842 2.5,10.5 1.194515,3.40548 2.916785,6.39034 4.53125,9.4375 2.500615,4.7197 7.96875,13.65625 7.96875,13.65625 0,0 5.468135,-8.93655 7.96875,-13.65625 1.614465,-3.04716 3.336735,-6.03202 4.53125,-9.4375 1.161575,-3.31158 2.5,-6.85076 2.5,-10.5 -0.0142,-0.4872 -0.0093,-0.95731 0,-1.40625 0,-5.52285 -3.357865,-10 -7.5,-10 -4.142135,0 -7,3.47715 -7,9 0,1 -1,1 -1,0 z"
id="path3126-1-5"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
<path
d="m 329.5,953.36218 c 0,5.52285 -2.85787,9 -7,9 -4.14214,0 -7.5,-4.47715 -7.5,-10 0.0174,-0.4778 0.009,-0.94559 0,-1.40625 0,-3.64924 1.33842,-7.18842 2.5,-10.5 1.19452,-3.40548 2.91678,-6.39034 4.53125,-9.4375 2.50061,-4.7197 7.96875,-13.65625 7.96875,-13.65625 0,0 5.46814,8.93655 7.96875,13.65625 1.61446,3.04716 3.33673,6.03202 4.53125,9.4375 1.16157,3.31158 2.5,6.85076 2.5,10.5 -0.0142,0.4872 -0.009,0.95731 0,1.40625 0,5.52285 -3.35787,10 -7.5,10 -4.14214,0 -7,-3.47715 -7,-9 0,-1 -1,-1 -1,0 z"
id="path3126-1-7-67"
style="fill:#ff5555;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

+65
View File
@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<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"
version="1.1"
width="360"
height="540"
id="svg20298">
<defs
id="defs20300" />
<metadata
id="metadata20303">
<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></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-151.42857,-248.08929)"
id="layer1">
<g
transform="translate(151.42857,-264.28571)"
id="g3028-7">
<rect
width="359"
height="539"
rx="29.944447"
ry="29.944447"
x="0.5"
y="512.86218"
id="rect6472-45"
style="fill:#ffffff;stroke:#000000;stroke-width:0.99999976" />
<path
d="m 27.5,542.36218 -9,50 5,0 2.34375,-13 8.3125,0 2.34375,13 5,0 -9,-50 -5,0 z m 2.5,13.90625 3.25,18.09375 -6.5,0 3.25,-18.09375 z"
id="path3497-7"
style="fill:#000000;stroke:none" />
<path
d="m 327.5,1022.3622 -9,-50.00004 5,0 2.34375,13 8.3125,0 2.34375,-13 5,0 -9,50.00004 -5,0 z m 2.5,-13.9063 3.25,-18.09372 -6.5,0 3.25,18.09372 z"
id="path3497-5-9"
style="fill:#000000;stroke:none" />
<path
d="m 185,793.36218 c 1,4 5,14 12,14 9,0 13,-8 13,-18 0,-7 -2.57895,-11.61229 -5,-17 -2.57788,-5.73673 -6.37932,-10.85741 -10,-16 -4.6453,-6.5979 -15,-19 -15,-19 0,0 -10.3547,12.4021 -15,19 -3.62068,5.14259 -7.42212,10.26327 -10,16 -2.42105,5.38771 -5,10 -5,17 0,10 4,18 13,18 7,0 11,-10 12,-14 1,-1 1,0 1,1 -1,8 -1,10 -2,16 -1,6 -4,17 -4,17 5,-2 15,-2 20,0 0,0 -3,-11 -4,-17 -1,-6 -1,-8 -2,-16 0,-1 0,-2 1,-1 z"
id="path3037-7-83"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 32.5,630.36218 c 0.5,2 2.5,7 6,7 4.5,0 6.5,-4 6.5,-9 0,-3.5 -1.289475,-5.80614 -2.5,-8.5 -1.28894,-2.86836 -3.18966,-5.4287 -5,-8 -2.32265,-3.29895 -7.5,-9.5 -7.5,-9.5 0,0 -5.17735,6.20105 -7.5,9.5 -1.81034,2.5713 -3.71106,5.13164 -5,8 -1.210525,2.69386 -2.5,5 -2.5,8.5 0,5 2,9 6.5,9 3.5,0 5.5,-5 6,-7 0.5,-0.5 0.5,0 0.5,0.5 -0.5,4 -0.5,5 -1,8 -0.5,3 -2,8.5 -2,8.5 2.5,-1 7.5,-1 10,0 0,0 -1.5,-5.5 -2,-8.5 -0.5,-3 -0.5,-4 -1,-8 0,-0.5 0,-1 0.5,-0.5 z"
id="path3037-7-4-02"
style="fill:#000000;fill-opacity:1;stroke:none" />
<path
d="m 332.5,934.36218 c 0.5,-2 2.5,-7 6,-7 4.5,0 6.5,4 6.5,9 0,3.5 -1.28947,5.80614 -2.5,8.5 -1.28894,2.86836 -3.18966,5.4287 -5,8 -2.32265,3.29895 -7.5,9.5 -7.5,9.5 0,0 -5.17735,-6.20105 -7.5,-9.5 -1.81034,-2.5713 -3.71106,-5.13164 -5,-8 -1.21053,-2.69386 -2.5,-5 -2.5,-8.5 0,-5 2,-9 6.5,-9 3.5,0 5.5,5 6,7 0.5,0.5 0.5,0 0.5,-0.5 -0.5,-4 -0.5,-5 -1,-8 -0.5,-3 -2,-8.5 -2,-8.5 2.5,1 7.5,1 10,0 0,0 -1.5,5.5 -2,8.5 -0.5,3 -0.5,4 -1,8 0,0.5 0,1 0.5,0.5 z"
id="path3037-7-4-0-2"
style="fill:#000000;fill-opacity:1;stroke:none" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

+87
View File
@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1" width="360" height="540" viewBox="0 0 360 540">
<defs>
<!-- Interlocking lattice, rotated 45deg for the classic diagonal weave -->
<pattern id="lattice" width="36" height="36" patternUnits="userSpaceOnUse"
patternTransform="rotate(45 0 0)">
<rect width="36" height="36" fill="#a81d24"/>
<path d="M 18,0 L 18,36 M 0,18 L 36,18" stroke="#c9545b"
stroke-width="1.5" fill="none"/>
<circle cx="18" cy="18" r="6" fill="none" stroke="#c9545b" stroke-width="1.5"/>
<circle cx="18" cy="18" r="1.8" fill="#c9545b"/>
<g fill="#c9545b">
<circle cx="0" cy="0" r="3.2"/><circle cx="36" cy="0" r="3.2"/>
<circle cx="0" cy="36" r="3.2"/><circle cx="36" cy="36" r="3.2"/>
</g>
</pattern>
<!-- Centre glow so the medallion sits on a lit field -->
<radialGradient id="vignette" cx="50%" cy="50%" r="62%">
<stop offset="0%" stop-color="#c4353d" stop-opacity="0.85"/>
<stop offset="55%" stop-color="#c4353d" stop-opacity="0.20"/>
<stop offset="100%" stop-color="#8f1218" stop-opacity="0.75"/>
</radialGradient>
<clipPath id="panelClip">
<rect x="16" y="16" width="328" height="508" rx="19" ry="19"/>
</clipPath>
<g id="spade"><path d="M 0,-19 C -5,-9 -18,-3 -18,6 C -18,12 -13,15.5 -8.5,15.5 C -5,15.5 -2,13.5 0,10 C 2,13.5 5,15.5 8.5,15.5 C 13,15.5 18,12 18,6 C 18,-3 5,-9 0,-19 Z"/><path d="M -1,8 C -1,14 -4,18 -7.5,19.5 L 7.5,19.5 C 4,18 1,14 1,8 Z"/></g>
<path id="heart" d="M 0,19 C -5,12 -18,3 -18,-7 C -18,-14.5 -12,-18.5 -7,-18.5 C -3,-18.5 -0.5,-15.5 0,-12 C 0.5,-15.5 3,-18.5 7,-18.5 C 12,-18.5 18,-14.5 18,-7 C 18,3 5,12 0,19 Z"/>
<path id="diamond" d="M 0,-20 C 4,-10 9,-4 14,0 C 9,4 4,10 0,20 C -4,10 -9,4 -14,0 C -9,-4 -4,-10 0,-20 Z"/>
<g id="club">
<circle cx="0" cy="-9" r="9"/><circle cx="-10" cy="5" r="9"/>
<circle cx="10" cy="5" r="9"/><path d="M -1.2,4 C -1.2,11 -4,16 -7.5,19 L 7.5,19 C 4,16 1.2,11 1.2,4 Z"/>
</g>
<!-- Corner ornament: a small gold lozenge cluster -->
<g id="ornament" fill="#e3c179">
<path d="M 0,-9 L 5,0 L 0,9 L -5,0 Z"/>
<circle cx="0" cy="-13.5" r="2"/><circle cx="0" cy="13.5" r="2"/>
<circle cx="-9" cy="0" r="2"/><circle cx="9" cy="0" r="2"/>
</g>
</defs>
<!-- Card body: identical geometry to the face cards -->
<rect x="0.5" y="0.5" width="359" height="539" rx="29.944447" ry="29.944447"
fill="#ffffff" stroke="#000000" stroke-width="1"/>
<!-- Patterned panel -->
<g clip-path="url(#panelClip)">
<rect x="16" y="16" width="328" height="508" fill="#8f1218"/>
<rect x="16" y="16" width="328" height="508" fill="url(#lattice)"/>
<rect x="16" y="16" width="328" height="508" fill="url(#vignette)"/>
</g>
<!-- Gold double frame -->
<rect x="16" y="16" width="328" height="508" rx="19" ry="19"
fill="none" stroke="#e3c179" stroke-width="2.5"/>
<rect x="24" y="24" width="312" height="492" rx="13" ry="13"
fill="none" stroke="#e3c179" stroke-width="1" opacity="0.75"/>
<!-- Corner ornaments -->
<use xlink:href="#ornament" x="0" y="0" transform="translate(52,64)"/>
<use xlink:href="#ornament" x="0" y="0" transform="translate(308,64)"/>
<use xlink:href="#ornament" x="0" y="0" transform="translate(52,476)"/>
<use xlink:href="#ornament" x="0" y="0" transform="translate(308,476)"/>
<!-- Central medallion -->
<g>
<ellipse cx="180" cy="270" rx="86" ry="104" fill="#8f1218" opacity="0.55"/>
<ellipse cx="180" cy="270" rx="80" ry="98" fill="#faf4e6"
stroke="#e3c179" stroke-width="3"/>
<ellipse cx="180" cy="270" rx="72" ry="90" fill="none"
stroke="#e3c179" stroke-width="1" opacity="0.8"/>
<!-- Four suits in a diamond arrangement -->
<use xlink:href="#spade" transform="translate(180,206) scale(0.82)" fill="#1a1a1a"/>
<use xlink:href="#diamond" transform="translate(180,334) scale(0.82)" fill="#c8102e"/>
<use xlink:href="#heart" transform="translate(130,270) scale(0.82)" fill="#c8102e"/>
<use xlink:href="#club" transform="translate(230,270) scale(0.82)" fill="#1a1a1a"/>
<!-- Tiny centre pip to tie the arrangement together -->
<circle cx="180" cy="270" r="4.5" fill="#e3c179"/>
<circle cx="180" cy="270" r="1.8" fill="#8f1218"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

+87
View File
@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1" width="360" height="540" viewBox="0 0 360 540">
<defs>
<!-- Interlocking lattice, rotated 45deg for the classic diagonal weave -->
<pattern id="lattice" width="36" height="36" patternUnits="userSpaceOnUse"
patternTransform="rotate(45 0 0)">
<rect width="36" height="36" fill="#1b3f8a"/>
<path d="M 18,0 L 18,36 M 0,18 L 36,18" stroke="#4d6cb5"
stroke-width="1.5" fill="none"/>
<circle cx="18" cy="18" r="6" fill="none" stroke="#4d6cb5" stroke-width="1.5"/>
<circle cx="18" cy="18" r="1.8" fill="#4d6cb5"/>
<g fill="#4d6cb5">
<circle cx="0" cy="0" r="3.2"/><circle cx="36" cy="0" r="3.2"/>
<circle cx="0" cy="36" r="3.2"/><circle cx="36" cy="36" r="3.2"/>
</g>
</pattern>
<!-- Centre glow so the medallion sits on a lit field -->
<radialGradient id="vignette" cx="50%" cy="50%" r="62%">
<stop offset="0%" stop-color="#2f5aa8" stop-opacity="0.85"/>
<stop offset="55%" stop-color="#2f5aa8" stop-opacity="0.20"/>
<stop offset="100%" stop-color="#12306e" stop-opacity="0.75"/>
</radialGradient>
<clipPath id="panelClip">
<rect x="16" y="16" width="328" height="508" rx="19" ry="19"/>
</clipPath>
<g id="spade"><path d="M 0,-19 C -5,-9 -18,-3 -18,6 C -18,12 -13,15.5 -8.5,15.5 C -5,15.5 -2,13.5 0,10 C 2,13.5 5,15.5 8.5,15.5 C 13,15.5 18,12 18,6 C 18,-3 5,-9 0,-19 Z"/><path d="M -1,8 C -1,14 -4,18 -7.5,19.5 L 7.5,19.5 C 4,18 1,14 1,8 Z"/></g>
<path id="heart" d="M 0,19 C -5,12 -18,3 -18,-7 C -18,-14.5 -12,-18.5 -7,-18.5 C -3,-18.5 -0.5,-15.5 0,-12 C 0.5,-15.5 3,-18.5 7,-18.5 C 12,-18.5 18,-14.5 18,-7 C 18,3 5,12 0,19 Z"/>
<path id="diamond" d="M 0,-20 C 4,-10 9,-4 14,0 C 9,4 4,10 0,20 C -4,10 -9,4 -14,0 C -9,-4 -4,-10 0,-20 Z"/>
<g id="club">
<circle cx="0" cy="-9" r="9"/><circle cx="-10" cy="5" r="9"/>
<circle cx="10" cy="5" r="9"/><path d="M -1.2,4 C -1.2,11 -4,16 -7.5,19 L 7.5,19 C 4,16 1.2,11 1.2,4 Z"/>
</g>
<!-- Corner ornament: a small gold lozenge cluster -->
<g id="ornament" fill="#e3c179">
<path d="M 0,-9 L 5,0 L 0,9 L -5,0 Z"/>
<circle cx="0" cy="-13.5" r="2"/><circle cx="0" cy="13.5" r="2"/>
<circle cx="-9" cy="0" r="2"/><circle cx="9" cy="0" r="2"/>
</g>
</defs>
<!-- Card body: identical geometry to the face cards -->
<rect x="0.5" y="0.5" width="359" height="539" rx="29.944447" ry="29.944447"
fill="#ffffff" stroke="#000000" stroke-width="1"/>
<!-- Patterned panel -->
<g clip-path="url(#panelClip)">
<rect x="16" y="16" width="328" height="508" fill="#12306e"/>
<rect x="16" y="16" width="328" height="508" fill="url(#lattice)"/>
<rect x="16" y="16" width="328" height="508" fill="url(#vignette)"/>
</g>
<!-- Gold double frame -->
<rect x="16" y="16" width="328" height="508" rx="19" ry="19"
fill="none" stroke="#e3c179" stroke-width="2.5"/>
<rect x="24" y="24" width="312" height="492" rx="13" ry="13"
fill="none" stroke="#e3c179" stroke-width="1" opacity="0.75"/>
<!-- Corner ornaments -->
<use xlink:href="#ornament" x="0" y="0" transform="translate(52,64)"/>
<use xlink:href="#ornament" x="0" y="0" transform="translate(308,64)"/>
<use xlink:href="#ornament" x="0" y="0" transform="translate(52,476)"/>
<use xlink:href="#ornament" x="0" y="0" transform="translate(308,476)"/>
<!-- Central medallion -->
<g>
<ellipse cx="180" cy="270" rx="86" ry="104" fill="#12306e" opacity="0.55"/>
<ellipse cx="180" cy="270" rx="80" ry="98" fill="#faf4e6"
stroke="#e3c179" stroke-width="3"/>
<ellipse cx="180" cy="270" rx="72" ry="90" fill="none"
stroke="#e3c179" stroke-width="1" opacity="0.8"/>
<!-- Four suits in a diamond arrangement -->
<use xlink:href="#spade" transform="translate(180,206) scale(0.82)" fill="#1a1a1a"/>
<use xlink:href="#diamond" transform="translate(180,334) scale(0.82)" fill="#c8102e"/>
<use xlink:href="#heart" transform="translate(130,270) scale(0.82)" fill="#c8102e"/>
<use xlink:href="#club" transform="translate(230,270) scale(0.82)" fill="#1a1a1a"/>
<!-- Tiny centre pip to tie the arrangement together -->
<circle cx="180" cy="270" r="4.5" fill="#e3c179"/>
<circle cx="180" cy="270" r="1.8" fill="#12306e"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

+87
View File
@@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1" width="360" height="540" viewBox="0 0 360 540">
<defs>
<!-- Interlocking lattice, rotated 45deg for the classic diagonal weave -->
<pattern id="lattice" width="36" height="36" patternUnits="userSpaceOnUse"
patternTransform="rotate(45 0 0)">
<rect width="36" height="36" fill="#a81d24"/>
<path d="M 18,0 L 18,36 M 0,18 L 36,18" stroke="#c9545b"
stroke-width="1.5" fill="none"/>
<circle cx="18" cy="18" r="6" fill="none" stroke="#c9545b" stroke-width="1.5"/>
<circle cx="18" cy="18" r="1.8" fill="#c9545b"/>
<g fill="#c9545b">
<circle cx="0" cy="0" r="3.2"/><circle cx="36" cy="0" r="3.2"/>
<circle cx="0" cy="36" r="3.2"/><circle cx="36" cy="36" r="3.2"/>
</g>
</pattern>
<!-- Centre glow so the medallion sits on a lit field -->
<radialGradient id="vignette" cx="50%" cy="50%" r="62%">
<stop offset="0%" stop-color="#c4353d" stop-opacity="0.85"/>
<stop offset="55%" stop-color="#c4353d" stop-opacity="0.20"/>
<stop offset="100%" stop-color="#8f1218" stop-opacity="0.75"/>
</radialGradient>
<clipPath id="panelClip">
<rect x="16" y="16" width="328" height="508" rx="19" ry="19"/>
</clipPath>
<g id="spade"><path d="M 0,-19 C -5,-9 -18,-3 -18,6 C -18,12 -13,15.5 -8.5,15.5 C -5,15.5 -2,13.5 0,10 C 2,13.5 5,15.5 8.5,15.5 C 13,15.5 18,12 18,6 C 18,-3 5,-9 0,-19 Z"/><path d="M -1,8 C -1,14 -4,18 -7.5,19.5 L 7.5,19.5 C 4,18 1,14 1,8 Z"/></g>
<path id="heart" d="M 0,19 C -5,12 -18,3 -18,-7 C -18,-14.5 -12,-18.5 -7,-18.5 C -3,-18.5 -0.5,-15.5 0,-12 C 0.5,-15.5 3,-18.5 7,-18.5 C 12,-18.5 18,-14.5 18,-7 C 18,3 5,12 0,19 Z"/>
<path id="diamond" d="M 0,-20 C 4,-10 9,-4 14,0 C 9,4 4,10 0,20 C -4,10 -9,4 -14,0 C -9,-4 -4,-10 0,-20 Z"/>
<g id="club">
<circle cx="0" cy="-9" r="9"/><circle cx="-10" cy="5" r="9"/>
<circle cx="10" cy="5" r="9"/><path d="M -1.2,4 C -1.2,11 -4,16 -7.5,19 L 7.5,19 C 4,16 1.2,11 1.2,4 Z"/>
</g>
<!-- Corner ornament: a small gold lozenge cluster -->
<g id="ornament" fill="#e3c179">
<path d="M 0,-9 L 5,0 L 0,9 L -5,0 Z"/>
<circle cx="0" cy="-13.5" r="2"/><circle cx="0" cy="13.5" r="2"/>
<circle cx="-9" cy="0" r="2"/><circle cx="9" cy="0" r="2"/>
</g>
</defs>
<!-- Card body: identical geometry to the face cards -->
<rect x="0.5" y="0.5" width="359" height="539" rx="29.944447" ry="29.944447"
fill="#ffffff" stroke="#000000" stroke-width="1"/>
<!-- Patterned panel -->
<g clip-path="url(#panelClip)">
<rect x="16" y="16" width="328" height="508" fill="#8f1218"/>
<rect x="16" y="16" width="328" height="508" fill="url(#lattice)"/>
<rect x="16" y="16" width="328" height="508" fill="url(#vignette)"/>
</g>
<!-- Gold double frame -->
<rect x="16" y="16" width="328" height="508" rx="19" ry="19"
fill="none" stroke="#e3c179" stroke-width="2.5"/>
<rect x="24" y="24" width="312" height="492" rx="13" ry="13"
fill="none" stroke="#e3c179" stroke-width="1" opacity="0.75"/>
<!-- Corner ornaments -->
<use xlink:href="#ornament" x="0" y="0" transform="translate(52,64)"/>
<use xlink:href="#ornament" x="0" y="0" transform="translate(308,64)"/>
<use xlink:href="#ornament" x="0" y="0" transform="translate(52,476)"/>
<use xlink:href="#ornament" x="0" y="0" transform="translate(308,476)"/>
<!-- Central medallion -->
<g>
<ellipse cx="180" cy="270" rx="86" ry="104" fill="#8f1218" opacity="0.55"/>
<ellipse cx="180" cy="270" rx="80" ry="98" fill="#faf4e6"
stroke="#e3c179" stroke-width="3"/>
<ellipse cx="180" cy="270" rx="72" ry="90" fill="none"
stroke="#e3c179" stroke-width="1" opacity="0.8"/>
<!-- Four suits in a diamond arrangement -->
<use xlink:href="#spade" transform="translate(180,206) scale(0.82)" fill="#1a1a1a"/>
<use xlink:href="#diamond" transform="translate(180,334) scale(0.82)" fill="#c8102e"/>
<use xlink:href="#heart" transform="translate(130,270) scale(0.82)" fill="#c8102e"/>
<use xlink:href="#club" transform="translate(230,270) scale(0.82)" fill="#1a1a1a"/>
<!-- Tiny centre pip to tie the arrangement together -->
<circle cx="180" cy="270" r="4.5" fill="#e3c179"/>
<circle cx="180" cy="270" r="1.8" fill="#8f1218"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 173 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 159 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 188 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 172 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 184 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 138 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 202 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 156 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 2.4 MiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 183 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 140 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 160 KiB

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 161 KiB

+4
View File
@@ -0,0 +1,4 @@
plugins {
kotlin("multiplatform") version "2.2.10" apply false
kotlin("jvm") version "2.2.10" apply false
}
+15
View File
@@ -0,0 +1,15 @@
plugins {
kotlin("multiplatform")
}
kotlin {
// JVM target drives tests and the headless simulator today.
// androidTarget() / iosArm64() slot in here later without touching commonMain.
jvm()
sourceSets {
commonTest.dependencies {
implementation(kotlin("test"))
}
}
}
@@ -0,0 +1,257 @@
package com.jsjdesigns.poker.bot
import com.jsjdesigns.poker.core.Equity
import com.jsjdesigns.poker.core.PreflopChart
import com.jsjdesigns.poker.game.Action
import com.jsjdesigns.poker.game.ActionType
import com.jsjdesigns.poker.game.DecisionContext
import com.jsjdesigns.poker.game.PlayerAgent
import com.jsjdesigns.poker.game.Street
import kotlin.math.roundToInt
import kotlin.random.Random
/**
* The numbers behind one decision.
*
* Kept deliberately explicit because this is exactly what the coach hands to the
* LLM. The model narrates these values; it never computes them.
*/
data class DecisionTrace(
val equity: Double,
val breakEvenEquity: Double,
val potOdds: String,
val chosen: Action,
val reason: String,
)
/**
* A bot that decides from equity and pot odds, then distorts that decision through
* its [SkillLevel] and [PlayStyle].
*
* Everything here is deterministic given the seed, runs in well under a
* millisecond, and needs no network — the LLM layer sits *on top* of this, never
* inside it.
*/
class MathBot(
val profile: BotProfile,
private val random: Random = Random.Default,
) : PlayerAgent {
val mood = BotMood(profile.style.tiltSusceptibility)
val reads = OpponentModel()
var lastTrace: DecisionTrace? = null
private set
override fun act(ctx: DecisionContext): Action {
val skill = profile.skill
val style = profile.style
val opponents = ctx.activeOpponents.coerceAtLeast(1)
if (skill.readsOpponents) reads.observe(ctx.history)
if (ctx.street == Street.PREFLOP) return actPreflop(ctx)
// Weaker players run fewer rollouts, so they genuinely misjudge their hand
// rather than playing well and then blundering at random.
val equity = Equity.estimate(
hole = ctx.hole,
board = ctx.board,
opponents = opponents,
iterations = skill.equityIterations,
random = random,
)
val looseness = (style.looseness + mood.loosenessBonus()).coerceIn(0.0, 1.0)
val aggression = (style.aggression + mood.aggressionBonus()).coerceIn(0.0, 1.0)
val breakEven = Equity.potOdds(ctx.pot, ctx.toCall)
// Discipline: experts use the true break-even point; weak players drift
// toward calling regardless of price.
val discipline = skill.potOddsRespect
var bar = breakEven * discipline + breakEven * (1 - discipline) * 0.45
bar *= (1.0 - looseness * 0.35)
// Position is worth real equity, and better players know it.
bar *= if (ctx.inPosition) 1.0 - 0.12 * skill.positionAwareness
else 1.0 + 0.10 * skill.positionAwareness
// Exploitation: a habitual bettor's bet means less, so call wider against
// them; a passive player's bet means strength, so fold more.
if (skill.readsOpponents && ctx.toCall > 0) {
val bettor = ctx.history.lastOrNull {
it.action.type == ActionType.BET || it.action.type == ActionType.RAISE
}?.seat
if (bettor != null && bettor != ctx.seat.index && reads.actionsObserved(bettor) >= 25) {
bar *= (1.0 - (reads.aggressionRate(bettor) - 0.5) * 0.50).coerceIn(0.6, 1.4)
}
}
val raiseBar = (0.62 - aggression * 0.22).coerceIn(0.30, 0.75)
var decision = decide(ctx, equity, bar, raiseBar, aggression, style, opponents)
// Outright mistakes, on top of misjudgement.
if (random.nextDouble() < skill.errorRate) {
decision = blunder(ctx, decision)
}
lastTrace = DecisionTrace(
equity = equity,
breakEvenEquity = breakEven,
potOdds = if (ctx.toCall > 0) "${ctx.pot}:${ctx.toCall}" else "no bet to call",
chosen = decision,
reason = traceReason(equity, breakEven, ctx),
)
return decision
}
/**
* Pre-flop is range-based rather than equity-based: real players think "I open
* the top N%", so [PlayStyle.looseness] sets N directly and a Rock at 0.12
* genuinely plays 12% of hands.
*/
private fun actPreflop(ctx: DecisionContext): Action {
val skill = profile.skill
val style = profile.style
val pct = PreflopChart.percentile(ctx.hole)
val looseness = (style.looseness + mood.loosenessBonus()).coerceIn(0.02, 1.0)
val aggression = (style.aggression + mood.aggressionBonus()).coerceIn(0.0, 1.0)
// Undisciplined players simply play too many hands. This is the skill axis
// acting on range width, kept separate from the style axis above.
val sloppiness = 1.0 + (1.0 - skill.potOddsRespect) * 0.70
val positional = if (ctx.inPosition) 1.0 + 0.45 * skill.positionAwareness
else 1.0 - 0.25 * skill.positionAwareness
val facingRaise = ctx.toCall > ctx.bigBlind
var gate = looseness * sloppiness * positional
if (facingRaise) gate *= 0.45
gate = gate.coerceIn(0.01, 1.0)
val raiseGate = gate * (0.30 + aggression * 0.45)
val action = when {
pct <= raiseGate && ctx.canRaise ->
Action(ActionType.RAISE, preflopRaiseTo(ctx, facingRaise))
pct <= gate ->
if (ctx.canCheck) Action(ActionType.CHECK) else Action(ActionType.CALL, ctx.toCall)
else ->
if (ctx.canCheck) Action(ActionType.CHECK) else Action(ActionType.FOLD)
}
val final = if (random.nextDouble() < skill.errorRate) blunder(ctx, action) else action
lastTrace = DecisionTrace(
equity = 1.0 - pct,
breakEvenEquity = Equity.potOdds(ctx.pot, ctx.toCall),
potOdds = if (ctx.toCall > 0) "${ctx.pot}:${ctx.toCall}" else "no bet to call",
chosen = final,
reason = "Starting hand is in the top ${(pct * 100).roundToInt()}% " +
"and this profile plays about the top ${(gate * 100).roundToInt()}%.",
)
return final
}
private fun preflopRaiseTo(ctx: DecisionContext, facingRaise: Boolean): Int {
if (ctx.maxRaiseTo <= ctx.minRaiseTo) return ctx.maxRaiseTo
val desired = if (facingRaise) ctx.minRaiseTo + (ctx.pot * 0.40).roundToInt()
else ctx.bigBlind * 3
return desired.coerceIn(ctx.minRaiseTo, ctx.maxRaiseTo)
}
private fun decide(
ctx: DecisionContext,
equity: Double,
bar: Double,
raiseBar: Double,
aggression: Double,
style: PlayStyle,
opponents: Int,
): Action {
val strong = equity >= raiseBar
val monster = equity >= 0.82
// Sandbagging: under-represent a monster to keep them in.
if (monster && random.nextDouble() < style.slowplayFrequency && ctx.street != Street.RIVER) {
return if (ctx.canCheck) Action(ActionType.CHECK) else Action(ActionType.CALL, ctx.toCall)
}
if (ctx.canCheck) {
// Continuation bet: having taken the lead pre-flop, fire again on the
// flop regardless of what it brought.
val tookPreflopLead = ctx.history.lastOrNull {
it.street == Street.PREFLOP &&
(it.action.type == ActionType.BET || it.action.type == ActionType.RAISE)
}?.seat == ctx.seat.index
if (tookPreflopLead && ctx.street == Street.FLOP &&
random.nextDouble() < style.contBetFrequency
) {
return Action(ActionType.BET, sizeBet(ctx, equity, aggression))
}
// No bet to face: either take the lead or check behind.
val bluffing = equity < 0.35 &&
random.nextDouble() < style.bluffFrequency / opponents.coerceAtLeast(1)
if (strong || bluffing) {
if (random.nextDouble() < aggression || bluffing) {
return Action(ActionType.BET, sizeBet(ctx, equity, aggression))
}
}
return Action(ActionType.CHECK)
}
// Facing a bet.
if (equity < bar) {
// Bluff-raising with nothing, occasionally, when heads-up.
if (opponents == 1 && equity > 0.18 &&
random.nextDouble() < style.bluffFrequency * 0.5 && ctx.canRaise
) {
return Action(ActionType.RAISE, sizeBet(ctx, equity, aggression))
}
return Action(ActionType.FOLD)
}
if (strong && ctx.canRaise && random.nextDouble() < aggression) {
return Action(ActionType.RAISE, sizeBet(ctx, equity, aggression))
}
return Action(ActionType.CALL, ctx.toCall)
}
/** Pot-fraction sizing, widening with equity and aggression. */
private fun sizeBet(ctx: DecisionContext, equity: Double, aggression: Double): Int {
val fraction = when {
equity > 0.85 -> 0.75 + aggression * 0.45
equity > 0.65 -> 0.55 + aggression * 0.30
equity > 0.45 -> 0.45 + aggression * 0.20
else -> 0.40 + aggression * 0.25 // bluff sizing
}
val target = ctx.committedThisRoundPlus(((ctx.pot * fraction).roundToInt()))
// A short stack that cannot afford a full min-raise may still shove; that
// is legal, it simply does not reopen the betting.
if (ctx.maxRaiseTo <= ctx.minRaiseTo) return ctx.maxRaiseTo
return target.coerceIn(ctx.minRaiseTo, ctx.maxRaiseTo)
}
private fun blunder(ctx: DecisionContext, intended: Action): Action = when (intended.type) {
ActionType.FOLD -> if (ctx.toCall > 0) Action(ActionType.CALL, ctx.toCall) else Action(ActionType.CHECK)
ActionType.CHECK -> Action(ActionType.CHECK)
ActionType.CALL -> if (random.nextBoolean() && ctx.toCall > 0) Action(ActionType.FOLD) else intended
ActionType.BET, ActionType.RAISE -> if (ctx.canCheck) Action(ActionType.CHECK) else Action(ActionType.CALL, ctx.toCall)
}
private fun traceReason(equity: Double, breakEven: Double, ctx: DecisionContext): String {
val pct = (equity * 100).roundToInt()
return if (ctx.toCall > 0) {
val need = (breakEven * 100).roundToInt()
"About $pct% equity against ${ctx.activeOpponents} opponent(s); needed $need% to call profitably."
} else {
"About $pct% equity against ${ctx.activeOpponents} opponent(s), no bet to face."
}
}
}
/** Converts a pot-fraction bet into a raise-to figure. */
private fun DecisionContext.committedThisRoundPlus(extra: Int): Int =
seat.committedThisRound + toCall + extra
@@ -0,0 +1,44 @@
package com.jsjdesigns.poker.bot
import com.jsjdesigns.poker.game.ActionType
import com.jsjdesigns.poker.game.HandEvent
/**
* A running read on how aggressive each opponent is.
*
* Only consulted by skill levels with [SkillLevel.readsOpponents] set, which is
* what separates a player who merely plays their own cards well from one who
* adjusts to the table.
*/
class OpponentModel {
private val aggressiveActions = HashMap<Int, Int>()
private val totalActions = HashMap<Int, Int>()
private var consumed = 0
/** Folds in any events not yet seen. History resets each hand, so detect that. */
fun observe(history: List<HandEvent>) {
if (history.size < consumed) consumed = 0
while (consumed < history.size) {
val e = history[consumed++]
totalActions[e.seat] = (totalActions[e.seat] ?: 0) + 1
if (e.action.type == ActionType.BET || e.action.type == ActionType.RAISE) {
aggressiveActions[e.seat] = (aggressiveActions[e.seat] ?: 0) + 1
}
}
}
/** Share of this opponent's actions that were bets or raises; 0.5 until sampled. */
fun aggressionRate(seat: Int): Double {
val total = totalActions[seat] ?: 0
if (total < MIN_SAMPLE) return 0.5
return (aggressiveActions[seat] ?: 0).toDouble() / total
}
fun actionsObserved(seat: Int): Int = totalActions[seat] ?: 0
private companion object {
/** Below this, a read is noise rather than information. */
const val MIN_SAMPLE = 25
}
}
@@ -0,0 +1,104 @@
package com.jsjdesigns.poker.bot
/**
* How *correct* a player's decisions are. Independent of [PlayStyle].
*
* The interesting lever here is [equityIterations]. Rather than making weak bots
* flip coins, we give them a noisier estimate of their own hand strength — so a
* beginner genuinely *misjudges* a hand the way a human does, instead of playing
* well and then randomly blundering. [errorRate] is a smaller, separate effect for
* outright mistakes.
*/
enum class SkillLevel(
val label: String,
val equityIterations: Int,
val errorRate: Double,
val potOddsRespect: Double,
val positionAwareness: Double,
val readsOpponents: Boolean,
) {
BEGINNER("Beginner", equityIterations = 120, errorRate = 0.30, potOddsRespect = 0.20, positionAwareness = 0.10, readsOpponents = false),
INTERMEDIATE("Intermediate", equityIterations = 600, errorRate = 0.14, potOddsRespect = 0.60, positionAwareness = 0.45, readsOpponents = false),
ADVANCED("Advanced", equityIterations = 1500, errorRate = 0.05, potOddsRespect = 0.88, positionAwareness = 0.80, readsOpponents = true),
EXPERT("Expert", equityIterations = 3000, errorRate = 0.015, potOddsRespect = 1.00, positionAwareness = 1.00, readsOpponents = true),
}
/**
* *How* a player plays, independent of how well. A beginner and an expert can both
* be maniacs; they will be wildly different opponents.
*
* All values are 0..1 frequencies or weights.
*/
data class PlayStyle(
val label: String,
/** Preference for betting/raising over calling. */
val aggression: Double,
/** How wide a range they enter pots with. */
val looseness: Double,
/** How often they fire with little or no equity. */
val bluffFrequency: Double,
/** Sandbagging: how often they under-represent a strong hand to induce. */
val slowplayFrequency: Double,
/** How often they continuation-bet after taking the lead pre-flop. */
val contBetFrequency: Double,
/** How much a bad beat destabilises them, feeding the tilt model. */
val tiltSusceptibility: Double,
) {
companion object {
val ROCK = PlayStyle("Rock", aggression = 0.30, looseness = 0.12, bluffFrequency = 0.04, slowplayFrequency = 0.15, contBetFrequency = 0.40, tiltSusceptibility = 0.15)
val TIGHT_AGGRESSIVE = PlayStyle("Tight-Aggressive", aggression = 0.72, looseness = 0.22, bluffFrequency = 0.18, slowplayFrequency = 0.12, contBetFrequency = 0.70, tiltSusceptibility = 0.30)
val LOOSE_AGGRESSIVE = PlayStyle("Loose-Aggressive", aggression = 0.82, looseness = 0.45, bluffFrequency = 0.32, slowplayFrequency = 0.10, contBetFrequency = 0.78, tiltSusceptibility = 0.45)
val CALLING_STATION = PlayStyle("Calling Station", aggression = 0.12, looseness = 0.62, bluffFrequency = 0.03, slowplayFrequency = 0.30, contBetFrequency = 0.20, tiltSusceptibility = 0.25)
val MANIAC = PlayStyle("Maniac", aggression = 0.95, looseness = 0.75, bluffFrequency = 0.50, slowplayFrequency = 0.05, contBetFrequency = 0.88, tiltSusceptibility = 0.70)
val TRAPPER = PlayStyle("Trapper", aggression = 0.40, looseness = 0.28, bluffFrequency = 0.10, slowplayFrequency = 0.55, contBetFrequency = 0.35, tiltSusceptibility = 0.20)
val ALL = listOf(ROCK, TIGHT_AGGRESSIVE, LOOSE_AGGRESSIVE, CALLING_STATION, MANIAC, TRAPPER)
}
}
/**
* A named opponent: the crossing of a skill level with a style, plus the mutable
* emotional state that makes them feel like a person across a session.
*/
data class BotProfile(
val name: String,
val skill: SkillLevel,
val style: PlayStyle,
/** Short character note; later fed to the LLM for voice and table talk. */
val persona: String = "",
) {
val description: String get() = "${skill.label} ${style.label}"
}
/**
* Emotional state that persists between hands and decays back toward baseline.
* Tilt widens a player's range and inflates their aggression — the same way it
* does in a real game.
*/
class BotMood(private val susceptibility: Double) {
/** -1 (rattled/tilted) .. +1 (running over the table). */
var tilt: Double = 0.0
private set
fun recordLoss(potBigBlinds: Double, wasBadBeat: Boolean) {
val sting = (potBigBlinds / 40.0).coerceAtMost(1.0) * susceptibility
tilt -= if (wasBadBeat) sting * 1.8 else sting
tilt = tilt.coerceIn(-1.0, 1.0)
}
fun recordWin(potBigBlinds: Double) {
tilt += (potBigBlinds / 60.0).coerceAtMost(1.0) * susceptibility * 0.6
tilt = tilt.coerceIn(-1.0, 1.0)
}
/** Called once per hand; mood fades rather than lasting forever. */
fun decay() {
tilt *= 0.90
if (tilt in -0.01..0.01) tilt = 0.0
}
/** Tilted players play looser and more aggressively, in both directions. */
fun loosenessBonus(): Double = if (tilt < 0) -tilt * 0.35 else tilt * 0.12
fun aggressionBonus(): Double = if (tilt < 0) -tilt * 0.30 else tilt * 0.18
}
@@ -0,0 +1,75 @@
package com.jsjdesigns.poker.core
enum class Suit(val symbol: Char, val assetName: String) {
CLUBS('c', "clubs"),
DIAMONDS('d', "diamonds"),
HEARTS('h', "hearts"),
SPADES('s', "spades");
val isRed: Boolean get() = this == DIAMONDS || this == HEARTS
}
/**
* A card as a single Int in 0..51.
*
* Encoding is `(rank - 2) * 4 + suit.ordinal`, which keeps ranks contiguous so the
* evaluator can bucket by rank with plain array indexing and no branching.
* Ranks run 2..14 with 14 = ace.
*/
@JvmInline
value class Card(val index: Int) {
val rank: Int get() = 2 + index / 4
val suit: Suit get() = Suit.entries[index % 4]
/** Filename in `assets/cards/`, e.g. `ace_of_spades.svg`. */
val assetName: String get() = "${rankAssetName(rank)}_of_${suit.assetName}.svg"
/** Compact form used in logs and tests, e.g. `Ah`, `Td`, `2c`. */
override fun toString(): String = "${rankSymbol(rank)}${suit.symbol}"
companion object {
const val DECK_SIZE = 52
fun of(rank: Int, suit: Suit): Card {
require(rank in 2..14) { "rank out of range: $rank" }
return Card((rank - 2) * 4 + suit.ordinal)
}
/** Parses `Ah`, `td`, `10c`, `2S`. */
fun parse(text: String): Card {
val s = text.trim()
require(s.length >= 2) { "unparseable card: '$text'" }
val suitChar = s.last().lowercaseChar()
val suit = Suit.entries.firstOrNull { it.symbol == suitChar }
?: throw IllegalArgumentException("unknown suit in '$text'")
val rankPart = s.dropLast(1)
val rank = when (rankPart.uppercase()) {
"A" -> 14
"K" -> 13
"Q" -> 12
"J" -> 11
"T", "10" -> 10
else -> rankPart.toIntOrNull()
?: throw IllegalArgumentException("unknown rank in '$text'")
}
return of(rank, suit)
}
fun rankSymbol(rank: Int): String = when (rank) {
14 -> "A"; 13 -> "K"; 12 -> "Q"; 11 -> "J"; 10 -> "T"
else -> rank.toString()
}
fun rankAssetName(rank: Int): String = when (rank) {
14 -> "ace"; 13 -> "king"; 12 -> "queen"; 11 -> "jack"
else -> rank.toString()
}
}
}
/** Parses a space-separated list such as `"Ah Kd 7c"`. */
fun cardsOf(text: String): IntArray =
text.split(' ', ',').filter { it.isNotBlank() }.map { Card.parse(it).index }.toIntArray()
fun IntArray.cardsToString(): String = joinToString(" ") { Card(it).toString() }
@@ -0,0 +1,55 @@
package com.jsjdesigns.poker.core
/**
* Where a table gets its cards.
*
* Abstracted so tests can stack the deck deterministically, and so hand replay
* can later re-deal a recorded hand exactly.
*/
interface CardSource {
fun shuffle()
fun deal(): Int
fun deal(count: Int): IntArray = IntArray(count) { deal() }
}
/**
* A fixed deal order, for tests and replays.
*
* Deal order matches [com.jsjdesigns.poker.game.Table]: two hole cards per seat in seat
* order, then burn + flop, burn + turn, burn + river.
*/
class StackedDeck(private val order: IntArray) : CardSource {
private var next = 0
override fun shuffle() { next = 0 }
override fun deal(): Int {
check(next < order.size) { "stacked deck exhausted after $next cards" }
return order[next++]
}
companion object {
/** Builds a stacked deck from readable text, e.g. `holes = listOf("Ah Ad", "Kc Ks")`. */
fun of(holes: List<String>, board: String = "", filler: String = ""): StackedDeck {
val cards = ArrayList<Int>()
for (h in holes) cards.addAll(cardsOf(h).toList())
val boardCards = if (board.isBlank()) IntArray(0) else cardsOf(board)
val fillerCards = if (filler.isBlank()) IntArray(0) else cardsOf(filler)
// burn + flop, burn + turn, burn + river
val used = (cards + boardCards.toList()).toSet()
val burns = (0 until Card.DECK_SIZE).filter { it !in used }.iterator()
fun burn(): Int = burns.next()
if (boardCards.isNotEmpty()) {
cards.add(burn())
for (i in 0 until minOf(3, boardCards.size)) cards.add(boardCards[i])
if (boardCards.size > 3) { cards.add(burn()); cards.add(boardCards[3]) }
if (boardCards.size > 4) { cards.add(burn()); cards.add(boardCards[4]) }
}
cards.addAll(fillerCards.toList())
// Pad with whatever is left so the deck never runs dry mid-hand.
val chosen = cards.toSet()
for (c in 0 until Card.DECK_SIZE) if (c !in chosen) cards.add(c)
return StackedDeck(cards.toIntArray())
}
}
}
@@ -0,0 +1,31 @@
package com.jsjdesigns.poker.core
import kotlin.random.Random
/**
* A shuffled 52-card deck. Seedable via [random] so any hand the bots misplay can
* be replayed exactly — which matters a lot when tuning profiles.
*/
class Deck(private val random: Random = Random.Default) : CardSource {
private val cards = IntArray(Card.DECK_SIZE) { it }
private var next = 0
val remaining: Int get() = Card.DECK_SIZE - next
override fun shuffle() {
for (i in cards.indices) cards[i] = i
for (i in Card.DECK_SIZE - 1 downTo 1) {
val j = random.nextInt(i + 1)
val tmp = cards[i]; cards[i] = cards[j]; cards[j] = tmp
}
next = 0
}
override fun deal(): Int {
check(next < Card.DECK_SIZE) { "deck exhausted" }
return cards[next++]
}
override fun deal(count: Int): IntArray = IntArray(count) { deal() }
}
@@ -0,0 +1,93 @@
package com.jsjdesigns.poker.core
import kotlin.random.Random
/**
* Monte Carlo equity: the share of the pot a hand wins on average against random
* opposition, with ties split.
*
* This is the number every bot decision is built on, and the number the coach
* explains to the player. The LLM is never asked to compute it.
*/
object Equity {
/**
* @param hole the two hole cards
* @param board 0, 3, 4 or 5 community cards
* @param opponents how many opponents are still live
* @param iterations rollouts to run; 2000 is accurate to roughly +/-1%
*/
fun estimate(
hole: IntArray,
board: IntArray,
opponents: Int,
iterations: Int = 2000,
random: Random = Random.Default,
): Double {
require(hole.size == 2) { "expected 2 hole cards, got ${hole.size}" }
require(board.size <= 5) { "board too large: ${board.size}" }
require(opponents >= 1) { "need at least one opponent" }
val known = BooleanArray(Card.DECK_SIZE)
for (c in hole) known[c] = true
for (c in board) known[c] = true
val deck = IntArray(Card.DECK_SIZE - hole.size - board.size)
var n = 0
for (c in 0 until Card.DECK_SIZE) if (!known[c]) deck[n++] = c
val boardNeeded = 5 - board.size
val draws = boardNeeded + opponents * 2
check(draws <= deck.size) { "not enough cards left to simulate" }
// hero = [hole0, hole1, board0..board4]
val hero = IntArray(7)
hero[0] = hole[0]
hero[1] = hole[1]
for (i in board.indices) hero[2 + i] = board[i]
val opp = IntArray(7)
val boardFillStart = 2 + board.size
var won = 0.0
repeat(iterations) {
// Partial Fisher-Yates: only shuffle the cards we actually draw.
for (i in 0 until draws) {
val j = i + random.nextInt(deck.size - i)
val tmp = deck[i]; deck[i] = deck[j]; deck[j] = tmp
}
var idx = 0
for (i in 0 until boardNeeded) hero[boardFillStart + i] = deck[idx++]
val heroScore = HandEvaluator.evaluate(hero, 7)
for (i in 2..6) opp[i] = hero[i]
var bestOpp = -1
var tiedAtBest = 0
for (o in 0 until opponents) {
opp[0] = deck[idx++]
opp[1] = deck[idx++]
val s = HandEvaluator.evaluate(opp, 7)
if (s > bestOpp) {
bestOpp = s
tiedAtBest = 1
} else if (s == bestOpp) {
tiedAtBest++
}
}
if (heroScore > bestOpp) won += 1.0
else if (heroScore == bestOpp) won += 1.0 / (tiedAtBest + 1)
}
return won / iterations
}
/**
* Pot odds as a break-even equity: call [toCall] to win [pot], and you need at
* least this much equity for the call to show a profit.
*/
fun potOdds(pot: Int, toCall: Int): Double =
if (toCall <= 0) 0.0 else toCall.toDouble() / (pot + toCall)
}
@@ -0,0 +1,157 @@
package com.jsjdesigns.poker.core
/**
* Five-to-seven card hand evaluation.
*
* [evaluate] returns a packed Int where a numerically larger value is a strictly
* better hand, so comparing hands is a plain `>`. Layout is
* `category(4 bits) | t1 | t2 | t3 | t4 | t5` with each tiebreak nibble holding a
* rank in 2..14.
*
* This deliberately avoids the "try all 21 five-card subsets" approach: equity
* simulation calls this millions of times, so it buckets ranks and suits in a
* single pass instead.
*/
object HandEvaluator {
const val HIGH_CARD = 0
const val PAIR = 1
const val TWO_PAIR = 2
const val TRIPS = 3
const val STRAIGHT = 4
const val FLUSH = 5
const val FULL_HOUSE = 6
const val QUADS = 7
const val STRAIGHT_FLUSH = 8
val CATEGORY_NAMES = arrayOf(
"High Card", "Pair", "Two Pair", "Three of a Kind", "Straight",
"Flush", "Full House", "Four of a Kind", "Straight Flush",
)
fun categoryOf(score: Int): Int = score ushr 20
fun describe(score: Int): String = CATEGORY_NAMES[categoryOf(score)]
/** Evaluates 5, 6 or 7 cards given as deck indices in 0..51. */
fun evaluate(cards: IntArray, count: Int = cards.size): Int {
val rankCount = IntArray(15)
val suitCount = IntArray(4)
val suitMask = IntArray(4)
var rankMask = 0
for (i in 0 until count) {
val c = cards[i]
val r = 2 + c / 4
val s = c % 4
rankCount[r]++
suitCount[s]++
suitMask[s] = suitMask[s] or (1 shl r)
rankMask = rankMask or (1 shl r)
}
// Flushes dominate everything below a full house, so resolve them first.
var flushSuit = -1
for (s in 0..3) if (suitCount[s] >= 5) flushSuit = s
if (flushSuit >= 0) {
val fm = suitMask[flushSuit]
val sfHigh = straightHigh(withWheel(fm))
if (sfHigh > 0) return pack(STRAIGHT_FLUSH, sfHigh)
return packTop5(FLUSH, fm)
}
// Quads and full houses outrank a straight, so count-based hands come next.
var quad = 0
var tripsHigh = 0
var tripsLow = 0
var pairHigh = 0
var pairLow = 0
for (r in 14 downTo 2) {
when (rankCount[r]) {
4 -> if (quad == 0) quad = r
3 -> if (tripsHigh == 0) tripsHigh = r else if (tripsLow == 0) tripsLow = r
2 -> if (pairHigh == 0) pairHigh = r else if (pairLow == 0) pairLow = r
}
}
if (quad != 0) {
val kicker = highestExcluding(rankMask, quad)
return pack(QUADS, quad, kicker)
}
if (tripsHigh != 0 && (tripsLow != 0 || pairHigh != 0)) {
// A second set plays as the pair when it beats the best actual pair.
val pair = if (tripsLow > pairHigh) tripsLow else pairHigh
return pack(FULL_HOUSE, tripsHigh, pair)
}
val straight = straightHigh(withWheel(rankMask))
if (straight > 0) return pack(STRAIGHT, straight)
if (tripsHigh != 0) {
val k1 = highestExcluding(rankMask, tripsHigh)
val k2 = highestExcluding(rankMask, tripsHigh, k1)
return pack(TRIPS, tripsHigh, k1, k2)
}
if (pairHigh != 0 && pairLow != 0) {
val kicker = highestExcluding(rankMask, pairHigh, pairLow)
return pack(TWO_PAIR, pairHigh, pairLow, kicker)
}
if (pairHigh != 0) {
val k1 = highestExcluding(rankMask, pairHigh)
val k2 = highestExcluding(rankMask, pairHigh, k1)
val k3 = highestExcluding(rankMask, pairHigh, k1, k2)
return pack(PAIR, pairHigh, k1, k2, k3)
}
return packTop5(HIGH_CARD, rankMask)
}
/** Mirrors the ace into the low slot so A-2-3-4-5 registers as a straight. */
private fun withWheel(mask: Int): Int =
if (mask and (1 shl 14) != 0) mask or (1 shl 1) else mask
/** Highest top-card of any five-in-a-row present in [mask], or 0. */
private fun straightHigh(mask: Int): Int {
for (high in 14 downTo 5) {
val need = 0b11111 shl (high - 4)
if (mask and need == need) return high
}
return 0
}
private fun highestExcluding(mask: Int, vararg exclude: Int): Int {
var m = mask
for (e in exclude) m = m and (1 shl e).inv()
for (r in 14 downTo 2) if (m and (1 shl r) != 0) return r
return 0
}
private fun pack(category: Int, vararg tiebreaks: Int): Int {
var s = category
for (i in 0 until 5) {
s = (s shl 4) or (if (i < tiebreaks.size) tiebreaks[i] else 0)
}
return s
}
private fun packTop5(category: Int, mask: Int): Int {
var s = category
var taken = 0
for (r in 14 downTo 2) {
if (taken == 5) break
if (mask and (1 shl r) != 0) {
s = (s shl 4) or r
taken++
}
}
while (taken < 5) {
s = s shl 4
taken++
}
return s
}
}
@@ -0,0 +1,140 @@
package com.jsjdesigns.poker.core
import kotlin.random.Random
/**
* Strength ranking of the 169 distinct starting hands.
*
* Two separate problems have to be solved here, and it is worth keeping them
* distinct:
*
* 1. **The threshold.** Raw all-in equity must never be compared against pot odds
* pre-flop. 7-2o has ~35% equity against one random hand but is unplayable,
* because you never realise that equity across three streets. Solved by
* ranking hands and gating on percentile — "I open the top 15%".
*
* 2. **The ordering.** All-in equity is still a flawed way to *rank* hands: it
* undervalues suited connectors, whose worth is in implied odds, and
* overvalues weak aces and small pairs, which are dominated or hard to play.
* So the raw equity is adjusted by an explicit playability term below.
*
* The adjustment is a documented heuristic in the spirit of the Chen formula, not
* solver output. It is a reasonable starting ordering to be tuned against the
* simulator, not a claim of correctness.
*
* Computed once on first use (~50ms) and cached.
*/
object PreflopChart {
/** 169 entries keyed by [key]; value is percentile where 0.0 is the best hand. */
private val percentiles: DoubleArray by lazy { build() }
/** Canonical slot for a starting hand: pairs, then suited, then offsuit. */
fun key(hole: IntArray): Int {
val r1 = 2 + hole[0] / 4
val r2 = 2 + hole[1] / 4
val suited = hole[0] % 4 == hole[1] % 4
val hi = maxOf(r1, r2) - 2
val lo = minOf(r1, r2) - 2
return when {
hi == lo -> hi // 0..12 pairs
suited -> 13 + hi * 13 + lo // suited
else -> 13 + 169 + hi * 13 + lo // offsuit
}
}
private const val TABLE_SIZE = 13 + 169 + 169
/**
* Percentile of this starting hand, 0.0 (aces) to 1.0 (worst).
* A player who "plays the top 20%" enters when this is <= 0.20.
*/
fun percentile(hole: IntArray): Double = percentiles[key(hole)]
/**
* Playability adjustment applied on top of all-in equity, in equity points.
*
* Captures what raw equity cannot: implied odds for hands that make disguised
* straights and flushes, and reverse implied odds for hands that are usually
* dominated when they connect.
*/
private fun playability(hi: Int, lo: Int, suited: Boolean, pair: Boolean): Double {
var adj = 0.0
if (pair) {
// Small pairs have big all-in equity but need to flop a set to continue.
if (hi <= 6) adj -= 0.030
else if (hi <= 9) adj -= 0.012
return adj
}
// Flush potential is worth real money postflop.
if (suited) adj += 0.035
// Connectedness: straight potential falls away fast as the gap widens.
val gap = hi - lo - 1
adj += when (gap) {
0 -> 0.022
1 -> 0.012
2 -> 0.004
else -> -0.004 * gap
}
// Two broadway cards dominate rather than being dominated.
if (lo >= 10) adj += 0.020
// Weak aces flop top pair with a hopeless kicker.
if (hi == 14 && lo <= 9) adj -= if (suited) 0.018 else 0.034
// Weak kings have the same problem, less severely.
if (hi == 13 && lo <= 8) adj -= if (suited) 0.010 else 0.022
return adj
}
private fun build(): DoubleArray {
val random = Random(9_1_2026)
val table = DoubleArray(TABLE_SIZE) { -1.0 }
val entries = ArrayList<Pair<Int, Double>>(169)
for (hi in 12 downTo 0) {
for (lo in hi downTo 0) {
if (hi == lo) {
val hole = intArrayOf(
Card.of(hi + 2, Suit.CLUBS).index,
Card.of(hi + 2, Suit.HEARTS).index,
)
val e = Equity.estimate(hole, IntArray(0), 1, 2500, random)
val k = key(hole)
val score = e + playability(hi + 2, lo + 2, suited = false, pair = true)
table[k] = score
entries.add(k to score)
} else {
val suitedHole = intArrayOf(
Card.of(hi + 2, Suit.SPADES).index,
Card.of(lo + 2, Suit.SPADES).index,
)
val offHole = intArrayOf(
Card.of(hi + 2, Suit.SPADES).index,
Card.of(lo + 2, Suit.HEARTS).index,
)
for ((hole, suited) in listOf(suitedHole to true, offHole to false)) {
val e = Equity.estimate(hole, IntArray(0), 1, 2500, random)
val k = key(hole)
val score = e + playability(hi + 2, lo + 2, suited, pair = false)
table[k] = score
entries.add(k to score)
}
}
}
}
// Convert raw equity into a percentile ranking.
entries.sortByDescending { it.second }
val out = DoubleArray(TABLE_SIZE) { 1.0 }
for ((rank, entry) in entries.withIndex()) {
out[entry.first] = rank.toDouble() / (entries.size - 1)
}
return out
}
}
@@ -0,0 +1,455 @@
package com.jsjdesigns.poker.game
import com.jsjdesigns.poker.core.Card
import com.jsjdesigns.poker.core.CardSource
import com.jsjdesigns.poker.core.Deck
import com.jsjdesigns.poker.core.HandEvaluator
import kotlin.random.Random
enum class Street { PREFLOP, FLOP, TURN, RIVER }
enum class ActionType { FOLD, CHECK, CALL, BET, RAISE }
/** For BET and RAISE, [amount] is the total this player is committing *to* this round. */
data class Action(val type: ActionType, val amount: Int = 0) {
override fun toString(): String = when (type) {
ActionType.FOLD -> "folds"
ActionType.CHECK -> "checks"
ActionType.CALL -> "calls $amount"
ActionType.BET -> "bets $amount"
ActionType.RAISE -> "raises to $amount"
}
}
data class HandEvent(val street: Street, val seat: Int, val name: String, val action: Action)
class Seat(
val index: Int,
val name: String,
var stack: Int,
val agent: PlayerAgent,
) {
var hole: IntArray = IntArray(0)
var committedThisRound = 0
var committedThisHand = 0
var folded = false
var allIn = false
var hasActed = false
val canAct: Boolean get() = !folded && !allIn && stack > 0
val contesting: Boolean get() = !folded
}
/** Everything a player may legally know when it is their turn. */
class DecisionContext(
val street: Street,
val seat: Seat,
val board: IntArray,
val pot: Int,
val toCall: Int,
val minRaiseTo: Int,
val maxRaiseTo: Int,
val activeOpponents: Int,
/** How many players act after this one on this street; 0 means last to act. */
val seatsActingAfter: Int,
val bigBlind: Int,
val history: List<HandEvent>,
) {
val hole: IntArray get() = seat.hole
val stack: Int get() = seat.stack
val canCheck: Boolean get() = toCall == 0
/**
* True when this player may still put in a raise.
*
* A player who has already acted at the current bet level and is only facing
* an *incomplete* raise (a short all-in) owes the difference but may not
* re-raise. A full raise resets [Seat.hasActed], restoring the right.
*/
val canRaise: Boolean get() = seat.stack > toCall && !seat.hasActed
val inPosition: Boolean get() = seatsActingAfter == 0
}
fun interface PlayerAgent {
fun act(ctx: DecisionContext): Action
}
data class Pot(val amount: Int, val eligible: List<Int>)
data class HandResult(
val board: IntArray,
/** Net chip change per seat for this hand. */
val net: IntArray,
val winners: List<Int>,
val wentToShowdown: Boolean,
val potSize: Int,
val events: List<HandEvent>,
)
/**
* A no-limit Texas Hold'em table.
*
* Deliberately headless and synchronous: the same engine runs the on-device game
* and the batch simulator used to tune bot profiles.
*/
class Table(
val seats: List<Seat>,
val smallBlind: Int,
val bigBlind: Int,
private val random: Random = Random.Default,
private val deck: CardSource = Deck(random),
) {
var button: Int = 0
private set
val board = ArrayList<Int>(5)
private val events = ArrayList<HandEvent>()
private var currentBet = 0
private var minRaiseSize = 0
fun advanceButton() {
button = nextOccupied(button)
}
private fun nextOccupied(from: Int): Int {
var i = (from + 1) % seats.size
var guard = 0
while (seats[i].stack <= 0 && guard++ < seats.size) i = (i + 1) % seats.size
return i
}
private fun nextInHand(from: Int): Int {
var i = (from + 1) % seats.size
var guard = 0
while (!seats[i].contesting && guard++ < seats.size) i = (i + 1) % seats.size
return i
}
fun playHand(): HandResult {
val startingStacks = IntArray(seats.size) { seats[it].stack }
resetForHand()
val live = seats.filter { it.stack > 0 }
require(live.size >= 2) { "need at least two funded players" }
postBlinds()
dealHoleCards()
var street = Street.PREFLOP
var finished = false
while (!finished) {
val first = firstToAct(street)
runBettingRound(street, first)
val stillIn = seats.count { it.contesting }
if (stillIn <= 1) {
finished = true
break
}
// If everyone left is all-in, run the remaining board out unopposed.
val canStillBet = seats.count { it.contesting && !it.allIn }
if (canStillBet <= 1 && street != Street.RIVER) {
dealRemainingBoard(street)
street = Street.RIVER
finished = true
break
}
street = when (street) {
Street.PREFLOP -> { dealFlop(); Street.FLOP }
Street.FLOP -> { dealTurn(); Street.TURN }
Street.TURN -> { dealRiver(); Street.RIVER }
Street.RIVER -> { finished = true; Street.RIVER }
}
}
return settle(startingStacks)
}
private fun resetForHand() {
deck.shuffle()
board.clear()
events.clear()
currentBet = 0
minRaiseSize = bigBlind
for (s in seats) {
s.hole = IntArray(0)
s.committedThisRound = 0
s.committedThisHand = 0
s.folded = s.stack <= 0
s.allIn = false
s.hasActed = false
}
}
private fun postBlinds() {
val funded = seats.filter { it.stack > 0 }
val headsUp = funded.size == 2
// Heads-up: the button posts the small blind and acts first pre-flop.
val sbSeat = if (headsUp) button else nextOccupied(button)
val bbSeat = nextOccupied(sbSeat)
commit(seats[sbSeat], smallBlind)
commit(seats[bbSeat], bigBlind)
currentBet = bigBlind
minRaiseSize = bigBlind
}
private fun dealHoleCards() {
for (s in seats) if (s.stack > 0 || s.committedThisHand > 0) {
if (!s.folded) s.hole = deck.deal(2)
}
}
private fun dealFlop() {
deck.deal() // burn
repeat(3) { board.add(deck.deal()) }
}
private fun dealTurn() {
deck.deal()
board.add(deck.deal())
}
private fun dealRiver() {
deck.deal()
board.add(deck.deal())
}
private fun dealRemainingBoard(from: Street) {
var s = from
while (s != Street.RIVER) {
s = when (s) {
Street.PREFLOP -> { dealFlop(); Street.FLOP }
Street.FLOP -> { dealTurn(); Street.TURN }
Street.TURN -> { dealRiver(); Street.RIVER }
Street.RIVER -> Street.RIVER
}
}
}
private fun firstToAct(street: Street): Int {
val funded = seats.count { it.stack > 0 || it.committedThisHand > 0 }
val headsUp = funded == 2
return if (street == Street.PREFLOP) {
if (headsUp) {
button // heads-up SB/button acts first pre-flop
} else {
val sb = nextOccupied(button)
val bb = nextOccupied(sb)
nextInHand(bb)
}
} else {
if (headsUp) nextInHand(button) else nextInHand(button)
}
}
private fun commit(seat: Seat, amount: Int): Int {
val actual = amount.coerceAtMost(seat.stack)
seat.stack -= actual
seat.committedThisRound += actual
seat.committedThisHand += actual
if (seat.stack == 0) seat.allIn = true
return actual
}
private fun runBettingRound(street: Street, firstSeat: Int) {
for (s in seats) {
s.committedThisRound = 0
s.hasActed = false
}
if (street == Street.PREFLOP) {
// Blinds were already committed; re-apply them to this round's totals.
val funded = seats.filter { it.stack > 0 || it.committedThisHand > 0 }
val headsUp = funded.size == 2
val sbSeat = if (headsUp) button else nextOccupied(button)
val bbSeat = nextOccupied(sbSeat)
seats[sbSeat].committedThisRound = minOf(smallBlind, seats[sbSeat].committedThisHand)
seats[bbSeat].committedThisRound = minOf(bigBlind, seats[bbSeat].committedThisHand)
currentBet = bigBlind
} else {
currentBet = 0
}
minRaiseSize = bigBlind
if (seats.count { it.canAct } == 0) return
var i = firstSeat
var guard = 0
val maxIterations = seats.size * 40
while (guard++ < maxIterations) {
if (roundComplete()) break
val seat = seats[i]
if (seat.canAct && (!seat.hasActed || seat.committedThisRound < currentBet)) {
val toCall = (currentBet - seat.committedThisRound).coerceAtLeast(0)
val ctx = buildContext(street, seat, toCall)
val action = sanitise(seat, toCall, seat.agent.act(ctx))
apply(street, seat, action, toCall)
seat.hasActed = true
if (seats.count { it.contesting } <= 1) return
}
i = (i + 1) % seats.size
}
}
private fun roundComplete(): Boolean {
val actors = seats.filter { it.canAct }
if (actors.isEmpty()) return true
return actors.all { it.hasActed && it.committedThisRound == currentBet }
}
private fun buildContext(street: Street, seat: Seat, toCall: Int): DecisionContext {
val minRaiseTo = currentBet + minRaiseSize
val maxRaiseTo = seat.committedThisRound + seat.stack
var after = 0
var i = (seat.index + 1) % seats.size
while (i != seat.index) {
val o = seats[i]
if (o.canAct && (!o.hasActed || o.committedThisRound < currentBet)) after++
i = (i + 1) % seats.size
}
return DecisionContext(
street = street,
seat = seat,
board = board.toIntArray(),
pot = pot(),
toCall = toCall,
minRaiseTo = minRaiseTo,
maxRaiseTo = maxRaiseTo,
activeOpponents = seats.count { it.contesting && it !== seat },
seatsActingAfter = after,
bigBlind = bigBlind,
history = events,
)
}
/** Clamps whatever an agent returns into something legal. */
private fun sanitise(seat: Seat, toCall: Int, action: Action): Action {
return when (action.type) {
ActionType.FOLD -> if (toCall == 0) Action(ActionType.CHECK) else action
ActionType.CHECK -> if (toCall > 0) Action(ActionType.FOLD) else action
ActionType.CALL -> if (toCall == 0) Action(ActionType.CHECK) else action
ActionType.BET, ActionType.RAISE -> {
// Facing only an incomplete raise after already acting: call or fold.
if (seat.hasActed && toCall > 0) return Action(ActionType.CALL, toCall)
val maxTo = seat.committedThisRound + seat.stack
val minTo = (currentBet + minRaiseSize).coerceAtMost(maxTo)
val target = action.amount.coerceIn(minTo, maxTo)
if (target <= currentBet) {
if (toCall == 0) Action(ActionType.CHECK) else Action(ActionType.CALL, toCall)
} else {
Action(if (currentBet == 0) ActionType.BET else ActionType.RAISE, target)
}
}
}
}
private fun apply(street: Street, seat: Seat, action: Action, toCall: Int) {
when (action.type) {
ActionType.FOLD -> seat.folded = true
ActionType.CHECK -> Unit
ActionType.CALL -> commit(seat, toCall)
ActionType.BET, ActionType.RAISE -> {
val raiseSize = action.amount - currentBet
commit(seat, action.amount - seat.committedThisRound)
// A short all-in that does not complete a full raise must not reopen betting.
if (raiseSize >= minRaiseSize) {
minRaiseSize = raiseSize
for (other in seats) if (other !== seat && other.canAct) other.hasActed = false
}
currentBet = maxOf(currentBet, seat.committedThisRound)
}
}
events.add(HandEvent(street, seat.index, seat.name, action))
}
private fun pot(): Int = seats.sumOf { it.committedThisHand }
/**
* Refunds any uncalled excess, builds side pots, and awards them.
*
* Side pots are layered at each distinct all-in level: every player contributes
* up to that level, and only players who reached it can win that layer.
*/
private fun settle(startingStacks: IntArray): HandResult {
// Return the portion of a bet nobody could match.
for (s in seats) {
val maxOther = seats.filter { it !== s }.maxOfOrNull { it.committedThisHand } ?: 0
if (s.committedThisHand > maxOther) {
val refund = s.committedThisHand - maxOther
s.stack += refund
s.committedThisHand -= refund
}
}
val contenders = seats.filter { it.contesting }
val winners = ArrayList<Int>()
var wentToShowdown = false
val potTotal = pot()
if (contenders.size == 1) {
val w = contenders.first()
w.stack += potTotal
for (s in seats) s.committedThisHand = 0
winners.add(w.index)
} else {
wentToShowdown = true
val scores = HashMap<Int, Int>()
for (c in contenders) {
val seven = IntArray(7)
seven[0] = c.hole[0]; seven[1] = c.hole[1]
for (k in board.indices) seven[2 + k] = board[k]
scores[c.index] = HandEvaluator.evaluate(seven, 2 + board.size)
}
val levels = contenders.map { it.committedThisHand }.distinct().sorted()
var previous = 0
val pots = ArrayList<Pot>()
for (level in levels) {
var amount = 0
for (s in seats) {
amount += (s.committedThisHand.coerceAtMost(level) - s.committedThisHand.coerceAtMost(previous))
}
if (amount > 0) {
val eligible = contenders.filter { it.committedThisHand >= level }.map { it.index }
pots.add(Pot(amount, eligible))
}
previous = level
}
for (p in pots) {
val best = p.eligible.maxOf { scores.getValue(it) }
val potWinners = p.eligible.filter { scores.getValue(it) == best }
val share = p.amount / potWinners.size
var remainder = p.amount - share * potWinners.size
for (w in potWinners) {
seats[w].stack += share
if (remainder > 0) { seats[w].stack += 1; remainder-- }
if (w !in winners) winners.add(w)
}
}
for (s in seats) s.committedThisHand = 0
}
val net = IntArray(seats.size) { seats[it].stack - startingStacks[it] }
return HandResult(
board = board.toIntArray(),
net = net,
winners = winners,
wentToShowdown = wentToShowdown,
potSize = potTotal,
events = ArrayList(events),
)
}
fun boardString(): String = board.joinToString(" ") { Card(it).toString() }
}
@@ -0,0 +1,143 @@
package com.jsjdesigns.poker.core
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertTrue
class HandEvaluatorTest {
private fun eval(text: String) = HandEvaluator.evaluate(cardsOf(text))
private fun cat(text: String) = HandEvaluator.categoryOf(eval(text))
@Test
fun `categories are detected`() {
assertEquals(HandEvaluator.STRAIGHT_FLUSH, cat("9h 8h 7h 6h 5h"))
assertEquals(HandEvaluator.QUADS, cat("9h 9s 9d 9c 5h"))
assertEquals(HandEvaluator.FULL_HOUSE, cat("9h 9s 9d 5c 5h"))
assertEquals(HandEvaluator.FLUSH, cat("Ah Jh 7h 4h 2h"))
assertEquals(HandEvaluator.STRAIGHT, cat("9h 8s 7d 6c 5h"))
assertEquals(HandEvaluator.TRIPS, cat("9h 9s 9d 6c 5h"))
assertEquals(HandEvaluator.TWO_PAIR, cat("9h 9s 6d 6c 5h"))
assertEquals(HandEvaluator.PAIR, cat("9h 9s 8d 6c 5h"))
assertEquals(HandEvaluator.HIGH_CARD, cat("Ah Js 8d 6c 5h"))
}
@Test
fun `wheel counts as a five high straight`() {
assertEquals(HandEvaluator.STRAIGHT, cat("Ah 2s 3d 4c 5h"))
// ...and must lose to a six-high straight
assertTrue(eval("Ah 2s 3d 4c 5h") < eval("2s 3d 4c 5h 6d"))
}
@Test
fun `steel wheel is a straight flush`() {
assertEquals(HandEvaluator.STRAIGHT_FLUSH, cat("Ah 2h 3h 4h 5h"))
assertTrue(eval("Ah 2h 3h 4h 5h") < eval("6h 2h 3h 4h 5h"))
}
@Test
fun `ace high straight beats king high straight`() {
assertTrue(eval("Ah Ks Qd Jc Th") > eval("Ks Qd Jc Th 9h"))
}
@Test
fun `category ordering holds`() {
val ascending = listOf(
"Ah Js 8d 6c 5h", // high card
"9h 9s 8d 6c 5h", // pair
"9h 9s 6d 6c 5h", // two pair
"9h 9s 9d 6c 5h", // trips
"9h 8s 7d 6c 5h", // straight
"Ah Jh 7h 4h 2h", // flush
"9h 9s 9d 5c 5h", // full house
"9h 9s 9d 9c 5h", // quads
"9h 8h 7h 6h 5h", // straight flush
).map { eval(it) }
for (i in 1 until ascending.size) {
assertTrue(ascending[i] > ascending[i - 1], "rank $i should beat rank ${i - 1}")
}
}
@Test
fun `kickers break ties`() {
assertTrue(eval("9h 9s Ad 6c 5h") > eval("9h 9s Kd 6c 5h"))
assertTrue(eval("9h 9s 6d 6c Ah") > eval("9h 9s 6d 6c Kh"))
assertTrue(eval("Ah As Ad Ac Kh") > eval("Ah As Ad Ac Qh"))
assertEquals(eval("9h 9s 6d 6c Ah"), eval("9d 9c 6s 6h As"))
}
@Test
fun `two trips make a full house using the higher set`() {
// 7s full of 5s, not 5s full of 7s
val score = eval("7h 7s 7d 5c 5h 5s 2d")
assertEquals(HandEvaluator.FULL_HOUSE, HandEvaluator.categoryOf(score))
assertEquals(score, eval("7h 7s 7d 5c 5h"))
}
@Test
fun `seven cards pick the best five`() {
// Flush is available and must be chosen over the pair
assertEquals(HandEvaluator.FLUSH, HandEvaluator.categoryOf(eval("Ah Jh 7h 4h 2h 9s 9d")))
// Straight flush available among seven
assertEquals(HandEvaluator.STRAIGHT_FLUSH, HandEvaluator.categoryOf(eval("9h 8h 7h 6h 5h As Kd")))
// Six cards to a flush -> best five of that suit
assertEquals(eval("Ah Kh Qh Jh 9h"), eval("Ah Kh Qh Jh 9h 2h 3s"))
}
@Test
fun `board plays when hole cards do not improve it`() {
val board = "Ah Kh Qh Jh Th"
assertEquals(eval("$board 2c 3d"), eval("$board 2s 3h"))
}
/**
* Exhaustive check against the known frequencies of five-card poker hands.
* If any branch of the evaluator is wrong these counts move, so this is the
* test that actually proves correctness rather than spot-checking it.
*/
@Test
fun `all 2598960 five card hands match published frequencies`() {
val expected = intArrayOf(
1302540, // high card
1098240, // pair
123552, // two pair
54912, // trips
10200, // straight
5108, // flush
3744, // full house
624, // quads
40, // straight flush
)
val counts = IntArray(9)
val hand = IntArray(5)
var total = 0
for (a in 0 until 48) {
hand[0] = a
for (b in a + 1 until 49) {
hand[1] = b
for (c in b + 1 until 50) {
hand[2] = c
for (d in c + 1 until 51) {
hand[3] = d
for (e in d + 1 until 52) {
hand[4] = e
counts[HandEvaluator.categoryOf(HandEvaluator.evaluate(hand))]++
total++
}
}
}
}
}
assertEquals(2_598_960, total)
for (i in 0..8) {
assertEquals(
expected[i], counts[i],
"${HandEvaluator.CATEGORY_NAMES[i]} count mismatch",
)
}
}
}
@@ -0,0 +1,91 @@
package com.jsjdesigns.poker.core
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertTrue
class PreflopChartTest {
private fun p(text: String) = PreflopChart.percentile(cardsOf(text))
/** Lower percentile == stronger hand. */
private fun assertStronger(better: String, worse: String) {
assertTrue(
p(better) < p(worse),
"$better (${"%.3f".format(p(better))}) should rank above $worse (${"%.3f".format(p(worse))})",
)
}
@Test
fun `aces are the best starting hand`() {
assertEquals(0.0, p("Ah Ad"))
}
@Test
fun `big pairs are correctly ordered`() {
assertStronger("Ah Ad", "Kh Kd")
assertStronger("Kh Kd", "Qh Qd")
assertStronger("Qh Qd", "Jh Jd")
}
@Test
fun `suitedness is worth something`() {
assertStronger("Ah Kh", "Ah Kd")
assertStronger("7h 6h", "7h 6d")
assertStronger("Jh Th", "Jh Td")
}
@Test
fun `connectedness beats equivalent gappers`() {
assertStronger("7h 6h", "7h 2h")
assertStronger("9h 8h", "9h 4h")
}
@Test
fun `weak aces are discounted for domination`() {
// A2o has strong all-in equity but is a reverse-implied-odds trap.
assertStronger("Ah Kd", "Ah 2d")
assertStronger("Ah Qd", "Ah 3d")
}
@Test
fun `suited connectors outrank junk with similar raw equity`() {
assertStronger("7h 6h", "7h 2d")
assertStronger("6h 5h", "Kd 3c")
}
@Test
fun `worst hands really are worst`() {
assertTrue(p("7h 2d") > 0.90, "72o should sit in the bottom 10%, was ${p("7h 2d")}")
assertTrue(p("8h 3d") > 0.85, "83o should be near the bottom, was ${p("8h 3d")}")
}
@Test
fun `card order does not matter`() {
assertEquals(p("Ah Kd"), p("Kd Ah"))
assertEquals(p("7h 6h"), p("6h 7h"))
}
@Test
fun `all percentiles are within range and reasonably distributed`() {
val samples = listOf("Ah Ad", "Kh Qh", "9h 8d", "7h 2d", "Th Td", "Ah 5h")
for (s in samples) {
val v = p(s)
assertTrue(v in 0.0..1.0, "$s percentile out of range: $v")
}
// A premium hand and a trash hand must not land close together.
assertTrue(p("7h 2d") - p("Ah Ad") > 0.8, "range is too compressed to gate on")
}
@Test
fun `a tight range admits few hands and a loose range admits many`() {
val all = ArrayList<Double>()
for (a in 0 until 51) for (b in a + 1 until 52) {
all.add(PreflopChart.percentile(intArrayOf(a, b)))
}
val tight = all.count { it <= 0.12 }
val loose = all.count { it <= 0.60 }
assertTrue(tight < loose, "a 12% range must be narrower than a 60% range")
assertTrue(tight > 0, "a 12% range must admit something")
}
}
@@ -0,0 +1,247 @@
package com.jsjdesigns.poker.game
import com.jsjdesigns.poker.core.StackedDeck
import kotlin.random.Random
import kotlin.test.Test
import kotlin.test.assertEquals
import kotlin.test.assertFalse
import kotlin.test.assertTrue
/** A snapshot of what a player was offered, taken before the seat mutates. */
private data class Offer(
val street: Street,
val toCall: Int,
val canRaise: Boolean,
val canCheck: Boolean,
val pot: Int,
val minRaiseTo: Int,
val maxRaiseTo: Int,
)
private class Scripted(private vararg val actions: Action) : PlayerAgent {
private var i = 0
val offers = mutableListOf<Offer>()
override fun act(ctx: DecisionContext): Action {
offers += Offer(
ctx.street, ctx.toCall, ctx.canRaise, ctx.canCheck,
ctx.pot, ctx.minRaiseTo, ctx.maxRaiseTo,
)
return actions.getOrElse(i++) {
if (ctx.canCheck) Action(ActionType.CHECK) else Action(ActionType.FOLD)
}
}
}
private class RandomAgent(private val random: Random) : PlayerAgent {
override fun act(ctx: DecisionContext): Action = when (random.nextInt(5)) {
0 -> if (ctx.canCheck) Action(ActionType.CHECK) else Action(ActionType.FOLD)
1, 2 -> if (ctx.canCheck) Action(ActionType.CHECK) else Action(ActionType.CALL, ctx.toCall)
else -> Action(ActionType.RAISE, ctx.minRaiseTo + random.nextInt(50))
}
}
class TableRulesTest {
// ---------- incomplete (short all-in) raises ----------
@Test
fun `short all-in does not reopen betting for a player who already acted`() {
val p0 = Scripted(Action(ActionType.RAISE, 100), Action(ActionType.CALL, 30))
val p1 = Scripted(Action(ActionType.RAISE, 130)) // all-in, only a 30 raise
val p2 = Scripted(Action(ActionType.FOLD))
val seats = listOf(
Seat(0, "P0", 1000, p0),
Seat(1, "P1", 130, p1),
Seat(2, "P2", 1000, p2),
)
Table(seats, 10, 20, Random(1), StackedDeck.of(listOf("Ah Ad", "Kh Kd", "Qh Qd"), "2c 7d 9s Jc 3h")).playHand()
// P0 acts twice: opens, then faces the incomplete all-in.
assertEquals(2, p0.offers.size, "P0 should be asked to act twice")
assertTrue(p0.offers[0].canRaise, "P0 may raise when first to act")
assertEquals(30, p0.offers[1].toCall, "P0 owes the extra 30")
assertFalse(
p0.offers[1].canRaise,
"an incomplete all-in must not reopen betting for a player who already acted",
)
}
@Test
fun `a full raise does reopen betting`() {
val p0 = Scripted(Action(ActionType.RAISE, 100), Action(ActionType.FOLD))
val p1 = Scripted(Action(ActionType.RAISE, 300)) // full re-raise
val p2 = Scripted(Action(ActionType.FOLD))
val seats = listOf(
Seat(0, "P0", 1000, p0),
Seat(1, "P1", 1000, p1),
Seat(2, "P2", 1000, p2),
)
Table(seats, 10, 20, Random(1), StackedDeck.of(listOf("Ah Ad", "Kh Kd", "Qh Qd"), "2c 7d 9s Jc 3h")).playHand()
assertEquals(2, p0.offers.size)
assertTrue(p0.offers[1].canRaise, "a full raise restores the right to re-raise")
}
@Test
fun `an illegal raise attempt is downgraded to a call`() {
// P0 tries to re-raise after only an incomplete all-in; engine must clamp it.
val p0 = Scripted(Action(ActionType.RAISE, 100), Action(ActionType.RAISE, 500))
val p1 = Scripted(Action(ActionType.RAISE, 130))
val p2 = Scripted(Action(ActionType.FOLD))
val seats = listOf(
Seat(0, "P0", 1000, p0),
Seat(1, "P1", 130, p1),
Seat(2, "P2", 1000, p2),
)
val result = Table(seats, 10, 20, Random(1),
StackedDeck.of(listOf("Ah Ad", "Kh Kd", "Qh Qd"), "2c 7d 9s Jc 3h")).playHand()
val p0Raises = result.events.count { it.seat == 0 && it.action.type == ActionType.RAISE }
assertEquals(1, p0Raises, "the illegal second raise must be downgraded, not accepted")
}
// ---------- side pots ----------
@Test
fun `side pots pay the short stack from the main pot only`() {
// P0 all-in for 50 with aces, P1 and P2 fight for the rest.
val p0 = Scripted(Action(ActionType.RAISE, 50))
val p1 = Scripted(Action(ActionType.CALL, 40), Action(ActionType.RAISE, 150), Action(ActionType.CHECK))
val p2 = Scripted(Action(ActionType.CALL, 30), Action(ActionType.CALL, 150), Action(ActionType.CHECK))
val seats = listOf(
Seat(0, "P0", 50, p0),
Seat(1, "P1", 200, p1),
Seat(2, "P2", 200, p2),
)
val result = Table(
seats, 10, 20, Random(1),
StackedDeck.of(listOf("Ah Ad", "Kh Kd", "Qh Qd"), "2c 7d 9s Jc 3h"),
).playHand()
assertEquals(0, result.net.sum(), "chips must be conserved")
// Aces take the 150 main pot -> +100 net on a 50 stack.
assertEquals(100, result.net[0], "short stack wins main pot only")
// Kings beat queens for the side pot.
assertTrue(result.net[1] > 0, "kings should win the side pot")
assertTrue(result.net[2] < 0, "queens should lose")
}
@Test
fun `split pots conserve odd chips`() {
// P0 and P1 play the same board; the pot must split without losing a chip.
val p0 = Scripted(Action(ActionType.CALL, 10), Action(ActionType.CHECK), Action(ActionType.CHECK), Action(ActionType.CHECK))
val p1 = Scripted(Action(ActionType.CHECK), Action(ActionType.CHECK), Action(ActionType.CHECK), Action(ActionType.CHECK))
val seats = listOf(Seat(0, "P0", 501, p0), Seat(1, "P1", 501, p1))
val result = Table(
seats, 5, 10, Random(1),
// Board plays: both hold rags, the royal flush on board is the hand.
StackedDeck.of(listOf("2c 3d", "2h 3s"), "Ah Kh Qh Jh Th"),
).playHand()
assertEquals(0, result.net.sum(), "odd chips must not vanish")
assertEquals(2, result.winners.size, "board plays -> split pot")
}
// ---------- uncalled bets ----------
@Test
fun `an uncalled bet is returned`() {
val p0 = Scripted(Action(ActionType.RAISE, 400))
val p1 = Scripted(Action(ActionType.FOLD))
val p2 = Scripted(Action(ActionType.FOLD))
val seats = listOf(
Seat(0, "P0", 1000, p0),
Seat(1, "P1", 1000, p1),
Seat(2, "P2", 1000, p2),
)
val result = Table(seats, 10, 20, Random(1),
StackedDeck.of(listOf("Ah Ad", "Kh Kd", "Qh Qd"), "2c 7d 9s Jc 3h")).playHand()
assertEquals(0, result.net.sum())
// P0 wins only the blinds; the uncalled 400 comes back.
assertEquals(30, result.net[0], "winner collects the blinds, not their own uncalled bet")
}
// ---------- blinds and action order ----------
@Test
fun `heads up button posts the small blind and acts first preflop`() {
val p0 = Scripted(Action(ActionType.CALL, 5), Action(ActionType.CHECK), Action(ActionType.CHECK), Action(ActionType.CHECK))
val p1 = Scripted(Action(ActionType.CHECK), Action(ActionType.CHECK), Action(ActionType.CHECK), Action(ActionType.CHECK))
val seats = listOf(Seat(0, "P0", 500, p0), Seat(1, "P1", 500, p1))
val result = Table(seats, 5, 10, Random(1),
StackedDeck.of(listOf("2c 3d", "2h 3s"), "Ah Kh Qh Jh Th")).playHand()
val firstPreflop = result.events.first { it.street == Street.PREFLOP }
assertEquals(0, firstPreflop.seat, "heads-up, the button acts first pre-flop")
// Button posted the small blind, so it owes 5 to complete.
assertEquals(5, p0.offers.first().toCall)
}
@Test
fun `six handed action starts left of the big blind`() {
val agents = List(6) { Scripted() }
val seats = agents.mapIndexed { i, a -> Seat(i, "P$i", 500, a) }
val result = Table(seats, 5, 10, Random(1), StackedDeck.of(List(6) { "" }.let {
listOf("Ah Ad", "Kh Kd", "Qh Qd", "Jh Jd", "Th Td", "9h 9d")
}, "2c 7d 4s 5c 3h")).playHand()
// Button defaults to seat 0 -> SB seat 1, BB seat 2, first to act seat 3.
val firstPreflop = result.events.first { it.street == Street.PREFLOP }
assertEquals(3, firstPreflop.seat, "under the gun is left of the big blind")
}
// ---------- malformed agent output ----------
@Test
fun `malformed actions are sanitised`() {
// Tries to check facing a bet, and to bet far beyond its stack.
val p0 = Scripted(Action(ActionType.RAISE, 999_999))
val p1 = Scripted(Action(ActionType.CHECK))
val p2 = Scripted(Action(ActionType.FOLD))
val seats = listOf(
Seat(0, "P0", 300, p0),
Seat(1, "P1", 300, p1),
Seat(2, "P2", 300, p2),
)
val result = Table(seats, 10, 20, Random(1),
StackedDeck.of(listOf("Ah Ad", "Kh Kd", "Qh Qd"), "2c 7d 9s Jc 3h")).playHand()
assertEquals(0, result.net.sum())
assertTrue(seats.all { it.stack >= 0 }, "no stack may go negative")
// The oversized raise must have been clamped to the 300 stack.
val raise = result.events.first { it.seat == 0 && it.action.type == ActionType.RAISE }
assertTrue(raise.action.amount <= 300, "raise clamped to stack, was ${raise.action.amount}")
// Checking into a bet becomes a fold.
assertEquals(ActionType.FOLD, result.events.first { it.seat == 1 }.action.type)
}
// ---------- invariants under fuzzing ----------
@Test
fun `chips are conserved and stacks stay non-negative over many random hands`() {
val random = Random(4242)
val seats = List(6) { Seat(it, "P$it", 400, RandomAgent(random)) }
val table = Table(seats, 5, 10, random)
val startingTotal = seats.sumOf { it.stack }
repeat(3000) {
table.advanceButton()
val result = table.playHand()
assertEquals(0, result.net.sum(), "hand did not conserve chips")
assertTrue(seats.all { it.stack >= 0 }, "a stack went negative")
// Re-seed short stacks so play continues.
for (s in seats) if (s.stack < 20) s.stack = 400
}
assertTrue(startingTotal > 0)
}
}
+4
View File
@@ -0,0 +1,4 @@
org.gradle.jvmargs=-Xmx3g -XX:MaxMetaspaceSize=768m
org.gradle.parallel=true
org.gradle.caching=true
kotlin.code.style=official
Binary file not shown.
+8
View File
@@ -0,0 +1,8 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionSha256Sum=2ab2958f2a1e51120c326cad6f385153bb11ee93b3c216c5fccebfdfbb7ec6cb
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
Vendored Executable
+251
View File
@@ -0,0 +1,251 @@
#!/bin/sh
#
# Copyright © 2015 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
warn () {
echo "$*"
} >&2
die () {
echo
echo "$*"
echo
exit 1
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
CLASSPATH="\\\"\\\""
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-classpath "$CLASSPATH" \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"
Vendored
+94
View File
@@ -0,0 +1,94 @@
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:execute
@rem Setup the command line
set CLASSPATH=
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
+24
View File
@@ -0,0 +1,24 @@
pluginManagement {
repositories {
google {
content {
includeGroupByRegex("com\\.android.*")
includeGroupByRegex("com\\.google.*")
includeGroupByRegex("androidx.*")
}
}
mavenCentral()
gradlePluginPortal()
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
}
}
rootProject.name = "Poker"
include(":engine", ":sim")
+12
View File
@@ -0,0 +1,12 @@
plugins {
kotlin("jvm")
application
}
dependencies {
implementation(project(":engine"))
}
application {
mainClass.set("com.jsjdesigns.poker.sim.MainKt")
}
@@ -0,0 +1,176 @@
package com.jsjdesigns.poker.sim
import com.jsjdesigns.poker.bot.BotProfile
import com.jsjdesigns.poker.bot.MathBot
import com.jsjdesigns.poker.bot.PlayStyle
import com.jsjdesigns.poker.bot.SkillLevel
import com.jsjdesigns.poker.core.Card
import com.jsjdesigns.poker.core.PreflopChart
import com.jsjdesigns.poker.core.Suit
import com.jsjdesigns.poker.game.ActionType
import com.jsjdesigns.poker.game.Seat
import com.jsjdesigns.poker.game.Street
import com.jsjdesigns.poker.game.Table
import kotlin.math.abs
import kotlin.random.Random
private const val SMALL_BLIND = 1
private const val BIG_BLIND = 2
private const val STARTING_STACK = 200 // 100 big blinds
private class Stats(val name: String, val profile: BotProfile) {
var net = 0L
var hands = 0
var vpip = 0
var pfr = 0
var wins = 0
var postflopBets = 0
var postflopCalls = 0
fun bbPer100(): Double = if (hands == 0) 0.0 else (net.toDouble() / BIG_BLIND) / hands * 100.0
fun pct(n: Int): Double = if (hands == 0) 0.0 else n * 100.0 / hands
fun aggressionFactor(): Double =
if (postflopCalls == 0) postflopBets.toDouble() else postflopBets.toDouble() / postflopCalls
}
private fun runTable(label: String, roster: List<BotProfile>, hands: Int, seed: Long): List<Stats> {
// The deck gets its own RNG. If bots drew from the same stream, the number of
// Monte Carlo rollouts a bot performs — which varies by skill level — would
// shift every subsequent deal, so changing a profile would silently change the
// cards and no two runs would be comparable.
val deckRandom = Random(seed)
val bots = roster.mapIndexed { i, p -> MathBot(p, Random(seed * 31 + i)) }
val stats = roster.map { Stats(it.name, it) }
val seats = roster.mapIndexed { i, p -> Seat(i, p.name, STARTING_STACK, bots[i]) }
val table = Table(seats, SMALL_BLIND, BIG_BLIND, deckRandom)
println("\n=== $label ===")
println("$hands hands, ${roster.size}-handed, ${STARTING_STACK / BIG_BLIND}bb stacks, seed=$seed")
val started = System.nanoTime()
// VPIP/PFR are per-hand booleans, not action counts: a player who calls and
// then calls a re-raise has still only entered the pot once.
val enteredPot = BooleanArray(seats.size)
val raisedPre = BooleanArray(seats.size)
repeat(hands) {
for (s in seats) s.stack = STARTING_STACK
java.util.Arrays.fill(enteredPot, false)
java.util.Arrays.fill(raisedPre, false)
table.advanceButton()
val result = table.playHand()
for (e in result.events) {
val st = stats[e.seat]
if (e.street == Street.PREFLOP) {
when (e.action.type) {
ActionType.CALL -> enteredPot[e.seat] = true
ActionType.BET, ActionType.RAISE -> {
enteredPot[e.seat] = true; raisedPre[e.seat] = true
}
else -> Unit
}
} else {
when (e.action.type) {
ActionType.BET, ActionType.RAISE -> st.postflopBets++
ActionType.CALL -> st.postflopCalls++
else -> Unit
}
}
}
for (i in seats.indices) {
val st = stats[i]
st.hands++
st.net += result.net[i]
if (enteredPot[i]) st.vpip++
if (raisedPre[i]) st.pfr++
if (i in result.winners) st.wins++
val bb = abs(result.net[i]).toDouble() / BIG_BLIND
if (result.net[i] > 0) bots[i].mood.recordWin(bb)
else if (result.net[i] < 0) bots[i].mood.recordLoss(bb, wasBadBeat = result.wentToShowdown && bb > 25)
bots[i].mood.decay()
}
}
val elapsed = (System.nanoTime() - started) / 1_000_000.0
println("%.1f ms (%.0f hands/sec)\n".format(elapsed, hands / (elapsed / 1000.0)))
println("%-7s %-28s %9s %7s %7s %6s %7s".format("Player", "Profile", "bb/100", "VPIP%", "PFR%", "AF", "Won%"))
println("-".repeat(78))
for (s in stats.sortedByDescending { it.bbPer100() }) {
println(
"%-7s %-28s %9.2f %7.1f %7.1f %6.2f %7.1f".format(
s.name, s.profile.description, s.bbPer100(),
s.pct(s.vpip), s.pct(s.pfr), s.aggressionFactor(), s.pct(s.wins),
)
)
}
println("chip conservation: %d (must be 0)".format(stats.sumOf { it.net }))
return stats
}
/** Dumps the starting-hand ranking so the ordering can be eyeballed against a real chart. */
private fun printChart() {
val rows = ArrayList<Pair<String, Double>>()
for (hi in 14 downTo 2) for (lo in hi downTo 2) {
if (hi == lo) {
val h = intArrayOf(Card.of(hi, Suit.CLUBS).index, Card.of(hi, Suit.HEARTS).index)
rows += "${Card.rankSymbol(hi)}${Card.rankSymbol(lo)} " to PreflopChart.percentile(h)
} else {
val s = intArrayOf(Card.of(hi, Suit.SPADES).index, Card.of(lo, Suit.SPADES).index)
val o = intArrayOf(Card.of(hi, Suit.SPADES).index, Card.of(lo, Suit.HEARTS).index)
rows += "${Card.rankSymbol(hi)}${Card.rankSymbol(lo)}s " to PreflopChart.percentile(s)
rows += "${Card.rankSymbol(hi)}${Card.rankSymbol(lo)}o " to PreflopChart.percentile(o)
}
}
rows.sortBy { it.second }
println("Top 30 starting hands:")
rows.take(30).forEachIndexed { i, (h, v) -> print("%2d.%s%.3f ".format(i + 1, h, v)); if ((i + 1) % 5 == 0) println() }
println("\nBottom 10:")
rows.takeLast(10).forEach { (h, v) -> print("$h%.3f ".format(v)) }
println()
}
fun main(args: Array<String>) {
if (args.firstOrNull() == "chart") { printChart(); return }
val hands = args.getOrNull(0)?.toIntOrNull() ?: 50_000
val seed = args.getOrNull(1)?.toLongOrNull() ?: 20_260_724L
// A mixed table: what a real game looks like.
runTable(
"Mixed table", listOf(
BotProfile("Ada", SkillLevel.EXPERT, PlayStyle.TIGHT_AGGRESSIVE, "Ice-cold. Punishes mistakes."),
BotProfile("Bruno", SkillLevel.ADVANCED, PlayStyle.LOOSE_AGGRESSIVE, "Relentless pressure."),
BotProfile("Cleo", SkillLevel.INTERMEDIATE, PlayStyle.TRAPPER, "Quiet until she has you."),
BotProfile("Dex", SkillLevel.INTERMEDIATE, PlayStyle.CALLING_STATION, "Pays to see it."),
BotProfile("Enzo", SkillLevel.BEGINNER, PlayStyle.MANIAC, "Chaos, and certain he's winning."),
BotProfile("Fay", SkillLevel.BEGINNER, PlayStyle.ROCK, "Waits for aces."),
), hands, seed
)
// Controlled: identical style, only skill varies. This is the experiment that
// actually tests whether the difficulty axis produces a real skill gradient.
val ladder = runTable(
"Skill ladder (style held constant at Tight-Aggressive)", listOf(
BotProfile("Expert", SkillLevel.EXPERT, PlayStyle.TIGHT_AGGRESSIVE),
BotProfile("Advncd", SkillLevel.ADVANCED, PlayStyle.TIGHT_AGGRESSIVE),
BotProfile("Interm", SkillLevel.INTERMEDIATE, PlayStyle.TIGHT_AGGRESSIVE),
BotProfile("Begin", SkillLevel.BEGINNER, PlayStyle.TIGHT_AGGRESSIVE),
), hands, seed + 1
)
println("\nDifficulty gradient (must decrease monotonically):")
var monotonic = true
var previous = Double.MAX_VALUE
for (level in SkillLevel.entries.reversed()) { // strongest first
val s = ladder.firstOrNull { it.profile.skill == level } ?: continue
val v = s.bbPer100()
println(" %-14s %9.2f bb/100".format(level.label, v))
if (v > previous) monotonic = false
previous = v
}
println(if (monotonic) " -> PASS: stronger skill earns more." else " -> FAIL: gradient inverted somewhere.")
}