fix: tracking negative values

This commit is contained in:
John Yeo
2025-11-06 18:25:57 +00:00
parent 6ce72bf501
commit da76ee8e5f
8 changed files with 18 additions and 254 deletions

View File

@@ -1,4 +0,0 @@
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["CLAUDE.md"]
}

View File

@@ -16,11 +16,11 @@ fi
# Adjust --max to control concurrency (default: 6)
BUN_PARALLEL_COMPACT \
'server/tests/balances/track/basic' \
'server/tests/balances/track/concurrency' \
'server/tests/balances/track/credit-systems' \
'server/tests/balances/track/legacy' \
'server/tests/balances/check/basic' \
'server/tests/balances/check/credit-systems' \
# 'server/tests/balances/track/concurrency' \
# 'server/tests/balances/track/credit-systems' \
# 'server/tests/balances/track/legacy' \
# 'server/tests/balances/check/basic' \
# 'server/tests/balances/check/credit-systems' \
# 'server/tests/attach/basic' \
# 'server/tests/attach/upgrade' \
# 'server/tests/attach/downgrade' \

View File

@@ -2,10 +2,14 @@
import { spawn } from "bun";
import chalk from "chalk";
import dotenv from "dotenv";
import { readdir } from "fs/promises";
import pLimit from "p-limit";
import { basename, resolve } from "path";
// Load environment variables from server/.env
dotenv.config({ path: resolve(process.cwd(), "server", ".env") });
interface TestResult {
file: string;
status: "pending" | "running" | "passed" | "failed";
@@ -342,6 +346,7 @@ class TestRunner {
const proc = spawn(["bun", "test", "--timeout", "0", file], {
stdout: "pipe",
stderr: "pipe",
env: { ...process.env },
});
let output = "";

View File

@@ -1,27 +0,0 @@
#!/bin/bash
# Test Group 1: Upgrade & Downgrade Tests
# Description: Tests for product upgrades and downgrades
# Source shared configuration
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/config.sh"
# Setup if requested
if [[ "$1" == *"setup"* ]]; then
echo "Running test setup..."
$BUN_SETUP
fi
# Run tests using TypeScript runner with compact mode
# Adjust --max to control concurrency (default: 6)
$BUN_PARALLEL_COMPACT \
'tests/check/basic' \
'tests/balances/track' \
'tests/attach/basic' \
'tests/attach/upgrade' \
'tests/attach/downgrade' \
'tests/attach/free' \
'tests/attach/addOn' \
'tests/attach/entities' \
'tests/attach/checkout'

View File

@@ -6,7 +6,7 @@ class BatchingManager {
private events: Map<string, EventInsert> = new Map();
private timer: NodeJS.Timeout | null = null;
private readonly batchWindow = 100; // 100ms batching window
private readonly maxBatchSize = 5000; // Max events per batch (PostgreSQL has ~65k param limit, ~11 fields per event = ~5.9k max)
private readonly maxBatchSize = 1000; // Max events per batch (PostgreSQL has ~65k param limit, ~11 fields per event = ~5.9k max)
/**
* Add an event to the batch

View File

@@ -33,8 +33,6 @@ export const runInsertEventBatch = async ({
}
});
console.log("Event Inserts", eventInserts);
// Batch insert events directly - no DB lookups needed
try {
await db.insert(events).values(eventInserts as any);

View File

@@ -398,7 +398,7 @@ local function deductFromCusFeature(cusFeature, amount)
end
-- Step 2: Deduct remaining from main balance
if remaining > 0 then
if remaining ~= 0 then
local mainResult = deductFromMainBalance(cusFeature, remaining)
remaining = mainResult.remaining
@@ -454,7 +454,7 @@ local function deductFromFeatureWithEntities(customerFeature, entityFeaturesMap,
-- Step 2: Deduct from entity main balance
if entityFeatures then
local entityFeature = entityFeatures[customerFeature.id]
if entityFeature and remaining > 0 then
if entityFeature and remaining ~= 0 then
local entityMainResult = deductFromMainBalance(entityFeature, remaining)
remaining = entityMainResult.remaining
for _, delta in ipairs(entityMainResult.deltas) do
@@ -482,7 +482,7 @@ local function deductFromFeatureWithEntities(customerFeature, entityFeaturesMap,
end
-- Step 4: Deduct from customer main balance
if remaining > 0 then
if remaining ~= 0 then
local customerMainResult = deductFromMainBalance(customerFeature, remaining)
remaining = customerMainResult.remaining
for _, delta in ipairs(customerMainResult.deltas) do
@@ -506,7 +506,7 @@ local function deductFromFeatureWithEntities(customerFeature, entityFeaturesMap,
end
-- Step 2: Deduct from customer main balance
if remaining > 0 then
if remaining ~= 0 then
local customerMainResult = deductFromMainBalance(customerFeature, remaining)
remaining = customerMainResult.remaining
for _, delta in ipairs(customerMainResult.deltas) do
@@ -545,7 +545,7 @@ local function deductFromFeatureWithEntities(customerFeature, entityFeaturesMap,
end
-- Step 4: Deduct from all entity main balances (sorted for consistency)
if remaining > 0 then
if remaining ~= 0 then
local sortedEntityIds = {}
for entityId in pairs(entityFeaturesMap) do
table.insert(sortedEntityIds, entityId)
@@ -555,7 +555,7 @@ local function deductFromFeatureWithEntities(customerFeature, entityFeaturesMap,
for _, entityId in ipairs(sortedEntityIds) do
local entityFeatures = entityFeaturesMap[entityId]
local entityFeature = entityFeatures[customerFeature.id]
if entityFeature and remaining > 0 then
if entityFeature and remaining ~= 0 then
local entityMainResult = deductFromMainBalance(entityFeature, remaining)
remaining = entityMainResult.remaining
for _, delta in ipairs(entityMainResult.deltas) do
@@ -709,7 +709,7 @@ local function processRequest(request, loadedCusFeatures, entityFeatureStates)
for _, entId in ipairs(sortedEntityIds) do
local entityFeatures = entityFeatureStates[entId]
local entityFeature = entityFeatures[featureId]
if entityFeature and remainingAmount > 0 then
if entityFeature and remainingAmount ~= 0 then
if not entityFeature.unlimited then
local result = deductFromCusFeature(entityFeature, remainingAmount)

View File

@@ -1,208 +0,0 @@
<svg width="220" height="148" viewBox="0 0 220 148" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="220" height="148" fill="#FAFAF9"/>
<path d="M11.5 14.5L13 16L16.5 12.5" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M14 20C17.3137 20 20 17.3137 20 14C20 10.6863 17.3137 8 14 8C10.6863 8 8 10.6863 8 14C8 17.3137 10.6863 20 14 20Z" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M38 20C41.3137 20 44 17.3137 44 14C44 10.6863 41.3137 8 38 8C34.6863 8 32 10.6863 32 14C32 17.3137 34.6863 20 38 20Z" stroke="#666666" stroke-width="1.1" stroke-miterlimit="10"/>
<path d="M35.5 14H40.5" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M38 11.5V16.5" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M64 12L60 16" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M60 12L64 16" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M62 20C65.3137 20 68 17.3137 68 14C68 10.6863 65.3137 8 62 8C58.6863 8 56 10.6863 56 14C56 17.3137 58.6863 20 62 20Z" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M83.7931 19.5001H81C80.8674 19.5001 80.7402 19.4474 80.6464 19.3536C80.5527 19.2599 80.5 19.1327 80.5 19.0001V16.207C80.5001 16.0745 80.5527 15.9475 80.6463 15.8538L88.3537 8.14633C88.4475 8.05263 88.5746 8 88.7072 8C88.8397 8 88.9669 8.05263 89.0606 8.14633L91.8537 10.9376C91.9474 11.0313 92.0001 11.1585 92.0001 11.291C92.0001 11.4236 91.9474 11.5507 91.8537 11.6445L84.1462 19.3538C84.0526 19.4474 83.9256 19.5 83.7931 19.5001Z" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M86.5 10L90 13.5" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M112.424 16.425H113.297C114.01 16.425 114.367 16.425 114.639 16.2863C114.879 16.1642 115.073 15.9695 115.195 15.7299C115.334 15.4576 115.334 15.1011 115.334 14.388V10.702C115.334 9.98902 115.334 9.63251 115.195 9.36018C115.073 9.12062 114.879 8.92586 114.639 8.8038C114.367 8.66504 114.01 8.66504 113.297 8.66504H109.611C108.898 8.66504 108.542 8.66504 108.269 8.8038C108.03 8.92586 107.835 9.12062 107.713 9.36018C107.574 9.63251 107.574 9.98902 107.574 10.702V11.575" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M110.387 11.5752H106.701C105.988 11.5752 105.632 11.5752 105.359 11.714C105.12 11.836 104.925 12.0308 104.803 12.2703C104.664 12.5427 104.664 12.8992 104.664 13.6122V17.2982C104.664 18.0112 104.664 18.3677 104.803 18.6401C104.925 18.8796 105.12 19.0744 105.359 19.1964C105.632 19.3352 105.988 19.3352 106.701 19.3352H110.387C111.1 19.3352 111.457 19.3352 111.729 19.1964C111.968 19.0744 112.163 18.8796 112.285 18.6401C112.424 18.3677 112.424 18.0112 112.424 17.2982V13.6122C112.424 12.8992 112.424 12.5427 112.285 12.2703C112.163 12.0308 111.968 11.836 111.729 11.714C111.457 11.5752 111.1 11.5752 110.387 11.5752Z" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M139.334 10.124H128.664" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M132.545 13.0303V16.9103" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M135.451 13.0303V16.9103" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M138.363 10.124V19.339C138.363 19.4677 138.312 19.591 138.221 19.682C138.13 19.7729 138.006 19.824 137.878 19.824H130.118C129.989 19.824 129.866 19.7729 129.775 19.682C129.684 19.591 129.633 19.4677 129.633 19.339V10.124" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M136.42 10.1163V9.14627C136.42 8.88901 136.318 8.64229 136.136 8.46038C135.954 8.27847 135.708 8.17627 135.45 8.17627H132.54C132.283 8.17627 132.036 8.27847 131.854 8.46038C131.673 8.64229 131.57 8.88901 131.57 9.14627V10.1163" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M156.4 11.6C156.841 11.6 157.2 11.2418 157.2 10.8C157.2 10.3582 156.841 10 156.4 10C155.958 10 155.6 10.3582 155.6 10.8C155.6 11.2418 155.958 11.6 156.4 11.6Z" fill="#777777"/>
<path d="M159.599 11.6C160.041 11.6 160.399 11.2418 160.399 10.8C160.399 10.3582 160.041 10 159.599 10C159.157 10 158.799 10.3582 158.799 10.8C158.799 11.2418 159.157 11.6 159.599 11.6Z" fill="#777777"/>
<path d="M156.4 14.8002C156.841 14.8002 157.2 14.442 157.2 14.0002C157.2 13.5584 156.841 13.2002 156.4 13.2002C155.958 13.2002 155.6 13.5584 155.6 14.0002C155.6 14.442 155.958 14.8002 156.4 14.8002Z" fill="#777777"/>
<path d="M159.599 14.8002C160.041 14.8002 160.399 14.442 160.399 14.0002C160.399 13.5584 160.041 13.2002 159.599 13.2002C159.157 13.2002 158.799 13.5584 158.799 14.0002C158.799 14.442 159.157 14.8002 159.599 14.8002Z" fill="#777777"/>
<path d="M156.4 17.9999C156.841 17.9999 157.2 17.6417 157.2 17.1999C157.2 16.7581 156.841 16.3999 156.4 16.3999C155.958 16.3999 155.6 16.7581 155.6 17.1999C155.6 17.6417 155.958 17.9999 156.4 17.9999Z" fill="#777777"/>
<path d="M159.599 17.9999C160.041 17.9999 160.399 17.6417 160.399 17.1999C160.399 16.7581 160.041 16.3999 159.599 16.3999C159.157 16.3999 158.799 16.7581 158.799 17.1999C158.799 17.6417 159.157 17.9999 159.599 17.9999Z" fill="#777777"/>
<g clip-path="url(#clip0_411_3630)">
<path d="M186.5 14.5H189.5" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M188 13V16" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M180.75 16C182.821 16 184.5 14.3211 184.5 12.25C184.5 10.1789 182.821 8.5 180.75 8.5C178.679 8.5 177 10.1789 177 12.25C177 14.3211 178.679 16 180.75 16Z" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M175.5 18.5C176.784 16.9719 178.598 16 180.75 16C182.902 16 184.716 16.9719 186 18.5" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<path d="M206 16.5V20" stroke="#666666" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M208.5 14L212 14" stroke="#666666" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M200 14L203.5 14" stroke="#666666" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M200.804 11C200.143 12.1438 199.879 13.4736 200.051 14.7831C200.224 16.0925 200.823 17.3086 201.757 18.2425C202.691 19.1765 203.907 19.7762 205.217 19.9486C206.526 20.1211 207.856 19.8567 209 19.1963C210.144 18.536 211.038 17.5167 211.543 16.2965C212.049 15.0763 212.137 13.7234 211.796 12.4476C211.454 11.1718 210.701 10.0444 209.653 9.24026C208.605 8.43612 207.322 8.00016 206.001 8V11.5C206.551 11.5001 207.086 11.6818 207.522 12.0169C207.959 12.352 208.273 12.8218 208.415 13.3534C208.557 13.8849 208.52 14.4486 208.31 14.957C208.099 15.4654 207.727 15.8901 207.25 16.1652C206.773 16.4403 206.219 16.5505 205.674 16.4786C205.128 16.4067 204.621 16.1568 204.232 15.7677C203.843 15.3785 203.593 14.8719 203.522 14.3262C203.45 13.7806 203.56 13.2266 203.835 12.75L200.804 11Z" stroke="#666666" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M19.46 33.8398H8.54C7.96562 33.8398 7.5 34.3055 7.5 34.8798V41.1198C7.5 41.6942 7.96562 42.1598 8.54 42.1598H19.46C20.0344 42.1598 20.5 41.6942 20.5 41.1198V34.8798C20.5 34.3055 20.0344 33.8398 19.46 33.8398Z" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M15.3008 35.9199V40.0799" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M12.6992 35.9199V40.0799" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M10.0996 35.9199V40.0799" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M43.46 33.8398H32.54C31.9656 33.8398 31.5 34.3055 31.5 34.8798V41.1198C31.5 41.6942 31.9656 42.1598 32.54 42.1598H43.46C44.0344 42.1598 44.5 41.6942 44.5 41.1198V34.8798C44.5 34.3055 44.0344 33.8398 43.46 33.8398Z" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M39.3008 35.9199V40.0799" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M41.9043 35.9199V40.0799" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M36.6992 35.9199V40.0799" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M41.9043 37.9951H34.6252" stroke="#666666" stroke-width="0.8" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M34.0996 35.9199V40.0799" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M60 37.5C62.7614 37.5 65 36.4926 65 35.25C65 34.0074 62.7614 33 60 33C57.2386 33 55 34.0074 55 35.25C55 36.4926 57.2386 37.5 60 37.5Z" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M55 35.25V37.75C55 38.9925 57.2387 40 60 40C62.7613 40 65 38.9925 65 37.75V35.25" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M65.0001 36.0449C67.2826 36.2537 69.0001 37.1612 69.0001 38.2499C69.0001 39.4924 66.7613 40.4999 64.0001 40.4999C62.7751 40.4999 61.6526 40.3018 60.7832 39.9724" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M59 39.955V40.75C59 41.9925 61.2387 43 64 43C66.7613 43 69 41.9925 69 40.75V38.25" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M83.7559 38.1543C86.5173 38.1543 88.7559 37.1469 88.7559 35.9043C88.7559 34.6617 86.5173 33.6543 83.7559 33.6543C80.9944 33.6543 78.7559 34.6617 78.7559 35.9043C78.7559 37.1469 80.9944 38.1543 83.7559 38.1543Z" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M78.7559 35.9043V38.4043C78.7559 39.6468 80.9946 40.6543 83.7559 40.6543C86.5171 40.6543 88.7559 39.6468 88.7559 38.4043V35.9043" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M88.7579 36.6992C91.0404 36.908 92.7579 37.8155 92.7579 38.9042C92.7579 40.1467 90.5191 41.1542 87.7579 41.1542C86.5329 41.1542 85.4104 40.9561 84.541 40.6267" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M82.7559 40.6093V41.4043C82.7559 42.6468 84.9946 43.6543 87.7559 43.6543C90.5171 43.6543 92.7559 42.6468 92.7559 41.4043V38.9043" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M89.5918 32.1309L90.7168 33.2559L93.3418 30.6309" stroke="#666666" stroke-linecap="round" stroke-linejoin="round"/>
<g clip-path="url(#clip1_411_3630)">
<path d="M107.756 38.1543C110.517 38.1543 112.756 37.1469 112.756 35.9043C112.756 34.6617 110.517 33.6543 107.756 33.6543C104.994 33.6543 102.756 34.6617 102.756 35.9043C102.756 37.1469 104.994 38.1543 107.756 38.1543Z" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M102.756 35.9043V38.4043C102.756 39.6468 104.995 40.6543 107.756 40.6543C110.517 40.6543 112.756 39.6468 112.756 38.4043V35.9043" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M112.758 36.6992C115.04 36.908 116.758 37.8155 116.758 38.9042C116.758 40.1467 114.519 41.1542 111.758 41.1542C110.533 41.1542 109.41 40.9561 108.541 40.6267" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M106.756 40.6093V41.4043C106.756 42.6468 108.995 43.6543 111.756 43.6543C114.517 43.6543 116.756 42.6468 116.756 41.4043V38.9043" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M111.23 33.4551L112.918 35.1426L116.855 31.2051" stroke="white" stroke-width="5" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M111.51 33.1016L113.197 34.7891L117.135 30.8516" stroke="#666666" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/>
</g>
<path d="M132 37.5C134.761 37.5 137 36.4926 137 35.25C137 34.0074 134.761 33 132 33C129.239 33 127 34.0074 127 35.25C127 36.4926 129.239 37.5 132 37.5Z" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M127 35.25V37.75C127 38.9925 129.239 40 132 40C134.761 40 137 38.9925 137 37.75V35.25" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M137 36.0449C139.283 36.2537 141 37.1612 141 38.2499C141 39.4924 138.761 40.4999 136 40.4999C134.775 40.4999 133.653 40.3018 132.783 39.9724" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M131 39.955V40.75C131 41.9925 133.239 43 136 43C138.761 43 141 41.9925 141 40.75V38.25" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M128.973 43.0278L139.03 32.9707" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M128.854 44.5469L140.646 32.7539" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M158 32.8423V37.9923" stroke="#666666" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M161.091 33.3574C162.641 34.3681 163.666 36.0039 163.666 37.9924C163.666 39.4949 163.069 40.9358 162.007 41.9982C160.944 43.0606 159.503 43.6574 158.001 43.6574C156.498 43.6574 155.058 43.0606 153.995 41.9982C152.933 40.9358 152.336 39.4949 152.336 37.9924C152.336 36.0039 153.361 34.3681 154.911 33.3574" stroke="#666666" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M187 43.5H177C176.867 43.5 176.74 43.4473 176.646 43.3536C176.553 43.2598 176.5 43.1326 176.5 43V34.5L177.5 32.5H186.5L187.5 34.5V43C187.5 43.1326 187.447 43.2598 187.354 43.3536C187.26 43.4473 187.133 43.5 187 43.5Z" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M176.5 34.5H187.5" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M182 36.5V41.5" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M180 39.5L182 41.5L184 39.5" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M211 43.5H201C200.867 43.5 200.74 43.4473 200.646 43.3536C200.553 43.2598 200.5 43.1326 200.5 43V34.5L201.5 32.5H210.5L211.5 34.5V43C211.5 43.1326 211.447 43.2598 211.354 43.3536C211.26 43.4473 211.133 43.5 211 43.5Z" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M200.5 34.5H211.5" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M203.857 39.2558L205.143 40.5415L208.143 37.5415" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M17 56.5H19.5V59" stroke="#666666" stroke-width="1.07" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M11 67.5H8.5V65" stroke="#666666" stroke-width="1.07" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M19.5 65V67.5H17" stroke="#666666" stroke-width="1.07" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M8.5 59V56.5H11" stroke="#666666" stroke-width="1.07" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M17 59H11V65H17V59Z" stroke="#666666" stroke-width="1.07" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M35.5 62.5L37 64L40.5 60.5" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M43 56.5H33C32.7239 56.5 32.5 56.7239 32.5 57V67C32.5 67.2761 32.7239 67.5 33 67.5H43C43.2761 67.5 43.5 67.2761 43.5 67V57C43.5 56.7239 43.2761 56.5 43 56.5Z" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M61.9993 64V65.3333M57.9993 68H65.9993C66.353 68 66.6921 67.8595 66.9422 67.6095C67.1922 67.3594 67.3327 67.0203 67.3327 66.6667V62.6667C67.3327 62.313 67.1922 61.9739 66.9422 61.7239C66.6921 61.4738 66.353 61.3333 65.9993 61.3333H57.9993C57.6457 61.3333 57.3066 61.4738 57.0565 61.7239C56.8065 61.9739 56.666 62.313 56.666 62.6667V66.6667C56.666 67.0203 56.8065 67.3594 57.0565 67.6095C57.3066 67.8595 57.6457 68 57.9993 68ZM64.666 61.3333V58.6667C64.666 57.9594 64.3851 57.2811 63.885 56.781C63.3849 56.281 62.7066 56 61.9993 56C61.2921 56 60.6138 56.281 60.1137 56.781C59.6136 57.2811 59.3327 57.9594 59.3327 58.6667V61.3333H64.666Z" stroke="#666666" stroke-width="1.2" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M79.5 57.5V60.5H82.5" stroke="#666666" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M82.2244 65.9999C83.0105 66.7419 83.9979 67.2357 85.0632 67.4197C86.1284 67.6037 87.2242 67.4698 88.2137 67.0345C89.2033 66.5993 90.0426 65.8821 90.6268 64.9726C91.2111 64.0631 91.5144 63.0016 91.4988 61.9207C91.4832 60.8398 91.1494 59.7875 90.5392 58.8952C89.929 58.0029 89.0693 57.3102 88.0677 56.9037C87.066 56.4972 85.9668 56.3949 84.9073 56.6095C83.8478 56.8242 82.8751 57.3462 82.1106 58.1106L79.5 60.4999" stroke="#666666" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M107.5 60H104.5V57" stroke="#666666" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M104.5 59.9999L106.267 58.2324C107.291 57.2089 108.677 56.6301 110.125 56.6217C111.572 56.6133 112.965 57.1758 114 58.1874" stroke="#666666" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M112.5 64H115.5V67" stroke="#666666" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M115.5 64L113.733 65.7675C112.709 66.7911 111.323 67.3698 109.875 67.3782C108.428 67.3867 107.035 66.8241 106 65.8125" stroke="#666666" stroke-width="1.3" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M137.857 59.8571L139.143 58.5714L137.857 57.2856" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M128.857 61.9999C128.857 61.0905 129.219 60.2185 129.862 59.5755C130.505 58.9325 131.377 58.5713 132.286 58.5713H139.143" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M130.143 64.1431L128.857 65.4288L130.143 66.7145" stroke="#666666" stroke-width="1.1" stroke-linecap="round" stroke-linejoin="round"/>
<path d="M139.143 62C139.143 62.9093 138.782 63.7814 138.139 64.4244C137.496 65.0673 136.624 65.4286 135.715 65.4286H128.857" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M158 68C161.314 68 164 65.3137 164 62C164 58.6863 161.314 56 158 56C154.686 56 152 58.6863 152 62C152 65.3137 154.686 68 158 68Z" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M158 56V58.5" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M158 65.5V68" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M152 62H154.5" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M161.5 62H164" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M185.502 57H188.002V59.5" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M178.5 67H176V64.5" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M188.002 64.5V67H185.502" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M176 59.5V57H178.5" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M179 59.5V64.5" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M185 59.5V64.5" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M183.002 59.5V64.5" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M181 59.5V64.5" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M206 59V62L208.5 63.5" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M202.5 60.5H200V58" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M202.225 66.0002C203.011 66.7421 203.999 67.2359 205.064 67.4198C206.129 67.6037 207.225 67.4697 208.214 67.0344C209.204 66.5991 210.043 65.8818 210.627 64.9723C211.212 64.0627 211.515 63.0012 211.499 61.9203C211.483 60.8394 211.15 59.7871 210.539 58.8948C209.929 58.0026 209.069 57.31 208.068 56.9036C207.066 56.4971 205.967 56.3949 204.907 56.6096C203.848 56.8243 202.875 57.3465 202.111 58.1109C201.375 58.8559 200.767 59.5584 200 60.5002" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M14 92C17.3137 92 20 89.3137 20 86C20 82.6863 17.3137 80 14 80C10.6863 80 8 82.6863 8 86C8 89.3137 10.6863 92 14 92Z" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M14 82.5V86H17.5" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<g clip-path="url(#clip2_411_3630)">
<path d="M36.75 88C38.8211 88 40.5 86.3211 40.5 84.25C40.5 82.1789 38.8211 80.5 36.75 80.5C34.6789 80.5 33 82.1789 33 84.25C33 86.3211 34.6789 88 36.75 88Z" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M31.5 90.5C32.7844 88.9719 34.5975 88 36.75 88C38.9025 88 40.7156 88.9719 42 90.5" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M42.5 87L43.5 88L45.5 86" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
</g>
<path d="M62 88C63.3807 88 64.5 86.8807 64.5 85.5C64.5 84.1193 63.3807 83 62 83C60.6193 83 59.5 84.1193 59.5 85.5C59.5 86.8807 60.6193 88 62 88Z" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M57.9883 90.4604C58.3645 89.7195 58.9385 89.0971 59.6467 88.6624C60.355 88.2277 61.1698 87.9976 62.0008 87.9976C62.8318 87.9976 63.6466 88.2277 64.3548 88.6624C65.0631 89.0971 65.6371 89.7195 66.0133 90.4604" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M67.9166 85C68.1276 86.2534 67.9347 87.5413 67.3659 88.6779C66.7971 89.8145 65.8819 90.7409 64.7522 91.3234C63.6226 91.9059 62.337 92.1142 61.0813 91.9184C59.8255 91.7227 58.6644 91.1328 57.7657 90.2341C56.867 89.3354 56.2771 88.1743 56.0813 86.9185C55.8855 85.6627 56.0939 84.3772 56.6764 83.2476C57.2589 82.1179 58.1853 81.2026 59.3219 80.6338C60.4585 80.0651 61.7464 79.8722 62.9998 80.0832" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M65.5 81.5L66.5 82.5L68.5 80.5" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M90.7037 81.2959H81.2947C81.0348 81.2959 80.8242 81.5065 80.8242 81.7663V91.1753C80.8242 91.4352 81.0348 91.6458 81.2947 91.6458H90.7037C90.9635 91.6458 91.1741 91.4352 91.1741 91.1753V81.7663C91.1741 81.5065 90.9635 81.2959 90.7037 81.2959Z" stroke="#666666" stroke-width="1.03499" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M88.8223 80.3545V82.2363" stroke="#666666" stroke-width="1.03499" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M83.1777 80.3545V82.2363" stroke="#666666" stroke-width="1.03499" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M80.8242 84.1201H91.1741" stroke="#666666" stroke-width="1.03499" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M83.8828 87.883L85.2942 89.2944L88.1169 86.4717" stroke="#666666" stroke-width="1.03499" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M110 82.5V83.5" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M110 88.5V89.5" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M110 92C113.314 92 116 89.3137 116 86C116 82.6863 113.314 80 110 80C106.686 80 104 82.6863 104 86C104 89.3137 106.686 92 110 92Z" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M108.5 88.5H110.75C111.082 88.5 111.399 88.3683 111.634 88.1339C111.868 87.8995 112 87.5815 112 87.25C112 86.9185 111.868 86.6005 111.634 86.3661C111.399 86.1317 111.082 86 110.75 86H109.25C108.918 86 108.601 85.8683 108.366 85.6339C108.132 85.3995 108 85.0815 108 84.75C108 84.4185 108.132 84.1005 108.366 83.8661C108.601 83.6317 108.918 83.5 109.25 83.5H111.5" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M134 92C137.314 92 140 89.3137 140 86C140 82.6863 137.314 80 134 80C130.686 80 128 82.6863 128 86C128 89.3137 130.686 92 134 92Z" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M134 88C135.381 88 136.5 86.8807 136.5 85.5C136.5 84.1193 135.381 83 134 83C132.619 83 131.5 84.1193 131.5 85.5C131.5 86.8807 132.619 88 134 88Z" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M129.988 90.4604C130.364 89.7195 130.939 89.0971 131.647 88.6624C132.355 88.2277 133.17 87.9976 134.001 87.9976C134.832 87.9976 135.647 88.2277 136.355 88.6624C137.063 89.0971 137.637 89.7195 138.013 90.4604" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M155.076 85.4248L156.243 84.2576L155.076 83.0903M157.411 86.592H159.745" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M162.086 80.752H153.915C153.271 80.752 152.748 81.2745 152.748 81.9192V90.0898C152.748 90.7345 153.271 91.2571 153.915 91.2571H162.086C162.731 91.2571 163.253 90.7345 163.253 90.0898V81.9192C163.253 81.2745 162.731 80.752 162.086 80.752Z" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M188.5 82.4901V89.5089C188.499 89.5972 188.475 89.6838 188.429 89.7595C188.384 89.8352 188.319 89.8973 188.241 89.9394C188.163 89.9815 188.076 90.0019 187.987 89.9986C187.899 89.9953 187.813 89.9684 187.739 89.9207L182.227 86.4114C182.157 86.3674 182.1 86.3066 182.061 86.2346C182.021 86.1625 182 86.0817 182 85.9995C182 85.9173 182.021 85.8364 182.061 85.7644C182.1 85.6924 182.157 85.6316 182.227 85.5876L187.739 82.0782C187.813 82.0305 187.899 82.0036 187.987 82.0003C188.076 81.9971 188.163 82.0175 188.241 82.0596C188.319 82.1016 188.384 82.1637 188.429 82.2395C188.475 82.3152 188.499 82.4017 188.5 82.4901Z" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M182 82.4901V89.5089C181.999 89.5972 181.975 89.6838 181.929 89.7595C181.884 89.8352 181.819 89.8973 181.741 89.9394C181.663 89.9815 181.576 90.0019 181.487 89.9986C181.399 89.9953 181.313 89.9684 181.239 89.9207L175.727 86.4114C175.657 86.3674 175.6 86.3066 175.561 86.2346C175.521 86.1625 175.5 86.0817 175.5 85.9995C175.5 85.9173 175.521 85.8364 175.561 85.7644C175.6 85.6924 175.657 85.6316 175.727 85.5876L181.239 82.0782C181.313 82.0305 181.399 82.0036 181.487 82.0003C181.576 81.9971 181.663 82.0175 181.741 82.0596C181.819 82.1016 181.884 82.1637 181.929 82.2395C181.975 82.3152 181.999 82.4017 182 82.4901Z" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M206 91C208.761 91 211 88.7614 211 86C211 83.2386 208.761 81 206 81C203.239 81 201 83.2386 201 86C201 88.7614 203.239 91 206 91Z" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M206 86H212.5" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M206 86L202.75 80.3706" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M206 86L202.75 91.6294" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M206 81V79.5" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M201.67 83.5L200.371 82.75" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M201 86H199.5" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M201.67 88.5L200.371 89.25" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M206 91V92.5" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M208.5 90.3301L209.25 91.6295" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M210.33 88.5L211.629 89.25" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M210.33 83.5L211.629 82.75" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M208.5 81.67L209.25 80.3706" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M11.9663 109.681C11.7641 109.178 11.6609 108.64 11.6623 108.098C11.6623 105.829 13.49 103.944 15.7576 103.871C16.3368 103.852 16.9139 103.952 17.453 104.165C17.9921 104.378 18.4818 104.699 18.8917 105.108C19.3017 105.518 19.6231 106.008 19.8362 106.547C20.0493 107.086 20.1494 107.663 20.1304 108.242C20.0557 110.51 18.1704 112.337 15.9016 112.337C15.3593 112.339 14.8218 112.235 14.3186 112.033L13.5441 112.808H12.1327V114.219H10.7214V115.63H8.83959C8.71482 115.63 8.59516 115.581 8.50693 115.493C8.41871 115.404 8.36914 115.285 8.36914 115.16V113.473C8.3692 113.348 8.41869 113.229 8.50675 113.141L11.9663 109.681Z" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M17.0729 107.636C17.4626 107.636 17.7785 107.321 17.7785 106.931C17.7785 106.541 17.4626 106.225 17.0729 106.225C16.6831 106.225 16.3672 106.541 16.3672 106.931C16.3672 107.321 16.6831 107.636 17.0729 107.636Z" fill="#666666"/>
<path d="M37.9997 115.82C41.214 115.82 43.8197 113.214 43.8197 110C43.8197 106.786 41.214 104.18 37.9997 104.18C34.7854 104.18 32.1797 106.786 32.1797 110C32.1797 113.214 34.7854 115.82 37.9997 115.82Z" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M37.9997 115.82C41.214 115.82 43.8197 113.214 43.8197 110C43.8197 106.786 41.214 104.18 37.9997 104.18C34.7854 104.18 32.1797 106.786 32.1797 110C32.1797 113.214 34.7854 115.82 37.9997 115.82Z" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M37.0305 110.71C36.6607 110.496 36.3717 110.167 36.2082 109.772C36.0448 109.378 36.0161 108.94 36.1267 108.528C36.2372 108.115 36.4807 107.751 36.8196 107.491C37.1584 107.231 37.5735 107.09 38.0005 107.09C38.4276 107.09 38.8427 107.231 39.1815 107.491C39.5204 107.751 39.7639 108.115 39.8744 108.528C39.985 108.94 39.9563 109.378 39.7929 109.772C39.6294 110.167 39.3404 110.496 38.9705 110.71L39.9405 112.909H36.0605L37.0305 110.71Z" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M60.0605 111.455C60.0605 112.258 60.9293 112.91 62.0005 112.91C63.0718 112.91 63.9405 112.258 63.9405 111.455C63.9405 109.515 60.1685 110.242 60.1685 108.545C60.1685 107.742 60.9293 107.09 62.0005 107.09C62.8038 107.09 63.4331 107.454 63.698 107.979" stroke="#666666" stroke-width="1.04" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M66.8491 104.665H57.1491C56.8812 104.665 56.6641 104.882 56.6641 105.15V114.85C56.6641 115.118 56.8812 115.335 57.1491 115.335H66.8491C67.1169 115.335 67.3341 115.118 67.3341 114.85V105.15C67.3341 104.882 67.1169 104.665 66.8491 104.665Z" stroke="#666666" stroke-width="1.04" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M91.3347 107.067H80.6647C80.3968 107.067 80.1797 107.285 80.1797 107.552V109.492C80.1797 109.76 80.3968 109.977 80.6647 109.977H91.3347C91.6025 109.977 91.8197 109.76 91.8197 109.492V107.552C91.8197 107.285 91.6025 107.067 91.3347 107.067Z" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M90.8504 109.978V114.343C90.8504 114.471 90.7993 114.595 90.7083 114.685C90.6174 114.776 90.494 114.828 90.3654 114.828H81.6354C81.5068 114.828 81.3834 114.776 81.2924 114.685C81.2015 114.595 81.1504 114.471 81.1504 114.343V109.978" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M86 107.067V114.827" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M88.9579 104.11C89.5241 104.676 89.5575 105.629 88.9579 106.16C87.9327 107.068 86 107.068 86 107.068C86 107.068 86 105.135 86.9094 104.11C87.4386 103.51 88.3917 103.543 88.9579 104.11Z" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M83.0427 104.11C82.4765 104.676 82.4432 105.629 83.0427 106.16C84.0679 107.068 86.0006 107.068 86.0006 107.068C86.0006 107.068 86.0006 105.135 85.0913 104.11C84.562 103.51 83.609 103.543 83.0427 104.11Z" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M110.001 115.825V109.989M109.417 115.667C109.594 115.77 109.796 115.824 110.001 115.824C110.205 115.824 110.407 115.77 110.584 115.667L114.67 113.333C114.847 113.231 114.994 113.083 115.096 112.906C115.199 112.729 115.253 112.528 115.253 112.323V107.654C115.253 107.45 115.199 107.249 115.096 107.071C114.994 106.894 114.847 106.747 114.67 106.645L110.584 104.31C110.407 104.208 110.205 104.154 110.001 104.154C109.796 104.154 109.594 104.208 109.417 104.31L105.332 106.645C105.154 106.747 105.007 106.894 104.905 107.071C104.802 107.249 104.748 107.45 104.748 107.654V112.323C104.748 112.528 104.802 112.729 104.905 112.906C105.007 113.083 105.154 113.231 105.332 113.333L109.417 115.667Z" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M104.916 107.081L109.999 109.999L115.083 107.081" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M128.748 104.752V114.09C128.748 114.399 128.871 114.696 129.09 114.915C129.309 115.134 129.606 115.257 129.915 115.257H139.253" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M137.505 105.912H136.338C136.015 105.912 135.754 106.173 135.754 106.496V112.332C135.754 112.654 136.015 112.916 136.338 112.916H137.505C137.827 112.916 138.088 112.654 138.088 112.332V106.496C138.088 106.173 137.827 105.912 137.505 105.912Z" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M132.827 107.662H131.66C131.337 107.662 131.076 107.923 131.076 108.245V112.331C131.076 112.653 131.337 112.914 131.66 112.914H132.827C133.149 112.914 133.411 112.653 133.411 112.331V108.245C133.411 107.923 133.149 107.662 132.827 107.662Z" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M153.676 114.05V105.95C153.676 105.592 153.818 105.249 154.071 104.996C154.324 104.742 154.668 104.6 155.026 104.6H161.776C161.919 104.6 162.056 104.657 162.158 104.758C162.259 104.86 162.316 104.997 162.316 105.14V114.86C162.316 115.003 162.259 115.141 162.158 115.242C162.056 115.343 161.919 115.4 161.776 115.4H155.026C154.668 115.4 154.324 115.258 154.071 115.005C153.818 114.752 153.676 114.408 153.676 114.05ZM153.676 114.05C153.676 113.692 153.818 113.349 154.071 113.096C154.324 112.842 154.668 112.7 155.026 112.7H162.316" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M179.5 113.5V110.5" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M187 108.5C187 108.5 185.875 108 187 106C188.125 104 187 103.5 187 103.5" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M184.5 108.5C184.5 108.5 183.375 108 184.5 106C185.625 104 184.5 103.5 184.5 103.5" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M177 104.5L187 115.5" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M185.158 110.5H188.001C188.133 110.5 188.26 110.553 188.354 110.646C188.448 110.74 188.501 110.867 188.501 111V113C188.501 113.133 188.448 113.26 188.354 113.354C188.26 113.447 188.133 113.5 188.001 113.5H187.886" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M185.182 113.5H176C175.867 113.5 175.74 113.447 175.646 113.354C175.553 113.26 175.5 113.133 175.5 113V111C175.5 110.867 175.553 110.74 175.646 110.646C175.74 110.553 175.867 110.5 176 110.5H182.454" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M206 116C209.314 116 212 113.314 212 110C212 106.686 209.314 104 206 104C202.686 104 200 106.686 200 110C200 113.314 202.686 116 206 116Z" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M206 104V116" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M210 105.528V114.472" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M208 104.342V115.658" stroke="#666666" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M18.5 129H9.5C9.22386 129 9 129.224 9 129.5V138.5C9 138.776 9.22386 139 9.5 139H18.5C18.7761 139 19 138.776 19 138.5V129.5C19 129.224 18.7761 129 18.5 129Z" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M14 129V139" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M9 134H19" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M35.5 134H40.5" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M38 140C41.3137 140 44 137.314 44 134C44 130.686 41.3137 128 38 128C34.6863 128 32 130.686 32 134C32 137.314 34.6863 140 38 140Z" stroke="#666666" stroke-width="1.1" strokeMiterlimit="10"/>
<path d="M62 131.5C62.8284 131.5 63.5 130.828 63.5 130C63.5 129.172 62.8284 128.5 62 128.5C61.1716 128.5 60.5 129.172 60.5 130C60.5 130.828 61.1716 131.5 62 131.5Z" stroke="#666666" stroke-width="1.2" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M62 139.5V131.5" stroke="#666666" stroke-width="1.2" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M57.5 133.5H56C56 135.091 56.6321 136.617 57.7574 137.743C58.8826 138.868 60.4087 139.5 62 139.5C63.5913 139.5 65.1174 138.868 66.2426 137.743C67.3679 136.617 68 135.091 68 133.5H66.5" stroke="#666666" stroke-width="1.2" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M84.5 129H81.5C81.2239 129 81 129.224 81 129.5V132.5C81 132.776 81.2239 133 81.5 133H84.5C84.7761 133 85 132.776 85 132.5V129.5C85 129.224 84.7761 129 84.5 129Z" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M90.5 129H87.5C87.2239 129 87 129.224 87 129.5V132.5C87 132.776 87.2239 133 87.5 133H90.5C90.7761 133 91 132.776 91 132.5V129.5C91 129.224 90.7761 129 90.5 129Z" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M84.5 135H81.5C81.2239 135 81 135.224 81 135.5V138.5C81 138.776 81.2239 139 81.5 139H84.5C84.7761 139 85 138.776 85 138.5V135.5C85 135.224 84.7761 135 84.5 135Z" stroke="#666666" stroke-width="1.1" strokeLinecap="round" strokeLinejoin="round"/>
<path d="M90.5 135H87.5C87.2239 135 87 135.224 87 135.5V138.5C87 138.776 87.2239 139 87.5 139H90.5C90.7761 139 91 138.776 91 138.5V135.5C91 135.224 90.7761 135 90.5 135Z" stroke="#666666" stroke-width="0.7" strokeLinecap="round" strokeLinejoin="round" strokeDasharray="4 4"/>
<path d="M108.5 129H105.5C105.224 129 105 129.224 105 129.5V132.5C105 132.776 105.224 133 105.5 133H108.5C108.776 133 109 132.776 109 132.5V129.5C109 129.224 108.776 129 108.5 129Z" fill="#666666"/>
<path d="M114.5 129H111.5C111.224 129 111 129.224 111 129.5V132.5C111 132.776 111.224 133 111.5 133H114.5C114.776 133 115 132.776 115 132.5V129.5C115 129.224 114.776 129 114.5 129Z" fill="#666666"/>
<path d="M108.5 135H105.5C105.224 135 105 135.224 105 135.5V138.5C105 138.776 105.224 139 105.5 139H108.5C108.776 139 109 138.776 109 138.5V135.5C109 135.224 108.776 135 108.5 135Z" fill="#666666"/>
<path d="M114.5 135H111.5C111.224 135 111 135.224 111 135.5V138.5C111 138.776 111.224 139 111.5 139H114.5C114.776 139 115 138.776 115 138.5V135.5C115 135.224 114.776 135 114.5 135Z" fill="#666666"/>
<path d="M132.665 135.508L132.121 136.121C131.702 136.541 131.167 136.827 130.585 136.942C130.003 137.058 129.4 136.999 128.852 136.772C128.304 136.545 127.835 136.16 127.506 135.667C127.176 135.173 127 134.593 127 134C127 133.407 127.176 132.827 127.506 132.333C127.835 131.84 128.304 131.455 128.852 131.228C129.4 131.001 130.003 130.942 130.585 131.058C131.167 131.173 131.702 131.459 132.121 131.879L135.879 136.121C136.298 136.541 136.833 136.827 137.415 136.942C137.997 137.058 138.6 136.999 139.148 136.772C139.696 136.545 140.165 136.16 140.495 135.667C140.824 135.173 141 134.593 141 134C141 133.407 140.824 132.827 140.495 132.333C140.165 131.84 139.696 131.455 139.148 131.228C138.6 131.001 137.997 130.942 137.415 131.058C136.833 131.173 136.298 131.459 135.879 131.879L135.336 132.492" stroke="#666666" stroke-width="1.2" strokeLinecap="round" strokeLinejoin="round"/>
<defs>
<clipPath id="clip0_411_3630">
<rect width="16" height="16" fill="white" transform="translate(174 6)"/>
</clipPath>
<clipPath id="clip1_411_3630">
<rect width="16" height="16" fill="white" transform="translate(102 30)"/>
</clipPath>
<clipPath id="clip2_411_3630">
<rect width="16" height="16" fill="white" transform="translate(30 78)"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 40 KiB